pax_global_header00006660000000000000000000000064135200223370014507gustar00rootroot0000000000000052 comment=dd213a5eb4580158f66994c08e8a2e58f3665883 dtkwidget-2.1.1/000077500000000000000000000000001352002233700134765ustar00rootroot00000000000000dtkwidget-2.1.1/.clog.toml000066400000000000000000000001621352002233700153740ustar00rootroot00000000000000[clog] repository = "https://github.com/linuxdeepin/dtkwidget" from-latest-tag = true changelog = "CHANGELOG.md" dtkwidget-2.1.1/.gitignore000066400000000000000000000004521352002233700154670ustar00rootroot00000000000000# Compiled Object files *.slo *.lo *.o # Compiled Dynamic libraries *.so *.dylib # Compiled Static libraries *.lai *.la *.a build*/ *.pro.user* *.DS_Store # executeable files *.qm src/DtkWidgets src/dtkwidget_config.h cmake/DtkWidget/DtkWidgetConfig.cmake src/qt_lib_dtk*.pri # misc .vscode/ dtkwidget-2.1.1/.release.json000066400000000000000000000010451352002233700160670ustar00rootroot00000000000000{ "commit": { "quilt": false, "pkgver": "echo $(git tag | sort -V | tail -n1)'+r'$(git log $(git describe --abbrev=0 --tags)..HEAD --oneline|wc -l)'+g'$(git rev-parse --short HEAD);", "dist": "experimental" }, "release": { "quilt": true, "pkgver": "git describe --abbrev=0 --tags %(ref)s", "dist": "unstable" }, "release-candidate": { "quilt": true, "dist": "unstable" } } dtkwidget-2.1.1/.tx/000077500000000000000000000000001352002233700142075ustar00rootroot00000000000000dtkwidget-2.1.1/.tx/config000066400000000000000000000003401352002233700153740ustar00rootroot00000000000000[main] host = https://www.transifex.com minimum_perc = 80 mode = developer [deepin-tool-kit.dwidget] file_filter = src/translations/dtkwidget_.ts source_file = src/translations/dtkwidget.ts source_lang = en type = QT dtkwidget-2.1.1/CHANGELOG.md000066400000000000000000001051151352002233700153120ustar00rootroot00000000000000 ## 2.0.14 (2019-05-23) #### Bug Fixes * hide the non-window type window titlebar menu button on initialize ([eb0500fa](https://github.com/linuxdeepin/dtkwidget/commit/eb0500fa06e3a97fe2d98c8ad76dfc5edfaa9d58)) ## 2.0.13 (2019-05-09) #### Bug Fixes * repaint widget mask color when the color changed ([7553188b](https://github.com/linuxdeepin/dtkwidget/commit/7553188bfe9f9c34def92728e4aaeac9beb078a0)) * always show menu button ([4612b6fc](https://github.com/linuxdeepin/dtkwidget/commit/4612b6fc7cdd976f54065750bc628f5d1776a565)) * always show button on none linux ([633617d0](https://github.com/linuxdeepin/dtkwidget/commit/633617d0e2c7a3282c53b367c5753f688360dee1)) ## 2.0.12 (2019-04-18) ## 2.0.11 (2019-04-17) #### Features * add interfaces for custom qt theme config file path ([b1308c8a](https://github.com/linuxdeepin/dtkwidget/commit/b1308c8ac3fbf42a1c9204dc07967979bce461cc)) * add signal "screenDevicePixelRatioChanged" for DApplication ([ee11cac5](https://github.com/linuxdeepin/dtkwidget/commit/ee11cac58d587203b16f2f1b3af862586bd135e2)) #### Bug Fixes * The dialog size abnormally on multi-screen ([320d896b](https://github.com/linuxdeepin/dtkwidget/commit/320d896b673b03f92a2c85d51857a4ae4d355230)) ## 2.0.10 (2019-03-27) #### Bug Fixes * crash at DApplicationPrivate::cancelNotification ([e84643fd](https://github.com/linuxdeepin/dtkwidget/commit/e84643fdbf0628f77bd4e2cb0b2b08feb80d18bb)) * cursor is always in busy state sometimes ([79473dfa](https://github.com/linuxdeepin/dtkwidget/commit/79473dfab2ba17694ded8568431a0f55c87d0492)) * **DDesktopServices:** wrong register ddesktopservices enum type ([c82f36e3](https://github.com/linuxdeepin/dtkwidget/commit/c82f36e33fb22de853f1bd61a7eaaa7b0ad63377)) #### Features * **DDesktopServices:** register qmetatype for SystemSoundEffect ([24fbd471](https://github.com/linuxdeepin/dtkwidget/commit/24fbd4710a3a9a9ac52eced25aeb20a5617c1d66)) ## 2.0.9.17 (2019-02-26) #### Bug Fixes * minimize buttons of fix sized windows are disabled ([f7d2974c](https://github.com/linuxdeepin/dtkwidget/commit/f7d2974c005cc3e09749503aec5bc9b2cbf7af75)) * build failed on Qt 5.6.x ([1ca45918](https://github.com/linuxdeepin/dtkwidget/commit/1ca45918dfc3546ab077ab613afd8f8cf64fd457)) * move Q_DECL_DEPRECATED to front ([c6d65f01](https://github.com/linuxdeepin/dtkwidget/commit/c6d65f016eb7f0c498a7a92f2ffb139fabaa80a9)) ## 2.0.9.16 (2019-01-29) #### Bug Fixes * titlebar not shown in some case ([c63bac17](https://github.com/linuxdeepin/dtkwidget/commit/c63bac174fa22ba762aa4d1291703eccbfb855e2)) ## 2.0.9.15 (2019-01-25) #### Features * add groupLeaderId/clientLeaderId interfaces for DWindowGroupLeader ([aa1ab5ad](https://github.com/linuxdeepin/dtkwidget/commit/aa1ab5ad141b7ae3a2abf5d1dd69564038ed2f68)) * **DDesktopServices:** support all sound effect ([c1a2285c](https://github.com/linuxdeepin/dtkwidget/commit/c1a2285c3a3fb54bf6c7c03220a89b028551e8da)) #### Bug Fixes * change permissions of DStackWidget's function ([f62bf044](https://github.com/linuxdeepin/dtkwidget/commit/f62bf04481a0feb5d99659a319140f159cf1b9be)) * can not hide the window menu button ([010c75d5](https://github.com/linuxdeepin/dtkwidget/commit/010c75d53417099132b85dc82d0768ad5c3520f3)) * **DDesktopServices:** keep old enum order ([15eb21f7](https://github.com/linuxdeepin/dtkwidget/commit/15eb21f79ab2adccd1dcf31ae5aa3d94654d4ec9)) ## 2.0.9.14 (2019-01-02) #### Bug Fixes * can not scroll view on DSettingDialog by touchscreen ([651dee29](https://github.com/linuxdeepin/dtkwidget/commit/651dee293bf1cf3de848eed496c3f6433712d8d5)) ## 2.0.9.13 (2018-12-28) #### Features * support touchscreen for DSettingDialog ([74482ea6](https://github.com/linuxdeepin/dtkwidget/commit/74482ea685979e6953d5191233820cb1713a3098)) ## 2.0.9.12 (2018-12-24) #### Features * move settings dialog radio to left ([f7a33caa](https://github.com/linuxdeepin/dtkwidget/commit/f7a33caaad5941516a19dacdde0441d4ae2d3e8e)) * support connan build ([74f8f928](https://github.com/linuxdeepin/dtkwidget/commit/74f8f92817c51302b965c398c225bda752a450ee)) #### Bug Fixes * doc for DTextButton ([23160de6](https://github.com/linuxdeepin/dtkwidget/commit/23160de65021718de268cfe715191610357d12e4)) * doc for DExpandGroup ([597f25c1](https://github.com/linuxdeepin/dtkwidget/commit/597f25c16aaa1d0744b0ad405511845794209411)) * **DWindowManagerHelper:** return currentWorkspaceWindows is empty ([ec478aa0](https://github.com/linuxdeepin/dtkwidget/commit/ec478aa0ae4d9b4cdbba7f503d3f05b24334a3fc)) ## 2.0.9.11 (2018-12-14) #### Features * allowed set a expected icon size for DDialog::setIcon ([a4d2aa06](https://github.com/linuxdeepin/dtkwidget/commit/a4d2aa060381fb13e8a99f069e212549e032bd1c)) * **DWindowManagerHelper:** return all windowId and current workspace windowId ([d3440165](https://github.com/linuxdeepin/dtkwidget/commit/d34401655ec1119fc0173df15af1ece41b23f2af)) ## 2.0.9.10 (2018-11-30) #### Bug Fixes * the dialog type window will be closed after pressing Super+D ([251418bf](https://github.com/linuxdeepin/dtkwidget/commit/251418bf2423da81fbce5731347fc05c5e23a646)) * workaround QTapAndHoldGesture comes late than right press in dde-daemon ([2af710be](https://github.com/linuxdeepin/dtkwidget/commit/2af710bec685739d5b3a2e113c3e2a860ce0197b)) * **DPasswdEditAnimated:** modify parent for tip widget ([b9edc9d3](https://github.com/linuxdeepin/dtkwidget/commit/b9edc9d36386fcd9537e0b5cafc734e1696fa294)) * **dtabbar:** horizontal dragging delays. ([9efe4990](https://github.com/linuxdeepin/dtkwidget/commit/9efe4990c128e6a5a306057ae52abf614607c9a6)) #### Features * set QTapAndHoldGesture::timeout in DApplication ([a3e23a7e](https://github.com/linuxdeepin/dtkwidget/commit/a3e23a7e233df7b22fa6d8340df80a7744bb8ab7)) * **DWindowManagerHelper:** add inteface: "windowManagerName" ([d4c557f1](https://github.com/linuxdeepin/dtkwidget/commit/d4c557f1d54beb77591b9a208bdbb201f20a376a)) ## 2.0.9.9 (2018-11-09) #### Features * **DPasswdEditAnimated:** add updateAlertPosition() func. ([1539439b](https://github.com/linuxdeepin/dtkwidget/commit/1539439b1e5326ba54990c2b02c1ef915fa22d49)) * **DTickEffect:** change scroll speed ([2bf9c93f](https://github.com/linuxdeepin/dtkwidget/commit/2bf9c93f682649eb16323c7a1ed5a61e74e7e73b)) #### Bug Fixes * **passwdeditanimated:** hide alert flash. ([faaa4ee2](https://github.com/linuxdeepin/dtkwidget/commit/faaa4ee286fa4fe3df120fe718e646310dc6a43e)) ## 2.0.9.8 (2018-11-08) #### Bug Fixes * do not set Qt::AA_ForceRasterWidgets by default on x86 platform ([4281a396](https://github.com/linuxdeepin/dtkwidget/commit/4281a39694aecf0ebf2fe425f8e40c739698648c)) ## 2.0.9.7 (2018-11-06) #### Bug Fixes * open AA_ForceRasterWidgets by default ([f0bae104](https://github.com/linuxdeepin/dtkwidget/commit/f0bae104da6c151bb07f3c406f7779046d4648c3)) ## 2.0.9.6 (2018-11-01) #### Bug Fixes * static function bugs of DInputDialog ([a34833ec](https://github.com/linuxdeepin/dtkwidget/commit/a34833ec304cf3f5c3416760340d874eada9fc3b)) * radio setting widget height error ([6cea6e84](https://github.com/linuxdeepin/dtkwidget/commit/6cea6e84220cd40c05e43627909806f7043c5d61)) #### Features * **DMPRIS:** music title support tick effect ([48ac0431](https://github.com/linuxdeepin/dtkwidget/commit/48ac04318ff6ed840d5f25c26bd8cc692d96dc9c)) * **DRegionMonitor:** support set coordinate type ([d6773300](https://github.com/linuxdeepin/dtkwidget/commit/d67733006eba5ffa2c9376460c50eb49e23ee274)) ## 2.0.9.5 (2018-10-26) #### Features * update check deepin-manual path ([ec41a75f](https://github.com/linuxdeepin/dtkwidget/commit/ec41a75f87e465d3c0d79c81c07a971604728e86)) * update version number for expermimental ([9a72d912](https://github.com/linuxdeepin/dtkwidget/commit/9a72d912d8c4a8a9dbb39f08e8bd64bea24e2cb6)) * set Qt::AA_ForceRasterWidgets on sw/loongson ([6d8739e2](https://github.com/linuxdeepin/dtkwidget/commit/6d8739e2b38c46978dea6eb31a59c1d3f11fe8b0)) * **DBlurEffectWidget:** support set alpha ([a380128e](https://github.com/linuxdeepin/dtkwidget/commit/a380128ede3626b79964f7128c54697f6fd6c637)) * **DTickEffect:** keep animation value from widget size changed ([1f8c744b](https://github.com/linuxdeepin/dtkwidget/commit/1f8c744b3c622562c7f86ae213dd6deefe13cd27)) #### Bug Fixes * context scroll error ([68ab7294](https://github.com/linuxdeepin/dtkwidget/commit/68ab7294ec93eeb09ffa4cf533f69a01ff072ae7)) * run tag script error ([5cdfd2f3](https://github.com/linuxdeepin/dtkwidget/commit/5cdfd2f387d4bfb6c3e463f51cdbef643d036f89)) * repair version number error ([3ce05b0e](https://github.com/linuxdeepin/dtkwidget/commit/3ce05b0ef3076fb3a9187cd02ef6422e37c6067a)) * **DBlurEffectWidget:** not refresh when update mask alpha ([492b2b93](https://github.com/linuxdeepin/dtkwidget/commit/492b2b93a2ce0b656c4ff9145c74aebb4ff034d8)) * **DImageButton:** remove wrong sizehent ([e5cf29f7](https://github.com/linuxdeepin/dtkwidget/commit/e5cf29f793a7fc1469ccec766fe74a39b3ca48d2)) * **DPasswordEditAnimated:** alert visible control ([eb55642a](https://github.com/linuxdeepin/dtkwidget/commit/eb55642ac2a8b397f5013d4332c3d88cf5bf98fe)) * **trashMgr:** Will remove broken symlink now ([481ba0a0](https://github.com/linuxdeepin/dtkwidget/commit/481ba0a0dc875963d90cca3948029a6e577363fb)) ## 2.0.9.3 (2018-08-23) #### Features * support hide acknowledgement ([c5d125a9](https://github.com/linuxdeepin/dtkwidget/commit/c5d125a9de66f19f572376ad8a411af743524612)) * **DSettingsDialog:** follow the system font size ([115febed](https://github.com/linuxdeepin/dtkwidget/commit/115febed538b9dce041b8aa87c463fb4c438a58e)) * **toast:** interface to set duration ([5d0fc564](https://github.com/linuxdeepin/dtkwidget/commit/5d0fc56493234a32ba3f38fff87d5af5e9aceedb)) #### Bug Fixes * **DSuggestButton:** draw text twice ([a149d05b](https://github.com/linuxdeepin/dtkwidget/commit/a149d05b57954a49a221e03b230e8c73230330eb)) * **trashMgr:** Will delete symbol link recursively ([dbcf048c](https://github.com/linuxdeepin/dtkwidget/commit/dbcf048c23ac2f6b898e9aacbdb8693cde161c2a)) ## 2.0.9.2 (2018-08-07) #### Features * use new interface for DPlatformWindowHandle::enableDxcbForWindow ([ab03a058](https://github.com/linuxdeepin/dtkwidget/commit/ab03a058910a3258775bd8b40dc3bf43cf014cc8)) ## 2.0.9.1 (2018-07-25) #### Features * support set the translate context on DSettingsDialog::updateSettings ([0afad0c2](https://github.com/linuxdeepin/dtkwidget/commit/0afad0c2301cd50fe21cbd1a1379034d6e6f1048)) ## 2.0.9 (2018-07-20) #### Bug Fixes * crash in DTabBar::dragIconWindow ([1772a8a8](https://github.com/linuxdeepin/dtkwidget/commit/1772a8a8f6ea826f9ba55e1b97daaf49c6e7a719)) * quick change fullscreen state crash ([565bfd5f](https://github.com/linuxdeepin/dtkwidget/commit/565bfd5f6f218409808a36911abe905219928d61)) * did not clear hover item when leaving. ([5c7da52e](https://github.com/linuxdeepin/dtkwidget/commit/5c7da52e5f663d3a67c4e8cc63c9c09bbaa3a451)) * the right scroll button of DTabBar cannot visible ([4d55296b](https://github.com/linuxdeepin/dtkwidget/commit/4d55296b63e8a890e825e4c826e5098f565445e5)) * DTabBarPrivate::stopMove will trigger drop event ([61c3a3e9](https://github.com/linuxdeepin/dtkwidget/commit/61c3a3e9d0d91ac06059db02a49f10d4ff48211b)) * **DTabBar:** * no signal when tab is removed ([d33d8b0e](https://github.com/linuxdeepin/dtkwidget/commit/d33d8b0ea728d24a9e199340b8a356b2704c656c)) * setTabMaxiumnSize is invalid ([ff5b9480](https://github.com/linuxdeepin/dtkwidget/commit/ff5b9480e149c0dfdee327bf2c4a60ecc6bd945a)) * **DTitlebar:** When the window is fast hiding and displaying, the state is wrong ([5af9fa21](https://github.com/linuxdeepin/dtkwidget/commit/5af9fa21a7b1f85fd126b92d249583016f41cd18)) * **DTrashManager:** clear trash behavior not correct ([1242bf64](https://github.com/linuxdeepin/dtkwidget/commit/1242bf6430340b1c1eac124ba89d990fd29db5b3)) * **DVideoWidget:** byte preline missing ([856d2f5a](https://github.com/linuxdeepin/dtkwidget/commit/856d2f5a3ec696780dbca31bc7acbcfcb4222a53)) * **Dtitlebar:** not update max button icon ([79d72833](https://github.com/linuxdeepin/dtkwidget/commit/79d728331d137b8da1c7b4884698a5231ec97d84)) * **dscrollarea:** initialization with nullptr ([a1e5697a](https://github.com/linuxdeepin/dtkwidget/commit/a1e5697a315382ece6a2f688e2a61da0432f55e1)) * **sfx:** sfx playback name should conv to camelCase ([870cf29c](https://github.com/linuxdeepin/dtkwidget/commit/870cf29cea6af3bd9fdfab6ccf2553714679a413)) #### Features * add signal for DTabBar ([2172c4bb](https://github.com/linuxdeepin/dtkwidget/commit/2172c4bbc3199fe439c282ca493b65c95fe8e2b5)) ## 2.0.8 (2018-05-02) #### Bug Fixes * double free of list item on exit ([3941dda5](https://github.com/linuxdeepin/dtkwidget/commit/3941dda581c0112ff79ddff9692343611176f56e)) * build failed when no static build ([9194f83b](https://github.com/linuxdeepin/dtkwidget/commit/9194f83b5faa1f1ffbb47105099f6257fc69db39)) * remove useless module ([84c50e83](https://github.com/linuxdeepin/dtkwidget/commit/84c50e8341fa28806a2186aba28f056d1a5acaae)) * isValid not work in flatpak ([88095fdf](https://github.com/linuxdeepin/dtkwidget/commit/88095fdf22c25b4458ed38cf7a1b347467513ec9)) * support hi-DPI for DClipEffectWidget ([2d152997](https://github.com/linuxdeepin/dtkwidget/commit/2d1529974c291f537934870cec53f86306e660a1)) * wait dbus call return ([bb863db0](https://github.com/linuxdeepin/dtkwidget/commit/bb863db0188678017cfbc7f05aef28c4dc7ddd3d)) * can not auto adjust dialog position ([c487b5cb](https://github.com/linuxdeepin/dtkwidget/commit/c487b5cb462709d42a4c9b0a9938a35037b0205a)) * add DAbstractDialog::move(int, int) and DAbstractDialog::setGeometry(int, int, int, int) ([3f4bc68b](https://github.com/linuxdeepin/dtkwidget/commit/3f4bc68bca7752b80703e4a9d3be152012e0511b)) * crash when quit application ([13d22e32](https://github.com/linuxdeepin/dtkwidget/commit/13d22e32ccc37504182a21ac8133503a437e7f6e)) * move the DAbstractDialog window is invalid ([7d578e99](https://github.com/linuxdeepin/dtkwidget/commit/7d578e999a190d284895243784dae0f3f035ed0e)) * the DPasswordEdit text color ([97ac1992](https://github.com/linuxdeepin/dtkwidget/commit/97ac1992bb37facf67d7842df8d4248c4100c46f)) * hide max button if cannot resize ([20dfc974](https://github.com/linuxdeepin/dtkwidget/commit/20dfc97447cd8c46139d8c9fd409d233805555c3)) * work around DSimpleListView cannot use tr ([98be9fed](https://github.com/linuxdeepin/dtkwidget/commit/98be9fed1d7d8c3fce7e27934678c57fc4b2ed6e)) * dtk_build add error marco ([bd1b7f0d](https://github.com/linuxdeepin/dtkwidget/commit/bd1b7f0d3edfe3977a9beebbe78a1cae0010ff06)) * use fix class name as theme file first ([d2dfd67d](https://github.com/linuxdeepin/dtkwidget/commit/d2dfd67de094334222b28c3b8f1176875b1d1393)) * use a wrong variable when invoke DCrumbEdit::appendCrumb in DCrumbEdit ([453f5c4c](https://github.com/linuxdeepin/dtkwidget/commit/453f5c4c38824e8dde3945eea6465af6d4994422)) #### Features * add symbols check ([a811208d](https://github.com/linuxdeepin/dtkwidget/commit/a811208d0ec7112e886c466b2536367b381b43cb)) * register dde session manager ([5727efe4](https://github.com/linuxdeepin/dtkwidget/commit/5727efe41a6ac2bcd2e27460dfa0814ffdafa3e7)) * support dtk_lib ([07326439](https://github.com/linuxdeepin/dtkwidget/commit/0732643960a34a141ffec2b48a643e86cd1b526b)) * add DWindowGroupLeader ([d6d9f4ff](https://github.com/linuxdeepin/dtkwidget/commit/d6d9f4ff3d4523de9119f0aa4f072d75b4a889b9)) * support DTK_NO_MULTIMEDIA ([5fecfc04](https://github.com/linuxdeepin/dtkwidget/commit/5fecfc04e065fa784adaeac71ef0664a31f0cb14)) * insert virtual tab on DTabBar when drag enter ([3927d441](https://github.com/linuxdeepin/dtkwidget/commit/3927d441f83e0aaf68acc473242fb6e9e35d235d)) * the DLineEdit inherit style form the QLineEdit ([7b6caece](https://github.com/linuxdeepin/dtkwidget/commit/7b6caece0394e80b89b1831ea860cc0d06558929)) * add "startDrag/stopDrag" for DTabBar ([611bc0c2](https://github.com/linuxdeepin/dtkwidget/commit/611bc0c2ca3674904f964b86bef6ca3bb56e4f83)) * add signals dragStarted/dragEnd ([a7b9d9ba](https://github.com/linuxdeepin/dtkwidget/commit/a7b9d9ba28bded77d64eb96c8e1a1d7b750c719b)) * support disable change window cursor on dxcb platform ([08f4f2ad](https://github.com/linuxdeepin/dtkwidget/commit/08f4f2adc5fb67ba5bf41d5f849a2fbc5973c5b1)) * add signal dragActoinChanged for DTabBar ([6f894a67](https://github.com/linuxdeepin/dtkwidget/commit/6f894a67ef53caf78a15debca1f8185dc8088cd5)) * **DCrumbEdit:** * progate Key_Escape to parent window. ([390f51bf](https://github.com/linuxdeepin/dtkwidget/commit/390f51bf6f13af090a1d1c715f20c4685b19f8da)) * support to send Key_enter or Key_return to parent window. ([d39ce078](https://github.com/linuxdeepin/dtkwidget/commit/d39ce0782ca8797f5837d9cabfa75647fa2e0070)) ## 2.0.8 #### Bug Fixes * fix shuttle build ## 2.0.7 (2018-03-02) #### Bug Fixes * check libdframeworkdbus when build ([39aa02b1](https://github.com/linuxdeepin/dtkwidget/commit/39aa02b1450f12f52d69eb3fe38a4e4865fdfac2)) * call deepin-manual with dbus and application name ([3e4293d1](https://github.com/linuxdeepin/dtkwidget/commit/3e4293d156f29a8d192d82c8cd88a99d21f68858)) * the DPasswordEdit style is wrong at the DInputDialog ([2e1c126e](https://github.com/linuxdeepin/dtkwidget/commit/2e1c126e15d6bf12ec4aaac27494cc2a68b5b73b)) * use applycation name as new deepin-manual id ([dfb05cae](https://github.com/linuxdeepin/dtkwidget/commit/dfb05caee4ca327dc3443833965ed4614cf42a06)) * parse key with + error ([dcf3a11a](https://github.com/linuxdeepin/dtkwidget/commit/dcf3a11a3c21142c34bf934736e8637a713b33d1)) * state change not connect ([0049a065](https://github.com/linuxdeepin/dtkwidget/commit/0049a0650ee12fec6f026bdd69b2814ebda30546)) * add qt internal_module failed ([975e36df](https://github.com/linuxdeepin/dtkwidget/commit/975e36df9557c6e2e2bbf77c614c99f42eeccdd9)) * delay connect native state change signal ([48e23bc9](https://github.com/linuxdeepin/dtkwidget/commit/48e23bc9e21b6760522e362d390c98772dc549fd)) * missing window state change in event filter ([7c7a4e38](https://github.com/linuxdeepin/dtkwidget/commit/7c7a4e383e319604b0ca6ca62729756619e74105)) * DTabBar tab list automatically scrolling too slow ([199c13b1](https://github.com/linuxdeepin/dtkwidget/commit/199c13b1ac52625efad1d64d75107627c34d8d7b)) * max button hint error ([43de05f3](https://github.com/linuxdeepin/dtkwidget/commit/43de05f3d7ead7f01f0b80e18ecb2f9e19eebf14)) * do not flow windowFlags if not dxcb ([4fd67cb2](https://github.com/linuxdeepin/dtkwidget/commit/4fd67cb2bd484f505e9c92a96d1a16fd1c10e81d)) * not draw tear indicator for DTabBar ([b59cbffc](https://github.com/linuxdeepin/dtkwidget/commit/b59cbffcfa6cc237712761cb09a3ce269d832102)) * connect widgetThemeChanged ([6c2d397a](https://github.com/linuxdeepin/dtkwidget/commit/6c2d397a1a27991d5753d2575d74161db5cbf0b5)) * typo for DTabBar::createMimeDataFramTab ([4bb6f1e3](https://github.com/linuxdeepin/dtkwidget/commit/4bb6f1e32f82014c611ab256180ca485dd7d114d)) * remove border style workaround ([3030f496](https://github.com/linuxdeepin/dtkwidget/commit/3030f4966267fb9f0a6745a27decc8c6b3066323)) * hide toast label by default ([0dfb1566](https://github.com/linuxdeepin/dtkwidget/commit/0dfb15665ce2cc286015e3705e8acb38e750f7cf)) * parse config.pri failed ([a9b33216](https://github.com/linuxdeepin/dtkwidget/commit/a9b33216d3298866c9aa81bc9100bfadd38dee16)) * tabbar tab can drag only at the first time ([07cd7dac](https://github.com/linuxdeepin/dtkwidget/commit/07cd7dacf675f3e328c4e53750d727a70ee2bc0e)) * the widget's theme is not updated after changing parent ([3cb8f27a](https://github.com/linuxdeepin/dtkwidget/commit/3cb8f27adcca146d98b47f1ed7ca21439e221af0)) * can not be fixed widget style ([5bf22c11](https://github.com/linuxdeepin/dtkwidget/commit/5bf22c1117f99d5d1b08f90bd3123526fb80f5de)) * VER_MAJ/VER_MIN/VER_PAT variables is empty in qmake ([85314de3](https://github.com/linuxdeepin/dtkwidget/commit/85314de363b316afe726b5a4e96b65ce8bd5ddf7)) * VER_MAJ/VER_MIN/VER_PAT variables is empty in qmake ([13023a33](https://github.com/linuxdeepin/dtkwidget/commit/13023a33f0e71cb025aa08b4bd793cf9d05dcdff)) * set AA_DontCreateNativeWidgetSiblings to true of QGuiApplication at enable dxcb for window ([779d620b](https://github.com/linuxdeepin/dtkwidget/commit/779d620b641e0dd6da426b65f25f150187f5641f)) * include path(DTK_INCLUDEPATH) ([b6ecfd8d](https://github.com/linuxdeepin/dtkwidget/commit/b6ecfd8d78e7640b342022dfb3c75ea60a944bc5)) * **dsimplelistview:** * painting item is incomplete. ([a268fab4](https://github.com/linuxdeepin/dtkwidget/commit/a268fab4f210246f1483dcc2c0f902059e457edc)) * adjust render offset. ([a2452c1b](https://github.com/linuxdeepin/dtkwidget/commit/a2452c1bf59b7e25d0f97cd071cd2a262e89c151)) * adjust offsetY after removeing item. ([1b3b5f4a](https://github.com/linuxdeepin/dtkwidget/commit/1b3b5f4ac37ab3c885a1267965d8b11514da5308)) #### Features * control single instance by env ([9c388818](https://github.com/linuxdeepin/dtkwidget/commit/9c3888182db247ad9b65448451ddbe6ad36a1741)) * support hide group ([20c72e80](https://github.com/linuxdeepin/dtkwidget/commit/20c72e805c06b2d815632a402d37cfa60f582ad4)) * add DFileDialog ([425d82bf](https://github.com/linuxdeepin/dtkwidget/commit/425d82bf52d81f4ae1f51f56c0ee5f720d0a9c84)) * dynamic website info in about dialog ([22611379](https://github.com/linuxdeepin/dtkwidget/commit/2261137990966b95ef1696410637c586350e2398)) * create cmake file by dtk_cmake ([ae5a226d](https://github.com/linuxdeepin/dtkwidget/commit/ae5a226d82933dd43ad04adcdbd6b9d973b1c189)) * support qt module ([1525c2cb](https://github.com/linuxdeepin/dtkwidget/commit/1525c2cb363ba6c963ca6d43b0ba3dc6e80ff4b0)) * update password edit style ([45f07ab6](https://github.com/linuxdeepin/dtkwidget/commit/45f07ab60d618b94ede3451063c27c6cb97e99cb)) * auto scroll when move/drag tab ([d3a266bc](https://github.com/linuxdeepin/dtkwidget/commit/d3a266bc9b871371973a969cc3d314d1daa6cb3c)) * support new and legacy dman interface ([3e3c8849](https://github.com/linuxdeepin/dtkwidget/commit/3e3c88497be7372e582ba62eadfdb3553b2449ad)) * support set combobox data with QMap ([bdad10fc](https://github.com/linuxdeepin/dtkwidget/commit/bdad10fcfc9b350bf28f4eee90233145fa4060af)) * fixed the QPrintDialog theme to dlight ([18df8e0e](https://github.com/linuxdeepin/dtkwidget/commit/18df8e0e6281ac74fb1de057ed33f3ad976ffa0b)) * support dynamic property ([b121081c](https://github.com/linuxdeepin/dtkwidget/commit/b121081cf41ee0cc6c6efe47af31c8d73f2fdcd5)) * fixed the width of the DTabBar add button to 48 ([ec322589](https://github.com/linuxdeepin/dtkwidget/commit/ec322589e3ea29ef90177e9c0af453b72413f1a4)) * add buildDtkVersion/runtimeDtkVersion to DApplication ([9aaa1583](https://github.com/linuxdeepin/dtkwidget/commit/9aaa15830c3077c48019c321a29a8f79f93c97fd)) * parser correctly when version has '.is.' ([5f48b1f9](https://github.com/linuxdeepin/dtkwidget/commit/5f48b1f9b844679854f4fd437dca300c41ef23fe)) * follow parent/toplevelWidget flags ([d1f7bad0](https://github.com/linuxdeepin/dtkwidget/commit/d1f7bad0273287782a70dc4af4cac2223133dd7d)) * support configurable whether to redefine the window content when dxcb is turned on ([1cdf42f1](https://github.com/linuxdeepin/dtkwidget/commit/1cdf42f1e8fc09b3fe67d276db69e47934359c05)) * add "target" argument for DTabBar::tabDroped ([bcd009af](https://github.com/linuxdeepin/dtkwidget/commit/bcd009afb5661de15ecb4edbde2319339e221b61)) * auto hide title when fullscreen ([3e2e2921](https://github.com/linuxdeepin/dtkwidget/commit/3e2e2921d8c22c9feee7171c11e22551bcb668d5)) * add propertys maskColor and flashColor of DTabBar ([7dd2e8b4](https://github.com/linuxdeepin/dtkwidget/commit/7dd2e8b4cee7b6fe16e3ccb2bb12d9cff65f2a2b)) * support drag tab to other for DTabBar ([f6749472](https://github.com/linuxdeepin/dtkwidget/commit/f674947255ad0d0158ec3cd8d5dd9f6927bad787)) * add DToast ([c4d3f48f](https://github.com/linuxdeepin/dtkwidget/commit/c4d3f48fba40df0b8b31932e926b767b44ace6bd)) * add window title ([e7cffb03](https://github.com/linuxdeepin/dtkwidget/commit/e7cffb03466ab45562db4afad42422b62cad557c)) * not set AA_DontCreateNativeWidgetSiblings if dxcb version greater then 1.1.5 ([5b3b4b5e](https://github.com/linuxdeepin/dtkwidget/commit/5b3b4b5eab4c96d46b444035e81124f14307b98b)) * set version form changelog ([416f2e64](https://github.com/linuxdeepin/dtkwidget/commit/416f2e64a42249ad8476a9ee2416b9fd07f2ea73)) * add property "realWindowId" for DPlatformWindowHandle ([b888a855](https://github.com/linuxdeepin/dtkwidget/commit/b888a8551f1a607e1f72b8e17b1229a17629857b)) * **DApplication:** add the property of the menu ([ff9a89d7](https://github.com/linuxdeepin/dtkwidget/commit/ff9a89d7536b2225ea341c90f3aefa2bf3b40aeb)) * **DSuggestButton:** add initialize text parameter. ([20767937](https://github.com/linuxdeepin/dtkwidget/commit/207679379da96fb52d4567dd4731a8f645c0dd81)) ## 2.0.6 (2018-01-15) #### Bug Fixes * blur effect widget not set WA_TranslucentBackground ([572ca1fc](https://github.com/linuxdeepin/dtkwidget/commit/572ca1fcb6cba67fe85e8f10fd69e32107a98c04)) * connect signals for DTabBar ([44057f46](https://github.com/linuxdeepin/dtkwidget/commit/44057f462860ce11cdb58477c083ab26cc37410d)) * blur area not scale on not use dxcb window ([d990cdf6](https://github.com/linuxdeepin/dtkwidget/commit/d990cdf66f3bf62315c14265d4e7989d332eb7b9)) * memory leak in DPictureSequenceView ([4693754f](https://github.com/linuxdeepin/dtkwidget/commit/4693754f5cf3702cb58c26d87a73402294238468)) * **DDialog:** reset DLineEdit theme error ([bc6b8f33](https://github.com/linuxdeepin/dtkwidget/commit/bc6b8f33d8cfe300d21ea03b95dedeeecc610803)) #### Features * support new dman interface ([a3e46a46](https://github.com/linuxdeepin/dtkwidget/commit/a3e46a46d6f7454a6100149e9880b614202dca83)) * add DSuggestButton and DStyleOption ([929f2154](https://github.com/linuxdeepin/dtkwidget/commit/929f2154808d4b926200daadcc5f7a5d20225e10)) * not fixed font size of DDialog ([0eb76154](https://github.com/linuxdeepin/dtkwidget/commit/0eb761540d3c8581f33aa2a67abaeee95f2812e0)) * DTabBar add scroll buttons ([2f44cd29](https://github.com/linuxdeepin/dtkwidget/commit/2f44cd29ed46e3139ff0f02e3095f0249579ee47)) * add the "dtkwidget_global.h" header file ([de47120c](https://github.com/linuxdeepin/dtkwidget/commit/de47120c6c93acfc3462d1dc52debb5310537381)) * add the "DtkWidgets" header file ([b223577e](https://github.com/linuxdeepin/dtkwidget/commit/b223577e78789d7b6ab21dea8a4596ab95c9a55c)) * add animation for DTabBar on drag move tabs ([ec3f6272](https://github.com/linuxdeepin/dtkwidget/commit/ec3f6272d5f2f16297c4d48adb1d92e415d0eda4)) * support dual-click to make crumb ([b3eaa0e8](https://github.com/linuxdeepin/dtkwidget/commit/b3eaa0e85a7b9171dccdac074dfc94ba7560ad7c)) * add the DTabBar widget ([82a45b61](https://github.com/linuxdeepin/dtkwidget/commit/82a45b6130ad98699d3dc424210611d9fdae0751)) ## 2.0.5.3 (2017-12-27) #### Bug Fixes * double click shortcutedit not sync data ([70336737](https://github.com/linuxdeepin/dtkwidget/commit/70336737ff2759245c7f1b49de6fa18b97884d9a)) * Adapt lintian ([2709dc6d](https://github.com/linuxdeepin/dtkwidget/commit/2709dc6d574e74ae4ec1d225d77a6a221534e25e)) * test correct hint for corresponding function ([8d250da3](https://github.com/linuxdeepin/dtkwidget/commit/8d250da39870332200fe0d3949c776e225f37c13)) * margin of window mode ([982940f2](https://github.com/linuxdeepin/dtkwidget/commit/982940f26b911599acb8998f862d1043cbe6335a)) * add build depend libudev-dev ([3ddffd8b](https://github.com/linuxdeepin/dtkwidget/commit/3ddffd8b5a30c262f006893965921036639d0407)) #### Features * add nameFilters to dfilechooseredit ([367d8431](https://github.com/linuxdeepin/dtkwidget/commit/367d84310a42bc71273c59b6525125d5abccff26)) * support get buildVersion form marco ([632228d2](https://github.com/linuxdeepin/dtkwidget/commit/632228d25b6b9e5ee0bb365f18a71b54ef7576c6)) * add hideAlertMessage to dlineedit ([87aff6ee](https://github.com/linuxdeepin/dtkwidget/commit/87aff6eedfa1f13d0cc15ad0836ef04d8dff1b36)) * add setFileMode/fileMode to dfilechooseredit ([770c8a83](https://github.com/linuxdeepin/dtkwidget/commit/770c8a831583f84a52db7c66910a2fdf572eddd9)) * support copy/paste for DCrumbEdit ([90a7388d](https://github.com/linuxdeepin/dtkwidget/commit/90a7388dae8c6510b8dd47d9dd5a35ba68187197)) * add widget "DCrumbEdit" ([04e21733](https://github.com/linuxdeepin/dtkwidget/commit/04e21733b77096b2b07126722f766ef38cfe28cd)) * add namaspace to DSpinner ([454c394d](https://github.com/linuxdeepin/dtkwidget/commit/454c394dc84f17e19e759a5bbcec73e1669fae5b)) * add DSpinner ([ad30eabe](https://github.com/linuxdeepin/dtkwidget/commit/ad30eabe456f2e42229dd73bfda25325fef2e557)) * add pixmap sequence interface to DPictureSequenceView ([6b568687](https://github.com/linuxdeepin/dtkwidget/commit/6b5686879f35dc038cb5a0b578d5e3267ede8976)) * add widget mode to darrowrectangle ([e500b48f](https://github.com/linuxdeepin/dtkwidget/commit/e500b48f6984dff5bff9c12e6bd0ecf467a06804)) * **DApplication:** add multi user single Instance parameter ([d35b96e5](https://github.com/linuxdeepin/dtkwidget/commit/d35b96e5a750233a73140e22833d619ae389386a)) * **DRegion:** add compatibility macro ([49db18a7](https://github.com/linuxdeepin/dtkwidget/commit/49db18a7b299fc029ba83c4882e1f3148879c47c)) ## 2.0.5.2 (2017-11-28) #### Features * add bordless window on mac ([5f47b896](https://github.com/linuxdeepin/dtkwidget/commit/5f47b89671cdf84133eed6c908cb06d66a8cc2ff)) * support DTK_TITLE_DRAG_WINDOW on mac ([20782b55](https://github.com/linuxdeepin/dtkwidget/commit/20782b5502b0452bc17f15b4736043d53d42a878)) * use D_DECL_DEPRECATED ([fe75e70f](https://github.com/linuxdeepin/dtkwidget/commit/fe75e70ffa45865a969cc3c6cb7adc033f52bb0f)) * add DFileChooserEdit light theme ([0c77c6f9](https://github.com/linuxdeepin/dtkwidget/commit/0c77c6f99a432cac949391042551a8a54dec23f3)) * show system menu on right mouse button press of DTitlebar ([52ccd1e9](https://github.com/linuxdeepin/dtkwidget/commit/52ccd1e9fb81a7fd71081411c2d1428a303d0535)) #### Bug Fixes * window motif hints is error of DMainWindow ([8f90556f](https://github.com/linuxdeepin/dtkwidget/commit/8f90556f6a8380f977f09a8bedc95a5cdd7ae760)) * fix macos build failed ([63ee2247](https://github.com/linuxdeepin/dtkwidget/commit/63ee2247367ed2fca109beda82530e2a9242e921)) * popup system menu in window content ([c481eec6](https://github.com/linuxdeepin/dtkwidget/commit/c481eec63da02acaf77d7847e403f0e5f5028688)) * correct typos in multiple files ([be8ea417](https://github.com/linuxdeepin/dtkwidget/commit/be8ea417b337a2b2c34a3523c3b73b5627d18e71)) * windows build failed ([4dd39533](https://github.com/linuxdeepin/dtkwidget/commit/4dd3953353c1ce32145e9b3da5e89e7603099d03)) ## 2.0.5.1 (2017-11-16) #### Bug Fixes * add DTK_DMAN_PORTAL support ([3c03ee65](3c03ee65)) * change the QGuiApplication::platformName() to "xcb" on dxcb platform ([4356268d](4356268d)) * isDXcbPlatform for new version dxcb plugin ([d8b5c040](d8b5c040)) * **DRegionMonitor:** * properly handle scale ([95766b45](95766b45)) * possible double freed object ([708a5fbe](708a5fbe)) #### Features * add shortcut to DMainWindow ([5e9d5b6c](5e9d5b6c)) * add F1 shortcut ([7e311564](7e311564)) * add setState to DImageButton ([fcf9c3ef](fcf9c3ef)) ## 2.0.5 (2017-11-06) #### Features * optimize shift up/down keypress for DSimpleListView ([7019967f](7019967f)) * DTitlebar add disable API ([ea92fae9](ea92fae9)) * add embed mode ([266f4337](266f4337)) * add trash dbus interface ([b88efbb8](b88efbb8)) * change productIcon to QIcon ([2a914b51](2a914b51)) * Add DHiDPIHelper class ([0fdbcf60](0fdbcf60)) * daboutdialog deepin logo support hidpi ([405352f0](405352f0)) * Set AA_UseHighDpiPixmaps on DApplication ([e9fb9fcf](e9fb9fcf)) * add svgc ([fedb3860](fedb3860)) * lineedit support hidpi ([026ecb65](026ecb65)) * titlebar buttons support hidpi ([56b11074](56b11074)) * titlebar support hidpi ([dd537c17](dd537c17)) * add dbus singleton ([6ae2978f](6ae2978f)) * dpicturesequenceview support @2x files ([a299ef09](a299ef09)) * dvideowidget support set device ratio ([74eaa1d6](74eaa1d6)) * add DWaterProgress::setTextVisible ([a61d2e88](a61d2e88)) * add DSettingsWidgetFactory ([f14ff92f](f14ff92f)) * add radius set interface to pageindicator ([7bc360c0](7bc360c0)) * add border and shadow to DWaterProgress ([ecc4ba17](ecc4ba17)) * **hidpi:** * DWaterProgress support hidpi ([94350b7f](94350b7f)) * DArrowRectangle support hidpi ([d7d6a876](d7d6a876)) #### Bug Fixes * windows build failed ([1b40d6a7](1b40d6a7)) * disable _q_onTopWindowMotifHintsChanged when use DTitlebar::setWindowFlags ([5e0149b5](5e0149b5)) * draw pixmap size error on DTitlebar ([228fd523](228fd523)) * DTitlebar button is hidden on the non DMainWindow windows ([7b131a72](7b131a72)) * paint DBlurEffectWindow error if device pixel ratio is not 1 ([dff92b1b](dff92b1b)) * min/maximize button is hidden on DMainWindow ([89279ac4](89279ac4)) * fix hidpi load icon size ([79e81f94](79e81f94)) * update DDialog message style ([2c6133c1](2c6133c1)) * crash on multiple apps registered xmouseare ([dea8651f](dea8651f)) * icon of DSearchEdit not clear on hidpi ([6ebada94](6ebada94)) * DSimpleListview arrow isn't visible ([b08e7f1c](b08e7f1c)) * DAboutDialog icon not supporting hidpi ([6ec60734](6ec60734)) * fix dtk-svgc crash if no font init ([83857265](83857265)) * fix settings dialog style ([797c3e35](797c3e35)) * dialog use same style as light ([9d7d4a61](9d7d4a61)) * fix windows build failed ([7f31ea48](7f31ea48)) * fix dialog size error on hidpi ([b9273c72](b9273c72)) * update translation ([0045c39e](0045c39e)) * crash if setIcon with svg ([9b577be3](9b577be3)) * remove useless image ([10c9607c](10c9607c)) * remove private header file ([61b375b2](61b375b2)) * dswitchbutton error calculation radius ([d742b169](d742b169)) * dimagebutton private not initialized ([146d893e](146d893e)) * **DArrowRectangle:** arrow position error ([592187fb](592187fb)) * **DPasswordEdit:** password edit icon out of content ([c1fe173a](c1fe173a)) dtkwidget-2.1.1/LICENSE000066400000000000000000001045141352002233700145100ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . dtkwidget-2.1.1/README.md000066400000000000000000000020351352002233700147550ustar00rootroot00000000000000# Deepin Tool Kit Widget {#mainpage} Deepin Tool Kit (Dtk) is the base devlopment tool of all C++/Qt Developer work on Deepin. ## Dependencies ### Build dependencies * Qt >= 5.6 ## Installation ### Build from source code 1. Make sure you have installed all dependencies. 2. Build: ```` $ mkdir build $ cd build $ qmake .. $ make ```` 3. Install: ```` $ sudo make install ```` ## Getting help Any usage issues can ask for help via * [Gitter](https://gitter.im/orgs/linuxdeepin/rooms) * [IRC channel](https://webchat.freenode.net/?channels=deepin) * [Forum](https://bbs.deepin.org) * [WiKi](https://wiki.deepin.org/) ## Getting involved We encourage you to report issues and contribute changes * [Contribution guide for developers](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers-en). (English) * [开发者代码贡献指南](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers) (中文) ## License deepin-tool-kit is licensed under [GPLv3](LICENSE). dtkwidget-2.1.1/conanfile.py000066400000000000000000000073071352002233700160150ustar00rootroot00000000000000from conans import ConanFile, tools import os class DtkwidgetConan(ConanFile): name = 'dtkwidget' version = '2.0.9' license = 'GPL' author = 'Iceyer me@iceyer.net' url = 'https://github.com/linuxdeepin/dtkwidget' description = 'cross platform ui library' topics = ('qt', 'dtk') settings = 'os', 'compiler', 'build_type', 'arch' options = {'shared': [True, False]} default_options = 'shared=False' generators = 'qmake' exports_sources = "*" requires = 'qt/5.6.3@iceyer/stable', 'dtkcore/2.0.9@iceyer/stable', 'OpenSSL/1.0.2n@conan/stable', 'jom_installer/1.1.2@bincrafters/stable' def extend_include_path(self): return '%s/include/libdtk-%s/DWidget' % (self.package_folder, self.version) def include_install_path(self): return '/include/libdtk-%s' % self.version # def source(self): # self.run('git clone https://github.com/linuxdeepin/dtkwidget.git') # self.run('cd dtkwidget && git checkout 2.0.9.9') def build(self): outdir = self.build_folder includedir = outdir + self.include_install_path() mkspecsdir = outdir + '/mkspecs' libdir = outdir + '/lib' env_vars = tools.vcvars_dict(self.settings) env_vars['_CL_'] = '/utf-8' with tools.environment_append(env_vars): command = 'qmake -r' command += ' VERSION=%s' % self.version # command += ' CONFIG-=debug_and_release' # command += ' CONFIG-=debug_and_release_target' command += ' CONFIG+=release' command += ' PREFIX=%s' % outdir command += ' LIB_INSTALL_DIR=%s' % libdir command += ' INCLUDE_INSTALL_DIR=%s' % includedir command += ' MKSPECS_INSTALL_DIR=%s' % mkspecsdir command += ' DTK_STATIC_LIB=YES' command += ' DTK_STATIC_TRANSLATION=YES' command += ' DTK_NO_MULTIMEDIA=YES' command += ' %s' % self.source_folder self.run(command) self.run('jom clean') self.run('jom') self.run('jom install') def package(self): self.deploy() outdir = self.build_folder self.copy('*', dst='include', src=outdir+'/include') self.copy('*.lib', dst='lib', src=outdir+'/lib') self.copy('*', dst='mkspecs', src=outdir+'/mkspecs') def package_info(self): self.cpp_info.libs = ['dtkwidget'] self.cpp_info.includedirs.append(self.extend_include_path()) self.env_info.QMAKEPATH = self.cpp_info.rootpath + \ os.pathsep + self.deps_env_info.QMAKEPATH self.env_info.QMAKEFEATURES = self.cpp_info.rootpath + \ '/mkspecs/features' + os.pathsep+self.deps_env_info.QMAKEFEATURES def deploy(self): try: content = [] module_pri = self.build_folder + '/mkspecs/modules/qt_lib_dtkwidget.pri' s = open(module_pri) for line in s.readlines(): if line.startswith('QT.dtkwidget.tools'): line = 'QT.dtkwidget.tools = %s\n' % ( self.package_folder + '/bin') elif line.startswith('QT.dtkwidget.libs'): line = 'QT.dtkwidget.libs = %s\n' % ( self.package_folder + '/lib') elif line.startswith('QT.dtkwidget.includes'): line = 'QT.dtkwidget.includes = %s\n' % ( self.extend_include_path()) content.append(line) s.close() # print("create module file", content) s = open(module_pri, 'w') s.writelines(content) except FileNotFoundError: print("skip update qt module file") dtkwidget-2.1.1/debian/000077500000000000000000000000001352002233700147205ustar00rootroot00000000000000dtkwidget-2.1.1/debian/changelog000066400000000000000000000006441352002233700165760ustar00rootroot00000000000000dtkwidget (2.0.7.2) unstable; urgency=medium * Release 2.0.7.2 -- Iceyer Wed, 02 May 2018 09:56:59 +0800 dtkwidget (2.0.0-0) unstable; urgency=medium * Release 2.0.0. -- Iceyer Tue, 22 Aug 2017 19:38:45 +0800 dtkwidget (0.3.3-1) unstable; urgency=low * Initial release. Merge from deepin-tool-kit. -- TagBuilder Wed, 26 Jul 2017 17:10:12 +0800 dtkwidget-2.1.1/debian/compat000066400000000000000000000000021352002233700161160ustar00rootroot000000000000009 dtkwidget-2.1.1/debian/control000066400000000000000000000033601352002233700163250ustar00rootroot00000000000000Source: dtkwidget Section: libdevel Priority: optional Maintainer: Deepin Packages Builder Build-Depends: debhelper (>= 9), pkg-config, libudev-dev, qtmultimedia5-dev, libqt5x11extras5-dev, libxext-dev, qttools5-dev-tools, x11proto-xext-dev, libxcb-util0-dev, libstartup-notification0-dev, libmtdev-dev, qtbase5-private-dev, libegl1-mesa-dev, libudev-dev, libfontconfig1-dev, libfreetype6-dev, libglib2.0-dev, libxrender-dev, libdtkcore-dev, libgsettings-qt-dev, librsvg2-dev, libdframeworkdbus-dev (>> 1.0.0), libqt5svg5-dev, libxi-dev Standards-Version: 3.9.8 Package: libdtkwidget2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdframeworkdbus2 Multi-Arch: same Description: Deepin graphical user interface library DtkWidget is Deepin graphical user interface for deepin desktop development. . This package contains the shared libraries. Package: libdtkwidget-bin Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkwidget2( =${binary:Version}), qtmultimedia5-dev, libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev Description: Deepin graphical user interface library utilities DtkWidget is Deepin graphical user interface for deepin desktop development. . This package contains the utilities which are needed for developing Deepin applications. Package: libdtkwidget-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkwidget2( =${binary:Version}), qtmultimedia5-dev, libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev Description: Deepin graphical user interface library DtkWidget is Deepin graphical user interface for deepin desktop development. . This package contains the header files and static libraries which are needed for developing Deepin applications. dtkwidget-2.1.1/debian/copyright000066400000000000000000000017421352002233700166570ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: deepin-tool-kit Source: https://github.com/linuxdeepin/deepin-tool-kit Files: * Copyright: 2017 Deepin Technology Co., Ltd. License: GPL-3+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". dtkwidget-2.1.1/debian/libdtkwidget-bin.install000066400000000000000000000000321352002233700215260ustar00rootroot00000000000000usr/lib/*/*/DWidget/bin/* dtkwidget-2.1.1/debian/libdtkwidget-dev.install000066400000000000000000000001411352002233700215350ustar00rootroot00000000000000usr/lib/*/lib*.so usr/include usr/lib/*/pkgconfig/*.pc usr/lib/*/cmake/*/*.cmake usr/lib/*/qt5/* dtkwidget-2.1.1/debian/libdtkwidget2.install000066400000000000000000000000671352002233700210520ustar00rootroot00000000000000usr/lib/*/lib*.so.* usr/share/*/DWidget/translations/* dtkwidget-2.1.1/debian/libdtkwidget2.symbols000066400000000000000000011313521352002233700210770ustar00rootroot00000000000000# SymbolsHelper-Confirmed: 2.0.11 amd64 libdtkwidget.so.2 libdtkwidget2 #MINVER# _Z20qInitResources_iconsv@Base 2.0.11 _Z23qCleanupResources_iconsv@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListI12QPainterPathEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS6_Xaasr12QMetaTypeId2IS6_E7DefinedntsrSB_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListI5QIconEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS6_Xaasr12QMetaTypeId2IS6_E7DefinedntsrSB_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListI7QRegExpEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS6_Xaasr12QMetaTypeId2IS6_E7DefinedntsrSB_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListIP7QWidgetEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS7_Xaasr12QMetaTypeId2IS7_E7DefinedntsrSC_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListIPN3Dtk6Widget15DSimpleListItemEEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS9_Xaasr12QMetaTypeId2IS9_E7DefinedntsrSE_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI5QListIbEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS5_Xaasr12QMetaTypeId2IS5_E7DefinedntsrSA_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 (optional=templinst)_Z27qRegisterNormalizedMetaTypeI7QVectorIjEEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS5_Xaasr12QMetaTypeId2IS5_E7DefinedntsrSA_9IsBuiltInEE11DefinedTypeE@Base 2.0.11 _Z29qInitResources_dui_theme_darkv@Base 2.0.11 _Z30qInitResources_dui_theme_lightv@Base 2.0.11 _Z32qCleanupResources_dui_theme_darkv@Base 2.0.11 _Z33qCleanupResources_dui_theme_lightv@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListI12QPainterPathELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListI5QIconELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListI7QRegExpELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListIP7QWidgetELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListIPN3Dtk6Widget15DSimpleListItemEELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI5QListIbELb1EE17registerConverterEiE1f@Base 2.0.11 _ZGVZN9QtPrivate19ValueTypeIsMetaTypeI7QVectorIjELb1EE17registerConverterEiE1f@Base 2.0.11 _ZN10QByteArrayD1Ev@Base 2.0.11 _ZN10QByteArrayD2Ev@Base 2.0.11 (optional=templinst)_ZN10QMultiHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEED1Ev@Base 2.0.11 (optional=templinst)_ZN10QMultiHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEED2Ev@Base 2.0.11 _ZN11ButtonGroup10setButtonsERK11QStringList@Base 2.0.11 _ZN11ButtonGroup11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN11ButtonGroup11qt_metacastEPKc@Base 2.0.11 _ZN11ButtonGroup13buttonCheckedEi@Base 2.0.11 _ZN11ButtonGroup16setCheckedButtonEi@Base 2.0.11 _ZN11ButtonGroup16staticMetaObjectE@Base 2.0.11 _ZN11ButtonGroupC1EP7QWidget@Base 2.0.11 _ZN11ButtonGroupC2EP7QWidget@Base 2.0.11 _ZN11ButtonGroupD0Ev@Base 2.0.11 _ZN11ButtonGroupD1Ev@Base 2.0.11 _ZN11ButtonGroupD2Ev@Base 2.0.11 _ZN11DDBusCallerD1Ev@Base 2.0.11 _ZN11DDBusCallerD2Ev@Base 2.0.11 _ZN11QStringListD1Ev@Base 2.0.11 _ZN11QStringListD2Ev@Base 2.0.11 _ZN12ContentTitle11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN12ContentTitle11qt_metacastEPKc@Base 2.0.11 _ZN12ContentTitle16staticMetaObjectE@Base 2.0.11 _ZN12ContentTitle8setTitleERK7QString@Base 2.0.11 _ZN12ContentTitleC1EP7QWidget@Base 2.0.11 _ZN12ContentTitleC2EP7QWidget@Base 2.0.11 _ZN12ContentTitleD0Ev@Base 2.0.11 _ZN12ContentTitleD1Ev@Base 2.0.11 _ZN12ContentTitleD2Ev@Base 2.0.11 _ZN12DThemeHelper10themeToQssE7QString@Base 2.0.11 _ZN12DThemeHelper11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN12DThemeHelper11qt_metacastEPKc@Base 2.0.11 _ZN12DThemeHelper16staticMetaObjectE@Base 2.0.11 _ZN12DThemeHelper17trimThemeContentsE7QString@Base 2.0.11 _ZN12DThemeHelperC1EP7QObject@Base 2.0.11 _ZN12DThemeHelperC2EP7QObject@Base 2.0.11 _ZN12DThemeHelperD0Ev@Base 2.0.11 _ZN12DThemeHelperD1Ev@Base 2.0.11 _ZN12DThemeHelperD2Ev@Base 2.0.11 (optional=templinst)_ZN12QWeakPointerI7QObjectED1Ev@Base 2.0.11 (optional=templinst)_ZN12QWeakPointerI7QObjectED2Ev@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent15RunFunctionTaskIbE3runEv@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent15RunFunctionTaskIvE3runEv@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent19RunFunctionTaskBaseIbE3runEv@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent19RunFunctionTaskBaseIvE3runEv@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreE10runFunctorEv@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreED0Ev@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreED1Ev@Base 2.0.11 (optional=templinst)_ZN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreED2Ev@Base 2.0.11 _ZN12ShortcutEdit10paintEventEP11QPaintEvent@Base 2.0.11 _ZN12ShortcutEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN12ShortcutEdit11qt_metacastEPKc@Base 2.0.11 _ZN12ShortcutEdit11setShortCutE6QFlagsIN2Qt16KeyboardModifierEENS1_3KeyE@Base 2.0.11 _ZN12ShortcutEdit11setShortCutERK7QString@Base 2.0.11 _ZN12ShortcutEdit12focusInEventEP11QFocusEvent@Base 2.0.11 _ZN12ShortcutEdit13focusOutEventEP11QFocusEvent@Base 2.0.11 _ZN12ShortcutEdit13keyPressEventEP9QKeyEvent@Base 2.0.11 _ZN12ShortcutEdit15shortcutChangedE6QFlagsIN2Qt16KeyboardModifierEENS1_3KeyE@Base 2.0.11 _ZN12ShortcutEdit16staticMetaObjectE@Base 2.0.11 _ZN12ShortcutEdit21mouseDoubleClickEventEP11QMouseEvent@Base 2.0.11 _ZN12ShortcutEdit21notifyShortcutChangedE6QFlagsIN2Qt16KeyboardModifierEENS1_3KeyE@Base 2.0.11 _ZN12ShortcutEdit21shortcutStringChangedERK7QString@Base 2.0.11 _ZN12ShortcutEditC1EP7QWidget@Base 2.0.11 _ZN12ShortcutEditC2EP7QWidget@Base 2.0.11 _ZN12ShortcutEditD0Ev@Base 2.0.11 _ZN12ShortcutEditD1Ev@Base 2.0.11 _ZN12ShortcutEditD2Ev@Base 2.0.11 _ZN13DBusInterface11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN13DBusInterface11qt_metacastEPKc@Base 2.0.11 _ZN13DBusInterface12NameAcquiredERK7QString@Base 2.0.11 _ZN13DBusInterface16NameOwnerChangedERK7QStringS2_S2_@Base 2.0.11 _ZN13DBusInterface16staticMetaObjectE@Base 2.0.11 _ZN13DBusInterface8NameLostERK7QString@Base 2.0.11 _ZN13DBusInterfaceC1ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 2.0.11 _ZN13DBusInterfaceC2ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 2.0.11 _ZN13DBusInterfaceD0Ev@Base 2.0.11 _ZN13DBusInterfaceD1Ev@Base 2.0.11 _ZN13DBusInterfaceD2Ev@Base 2.0.11 _ZN13DMPRISMonitor11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN13DMPRISMonitor11qt_metacastEPKc@Base 2.0.11 _ZN13DMPRISMonitor16staticMetaObjectE@Base 2.0.11 _ZN13DMPRISMonitor18onNameOwnerChangedERK7QStringS2_S2_@Base 2.0.11 _ZN13DMPRISMonitor4initEv@Base 2.0.11 _ZN13DMPRISMonitorC1EP7QObject@Base 2.0.11 _ZN13DMPRISMonitorC2EP7QObject@Base 2.0.11 _ZN13DMPRISMonitorD0Ev@Base 2.0.11 _ZN13DMPRISMonitorD1Ev@Base 2.0.11 _ZN13DMPRISMonitorD2Ev@Base 2.0.11 _ZN14QTabBarPrivate3TabD1Ev@Base 2.0.11 _ZN14QTabBarPrivate3TabD2Ev@Base 2.0.11 _ZN15QStyleOptionTabD1Ev@Base 2.0.11 _ZN15QStyleOptionTabD2Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIbED0Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIbED1Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIbED2Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIvED0Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIvED1Ev@Base 2.0.11 (optional=templinst)_ZN16QFutureInterfaceIvED2Ev@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE5equalEPKPvS6_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE6assignEPPvPKS4_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate13IteratorOwnerIPKjE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN4QMapI7QString8QVariantE14const_iteratorEE5equalEPKPvS9_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN4QMapI7QString8QVariantE14const_iteratorEE6assignEPPvPKS7_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN4QMapI7QString8QVariantE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QHashI7QString8QVariantE14const_iteratorEE5equalEPKPvS9_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QHashI7QString8QVariantE14const_iteratorEE6assignEPPvPKS7_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QHashI7QString8QVariantE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE5equalEPKPvS8_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE6assignEPPvPKS6_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI12QPainterPathE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QIconE14const_iteratorEE5equalEPKPvS8_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QIconE14const_iteratorEE6assignEPPvPKS6_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QIconE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI5QIconE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI7QRegExpE14const_iteratorEE5equalEPKPvS8_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI7QRegExpE14const_iteratorEE6assignEPPvPKS6_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI7QRegExpE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListI7QRegExpE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIP7QWidgetE14const_iteratorEE5equalEPKPvS9_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIP7QWidgetE14const_iteratorEE6assignEPPvPKS7_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIP7QWidgetE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIP7QWidgetE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIPN3Dtk6Widget15DSimpleListItemEE14const_iteratorEE5equalEPKPvSB_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIPN3Dtk6Widget15DSimpleListItemEE14const_iteratorEE6assignEPPvPKS9_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIPN3Dtk6Widget15DSimpleListItemEE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIPN3Dtk6Widget15DSimpleListItemEE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIbE14const_iteratorEE5equalEPKPvS7_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIbE14const_iteratorEE6assignEPPvPKS5_@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIbE14const_iteratorEE7advanceEPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate19IteratorOwnerCommonIN5QListIbE14const_iteratorEE7destroyEPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QDBusMessageLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QDBusMessageLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QPainterPathLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI12QPainterPathLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI13QDBusArgumentLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI13QDBusArgumentLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI15QDBusObjectPathLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI15QDBusObjectPathLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI12QPainterPathELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI12QPainterPathELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI5QIconELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI5QIconELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI7QRegExpELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListI7QRegExpELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIP7QWidgetELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIP7QWidgetELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIPN3Dtk6Widget15DSimpleListItemEELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIPN3Dtk6Widget15DSimpleListItemEELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIbELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI5QListIbELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI6QFlagsIN2Qt16KeyboardModifierEELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI6QFlagsIN2Qt16KeyboardModifierEELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI7QVectorIjELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI7QVectorIjELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI8QMarginsLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI8QMarginsLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN18QAbstractAnimation5StateELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN18QAbstractAnimation5StateELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN2Qt10DropActionELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN2Qt10DropActionELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN2Qt3KeyELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIN2Qt3KeyELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_23QSequentialIterableImplELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_23QSequentialIterableImplELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_24QAssociativeIterableImplELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperINS_24QAssociativeIterableImplELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP7QWidgetLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP7QWidgetLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP7QWindowLb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP7QWindowLb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk4Core9DSettingsELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk4Core9DSettingsELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk6Widget12DAnchorsBaseELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk6Widget12DAnchorsBaseELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk6Widget15DSimpleListItemELb1EE8DestructEPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIPN3Dtk6Widget15DSimpleListItemELb1EE9ConstructEPvPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListI12QPainterPathEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListI5QIconEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListI7QRegExpEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListIP7QWidgetEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListIPN3Dtk6Widget15DSimpleListItemEEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI5QListIbEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl13moveToEndImplI7QVectorIjEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListI12QPainterPathEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListI5QIconEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListI7QRegExpEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListIP7QWidgetEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListIPN3Dtk6Widget15DSimpleListItemEEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI5QListIbEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl15moveToBeginImplI7QVectorIjEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListI12QPainterPathEEEPKvS6_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListI5QIconEEEPKvS6_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListI7QRegExpEEEPKvS6_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListIP7QWidgetEEEPKvS7_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListIPN3Dtk6Widget15DSimpleListItemEEEEPKvS9_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI5QListIbEEEPKvS5_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl6atImplI7QVectorIjEEEPKvS5_i@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListI12QPainterPathEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListI5QIconEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListI7QRegExpEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListIP7QWidgetEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListIPN3Dtk6Widget15DSimpleListItemEEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI5QListIbEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl7getImplI7QVectorIjEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListI12QPainterPathEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListI5QIconEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListI7QRegExpEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListIP7QWidgetEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListIPN3Dtk6Widget15DSimpleListItemEEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI5QListIbEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate23QSequentialIterableImpl8sizeImplI7QVectorIjEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl10getKeyImplI4QMapI7QString8QVariantEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl10getKeyImplI5QHashI7QString8QVariantEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl11advanceImplI4QMapI7QString8QVariantEEEvPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl11advanceImplI5QHashI7QString8QVariantEEEvPPvi@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl12getValueImplI4QMapI7QString8QVariantEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl12getValueImplI5QHashI7QString8QVariantEEENS_11VariantDataEPKPvij@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl7endImplI4QMapI7QString8QVariantEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl7endImplI5QHashI7QString8QVariantEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl8findImplI4QMapI7QString8QVariantEEEvPKvS7_PPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl8findImplI5QHashI7QString8QVariantEEEvPKvS7_PPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl8sizeImplI4QMapI7QString8QVariantEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl8sizeImplI5QHashI7QString8QVariantEEEiPKv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl9beginImplI4QMapI7QString8QVariantEEEvPKvPPv@Base 2.0.11 (optional=templinst)_ZN17QtMetaTypePrivate24QAssociativeIterableImpl9beginImplI5QHashI7QString8QVariantEEEvPKvPPv@Base 2.0.11 _ZN18NavigationDelegate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN18NavigationDelegate11qt_metacastEPKc@Base 2.0.11 _ZN18NavigationDelegate16staticMetaObjectE@Base 2.0.11 _ZN18NavigationDelegateC1EP7QWidget@Base 2.0.11 _ZN18NavigationDelegateC2EP7QWidget@Base 2.0.11 _ZN18NavigationDelegateD0Ev@Base 2.0.11 _ZN18NavigationDelegateD1Ev@Base 2.0.11 _ZN18NavigationDelegateD2Ev@Base 2.0.11 _ZN18QStyleOptionButtonD1Ev@Base 2.0.11 _ZN18QStyleOptionButtonD2Ev@Base 2.0.11 (optional=templinst)_ZN21QScopedPointerDeleterIN3Dtk6Widget14ContentPrivateEE7cleanupEPS2_@Base 2.0.11 _ZN22QStyleOptionToolButtonD1Ev@Base 2.0.11 _ZN22QStyleOptionToolButtonD2Ev@Base 2.0.11 _ZN26StartupNotificationMonitor10appStartupE7QString@Base 2.0.11 _ZN26StartupNotificationMonitor11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN26StartupNotificationMonitor11qt_metacastEPKc@Base 2.0.11 _ZN26StartupNotificationMonitor16staticMetaObjectE@Base 2.0.11 _ZN26StartupNotificationMonitor17nativeEventFilterERK10QByteArrayPvPl@Base 2.0.11 _ZN26StartupNotificationMonitor19appStartupCompletedE7QString@Base 2.0.11 _ZN26StartupNotificationMonitor8instanceEv@Base 2.0.11 _ZN26StartupNotificationMonitorC1Ev@Base 2.0.11 _ZN26StartupNotificationMonitorC2Ev@Base 2.0.11 _ZN26StartupNotificationMonitorD0Ev@Base 2.0.11 _ZN26StartupNotificationMonitorD1Ev@Base 2.0.11 _ZN26StartupNotificationMonitorD2Ev@Base 2.0.11 (optional=templinst)_ZN28QExplicitlySharedDataPointerI11QSharedDataED1Ev@Base 2.0.11 (optional=templinst)_ZN28QExplicitlySharedDataPointerI11QSharedDataED2Ev@Base 2.0.11 _ZN29StartupNotificationMonitorSubD0Ev@Base 2.0.11 _ZN29StartupNotificationMonitorSubD1Ev@Base 2.0.11 _ZN29StartupNotificationMonitorSubD2Ev@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget10updateSizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget11sizeChangedE5QSize@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget12setDirectionEN10QBoxLayout9DirectionE@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget16directionChangedEN10QBoxLayout9DirectionE@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget5eventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidget9addWidgetEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidgetC1EN10QBoxLayout9DirectionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidgetC2EN10QBoxLayout9DirectionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget10DBoxWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit10crumbAddedERK7QString@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11appendCrumbERK7QString@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11appendCrumbERKNS0_16DCrumbTextFormatE@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11insertCrumbERK7QStringi@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11insertCrumbERKNS0_16DCrumbTextFormatEi@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit11setSplitterERK7QString@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit12crumbRemovedERK7QString@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit13focusOutEventEP11QFocusEvent@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit13keyPressEventEP9QKeyEvent@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit14setCrumbRadiusEi@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit16crumbListChangedEv@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit16setCrumbReadOnlyEb@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit18insertFromMimeDataEPK9QMimeData@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit21mouseDoubleClickEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEdit21setDualClickMakeCrumbEb@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget10DCrumbEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar11setAutoHideEb@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar15autoHideChangedEb@Base 2.0.11 _ZN3Dtk6Widget10DScrollBar16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget10DScrollBarC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DScrollBarC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10DScrollBarD0Ev@Base 2.0.11 _ZN3Dtk6Widget10DScrollBarD1Ev@Base 2.0.11 _ZN3Dtk6Widget10DScrollBarD2Ev@Base 2.0.11 _ZN3Dtk6Widget10LoadSlider10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget10LoadSlider18setLoadSliderColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget10LoadSliderC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10LoadSliderC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10LoadSliderD0Ev@Base 2.0.11 _ZN3Dtk6Widget10LoadSliderD1Ev@Base 2.0.11 _ZN3Dtk6Widget10LoadSliderD2Ev@Base 2.0.11 _ZN3Dtk6Widget10Navigation11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget10Navigation11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget10Navigation13onSelectGroupERK7QString@Base 2.0.11 _ZN3Dtk6Widget10Navigation13selectedGroupERK7QString@Base 2.0.11 _ZN3Dtk6Widget10Navigation14updateSettingsERK10QByteArray8QPointerINS_4Core9DSettingsEE@Base 2.0.11 _ZN3Dtk6Widget10Navigation16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget10NavigationC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10NavigationC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget10NavigationD0Ev@Base 2.0.11 _ZN3Dtk6Widget10NavigationD1Ev@Base 2.0.11 _ZN3Dtk6Widget10NavigationD2Ev@Base 2.0.11 _ZN3Dtk6Widget10dropShadowERK7QPixmapdRK6QColor@Base 2.0.11 _ZN3Dtk6Widget11DBaseButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DBaseButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DBaseButton15initInsideFrameEv@Base 2.0.11 _ZN3Dtk6Widget11DBaseButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC1ERK5QIconRK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC1ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC2ERK5QIconRK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonC2ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DBaseButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand10setContentEP7QWidget6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand11sizeChangedE5QSize@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand12expandChangeEb@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand15setHeaderHeightEi@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand19setSeparatorVisibleEb@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand20setAnimationDurationEi@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand23setAnimationEasingCurveE12QEasingCurve@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand27setExpandedSeparatorVisibleEb@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand9setExpandEb@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpand9setHeaderEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpandC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpandC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpandD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpandD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DBaseExpandD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DButtonList10addButtonsERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11initConnectEv@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11initMarginsEiii@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11setItemSizeE5QSize@Base 2.0.11 _ZN3Dtk6Widget11DButtonList11setItemSizeEii@Base 2.0.11 _ZN3Dtk6Widget11DButtonList12setItemWidthEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList13buttonCheckedE7QString@Base 2.0.11 _ZN3Dtk6Widget11DButtonList13setItemHeightEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList16getButtonByIndexEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList16setButtonCheckedEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DButtonList17buttonMouseLeavedE7QString@Base 2.0.11 _ZN3Dtk6Widget11DButtonList18buttonMouseEnteredE7QString@Base 2.0.11 _ZN3Dtk6Widget11DButtonList18checkButtonByIndexEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList25buttonCheckedIndexChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DButtonList5clearEv@Base 2.0.11 _ZN3Dtk6Widget11DButtonList9addButtonERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DButtonList9addButtonERK7QStringi@Base 2.0.11 _ZN3Dtk6Widget11DButtonListC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DButtonListC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DButtonListD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DButtonListD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DButtonListD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog10setVisibleEb@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11addComboBoxERK7QStringRK11QStringList@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11addComboBoxERK7QStringRKNS1_16DComboBoxOptionsE@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11addLineEditERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11addLineEditERK7QStringRKNS1_16DLineEditOptionsE@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DFileDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogC1EP7QWidgetRK7QStringS6_S6_@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogC2EP7QWidgetRK7QStringS6_S6_@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DFileDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout10addSpacingEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout10addStretchEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout10insertItemEiP11QLayoutItem@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout10setSpacingEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout11flowChangedEN9QListView4FlowE@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout11setGeometryERK5QRect@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout12countChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout12insertLayoutEiP7QLayout@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout12insertWidgetEiP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout13addSpacerItemEP11QSpacerItem@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout13insertSpacingEii@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout13insertStretchEii@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout16insertSpacerItemEiP11QSpacerItem@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout18setVerticalSpacingEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout20setHorizontalSpacingEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout22verticalSpacingChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout24horizontalSpacingChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout6takeAtEi@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout7addItemEP11QLayoutItem@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayout7setFlowEN9QListView4FlowE@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutC1Ev@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutC2Ev@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DFlowLayoutD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DHBoxWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLine10setContentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLine11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLine11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLine16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLine8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLineC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLineC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLineD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLineD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DHeaderLineD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DIconButton10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DIconButton10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11initConnectEv@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11mouseLeavedE7QString@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget11DIconButton11updateStyleEv@Base 2.0.11 _ZN3Dtk6Widget11DIconButton12mouseEnteredE7QString@Base 2.0.11 _ZN3Dtk6Widget11DIconButton12setIconLabelERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DIconButton13hideIconLabelEv@Base 2.0.11 _ZN3Dtk6Widget11DIconButton13initIconLabelEv@Base 2.0.11 _ZN3Dtk6Widget11DIconButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DIconButton17setIconLeftMarginEi@Base 2.0.11 _ZN3Dtk6Widget11DIconButtonC1ERK7QStringS4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DIconButtonC2ERK7QStringS4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DIconButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DIconButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DIconButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DLinkButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DLinkButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DLinkButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DLinkButtonC1ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DLinkButtonC2ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DLinkButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DLinkButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DLinkButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10addWidgetsERK5QListIP7QWidgetE6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10hideWidgetEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10setCheckedEib@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10setSpacingEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10showWidgetEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget10updateSizeEv@Base 2.0.11 _ZN3Dtk6Widget11DListWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DListWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DListWidget11setItemSizeEii@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12countChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12insertWidgetEiP7QWidget6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12removeWidgetEib@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12setCheckModeENS1_9CheckModeE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12setCheckableEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget12setDirectionEN10QBoxLayout9DirectionE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget13insertWidgetsEiRK5QListIP7QWidgetE6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget13setToggleableEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget14checkedChangedEib@Base 2.0.11 _ZN3Dtk6Widget11DListWidget15setVisibleCountEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget16checkableChangedEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DListWidget17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget11DListWidget17toggleableChangedEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget18setContentsMarginsERK8QMargins@Base 2.0.11 _ZN3Dtk6Widget11DListWidget18setContentsMarginsEiiii@Base 2.0.11 _ZN3Dtk6Widget11DListWidget19firstCheckedChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget19visibleCountChangedEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget23setEnableVerticalScrollEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget25setEnableHorizontalScrollEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget27enableVerticalScrollChangedEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget29enableHorizontalScrollChangedEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget5clearEb@Base 2.0.11 _ZN3Dtk6Widget11DListWidget7clickedEi@Base 2.0.11 _ZN3Dtk6Widget11DListWidget7indexOfEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidget9addWidgetEP7QWidget6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC1EN10QBoxLayout9DirectionENS1_9CheckModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC1ENS1_9CheckModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC1ERNS0_18DListWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC2EN10QBoxLayout9DirectionENS1_9CheckModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC2ENS1_9CheckModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetC2ERNS0_18DListWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DListWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow11setClipPathERK12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow12setFrameMaskERK7QRegion@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow14setBorderColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow14setBorderWidthEi@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow14setShadowColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow15clipPathChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow15setShadowOffsetERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow15setShadowRadiusEi@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow15setWindowRadiusEi@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow16frameMaskChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow18borderColorChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow18borderWidthChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow18shadowColorChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19frameMarginsChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19setEnableBlurWindowEb@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19setEnableSystemMoveEb@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19shadowOffsetChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19shadowRadiusChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow19windowRadiusChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow21setEnableSystemResizeEb@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow23enableBlurWindowChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow23enableSystemMoveChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow24setTranslucentBackgroundEb@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow25enableSystemResizeChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow26setAutoInputMaskByClipPathEb@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow28translucentBackgroundChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindow30autoInputMaskByClipPathChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowC1ERNS0_18DMainWindowPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowC2ERNS0_18DMainWindowPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DMainWindowD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DOptionList11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DOptionList11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DOptionList12insertOptionEiPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget11DOptionList16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DOptionList18setCurrentSelectedERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DOptionList18setCurrentSelectedEi@Base 2.0.11 _ZN3Dtk6Widget11DOptionList9addOptionEPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget11DOptionListC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DOptionListC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DOptionListD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DOptionListD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DOptionListD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DPushButton10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DPushButton10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DPushButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DPushButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DPushButton12setHoverIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget11DPushButton12setHoverIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DPushButton12setPressIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget11DPushButton12setPressIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DPushButton13setNormalIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget11DPushButton13setNormalIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget11DPushButton15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget11DPushButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonC1ERK7QStringS4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonC2ERK7QStringS4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DPushButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea13hideScrollBarEP10QScrollBar@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea13showScrollBarEP10QScrollBar@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea20setAutoHideScrollBarEb@Base 2.0.11 _ZN3Dtk6Widget11DScrollArea24autoHideScrollBarChangedEb@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaC1ERNS0_18DScrollAreaPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaC2ERNS0_18DScrollAreaPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DScrollAreaD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit10toEditModeEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit11textChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit13returnPressedEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit15editingFinishedEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit15initInsideFrameEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit5clearEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit5eventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit7focusInEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEdit8focusOutEv@Base 2.0.11 _ZN3Dtk6Widget11DSearchEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DSearchEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DSearchEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DSearchEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DSearchEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DTextButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DTextButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DTextButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DTextButtonC1ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DTextButtonC2ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DTextButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DTextButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DTextButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect11setDurationEi@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect12setDirectionENS1_9DirectionE@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect12stateChangedEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect17setFixedPixelMoveEi@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect4drawEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect4playEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect4stopEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect5pauseEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect6resumeEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffect8finishedEv@Base 2.0.11 _ZN3Dtk6Widget11DTickEffectC1EP7QWidgetS3_@Base 2.0.11 _ZN3Dtk6Widget11DTickEffectC2EP7QWidgetS3_@Base 2.0.11 _ZN3Dtk6Widget11DTickEffectD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DTickEffectD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DTickEffectD2Ev@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget11DVBoxWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog10setLicenseERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog10setVersionERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog13keyPressEventEP9QKeyEvent@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setCompanyLogoERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setDescriptionERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setProductIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setProductNameERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setWebsiteLinkERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setWebsiteNameERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog14setWindowTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog22setAcknowledgementLinkERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog25setAcknowledgementVisibleEb@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialog9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialogC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialogC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DAboutDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10moveBottomEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10moveCenterERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10setEnabledEb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10setMarginsEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10topChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase10updateFillEv@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11fillChangedEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11leftChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11setCenterInEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase11setCenterInEPS1_@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase12clearAnchorsEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase12rightChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase12setTopMarginEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase13bottomChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase13setLeftMarginEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase14enabledChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase14marginsChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase14setRightMarginEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase14updateCenterInEv@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase14updateVerticalEv@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase15centerInChangedEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase15setBottomMarginEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase16topMarginChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase16updateHorizontalEv@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase17leftMarginChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase17setVerticalCenterEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase17setVerticalCenterEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase18moveVerticalCenterEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase18rightMarginChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase19bottomMarginChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase19setHorizontalCenterEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase19setHorizontalCenterEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase20moveHorizontalCenterEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase20setAlignWhenCenteredEb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase21getAnchorBaseByWidgetEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase21verticalCenterChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase23horizontalCenterChangedEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase23setVerticalCenterOffsetEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase24alignWhenCenteredChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase25setHorizontalCenterOffsetEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase27verticalCenterOffsetChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase29horizontalCenterOffsetChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase4initEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase6setTopEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase6setTopEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase7moveTopEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase7setFillEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase7setFillEPS1_@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase7setLeftEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase7setLeftEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase8moveLeftEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase8setRightEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase8setRightEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase9moveRightEi@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase9setAnchorEP7QWidgetRKN2Qt11AnchorPointES3_S7_@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase9setAnchorERKN2Qt11AnchorPointEP7QWidgetS5_@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase9setBottomEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBase9setBottomEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseC1EP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseC2EP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsBaseD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect17setVerticalCenterEdN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect19setHorizontalCenterEdN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect6setTopEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect7setLeftEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect8setRightEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DAnchorsRect9setBottomEiN2Qt11AnchorPointE@Base 2.0.11 _ZN3Dtk6Widget12DApplication11aboutDialogEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DApplication11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DApplication14isDXcbPlatformEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication14loadDXcbPluginEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication14loadTranslatorE5QListI7QLocaleE@Base 2.0.11 _ZN3Dtk6Widget12DApplication14setAboutDialogEPNS0_12DAboutDialogE@Base 2.0.11 _ZN3Dtk6Widget12DApplication14setOOMScoreAdjEi@Base 2.0.11 _ZN3Dtk6Widget12DApplication14setProductIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget12DApplication14setProductNameERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication15buildDtkVersionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication16handleHelpActionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication16handleQuitActionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication16iconThemeChangedEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DApplication17handleAboutActionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication17runtimeDtkVersionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication17setSingleInstanceERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication17setSingleInstanceERK7QStringNS1_11SingleScopeE@Base 2.0.11 _ZN3Dtk6Widget12DApplication18newInstanceStartedEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication18registerDDESessionEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication18setVisibleMenuIconEb@Base 2.0.11 _ZN3Dtk6Widget12DApplication21setApplicationLicenseERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication22setApplicationHomePageERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication23customQtThemeConfigPathERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication25setApplicationDescriptionERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication26setVisibleMenuShortcutTextEb@Base 2.0.11 _ZN3Dtk6Widget12DApplication27customizedQtThemeConfigPathEv@Base 2.0.11 _ZN3Dtk6Widget12DApplication28setVisibleMenuCheckboxWidgetEb@Base 2.0.11 _ZN3Dtk6Widget12DApplication29screenDevicePixelRatioChangedEP7QScreen@Base 2.0.11 _ZN3Dtk6Widget12DApplication33customQtThemeConfigPathByUserHomeERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication33setApplicationAcknowledgementPageERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplication36setApplicationAcknowledgementVisibleEb@Base 2.0.11 _ZN3Dtk6Widget12DApplication6notifyEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget12DApplication8setThemeERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DApplicationC1ERiPPc@Base 2.0.11 _ZN3Dtk6Widget12DApplicationC2ERiPPc@Base 2.0.11 _ZN3Dtk6Widget12DApplicationD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DApplicationD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DApplicationD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton10mouseEnterEv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton10mouseLeaveEv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton10mousePressEv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton12mouseReleaseEv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton14setButtonStateENS1_16ArrowButtonStateE@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton15initButtonStateEv@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton15updateIconStateENS1_16ArrowButtonStateE@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton17setArrowDirectionENS1_14ArrowDirectionE@Base 2.0.11 _ZN3Dtk6Widget12DArrowButton19updateIconDirectionENS1_14ArrowDirectionE@Base 2.0.11 _ZN3Dtk6Widget12DArrowButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DArrowButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DArrowButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DArrowButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DArrowButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup12removeExpandEPNS0_11DBaseExpandE@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup15onExpandChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup5setIdEPNS0_11DBaseExpandEi@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroup9addExpandEPNS0_11DBaseExpandEi@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroupC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroupC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroupD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroupD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DExpandGroupD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DHiDPIHelper12loadNxPixmapERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget12DImageButton10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget12DImageButton10setCheckedEb@Base 2.0.11 _ZN3Dtk6Widget12DImageButton10setEnabledEb@Base 2.0.11 _ZN3Dtk6Widget12DImageButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DImageButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DImageButton11setDisabledEb@Base 2.0.11 _ZN3Dtk6Widget12DImageButton11setHoverPicERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton11setPressPicERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton12setCheckableEb@Base 2.0.11 _ZN3Dtk6Widget12DImageButton12setNormalPicERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton12stateChangedEv@Base 2.0.11 _ZN3Dtk6Widget12DImageButton13setCheckedPicERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton14checkedChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DImageButton14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget12DImageButton14setDisabledPicERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DImageButton15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget12DImageButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DImageButton17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget12DImageButton7clickedEv@Base 2.0.11 _ZN3Dtk6Widget12DImageButton8setStateENS1_5StateE@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC1ERK7QStringS4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC1ERK7QStringS4_S4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC1ERNS0_19DImageButtonPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC2ERK7QStringS4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC2ERK7QStringS4_S4_S4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonC2ERNS0_19DImageButtonPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DImageButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog10setIntStepEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog11setIntRangeEii@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog11setIntValueEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog12setInputModeENS1_9InputModeE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog12setTextAlertEb@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog12setTextValueERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog13setIntMaximumEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog13setIntMinimumEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog14setDoubleRangeEdd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog14setDoubleValueEd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog15intValueChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog15okButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog15setOkButtonTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog15setTextEchoModeEN9QLineEdit8EchoModeE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16intValueSelectedEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16setComboBoxItemsERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16setDoubleMaximumEd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16setDoubleMinimumEd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16textAlertChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog16textValueChangedERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog17setDoubleDecimalsEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog17textValueSelectedERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog18doubleValueChangedEd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog18setOkButtonEnabledEb@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog19cancelButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog19doubleValueSelectedEd@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog19setCancelButtonTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog19setComboBoxEditableEb@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog23setComboBoxCurrentIndexEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog27comboBoxCurrentIndexChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog6getIntEP7QWidgetRK7QStringS6_iiiiPb6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog7getItemEP7QWidgetRK7QStringS6_RK11QStringListibPb6QFlagsIN2Qt10WindowTypeEESB_INSC_15InputMethodHintEE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog7getTextEP7QWidgetRK7QStringS6_N9QLineEdit8EchoModeES6_Pb6QFlagsIN2Qt10WindowTypeEESA_INSB_15InputMethodHintEE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog9getDoubleEP7QWidgetRK7QStringS6_dddiPb6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget12DInputDialog9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget12DInputDialogC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DInputDialogC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DInputDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DInputDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DInputDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget10pushWidgetEP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget11busyChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget12depthChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget12insertWidgetEiP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget13setTransitionEPNS0_30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget15setCurrentIndexEiNS0_30DAbstractStackWidgetTransition14TransitionTypeEb@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget16setAnimationTypeEN12QEasingCurve4TypeE@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget16setCurrentWidgetEP7QWidgetNS0_30DAbstractStackWidgetTransition14TransitionTypeEb@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget18widgetDepthChangedEP7QWidgeti@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget19currentIndexChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget20currentWidgetChangedEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget20setAnimationDurationEi@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget20switchWidgetFinishedEv@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget5clearEv@Base 2.0.11 _ZN3Dtk6Widget12DStackWidget9popWidgetEP7QWidgetbib@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetC1ERNS0_19DStackWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetC2ERNS0_19DStackWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DStackWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DStyleOption4initEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer10setViewBoxERK5QRect@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer10setViewBoxERK6QRectF@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer4loadERK10QByteArray@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer4loadERK7QString@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer6renderEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer6renderEP8QPainterRK6QRectF@Base 2.0.11 _ZN3Dtk6Widget12DSvgRenderer6renderEP8QPainterRK7QStringRK6QRectF@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC1ERK10QByteArrayP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC1ERK7QStringP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC2ERK10QByteArrayP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererC2ERK7QStringP7QObject@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DSvgRendererD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget10hueChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget11setContrastEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget12roundChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget12scaleChangedEd@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget13setBrightnessEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget13setSaturationEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget15contrastChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget17brightnessChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget17saturationChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget18setAspectRatioModeEN2Qt15AspectRatioModeE@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget19setMirroredVerticalEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget21setMirroredHorizontalEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget23mirroredVerticalChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget24setSourceVideoPixelRatioEd@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget25mirroredHorizontalChangedEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget5paintERK11QVideoFrame@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget6setHueEi@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget7captureEv@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget8setRoundEb@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget8setScaleEd@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget9setSourceEP12QMediaPlayer@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidget9setSourceEP7QCamera@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DVideoWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget12DialogButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget12DialogButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget12DialogButton13setButtonTypeEi@Base 2.0.11 _ZN3Dtk6Widget12DialogButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget12DialogButton17buttonTypeChangedEi@Base 2.0.11 _ZN3Dtk6Widget12DialogButtonC1ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DialogButtonC2ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget12DialogButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget12DialogButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget12DialogButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget12moveToCenterEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13ContentLoader11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13ContentLoader11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13ContentLoader16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13ContentLoaderD0Ev@Base 2.0.11 _ZN3Dtk6Widget13ContentLoaderD1Ev@Base 2.0.11 _ZN3Dtk6Widget13ContentLoaderD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit11setReadOnlyEb@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit12setSelectionEii@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit17setCursorPositionEi@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEdit9selectAllEv@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DIpv4LineEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControl11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControl14setPictureSizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControl16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControl17setPictureVisibleEb@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControlC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControlC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControlD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControlD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DMPRISControlD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEdit11setEchoModeEN9QLineEdit8EchoModeE@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEdit15echoModeChangedEb@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DPasswordEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit10toEchoModeEv@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit11DefaultTipsE@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit13setKeyMappingERK4QMapI7QStringS3_E@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit14setShortcutKeyERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit16clearShortcutKeyEv@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit16shortcutKeyPressEP9QKeyEvent@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit18invalidShortcutKeyERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit18isValidShortcutKeyERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit19convertShortcutKeysERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit19shortcutKeysChangedERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit20shortcutKeysFinishedERK7QString@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEdit24setBlockShortcutKeysListERK5QListI7QRegExpE@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DShortcutEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton10setCheckedEb@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton14checkedChangedEb@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton20setEnabledBackgroundE6QColor@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButton21setDisabledBackgroundE6QColor@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DSwitchButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager12themeChangedE7QString@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager14registerWidgetEP7QWidget11QStringList@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager14registerWidgetEP7QWidgetRK7QStringRK11QStringList@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager18widgetThemeChangedEP7QWidget7QString@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager26updateThemeOnParentChangedEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager8instanceEv@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager8setThemeE7QString@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager8setThemeEP7QWidget7QString@Base 2.0.11 _ZN3Dtk6Widget13DThemeManager9updateQssEv@Base 2.0.11 _ZN3Dtk6Widget13DThemeManagerC1Ev@Base 2.0.11 _ZN3Dtk6Widget13DThemeManagerC2Ev@Base 2.0.11 _ZN3Dtk6Widget13DThemeManagerD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DThemeManagerD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DThemeManagerD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivate6initUIEv@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivateC1EPNS0_6DToastE@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivateC2EPNS0_6DToastE@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DToastPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget13DTrashManager10cleanTrashEv@Base 2.0.11 _ZN3Dtk6Widget13DTrashManager11moveToTrashERK7QStringb@Base 2.0.11 _ZN3Dtk6Widget13DTrashManager8instanceEv@Base 2.0.11 _ZN3Dtk6Widget13DTrashManagerC1Ev@Base 2.0.11 _ZN3Dtk6Widget13DTrashManagerC2Ev@Base 2.0.11 _ZN3Dtk6Widget13DTrashManagerD0Ev@Base 2.0.11 _ZN3Dtk6Widget13DTrashManagerD1Ev@Base 2.0.11 _ZN3Dtk6Widget13DTrashManagerD2Ev@Base 2.0.11 _ZN3Dtk6Widget13select_eventsEP9_XDisplay@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivate10updateSizeEv@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivate16getContentLayoutEv@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivate18_q_onButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivate25_q_defaultButtonTriggeredEv@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivateC1EPNS0_7DDialogE@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivateC2EPNS0_7DDialogE@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DDialogPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox12alertChangedEb@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox15setDefaultValueEd@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox19defaultValueChangedEd@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBox8setAlertEb@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBoxC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBoxC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBoxD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBoxD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DDoubleSpinBoxD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow10pidChangedEv@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow14wmClassChangedEv@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindow5eventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindowC1EP7QWindow@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindowC2EP7QWindow@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindowD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindowD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DForeignWindowD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate10setCheckedEb@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate11sizeChangedEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate14setCheckedIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate7setIconERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivate7setIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivateC1EPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivateC2EPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DOptionPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator12previousPageEv@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator12setPageCountEi@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator13setPointColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator14setCurrentPageEi@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator14setPointRadiusEi@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator16setPointDistanceEi@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator22setSecondaryPointColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator23setSecondaryPointRadiusEi@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicator8nextPageEv@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicatorC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicatorC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicatorD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicatorD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DPageIndicatorD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor14registerRegionEv@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor16setWatchedRegionERK7QRegion@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor16unregisterRegionEv@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitor17setCoordinateTypeENS1_14CoordinateTypeE@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitorC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitorC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitorD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitorD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DRegionMonitorD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DSliderPrivate16getScalePositionEi@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButton10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonC1ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonC2ERK7QStringP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DSuggestButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10FullWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10FullWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10FullWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10FullWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate10tabRemovedEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate11makeVisibleEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate11tabInsertedEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate13dragMoveEventEP14QDragMoveEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate13layoutWidgetsEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate13startTabFlashEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate14autoScrollTabsERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate14dragEnterEventEP15QDragEnterEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate14dragLeaveEventEP15QDragLeaveEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15TabBarAnimation11updateStateEN18QAbstractAnimation5StateES4_@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15TabBarAnimation18updateCurrentValueERK8QVariant@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15TabBarAnimationD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15TabBarAnimationD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15TabBarAnimationD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15moveTabFinishedEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15setupMovableTabEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate15tabLayoutChangeEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate16setupDragableTabEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate18stopAutoScrollTabsEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate19setDragingFromOtherEb@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate23tabInsertIndexFromMouseE6QPoint@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate24updateMoveingTabPositionERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate25ensureScrollTabsAnimationEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate5slideEii@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate8stopMoveEv@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate9dropEventEP10QDropEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate9layoutTabEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate9startDragEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivate9startMoveEi@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivateC1EPNS0_7DTabBarE@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivateC2EPNS0_7DTabBarE@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DTabBarPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget14DTrashManager_D0Ev@Base 2.0.11 _ZN3Dtk6Widget14DTrashManager_D1Ev@Base 2.0.11 _ZN3Dtk6Widget14DTrashManager_D2Ev@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress12valueChangedEv@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress14setTextVisibleEb@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress4stopEv@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress5startEv@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgress8setValueEi@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgressC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgressC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgressD0Ev@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgressD1Ev@Base 2.0.11 _ZN3Dtk6Widget14DWaterProgressD2Ev@Base 2.0.11 _ZN3Dtk6Widget14xinput_versionEP9_XDisplay@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIcon11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIcon11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIcon14setButtonStateEi@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIcon16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIcon17setArrowDirectionEi@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIconC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIconC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIconD0Ev@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIconD1Ev@Base 2.0.11 _ZN3Dtk6Widget15ArrowButtonIconD2Ev@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine10mousePressEv@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine21reverseArrowDirectionEv@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLine9setExpandEb@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLineC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLineC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLineD0Ev@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLineD1Ev@Base 2.0.11 _ZN3Dtk6Widget15ArrowHeaderLineD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog11setGeometryERK5QRect@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog11sizeChangedE5QSize@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog12moveToCenterEv@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog14moveToTopRightEv@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog14setBorderColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog18moveToCenterByRectERK5QRect@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog18setBackgroundColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog18setDisplayPositionENS1_15DisplayPositionE@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog20moveToTopRightByRectERK5QRect@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog4moveERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialog9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogC1ERNS0_22DAbstractDialogPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogC2ERNS0_22DAbstractDialogPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DAbstractDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle10setContentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle12getFixedSizeEv@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle13setArrowWidthEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle14setArrowHeightEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle14setBorderColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle14setBorderWidthEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle16setShadowXOffsetERKd@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle16setShadowYOffsetERKd@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle17resizeWithContentEv@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle17setArrowDirectionENS1_14ArrowDirectionE@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle18setBackgroundColorENS0_17DBlurEffectWidget13MaskColorTypeE@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle18setBackgroundColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle19setShadowBlurRadiusERKd@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle4moveEii@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle4showEii@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle5eventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle8setWidthEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle9setArrowXEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle9setArrowYEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle9setHeightEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle9setMarginEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangle9setRadiusEi@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleC1ENS1_14ArrowDirectionENS1_9FloatModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleC1ENS1_14ArrowDirectionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleC2ENS1_14ArrowDirectionENS1_9FloatModeEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleC2ENS1_14ArrowDirectionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DArrowRectangleD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress11bottomLabelEv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress11mouseLeavedEv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress12mouseEnteredEv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress12setLineWidthEi@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress13setChunkColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress18setBackgroundColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress7clickedEv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress7setTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress8setValueEi@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgress8topLabelEv@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgressC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgressC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgressD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgressD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DCircleProgressD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget10setEnabledEb@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget11sizeChangedERK5QSize@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget12widthChangedEi@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget13heightChangedEi@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget13targetChangedEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget14enabledChangedEb@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget15positionChangedERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget6showedEv@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget8xChangedEi@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget8yChangedEi@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidget9setTargetEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetC1EP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetC1EPNS0_22DEnhancedWidgetPrivateEP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetC2EP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetC2EPNS0_22DEnhancedWidgetPrivateEP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DEnhancedWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialog14updateSettingsEPNS_4Core9DSettingsE@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialog14updateSettingsERK10QByteArrayPNS_4Core9DSettingsE@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialogC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialogC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DSettingsDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListItem11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListItem11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListItem16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListItemC1Ev@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListItemC2Ev@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView10clearItemsEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView10removeItemEPNS0_15DSimpleListItemE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView10wheelEventEP11QWheelEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView12refreshItemsE5QListIPNS0_15DSimpleListItemEE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView12scrollPageUpEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView12setRowHeightEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13addSelectionsE5QListIPNS0_15DSimpleListItemEEb@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13getScrollbarYEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13getSelectionsEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13hideScrollbarEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13keyPressEventEP9QKeyEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView13setClipRadiusEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14paintScrollbarEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14scrollPageDownEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14selectAllItemsEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14selectLastItemEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14selectNextItemEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView14selectPrevItemEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15changeHoverItemE6QPointPNS0_15DSimpleListItemEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15clearSelectionsEb@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15ctrlScrollToEndEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15getRenderWidthsEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15rightClickItemsE6QPoint5QListIPNS0_15DSimpleListItemEE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15selectFirstItemEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView15setSingleSelectEb@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView16ctrlScrollPageUpEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView16ctrlScrollToHomeEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView16shiftSelectToEndEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17mouseHoverChangedEPNS0_15DSimpleListItemES3_i6QPoint@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17mousePressChangedEPNS0_15DSimpleListItemEi6QPoint@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17shiftSelectPageUpEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17shiftSelectToHomeEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17shiftSelectToNextEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView17shiftSelectToPrevEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18adjustRenderOffsetEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18ctrlScrollPageDownEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18getScrollbarHeightEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18isMouseAtTitleAreaEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18setColumnHideFlagsE5QListIbEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18setColumnTitleInfoE5QListI7QStringES2_IiEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView18setSearchAlgorithmEPFbPKNS0_15DSimpleListItemE7QStringE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19changeColumnVisibleEib5QListIbE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19changeSortingStatusEib@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19getScrollAreaHeightEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19isMouseAtScrollAreaEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19mouseReleaseChangedEPNS0_15DSimpleListItemEi6QPoint@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView19shiftSelectPageDownEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView21getBottomRenderOffsetEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView23startScrollbarHideTimerEv@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView24keepSelectWhenClickBlankEb@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView24selectNextItemWithOffsetEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView24selectPrevItemWithOffsetEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView25shiftSelectItemsWithBoundEii@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView26setColumnSortingAlgorithmsEP5QListIPFbPKNS0_15DSimpleListItemES5_bEEib@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView29shiftSelectNextItemWithOffsetEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView29shiftSelectPrevItemWithOffsetEi@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView6searchE7QString@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView8addItemsE5QListIPNS0_15DSimpleListItemEE@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListView8setFrameEb6QColord@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListViewC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListViewC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListViewD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListViewD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DSimpleListViewD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivate20_q_resizeInsideFrameERK5QSize@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivateC1EPNS0_8DSpinBoxE@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivateC2EPNS0_8DSpinBoxE@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinBoxPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivate31createDefaultIndicatorColorListE6QColor@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivateC1EPNS0_8DSpinnerE@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivateC2EPNS0_8DSpinnerE@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget15DSpinnerPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget15DtkBuildVersion5valueE@Base 2.0.11 _ZN3Dtk6Widget15EnvReplaceGuardC1Ei@Base 2.0.11 _ZN3Dtk6Widget15EnvReplaceGuardC2Ei@Base 2.0.11 _ZN3Dtk6Widget15EnvReplaceGuardD1Ev@Base 2.0.11 _ZN3Dtk6Widget15EnvReplaceGuardD2Ev@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMove11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMove11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMove11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMove16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMoveC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMoveC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMoveD0Ev@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMoveD1Ev@Base 2.0.11 _ZN3Dtk6Widget15FilterMouseMoveD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand10headerLineEv@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand9setExpandEb@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpand9setHeaderEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpandC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpandC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpandD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpandD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DArrowLineExpandD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormat11setTagColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormat12setTextColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormat13setBackgroundERK6QBrush@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormat19setBackgroundRadiusEi@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormat7setTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC1ERK11QTextFormat@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC1Ei@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC1Ev@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC2ERK11QTextFormat@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC2Ei@Base 2.0.11 _ZN3Dtk6Widget16DCrumbTextFormatC2Ev@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices10showFolderE4QUrlRK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices10showFolderE7QStringRKS2_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices11showFoldersE5QListI4QUrlERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices11showFoldersE5QListI7QStringERKS3_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices12errorMessageEv@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices12showFileItemE4QUrlRK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices12showFileItemE7QStringRKS2_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices13showFileItemsE5QListI4QUrlERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices13showFileItemsE5QListI7QStringERKS3_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices19getNameByEffectTypeERKNS1_17SystemSoundEffectE@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices21playSystemSoundEffectERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices21playSystemSoundEffectERKNS1_17SystemSoundEffectE@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices21showFileItemPropertieE4QUrlRK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices21showFileItemPropertieE7QStringRKS2_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices22showFileItemPropertiesE5QListI4QUrlERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices22showFileItemPropertiesE5QListI7QStringERKS3_@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices24previewSystemSoundEffectERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices24previewSystemSoundEffectERKNS1_17SystemSoundEffectE@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices5trashE4QUrl@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices5trashE5QListI4QUrlE@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices5trashE5QListI7QStringE@Base 2.0.11 _ZN3Dtk6Widget16DDesktopServices5trashE7QString@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit11fileChoosedERK7QString@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit11setFileModeEN11QFileDialog8FileModeE@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit12dialogClosedEi@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit12dialogOpenedEv@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit14setNameFiltersERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEdit24setDialogDisplayPositionENS1_21DialogDisplayPositionE@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DFileChooserEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor11isNumlockOnEv@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor12isCapslockOnEv@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor16setNumlockStatusERKb@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor20numlockStatusChangedEb@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor21capslockStatusChangedEb@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor3runEv@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor6listenEP9_XDisplay@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitor8instanceEv@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitorC1Ev@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitorC2Ev@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitorD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitorD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DKeyboardMonitorD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivateC1EPNS0_9DLineEditE@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivateC2EPNS0_9DLineEditE@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DLineEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivate20onOrientationChangedEv@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivateC1EPNS0_9DListViewE@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivateC2EPNS0_9DListViewE@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DListViewPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DTabBarAddButton10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget16DTabBarAddButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DTabBarAddButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DTabBarAddButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivateC1EPNS0_9DTextEditE@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivateC2EPNS0_9DTextEditE@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DTextEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate12targetWindowEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate16_q_showMinimizedEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate16hideOnFullscreenEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate16showOnFullscreenEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate16updateFullscreenEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate17updateButtonsFuncEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate18updateButtonsStateE6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate20_q_toggleWindowStateEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate21isVisableOnFullscreenEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate22_q_addDefaultMenuItemsEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate22_q_helpActionTriggeredEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate22_q_quitActionTriggeredEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate23_q_aboutActionTriggeredEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate26handleParentWindowIdChangeEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate29handleParentWindowStateChangeEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate31_q_onTopWindowMotifHintsChangedEj@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivateC1EPNS0_9DTitlebarE@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivateC2EPNS0_9DTitlebarE@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DTitlebarPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButton12setMaximizedEb@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButton16maximizedChangedEb@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMaxButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget16DWindowMinButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxy11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxy11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxy16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxy19currentFrameChangedEv@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxy7presentERK11QVideoFrame@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxyC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxyC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxyD0Ev@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxyD1Ev@Base 2.0.11 _ZN3Dtk6Widget16VideoFormatProxyD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11changeEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11modeChangedENS1_8BlurModeE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget11setMaskPathERK12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget12setBlendModeENS1_9BlendModeE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget12setMaskAlphaEh@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget12setMaskColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget12setMaskColorENS1_13MaskColorTypeE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget13radiusChangedEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget16blendModeChangedENS1_9BlendModeE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget16maskAlphaChangedEh@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget16maskColorChangedE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget18setBlurRectXRadiusEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget18setBlurRectYRadiusEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget22blurRectXRadiusChangedEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget22blurRectYRadiusChangedEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget7setModeENS1_8BlurModeE@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget9hideEventEP10QHideEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget9moveEventEP10QMoveEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget9setRadiusEi@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidget9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetC1ERNS0_24DBlurEffectWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetC2ERNS0_24DBlurEffectWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DBlurEffectWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10adjustSizeEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10closeEventEP11QCloseEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10moveWindowEN2Qt11MouseButtonE@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget10showNormalEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget11changeEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget11windowFlagsEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget12removeLayoutEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget12setFixedSizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget12setFixedSizeEii@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget12setTitleIconERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget13optionClickedEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget13setFixedWidthEi@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget13showMaximizedEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget13showMinimizedEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget14setShadowColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget14setShadowWidthEi@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget14setWindowFlagsE6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget14showFullScreenEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget15decorationFlagsEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget15setShadowOffsetE6QPoint@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget15setTitlebarMenuEP5QMenu@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget16drawShadowPixmapEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget17setTitlebarWidgetEP7QWidgetN2Qt13AlignmentFlagEb@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget17setTitlebarWidgetEP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18setBackgroundColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18setBackgroundImageERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18setContentsMarginsERK8QMargins@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18setContentsMarginsEiiii@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18setDecorationFlagsE6QFlagsINS1_14DecorationFlagEE@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget18shadowColorChangedE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget19shadowOffsetChangedE6QPoint@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget21toggleMaximizedWindowEv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget22backgroundColorChangedE6QColor@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget22setTitlebarFixedHeightEi@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget4moveERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget4moveEii@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget6resizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget6resizeEii@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget9setBorderEi@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget9setLayoutEP7QLayout@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget9setRadiusEi@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidget9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetC1ERNS0_24DBorderlessWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetC2ERNS0_24DBorderlessWidgetPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow16setContentLayoutEP7QLayout@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow16setContentWidgetEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindow9setParentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindowC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindowC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindowD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindowD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DBorderlessWindowD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivateC1EPNS0_10DBoxWidgetE@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivateC2EPNS0_10DBoxWidgetE@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DBoxWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget10setMarginsE8QMargins@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget11setClipPathERK12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget14marginsChangedE8QMargins@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget15clipPathChangedE12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget9hideEventEP10QHideEvent@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidget9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DClipEffectWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DCrumbEditPrivate16_q_onTextChangedEv@Base 2.0.11 _ZN3Dtk6Widget17DCrumbEditPrivate9makeCrumbEv@Base 2.0.11 _ZN3Dtk6Widget17DCrumbEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DCrumbEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DCrumbEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProvider14globalProviderEv@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProviderC1Ev@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProviderC2Ev@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProviderD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProviderD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DFileIconProviderD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator10setLoadingEb@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator12setDirectionENS1_17RotationDirectionE@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator13rotateChangedEd@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator14setAniDurationEi@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator14setImageSourceERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator15setWidgetSourceEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator16directionChangedENS1_17RotationDirectionE@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator16setAniEasingTypeEN12QEasingCurve4TypeE@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator17setAniEasingCurveERK12QEasingCurve@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator18setBackgroundColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator4stopEv@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator5startEv@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator9setRotateE8QVariant@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicator9setSmoothEb@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicatorC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicatorC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicatorD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicatorD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DLoadingIndicatorD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidget10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidget9setPixmapERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidgetC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidgetC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidgetD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidgetD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DMovableTabWidgetD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivate10setOpacityEd@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivate16_q_updateOpacityEv@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivate9_q_hiddenEv@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivateC1EPNS0_10DScrollBarE@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivateC2EPNS0_10DScrollBarE@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DScrollBarPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl12addSegmentedERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl12addSegmentedERK5QIconRK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl12addSegmentedERK5QListI5QIconERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl12addSegmentedERK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl13buttonClickedEv@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl14currentChangedEi@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl15insertSegmentedEiRK5QIconRK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl15insertSegmentedEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl15removeSegmentedEi@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl15setCurrentIndexEi@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl16setAnimationTypeEN12QEasingCurve4TypeE@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl19currentTitleChangedE7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl20setAnimationDurationEi@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl22setCurrentIndexByTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl23updateHighlightGeometryEb@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl24animationDurationChangedEi@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl5clearEv@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl7setIconEiRK5QIcon@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControl7setTextEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControlC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControlC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControlD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControlD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DSegmentedControlD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine14checkedChangedEb@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLine9setExpandEb@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLineC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLineC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLineD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLineD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchHeaderLineD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand6headerEv@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand9setExpandEb@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpand9setHeaderEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpandC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpandC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpandD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpandD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DSwitchLineExpandD2Ev@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModel10insertRowsEiiRK11QModelIndex@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModel10removeRowsEiiRK11QModelIndex@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModel7setDataERK11QModelIndexRK8QVarianti@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModelC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModelC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModelD0Ev@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModelD1Ev@Base 2.0.11 _ZN3Dtk6Widget17DVariantListModelD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DFlowLayoutPrivateC1EPNS0_11DFlowLayoutE@Base 2.0.11 _ZN3Dtk6Widget18DFlowLayoutPrivateC2EPNS0_11DFlowLayoutE@Base 2.0.11 _ZN3Dtk6Widget18DFlowLayoutPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DFlowLayoutPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DFlowLayoutPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivateC1EPNS0_11DListWidgetE@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivateC2EPNS0_11DListWidgetE@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DListWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivateC1EPNS0_11DMainWindowE@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivateC2EPNS0_11DMainWindowE@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DMainWindowPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate12insertOptionEiPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate18setCurrentSelectedERK7QString@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate18setCurrentSelectedEi@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate21_q_currentItemChangedEP15QListWidgetItemS3_@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivate9addOptionEPNS0_7DOptionE@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivateC1EPNS0_11DOptionListE@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivateC2EPNS0_11DOptionListE@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DOptionListPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DPushButtonPrivateC1EPNS0_11DPushButtonE@Base 2.0.11 _ZN3Dtk6Widget18DPushButtonPrivateC2EPNS0_11DPushButtonE@Base 2.0.11 _ZN3Dtk6Widget18DPushButtonPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DPushButtonPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DPushButtonPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivateC1EPNS0_11DScrollAreaE@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivateC2EPNS0_11DScrollAreaE@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DScrollAreaPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVertical11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVertical11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVertical16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVerticalC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVerticalC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVerticalD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVerticalD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DSeparatorVerticalD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel10enterEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel10leaveEventEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel12setEchoStateENS1_9EchoStateE@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabel18colorSettingChangeEv@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabelC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabelC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabelD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabelD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DShortcutEditLabelD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DSpinBox_getButtonERK7QString@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider12setSizeLimitERK9QMimeTypex@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider15createThumbnailERK9QFileInfoNS1_4SizeE@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider19setDefaultSizeLimitEx@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider20appendToProduceQueueERK9QFileInfoNS1_4SizeESt8functionIFvRK7QStringEE@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider20removeInProduceQueueERK9QFileInfoNS1_4SizeE@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider3runEv@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProvider8instanceEv@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProviderC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProviderC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProviderD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProviderD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DThumbnailProviderD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivate13initDirectionEv@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivateC1EPNS0_11DTickEffectE@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivateC2EPNS0_11DTickEffectE@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DTickEffectPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DWindowCloseButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeader12removeWindowEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeader12removeWindowEP7QWindow@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeader9addWindowEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeader9addWindowEP7QWindow@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeaderC1Ej@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeaderC2Ej@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeaderD1Ev@Base 2.0.11 _ZN3Dtk6Widget18DWindowGroupLeaderD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate10loadPixmapERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate15initWebsiteInfoEv@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate18_q_onLinkActivatedERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate18updateWebsiteLabelEv@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate19websiteLinkTemplateE@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate26updateAcknowledgementLabelEv@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivateC1EPNS0_12DAboutDialogE@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivateC2EPNS0_12DAboutDialogE@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DAboutDialogPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DAnchorsBasePrivate14getValueByInfoEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget19DAnchorsBasePrivate14setValueByInfoEdPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget19DAnchorsBasePrivate20getTargetValueByInfoEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZN3Dtk6Widget19DAnchorsBasePrivate9widgetMapE@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate14loadTranslatorE5QListINS_4Core8DPathBufEERK7QStringS2_I7QLocaleE@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate17loadDtkTranslatorE5QListI7QLocaleE@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate18isUserManualExistsEv@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate23setSingleInstanceByDbusERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate28setSingleInstanceBySemaphoreERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivate8setThemeERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivateC1EPNS0_12DApplicationE@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivateC2EPNS0_12DApplicationE@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DApplicationPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect10setMarginsERK8QMargins@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect11setClipPathERK12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect14marginsChangedE8QMargins@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect15clipPathChangedE12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffect4drawEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffectC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffectC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffectD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffectD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsClipEffectD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffect11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffect11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffect16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffect4drawEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffectC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffectC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffectD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffectD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DGraphicsGlowEffectD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivate10loadPixmapERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivate10updateIconEv@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivate8setStateENS0_12DImageButton5StateE@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivateC1EPNS0_12DImageButtonE@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivateC2EPNS0_12DImageButtonE@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DImageButtonPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivateC1EPNS0_12DInputDialogE@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivateC2EPNS0_12DInputDialogE@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DInputDialogPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated11setEchoModeEN9QLineEdit8EchoModeE@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated12alertChangedEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated13setSubmitIconERK7QStringS4_S4_@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated14invalidMessageEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated16editFocusChangedEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated16loadingAnimationEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated17setLoadAnimEnableEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated18loadingEffectColorEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated18setEyeButtonEnableEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated19updateAlertPositionEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated21keyboardButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated21setLoadingEffectColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated21setSubmitButtonEnableEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated23setKeyboardButtonEnableEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated26setCapslockIndicatorEnableEb@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated5abortEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated5alertEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated6submitERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated8lineEditEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated9abortAuthEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated9hideAlertEv@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated9hideEventEP10QHideEvent@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated9showAlertERK7QString@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimated9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimatedC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimatedC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimatedD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimatedD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DPasswdEditAnimatedD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlight11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlight11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlight16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlightC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlightC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlightD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlightD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DSegmentedHighlightD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivate15setCurrentIndexEi@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivateC1EPNS0_12DStackWidgetE@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivateC2EPNS0_12DStackWidgetE@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DStackWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DSvgRendererPrivateC1EPNS_4Core7DObjectE@Base 2.0.11 _ZN3Dtk6Widget19DSvgRendererPrivateC2EPNS_4Core7DObjectE@Base 2.0.11 _ZN3Dtk6Widget19DSvgRendererPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DSvgRendererPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DSvgRendererPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DVideoWidgetPrivateC1EPNS0_12DVideoWidgetE@Base 2.0.11 _ZN3Dtk6Widget19DVideoWidgetPrivateC2EPNS0_12DVideoWidgetE@Base 2.0.11 _ZN3Dtk6Widget19DVideoWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DVideoWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DVideoWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButton11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButton11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButton16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButtonC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButtonC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButtonD0Ev@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButtonD1Ev@Base 2.0.11 _ZN3Dtk6Widget19DWindowOptionButtonD2Ev@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterface10drawObjectEP8QPainterRK6QRectFP13QTextDocumentiRK11QTextFormat@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterface11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterface11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterface13intrinsicSizeEP13QTextDocumentiRK11QTextFormat@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterface16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterfaceD0Ev@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterfaceD1Ev@Base 2.0.11 _ZN3Dtk6Widget20CrumbObjectInterfaceD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate20_q_setIpLineEditTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate21_q_updateLineEditTextEv@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate7getEditEv@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate8getLabelEv@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivate8setFocusEb@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivateC1EPNS0_13DIpv4LineEditE@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivateC2EPNS0_13DIpv4LineEditE@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DIpv4LineEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate16_q_loadMPRISPathERK7QString@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate16_q_onNextClickedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate16_q_onPlayClickedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate16_q_onPrevClickedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate17_q_onPauseClickedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate18_q_removeMPRISPathERK7QString@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate20_q_onMetaDataChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate22_q_onCanControlChangedEb@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate26_q_onPlaybackStatusChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivateC1EPNS0_13DMPRISControlE@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivateC2EPNS0_13DMPRISControlE@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DMPRISControlPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivate17_q_toggleEchoModeEv@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivateC1EPNS0_13DPasswordEditE@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivateC2EPNS0_13DPasswordEditE@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DPasswordEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView13setSingleShotEb@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView18setPictureSequenceERK11QStringListb@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView18setPictureSequenceERK5QListI7QPixmapEb@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView18setPictureSequenceERK7QStringRK5QPairIiiEib@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView4playEv@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView4stopEv@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView5pauseEv@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceView8setSpeedEi@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceViewC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceViewC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceViewD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceViewD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DPictureSequenceViewD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontal11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontal11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontal16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontalC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontalC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontalD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontalD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DSeparatorHorizontalD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DStyleOptionLineEdit4initEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivateC1EPNS0_13DSwitchButtonE@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivateC2EPNS0_13DSwitchButtonE@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DSwitchButtonPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DThemeManagerPrivate14registerWidgetEP7QWidgetRK7QStringRK11QStringList@Base 2.0.11 _ZN3Dtk6Widget20DThemeManagerPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DThemeManagerPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DThemeManagerPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DTrashManagerPrivate15removeFileOrDirERK7QString@Base 2.0.11 _ZN3Dtk6Widget20DTrashManagerPrivate18removeFromIteratorER12QDirIterator@Base 2.0.11 _ZN3Dtk6Widget20DTrashManagerPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DTrashManagerPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DTrashManagerPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper17getMotifFunctionsEPK7QWindow@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper17setMotifFunctionsEPK7QWindow6QFlagsINS1_13MotifFunctionEE@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper17setMotifFunctionsEPK7QWindow6QFlagsINS1_13MotifFunctionEEb@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper17windowListChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper19getMotifDecorationsEPK7QWindow@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper19hasCompositeChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper19setMotifDecorationsEPK7QWindow6QFlagsINS1_15MotifDecorationEE@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper19setMotifDecorationsEPK7QWindow6QFlagsINS1_15MotifDecorationEEb@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper20hasBlurWindowChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper20windowManagerChangedEv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper21popupSystemWindowMenuEPK7QWindow@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper25windowMotifWMHintsChangedEj@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelper8instanceEv@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelperC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelperC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelperD0Ev@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelperD1Ev@Base 2.0.11 _ZN3Dtk6Widget20DWindowManagerHelperD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivate20_q_resizeInsideFrameERK5QSize@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivateC1EPNS0_14DDoubleSpinBoxE@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivateC2EPNS0_14DDoubleSpinBoxE@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DDoubleSpinBoxPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DForeignWindowPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DForeignWindowPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DForeignWindowPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivate12previousPageEv@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivate12setPageCountEi@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivate14setCurrentPageEi@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivate8nextPageEv@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivateC1EPNS0_14DPageIndicatorE@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivateC2EPNS0_14DPageIndicatorE@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DPageIndicatorPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle11setClipPathERK12QPainterPath@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle12setFrameMaskERK7QRegion@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle13isEnabledDXcbEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle13isEnabledDXcbEPK7QWindow@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle13pluginVersionEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle14setBorderColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle14setBorderWidthEi@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle14setShadowColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle15clipPathChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle15setShadowOffsetERK6QPoint@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle15setShadowRadiusEi@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle15setWindowRadiusEi@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle16frameMaskChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle18borderColorChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle18borderWidthChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle18shadowColorChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19enableDXcbForWindowEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19enableDXcbForWindowEP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19enableDXcbForWindowEP7QWindow@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19enableDXcbForWindowEP7QWindowb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19frameMarginsChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19setEnableBlurWindowEb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19setEnableSystemMoveEb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19shadowOffsetChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19shadowRadiusChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle19windowRadiusChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setEnableSystemResizeEb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMEP7QWidgetRK5QListI12QPainterPathE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMEP7QWidgetRK7QVectorINS1_10WMBlurAreaEE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMEP7QWindowRK5QListI12QPainterPathE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMEP7QWindowRK7QVectorINS1_10WMBlurAreaEE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMERK5QListI12QPainterPathE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle21setWindowBlurAreaByWMERK7QVectorINS1_10WMBlurAreaEE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle23enableBlurWindowChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle23enableSystemMoveChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle24setTranslucentBackgroundEb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle25enableSystemResizeChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle26setAutoInputMaskByClipPathEb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle27connectHasBlurWindowChangedEP7QObjectSt8functionIFvvEE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle28translucentBackgroundChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle30autoInputMaskByClipPathChangedEv@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle30setDisableWindowOverrideCursorEP7QWindowb@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandle33connectWindowManagerChangedSignalEP7QObjectSt8functionIFvvEE@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleC1EP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleC1EP7QWindowP7QObject@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleC2EP7QWidgetP7QObject@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleC2EP7QWindowP7QObject@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DPlatformWindowHandleD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate11_q_KeyPressERK7QStringiiS4_@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate13_q_CursorMoveEiiRK7QString@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate13_q_KeyReleaseERK7QStringiiS4_@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate14_q_ButtonPressEiiiRK7QString@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate16_q_ButtonReleaseEiiiRK7QString@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate21registerMonitorRegionEv@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate23unregisterMonitorRegionEv@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivateC1EPNS0_14DRegionMonitorE@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivateC2EPNS0_14DRegionMonitorE@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DRegionMonitorPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivate12resizePixmapE5QSize@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivate5paintEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivate6initUIEv@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivate8setValueEi@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget21DWaterProgressPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget21DWindowManagerHelper_D0Ev@Base 2.0.11 _ZN3Dtk6Widget21DWindowManagerHelper_D1Ev@Base 2.0.11 _ZN3Dtk6Widget21DWindowManagerHelper_D2Ev@Base 2.0.11 _ZN3Dtk6Widget21createUnsupportHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivateC1EPNS0_15DAbstractDialogE@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivateC2EPNS0_15DAbstractDialogE@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget22DAbstractDialogPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate10setContentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate12verticalMoveEii@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate13radiusEnabledEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate14horizontalMoveEii@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate14updateClipPathEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate16getTopCornerPathEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate17currentScreenRectEii@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate17getLeftCornerPathEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate17resizeWithContentEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate18getRightCornerPathEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate19getBottomCornerPathEv@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate4initENS0_15DArrowRectangle9FloatModeE@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivate4showEii@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivateC1ENS0_15DArrowRectangle14ArrowDirectionEPS2_@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivateC2ENS0_15DArrowRectangle14ArrowDirectionEPS2_@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget22DArrowRectanglePrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivate5paintEP8QPainter@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivateC1EPNS0_15DCircleProgressE@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivateC2EPNS0_15DCircleProgressE@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget22DCircleProgressPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory12createWidgetE8QPointerINS_4Core15DSettingsOptionEE@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory12createWidgetERK10QByteArray8QPointerINS_4Core15DSettingsOptionEE@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory14registerWidgetERK7QStringSt8functionIFP7QWidgetP7QObjectEE@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory20createTwoColumWidgetEPNS_4Core15DSettingsOptionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactory20createTwoColumWidgetERK10QByteArrayPNS_4Core15DSettingsOptionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactoryC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactoryC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactoryD0Ev@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactoryD1Ev@Base 2.0.11 _ZN3Dtk6Widget22DSettingsWidgetFactoryD2Ev@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivate14getSearchItemsE5QListIPNS0_15DSimpleListItemEE@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivate17sortItemsByColumnEib@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivate18getTopRenderOffsetEv@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivate19getItemsTotalHeightEv@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget22DSimpleListViewPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivate24_q_showFileChooserDialogEv@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivateC1EPNS0_16DFileChooserEditE@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivateC2EPNS0_16DFileChooserEditE@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget23DFileChooserEditPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget23DWindowMaxButtonPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget23DWindowMaxButtonPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget23DWindowMaxButtonPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate12setMaskAlphaEh@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate12setMaskColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate20blurEffectWidgetHashE@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate20updateWindowBlurAreaEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate20updateWindowBlurAreaEv@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate22windowOfBlurEffectHashE@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate25addToBlurEffectWidgetHashEv@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivate30removeFromBlurEffectWidgetHashEv@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivateC1EPNS0_17DBlurEffectWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivateC2EPNS0_17DBlurEffectWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DBlurEffectWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivate21updateContentsMarginsEv@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivateC1EPNS0_17DBorderlessWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivateC2EPNS0_17DBorderlessWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivateC1EPNS0_17DBorderlessWindowE@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivateC2EPNS0_17DBorderlessWindowE@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DBorderlessWindowPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DClipEffectWidgetPrivateC1EPNS0_17DClipEffectWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DClipEffectWidgetPrivateC2EPNS0_17DClipEffectWidgetE@Base 2.0.11 _ZN3Dtk6Widget24DClipEffectWidgetPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DClipEffectWidgetPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DClipEffectWidgetPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivateC1EPNS0_17DFileIconProviderE@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivateC2EPNS0_17DFileIconProviderE@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DFileIconProviderPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivate14setLoadingItemEP13QGraphicsItem@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivateC1EPNS0_17DLoadingIndicatorE@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivateC2EPNS0_17DLoadingIndicatorE@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DLoadingIndicatorPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24DSegmentedControlPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget24DSegmentedControlPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget24DSegmentedControlPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget24createSliderOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget25DStyleOptionSuggestButton4initEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoD1Ev@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoD2Ev@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivate20hasThumbnailMimeHashE@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivateC1EPNS0_18DThumbnailProviderE@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivateC2EPNS0_18DThumbnailProviderE@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget25DThumbnailProviderPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget25DWindowGroupLeaderPrivate17ensureGroupLeaderEv@Base 2.0.11 _ZN3Dtk6Widget25DWindowGroupLeaderPrivate20setWindowGroupLeaderEjj@Base 2.0.11 _ZN3Dtk6Widget26DGraphicsClipEffectPrivateC1EPNS0_19DGraphicsClipEffectE@Base 2.0.11 _ZN3Dtk6Widget26DGraphicsClipEffectPrivateC2EPNS0_19DGraphicsClipEffectE@Base 2.0.11 _ZN3Dtk6Widget26DGraphicsClipEffectPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget26DGraphicsClipEffectPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget26DGraphicsClipEffectPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate12_q_inputDoneEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate17_q_hideLoadSliderEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate17_q_showLoadSliderEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate21_q_onEyeButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate21_q_resetCapslockStateEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate26_q_onKeyboardButtonClickedEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivateC1EPNS0_19DPasswdEditAnimatedE@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivateC2EPNS0_19DPasswdEditAnimatedE@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget26DPasswdEditAnimatedPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget26DThemeManagerStaticPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget26DThemeManagerStaticPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget26DThemeManagerStaticPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget26createCheckboxOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget26createComboBoxOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget26createLineEditOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivate10loadPixmapERK7QString@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivate17_q_refreshPictureEv@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivate4playEv@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivateC1EPNS0_20DPictureSequenceViewE@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivateC2EPNS0_20DPictureSequenceViewE@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget27DPictureSequenceViewPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransition11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransition11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransition13updateVariantERK8QVariant@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransition15beginTransitionERKNS0_30DAbstractStackWidgetTransition14TransitionInfoE@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransition16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransitionC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransitionC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransitionD0Ev@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransitionD1Ev@Base 2.0.11 _ZN3Dtk6Widget27DSlideStackWidgetTransitionD2Ev@Base 2.0.11 _ZN3Dtk6Widget27DWindowManagerHelperPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget27DWindowManagerHelperPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget27DWindowManagerHelperPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget28createRadioGroupOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget28createSpinButtonOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget29DFileThumbnailProviderPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget29DFileThumbnailProviderPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget29DFileThumbnailProviderPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget29createButtonGroupOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget30DAbstractStackWidgetTransition15beginTransitionERKNS1_14TransitionInfoE@Base 2.0.11 _ZN3Dtk6Widget30DAbstractStackWidgetTransitionC1EP7QObject@Base 2.0.11 _ZN3Dtk6Widget30DAbstractStackWidgetTransitionC1ERNS0_37DAbstractStackWidgetTransitionPrivateEP7QObject@Base 2.0.11 _ZN3Dtk6Widget30DAbstractStackWidgetTransitionC2EP7QObject@Base 2.0.11 _ZN3Dtk6Widget30DAbstractStackWidgetTransitionC2ERNS0_37DAbstractStackWidgetTransitionPrivateEP7QObject@Base 2.0.11 _ZN3Dtk6Widget30createShortcutEditOptionHandleEP7QObject@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivate4initEv@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateC1EPNS0_30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateC2EPNS0_30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateD0Ev@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateD1Ev@Base 2.0.11 _ZN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateD2Ev@Base 2.0.11 _ZN3Dtk6Widget6DLabel11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget6DLabel11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget6DLabel16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget6DLabelC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget6DLabelC1ERK7QStringP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget6DLabelC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget6DLabelC2ERK7QStringP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget6DLabelD0Ev@Base 2.0.11 _ZN3Dtk6Widget6DLabelD1Ev@Base 2.0.11 _ZN3Dtk6Widget6DLabelD2Ev@Base 2.0.11 _ZN3Dtk6Widget6DToast10setOpacityEd@Base 2.0.11 _ZN3Dtk6Widget6DToast11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget6DToast11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget6DToast11setDurationEi@Base 2.0.11 _ZN3Dtk6Widget6DToast14visibleChangedEb@Base 2.0.11 _ZN3Dtk6Widget6DToast16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget6DToast3popEv@Base 2.0.11 _ZN3Dtk6Widget6DToast4packEv@Base 2.0.11 _ZN3Dtk6Widget6DToast7setIconE5QIcon5QSize@Base 2.0.11 _ZN3Dtk6Widget6DToast7setIconE7QString@Base 2.0.11 _ZN3Dtk6Widget6DToast7setTextE7QString@Base 2.0.11 _ZN3Dtk6Widget6DToast9hideEventEP10QHideEvent@Base 2.0.11 _ZN3Dtk6Widget6DToast9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget6DToastC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget6DToastC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget6DToastD0Ev@Base 2.0.11 _ZN3Dtk6Widget6DToastD1Ev@Base 2.0.11 _ZN3Dtk6Widget6DToastD2Ev@Base 2.0.11 _ZN3Dtk6Widget6XUtils10MoveWindowEPK7QWidgetN2Qt11MouseButtonE@Base 2.0.11 _ZN3Dtk6Widget6XUtils12SetStayOnTopEPK7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget6XUtils13DisableResizeEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils13GetCornerEdgeEPK7QWidgetiiRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils13IsCornerEdgetEPK7QWidgetiiRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils13StartResizingEPK7QWidgetRK6QPointRKNS1_10CornerEdgeE@Base 2.0.11 _ZN3Dtk6Widget6XUtils14SetCursorShapeEPK7QWidgeti@Base 2.0.11 _ZN3Dtk6Widget6XUtils16CancelMoveWindowEPK7QWidgetN2Qt11MouseButtonE@Base 2.0.11 _ZN3Dtk6Widget6XUtils16MoveResizeWindowEPK7QWidgetN2Qt11MouseButtonEiiRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils16ResetCursorShapeEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils16SetWindowExtentsEPK7QWidgetRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils16SetWindowExtentsEjRK5QRectRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils16ShowNormalWindowEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils16SkipTaskbarPagerEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils17UpdateCursorShapeEPK7QWidgetiiRK8QMarginsi@Base 2.0.11 _ZN3Dtk6Widget6XUtils18PropagateSizeHintsEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils19SetMouseTransparentEPK7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget6XUtils19ShowMaximizedWindowEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils19ShowMinimizedWindowEPK7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget6XUtils20ShowFullscreenWindowEPK7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget6XUtils21SendMoveResizeMessageEPK7QWidgetN2Qt11MouseButtonEi@Base 2.0.11 _ZN3Dtk6Widget6XUtils21ToggleMaximizedWindowEPK7QWidget@Base 2.0.11 _ZN3Dtk6Widget6XUtils26ChangeWindowMaximizedStateEPK7QWidgeti@Base 2.0.11 _ZN3Dtk6Widget7Content11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget7Content11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget7Content13scrollToGroupERK7QString@Base 2.0.11 _ZN3Dtk6Widget7Content14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget7Content14updateSettingsERK10QByteArray8QPointerINS_4Core9DSettingsEE@Base 2.0.11 _ZN3Dtk6Widget7Content15onScrollToGroupERK7QString@Base 2.0.11 _ZN3Dtk6Widget7Content16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget7ContentC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7ContentC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7ContentD0Ev@Base 2.0.11 _ZN3Dtk6Widget7ContentD1Ev@Base 2.0.11 _ZN3Dtk6Widget7ContentD2Ev@Base 2.0.11 _ZN3Dtk6Widget7DDialog10addButtonsERK11QStringList@Base 2.0.11 _ZN3Dtk6Widget7DDialog10addContentEP7QWidget6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget7DDialog10addSpacingEi@Base 2.0.11 _ZN3Dtk6Widget7DDialog10childEventEP11QChildEvent@Base 2.0.11 _ZN3Dtk6Widget7DDialog10closeEventEP11QCloseEvent@Base 2.0.11 _ZN3Dtk6Widget7DDialog10setMessageERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog10setSpacingEi@Base 2.0.11 _ZN3Dtk6Widget7DDialog11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget7DDialog11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget7DDialog11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget7DDialog11sizeChangedE5QSize@Base 2.0.11 _ZN3Dtk6Widget7DDialog12aboutToCloseEv@Base 2.0.11 _ZN3Dtk6Widget7DDialog12clearButtonsEv@Base 2.0.11 _ZN3Dtk6Widget7DDialog12clearSpacingEv@Base 2.0.11 _ZN3Dtk6Widget7DDialog12insertButtonEiP15QAbstractButtonb@Base 2.0.11 _ZN3Dtk6Widget7DDialog12insertButtonEiRK7QStringbNS1_10ButtonTypeE@Base 2.0.11 _ZN3Dtk6Widget7DDialog12removeButtonEP15QAbstractButton@Base 2.0.11 _ZN3Dtk6Widget7DDialog12removeButtonEi@Base 2.0.11 _ZN3Dtk6Widget7DDialog12titleChangedE7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog13buttonClickedEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog13clearContentsEb@Base 2.0.11 _ZN3Dtk6Widget7DDialog13insertButtonsEiRK11QStringList@Base 2.0.11 _ZN3Dtk6Widget7DDialog13insertContentEiP7QWidget6QFlagsIN2Qt13AlignmentFlagEE@Base 2.0.11 _ZN3Dtk6Widget7DDialog13insertSpacingEii@Base 2.0.11 _ZN3Dtk6Widget7DDialog13removeContentEP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget7DDialog13setButtonIconEiRK5QIcon@Base 2.0.11 _ZN3Dtk6Widget7DDialog13setButtonTextEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog13setIconPixmapERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget7DDialog13setTextFormatEN2Qt10TextFormatE@Base 2.0.11 _ZN3Dtk6Widget7DDialog14messageChangedE7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog14visibleChangedEb@Base 2.0.11 _ZN3Dtk6Widget7DDialog16setDefaultButtonEP15QAbstractButton@Base 2.0.11 _ZN3Dtk6Widget7DDialog16setDefaultButtonERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog16setDefaultButtonEi@Base 2.0.11 _ZN3Dtk6Widget7DDialog16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget7DDialog17textFormatChangedEN2Qt10TextFormatE@Base 2.0.11 _ZN3Dtk6Widget7DDialog18removeButtonByTextERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog23setOnButtonClickedCloseEb@Base 2.0.11 _ZN3Dtk6Widget7DDialog31setContentLayoutContentsMarginsERK8QMargins@Base 2.0.11 _ZN3Dtk6Widget7DDialog4execEv@Base 2.0.11 _ZN3Dtk6Widget7DDialog6closedEv@Base 2.0.11 _ZN3Dtk6Widget7DDialog7setIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget7DDialog7setIconERK5QIconRK5QSize@Base 2.0.11 _ZN3Dtk6Widget7DDialog8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DDialog9addButtonERK7QStringbNS1_10ButtonTypeE@Base 2.0.11 _ZN3Dtk6Widget7DDialog9hideEventEP10QHideEvent@Base 2.0.11 _ZN3Dtk6Widget7DDialog9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget7DDialogC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogC1ERK7QStringS4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogC1ERNS0_14DDialogPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogC2ERK7QStringS4_P7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogC2ERNS0_14DDialogPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DDialogD0Ev@Base 2.0.11 _ZN3Dtk6Widget7DDialogD1Ev@Base 2.0.11 _ZN3Dtk6Widget7DDialogD2Ev@Base 2.0.11 _ZN3Dtk6Widget7DOption10setCheckedEb@Base 2.0.11 _ZN3Dtk6Widget7DOption11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget7DOption11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget7DOption11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget7DOption14setCheckedIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DOption16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget7DOption6layoutEv@Base 2.0.11 _ZN3Dtk6Widget7DOption7setIconERK7QPixmap@Base 2.0.11 _ZN3Dtk6Widget7DOption7setIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DOption7setNameERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DOption8setValueERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DOptionC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DOptionC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DOptionD0Ev@Base 2.0.11 _ZN3Dtk6Widget7DOptionD1Ev@Base 2.0.11 _ZN3Dtk6Widget7DOptionD2Ev@Base 2.0.11 _ZN3Dtk6Widget7DSlider10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget7DSlider10setLeftTipERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DSlider11hoverTimoutEv@Base 2.0.11 _ZN3Dtk6Widget7DSlider11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget7DSlider11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget7DSlider11removeScaleEi@Base 2.0.11 _ZN3Dtk6Widget7DSlider11setRightTipERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DSlider11setTipColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget7DSlider13setHandleTypeENS1_10HandleTypeE@Base 2.0.11 _ZN3Dtk6Widget7DSlider13setScaleColorERK6QColor@Base 2.0.11 _ZN3Dtk6Widget7DSlider14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget7DSlider15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget7DSlider16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget7DSlider17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget7DSlider17setHoverShowValueEb@Base 2.0.11 _ZN3Dtk6Widget7DSlider18setHoverValueColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget7DSlider25setHoverShowValueIntervalEi@Base 2.0.11 _ZN3Dtk6Widget7DSlider4initEv@Base 2.0.11 _ZN3Dtk6Widget7DSlider8addScaleEi@Base 2.0.11 _ZN3Dtk6Widget7DSliderC1EN2Qt11OrientationEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DSliderC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DSliderC1ERNS0_14DSliderPrivateE@Base 2.0.11 _ZN3Dtk6Widget7DSliderC2EN2Qt11OrientationEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DSliderC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DSliderC2ERNS0_14DSliderPrivateE@Base 2.0.11 _ZN3Dtk6Widget7DSliderD0Ev@Base 2.0.11 _ZN3Dtk6Widget7DSliderD1Ev@Base 2.0.11 _ZN3Dtk6Widget7DSliderD2Ev@Base 2.0.11 _ZN3Dtk6Widget7DTabBar10setMovableEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar10setTabDataEiRK8QVariant@Base 2.0.11 _ZN3Dtk6Widget7DTabBar10setTabIconEiRK5QIcon@Base 2.0.11 _ZN3Dtk6Widget7DTabBar10setTabTextEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar10tabRemovedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11dragStartedEv@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11setAutoHideEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11setDragableEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11setDrawBaseEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11setIconSizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget7DTabBar11tabInsertedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar12setElideModeEN2Qt13TextElideModeE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar12setExpandingEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar12setMaskColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget7DTabBar12setTabButtonEiN7QTabBar14ButtonPositionEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DTabBar12tabIsRemovedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13dragMoveEventEP14QDragMoveEvent@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13setFlashColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13setTabEnabledEib@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13setTabToolTipEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13startTabFlashEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13tabBarClickedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar13tabIsInsertedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar14currentChangedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar14dragEnterEventEP15QDragEnterEvent@Base 2.0.11 _ZN3Dtk6Widget7DTabBar14dragLeaveEventEP15QDragLeaveEvent@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15setCurrentIndexEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15setDocumentModeEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15setTabWhatsThisEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15setTabsClosableEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15tabAddRequestedEv@Base 2.0.11 _ZN3Dtk6Widget7DTabBar15tabLayoutChangeEv@Base 2.0.11 _ZN3Dtk6Widget7DTabBar16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar17dragActionChangedEN2Qt10DropActionE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar17setTabMaximumSizeEiRK5QSize@Base 2.0.11 _ZN3Dtk6Widget7DTabBar17setTabMinimumSizeEiRK5QSize@Base 2.0.11 _ZN3Dtk6Widget7DTabBar17tabCloseRequestedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar18insertFromMimeDataEiPK9QMimeData@Base 2.0.11 _ZN3Dtk6Widget7DTabBar19setVisibleAddButtonEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar19tabBarDoubleClickedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar19tabReleaseRequestedEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar20setStartDragDistanceEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar20setUsesScrollButtonsEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar22setChangeCurrentOnDragEb@Base 2.0.11 _ZN3Dtk6Widget7DTabBar28setSelectionBehaviorOnRemoveEN7QTabBar17SelectionBehaviorE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar29insertFromMimeDataOnDragEnterEiPK9QMimeData@Base 2.0.11 _ZN3Dtk6Widget7DTabBar6addTabERK5QIconRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar6addTabERK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar6d_funcEv@Base 2.0.11 _ZN3Dtk6Widget7DTabBar7dragEndEN2Qt10DropActionE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar7moveTabEii@Base 2.0.11 _ZN3Dtk6Widget7DTabBar8setShapeEN7QTabBar5ShapeE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar8stopDragEN2Qt10DropActionE@Base 2.0.11 _ZN3Dtk6Widget7DTabBar8tabMovedEii@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9dropEventEP10QDropEvent@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9insertTabEiRK5QIconRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9insertTabEiRK7QString@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9removeTabEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9startDragEi@Base 2.0.11 _ZN3Dtk6Widget7DTabBar9tabDropedEiN2Qt10DropActionEP7QObject@Base 2.0.11 _ZN3Dtk6Widget7DTabBarC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DTabBarC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget7DTabBarD0Ev@Base 2.0.11 _ZN3Dtk6Widget7DTabBarD1Ev@Base 2.0.11 _ZN3Dtk6Widget7DTabBarD2Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox12alertChangedEb@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox15setDefaultValueEi@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox19defaultValueChangedEi@Base 2.0.11 _ZN3Dtk6Widget8DSpinBox8setAlertEb@Base 2.0.11 _ZN3Dtk6Widget8DSpinBoxC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget8DSpinBoxC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget8DSpinBoxD0Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinBoxD1Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinBoxD2Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinner10paintEventEP11QPaintEvent@Base 2.0.11 _ZN3Dtk6Widget8DSpinner11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget8DSpinner11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget8DSpinner16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget8DSpinner18setBackgroundColorE6QColor@Base 2.0.11 _ZN3Dtk6Widget8DSpinner4stopEv@Base 2.0.11 _ZN3Dtk6Widget8DSpinner5startEv@Base 2.0.11 _ZN3Dtk6Widget8DSpinnerC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget8DSpinnerC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget8DSpinnerD0Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinnerD1Ev@Base 2.0.11 _ZN3Dtk6Widget8DSpinnerD2Ev@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine10leftLayoutEv@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine11rightLayoutEv@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine13setLeftMarginEi@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine14setLeftContentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine14setRightMarginEi@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine15setRightContentEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DBaseLine16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget9DBaseLineC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DBaseLineC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DBaseLineD0Ev@Base 2.0.11 _ZN3Dtk6Widget9DBaseLineD1Ev@Base 2.0.11 _ZN3Dtk6Widget9DBaseLineD2Ev@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit12focusInEventEP11QFocusEvent@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit12setHoverIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit12setPressIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit13focusOutEventEP11QFocusEvent@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit13setNormalIconERK7QString@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit14setIconVisibleEb@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit16hideAlertMessageEv@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit16showAlertMessageERK7QStringi@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget9DLineEdit8setAlertEb@Base 2.0.11 _ZN3Dtk6Widget9DLineEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DLineEditC1ERNS0_16DLineEditPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DLineEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DLineEditC2ERNS0_16DLineEditPrivateEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DLineEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget9DLineEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget9DLineEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget9DListView10insertItemEiRK8QVariant@Base 2.0.11 _ZN3Dtk6Widget9DListView10removeItemEi@Base 2.0.11 _ZN3Dtk6Widget9DListView11insertItemsEiRK5QListI8QVariantE@Base 2.0.11 _ZN3Dtk6Widget9DListView11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget9DListView11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget9DListView11removeItemsEii@Base 2.0.11 _ZN3Dtk6Widget9DListView11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget9DListView11setWrappingEb@Base 2.0.11 _ZN3Dtk6Widget9DListView11triggerEditERK11QModelIndex@Base 2.0.11 _ZN3Dtk6Widget9DListView14currentChangedERK11QModelIndex@Base 2.0.11 _ZN3Dtk6Widget9DListView14currentChangedERK11QModelIndexS4_@Base 2.0.11 _ZN3Dtk6Widget9DListView14setOrientationEN9QListView4FlowEb@Base 2.0.11 _ZN3Dtk6Widget9DListView15addFooterWidgetEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DListView15addHeaderWidgetEP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DListView15rowCountChangedEv@Base 2.0.11 _ZN3Dtk6Widget9DListView16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget9DListView16takeFooterWidgetEi@Base 2.0.11 _ZN3Dtk6Widget9DListView16takeHeaderWidgetEi@Base 2.0.11 _ZN3Dtk6Widget9DListView18orientationChangedEN2Qt11OrientationE@Base 2.0.11 _ZN3Dtk6Widget9DListView18removeFooterWidgetEi@Base 2.0.11 _ZN3Dtk6Widget9DListView18removeHeaderWidgetEi@Base 2.0.11 _ZN3Dtk6Widget9DListView4editERK11QModelIndex@Base 2.0.11 _ZN3Dtk6Widget9DListView4editERK11QModelIndexN17QAbstractItemView11EditTriggerEP6QEvent@Base 2.0.11 _ZN3Dtk6Widget9DListView7addItemERK8QVariant@Base 2.0.11 _ZN3Dtk6Widget9DListView7setFlowEN9QListView4FlowE@Base 2.0.11 _ZN3Dtk6Widget9DListView8addItemsERK5QListI8QVariantE@Base 2.0.11 _ZN3Dtk6Widget9DListView8setModelEP18QAbstractItemModel@Base 2.0.11 _ZN3Dtk6Widget9DListViewC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DListViewC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DListViewD0Ev@Base 2.0.11 _ZN3Dtk6Widget9DListViewD1Ev@Base 2.0.11 _ZN3Dtk6Widget9DListViewD2Ev@Base 2.0.11 _ZN3Dtk6Widget9DTextEdit11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget9DTextEdit11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget9DTextEdit11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget9DTextEdit16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget9DTextEditC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DTextEditC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DTextEditD0Ev@Base 2.0.11 _ZN3Dtk6Widget9DTextEditD1Ev@Base 2.0.11 _ZN3Dtk6Widget9DTextEditD2Ev@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar10setVisibleEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar11eventFilterEP7QObjectP6QEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar11mouseMovingEN2Qt11MouseButtonE@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar11qt_metacastEPKc@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar11resizeEventEP12QResizeEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar12mousePressedE6QFlagsIN2Qt11MouseButtonEE@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar12setEmbedModeEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar13doubleClickedEv@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar13optionClickedEv@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar14mouseMoveEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar14setFixedHeightEi@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar15mousePressEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar15setCustomWidgetEP7QWidgetN2Qt13AlignmentFlagEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar15setCustomWidgetEP7QWidgetb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar15setDisableFlagsE6QFlagsIN2Qt10WindowTypeEE@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar16staticMetaObjectE@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar17mouseReleaseEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar17toggleWindowStateEv@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar19setSeparatorVisibleEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar21mouseDoubleClickEventEP11QMouseEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar23setAutoHideOnFullscreenEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar24setBackgroundTransparentEb@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar6resizeERK5QSize@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar6resizeEii@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar7setIconERK5QIcon@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar7setMenuEP5QMenu@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar8setTitleERK7QString@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar8showMenuEv@Base 2.0.11 _ZN3Dtk6Widget9DTitlebar9showEventEP10QShowEvent@Base 2.0.11 _ZN3Dtk6Widget9DTitlebarC1EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DTitlebarC2EP7QWidget@Base 2.0.11 _ZN3Dtk6Widget9DTitlebarD0Ev@Base 2.0.11 _ZN3Dtk6Widget9DTitlebarD1Ev@Base 2.0.11 _ZN3Dtk6Widget9DTitlebarD2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QString8QVariantE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapI7QString8QVariantED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QString8QVariantED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringN3Dtk6Widget16DCrumbTextFormatEE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringN3Dtk6Widget16DCrumbTextFormatEED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringN3Dtk6Widget16DCrumbTextFormatEED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringS0_E13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringS0_ED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringS0_ED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringSt8functionIFP7QWidgetP7QObjectEEE6insertERKS0_RKS7_@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringSt8functionIFP7QWidgetP7QObjectEEED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapI7QStringSt8functionIFP7QWidgetP7QObjectEEED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapIP7QWidgetS_I7QStringS2_EE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapIPK7QWidgetPN3Dtk6Widget12DAnchorsBaseEE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapIPK7QWidgetPN3Dtk6Widget12DAnchorsBaseEE6removeERKS2_@Base 2.0.11 (optional=templinst)_ZN4QMapIPK7QWidgetPN3Dtk6Widget12DAnchorsBaseEED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapIPK7QWidgetPN3Dtk6Widget12DAnchorsBaseEED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapIPK7QWidgetbE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapIi7QStringE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapIi7QStringED1Ev@Base 2.0.11 (optional=templinst)_ZN4QMapIi7QStringED2Ev@Base 2.0.11 (optional=templinst)_ZN4QMapIiPN3Dtk6Widget11DBaseExpandEE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN4QMapIiPN3Dtk6Widget11DBaseExpandEE6removeERKi@Base 2.0.11 (optional=templinst)_ZN4QSetI7QStringED1Ev@Base 2.0.11 (optional=templinst)_ZN4QSetI7QStringED2Ev@Base 2.0.11 (optional=templinst)_ZN5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 2.0.11 (optional=templinst)_ZN5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.11 (optional=templinst)_ZN5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE6removeERKS6_@Base 2.0.11 (optional=templinst)_ZN5QHashI7QString15QHashDummyValueE11deleteNode2EPN9QHashData4NodeE@Base 2.0.11 (optional=templinst)_ZN5QHashI7QString15QHashDummyValueE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN5QHashI7QString15QHashDummyValueE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.11 (optional=templinst)_ZN5QHashI9QMimeTypexE11deleteNode2EPN9QHashData4NodeE@Base 2.0.11 (optional=templinst)_ZN5QHashI9QMimeTypexE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.11 (optional=templinst)_ZN5QHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEE11deleteNode2EPN9QHashData4NodeE@Base 2.0.11 (optional=templinst)_ZN5QHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN5QHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.11 (optional=templinst)_ZN5QHashIP7QWidgetPKN3Dtk6Widget17DBlurEffectWidgetEE5eraseENS7_14const_iteratorE@Base 2.0.11 (optional=templinst)_ZN5QHashIPKN3Dtk6Widget17DBlurEffectWidgetEP7QWidgetE11deleteNode2EPN9QHashData4NodeE@Base 2.0.11 (optional=templinst)_ZN5QHashIPKN3Dtk6Widget17DBlurEffectWidgetEP7QWidgetE13detach_helperEv@Base 2.0.11 (optional=templinst)_ZN5QHashIPKN3Dtk6Widget17DBlurEffectWidgetEP7QWidgetE13duplicateNodeEPN9QHashData4NodeEPv@Base 2.0.11 (optional=templinst)_ZN5QHashIPKN3Dtk6Widget17DBlurEffectWidgetEP7QWidgetED1Ev@Base 2.0.11 (optional=templinst)_ZN5QHashIPKN3Dtk6Widget17DBlurEffectWidgetEP7QWidgetED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI10QByteArrayED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI10QByteArrayED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI12QPainterPathED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI4QUrlED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI5QIconEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI5QIconEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI5QSizeE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI5QSizeE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI5QSizeED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI5QSizeED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI6QColorED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QLocaleE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI7QLocaleEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QLocaleEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QLocaleED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QLocaleED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QPixmapE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI7QPixmapE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI7QPixmapED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QPixmapED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QRegExpED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE5clearEv@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE7reserveEi@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE9removeAllERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringE9removeOneERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI7QStringEpLERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerI7QWindowEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerI7QWindowEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerI7QWindowEE6appendERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerI7QWindowEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerI7QWindowEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core14DSettingsGroupEEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core14DSettingsGroupEEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core14DSettingsGroupEEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core15DSettingsOptionEEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core15DSettingsOptionEEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QPointerIN3Dtk4Core15DSettingsOptionEEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantE6appendERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListI8QVariantED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEE6appendERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEEC1ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEEC2ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN11QVideoFrame11PixelFormatEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN14QTabBarPrivate3TabEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEE6appendERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEEC1ERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEEC2ERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk4Core8DPathBufEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget16DCrumbTextFormatEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget16DCrumbTextFormatEE6appendERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget16DCrumbTextFormatEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget16DCrumbTextFormatEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoEE6appendERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget25DThumbnailProviderPrivate11ProduceInfoEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget3PopEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget3PopEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget3PopEE6appendERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget3PopEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIN3Dtk6Widget3PopEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP11QLayoutItemE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP11QLayoutItemED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP11QLayoutItemED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP11QToolButtonE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP11QToolButtonED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP11QToolButtonED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP12QRadioButtonE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP12QRadioButtonEC1ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIP12QRadioButtonEC2ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIP12QRadioButtonED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP12QRadioButtonED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP13QGraphicsItemE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP13QGraphicsItemED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP13QGraphicsItemED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP13QStandardItemE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP13QStandardItemED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP13QStandardItemED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP15QAbstractButtonE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP15QAbstractButtonE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP15QAbstractButtonE6appendERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIP15QAbstractButtonED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP15QAbstractButtonED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP19QGraphicsPixmapItemE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP19QGraphicsPixmapItemE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP19QGraphicsPixmapItemED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP19QGraphicsPixmapItemED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QScreenE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP7QScreenED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QScreenED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetE5clearEv@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetE6appendERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetE9removeOneERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetEC1ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetEC2ERKS2_@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWidgetED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWindowE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWindowED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP7QWindowED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditE6appendERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditE6detachEv@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIP9QLineEditED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPKN3Dtk6Widget17DBlurEffectWidgetEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIPKN3Dtk6Widget17DBlurEffectWidgetEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPKN3Dtk6Widget17DBlurEffectWidgetEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget11DBaseExpandEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget11DBaseExpandEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget11DBaseExpandEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEE6appendERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEEC1ERKS4_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEEC2ERKS4_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget14DForeignWindowEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEE5clearEv@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEE6appendERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEE9removeOneERKS3_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEEC1ERKS4_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEEC2ERKS4_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget15DSimpleListItemEEpLERKS4_@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget7DOptionEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget7DOptionEED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIPN3Dtk6Widget7DOptionEED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIS_I6QColorEE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIS_I6QColorEE6appendERKS1_@Base 2.0.11 (optional=templinst)_ZN5QListIbE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIbE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIbE6appendERKb@Base 2.0.11 (optional=templinst)_ZN5QListIbEC1ERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListIbEC2ERKS0_@Base 2.0.11 (optional=templinst)_ZN5QListIbED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIbED2Ev@Base 2.0.11 (optional=templinst)_ZN5QListIiE13detach_helperEi@Base 2.0.11 (optional=templinst)_ZN5QListIiE18detach_helper_growEii@Base 2.0.11 (optional=templinst)_ZN5QListIiE6appendERKi@Base 2.0.11 (optional=templinst)_ZN5QListIiE9removeOneERKi@Base 2.0.11 (optional=templinst)_ZN5QListIiED1Ev@Base 2.0.11 (optional=templinst)_ZN5QListIiED2Ev@Base 2.0.11 _ZN7QStringC1EPKc@Base 2.0.11 _ZN7QStringC2EPKc@Base 2.0.11 _ZN7QStringD1Ev@Base 2.0.11 _ZN7QStringD2Ev@Base 2.0.11 _ZN7QStringaSEPKc@Base 2.0.11 (optional=templinst)_ZN7QVectorI5QRectE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 2.0.11 (optional=templinst)_ZN7QVectorIN3Dtk6Widget21DPlatformWindowHandle10WMBlurAreaEE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 2.0.11 (optional=templinst)_ZN7QVectorIN3Dtk6Widget21DPlatformWindowHandle10WMBlurAreaEE6appendEOS3_@Base 2.0.11 (optional=templinst)_ZN7QVectorIN3Dtk6Widget21DPlatformWindowHandle10WMBlurAreaEE6appendERKS3_@Base 2.0.11 (optional=templinst)_ZN7QVectorIiE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 2.0.11 (optional=templinst)_ZN7QVectorIjE11reallocDataEii6QFlagsIN10QArrayData16AllocationOptionEE@Base 2.0.11 _ZN7QWidget8setFocusEv@Base 2.0.11 _ZN8ComboBox10wheelEventEP11QWheelEvent@Base 2.0.11 _ZN8ComboBox11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN8ComboBox11qt_metacastEPKc@Base 2.0.11 _ZN8ComboBox16staticMetaObjectE@Base 2.0.11 _ZN8ComboBoxC1EP7QWidget@Base 2.0.11 _ZN8ComboBoxC2EP7QWidget@Base 2.0.11 _ZN8ComboBoxD0Ev@Base 2.0.11 _ZN8ComboBoxD1Ev@Base 2.0.11 _ZN8ComboBoxD2Ev@Base 2.0.11 (optional=templinst)_ZN8QMapDataI7QStringP7QWidgetE7destroyEv@Base 2.0.11 (optional=templinst)_ZN8QMapDataIi7QStringE7destroyEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeI7QString8QVariantE14destroySubTreeEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeI7QStringN3Dtk6Widget16DCrumbTextFormatEE14destroySubTreeEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeI7QStringP7QWidgetE14destroySubTreeEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeI7QStringS0_E14destroySubTreeEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeI7QStringSt8functionIFP7QWidgetP7QObjectEEE14destroySubTreeEv@Base 2.0.11 (optional=templinst)_ZN8QMapNodeIi7QStringE14destroySubTreeEv@Base 2.0.11 _ZN9DBusMPRIS11RateChangedEd@Base 2.0.11 _ZN9DBusMPRIS11qt_metacallEN11QMetaObject4CallEiPPv@Base 2.0.11 _ZN9DBusMPRIS11qt_metacastEPKc@Base 2.0.11 _ZN9DBusMPRIS13VolumeChangedEd@Base 2.0.11 _ZN9DBusMPRIS14CanPlayChangedEb@Base 2.0.11 _ZN9DBusMPRIS14CanSeekChangedEb@Base 2.0.11 _ZN9DBusMPRIS14ShuffleChangedEb@Base 2.0.11 _ZN9DBusMPRIS15CanPauseChangedEb@Base 2.0.11 _ZN9DBusMPRIS15MetadataChangedERK4QMapI7QString8QVariantE@Base 2.0.11 _ZN9DBusMPRIS15PositionChangedEx@Base 2.0.11 _ZN9DBusMPRIS16CanGoNextChangedEb@Base 2.0.11 _ZN9DBusMPRIS16staticMetaObjectE@Base 2.0.11 _ZN9DBusMPRIS17CanControlChangedEb@Base 2.0.11 _ZN9DBusMPRIS17LoopStatusChangedERK7QString@Base 2.0.11 _ZN9DBusMPRIS18MaximumRateChangedEd@Base 2.0.11 _ZN9DBusMPRIS18MinimumRateChangedEd@Base 2.0.11 _ZN9DBusMPRIS20CanGoPreviousChangedEb@Base 2.0.11 _ZN9DBusMPRIS21PlaybackStatusChangedERK7QString@Base 2.0.11 _ZN9DBusMPRIS6SeekedEx@Base 2.0.11 _ZN9DBusMPRISC1ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 2.0.11 _ZN9DBusMPRISC2ERK7QStringS2_RK15QDBusConnectionP7QObject@Base 2.0.11 _ZN9DBusMPRISD0Ev@Base 2.0.11 _ZN9DBusMPRISD1Ev@Base 2.0.11 _ZN9DBusMPRISD2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM13DMPRISMonitorFvRK7QStringS4_S4_ENS_4ListIJS4_S4_S4_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM15QAbstractButtonFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM15QGraphicsEffectFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM16QAbstractSpinBoxFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM7QWidgetFbvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM7QWidgetFvRK5QSizeENS_4ListIJS4_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM7QWidgetFvbENS_4ListIJbEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM7QWidgetFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIM9QLineEditFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget11DListWidgetEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget11DMainWindowEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget11DSearchEditEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget11DTickEffectEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget12DExpandGroupEFvbENS_4ListIJbEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget12DInputDialogEFvRK7QStringENS_4ListIJS6_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget12DInputDialogEFvbENS_4ListIJbEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget12DVideoWidgetEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget15ArrowHeaderLineEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget15DArrowRectangleEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget17DBorderlessWidgetEFvN2Qt11MouseButtonEENS_4ListIJS5_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget17DBorderlessWidgetEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget17DSegmentedControlEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget17DSwitchHeaderLineEFvbENS_4ListIJbEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget30DAbstractStackWidgetTransitionEFvRK8QVariantENS_4ListIJS6_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7ContentEFvRK7QStringENS_4ListIJS6_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7DSliderEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7DTabBarEFvN2Qt10DropActionEENS_4ListIJS5_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7DTabBarEFviENS_4ListIJiEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7DTabBarEFviiENS_4ListIJiiEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget7DTabBarEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget9DLineEditEKFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget9DListViewEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate11QSlotObjectIMN3Dtk6Widget9DTitlebarEFvvENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI12QPainterPathEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI5QIconEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI5QIconEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI5QIconEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI7QRegExpEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI7QRegExpEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListI7QRegExpEN17QtMetaTypePrivate23QSequentialIterableImplENS4_33QSequentialIterableConvertFunctorIS3_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIP7QWidgetEN17QtMetaTypePrivate23QSequentialIterableImplENS5_33QSequentialIterableConvertFunctorIS4_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIP7QWidgetEN17QtMetaTypePrivate23QSequentialIterableImplENS5_33QSequentialIterableConvertFunctorIS4_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIP7QWidgetEN17QtMetaTypePrivate23QSequentialIterableImplENS5_33QSequentialIterableConvertFunctorIS4_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIPN3Dtk6Widget15DSimpleListItemEEN17QtMetaTypePrivate23QSequentialIterableImplENS7_33QSequentialIterableConvertFunctorIS6_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIPN3Dtk6Widget15DSimpleListItemEEN17QtMetaTypePrivate23QSequentialIterableImplENS7_33QSequentialIterableConvertFunctorIS6_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIPN3Dtk6Widget15DSimpleListItemEEN17QtMetaTypePrivate23QSequentialIterableImplENS7_33QSequentialIterableConvertFunctorIS6_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIbEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIbEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI5QListIbEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEE7convertEPKNS_25AbstractConverterFunctionEPKvPv@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED1Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate16ConverterFunctorI7QVectorIjEN17QtMetaTypePrivate23QSequentialIterableImplENS3_33QSequentialIterableConvertFunctorIS2_EEED2Ev@Base 2.0.11 (optional=templinst)_ZN9QtPrivate18QFunctorSlotObjectISt8functionIFvvEELi0ENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate18QFunctorSlotObjectIZN3Dtk6Widget14DTabBarPrivateC4EPNS2_7DTabBarEEUliiE_Li2ENS_4ListIJiiEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate18QFunctorSlotObjectIZN3Dtk6Widget20DThemeManagerPrivate14registerWidgetEP7QWidgetRK7QStringRK11QStringListEUlS5_S6_E1_Li2ENS_4ListIJS5_S6_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate18QFunctorSlotObjectIZN3Dtk6Widget20DThemeManagerPrivate14registerWidgetEP7QWidgetRK7QStringRK11QStringListEUlS6_E0_Li1ENS_4ListIJS6_EEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate18QFunctorSlotObjectIZN3Dtk6Widget20DThemeManagerPrivate14registerWidgetEP7QWidgetRK7QStringRK11QStringListEUlvE2_Li0ENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb@Base 2.0.11 (optional=templinst)_ZN9QtPrivate28QVariantValueHelperInterfaceI4QMapI7QString8QVariantEE6invokeERKS3_@Base 2.0.11 _ZN9QtPrivate8RefCount3refEv@Base 2.0.11 _ZNK11ButtonGroup10metaObjectEv@Base 2.0.11 _ZNK12ContentTitle10metaObjectEv@Base 2.0.11 _ZNK12DThemeHelper10metaObjectEv@Base 2.0.11 _ZNK12ShortcutEdit10metaObjectEv@Base 2.0.11 _ZNK13DBusInterface10metaObjectEv@Base 2.0.11 _ZNK13DMPRISMonitor10metaObjectEv@Base 2.0.11 _ZNK13DMPRISMonitor13mprisAcquiredERK7QString@Base 2.0.11 _ZNK13DMPRISMonitor9mprisLostERK7QString@Base 2.0.11 _ZNK18NavigationDelegate10metaObjectEv@Base 2.0.11 _ZNK18NavigationDelegate12createEditorEP7QWidgetRK20QStyleOptionViewItemRK11QModelIndex@Base 2.0.11 _ZNK18NavigationDelegate12setModelDataEP7QWidgetP18QAbstractItemModelRK11QModelIndex@Base 2.0.11 _ZNK18NavigationDelegate13setEditorDataEP7QWidgetRK11QModelIndex@Base 2.0.11 _ZNK18NavigationDelegate15initStyleOptionEP20QStyleOptionViewItemRK11QModelIndex@Base 2.0.11 _ZNK18NavigationDelegate5paintEP8QPainterRK20QStyleOptionViewItemRK11QModelIndex@Base 2.0.11 _ZNK18NavigationDelegate8sizeHintERK20QStyleOptionViewItemRK11QModelIndex@Base 2.0.11 _ZNK19ShortcutEditPrivate10stringSizeERK7QString@Base 2.0.11 _ZNK19ShortcutEditPrivate12drawTextRectERK5QRectRK7QStringR8QPainter@Base 2.0.11 _ZNK26StartupNotificationMonitor10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget10DBoxWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget10DBoxWidget6layoutEv@Base 2.0.11 _ZNK3Dtk6Widget10DBoxWidget8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget10DBoxWidget9directionEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit11crumbRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit12containCrumbERK7QString@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit13crumbReadOnlyEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit14makeTextFormatENS1_9CrumbTypeE@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit14makeTextFormatEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit15crumbTextFormatERK7QString@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit18dualClickMakeCrumbEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit21canInsertFromMimeDataEPK9QMimeData@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit27createMimeDataFromSelectionEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit8splitterEv@Base 2.0.11 _ZNK3Dtk6Widget10DCrumbEdit9crumbListEv@Base 2.0.11 _ZNK3Dtk6Widget10DScrollBar10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget10DScrollBar8autoHideEv@Base 2.0.11 _ZNK3Dtk6Widget10LoadSlider15loadSliderColorEv@Base 2.0.11 _ZNK3Dtk6Widget10Navigation10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DBaseButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DBaseExpand10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DBaseExpand6expandEv@Base 2.0.11 _ZNK3Dtk6Widget11DButtonList10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DFileDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DFileDialog16getComboBoxValueERK7QString@Base 2.0.11 _ZNK3Dtk6Widget11DFileDialog16getLineEditValueERK7QString@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout11minimumSizeEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout14heightForWidthEi@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout15sizeHintChangedE5QSize@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout15verticalSpacingEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout17hasHeightForWidthEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout17horizontalSpacingEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout19expandingDirectionsEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout4flowEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout5countEv@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout6itemAtEi@Base 2.0.11 _ZNK3Dtk6Widget11DFlowLayout8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget11DHBoxWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DHeaderLine10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DHeaderLine5titleEv@Base 2.0.11 _ZNK3Dtk6Widget11DIconButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DLinkButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget10toggleableEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget10widgetListEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget11checkedListEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget12contentsRectEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget12firstCheckedEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget12visibleCountEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget15contentsMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget18getContentsMarginsEPiS2_S2_S2_@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget20enableVerticalScrollEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget22enableHorizontalScrollEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget5countEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget7spacingEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget8itemSizeEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget9checkModeEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget9checkableEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget9directionEv@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget9getWidgetEi@Base 2.0.11 _ZNK3Dtk6Widget11DListWidget9isCheckedEi@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow11borderColorEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow11borderWidthEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow11shadowColorEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow12frameMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow12isDXcbWindowEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow12shadowOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow12shadowRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow12windowRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow16enableBlurWindowEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow16enableSystemMoveEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow18enableSystemResizeEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow21translucentBackgroundEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow23autoInputMaskByClipPathEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow8clipPathEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow8titlebarEv@Base 2.0.11 _ZNK3Dtk6Widget11DMainWindow9frameMaskEv@Base 2.0.11 _ZNK3Dtk6Widget11DOptionList10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DPushButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DPushButton10normalIconEv@Base 2.0.11 _ZNK3Dtk6Widget11DPushButton9hoverIconEv@Base 2.0.11 _ZNK3Dtk6Widget11DPushButton9pressIconEv@Base 2.0.11 _ZNK3Dtk6Widget11DScrollArea10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DScrollArea17autoHideScrollBarEv@Base 2.0.11 _ZNK3Dtk6Widget11DSearchEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DSearchEdit11getLineEditEv@Base 2.0.11 _ZNK3Dtk6Widget11DSearchEdit15minimumSizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget11DSearchEdit4textEv@Base 2.0.11 _ZNK3Dtk6Widget11DSearchEdit8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget11DTextButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DTickEffect10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget11DVBoxWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11companyLogoEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11descriptionEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11productNameEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11websiteLinkEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11websiteNameEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog11windowTitleEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog19acknowledgementLinkEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog7licenseEv@Base 2.0.11 _ZNK3Dtk6Widget12DAboutDialog7versionEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase10leftMarginEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase11errorStringEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase11rightMarginEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase12bottomMarginEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase14enhancedWidgetEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase14verticalCenterEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase16horizontalCenterEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase17alignWhenCenteredEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase20verticalCenterOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase22horizontalCenterOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase3topEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase4fillEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase4leftEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase5rightEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase6bottomEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase6targetEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase7anchorsEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase7enabledEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase7marginsEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase8centerInEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase9errorCodeEv@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase9isBindingEPKNS0_11DAnchorInfoE@Base 2.0.11 _ZNK3Dtk6Widget12DAnchorsBase9topMarginEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication11productIconEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication11productNameEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication15visibleMenuIconEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication18applicationLicenseEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication19applicationHomePageEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication22applicationDescriptionEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication23visibleMenuShortcutTextEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication25visibleMenuCheckboxWidgetEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication30applicationAcknowledgementPageEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication33applicationAcknowledgementVisibleEv@Base 2.0.11 _ZNK3Dtk6Widget12DApplication5themeEv@Base 2.0.11 _ZNK3Dtk6Widget12DArrowButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DArrowButton11buttonStateEv@Base 2.0.11 _ZNK3Dtk6Widget12DArrowButton14arrowDirectionEv@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup13checkedExpandEv@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup2idEPNS0_11DBaseExpandE@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup6expandEi@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup7expandsEv@Base 2.0.11 _ZNK3Dtk6Widget12DExpandGroup9checkedIdEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton11getHoverPicEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton11getPressPicEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton11isCheckableEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton12getNormalPicEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton13getCheckedPicEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton14getDisabledPicEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton8getStateEv@Base 2.0.11 _ZNK3Dtk6Widget12DImageButton9isCheckedEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog10intMaximumEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog10intMinimumEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog11doubleValueEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog11isTextAlertEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog12okButtonTextEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog12textEchoModeEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog13comboBoxItemsEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog13doubleMaximumEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog13doubleMinimumEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog14doubleDecimalsEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog16cancelButtonTextEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog17okButtonIsEnabledEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog18isComboBoxEditableEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog20comboBoxCurrentIndexEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog7intStepEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog8intValueEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog9inputModeEv@Base 2.0.11 _ZNK3Dtk6Widget12DInputDialog9textValueEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget10transitionEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget12currentIndexEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget13animationTypeEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget13currentWidgetEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget16getWidgetByIndexEi@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget17animationDurationEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget4busyEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget5depthEv@Base 2.0.11 _ZNK3Dtk6Widget12DStackWidget7indexOfEP7QWidget@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer11defaultSizeEv@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer13elementExistsERK7QString@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer15boundsOnElementERK7QString@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer7isValidEv@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer7toImageE5QSizeRK7QString@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer7viewBoxEv@Base 2.0.11 _ZNK3Dtk6Widget12DSvgRenderer8viewBoxFEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget10brightnessEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget10saturationEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget12currentFrameEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget15aspectRatioModeEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget16mirroredVerticalEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget18mirroredHorizontalEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget21sourceVideoPixelRatioEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget3hueEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget5roundEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget5scaleEv@Base 2.0.11 _ZNK3Dtk6Widget12DVideoWidget8contrastEv@Base 2.0.11 _ZNK3Dtk6Widget12DialogButton10buttonTypeEv@Base 2.0.11 _ZNK3Dtk6Widget12DialogButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13ContentLoader10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit10isReadOnlyEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit11displayTextEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit14cursorPositionEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit18hasAcceptableInputEv@Base 2.0.11 _ZNK3Dtk6Widget13DIpv4LineEdit9alignmentEv@Base 2.0.11 _ZNK3Dtk6Widget13DMPRISControl10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DMPRISControl11mprisLostedEv@Base 2.0.11 _ZNK3Dtk6Widget13DMPRISControl12mprisChangedEv@Base 2.0.11 _ZNK3Dtk6Widget13DMPRISControl13mprisAcquiredEv@Base 2.0.11 _ZNK3Dtk6Widget13DMPRISControl9isWorkingEv@Base 2.0.11 _ZNK3Dtk6Widget13DPasswordEdit10isEchoModeEv@Base 2.0.11 _ZNK3Dtk6Widget13DPasswordEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit11toInputModeEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit13getKeyMappingEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit14setNormalStateEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit15setInValidStateEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit24getBlockShortcutKeysListEv@Base 2.0.11 _ZNK3Dtk6Widget13DShortcutEdit8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget13DSwitchButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DSwitchButton17enabledBackgroundEv@Base 2.0.11 _ZNK3Dtk6Widget13DSwitchButton18disabledBackgroundEv@Base 2.0.11 _ZNK3Dtk6Widget13DSwitchButton7checkedEv@Base 2.0.11 _ZNK3Dtk6Widget13DSwitchButton8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager15getQssForWidgetE7QStringPK7QWidget@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager15getQssForWidgetE7QStringRKS2_@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager15getQssForWidgetEPK7QWidget@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager5themeEPK7QWidgetPPS2_@Base 2.0.11 _ZNK3Dtk6Widget13DThemeManager5themeEv@Base 2.0.11 _ZNK3Dtk6Widget13DTrashManager12trashIsEmptyEv@Base 2.0.11 _ZNK3Dtk6Widget14DDialogPrivate11elideStringE7QStringRK12QFontMetricsi@Base 2.0.11 _ZNK3Dtk6Widget14DDialogPrivate7trimTagE7QString@Base 2.0.11 _ZNK3Dtk6Widget14DDialogPrivate8scanTagsE7QString@Base 2.0.11 _ZNK3Dtk6Widget14DDialogPrivate9getScreenEv@Base 2.0.11 _ZNK3Dtk6Widget14DDoubleSpinBox10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DDoubleSpinBox12defaultValueEv@Base 2.0.11 _ZNK3Dtk6Widget14DDoubleSpinBox7isAlertEv@Base 2.0.11 _ZNK3Dtk6Widget14DForeignWindow10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DForeignWindow3pidEv@Base 2.0.11 _ZNK3Dtk6Widget14DForeignWindow7wmClassEv@Base 2.0.11 _ZNK3Dtk6Widget14DOptionPrivate11checkedIconEv@Base 2.0.11 _ZNK3Dtk6Widget14DOptionPrivate4nameEv@Base 2.0.11 _ZNK3Dtk6Widget14DOptionPrivate5valueEv@Base 2.0.11 _ZNK3Dtk6Widget14DOptionPrivate7checkedEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator10pointColorEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator11pointRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator13pointDistanceEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator16currentPageIndexEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator19secondaryPointColorEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator20secondaryPointRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget14DPageIndicator9pageCountEv@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor10cursorMoveERK6QPoint@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor10keyReleaseERK7QString@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor10registeredEv@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor11buttonPressERK6QPointi@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor13buttonReleaseERK6QPointi@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor13watchedRegionEv@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor14coordinateTypeEv@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor21coordinateTypeChangedENS1_14CoordinateTypeE@Base 2.0.11 _ZNK3Dtk6Widget14DRegionMonitor8keyPressERK7QString@Base 2.0.11 _ZNK3Dtk6Widget14DSliderPrivate20pixelPosToRangeValueEi@Base 2.0.11 _ZNK3Dtk6Widget14DSuggestButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate11tabSizeHintEi@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate15initStyleOptionEP15QStyleOptionTabi@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate15minimumSizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate18minimumTabSizeHintEi@Base 2.0.11 _ZNK3Dtk6Widget14DTabBarPrivate2ddEv@Base 2.0.11 _ZNK3Dtk6Widget14DWaterProgress10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget14DWaterProgress5valueEv@Base 2.0.11 _ZNK3Dtk6Widget15ArrowButtonIcon10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15ArrowButtonIcon11buttonStateEv@Base 2.0.11 _ZNK3Dtk6Widget15ArrowButtonIcon14arrowDirectionEv@Base 2.0.11 _ZNK3Dtk6Widget15ArrowHeaderLine10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DAbstractDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DAbstractDialog11borderColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DAbstractDialog15backgroundColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DAbstractDialog15displayPositionEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle10arrowWidthEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle10getContentEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle11arrowHeightEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle11borderColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle11borderWidthEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle13shadowXOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle13shadowYOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle14arrowDirectionEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle15backgroundColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle16shadowBlurRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle16windowDeactivateEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle6arrowXEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle6arrowYEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle6marginEv@Base 2.0.11 _ZNK3Dtk6Widget15DArrowRectangle6radiusEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress10chunkColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress12valueChangedEi@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress15backgroundColorEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress4textEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress5valueEv@Base 2.0.11 _ZNK3Dtk6Widget15DCircleProgress9lineWidthEv@Base 2.0.11 _ZNK3Dtk6Widget15DEnhancedWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DEnhancedWidget6targetEv@Base 2.0.11 _ZNK3Dtk6Widget15DEnhancedWidget7enabledEv@Base 2.0.11 _ZNK3Dtk6Widget15DSettingsDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DSettingsDialog13widgetFactoryEv@Base 2.0.11 _ZNK3Dtk6Widget15DSimpleListItem10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15DSimpleListView10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget15FilterMouseMove10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16DArrowLineExpand10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16DCrumbTextFormat10backgroundEv@Base 2.0.11 _ZNK3Dtk6Widget16DCrumbTextFormat16backgroundRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget16DCrumbTextFormat4textEv@Base 2.0.11 _ZNK3Dtk6Widget16DCrumbTextFormat8tagColorEv@Base 2.0.11 _ZNK3Dtk6Widget16DCrumbTextFormat9textColorEv@Base 2.0.11 _ZNK3Dtk6Widget16DFileChooserEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16DFileChooserEdit11nameFiltersEv@Base 2.0.11 _ZNK3Dtk6Widget16DFileChooserEdit21dialogDisplayPositionEv@Base 2.0.11 _ZNK3Dtk6Widget16DFileChooserEdit8fileModeEv@Base 2.0.11 _ZNK3Dtk6Widget16DKeyboardMonitor10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16DWindowMaxButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16DWindowMaxButton11isMaximizedEv@Base 2.0.11 _ZNK3Dtk6Widget16DWindowMinButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16VideoFormatProxy10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget16VideoFormatProxy12currentFrameEv@Base 2.0.11 _ZNK3Dtk6Widget16VideoFormatProxy17isFormatSupportedERK19QVideoSurfaceFormat@Base 2.0.11 _ZNK3Dtk6Widget16VideoFormatProxy21supportedPixelFormatsEN20QAbstractVideoBuffer10HandleTypeE@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget15blurRectXRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget15blurRectYRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget4modeEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget6radiusEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget9blendModeEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget9maskAlphaEv@Base 2.0.11 _ZNK3Dtk6Widget17DBlurEffectWidget9maskColorEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget11shadowColorEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget11shadowWidthEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget12childrenRectEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget12shadowOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget12titleBarMenuEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget13frameGeometryEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget14childrenRegionEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget14normalGeometryEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget14titlebarHeightEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget15backgroundColorEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget15backgroundImageEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget15contentsMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget18getContentsMarginsEPiS2_S2_S2_@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget1xEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget1yEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget3posEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget4sizeEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget5widthEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget6borderEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget6heightEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget6layoutEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget6radiusEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget8geometryEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget8titlebarEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWidget9frameSizeEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWindow10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DBorderlessWindow12parentWidgetEv@Base 2.0.11 _ZNK3Dtk6Widget17DClipEffectWidget10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DClipEffectWidget7marginsEv@Base 2.0.11 _ZNK3Dtk6Widget17DClipEffectWidget8clipPathEv@Base 2.0.11 _ZNK3Dtk6Widget17DFileIconProvider4iconERK9QFileInfo@Base 2.0.11 _ZNK3Dtk6Widget17DFileIconProvider4iconERK9QFileInfoRK5QIcon@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator11aniDurationEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator11imageSourceEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator12widgetSourceEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator13aniEasingTypeEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator15backgroundColorEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator6rotateEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator6smoothEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator7loadingEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget17DLoadingIndicator9directionEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl12currentIndexEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl12indexByTitleERK7QString@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl13animationTypeEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl17animationDurationEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl2atEi@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl5countEv@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl7getIconEi@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl7getTextEi@Base 2.0.11 _ZNK3Dtk6Widget17DSegmentedControl9highlightEv@Base 2.0.11 _ZNK3Dtk6Widget17DSwitchHeaderLine10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DSwitchLineExpand10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget17DVariantListModel4dataERK11QModelIndexi@Base 2.0.11 _ZNK3Dtk6Widget17DVariantListModel8rowCountERK11QModelIndex@Base 2.0.11 _ZNK3Dtk6Widget18DFlowLayoutPrivate8doLayoutERK5QRectb@Base 2.0.11 _ZNK3Dtk6Widget18DSeparatorVertical10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget18DShortcutEditLabel10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider11errorStringEv@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider12hasThumbnailERK9QFileInfo@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider12hasThumbnailERK9QMimeType@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider16defaultSizeLimitEv@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider16thumbnailChangedERK7QStringS4_@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider17thumbnailFilePathERK9QFileInfoNS1_4SizeE@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider21createThumbnailFailedERK7QString@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider23createThumbnailFinishedERK7QStringS4_@Base 2.0.11 _ZNK3Dtk6Widget18DThumbnailProvider9sizeLimitERK9QMimeType@Base 2.0.11 _ZNK3Dtk6Widget18DWindowCloseButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget18DWindowGroupLeader13groupLeaderIdEv@Base 2.0.11 _ZNK3Dtk6Widget18DWindowGroupLeader14clientLeaderIdEv@Base 2.0.11 _ZNK3Dtk6Widget19DApplicationPrivate5themeEv@Base 2.0.11 _ZNK3Dtk6Widget19DGraphicsClipEffect10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget19DGraphicsClipEffect7marginsEv@Base 2.0.11 _ZNK3Dtk6Widget19DGraphicsClipEffect8clipPathEv@Base 2.0.11 _ZNK3Dtk6Widget19DGraphicsGlowEffect10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget19DGraphicsGlowEffect15boundingRectForERK6QRectF@Base 2.0.11 _ZNK3Dtk6Widget19DPasswdEditAnimated10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget19DSegmentedHighlight10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget19DSvgRendererPrivate8getImageERK5QSizeRK7QString@Base 2.0.11 _ZNK3Dtk6Widget19DWindowOptionButton10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget20CrumbObjectInterface10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget20DPictureSequenceView10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget20DPictureSequenceView10singleShotEv@Base 2.0.11 _ZNK3Dtk6Widget20DPictureSequenceView12speedChangedEi@Base 2.0.11 _ZNK3Dtk6Widget20DPictureSequenceView5speedEv@Base 2.0.11 _ZNK3Dtk6Widget20DPictureSequenceView7playEndEv@Base 2.0.11 _ZNK3Dtk6Widget20DSeparatorHorizontal10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget20DThemeManagerPrivate13getQssContentERK7QString@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper12hasCompositeEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper13hasBlurWindowEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper15allWindowIdListEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper17windowManagerNameEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper23currentWorkspaceWindowsEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper23windowManagerNameStringEv@Base 2.0.11 _ZNK3Dtk6Widget20DWindowManagerHelper28currentWorkspaceWindowIdListEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle11borderColorEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle11borderWidthEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle11shadowColorEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle12frameMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle12realWindowIdEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle12shadowOffsetEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle12shadowRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle12windowRadiusEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle16enableBlurWindowEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle16enableSystemMoveEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle18enableSystemResizeEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle21translucentBackgroundEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle23autoInputMaskByClipPathEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle8clipPathEv@Base 2.0.11 _ZNK3Dtk6Widget21DPlatformWindowHandle9frameMaskEv@Base 2.0.11 _ZNK3Dtk6Widget21DRegionMonitorPrivate22deviceScaledCoordinateERK6QPointd@Base 2.0.11 _ZNK3Dtk6Widget22DAbstractDialogPrivate17getParentGeometryEv@Base 2.0.11 _ZNK3Dtk6Widget22DSettingsWidgetFactory10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget24DBlurEffectWidgetPrivate23isBehindWindowBlendModeEv@Base 2.0.11 _ZNK3Dtk6Widget24DBorderlessWidgetPrivate10externSizeERK5QSize@Base 2.0.11 _ZNK3Dtk6Widget24DBorderlessWidgetPrivate11externWidthEv@Base 2.0.11 _ZNK3Dtk6Widget24DBorderlessWidgetPrivate13externMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget24DBorderlessWidgetPrivate25_q_onTitleBarMousePressedE6QFlagsIN2Qt11MouseButtonEE@Base 2.0.11 _ZNK3Dtk6Widget24DFileIconProviderPrivate17getFilesystemIconERK9QFileInfo@Base 2.0.11 _ZNK3Dtk6Widget24DFileIconProviderPrivate9fromThemeE7QString@Base 2.0.11 _ZNK3Dtk6Widget25DThumbnailProviderPrivate14sizeToFilePathENS0_18DThumbnailProvider4SizeE@Base 2.0.11 _ZNK3Dtk6Widget27DSlideStackWidgetTransition10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget30DAbstractStackWidgetTransition4infoEv@Base 2.0.11 _ZNK3Dtk6Widget30DAbstractStackWidgetTransition9animationEv@Base 2.0.11 _ZNK3Dtk6Widget6DLabel10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget6DToast10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget6DToast4iconEv@Base 2.0.11 _ZNK3Dtk6Widget6DToast4textEv@Base 2.0.11 _ZNK3Dtk6Widget6DToast7opacityEv@Base 2.0.11 _ZNK3Dtk6Widget6DToast8durationEv@Base 2.0.11 _ZNK3Dtk6Widget7Content10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget7Content13widgetFactoryEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog10getButtonsEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog10getContentEi@Base 2.0.11 _ZNK3Dtk6Widget7DDialog10iconPixmapEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog10textFormatEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog11buttonCountEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog11getContentsEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog12contentCountEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog20getButtonIndexByTextERK7QString@Base 2.0.11 _ZNK3Dtk6Widget7DDialog20onButtonClickedCloseEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog28contentLayoutContentsMarginsEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog4iconEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog5titleEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog7messageEv@Base 2.0.11 _ZNK3Dtk6Widget7DDialog9getButtonEi@Base 2.0.11 _ZNK3Dtk6Widget7DOption10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget7DOption11checkedIconEv@Base 2.0.11 _ZNK3Dtk6Widget7DOption11sizeChangedERK5QSize@Base 2.0.11 _ZNK3Dtk6Widget7DOption14checkedChangedEb@Base 2.0.11 _ZNK3Dtk6Widget7DOption18checkedIconChangedE7QString@Base 2.0.11 _ZNK3Dtk6Widget7DOption4nameEv@Base 2.0.11 _ZNK3Dtk6Widget7DOption5valueEv@Base 2.0.11 _ZNK3Dtk6Widget7DOption7checkedEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider10handleTypeEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider10scaleColorEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider14hoverShowValueEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider15hoverValueColorEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider22hoverShowValueIntervalEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider7leftTipEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider8rightTipEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider8sizeHintEv@Base 2.0.11 _ZNK3Dtk6Widget7DSlider8tipColorEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar10flashColorEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar10isDragableEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar10tabToolTipEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar11tabSizeHintEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar12currentIndexEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar12documentModeEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar12isTabEnabledEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar12tabWhatsThisEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar12tabsClosableEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar14dragIconWindowEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar16visibleAddButtonEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar17startDragDistanceEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar17usesScrollButtonsEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar18maximumTabSizeHintEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar18minimumTabSizeHintEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar19changeCurrentOnDragEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar21canInsertFromMimeDataEiPK9QMimeData@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar21createMimeDataFromTabEiRK15QStyleOptionTab@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar23createDragPixmapFromTabEiRK15QStyleOptionTabP6QPoint@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar25selectionBehaviorOnRemoveEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar5countEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar5shapeEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar5tabAtERK6QPoint@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar6d_funcEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar7tabDataEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar7tabIconEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar7tabRectEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar7tabTextEi@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar8autoHideEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar8drawBaseEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar8iconSizeEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar8paintTabEP8QPainteriRK15QStyleOptionTab@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar9elideModeEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar9expandingEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar9isMovableEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar9maskColorEv@Base 2.0.11 _ZNK3Dtk6Widget7DTabBar9tabButtonEiN7QTabBar14ButtonPositionE@Base 2.0.11 _ZNK3Dtk6Widget8DSpinBox10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget8DSpinBox12defaultValueEv@Base 2.0.11 _ZNK3Dtk6Widget8DSpinBox7isAlertEv@Base 2.0.11 _ZNK3Dtk6Widget8DSpinBox8lineEditEv@Base 2.0.11 _ZNK3Dtk6Widget8DSpinner10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget8DSpinner9isPlayingEv@Base 2.0.11 _ZNK3Dtk6Widget9DBaseLine10leftMarginEv@Base 2.0.11 _ZNK3Dtk6Widget9DBaseLine10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget9DBaseLine11rightMarginEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit10normalIconEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit11iconClickedEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit11iconVisibleEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit11sizeChangedERK5QSize@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit12alertChangedEb@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit12focusChangedEb@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit7isAlertEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit9hoverIconEv@Base 2.0.11 _ZNK3Dtk6Widget9DLineEdit9pressIconEv@Base 2.0.11 _ZNK3Dtk6Widget9DListView10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget9DListView11orientationEv@Base 2.0.11 _ZNK3Dtk6Widget9DListView12isActiveRectERK5QRect@Base 2.0.11 _ZNK3Dtk6Widget9DListView12isVisualRectERK5QRect@Base 2.0.11 _ZNK3Dtk6Widget9DListView15getFooterWidgetEi@Base 2.0.11 _ZNK3Dtk6Widget9DListView15getHeaderWidgetEi@Base 2.0.11 _ZNK3Dtk6Widget9DListView5countEv@Base 2.0.11 _ZNK3Dtk6Widget9DListView5stateEv@Base 2.0.11 _ZNK3Dtk6Widget9DTextEdit10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar10metaObjectEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar12customWidgetEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar12disableFlagsEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar15buttonAreaWidthEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar16separatorVisibleEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar20autoHideOnFullscreenEv@Base 2.0.11 _ZNK3Dtk6Widget9DTitlebar4menuEv@Base 2.0.11 (optional=templinst)_ZNK4QMapI7QString8QVariantE4keysEv@Base 2.0.11 (optional=templinst)_ZNK4QMapIiPN3Dtk6Widget11DBaseExpandEE4keysEv@Base 2.0.11 (optional=templinst)_ZNK4QMapIiPN3Dtk6Widget11DBaseExpandEE6valuesEv@Base 2.0.11 (optional=templinst)_ZNK5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE8findNodeERKS6_Pj@Base 2.0.11 (optional=templinst)_ZNK5QHashI5QPairI7QStringN3Dtk6Widget18DThumbnailProvider4SizeEE15QHashDummyValueE8findNodeERKS6_j@Base 2.0.11 (optional=templinst)_ZNK5QListI7QStringE5valueEi@Base 2.0.11 (optional=templinst)_ZNK5QListIN14QTabBarPrivate3TabEE7indexOfERKS1_i@Base 2.0.11 (optional=templinst)_ZNK5QListIP15QAbstractButtonE7indexOfERKS1_i@Base 2.0.11 (optional=templinst)_ZNK5QListIP7QWidgetE7indexOfERKS1_i@Base 2.0.11 (optional=templinst)_ZNK5QListIP9QLineEditE7indexOfERKS1_i@Base 2.0.11 (optional=templinst)_ZNK5QListIPN3Dtk6Widget11DBaseExpandEE7indexOfERKS3_i@Base 2.0.11 (optional=templinst)_ZNK5QListIPN3Dtk6Widget15DSimpleListItemEE7indexOfERKS3_i@Base 2.0.11 _ZNK7QWindow4sizeEv@Base 2.0.11 _ZNK8ComboBox10metaObjectEv@Base 2.0.11 (optional=templinst)_ZNK8QMapDataI7QString8QVariantE8findNodeERKS0_@Base 2.0.11 (optional=templinst)_ZNK8QMapDataI7QStringN3Dtk6Widget16DCrumbTextFormatEE8findNodeERKS0_@Base 2.0.11 (optional=templinst)_ZNK8QMapDataI7QStringP7QWidgetE8findNodeERKS0_@Base 2.0.11 (optional=templinst)_ZNK8QMapDataI7QStringS0_E8findNodeERKS0_@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeI7QString8QVariantE4copyEP8QMapDataIS0_S1_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeI7QStringN3Dtk6Widget16DCrumbTextFormatEE4copyEP8QMapDataIS0_S3_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeI7QStringP7QWidgetE4copyEP8QMapDataIS0_S2_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeI7QStringS0_E4copyEP8QMapDataIS0_S0_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeI7QStringSt8functionIFP7QWidgetP7QObjectEEE4copyEP8QMapDataIS0_S7_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIP15QListWidgetItemPN3Dtk6Widget7DOptionEE4copyEP8QMapDataIS1_S5_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIP7QWidget4QMapI7QStringS3_EE4copyEP8QMapDataIS1_S4_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIPK7QWidgetPN3Dtk6Widget12DAnchorsBaseEE4copyEP8QMapDataIS2_S6_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIPK7QWidgetbE4copyEP8QMapDataIS2_bE@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIi7QStringE4copyEP8QMapDataIiS0_E@Base 2.0.11 (optional=templinst)_ZNK8QMapNodeIiPN3Dtk6Widget11DBaseExpandEE4copyEP8QMapDataIiS3_E@Base 2.0.11 _ZNK9DBusMPRIS10metaObjectEv@Base 2.0.11 (optional=templinst)_ZNSt14_Function_base13_Base_managerIPFP7QWidgetP7QObjectEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation@Base 2.0.11 (optional=templinst)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv@Base 2.0.11 (optional=templinst)_ZNSt17_Function_handlerIFP7QWidgetP7QObjectEPS4_E9_M_invokeERKSt9_Any_dataOS3_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFP7QWidgetP7QObjectEEC1ERKS5_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFP7QWidgetP7QObjectEEC2ERKS5_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFvRK7QStringEEC1ERKS4_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFvRK7QStringEEC2ERKS4_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFvvEEC1ERKS1_@Base 2.0.11 (optional=templinst)_ZNSt8functionIFvvEEC2ERKS1_@Base 2.0.11 (optional=templinst)_ZSt16__insertion_sortIN5QListIiE8iteratorEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S6_T0_@Base 2.0.11 _ZTI11ButtonGroup@Base 2.0.11 _ZTI12ContentTitle@Base 2.0.11 _ZTI12DThemeHelper@Base 2.0.11 _ZTI12QStyleOption@Base 2.0.11 _ZTI12ShortcutEdit@Base 2.0.11 _ZTI13DBusInterface@Base 2.0.11 _ZTI13DMPRISMonitor@Base 2.0.11 _ZTI16QFutureInterfaceIbE@Base 2.0.11 _ZTI16QFutureInterfaceIvE@Base 2.0.11 _ZTI18NavigationDelegate@Base 2.0.11 _ZTI18QStyleOptionButton@Base 2.0.11 _ZTI26StartupNotificationMonitor@Base 2.0.11 _ZTI29StartupNotificationMonitorSub@Base 2.0.11 _ZTI8ComboBox@Base 2.0.11 _ZTI9DBusMPRIS@Base 2.0.11 _ZTIFP7QWidgetP7QObjectE@Base 2.0.11 _ZTIN12QtConcurrent15RunFunctionTaskIbEE@Base 2.0.11 _ZTIN12QtConcurrent15RunFunctionTaskIvEE@Base 2.0.11 _ZTIN12QtConcurrent19RunFunctionTaskBaseIbEE@Base 2.0.11 _ZTIN12QtConcurrent19RunFunctionTaskBaseIvEE@Base 2.0.11 _ZTIN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreEE@Base 2.0.11 _ZTIN3Dtk6Widget10DBoxWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget10DCrumbEditE@Base 2.0.11 _ZTIN3Dtk6Widget10DScrollBarE@Base 2.0.11 _ZTIN3Dtk6Widget10LoadSliderE@Base 2.0.11 _ZTIN3Dtk6Widget10NavigationE@Base 2.0.11 _ZTIN3Dtk6Widget11DBaseButtonE@Base 2.0.11 _ZTIN3Dtk6Widget11DBaseExpandE@Base 2.0.11 _ZTIN3Dtk6Widget11DButtonListE@Base 2.0.11 _ZTIN3Dtk6Widget11DFileDialogE@Base 2.0.11 _ZTIN3Dtk6Widget11DFlowLayoutE@Base 2.0.11 _ZTIN3Dtk6Widget11DHBoxWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget11DHeaderLineE@Base 2.0.11 _ZTIN3Dtk6Widget11DIconButtonE@Base 2.0.11 _ZTIN3Dtk6Widget11DLinkButtonE@Base 2.0.11 _ZTIN3Dtk6Widget11DListWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget11DMainWindowE@Base 2.0.11 _ZTIN3Dtk6Widget11DOptionListE@Base 2.0.11 _ZTIN3Dtk6Widget11DPushButtonE@Base 2.0.11 _ZTIN3Dtk6Widget11DScrollAreaE@Base 2.0.11 _ZTIN3Dtk6Widget11DSearchEditE@Base 2.0.11 _ZTIN3Dtk6Widget11DTextButtonE@Base 2.0.11 _ZTIN3Dtk6Widget11DTickEffectE@Base 2.0.11 _ZTIN3Dtk6Widget11DVBoxWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget12DAboutDialogE@Base 2.0.11 _ZTIN3Dtk6Widget12DAnchorsBaseE@Base 2.0.11 _ZTIN3Dtk6Widget12DApplicationE@Base 2.0.11 _ZTIN3Dtk6Widget12DArrowButtonE@Base 2.0.11 _ZTIN3Dtk6Widget12DExpandGroupE@Base 2.0.11 _ZTIN3Dtk6Widget12DImageButtonE@Base 2.0.11 _ZTIN3Dtk6Widget12DInputDialogE@Base 2.0.11 _ZTIN3Dtk6Widget12DStackWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget12DStyleOptionE@Base 2.0.11 _ZTIN3Dtk6Widget12DSvgRendererE@Base 2.0.11 _ZTIN3Dtk6Widget12DVideoWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget12DialogButtonE@Base 2.0.11 _ZTIN3Dtk6Widget13ContentLoaderE@Base 2.0.11 _ZTIN3Dtk6Widget13DIpv4LineEditE@Base 2.0.11 _ZTIN3Dtk6Widget13DMPRISControlE@Base 2.0.11 _ZTIN3Dtk6Widget13DPasswordEditE@Base 2.0.11 _ZTIN3Dtk6Widget13DShortcutEditE@Base 2.0.11 _ZTIN3Dtk6Widget13DSwitchButtonE@Base 2.0.11 _ZTIN3Dtk6Widget13DThemeManagerE@Base 2.0.11 _ZTIN3Dtk6Widget13DToastPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget13DTrashManagerE@Base 2.0.11 _ZTIN3Dtk6Widget14DDialogPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget14DDoubleSpinBoxE@Base 2.0.11 _ZTIN3Dtk6Widget14DForeignWindowE@Base 2.0.11 _ZTIN3Dtk6Widget14DOptionPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget14DPageIndicatorE@Base 2.0.11 _ZTIN3Dtk6Widget14DRegionMonitorE@Base 2.0.11 _ZTIN3Dtk6Widget14DSuggestButtonE@Base 2.0.11 _ZTIN3Dtk6Widget14DTabBarPrivate10FullWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget14DTabBarPrivate15TabBarAnimationE@Base 2.0.11 _ZTIN3Dtk6Widget14DTabBarPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget14DTrashManager_E@Base 2.0.11 _ZTIN3Dtk6Widget14DWaterProgressE@Base 2.0.11 _ZTIN3Dtk6Widget15ArrowButtonIconE@Base 2.0.11 _ZTIN3Dtk6Widget15ArrowHeaderLineE@Base 2.0.11 _ZTIN3Dtk6Widget15DAbstractDialogE@Base 2.0.11 _ZTIN3Dtk6Widget15DArrowRectangleE@Base 2.0.11 _ZTIN3Dtk6Widget15DCircleProgressE@Base 2.0.11 _ZTIN3Dtk6Widget15DEnhancedWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget15DSettingsDialogE@Base 2.0.11 _ZTIN3Dtk6Widget15DSimpleListItemE@Base 2.0.11 _ZTIN3Dtk6Widget15DSimpleListViewE@Base 2.0.11 _ZTIN3Dtk6Widget15DSpinBoxPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget15DSpinnerPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget15FilterMouseMoveE@Base 2.0.11 _ZTIN3Dtk6Widget16DArrowLineExpandE@Base 2.0.11 _ZTIN3Dtk6Widget16DFileChooserEditE@Base 2.0.11 _ZTIN3Dtk6Widget16DKeyboardMonitorE@Base 2.0.11 _ZTIN3Dtk6Widget16DLineEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget16DListViewPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget16DTabBarAddButtonE@Base 2.0.11 _ZTIN3Dtk6Widget16DTextEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget16DTitlebarPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget16DWindowMaxButtonE@Base 2.0.11 _ZTIN3Dtk6Widget16DWindowMinButtonE@Base 2.0.11 _ZTIN3Dtk6Widget16VideoFormatProxyE@Base 2.0.11 _ZTIN3Dtk6Widget17DBlurEffectWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget17DBorderlessWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget17DBorderlessWindowE@Base 2.0.11 _ZTIN3Dtk6Widget17DBoxWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget17DClipEffectWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget17DCrumbEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget17DFileIconProviderE@Base 2.0.11 _ZTIN3Dtk6Widget17DLoadingIndicatorE@Base 2.0.11 _ZTIN3Dtk6Widget17DMovableTabWidgetE@Base 2.0.11 _ZTIN3Dtk6Widget17DScrollBarPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget17DSegmentedControlE@Base 2.0.11 _ZTIN3Dtk6Widget17DSwitchHeaderLineE@Base 2.0.11 _ZTIN3Dtk6Widget17DSwitchLineExpandE@Base 2.0.11 _ZTIN3Dtk6Widget17DVariantListModelE@Base 2.0.11 _ZTIN3Dtk6Widget18DFlowLayoutPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DListWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DMainWindowPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DOptionListPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DPushButtonPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DScrollAreaPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DSeparatorVerticalE@Base 2.0.11 _ZTIN3Dtk6Widget18DShortcutEditLabelE@Base 2.0.11 _ZTIN3Dtk6Widget18DThumbnailProviderE@Base 2.0.11 _ZTIN3Dtk6Widget18DTickEffectPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget18DWindowCloseButtonE@Base 2.0.11 _ZTIN3Dtk6Widget19DAboutDialogPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DApplicationPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DGraphicsClipEffectE@Base 2.0.11 _ZTIN3Dtk6Widget19DGraphicsGlowEffectE@Base 2.0.11 _ZTIN3Dtk6Widget19DImageButtonPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DInputDialogPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DPasswdEditAnimatedE@Base 2.0.11 _ZTIN3Dtk6Widget19DSegmentedHighlightE@Base 2.0.11 _ZTIN3Dtk6Widget19DStackWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DSvgRendererPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DVideoWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget19DWindowOptionButtonE@Base 2.0.11 _ZTIN3Dtk6Widget20CrumbObjectInterfaceE@Base 2.0.11 _ZTIN3Dtk6Widget20DIpv4LineEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DMPRISControlPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DPasswordEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DPictureSequenceViewE@Base 2.0.11 _ZTIN3Dtk6Widget20DSeparatorHorizontalE@Base 2.0.11 _ZTIN3Dtk6Widget20DStyleOptionLineEditE@Base 2.0.11 _ZTIN3Dtk6Widget20DSwitchButtonPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DThemeManagerPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DTrashManagerPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget20DWindowManagerHelperE@Base 2.0.11 _ZTIN3Dtk6Widget21DDoubleSpinBoxPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget21DForeignWindowPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget21DPageIndicatorPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget21DPlatformWindowHandleE@Base 2.0.11 _ZTIN3Dtk6Widget21DRegionMonitorPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget21DWaterProgressPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget21DWindowManagerHelper_E@Base 2.0.11 _ZTIN3Dtk6Widget22DAbstractDialogPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget22DArrowRectanglePrivateE@Base 2.0.11 _ZTIN3Dtk6Widget22DCircleProgressPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget22DSettingsWidgetFactoryE@Base 2.0.11 _ZTIN3Dtk6Widget22DSimpleListViewPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget23DFileChooserEditPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget23DWindowMaxButtonPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DBlurEffectWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DBorderlessWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DBorderlessWindowPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DClipEffectWidgetPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DFileIconProviderPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DLoadingIndicatorPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget24DSegmentedControlPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget25DStyleOptionSuggestButtonE@Base 2.0.11 _ZTIN3Dtk6Widget25DThumbnailProviderPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget26DGraphicsClipEffectPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget26DPasswdEditAnimatedPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget26DThemeManagerStaticPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget27DPictureSequenceViewPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget27DSlideStackWidgetTransitionE@Base 2.0.11 _ZTIN3Dtk6Widget27DWindowManagerHelperPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget29DFileThumbnailProviderPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZTIN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateE@Base 2.0.11 _ZTIN3Dtk6Widget6DLabelE@Base 2.0.11 _ZTIN3Dtk6Widget6DToastE@Base 2.0.11 _ZTIN3Dtk6Widget7ContentE@Base 2.0.11 _ZTIN3Dtk6Widget7DDialogE@Base 2.0.11 _ZTIN3Dtk6Widget7DOptionE@Base 2.0.11 _ZTIN3Dtk6Widget7DSliderE@Base 2.0.11 _ZTIN3Dtk6Widget7DTabBarE@Base 2.0.11 _ZTIN3Dtk6Widget8DSpinBoxE@Base 2.0.11 _ZTIN3Dtk6Widget8DSpinnerE@Base 2.0.11 _ZTIN3Dtk6Widget9DBaseLineE@Base 2.0.11 _ZTIN3Dtk6Widget9DLineEditE@Base 2.0.11 _ZTIN3Dtk6Widget9DListViewE@Base 2.0.11 _ZTIN3Dtk6Widget9DTextEditE@Base 2.0.11 _ZTIN3Dtk6Widget9DTitlebarE@Base 2.0.11 _ZTIPFP7QWidgetP7QObjectE@Base 2.0.11 _ZTS11ButtonGroup@Base 2.0.11 _ZTS12ContentTitle@Base 2.0.11 _ZTS12DThemeHelper@Base 2.0.11 _ZTS12QStyleOption@Base 2.0.11 _ZTS12ShortcutEdit@Base 2.0.11 _ZTS13DBusInterface@Base 2.0.11 _ZTS13DMPRISMonitor@Base 2.0.11 _ZTS16QFutureInterfaceIbE@Base 2.0.11 _ZTS16QFutureInterfaceIvE@Base 2.0.11 _ZTS18NavigationDelegate@Base 2.0.11 _ZTS18QStyleOptionButton@Base 2.0.11 _ZTS26StartupNotificationMonitor@Base 2.0.11 _ZTS29StartupNotificationMonitorSub@Base 2.0.11 _ZTS8ComboBox@Base 2.0.11 _ZTS9DBusMPRIS@Base 2.0.11 _ZTSFP7QWidgetP7QObjectE@Base 2.0.11 _ZTSN12QtConcurrent15RunFunctionTaskIbEE@Base 2.0.11 _ZTSN12QtConcurrent15RunFunctionTaskIvEE@Base 2.0.11 _ZTSN12QtConcurrent19RunFunctionTaskBaseIbEE@Base 2.0.11 _ZTSN12QtConcurrent19RunFunctionTaskBaseIvEE@Base 2.0.11 _ZTSN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreEE@Base 2.0.11 _ZTSN3Dtk6Widget10DBoxWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget10DCrumbEditE@Base 2.0.11 _ZTSN3Dtk6Widget10DScrollBarE@Base 2.0.11 _ZTSN3Dtk6Widget10LoadSliderE@Base 2.0.11 _ZTSN3Dtk6Widget10NavigationE@Base 2.0.11 _ZTSN3Dtk6Widget11DBaseButtonE@Base 2.0.11 _ZTSN3Dtk6Widget11DBaseExpandE@Base 2.0.11 _ZTSN3Dtk6Widget11DButtonListE@Base 2.0.11 _ZTSN3Dtk6Widget11DFileDialogE@Base 2.0.11 _ZTSN3Dtk6Widget11DFlowLayoutE@Base 2.0.11 _ZTSN3Dtk6Widget11DHBoxWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget11DHeaderLineE@Base 2.0.11 _ZTSN3Dtk6Widget11DIconButtonE@Base 2.0.11 _ZTSN3Dtk6Widget11DLinkButtonE@Base 2.0.11 _ZTSN3Dtk6Widget11DListWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget11DMainWindowE@Base 2.0.11 _ZTSN3Dtk6Widget11DOptionListE@Base 2.0.11 _ZTSN3Dtk6Widget11DPushButtonE@Base 2.0.11 _ZTSN3Dtk6Widget11DScrollAreaE@Base 2.0.11 _ZTSN3Dtk6Widget11DSearchEditE@Base 2.0.11 _ZTSN3Dtk6Widget11DTextButtonE@Base 2.0.11 _ZTSN3Dtk6Widget11DTickEffectE@Base 2.0.11 _ZTSN3Dtk6Widget11DVBoxWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget12DAboutDialogE@Base 2.0.11 _ZTSN3Dtk6Widget12DAnchorsBaseE@Base 2.0.11 _ZTSN3Dtk6Widget12DApplicationE@Base 2.0.11 _ZTSN3Dtk6Widget12DArrowButtonE@Base 2.0.11 _ZTSN3Dtk6Widget12DExpandGroupE@Base 2.0.11 _ZTSN3Dtk6Widget12DImageButtonE@Base 2.0.11 _ZTSN3Dtk6Widget12DInputDialogE@Base 2.0.11 _ZTSN3Dtk6Widget12DStackWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget12DStyleOptionE@Base 2.0.11 _ZTSN3Dtk6Widget12DSvgRendererE@Base 2.0.11 _ZTSN3Dtk6Widget12DVideoWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget12DialogButtonE@Base 2.0.11 _ZTSN3Dtk6Widget13ContentLoaderE@Base 2.0.11 _ZTSN3Dtk6Widget13DIpv4LineEditE@Base 2.0.11 _ZTSN3Dtk6Widget13DMPRISControlE@Base 2.0.11 _ZTSN3Dtk6Widget13DPasswordEditE@Base 2.0.11 _ZTSN3Dtk6Widget13DShortcutEditE@Base 2.0.11 _ZTSN3Dtk6Widget13DSwitchButtonE@Base 2.0.11 _ZTSN3Dtk6Widget13DThemeManagerE@Base 2.0.11 _ZTSN3Dtk6Widget13DToastPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget13DTrashManagerE@Base 2.0.11 _ZTSN3Dtk6Widget14DDialogPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget14DDoubleSpinBoxE@Base 2.0.11 _ZTSN3Dtk6Widget14DForeignWindowE@Base 2.0.11 _ZTSN3Dtk6Widget14DOptionPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget14DPageIndicatorE@Base 2.0.11 _ZTSN3Dtk6Widget14DRegionMonitorE@Base 2.0.11 _ZTSN3Dtk6Widget14DSuggestButtonE@Base 2.0.11 _ZTSN3Dtk6Widget14DTabBarPrivate10FullWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget14DTabBarPrivate15TabBarAnimationE@Base 2.0.11 _ZTSN3Dtk6Widget14DTabBarPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget14DTrashManager_E@Base 2.0.11 _ZTSN3Dtk6Widget14DWaterProgressE@Base 2.0.11 _ZTSN3Dtk6Widget15ArrowButtonIconE@Base 2.0.11 _ZTSN3Dtk6Widget15ArrowHeaderLineE@Base 2.0.11 _ZTSN3Dtk6Widget15DAbstractDialogE@Base 2.0.11 _ZTSN3Dtk6Widget15DArrowRectangleE@Base 2.0.11 _ZTSN3Dtk6Widget15DCircleProgressE@Base 2.0.11 _ZTSN3Dtk6Widget15DEnhancedWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget15DSettingsDialogE@Base 2.0.11 _ZTSN3Dtk6Widget15DSimpleListItemE@Base 2.0.11 _ZTSN3Dtk6Widget15DSimpleListViewE@Base 2.0.11 _ZTSN3Dtk6Widget15DSpinBoxPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget15DSpinnerPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget15FilterMouseMoveE@Base 2.0.11 _ZTSN3Dtk6Widget16DArrowLineExpandE@Base 2.0.11 _ZTSN3Dtk6Widget16DFileChooserEditE@Base 2.0.11 _ZTSN3Dtk6Widget16DKeyboardMonitorE@Base 2.0.11 _ZTSN3Dtk6Widget16DLineEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget16DListViewPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget16DTabBarAddButtonE@Base 2.0.11 _ZTSN3Dtk6Widget16DTextEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget16DTitlebarPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget16DWindowMaxButtonE@Base 2.0.11 _ZTSN3Dtk6Widget16DWindowMinButtonE@Base 2.0.11 _ZTSN3Dtk6Widget16VideoFormatProxyE@Base 2.0.11 _ZTSN3Dtk6Widget17DBlurEffectWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget17DBorderlessWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget17DBorderlessWindowE@Base 2.0.11 _ZTSN3Dtk6Widget17DBoxWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget17DClipEffectWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget17DCrumbEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget17DFileIconProviderE@Base 2.0.11 _ZTSN3Dtk6Widget17DLoadingIndicatorE@Base 2.0.11 _ZTSN3Dtk6Widget17DMovableTabWidgetE@Base 2.0.11 _ZTSN3Dtk6Widget17DScrollBarPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget17DSegmentedControlE@Base 2.0.11 _ZTSN3Dtk6Widget17DSwitchHeaderLineE@Base 2.0.11 _ZTSN3Dtk6Widget17DSwitchLineExpandE@Base 2.0.11 _ZTSN3Dtk6Widget17DVariantListModelE@Base 2.0.11 _ZTSN3Dtk6Widget18DFlowLayoutPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DListWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DMainWindowPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DOptionListPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DPushButtonPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DScrollAreaPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DSeparatorVerticalE@Base 2.0.11 _ZTSN3Dtk6Widget18DShortcutEditLabelE@Base 2.0.11 _ZTSN3Dtk6Widget18DThumbnailProviderE@Base 2.0.11 _ZTSN3Dtk6Widget18DTickEffectPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget18DWindowCloseButtonE@Base 2.0.11 _ZTSN3Dtk6Widget19DAboutDialogPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DApplicationPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DGraphicsClipEffectE@Base 2.0.11 _ZTSN3Dtk6Widget19DGraphicsGlowEffectE@Base 2.0.11 _ZTSN3Dtk6Widget19DImageButtonPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DInputDialogPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DPasswdEditAnimatedE@Base 2.0.11 _ZTSN3Dtk6Widget19DSegmentedHighlightE@Base 2.0.11 _ZTSN3Dtk6Widget19DStackWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DSvgRendererPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DVideoWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget19DWindowOptionButtonE@Base 2.0.11 _ZTSN3Dtk6Widget20CrumbObjectInterfaceE@Base 2.0.11 _ZTSN3Dtk6Widget20DIpv4LineEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DMPRISControlPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DPasswordEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DPictureSequenceViewE@Base 2.0.11 _ZTSN3Dtk6Widget20DSeparatorHorizontalE@Base 2.0.11 _ZTSN3Dtk6Widget20DStyleOptionLineEditE@Base 2.0.11 _ZTSN3Dtk6Widget20DSwitchButtonPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DThemeManagerPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DTrashManagerPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget20DWindowManagerHelperE@Base 2.0.11 _ZTSN3Dtk6Widget21DDoubleSpinBoxPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget21DForeignWindowPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget21DPageIndicatorPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget21DPlatformWindowHandleE@Base 2.0.11 _ZTSN3Dtk6Widget21DRegionMonitorPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget21DWaterProgressPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget21DWindowManagerHelper_E@Base 2.0.11 _ZTSN3Dtk6Widget22DAbstractDialogPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget22DArrowRectanglePrivateE@Base 2.0.11 _ZTSN3Dtk6Widget22DCircleProgressPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget22DSettingsWidgetFactoryE@Base 2.0.11 _ZTSN3Dtk6Widget22DSimpleListViewPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget23DFileChooserEditPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget23DWindowMaxButtonPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DBlurEffectWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DBorderlessWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DBorderlessWindowPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DClipEffectWidgetPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DFileIconProviderPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DLoadingIndicatorPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget24DSegmentedControlPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget25DStyleOptionSuggestButtonE@Base 2.0.11 _ZTSN3Dtk6Widget25DThumbnailProviderPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget26DGraphicsClipEffectPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget26DPasswdEditAnimatedPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget26DThemeManagerStaticPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget27DPictureSequenceViewPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget27DSlideStackWidgetTransitionE@Base 2.0.11 _ZTSN3Dtk6Widget27DWindowManagerHelperPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget29DFileThumbnailProviderPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZTSN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateE@Base 2.0.11 _ZTSN3Dtk6Widget6DLabelE@Base 2.0.11 _ZTSN3Dtk6Widget6DToastE@Base 2.0.11 _ZTSN3Dtk6Widget7ContentE@Base 2.0.11 _ZTSN3Dtk6Widget7DDialogE@Base 2.0.11 _ZTSN3Dtk6Widget7DOptionE@Base 2.0.11 _ZTSN3Dtk6Widget7DSliderE@Base 2.0.11 _ZTSN3Dtk6Widget7DTabBarE@Base 2.0.11 _ZTSN3Dtk6Widget8DSpinBoxE@Base 2.0.11 _ZTSN3Dtk6Widget8DSpinnerE@Base 2.0.11 _ZTSN3Dtk6Widget9DBaseLineE@Base 2.0.11 _ZTSN3Dtk6Widget9DLineEditE@Base 2.0.11 _ZTSN3Dtk6Widget9DListViewE@Base 2.0.11 _ZTSN3Dtk6Widget9DTextEditE@Base 2.0.11 _ZTSN3Dtk6Widget9DTitlebarE@Base 2.0.11 _ZTSPFP7QWidgetP7QObjectE@Base 2.0.11 _ZTV11ButtonGroup@Base 2.0.11 _ZTV12ContentTitle@Base 2.0.11 _ZTV12DThemeHelper@Base 2.0.11 _ZTV12ShortcutEdit@Base 2.0.11 _ZTV13DBusInterface@Base 2.0.11 _ZTV13DMPRISMonitor@Base 2.0.11 _ZTV16QFutureInterfaceIbE@Base 2.0.11 _ZTV16QFutureInterfaceIvE@Base 2.0.11 _ZTV18NavigationDelegate@Base 2.0.11 _ZTV26StartupNotificationMonitor@Base 2.0.11 _ZTV29StartupNotificationMonitorSub@Base 2.0.11 _ZTV8ComboBox@Base 2.0.11 _ZTV9DBusMPRIS@Base 2.0.11 _ZTVN12QtConcurrent19RunFunctionTaskBaseIbEE@Base 2.0.11 _ZTVN12QtConcurrent19RunFunctionTaskBaseIvEE@Base 2.0.11 _ZTVN12QtConcurrent32StoredMemberFunctionPointerCall0Ib16QSystemSemaphoreEE@Base 2.0.11 _ZTVN3Dtk6Widget10DBoxWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget10DCrumbEditE@Base 2.0.11 _ZTVN3Dtk6Widget10DScrollBarE@Base 2.0.11 _ZTVN3Dtk6Widget10LoadSliderE@Base 2.0.11 _ZTVN3Dtk6Widget10NavigationE@Base 2.0.11 _ZTVN3Dtk6Widget11DBaseButtonE@Base 2.0.11 _ZTVN3Dtk6Widget11DBaseExpandE@Base 2.0.11 _ZTVN3Dtk6Widget11DButtonListE@Base 2.0.11 _ZTVN3Dtk6Widget11DFileDialogE@Base 2.0.11 _ZTVN3Dtk6Widget11DFlowLayoutE@Base 2.0.11 _ZTVN3Dtk6Widget11DHBoxWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget11DHeaderLineE@Base 2.0.11 _ZTVN3Dtk6Widget11DIconButtonE@Base 2.0.11 _ZTVN3Dtk6Widget11DLinkButtonE@Base 2.0.11 _ZTVN3Dtk6Widget11DListWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget11DMainWindowE@Base 2.0.11 _ZTVN3Dtk6Widget11DOptionListE@Base 2.0.11 _ZTVN3Dtk6Widget11DPushButtonE@Base 2.0.11 _ZTVN3Dtk6Widget11DScrollAreaE@Base 2.0.11 _ZTVN3Dtk6Widget11DSearchEditE@Base 2.0.11 _ZTVN3Dtk6Widget11DTextButtonE@Base 2.0.11 _ZTVN3Dtk6Widget11DTickEffectE@Base 2.0.11 _ZTVN3Dtk6Widget11DVBoxWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget12DAboutDialogE@Base 2.0.11 _ZTVN3Dtk6Widget12DAnchorsBaseE@Base 2.0.11 _ZTVN3Dtk6Widget12DApplicationE@Base 2.0.11 _ZTVN3Dtk6Widget12DArrowButtonE@Base 2.0.11 _ZTVN3Dtk6Widget12DExpandGroupE@Base 2.0.11 _ZTVN3Dtk6Widget12DImageButtonE@Base 2.0.11 _ZTVN3Dtk6Widget12DInputDialogE@Base 2.0.11 _ZTVN3Dtk6Widget12DStackWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget12DStyleOptionE@Base 2.0.11 _ZTVN3Dtk6Widget12DSvgRendererE@Base 2.0.11 _ZTVN3Dtk6Widget12DVideoWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget12DialogButtonE@Base 2.0.11 _ZTVN3Dtk6Widget13ContentLoaderE@Base 2.0.11 _ZTVN3Dtk6Widget13DIpv4LineEditE@Base 2.0.11 _ZTVN3Dtk6Widget13DMPRISControlE@Base 2.0.11 _ZTVN3Dtk6Widget13DPasswordEditE@Base 2.0.11 _ZTVN3Dtk6Widget13DShortcutEditE@Base 2.0.11 _ZTVN3Dtk6Widget13DSwitchButtonE@Base 2.0.11 _ZTVN3Dtk6Widget13DThemeManagerE@Base 2.0.11 _ZTVN3Dtk6Widget13DToastPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget13DTrashManagerE@Base 2.0.11 _ZTVN3Dtk6Widget14DDialogPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget14DDoubleSpinBoxE@Base 2.0.11 _ZTVN3Dtk6Widget14DForeignWindowE@Base 2.0.11 _ZTVN3Dtk6Widget14DOptionPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget14DPageIndicatorE@Base 2.0.11 _ZTVN3Dtk6Widget14DRegionMonitorE@Base 2.0.11 _ZTVN3Dtk6Widget14DSuggestButtonE@Base 2.0.11 _ZTVN3Dtk6Widget14DTabBarPrivate10FullWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget14DTabBarPrivate15TabBarAnimationE@Base 2.0.11 _ZTVN3Dtk6Widget14DTabBarPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget14DTrashManager_E@Base 2.0.11 _ZTVN3Dtk6Widget14DWaterProgressE@Base 2.0.11 _ZTVN3Dtk6Widget15ArrowButtonIconE@Base 2.0.11 _ZTVN3Dtk6Widget15ArrowHeaderLineE@Base 2.0.11 _ZTVN3Dtk6Widget15DAbstractDialogE@Base 2.0.11 _ZTVN3Dtk6Widget15DArrowRectangleE@Base 2.0.11 _ZTVN3Dtk6Widget15DCircleProgressE@Base 2.0.11 _ZTVN3Dtk6Widget15DEnhancedWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget15DSettingsDialogE@Base 2.0.11 _ZTVN3Dtk6Widget15DSimpleListItemE@Base 2.0.11 _ZTVN3Dtk6Widget15DSimpleListViewE@Base 2.0.11 _ZTVN3Dtk6Widget15DSpinBoxPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget15DSpinnerPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget15FilterMouseMoveE@Base 2.0.11 _ZTVN3Dtk6Widget16DArrowLineExpandE@Base 2.0.11 _ZTVN3Dtk6Widget16DFileChooserEditE@Base 2.0.11 _ZTVN3Dtk6Widget16DKeyboardMonitorE@Base 2.0.11 _ZTVN3Dtk6Widget16DLineEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget16DListViewPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget16DTabBarAddButtonE@Base 2.0.11 _ZTVN3Dtk6Widget16DTextEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget16DTitlebarPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget16DWindowMaxButtonE@Base 2.0.11 _ZTVN3Dtk6Widget16DWindowMinButtonE@Base 2.0.11 _ZTVN3Dtk6Widget16VideoFormatProxyE@Base 2.0.11 _ZTVN3Dtk6Widget17DBlurEffectWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget17DBorderlessWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget17DBorderlessWindowE@Base 2.0.11 _ZTVN3Dtk6Widget17DBoxWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget17DClipEffectWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget17DCrumbEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget17DFileIconProviderE@Base 2.0.11 _ZTVN3Dtk6Widget17DLoadingIndicatorE@Base 2.0.11 _ZTVN3Dtk6Widget17DMovableTabWidgetE@Base 2.0.11 _ZTVN3Dtk6Widget17DScrollBarPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget17DSegmentedControlE@Base 2.0.11 _ZTVN3Dtk6Widget17DSwitchHeaderLineE@Base 2.0.11 _ZTVN3Dtk6Widget17DSwitchLineExpandE@Base 2.0.11 _ZTVN3Dtk6Widget17DVariantListModelE@Base 2.0.11 _ZTVN3Dtk6Widget18DFlowLayoutPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DListWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DMainWindowPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DOptionListPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DPushButtonPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DScrollAreaPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DSeparatorVerticalE@Base 2.0.11 _ZTVN3Dtk6Widget18DShortcutEditLabelE@Base 2.0.11 _ZTVN3Dtk6Widget18DThumbnailProviderE@Base 2.0.11 _ZTVN3Dtk6Widget18DTickEffectPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget18DWindowCloseButtonE@Base 2.0.11 _ZTVN3Dtk6Widget19DAboutDialogPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DApplicationPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DGraphicsClipEffectE@Base 2.0.11 _ZTVN3Dtk6Widget19DGraphicsGlowEffectE@Base 2.0.11 _ZTVN3Dtk6Widget19DImageButtonPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DInputDialogPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DPasswdEditAnimatedE@Base 2.0.11 _ZTVN3Dtk6Widget19DSegmentedHighlightE@Base 2.0.11 _ZTVN3Dtk6Widget19DStackWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DSvgRendererPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DVideoWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget19DWindowOptionButtonE@Base 2.0.11 _ZTVN3Dtk6Widget20CrumbObjectInterfaceE@Base 2.0.11 _ZTVN3Dtk6Widget20DIpv4LineEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DMPRISControlPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DPasswordEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DPictureSequenceViewE@Base 2.0.11 _ZTVN3Dtk6Widget20DSeparatorHorizontalE@Base 2.0.11 _ZTVN3Dtk6Widget20DStyleOptionLineEditE@Base 2.0.11 _ZTVN3Dtk6Widget20DSwitchButtonPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DThemeManagerPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DTrashManagerPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget20DWindowManagerHelperE@Base 2.0.11 _ZTVN3Dtk6Widget21DDoubleSpinBoxPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget21DForeignWindowPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget21DPageIndicatorPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget21DPlatformWindowHandleE@Base 2.0.11 _ZTVN3Dtk6Widget21DRegionMonitorPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget21DWaterProgressPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget21DWindowManagerHelper_E@Base 2.0.11 _ZTVN3Dtk6Widget22DAbstractDialogPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget22DArrowRectanglePrivateE@Base 2.0.11 _ZTVN3Dtk6Widget22DCircleProgressPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget22DSettingsWidgetFactoryE@Base 2.0.11 _ZTVN3Dtk6Widget22DSimpleListViewPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget23DFileChooserEditPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget23DWindowMaxButtonPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DBlurEffectWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DBorderlessWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DBorderlessWindowPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DClipEffectWidgetPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DFileIconProviderPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DLoadingIndicatorPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget24DSegmentedControlPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget25DStyleOptionSuggestButtonE@Base 2.0.11 _ZTVN3Dtk6Widget25DThumbnailProviderPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget26DGraphicsClipEffectPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget26DPasswdEditAnimatedPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget26DThemeManagerStaticPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget27DPictureSequenceViewPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget27DSlideStackWidgetTransitionE@Base 2.0.11 _ZTVN3Dtk6Widget27DWindowManagerHelperPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget29DFileThumbnailProviderPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget30DAbstractStackWidgetTransitionE@Base 2.0.11 _ZTVN3Dtk6Widget37DAbstractStackWidgetTransitionPrivateE@Base 2.0.11 _ZTVN3Dtk6Widget6DLabelE@Base 2.0.11 _ZTVN3Dtk6Widget6DToastE@Base 2.0.11 _ZTVN3Dtk6Widget7ContentE@Base 2.0.11 _ZTVN3Dtk6Widget7DDialogE@Base 2.0.11 _ZTVN3Dtk6Widget7DOptionE@Base 2.0.11 _ZTVN3Dtk6Widget7DSliderE@Base 2.0.11 _ZTVN3Dtk6Widget7DTabBarE@Base 2.0.11 _ZTVN3Dtk6Widget8DSpinBoxE@Base 2.0.11 _ZTVN3Dtk6Widget8DSpinnerE@Base 2.0.11 _ZTVN3Dtk6Widget9DBaseLineE@Base 2.0.11 _ZTVN3Dtk6Widget9DLineEditE@Base 2.0.11 _ZTVN3Dtk6Widget9DListViewE@Base 2.0.11 _ZTVN3Dtk6Widget9DTextEditE@Base 2.0.11 _ZTVN3Dtk6Widget9DTitlebarE@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI12QDBusMessageE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI12QPainterPathE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI13QDBusArgumentE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI15QDBusObjectPathE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListI12QPainterPathEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListI5QIconEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListI7QRegExpEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListIP7QWidgetEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListIPN3Dtk6Widget15DSimpleListItemEEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI5QListIbEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI7QVectorIjEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdI8QMarginsE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdIN17QtMetaTypePrivate23QSequentialIterableImplEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN11QMetaTypeIdIN17QtMetaTypePrivate24QAssociativeIterableImplEE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN18QMetaTypeIdQObjectIN2Qt10DropActionELi16EE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN18QMetaTypeIdQObjectIP7QWidgetLi8EE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN18QMetaTypeIdQObjectIPN3Dtk4Core9DSettingsELi8EE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN18QMetaTypeIdQObjectIPN3Dtk6Widget12DAnchorsBaseELi8EE14qt_metatype_idEvE11metatype_id@Base 2.0.11 (optional=templinst)_ZZN18QMetaTypeIdQObjectIPN3Dtk6Widget15DSimpleListItemELi8EE14qt_metatype_idEvE11metatype_id@Base 2.0.11 _ZZN3Dtk6Widget20DThemeManagerPrivate14registerWidgetEP7QWidgetRK7QStringRK11QStringListENKUlS3_S6_S6_E_clES3_S6_S6_@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListI12QPainterPathELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListI5QIconELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListI7QRegExpELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListIP7QWidgetELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListIPN3Dtk6Widget15DSimpleListItemEELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI5QListIbELb1EE17registerConverterEiE1f@Base 2.0.11 (optional=templinst)_ZZN9QtPrivate19ValueTypeIsMetaTypeI7QVectorIjELb1EE17registerConverterEiE1f@Base 2.0.11 _ZZZN13DBusInterface11ReleaseNameERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface11RemoveMatchERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface11RequestNameERK7QStringjENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface12GetNameOwnerERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface12NameHasOwnerERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface12ReloadConfigEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface16ListQueuedOwnersERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface18StartServiceByNameERK7QStringjENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface20ListActivatableNamesEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface21GetConnectionUnixUserERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface22GetAdtAuditSessionDataERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface26GetConnectionUnixProcessIDERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface35GetConnectionSELinuxSecurityContextERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface5GetIdEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface5HelloEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface8AddMatchERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN13DBusInterface9ListNamesEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN15__XEventMonitor12RegisterAreaEiiiiiENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN15__XEventMonitor14UnregisterAreaERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN15__XEventMonitor18RegisterFullScreenEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS11SetPositionERK15QDBusObjectPathxENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS4NextEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS4PlayEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS4SeekExENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS4StopEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS5PauseEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS7OpenUriERK7QStringENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS8PreviousEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _ZZZN9DBusMPRIS9PlayPauseEvENKUlvE_clEvE15qstring_literal@Base 2.0.11 _Zls6QDebugRKN3Dtk6Widget21DPlatformWindowHandle10WMBlurAreaE@Base 2.0.11 (c++)"non-virtual thunk to ButtonGroup::~ButtonGroup()@Base" 2.0.11 (c++)"non-virtual thunk to ComboBox::~ComboBox()@Base" 2.0.11 (c++)"non-virtual thunk to ContentTitle::~ContentTitle()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::ArrowButtonIcon::~ArrowButtonIcon()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::ArrowHeaderLine::~ArrowHeaderLine()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::Content::~Content()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::ContentLoader::~ContentLoader()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::CrumbObjectInterface::drawObject(QPainter*, QRectF const&, QTextDocument*, int, QTextFormat const&)@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::CrumbObjectInterface::intrinsicSize(QTextDocument*, int, QTextFormat const&)@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::CrumbObjectInterface::~CrumbObjectInterface()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DAboutDialog::~DAboutDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DAbstractDialog::~DAbstractDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DApplication::~DApplication()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DArrowButton::~DArrowButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DArrowLineExpand::~DArrowLineExpand()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DArrowRectangle::~DArrowRectangle()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBaseButton::~DBaseButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBaseExpand::~DBaseExpand()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBaseLine::~DBaseLine()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBlurEffectWidget::~DBlurEffectWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBorderlessWidget::~DBorderlessWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBorderlessWindow::~DBorderlessWindow()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DBoxWidget::~DBoxWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DButtonList::~DButtonList()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DCircleProgress::~DCircleProgress()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DClipEffectWidget::~DClipEffectWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DCrumbEdit::~DCrumbEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DDialog::~DDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DDoubleSpinBox::~DDoubleSpinBox()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFileChooserEdit::~DFileChooserEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFileDialog::~DFileDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFileIconProvider::~DFileIconProvider()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFileThumbnailProviderPrivate::~DFileThumbnailProviderPrivate()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::expandingDirections() const@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::hasHeightForWidth() const@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::heightForWidth(int) const@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::minimumSize() const@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::setGeometry(QRect const&)@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::sizeHint() const@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DFlowLayout::~DFlowLayout()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DForeignWindow::~DForeignWindow()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DGraphicsClipEffect::~DGraphicsClipEffect()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DHBoxWidget::~DHBoxWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DHeaderLine::~DHeaderLine()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DIconButton::~DIconButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DImageButton::~DImageButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DInputDialog::~DInputDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DIpv4LineEdit::~DIpv4LineEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DLabel::~DLabel()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DLineEdit::~DLineEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DLinkButton::~DLinkButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DListView::~DListView()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DListWidget::~DListWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DLoadingIndicator::~DLoadingIndicator()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DMPRISControl::~DMPRISControl()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DMainWindow::~DMainWindow()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DMovableTabWidget::~DMovableTabWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DOption::~DOption()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DOptionList::~DOptionList()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DPageIndicator::~DPageIndicator()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DPasswdEditAnimated::~DPasswdEditAnimated()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DPasswordEdit::~DPasswordEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DPictureSequenceView::~DPictureSequenceView()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DPushButton::~DPushButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DRegionMonitor::~DRegionMonitor()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DScrollArea::~DScrollArea()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DScrollBar::~DScrollBar()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSearchEdit::~DSearchEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSegmentedControl::~DSegmentedControl()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSegmentedHighlight::~DSegmentedHighlight()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSeparatorHorizontal::~DSeparatorHorizontal()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSeparatorVertical::~DSeparatorVertical()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSettingsDialog::~DSettingsDialog()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DShortcutEdit::~DShortcutEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DShortcutEditLabel::~DShortcutEditLabel()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSimpleListView::~DSimpleListView()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSlideStackWidgetTransition::~DSlideStackWidgetTransition()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSlider::~DSlider()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSpinBox::~DSpinBox()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSpinner::~DSpinner()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DStackWidget::~DStackWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSuggestButton::~DSuggestButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSvgRenderer::~DSvgRenderer()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSwitchButton::~DSwitchButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSwitchHeaderLine::~DSwitchHeaderLine()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DSwitchLineExpand::~DSwitchLineExpand()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTabBar::~DTabBar()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTabBarAddButton::~DTabBarAddButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTabBarPrivate::FullWidget::~FullWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTabBarPrivate::~DTabBarPrivate()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTextButton::~DTextButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTextEdit::~DTextEdit()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DThemeManager::~DThemeManager()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DThemeManagerStaticPrivate::~DThemeManagerStaticPrivate()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DThumbnailProvider::~DThumbnailProvider()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTickEffect::~DTickEffect()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTitlebar::~DTitlebar()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DToast::~DToast()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTrashManager::~DTrashManager()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DTrashManager_::~DTrashManager_()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DVBoxWidget::~DVBoxWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DVideoWidget::~DVideoWidget()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWaterProgress::~DWaterProgress()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowCloseButton::~DWindowCloseButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowManagerHelper::~DWindowManagerHelper()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowManagerHelper_::~DWindowManagerHelper_()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowMaxButton::~DWindowMaxButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowMinButton::~DWindowMinButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DWindowOptionButton::~DWindowOptionButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::DialogButton::~DialogButton()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::LoadSlider::~LoadSlider()@Base" 2.0.11 (c++)"non-virtual thunk to Dtk::Widget::Navigation::~Navigation()@Base" 2.0.11 (c++)"non-virtual thunk to QWindow::size() const@Base" 2.0.11 (c++)"non-virtual thunk to QtConcurrent::RunFunctionTask::run()@Base" 2.0.11 (c++)"non-virtual thunk to QtConcurrent::RunFunctionTask::run()@Base" 2.0.11 (c++)"non-virtual thunk to QtConcurrent::RunFunctionTaskBase::run()@Base" 2.0.11 (c++)"non-virtual thunk to QtConcurrent::RunFunctionTaskBase::run()@Base" 2.0.11 (c++)"non-virtual thunk to QtConcurrent::StoredMemberFunctionPointerCall0::~StoredMemberFunctionPointerCall0()@Base" 2.0.11 (c++)"non-virtual thunk to ShortcutEdit::~ShortcutEdit()@Base" 2.0.11 (c++)"non-virtual thunk to StartupNotificationMonitor::nativeEventFilter(QByteArray const&, void*, long*)@Base" 2.0.11 (c++)"non-virtual thunk to StartupNotificationMonitor::~StartupNotificationMonitor()@Base" 2.0.11 (c++)"non-virtual thunk to StartupNotificationMonitorSub::~StartupNotificationMonitorSub()@Base" 2.0.11 dtkwidget-2.1.1/debian/rules000077500000000000000000000016651352002233700160100ustar00rootroot00000000000000#!/usr/bin/make -f DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/default.mk export QT_SELECT = qt5 DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) ifneq (,$(wildcard .git/config)) CONFIG_VERSION= else VERSION = $(DEB_VERSION_UPSTREAM) _PACK_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$1}') _BUILD_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$2}' | sed 's/[^0-9]//g') ifeq ($(_BUILD_VER),) CONFIG_VERSION = $(_PACK_VER) else CONFIG_VERSION = $(_PACK_VER).$(_BUILD_VER) endif endif %: dh $@ --parallel override_dh_auto_configure: dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH) override_dh_makeshlibs: dh_makeshlibs -V ifeq ($(DEB_BUILD_ARCH), sw_64) override_dh_makeshlibs: dh_makeshlibs -V -- -c0 endif ifeq ($(DEB_BUILD_ARCH), mips64el) override_dh_makeshlibs: dh_makeshlibs -V -- -c0 endif dtkwidget-2.1.1/debian/source/000077500000000000000000000000001352002233700162205ustar00rootroot00000000000000dtkwidget-2.1.1/debian/source/format000066400000000000000000000000151352002233700174270ustar00rootroot000000000000003.0 (native) dtkwidget-2.1.1/doc/000077500000000000000000000000001352002233700142435ustar00rootroot00000000000000dtkwidget-2.1.1/doc/images/000077500000000000000000000000001352002233700155105ustar00rootroot00000000000000dtkwidget-2.1.1/doc/images/DArrowButton.png000066400000000000000000000010151352002233700206050ustar00rootroot00000000000000PNG  IHDR!u pHYs.#.#x?vIDATx^횽A/.]( h݄ Nh܀v R1Q'9#yL#;''&[p- 0<! FA# H`t1Nx< w%c\\. ) <Jx](-QnLtn{fn{fn{fn{fn{f;3UIENDB`dtkwidget-2.1.1/doc/images/DBaseExpand.gif000066400000000000000000000445151352002233700203260ustar00rootroot00000000000000GIF89aE    ,#',0-0 *))%,86('?=*;87 Of/V/p3M g+/Q44iU(HiO B +H 7I+U +R 9S!K*O0.je#q(m5.UUK%GI'YY)DN9jc%L_G0aZN ;-;K Na)Q%ZԀ=ށ[S}|AMhS # "7^<#Js(p T@*&`O;e@ 찆P -BbF Ks$28o@ (H96Hp7cP *'gSHs ʈ\yL22T`\Lst7&)"H\n^늎rv:˥#,|wK>X( 0yG3l:eϨ& l>\ juk #L' 8 :lB /RZb%׊ᩉ0m;dx ғ ʅ"`|%h.sJa)\r(Wݚ7`x,.z ;q>*or˶ ƎS+2)`WA6A3Gi$Ӝ/YM'x%H|S'-@Ush Vݺ†P 5# (# ճ C4uO:8]?~/^ Hȗ ,BBS%bG/Ogo?5s`2pjAC/GYJ` 4 "r?^h:H&.,A@dHC2<P"ч6vS .uB 1b"P';錄2%9cK#apRHZ:8PF?TNÚ5uJ08!3GMca} c3Ґԥ6dacpC XKL>;('`0J T P!lUÍԬWq H \!W65C(r12UH9%U$!3(B:Ru7N{|Tjzj=s9H Rp  ` ,{i xγ4 ^ŸU(${] ȇ9 Vö |ܐ1X#)QRtd5 0 u8R2` |ĒX{ˏMK80Pv7%>1w1s\@L"HN&;PL*[ʆ̡.{˝L2hN6pL:xγ>πMBЈNF;ѐ'MJ[Ҙδ7N{ӠGMRԨNWVհgMZָεw^MbN=ŀ!r,n`eI*\ȰÇZ%ПE3jȱǏ C@(S\I ˗0cH͛1ɳHX JѣH*]T(ЦPJ)U0I}WA_dYve:٫`%ZQ2-RA_ Q^K{EpI"l }AW$ ˃f6$q5:KؐvѸBë8ql E"w,n.Wj֎'eybL}(p/`5qm46\Q/&UxAq5({f@@WL8@^Z(@sLFZÕ_W6Hb{1'# "Ua 5pHF2#ƨ$Q8Y?n9FEUsT4AjYgѭY[SV[ ckz2F!Pdf$mXS]Yt]|]EhXہF뮼+찺J&.lVfH*+ᖻ+xkJR+;$/OO@!,n` |d*\ȰÇ  xŋ3jȱǏ Hɓ(C{˗ œIe8sO< T&  A#ѓJCڰxjK,O/F8ɫIv0(B*nPϫ+Ȅ b\Po#e+*`bԺI'c+.ɱ5w4ʐ 9@gY|$+$M:xlGH[ Et$^%gG u$?,?:򥩫Wd y_J3dn!ooWp*WXwgwރa^F|lGlϡ 7YuAUERq7n[FY!5\'xرD}T |`oWab @"lGԚ_%! I*gFXDE2 ⏟DD֣F*餔Vj饘^*@!,'7Ԩ! !,,Q H*\ȰCK"JHŋ3jܘђÏ CIɓ'--Zɲ˗0cʜIEQɳϟ o JMH*]ʔJPJիX|4WK'ׯh [۷ aKݻx˷_l VÈ(^#Kjq_.lˠ@Ls_ddgǘn!tv<ڴ#QcQ{˱ΦXo t_ g-Kc)r@`Q>^@Mz ё7_Y$?& ?O|W?5|A6UvBjX,jO,NGp2@f!1 O4A@@dȟŀx~G@T8c]F(oa1B$Q?MprFԗH\ވOz!{ lb7btDŽdl) TremU'`6I.xd]U(IqI\rX'lYe_~ŢQs-Z"Jڥuej!OPęava#[U@EL Y# :mX븖bJQ g $eyaAޥ`%if%.rWlgƛ=ZMDɊy MO83*l3R.L:o\@s3DA'$GPK:^+TwmZ^=+g6Zpmp-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wow/o觯!,| 4‚O.HСD ^LHߑ ,Tt(dG“0_$ؤƍ0Lؤ'_P8Pˊ 7~x0ǁSf+Vl%(حg;0 !,p\9 HbÅ #JHD* fȱGHd''M\ aDɲfɑ0aAp͟9_lha`P'>12@'/by! =?&}- MXc k XV si튐':+,/Zj hɠCwCIz?c t'زg׆JunݻYF:8ںwr`tH سkνËxOӫ_Ͼ˟OO`F`-!^!6(!(b#r"(2()18/"-V~?z!,p\3 HbY0Ç#JO`ȱGRB0Ǔ(9dr@)c%<3%I- lgϣY"Ti `a5a !78ݚT_ٝL$tߎf)6"onMmD`e2 6:܈Dn˘3?ps潞n~r3ң.m(G_dݺ۰ks-[YڽbGO,Wf)ӷسkνË_Oӫ_ϾG8b~_J_ 6 AF( Da?\Xv8a X`'zh~!, HP ,*4Æ(Q`E 1n|"ň 3nTH`GI|r@,Tdli`́j3ʎ/b5$al8O@  d (rHA`h@"PGh0mGK;+˷† x%&VHaR4yF6ͲiK衕Ŋ!, H  *\@*raAiܘŁ?b(G -<9p'(Y*<̅+7PpS oD.HI .dh3DU ,SY5=pmO=h۷'.K7r|әE,edI"KΒce%V>!d,| Hp*xÅ FlQ ,^1cŽ=.iȒM8PA  Dsa5S!*sbAp@hҧPJgUWWfŪ#ʼnOKؚҪM[1 !,n` |d*\ȰÇ  xŋ3jȱǏ Hɓ(C{˗ œIe8sO< T&  A#ѓJCڰxjK,O/F8ɫIv0(B*nPϫ+Ȅ b\Po#e+*`bԺI'c+.ɱ5w4ʐ 9@gY|$+$M:xlGH[ Et$^%gG u$?,?:򥩫Wd y_J3dn!ooWp*WXwgwރa^F|lGlϡ 7YuAUERq7n[FY!5\'xرD}T |`oWab @"lGԚ_%! I*gFXDE2 ⏟DD֣F*餔Vj饘^*@!,'7Ԩ! !," 9 8pka@n$aoP "P`Ǒ ARe!,, H*\ȰCK"JHŋ3jܘђÏ CIɓ'--Zɲ˗0cʜIEQɳϟ o JMH*]ʔJPJիX|4WK'ׯh [۷ aKݻx˷_l VÈ(^#Kjq_.lˠ@Ls_ddgǘn!tv<ڴ#QcQ{˱ΦXo t_ g-Kc)r@`Q>^@Mz ё7_Y$?& ?O|W?5|A6UvBjX,jO,NGp2@f!1 O4Ag矇t1 ߑ8X׃ۄa@Xcq9crEO;Y})VAX\ᤇy? &v.f! @wL8@ЖsŦ0euG "s# i)oص]$k %ŠV.fTcbhczhεȤVi]ZT4Qf]xD*f@L W  6tݚ븃F1zS7#ğ>lgAޥ`%if֊F"Ulgo kEq$_ R(+q,75r0?P%HLs3̱8͓>wP? O 2BNs,TJOϋƮTIMo-SmHh=p-tmx#D|߀.n'7G!,7,` H*\ȰÇ#JHŋiȱǏ CIɓ(S\ɲ˗0cʜI͛8sHϟ@ JѣH*]ʴӧPJ!,," H*\ȰÇ>H1ŋ3jȱǏ 5N482ɓ(S\cI/[ʜI͛c|ϟ@)QѣHn< PJM A*XPa0ԯ`d`ֳ/l"۷k0{Kڂlw(ݺ/lKp[f}!ǐ0EY#k̹bS4Ө=^:[' m ܿ{ jē 7[УKNسkνHOӫ_Ͼ˟OϿ(Ǵ& 6F(Vhfv!,,1 H*\ȰÇbʼn3jȱǏ CJE'I\ɲ˗0ED83͛8s)C< J@L RPJҥ/xIׯEW_lha`pʍ5(兄'XbKOc_h0˘c<&N#rv~JPtOc:a{g;;6X {+_μGzZD9_سg^͚'MJ/1H۸[`”H0N{F //(YoN{Υ_}/)y|I>+( 6F(Vhfv ($h(,0(4h8<@=z@'+PBJ sA# `7 /l>AC`AtHr&Xn=]~#\R gK`矁ϣF*餔Vj饘fD =ЊMCMb 9d ; 2@@/5a8mstL{ I,Í@,; `Z0$Cy0s/Z)=IJ;29Dc4 SFK[\>,#mK/,?)(TN*, ] [0T0 8"7A@]i2s8w䐌MpC D0C V"쁁ZΫ)$D /$[MV^;7aN> +8|/yOD=T0Iɽ;ǙTV0ecf:{!z,| Hp*xÅ FlQ ,^1cŽ=.iȒM8PA  Dsa5S!*sbAp@hҧPJgUWWfŪ#ʼnOKؚҪM[1 !,n` |d*\ȰÇ  xŋ3jȱǏ Hɓ(C{˗ œIe8sO< T&  A#ѓJCڰxjK,O/F8ɫIv0(B*nPϫ+Ȅ b\Po#e+*`bԺI'c+.ɱ5w4ʐ 9@gY|$+$M:xlGH[ Et$^%gG u$?,?:򥩫Wd y_J3dn!ooWp*WXwgwރa^F|lGlϡ 7YuAUERq7n[FY!5\'xرD}T |`oWab @"lGԚ_%! I*gFXDE2 ⏟DD֣F*餔Vj饘^*@!,'7Ԩ! !," 9 8pka@n$aoP "P`Ǒ ARe!,,Q H*\ȰCK"JHŋ3jܘђÏ CIɓ'--Zɲ˗0cʜIEQɳϟ o JMH*]ʔJPJիX|4WK'ׯh [۷ aKݻx˷_l VÈ(^#Kjq_.lˠ@Ls_ddgǘn!tv<ڴ#QcQ{˱ΦXo t_ g-Kc)r@`Q>^@Mz ё7_Y$?& ?O|W?5|A6UvBjX,jO,NGp2@f!1 O4Ag矇t1 ߑ8X׃ۄa@Xcq9crEO;Y})VAX\ᤇy? &v.f! @wL8@ЖsŦ0euG "s# i)oص]$k %ŠV.fTcbhczhεȤVi]ZT4Qf]xD*f@L W  6tݚ븃F1zS7#ğ>lgAޥ`%if֊F"Ulgo kEq$_ R(+q,75r0?P%HLs3̱8͓>wP? O 2BNs,TJOϋƮTIMo-SmHh=p-tmx|߀.n'7G.Wngw砇.褗n騧ꬷ.n/o'7G/Wog{?w/o觯/@!,~,8 H(\Æ F|HDO*jxbƍ?'LH ,X0EA&; %&6 ָs'MX I2%h E.aꋜJd؅%VZo%;`]w܅޽lÈ+^̸ǐ#KL˘3k̹ϠCM~'79 !,p\7 HbÅ #JHD* fȱGHd''M\ aDɲfɑ0aAp͟9_lha`P'>12@'/by! =?&}- MXc k XV si튐':+,/Zj hɠCwCIz?c t'زg׆JunݻYF:8ںwr`tH سkνËOӫ_Ͼ˟O>~&_b~!@ :HPVh]f ("nh #X~+ .!/"-";b1B# Xz( YI6yJjHBRd {!,. 8*B'T(|H ' G'fx!+ H$Bz8`O0_ 7@O/dԁ o? 6P*@#Ar௉U$*##lD* Vxqdo߽!8Qà qb#G+Y2Ǔ>ɐS6˕Y]ͺװc˞M۸sͻo!, HP ,*4Æ(Q`E 1n|"ň 3nTH`GI|r@,Tdli`́j3ʎ/b5$al8O@  d (rHA`h@"PGh0mGK;+˷† x%&VHaR4yF6ͲiK衕Ŋ!, H  *\@*raAiܘŁ?b(G -<9p'(Y*<̅+7PpS oD.HI .dh3DU ,SY5=pmO=h۷'.K7r|әE,edI"KΒce%V>!,| Hp*xÅ FlQ ,^1cŽ=.iȒM8PA  Dsa5S!*sbAp@hҧPJgUWWfŪ#ʼnOKؚҪM[1 !,n` |d*\ȰÇ  xŋ3jȱǏ Hɓ(C{˗ œIe8sO< T&  A#ѓJCڰxjK,O/F8ɫIv0(B*nPϫ+Ȅ b\Po#e+*`bԺI'c+.ɱ5w4ʐ 9@gY|$+$M:xlGH[ Et$^%gG u$?,?:򥩫Wd y_J3dn!ooWp*WXwgwރa^F|lGlϡ 7YuAUERq7n[FY!5\'xرD}T |`oWab @"lGԚ_%! I*gFXDE2 ⏟DD֣F*餔Vj饘^*@!,'7Ԩ! !," 9 8pka@n$aoP "P`Ǒ ARe!,, H*\ȰCK"JHŋ3jܘђÏ CIɓ'--Zɲ˗0cʜIEQɳϟ o JMH*]ʔJPJիX|4WK'ׯh [۷ aKݻx˷_l VÈ(^#Kjq_.lˠ@Ls_ddgǘn!tv<ڴ#QcQ{˱ΦXo t_ g-Kc)r@`Q>^@Mz ё7_Y$?& ?O|W?5|A6UvBjX,jO,NGp2@f!1 O4Ag矇t1 ߑ8X׃ۄa@Xcq9crEO;Y})VAX\ᤇy? &v.f! @wL8@ЖsŦ0euG "s# i)oص]$k %ŠV.fTcbhczhεȤVi]ZT4Qf]xD*f@L W  6tݚ븃F1zS7#ğ>lgAޥ`%if֊F"Ulgo kEq$_ R(+q,75r0?P%HLs3̱8͓>wP? O 2BNs,TJOϋƮTIMo-SmHh=p-tmx#D|߀.n'7G!,7,w H*\ȰÇ#JHŋiȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӓĢJJիXjʵׯ`ÊKٳ!,,& H*\ȰÇ>H1ŋ3jȱǏ 5N482ɓ(S\cI/[ʜI͛c|ϟ@)QѣHn< PJM A*XPa0ԯ`d`ֳ/l"۷k0{Kڂlw(ݺ/lKp[f}!ǐ0EY#k̹bS4Ө=^:[' m ܿ{ jē 7[УKNسkνËSO_Ͼ˟OϿ'h& 61F(Vhfv ($hb@!,,6 H*\ȰÇbʼn3jȱǏ CJE'I\ɲ˗0ED83͛8s)C< J@L RPJҥ/xIׯEW_lha`pʍ5(兄'XbKOc_h0˘c<&N#rv~JPtOc:a{g;;6X {+_μGzZD9_سg< 2@4 LMN?+>ᜁ:o6Az 1p# ; ZpGCy`˶mrl49h6CSkFK{ O@c *@8gq U gv/tM3}x/G/o'7G!,,J H*\ȰÇbH1ŋ3jȱǏ 3b*XB\ɲ˗0AH 1sɳϛ) M)ϣH*]oP/xL,ʴիX37`ԊfK,Vњ]˶m M00@W !PGÈ,DQPL2[ 6Dn@dˠCWuJM>^͚'MJ/1H۸[`”H0N{F //(YoN{Υ_}/)y|I>+( 6F(Vhfv ($h(,0(4h8<@)DiH&p2s8w䐌MpC D0C V"$:2C,8},`AE6r U foRFH +ɦ(駠*ꨤjꩨj)c$8D4L`*N$4 V&/()>c:ž&$`@7|pUC,߆K+j,!vo,l' 7G,WlWw ,$l(,0!,,N H*\ȰÇbŋ3jȱǏ<Ir$E(S\ɲK"2q"&_ɳϟGI&N@*]ʴ@4OөիXb9aWZÊ{ MX%˶[\!R\ݻ1ԨKx \E L+^\HE&0L٩< !^,| Hp*xÅ FlQ ,^1cŽ=.iȒM8PA  Dsa5S!*sbAp@hҧPJgUWWfŪ#ʼnOKؚҪM[1 !t,n`[*\ȰÇ>Y$LiȱǏ CIRLXf*ɲ˗/3͛%ɳO> u tѣ [ʴӧPJJUJjgϏ?]ZʼnnYYƳc#RS5زTRX4]m\^^K Q|iv^_kFsˇl4߆LDe|b(*X+ӃT;֤@tʍM;p9ͼٰ#qoj!m]6F-T'0Eʈ\TpL?r=GEeᜡ/]Ips5Ehru:L#Z_yuK>X( 0X38sRc>\ rYx1V #L' 8 8lB&ѕ)O%XpɑbDؙ8NXR@jbjřgV65W5ԥ&h& JI%=.^9?[ Om:慓+2)`vV}A66\$Ӝ/YM'D%H|-Zر*/l`$(Zj0|U&C48éem}/^ 5bKnje4l3Zެ[4@-DmH'4>/PGtRWmG3XwuLdLel JtmwD ;dtkwidget-2.1.1/doc/images/DCrumbEdit.png000066400000000000000000000065521352002233700202100ustar00rootroot00000000000000PNG  IHDR>[e~: pHYs+ IDATx{xTLfrȝR !\R4EҮl[>ڮnهǵTtB)\"TAb2$L&sp&rrK>w9iB1 !C+.It%d [jvYb`[tSK"fF q%b}rx#Mk3L]otW$*3SBU=!ĵl?+n{nQGdb,u1&ΰF خ8Y$4x[B xrX3ٿo^fg1i(Y's4y(\- <^M^*ϳ6؛(C?{rطaO6)9r'>p9<4*2U g׍ʍȷ~F[ol\<8ewn=\l^i;e!T*7BKEMH5x[AP {o{k۰)a[=I<>y[q8j S O~Ri{ʧ-yˮ*[Z8ʿxr0"$b[9c8w$2xsbbq>^Ndž.κؘ..(@Cρ&u2J3W͹@f1l+nO,4:l<Þ3N:VV=ȸ{ݼ|, gkeO9۝m<;zgxL`ߞF16t\PLQ,WٴG Y)K%1]yѴO4[tbE1xד8\ǽ.H&D!7?Qn`ng(]j\.֟>4p2>fyTUo'Zafms]PU4H 9|+ @13#|AH M;a뾽!`SÙw-|}5>c84ƣԫb>LjXSF*7{9TlcaVrnP5Wt_[4fO|Cϼt~պc~wzˡpCǕm^BM}l,!4c YC;j` `X&wBG~]HTazmvv4ž&#3^P"4Œ$1FQhWr*5-dP${ۡx'bkj@6\|k8_|W>|ֈ ?zW V ]y٩/݄ntJݏbB7^Ja~*N4B/<])a CQr&󾓘0r2wM8|j),ĥoi=|-Gt}^% hl? øgw J,D+y-k,zzc +~%n/Ơ~UW6oM+mGF}ݥbI0LqCZ֬hϷx=o,-:dbjo57wQh-p1*ahP'uGᏠ3-ןfO! ,&TUP)W~[㜛vH"+>Q!h8;_M,+Hr4Fr_5pkᏽGZ-q8]xK`@gb 5zny[KBM8\sUv{t캞!OxH;^-3?[8Fv ;K"sdbES{1Ɉ$v wC<`Ɣο5;9dX$KmV )>DTnBH3h"+1 S0Phk琛H,-|澲Tڙ2)n#!Q!h@3q CSlco3 /i1Rp^TD3DQ^ )1b1eNdFu+ݵ#!>ܦ>bc$l;i/^_UJW@׋^Vdǃ9g{?|y?LI \t0]sxhy|.o3>P[k58Tpq,w1'\^*x]G1gw cF2:h<{r4>.cG%Iù?Su]Zwob >:{-&nvRԎfL3lS8a_9,2KqE{GgGP\MHfbodoNp2ܼ{@eig8]Gmonb؞o%[k!5qAWE;"i∋sx]o'=*G6'PM|7S o]*'ws#34 Mtvun!<{_[C$W%VKGdyNq` gCn7rW?߁cR8E|gYMb }Hi= gQb~xo_\ֳ(v 拟5 yl $4t}؇du`Qi,dpc8Sc=۵a551s 6A4wzKJwUq"^J'O :82%+as/xԃGRӉ`ˎ ._AϤ,e @ӵvGF.';;ж6:͓P5i8:Mb*m|/^GΪǰ/ې|3n稨( e&ŃϿņXwj_"9)a^MK)#qsp{2 5񁄇coJrL lF Sn#dLzojFQ?m>>1#z]+7bWN3 7|ܝoxQc #)-?E\}*L< .]JKKK˖-cʕLb؟xj+E6tmG{=2ܖֺ3tz~=<k֬5d_ E9-Yxgw=II iS0]y^EiࢭÜլQekI 3q>RvlVf=򭼜AN1;3ĻRf&9ۏl3iKM')xLWSu4] G"1`tLBP0AQr0Qj?CV&D"zbb,;7 X}3LNdslVxTMvH`~"/ ق1<ŢQViaVQǍGgx,VݓtSu?ݍ/e۾|OeJu(h6U qBXJʭV{=Fcfg_Jݻq_Y#y7?{Pg^*W(k$ɺǢJ3d,=|jla'A* M""jmo)5VLR9,O.Irz4mO ̌gBfa& >zRME >VT.jjq~τ#a+xL0['КP@m3M,$IA?2o^Mن~X4(N0d6 ^Yϧf^RO(‘p?UaRtBrk?*uj 1Ei۝~N29rhp5Gh 3 00p x܁-N0ţ3tga$Pֹ0Ei EQDuPgF&3q;uEKiMc*3_ΣhQ_[]^# $O3.EQB~?g~HZZȲlT]%Ibb"H  H  H  H  H  Of+rgqY+ˊ՝Ofԋ_>}N|2S~DD?cso;"z &UI~bka\3òc p{}{tCcWaO v%ՙỒق1|-0O'D|, O:,OU: :tzt>A'=@#'O:'Ac8<{']WљW0tv(\P.gG2qeiuPH=k6b=d(DګA3 ڴ0!W.,ή,݆ۃ?UV[ 3r%,DO޺/WAH  H  H  H  H  GaeȭIENDB`dtkwidget-2.1.1/doc/images/DSpinner.gif000066400000000000000000004310061352002233700177250ustar00rootroot00000000000000GIF89anR******* 3UUUn**UU.-.//./5UaUUU.g߅9! NETSCAPE2.0!,nR H ̷Nm FFQݺ| 3jȱ#|uF񘱓Ǝ#&%1ǺH͏Ifb>jI1ln*]aÝ&I56UBiʔɓWORvcJ,9wf)WU&ƚknl[j'ȕ;GN8s"tN L8TVQUNǨ#ϡ)˰,aQAo=k6mࠎ#8q;*^y海sw$onP9{4nB-Ws>ITO1BHw(wfۄItFwD}wwi11m(0QhqC0hwCpaLd]zqBLJv_BȠB?adB 4ɳ@͙z}fs)Ci$A =rE 40C 7xA_mƖTU~vhrhyD C`9&e! Ur F) ]I[nugG#LPFPe qę1B $`w# *7P8p,Ib(?^Pk.P.9a!PU'l<D`2$dr-!Fo-9i(aFǎ>Q*CN,C;:hS/l+ i')v]&p`@E ֚1 ҐS\q A0Y5C:Cv_m=Cu8G}EJ˫tTIlCz DHi(dXwB"Ҁ<<[mH s'sH ZP&B1J3 3sS>d]E 8k,7]ԑ^T7hb>B, ^ e l#^4<4`1BQJ]t/}^A<.C4lx~ _X/s `)- pժ_1h9pvH ld.p ެfdo3wtD 'R.ĦV6kD 9 x(@ZM(gL{"an 5$5܀i7k t,qP`' [`đvLoFnex2D9 n`̀DEzR$Д@;ޡhI,|2 ] ,n! Fx(VIU6,9-X3h*6JXf`*4R ]8Yj0&1GR '|aAqCEAy^DeD%JEF4hB7qh{C#a2L (ÈGvkFA@C Q? Mxaؿ`wo|cPX>! FT3akPc'Nf $N Pxң! xrmp7Sy Tz~NJw8tK=ֶ* vT n$hv]MBA~_ivy, p\<͞fӃ`<x} Nӡj FV2v )5=Qx7 lw<@t4/9^3Z`߯ŏt'>le W}`~x W=qTjlOp~C|z}uovdHy[ vtxz MqStyp d Fwl`C XtM}Wr(Hk{ }H码!Ё׃JxgCkIX77lfR؃{zt[8 fzl|vUnwt#k ͐iv({ܸ nǃD{8r{lf/腍X(~v!wN}P  hxtJV }vJodpf8tGQ @f ֘$tШ PP؃z!q ׎{!֨ vGWQ   kv $@yx gi$tFwtv{!,RR H)\Ȑ_!HŊ 3:\DZc|/yQc|9-mԭ#I}&LͥO݂I!4/7j̘AKwvTgcnji5v,`qY7j1Lc+Xjmq/ B S3\tnzb$fg 0R9 paDJc3#FHoe/x-gqEuС.̍g%qOc}wĎ}ޏ/)SF / _>⺽1/He[FnFG%uI&vx 'X|E -‘UBn!h'oh!;E1>ALIAX#!C-Ս(B'> Ai1>=wԠkK\BpFp6!@:+ZӰr @ <;Z74{ snH x\]/0~"4ڻ*dQlo{LW0ksة ɫ|cc I|ۀ9$\bsU>nxBRsP35jlx'Ae* fE>F}!l &OF]\*w 4Aaً-N{Z`ǡҔ/軴Ӱ8FwNu-fz" OX0WvF8bYt=rsX 8nɦr`\.'hv:KG!@́(3exFvgx|$+&v|Ȉ+^ъWN7p|XBm\$BW n2H U(9QrYt{9>b)RIO{+NO3 Qȩ#NМ%< Q b0Ǯ64,H&x.nOp=?T4~)AidWǺ@Bo=yC՛P+ {7soh@ gB< /(Lx·2s $}(DXz\ G y' ~WQxvj{̰lFe5Ȑ{y ( M|SG|H xpN~Qc!mw(IMK}}xP v(kp 1}~wNB}y`炤Mt~`PpuUo 7~ #G)7hQ 9h1p؀*haxFwt H:m8HM{@Hܧ×zp Wr# 0}H΀{o0@ȅsh pt>OEm!n{Pܗ׋eWv " pW0}7{Jwwzp ׈ ?s(V s{owzN@z|Px>sUpoVq$zZOsgPrPthxLx`Z|{ags iJ Q7x]P D v3 `7I e}uxDi @`#r"v ЊN!,RR H[0Ç#ƍ5nTio Ï%ږ0RLY ȗǏMhy1EJ+S83ߺH\z0ݣ2\rjk&z4ӥeA@WطPVuݺm˶m[7_Eԥo 28u\f[xݼzԷ 1%\k\5:Ɋ_m VѤ; [b {I>fuƌuGy9BRHJŲ˶5I //*ɠ - cw]v5qG`gM 5Z #J((vyb,~ŋaUBJ+ptU(t"'D~"0E>Tf|ŔYXXP`B G)f1ď/DBRRy %P+@>Z'LbY$%t_oXSF魴m{"_ 'hHӦPǨd:]Zz(nI&vjG&tzDX3#!ưbtaEZ0Iuz문BC+Z܀Ŕ7p^f5ހ:<~iAn;&CK$>Ztlu lP7سRs[LoI)d /Hpq [5Ьl[ q웭s=+B,+`nX7HQuuÈɉ϶kvq̑'ls> .$f7.SEyu$ɵq6ksb̷s /B#{'bH_|m1\t#戴Ηaw iW嘋AԄ.z$NF;^T/# uDr9WN袓 `Nl,KL' [CҠ7/hV:a00D 10D x5 cbC~w!aDHжo ,AHD03"HHbQfBH" S#ahK<_ȂX"n(-Xbp!YJ\"#a8Z? ^x|q7E<b ΙDAaL 5B ,ZBt](RaC&@ B #@~ܣ雥%+!jVE-] ds8e bN>H~'a 4<햋zb}Ԭ$i Y,(F#<:N'gI\BW].Pz qpcJ҅C(q jLcL9kt3Js'=i Ϲ1iEy t| :',@ x1z#d"xX zB S a1@04u5::R |)5VtBj? ׃8`wXqTҐeq {s8H a-ݬj_z sxsHlq>Ah'<Ԯ5M? @;n:l d˝s[j F7uFH>qM=O ޅlM0ou/B$MU}l1{S& v{M0:8 @61<ґ榃 .a$nPǓq(r'\dc!S=!'g+h)r0} Á>9IhE(?27:nƏ?y {ALiI'9JIgISZ}A?(@xe Ozq LISPu-΍$ֳ: mk- 0ð= >7lwpGf+  >HPiTW $*!v8!uӟ~A { T8 7Ap&&f-? xGPi`S%< |)To@F3t fxőqeAB&,xAR< Q1QPE,b#>o7.^dD$xlcY՝=]?*PqTx ~HNwuW@HAyغ @@|◁f =HFByk;< NaBG;ٞlهd~ Auyg{Q}~7 ǧzv'n|By׀}W |p~Ɓt' @GMPw)(~~] Bo48K9xw!NK}F8 |I~L8kHP@m#Hxhw&x'W@hg6kxmH}$qxM0[h*XW czeq7 IygvuA|P~ x`K~hvfKpuQz۷|h zGSQp GOyXwۧ~wxsfqPXɨxw{7NjW|e}ȊQ|Ȏ}7x ͰoY 0 1x)9x@vk v `] P 8V 8' 0Y FY  48is1͐zz ΰsoG`!k`s`s0L!,RR HK#Bh̐1C /n!ȱG]#4]Rvr /_B͛%kfTl Q-S%KO\rQ_¸_ӧh#gVH*E+`>gӦMwHrnъW ߤG2XM~׀M- ܹ`dY̥AF٬eQe2dٽ|F{]6&dĈen[q]6"XM#G?jhǤhQICE|0@f>h~Hȅ Kf _ω':h=iF[^H}q  b)XQ]ΐDOeNc4b$1&B4ƍXf`? r EdM" /Xb -UEitJwWmُ$ezGi6צTbHfP)]7ȥ@|·B ΦEQ=D/Ȣ2~hh8z8C !x ^BE66 yS<ׄ˨!&h,Yg@24\Cd7v+|O:\*sV)n׵ؗ0:zo6xJP:: 0K-  3j٨aӄ,W 7kHtbc4 z{<Q:"/$ら$ ɺ>4g^TW#P!{1tu1;=-4$#4<m$@VDv3_v7U=4_"ɖ`"K$&E" 05m?Yzs6g[9(v&#_-c&:9NƘnA3^pCf-X;N]o6:/|.SMY5聋J'I(LASC4^g@+c;Ot H1>!I!/z jأ>D N;F6{x tG B<:RCڡAD\'ȉMlH1 Ǐ "iq+d]3a:رvD&( ef9Ј8gupLt&9Llo&IH4O1QNd$%3 M;itcz ?AGUzl1e@:;G:l/𬃔/HMMC1&둎n (bu5A#'D89cqh@@PxakId@ =¡ %F:t8|% (% }HD&ܰњ41p@P q:7NᩜikXX* bA~nOC0!uFHԧA"JWn9z" f_>UfB]`("X ϸ6Y@]?X@!XZvr⺄֪!hD!#֬A`]9WUAp۬Fc| Xw;08`ls H4Cֻ^wA o}[LOh9>v8=Xo0#aU+^z ZB Զo ECxb8 P V-x9P@! p4` AZІWcC(ŠAP\  4 hkۂ G-x01xf:^h ~x@ xC 6,LNG&0h  LW0&V>xH>0fYN^0qft5% {؃JwG47=`axyrZF $>v Q  `&H;&+bQ$QضU; QC A;e%KI@ ۢ7hA IXuЄGE,ьox;!s},upi7V68&tJ %, 8 SB寈E3oC/ysL8(@&U) U; Sx@xE֙f`;ƏyCDGv(<򗯻^rG})LqV"O8!l8gp$|x;柠y&, &BA7*Lp·|b`kL/@H3k&?A(E*L;o=}&?@6A ny=w}0z |wx_zV}81{l{u0z z~'wkD8 |w|釂짂 7ickP "w}7 ~ * vk/xB  (G}W~}Abxhgh jrox|7 vxx0v  (Wpo(ȩ̏(vqcd7V4ȉHu@ ~ B W͐ '؉vu|LjG ]eÈ Ѝ Έ GzNj Y  ᘋWw2׎% z57X 'Ȑ)x@+Hi8 ɑ, * 1p,[2ǒGȎ& &7 ? r6gs!,RR H/^*Q%Vk!ȱG䙻f$IdE2D%G|R%/ys/5`ՀaD4!3h\¥S`o՝]G5Cv.h2Qƌ4ntuA~mAd3Meˍ_1ŌJ Zp!1tɲ% 2  5I/~k]iQg2b@xFu 0}\L.ŋ^̺̙Ӹdk~|D.x,5֏r ^z7?PC 0=d%߅-UEx7 FΥg5/]2ᄒ\!`P ٓ⊐r!_(7P4w@w h`m) _hJFdpLް 1cvsH L.抒Rf"`)FXdSrve99͟F$ea&QjHƥ^Ϧz jH#7]8騤)Zz/# Mʂ҄j$Jz!,ro2cl<=i}B-.'U2!e$gA2z` vc={b.r~!/s.p 30s0|.K×\;y'i[ЀV ф|p)p.-( Ll'Z7α +t@o$4(_0 W8n!rV@`zs7lw>^Nc.R!-t%_4<$ ޲[MNty7]&\E{*M/KC\Frk C ggM7 eC.v0ќ-, woӹ_3N5_!ec~6t)MH{zM=s_7Hv~Ӌa{(AA bowfDvab8ﺑn{D_:>B~Dw8uB}zq"# ydulw%ܡmV@ `! PHbn JEH$7^$̡)htBBro AWG;zz<(BщJV2 B< e!;$ardAbe%?! *rRK(wiH]G>qBJ'Avr%`Df,? eP 9B@!@E0 c%7)cl9^ (7+L܁21y4wos x'8 zuPh&61Pc'1P'2a6e(&E ]#`mB8MM3! Q4(DAmJ9TDS~Y@ICC@׺Ɓ5-hA1I֨ d,MJ?sCPƮAz-&As^Ū(zCd'(Z~ h728(d=! m"Ym?6n(DyêGX8CWmwB`߂b{дne; } T G` &p&;P>L]~7xǗ=A}Bg{n|AsP| P }`7|}0 W '{ w{7wmow's : V|wx0 x'gat)H@d @5(7؁? }G8hKHdsVȠES`xǃW}[? ~w@dGtW 0p \'}Y({]}zX&)w@Wq(} s !AythFgth G?8y`XI(0y _ xx PxA{ HqA < hus ˰\xEܨ 0 ΀ xXAxX(4b9HKB y ^p'u0@D%m؏" zsf$&zK4 p$D1gU-a܂b̫+!J3"S!$ax 7M/b]H|]žƊZE$3Du]zA]M`q'zsװE> xjb6ԋ_|em^CT[ lՉb^ AP $(G<4/DBȑ2ޠ-U_mV2́{ 4 X^># HsrӍ`>{sЁڳӋ!B8˞hp+ׇ&t|ޫ,4 ^wNE U  UNGh?!x# @7ħ D ǁX;PDIѧe3Vp^v* DM?}dh ;8 0 A~7$0R"U0.oNH"Aa+ ||pQb4x ֿB0q5:9H3pPHdx1`H@*钅 &9f$ IXdF7 IN?ؤ*794B RG(|ÔL*wI~b|,E9K6β K.OIutcوf6 U0D6p$e t4)jjҗ0&= L(œd7IhnCG)0'8u&@ PC,ʁ-):ĈQF͙u4 NM`B,((4Sc0L X{jʄ%X H +RNbP&X B=1*־#\2R֨ayX>6%?UG3PV2u PeGjC V7PQ AAMlvk@X6!Ot'D1 Cmmo)\|v dD8F(.W1݆bQQֶ{u?hW@+an-orEvC @{>hQ&E'6gB>.JM|  "|_?8*Z qh&c;ԁtC&BܤfCaG3^`)LAeU!6Bt' c3b: LShG OdB^Pf~.A;+X-~ LgSh7ntBqh9!<, 3#yȸs*PSb4;VИc :!qp۰fՙXrfvQ531*EҐ5anvPU-]ZoۨHE_A5G0P#a&ufч3 mWw, Ό; &0!|8s;en6N8f #ui-pz,?8Aֵ ? ^<m׾ p2 U"wwWrqO&$G&vcُ6āA?7ίYl#Pz p&i<9! b#;C/z;1A'<˖Çyg`tt p~̀|WuB}7`ԧu7qGl6Ёr1# ͐ Ȑ P~Tw |x( {>P}g wH*Hz~/1z!x<קsntЁC EwU~M HjPfՖ7r* U ϗxawvWl j 0"8 RU' KM> 's}0XSWu0zXȉGs (@wTL?vqG #` zu`Gmq!ซXu ?`AniK0Hz0`@0 İxȊuk ogN8丐ǏczAPkd,zx%k0O, uA s `1B0F@G2*P>xi0T nu{pD!,RR HW/r9Wŋ3jОtB3wIjH^KN˗/9zd82$iNR ~VhQ~H;2NԤ%ЧO_Vg+BIgCSxU3W-ZFn׻ʜ ҦٳrZ˫,Zʵv%ޣzg.ei`keY1/Z"QKz~,{v/imt۸#u4FH%cj2Z؂5IQDo$<_KG_qUZn ~$UȝikeIZy BH#\]*QxI+YO=SmhabQA-u LPpÁ##>ɀfw?N}P07AI A?ĵO8 >A8tH~l ^3(ki (Æv|'R  HHpAw4c VA 'JQ$$0N 0A G=B:b@n^bp,(%a֏VaÄ$`L=> |h2@f 5(dfzֳ M$8q dSg.{y#0</\f>Ÿ@\,@F)JD6QHiJa!96 OӞ`FL/.p TiF)F!AA>1AbT/ܘJt?V|pJ窇>T*RW^Ck_Ӫg ínBR<j*ӽ %,RS  ^'?.֪7^ - Pg4|UG7An-mk[юvm3ucnv+X²@)n>~)N U Ċ:KrHy2^ Tyӫ^S@eǹ:8]WYZ&Ł7lTP&?{c8q{ð/9Rh8@1A׮#2bsx*ZAC! Q}-ABX*]h6#}aCa-caG3Om>uAݮѰ)mk"Y PriBш8Ml`CЄ쐉rsBّtq6Ԯvm(vFq Op7 t?:f~ŵ Tu: :@:ܲs #A|wx6s8MrIDBf88Max^9 mHCv5F_AO?Կn_жֹ 87 @NɧmX`qDw;-sn#X@?APy" q_DNI'rF;C;p~?l Cp!o~"ȹ31^矨~/޷WyB yky wby*wm`}W7}=x'Cyq~Wb Pxi0{ ط;~nrk ٰ 000x({5w>v8~Cm@n & ư -M㰆\wog8@{gFGa cx wцH3ޗ|F7a gwBX Giv} Aq{8tq pnCւo0R.޷v ( zFjmH9؈7Wyps@p HHݠa{lwFp ֨oюh}сx}wGG` ءVq؁Qp{wY C%1Wy ts@~'wY{UX{1 yGvi {78'Dw ! *'R ŀ gCB G ( ]1@v`hdIdx!,RR H)oŋ3[!D{ҙ3\ti\#Dž;7k83O/i&iӨ)vz?^ /f7j]:-k)HCxXi X/^6>AO $C];W.^ E!e!RhVfku1^n{v-䃨(_9JՏDk:ti^dN/_TH6mKbҬ za߇kɲd8Z]U?ݒp⦁Ys]Y EX/RI} 'K$HB -'U+KppehpY$ha" EH"<⢋XTAEyTRfK%'#,DR|LeU)s[Mj%,hI$g# $ 3 PPX>Y6d.i$g!!ƪfA#R3QPzA ae[Bۏ(wʢ!f겭j$:a VA?V"%H_(,͚1ȫU*T{@ cgAϑ`U#[-k!l4:<TE ǘbÍE( ^|DW*QVA1$.)Io c⧂`PG gT Gt/@x`O: @}jAQohM ot0+U??}8ڏF5mZ "0bk R0H2ڏ}SX$U,*^ h >n*R,xE,L{T~5:n󳦈(\BaPͦ3G3bя"Xn)~ʊV0job o$4o+T"p3ѹ|c] ^X@z׿3̿>05p/798"}p7ql5 a Y\THa p3!C3F7ԡ8(ξ¿ݒ66oV^G>^"w8b.n2!f/YxǸ5mq8ϐs3@QY7YY#-iJWitK4} c8ǣIo0@B cF7]uܺLǮ_ZK7ZnֈކlvX[x3}_թζOяaD(D1 ocٝ>0 \> 8|AśA Qߝx'mgC; pk@p:*mQx"D&4O@t}};D1<-G;"'tN`'x'UvvEPʝnBp4]q< ۡu?od=1:>q(ƘY~C88 m O=8./xh9oO?A@#mX^+f?6q@ Ha/>װ:v {uDyo A~B~qzqpvl jW} 7C~|s l3Tk}~~q!8hxu0v}f184~<{=h?Xug gvfQAp=8?x` \ȅv p&T!.uPxfpGC $Xlhj-X/wLJ=HGxW\( 8 q ruX~;駆u_\( ։ˡxG|LJ|vs8' ( GX~~Gx¸sx8Fgw}7?>0F~'xrpG xȌwy@A zHpx7v @ ƀ I8Fq7?yŧt ) FY!w,ywwrYw P A`Ȑgq& z~r0@Ih2YpJpzה@iGǠvE0i BДQr ` SQ qgis@wp@ !,RR H큲 @I8ŋ3fD CXҌI~SԘU <C "ɛ+sLO3C~$M:"|׬O(P "(j/үZUTCeCQ+׷[}ը>P<(3Y$\ Go٩~q;89t2K'0v^V! tc6^ [oi%?Dafjp띛|sZ=90 \zb?HA]%0K. 0נ#"F ]zMH]AgrV!0r9gucM:*+y0TMvW>*體 0䘑>ȼʖjM,1j!iihOꤱj%+jQ,!l!lplw$By󬤸..wS5L, -'HHjB)`bR /xbP>ǂSQD!.38šӨ,HB1Ŵ\K4; 1"SɂYQRGQIZ<ù"$l,=: 2 HKePTQEi6)a]uZshk}ʖ~$=^x 8)xK5;S:#n<Ղ }9~{|8:#^6RI?!$|"@K7lQz{ Ōb&l+R ]ł4|%?̦zH؂ f1d&SW+GBbd^h81bʜDF3ڱNC&.XBPOB<8Of$2qƂeЅBVȂL'jOBTXGd$utIo3 UH:5 [!ʋj;j1JVrAE85*p4Cu8Ձ] + ZV. Z jh#ڏ_|[A h0̀f wXma?IXcuEC%/ 4˅2tvͭnz5]Ael/`BnkZFӤA ZPD]/$]斷el?0@#3`nz5/z{{u2(?k_״D `0`b^Pp}K(u 0`DLLcupbǠW,zIسvp&;`CXGo rD{VX@Lf{eϠ`I;cV! [pl9߄pD ! c8Ж0 |EC`LdB{'Db#\/$ppkg;&8 vާb^#X2XBAE 4l߁&o8 PC;{}>90x.O`Dn:~{֍qlt}OmD~P@}9uD?yo#8Q& h<>~' (u{tP xzI!7f灓'G}#ȃtڧuB0PdHvCFp{!8vPt {m÷s D 跇@ЇIG?}O~x}nhrXq*XG$ G A}8dg8yWjg?8 muJ(KwHF0}jX}ׇ}wXuvHAЇ(Ftok{ {(e 0qژtsg{m{wȀYy^@p݈rr7wxv xz|@kir8wu @sG u0$q0  Vwш 29 q Cp$ك > TWuUWo5s) > T' D) gqԘI r^r U!,RR H%>PHHe‹3jԨ+T}$ N Ɨ0a*DVj(PrF$J$FJt;gqʓ82DX9'9I:O$^[˖_VؽJ(O>!XR=I1;*UϞ=|}*O1q1'zIaœ;{>[TĉQ3f1&V.Ƿ&UAO>1{ʔt?yź%5SO>XrxĞt _}%a_IQh=L,A'] -]?q7XXO:0c=fՎ3ͨJ*a#6qTavY*s9PF 97Ts롢)t VNUPkdeA$C^:Re:V7 ~ KX*=)tN?yҥ!2DeJ!2^S\ )dPd?E!Uk6qjLc\cN:lԎmp)ԺGeۡٝJ0xr^cͱ{9h4s[U-~eF`o֩~'G2JyMOC5dO? +R~8IA4*e K 5s?F&x ѬL 9utT32Oe{ YdH}J$D̴5^=G# L/-7/@ER\+|(+]FR;vJܔby/ʺl80+}7ՒBkэ 2=lC.0Pn53w{BzJ*7 938z~8+߼%ޓb}.ԏK.44u#831бBK3NHjAJHȠ,dA75l _8Ȍd|P Hd!b08.v{ _BM =&5( ZТ@Bs&,b,1$ Ԡ].XN1Vbv疁h1pkЎxc-( JT19 /zb31ȁvO#aR"#-Gw3 q80dGҔf" \X|%#=R-@|G_RT#n*]%ANr㸥4 +>#AO߄8KNJs F-"DRڤ# Qk($':Ѻ x"I3 _@E(g>Qq5"AC!8(0A(H>Jt}eԤy H bNJըD5BT]]EbHhMR^p>:~Pf(UAꅝ f $jCqHCSԵ5XXjBP! <=&cе D(*XᲗ:[L3RK\:@K&%,8۵iLu!-@Хn` 첅|' l k*wr7@pj 7@f@B ;oj vAA)܏` [ n - D n;N^`@T\#714 +AŽpNʂ-P$˸ k 6=je"oD5xr<9 pHM~`@r$a(X,3 il ]0Dc a1H Z>,ٮ1j1!k[8A 4TW f6H iHC(QΙ>v}ЀQ{1m4?;TY&m6 ml;2"aO0/y.#as1Q__ql>X1Ym"!rD(Qnp[ձ ƞ-`,V,BX w0"! q2 Qx01o>' 8Ch#\ ­má qȄ?AxQd/{6u`A8ވ:'wmh w7qWa76 L@s9@m4`z&@u;mωN8/Fk<~paLۀ8`_x ! _COzw"ї3 }YkoBA~@r 7|@PuC B7vPv`}zh+}v7P# GApm0>`mUG8'Wtxs^@'*` @o+AP6~9|v@t| xqWW݀/xmNA }7D|ks|X Űzـv=auaUW0j`.(vo8CrZ|z8}}xI$ sٖwoXWX >D0xy'w\@eFp٦xXuHuLJpripYuX>؅|艵O qqwnu|((c pr x|`z@xݘu 8r0 9z@x7ljsYW> ` 4 ")xxph& } zxQ_05uu`v X>ZB 0 auZvN)vzǘ\SU6i v1vc ۰ @qWq shQ!,RR Hߍ,*TJ 'P A!ȱǎ5j>|K(QZ*IʞosSCO˗.Iȁ!HIu'qΚXJ=E<2~4k6DU]T"zwرcI vZMIĒx`WP o'N $5+Uɣ/̙iS%wsְ*W)ɓϞ˰iQ= YAS CkIpyb~m]UOHPac^n0A!ހ ĎOv! v7_E'yLg^vOv8QIfM E6O? db P%:ĩw5ƕN#AJ*>8SwMLDq`5$^3pbeYePl&[x쳏="O;XJ+Yȝy)a)Yޠ!訊C; 3+TzRgMpꄅ1f$*=8⬺꤮BT':R0jY[!D1Jl82l2JAkDݮgc!D5o=;Cȸ*^x~ W_)6Vh,9lG\.2fYWms̑B ^+|D/-7((<5:l;SI/BY^AJ,$[  $ڵ׀߃;d|2-Jl+43΍5 JEEׄ.L]cv'**|CN5LԄn9B4v}v2C 2δ#׀~c9m̸Y!Jc}~M: =)+ی3 zճ]#~  k"/Xֲa0VG1-H1Z:%a1 04@ur8mkK\ע9 Ѓs bf0C]10gX6 6)C ].t %J#ыyt.B 0g 7 aj׏< FF.Q. oז!D$|! @&!ܡ XB&G01*ݏ8@BDIܠ3  jp#7 Mp-1u A~ !! d>^Hܢ~rcL`l a g3(3x BTLFOp9db邟 Ndu>{YT X 9n! DC8a|ą XZB&g vx0!`;q'D o$5 :^#&6a(DAX`¿8h"F6e ~`qGqyc?z ۳n3 M"̆:|X=4Jc80$z~!?lj>CBہ1 uX/`s-<628!Byw! a J_`L|"(FԳэ0?u20эr0핗{E荑o OlAh@搆]+_̷ŷ;'^ / k}6Wy7|qyuP W '@+P[Wx`nkv_ 8GPC`*8Gw~0 w+`4n#i@Wi`~ huy0|5P:vf`q: CxE@kkt7|DŽt O~ϷU:z4G w0~Xrv+X|t@І+@9Hx W~V\sqpm~0(70ݰ ~(Hwr gww8}^ hkv~lQH7 Xr L 4X^@XPGp xryp|z(ZsSG0y~oSx4r  y' qPVq OW樈aYu-ap  #i (~8 },G#<RwPwn؏w;|TYIOX강ǰ ݰ Rȋ)cIr lYuS!,RR HnܷΚ96[;~3jȑc;v5CY3f^EU*T1͛73$URU*AFZzUWj✊f'ci%TL!Et>hBշ9Ċ5ʮ^QϞ=|4[p5inQhl H8S'If̒=~uTdTFHOQlȂd6P8o<?sgiqQbseڹ%Tq℣O1W{!]Qзv aQ@h=s 2 2{~8(n]88 sc%`*J=t0LP heQ3drɞ+FXKĔY)'mY%LR)h9K,A!qʙx%?wX̬Ǟ GF&jD?$(!0ڣ@v9$z %۠y%y .ꖭwRjjJTrnh菭Jj`Gfj LZrF} i"[ϕ򠺇^+Щ{/CrdHUۡqVqJ\/*yu_xPA( [j0GG&c2ZR~`k3 X,p_70@<$ErA)}Sh֙<{O ɒ3߀N>*O9ߘe58qN+y9Vm%$G'ŶMACct{';SToӇS# (LcnXԩ*$t EAa\6};ǣ9 > x @D '0@p;`? ((! K*BHCl  þ Q!P!7`0dK LG:AE*# _(D%6щ tTUĢ! vx%)8 91Gюx!!\l )!"2wTc0mD %zנ4VI j\EdfM@9U<e9˃x rُ}!  H@NA3MyhsHc3 a o3̄G9) `C|9A4>~(@| !L*_E/W#qh'~uKe2Hw _ԗԸ"'ְɕ2 0u)O ^ԗW4F;xԥG5xV?u%<Ա4A,*& D Bj*QFU%.q ẐF+uaK5;as  qb-aJHⵒ- hkXn@! mLu-hVµ.V^LV nyGq9! 9qrVe+0#rmw]a mh4#?B}o|}A_l#sC2 QtCנłbCD+R`D#pb7PLJ!?B,n[Ÿ@1ajتB5AvH'Bq ӂɋ A('ņrsi YG( / d.f;d1^ f06 0vv#KZ1>Qh/' f^H!GA Bd:ӛCBؙŕ ?amCF4cFaD(Qcl#>5.p [Baazk[߂~h:X(}ltc/Ȱ8[Ȃĭvs _0-Z@(< Nd;nt@k|0F6K]A `|5ijX 4Zº>1H#gB+rn<Xͷd<@fp,H Gz`'?"ս=2WXg92N|19n~xiKGawCg rs^WΏ/i7H ܞ+܀ `;!: fodUNgžHy "@}a}t? M'.>|?` ~}UQ[7 ' i~x7sW+~?~1PC[kfЁp  ~hi x~.(13@{F  `Px0 )m|P-}.X2P}7؁}T0X DXw52Ђ,7qQk hpYh xX | (vְ-}h8}q{`sV {|xh zGzi'/s2`fu Xv}|4sG!]@g Dp 0~~؉tF Vȋݰ 80x4ġ0|h L|Hз fcO5 ]Ϟ{b4;Pْj:.Ԩ\l1Gt}[9-Lqz!7J ‡Q[&22ʀ2 汇P@@>E}v+Ɵũ2ʌGcO8eBI~TY_+<)ن5E FZnd^Y>dMhIFx)pK4QA.g?9 4pL`D;q!*sV&.1i$Pk{|S1x>Ƶ̙IyDDu&A@k4eGpW*ȑҪƪ%!`0JG8N8g l̹ bKĵ m?F| nJ,jrk'_@, kF@ k:ޡQG F+ā@0= UC)J)Gu^5s w $i@_VC7hE ǶMD-5pB|qƖ>1!;ΤR {,Dy`7˝Am=qL03@^+`/Ar A @ZO0M5 ~P. O,z_>g19A8 AF?loyZ@ۆ0o;@~|gX"A,h$Pf )7 psa?Fq+_v'|@RxPCЊ_'p ȆYa~bBӧkiALH ` ݷ H;t ԕ !&~" i'`( wHhR2=AM1}6{9nzC2zQ|P5IMZ/IOmC8 vp-yDs=O쳟h;C 9GvMoA cH9Rs#'Eыa@v 1J͔-M?i :DT0J5 s(>OZz:q9VMkZ9 uHWjڃØ^Ӡ֨RG`C`}vHlb犎utuBȬD8ā$WXjL㴨5ԀnslpV"hvFH[7hHfncd`y>3t7B?.x eB~9$w <+g8?jq0@j.pa [N/!}΋~bD:a~]Nӟu 3| R3zf/0 xYFq cvNz7< d C@jPcoDHbիq_t#җ~?X}7P{`yG  0P|'|y+ }/ x}qgYxg ؀n6g t w 48 }w{aP~  ~4@|.1u,+`g}zYPYxcf H ׄu,w+79Au$8v&q+xhhXz7X(7v qq 8Nh'ȁYv7 mI(f`ӗtheG P 8, phX1s4Gs V `kّxW hzq[`Ѝ x ׀?d(u~h1׍fH rRh0u5`x  P 0Nx-07G Orqs^@XyTKԈ4^'F jQK0zx^^p  5\94x^'` րiA 70z` pv9pu503PYg !,RR H)\PÇJHE{DZqؽH$Ɍ7vRKq ǽgMUv8g߂i(LCJ,} 3fͲ: ϨnAK9 շYek4b`6+߹j-\deW.E! ػA(l_5lYWA'nα|AP^={n6ЯbF@QB>`]~m܈u_"yV glε*U)mSR LN8G˙ hyeALZq5p}/}+߅3}TXiw.cX2rZ,uLA(p §W$dXsαR+B ((aIajQ43:(d䙩4ӘE̡@, PU#e@d9a](DR ~IHLIđp:PН QO|z Ge*h)E) 4|tr}~ߑj}*2EFB=rZg xǶyG˚#DZi<4px*[i᭼QD{G ,: 0@oY4]8V*V jFǿzm ;1qA4#Y ><}gtql2|rAԁC찤1xg MԎ; [R&k6"= {uSk POuη%N3W&rO,;EH LB1Gr1=qؤO#oK(8O< 'q!w04@? 5]xd BMN{OD!û;? C?Blb8 c 1d+ @%,{Pa ch"(tTo)GEuR!`P HPt x\! QCH !, t@bq1 $@4p $]P>Ox(ڐ!Q擛!E9>v  ~Ì k"#C0_P:|@xx@^  u Ì"W"(ih2K  Ńx^$Aэj"*H8Pư@Fa=-N Zcd&3 NtCYvfrX>ES]A';l~ ! Q|3v5AuȄ&N@! &@@c44J6!6:*%4}gI*+Մ(fJS%)/C~T3 QK'/ O4 F(N@uZZ;lVin58Yɺ w':Ta\|Q Llä{d%;NV؆\Q2֋Q(1DQV˚ֲ(Ffʏ$xѮ'3D;6ȭfiU +Bu m%[4xn$pFqa &wD(Dfl.?HT($8Fy;B%(ҏndþVm6֑%,8!H2\v75Ƃэ4 FsqqbDX% TBr@@1ػ(G:e.#B=6>:w9s_6YUr:c3KhDxEI51NS@tHn[n#je73x7 0tHרy\4@mgE3!Mv6}/5m`B,fo[ۻӱhL'd .qg 3`BxiAtKXB0yr^-{a^6x 2BD""A [Pz.~mk9RnK< A fx"Gپko#@2ww Z` Fo'7$Z]'}vw@]o  oX|,}%!N_|>& %>/gazKHgoBxl7~7Ggpx0 Jz{wA y~Xp7|```zG fg Igrvpp x5g_} )Hr,t|~&'4zw'#胧fW oie JmPx[0Uhzc[ ^x աp{{,PhzUSHn f [ ^F(E&~(zS`z@tG1XIyy[}wSzXxH mj@Sl/ 5s[fPv qp `ruw\wY_gc v 0w p q-@3uu[vx v ` yr@[  (|H a6tXa P` ɐ^0>G_g -%@ s, P )) ` V2q D珷 xu!,RR H [0Ç#dS qD€jH 4Z`B<(Q}|D4b݀C!XGd,@H&8 P0#d$(9(oBz@_@B:ᔧ"GJ2q'pR @ TA M@0cLj+Hfҡud&B[#}P!as}X1!Hv✝؄gau:9o&!Q~ x<) t4$[BO\ T H`J'1 W8H QdDD0 @LD,F1TƸJ (p h7Ӫ">-i1 H}, UUvcƨUHxV*BU wE`lC-0kcq A?4U+^I=Lկ[qX⡢ce$d xPG6VWͪ%J0V. ղ6=1Vۍ6ykAx{Y :-p}Z4`~նmEoqRpMMHv@^զ]:PAl?FUy{ꗿD' _C?woC詏lcVdPY bwķ\r9w xb8ꨮHXc!dH|Le ?aiG#nP4ǎc@i) h$he+4"7 >a>Uq8#۸4ȳ `^8 ?MNЉo G2X)=K_3W8N !up:F4t (~X&9asu(  6KqJˀA?hJs8GhP(g|16"/ ]@-Afנ4Ak\>G=j^B! n/ R.p x.q u_ר4i9&^}|"q[ 1`BD/j _H]9!~Z@G:eW3@o,x)#dA ZXRE.~! O:#B[y?n,p c!E΋k9}H'17 bD,sߜw;"ky؊O/nW !jG^/zstӤxH(a|{00$0/J>5 KD'4x7y' y}&zgo|xw'`W wz&~5zzx'_"' n\|7P`{79{& ~S^g3PXЁ6 { Pn—63m|QUYp~d@}:(kyV_EP7z\Y`@}hh =u}pxv&]'ag}' y{mlP\J&grme`H` xu}[gPp f]p[]t{f wugwȌp wI f]@t'wX x mCԐh`e@tȏW Ip    IP uw,w @!My  `{@ *` W 0?8%@ ` .}`uR 3piM pb) gps!,RR Hm %dLr ŋ3jOT# $8@Am\ɲN q &|ȯO~-nTN H'L0$N2 TՂљsi H dZȜǨNzu5iE%''[<u=`O}"K~oFc N#d\w,#N#Gz` ك;;Dmm?~9q1nݍ.n8vU5l!>`x3.{R6 Çp>qL6{7N;uc(r4ȆŁyd8\0LjjabQf:eH`84cLg>x#Ʊ& ~=TS$M;̔TNٌ3dQ>AA$C0VS?5W1Lt2cc?h1xE췀yw@6@ޜuVyc3t(hImtqD64>nx {։L2.s7[i&ii 1NЃ=Y8j{ԙ+D+Ă bM?Z߮!įd.fs7 RJ?׎Qpt-m:C  I n6Ke2ko?6#B+ ' 0g-16>+N SZB\*J(![kX\I:T; 7J*R-20AdsL(|҉lQѝqD qlkQiUSRJ)^x*sL1i4r w[n|F)2~ *rAcLpvo$w? i,Nxꦬz*JPy&u.t嗏(ưSm(ǧhL:/v'Ansdދ3+_Jq:Rk@$ag=\ibyG셊ԑBC?BW3ㅡ 4!WofPDŴ16(/| 7;[EEv(p""xD$Pp^7b C2_B!|pq ͈N!"' ǵq1& qzD0'DE3mdm,(O cw2Rq2x,>h>O#/B~H%A A,@<ᖃ3E;xI,1֡́4PvC7nz3 kk h$XmA 'WRwDmA;(PD*~۹Uz3$XI b* h0A `."HBo>p dV PQHZ840D9[ hw (T‹3<EȎظ1 DI%CAJy#Vzr` pG(y:6sA^ϓE `2臒z@-~A pI9;#:1*{ @`p.Wl)X$hbAjgN*M̼A`DR.p Ř5{  ~@6 6`C>tNBp3?:6H3l30q r0WntAhi51q ! ^ԂHz41iP,75II4u1, dӂ܁CSGk;@YM=A?~,pAb "Z{.~QiX#S["#x?,n(~nD>=.r{ם77=@GHjv0xD-! uqf׬JYd{/T? 7!/7 'ug PKPi,~fx}'{' ' }~vuV]P5x@^'``gtrwnW `7P4p+q@t_@3 8u?0]0mU`P`}7 ( }y[pTacegtjy1(wXwxq h@ex]`ڗ{P XȈ!r=hn h~؇` to؇Th p X,G~]^;T @(tyf0}}9t,w\ H`e0v}py' (؋ָCP HB8' }G Ȏ*GX< v ovr븃*׃?p  PoOrS' ip jP`'w+v @ F9Xp ` CP tB`Fy Е/Ji`P Vi ` Ж[Yp@al@@Е`!,RR HFLTPЩC''cڶCȱǏe;*ӝLY!Ar$(8s1a)Mse!@\DŽ BlIgn$G9GŠ 4i ]`ͪp j,rCT쐲eѮAi9z)"?#H0a%֙o0Q8Ԕ)r8E ć3h~AbE%J9mHmL]fkZq8mڸs9{8 7]ǞpdO>d'!sP{jv G_?0&'rbDž_k<cpuMňɑIHM7D0e0Y%\tL1|ɟeʈfF&q6>~6Ė\g6#柘N$chglAÕt~,Z: r8BLV` Ǐ>wZXZ'j"Qrf'⁥5;v)viJnsC8W%5Z GK|,JQlB`Ĉkqoʢ (EJ"׆db!`ٮ@+*adrg-#a;$N+{s&t"0}@4`DH⌳):Dz9p'rL7Stt;ی=;*j[kGt@j-h/c2[~yaWL6/{C ꫯNϽNL{$>38p-O5s:5;=}3̴~3׫=@(Ov?cs8f8~(^?Jm;̀8!-Of 6}k /، v0H 4:AC_C U.`3Bccq 2^ъ*Vb"*] V@Fܠ `~,NSfAh>d$# 0|`G89:ul3ڨh 6E,H;HGX$;rd򕘼<H~|t*NJ,~#{$,[K܀e)[ TE)P^2?ĐR0 fc&bS|*vL+P dc fPLx A u:M(, fx5ؘ'n‡bFW b?A.p%1Y`I78% Ma(E)b!Ht7@f@e+c9 XB@Hˈ Hp@63<{Axx F=j,  G>; p(HHЄ3; CJ lcTG !Z͋^\cUA >p[#r0T 0ClgO8cX"A Z6Nnw  =hA u'ݣT '☠E-k#mo\ҾWp x!Ѕec V /,0jSHG=-.qVI / `p/xiL稇=; wԭNx9 1-o9_{/nE/~ts$}| JNz!Y.q񎇼zeOȅ~w~hBok]IPwyLB;k!ֈCₛЁsKM~Te'Db(NU]"'t/&BeG mjΣ$fCdz領QiZ9&I[u>N`e!cP:O-*'[l i&h$'uI:AJe?@DwZ a@~cs&lxF*t=}2161V<<t5:Q:qh @ @7sFWo͵C>wH4m#Ukq'3?$F^rϐGM5yRC|;##70 Mtc[`d 1 ߰ ݪ_\}R52x ǡ.Q#"cr!яc _XH'3G&"M65X$AޡA>Fpq"^(E)<Ô\ pc\A: [BTGw #j]b+U#`5ra 7&5Y ݂ Z:H,co%*kfn3X>SBK՚"Wk?Av -P6X7X!@zŞu@da3Bp0a=ƨUEAH*яo _+ ] L\c(q?$8]njSC ȰPY\诈`G<" G !>!PЇ'3FE,юʂ/|C G@Q3=<yle@̸H5f1Y`FGF=3:y\ b@BZ8Bf8Ԭh34Ѳ40-P(ϛB+V|]>x!E N D8/~ s#*C]; Kh1=,q}E r ZDMaWy `P"Ab~$P%,aݘÁqq޸ E$FĒ跿[B4q tأ B~yxv%h@@Fi% {x0ysj7W'pp@p@ H g w x}}p{WW vA ~ xp  }_}bg$(X~@W!~v} `5 ku 'WGxyȂFn| Vp rP [u0{Gb !sWK8$P| p 0s!(c~>GtȆo6hWp"8 A} xpHnQ\ s |}vp{~0 wp g1 }HH{'ؘB`H H`w{F8{$P00h (~pk m7G9 $tZ1 )wvQQ4I"9vc8!`z@9Fx"$3I@b9EiW8Y^Pgp Kqlٖ~)p|Is !,RR HmciMB3jܘ1ߺne3&J(aDyZ)ʘcH|(sRϟ2iZLH=vѦSn˶gOXE:th&9q;'OǞqjŊSPxKf]q[qҭLqݛ4t0G>EXTNF*M7X9;i=oNhqMI9]=Bٳ 9F1=:q\;56nM̛˶,{A9@~B}gkzG%~6ZIuG!zD Ă `|}n  w'ta >H&d~ܽa\ 1Ĉ 1AD0=01Ř~3^]1֡tZBp9_8@@?<`jBiawޅ agxIDHqJ@8ІZjope^&sJ Â,8pSBiށ bz (B$P:& eS# ]N0d,+SE`RQmb!'ĸF@}r 040 7<ߢRޫp9q' j?Zql ܰ +`MhV\c]pWi8\A'F+P,Qls\$q%eFPd:ld$K3/Q,%D"u3ь;ueAHf"{rS3 .7}R (r^CC[ԅ /D:$0w^9J@z0p Na#&Af2AKC$j":n2 A,;| scvmOPޏ˅7|(Z>=cp1Af @&`ihB(@"Q~|a`v dHW/ȹR@``QO&:RBЇ/#4aüC@HE!R(b7ņYG&4fz+ ]AZP:Ј`~>BBhǃ"8=Tď,مޏ[ gp{0Rkd8!Rc`i!H.lAa` 4.K9v#pKba5!j9! #f*Hb\F ƅ.Ђ|tG4iqP36]y@A npaz|4Mrr ,A.4ьf0h3iw`CAJ҅n 3QJb.9 k ,p f00q8H.  ]0hЄ+3aѤ&ԇ/ԲAVh1 >j "]RhYV1 M,!⚎ZV4hd'ۊW }5jA֧&5#k|xj% uH,"B=̠Ec>VXK1 "5gu/4]D-xqF"HxYqʾG5;E԰abE4v40K1QXmk3 vha׾؍+-j1&:C8\Q"ͨF!zD-kB,zQJPH*BA )TqW0y8ӸƏ+A\xz0 TBЃC "2֜kY$  MoZyky4a)>aCPh?ȩ@s3i7"s%AZx:55q{#x =SMhjZ+26;&$:}n`0G:Ϳ#}6}yjU bȧ]g[[}\HCo7@,@@t' yH^Q yz]kTE/;cp@?> Fw߃> d,jQYB564@= cGb?a] j `&,a uP?\Έ9 =>þ9/qۣ@ _ArPE3h~yyuG<<*@B ,RS<܏'y{@}7G$|G|{~fF`0iF}xp{$h}|NyP~ 6p xW:!l'hwLzb w`PH{'v$(WwN{whadׂPRvbV{$ht`Xo X j0|ח}WA|&V kh{`gvާ1_X~ g8'vs}{vE ``BUh{؈GCGtPl| &!h{}Ѓ~!@tDֈ P`P'Q爎Ȏl|s[;G!Ȑ H&)y.Ip G$L2>.)1)r} #I ajzBi4PO)!J tP0 !,RR H)/ߺխ‹3j̸pCmFr[m\reǎ CMc8eKiϖ/FbHq,ϧI1cH%*WQǺJVjǏ͊tOp?yj,S.g6șW{).ܯWc-5hĘAF^AS+XTφ?q)&5HװaϸaP?놛)޽9y*jfh^$~ҭ۷5 V~bfxb<4 ,5gꛬ_N41cݎ?2,B @T`Plju\7_&sF1G&W45'[ ˭p45 udBF0Vs̱I~P⚇< zuбqc2xq?#F03 +T_$g*iGK2I!4q't^\ [ 5xQmA0\_kgΑ(&{00  f KZ'v0>2A\d&p34dl@pCfT1o}K2+OЃ>@AE!;O|sj FP 壎:\Օ'ͱ$(<Y$5NrT>DŽ"Gӽ,(`A <i85el|74<밽p>dmiHv P0N&؅-u@/uC ,9  7 ' үS@`PH|shT @ PH0{"*TU؏.; F 4 #HD!sD"` /NWtCQ  HDA7 Cq Hҍ4aDD"9~o|"IH~pZBЅ/B0wcl1a H<☉C+[ /| 3\ } `#hM6P^<"(18C8" @O"1$E-,45d* ش*5z ZO ^ B8 8 װSCh(-tAV'k@c,$E5/4IT~WQW`bd';N8[cGS@ +0xT˚ֲ/ZX~|6Bn-Z^2]H'`M" IGmYt%Q Y䂡FG}tXc%-*1Jo.A T!x~ ̅Wx\%e|+n~KwЯ>bsP ni] ?&_wTR采 ^x%65avw dø#mqc&ƎⲸ#C2_J4\?9:69a?Cp&dS^ChFmiXc_qH3,9IǝLi4G[g4u38H=YJ_ȴO֡^OM#FLK9֚5T؁fLae tncZ^>XH+-fه}zϻ{A6?bч(Ap8as;6uev8cmf@xC@<!`3̝ TH*XHClKG0s$BW0 FarT$(E*Xn:=ҁ9HB:s I]p NR0ꭰ:3=dbdN9}C!и̮q? PM1.ۣNMo(`e}?B'8 zC?`}|; #ֺ>FXX#db ؏~ EGQ |/O$` P=>bvW|z~0s~s'=p}NMx{|rTwk0 07`LQ|  jd꓀fx>xMM@ȁ|y>hpͰ0RG(KKw{u`p>abqhK6}}0 [ xR|A!}N؆|Lw '  O=Ghjۗ}tN p`@1Nw ͆ CxOqx/x!Xoq' 쀊DZ=ׇG$`{opw % A YH؊A{x{(YXnHeH}؍G֐`p8YzedOv P))|s)}t'l5) =s!}H$@jxv^K PQv g KwX{W!,RR H[Ȱ„#J8a|2jǏǏ ZQFu꺩˗/Kܨ1cF]|gRcmقfMˣݘӦ3\ss:B#Ґj4mVUc+k^ea)G${m aqr $/4:kf;vs\ٺ1>h%?ΝEɖmX73册ftڢaӧd 8ݙ.]HtF+Xg,a;9j1uE%1yAl0x@} dԖyކuI&p\mtM$t7B?/pׄeZgniG'crGTrh[l" ɐYCޤZrIG~Gttb6c#f$Ef}_0t\PnIz)kkʑ 1ď/,o:k ה$+b<kuA !ŹNyXaXk'vlls ,B lXfY0@-ߖjq<' -//X;@/S7#EVeyIC ADFәs>X $!2YuX,5/APuDW(pk!r]vA@f .,PE3- 7BQ>ȜwNwFt 0N꫷~CW`]\6Xs.<'  /4,`tͪv Ս(d2F瀷9Oim 9x Y/cT?.Y#/ÿ9i L(A4 `-D4_'M7BQrnC ':@@h0 /xq#C`Cq݄%)B0 $-E-03!zcj0Bqc \zԣ$GC b@$(!BN;B ك%@r 2aI`1!8E3@D=фX@ 0R֗IZ&'OxS C 4 ! @e`3gxq  {ÝDGB?a Fq t@E-&xxFA%&HA 5gRܨ~4"H9ҢjV+Q %@S =TW\"Xժ%h Cau2 bP:TE-pXNaHԈ0a zFdұYi⳰4N9DTkPcl imq[V:-p+ `n;;ku?8 wy{bSm{K swX}W89|^ÿ樇L7ʏ p_}a s!p@1@j^0K C%^X!ba&`~@c_1N=rOch0ErI}<Ĕ;`Aaz(X[ǒSdV | sN!9ӹΣ;wpbQ35Ϲr:p<>@A IXF}cHuOv! B8nhKumhg8M((P=F"5m> !5 l"$3=eٍևC-mj/ ζA0Dc3~07nvxvh !Bqh2ex ͆VE> {  @"7qdz+^v]3'O.l P RP*PqC8ȗ=w0]ىʧN р@u=h n SBh:2re+}oHmnO !} 0ڏv23"!~wd^wB=Kav=WxH BCy{/~n2W Dw(~0(F=GuwK{yx|~zxFpyGG{ ؀8`xo'趁h1} Q@} xjJg!򇃼~@}v) lցϗwNMPQSXxUxvB '}pyK{f}`z h.07}b8 {؇Ct,|wyׇ}y}(Pp s ؅Oا}GvȐsYfw{yu0vc'(5¤$pmxuPp{۸z}'z8vs 0Z {QHsx`s = i |АQu|؏tPc R|z:[_u0 (Љ6ik c}6GvP >ϸ/߰ t IWH!,RR HIzh5h̨qK/3jq5`|yc 3f84~09ʜ)HtٹK&WQ~4w"GvbϟVOHtԨүEA]۟4ju [dK~neeycѺI%+4-)PVa2|F~xEi.[8募GAFG"d̖,ZR(- y0[|l]i4$4dٞ --^IyˑB0Z+*S~?ހA70I|"ƃe VK.x1:tء:"VO5 #<XL(I/g +,r^7dlӍz_Q^bw3ZV+ stc5R &(#(U(_8U4\7X֙W@ -|ҒȟYMY\U,:#>&u0'Ơb$yCL&*W` 4@\S̬sL3S h|A ],G'*-dG|ī,p+"7pW~* 70w1N;19,k$(!᮸dXRfp+1hB1M؁t퐉L<?/GZ"Gf5 qLN I9QA ^0b,x B'+:: +\`Gc)3F wA% zx0"%f7>:uUL0̱Łl \&x9$Ќ(,fэ :3 5Xr mH4ΐ3' LaJӠF99n"{T.y6Җr'<1~aE9J7^G1`Y$'}lΊ?j\$1:@9@󜷄C4 btÚfWCoΰb(41t\:` l򚠔5Pa[(8[! E0" $zl3LG9can8F7юGiDx"'U)>Yڏc!l8TD0@UQç?9ΡR{@Ƙղ;C(`rͶ"Ԥ)=-EFm #UsQJX{^zAA& aF_p%lmX*4A@& BЬ_Љ0q$6&DG&>r}a]g3@X$h9  q4Xu.Bup *B#ửex( |L`@Dw',8~!]ч ai`@_8×FB9| bmLHAH<G3X9@b aZ2JfLqX pe!g,B&v8րޫqW !BCÏ/ Q4D6ph!DЗ2~o X?K 8'.s? 6' 9 1#ObA_A'0P$ xA@h?! }P;bch>->. m>Їﺢ[Aޱa2x  (a(E+Cxr~8 <; @@qD*^ g|81#9Q~9 $w2!yȹQ dx`3!cI2@aԤ&Ms'4 XσA;E,;ggEq+AȘ ~|Jx}G)LW(/N@a7H2o%pQyQUG 56˘dc"`i\lE xV h祘MI/B%Ze6Ї1u֕I 5O|4)Hf&J#Zj0 +ܐpz 5LK." j*NvqcQIltЮPHtӍ:\Z-Gsm.U2氦&BFI9PzI +Di7dctgGc󯨒,&fgY6e= +5:_{t K3r-VlGomO~E,1R.^ρn:t#PcN }h\FNl d!1~ǎEQq ۛ"3q;u&)Bc >\d=ҡs)a Jv"ux%,L;"%.sIEM\1:xd&FO.hhF5&pD8Ldb@Z %k&9O{ړ&4'upFC@Q=98'Pb= EgJә @qL( S|`Lkԙz:-6<9m8)V*{zsG3dԙj!CT r OXupkꉈ.5>pQc4 i*\:|u(^k\ 1@4aBpq@@SN$l'#Cȭhs{66rZ+k}NKQ{(A4ap`ԝ' ֚4Aњ*]:bQSw 5@8$8Cp `\#a+;$݂(!JN9! 0p "aG1'C8#Aq Su1܃&8.D!$@T-H&+ (aJ,!Xq @&fiDX!~B%xuya"ChH %f>" QZMCD %!n¬=8p^z#~X78PIX5,Y;{ P }M&6!x ;vBwMz7 s(APCa g>%, Q09u"X3vCX:|PmӼ#B~{޳mtQ T@F3 qcxA <  :' L8z <̝0E+ f0~?#_7+Djg3! Q Л"OwAb/_7FᇞP;?h|;_ї@&^;`aH,{&7~7|z~ ~z0r@ |l6'|}z|̗zG8sj0iy Xx~~~z1(B Q=8| wW'h CPzͧBЄhXm`?Q!p ~ny#x(8 P ǂ(Lu`0׈vH|g DȇG|zv su' Јgg|zȇ xXMw  ,H|`0  Ј Xw }؀|4$xxq  w ugww(, Ih1A0ciN Ўֈ XPcJ8x&Yΐ xǎ |~,~~g  uȀ z "i0%)^gu,e5kuPw&/z!)n0%w 906u0I '\iԡnuw!,RR H#gCk#gŋ3f.ݵj Bū/_hI$jiI3#zBZJQ$ عPkx՞K9ڊ+{4kt*,[vI.7Qh洞&%@ ǂa ڔE+mzҼ%4#~5x( K, }ZnE[Uz#,["q] #NEIs͜|0B-RK$lhFaK.*x@EI8 5Pt; \OGq5f`3\!!M+ OOax=ypC>M.{~O<-|p]0 /H\`\5}> B.H]pư>L`9><΂;YS XpKKB whAb.?xQUx Xyx pDgcP:(w*OWa76q'>;B2&5эlc7Ddvt]v#| %r|`$AGF2@`>8]ux&uxT xǑ`ɇ:yc41zAx!x&r /Ij\~|"=36Ú &6ۨM9n& P1~#Lg:)cB !@a\G>9 QC % "(e1D!Ot⤝D(DNlvQTLznJOx1g:ST #A@'AF1LJԮvf7R1QҔNh(\U<'ծuE zVPg&D&MU4:cMP=Vx1DщڡtH- N U>*kYjvNBvˇQ04aZ;Mm61BC<v>1<ensCM cu}ld+Ǥp)^ъV,;̈lAA~ B0^+VxA d[ûRޭH3!q&0|/XoaGuk=^kHEݝx-͌pc70WO@?04o#9ĦgD; (' g[Vz.<؉pǡi7ҎXD;bF)껃;KuC^L;>S"߰<3y>8>?A ;`:H9#p2v/ 'sK!_@ sn;a uhdo7j1&rGzQ xHx|GGs0`3  GozwNG0~|~F8tp wpv $G~w|'u 8/( 3v W~8DxG(u >٧o灠'>xxZs?P^v P ڧ tT #H~Q qs(pip ~ H>(|$ 0zZ70爲18  wȆuZ׈'&G" V(GBx?GwF}pȆGB'ABPnH0 Hx zxu|A 0騎pC(gtiH?IwPO Pcr YH@`sI )$,pB/ ا>?r'@@3jܸ~ Qy4`(Yf ڴkqI}2=9~RUQ^*W~ɴ>{A4grڴի-ZEE_ӳ=B QUCJ-IF[VyhSu9joOut%KsFKHlݺ`P W}k\-}(QG"d(o/;~Vtb`MJuEyYΜGp>83S% ;[عXB@$D(Zs[b$7@@ /<E \#f>&Ў;sbuć3>)b?(*!Gܙ vV/GϘb@@6'TR#Ԥ@̠A޹+ n@|)KiʁX !X+Tkp0,epG%}Z(eB'DGuU f4)},`JxNqf h4 >OB$A MpB)p&3 ! H9LbF6VmtC+<4 ~, *KSh2|؃R&,P]T>4çTPnPXkJJ: Q*dZVXbC״|([ÙfE\随d}JٿAi8c 1Ս6㱣Ce(Lmȏ~6h| "ֶ J psͭtAKڡF(ElZ~x U8ݸtk#8v1?! T0E(>A`BӭnWfbկ&_Tb0Bщ{á@pn 8#m;>A1*2Ic8CKb#P(Vl_16*^q R&rX@W˱ha Qt"v3쐉MPF> /Ϥ)HQf"hEYs@Jہ9K6S݊W$[pǨ9H;n-mO0яm$2* = Sx8yDC66mmmg" g#AVE*R D;Nv3&.wTQ(ІE  %wEqm̶Hx囧9}^A2vAځB@҇ #AOnl`@F&u=;|^ML0@p~,x|!(t~O!nŽ^Ż%x#@h0(`?ؼxχ #}:#3 v"=3?vsc?+~_ <&P| ! onF3Zbs@vGy@y=;vztt ''  sB~Wy07;0s7Gq@i\ǁ op G*8G =vtEniS6n5 ȁ} 8Dq>;yJqq rHu70Y <>WDhf |Jp(r ƠeM8qٰcXqiȈDp8sXLa4A>wIGv @qdqawGw&sr8'_8Hvr@X*،xsppFDvd>' H*X+|'GH|\Yq v@@PXpui{!H y IL&y" @hy qk DI ؑBq`7999`)vm'o8#9s0ג(IvA0s@R9@gHK)A j c9ǒ Ct 5! B0 yA0:w!,RR H)\p>{ㇰŋ32dzҝ /^Ɠ(5n9s0cLgbʛ)W1]̘׮Q:}8Vɒ?]FuCͥ@KH US> J+iA!횒 x@¬BiZcKU^xƘ\-K9o(ZBD-_fZ:zh s*[ir4Q tlZ Z¸uNZ؁UvOWP`KBG@?KmK%KӪIԨ/>z{G_b՜F*x@a@B<EEXn]RɁGhX`RD~\!azU -h,Dȏ@/&&P@bzuA%"IJH"\&䏴\FLVfUt(ɇEbH\~H$FǙ!|ЏrMX[R˕>bȝxɧ$(Q$ eLMnY祘r#R"{FB 5#H P@L|`tq7\tqF$ *g~4瞃}5ɏ PEY܎;h`*vP0ax;]70wA)=!x>5! c! *P^[b]8,Tovo1~8@Fh 䜱 WPԀy@fP f;a A8-la`؄= Q`wb H f0~ 5:Տo4Nt(EQ]|@E>(^h !Ah_x@8хtt!vQ P+@` 9H`H2^ GxP,> P3 4 h|cL>RSh! @bp`R09ځLe2}:p@b@хq l7)L`H*y΂!<./`7%`>^G3:SР)DžcM)@>)^υ0`J]GMa R4}@U /7/jQ8P*NԲ6(EYO Wê?VSzT"fͫ^SZ )kE_H^ `kEgp}+QxhfP^CZWOͺ-gVֱpP҇r#_k⪢ȍE3Jȕ\E- 6#.r_ f#B`lh2bƢՇOa[ Io3W׶V2<2q3>R4jaNXV@aiqpƆK}?21fMkO?^R:ʭvc.1ak\!y`cG&4t'؆1r/Ӊwcڿv&&Ѐ@'NmCD'>! Q66~ !rC ;8nτQNud[}^ֻ <b iX Lt;Qw޻ ?@76>C_~%B6i ޠ@ ?۰8<t+o۟d%ЇB{`(0! _nӁREkܣ)> ?7k|Wp'{җrFwlwup:wo>mgv~WsWw y+a(|=0;Gmx Ӈl #+'x1zۖC|yG)Ww̶ ttpV~D0B082 p0ngyw7Vj`\x jޱ_wa'vW|<ЂwZzHwup ِ{¡k0Apȷ|tpg0nِO}|?W(~w|pt $Wrr h}7&~wxxHplPnPoqq@pzwxgkvpPO 7zW oWwxhk7 ` H xHxGltKyH AfGi0)r I ɐs`C0GgǑi0 s$5 qF B=k0~lؠ9Ip twp g!,RR H [Ȑ_‡#J{0cG>$N4D/c ЦтV)))@¬:sΥw;T{5CPJ[Zu%$zoc՚\E%ćzM& kרQ6 3:[JN ]Y[{^[4ӰR;NP(O !Bdvsi /Lg4uŎ |E|O'yZyˇO/h6cJB(!B4V~3Vאˇ# $4׬7Q;x8!JT8Y9q B{@!dR}DeWcmH$ڙ뮞o–*hZ\A_jUۛJRkHI$B`/@N3^DM*)  [Mo.T2ob%''-A Ɯ4/Q(IDJ5sn\ ЖMtы H$P3< RSMsK*!> f⒩نmPA(PQ4QsќQ83?d =t%B6䯘bSLJ5CM/Y$B`ad$@+ ab|uT:#,M_PfaH$@O,`{ z 0fH-8@?A} P8"C ^_yiȈN S}Xb]6 Y֠а?0t 7$.q 8T⑏$ G&N`h2^ZW@6H+jVd4cjek @U4x2bוbhE\ qE fЅ2cwM,37udky ܠ 3D[d@;ڏ.d ,8\_K4Cpo+f|C 6+~ ZjGaw@7ԝu]0xAw\w0>ЦG{J<,1F3{wq5fZ+ nw4Х0|a*\_Ѕ8.n0Y38qlwǛDLd [*6EBdeY$sY^̛X33 GtM_~;hnA@␏(/$Ea,[ kZ7mLL0c9HuЂ0A@oz?Xw-j0V #.!AjcLעN@0F%膶a?~oe3x6 &Ȇ睍mtc7pSY$%ؽ `qXq}OC6aFHKB p@cйk`1bφąݒsD@& E1pb"0Z|GG|<@ $ZG8B0LxD(>v/0wiސ4Xߺ@N? B8!&>щBp6#f!G@^A88C&zȷ<{>:!ZZ7@~}B x8 qUƻ3>!|"@!kzŀU=?d FH>pGu||qt~a vj7'~v@|~'{8{ u7G|BmkWt`v,{지a{' -HB j28~t |<8{GauAy>CB|6 Oy~7rqf(8}g0bzd(sA w7 }WGǧ˧|y|{jwtumHo7hM7oK0 qw 0?7^|vw~WfOq0@j{GqV 12,/ݾb^)|z9!A9Rt(ճ߅ޥc`4yx` &uX52|Y50RC s; #ȎU4uwX3͒LN39O3,cydGM$RԏG$΅4馌?μ); [6D 6HFa~JM,v |:Q? D&u"u@75.) 0y(5c+gK`ʞL H!u`=kzצK.K/Xc 2|^{K,`u")l"\s7(GQhKt{sIu$SY/6;//zN`z 0[:1.$xY{蒽TlSM<M},H0%Q;D[YgW$25 ֢,*033 )KQF)X )E,bwKc,Hbb q" ٱb ҇lsvN:NËKTBxЂ5DI; rGY9F+1Yꖴ:/P;8m*{l S/y5T"IG/=-KDTzvx*q{U˅%:IDk]- (GHaGGfq j($a&ⅎx0zE+vRb*ҦX80d:/b"TڡYa1wiCE,Dx~#"$D(J1xsQ=_`2TtCE*\2 -F1$acy#lEm+hENbH~@#{#aB@Qr-7q4#d.g 2R -$!V _`B0BD/tRKgl:ԥ_ g.TBB 3`X9BP1Љ8yK\.|2qDp#̐΂,;# rc55Ƣlyĉ?Z  )B`4DBG-)щ@QBT )II _c,}5_4:Ѕ-T7Px; z;d:_LZoP*da ])!՟r*3ps(4a/l! Y:6 \ZwXwG8zWw֟ Kr>,̺xg 2pᰈ}*TKX-k1Zq'/.ܠ4 1ܠm ~XĽ8aY}$scЏ` n6Bwqw:!@p`}kxzwpyLVrpYp`Hò Y#A2 r`]5xuax{|א7X@R<! 1BxxwC8,!2 򂃰6ՊbTN'p^)62 ^  T2e5g d:x"A\Ɠcj6}x,>4b,)h4܃_#њ.ra1sXl4@e/k^ap$Ԑ2uA,]x p@r< ER ڼ>H#q;l"A(='~{^WWvIQ2 a PJ򱎆;|p[ÀF)O)8Ґ:XH7V u<|7X=g6Ӝ B8B`bCG7яc8=P6pH@潦x.L$jF &jC4 NBp71Q c#RwVuǣM(`"AqȄ;ʋt7޳ 2o`  AD'B=p"jɄ @x>|? ihLpBNu0wd;>pӞv;qy>pԐ`] n qrcB0kG~{FG~/g> }&Wz<0;0A}ktPO!e|z> .X1H܇{7~p>Sq <c@0'B}HhtP p"(0Ac08?x=؅Cpat}7 ApoAhY{HC0(IHghukRw[{ׇqu`Gwݐ@Aw}gswiw kpB^xg'gp{x| 2 s$GrxWv{5(~pθQ؎ggs`{WyXkPnr vmP {y Np 0,' symr` -   ir'w|: ǐp DIF pwLSGu%) ` Iv€wNf f>dy NGK7c)!,RR H9k,*TJB*իV!ȱGލkp+A} ' QSǛ8?0RT ˣKH(UdϸPqtjDAQPY84[Q}EW]|jg5K؅Kݬz8 ]r)r}D!^Ms7MǛ><5 "*LXqQ,Dr'PhG"֎h1J**8Uha1.ifQcT5Z3BY$)} 1ׄN(q#mV^8#1L2J*wx9AsmU;r 2J)|$fKBmfY N숓VFcN,Ϣ;+>Q\*(E2(Ej]KƑfu@^G!*⇘d8墂 [GcvZ*J Qv٢S·ۑ>"v몳ЪHJwߡW6$4n=\pN626+Q,J.AABup1*¦s9TWmN:73nA!lm)*DrJ*J2*ABgeY+l=S[|;-ȓ* 2ΰB2m$AO9hm?Lj##rtłL3sS,QEBP|9[ DΦ v.m/Q(,<_c~KL䈅P3O= /μ{{[~\5@W~33%gWHJqxП]L5!8!0 ԏݡj 4 iװA{tzGc]E.8E^pȢa;= dTC *"#"s ȋNRAX;*i,d.pANWcO7&`^r8 6ND%$!KX鬃pVll,INIT-A`Sٜ7i_8'>) \D#`IاD%J^g60a$D%1gҢ A5 8xLCԦx:e*S\@A`6 ʃE$:OeӌQr ^D"` XV-FUX#pX ֲ֢HP`<[-hZA  ! [ k)0/x fX,XASZt2@,V%;4lЬfz f -aa~A9#f(mٚa5Rji"en΂pd@kFr( ]B`` ]y AS^C u);l7 wh[.wYo/9 !49@? I GX1h sΰٖ 1-#*6vb GC6# .ܠ5c,` ]0̀ mB%p9d1C f2 jp c~,Ac9x@Y=A@"Aaq>@fPs!%GAZȵL`B;x눊聮-lbA 6:~Vu?T=i  2!t;M! mC&2 Qch({o65 hP-l@&, 959]! _'>! cXG>v.D;}fdȷ9y!pzCx2n<(1C!.\!$a! x _CΉOtB(1Ⱦ u:Mmq`4G44@}/5̡vD':+psLd$r`gmXQ_L;؞A }J#Ǡz:rz#>'!y0?۷/D& w,wip~Gt ~b{wv5w} 9 s0rp@lquwzv~v|}hvhv{8 s`ĆʧvW qp+@?t20y]0Ѓ"(DXuHzGvg+t5p ^pvz]GG|IxNo͖7` Pt`g ׈ׇ Hx}VW( PpzH{k76G  u 炖g L(7y4Ô 0s.zwv6o5 / ǰ  3 X 7Ѝ5Up ( Hx1H}"ft?m%`({g*VH bg aGđې (#is%i*y( .ɏXg6yѓ8גGh%Bss9L!,RR Hc͙f"B?~3jȱcCd^MISP HPWuI>pΚ g&JRaɔ&;AJʫJOPD[ӳ1mR]g=Q~Zq8̀˴JOstQ,!@dg 43 3h* J5QAX SΈ$J* ҇}%0:1#~!· 8b&2zFJ!MTaF?3@&#_*Ǒy&mIt!A`& ƏrCv X)ʵ-O@"(yZ6A[}dtmz֢8@2zKdj$n1udRj k9YP:--Ef i:kQX76f(eI[-G"JlrʥZd[fvfgdp*r)BVQ쥄@^Xkrim+ʪP1?AB$̳A\Zn˓Hm7AR^3o_w(Ľ3B;{'7l[|Ύ5H3B.La!`. 9،35 {HNyv0|#;4 A ꨫuQGȱ°3h<´CL0GG;m62SO:@L+01S TtG:a:~+ zR:4vtpEȹ+ݳw(ji8H@A  19" mCK@PD# GmxkG7Rx @`hcנ48Gjx8rF:X ܢ9HB 轌|O A^Ðc}#$ E9f2h`=zx$ 4@'Q$$4N9 j#@dYzH._"E/IsÓye?ZJtsȴ%H'j1"!t?m'GC1Fy HV-.qA KB0q [@0v吉Yq "KDN98km !F^Dfq`CX@0-tq#i`|;NC l 0| a ĉSީsHKw6…/l6FA4 C&`T-H1cAx0ݶϙЄ0 B| ]4m"0!tQƮ ynC2OBhG$.l! hGuF}q~bn#!&B!m# DZjXg 7ҜCE{ b N85avC?ac j0`4 ]lߠ ]jX #toyކ:^`/ ~@vmEAQ9ksBnwӡD'BQb#X &GР0hygP <7kHDۯ Do:hBh1uH` ZނBCLH8>Y&8}7NOq d=H9AZ{Y؂C<#9Ư+y7dtCt}~ NkXHH&:! ;v;n:lK/u?W}?X > %ldl 'oyt ' wـ|~|YoYr'(5j!` 5{ Fjh~y w W.PW1Wj[@ s3P' )y.3,|6Xw>H{4 GH~ t-z/+*7Yƅ'Mq @jqi kȆNru\wp qLW|Ű~wr(\rr]`XVh,(x|GqHz\ & xM7vzHg1 ȋո~Sxz0pp\`Џz֘|~Wȍ]o]ďȎH@̇` iKw0|Dy7@@P|W/"Ga\o7 0Y X쇓9yf`+ Ap|DI.L|njO)2`(i5B fhb |nwnIlĖ"G!,RR HkǮ8pI|O‹3jԨ8qB~s֬3R6smō0cj}kƬdIdbv2&ǯ;w9sɬgX  U֬ȜAMI겯pBWd+)4kmښk9JU*N (Aw_O GjV2EZ1*ASZ 3x0es"])@R^UT̐QO?Z#O>p9SP5wff8RMa׾Ϟ<{'w dS9TG(A~ܗ~ǟ ΐ7 iYgӵR v}L~Y(!jzө2 xbQH!Q@a$~LeD9AXӁ9[*;6J}hGyęOQRiF? pؖ@fAFG i(UJ H0?̏D , #z:"}@{drpALP ߘ] ka.g957vȵ #xC` bIH+fgAi.hN@K?6>E8`Ji@9xoagd3Ԉ6 r㓠$ pPУ@AA&Ep%נI J! aPȡA-߈0I%؇1鰆dA3' i(.} Ap ~x#D0Ƙ'SϊZ/ Ўvt s5aQxâD(*8 BC`5a`?둎s?MI+*N~sRP*t =yR4@*P1T2Rʆ42=B7ġ˜=51ԱmXK9hB0%?qƚ#)ņ(c6-0K#}q M79 cI<0z8 ov01_ځÝ0qF0O|b^Q J@"C- I`b'nqtŭ~5;LJ:6b_X"x#AGHԢ% R#0H>q FK[ҡ5km\",a/ w" aɦ5P3CQJc߷ 4` ]h! 0f0_öD-,d`H=H6Ab}km73_ \01 qjY>9r#p1Kߚ7uYB a_8s> FH7./ݸ54w] 5/x _@ 6Qy_P \wt^_o] '%h^؈:A{0Ho *ܠ Gx/ {tc>O̯2S{{'~Gg~7gȗG `Pq1A}ttgwp+ {U~w@~Y`rwzpi@M5}(0$2—XpZP|-x& p P7 vkH0XP~ hxb@s %| GݐMG ؅z1'8| hxhn B 9؈|{- ~7^Ws`fሠh{u]'7n dy!m|V0zYr1gxy7p@{w>A\r[A37{zx8xو p3Hy`uP Ѝz4#X~]@ I`v6O a|Hz'Y Ip 4@~4,r @PX7ɒ^ $1װHuR^^@G@#w5@5Pr7  !,RR Hӧw9lŋ3jTȱCwĉ7oصȲ%K: 9Rf8sv>@P;#5c4'Nd8'E"ɴ+fb Y?fZ];Ǚ59T쫻c"c,;Uf5]fZ{7+Uʆ 5Cpܥ^+fiV6NȄb~XQ#zEcTLF3y lB?)W |8Nj9KOlLP's쭀s7u )AR Z!CEv2| ǃWJ)f 2 wz!h{: PQ>i ရ u"YxD1G(Q&BjPi)WƇ){GGdSFC!Չ|yŵQ(D"[Plȶ,|l~O8aO@Emd@ΥQ"}^JλOD!Z3Alq* Bo$8poQ, Dd;D@QbP&i44o@BLߡ@KB+ ԍZ?MPlZ5*ǽM A$D A@S_;B/ `f2_KH sYrxWoP04pMAG ȓ nLE8a DavЃpH% ⁃p x@D1D *Fy(L#8 Otạ82V/F"(؊u mqHC'* K1H raAɁ>qH&<a~iD'Q%) c!le+'cR cuI=Cvf*%j a`'sCRQ'~8 kX59#!r1BS 4gDw>.vjXR9cJa@7EE`CGJR9x¢D80ЍЏ&4s )Atpi`CD&KYf@1a %ೠMlRQqn@V_:\E{n 􃓐&&:tpm': QcTmK]o4c:!PVEn N,w0V;0y+bcF{m둎s8G:_660w /7-F68}E|n11a W5F6t#N{,N.>os3\c؛ɱqq čJ?~]V gL4< j0:nacy2kd.B5g2.Aq 73gY}l[A+Fu0I5~\4"=&F놊5acpztUq `0yHO:iklжn;id.jQ[[ئŪjd6ƴvO[ڸu$p`5}-haB\4#Z 08 Zq`E/nA Y"x#(! .>7<Q%mf 4ނh/hA Ѕ.h0!D$xy%$q~1uȵ\;t3 c #C<咈- hY:nӋ ~tA?j-d f`oy>fWۃX^˾+h{ƍwX?у |?=$R_ pH h{ e@[~7Ba?-Q KGKa}׀ڿ ~WA _wrm6f@ @ q/pt7P~b g~lրfh{dpt3\`~a|s/7 & (H&]}7WU0~7`_P}u? +Gny0~Yp7P|VH|rp PVq^,1X ~jUtoG Mz!14 ~RȆWorW  `@D485YU(zTV Y q{acPdr̈ T{0 'ay^`(h p LA|w~\0|\`wf@bLPc}7@wHz׌ x؏ tO8iuGfu k`ӷO0@{]@@ ` UipF7qMtt0Y1W P9`]^]`E` BhiM ` uF!,RR H)\P>~#JH"A C Cĸ#GwRl'%uk$M~$i4Rϟ*] =jH: Ύ~JٷoA2H`6ɨS9cƶf߸\7!I'lyv*U \2|}~k۶VG<߁1ref^~2fj(Cp#ڟk+'{ժ~\#;߱!B&4@04RÝUjʑ9cy APlTӀw7ZU*U\j\ciQ'Pcl4py *r *L3DAT`;RqaPHa*-KG@!E p]*3֌!CGL=(QƐ> !2r*9sEF2CE5F|2J)J" :(1ng@Au7x `̇(c" Ƞ ymɛp +M4g$:OڱLw ~AjZ+Eia0݊w!?dZa!)lL1D:":f;hGn+ kƖZh }4G LD|BGFEYH9ICCٞŽh ƪQ!szч aA1 L$Vg$iUprJn0Z1~C5A=@@@ٌ#̢{ &|sІ6FC`P4P9؜& (D UALo/D&jH6:Ba뤕4G ($: JHDA! 1^Lȡ5\C"@ځ1K  B@@ n 9f⒙XAus0 Ҍ> \@4PGBx%14 '5DOʁ'd- &2Q:ըu2OB4G*X  OYOp"w(*RTQ܄PC!j:$؆1N] QFu WDzZ!Ȇ11O1 R^u*>up,dbhUV{6̛k1u=eṇVy`{ ٚ6-kKE[ۈ7BpZPqkZap6v RXu oCo6 Vo?ZWK6~vP:@Zw%3p 5Fxu$T3 y :^߆`Q^jxÏ}XdB@R 0YaoPq&ۃP{Z Xw,Jvde`say\# 9AJW:d>HR~ Yq7_t4 fP+𰴬-]LsЌu7FhrT+-<%@51iP׸Ƭ́i'oНf`. 6 ZUwG:f{Ҟumxz6jbGBqj0fC[ s;͏,7M]($d jX/z_ȅsBbqFwa"a \BABD"-jA ZȢ1y.x?o%B|4 ^q- 3]x""auKXBк̻Sz;s⅍ 0 ,x c "D<~D- »նG)8~n? .A b0!:yK/lnCZ 9>t|?d0,` = yKTB ]|M ه_G կBp00%1zx-&tD~~Q}7zp Wsvsv~i~w3 ww7b_~7~7''w (x__7 3Xxq'Wpo7$8{X*Ȃ_pzvig5@{YpU}, ^8 YWzF Hvqh8wlHׅ'0Gxp_T vG%gV0'y[slжg{7<5@h[7}w0s K^~j^PPUgus @SP-jHtIwuggy' H r xU5vjst\Py\`wv'dyW @i@ [(ɏtvWWp @u  i` f^@t`@iPWd Mx1h^d`Lthtwx 0>& t{ O `pp W)@ m6y!,RR HՅ4g 4x0!H(~jȱGu"d‚\`1=ʜ)9Dʟ?́IQ1#Dg VAEj=X4` ЩTQ:5V]?F@MvB[o*DsMS9G2A(O߻ӧe+9n4n:4ߩYTwӜi4rN>#v|NB3=:6߹s7n)}5D9^-qʜ2-ܭ䪴0Yޝt޹t@"ts6 (b)b7y1x9t3ё'l>95«2 ߎ * L]1"|?Vr:k8__{o*6k5:]؄(T'v|ˈgS@F8VÏm@ ; +mbX vҎ5ͬ)FA OQ>AC#(ضBe@!>~-h5tc! S Nz&z*ZֲQf[ABBVP_@&a u4ˇb^A V7E^(,!AB& C|< `]̠ _~@o?6\@ ЍѶaͯ~aph$@z 2`073B2xs~#ȀCߧFas$J-hpw/ Zps*A0.0BB(!  Eb d $1P!Xb Z,H 8r?>`B!Mz@fV Qq  2$Gtǎ+a({w2.v+YW&57/X(9Έq*~~Yp.L 8xh,\!,Qa` pvu>o.ax }&Q8mZ$HAwoVxZq fawpa8G+Ȃk؀hoW @hufw~8~wom!H PxuuG|0 /c~fg1K @Hs1 G|wzx`  踈䗍u  hv@g=Vp p踎 \7u ݈zfN  P uu |Ȑ `  i  9#F  ws `' 9WxvF:p @ pFqPצG`qwq?q P!,RR H;JS:q&Q!ȱG f 9G\9A<&Ǜ8=3։S5i2Ȅa&y`BPf,:s +&Ȕ!Qvfl䜷r:BQw uLjzV^rTTjiNq!Ç:e  )gœB ] ΒL6?iC(TɉX1#q@L0aceK> QY%YQG|IQ)m P1ƴUeuǝm;bNp;Ӥ4裙Թ%yȟls[ze5I#ή#>7uh1ɱ9)^Նdn=0+Nu1߱=AGuTg5+Yε;; C.WՁ%IVхԬ41KnM68ep0f)4yEZ34ӌ-;1;W}!erd[q90A'L3048㴃:v[e0!^E&cAqÛf]=6.S9(ؼ؆7;AM8 p&rܒ;~s9\7ӌ;Ƅ~(ξ52#ֶíܝC%i胼8L,IJ

wH8^sqݵfp}׹#}*[[FhWx0G=z_7(8wZC9@#MxB@ BЀX+Z&pjdi q@Tb`,)N&2/)aWEmXfR1cSBdH:;l ﷍nuqG3 ;Bz$1&5N+PRFҋ@F3KdT2)EU|@,c)K,oЇ>A%*] 7 V  ۆ8o‹D3ve,ٛ}x0p6WO~ "g?qNRt'Bhƒ#?qX QL,~`HG*&QkDFU1})=a JU%Eg:#{R@Z(Dy(Ĉ3% 1ۂ5C'0a ]B0a|X-* D(mbr#PxBo6! zmhAYnV "<6N(xV@]t?txtJ WE+Z -G f{.<;H DQp(b誷ҽ F SBɅb?1 Dz/L.p uPxA.HP' \ჼ[ea2A4,a \  YȂ@IY-(q\ G8 YԖ7t`3D׀iZZ$&F h~\mGP- b`#( s&xEj|`v?vMQ (CVށ֛BnE<E4Qg=P5]ld r/t5AAfHW7ŠE(0q t>F>rꐀǗ gBҁ.| yUmwa`0D" Z5q s#y7A`@tְyLvU@Љ. K"޼4tC"r< ?$assa fςn0|ak%& ^sӟw_tu_0 `P0,4Q0 j Fgthy#}@Up p hP HB8u!@V ( wx(=` P p_"p @ q=oJGqƑ!ttۇr'5Kt0IPRw8յtWqViXr!,RR H͘P>uʔIOCȱǏv̘Nt̹CNiq;ԁ:mC=LrΚ#G`iS!C1ֳjύǎUS8rTDt@v4=o]IcvXB~=Ap0A:D✾q)؇D< M6ɝHϾx$x+|pM]v&8]79|';RtCPGD<`7A 7w@ts1} 1PQ TBL8P7ۘd0n¡FbF_}6c($FB6>b @7!ٌwdIf2ck8I`SNC.yf"h5Ajq׬qwr|+nb]V/Yߊ,uչs7BsJ&['&0qR=]9S#d5f]}'s uI?58c3]sӍw=آPS(l̸88ٹsvmIȕZ,htu&ij߭O5A^osu#:3)[s6PM88`_^ f8ЁП}9ù*(g<'l7 \]G O Dq{ `D&Ұ4BtAGHȰ`a WprP̤&_ "6(&.єaA-hq.,p j<-N! q'+U 8FW 5AЅA<xX#kA*BP ͂@^p5@(L .PdC öF7o` G!'8 KxĪhF Ehߖ1qP+X e!1 jQzc&,CHZ ~<_,T!]`xy5c DQ Ux “@,`!yֳGϫ H~ ^|%$:xdCm<;@ ^4ȰE$h\A ?!Ba`<t/.A_ D"M ZH=xpAHjC!{C)Pq&/8 Nu'/k#&o|$^5THxgq `0ĺ K5q sczTgC;0AjC+ЛZB3/C's'<%n\c(9AL. _J\jp3톘g Oc09^:=H􂄠 ~ F5= [=$* ^\~E<鮏f ~@Hz#E$ Jo $= נ;ic^y%$A Ӡy7|Q7zRg!z \p  iwvݧv ~H~@wP`o8GzP :P Pijg g {(!`owr+xP ` 3i@ 7h P o{g"~uG` tntx@y\؃HwKGtWzQpDs tnW؁;z8 Fr{~0uACrat@vׅytGjGWжH Nx ( t׊gH$"p wX~×x!PENhq(ڸ_h0|wxc TE@ ` |Xu wX0t @ y(hu2JH|0Pw C7t!HvljG0oR * wȒv2|fC 6I@ؓt QЊВ.Y.R9`U]tj QB!,RR H)\ml"æM?3jQ]nnj(LIQ"O;E0cjᶐ"d(M< J1m/e*aNJ՞2i *4:`3:,ƦN*UZfd'8sX>UZ:Ɏq܍#'u8uT!u Ge;S'ş69~N6٤9BH4k6m g;,5iōWg4EԶ};͜Py#TH7hlϺڱm9BtdR w _l|';uF^{D6D G̱N}p&0cq؜C A@`GUxjkFBނ*Ȣ > o4~ɎAE Ag4~f#DG")ALC?L0@ YM_axwVqDDagw"@@Bޭ#vڣB1*N@?\)LwHBSJei(bBJ*g`P`@0)d 4୷5pM~k1  SZ;L޺@C=Ihxjs4w :ZQ# +@z(\G1Td#3hl37\nx;YVsF{FbJPN|+ES÷3UUakIPtU[,CLA Y ШOm63(^A[uֺ/vA ͔BΡQ7lP>n->0mlc@RuBp5dN>g(>P tCͰ;ޚARԁ£Ó/ {'q^}pGP$Wޠ>o2N[CF{ ^'^nL`^-QH A8q>< SK^qA^`! q(h3A' ]B^Po" nÁ!<}x 0Bܢ6#CMp[2`"+!qx;4ާf"Gl7+ĝ9N@H7HI?*&~, n.%WwpG&oP dТ!ip.ᔌTe+GЂbZvR 3 II;1qx`%)ABx d&3pv3 ZxqM~ş>J~T:JPuvf6M}:4#?jQN3U3 TeCJ҈@Ep,T t'`QBD##f8~sE$V+j[ 2;f0WmO=B *00d%$~qMwVŪ\ FDX̀־ x/qJ~sMlV{Ow^:VZ)*V`8ơuD6ZւH"{SêɈ+vX$> `paag ȮvεU50a\&uzA Zsdubs@>BE!!#->׾j]!sTyKxX|qh]UĦ8*܊Wȵh@ ^֨G  ȣH2*RXH8yQG8"N#*cKbԸ=(W8KQhAtm$  It,rAiL  8< A8zj^ dȹ >Zp%q B9 T8Z H:~\yEG]jS#H>rǑv"ɯHZ38 zm\{6=a=ҞuPH㚷 ϕ,pQ\6Gv`yQkŽE7<7t@0,fQ7пӝuW;@$( Hҡ< |ITpR^L776#ns A BA;Pӡ.X h^2UnSCe?=v{Hp/ Qȥ bH};=` p&|^yB7tH<_!/'AH'N~ԥ- H~iА~!s{D<9P{ KzN@~K ~'җnW k7Jytzjpߠ8g!{}|Gk[~B@ )x 8v.v/(!}'o[r0p?~fCHg7}y!tRX~W'cfaytXW bHfQ0o Ͱuf`v -v{p{@wwhP 0F!seGggm/f(jh|@ $Yph|QwOpw7o~P ;NPӶŌ}a79smtqz!p p|q 0Da 7:ޅTAsuƀmDiAG]w=R4J80qBLJűƈaHbiW`@X.pR:>u\f(CC L!1]!-L 7,EVHZmu&G!g"k&L`#3 +TZ_P e*D@@!n0t )!2ѝXBJj*q&aAt^!Tp٧u|AL"'at 0T$+ +Pـ`ˁyޯ=+ĢCH _8UvY`eRdBL .=x,EI "B?^eU'q^;; t@LtT^sQ SŅlexRm@rMPGZP-^tAV´0 !2]aCݐ$(oa;tt!O&cF]АSzv#'ADBEn0AAT >Kqغ6#Ap -@35:С9;B36mİ71Xs (ԅG C0 AD3M`/Ґn n@zc$iɅ0!|]?jaNr (ݸ.t$Bx3ͣ-a[o./H$-ic:q5"MA !42 f>M'z9t0Na$HVYOn:g$s4#|PA 5c0kTbP0Q2"(^А:`"G @PT0a9d~a\B(AX¶C(la!s ^d%Z `楱dW>fź;:ؤñdZ>E.`ru#/PZIDxD%,]KL`DZWMJ: Bnw[ ^"y_ζϕ5[ݕcqq 77&0|lJH/A x33GٱX?\ Zǹ4V oHn3;7n.K>r.~1!8r 5n6Ͷy!!aG3dĂcnq{ၘGh`tcWҗ~E,1fpyh-;09ą1MXym>bsٱ| U?w2^T+PsKѶ5"w˭$p;ܛG{؃pu:+z8G:sSCj/:.w; Gaxȃ>^6adj{Dr@A>p N(?#0fF[ܵ D< |[H!sT4/ti.rs\;{ AQ`~wwn~|Pv.wPrv{}0({NPg|~2g ' 7nXth'NKP~Ň\up Ƃ 0GEWn0S !prM0w~Gh pȰ xVZxyq`~Hex|[Wsi #V<}AA'@mv qP w\x灥|chx* o?Iщ'ȃуM|Nr h۱Јy({'zYr ߐox@爻W@|Ow{{uR|NIa{I( Yy ׅA$yxw| cTJ p_J OY Y@We V Б1Y@^HuyPqqA i!u;y 0!K}sY Ps`߰Pg| x /!,RR H)\Ȱ!?#JHË iWLjܸQF0*̷˖~I\0rYE/]FTGH F1#g;o\tlXfNfҏdui ,Oj+vvku_=2YPo㧶-cw"-0^j|qll<٘c Cԥˍ3d0T' k/FmG5 sPe(;Z.cMleme޹KY/&JԧE;+Hlx!=z4\nӪP1_!^pa ЏY ״Ė1y~u'^fH!ta Th,VW M"!#hPYA`H0x&dbG&pxv$/g`c0_YQH~J6iǚO6I'CD2fEYlA ]٘ ֑)ɉtH1]#$y|@^eŚ(0.JG٤&x"ʍSK$djFfqC ӗ:@ueR䅌6ꨓtAG&N!D %zk59yWKEJsFGshBK$Jƞ@C? DlNdݐҹ̗v\IkKfB sͭ*bxVE , 1vC: d.m2u 3@XCI,$ހ$-N3ؼWC,kNYC{|4Ғ\52"R#Y'o#vmw\i4lAPQU'$tt1x s-tC1qs̑ ] /@"d!5]hav653 1&.nG'X&~"Ư{r|Ս0hҤGf=ہ/|AqZo}keFa! ͡^i`iw@! 5@ZBL!0A yJ4 QpbppX ˄W 01?4PN?xB0 >Apƭ@ H HQ"R ^,-.ǠCн 젌fD"}6A10 AbZ:~ډ;X" .Y$/ILFbd"Z#1\e+[9tdE-jIM\HY%t PL 2lepz}<-Z\D)2>i&Ju0GyΓE=)c!?A&P$8@0 ᤢH; YTB0i%I _@iC+)Ap !ԠBy\1%da ^8TD ȑTi0huj-Zj?N$s$L` j5q ʑiL#,/AfUx,c &GPe- _d֭,5!"Ami0vu[ iͪbu:85~K]Rw0gq\4k=aj\yKֻii'`c-5k> w'׼FvɛnsK԰~lz8{F}a|i:~c*1ce V1Yl1. n|*`aa%3 &C^X8Jy|._1C}x΄HDl>r=h{4# $Ht 'τx4g ?@ ]he,!!FMj0w?a*`r"B6i{5I,Iy8!bcؒNGoK89Ӛ=PJ팙!i !Ch` YZ&>kGEo4pF8]lrZACq0f"3͌w %` O>@3ơg4xE,b {"?C吇u='|(JW"x[ъW h=r<7$"ŵ=QOpA]Ȼ)u@ώv|ٖ=v'8> {@E߹ ;Ceg7'^@(!y Py̛=><̵Zozd}AE ϓ6B]Q:򛰄(> |p_ Vl>|}D>}O8Qg R7}]v'pgr Gr~KP~x0 y >r6p`tIqIxQ~~yR~}uy7jlqw}`{# GfvqFr3!PNKʗǃ}@ XCsF( c8j1hPІXy{@xt1xouuq-|r `pz||o(yuh_X3t$qzPyWwo upvq8ŋhIqW{zWywuZ r5Qr,qyswww `o3l8 x0t8wuǏspL @tuPG0    0 M`PS7vW_ h΀ W T uPJ 1W p퀐!,RR H#qF^#JHAx*ub o<*ȯdI(SFg-Q/@~|B&L4'J~y҅F _xy#Χ|J5(W$]!ҏKCB-lS}֍Aegux͗6%YyF 0 YYx!BfhRF֫[7uN>XUe8uۖmЮW-C.o^QQ/A#r7}6\Ze7+v^N[uՊ x/YEz4t. K^w̃7Y:VEx =b+` ^ bw1Ť1dOX# aybȰX *Y1bJX#P""dqㆳ!ՏT1Fd?./AȔS~QYt6QR%^Ff)#(H͒ /@ %S.ņqق\y0:Y䠟t"'"L6۠/"ACcei {éFvB*NE\Ӫ)ހx)J{l 5^$!`V`UL3\ C #߆;긃 EװI -ۮ_;nH1 s3 r‰&lII0<#[^h1gU܀L5S^y*QPCI's  6n`T ]hC5}C#I#I0nbOGmG&|g1n ò9q i0 !i@32O|$qZآU G& Oh&L(I9Sᘧ\6WR%u{RD#D1U2p+Hi85r :'2p~ap9iL 1OtCi'~3 (1ЂRp{*LB L`@,OQ샣GwHj찡HC?;pJTAHNu^C$(  Hp'r A,6}*9@>44#lY'Ʌ‘CЁ$/Jh5 ٱAe _IpL82A@%$ rV2A/!3a@KҊ^2<(z9{L$AAV1!ʰH 0rl| Ev2X{ʰ.@ 1m@A ?wx2; Us-%P+Lm DB'vH[ np(a(*o8AsgHgE!n~Gȩiv 8z?Ha (\W @F3u\G&zoa"O@n0QC> T"+1&~O 7k`MwB @)PъW;3wq譱HC/a SGe<RVAG?%:0X:S-~^``& A-В ^c\c ."#YxIfF,Ȓ fh"]#!-DJȑ r_HZy \Vm +<:t͗t:a} 0IG&BKnq)aЭ@\fn2cΙԢ%m Etk7lϭ +pC***f#_Xq7s ͨfӏ:4#Mvbɲ<Ҩ!` UPJ[lijDŽjv' Db!m~`pQ-y?a*PgmP5{1l1DŽϩ4U/k"+"E 0\JTC-:(|LI 5<̋V!f@*aW  $hrHc gH f_x}Q5QW]m C f*$dc@50ԝ .TRW'!d% ]H^~(C> "9dNݹ"$z/W=B -Q\ px0Q|lqð'2a:H _xà'G#M 6eˆFDDݑO 73,93nvDX1QН6,;S 5ޤ~CG%fB=6iC&R׀ ҍa`hI@.,d'E1(8khC`INxB z&8ˆYe׸F7Jbb0نnsЄ'<d{L!jD6I6a(?biz0S4L=Ya(QLh7{/.ܤ('`ғ (e9!M⒎D4aCp4 }hI#zz#x|19NqJ#rIBԮ2J1"T=Y9́1i,!Th1PVկGpB'$ A,A@ц#Q_S64} At}EX A@le Fpm ( !pK\@[f:32adW&R&@p;\}x\rYúioBl;#!Pģg$-~,$n0$Ԑ5DC %uA0 C0@C-D۶q _4e5܃P=҅0 +G.cXH55^ MB'?ӽiv9$K C45myo9^5N7+OG|BO];#2jnd$$6` \=F)PZs`W(A S g =LFN`uTP| iHؐʨ rJcvC*:dIE)S&j`#Sbp\t}B xxGEA Mds&) atCQ?l <4a3!8VsH,\u"O+A2ȁlNl*z O!mhK\95( Hf A'X |`Q6%.qS;L(%؀@{xpyP+ w܄hF><` n],;^v'{ S\hF3}GNr }pCjqĂ4#%Nqy~ 3V$C;atucL{>Bqn`CD(q>8>fw|}^VX`3!cx; pLA֠PXmqK~@[]x.'@M@P!> H3b?{[7E)g> `>b5dB3RQ}A\E)Xk'|ggbr 1 ` &hks}yy'g~Lw@m?w` mq@o}{ |— @ւu 4 PoϦ WzGOH(fG 4q{WvZDig{7GBz R膦 X[ys_˗Asp  qmwЃ{\@`A s 6Ox o7ywƂ0h  {般7Df @Ot' 87j>8@(HdؠMB (pxB O9'F' S" ‡)u``Yr~s ?tȗ~0"9D5o&7A L w@5QӕP\dYwfGhm!,RR HųW/~"Rx\y3jȑ#z]0hՀZ 5`x͛{ɟhZӤHH#QuW:Pq.5jX$.Z`i죤Ζu_Է;w*Vjl$ LH]ܯצIKo-KFJ0&dR$hnۜjdɒK 3XK-*kFЃрŋ4Rָ"akE}/fۏrwF[Lep?y/j.?؜!tsԤN]uKی-YdA^y}A5s& }g#fEE[lf@@g{&ܗH]Ta[pq 4 p.ϒι]A$\gqo^܀Ŏ73C dMât/R7eLr%g|>~ e 3xؚ 2ؠdBX PreJèhF'PjɝdfhDd`HT6{,.Bc5:j @,+|rVR497Ѩ0ڞ !-NbbXaE⺮0 U*:tWf)қoHMЫ!- K }AY" Y%[\0h<꯫GP@,܆䭱D YmhM+ 6BBT]u$D1sd/#}p(BG(Axwu Mzd!x\C#")Bl xg~u!D$HA7=52e - ky|PUUS{FBF װ&BI䮁l7pzP -) e2<$|{>߄$՚O0 mO{8Qk9.!(=P $N2+ Աu8@ D*<AQp4B hC)j@?4 Ԡ `W~&U@ ~^!j!:P@X> ~ԀHF)v\ T@|IYH-IF66ntC7D(V- $"k N(Pr G.]$H%W3a rHfѣ0JṀr^1R$AIuج2svˌT$ șu0F1icØ4EΠkRAOkch1OgOȨHMRkB,ȹlS(?9RhH05bKpBF r)MJT2NHjR&(UP*ȩ}Bt0n| S:V( g6)P|p'D! c & LhB`ֳB>Cu=6 a8S*Y:AgxCJ1anuj; f B[=bLe661UCt[Z7| BCD&2a:jE1~@ek+^7 SȮv_Jj#Km'yW݃[F~ dx;kqEa~tC @E)fK)P|аI U8&{9-n(0QcdDІ6a m,M$y?ej7`C?a8E*bd#qHt|5ġFAU峆gAөxE,sH43H_9ߝF?XXG V8Cx <`E?z>yNÈ=q/O! Gás}I8`G&= C&4 QB]l)wN0D! x@؟47U !Wrmvc- Kł{$loO/pY ,G7H DPmOT$XP4]nc2 P@-TJ0/@d`6wD b홫&G$j }V Ad K  $T94>np *}4AP'd{S,B YeGmn > !ƁgPC|cE+^1x!H8 )^РқA>.̀$%') I$ Tx%&Qˁ9 >X &%'% {G3" .J+Hg:i^6(zf Ph8BXLAuAJOb6NPO~"fzE+FВF KHJ&@! {2*zя!+P!ϒ! 7dJ]<,͠)?nu0գ"-BZQjQ$uȇGэlլSRHZVҴYzV~p(W!@ A|b-+_' 0(>\XcasdQ~|mg T ʜ }2!ld , 8O< ~sәi%v t ~-GuͷzA0gP}1]7yCu(@|w |p({ `=uGW % :0F* {XP(js OQAHO5Cpj<v B ,hOxgSX7xvi >x 7C(cpo`!gHR}=PDpȈ$8Cȇ F0җ1'F{osPpi8!>yG`E ` g6uNxƈ97xŋEXo.w{?PvG8n AxA@roA@P9ǃy$oP ui`yw " dgA0I XQsJm`x<Lkp 0BrPG)M) @UPx8b}rcu]gyqp2YK!,RR H)\Ȑ߾!HŊ 3:DZc}/yQc}9KwΜs#I>}&LΥOI!($H ;;CkԲRf^ѯߞ@,IT1LYNӺ\4U |G5krzn(^HQ߲!DpbҀ0h=(˰ irśhэWDulױOĉҽwѮy(c9Jǖ>}Ƌzu޳~o<͢ kv$tT5Mob - ҂/̄8Q@qfy K)QU^ -jE9ӇPeKazѹ%h≽UQΠR7Y`=ŕ{H 5N?@ߌM>[G,x$8H"< -\H>aВgr$q"wVgrMH}x*VA3lf\ҌbH(rREQJ¡V$y5ӴJ]%V무:rk$ֲD) A?R1: uDjɴj!Aδǯx8!M ϸ[jUrI!f!A"r (C1I _C;u4񢠴V:_qf- / *N|(l$>0cω`ECQFEJ)MO\Ai@B3O=X%jB}6ItrGD++Eje!,eI\/ FR)!A'1^i@8cJ)GK`.J,.$R>S -i 7d}\tѸ,L)GyTL ܄I% x-I^\BDJkFF((DaIG/h'3p U^- {AQ,PPL= x@w<}{V `2J@! 1L~>Ă;!- Ѕ0tixE+?nPDPT`Q #0ހ1H 1ܠ{d@FWG 3a ۻ Ġ4D?jTB( E=` BxUAXPJ4A♧4@,0> х)&)a0-p+LSq,)˂Ԣ7 `Od~AhF, MA}b SB5QNg?o p )FB;*]z@4JNtGt GASQ.(+ CFjw܌I=1ux^WdX@e(:p q#?JLf#9oǡی7CVG7& uyր a z ^;;ѫG7V:5B}zԇ?u׮ZиG8<uv}b@6ǡwc8݀ ̡&؆1Az愘&M-t0& cF1$^o{^Qm{@xE~:! Q'DQz_8AHqA H Ar'Ab'8!sw3y1nm>m<;Ҡ]4as4!W{'Buoy^=ގ Xڅp#!w2aaz{͍kK:ϫdMnb y~!G`9Xti^q{~ǣFB~v `"mXC,O;`>8mbD#? b (Bp롿ۡtCyOo{#6oѦ~Ck@}wPsfi@ wzF@7;~B~{j^V ! 7~a|Fp`yGuyGj|xva~=00D0B0!x8x}Wǃ_JȄD B@ѷgyT g?Dž|>0h7 Vdž6 ۀ@w@|M(ׇs0W Ɛ 7r$u=;|gyU Eǰw|px|G0pPwt( x V~f7^|(}ЗtĨ rxm`[$'v@`|Gyqmpw( ( VxpvxG3G8  A xx ) u x ! i0C0 )mykw\ # *I n`BGxmpw  @M IrpX9t x TYq.spu p 8!,RR H[0Ç#t% $7GC|I(S$K~b7oTL2>{H" ;A{ړ*<U龦L5J*AP%oVҥ;gܹt_ 5 LSh]3Ǹ1z!%,%S~ hu差^dP!a\CF6z4OL-_(&| FFmsԨ]#dhO"ЃT+;{13BH*5k5ԣ3ŗCV Rs 0C XߴʂQ8ᄃyUcOrg0b#/8 45>DhAqwͅ(% 0\sH SJ)}&.fP!$T2NMRHքӗ|Ǒ&&lfcOev-phHxY(} I&ݗ ߌ:*,j -5DN3+yM*`(TBICTRbm-7Ȝ }M,f3(gb/20Z"$V{-/SA J)"nQ,aJ.ABIѵsrɽZ"z 5+~P(D$lН@m1dj)˽RБHR $N,'kNN4qZ @B)l]J#%.@#ډ< -TsA|ô*xDSD$<5Gm %hڏd/h+8θ *~e Q"NH\,v.ڪ$dy$Z7͌N:)߾>S=0#.V ?$2N㡺zG5RX~!!!B[@G:t}C|>5QUE|31 fp[ѨAn)t!)?M? ZȂa@b(2ፐE)xk7@b5x!E8a"٨1񍄠4# - d? Ld 7 3vTh +f'Jhc#XDB`k.U\j&Q f$PiB/l7B֙-tI3ɴVسA&6KCT|#X. X`BDC\'2IV(tPɐP ]PH.x3 fL0m%ac^inPvn%#jԥ1'y~ A h0c50&PKYCGmi2^T{bGSB bA 2Ԥ];ጰ+b6k1o0 nGU,_ ͆k$ jՄWugqpdV}8@H0V)@~Р ]@eZjVfGA ;!VeF3Qq(Xj4tarGm3k]w|5y#RB`o{L`q%/"5h\ NkU,&WغXE Us;j8Ǒb7 lZ0Kl+$8Le3Xύsev\YCɏGּUx ~,p~G; <' i.-}9ixE+`Gn@:A>-!%xh݀"#4 djLs>Q:Bd^ +pA_Ty K:][ZBMj+$ N@ #&XG7 uTֶիCѶ^@ P :Aݾ AqC`A2qu$d8Enw׵ .!i [| BҐ:pB1qncF/ҍqgF Y AG80Mx?'. %z]~{5~ lC萉gbD(7r5CQ$AD8BO|'>1GDr#77: mpzԫ~?zܫ-{D\wG~P:dH ;?$A`oC0ӡD^r3d$yGy;~D0Bmk W~Wrke]7ǀHwp| ~|LQ 0h=yo'B(Gtt 0L!o C|Dh>w|IX K؄hAgGB \G&{1gR@}X{ }sX|vPn7~PLJ! qs@{>B hHx/(ykPgvփ^lj(}X|x-NJrqȉ|aEn}n xx~H~1VBp?Cw}sPxŷvzKGp(JЍ@x`w戎Gzq`xhltpnZ@s|(1JV3jQ>q^ )hP,!Hdګk HAhxae?JZQXϬkN:N0L+J)D鄻Vl<3//F(}r[.Vң#^cnĎ8p1Cb(~⇰ζDQĒ[^c4Xg=ͷZ8 ǭ}"H 2 fx$i$D5SX_97bFv*!if#J27!s?Tz Ss 9Zb 8 ٭=Ȧ@+Tnc9CN8; f쩼ҌM;:80cԜc𧣞x2@m2̀WX:z70";sˈ\ fC8!G&_/!td_dt z{8G=w s!g<&.Sx@1+MC(L!V8kC 0a4ِRsЁ)E-j "NpA8gpF({k -,!:VE{=r qd,c8g8t`@ $hJV^NΰeT"k@C$)iIKҢ@RpFُsh0]IWBpy?q#ʎ=XaS,f-q(p3I+)G,4"b{L-w.GH(=_ɋ^4l(T E1&p$t!k'ip8`A?KkS iN)Aj hP l4/S-xaCjK d*!/ d!ըB☏Vծ^׀A 0լ_k֨R5/BP>wF$!Z5CaiQUc8`kcbcj+GDBUbXxv/t^j 4]l* \Bn@T ^n] a]P'PZ!YHo[t! -q9ۏ %6x)4p [Hv 5$jaA ]lIt ܅? #<nP7a3b}Kb: kPdhbX 62e?a@B(؅)@jPn ]x"w Cf ^~y5, pniF0g (NM"f/[ _ 2$C~|?>0cDs# lKdgo[C H&j s:3{i4A'ՃXYFuV9ArZ;o`$BP3pA 8d8:"?ݖ܅Dd r $V~){0A2PF7ԱuyXeZGvolmA>x@r#L>p7 ,o'^nc#٘yq /v4 !RQ- AC8PL!z1u}[pv ؈ X?@yPaBH`uwcXgӚ fAq_Mw! a W_JoN/^àhgm{si3 xB{ְۡO[?u`.sg_Y$s0Gg~Ǘ|k@GzgxPs7{7 tiG`|vTwC znPzu}gxgVGt !(%hT7)w|'0G5W 4/m20Vp3`c qA(g*Gt 4 cW7{^_rw+v@w І4Wsph7s +hzq|}hi(G 7bw v08|؀hc,&0 c0E trWswiz׆TUsqp,H1US` Ynj3hxWxQp  wHȄXsrW ؎xyzxs0 .' "Yx ^G $I ` J p `Fi'۰h>vh_7xMdn0c9s!,RR H,֫WPB*U,g!ȱG}s֬)YGP=QiǛ8= OTgJ=P*O)v9[T Zj=`WFyBV)hC@ ԷCdֻ_B!8Џ!4˘*3Rz5ꮠ>yI%$@@ A2SɓfgOa`=(5Α>BJП?[1Σm'Kv 7Ҧ[ y;.g+)WZy<ĞI`'(*;.ڨveV)Aorxj*N1(< *HjJ)~9⥴EQ됾饠!:l(+$!:g8>~;ުȎEboOأ{&G˯uoV3 LoG;NT "#lU^`! ^jAQ'orW 3yHl[UևXI=Cm+c>Dau" cw:0BDorfr^,8B!<=c嘛sN: U&*O8C43N$!$–gn8c[AP1õ~; z被 |θ3;9<\ߠ]3/;qp_#>PS_TYX¶5ARKAJE>й|GǏů57*G8wLE:07 p<}La?{sxi>xL aF^T}/_x hHFazSbA,E c iq( spG^xd'J2q s e.~Gj|*Mnғ( ^ %@UqvؤA Qₑ/qcPҒ~L/0aѨeeA LH⛕-Y~0s@ÚIG"y Y|󞒨D%,!Z$88lC@ ZX(DeaK`|%b 0f!ђFTF?Rћ\2h, * HH&.,ڏg#-(5CzZЂx!GH<*W:ƃ ?BH4"`X @RbC#J׺ҵGE-a!ңI@AO3x#a&gu$9BDy@O`$U0`3±#ᱍjbApnx[0 iLȇW6@ I_ͮo2BUl-#A1@G $<QZfGТH0|hP0.X ^ovHU BtT @ s0q gXa "a al?NDx`olߠ `H`"鄑G Lo^{'EBQȂ :A t-W_3o@HDB26 0;!qD({t2AAf-g UB}̀Gӂu8/:Yw&B@=M,j0~Z&]}/ک-H(`6p04 rD&D!>4 ݏv_4DtHCDi Bps[ݝ(uxwUmfoi!q Dkx )!0An#,=j<;x?^0|Xք &4E[ns8y1qld?/-o@ JH @-t!E8XG:^na vH<; Qg_N} n@>na.ܝFD1Xz/'1?/h;t Q Nء V7Bpկ`:3Nz :CDB1F&09l't?{W\7}pw,A 8! t~rjFzGt W ٷ7v~4@a]w~hGv{W{%(  0HrGg}?UBxAo}5@ah`rQa `4gsng>G+`0_ 0VoX;ȃ! W40{D82&`V 0 or}%x^x50 (xs <؃sH{АqNJJ'o] / s؁G{h'ykwzhtxp (  8sf?}gt7`jN( 騋g7yHlw۰ W鎵}fR 7YR@` $i وv" ]p5@v !Y&L H @s;Y@; #}AW*M UiےQ&@wdM!,RR H۱7!k֬8}3jqc>v.{E22UJDXH&wU ɟ @}( 4NPik[ϞRbЯ٣l͌`q(&e֭Fرe@ % U*~אWH:ԟ?_wOB.;6?WL+2 {36'E7f͌YXQɞMeA|tʼnO "HBQrg͛yjhw'y |! {Ø86_2T+bexDo9 ā"3ZJ}a]EDJ7Ax0ȏˉ_|XJ*LWJEnP,фw DAz-$O6T2]}\懖-w$j IFm㠋0:92JexAF'b"̸%}XQ|ifr@"[;8#liX:K0kA i"eTM:*Nj)Ge!J`dA PU{l R9_ߗ"֤n䮨&*/J'*a *,AxPkkuTm3lvAfA?[Q\pJ*PưP~qh!f1G[#2\X*⊪Z+͵uE.:m| CD8#jϥ%ӵ.6q3Զ3Vv~nfQ!DB! MM8|#H1cLxP쳏1 abQ9ښsA c~AL @Cʖ>Kh % ko( SL/ K`rEm<`\tصHT(l_ @؄>*@ D P";a&4ZH`:a&6"B!B@^&ZhDT~@t`o8F A r륃x|я#/#@ :1>E7r|dk ~t^$I~c51VN$c:Gd HI{p0]i K:q@e.C9& =x k 49!e>d41UbƬv)oAg?akS84,#ӝI@ 0Af+_⡹01LkAF:9 ԚDG _PԕH Κ< g:P4h%,ӑ &LyiH59AT aF?xqZB.nʋ#UG d 6q/d!JH-FURXU(@ x@\}@! و<1 Kxֳ+`1 6)S Pl}P4"װ-hV0m?|a4ulۃC>H_bD%|[[p0.;P@#a 5xG,"ȯ"! ʂ`hq47Mo\w"8p'1yH>`(0!cC|۸!}LՅa w/&J _0TYG ]APk"0"5$C˄rJ4h'dS69:XtG b43Ǐ(-QQF<:۹ƙ0hbf0-A =0$[k dIS2 NY.T// . cEF=  :Ai`\a k3Pcl .l! B@j0 V& d־vܠv n;l(1`onxg 7Ђ]jB`Ð7'9́0G8ہ($mcGg45, Op]sq9y1qcE#jo nt'h:cB0wp!a9ٳn=_PA?jPx#'^ #DD&6ȡ +φ:+3}D Rc \ "0, kp&NasCDo{[wςBGD"0}F!w>}fx7 ~nyvys~]~~f 6'{}{g'gW|~w4 `}w ٗsp.@4ׂEfqw kk9h{{wv5mGyg~qoej@ P ІS؁XvW2B8|1|n,e` $jnr8={x(^}n`& ֆx؃g wQ]ew s= ggHaaW 0 `(qtX됅r]'ȱp 08v׃xvUy'H؀ eh  v-~W~7^P E p 8q{Ǐ083y ]S7N ۀ&Y@م7@$ij}vX?مf +'Oa%s (c,)~wFyD\ yks 7-Ys]y877v7w^Pf 5j6e s+v9;dtkwidget-2.1.1/doc/images/DStackWidget.gif000066400000000000000000001210141352002233700205130ustar00rootroot00000000000000GIF89ak  +":1% 37 &-> U7_ -h10rU QYZl dv6Om.jv^c`iUUUUL^zXkssEkluw 1 FQiidjpsnx ~m`/O"^1m6{ho%U^`UU9;!45.,^UIRP`lnUg# "lKR4N W.dg'g`Uw&UUUgUی*זPɛkʢWتuISls׭ԱՎұ˃ʪӴŲӉЬ9! NETSCAPE2.0!c,kGzɃ׎]sƁ6ٲcƂr*OIɓ(S\ɲ˗0cʜI͛8s U*V~3vli#w.vChP |*dܸpExFWRIdηpʝKݻ/hd*ժup>:^ՁWkb-36,VP ӨS^ͺuLDZWaƖ5+l bR>u^aLg`=Tسk_S(VZNOUwQ4·A*&Gm'hHm8w?"1EbT {I&WD4}8wVZ0# P.#aRra7DQDY% HTViFH~&QH)U@F Y #.h}IVڽ@G F@ m}y4TpP;ΐk&% [H稤:d"E `B,ME)dZ*rh:f@׊t-HróF+Vkfv-Ii,-DJxFa0@ شk=F&r_ft(,ypIA "  I$Y br5jMrIyp1>x還-qdZgr_ʜ<7?X6<1ϼQ#9攣E&=eM?ǑZDH8l=Rv],1PFhoz2gM-7y'؃NYWl/~b*O7ZNYΓ(](y:j'N鍧o'7|.=]BCE8g4+M}&;h<E녻}y` HAqY"B]?ށ/D4, 4\\# 'p"@P !1ᡂy6,wDR Jmap## A/|;" eD"?> D mB#!+E--\Y& Q6"=% "HdH2r=[ctW*7T*K ~|# +@T`Kя< A<^ 7:$(29vpZ1C!QHp=Pr-4t){=34K;0aĩIϜd'sȏ}pqH=Y<0 ``zKZbLɁb 1ki#@ͨVQAB(_i6uM(-FVJqo2E $NNր%(G^DX%w$:V'@zEH˚4k K]:v{Vtb65(GA6 ibK tX(@*ba/?*(i*P-z_!O W="*HyGl% xg%8%8 VN76H.CH]4!*`DKGʚwiPZz<`Lcc9F8ujηnqO-6AmlPvPt<}[v7 a v;;V)LF8D6lp/95y4VwO:!FWHvh^{"G(4塝vA0n$φ˜tG܆ ys_]*׺lx;E]iz"?ds?z4Ҧ5Q?CyZBY|䕲{YgP8nJߺoC^|~|g}j/{\=o᫟[? Cꗷ~ϟe_?[ɷy7oq_-s_ &(D{x5cc C((pWy7q,(Fh|6+r+ &wx؂>'jr9(oW~x?؄+hl1ꁃ'hz){\xP~nCsMpJ؅]Wpg6Tp4XH~<{l }j:{|7}GDŽN}LjYX?>7׃؄8{vHzX8B8z񗆤-x޷m|Ȃ(zHz*H~׋Ȩ،XH؊荎GX{Byhָ5yrhg (gȏ见>&Xd)pg8 }/XhBh5hAƗ|~x.EvXIxwlTHz"I}$)3Ig`즓/9)'gKɔhGɓIYV|󘊶1_{aɋSUy=ɖ 開ϸXvwxyrٕTɗ}tiYiIs9(tɘo9{Ik9\ٙ~㘍mIhi(ɊY} Hh&y:Ɛz8:1h9kXi +j߉ṙIzɚٞ[D9yJyQ r؟)Uhꉠə My:\~{٠j UZj[.M0z'3Q5jڈ9Jqɢ}0yiG1LIbi뉡SJyڣKd *c8Qh:=dfo ?qZu:9wtӧy:z-ZȦ6 zsYʧjPi7 [s:j5 YDJJ3کEZ3s֩-? ID@|0IŚ JupZ*ָ I:Z*5@  ЮP@z 9 t >@3@ Э۰ )pL5 |"hPA @5@ 1*`HZE`eʪcq jrв:BTګjzA A'< \HAm% vio1 DaOw .Їu2qI+ ff~~Pg;\ѥsEVZnG`O{ý'>'riUH5Pwi\l7ǀ-䞄gaXy!7bX*vB#^XrB\H?h~P [x`I"X 7.GHyd1@W 2xq2x]x'©IQGT`@h@łvK/Jvl͖f&LVMJT=ޭޤ+qӯ+,Ne4%KV>2R6?8:ҾAme% d =Dn?!," = CN*\ȰÆrC$ŋ3j!j!," , 诠*\ȰÇ#JHŋVSfǏ CIAS\ɲ˗0*k/J6sɳj|Z)ѣHs*bPJzUOjեծK¯TkۭɝKݻx]߿MLp]D+^Sǐv9p1[Ƙ3tɕkM"gϨ킶\k <5`^ ;87cu^,r8򳚂1F iBE Bt 7AEvX$d.%~Q)!j8f"*ئZp&jwf@-Iux.X'f(^ vY! ;QQs/Rqrʛ&'u!á}Tr\-+-T>ZfkT1t+䊋6VkPʫKs»Ys/ g9$,16lqJ(Sw ,r!, ̘*\ȰÇJH@eiȱGgɓ(Sqe|얹4Y̛8sVԨ";k=/ J~FXҧE>uURRWYvYٳhӪ]˶۷pHnYxݻVnݿ ˁ;h]I0k_0Ⳋ݇=`Ph#:_ɔSxqcxʆAKXPɀu2@ǯPэ=/P9ZqfA[~g8ŏKYnI r-@@,%hȒPAs =Z 0Gav+Ht^{l,q?8"?` ,0i``hBwfYÀ`h] fA~s X^upbPY0jvH\?~֑鏙h&)Y]!YRNdx1Ah'ũYfpKÚ!9c@z-"J1hj_C+̾ͧ *f$1sk]gl+@k[vYebyfr春]mwcRg].Gh o)h+l1I a'}!'Xi-,2x3 8v'Ăr 0.g5ddGEڽpzɡ~A8 |` 8o@yU]/,!kyf}|6+?@]SΫ?q?3.ds\L>gw砇.z^.騧zk.;;zL=FѣYsyRd|HcE9ϓ?(Sw/Fk!, ̘*\ȰÇJHDeiȱǏ C)Rv,\ɲ˗7dݲ8s(Z@(";kE*QYʥPfԫ85u(֭]îVى]˴,[i}۵_1~x˷߿ZÈ{+ǐVLe#k$yӨCf̺oyCvK {VpW5hѤ*r;(x EA~ߚ ^o/{ E1@=7  }S l Lp@t|`@v?Eu$&Z+EqrD+kBkN`)?%'.t:f,xy !'~E/6ʦ~W;it6*:pO!j0^Bf@6@-Mn4hDbOVW*eײ5â}IvmbʝKݻx}Yl߿AK{] ̸Ð#r?$\n,5 BϡG[o/ ̼ye"vMܻOPɀu@ǯPэ=/P,q*,{q/ L`@s}{`@u\I'G1-q=P$.Gd0rq .Tp{q''+DA7"= f#>  bn#Xb,{?|7G{hfLws\FUrweåm])D\wʱfR ?GJG*Wq-~;jc eiڜ?Ů+?С:bom,Gʸpm\kN]3Ŋyl,8k[RftEȡyɧr)khiߣ9 ?ll1{AȦ60c f:$茕~驫n;JW1o~QO|E71DOD27f9ۗ|Q9/C2/5 H}`!J," ̘*\#JHEʬȱǏ Cv|](S㨲˖-{IS jjܨOlQɡ)y"]L7zիbOֈVn*&ٲaR=+_1~pʝK]jɷ/߷w ^̘q.@w%,q!x8g8ʗSRÞ@0(Ip3Οsw =7퉐%?lYe"Avl?ĭ[w}" oMpWx|?=~" nyJdQ! s }S h Ll@sמk`@vOfPWg5-q=P$.Gd0rq .T^|q GE+Hts` `kDsAq=   1#*&W,tW|?|!\7GN|TfMvIsW~6 ])\{]\pu^ @")vB yj\ba|ji7 >^鏂'h6ǏzK̪*WEW/& >+j+l$a-?D8{\Smf pnHEȢ} K(F j3i\JhDF2s=,ӾYL1 HPSIF!," l 4毠*\ȰCʬHŋ R|ȱǏ[Ɖ%S\鏝52œI3!>,7ܹ L<У*ӏ0JՇQjfw`VG~hM2V]Y~ kplَ԰W ml۩qWK,^E{e Ck0FD}k27c<%TK4 Y H ^`D9ˣKN \3U4(x "#sOKGWx(ng=Iv#y  g!j=l'ppY[Zc0Z_ ?ŝ@`"΃Br\]5_E^X\l5X9&$ZNB9didgHNBTft8;IXvi%3Bfc|(&d>yif5ţhGp bqxbM^bS-Oژޠ8=Z( )E}ԡ"yX*ߧ _7N.`)`lfZI#mXf KظOm(-]Ag 7]>W\ĞQl1ZQ>=ʈL&[ED*C2-E9lT1<SsP\P@!," S Hʬ[ȰÇ#J|xE-ȱG ?ȓ#oʗU´hl͂nfΞysb*]Ш@LJmzՁPje=`Ph;i֭h cG=.DxY0oM@?0D,Dէv#7߽%p=FD z̚˙ Eۑ b 92fmzJ[|xⰑ+m9tӥqq~i!7ɧ=!{WA/g,xɧy%_|C`a|[9Zi(LyT"U&.=ʤQ(RCC238TB9&%P@!," , H)\ȰÇ#JHŋ3j1b5eBIɓ(Gv|8p˗0cʜIvjԘpϟ@ }XУ {"]ʴӅr> oիXa*ׯ`2*Vײh2%۷ʝ x˷_pKpL+^W㸆#Kƈ$'1K(`ɨS7| m.g+[Ο شc~eze b/1nТIߘؾZ HPq+6fw"AA zwJY' aݳq-[ ^m!u@nx1@tDzp \x\'a au(behNM?pqw=[tWE\)lOFy^zSVyemɛ`yx^eyhB鎔ƥ?8w rh ؉P:Uȁ rifSc!!hxtwFQuO5~ ١T~lPn欳B55쵉EKTL>+kjR-+*;[/ctL=o0D֜c)s=gLw̰2ń,$l(!, j̘*\Ȱ!C#JH12k2jȱ?eUII&SNnʁ^ʜ 1#͙쬩T&ϒ621H)zLjQP-ZiSIbhd1~`ÊKٳfR,ֱmhʝKVDn9-- wt d,rΎ3?y5 6~} b'N_ IS1Iǐ#ʆ˜Ǿ^φ+ȯm~`MbeK %ـd0uW($z4Lj }d/[LZ\rlA!sEU7W]lEaؤ>q#?&\jpR&?(֠shq>)Sj6h:n2'ih?f{V8[XvjZJ٣0i?%鏝jV㏞9g+l^qKhbGhX3acKj.x/29d ,?A9Vy: q PAKޡ@EopK/JxG P;Á3cvEg^,\=,l1$L7P?]4D?tXguS Tu[Wo-\wuGCkOM2Zsto=59U9 wjC2.e2$7?E!, ̘*\ȰÇ JZ3jȱǏ =JT.ē(S\ɲK+[沦͛8¬.ϟ?/dg ѣ,/*3S.tJEcUUW~WhSMVYbۢWݻx˷߿}o I^̸cKLnoIN{|P!yyJW^ͺ`PhYsڛzW4iƱg+$ߓwVݺyA0wwY;hҩ!/w~oLp-$E;B=3 g ȡ=Pd|ZylL;] EY-է} C7?{0=KY;в&;R /lPG$@.H$^x ӅyyA;Dp s1Y،5VqB x?Jh?PXqq=W$0ft~cv칩ky%>x\pOw}G\5hw-5`:nwuJu꒮ Z驖\O#,i&2(p Z(^kkF:)I.3^q ZG$9ZO!Kk0x12x * l` r& !"@!?4 T DwXrr,&lu5cidWbolp-tӍv1S|X7wnk.sԃ=,5D扳DE2鏧D9˄.@(SnRE'P@!K," ̘*\P#JHq2k2jȱǏ*kɓ5\a>vZʤZ8#fs";k=sfTV2̝F⋙eFcMe*Օ^=9u+N^i ++Yc>W۷pʝKWZ@˷mݿ]䄻t E 9|ˆCT m;_ɔZ,懦Q+$E-Fl@:,A]rm/ߙvٸy1~õ$ V E @}L;LV] E9-뵧{| C7 }Eyv1l1gK  Ё  !a޲vtw^-|D=. g""sI@'p~c dB$K䓺I}x |æ=םHafs;5w\LuY~5n ώ5H珔s0?[N\޷Z)*dQN 릑"6Glby @`A]+چȁdmh6_-^Ŭ-t]QoE|Hm7Ex}L=}>ѣL Ysᐧ8D`ĸG(s=w d2Ťꬷ#~!!," \ 4毠*\ȰAeIHE':ȱ#|yTQȓ(7 Ɩ0aSc̛) 4G5(~*]XӧHJ=ՉI _V`k0^j_٭]!?0(,$Wu]lY~p[;(ro[ &l= @9Ap ؽAnmi-G7~ߒ@2ڇsh`ǡZ"l3@ܲ`$ I=k$r.M&<%ĝetNbUxqiƠW[mž{Wrw ̒mq=JGD!ZR U!0za|Հ"?;HbѨ]cvE&g`K6֓+w  u"rIx{q!"&qLEnf GxryDKxyr c!ٗ~"(ezI ZyTlDs(PA"lpK/Jwp ݢ]6PN=uY>J%.a䖫Թk.RD2N4o=Q̻/)C2 UD !," C HP2k*\ȰÇ80e3jqŽYI$ń$a4ɲ$JZٯd̙83քg EJ(ÒB*]z4#2jTS~Qj%j@[2[HSq˫?bg6@w"Їkܿ 2#'} 9f9.pS}lʗj+g˓EZnϔQc^U[קCM)$3|8Sƕ"O^$=e̫$0:-~}AC!," , H*\ȰÇ#JHŋ3jLXM CIɐn\ɲ˗0cT.̛ɳϟ,R'ѣH*mRJJbʵ+˫^SKBX -hۭɝKݻx]WۿK}^x๽C`)XmϠY> &@\.c̹аcOͯ< gLk'|2*~{ E!W:u0 D4$V)=pڶqr.*D^f;< ]`  桧z~'gݶ_}s XuTfWBEt ޒF8ዀU rwk#(] )"DXW|hc9z]Oy*>^X%AS\4`^MCf)gX[sE}`?ALP f.Y 眐bT4t;c]Q)y| T<Oі۫]kJ {AH뮂+;&S16"/1 F+ܾtL=نݖ{5爫ۚnFʜCϺjڻfd2,!, h̘*\ȰB#JHQ2k2jQ?eUI$I&SBnJڽI_ƚ/YL$Ο#o-KcCJ짴$ңM2ZJTN*bŠKٳhrX[`ʝKwZmߺ+~; 9r%MW/Ga+‡CB[Όw̯<F;(<ZFߚ íܻǯPa#N#@9AO{[@w[ ͟+~M~}.*Qqh;^-|Ã= =Z `XY `q;ՠar\!KzMt b ?DdmƏ -=\fBi\ HVdA ĕvݨ})ZifiY'g٤?vi|Fgx)cFڈH ? XEUϓJzHPJyVj)~ERu :6.Y *"Cr cO#q'iGR\#Hu` d1G%(PᛖY ,¦few+#iwlVo$l( (0,-#c̬,|^;L2ZsL 29}94mu\C2Ne2ń-dmhE]!, ̘*\ȰÇSfŋ3jȱǏ%*kOɓ(S\ɲeˋ[沦͛8M¬.ϟ@YLZУHWZTV2SCQjPƬjoe֭`mRfӦĮ*ɺMۯx˷߿,È7 ̸{'Lx{1>~ɼ-^]0VhҍzwxSN5.=;(x?$^‰k[d<7`k1"H G=(_l;['ݨp^m!b!s !a{'#;<^`  " ܳu>RA `zqunhG&'a}s {*^1 q!xA'?$A\,`?MyvW R 2o"f5sA wq h\Ri!ʏ5z(?)w!*ZUzvyaY&|͡i]ߞt&gr['~FZj!ERu R!㌸qqp^$2,2i$&[*TDz; Pq~ T- :o'Kq.ςT,?KFPG-TWmW+Mc`-[oصhvS) ]6kԳtg=ʼm54NDNEzk89C2.5cgw矋Dx !,L ̘*\ȰÇSfŋ3jȱǏ%*kOɓ(S\ɲeˋ[沦͛8M¬.ϟ@YLZУHWZTV2SCQjPƬjoe֭`mRfӦĮ*ɺMۯx˷߿,È7 ̸{'Lx{1>~ɼ-^]0VhҍzwxSN5.=;(x?$^‰k[d<7`k1"H G=(_l;['ݨp^m!b!s !a{'#;<^`  " ܳu>RA `zqunhG&'a}s {*^1 q!xA'?$A\,`?MyvW R 2o"f5sA wq h\Ri!ʏ5z(?)w!*ZUzvyaY&|͡i]ߞt&gr['~FZj!ERu R!㌸qqp^$2,2i$&[*TDz; Pq~ T- :o'Kq.ςT,?KFPG-TWmW+Mc`-[oصhvS) ]6kԳtg=ʼm54NDNEzk89C2.5cgw矋Dx !1," ̘*\P#JH2k2jȱǏ-WɊOTݲ0K.͉oΝy3'Q^Rt*ue?UOF +W^2,Y[˶۷p=kȻx˷o_%L8^C6ܧl! .` cɔYn m]Æθ7~ӐQWX[;(`O۹sdnQ=~"X~<p"H @wJv~3bi C7Etu[owPA ad(#ڴ Ё  -w=K$_@G<rܣEaM[=8'SyE6@co(Zbh}s  s@k-`N&_y˕ dX0h/P'o^vF?y)[g/zn2 (@*)Y>nکRYji]n֟?'?jiq+'ۛņRu 왈GOe^A$2+2㏒j rZP]#|%&*@Ku@}<`; 7Ln`}k3G83=g>H'L74DOц=mXG-T`'uD\}L=a}ѣ xYst7Ͷ?`7H(%s=u.6| d24G.G} !," X 4毠*\Ȱ2k"JHDjȑa>v:.QɓYC"˗,/#͛" ,F4y(~*=X̢ӧHJm Ĥi 94j*V[ #UQ,?e-(v׎lx0ݍiiśb]@NZ1"H G=(n7NxtW(Ž N{1] ((V0$Ң[tBOjsOK"j~ }"cAߺ?oIp0=W$0Km,Cc1D}q.X~QןA s|&§XoVeÖV]_~Ո%FpC`@6ci%H_9j# 8Z I"E(Ya%Ή@d1@W =uʁ=q) VG>]2*@ftO/M T R**cRT>ީ⤪o:Jԫ*kNd뭮*Q>=DDl&C2O1IU[P@!," ? (P~*\ȰÇ Jݲ3jܘ1!Gv89F|I\9Fc,c̛iN Jt!ǠE*5ҧEB:T*ի wLG7~`:J9 زpYW(?¥C} 5py c5 ob|vTƈ+[~juΞMt4iO?HO|]#=rhhP7j!," , HП*\ȰÇ#JHŋ3*̘Ǐ CIH5\ɲ˗0cS.̘oɳϖdsѣHTfS~NJ*UPjʵծKl¯[ MiۭɝKݻx]߿JL]j+^SwXX}W̲<qAƠCt,Pjay.fօaa3[ѸsO$͏P! ڡכ *BvQУ+tK  {nKހwd-[cw.VFDpR`}IpЍ AfH }'ؓ_s'nF0 r0i?| V>0\͡a}y(dh%XݑvLw܁gCfXj\B+dR{IIĎuam!j)[\"OCDtf6g7Gtȏings6JVz;@buLx(2qA,9*kWVOy=j|N@/,au:Tfܴ9 QmabP#k覛n߶S+0K'tL=\'50*,qFʜC/L1 ,$l$!, h̘*\Ȱ!B#JHQ~3jȱ?eQIIOݲI&ƚ+Y)PH@) JKƈ*qȤH*m*U"TW⤪U`VKٳhӒXǷêKX+w;,pg+ fՕh6(?{[( X$.LfaaO,|d~"OЎԜzV WAـjȭ UE}]y%oJ/GL%0 Y|[ ^ޟ`9oM/ BkqZlDІ, xA@0q]!+Dzw=woB 1|Oz \A #?M'VY wbe7Gb&Ze=4I8?`!D򘑏@.bvwܜ ?eAWf =PdpKiqf?l*nv dJq'Xbi'Xife!)?Bn Z=I_HdbIv*#!%bԑ!(2z@0_n 6\q!2"0B( i?κ\w=GG.zDN@/,1"sޑVarZx 4m-lZ1Ϝ\1@-D?:sL7tG'OWm59 1\xѣ֜EEEt=htUMYL1|߀.~We!, ̘*\ȰÇYGŋ3jȱcGɓ(S\ɒ%E억I͒ɳO/Q<ʔiPd61X{3y5W~+ٳ(â] rkIl+Ưݻx˷_&yLt*^̸q#K\1wXX}WL.dʨSs\PjaM4m԰W mON5?B'hp϶G+Ud7wP6puy1X"F2+Māpuy1X"F2+MāA;ڲkm{ Yʰˁ;D mؔ4F!|S G Lv4X}q! >pug GqbIpЍ dH&g?`OݳvAqPA` ,0na|؜ G3$qdՀa[0G[a#A?*7Z~sėI !(P[JiVh{wDp)s§{Y? \::Ks%vS ڊr=z#m>Zi[vi~OE`9D?A7syf{fک?&qj;&&!U2k@ɏ%b 4vqvn 6\"2HL$Yilsqmgy~:7l-߰@I,rHg&wEr-YFcXg\k-5oTd5aULl} 6FdM2s4d9x\wG(s=7vZ d2dwe !," G*\2#J(јŋ3jȱFe HɓˇȖ0cJn~2sʬNI>dg УD*(S|զW5ծz*V׮dʰ۷Gݻx݋ܿ˷w^w0wXX.(}WB̹3?ŌC3,VW`+`¢Y̛R]0(y+Bt#A}vhsY3^Ej{evAe/Vuwݖu*Q=oE |`7MH&m`@|ObepqlxA@0qa6+D@bx=JwMoBD  am8\67 Ds$q;ZFP>vtuq&i=\_)m$IᇚѨ&X zeZ'l<&{sF| J%X9b7ʫ,hF&t7g\馝~*ʘUCDt\Dfޙwfpj+v;*j]wtux?N;@bux(2lz@ xĂ=W <E喋;?E:|I{>~ZN@/,q>^Wi !qcsatacY--^M;W\w`uV/5Ub]]vBg?t6\U|7M2we9{mx[ʜC܇G5=$mYSt砇.複@!,U G*\ȰajIHŋ3jܨQ5 Iɓ(ST]ȕ0cʜ92e/iɳK"y D*,HKķԫ;kLc\EudرhGMd٧mۂuHݻǷ߿ Lpbx+^\PHÐ#K1˘:+QJYS EXөKㆼK {|Ц/kG(~ >Z7jȽŏ'w>/84",rλ- xn* ?7EK~z|MPBxrix`tArvhA ,=K|   X:Db&Z'H7I l5xWi}sx`AF0dփa5be(H B`'6(rXF 2@@-ZꕉI%V:u,v xפ)$pDv)_zjƦ'aF૝;kܲ6k]`%?^ $Q ;vq }n 6\A#28$`2*fua;` Ky^~-ߤ@^._fTWmXg\w5QgdmYecpSڋSHqw(3C7y֜ބ9=2xP#Q1gw砇G!, G*\2#J(јŋ3jȱFe HɓˇȖ0cJn~2sʬNI>dg УD*(S|զW5ծz*V׮dʰ۷Gݻx݋ܿ˷w^w0wXX.(}WB̹3?ŌC3,VW`+`¢Y̛R]0(y+Bt#A}vhsY3^Ej{evAe/Vuwݖu*Q=oE |`7MH&m`@|ObepqlxA@0qa6+D@bx=JwMoBD  am8\67 Ds$q;ZFP>vtuq&i=\_)m$IᇚѨ&X zeZ'l<&{sF| J%X9b7ʫ,hF&t7g\馝~*ʘUCDt\Dfޙwfpj+v;*j]wtux?N;@bux(2lz@ xĂ=W <E喋;?E:|I{>~ZN@/,q>^Wi !qcsatacY--^M;W\w`uV/5Ub]]vBg?t6\U|7M2we9{mx[ʜC܇G5=$mYSt砇.複@!, yG*\ȰajIHŋ)$(Ǐ CIHe6\#˗0cRK1oӤ|u,oѣ},$ӦPq*4RX_N uï`ÊEX#hӪ]˶ٱp-X֣ۻx˷aݎ ]^$Ŷ ,aZX^XZȠJG(~жYmgƟCwVPw9pݖ 3(dUduKAxVw~ߒp@]LI@SNa_ "'FY 4ws5Au w/pz >(b-x`B+,Z}HD":Hk7D?ݴ!5v%2vq%b usI>xwp@gyls]JO!ehVk|Ɩu)(Z7Z>&袌6(ѣVhj首b:1t騔z*5Jꪋnd*dʤꬉ*dS̮k@!," , H1e)\ȰÇ#JHŋ3jȱc~ CII[汥˗0cʜIaȚ1%ɳϟ@e KH*]Js(SƞJJ~V)FʵחX:*ٳ6[˶۶ʝݻxA6.ݿLX/^̘gwVܸ喐3̗Ϡ+j2<+aR텤I'{ȹ%ٷ'=Z+ ffaouȕk\su~]̷aCp=#'o-嶇tї^~εcVpWZ(!Wf;hMW^~h`!5b_'8Uy#4Hc.x裍8(L<29.i?ң TIPHNUv ֕%eI#=噘9R1l i R@!," H H?c*\ȰÇ Y3H`3jܸ1e)b I$EvMeH| [sI13kxSΟ{GѣH*]KPJEeQ0Lʕ_աDj fR}6wP6+Wbo+Q~(!W Ĉ }d/r[Lhސyw[ mo }~aê`#mH@z,S~oIuy!<= 瞖;r}goB+[- $ŗڽwbX|q ?DP^tq|i8ـh^[J{DYafaQq]x&xG_`}U0n(vK1Hj:6xrp.Y P!Cr cr=7O^;㖂QcR61(P1ilp _h;EgڱeצP}e.iIjꩨꪬ:*I5*묩jK+=밲&*=TR1F+VkJ$P@!," X̟*\ȰÆ"JHј2kǏ2ځ\ɲAYSѥ͛ azķΟ@1QC==4$HcŚJ}ȯիX:¬`nM؋ ?9 9RÆL Q-_lA_f{<?t+Յl(yBŋ2*}{ EQ?`U1"K G=(`, fnKxt'{DŽڱnm1~Eسkw`ǣ¿$ I=ݢrܳf ?xAvhvyEЃ>|s F[ eU1U2[f ;.Mt=W$0l,bX(ȌU|#?W DPl86l#X?OҘ-S.wʶ%szecd&$zxi.bi%y1F Yb:*@ I&Hz`?A|WeeYɸ.G]d1W\ =ʁ=B(ᘥH⩀UbTlr;&)XFAO/6mpKu ÂѮYc^ Z\repW4MElS|sL=Wq\tNL199CI$3N[[]dP@!," qG VS&Ç#JHџ3jܘQ+VT.ȓ(S$b>vVX̛8鏝9I$P+jSKʳӫWZqNMHlh]˶[Ex׷x;o {1>ky! 'p,L LōQA2iȏJ6<9d3cl({7jW',&pxro+Z(!cD@{PC`nxZB RZ"$h~5h)b* ?DPt0F2fki喷oRX})_z(:ZB*)9$K:dvJ'jzfɥMcyfE,id. K1~r^Kpyō"2*FBm 7T<t2;lk[Qy" TG|-ݷà>VmRfSo+c2p/r<<3(x38l=Dτ@143Pӣ֜cuNXCMGR+s=_N5[P(cx7 !,; G*\2#JHQ3jȱǍʬA,Xɓ&ˇeD.cݲftYN ZСH!*cѦC- N5FUΫ^_ulLf˚mɕ۷p [돟ݻx˷bq F8wÈXia13b^l4_A M]4PG-TGҺ1]\wXduqSYf]6=ʠ 5[#o)$s=Z-s@|eCXG.W.yH!,n G*\Ȱaj3Fŋ3jȱcGe$Hɓ(S\RY|" IM-ϟ@UkwRfУHQf4Ӥ`lO|zZXJ\4VY^Q=V"ٶp~ûxEX,% LÈ˸}Q&Le‹k0^La0^m83װ=  l VM m}5er?wS~ep֡G]o1ߚ íǯPN@9y-AX C7EM(vuw-ל?.T@Dj p  RܳDvBfA `{qfs{='#_|8i _ |sE{g^ s _=ztѥf s'DP{07j(B_t"i F{C駬0jaVX,`XꡢjYf y&Qg'({2s~ *K16xĎ֦KyEг؃L~jȲ'>ZkT נmp˃fʑHo84~%vKkYDTmXg\wF}mhuboF?j-Vcs|<5=ݝ5CNHs9PtCN55 T砇.褗n騣@!, G*\2#JHQ3jȱǍʬA,Xɓ&ˇeD.cݲftYN ZСH!*cѦC- N5FUΫ^_ulLf˚mɕ۷p [돟ݻx˷bq F8wÈXia13b^l4_A M]4PG-TGҺ1]\wXduqSYf]6=ʠ 5[#o)$s=Z-s@|eCXG.W.yH!, `G*\Ȱaj3FE JȱǏ C]>Ajɲ˗cM8sTvf?u :ҘJD*h)ͥP6}JӡիX",ׯ_K ׏`Ӗ]˶YC_Zm%V Apew}u9‡#g-[de37I}WŌr.*&M{!Ӌ#' ģ5rCNԻ{nA8ޫw.,gT< =v⍏ןdI(P> 6 )菃BH H:hadQnh5|"2#щ ^D$P18#!," , H*<̚#JHŋ3jȱǏ CZGɓ$Eݲ0cʜIM%oΟ@ /%ѣDʴSF5&ի1aIuׯ`#j ;+ٳhȯ۷pʝKnbi/J wY*7ˁ;o]I0keˆ3kXqǑ'WK {mv9nͰcO3d) U4wP6niэ=/$d*ŏ7 ߊLIvoP9@%:!Gr @ TזdJ pЍwgyݳpAqPA` ,0Lb #s FᆬA}s (DjX=96#9dGrHA-dZOWfi'X[;Ipȏc-(DypVInwUIҒ5a>?:I$?J"j_*ɤGpsZ)Zi?KC+DͣāKzD:A,(2 "#*'-T}1vqD)-ߠ@LԮlp'7L G,ӮTlgw1,l',024cr8|1=s˚,<CRHG]TmXg\wuCR=!," l̟*\ȰÃ"JHŋY;] Cd(ȓ [Z;0c4)3&;k> S OIt$͢!#"](ӆJJ5tjBcŬJǵׯ`Ê[,VcӪ][vaW^v9p+ f]˷/׶ `sw}Xj 6b'<0ȸ&W౽Hʆ˘י>Ax߷&v 8DBvLG7~N@WT/5ߊ[7 &^d0F Dײq r-@@,%hPA@r =Z Guu+Htczj,kPɁ1|Dz7[WpmBW\A׃q;НOd)ts43*W㍓帣\z鎐BPFJ~?$Ƨ$U\%-xA[b\YATgz')vPLJ%h\藀,$ʮp*WJJiN;)m0fZqV*إl럳!`%PJn]r&P&]fϛ]j鴧֙*G]Ȥ4ņeD'q˅QbaK"/λ" c7  |vA,ؠ)2țsYN@ g~^}A<.Wlx=A'-N3Yg!ai7Qt]0wV߀.>}d7x25.sL=+Nӣ9脓cM?ʜCO':Ò@8>RYλF!," G VS&Ç#JH"Ec3jQ2k Z](S\)r| av5sIp?vzTvҧѣķOcHJuUPjy5UYuٵՄhV%pʝXڻ׶[߿ONr}W r]ƒ S~Hw Y2}Xj6˕cVkhA~[z^ET{ekeNXl7iAx߷&ǯvX=~" nyJ㸥dG!{}S D' LHqeWy`@Et\-wPsp-q=P$.Gd0 qq .T ^zq'}ܑv+Ht hOݳqH1|Dz`!Zku acz5\f=7GNzPyOdeJ$oW0[dRRXu}o)gU$i^ @tB(m DbXz\ynE֩Fy”T+?5-en8@L,?ʶpk.k+zxd,pJi|Pl< WѦ[DvY'\yy+_4[ǎ'oŋ4D'qQ3b帶(2ݐx `ch\/,\XGEpKw}~z^öʖGa I#^/,1>Zz rA@86pyg%WvAym~f.챫!뭷Ecr>V>:A#7O2c9˻<2SXO92 5 }U1@!,; G*\2#JHE2jȱǏ ;*œ(S T.ʗ0#Ie>vbv=^$(@vֈҥJķlԞƮBӘU1 uJfaMK,ۋ^ʝK`4˷߿-Vaw̸㾄K.\_Du9p"}WzL4ȓS3|yJ\YУRÞ^0(B֞e %mϠE?U7wP6'(d:{ ](Ž C7y PtQ C }S w Lv칧o`@yd(^+EqrD`w@!oBwh} #,hhJ p̈́^hOݳvAq@G  b߽  +d5W='yOhvNjel0^zb雙h"()oq'ʼn 6DyBD^eci=sv]D|j cFP[  *?޾ kjwbDC+zi;lȮ;IO> .RGb+/{y7dEH?jerh0i^qm~;b+p4D'q QEbde\% e76c.A,X*26*nΆWzT H8~ Wl08 KP;y-n/6u%YJܥޘäe'.;`.[/۾S47{'|9oG_1P__O2e9+˓CRs)s= CNN/5_1HL8!,n G*\Ȱ~Ք HE2jȱǏ CiL/\ɲ˗bʚ8s\ݲv Z;("]ʔ";kJ]ҨSķL֯5I ,Kcdͪ(iڵp;-ӷtˢ}ȷ߿IGÈ+^̸c~KLএ3kpʠC/̴.w%,ӰMHcC0kיaa0tC7ދG+EqrDpw@!oBDrܣEM 2@|DРoW+DA7Z=jwmI.$l 7L$G0a`?NF`0_ L_,~s Wa?ڞnIkAjsޙifF:;t ar >^@YazBX)EcZht\ODz hF${ &Z뵴ڊJh/(& >b+ˬDykuf[ĥq-zna.맻b,#ȎFi{GpP,>^a0C갷묤*Wńe1b+lI a܂'}iX0l,[Yc3w+ٍ!n 6ʁ <2sBc|"}@ -ևQ_5)P!a+G M翖'iK)g~+FDc'7Ig=Sۇ/{_105GO2g9oǓsR)s=CGrD k5$"b8'H Z,I!, G*\h2#JHE2jȱǏHIe\b0%Ibv5s$Ϟ9JTf$"ilSN'Bʲ)USZkϬWK`1:]˶۷pՖKY5 ߲Fd_w"`zJfX`& lpbCއ=`Ph;5.[,XsgĊ;~ܫi~lX׵qy}k2y@DvoNcy*?]꟯kfz[׃f(@-$zGF@fdBa+؍d8fn 6ʁ ߀ޒG8dxIg9cSk.✋e94ꇋTBʜCOn{5Q1/o!, `G*\ȰajJHQ`3jȱ#Geyoɓ(=Vk`ʗ0S*yd̛85Ki3O;[3hMH*]OPJ%ԫXV=bѫ٬`%[`y}k2n+ Zܺ%A\G2p0,-ᇾ(Vhyh']c< dѪ+iG3WͶ rJ Y9B <N/>zIݏOYGX[oSUe9Oh2C]YH!," ,qH 㯡Ç#JHŋ3jȱǏ 'Iɑ!?rC$˗0cʜI%ɚ20ɳϟ@c H*]Js(Ӎ8JJjbʵ̫^'j KY`7[˶۷p{]'˷_t T+Lc 'BB,)#мmgаcc@9Ap Apm@n%Yd۾ͽC'q!Iwo^e5=>(?!`oݒzt@w "oq=(blO!԰ zY{sP?$g%tb+6c 3Wc'ܘ!h`A"& BatIv${Qh!B)<ݕpze?A^b^qE~ȸE|(]8Ye5'O/MXrw(ǜ;XTxeiڬq II뮏kaY#k&k4gF+6kPNV{!=fs$.S´nfReBBn!," Vß*\ #JHbríǏ I$\ UU V'- :q =W$0 yӍw YU<涛 ?-cP 6cktdes;Ip1)@Y=Ld6NYÙ?l igU11]1*7UG#Ba>89䣑YՒDd|u~xo2>Ƃ0x: .GOx^"2x2x1afigcVj?VE=X @!Y@E-(wxyz_QG eBt ,kqB$r&|0ǜ?22`>?,aD4qF-&F˺SW%μyg+ܽ\vًm閕S}v̽XTPYu{v.j=k֡U7m5`~u2ӐU_zgYCLTs<Ҍ/$X"1Da9֘X2hL))!vЧ}fyTYx:DTBsaTSO#3\r=WwRFc=wYإ0³d|ؕډeTWX: < {QVAep&V̠X΄ĕdT k-N#*UA/"3̵B#X (f(ko}CaWt$*ӮR1/2Ooh<JNT "i҆+E\1|N1ی#L@+?TrC$ Ol),T<YN߾9hJÎ5h蕅JUݾ Z=x*eM243MD)1nY5yݕg+GFUƓɲM2C_=-k.Ub9s8ӈVrZ6sú:Գt΅byݖs5\{=ow:V-H *\ȰÇ#JH1a/VȱǏ3ɓ(+4p˗0cʜI`ˑ ɳϟ@ JѣH ̙bҧPJJUIǵׯ`ÊKٳhr jjʝKnݞXYoFÈ+^̸ǐ l"W G#j<2*)cқ0[Īc(pS:¿ }N9hCN+xIosK RJX(s*+8J; 7\6&5lxk*L; bpB7ގXu& rpfrȫ8 *2k +l9氃f ZLw4, 73O\JYղY(|2['4(;ĨH<(SN7$*p:[tgsڱY{r^T1 e%&5;u հ:Ag4 &UCԪpW:"Ǩ2ŋl0 VI`rR-qoP8&hANXCfʷ/j tP_cXsWpQ8a o4c 6}P0‡\u:C*vQMXŸ8/]-ƨJBzʱW%D1ث[7_-`# w e^pժ o-ԑ-\(#Pʨqb f m8,*.j)H,Z.],gCed1[\, &bx(LX d1ԙ,TLcv 4fMْ .HN6mC\EA8&~s,S e1l˞*d#Uc ! mCͅ2Q49Tᰣ4G"S| \JU f$` +5(ԕ a u&gěpA y*C}ܯUr p)Q=04 Ώ,%ֱ)rfYD\gGA.9"jӚK[[L'@Hğִ .Uy$+-{ 7Ij6eRu[ٰ;t٘Gm\v药|]fF"V~^|`zIOLa %/n_U6{( S>Lx(pSR0M\ 1w&>9! ,(BH ~*\ȰÇ#JHB3bȱǏ Cj)!ɓ(S\ɲeF-I͛/DHRϟ@ JѣH*-JRIJJիB CU ЌŠKٳhӪ]˶ٌ_K6xx˷߿ L8Y>sjn="KL˘3k̙3ᰍZqΨS^ͺ5fBCէxQ Nȓ+-uy%>ȘWxQç늶~qoz˟O|oJW>H]}hd tn@݁V(^D~%uEvIh$OХኍW%(kДl[Vn/㏒xzbL6PF)TV9egBnZY)diebFeg)t.[Xv`V8*蠄 :N&jeYƓS{&eǥf)觠2ɨx=|N:ْl꬟Z(\zUWp*٪z [$zJtJ :e~z:( L^jqZ̳41!j{,b/ٍۘ,>N%d8'9(c8¨BF}J,!$$[:đ˗Nrcr:O([9a8K;JrH-5ls$(+TYٹI ŪFv!Ļ(|Hev(O6^_Ll-L", 4G:u B E/1>3Z{*n#(ȷ~1A33&scu5u#N3t]ٔ8Y P61"Nɰ3]cAD{ѥR8:Iꘝ:Iҷi" !e Is8P?UΝg`@r0%d<}VrDejV%E88 N΂f($Ѫ5;U*,֡ ^bF) ZiY(Vhׂ链wuDf"rY>usSU*6WI\ aL$ El:H7u2'Қ*,HPqQf|Q R\ɲ˗0cʜIzOv3ϟ@ JѣH* Ǔ)JիXjʵׯ\ TV˩]˶۷pʝKݻjYv٩l LÈ+^̸DŽNǗuj=kƹϠCMӨS~-:dfjɻl\וF -7KN] tZ}oUOGŷW^͋O<6fkW?uqm ~ 6WF~3N}V`v FHH~Eq"ypw&֊8זCY=hUЋd=XZ}ÛHfiZKNJOFI@T cF]nʁt*9ǁ)PJbN@p*hi(e |8&nf>P :zz:'A`Z@ƫ"ꨕ:åY@!:*DZcIH܌+F,9&D,zIjm @i,&š&rlHlEΈ 9\N&rz @&ZC{ _D,} ѹاF. AL3`(CZ[5 <xLOlo+kP%k(z e}d:QzI0 cL22cduȢJqz k"(]_޵ Zc.{!z3 #3dkq[R74Ajɯa14!x(8EmTK9 v=!*c.~HR ݼ9RLzh3hc?bE1!b} SMxಞzWdR!r A F(m!s+/D^Y4/ 7'2/08?Ym~Ylc\أ=H]pe3_>7iV!td {3P( mX-^1[؂h_& x8GAgx'QQ؎e9Av&+Yo,AP! KD4ViL >C7 `d[E1]8LB`AĶuq`9}d0HqP#H]l'1;(Mx30T])@4F6@-8l;ĔHhBU\HqRI98 E R?)  {N @-?p`;́ ޸ )m&7Q\EPD xAr,d"(9Þ]$ mʨ9fshH UMjvpM#ܰ* =x>:d0v;‰(C-y@m4oK Ԉqm`n,)CUb!ͮaγA P\#;r> gMx6T# \V9VtB 䪷rǾ] ,kcg9 88/0k=CTYv "iD_;o}8k'D-Uk[9} cl%AFAE`l>̎ ;zcʗ+=p}:gu|z{$sEYFsbQqܑHZ?n~sD!)zь~t& soCK_0tWհtlGiɱεM(FͭAZU]fZOlg[ A6B]X.u!U)8v 0SilF5ηo<lO#[Bʮ'Nqf{ W&K0IW%NI_4~89Lr NEN I@! ,%JHA*\ȰÇ#JHă3j4hǏ CL(S\dI0cL2Ú8ssM { J΅>ǴӧPJJիX:'RSK`؁]M~e۷pʝKݻx꭛-B/È+^̸ǐ#K>_m*eϠCMӨS^M[l3s%ɹprsͻ NGu߲kνËOpsڿ@_WmϿ(]ueXEW84SL1dv ($h6 u . |@8vh3d8<:&P98 &[W]e@beE)eOPM2+hkEHН;NtjM]$0605rFnta@ƼQOęNb,gL8tI9 C̲.WLIs6{gL@'/܅: #u$ H`$R)Sҏ.moNsz M:CsP6ON&s6#Cɽe{#Q:l lȍ0wi#orwAdNR5PG: dXhL2G dpoݨG}0cC>k2 yoE tHa  ˂¸FK]7s0qCA7la = l/~ 5#L}a}YGhCc7l]a`j‹)E _(pYQsp#Th!8} < d\ FI`hjF;$, ?nEBza Q:H~ @x\'|sIaJuN{.<&//#۸_ !iC>6'l$p(# a &6I| a|G( ƙp&݈S&32і546GB @ˍ`f$-5؁e([)E*@EF3z 1|"LAHc0 MVx!Jzp~ģ Da e*P˰/'4=c`6An" ֠*Al^T,{AJtS_>MSO/|ĦFrI4FhgWP@S({r+s,ӛ87g<gt끥x &{>"L"w |`X:![qPifTz$(98+z ؂c¸\7(4qs xݕm. a%K\9F&J MČ@AFD h.`lP@ y(8A Lkj@2B ~k'8qN BN,ڡ( DQS8Ae{@A>@H4DPJg-5vۂ|E `@K@pۊK!@j2!(ydrܼX5BEqp4K$I4:hzjM~1;(a-4)H|`$T񊪒6T4[-ߣқ4#930tR4$;(PO~Ģm.zS[ϾvoA'W3OV(yNÚr]L3\'pzXp,8K "W+Q̡$X&x("Ȃ1.؂1B18:C>01@8DhdRHX;! ,, <Hz*\ȰÇ#JH >DZǏ CIɓ(GZ̨H0cʜIMtOຟ@JѣH*]ʴӧHȱK%ǵׯ`ÊKٳh&] Ջ.x˷߿ Lno\sk0oyIL˘3k̹ϔ".ūװc˞M۸skqښv YmnM\μmm7Ҍf-ٷ΂)ËO\8sisIpݯ18VI%u'`+T8ń5i`YpDŽ⠄eMk@`o$ @ڑAEgK%_Z=*֍6'хt/GC&A$U UHQ<'̠&l 4CȤ&3y5:y6.`@9iC.҂ 6Bh v|ÛhhU߃ (Ew Nxޢ`C5(4_CBቢu U6bH& "6磀)- -\Τ-OVx%}7i@T]f  5b#Uo駍qY'Y≦l^#'vAh |2*!6NZgʨs V:䩙Ob}UN<ڒPSJ3kT+h>+-+Hm<氓"֪8V+ l+`݆cKTkI\:-$Ҕ7# J >Y. 0pB,eBKp0JYC$,<JPC@&}谽+r/4N d3:D=`6Jפ P l(4o$@7y69p'~Bt(jM.}  ՝$nWP<+%XT~^`|51}+%p03Y.ckGt6mڡ P}0#TaX*t}D#~G!Fx@#q8$<y ~uiЋ/ #ڲ` 30}F|@K }2RI5@C n L4@Ġό <}\ lݠ A:aFI) ~%Fѵ:'?AxPr 7S O7ЀdRq&4QRB1Jyc6vOTm--rP%a LCr̙-a3!7@0#Ny'>}S8P<#nZL(ĞeNLh#-jˢ ? hM `?hj= u h svH@ rP"%eMnh9jSz5^ә`[?X6bdJR_X9u-`5$HڐP8|$*)-!fN\-}2Y8!~ǗpQ]nfg[BIG4^`54D< 7Ν$敉nZOv:jP* TY=ؙؑ- p[?@H3dUs%B=,?DKӚ78u=O2KnpSA5 ) v] H@ AXSҏ4Pa5Cvd^C¼bNaZ KAa*#KMGMȓ:SaށCXD%*lfW9l XW dܧoDePp%C#L!u*aG#*7%[{CBI:~=̨SS>Fl|y(5qxUH9eW(טoUi=9!sCGggXQWbDEqSaF07uWq]bTh]c'Z*B)8SNj4T;N=R,1^_ PH y|$iJfj5pk^^юVx|#5g?{Dof@tgHC@Ґ >ЏO8Pڢoy: OG:Ҍ4O_66BJ)18XG@$o+8Xl}9A "8$f#+N,؂NA,Fpi4X,X=wz{!J|@BXF~<! ,, <Hx*\ȰÇ#JH >\DZǏ CIɓ(GZ̨1r0cʜI͛8sɳgYsѣF)]ʴӧPJJէHrn;VٳhӪ]˶۷p}Kvq?^tv[ZjFÈ+^̸ǏKN۸uz f0ahA?MӨS^ͺ׫CC# جe̚ו㬍4\ 媸ȓ+_μУ3.il/5hGӫ_Ͼ㣯vm.g֯['h \7}wwVhzط`q&3\($3h ni+%(乂"~"4H@Nh#488~cL6ސEvcNVi%zPbQyUIM~Hɥ`ɤd9NohǏK)qŏx 4fo4z@@ jBR23{ >Ma\ . q.;?)+ y딪9 &DB&ЛP{܂ X11,8?(IzD?t 2"Z h0g/qXQ9]ك<#`^By&#K;qIu ;OX7lB0)\6pC(Pr-4`{20~~#@ 9{<@.6^:>G߸@=t_ G^jkA#iIZ|4pvpT`<: J(D 7 B2пsvgKp

2Ӹ{ ,ZvI(  2fJ# j X28%.1Ek_JUaZv.DCuLlab5O*ϓYHN"0ރZ6?sLb҆ttZׄ{k$uN?ش)![ٿR jGFB|md(EZґ<nWD)aOtԡmzEE-Vk(JqVo[P8҉'N/}t7 lFNy mBhd~Adf8yafʨ# YBHK]Щ(YIUN[NQrЩ#> N(RpHvWxϻN $ ! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,* >H*\ȰÇ#JH1a/:DZǏ CIɓ(G:bʜI͛8sɳ'NZDZ溣H*]ʴӧPJJuMyׯ`ÊKٳhӪ]KhzY3n]v]˷߿ LvZT#x^FY˘3k̹ϠCmcr߶uF۸sͻys>ntc[s]KNسkν;y*'[.mRʟOܗN:Ki3}h) hYyZrVha}y9肒O$h(V.h`.l"R8oKg\(L.hd9n56Gz\nR F"YThQNBhYi=u67X砄֤g|)MHfjVjiNzBpͣ5 jj:As6e"a|ZMߨï $.z7 *M ϵȢ!Ūj#O."8nۮz,փ 46гM Ǽ@eM$<_/K5}ö8h?: %X=W011I;=N ťg=f8^D->.\/q97ͯLD$`K@l"U[1Qg"lkW.xXו 2[l(ga Ȇ7Glsp_:vnf7%L2ߗ2! e]̱[88 pũQUO^đ8[(Zi=J~r'S>>@4)+IKAOz&*F=GGҧ"iHPNuGMzp%t=_#a䀜NwdhSbT@t%OH,CiO1 Xϼ^<:`OWߛ3ʐϽwӠۿIOż%[]B[g[ߒ,*-O~..Bq Q@rvOCO3$Я"! ,(BH ~*\ȰÇ#JHB3bȱǏ Cj)!ɓ(S\ɲeF-jG͛8sɳϟ@wj*]ʴӧPJJ*TJӪׯ`Ê۔fI.Ƕ۷pʝKݻx]ȴ%upr+^̸ǐ#KL9n=8T-uljMӨS^ͺעc[o3FEL Nȓ+_4b}=fƊiνËOޓ5].=[m^Ͽ(7W9$8V_V|\ afv[۬Ǡ{jE݄~SL~y0n,{&%@)lc#&}*8$UɠIㄠ}F)diUnMexYfix6_1j`VoR0i衈>0}beԷ %j饆.8 nZ)J~.)Q8騊Iͬj6knzm2I7at.ώͮԎyY#ITu c@+N[]+ ĭ2䣎:tI>++0dcbv!hb)bB3v/U6ְbIb1^<&7<$F#e0H&9B9dw\"<{X.a@XʎхQC X6^BN(bH6Np0Bn"E =5:)&\ؓC.8KlC C%l@!  F\c)h_/lh%Cbc&ZWeRUneWYvn2]s30fsc<#\AЂbbD:2kGB'L1`=*vxW̢SsjkHJS2tt2`K܃&aH@_ hdn ͽ=aB " b 35/p ^ :y#M3y^?0PPCKsQ0c8\Guha*n¨ /KK JdfKAF(ww6bٵn &h1#ra[E;:9d  ^b(:g:Os㶁KP[8uQ eb0pb|"Go1n &kl)xRbex*R ]/Ɵ1G<>\jS)bSs4X4- B[&)`ZC3Fo=LFڡao{Niہή s+m6&>qL+VWVНh{(Gl R$/cv[͚{{+_8W%r.\9%[*N_З>t6ZVB1]hӚ#LSP!+==BANCE:Rо=lnaըJ|Dӌ G<|OgK}[EJx (h"zFOқIu@~X sfOqޏP(V OF6ЉA4ßKLfu{~0zɾ/RvD菊Y"D$GE: ().Qxh!р( xXx! ,%JHA*\ȰÇ#JHă3j4hǏ CL(S\dI0cL2Ú8ssM { J΅>ǴӧPJJիX:'RZÊKlY]M~5˶۷Zؕx˷߿ LXT_m*}Zǐ#G~xnAN̹ϠCMӤnMvqSɞM۸sͻwxW[^ngȓ+_μyw"[>iνËO9:Vg^H-{hk7r.>SwnβHW v:<7F'.9煮d#5XS $To4hcڥov¬9+p.{>;})\,`?;$J9躁:tlBaÜ8QGm5s1[{ۆ"Mp#2 ށL K)6 s#d9,vx 3&6Q+#;)cd>v n@2Kb,, dp37ngM3J~Z<(֔-O  J8ˆ ӹM6iBHRM@qFu 00.wiM0mXPxlݙ IxKM:)Oe6}6 nb.<&\+ٴ^B8BxC[Hv5![ѮW4b@ۓ&G'3ak|)ݗsy Æ%AN6!x҂(J2F9 IßB;i&m" DKiQ5NX#&#j!c=QR5P(G8HL`=͘!*>4͊ȅ,J M(T=QTՄ9iuP"!`Bsl(jcjW˲o"5ZQHYC*e&BկHAC(HЖnf:B3|M{׽]`25ʼnD,-b Jw YuP.{p<wEuU!,- ZZx0,zȭrUMEub{&v#g b qΊ(t].fE+d3P)4Dz CDY;ACVrV;qL{M\e/35\Mfg@,k5犴:yɫMj>;EO#|cu3GL7NV~!fNtY4Lf{^gI MҞvC^J7)\;kk\iI\$\gIg%9|޶Gm\+-nv[9'"5obѽBk\*cdɸ7g oͩ:Fk? 8_ʇM콠8Ϲwnl̕$CeB Pz_.XϺ"eCںNvU% {v^IQNe5CD(3 wg [Ur ! ,(BH *\ȰÇ#JHB3bȱǏ Cj)0ɓ(SZ$Q˗0Q$͛gΞ@$)я*]:q#G~PJJիXj+ǂKٳhӪ]˶۷p9خx˷/Ա>뷰È~Xrpǐ#C3kw 1sM> A3]뭧Cd=Ҿͻu{ ȉ6;g=Gם?<8Ukԥ;N[5=nÏw=eW=ZO9 BN}ӠVLؕ|ѝh_caTC`<8:۴4XO9͋|!n1!E]E]{hUӣPc>T"<6YVDAZEc? _>[* V%6btB8VWʅ՘YUuG UOqJ.8"?yBUi|ϔMai}Qw[)褑r&T#7ʉ[|5,?R("2#ʩ8|Xi(HQq9"ڊ|B޼gT!J8c#[I;U=NH f;^b0 (qF8fKVV/Wt<eZXYS7 ;Δ/1Dǀ b@0 BTbP;6'#LH MV!d!+cʰaL Bg1NB"H$"/Bx6_1SHŅ8XTHŠ`OHFdeLcED5)l瘚8nic@! ,10HP࿃*\ȰÇ#JE3jȱDŽ?IdĂ&S\#˗0c"(͔oܹ1'ϟ@ J4ТHuM4ҦPU>Ju$Xjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿)xͩY"N,0c\,$"ib^r3ΞZ -hBM ! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T! ,T;dtkwidget-2.1.1/doc/images/blur-effect.png000066400000000000000000002760001352002233700204210ustar00rootroot00000000000000PNG  IHDR\[ pHYsu(x IDATxr+I.{DdrNUuufk#J&LtuGV]Ug!dfD~CH<>UDdd/?DD JvR_ԧ]4%p(Cg Yo4 '? NߟG}e_ΥVAcȗ>C2OTU}ϿӬf/Q[&0PXw>a 2DZf[9?dV#&ڭG{;xz~C|((!U`xL}3S=0WXLҭ9WMSOBDZyϟERx >9f$8ؐ?13@:*sښmEQP1+#Q7`tyWKn4ϕFŵuhMJ ܘV9qz;.QNUo߉6D:gu4֪8L`JXsڑjq$dܗT9G[%UDRצ,Od1<O{m$v_|rOЄ)mKێ䎧}g>u?8P*ʨ@o~D. ;~{eeWx#ikk\xAV녅 G=NN>^ 闹݈3QgJץzE f::moy%AV9 LqZϓ?3g*wPUR6'砩Vw{f(!_ swϑo\_>oz;OP=d=;*ԍ|J_bъM܍_U2VBoS{dSǂCnW,s۶;L)W_wQ@z<Э!PW!ZKC11rЮ8t1~~S03UC8HuwUE%w}JDx:\dHbf؋kaBbkp+@GTܟ( YheB +,ָi77{ u5ߡY9?/o~D(Vn%OBV;Pns)*Q``^P=do6%N>rnb;RW<mUvYsM\IsĐ3Ŝs"9z>ET9̽/Gqĉ1 ~wy0sP׳X| w! U ? ~Ynq߯8pfc庰Ō_ '3t_*Lx7}(]ux%Od9A'c2$nSX?KXLi(ڋ"Q^ln04MvIR֍GrSV/IՇږ/}Ti9.b1=R7ιfQS)QpO:D9g|^Ӄc@oJ{uTTыq| z>j]4g/!Rof,ԕ?+vn[|latFS`f39ɋ R.t~Maȋ}Z3Uv*X]tk[Yu$`L. Ӓ?O!^JW&zֺe F/^J < 69%2fwUFA4µhݬ>{(8uD: h0|:LD6-| 0bc'r|{]?|!PڼDZ^I܇z^?XDD #-c̘يӎhc,vt_LC_6ly+hSđ %1xg|4~᩽48$9>j1e1! Q?~kӵQJhʬ^[Qk}s9U7>D#uMܯ8.9k؊>Fsye4 UlلDk8#]"q\?yA_-l$%Y5!>`x}ϝG_$Ή(Lb~v]Ҥ^IL>W~y in~\sCq1vLkF̨W,*_gzp>Oç_'oiÀn" 2>3] oDzV8c#g9WcsgRyzu+J΁Jm>B,;B:h<[?YKuaL%t~AY4|#@j4/9t"nOKg!\[oJ)L0]d2]gSݟPvgra"eN"SV.ĥS1vPƒt.p^ PF5 fNA3PN.g阘8[=+m:qh&~ؐgS ^BYH+/j8Øڕ"V_'b ۘo\awmZݧN* 9{8 8'I%P׮H\ R{='s$NўۚgUq5 ƣ9)ɇ6Eh"rwKf{.G}S6y^zݪsXSVӍ쀇ޛl-7T'/S_yպYA;w鰋%U& +?e\Ow"ML:k1R\toi'-XsL^T휊&_[|2=pjU㗂 Gd*SHSӞNx|Hma.Y֍%"'> q/>_Z|s?e6I+~1zlsgz,}I0iMSNv͗}~Ʝ gZGء/PM66 'Q D##qh pFЎoB XCY>muI _^JtY0=bvx㷚y)rk6O/IIWhK]U* 7zןEPkÛZ6ǦxQ0 C͝.E)r@?\ 0 RpBMeAyo9 U擪va7 !GM;90GHGkѡ äpzз.ųPXpHA?~of{wOx?O/&Osձc?]Hv >f·zHO/?N+`qSQF>ƒiN{T,NUݒ &OhacʱьtXipF_Jk7aHPq'a>@a4~ J \0Ś;}Рo:gӵOaK%G|0a*)DN?Yx;v8?w}3zQ_5]) @Ru yR'A,$DrDĩ*@[ p7c""ʼnA Ǡt?=xS̏I'bI7YY8XG]߭~M#bYŰ^TQ bM;ye%p9c,+"a`aރ oٱJfFj&D"j==t&RZjUUu7b6|??QݝC^}ɩOGsi\nAB~#׮Bņ'NaW'(ʲj}/ToazUBIARs2F&^Zh~C?czUƺ +C <Ô# x Hr:GrR#0D pS ZjV CM_AW/Mx}),f$wljv BX %KeSeU)xАS햟?OIrxmzWy#3H9 a*.T+<'M*IZ:g?t HIۏn+yvgg/+ w5韞3`pZ|r2cPdM<R΍p;)"b:Hus5^>gMK}O{|^*5Ńn7X>kwjPy<c~\~ϻEm9.ZnDĔ֗ŝϞ@aquRi}4?}\wWZ|ɿ9?jݸeߦ,څnaL!"? rg7&ݭ@)!+l7sP/~ocnIp IvcH58Oj* jt7AY)z(;U2%"iXetuHǟ/S3RǗM3` u#O71R ݁V`j=Q5.U%ruGgrj-KT6Pg+h!:R8TnqPHL.i)TD/Avԩ?]Y߽;-WE_~ ! UWtbcy͌/Dr7hRON?%"&f "ĭ6\մuW›TuR#5R%5zG@$X{y|+u+0E:)ۖ,uĸQYn8:$]O* iPg,jrӋmԢQ%NƘ;DtKd&zѫV ;>q䨒9Xw*T q*n~17!^XO~ ԛ' xoe#O QRpR,f F>mCw72JխNM-qoӯ!w\iwpLG0DS[rz;{󝗱L`%Ga1_ t9E#qxRI|gs*\ 2}6sW~Oc>.H7ӢPW\VYj@HUd-Je%7+gDMxQuLjmFBl+D*efݓ}Br8yRax jUVRJ95N-9/;,+׭_;ѕ)ܚVFD¡ ^Tb3s(L9ЇY):ݥTB~O$Iu:e.,I:j0 Mi^n "Ь>?1\% >[&O$B)(LjZ^|.!`n pvZ x8@Դu>73y<@ϫcoFYl"h$P!4I5GH 9!ycjiHE U=gg.C!Iׇy^(i)1 s,:) "4ܜJutߗ#f3:=SJ3JD::1}}PA6DA@D]vqv(v!$Cy?{nfF:u !:dp&}̝y&rǤ>.b77rJ++Mz'0O-LUݝTELuz{g 5^^)[Yٞ +sm6 N2\ `c,Nm>aFa|H]MKg!a(>OV> _SvcI5D*IFUzmfzV̕")J47FKtn?~uy7,{(Ej˕O::=sqa8'39R$5TŔ1M `7\}{n i_lyJicŔ[Ai#8 ! Ƌ /S1#S17/L>+FVq 35]Ȫ(NW{QZ1{ -_vCUVT&[: wHW1Gbv3w5ז{RmDdnrVu5XWU:|?1}.*p`W >~qi'y1wbD"^2rAẌ6l˕/WGո7QծjO,Oc?RUݐ%b i@"rHT'<|X:L"/6ff F31JEY~9Rϓr#PSz̈IJ73RswWjX$p?H@#3) Ǟ 䴫uҊmtsGl#U*먦T%QB5r\WkF՝W%w6ZD(R_.mqWevf_*H}>[QH3@(]ob%tqpӽZZ+&y;uV4HT KTUU%VHءj;TM4[30aRJ!n֗JafE&s,Ať_f#]}`[ 6zDbRO333Vz-÷4Tu!dDş/={B{ siې6VNu~4(k9<`݉Y0y*iɈ,2;ޝe  >S¸*-s TY=GZ;O_wө眿<5wZ)9q@ujEhA1Wjt<;H "MO{ss zzJZf(?RNw0)U_Y{v})鯿>|xGS{,R JغebaơTۨSJQEj8ϞX 8.-.<]h<.&:_,?\+>p܂eXv7q#3%bfyTû1dff~$f֬upX"Gs<h cG)*7U=O7{U}lSrRtzG$] -{J:&V'ƺt4BB8Z# @1RJR I$-FUoA "s:bA}\zx#i6RF!R $Q͹^)O[z~v]O 7|ٸ D!~MJfjfֺ(3fjC:7Eg;0m>4~V[4" nh26\Qyl3''?Il%ֹհ{-"bqWv@.WrB`uY:2H"z&œ ]%XyU .H)Jnh/$ګ6I]Yh륲Իةdr94j?~ht}L[lLm*Iċ$R!3[d9 CcTVڅGd_vakf)8Zʒ}Nr8EN6:_TE'!::N>,bs3zYH<MKM)gAUF[}&d&S % ̞#ru;"5mt3Ţ*k2nꍤ&5$@A[u.SzXLm1"BS^F^whs%VH(n-bfZ2~ .pn'T1fQa]]>~;gB]u5*ms슢0A麳I-/[4FUCaO7Aʥp &#܄Ռ LN]%0\J֩ԫg2D$] 3)PEEv!g\))@w4 9rҗ+_-ܴ෯ Dts8!g|9M)NV^nlIrWA[>Mz]R33ѓBӾЏq x\C}VUur'DH]'UEK d\٧~~Jk)վsJMT9E#wLA mVz]^[DKH/-L\j6.TK6HaaJR pG.>e/oGEZן^'tӲ0 cӺ33ZjаV1oRQu cbCQUvu?bC/{ڍo`+Exfxaf*wЖ >9kߎVZ5jh.ժi-}l,H]YY3$!)b19*JV1"T]JAU0CV/Kyk*@[{]>fo{qs)ƍy?qh@C!@7K zw}7ŏ[pw ="B"]A/rya|fͻbH/m]x+ܐsB1'4W 3Ѕ;ʦ0M]ΘYnm6nPTEtw2lRՠ6*^T)V-B(ax>'ϓ$@ w;6 [=ٴN!3{ (%jZ׊aaV{U\IԝAyG)s# )uhAz߇݃tt:wP~hWs76,#&HL^].l1vtd~'xm(UK݄B'$[DdŚɿ#iIWT;D!aC'rlnQ3bӈqiZ6pGܶh0DȾt$K$R ÀE1*7ξt%% ? pDzh1!V@YTz{pw V6 i&E<"O74NG;n8`0E."6Ls9c>L(z-U#K^%U8=ݽđ3=^NxGA6.hIG<ёd]g0 Up55Ziqy8e$ ]lۤmSlj10)1\J*P3jaDoJp$;>by2z=xkde.CuZRV~i|}[F!8%`HaYxZ͔v~0E*'F{qvO]<Kg[ĵ~ӵmH7 GyU M+f$0;qbNZUT);'rRTԷ¼ Bh{C޸S@N>y 꽊[M`{Gv],zq$tRkn{7VJ[cT fNoކMZ/xɟ=̾˵ q{#ZJ@HRk-H1FB ^TlCa ;$CDh,r'F"Z+/uEzRUonzFWU#rwR&㿔")]"5ՈpU!Z6qM|LDN=P歩=-pSY)eSlyPq-dE*Y{o579RJocqENĕc<ʾr;ȉ!bޡON¡EE^(ԉfߔ@NlԗcZ6 ^׼&wx 5 $l̻s*[r}h-!1h23hco6>."+[te5toһ05e뺪3`c]u,/h.pEFvsb7̃Tu̜k]Y6CW$-c23B!hjeFm|T|+E`"E-ZƑ>4C"zwgCM^8@$.o˸ٵӺ}S,>ZKqN'kjlb̛ǷoW,oU|luTwsu?Ob>33]Gޣ2p:Goy-4ڒ~~CИU\*҂EU1qrZke^Uz81EOWJNan"Ҙ;j͇6r83ۗۛ{_-aܡJE#'+@3VZcQF9% V?mf|6|XukycK~\4W&DL75*Y!ZK !<6^Ur@/#/:5S}~svPE;@c7ϼ_iID'kӃ≌߶q' ~U2MDKv8MJ DpXO;D#֛-Ni=lOmb lJSweaA$| !OWK*lϨn nuUKE7G&q71@^̈IW ,lO""LA-"M 13)n RJ9o*5LCuAD1z6,SjW24M#UF^8#E;Uz{F*1\B8b6# ۟(3gF솑s3qx7}CJ9>~L)%(3lUkcT_ޭKr$9̪ %\YzYIhϊ; g/üL <DdDVު;p80|9RbNqȢm1/`f@T'5nvED1gy.#(B:WW3}y fejl>yMM/U 4 ]@&,)/ԹTTs3gP0KRuߴΨi29JF[ T·ߒqHιVܦNŢĽݡy1?OZs.MOt'BDmDBmۆI8Q^ܣh8`gchOKYj% 8'>d݉Ab1@;8(*T$JO3Puc11EDŽC})2}$Ojڦ7UUU #Oxec""t\p?l[=/s.(;)%(7%[ c3Yyi2`JN?iTϼ.׾YIkrֿ1saLx2y枒j~yqFw 6DCL7o^L iV6s;H@v[SMRBu*g6,X94Meۼm%>Qu[袪8K,cxn`U,Y0жL.JN~ݝ?OžZoH)MFӢ=7h̼w {mvo?˓6^\.VRJb DD)snwlSb\ݑ:!_N]"waIKY"{&>blkZ7])')Yhi~VdzN/"$FO<Q1d}<}&5clR#4$:դ2hH~Rr4Tγ?ޢ\Z03z/_4MZ|]xyO=jIEcx3:e*G-{|e|O~ʻ  A}~wa4Vs =PGO_]#k׬n2"E:]IJ42p h[Pr9ud 7o#?$m+ytfPREsu,pRd q~Y1 0ᭃ| _̜OmyLg=ZzS\U9$gc};AD;_w v?-gg@xKva9}L\V0hvq㓶M\X.No?*_= >]}((+:ʙHmpy_;&o'7g|Z[š}RsfZ@/_-|aH71=c4k{i_u+n]tYY.|&]Fو}uV,LG54W~?vу1 IDAT':'DK%[A8,W76b0PUp8gj aB%Â.V挧_fD+,zM3{b]:>zv3~h9KY1 C}= &q딎X6uI՟C?paC0qPqKCf5QCe}Qu\fgo-92Wrz5oB_9"p/x6tImmڇްOG8Ǣհ9ۊpZ/ ^ݯoOsI}\P: >^z4 <9o|ʻV]x/vX޾}OQ9>nkmyI^SL12#ʁ jh/ES[}QS"LZ2 |vfG{d䔭 x[ e># KT c3vkr^.ӆ91]E],zCd]W/(ӝٔr-&Jxyy7oo*ߴg<"HZh. d/Ϥ`H*Hxȃ[շ߽+!N&,u.z02nXMO?!E[`d]mnlגjʎ–3wהNXPimLcnÒ.EF^_\o;shP@-ڪ BԺ/04@Hh ۔Hr5<3&u\6MwoN9wtujOo!=XO@Jp 7nXpکaP3yNrsa59s?@Zk@fϢ`ˋ7o~מay:O [9duݰVfev;kf6)HVh é(Qb3x'ۮJwhԷ݊ŎsmXj?|9((U L1oe=E9 _uck:3:9f9(V$5 )w#Ɩxݬrngx-'g|g?yonRC~x=6y..c .`R :3&!)A ju Gpsi1$ZNy f j !ZF Gzn6aM1[7jt.^]Gt=؎he^ZT#iنjPҙIr iiWw~pU^_m>1 -COW,%֖y׌遞 qC ܐf7@ Q gBpPCTynFŨmCN H(h$dNp2~]/BԨ9:{tgR+v1ղ'q-BoQV qL`_Q?Wo{dC6ͷoF%<V)3ê6=>_*mDj~fpT32]+j5C ޡve@ FI( <.*&f ʺ&ZCpT&5-E&3_%lx>Ui\ [k|2ߨ3iۖ21ՉGuX~ϵQᝰA:8B*vSt8az&;Shepg/P(Q>K{Xi|̺*6}7S4g-;S\&Æ'^7ɩrZ!d*'f3yF(sU3W͝ SӅGE54vp@‘'H?$ ҡf )|ʘYTDUWU]9Ɂ:sJ]__6&n7iecf)?}錵ݷ'>w oa;5se \1͉hO8TKl6 uLVιlUsvrC4yTbweA6FD±ˀi2x"5k> j@`pD>;ݙ@^j^xc}/h1F3?lU,5O@6ݮKͽß~w:nͼz$4w`CMWoZ~7АiN@­Z:ݝ}ɰ\Ii|a] guO`R{Ot9kav`̳25o%ιLsaUi@ ] . puHTC=EV&O_UF߉un3![[&0z?#08Xl4{1 cXE!YMj+Z>zns;TAdD])`džzu`flEJi\JjWq%"M;]Om~ȯgP`g\ÀSTE>&_QtGw^K] uw[w4{+ԗ(DfLSƺKw*l53fŻAz_VP*Q2&:rb = Ee1|ϋˠ"\TB-`0QoӗĶZ*9i8ϑc^tc s1u~7~VaR?H@Q S_JtOGeɰɰjX;uj>7fdv tޕ3~ !dRG{=y#2{!#?oJ 1ȵOmS_-j#[xݬ.Er uv͆4~zqtsZB֨h.+X7=WR=duGWsǪoɊgqL&%mv;vz{Zc;o׏φiwُM_9RNG,4MˠAc <,#0^ξ&cQS3 [Sĝv9ϡ n)333)Wg)RFõ6)*ӫbfnA`R3El6ZDܽKøJ;z65(U&ozoXY9Z(6*y(0A$Iyz2G!u%еy:wS#`X`'JF,`8jkA2ACOfYV3c`z]HTiVdflj3Ɂ 7ud8}4v(e1| W#tzP&ݩyʸDb<fJ @W@%Q%|yU]1X!~~:~ r$}Fud`"M*J5b R!G@VTzݙ&9eUlV3xy[>@KY{Pv8ϗӯ_鵡 /ڇr0 a(_jV*`oiCό+jףQ}x`Z;U# ]'Ite ?{.nYi.&n|Y~`1 [0Dzі=bLE4>(74.TV\b{CUr{"<劭Bg'5lU,uJ=xK5H=AwҨ七coVDM~׫qS1o._LI=r)a龇]>{8 >MVZTF@첳!7Wv.'"g<Il6kx;<''MXڱysI:`Y8V3.ݾk^I8!` $+x$r(! (4Ar*LƑ䨓w6ֲۿ(lQ|iΟS27#y Kiw|vpqxnooۼ3x0Bv{<@5|1.uG}z9㌌Ժz'#;{-@XjQ7wC3 *rmLE1NUV,ؤΘ툲m>;,)P{7xq~er} I8) I;O73:A.pP(FX>3~(n8s'M*4+ 9/dĈ{T-& d,_d;Cư1{!%}[Qg~ZAN- /޳N)rڞ҈E3屘%m\R8704(r*uGH0-?b8w}x0]lNUUIHZe /?ў4Ͼ{q3w2l3xTi+4'd NQ"SNjgX ѶRIǿQr,NGzw+oSe 2A--#R[mnwik?F:_ x&F}%1@'^k3z8Fl S-5ai}Ͼݳ-8Oyo38 DN𣈁khas[n0N÷-]O-頙/T;1qw^} zhw\?9%3Wq=gus}I҄Ӹ&/֜qQAky%Ny 3xQHwƦnNrntKFjDEd(e^~NPFGtc9S(<8,D3^ &5t^݉T78*FQP':9c:*ZX@㳱c~9Vp˿头NiݿaxT]N]aw]Ӄ\iP } z~Ci(_\LN;jj:|??=>Weg3>7ς0S%<<=@JӅeDTv4vOSyDG\h'M.UgI°'3^i{RR2K=)R~Dwb}qI@>-EtB($#觓)+ _Hx4QzqJNMKQڎ秏lf?܋/o9g;Ss'Sީn]WYW!NsklR8*|W^rmڴzHK~UATh>sG9}PquΞb8aA[9/qLZ b7duOB2X[34j4iY:-PjڳI=m{i{/% SѤJK37,u@\2B}p>9?_uqT[I3*3N~-1;g<ÛaykPP| wT"C̘1meS;UmK6Q,׼3ΐI,dDԽ=k&UDw9ƒJD otozl1"UHsF|TOF{ZBz![~J#ny1q9Ijlslts f]Y3gqX 8^SKqEäPTRR33?%3>I4Q-$XOMy]HWˠL0p|IxO@)\ό4;v74s羵͙ 5SY35U! ""9,5iXMőENmʟ3_Q$g4iKU !s.cŨZ٤/^.q4GuF*=Dv5pvT*{Xc=.H<>l/背|i2CWdv`~f:ܜ{glTPo+н2$J)3x}ng/čvLGY?EÓM+jX*`"ۤff̴' IDAT 8 _ .lVn}9sm(Lv ԜݗFNn2=--CJ=hrD|"RO_4c";%٤B C\ثw7L_,w$ͨ@Ujx{sfQjZurR?Y/Dĸz*ErQxlU9,wg{q#78-,C%&;L'ۺ1b+\u'ca)f7vkt_T9?E?Yjl (E*cO/ @ʪIwqipFxY weV0\:e`^׫pĒ'i0 #\@Id?&aKuRjoU KZ2]ےWo6CEZg)=;ଙxwpiO]O) `4=d3=g2l2:whZ,~QвpgP3߾ow; 'M|"1X 3 ^ !/d 36#U6ujd`lld  ä=XxzI%P Zg{|ns[I]T;ʗ\un 2rOl4`p>Oy+ 趵4c:nj@ 2;r8m3LQAl==UsTRGXY#L`#,m%3)7q̙:@=DB,99 )ƚRVsfZ~Wo5].cMvNuLYj>>9K>Yz'D=ݨ[[%@?[ @ NŀTɔULy1QB̴$|t.:b^-xFoZ4텯 )uAۚ>\dbIpWrCe FSA2;1 3js"M%(3j\r4D-Ka8}gAE.7 sٚQTR^X0"()xZdZ;cra5ir"JR)cL`"3XLMlY'I:/`!:Nv{|!Yc p̔ ؁/߬~EiK.9൯^$~fPAwVkR>ZB%"p]wuQ "R@"NRTT)8c@lT* ȌA 0՘ԫ8Z~VՂK&sNSۤ@qyLymGuε 7 sշ+Зw=e:e.Dcq4i0ODt7wB ]u؋t5^~:^i5{!yLjVnǘT]۪]UjEue/*@_U>(bT,ڹsH"RLQR4Eb S;sgFԙ856#ZV5 hBLXrj/.LoF ,A2kt)aG>2 c=T\3e*D)'P<2uF5#WrYիesES^>3RZ.>N )6Mi741)EKI%AՇPPUTP^/EbA-AIa[&܀ػo<74v6E9 >*xp#3+ҎYATxqav2ixwS1 ;a [7:(%eo϶ff$b)YHDhxӴ^^i{\5RR\.k|DͺY߬Wz՛ԨUrJ;"b|!꺮ZP;Dml#b}voUFBM)}O./BRR Ԁo$_e73Ռt{egF_a4gvUE%YjUbjS1%M9gzy (K kՅ:<@4͇m6)Y$bc9Cf4ˋX/XˈYM^}}Ѧq70'U:͞#=mH_o6mZ#Swt;1Ow)#[t+R9ݲT*aej;=RsgH;pZQi8JN:*T;,Vٴi><@)T b* [$0)` SEjg{جn߽~m&IRUS1՜ϮL$ܤvӶ6"]jX:_yII%V&3tb'QPUƮob' )ɻw7j_ޤ$ph?/}l:D;jYٔ4Cl㊂xd"˫v/==bt*ީ,~m"+.P}ai4?N1I?gz_o{NKc݄[1E=?]~I0:@2N`F|Ygt՚BШőU%tF*es D 2iKq٬7jYmjT "$̬znVm%wႫkwqK*j*שmDtw Ӡ5If4&T5ESfXHûlˋMn٫0_Dg?vq tdy АQГ^k>˚=Q5h_2;|& s<Kˍ݋=")֛߮U^IMrZhIz @3 ˞nr`WUF 3c m4ͺ]l`BpiRsSeSssm^؊ u.W<,r[9SI\`&"mӦu. fNK*4F[qTpùbǵn叙}_1 ]8.o}]yO4)xnZ`N?z>udie <-yj²I~4uqοRR!mlM$zq8#LIU=LifݶM*Bpe|U]^U!'=fډrqf9Z*Ilc1Vu*Δs ͪ`eWSk1nBhA,~]sWI묇}V@kv/Skzӝ= ueb;Ayr?ݙ:E9Mޅy0 :9M 5YR+5QӼaP-Q_@"TLXoS1V$#iR;ʦ t#$&5I[s*XE* -i$E3ffhyD-cRsFn쿰Y9qqs U=u `=~n*zKwOy? gHw/`fj1:ʇhע *;!qP҉J2IRJ)&5}`Ʀ c\&Q&㟈@.gf#ulQ\U9s?bwSiUMQSJrDX5 W)?KGT&k@o~ÿm.^: 1,Qʚ>~wG_ ju 7u"=[xl'5aC:]zTȶڤjud _ Hւ&O1<q%!pfbD8WpCZvDTqUj(Yb)籡"d"3"3|p̔iJ9pyv#vf 5$S3X,Ry ]`aFP.Io9n|i{vx#>ϲ>2~DG LZ1ksT3U0eT@nd}eW5JNԂhj@8!8hb W 09ޱv$]Y6{f@ykOaRsy쳅&~ҽ^Ήv?:bh؝)>m)ЏBO!oཎ#1K6_q&;rL{uxg(5 ]մ˯Ʃ'_KA#[cH䡙!дxnoƔUcG>p5QJ99TUX^)nk$9bŒyV~$¤v| v4آ.ne<,/O"/@DUӅGMph`"Z]9S &;B.6-\I`b!v̤bhUؑ RLL Bw녿 L2DS0}OcRdxg~`BT9O{ oM+_y\DFͧ {|9bNV*Tmj#&huј9Z,s6!H 8;>!(Xk!zZ_^!iKl aF?}}b27xex7ިB1Φ {Zf龼p?taX 띬e0AjWhoѮ! f]2K*PyLUEȈ 3U1>I`GfdmUl$E5Az%ZN[u|]{`eJ,%6w híbUJs?2y4~thV*ܿiiT7,w{ i{)0mPrq,Nlj:֋Ge~9Yۍllpq**yv5LdtV f8P1<I,5btt쑂^ 5SWu]W/OJdB,DTٹ@ڔRpZFFڍ,LmDIucHŚ41!.4.ryf0 arJ )Z2fqUG8ŽvM)奠З+ w˷_~ݑЮn٧/nbZ5ѷQomI:q{a@);LISe}Qw7_* KD cީaNU5IbN:fkQf65FyL6+cg KsѧԈw$RUIMD9f8 1NJQf67햶_RrJ-%E$Ww_sգYf:R9عMjx[/? m6\hFػfcG۰n`GcsMd 7wGlzHV7L^iFmFm0{svbq.+N8MfcvISRγ󡪽Δڍd9+ @L]ČRJT`&"Ac)\b'섽hUNͭͻD$;9f̟M] I:k?I,:ƺw?/xVQS38ox:Sя=Q]&[+h;yD4\\,..W"Y,gMd쌝GM) -"nf֊ B= `I4AՈ̸6y32v}t^){ [KH)r."9(;BD-j@f)Q\-_8ӄ`xG̫dݶegw`jQfcHB]E D+ꥻ <*jǝ$Ks_b1lue߯7mN6ެ67IZ3PE,xC(%!!Ջ/ /!(ݭΉ&)s.T4,g8WPs<8Uec{RCW:}01INBx=c]%cޛ>Ir\yb=?"2Ar8!wvveZd*}v49ȹx H Hh8=}pO̺xUgFFxxxDN5RVU{/q-0gM^VJk'wfբ몪:cj[}:GQ1ZC]ip22^EKʮ 3kς^@A!.V+bҮJRAM){֝h.XK~efئ U\=_j@$4˃6tb9<4cꪠߢ arӟ)2؋4!+ IDAT$]` 7>Y]@~#hd:AO48Ces'O-X#5*2g/6ڃ-IQNݽiouF/EDSFy'$R@p^HpƘT)H5  ֢v=ԈȠzj:RԀ1 jXK[lg1(RehVL's׶.+ j 6EĊ!=s\Zǣ-{s՟i ۓܹV*"ZWN&;ݽ`j+=dxT)JȰbǡ r="Z+L:*SMHJ6@, !RČWVPUZ+ȑ u_R6ʞH'Ue#†K>?ѽ-+PW Cc1}D.]d̨C+"@ԥ5k;yts\e[UzDJW Xz8{`FttOӐ+%j߶mta~Ri9; Z5AEhz2ww&{jwbw+=)2)+^l/LSߡURh@tL&JEE|S &` HhPD$ˆtT6^)!BރVl0Z4SǠ2ED…D{/M.vzםTJ#@ k]_^6#_=ǧv,"2.f^FP@_de_׺nĥ4}"++DC/"MH.)*z=ICn<&]C,{n1- y|E?zE*)Yƀf0_2'E! 5  +(Zt*T5L0+kJOb"_N<DIE bA =2/ZAR];tNXڇW3UcT2ԗO7J?c`J- rc3<gq bYBJk0EHQ%鋛BS(/+WUG+wmT o/ C`+PB4amm0!4ZQF>җ"d oF a2X; F*"ރ 2a@IvnMٺ6(%K-=`@]k휣 ,r֟~䅛{~b -ɖf¨Fg@A!w~]ItJ%5֣ⅱahb?&nAYb9<+ xhIWg݃aV';G^G:n. 0!PjJ]A!`يh+C5!ѐa% (P H"<0Cj2E"Ĥ2T:3mݙOO0s԰ !5;=ArfRgKNٱܬ|o hBa_w@4FT G0Q@4!_^uia *RAglVAiV_4Dϼ"HkwkW@P_<>ւ%_K_Tqظ$USHTD'IH@0Q'<f+jLT0W򆡮J.P/w0_***M$}ÎgXt7ß]+/=Ϗ[ED D dɾ:KM(D$(2  b bRiFI^"AH2^g*&DrJ*vqCz3LA:FK>=<>߹YQW 7H{Ss_JzWUQR̬lBW qm}Nz3QM'kDӥ1c@,Q5?iX{$}Ju05?`nf?>dMW.2zmsob֭?sJaW8~y'Q͍ vc `$" lӍwS6ůK$Jyց-zL0$0ʤr/Xvt )&])X^O K+ '"9e͒H ;~tଈR ͥd, @8JLXQWd|u ]b)? " ":ް\n}IZ7 [S[?kg.⡡珒_5ˠn! )J@80 (iI$`ZѼz/*$PV_RcU182:8%xUitR7$ѦK̰ V2# ]fwXv?$OfwYq(-1_+.[lX 33 U˯Y,cxӸmukb\\"~~0n)"@0}%,dVA ՙ81A'm}uUHZ33X$*x1zિc_BIB7ݤmj`,Exe>%H8ee!`@R HE<_ʲC )9Rm"~1=g&V<|.1IuW&i? TABߴ\yff^W2")YhlNj|XT%ݛSd*?"̨9k%Y&- " Ĭ3b,^Ò&F4D9{2 uXAu0p|P GmMZ0l֐/Eb!vK'V M3d2ڲ'[oZGB Ry_,/EA3UP2tA{}w=aDDDD(0̩gZ@!d0R),SAi?]2|r|"T{j!ܥy)qn4feoWY?SI_W^H ;ɢ J=tOw$y@Du R*y/~կӿ|ㅛ'SbZys3$9"" @5+aM!Gmg:t :>ADU=R1~$8!*U(5\Kѷ-.y,7m8wC ڦG7 |%_Ag{ ךff•s uŨ-$(S}v@!](&@SiP* h@G<;nH Ohd xCB%y Vp&_VÀ9M&Lu "|B2;H́{H8$r;e<\b{ r}>~0$|Oshʛ:'4#PR@tAZSZǴ'f눡B;6Ig䭢;;{wo+ẘsi0--("H L B1nc2-zP>[fX2GD AFN1BB($¹b׆CH*s9 Ă(^MuLGX[:,$?e O?9eb+!bbP#U]+x03SQ V$^7M'~e2iҗMj2Np73 H/xٜ[0V , 12  cd$KSZ @PX-*GCG+:G.O~B~%_? 0ܞTPf ׭ <9GDZy5 3 [PUR 5Jj' Mu&pÚz7n x-i)hi)*!YI"("`5q"X06LT(H(@ 1S]>0 H ",rA!#:Floѻ~:j Q. Wv}%_''ڄ<AsZ8uK9,U).}g}DiEjm!8pܺ}d{ .yY򵧁fb%%L;dX 8Dղ'jl-#F yp30egpȚ]A9_KJ+xy?O35|%]Ъ>]̱? ΃NygRp@ܓo6H# ܹs+Y/|[CY^~.L PRk$ʐ480Uh1PaI ա_18&ky e1tщ53YPu6ZUY~:` 6m|+k#4s UfN5fuHC"b۶}VLaXVXDc3!3<Ůkd_|]xQƍUFg'Z2cQ5:j:)?m\P Qc!jBA @^F3NJcMD/zbSXKs?O[ӹ ֊C򯞷٧>~ xl1o)n{6^ЈrÚ"qekzG XUxw //%D_9 PВE5]lq1`^&&t  O,K SPJmZ%#zxus䞤<\\ w},<=ۊMF5v/"Jh±gHYg΅) :ܹ_YƟ}nʁ͗Sv(}k|"#പ]Ϯ'@ztѵ@͐*Ah fï"Zk,̖E޻ΉCD4Ɯ}B̐ŊYΏ9YBiM;G):10(X+gD@FAFq (Xc C>Xt9âH'ORQsZڌol.沑.SGP{Gp ,9u;(g]xy וG;.ky{#-ϸWr;]yGg}6,=jvj%34XcR(݉3 *(s(U gf-/*w5$Θ K~fdd$1z{LA%dRduy9b⟈8dn Z=; ]FaYj9# *itn2TO>_?92NXi?‚ɾT&Fz3_TJ 10ӻj|nZmC}P l ]QB y.)O7vј?CfhAѕ-!]>0A\O X UoCaH9N%V""!g&rz怘6lLM߸oF(HJlo,8tm@^c0lVbb)jT87r;֍*KҺ&">;V)MS2Q9#]a, z u#fȃ#XFo{ He,UUv)ѹ$bIk,X%%g]eCCy|T%7fS˂Q15p+ L ~ѾmVءe , ZYlvm+v $h{im0%%' OPJldWeTP@yn C&TvSZS@¥&3w).7'4t) N9Q?ؘ S> 15E]i[IO#̯t|_FL pY'f7fWuǐJƣs@VbAZS;~ў̔!λ:-}_5}190xK0 yn,zyY7G0կ; fbR=O8,gjgfM5j9dػ|3!t΅RJs=]B޻`k_Y2*e+sJ52Go~Ha4+t.K&;BtKɆzo͍ ")^ÞQ?{(?'Ti&;;мG?89Ծ ּ`3SJ&brD1X2dӶl)?xҀ/p i+҈\?o?- ,kVi_gG2* 3 uEEzij[6||{+mix|*AN;5?ojJ_A`ׅ_C]8R>=q?ATO ] :+Fqx#DG(e2w`v%0iչ֯ #o: :Ηt,K!f(zE '~y9Ƒ!"CjCaVJIҔ픇'ͼY j<$[lqdZ} (" @00Ztڋ@ BTѴ`4V.]>U [t*umۊ1<$>X,%Q-Y3r:l>uVG B'Wki]c|HCHI1.kchKdY޼}x>i{ԴkDlVͽ hQi{>шыv*Icg0F3w(>8}[+,y_}㵃|ބ &zyhzb?27*J= K׿ c 9JR*9VsX%- !%=,ASL:ֵ "ιl!ƩhX8f,?r23ʑ6ڒyӦo7jfnfSȚΙ b@/*q'bىzn|キt:]GUD< =7y= ]-tv䤵'h]b%[~\U?]2* . DW|c` e&X wFι᝹-m|n:kf"ҐV;@X3RriA=˟ʉD,oMt5%Pхc_ix4l|q9rVi1E3?< @Ԫi-ifhz>yY׳n9Qa"a7},㝻w޿/ߦI|R&~DHѤ )S*L,SOR|āʲdT6/]{JvyՃ~ Nύ#<ĀOgV5{mhW]zK)Z־@ksb;@E gTʣ{##Z:KHv;2--yG(S^8ju]*4w|g:|P<3y(O !`),F!((7!^VV se]i\F[QNCMdܫo~K ʒPhl #1Jˏt^K\5:sU5G fYYI TEXn8UVU jHduIオ㰍^nOgۛ,.ؙmg,r>^MvaYg}gbU:R9qC!Wa"Gx9'=R^nɞɍrPݼGL45gϺs]i<R\Z߸qg(ډ2BF%nRs5+&T)٫0ͬ;;;O~1ڕnb,T˥"A2j C~)BӛgzWD2J4!ztƸE HH=:;3C^7zThe=|?`gΐ"~%`!6KB@屸jRxkѥ=)gy#J ªְx4.q6} eˎ{'4ݒHR6ZyGx+h, mr|as'OiUULqdw{?~[=e7G>pC139N~zPnnh5D҇- 6HR=24 E52- Oxy *BXQh 1 L[htѼENgY!aēny{齛{.ؙs .J8B.KvgdpRωKVoQd7|Xrze>{3V0Q`98{qodk{`#Eu]UU9W8qYPl :!Nk"gݫ'X)5kLÉGwMmeS ~X}'=TETŨd?0aiW'Mx8Sv !P<{6!}eAEUQc ҥK|F{'WlQ!7bYmH7Bۦ⚉ܞ\lԲϸppx36Ѝ4KSy7ַ-g{/TH*_Ug%o-)jv]ZZmk)|L9y޾ Lo ! 9wAi++[ha'wwP4tӧ{s>GoL۶4J 4Ȕ nM50T[-U* Z6D D'3CA=65<|>=~$]UZk.K֜b%H9|cWQ5i;$ueqXł(+aSBP458}|>O&թQ6":/7^>5LWp5)kmp.jtT~/">P *~"Y1>WV5$ѹ:.bED=3eY/BTQAĢH!b=XOOnbl.F{U};s֕ePTkCtQJJD8旨4 P:(r噯i {ݕPdqdqO@U tg hjRε(6>\'4d",Ȍu]dᑩw|29LQמนKÎ?3R<@a8 )[^q{kWo&i6fujCNvGj0|/녞I/N\"7Ɯ۶1af" !·~~7|Q|5#Ht>ͩ(sxEߪDs{\՚dnoƂMӜEPk̷n^NA: VSm`m`۶΂5zW74IJm ^LKr35b50]M} s}uV?ˣq! {|b՛fpZZS8\)aj)ZEr EYԺ,˓%3z G{2gFDu]={!@\X:rNUb*zs4}WNU:v@z_Bv9;z!h!=[H.D]A$לs]M&Tfk㽿}9&w1gUO$I]tuݝ[fUUZl7?9!Px&8G>⽲4jk[RhZμh+urFHU[Cl3SpP@DA6,l{o_^8(jnd2>}dV]?ۯ|H\_'fl6A b3+d̊ZjPs8ڑ@*|oo{k SoC^p&]BU=868rg-77p Jƾ5Q^ɁGVe##MD佈P۶lu{1y+= 뜚;-fKRD$޽a?.hqWG-ks7?LPMCe0g7 HWSȕq`ڞ5MC0^YgBqVM~HifwRbF|MxrP9EnvEdxʋJ*׆` "q#+VmfQOce^{mu+#?sz*^!|CZzoF^4yz%C<99tWz>&Yϥ EX4fIj?Go19xeb_fLX'9t+;-7NY.9آgϽ܇EľYN*yM~ڷXqƕD?1| :#B(n*žPN/[0xbV0SJ)SN8;/}cDoabEF i A& |7վ !8DW0Mݘ)9D|ݻwE$*Hq:bGz0y9wd,4Hḛ2yuhLo>f(ܛ}7;;;CОCTW-"TUIJ{?zjLL빒xN*C*\l]x@ 5EM16^D`~;)"6y}U+(nsp04D2AƩZiz.!cP횯}-0* )-cєRWFjh>_ſm۽7Os*ڤE$z#MsuTb9*k/UBi#e7cwww2;A7:}_Uն'0=s WGi4ƸULɓD!VF2k}rINZU$ C"!0 (֥\(!ₗ.@ke!`2m%]%"B_0Dɀuu!y<4AvUue=[kzX4nVtuc Ƙ۷oW8@궢GQrEB%Z|lVt ڍRʯF߿}|EZzQ-g_&]*=1%]:==O̕e H7.OZ]o9C<95*u`{؄g+y @=u  7\={!<<4Zb6Z;0T:eڭϳdJm컲$H3*eZ&ػ>>gH](O/)EekP^n(֠ "by"0y}g6JԤCMӄ0[ zo;i yB+y,n{eLGwv0މH.PK(s4B $0-$*koRْ?PX Vb0T o}\.ӞRwM8 p?jf3B@ę;sx A@ ™O7w`Bl3B3[kE!1!xP''O"^eD$DE ]o1iE vp޻f2ٝ:j`mKj4@,P @UMݝ*Svāx#/Iܶ=|yS6;ޞ|I~,˽"2jM{;wzcE9sGFW/qV l6k@kh*(F,.)e>ɒ;ΘM5EKԐq.bzރ1sjȹR#g ?M߆ y_w- S`ۆTyP8xe}S'9>yBD 1jn":*OO݋D*Uh+ 4],x^Py螧Uzʕ)ZQ޸cgEkg몪ATܹ_~y۫>UyiafcLģm" x%;]1}E0L&̱ ^h[%iNOO̮Ԉsl6j;>KȆ"3}/֪Bvb S;hO{B֘|/$ !TUޗO| #Y)Q5.ٍ((gݻw)2NTC>bvoc>|X,2 !be'SdGqEVWT Lk0DD&~׀K+ڼQgi\oZO&km?) <1BYM% Ƙ ֈiFAudGـVaD !R {x#kV5?4I .?q=mX, eI]qqXh[BX~iرp/? T$]BPճ< as,lTp#i?5lLϻ P &-s3 >,9DZ)p:(! 8৤^W.pqgh5"t @4k]SMS+*>zO!x4S"1K9{/PCZOB ^k~z޹7 ΋:w_;SUUMwx8B,lQ}\ uϡX}?'NmrQ`6ETƋ}kVRÇ~3 !ԀUUmGHZhdk g}H͵ckk~.}A}$Ģm[Ubw޻F89+c.H=1w h`O_)?=[bMfg(DL&NXw_\E%R@0 657;yov<~C6cF/)gYD4wgsYJ45&у0{M+h<~Q_ GBJktS7?هG޸N';oOw `y.:sݿNHړarm۲;;;^_GGG]E^ۮ:==e7" Eʩ(aҳ>88 lL+ Bb?%EnON57-2zDe;׺(G2RK\V<=`O>x0c2>] <[- !\nI:) yF_?)Z]a9Uuc;asVU\ I$I`ـ `d H!BiV]is3np?'l<33{ުNx{Eb(CXniǾGS8iO_R6ل4J4\!Hh$ZH_`#Dd6Xe)锴:IN-Vu]dIggg ^g$I6ZnA(JƘ(eAEiPdfRP)4Q Y..iV 2>w ~DJ+BG[o1~/66ErEo 8,vcIˉgG=^n(XdNO0.0 ynC"|vkM 1ڨ|`E]/ ՊFJ e"8JR,g;|TG?Z|=u$IBD~^NJ72qR/?;qW~OrνŹ[Mv% އ'oo9[CmLW *i /~IM3|pU8{NyF $vKm cbaϻ CmWH=_>pwYot7àq/BzL oNN뗾knjr636uyD S)q@,}=+SnNO \p l^ zlp魂o?XT옷[fބ2%*6eif7|X@'btNl_;csN'yh$>SL=BzY*N&i$1y3Ik,D*/")( -w tmoུ6` 245]i*(Ky;́V=<40UkVaܱb CۻQף(<z#*HZ۫t,z^`*y6U3ā-uڡ/5gD;R))Q\Ҥ d8n!\8v?4u^n(cl^7MʻyTqi;6ɃZ,8u.R{Mݷں|o9oZ8dz'xs?ݭ &\u~-ngC4!CiZ3A104k%bdPKT#E3;wiٱc>R;+CQftU 8SLvd9"RuʚC9o\CJi\Q^hÊKV5 l$4 bkOiQF&[H@:P\͉.Nt]ƌDicGJ0LldClP1X4+QE/x엿>A'6JQ,Z“/ԿfJR0Yꈢ8O p#6Da%D\7b6e \ FkϠMwi15Iurgdp8׻b]z<}?UXD֖5 "XjktT׆1fS`9#dYsit]<")뷵>Z_U0 05x+?!\5}ienxw{hWi!R}|g8baES9W쟘ASeɑ5Dj;0x }L8G!6} 3+{J5Gk`gm ٜ$6Ɖ&7( "4tV\"3QyE{˹Њ~;/&{HLW?( oD,>aqd7܋ t %Bkmab`iJFֹ #\Eֈs+e>Ju-,btVhQˁl7ZkpI_wAR APdZG ^T[K1DXKbA0"_Ә$؄IlF6_:NȤ(|X*v濕" 8 0O+%>+AD9:ts2nmcģ&s>vӶ_Jo:3>4;Fm18{Cm7.ooS֓{r@m9û\/;nj t}LChionG_|$UWy5f>xX_81r_L>A{_|ޝ{"#Pn"B܂닯XUc_g1 ׮|-,|m93[FȎ5鬠ѻnҮou|{ Nzd_?XKb294yyp6 C鶟֞wfLؙ;4z`h,J|>:6̉kYA\pl54zsg{ :']M4h`n89RaX[:fΕ5^j=/4Ѝ#˹[lnOo'zʭϯ /|| .>)*cSAi84bY *,5?y9GNpUW~9&w;~^xy{_n«[ٞ'*e hp ι7=8y@JO @rS\Džv=S֜ B 0l-sw)KMYfk"ceΕ+.wNP滤4Ǡs%$6T2pI;GrM؅R_1đ~q~1ę۲bDOF Ύh)&)56iiwsi2m\TH$:Icm;;!̻~=;na ᏍxDL/9 yMZDRQY(NTWsڊuk ڵF11 X+ 6֛+'t#{w|&2ު4hd#ylp__/v(h]);-u8je7?.'[6Ǒ3&7|WjSޝ7g,esM4:/N?XoF5tfw0ow_P{֙PTjƎp78s#M+y| {(#1\}Qߧ.jj)jJǧθa5tߧ@nrzv%]N;sGGnZݝ~_rD}swfûww׆\{z_m9:z݃TR /K#">L: l4.t9HyP@ @(ᤩL΍9M=qa:__w0W*FYYsh-%DDY2dD]-x@P4r%oV\sƉj 333|^±RՉʜTv1G.B1UK(`:;L,<9Uffz@ae83CąbND2]bqYg\Ҏ%\ggD:<U.#ι}ͲlzzuB'ZnZ#X:-}9Zl_ؾ .v^CVm%Ď,D6Jΐr'ă[8M<_'51-ީ ,W٣kMn}hn=SK=Sz`Iw]}<:7]R' ++awLLmM5JޞWdsE-%Et85OO3ſemw7 @>uKxs'G7^v82t]7);)diEv_nh 5 \I)ER0Z+ϬX .\Wo^YwhKх& %Zp(l>g9-Ɛq9~/&hV`|\@"ζ2ѭ0my$)f6i|SFƪ6O*ƘFdNPjiܺ&UU}ڮu Q5ΖK&47."9v](1=3 |[DdS8. IWUTQ +桵!"BSpZ{z&=ɧ@/60gt0ۊ%$DѯrwZo`<G O-_,\%K sHf3Ӈȑ7s{_] zJK):%cg:C61sӭjFs΋]_o^YluJ)v>N'b2u/s(S>226L/yi]vy)'Ȳ;dYVg~K)&[chVրkٓO<ٹ@$2QxqYlL7Ma5_87EHkJ-\ 3AvdYshBKWLy_{-ؒ8$z..N>d`d ._zx^h* ]1"67.sQd p9T&)f3τIg0Vr9Np<2&cA4eToxr&M#qTC>#%G8pM`:H0ZP3J))&uY#>rp0`|gZqfkRm#$oRj%WQ=qH3^`)όy+U \LXW5T$ݵ[坻zG8əǿ}u׿sS0Bࡏ:2;΍9j{Nlrv%@vy5xW^N?u Mky<6|臗z抩ǦKGo/)eWN0F~+y{śJzL1]e:"T\w ןv]g!_s#>/(at40M,K0sڿ IDATuKI,.0q[v_"Zc|ؘ3&?(""㴜D 0vT5xb\*)oLa=?X&>th=Qq5Qe<<"iّ/}+J9e4Oٱv%᱀3`&u[? !Y~;{2{+W̌~Ii,G`Zg3fC︼@[_y1A:+;X, =O|S>S?~ӲWʷ92TxRNzzOYd7\ܕm٭rtV-Sfo*@>9yXw4jʾ}}N׾bֳٛɾDr-oe..%}q 2]hP:"p0MLD< =x$؜:d WJb",~%:9n'BN7d{N9š3 k}PRQ HrTc,0cD&@l#-G{Gv#\.7gb27h) Gwvc:/Ll=4[x#xws}ɡ(`n\(X֛c&,R:z✋l9=~`Oǵ/MS!D{6!h.cL ̃w_Y8BD5ʶ8Rz"̸ TivDKMt}Q)3 mo}#Jf98KC>%!V;qgxAAeQq v$+sܾs\'ԭqZYpvD*>|-'NRIV5i3iyňt\TVa5'_ jW]?5UOwix$,Ny+_=dzfD~wm;mXEFn{ٶ#:Zͪ*2G^VB WVh Qw`nݗIȔK2Sw}\\_}~GPCADTFXñ {HZkhOutԲ$RT܈JG[| .g:ljKdENܝmh?~"vkH:>VADydm_r{캎n+IZ s'u0C/jpfv)sZEbLA?xpU՘l^vA/3 +phA,&cL)UgX;۳sZki\Ѿ c۴T]a"" eN=|mIk"`1>;ZXex0t!"R+etZeZ`bH2ԣ|!D08 0H=AIc f 4ʬ@Lէ Eb'eH^)cij rab82&CmbL;=ᆚr z4]%8w煞.c odo =SRqy֒H1%i02ZiL+ÂZ쥌 E!p's+}R;-_C_gwb1՗{7}?پ~7=XӆãJKq3,S;Bs.N'YF4!wψ ƹ'UK2D ["4Ό4 "|.@-_Ta2tQ靇f*%^,f C96~ H+Z!Ґ$Ƌ7lŲCkIUZ2r#e NH - ::VəkU]" PpzF0* jT9@ZL,"PUEiI& I,06htϸuDZ]BQ|.Mb SM2AC&K=;L5Z6B8C iͤȐ5?-GLH8514'wtr?N3r꤈(MuSoufA "R";\/\I+\wfRS `"ʕZNs& en}]N[cᥟf|PِaRLI .hpۍqͩ `=3 {'*($jR>`񚕈f=MDP#Q\.j9`J:(fJB!6xQ}sS5M ~.1r%d)Ń-v$ԞlzB0uK) !R01ºڵ7T k\( ^QR ^[ZׅYB !󼢋EL-Φ9r-RfiV@2Kiժe`u#$dZuN֚zfy%?WP܃ ׀K֬|5_0j;Bi`ieR3^640!ѳ$ky)-otiJPF`8эVn- ƘΗKOg,BZRɉV]X,/e5f ]Zɴ^ZEKnC!WpqeJ)%QT*Gsjfk-vR2m58l@lZ13:2 @+d*|VRt84rH O9Ӡsc-R/sy]7|\׷VFkqG =t:]E:o)MܜlU%/dqGؠd6x$I↞vx 4(e*8Ϊr^gfTcD3dhCt yիeD_dP[ tڗgctB8ֈ-4ԀQ!b.6$M R37oL! waa (pA5W뺈+-RXVuPfJq!͝cBJ~~B5: j::4p"Nb[\( }"sC+9yS䃣۟,`JaYY {{bGP4 nTuMõ+z E`wg@İ;f^O4MSeӕeC5 qPpƘxa%Z8 3T8ĵԖci{rW&'G4uX%M]%S2 :8NI)B1|ߟk r`O]]Wˆڗ,}-l=g431TJ)%\BAn% F »6isPi'ƉqFDA4F*l g:M-FcRβ5! -(6kuш!^ĦCMLLAo-[bpu\޻wo k^])e^g.2hqGc|Q3!$ 5]h8N__߬qIu#~#9cvm]lhYu:A ,av2We !z&5eq,SYj]Oֱƀp[T&ICipLNN?̎N7,W*(xJ:fjC0y^{OP<ăw4uA$9/Hw?'k:2lLo;};/ ð] κj&f''''&&r\N ]W-:Ty;n창f^D;]kBDWҼ'EuXKC*m4=xC!KbPH.fx_3hH]IR0B:V$LV-e9'/+{Av2\ٍJ?6و쯹uw. >v!>8|{ G.ku qu[c2&yg_g"} `P/F'AJ95oñv e0qu&pF#Ax'4}s0 .Rs,[wy׷z1"4 Azff~7t+chw;`ȡ/":J`9m8NA'U BG 1|b;HJJO;MdBy*zۇݴzݏ?x]Ę\t<8"ΕN;K-{ۺŝ[*r">=޳ܙWf['n4 66p-2j/<=q _?1yU~bo>M~O^?qD&yW6-Y#(.z1x}wu?pưz-0`I\Í]toz9I; 嗞OQ#  ^WVL)'jvG*ȵ։Q|>Diu+uS;g*kfb)7lW6}똙џU?( 4%?p{ZG5,7KӨ 0 ]T5w>=d>ir4&kŷSTτ=-T|jMP<#?T*X opIuo+2z,cp4|Ū fBT&ԨM-Y뱟n Ӆ0X:"iqKڒ3J(>؁xۄs^*ժM]էT[tYR,SȸZSӬS`*9ed~g B0PGGG%J'Xp\V'ڶf*s9S=p,A)APSg-^TъA~߽mMfj}av-[ka{I1YyŋҲ8PQ N?8 `E[~ /3z>6 ;uMWyXdLI;\FSq4qb*(Rո>mݬ3L(\OυvOD :=46җc6׿޹ktή|[OF9m;uuwV'9CkLAāƖ:U.56_mHUGr<55":!q|s/fK 1R))vtLNN2= s3g -q"֤"vghVZ]VMBɉj}YpKObxi 󹡔gqn,gJcFi!Fv8 -*2a˳,@DcZRfY@GFF뤘P@}?=@۴Jao4^Oj=f`Tșќɢ*9hMAحF X%DŽ٬y68m:m⸭!BDDžb{|| t 㝳Y60ȳhJcyte6f |RJgsUj'twwGQ*: GOhiX 7yW-t]OŃmڮG'[oȺߨ@pgяܛwUܦ"USj CBwun9g J)=7];w>7) p\SxJԖacѤ;xG>3L4k L[_eҏ$ Ԫy;pM$КP์KɡaϠJD re~ji- F4BG"u<& !;x9o ι`I/ctMήN%5A.`NCC/y:DyaGj'NW{?R7xu}2@`CO]>tӊ<6{hn8-Q KoC@<oNG3{ArFmUZ$d hƇNDZicy9<&[&גm2a@TZT*+Ýpchp},Y*t,s}]1t(,,r[Ie y[1& zV}-w]746cM ݛ w:6'ޘ4MZb#<0#8eyWG1Zk`ф4T3-Э/a-m5$$i݊jc5.d}H8(M31^Ok?~xO ϻr/|]Kc{tW?8#{]ltblKVqHK /]‹8g^=HJ}R~c$[2x`F'L3'~9.ɖ^B? IDAT3j~▭}ns6}޾钛_9uw{QXTCW 7_~޿ d+3>x󓯾g߾\pyEӻ?{0jek|AG{s+?tJr̕AQ eonJ/~. --y3N_(dʥN 8-z3$vzSs$]e d{Ӻ"ϣnjAR}}*FQ f1e4Kpj#Zk!JāCBZ+# qgjޚiDcR"{x \#W$\pT__9&i,˜!_R 9h2D8)@X0X0iXKx` Ux.#!]iV;j lm#/hksΫ*]b)IFYG㓄nZxxv)4m:`M#0Gi\.gs,q!D a-?86:-~Dc2ŁN)ѐQA;izZVI) ȡ%!ჵg0`e GCDH狼2#RR &5I9OT S#rֺn jz~ f7po=W_p" }jtOo&78#"3QW3==f ."$R|~݋Bj@T%hkV"ԓN-Tnj xy7/MO2  RGC{|Q"f4[|پKĆq"|-ɽ>X/f v.,GM,qγ}7WhwWoCޏ_yE!S{qoag1soffBBQ5ēĦ@`YŗVW\m|[:WV;aPɄ O.Xx:G=q^e+;qDrMJFβKvrvfx i`בQ*Mm8ƻ9)F;Y|}[:]R1Ő7\{}N+, ˙"HDYw1\(R^_XUTUKD|eY ZSԜsWQՉRƘ*eUg "0J˭;y׏{?=iϋgDﰭ_9p# [+౩}ӽVg_;^J+18a$?X!s2\̖휬wr=.~+/|]}PϬUoW^N~up%!c_hRu[O98?:#(CW?J;ZO4rAzm!Mwч/~\K6bI@g^UUU,;e'I9Qizݵ^ɰ_dĤ Fl_FJGLc~vB"T\%kSW1xP9#n4RJ5jZl7y D??$Im9Eg*&&¿.3{/RkJ{MB|tPp37D߿g_Vs%yUkpNHa"8V{rEڹ"2Iz+ cL]ODI^]^ŵflyiYi#*NuV )oɲtA}%CST'bt[~h>|300R,K+o5*k{o4 k<͟8[#vZ5"s/">Ws=jx-`:O]z?8Q̓:~U;/NE.dKg.~*}EPҲ7#$AU͍ wV=ߤ7ԿSWȩUy6h|?$"7rV[}fmq̉qs33o>uY5*Up}}=M$I*RWK~bbI)8846`&RRR*MczGcc>/333n<4l✋8Sq7S=F?ެY vyUǮ鄄T"teBAXk֬䎹^5FR6Keyy1ٷ٥ls5rfOPA)y5M$qq~u٫'L7,EQT92DNO5eaA:6~ҩ7M$j읽o[/}V?_Ї?>_'E@'ڕ^1cwo`/sKzLnRGo1?~mwGZxy9ͥuY|Xgm5EC8T_zϞ>dzY"<;~'_|g_y7~/7ϼs^,'GowP21qoߍӿ_fP; 7??oC_:uoy?}<#HW/#xLJr96o3wo?Gn@Uy>hW}n;Y-xLE-P@N_`pu(]Ie~JvcW~SW__9uV*F߫U {o)˲,v]ANui+E: j聣!y(`hǓuDˉ$_ɥH9ѾPY| bB[VN/*fP@Wo9ݳV7 TpGn{p;7ć)BJbi>]K`DIQ0 )Wfi(%Qd>ó?=)2 .[:fMٻ|a,TJhQ1]l_ R#\:RPx:fPmRI}r4xDVZY.<>kxY ΠXdz6mLCec% ⃷a S/սxo,'_|w_[zi½ 4?x={bY)8o^Νy } 3lk;so@ _8{vswR ,?ƿ~ۇ?S/g{zO^x3D$!T ( ,}O/z[is_Ͻ'䡗$O^/HㆼOgO]}~u:[fnԿu+ƨ}IQA}O<~NاstZh#"`z=yuݢ̜fk)7 *1U]"yeY'6L90O7$ 3!s qĨ'Z[]x#4DӅb%Xvz圻{Yt:-;T#jPΤ_y`uyyR c|W)J`u'z |jDշO>mټ n"ރ.XQ4A|PpP=ACmTZ+hV``hZmS3`Z wBgRstt󕓋i__r'Wֲ%UC8M2MAmghGHkXoDB~Wox +$'uص&Nj`z=M1q>JtyuX{ 邲"E9ZDѰ,WJ!8262_/ޭDq8S92U|;`\e^y<ڟOw7vĨ'KկREV?w=FEON/S+"@|ow/7_T"C dgyfV Pg+$a+;6#X9f叾:ز*鱍(4"jZJ#I*nsk(dY5&``i)˲Vvľ)Nxۘ+2kwnYҗY}4zDe`!_>|83 -vrR :WR",I!Kң}-PDRvj_&(^?}'E<~9nCO:{V2ϥ'}bf읻啕X'1"@EJztv"Agbո=|餺j(>`*A$QJnġImfQޗ f" 7? |ъhqAYYdRJt!ȤL\ns3lQxF:¤udL\O#Px/ u(OD:)!^G4 k`R(&)EL!!E0e?r|/)"콫{1!J0 3Z(.z L;g/F\[/MΓѤYEw2dE3ǿ3') Fq-.B 3PJЭΗZGz*5&Y<d$alSF"$ҩ1jE m8& bTAtA""T*Dc:DD(Bht:βLŔ4Z la "5رٛ.YMfL{ F Z1=^)|LH=DITVGkOd"˸[O;:^|>.Qi;Ǩ`{9ƉxD6RJa8J~%Wr1 H m E:AfHа7Zwf=+OdmDVsemܧx/zzOA".nV=^ܿKWc8u:jX,g1{}4uv'O~jQW %8rYi;䤧MK_Dz|c;_vwy(MIdAS,6}z6rWv_˵^=fmVQQ,%uA[gHGNw}%Jfkmq2`G N&7BHBJߩNnIQhr;Nin\w5KF(le}pr="IRt32y}i; ogRx@zaP6ʠ~HOOk=T&'*؋Ԥ1fEQ߿yG6"K;>kx1u>uFzB&֫)?/^Ln ެ.̐oVYB<1PIk^g~LQAl;!K}Qj@+HX"a;#xNLTwe}TFg`|ricQMkC}Mrytaݳe[ /AQeY:,WR5nw%]2Cz7 !0;QΡ juaW~w6D:n]HS5SjՍxOzӓǟ{!腉MiX tz2v1jRn74M$ln |Q=(1B t;o|GkNxj3ktҐYZVe)*B#(IkhQiaTJm Y{]XGd$!F ,J^-MOIA#U2QX I3xMȄ%Sk N GZ "  ]zv,=tam+9³O6y⥵ڕ9'H!x. bw?0FSӱjg!Dv>&3cwd8E )&O&LwJZED(8V;S)V@   91J) B *R }ƽ 2!(Ө5zezӰT0yR40 ׁ,NY08Di%c{JeFX[I JkqϜ 'P:Bj>>$MR[MԠT-Ke zmbrDf9#I4`w IDATf Hl]ZCh<. Qi:T)O}KLH5}M^m2Tj qy=xFcqYBw ,e(%o  :HU8zSvܩo>մ +![NIv= MIj/}qucTVzF,啃yNZ_if A}ᓚg`~>[K D2@ X4{QcuY Lnjnv6SZKGUȲ8NӴ"cJ0`+/©35`qUJEQs^mYB'f٬Y}Ւ`LG"M=XG頌GEȵzt@O2%g˓FB޺u3VRE?w>QQ|]mdg';zLso>JJ5YX^%P/|/^y۩^.ͳo׃<& kWu!`el&gO]8ShWeb;2FMH/WdzR ۭ;U8n8f6x [&K >guɻ#K qr֛qb=WtfSAmnpRI<~?_IjkQ^3վɴD4uY R 청iD!~ٮ=_s,-9}j9 @JZ&;v* Ɠu_ӏO=}ܡ3icc5O. Q"Z[[;rKDZIʋ4B֚.,gѨjԋ骲TE"V{'i-0*u40'TX,|?__]%62d}U;[y\Q< s\nBv)DpPm9I#s:F90:Zq>@FϐZY3O<|(1lA(FD.,Pʵ D-g?FڸJƘ6N-cWy.FVs>zx:5nL5.ʖywQ LFt~=e3JTp…s\lG\dh Z#JlMvڅ%&`ShIJdRJ  2@TZk$ɦ&y7~~c':?x3&=VZ Uj@MLLl+ _.VэF#`Iyj < DA({]|tj:Ja="{5WMW4ܺrlZC^k< X\m"0$ Ag'+JQ&E@(tҖ%UXlWgGU ̄k! 3WŽI$# *ų>BFXy6Zň Q`NR1L%Q䑄"Oj+I6{$Nr*Ijj .X~񹅧X?JlKJ!D EYxje&0*̴ D@)xTYV#]{?o_25Q$*~/?:s> H%FLl f&V^>vCGW7 m` 'Ο}ObDCUNZ+ &C\jg4T8ςDʘ( X yij& `e ZYd*qu@ePtfth%k\XZ/jWPT[[d= Z~6-H-ծ:V 'd˽ruٟ9]u>ٔ`BǮ,b~/I@S`{nV;x}aa㛏s튉{X)`*Q 1B,QiN;F:EPd`߆$Z'3qV2nV/e˩Yn :8`+N|e|c4.i jj*N PXy9[xJk`qL^Op%Mr; bhU-@%b`}KUʒuTi>ݬ6C.p_1pfDNg*X__xg{B7]2 +sl_ykt^Ua˲g/(ff&]jեjrk-[H{y1+tʙ 9/5[^3J҇  dP4*#@@Y(#J}Aph.$'KvsnV}|NYYu7]Iֺl6⋢֖nW(y1w-.T`؄)]_NVݍNG3~`?jPA+ U}O KJ)ՅDE6H_i.^\9y򕩩2Gu{wH6$s8{~a5˲(,BhnQREwsnaX')AGzr[0sS\ JZkgggG*)Wxo^f"q)!bYCh|}BuNLzӝ8$1FhsnMnu, e %(*fRtTB\ȱw6tAQ%0Y/gYw 2-krQR9+E?%zqA:풽 {ѴZpZy(**lWO U*ĨP S2qp.:|xnn,ZXRz @fQuu+(/iN{"v@͢`ƪ SY40F{&Ou@)UM"wm4,@a4D@DԵwٙ &Wl/}mT8Wog1CY(Ql=48Z^!mxbmp:qzo(rʸ^:zngMnlUٍәOb$yJ@$hӧN}–bT`v' < qNbalq]Lm\jrrާ3'B|霻o?3ԧV.*UJlƺJ 詶PL;m+Z"KT XID踈Rcz^`wӏ++ MX,)/H"]M+bg]pEؔ-\w66VWW+Jʣ–RhV.*5IXMt#dŃ#<ϧ%H9d&p!~3{{iRZKEȆ# %υsV,~Ng+34E)0Ѡ>'`|}^^ ׃\]c*,"bJ\χ ~086..NXZfg1CRm!ɓFju\3H8Cen2R6_s.%hTI!K~Lw{ ͊&]@z){VMppY亻D䜫LVy"8w:FVlQݟ@73X(|ϱSPF^m*_Z,@/Y H^]] ,㵊q5)/ǩUZL+<_єgRgLP*3 Mfn ;NυgZa]'IK=-^6nbn֥2Usv& %3sK(vHh>ﳧ_HtpWw{w8Lm+!kZKO2rIH:Hba%DĕEE]<ۣNe4R 0룒CPxpQo `iͫE? 8vZ;v2;4vJC(s'9.r/#! 4fyg0ٍnco{T+.}jn\O$NKDv#&^Yn6z"(4l77N<ıSȱnGq+ '_[Kj}NQCb`fɽrD{ y@!"X"!` 00!C^5ݼhG?vY|qcuz\ Vp>&*/YZY7ΞNq~JWtT5q-1ݲobq~fqC-?999Hy(@E{E^Y..>dIli";[`TRߪ@Pv;2VeLU#M^6/~h6x=kRIj}[.Jys mKeRI@%Qe)1~$txa0G]{ >v86~?,85wQ-vVFfL∙C& vsF#%3c. Z4 ᘹ^4MG <:"|+{>Fs;}GNV4u:=\,KU/$QX{U+50VG{DdNQsoyP4M ~/,z뭣`~+;g? /<+^+jF(fS0fq"R  [6*$Iz+]"/LD}ǪSd\/cf+$;WleW "Ѯv:H Kwb^Mj(U3:PDLe"ԎY?o-YzNHBG4= [t'\%w{@=Uԥ]^N* v4x1a̲xe?`9ڌix KR(yaۦB?T>q%#Ȥ^%IR13ƃq.賝dcO~hwM~g҉]XM ɤ>/cۯo=븠X*DD+|†-(Vϝsiu.PYTQ-g85`n0;Aʯ7+SKb) oMV)˲$oW(+)Aߤ8C涧%(6z=Hm̞hu;A<ݣ&cDG2)h51&T\p8U奞h~ Aj+Oo2 6W#"һ(h^CkAD8dD.$4ҹjR*3v+"z]6P>G8(2FԲS` (ex+貲5U1; b]YYF( Y;]≧׾퍍ZKk="Zr^Tm ,_z$;p!!͕D3UeP2(f(|ĵzu"ITM.d`CCH }Q_|G?.]$VJճ2BǨ,U$8(QHLm:Q@ĵ+6Zvդb<^. ~3U3S H&GVGe@x'C ^2u/ۃ.Q#Ad`UT1Quimprb"y:~Z,\Z1@۩ѲCIJU * Tb+X.ֿ#:M+MH uE^OBh !4B}=\i6 G%[kwZkn6/\w@ӫ+(g(2e9UZV$L$մ^O&{G.m4~ 3 g/a"HUEl80/Iu͝7DkE/^aPIRYM GZ]Jw#)"PI-f+ijou 3xEf6*LQ6sR,CT*;DMjREQ.o}Thz$&%d2BQ+-q@[!"DBuZ(E0 }9"jTAw:mTǸsi(E:GڤeрN l\^1`EiE ,AP\O8n" 4N aĖKtF){Tj*hvLzŮӯ}gOqn1dB  ϯx~)"n9t[)afC^;{h\[rz)Yi86ZנQnF8goW%غ$m;)Q\ib[:ޓ671_EEz##)GUmىXW?4y^/yF$R s,Wlg_"Jq (m}I*DFd{Y_ lU 0; 0HPS- JwʀG /z-sHH 2 R}:) 4 /ѧ80{ha([P8rJrznB*2*up.~uhkLAQa_2$ 3|if{|:c[L2sz;v mTCi! z9RG ˫͖R0_%P>sAɰMmJ Mdɻ(<'c3Z4&Yk=}/J=FJ3sgݽww"ÒHmQ($(N(p@HA68a$HB Yp"&rDE%iR[K'}Ϋ{驮:uwXߓ  z=Pוaq|b{7Lp8ZK 앝$J-ec?>أ<^|AWj3rpigPk'\Ѽg|Zwpع ;;eY!vIK A6+< Ad IDAT03 DD $@UY $R*4bo#0.u sM6XW&d.49"U9sTH["x7޾s6]Y>tsxɇH)9aJl]fLr)(T `&F ""6v ؒ{\KiVb7O3/k V]IC-S;b86C!n^~Ѫխ%`ƊOw|M# VC?Tޟ|>|mܑ E!" m_4cv%! ~7~C8(X,B惟EV #f,#G;5f[\EJrX^㳟9|n{\y3dCS!2Jn_z>w}~ĒOS+~k_s?tPE:BPId ٖZ)uhť6x!d&5x;й}'{L|t٢Vs."*\_{X6q0s[$*lvr\PxppU45ZAU/u9ǘ hp}X;wb$\~K.ի^V(!<럸-Tjy˅c!g_sIw_n=moYIaC$#x)z`ANK>QyeWj&S&:ysǦt +?Vd._k3s4E[B[7/W?Ї> Q2tH9Hfp.뢔n]U\۽͙RW/&?DPֆND̺(h`eHՍ[l'*].LwZRB[VL 0)Ɣ{(cB9ZJlԊ=&F9eBۄhXd-a6-"hk%itv0 )_*hsȎyO|}_~j﮻+U]1_vk_}53V*zَv}ړoWwoa紘JD$ ;'&aQL:,$7.O)%MWj5۽jm==FNm͋L!F d]D*g/$uN}O[G~@ c삫!In< ʫ'/bH9R!HOC(|~_J#%%PDR+*}/ɃuRЮ?jYdwbDAȎd‹8r%!;F=Ob,&Z1" 06AY$ѶYr,2i%܋0mO'R?ec-NNQu c̙ȁ$"NԒbȕO?<mo- HFJP$̶-G.mW>üJT~ }@q[~|omql"5pL>ť"m#I;pRHH Eo- Ae=2+.z T#0C(hUJxT# k^~7\/1>"uJ|=>u}7[ъu[Uc)h=a%F?xMa|LI'@i:NNH˴mVWD NISKT EO4Fzm'bYG !1âjX$RN*RU J&iɦ:#NJx(3Π@*À)scDd|ȵٝFwO/>ComB-u1ɣpPC005)[."#/j{D ]|'m GD9.Jh~jhSLhp.n"70 0c o~Jna6" ҏIP5 lf900k; b5@wx/$Sl튬eHHԙ#5!P r j d@8랠=S(eK7:@!)D5yG;[kg_adpyW]*(B`(Q !7>տٽnd %~/|زȈIcI[ c[0^̊#W`:aCucA0cH!2L Z!39c51Zw?5{mILD%eBAWB$b۲욒6 ><=6:DA$"!.<ʂ)F֨{cσĽ<~?۞L! DwI0ftAZPUjȵtBcJ UfXF@&L=yc/]oU<"9#tN\&¡rKGܤY\M~*$cHR)R(L|Q?`;3yHf\US I" % 42GD6bQZ3/œw9OGXFq1Lu#G_ jJvN@e}@Q}LFD RLN6?” dY^LE$@`$ E$l"`S-N1<&ˊkÀ1mN~)nH+p1+R؈Th/L]fⲓ"5 BEtWAzNBv/ے%t91"+E $`\dL >f8$]pn j?rV ψTF';v|pܐH+R#5)3KDj76Q6;Fny0QԵT[ȟ֑s);b!#R6׮/_b5ľTD>88\Z}AѮt~>)S,HR㰛g>;w"AyCHq9A41#'8XKR('H=$'IjDEEendn@ $ 8ȓw뉧(BT AP,}Tl_EX]J)I9ty+`tm9<|xd  )AUU {k " (h4S9kiVK=<?kgWv{[<2$Sv #"[bƻD„:sT8بW( E1Iھ+ԏͿ/|{f*!v D$!H Qi۷1~q{YΪ'RJ)\/3n32/.?!vo~㛾6_` DDHMz9 "<ύ1mR B a!Jk!D&LiY`ɲ,m¸}h,2‡Ql! D !dYGpw91ͻa]O@ɒy]b[!b{=\TC?G N ^9=Qy멝 Ut2H@|k7HIiK@tZ)̭ynucu`ă2Ԝ+"\Gm?tSuY*$lh#%P8Y k Rs`* jvЦXtm6b1* %JiRMHh= Exp\N-$4ID<~dK]źaOrDbf:YWn'k *lJ{'%=/BIYUUQjssn[f^~o}{$@li(^ʱv2(%< M;--Wm4L| a$`- M dNR1LtLU`Xej{᷺[^^VOBxouiӇ$TMBZ5"?YN'@N$Otz[tr2p]ש bXDoKq ܺk/ohaTr=;B5 AR<{{JE,|3ϘҀks,(^wJ5~o#SnIU4H]}iOY DT:^&솋ⅹi}k~↼fvYK)9Uxc\겭Oh4z޺c:<<[_k>CSyCBէfD U'DB !F3Y!DqH)ȳ!uyRJ!M 5SRRL9LLKgO= 'R05Ni%r99X$ROU0#)Կҷ+64<"8W A2Uիw/>@Y7v;g!gKB-jz',{DPZj1{ŕ*%"M \q4?{M{N`fȖ]Q%`JS:O$CXa^U(^?x9kNtʻ&RrЙGQ!5!~^\]G_UUSҬ{dc ɲo|ᅗ_ǐKD=܋/xFO=:Ss$f(P*kZwM,0:2#RUgjja~6I8 yŰ"w0%9B`P;j]1"2#乏 Q`,!3:pxPwno}7=prA68/b#IĆlJlThp8dCtP_JXWI"Hϊ-.@Ѝ7^ĸ>$R"4= eiB"9Bpſ=+X!*)tiC<23 4 m@"T7*R~BK:)3Y%G4]2 TJ.Z4"Z7qOۆePz#đbwhp \xcV?sppFDܕ+WBi{o792K?'0i;^捧|{} *v!"ヾ?XGE^)`-`AQJԎ )rpiF Jx{ x$n2ڴO` 1) Vf`{8*tU73?%THDr"iv߆g9iJU!xA\HjR Zf$HDA*nzu\ItgYZK)+|UUs=Yh m5Hy 1˵hPbIg~#y)PBaK_W_x.wplUQƌS WRl(~}XևD*~ҝC܍W_ˣ 1j%0cetZTpGِqyM͝!^aV1vc{Bbbsx9wX&H}k71ӲFz^!pQ\phQJyEx:$ 7?/F^&[Z;)T+#hlg7"q1`IKyM&:FU_Eߗ˯?͠GpAŴw{r))?B eXǭ҇Q@DB(/ wͯEmyVS(YQ<LO qc8C48+VJ$fm0`}$W4L EK@YyRkk³!Ec4FBuX ٳ)"*lCm/JGve1C]mC@Floo//]םHձZku@fJrSV>P$#A1 &Viz ެ{cnZRuIM]aJLzةw}"R=ڱթ&1Q_&CDRl½YrDGp&;*R{{NW/ZŃqSBM{g&$BKEc/+-جL֤hPZkR6Bv: :Q)y}ˋܔ1F^ޚ)4%7YdIT|e֚B]ӊ&!yޚ)ّP{T}!f6]Y;;;|_HsPnROe~A KD#a.: y09:]Nv^*jlcCGr='0^gL=Nv=jA"F˗\ѓٴO3Hs4Ւ̈(>6k<`K2f.XlT3@H;gw 0|Nys-?"jk$PAʳRfBp9FzpB5l!q畵ʬs(e;tY/ ޺R*4F]4E1ḃřYV+LHq([}U\I!gL"5UIKΘRgbƲ(FLH1^sP声!q&Y$6LDq!̓-) 7<@3aDeEd@n/1wFJ:ѥ( A98滽Nb3T9gc  nox8"c+pZ*!b=J`Ʈ!G]]sծ`U=zR?OTj3#@H8"DB\. uĦmT`:>/9g3hOh!V qpTB I_*4lhWJ&K cB sϼ&JaQ0.8.g Ƌz>3RZkΡyܑ !" E&eBrbiO~j/(3DI'ߴO  1:){ޫ;f3fpi-Z`)T?r!.wzkBFyܘ1HD1#a&P_)kvt)^Bmi_(§`p~}?3-J8L0*dtK[Uy17{ "9[Aiee"LբD^qKn梂iu]HHv9)DǒFrJŭKM\*bCG0FE^@ ,[dRBْ-&Zkmܖ ׂ#@˲VV̠7gQ Ă6Kӡ96B46r #氰/+]+͂Zyg"x>6kdD"J5*1Hx{:E` gգ$( _FDd=e 27exr{(P RDE9"ȵ.BRs,ll煕g YZb1ixG*"fϼ!ư^lgFDT#bG5^IK=RBNЁ_$"s^Hd_tr_kgp1i!Ϙ0sWHD"{ņ(ƺѥ2X5a>@ ۭ//[萈1xbf:RSRd9BS˼&Ey6? -I m)4QFZQ1b|*SG09|N9!H-O&%kտ-d\McnՑ fu( *<,<6ckƊ|kdw&$I5dBզCߢ2E*Z;_dV{+ze9,$"4!}HL)dPh2R ܯ@D}}4S@fF ^ ,>!I0@y=gy*4ߐMZ6JJB%%SCęe6YiĜ,(xa%@sn{T];/BoJa$G=TI0{Rܜ) !l+\"&"U_@ 6s!BB$Ūj~RS[L<ў-)Il'x!ڎm0~Rۉa _O~XfJ?8Rje1?p'@$BQ'Fh.eJS},Y)5 IW)vZWyrHD_h1Ƅ5BlVK=il`k1D #&ݖ|_;z-)zPA ݭ;E=6>{vZG>CK6P릥3B dZ\b9K %DPzVLJ{l(5Gޘ>3i©Ef:j z^1CVl. :[T.\` TD]A'7|aL\: OT Brd?.!L B{t\}j;&Њ̹ e,I#R{Qy[{)'X/lǺmi3OB,˲{s<-n:|t*}~+6de7DD9t9= (P32(8"_9 4`\K @IdlkʘZKh#GpRXY2Ƚ˽/~ۗK^z_|;yni;H\g 4I'Rڲ%<$_5NRa&(:0br\ְȡDTJ!u~{cx饛+$JP f_g>You3)mx!Օ=jB҅7kDv_V)* m%je5垛7m~sB^$N- Grbt~b+O($]w̭MZQ2;džݻgj #쒟Rs;I;(LDge&>yfWW㦙ADPd%8)V m/Ԙ]WlH>LҒ{>P]=HQDHXUUMTS17N|͏l_zOA !8ytXw= WOk[5RaO {[kme3rMG3,z'@GϤ&&WeuR>ĕ6㌱pW`nuPÔrdh3uiez.$_w"Y;s2dR-mcźɠj4 'cژÑv_z巿}mv`Yb*>ܷa '?`<)[='@JOth M탽K.Y7Zv#̞ZS }uBs*.5'}IENDB`dtkwidget-2.1.1/doc/images/blur_widget_demo1.png000066400000000000000000002075041352002233700216220ustar00rootroot00000000000000PNG  IHDR,," pHYs+ IDATx[nU_{ c! 8"`%8 +/U".IH"IVs*)W%~rJy[.ȩR"99g?gyݣG_go#ο{ٳo_cLkxǻsw=yۿ/~W?kGW[+vܝ{ӹݿoͯCsOŽW|eG?w}̝soR;/%qܛsovw;w瞲᝻sO݁ݹ&O;wν3p#y<>xpC>Ћ/!˲|CoogqqL ܟ50;x@f1,/?~G|GWv[&~}##g~gCv7^???7??i)'-==i~OO}|[ /\JicSMa}/;Tx{}f(N;ƻ DM!׼_)>'>1}_xs_Nu2˲||g>ʯG>3,gߨK/?Z/ꯚ?;ER!c{_5{SϽGw{/w?|x3{N=-=~Q|nnV~'~~|G;1Y/e 䎟{~;G+/W?uW_}Mۿws~޻WV /OֿI@xrkos=sjڛBx#iJs0M;w{{{_wqqq+\_#ݹ;78NWU{;w,x ۸t-@xuw;w瞲3ܹ;ܝ{w=ew;w瞲᝻sOYGܝ{ ܝ{w=e'eEueYHX"B= 5%,U5luBS55 é ,v\^)!_Y?eq={Fӏ)9Od)UGxR9gaOg-ZeR㞦#[ypk8+԰jH6vU϶Uݓ M(v ؗTu甒_U=AN^Xc硓سg[)b-Yzm{Od@ĞMm?fuCPS`"4&5Д(h!]BDT )!V%gM F,RhL)%NfAMB^Q3\JI2$^ޞVFd*%kE[RxM%)٥&Lj S^ϭ&$d_Enyw٭:d,%eۮdƪpkMV!JĊkCJMI03kJ2Cd:Lڻ@zuX٪tYr-fiڱӔj?׾"B*(ޢ6*[ɔaGkGsdGyCQwx<~:ՔU}iJ>c5@#N}#cFdC쮆R۫io9[ {եi8m ;{s-c,8m{WLCJ5-cڋ"Il_ȪjuA眝b?l{l,VUX#T%iZ3uoXf.Bb\$iѦi9v.+*еH!4yճsBPNǒWT4K?VTrε j9a gZYy#`>`51SXS5 S| FK*gڛcT]nc4deTb:0NjToA?{b*?tiV=8v?Vs}bXH ޫʈNJѪUj,Y/a͘6CKN$e)TƵAךmu)E0%!XeޜQʟlGqapjR;Pc;iTiGwDmcy1K3Λzbe$uXJ$)  )7Ø4M)]hw%a\a bo8zc`%8%oX/ :IYYH&a)f I!gh#a+Jl-OƌޡFvQ/Ms ȉx|+ CFICOA1R~o?gH1N\g437xzK?/T٪G>:s#"q,<b I.DzD)=pG86U"PǗ[ f:?gOI>W᜺㟑^:lsȎReiRgd¨α: NQ9oX+l"E!`J戰&G A$gN-a2>7!D1ծ㍋1ܟE'BESyyiHA.Gz do~v?ͼ wx}?]`'(MxO<ލžPbN=7{\8E& SDK4}'QԌhai/k )Ӌ "XH’BvL2` )P~f^.E5󢝧 n*vQ؛;%پ |=ѽڃn?#2D ?woiZ ՠb*ٰ&p|(4-4:˺I;C9pv:7^wv8Z{c|[1q#Z`Ϙ>3S[;` 3*~1&zMDd Fzш4EU!׿專henB5\6-9(gDBrnk9ՅR_{y= G&C3 *sޞ8W~oҭp$ #\[I[d12z\heZ_aUydU!XS-)[=u[o=Tkz3x͝ 3Y?e%ė*{Q[փ[V)jV5d5_R>7Xo-ޞZи"bqC?h}&*3X[ПЊqƒ;'o}]I,]w}T"؆IĻ!(c+ ,tImD^.mwś4|! JpaH;t` ѱ+[<2E!1!I4$?MU&ڑ,qWN g'N1'cV=RD2H9cv&jpc0=0|_ y۲.^?Bcjv-w`uިX@` h>Cdbs<9Iuб4,ra003jgTݦEd-Yo}yV.OG'f~[$o0ռ&<ÄĶ&-R񧆍>Eˈ@ +\rtlrueu`jY>w\JXIbj=<ڔlv̶!u_wyi\+{^uVDN&3Vq6HK :|C6 "Jv~91fxucldAř0%#Laf-'\yr-]"|I7h2$p6f;h-{}Οd~uc7?)z5(խJa&߻Ȓp/bGZ. UyV٦ HPjygtrt<ir=w K.pn qWZZVxE}WD۶S u9O0n✻G;Ȅ=yE-mq)!2Fɪ\,OZsv26/z˥qzt96+maRm%̘KEe9μQtGӷĂ'^F.8~Y?fBGsn D d:_xKFz$qN0^f 8\:3ux{&zwKOğ׆s3M;t;& ~#eR qɛ'|tW})=$<kn*B>pfɆt?b,󘄻DZCʭX'RϞcxtb @5"þYg~cN]`lTW-R NX|ױ wdzx1 :媺7qݩ^7[R[ڐno+B$#[k4}u"]^l<݌+ g&m+Z'_k 5#"٘ͧ0VEkl~khfj7Jsʍ.ܕ5lSJAj_r&DkwJir88kKXʞgXZi>}rW 5 vln _ݭBG w=t}48d6|߾Nlu6V0v'b5\趌ۧ8"pyHwwE87:DN:unTc+LȖKſ^~ch98D/%yz}۵ v2otDKK$œU$"(=:S5 .9p\4dFCT%sH,T:iZJLQ. b'L(`5EPW͹#]vNӓ*U&3`1Vo]㍻Ժ[ke؈]H{xΉd*0Br'WCϴi9+2U`1=AVtgvVΕΐ0!ϪPE<'2C5* @,J2M9/u$\3yZS&K&  e^xLIsL ɫdILΜSx" '0̊ DRօvtUWh6Xk/9I|_VT[ B[_{~,J(uX!#TGfBYoj#NDv>8ۋsv:,c5-HdYeHafTID&'9$ĵ$L2) pfŔ!BpFDi3$邋T,3ݿdٌ/7pֺn6@s@/8]38Źќeե^]3]99YDrYȤ))ɾ56 9O ,{ r%dJ>ΜTty%(341gI+p. 콆\,cf5W~g2[PoHc9[SFx=.8~"9DfE^]9f`3Zb?% ڃN]Xswo A K)x q||3$EpY;ĘUE'L3HV eskƢX\VT_OV!\U{!<ަq4{F01=B{ռ8x挷@V_ZQ;|x;s &kāN8 A)*&Fe|BN"S$BIQ@Ieu4yȋ=>2>3/t-W_z9}ӫW_狋T D[dvB>Bab|sX5-19|Q(µ&ص7"[xk}oC#R. ֑Ta⬸t hr2@n;s Ӄ:8!-^0rgʬA".A%RdI)BgW9RE y4QuN"WLW˧_Ÿ|R0[YMP12 { IDAT3WZԣ OT;ho ـ4g0pCc#6pǼ=F`zդ1F"ñm ܙKg2t. }'Sʖ@]J0,I)2e;S  r<߻'A_3MPYQCRK&!X5ُC;" ~ZVN @^M uƟ#fDTjc?*}0zA+P -k4 lhcšwxc! +66 ["wbb0A.١R2D@fWR}"^Oc Kw9IFA9yڷ(-Q hCGeB_'kҾ2{N"Rp0Ƭ/^ "vF(g-8YAə=̶AC X?"]mqەW>|;k3Q-f}*wQB"Dwu &vȔ/߲x%|q.ݶ:z-Z-xiYUn2Ի1*lF(R#rGa _o7]87 ~섯ljglӎ\ ?+>E"T}JƠYmLԉq+`&ul'^L\`AiQuK Q `+N]kwcY|Q06+kC)O<ˤ=1C  a$&1ٺoy/%x4.n 'ٳVvY mJp.xۺ6w!gD(64Ey cٯ* H G/ hvvn`,D{݆{ -埨L%僝qfJ!j 8 $Cp{Qu`&u Z\|#I#jiQZ ȟ֧7 -k,P #>mbhr5Nc5?1atE0GD o}=pt6bP*a6rE-FF]a#3ᰞFc4g9:Ti46oag4@nq`UYpZ46XT8W0! 6=& #Ml@(:V:t׃Dߛ7=C)#M3]OV ? R O $ʢhk#-KSN¾/с=N Pp:pלd"e CxYDGa. XWć[8ݯe Tua6G{a'BE H96 _w_E&e41gU6J&; VP=N5~l Zp2@+kKwؙNɇ)>2 Ґ)17ʞu?`„v[ç`䜶J?GU%&@J,eɪ:|5A`L8 0ҎEVЁ._Y>\E!# 8AEbC%IYU0_yo\$>}x&OOzK3/}lQE/!z0٤uƥkqIO6BEc<?XBXO0E b.ʽׂtҭal4ɢrotlx_!mE 3W@BG ='U.% 0<#5DC_@fۋ4zoa]N4i8 Q~4\j8F\Ym7{B/o NFw7.K1~H*'w"%g d"bh22hδ}ˁISB"^E9)9U%' E|\X$W /mۿ<Z†@8`ZH|F8mh[y/@W ZQ VxGpMm!șp; ЄJ45ogÏliUl"f x$F qe|r^> o}?_^}5O^Nr8LuQJ!N= Pev [rDŽS+{rB"@^D3nrx=ㅎ9ω[^מ qu2]S˘Y*#0жV`<= u@;ujk3 }anYfiF$˼ȁ2Q.kY. BE)WtPqo}'~=+2eRHa:$ 7E㾊i{U̞\&@3t0q2TvG3O 8)9C6n*qͿL y&ޞYćr 9(~PörέF(֔: ?cnY) M&9\2P3&Ʉ@BbZ5?y?og?t=᳢i \pܑkmRlBUvHO㫁V wz͕nqo%۽t7mcx!$EWg'w\4pK<kD&ezruDŽEg 1qt?oy LJL%5EȊ@i0舱C׆CZs|5Qe5Ue/$olFīnyswyc""]M(y­0Xg `WRè~V dAE,o1/)!HlY5͊_ebt>߫ |䣤^.,˧$o}ϋR|nr|po^(zX"uB)Q ${ 2dXDc-ȷ:*sEV:7)u~NGۀb{|L|och`mȦvœ(Ɂt4!nebg,BbL&Gg?sVEuوx]S|?KTL99~s]~o[+@qDzx%ir褸ryf\,PY{Q k7$ONEcB4툠KD#d-h0WhF6 S;Plq o =v' k u6"`#%K8 rƓ O^_=ӟ;Z L@**YGYD9'I׊W&^|_ꅼ+LYT ^ ! c9(Z>T:4L.Ӕ&4Z1\G_{ǿ-x%/KLtY-E?w<6X.m$1nu^[[>Im9Hx /I G5b/^o}!i l\`Õ>Pf Z9NE"$`eDc:W5;RͤMd5!](3A唖K9dgk/,/_?|۟yJWPU3L|Nae 4Fyߍs.[F9*4mLN#6-ޫް7r ٲ>fmKʕ>\vTܒ\v=0*̱˞~`]᳨j$w%&@9&APx ʪ]t[- l=SP kC(W|ۿ{^zI \Y.r3S[6Wv=֓ްzc!D{"< oŭ:سSV\6 d왝!4BFc6,WKJT$_2J¢:dA)ao<-_~׷|O|ZY_S9p2a(ȇ cY7ڣ8L'UhRI*B>C2ދ4U L(vcΗ^)w2h8 DytFRgDP'bѲƖrYo8@,"v}!5RK{:0Ed1+ $K`^_ l«!A̶/$YCaHVp-J)%DѰ)DfXBh#tֈMcmxW<Bdfl[0!GEX Z⺨# re#v_=Ɲ >Qӥ B!T,"Um"$ D,*qqrZILvN"//|xGsJiMRב/=2QpXi]ƕWJS5D5ZeÆW}E,OZMl W-pټp3v~ & /f(q GD(IȄ\3jɗ\N"Ee33(U]?SŖ!DLxLW!OE60\CYz~\os?҆Ō+Aӫ+4v`ɤyh 7$NPԞfќ [""m6osX< '@g8W,Dd@!38Ze,FQY[VEGvB&f>Y;A::^Z!zsˠHYu _!E49ؾ IDAT =OfE0 ‚.C C6S֦73ջ`9Dq:-!8GHfe @PJXLQ0L-l%],;TYH,|+#@LA}z_E>J\[W57 <נG\lhpY %žP%N`ɆD@6CE9C6mGCEWvkm7V?B&[5&b%J@JnrA`Z1jaРS&!X_5e^*s:A²~mOCd3Cĕ{DLuiO9 O$a"j +$)re/9enȫqǷ)72LVd8%Р f4M2 8J𣂒A+ @-g+P9x(u%â ,x+D<PNJ$ eЬ]UlJ=H`2kILv$K.EB.e6}}<>]͍Q'YNG/״X5d2Y;OU3Sf/e '("fQ[\/,ΐ •;ds2F`ІSL2) S_͚Zh|XY@A(r {P?Q,,\i@6P2Pp^M;mvqVbEx\" J[,Yf0s֐Hr9" |@QS529/W!y@ 㔷܍ Ԩ[94XNKR+r,j5zPU`d}mXl0,XˆC/ydؙ\bdhSl84_֠ \& u kf/*9 2EN$ %(gkw1 9ϥSܒjYD(:-ݙ# :/Bk2dhlQs6LMWjaG6Vq+h|[XsSEQڗLXlѷIt#=N"m' Z0H,1w̐EYFvT}O& Uf2kXCŬY2'Y⊼7-٢ c{wm҃V!0'7O,j6c * NAii[arhIHdPwX-G5f̤֭;@텃rz ș ,rO@)PBC'Q(I0Ȍ#x\ۜPr^t`%)uYHQ'onVldaʾ`s30CX\҄ҰrP+U %u*r6hR|MQTDl;9J/8"YDle.q."`% i;bx2-SID[P;%1!ywA#8#f5[u^zd]CF>l(ӉS9PRes$D)8@Qe,RRs1}Uv̅riHy%PMKpmjLg[|2kL ʫ{I8ؒK٥3dɜ*'{dsIt<9>f50gTᕅ'r 3E%>fBtng b8D.+‡ui[fTɰ.V&Dc9g C*lGRT3/ ܼB یiߘ/F rH;'p/x^239(66_QRf"\%g;ɐ ,SL\^[I>(oRvѵV\JH(>l  &TRlaՀȄ%g*2 H-+21!'ޜ)oo.t$lU's,vITB2I ,9YDLP!3lcDLy^{pgGpȁv@xkd@ᜪoȢ}C FYX|HaA!3ͰghĠ(*·?@96|42P!DX2r]R`j$pyle#lKa./'YD32Tru}Hm7[1s*Q);^ah ˮPjAWod@&+TlA"LG X1,! Sahf2aQ12Mkc 8}-/2o~b,滶og A1>@sJ}*g$!%h:ރM2T6 Z,,?@AD3;q3>F>Eѣ0m.Cǡd1fҥa]^ݯٴ@dm6[>+uLX˺77Qtu9 ~YBfB@='`aE ֤Z>9ˑ! 6%BjPКjxk~4:Ԯ  ֩dC PҤPA*2L8]W. Ʊ}[[3Qp80oof܉I;>;X(GXY q4O_ <cqx^PZ8]pǑm T!*(e3b8m2Mm [&ZKO}u=2 E. !g;b8*m+38"G1 Q25j(P׮{+P T*%V ҭ]TA2%\!>,0]l9m6e^#JIXt& Ժl{5hyvE$/?sotK]<|󝪪ݥ` tX~5B7Џ(RRP"졦;~2d"[M+E '${VӼ̉FiKh@xV||26 0J 4Kˠ"{Nt^l֤ -PF< Z8  ̈́ң40N9$({E/ef sHB*Vвz8˽Htu1 %HIoO2Fwşw11=î~.PWR}L^-\Zϫ,3f>9R# /=E]O dǘP'8A 0DƐgKG,9dUyCc@z-8C!*K@հP'~SfO BP3U`ՒЦk*0]HœU2&]Pc1^o*frw+O?h?=Ʉㄗ̢cײ tPV9ϣ LTݭ]e& Fں"CxsO!w2cϢHp.ۤGÓ'ôg\k~bBqbK4X)j*i:UGjMU?];#P.PUs fU6Vvd B O~'9N le&=}ȣD"K m y»\J;¤dt/-S噘!]BDKEhjR61O9QNu- 흠=M3 @m=M<=6F=-pb{[M6K68WQ:2ڴP(8CBʥ%)mvK'y9` 0KY-6 t@E 0z"tDq .0Sw ߦ+ g1F{#F뚱<"P&#y.Xh6̿S_.wyFG{ 06baҲ6=Kρƴ,GL4 N^2ߥLg,'z;>LNl֭&s;l-{A8,گ;pJ;")E%f LP BB/a/"pLrIX_A Gr] x$H?w&GZ:V]Q2/wԦ~'6MF쩽ܷܳܵZ9{eNgibzvK*#G!\5hP\>G63 {Bx Gx仍ӡYq8ߒAq8=-|W* @L2d "k=]M^g{dmE"ˈ讁>0o587~~iHvyV+ SYG|Gz#8|@WWMsڍ&,KYCw6T8an:!zb58aHt==C4ӟOi y͉A9$G "/jJρ˴`@ea -ޥ0܋W$w˖#֊R,oAí/8_:9WX>Y' 8ԑ:8b"@"8Nhәh5 ^%0O4A]41Le|X=X*L(1:S Xc?!?}X_q=u-Re|R23s,(A(UHRRABûB/iR ܽYGEV % EvF:_t݂9Rlahp2DO3_o.kCg?٬'OT67#} ~%N{y3ҙc1n%/2[60G" _[NH4Q=+xr*GՑVU0NW]&I(Za¼()̊8jGpHQF- 4r83NVќ[lcy1<N}^֏wԑ})tv{b0"IVaAP1EWKi%C!(yV9!lݘ&nbhݰUsÎf5(s ~YBɋy |^4F:Z}x]zg'HT@ &i!`O˼7/^{J5y:+ꪺoLvN# 0c+6C`FQ"ఎ9֛f^ǙWh#=y>$Da @4.*}j@iq0!Ow1ߤ6.^]o ʷ7n߽b.GNmrUa^yhʞ<Mz{AGGCV5-,f۱޸6Q-C`Ec%Ìʄ sm:I ]g2IS*1p͘0:-qD[t21x~8J+#'*rXHwq(h&Be#УF(fE(v3]HfCr!o־XW2vCnwV+p#UsGB_o!SM !=>4HlyuNdߙ<,HpDl)8 NL}VC/haBRHӎO(Zz ~G*깟?~kQH.%3*y"9[fGP"| gE%7 WKR3AC\Q!Y@^yuݛ߾}[A8Tˉuz*q:mz޽f:Y^IOXVĔNUI3lur9T6zgaF6d/(hD:1Nßf%Y> 9Dj^EәfXGǙ[v4|=dBX6*6}X;.}x9d\LuhXp؇z46K}m| L{iRYD>VV&y:9qi`,,F-5Y p\ǥ~(Yfi^rƄufFqЌ F3_Ӛk}¬ϛ~xq[Sџ[{?Hfʂg{iG҅w<$'I};=t#)Sֿv]JݭAVG2իx7޾ܫ]߱vҋpv )r`rfLS󱊞"YY5DWZu]ANGA2>A&Zp)q`U')4 Χ {>#1j̑ Ҏ,`W}gu 0b r!A r{>$1A)֪${#7/wv XNȁO.gww{nhvyP7ϑ;i*_lmyv{,^?_A2щ>8VVℸMp=\ @'uEP<{,)ga~m7ϘFo‘ U&̘pbݻYQF9l+O6V^[CxJ8Q^ 4x\W?WܓHQW~ )#W^ʓ($ȲIqHb݇"IylX24ȢWksW78u et vⳋz7}ح]KyvZ]1{͔!<Dh9pͻ݇7ͳ3ذ7-F2AKz++pz>FYscF.-j{^;)XWA"2{ FI?p:p_ g=er)q=͟pImuŽSIBJ҉}EDC&a֑Z&"O[C/JB@dnP4ûE C4D]u [sK!$9mgN1.y\M:{6U غwK-.C{ͷ?ރ2ˌI7|̒w=^,hA~"bBI]5⾬3j*X 3벝 A*UAVөJìy8q Gr m%it~F+1x1ATz`?cmx{ct@Gdӝrx= y"ip`%IIrwQh,{0᯿RB .>?±cJ b۪2jxxx=>N0S"D]zW~ &aꄍo[!r!swMZf}!]Lo<.( &0Gn CYI)FU0&~DZ0c؇_įc㔋 {ul0WOCTi{oqؖ\s&(Qӹ?~ Ց1#(bo#y5NY_Ժ.;5hZ%JwG[y'|RuXBSr! ={KH ⚛w?߆g72kDz(:R.V?|w(9eD~u*vC̆12)2V8{[=p g~:3~jCLdYb=1 sV0{U &'[mN(62cTC@^OoMOg, !bf@bs JT\@geq_I]P0W/~P'0) UƆ}3-R?LCD,__G->Љq`_|v m)XA ND Ws(MҘq"]9X*}Lenhj F,MDØY/U̍^/b{8Hhhp|7NY[quk'K{urSwǷ`#l %CLå#:4("lç<7s s/w rUG_$L΢d##u{2$q4zObd>$<ft%y3!ɪ"ʗTΊyL*rJʖ 5V ~YLbJṚȪ>r.Hl9޼H.[ ,R 0Pc L eMem~*EÐ`? HJ.D"v d~nnn?;EmL~7ZdH`b߭wew~[P2QMmQ ̐{2f+YT0ӵ%ԙardϲעȆԬZE> j¨#+Mysg#v>󷚨mAPy 'xL<cP<+ҶD4-ȥޱDd1va"\dLwX ~N]%8<- ·eV*(ʲD$# *K;}x>g7Wuv7ſGtlJC/wW=_ܼ~xۯcL9 78Fժ3>OO|%YWPl@RАp h\@`ݧ`~'2MQ/ʌ NLXk &@;V3}>S:> zΝ9H.7⨩ArM FDHOٮsA3bPLiT< !b23Q\E, o}.//o7%K!Kl d zE?}?~w>hȐ}J $\^uc3>1rt!]_9*prCy)h,!OĄjP*"@px7n1j ᵰwC4Ya1I"B_|uyvRo,Uuvq1IFQˉS&sި>bqo? Y~:szsUj_#vҞ4h:"BnEc>7js1+T{eN7턾dliJQxzڐyu&G<՚; zǯ{x4 c'*qy~BRb cr\.,dmCK2C0݇ܭ߳w_{squP$a0Zf!B8z%C{Wo<;l hfx4su@9o2Dt;G7py9xrVn>(X/ιvkK j]h$Zmb|tS?m)Pܿm?|lLQH`,OK`V(7CN%>lr:-+EOvz ިRP/A aHưZ'Cg\ߤw?竐B|Co /JyCrygn^}7ۍ)Ο%!6^O#\1jUSHu'N,e1ޛǽxl (|$F5cp|̴J%uQmL ?d;= yN^ BEF-:rE,nd4:0po7|t!?_^|4s@X6 1'0Kˋ;Wբ[Xj(sS hn}o_޿0Vl>4U7@n!<WFl6$?_/Xc?@? gμ@D, IȊ9Ѽ5'0} 8}:?Y!2l7ݮwO"(%% FcݲOx˗g_Er,.[yRɃJ ?~)۸gSZ96nYM;Ep1$Pͩl3s؋ 5b%;fO8~eʳ7?MP_pD~"jeUГTǠX]MR"-J9角(P>(:=3Հ_]}L{;A23 bу.4 ///SJap"g立vݦOOD# cݻW>'__\(# r(xOnd<~o>4pnk E8Awo?AJɏ2"pV"#<ǹguT vD[yo8c{ O``) >y  yA 1w!yƚxQ֐k^l#!fhC/) 0ΐviYmw]h&f{@X5v0 )! 0w8%w Cۻpyg! y }؛#eyhhF[Т˥^ꁁinHnY˯=":sO;ßALS2sP6gЅ@(rJr "B0 d2 W6=><=n6xZdikH_]J 96$n5}n~{oo}~wȰ.%EHY R%=ega4 Sr5KSVBM MX2*'~XӍq*O!1@H8ŧq8Oc8~[f/v>V&[ڬ^'@<#L0/}r%A6YmZ"{2 f%nޝAyB kQ'ϟT }'(w<~4.CHa c ryvbH=ܮkr5 v RJ)4H 4ܽ=ϋo޼/^AK;_ ֋B- IDATI!c͘\"2/k!814=t sy3Z@7` ,ij:_fYo75);hl=ċ7旺}xŋWϣG2t(L8 ڌGVU(4jc&f&o39 鶁%̅43#|垂_2Db>EbN1uLkv`N"Ff > `Cry %QVC+X,Pp9 n;14eT ;%NQFc薗ggғ++e2?s.}ݺG`ߦ_k&X-BS,PtJM̚xi&ƽBֱ1MLƁ9GGE0ŏCOIloz"=5 ?l=? |7rG6@;bahAyPOKɻR\LJ?{fc3~o|k?UBu-"i =;j0qaX<}E$O$na!@QAEo[fw߫q?*b^v)$H, amS1}6OF8U(~j&<'=hKg6px+!{DGv]BKrB $M}:vtYpA鋋E2 ;6^H3,PZgq/ݨԙ)?ugV s$Z^\!,'3VsK2Wx*i(qBW]iH*!ZY!fҍ6x겥 #К~mKN֖?DĖ:kczޘ]KL\:* >f8,cS7s:l&g{hlqxx{O6/=-AĒρN|qr(VWn8x6`<]?^﷝4H[6MցёāaAF9aGH":|buuys3YJ,F,y аMߒٳ.yIn<".....ǡS~p$זnߞAwY몦:kTSLdVƊq8Y{Bl'踟7FIl7_]n)S TXwd}pW,Q;}S}X?Sdt(%:=ɣI[`ˮŖB.IjXxWK"H2LDTZmQ[pyN_Zp·#0gIG5)vdh5d8^6T9<\;wDukt|2xC?S|x" Zl0LD-]H;<^lPҶNt$@IJb2~:HIALÐ'J~n\F `Tw#=))-! paX"GQ]wI)yj¯<=]\6ݺDÐ|6Nǿ„xȐzY)_} Uhk8P8*x̖K+㍤ 8ߌ3:Q$iqjq4&S"5DV``!"iOu|)sM~_j`/!F$7 H'.:@dDR0M. ݪ4݇˫_~ƈNCA3 0_؂.Rga} "=À@2;b]lvmq+3!xwsLW!V%RVAtǑVc -RRdTe?wĩk=v>gOi{RF.$.1?Z8P0/ Ƙ:LP!YJ ӊwx),9 bbOů aCnq"2.,2}F f4O`ޅEn?\]xv!0hP O>Xf 8++a?;{x{^+rik~gxu-+XQڎ%iVu{;hɁmDQ(jGʶDD *N }Hf߮;,!NՉ?o"㐘5' <%'ed]drdA< v= Orl; !2t\\<_.:[Lf] TrwX;Xd0O(dzywU't)TA P.\uȑOF1n"DCAJJ f4eOF"H- ¿08E<[(yrOXh-;͢"=єta_rTR]e?=tC>Q`?+WafjIePbO<ـz_ңR@S ;?aH}KD'CѣqՆ4F:= ˗7/nfXVnHzSr= 2 iWW/nn.ϻӠ1u!% ry%ZsSvZ= ~<GL1PtE ,|8:cȄȔ[y1rqSjb|tL-}_1FB]֙!P^!!1*x=|xYyi6< aC߿rug* !YtI{ \,uȼ(|~(f0!_ʛ0ʢ|:ysl=19-Ȣ3#*&M0Y)6#-Io|_Plbrwx8 SǠX: Ad - \۳kÅRtunvOg>Q*k&Q$%ȁrTRG!@yi?Pd>ð>y[?n[x}u:;Ӡ]AD@4[6߮߾syyr٥aX\BҘ׽d&Krٸ 2N!;Ac<9ӣ2194?8P1鐅j]ӄwܖ'8Vٖ3+N9Z-sO~<_GʴpP 憲 6,ǿ%uH%h*с]lχ,r:FBlBÉwKQ!E~s{c/@CFIrX},p!H`gVD*6 ;8w-Y"\:dz*2.- : $!XB]ĿD$@.W*̓gs 1k}=/NX1+f+:jQtYR q)RjȌ}<^?{6vg>p83rHJu; FKsmޥ&T =DIIeMZD̼55+85L`K\0a(V>wyy_0[h ZtY}p\n@ZRw ʼ43B@q%+_Ed0ƹ iOFz}:(Z!s+/6c ]ʺy[_Y0L8y?p5|0!%ݫ~E@UzxwADixa(r}`.E"Ƒ0X6HxqJ0cC's ISrض-͈6&{ W2U{ߺnҗj/թ|?H0 .wY0\e>_!CE"8fen<ww7=r\$ue=/~eVor+}Gǿ~~& DMSosm$UO+=LƇge6E!YppDLV),g~EdL9gd!xSp2("~xh.ΰԦM|\,:ucMQzlzF1j׋i[@S?@O`^?Xa"Y%NS=Ikz &ƺ9 w(,i[HiT]QĄd, "$$ax;|z}}nK+ @8!W*1R/?=Ç?ɗ?ˁp4հu5GLѠo8Xqē488S"3xY \9KRc|a,?q7|eOmo!15xxqQ2vPQ5 /LJ??f,X Eqг/EQ9 a4lj.P}s%%3Ed@Df0cfГLdqmmx:u߶g?ND `>Xl2o}oܯ5XX ~c "tM;#pξD.SĈ@lc֒*vAH$)e Vػ( v͗> cN&SbD]Vc%0٦-l26gc>_mtOr/BE  fE"Y+UTUZ(7e6$ZbUW.yxRH9H$K j SR15Mfu}nn[^4$6Ճo޽ݗz~E)o/X6 m0JXH GHMP8E\~e^4%^4xy~_ }$*!"n?w{naȮ UT S%TWnɤF$0F2z=7H2!(3AϮ/~F1>[ XZaQ%\#`.8|{^NYm@OHt8rsӘ[\ ˫/k.5ȱzNW_TʺJ/k?L#ɬ$ݯ߽?սE+䊎:Eh(HQ-ȫcMlOL$`3,BV b.}~[߼~?z5͆R" H!lQܬqE3KM.T@L[ ׈imc IDATa?|ƶ9^ܸS!3*8 QKYXJBkQؚQ]A.\:T5YPsHYWF "do D JvsyVtFg5C8g]kyձ@Kp PwQ^J{A:<09׿x7GwɂA!x@D`Ϡz ɤ4*; (!X&`Gs}qIi_RwVH&ka705"JK6LʩGx$Ȳ?v>43ȋ!4 b.!C‘ o5}9x2ƅ#51z +mdBmTESrjX9g\(r .\.иu˫fƾ\[1.>Y CГtD-tɍtW0QM UCa jDp5t? `$IICSxN-ӒĄHTJ g@pks4њ495jz 轷M{mX[C*l9=6;y!ϖb+K釋cq}? DKmt:I?^ s/eBF(qզNboKHQ8LK}_~?iDKzzn #jP h֘¨ î/8%N5YaUPʆdE@ɚTW|z;LId( TI5{%EP4h-gMnvݩ޿mswԫ$jqY_Ia5^2!0+ć,9V9GJl#+~ю:FNҁBMWhI'jLsLcr%iQx%q pEgr}Y}$έڿoꙥ>$!A5x Kȉ)-ÜY=LG `V(B( I)K=&+!)RHff eL3WS'hAFȘs2Q)6Xbne Yk&\S­#Ƌ?yo>jeYgV֌d:w?-ZqFdB-x L5`%-xKμ`5Wo5^<rͩ/aqegŠ$E0ww9y!V*I ]4QVm[!^^۴!:MLD+bFkԤ\76T -h) x)RIҨ}Dþ性̤*߭ ,OԌ|g@^L5"cy'GcXC&Iuy¡~\ P.Fr-O/ON%iu9C Q0!AdFd P3ʙ6ı6 FY'SJ}nrh 3$yKѿ>??t}lӶp!@N2\‑R*, ҃Ly"~oNiݩxsp뿥Kcfӛ q:Vrk&X*߂+rGx]Eqkluy}? Ca?B|ȞrH)`Z#X2,8HD(z) a}r'z-@ьP8mܟJݱgk֣BZOwٴֈ`2g@25$9 GHn;) ɭـe D C~saqDj6U8!PNz#3WpJ"c66CkM~S s 5~ 0Y&*yC='.{`=vƝ5K#[YzlyP\4o,]`1E= @7s5 `@=( ç0L( @oRtdD'$M޶tqC~tTMJ8Mmmlw){'rɭ9gCa"SI}N2$X3ֽy^k[j~<4B1FzC6ɯima6D!TԀa_ 1\=ƲFno4+rFO8#-qnf~׶_~}R-1$ȴTn OzL|=ߗ'@0[q ? ÞΑ2 pu c5oat: 碮 _Y\5"fgp8Ո\Wū]"ΊBn\_'Ȅ@*r>+GleHk4h `, 9yp@iw ^<7Ɏ~:y%:Tsۄ!T(3 :t/ǿx/k !G $I=^8BY0, Ǖ8u1k|rzl9Q{}1"քDr|Ms.(GGĂo_7m[gl33@g:n礞x_XpWd AA 9 -5o]CPLQ.F $U^`XbN7Eduuyx_WRxjV) ӓdv}N|P Eʙf,}VuC(u]ձ^sΏ_|嶹&ᥣwcTԥkGzW~5&{r4gY.tE600k8uspfTQtBP\j>ve-r^ot߮\.-FAyVv'wپ.~@"@ԝHgVnzQPgєC8{ ٺj|@fk&Qg""mn,!Ը9ʤ`;$`mF+X"i>x:Hfٽۺ1T~8a{xhyFE[~̝6e)-UT.Rb/)q5P\oCPWu VÀLk)P7DZ=jY9șt] Royz:Z1L)uU j45hd+cx `f3]սI&!'UUbu-"B@|okIӜhrSJ@TJL .s.Qy0{|;_Nz8 Jޘ})uELOOziĉaөgh&j듏_ܐEQ?5ւ\EX.I? ;b`=x-]\mY0d sn[ 4\4n,I&kzB@!*S9I[u \XQrd$"Je rRB SΈpwΧ6a|9}^`06iu}g{ힿg?<ݽKn~18r-12`dKXL3q8Xְ&2Иu!YZ8 F%T P˅_q0Nla1se5.G,]q 7ˋ._Og [nͅFC0z]/qg6u"R]c-4fHbvPϹKui8 yL#1`TsHui{23(\TO~hwmm$3 -d :D2&k>0@irNmfi-k[n…s;E4 t/Qxחc4-HWs~#Nb~L xƋ}xá^v-hӨ_&K|-'VU|>ަ3a&x\ԯ_+\Տ[Srҹ9w,8}Erl/qƺ|b̫jv,pop1Fˮ_M]g[\6ki3Lxhso>|D/[hQw;a~ǰqlH߫`]~CHE ) 3 v!F9r5xhC/2|:|zTP֒` 9$A Y*i"[2(Ф 6l9mi6fCK&A=i+Ω&GOww._.Uy=P97ik]ss=qu k/r.˘ƤNs-.r*(¥Z"QVX0ZWqjR[ |jP9#%sSr(R0$CtZâ.pBuxXurm3pO۴MnKw؀Ʉ&J ˊB>lxҬut`^JEbgA<6itյ0- @ !Befޭ~ŕ T &R ʁDOI9[/%$G|w?nԶTs ΢SCnaRHScG/πCIc=m{ lZ"%A5@Dt\O~!B)Mɀ9R f TIR&;TN~|=^OQrg͙#A1<<~'_>==FI 45q}w]w.P*Փ+҈9S._r0Β8mz/(묨)jYLZlmH4oH#+"Ut5=rwR~ )@ (/?t6BI(@Pg dǹ.*e} n&)%&o!GMm:IjGqqԝ"hw,YDβT]6F@2!@(Yf)[MJ!S ߆>23]韟?Sʩi ~`0 ynmSnS)7R F O6 @g!R)e :1}ݗyi޾E)ɉRQ&`'4Kj;ZLb]p3F|bJoMɐ8 `=q_{ݯM'+XA1f(TrC͞Q[{KEd;M-;O߅X=!^ϯ^97f)AYJȂA2"F6l0INK`K$SЄ? &1*H_ouãl^(QnQ%7oߥb-hJMݯY,QÝ{+:#IZ膪IPW?o',,EH@ cXbls0Ac}!b6)SĔ(%FC-_7~NM낇$ 35o&hNp 63Q90g- Y- `+,XU@D إˇkOo7U B$B vKfPrO%E;DOTAM~ 3048$FX1=ޥǼzm X5& u9D(O5d%ݎ0Lcdݦɦ򙗰hSw^ٽu%P5c:z7ݩe|^@F3"Bll;ݼ{}N{^*JPo΀Qj<Y){Iijnd,O}t=Ų9?u8舔,)PRje͔s<>{ a)l(YC&u% ̳?Op:3$+;)W@HMjSJOOO_} ]0Z}uwt}w0oΛhrImXein7mE-InZ*w[k;sSﯧ둯':s׫AmX[cmDapdZDN?K]SC@ӧ;ƚm;Kf9 rD xP){ʟf,œmCW=D H!I=s-]'$1645t@4Ίj"FY ZADjB]dWi8pP$@pj< 0HWé6t  ~>j2߶r:ԀK_rWx\r 1h,٦ICwHR270@׳?{,]X4"d9hMfG.i.?~?g?\fJ #= | mK|mR@C /!'d4 4 3s|C)GA(v_MKp$ i@9(+F${:ԝp/g=zRvǔKj,4nrVj7imi[jCZ=6/`@x&B$OTXƀk@04, \iUcPo^o2Tvxo0Vs `!%혿*+'G폋HQIG&FWfxbV}2fLP_^~x~ԟ6&5"tl0@MC <ڜ% 4UirVsf6oiImrn䮾nMJ!t:}p:$9dlPx:g̹M̤n6e.Cfi x~~9<ڶiǰ`,jXL(4-rMnMx8}D`h4zJlF*ȱ5}4`bʩ#z43zOt`Y9g[WFQpoh,,һ "'Xkm4Ii7mlۦP2& +Mp9g 1F<:1=rΤRm`HmRNCB"$%&˹n#çu!Ir^waHaiRPu¼cٝ>ҳ+ӡ;uA!-j]9AZvHL@z0F 4l〼TiuiU$p4Rjd(r,RZٸϷekO})h֚5J+Ƽ<}lĦΈuMɐ2~goF]$-!њ-g}F!d!y4 Q z`Bl&7H]cÌdtr&A60v}rxy=b2ձ1 V"afT~nZS7.[CYJrJ@Rw:74D@`du`#37wR˖VRB= hb) LܫKSX2sw{ ns줾NܤD 4g͙<}rxy~y)7i l 9KhUfE5Zf2Q1hMoS" /ߝfӶF@xȒ cW=Q1I@ƔR7mn%BLzW׻(L9:Fg|҅wV@SάԆzePjbQ$63^m+ٶ}cε"b?29E*lK@e,h ZtKD,$,Hؖ4,_7@!B媺瞓֚sAcع{l B[#bG1{>cICt^2Ɣ-Ruw?L8֯xoP42^I?/Dz-!^[b#AR,HEaǢ*Υwh `{Ώ/L=2QE"{zFV22I ")hZ*fPhuUu4۰Q7j-zηϗnTH1JOJW9W¬jf6Me*宭(#:7_Ϗ^.ZLMI2B, Z?ʆȠr<<A1l@o&MvK^ç9IOVĜM{=~pA0|F6dg3+qt!7Ew/ZzO4faĞ6]{a O ?)YvqF\+U e-vevݿ&@*msbd;Aya,2:'A/l+zy|yZf b"D"zd@A^ ($%rRMRTiV5wB3SyaDk顷.*aVS%5Scύ)Pd[~jU(/e8wdBvXPcfRнO˅b^3 F d\OL-PUS-"lݲ7xh TdM}^>=~W˧웙)FCn7ol/7E1\ ‘+3\Se81{F`dc:s:x@9-?aP ?1įɍ_?ݯ+;x{]>ס _/Sտ׻0*120`rBO4{VSMEͽK= d#",PToCԐ" `@ETWMRLeu*u:TnLefk`2#~<=?j)CDPF&/DRDEfbJ֩b@F CbF:Is\[kfVץ1-,2!6֚} &mb|YZk4ol[En|z|,̣l7j?k{y;5#;⋯wl=se\_v_MڨDvo-] f~9<8+ ' AO0 [ȱ> H;%g6 ,%RR!TF/ϗҽ-Zx4v_Bh,Z{MLAvK=}uE8jEq%@Q$"–dU5Uz-/_zey6ft=Ōwq(@҃Ȩ>\cJ,@n}]c/^qeڶq 胔ZwAO{*vU" T^r\^ص޻7O`wցLK7?|}8TNKrG}/Ҹứq40j Gax#P:(ju8zr#r*,m b7 ⺲Ce3>ݿ F40iҼ"F,qoNߔ쮃Fj*{&qK-2W<$lz B*eF˶oҶsZ) 26D֥O}קi nE]1P*PiN *RlXul뺵֒mcA".Dww*+IC%d4))屵ywaA{lֺK3=s۶ۻoo~ފKq"__oz;a. ')̷?~2lZ۟Vx>z帽 Ɵ$3!3ϼO[oZRـ0ݽuuEPbX !@D ]©2N̒sAz4F *(P%|)ܺ|imSH1)͗UR pG%$-`)ZR M)Ha )d-&/g$[>}pHyV |=ЙHrh"j< AAMJYQ5LHڶmmŶFD¢zzԨRؽ3=4@@!qӱޜ\T- rdE%ñTZsa5+x9|?W=<?%I?/Ϙ&ޒN B3%ݓDHDeVb*.RT /e=CL4pGQU3PD’"o|lDRe XJ1QiL :#ZLtK㐥-OODyRjfSLJY3$)AK)JLm~9Yr{;opL!)e}z|CpՒZ $ AζHcOE$B"unx3MULI1S1D"b7]DQL2Z&3m;??||屷Ȝ˧?|&Dt 7,\HHn묎ïhOVdYdDHzOwzgH׻R>KA?g|Bw {&g@?$2RDm;_^% Xl#rt@Dv1$Žg&*B=9Ta:2UdA[z/*j"Pe-i; 1}{z~YBLl>Ft aOawWQ0gGtRi>Nӡ4M"6@iPB*Z=%/Çe4QL my@Tu>LŌ*¡V+ˁj)XUd%mP_1xtlm]ǧLJ/ RLx8pU@2e8ݦ @Zq>\9`33I)fŌ)MQ˺\eM矿=EE?(N/? - hEoΈW5 Ɉ҅ H&rX_MPWEEEW_Ο^I,4N#%hf=Ut*x͑ke]@ap{3VsiP-*#DB9tӝ#d'ŤBTZ"=_wO/՛DcxgUwWxc^Ga?E"35es'e\ r#Ş(2^ی+5, OҿdǸT4|8}QXL1JQ TR p,eR ʖsSMcJ 57o=j1%E -cRg$ }Sh|6HXz:dXrfeT1R%T|?Zi:-Zi`"2 LT3Ule2o*b1JԢEiLADֶBXjQQ jB:<&LfJj@&Rf #@DMk?>?~||QΏ?/˽r0M@Svh3SŮi 1@3ǔ G>)soq>WYƜ11Nw{;;,qhABb(ٱ.rߴl7}ht ÄLxDb }$9WQ&3v\, AB6xwNJcK! ${DڷyY[4"Ն *LD=Wz H,J&R4PuQhqG&bfqs].Oo:MdC7>lny]E/ IDAT=|(,ŦZQ1"R#ziUbD5z?~i]V:sY"egp|wbz8+Uhb&2誣`´TŊ2Oek\>}ܾï~|>P%]=4䔩$S<> 6H#(@\"b.V@%{W22yg~汃.Q]=^>[u48^̾ ?m0}CQ=ӷ`_3v9]w0#;[#bU&sD\T\C$LPiROz=G k{ψ |Y.BU!mqj2le'LͭV @fZB U5+K-*yRzܞ^{5=nOq.DxOΗsOS)Q P>r%azQ(Nuԩ 0fՊŠ{vnO>=>?]E+ྚTL_X`!.9F/ϏOOt=]DLHIؘJ$ő-\L `h}P@I QѩiRU LmS(2*l=??<=\$NMUZcdwDTl.IRXeyz~N%Ȉ2%T$R4hmxh"idQx`ZTorbh{auE|yhVTI5oA dKQ,YA#=R#M")EJ&#<N܅)ʐ-z&jޣ{|rp1Lf0àXHROcUF?bf #,ǧ?|JPdp['0@ϬLLp:NV1dApSթR*&,_?_qM+y=DehpFc&JX^3>Yȫ0Uжb\M$ѡ}ơiwEp%&C ̷Ir?.ԿS`fض"c^Z(./Z/"WPԢUuR-VͦZNs9̇if4+h@;=.6&׽AL"H1Xa-e@[w1kaRaR [A٣)B1Q1|YΟ>~{(m Et: ==|wֆ[(gƾ/IJe\BϽfu&Zlts{{<`I 1PLT&c`d-V(ZTn}ɷ/>#ċHDpIF K޶fC†M2xxF3V!oj|E Xzڨ<`sO7o=XlK{~kcǖ:zC3D@BBM Ҧ #VL ;{3\֥Gde"5T%>s XB$UVTCRfXxȱ, X=iUY2zkߐctLZ1}ya!aLw2YEt6pLMP"Gv<>=sfQL P-䨙;,e2!:p<̇ZTI1cĢJrW/"V ^`Ɯs;-FXxUGXE0O8l)CH1Q2G8Q{_.?1޷X+&Ϗ?~~z\ k-&3efEB3ͣdA+|uxʎ3W>PEd"8gUfb7KqHÿ!P6R{ke}]y{nG &i" |tC[t$)lG m)$VR۶Dor^ӻ a%1R)Q8Nts7}5mL: "!KhXqOojL hlk{zYeL0!d8R,޽{NU"HԾ$S<=}Ev_ee9/e+d[֠bUK) ims$hkW߼;Ns=um E+4j3%ȝB+L߶v>ֺGtwZ{g*kݞOf;";6T &ڵf|nͭGi8Es6`g漂 샶5dRj^l`)$fޏ[lF٨5ZH$Y9W-ey,O9'.˺kdz1@*}T4nSoۛX4mٷf*Hha))%B}:IgEle![s e-殇i e.oϾ>ی-DKw&#C:u#4 hI牥eYu]7B9{lP pxLOI1> Tp DP$wD֞eYmbHg}jR s` OXqeFC4OuJtȌ}yYG=z aH_ݗݽCtHZ !DHXI3Ofq4vx",FvcPa\P}HRc֪[ķ p@>Nb>|TV, /ۺz눇rI IDZJK)*]p=L#ӻ3X-hARgjdFl"wcH"ݷ]Z(KZS0:Yޜwf+kf@YŽ#g:# J:}[!Ȣ%Gz^źeA^iI3{|[TNʤAJG(N"h}Y岞ּdBXVp `ͻwnoUe0""PғmS\}gq]e9Mrmm[k|^|K<#˶ӵmv~La6aM4##AGgLk+UINo'-j.x5,hGs)|3"޴7 iw~SmkT7otfCy:iXރ:9f)uEO!mWnJd:="A+(z@."9beJ51)AHMj26V/npO&=4O/K|Ztp!"BIaH RHM"G}"u4AZ)jɬ0nU-UMmg/edF)Zm8짨2buC#:Of:d,ᷮ"um-P5 IUmOǗ(u6Cׅ\Jbix<͇4Ϧ5H)`a8ϵwhђ)EYN5BUaFjfXZ HO??>||z|tؤZdRrLp/}Īv=OyOjpPEԴ鮕-5zz_鱵NPEtOm *ƴW| xj$!)nq/Fz)SJ>P$NH􀋢Vpu^oIQN+W>#R`S^ןC(<'OלEUD%C2 h=|S3&<ю8G6l/co$ }gFDh\Y`HwaD <QCS}k$ywPӓ}erWAx\3Зeٖ,QӇ k@[ƄB&|f:0Ý)b&E);RҔ}v MS|HDOo=[_]ͻ7wo}K!b鎌H(fww_}ZEJfpJː (#K&|@ @yYeY֥mmqo=C+±K}{ sbf6ۻ7quC08|"ߚF c&}h<%25R8<_>=\jF_[[9<{7`2ߩ/T3L{B NwzAHن*m>껻ě[o4 ElQ0Rnj)G;(5V ruqBD(4S-[-;ťKPE[Թʲd[y>"2++j}?ABBHaaaa 0 9gzdD9FZR22co-"b$*u$Șq<+$RdRDdS^VIJ$E ktVv^O&/BsBڢ^L9p&Zӟ~}zZR4!j2PxZݯ!4*aF0Fs9u9-bE+ի$DR5YAy>/^}=ޣ/ :K ~|:k)nf^TM'jJ!GJ)3dȄxo{omKu5dN|,eޏu-t٧@8E躂*o H۫5"Q+3{Ff!y)bԩeY}?˾]/HJgIE8Ϧ6/"1hד1"s/Ք9/R iz>>n뺖iH'M>Of4@-UZ% Uqڊ Z_FPq []NldzWz! ĜJK Rt+"&&~Z˾/f'9:NeU)-#*>xZk#F"g&bgmPdwxɲq9_|qDbʯ bb A8I/. wQX0bhhc 5_h 4LJ[t۶r|O[)f AH ;*؊cDkGVͲ-3Lj̼xJR"1fpۗbM!ﶼR b^DI+I2"U o"Iuu'~~'wb97dIͿ~O{Du gg5)IE>/FY^vHQKN}9gѵ>fEcf7MgbK-~>_o\cZ[|k=D/|x*L`^9!A1ˉC$r~Ljj3w[T[BU]DWڢ˶|}n׳ !Jk]STfD!r+T/>iIȠ'^tiGG-[f& A@S]&j rDf"~r6)jS8(.PV\ufX;fBAuc#yJ43EDLT4):Cc9/J;Lov^e)ł==idbv"2ɑzF)^7 %UU!q ͐j<6[(ғf^ D16X0w;B >Ӷ\nj@gAJ纍W?~92ct fR-HfnFPRJQvDoB\9KB4ߏg&BR@(4dՊiv]?oߗM#_?s;wH!'1P&U*0evJSD֏q{LEI"T LJv|ޮeYD^SggNsPR5b R!$s.w1ZxǁLb "e.Z_}Wn^jsl𛔿hŔ8M(es?`P5?_۳SLrZޡ2uKwU7N$52/mi*ujFUs%yz 7IB5;^]<Jw.)zg[A1FdC#qv!{Jy{MMѮeCħ$f>c&!C5EvS]v/S@*8"x c 4Zϗo/R EXTil=DuT+@G˔ǫ=~>G64{ ,L)>WU.*,u~{=cGmƲˑ)/<բYS3/E̓ 8xlc UD 0sSEgϑ6ݒؾnn&ɜ!SmBa)"/o;@Dzy|[k`Pё">Wm^@ŠeRe]o߮:{ER쳿@ N#^=33GTZΦ; 2~23unX~D|_~^/}-pi83T5Wij:Œ⪢TL)Kz;b#bЁȖx>̏eRJ%' P$bKe>jڋM2$cģv^ !Eeݷz&aTEVqp gw?ctR Lt$K1Q,^_lRܪ.Rɐ?-Gv.b*EGfH{)EtԘޏG*.UA F$) TY Rhk=]?Η˾oZۄWQ1WBLPkϣVĨ Jk!LAD8^c#'AjHտz9HmRfv/v엳4u2}N)@sP02m1ZH}y8]Mu1B41_Ê|Rp~ݮ6pj!c^&ۖ| OU \G1\-jFCc 1z>FIp&A +C'kU/BV>o]v_,St"|g )i!"!Be)C5sNa MU ]qG룷6{Ȥ&BDT DY"Tev^`Mi/()VY1QCe"#۸?=wD&Eon%*"_)`h`d&0o2NO}?/˲R3pKMiAyeWRkJ MerPib5%G.Ĥ$4U7h-2-## L;ğsiSF&?hѿ~8AM]z4ծ+xAEO)04:35u3R>/>Tj)V=tW11BRCd97}Nkf-2:2{ݖrUIJVuӶL\e/| 4 U/UͫFV'竽bh= D- b&!51]hc)d]v;>׏s8H25Ei,BhTm1sU pq81{01O1afoNlV,$DKYr mJ`"nZ9}?4Q".ivQ)x_'EF`H@$fr2c2&Jb#(J) /nm?mۺ.nZV{^Mk6 : )Qs38LgV$fb)#x)Ќ޳GxhD$(= M %Zvǡ+z^ui/veTsHe5=_?G>{ 24`EXun,gaTuq`N?D Ԋ(R2F Dlnu~]l)*Y%Ũ\۲d٪Z4TԂ1jMՎ=4eP-Z-Rz\.z=N@b`QI1-A]JQT (:2>Fozdc4XMa#^`‘зdL&4u\e~.yrv ]1d*0-a*b)N3M`, AG [kcIӁ#T{<1qBT_]IENDB`dtkwidget-2.1.1/doc/images/blur_widget_demo2.png000066400000000000000000003713721352002233700216300ustar00rootroot00000000000000PNG  IHDR,br pHYs+ IDATxieQ}{|UYQ$T #I1f6m ^cFlW/L $ RM|ӽ}/KS+W[/=}"/?֯n}ē>Ov?p?ͽ?{1_Avkõ߸nvhOۿ3y_x.vn+vdlg;{lgvkg;Ɗ=lg;C򾾁lgM8N4MSHRuCkvqZo;sru5rvVfx/[,CtvV6amwѾ//ɟ3.Uj.;wf1*(k]{?~>_! /P fрtڻq5q???xZ_g>O~;ǩwp`1]}?X|s~cw;{{]izp)3?3_<9ySp;)`Hիk/{Wwg}ڗo:ßy'|³kOZȷ}ѧ~'}7|x˾3Wҿqc>~_}S_`~ۿOo_|w__?o'W>[k=y/~_Wn۾ۺ$EX-^|[ۿkk=?|~Kv~oq/>Ko?{7?O^w7o/Sq;Ot&f3^GǗ? ?{o콖"͡UwusE~w|w?MY;]d/~_{//y;?|}/>i_Og}GG}/<-/_~]ɋ_~'>|"L7nz#q߯K?ǿZu_> ??>+cMaoo}-㋿Ξow~w[Hz'K Kvr|̀kuX+\xV:u_هywO{{߳m4BGߜoo='ΪE/{ _?z+_x =7wfn~oxɌHܻQdMo(zۨqyí%?oz#׾Ҁ'vdݯi=iDi=)Oo֗%oYon羗S7?{ϽkͿK~}Ƴ_Q!~%8KgsyW}~7|#^?O>=_{ի^'E"4;kg;ٻq:9YKopalg;{Y)0{~LF3=Q28qXR5\ @ˡ6".ppN 5DJHm];aB/Lj{mIqDrAI;cn1{ɚNiZ" hݳ-JqF8d3A,$e 3sQ`pB! Ubff*P^閐0D(-<~ ݛe'!#<8 TeQ8\pPQ54 0Q2&"T)4y! a(F844H y@\v4/,܊%Ffip-) !6E9{  d jo> sH9vSzL#t9l-s5:E&˽  A#@v&57(!@s7sE/gxɃ ⸩iލw0*PL0MΞ#*&i\.fu_LS3EQpz[bsS ΅M-_馓i d,(\bNb%-YUla $&%vXHG(42N.l¹ٞߌMM(!f@f.P~>pŒd:&BJF`\tXB3ٓ`(gI4;DPB] p'k9eykXj2KMP,%A7y pÇߩE`U QQi ST"% 扱k؆p`Aˈpdې̜F)&b>s& ] 2T2ǜ#f.m$naW"EyF~EO "ᑈG#ZF#yF`rT3MHyg2 .T  +AL0C0#œA78Ai iABXUej6JafDQ FXcm @]כY) q4Э\&=6[ -ˌKzžY]oVU!d1d@88::Z"`^0b96:DӪ^ҷWnsg֢*ή]ȘAPKYmN ErX! (T ǜk!4;7C TVj"j.XD?nD ɬ׎~ͺk󂶀Eh*hSnrÇݡ. :!*j z"υ2X! 0a"S6l d!D- V[0ç|( .0QPQ'Um6=͛3o,-m S@lQhޚgZH)+3 i5$ o Y[Mrge6@]mƆ0E ̏Zq& ,uB{ ~3 f: 9-"&\cbqj\[)~aFISdf0d"#)uwwGHT9Z+iIl]@+S#ɲ7[2N^bJέԖRcԫ-_2y`myo&i|. U&m3b&ZX؎6.%T7A["rmlft0fsF JոTAKhV z@1,Qpp{wOOkgȪ҅7F"@8B#Ap1]=ڬ_7k 3z ~sL aƋ z;9mhDn-6D`fl@%BȚP Cmv $v"'':ޛ_]r#vS&'@TST|cLM9mv4zK!)p3'?qǘI̅J|r)&U22bPUi*J#} hEZCm@A:|3g oOF2f|^ݡHXlF+۾\,> YeYT1XI2dI(yzXhv`94`è "'?˽]X^k_%SS/F DUXY_=6֡RJӋV|k@q.`.~apRUX P'NA1֫/Ꞇ 7i`Vytø:NO]$7`gvi9~X{eV8h~~.5ϓF]IǬU"mv."̿)uN,MFv X!RAND' Z SdDA0kw-P $JؙJRV^uqo 4?1ɏxK^DUL4 %,Iy_$|PyK- ʬ{%1{+QGVeh!*N:@6U*\lK"h˜iZؕuW"Q2Osq !Ln攪?S>4ca`[@ub&;:TH4h!ZAڬN+q,ydBn|-b͋ENr2Q%jJ+a+Vpӥ.^v-Bl40h"<&ޣr8\*iaj̷A8˂f~Mڜ-E#OmRT~,%3OR;h>3WaXVc:-+`.f{Ҫ,6?HB Yc&jČɊ$,uIr`1_b0zygY"H_/LdNͤhf$)Z}/f6$ M4QJWRKqw5=cTla#0^W^agphap9 䣳?ػ+ 3jRѷYu\n8LbᥤWنېz7Vvxok_@utfت~mr3͟Xb.%ylnf/0S-u@0bYaxՓ?o{]cWXl2db$r,=惧=qH,LIB#DNW;PeJ1$(R tJf"jUT`RPUԭNS3@2M""J)f]r琰*D@V*E6sWF3XD5f. 4• [Cs"#{'Dޢ|1Mj<^lY*mXF[2FDТ!p$愄L1Pj&q E+G;i}g-SpXg rTZޭ3X,a<>>^ _+DAPX.R_f]W fPЭ(B`TBjO7LJ'En0B.q|y7^SejǸ@<I ''õ㱷/ ֪G@]\0whb[~ږPǝ! IDATSS6f\Rg X&jT̆k1|:%}-h-߿?ʦy(Ɩh4 z%_~/?rZVf0j| M#5@cBef& 4PB`|4)F`F#)C1Qe2{:Acit,m2ی0<CUS㬠 n') Nf,3(3MÌ[&C\ƷDiqNBfv!ғ)XUڲ&ucdCFng ,Hoa |a2ySV֬f\!ӟܤ*]ޙc2ERDMQь̞+Z监u3 ''u 3+%S&3`Y"U)/::+``̊b9TLSw _Z a <8{T8!YUl|F%mSᬜ6Ťe{ $iST2iOi&tS6(E^7M[ .C-Z+)'A-47X5V]Da@¬-MWW{G GCAqz>Ri`eUHi*u;7[$5uP D"9<TɬuϨ**$!%E-MBJYB,hj\dhT#,0EMys: L~VD퓍/oI*GŌ&*JF[Lu6[[a%!2lomehY| "\. ˄Tz}u+NWWbTȆ%ݚ?M3Q"kGWj\X,gDlasLtqw,*:&<`c= ^bm=yɲ݋3!,a"&xNßM'O6XLn-H2!)LElLpL1\ZaĄk 5.3& CBal=֟Ĭ=hs})M` 3er^hvJD+2ڦ5 Ta$1B:;QBRH9%,ҶFSun5)s9a~K|IwdjDiL{0IkfAg.kj"DI`@_Bi f̊Ѭܮ%$*ɟϱ,P0՘tR{~^=?) d׊YywD  +Q-DXĦx >eO"ƚʾ1a4Idp~BFih}6V'N4&SN:a%uY { e.̕,R?' P@vjG[46Mƹ sJ0dr:K9a~ѬY3$sMr]4٬lex1)iIJ-?Lh@~%Ed\Ap arF ¦ԸP9,5Ŏ[->7Pݥ+x⠲Jbl)87kS l-򡴘Z̺R܋jFgOFX5ưNOq⋮Z \;]_1Cٖ<1(剚<<+zu}׎8O7Q *Dds"fAׇEgp^8y52<#Y1q'O_ۼ='"JXiIE=3FIp'MaŎ9Wt ]DVc&ņ1!*B BeI[PM5C b2N@өaNZ25x+wC>RF^,^yT"vt08=e Pno軾t 1MSd BX]zuQeLG0V 刉,ͺt])(:"(kqPL1l6&= Q#K7SYׅ* M5k˽2V@!U=y螫8\ee:d[Al<[bE颳3WDz1$f$SwNלҲ僜s"Td2-xۍvn]Fv@EZ 1(6sc TS- ㍨͟n$)(lfT\RXyhHFB@ CEL'$)4v&dqs$0GH`"Y-8k"ÌfF 2ndGf g3H& eJ"Tdڟu dP\rm [O/T7æZ} 0"d` URݟ<.<빀FZ5.gG7D_eo_}_kKV.RINY:M3K#.Jw /;k4e(Nz=GFSQ}T\|ŃG//ON"&;˼lG:wBpdUuf.X+ɽG\[?p2P^Yݙӈm`w~kۭMitgN3Pǰ@-y2.Sh)F;0YJs1\,Ʉ.?mGgJqSVg>&DH5!SG60q[X[j$mll!y#ŠVך%sR-꒒vf`+~4IĶyV˶&AgKt=̐V\oL1x.M"G&as>K٧.FVod'c5U\H(,+t!I0OkOOׇ'u[vP#o}ĥ hV2(F2)m6a= juبu joP.Е\Tvo9zNo^Zkp Իr4OVȒoQ5hQA&e-ؗn١nb*C[l Vdg7On*$Z5֓6u:x=ӡm?dv Gn3<8m)Ț)S"XY.OzW% 5cKU#mbFD5H 5kG$KI9^ٴ@GkځXeJ(lb(E(~lզ$rlKrT:ͼTS(! )L[=+zgf''Z$jMM9L~SR)!Vl~aU3C@ 晋5Id[C@Fޅǩ@53vZ4S+h&r-,kUU#!V t.@+@i4C)r< $ SJ7t:>RV"7._ᦃM P®+/rsYVT 1EF)qV7W ZH0/ї/>y|wv‹$=ɲuyم$zSK0I"Z NN:'U{:[ tT7jTPFjXcQcL8#dV9îpq[ʝﵮ#b2;-Z`Ճr/=fqե֥#IA(fD̲PD]f JA.0]w3Q[S0e}Av.GkV6A2Ĉbe1\1rS@dܧ~e<;Iiq3Օ,Q)P6O9yhMzki*3հIM/VHAjQYJivo%ݎG#:4i,{LS㏌߾{.piyq! [eN-0Ҫ1;Xk7s0Xij8ĸOWYQjRܻ]>opBcGa>!Rn6iz}r֡I 'nqoX\^//"fc. e:Y$19ɒm̺N(ъHNGmgeQ;fg<{-[&y_>_*~hår p ԅ4D.{pކR-1SyeW1b&(Q6ܼ#`KwjFmf r#UFdCD$#qZG4ҿ -ٌ9[Ʉ.#Q5"jV.0y|3 !*^'Os,7=bS}2vk)"R K!{`k^e|\j5VL#Z{/P5ϊ\A#2 ²qB wE_n}/:YqP9"Z' X7''0-wӼ"0fK/tVu6j:Nuz=k/K2ȊAd#opӠaN a@<7<95%D2܃VsϖBnpg7frQfan&hHet6ľMTsl21 a%"b:+ V"xU7Ę)elk>i" H3O"P1(V`O[ùRxbZPbg\[`*9<3uP\Mن8i5Mv=L1G&3Fk:kY 4ސhZdDgf36MFE8-h9O| kB_~WU:;FSHUs!0XiVJR7/SL V.(rϭ,BTN#4Y-kMt]N3[-h:p4M!QG Ӹ^be=Zwm: ӊ &Gۻ%YB̶G7̬ά.Qh !Zf R)~ #zXBBj6[ lo8eй~="ٲe] 0Wk#XhP#c/WhD qHu m[^&Ssi "Y^oFhJYK _ D&gh idkfp= $eaʋ n S HH w8gzqnyIDᥔkTz`*@kRѡ䮤GuTZ8*%Z:ҙ\ wL]8BUyNZ+M~v=f7&jgTtT՗4s"T W.5>==*Ա%[i9 TG,W5!S cl7X<JU+RTDah'+:MCEȐƽȺJ8 iq#HBM7EpY5* qs6brI2977s3yFY1CF*BJל,==;L(_]__qRw#!i\"Q5U#UɭЕW[Ja>0c r3o>5'(IkL05B~ 0d/ yZ "?q 4F!^0Љ@[9޺!6$3ei:eUJ&+,R;ӝDj{1]Jzv&Ii3^QRUV!^C[:QWs"\~ 6[+0 "Qb &-ci ;V&7U$w̟|ퟆ\\lNk)r"U£$(fCAt0lJ.l̮3p_xsucŌ" loEز-tп$kd^?[L u\xy^=%9`ZKO5WV:TeRGy\]ѿpBI^BPpHq`" q'{: ΍:7X -hԔhv$Hn6+Vrf1Գ$̹jǓs:SGdl(];c;Ҳf!N\si8xmE5nu&dC6Yt5NCKpIuS͔jwĝc&`# ,Hk1_xux{ܦ▆R&ńЄ v<)ÅjxXvvsnۣKG8^޾tcY(:Qm7~",.p9Ta9MOW7WӴ5 t=}zqIF(*Q87LZg!=k Л ӷ!&37W~q]Jf 7ᕤF h,E2mTH9t"͂I ΪʽDcj<h~ЩkbŌ,EVNq\\Ipm@i:"AZ;eYeI8i[Xl0鴵Ŵٚ( >rclBUTh*Z}鹑|ȓPb87)EѕђJre IDAT\r.s#WEjjJht-GQ_}?<]HE\lt0"xb{u)㲄.XdT,$8پ$F&'j)je{Y>=JpH- Ua`pk~ѽưѥ:Tg/eʹKj ܖ˻_crvOǒ wi Ԉ:~n4][T{gO>s% +9La.}1gyu>mlx&Zu}6FPŻ+;,QGQ]eb!"b MNV%ZWQvɓ͇nxn\>:;s3L_8o8m9MyO9x_V^۽Nnv3Fӓh''AY.Of^A :P/l|C7YP wȺ: -mE-GpR?5ث4rP$XBmj͇tq7RYlТz4UFTw2y~MSL@UGRN{6ްY|W>\\\KK5eX~غ 鸝.)eGId)!lB6r;X 4qFNٗÏxxXxTwP@RBX:Pw8o^:i?d IH܄h"afA @EunZ.6oƻ0T8#Y.ͳKM&*L*14&yi^9ߢ_W6[Xq[>{*6VjK'RhY;UrPbf`=pL#E`mcus2\0uD~Yף֛䑢ɪL$L6%P5$ҡlٝĠ"XhXL <1j,5\*$Wv˛[ҥ +FDԳ "q\mS&綬K,?|݇23Lm_Q^ H e+/p H>/57{gBJ,E?;Kir::|4/lEDtQaj2;_4by)2k6.x=>M^^\mW8!"@ѵK~7fyO^8>/ya zQm<糮 R:6)a8۩LvN؎2!K5>H7@O2*B_^ڕ.H XPDmu;^ѩXgF>s9iW qO#ԝƉ($}A4Ɠ?ӓ{OO$0؜$4܅69-#72QhXĄAҥwEϤNeZ\4{tGKkR!@,v֫=wӲ<+"LBB .c˼w7?]\("ןg[>fjEzxGw?_ӴFF&/琐j iZAn'^Nǣ"c`* c0?nix*ƨ5W[;+a' E7ȫԪ˼dqL4H9`CrRZ]("2,YI-%nzĬZJ,D%=z2]&$*;]% ZΐE0Z{cK_-t$OA[L[iG#Z;;o<> A缯6^ $) d"吳RMA`"ZȳKƬpM K5EB#Kw2SYJN^:\aXo} Z,(նOy9T!TQ[MqJAvU~N^?OcuxVCq,:{u |*$ܩfd(PRI 0qpa>^x,Pڈq+VB KR&^l7ח0 &@?v^wP:~Q <#AH*X&y^'^_ݘID>b}*R+!̦sQsvPbi x#s'y8F28R%&4gpk77:_>_|oż 4L@0Z65S M%ͅz^ٴDD-d OFqcX$r o(P)$XMYԐ5mߍ׶>!ckT)h >#Z0AֈhI@V>t׀CV~I$H!iIٳA(qzUMlll$b\jHh 3Pϟ?;SRLTr8l-={|S8E-IBHmTW{<<,yχs?φR{&d2w/_yn7e(ʦF=l_mmef6Ch&RE#k,3#dp|͇.SKA1h'UwpGTQD 括 D: U zqF%F*B.\X3. Gd=6| *v["y^lƫ>ya^<m@(M1YW95d|i[fGg3j^TPBG$=^"UhS АTԀ3ǵ0q]qTD3Gŧ{1W/C,v@crb"%@;%_zcCkC" K,93cpSDX rơ &r)vRD:Pq Ĵ݈iVʸLhgVDA5+ZL̵O>iidD+qGT244nDZ7p^.Xn~D,8}=RV@F^k_nWi9"Jo ѥۥa0|=Wrr3I'WpDXˌ0f*}m`Cw]ӵin_3O/gnwM- ݙjGvoO>= R,ݜ`L|3XZ=(92)vnTU Dj-t%%9JO$hs8Mijn'!ޅ ȪյZIE3jotٟ40ټ)UdKִv*f6Li)cQS bC)"x]8/ zYbzqX?=Y9JIJ`n׾ GYun XDQ!,BM.sV 3YwUp Y BT&-N쵗vz[h5|WDM8sϖ[7p}ƼxjgOAbn7?óo,[(d]r@W/ZT[xLv!`LG+t *ت}ƝI eUV :]AToSԙ6o"4Y7!"^7¬VSS۳k ˪EPD2Wh\f*""Z*ZQ! aJMqڔ w(l,6bM~eK9#i*VaK)eiL K AlPSOO8+&5a g*s)x2_QLQ=` !H(yj*IEdsS2UkE[gf^%r ڦd:5 >(=aj#A }9hY ,bTh2j&1a;TCr7u0*ieHGtEpa HY\c8v9a TZ q>>}Ǜw__LӔt4&`OGINwMaݯCj᧶rv2gAh cU.DfܤME9`S +Dg$1P=n^me S YXX]@O#4DD60aefgW H4hf*Sf`#R+9; -bmC(` HT%Xdeˏ.GhYQparNyŝb68Y3NQ86Me܎L:@DysjmtO٬G"Ixa(:HԦi8̇a?)#"*NO_~r{l{-Z(R8kdû,eư݌vOñ.*d<VTEP@ 8m7>]߿J!+e<^CM77oO| 9"EVk29Y٬Tguh"!'ĭIi?ȗ[_<[>iW ooI")"s |g/Ki TsYpFjo!{jF|FښܙH?fE KvίdgljMV+^;/0 o. uəp +k6ē$q:v57]?)¹vk4F+qx n BELcj).c,F*4U1V:vQl*EKTTҒ#f.45vI|m æ9Ɓq u,h4JQFJ;T2ɘqب c\j\}aT#2c eݡ.UjRuxO>>o|ݗÑj[-cC,o<)4d‰}U%ہ*R_r{iK:)epn5j#Pi2j%$=$ӭalk&úߋMB]~vf4[fS6{si[5:DM\Ѐ4:DdOa5en`O5Z*3#DtMU)flAh]N<ƃ'[b!jD=)** ļ5k1Su,vTX*vCLjdUYK1BX.b6KaØx1iPAMRg]\ݜzsf^]6a,0/0DXm)Jٚ #IF #*Zժˌw%u=A"2jc)c2 Qb0l6vcd6nn8en7oxz7RU%LvU@MF BJ wh`@PWQd,noks/lB+C) Ll~Je41A3^R18X3xQJ jSaơe0@ f˫V㤏V)usf3e(DHRRHB-"0RN:T ee>a1"Տslq;YEID=8,Z)yS.f0KEbLB?4bK# 7#d{Ï|y<S,w__3nf){a0Q$db nZK[2;\? z6Ͻ^oc^ ZMث4 Pa4jt2Z*]$ Q4TaD[wB̐9{( FrNOeiږӖ5bgj<@{d2NCVx%ݳ x2쳺FflGL-+ \  RUETE#9TBiӶ2V]LЦ攠X+v?5T)V?=0 5R &!ǫD EEG"Rb$\BPiJQtJ(|83՟ n4BP[Y(DJIfuUa"`Zx_pWa כk^Ps?>?1hm )BAh@SbZa4]]\n.ikf$ZLiQ`*P0eT3a*Ee=>~}]xjQ@p"rD҂ |5__f!ycSohy] c̯/e!͆x"^4sK0wɻηj(Lwih(je$ckJd7}РBB p+:bSfB< $#CM-h`xR3*]Vqh&NCB"M%ht і"P=KfYR0!G(πpԹ.nPdyH AF+eJۈx 5-hq.604n颌&1q\̆MjLg;5$B0)ۛ۫;ledV?̇O_>=vV %t!Ĭ_y.tѺi)rsy}=@5R5qܘ &PDej:2fNjrNN^+iE ^<#s4#_<ӯY`E@Mؓ0dCE@;|9'Z= ghbY5<j͙EՒ&d4ʒ2y$1!"rbVue 3OMn?~ 65mv9m@ej9Q{8]x#kqHiPHjdiz*_ !2n/WWN,up1ke\R kuq\kv"S褃AjH]n:/vIn^}.b|2x29uY=:"Ժ,a8Dнz,D0 PE x:xd%$2kKEj{R,k6pyy#^)%Ӫfbb{s h*..77w7\^Oel><-22Ɍ={٥-Km'<|_ d)vZץϟ>Hek59Y#ua ^\D{xɟ{aD4zDc$OHdv lS  $NPA1i6u"d޷lgq2]Hͣt4몦("I8HhM/._oGHDLqZNR_J%B E yP`f3l6ZQGN%4K\ݠ"ga(6YP~'3r1ӁᎺ8Ň8FK(bu>z<,\6G6 4\N2l΅"H%DI ,V=C2Xw~x|#XZ3BB)p[}ۿW70tQ Na˴.l>8ī/`148 om!9x/͵T ~~&^6 M +\O0'OiF4T;#Qƒf?JP @򐀄D !QBBDDtwGcKbDhcS9SV)Mc@k+If+f|W$Ȏv&V0AUASs 5iJM#K JxVEEod~Ԅ"_Q5Oo4%bZ i*ˋwlQ2 83B苿/כi;^N?!d|~xwpRjXRv$#5=xK"uza~Zb/TgΗW0lfsnU0BP>4TʌDB8O_<|YzZ])\nvW7s٧`z-wne>kNY3CsnwjUZF5sbQ)&Ti TGBń"יz@ 4D"ܑ8 g+ϖtmX3>y4~^(DĜD3m#u_@^gggם66XBa0Qm*TմYM=g~^',5!R$E\-ORWRf {@ x[6zؾn>=>s]<\JQAT,no?\^޼*2Ɨo۬g|f֗ >] Q.K`XQ[;< 9V||ۛ†p F3`'M04^]^p~#UNe6h=|}oV  ¡wb"ҞUn-[J_=ִV_//%\[@vjp; R9w[4C߮WlJ#bu_H𴦟9LH@RPU$cI&#P$5څo}jd4?ĭHvWqIGH($-HѦKjyH1C5jE8\]f;?TqpTͤ{fu2@}Y~g}>J|mN#ǧO?N<<=ˁnNcp]{Y B.w0Ǚq~[`¡ Ras-6 7~_YmY~/_6(:@dFIjڃjzݶ,\6mMܑ<ѩÎID9[6z`w8Y*ՖH&a]X(Y$ $e[0ӷKusloMlT eͫ6u$"*E΀$5HGLLz6 /W "h"Aj>L3@nQ*'W?!1f{5Wd3L2 +7e7߿(r=ێV3B:GIŘգ*ZL!,oc~A?|Ǐ?,QVd~&5de ;ٱ9d.=!^Ͽq?{0KuP۩(` lVgxm =f 7]@u_6[e9jX=&(aƷ,>|T nbE !b٣ `o|)j5p _xy2}>[rJ ^TT2 ICip|efՊz":7hTN~s]!N%,б֜C)\)) Lf0R«U/1?m{exB6 w?/m}'%"!ikPp|碬K/^|kpG1;q,qJ$"KQh?Zl~>y_N~r'uϿ]ݭ[Hr&[fVUw ɝ]R{^VGGC?Xڳ/z$.]p8̈>=8"#kFHvfA+?{zFơH79v VfA".eIFʤ4lKb1`5@_n=/iS4 Í@(F)vh>"VKJpML;&u &@`@D`u-Vf0WIhsJ&SqFϾW%X*D Z] CE8XA A(Iy:u?GfRMDɌ,”Ok89$w9c٫WMWLU{#1.aF]0|~>眽`jDwV߀ n▛r.ikh.duBy1n(> %>3~8񟷛~pQ`ryxJ[^ƺ9OHU*%!$&/tz=>n?yw[Ing8AGqÄV ⴱgs.j>a5?dάV l@uX1!11TюJXqye\q'b"!MA Z)B)VmꭸiREAa h><բ85FkjT;"MAsS>CY {9nգyž/4n6֔BV|TwݐOhBŞ Szי0Wao|=ˏ~M15?淏×/lIRkfzp fZSdO-XefC᥿>2D$VA`,p$94 4KL]5\֍{^YƜ#(x9սY#TbFu]$a<}tTuDl6|@@(daH\g!#Bk;ut, ʧܡ뾘\QX?q:fa\wS>*ERZ6m.k6Mt>Nkf;| 1_˿¯iA5ѣD$PV=,Ǐ?~xw}VDg kBA&(7(#3vL-ܫwtMm~g*Y1>Ͱ8pV$86yu 4^8Ҧm,DAc @dpfBYg/Ҋ<IL9y}vO"XI@W0 nݜV!pˈ^X˿=iES9GT&N]axyDƚk*`]5?(QMP@E%U' ?%_Θ¬I@LDJ8f`CrBBRCy^ /5rTG~2KB5H#C5ZMZq:7m]Z䓁,FLBFLڦ6=‘q~.ȫ|yϫseoO/Ѫ G}ORJ%!{MmùIma5'*bu#y5B50_O?Yo剧 fQ,cTkEa2Ӕ9 9MZOUKӦ/VM [yߛuWU=mZHm^`5fMs}Mjr٨Ksz=N{3 Ahuƫ<HFB$_W91*ksG):&J.|T.ФQVCO*|Zׅ„_\>Eݟ 0qbNbVlZbqk)%Z-HFT&f k^G &&LHc^ 1\3ATgR<'sJejkVZy\/i6(( *SVv`8X]$ojyV!0|(>_N;Ib* wB>~n>ُ蒚, hZ&|p:x|_$k{hn[˵11k1 3UU/yE))r}]/]O?/OC.|:?n)bpD}Wl#X_BPNQNzha PitorE]w?.a=N 5ҦfEO(wOD2ӆ}{=|E37!݌PSǼ9lcqrVӂ%|/+r1kTFu%YtX ﵬ M&*X]LD Q4B0Qe^ dł,@Ld"V} SAJȠC d!6BVox}{'vH//᰽dy6~;h5s/;cELsv}// [rK2nqi "\}z~x񓨶;nۧJbw2>>f$ T QL|g宱 Npiccɧ>c@/յ&P6Oo_8˩xԥkfH9v)Tf OHV-+f9ӯ U!1:Z nLUzh%FI: e q5ZJV5Ur0yG( UH(bYパZUE,d "ш`PFTJRY(BQT i `W7 1BPfĐ痧>&I>VENdG`Ġ w nA/GqMݮ#(j"gG( Rˉe)2Ogª'K$"{HFmV/WdKkR4\YnK>ť$t{ /: AKO?pDJMy|*WAծFhvyv8s|ǠզbJ@)Wiw_ۗlR'ڑf8y-Qu.c1`:sZh;92_EvKDEE4Tq/%iS\ \J0Q-dhLuL_6`H8qPCJT΃y==Eh8$Yא6cHHFTyY'FLƉ^EaIꑅPuTCaD)g7$&l$uctq{hml-a <˱ñ4?, 1sax( (q D./˫Lɤ5sAsR0j40ᤘhJg<==nx~CM&AHEN/1+b(I%ԧd"2*b]JǦM*i+" ~u >^ݲX0tr:is"Y+^_i|DIٚsc Ob|,9/c3uǓH"FOqإW$R<$j Q 1TDAº̵s5idjJ 6L㲪j&qc%ipF6tMVi;s[%9 ESFc\1X ЙƨB;Řă&B mHp0LؘiJxfճ$^OJ+`h@pj* 0UDkԒ7m69< h!R:PxJ,'5UvwYv|:r)/^<*LM̬I0 f՗|G12Nq\2\R*(ED5xb$KsB:H9{G{nM™Z!APQBƩX#N-۰m; >8KRA?H#}A~yžW`\ lsm>^d 4Rj$QQTE Q5J.0cDٴh2ӹE4qZՄ8p7[/xekRT!Q#}%)6>dueUuA/E5DŁ Bj ӆƀ@LHP(u@HF=ؘlģX=&(z> $St}qQD߿هV;3!=oN%2^kjv߿}.B=bݣh"TKvUPcZA8 =WM5T]2hTqC"P_"Bms/%$[2-%c@* A:.%y5k*\KߜL󋱡$#gF h{~ {^o.k~:^L]DT3IA?~]lۘR*"  `Z"adW#!USڮDIu5Z㚐o&Z[qֈT^Y=钞+jfTLe 8z8")VW0) ` _ #m&SHɠ4UT)J$QRJy8H+i~Bɡ9%N|pR$BHgͦt%[Ǘ/m:}2zz} 6MCz!\!&4w0 K?O){ #R2x&*05~OTJ)Pi~ U37!695TYJ{ .=Ӫ[ 3B^$vY~ ~œjlvo~KX+#4 A;tM]!P(5z<N1.:NG氬s}&xމ+h&UTK:9]F 0Ҝ]t5]'zЫ3sDS ZPPYi᳎HIDCvՌM?\(]<|EvT6 ܽ6j^m"Per_Sv:W{#"sol7M~ ⢎zU?~o8{Wvh7hZG[XdD .j ы5=5_3ro~i*uVJ8d WG.kLimC)d])ˁEINPuS+yv {?=患uz0Ԝ QК8%\NeF>aª %RM{/ߗr[?@='p*YkiRc`paǎ-5h&OQIe(vJBD4*AJ&bX+MD GTI>0ۿó#"gI*>0xM'Omkų0an-6M#DϘ\,ɍA Mm2C9KruNq.mQf;_B[vˊ~2nsb.wUA(qhtczG*,ƻ~a«rE5`M`F8L!> %~%>=˂1 1^< $SJH^]M"k*: "**քZʳ2Ŧ'%hIS=)VKmb"zWm_=i~Vu!դ1txsUTUfǞ\eT@2).p*B`1&zREA-~R͐YKS";o yo6[K}$4̦ M!@F x(V1dGx-5>qU;& $\#,Xe=*syxԛ+E/"i>?|?tϾƖE_3^M.E5&]4VD{<>>s2ME Z._Puy (IZB:bIsAڦ5"ʯcHW\`'L 3I E ؛S.6zUSJ87d=9@Su5(q| E0"q\ے_ϭL$D1Ƣ[8U[#-UY=,¨D)VIA#BN6bV)Iyec( &" KmM(|;rIR]r;C"CPŢP.9BɃS2ݣGX^QX % jh0q6YLzYk8* `]TJj 0֊\PF95NOaϐ1XYXuyЁpJ{tf.Y9k;zP=X 6*E Цdy5ucB.N2BNY57Qh`]iBO] d;lԥv4::@_jeRKjPTR9Wo˯oNͶ: 6 (K3'n촖M:#8X!$[MyX#\7N_5גm !hn7k=W_մ,YOit} H]%~B[`kYh"JU3jxxydr „SKN ycûݻm&cKxDW,,u=i&B5R:ݒm]`Dܕ\RPL#2 *fRIK//ҿ}:aП -TEP}޶_<~[y5nQX^RNۡ7ܻGG|FE#m_ևE(FHV=AVkj4̜9I5k*gVAgh1"bc1cWsjeQ*G1SW/AAʪ1BnKŝUN "DCP5*T*cl%Tc7o/^IX'j dFҔN&!(o\uu@jo[wm6hu8ՅX|ޤ0\m#@ C:SY )/Sc1i\ʫq]f}MK1M|{y;u\{]f &h^W»wPr?c-m#Y\G% 躳G {C$B"{ aj[KTdw<tN¦эti«իxy%06hmT*& #" +DʽrD!eYӪ5Iͪσ ]a[3s۱$+*T@[CM% Fa ' B E 둢P`+[0w'.6]xU\q+07fvsR۷8;!ƸbN/CKgpw`+硔,mvC"DJvDC@j-_f%s"[O->56w!r'FOJ1 %!Ls{\PW'4VmzgPhBjmڴMMlmLn>/PzDEURuDy#Hԃ<F0(D(@ΧMj@,=LfzwK& X&S('<#!bmBMu RWhus-.WH퓟"׳΍ J=~d"v?[sz8Lv"(Wڧ2zAJn,IV2Vh]~@hZV \7ֱ褨|-ɗ0&SIǥAѝ*6_O?̓>W(**ɈЈ.s_U`Ik5!;|zZ .n{/dG9)!@qj] .LϜISuiQ C1wːL ],@/j;1OgփHT? IDATn`A0CD$ATE a2 F!"H=2#3 X] U9VoR)<6ҧpoJ׋Y^ߵ߸%|pR  5PSLqs~VBB P'J YG?末qCD\ybVeTh&q#!+j7o HtӚl GkB7! 4UPhu\  "H>Npu7h׀u#lڮI;\DP@@SF!P fzJ1 t8R'mGx5~%%o5ʴMLaPL}tlV=T[ԙXQoѵՒnU}Q&{%53Kr"%},o/~-?lJy̦{[qLG_'/4$L T@2ڧV@@$/ִt}2J19^/ VbÛ*\LDuYA֨4U4^w" 9IUew$+ik7jmuMi"+"uI83eBS`DB!*AxpVJAFz@yhD)  ZD%`t X5!i@Iʩ_| dcME)Ƌ7CXD)ARUŔLQ#].>eZ WN/B%g@Tz}~5,M\x7>753nAӶ9 4"os? ˻+SӸ  F3 &Vif fޝqlysm7r6mP\'G.3I5YZ [#|=0@Q*Nf5‚ f-ơpwmTd/Pu ./9ĵVX 4UB)> Pa53zY_(~ '?k''QԈ4ִIl)mڦiE\A3]&EJД(A A'et^x ՚4:`%Tx&X"5Wrov"y$`#20ȃG(#.ܭKyXRC`(-c+:"8!Gt,I-̈S$vv6 5D#2 Oy(mZ$5)r6ND)?>N!I((T5SJa(_8S9ämb6m6)),1(Pjxwdg̪I.i~}%ӓO}NМ'"1z *laAM P<T$5MECOΣ0sD)5Y~<_pm_$Y):^HuMRԦ{á54똼 Ņ0KͶ݌_CRjK9 FW$s>% M`\ @9#fvwԈBH\^DdjxKN.d]\^_I uwk%gg;0MkRh)<|~~|"vw;K+3TC8;Lz\ʭ2ޮ3=Yɧ}=9oSOO%&Wx . mV N2hRVm[5+yOCseߴi.Q0؅)\#_*i". 8@htxxB,Qd/ 3IDsiVUU,uIa(Jk(!,yȆR=QVP1jjߪd]LmTݶTeJ<6bOSI@Q.$$S' AhcǕ%I0@ys9=B(LYh#c7g: PTL<@0mNq|~Y@W sûotw?@F#9"Ue3%6IPJ0K_>}yJmݻ}+MJkDPܩ5M U}x':|>KιRd-TbM[J9CjZuӫ!/ߦm]W0ŠU%p g$p_EaJ"'&kr2} 7@shtzW(⫰lf {2 &X,g9~_6o[M)l-) V .'S!LBQq|Αp kŴ~cM RävWD 0 DM5C20I&B3< `T =CȠg;*GeqX2 T"5II0H2FDK,M3x'NQ\^D_"%iI<Б]Dtl>E@6},s:4~mnwx8lfAm<<*|>$$i`^TC:QI^J)%P иhv7M. Sf= 0\"\D4rOC;lÐ=OXJ9XwwMR3@dQvP(eԐ"Oe8ߝ?5Ç~Mq%;LuY aD@zVK͹P0`/K-{zd\ 6lMYDiRrjQ><0k&82,I+EM>m?//v}[\ rt_.y%l1D-Yf,Ʉ-l,K>ݞМ^֕ ")T*CUH^L qD9YOMB]IbILS.b PDB@A/b`Bl4zcj6.xI?}iޛ R&!5O[t^mà΍hQ:$nKvmjO[_Ȯ5rU A|ΟG$vw߼mvv?v=ėNe)vk7iy/g""TϹ]hMnv4$[$Ir&GdTWUO%¾ zJ7= H+Zp n%>=D^OnB)OH??|T7cJ#`]:|'T{9i=ߤ!yOՠ-b'`hP@ I5ՈyV?~r=`ggъ$e"JωlYW&{?LV?ŕ'K| [7"):ifI%|JCtY/d3f}9%'?~w3Xp~SWY;v\JPc@$,ޅ!*!._4=}'tݻ.' E/Kvr,"I^fP%C%M@pQKH5 伂GSY(V% ARݓ/ʻqPz4\&+*dU+zA@Tu C;T$Yr CR-*&:_ng~y||/cWP:?B 1Z-eM OIJ&=hC kU6=! 0-vn᧏5I~W߮I7/?0(D9>\k#pvQso}7ϻ>yuf@˪xw!Tѥ0hIg q N!x >3Z-isP% *$}ɅF@2W_UQ'=z%gl#N]%ɒ}Z-М`(EuҭÉ^`%i!䬪FU%jOs>ֵ]z>tVQbkhd"u X :Jx/9޾lpD:NG{Hw8sq^ÓZ #$z0FGh8 Р{S.ٔE(""BeO>. M 9曗%@$BvI 8:^׾"OԇRV{ :|_qk&u$sNjjUtPqv&TvWoDoc+V,YMM,<{:zM lHj~:}SRTM%rN.þm^kǙ `?<ņ804XvvQs[2<MH$ SBTW J]bT_ N{9AOodthT4G(}J[uż.C0$j =b$ <݉3bKr‰jDuw.)%FN9!,FGVuS/D}(Y3pL`r@]w*\srk*IBX\,iRQs 3U" Z8JpzD#v=&DЗX6ӣ@^b!{@ pYJ>D"̭ Z?%5&} W0Ok'. I \n8 2z5!Sp3vy`nE$i(L}nC>?aus7M|p#|/ժcbajN=n}!R*(PE!/B8b(b)'ӡ < zwwwPI4^DS<IN1B, gQV0bX|JPBNb4-(A`;i;P K~˫|[-(c)f=U:pR(LH;{tGŇPBMBаXjW΅?' V1HNUIKIhdI䣲$w.%RSJVrDE "l~uM^i_-UKDʐs)z=uG"\\Y_[JW/Ƹ^ǁ =}vo֬z Fn[m^o% iWV!X^CwsU Z iq"/+?+}X#+.q +979 ֠a2AU9{8+}xV*̇-,KsN~8_˨7DqD" ^DР*HI9NXηrz/֙dh3IJPJ Z" Ƀw8xrV $AڒT@H%Tj=HzW&?F8 ¤@:A"G`%p] ;/F֛pWVVtt6tY"ߣIFLb@ Nduw'ck+vh|eC%P: f!=3۔+ HIH0ӧj-)mdYaDU @Yı. 56 gP -BL",Qp" V%kP1DCG7W!`,hZN _.%nH$]{Dh B$46'=z'B$ ^H^t>0usզ \!I,EydY ̺% &ny>k8Gt`VʚaRDU%^uZ"*44 eXV˾zuyߢW-WW>޼E !LZ})QסR38ji/9 :y[Wwp"fs?N /]iXiZpI袺T~,plGؓE"#1.]~܌/qɂƔȽUU$Ya8fb>"{g }tj @5K0#2,+ rZ P[P., @MﴤqfhRwAЌY<W"KC9)%) }hgq}y\ g:Ԣ𨹫ܽS)%6z ImX/Ŋq]ތnr<[c"ILfbzU o.X2+)BE0`띁 PUȦCbjJsKIS23+jCJ%ۤ=+7mA˚F5( B$ݳ<=UݍNg$Q)" F ~v{K÷[K?ěwJWuuWeV#TYE O0h="J艩SW2_>x禺w3i(2$ڝ2](eJt7cױ秧|6%Ѣ'aN"-Nۧb"G u#*q=Gu q˼΂ TYX_$*bdDDZZqG sIpu+'nuBj*)=DLU\Fޕx ['eˇ//}(wo~xxZLz"/7!1^gu9֬*JFd 4FҖTHR#JJbc D`IMEĬW weι$Yd~gݯxc*31 Q]Jd5i2^dn7~T'|Oۧ/"3] q93<% )K%6K6y$ h0,J.9}钄J -"9B{$Q4z 8-0Pۜ{HHbdn{཮VpHtW4wIlIQ40e`V.yݣfn6QgKe=wl{9ݭwPL )SŽdGxyzQ=0RHq/?_b~<ş*6S snU}U[(/f:>>6)q%5BR4j9o9~Ipگ 4YMl( yNO/ܯ0NYaK](Q^' 4#zwv4* 65@c)7R=>\9&QVno)my,NIJiASʬ6h$pc%;hN T%.Dkk$QM'IO97qucMDjJ*K)1[:'FU3 ҜИL`yhSS|>9f?zoy[QRzo,QT;7'p]aS "NuJ6;^F0z5ױZ?seսʹ^%_ $! N[?}ecb廇YRTKb?$ӗʛ :u:lk젳WNCBvl]E+E"œJkē-:_A OM)+iK~< U[](ɒ$7e1kgg ݵ6B*S@r׎@g~zꕽ4 )D[Gx߿`Ebp^Wu X*IfPA2P#z`NC ,=ua_aLI޺4Α4`L$'d YAl{FK@Ԛy/7~R`OϜ-c^GPdFat:5N{4%gyeJC=~C dɦ Y'|+s+pDU"fOpb؟WP b ,[@ jʀ22 uuFceݴ//WwufsE#׉f[)FRdwt~4]CH\thsj g*:WH)FvHA?i><`Л7º3j[O}_{S$:)`/]u"EL !K)"FCD\P7韨0`5eZf+mYs1 2(BɥiK m=}~ȟMtһf. /z$S AiW¨!R*un)%,Vz7#,+h%,sQC'BjHlaT¯h7^~MS2,i%>vݡ~u?XMOKIœ XJFFuL Tٝ  _5!P!?~?Uzuu# ){5'I6Wݛqz.2wmKUܯSɵ~iWGuQ ѩ- Xz;{ǴTDSRש!II%E7HPzOL HlHTDs쬐vچQss!WPݷϻ^dy,#6Kcol5<.KҲkph -_Hf}.E$FܫPzz͟1% A]}}?Cֻǵ $:>z 4;@S3եN hJgE-m6wb&ʆ2% Ĉ%  Y@zRjbUaS4Duݼ9!b T1 |O_LMΣK:+ТG͆SB72ZQ]\#*Xd~uڧiL Iӻi(\BzmKyfOe`U~J0o!Gp&“@KӊQF0}nAaN%h%0teRz^əU=,\,uiu7(VF\ϚR%%"+Er<>aV#uRєwTg۽oV."ŵ+-R£PfIɥrJ)e r hlfRPBi yUY*ޝ {WU Ɂ JdtFj‚9 B@<JH9:D L\pW6YywH_v`9eq=kwEXǐ ^LtL^]RUД*0dJŌ84֨YT@g]CGZ1NDH)S`gXTźUJ2lda-mD6-=뷏P^ j\dO_&0EP\:J.5,q. }eq=B Ei@U """pOfP%$3S,[;Ԍ͕ЈDU5%/ 7ϛPoXeS *0s6Zz#U*=eP y?"MtqyV&1¦PZRvm+ ٫zMZ>s*}}zۧ >l}+LDDp YQbֺj:,?˳( gFWV9J(`,e2y @@Sbqi_ƟzO$efS\2BIe!b4X%b54#~[.,ET LAR8T~=_?xQN8 1aګJݖ& ְXrSY6{?v9I f.ES߾3bק- k 8cP ^ b)BRȅ-$f$= 2?P$Nx<^?\\f#qQ;L{%g&~,z[-1fIɽZ[J`Ue, U1U21c}elmi#~Ð3~鏜S'֬k|k1SVVMphDSt֢.TAIfE<^?p\/_lc>kb+qx.&5K5[孩s:Ĭha [Q$fe9D`Ӣj TGr3Ͼ#*jeITIU <oEIX[ўrݮ7>*SD"I º*MhАK /*;=_]HYU2EcFٺHV5D`%5КS#G0 X<*mqCH7(+RJHf&jqtw7g9IU{MyI’bE/$WQ lDD ݝ 55*qtR0S%!&ZO}u\Ҽ}pbnqm}HKmfT ,[oKRn}U[ߚXO_vy=>J-Mt)RGC<=_~&K_ C,GW[K2)p佳uxy {,Q0Zb|_ޞoeY7s#g2 &J[Ҩ%D@9%SKH)Li.tY̬UUjb2˲WH!S"^湮]oqX݇[98wqʤ)2";_I|raKOqmsiWR"yk1VfY@2dL'}]nx(F!cd~{.jmX#@x)&ff V %+QANX"ܞ&Сz5ѧ՜ 󆇶FdBkONZYm%תtS-Cmkrzߙ)VZ3TEs̔~Os鑌,; R9BTCPħʄj()3" 2ϲSĚI ?nW) g^$J!g}W*eaCd=Ή1oKW_TMMom#n q^>q{>oc7.!5Ac_r1Qi> E"q,}6EF 1R1%>2ǧ0\ :ԃk6Zbit _^磒$z jv2T˭.O/EXcl!=b{d3Ȭ42֯ۘ!aQ9%fA m/v1DITͷx^ml}zZHRv{vm5.&}FJρ}`ZTE˛q䬜yđ8f>ԅPBUZ)l&&m.3*R"j.*CzIm=s0|E߶5,NU?,OP]=r1hm" :oôfT1#P"ZЉ#Tfq)?[1K ʼ\9Ȫ$R<(!P=vT{V1pU f E P "(AuZΗOnKqR]y*H3W=3_,"(= 9y™rݟWl:H&)P)N%j%މTŴ9 F=^L)L#iHUPrPkǾ̺Jk}uybmvO{Lo?|W3Y}듯Fxw֚-;^yW[b19ƈ*W x}'nWXnE]`>#g!*qbڄ3F()xf3(y5ozغRCcbZ\P#(9zGԹkΈqOYLɪԻ)%h62(5xgŧՓ=vؚngCTwxs쬃Vn51<U/"d!2lEeYQZY}9$VKD)ZK f2ds>jCޗԦۺܶ]K/|/#SZ?{a(e(T^5MMYŴI/ǞS$BK5&+SꅐlU$//?˄J*Դ/hS/tQD/9MS333Žׅрy& *hJ$4"[kwVEqTչ^V&PuÜ|7K VF)(Ш\~=m 9%j렀%gEEEHzM7U  *ѥֻ:kBRJTRQf TW&h͈ᆱoFޏVSkOׯ}YvqOPBǠ@|Q)aֶg[YʊD`7,*zLeJCxEsu]qr #Dg-U(9hdFݏ{}S|ig}Bq E$)!m,[-{~v>jTvEkj E(14QPߝXYc_=rҲԈTɬҤTWo O^[{TCmmS&s ™OYTdMK./z_j]}goq.W7\mQ!<$G[&ݲĨ3{`@`ˣaP-m{T H{e{? UMO4=MT f"YU"1d C3 ]֟B/ВY 6 L9%Y"%e,լ6YK+ڞc*c1^ vHVP5-rJ D+YSoSo""1wVBӱ B_-&")cY'*3ũIRXV#U B 3<>G(tYV]bqȩxMq۷yZ^b|Σ]e}3X.ƦfoeM Y2K+kZ,y}ooct]S,ClC4Zwm޸~Шj?2?BEbqKݵJr'c 2hTE~S45 e#z=CA4-b|o~ӧdZpr)*914+2,UzM=愆Qx$JX -,EDM֚H+i*Uzf6F4sݰ:JZeV""vFpS _G7t[mAݭc,z.e8,}(25gE8-55ӯfy(j'ZSb@,Oŵb I9q!^59)TISTpq:X$zX0.q5oW~}k˥mk-.ݟ_V]],\Zu׵`{FAK_n kZTUHEJ`>p|hԯ\#bFe7K~%r'jqBr]b]dIk,T 1zw@t?%nfTDK$!5.LrNF ݧ뫭ӟhV.ff5oo/Ui mMID'LIKC$e?S$RmkK0mm orȹZЃw=G쯏o_ۧOz\w mjfWvCZ3T&hne]fc .-zǶs[^6b袎;2;j4%jK,1#K@G.eYVX2"lWCuvKJ#RoG.k6 hx]aGkBI){+^f1L3;KW=Om',\aEL@tRM*S@Xuv W{gT1Sxv*BL"KdV/1Faf( B  e}%Uz[]x!۶ٶSeiӵnm .*W vho4m^wiŰ9;%)VV8nk]t(m$3 wԹu(hT ]JnA=< x۰`hön^g.c>j(%CԅaREƜ#wI=^-[^eYҼwu%'tΚ3 RS(thvul>!y ~r䝦֒̚wJ=(L+2K~LUӢ ]VIC ,2)H֣=0naYBќ31 Ewhk8bFULBu aJ$ W׆`S~S|<_{2ci51Ue"Z.bw+jPRe(KegIZNQ96ȨƊְ|7)Δ֚(T$2gsZ;O|I5s`—ee߁0 53;E"^qaj Y[#gD]?___ԗЗb`TSum&zKhP1Fkq]/tyݏuͬJ)*xY3SPacEʘ XJ-hRDz(e2Ԛ^ [?g?\~oPa%UShF-4>3G0Fˑ}Os[﫹t9U Q(8Lc.StH#T3j˙Q_ߠ`kzIL7iReGwcJ7-amGvbYZN~͜nQ*HZ@'%/֭$gM9vɵrn[^[Ejh5RȲaV>9{YmgLs̤u,E_!ЖW|k ah,J&~z'o'~].\$\Q8̂STY:z#)GU!t QZF !<ӓxҀS+4N 53Vu)"Qu:2yLUNBuJDuF`xZE=3$|ˈm3S)TU=,PER3뽌= ?~OO02r<n%dƷ_[5[\-ӵUMޚg2zMN ʐ5dћ.P"3Sf -Bn6*課Ϝ?'oH5Y͐˷}mZ:LSU#,Hu8#uqbdh.}HiMz[7w@:]"z !ۡ0H&mj1 d\i̜x}E!0.g(%Rt")yח#]Y6 8bAOqZR:TVNLתKkRV#Ǿk/li_uOaʲYȜC0nm}_pGT [%$ůfnPb~q{0;u&L/B(WEj୛fKr<91<-Wnx˥V)DZf5d\XT}1Byhj>mAԔfTqU'?ϪS%DkHgSjF~ of0A[iو[z yYoz9rAPUU.NGq0\HB;WKR1摼 v[s[olMTU)µK.j t~##r@e!E\Yl}uizYe]BE *M{25GG<mƪ ͣ}n (E惲w#"ws-`(RP,D*|G-^_o۶,kse>*$sW$\s7cPLHeF*uMmB@F|&R%䘭vGPD `FW >'}{HPm׾]Fˁ|C4##4zT %M??'~?G2X`peZ}AIyVRj)LLNFߞPH Sƃp73,돟lu-w IDATz.M&R0Dl*RA-)ʔPu^y x!ssftfoˏ7]ڥYMLGEfY~uzͻ/'I%[nYzCu,U{8ZiK%"јj1I-$JcSd-.{JJaVU EdaI9 UͲNzbR',_ǺjxZS"jshWȬ_YBbFn~.óD1eklp so}_nR Pubӣ**y%_~w&%Ee̚ͅQ_$inb*'U%UY,opyj0 VUƔS"3N|"6틌Xub0×W/C|Sy*$GfG9lo~/Nׂ⊦ac<Շzuoǜq*M23}y[Guq,Q5# 9v[8#Υ[K_ԵO\<2T˅)9;QUU|IF}7n>/Pg6{^{">[].P!*@ hʹ&ىڬabHUӫkU]oK2ĔMRMmRctvRܗ'A `D*ALyNEXxݬ-O?r]pռ[_zB#h.=UzXQm]Ug^D,Gy`N TQ9Yp+=DH>棑eCszQ3.{b-¶.1 $_ĵZ[p*-StjR 0Z8!&+I6z]~r~}}I?"am!J:`:tGb_?t$[rwNDܛU3owK).m,lC 0l˒)܅DQ}ޛʼ7ݕAWuFވ8szy~{dͺ)96I8uS1HDՀL1E@Q:P0VoyDEp7s]nï_8*yG^p jў}N[M㸏ޥ JS^zr?CO„*ș@Tڲmm|=v|^Ml._߾-u@rx=Bwْڦ!u)Ĉ}΂,@"|G'o~Tz dɹyHLQuףXn.dK!",ϱ}HHUVnOndy?|ӻlo(VEMfFç8;j'^UdH"*PcV6JT+KDyߠ QoIV)LSoۭ & a¬*#lۂ xYCr L"Ƚ4JА`$]Pȇ(ؿۧ}#`$uuXҩK̜\e-]¸wGj=5T+Ҳ҄L*RYﯗ{p?ϏO"][Z2J ܾº.׾>K&͊++80@=k0"Y<a-ݠlOE4{h=긍=b*~OkR\\󈛏|۷qm^F"GGnvuYUmjҭH3:0_}J(P V2%SrGN;PU!*X^Y~zsуt2SfZ3;"„&%kHe0 P٬AIqZdw쵗ŀ@IC>OF{w {E/++PER@ƘbtD ڊ0s$cԪv*1Mpe ye B*v,R?sg:PR""o,Tk N6;ag~\%,R!Y"b2@~gXMi~ Rѕz6O鎪Bά)RՄ9\D狾hQ)?>kisTG1Qm]DZ%~T'IrYOg*^^"we%q;ֶ8ocv OOmn{`R%Ó-K.zs?VKK0 !Tϊ:%?m:2EhE1e۪ȼq.}.S6]e]f˹jsbQ; Go>/k UHX˲bi]M屏SY*bъ;,`nSH(y>mSD˺m[ӏflPfrƁeTo78ɬ^(k!KAuVG*tٗIOc=:^Ge "R PiR]C#!B:(P v]cwTb̘%^)#+2M,*Q`I!@L)R&=+$X5"B$c#3m.8?MG0,zbl*( 8J r~WRg_>UQ(=#-< PmKN@)}!)&:hr yKaRoi U1D=?|U(!pb B=ֹ"A!?ߌ_mV[uAf]])v_O6 D3 UThe U[o[k[l-Ym?$f~wyYD&)JEXyzzΣzJ{˺[*"qkjzۖ֊Xպq# YK2P1Ec_o"9D> zyXk ^(F"x…4$rAT.eZ|LJ/r<}^XL:<"O(I9t \/ks AI :S>xu xVtQ5oEi-7m۶5.m k.&p%A>.ɀ IYh*E;?JBQiZr3h n7"9Q"3B }z9W?IXFU9/B][Pdߜo(dUI '@-mu޾:K!Lb[ښ+%C E.*I +.a9q_}ԙS OX} QfԓĥYg@V*ŚTj8kjS#[okQzy^[L[*g_Uy?.ׯwky'L@Nè:}D5M|-LwJ/EH\ hU5ܽF)B)|DTJ-,?2GɞyY?ʹ:&2s-s< Ffj%K{^lVf+ZQ{JoWHͰ9]YGL@l%1v_c`rnjC$i`Wң"$2%[וQrt,6\ReRMQM95b?"?Ymŏ޵FUaZRdrx;BRӵ=K;P&QɞQ#Q%3-iH3tDP}Z4mϢ LRLP%3c2`!.f"<VFsz.YZ-wd!kd.IyԚ]aATDF1p3ڥ;U!uGlьLjRH5=՞gEN VtEdExӮ |n>XJEDgg\#I"{U"6/H,VV[r /3ZMR_Eڥ&ҋ6Q5u?_S$EΠw^˺t3 n2GzdێCU3fHSq# Bj4H(֢"vjH3S['| s,UId??w?gO/}J֓\sVA8c;U4~tihK.KW3lP&%fweBbG?"|W!%OkTY~vQ2myA2*ѳE! ©d^V60h/~;Fͯׯanvg|>IL}%=sV*EF{H-BL*mwK~]FD /;c8@()n:P+|[]*82O?;]u.و$mS9#Fgy ؋ҏ8.Tiͮ}s;N=T( eN|El'3B; &1eQCZ;i[ {!.؜=oO?P1\ue| /q^3,"2FT*H]4jښ)/:*^leR=GSm3 ~\T(23&#"8IQ]Z7PS.@ffdPsYSfzLc8p6:~h=m,!fMK}",R~bdIH zV LGNmEjKXtT֜q+9 }C6=Gj[,1rOK"b_~"SQUz^ݪb@̈~j54PHeo]g@3[ WD4>/g0O؃Y/be2uNTUPTAQ[)ZZRZY+5w%I#c̏GRJ3\`ϗ8B`O߱LlK.`cwyIc~8ƈduYW\}NGuY =\,҅Q3$vF~`=NyU(:pp][Wß?&GY!jU%flY˱}#4 "U 9cpw.e Dœe*bUUbz1}A^e<pAP TtjF>.Ku޳-*fWKiއNdf0 TUQi3AGqAi`VyZYq_,~E J@\v%)$Ay#d}a{3xM2L2m҇fry[f7%Sjq,$D4 Q>Ζ\u}z{{.De#ͼ. D"4Ad&֎hA)3RPjA{X Ba_K[˶Ql4Ƶ8p8)&{U+J9GYnS$Tk 1 dέ<1=i0ʄB*~hq`UTZ$11܏l-˂秩M/L&ZHŕSz "OcE{UG`b٘-6,*- GC1 咭R^fBM VLkR"ˈb ֛GO SyRE$c,SR@$+qr5"H&N8MVLʣX"y)ΤfHb ՟?N/K iXFm('%UReMڜ2Ⱦ@1;[C#s`OU ]ZD*=c˘~Y^*AjK (m-:_o{sk+?_?/dOQT:>tũiK1/c G&Ƈ5_{lmmD"wHS7Tl E:R3#^sJ)gTA GcDLMu*^KT5iZa&BTBu`Ҭ_:Oy~1I"Ǚ )`T$Okۓ.\7IoQCbeqFfHGCEjpXc;/qYCGh1GBzH|V HPzj~ۇo{T}֧Qn}4 eUQaTsHJ&4]- 4MU]sIf Uwc8rYTP8㒪{d.>.C IDAT@3>Aʷ&gks<_Ϊf O-g&vEϰ<_"9k%G~SNH24xzREL$}HhHXmOO_wh*!GM=5s"*b&&J&AI_^?3`EK \z[4V!.;FrK3TOPfGs#F5iF23Lժ>/qLdmUjE(y3$Y#VrxA&DR YJ̜YqYl[ʶH<٤5b %JPS-> ]r)'$qY/^PjԾ~^kAa#0Jf2٪  TQ+Z<܇A21,3* $Aq3>vmݷͬ"qlkv[.vڒ4 Dc(kCc.X0#1RQCXc4,R+{VhsO%ǝUŚ,}^kCSHP5L֪*yXeFULaG";Xl\,(szL:c4HpL8'Gdݬ-糤)S.oS wSkvq1'lvEizi~EFcU%`=H]fU8*2xz'O*U(H^>ͫ F.E8g\{Ff/;^ӗmy.poZ_-ij<IR\xLǐOZ1ޏ/s,[ɥ4mv!D:z[Y`1BjijM!)dG]qݸ<--6*YZ.?XJdVԨ2e}ĚĽcH9"m|=>߽~8zˍ^i(͜Jv^8HHn"]Dd%tV CIŶn )0l`[ժ2UۗE˃@2̠E y4D"NCٗe˾^NLɯ3 !iѩ̬8:ڥUiFН;ZoO+`LK&pp&4&QIr`$똌dx=~n}t啲T"T.h@қg垅(dԼwccI<(BB̪E7߾_|ӧ0)޵+$:@mEmMZX'ZIĄZ䚅`͜}x8z l9DITViFoK[HW4rX^oJWq{/훏 =pA,SGIC4ŚWS,.-&` qKD8CՍJ]poo>ħ;^Z5`^EeYTLf-ŤAOL3nmYj*Mi:E=ДJ([jv÷*]4y4Ӻҍ}Έ>|r}mO/amS<-E"i& $DˌJoPt0Nrppsor@ T2B<'{eŢϙo٬o6s~x%)Tք(d$BTZND1U)%y'WuegJUSN-ozS@>k.iۢi,T(Y31}B㜾ik8?IuV5mvzD̘ҤDEE{:/ϗ|@=?3 p|~/w2n^򮷓=K&Sg4=\dn@bfaPM‰*?8...$ܘ:Ғ h,b#k'^؞w13[SVr'}Y],VFL7RVSFRI0=2(cYeܣE}}vWHՙdP)lF EYIWAcP*.S{=U䲊7x]2Ir]so ;S{]D358 Z,)T QQtb.lqϼG>Nz.5(@)&3T#2{~+e\ <5EJ2LqiN@"O"v~s0) C9T(rY{U 33 /yф{ ^F]*4j05mKYOe̱LuA:'(KWȦeD8tڊ.u.3笠ovg?U(+X;xC{i۟^*]>}Yb.˲IkjZHa *'lBEBECjk>},8sC1ƇX҉xYe[.F0$%3鳊QzIVa\G1nǧc4/Ǚ hMLM8N//ܻڲEVkrqk G,)M3%"޳lqʪ#)z%H`$p&yxU@hT#s1:<uZB@P$skDEn{692-"Uf0zHj%;mYFu!aq.P(\VJкDExQT)WΔq;Jy,S[Ve^;׵4}vkSz eL# y$#WP|g˺:)d)Uֻ2Pc?zdDVg9KG]|V9ij23俳I>gֱA"ĉc#f&+E?UvV(YCHy $"37ɇ>V*0JklDuY haY1rRNj.E*ko.'~Mn8~D8XN"yG_?xG&~׋n \*(HEiV P(ezHHω$YUKcvZH` aa/J-i0zH"q?C$yٷ'*Dcnnn dUr$KJU>̀hܟ꾭j())@JDda龋e{}f4gk4 %Uad*:+q-<m_]U-ûH3,lfFQS\挺nRغ QNY0g2kQmr>=9zMCsbTèr52~PjVj4IJ̭RDRF5H ʓa%|<}J92!>JP+mhzʢ٬03?ZrO[ldڇf8wU;x BΧbvYF8J`DGFT&27b wUö"&c&TφҬ:u#"›VSsT "fVy_DHfEx3%;6սoh,5j۔uk.]tvuʅP 6Κ'30.2wTzacq{-:%=3S2Efjusq.,UN}R R{Tg׶;DV!V[>n2]Dha';+0 AjcGb5MVf"W׮}Q !bjWn!%mږ.Ko~s[O*GAb At;JҎU0D[rLY>d%ӭw+mfFd8,rV4;= Rn801|qUNB#ux3"X821 vM-!JPP w>OOy44*ҞD#QPA U-0"ABnh%e [i=E ۣsDJ}l cWlzSF{ձ*Vxtև䕡"3OOGmg 3Ur,lu?3mye2j.aEp>ն}7DUe8 kqsu[ALzŋ}I4@ef,"ռ# Y[dMIԨ:fH\.x'|ej׶~hYk&5fN"Sz QFM7jkʂ8sWIa&n1kRUIFD3s{j)ݸ-Z۲jU-u2&ذ(#հo g-F ̺EiWYPtՕ?qHS; (Rh9"e9ETCb][i! gD83fuDfӞ<⏯z8u, n6Cc Q*T1"|F"ݷW\u2.F&Ely cNµi=:ڣWrJp,*jh<~u}&J JXUB4Zqࣈ0@2Y٥I? A9[ Q+eJeu ¡{i_?}Kuk9v(V_|/~'_c^C0-xxsrybw>>ml9Xx'{ӇSyvm=.ֈnW]{l? 4.e˓Bwٞ:$(O*" XZO;S1+.[gZB c/ik)Vk,CP,FG"z, eAƢMk6tT.׸ھ1H\LNH*&0(Y#hU~<(hVɸ6,]ۢsjEWH/jӑPKF(,(\c7b0מ%HN1Fd(IAlȽP!T'9qZsB@Ӕ:į݇ *e*J&UդiGN۶ y"BD3S"1όJq9<aRJcU)yr<# %@U;7B9"2onY fV n1Z VE2sJyZYoh>*K`V!T 3TRFͮ9G^^ղ̀:1CՀ P4iMt/qXGA!o߀y{u|ů?*:?zڷO5pW" Q2s>]EJcDzoBJN\U~&^V,rXI!/ǯ;mCR )"AʹȌ7; 1Ð07eD<C&%SSVQ>渼wxv߷{@iR>&4]M5ө! fI֖)ڽ}h}^}IDJ3{w_-yFV Y2;}uNz^:-S DIYeMO)&ʕ;?ǬwMm=ŸPٗv/YTJm0`*洪];}ĹL1U Ĭ؝~DZaI ݧ?tirgTyz6B(Y.X vm)PP{{dUSr}klyD.tXh aY3/V.9[=UReD((:41R4S#RU] i MfȐ5TPkMmd&>Tͽy҉TP|OiB*}!HT=nef: 4 MVBvW·jRcļHXef4)Lwy*mxC/<23cih@1, ü$J<D@~~ʈ28QV5^{\1.S떥rwgJ 2$nU9RiHKt^m uqQCݸ7TכrL\ cb{?~Y?i>9էGx%a8c>]e^h֖e=Z9\*"IbUf֕is^|JmܟT<9]-s<_ҴY; 51|:ag*yL.V%~VFܟ,=|g1CT u͹`(0sTAOU5}m6r\,;]sg[DrD.pI9%P :(leK ܽNVU6=*YV 9%ß]mDԤfOأ/)9 CHîBD|e64e;H_9rj`b rϊn ݬW|C>o,1]9RXGH*Q@TVٕCWu$2Rp0FQA!,:b\0pF74:^(7#b`Q(<3 &@+(De ~y~|L&ښ%`B>֚bZTRvm]Αc*ZT-f1>AvX â[vfܥE屒:8܌޳уI;r["@(ҲnN"Td9/kMNޖڷkΞ&ۣ1!ę(hq_y-qx g՞ EA:BǾϓTp9]t#RKfz5=u_K[>Tf.iu}8,*9U<3R;j{:.O^Of'5VMR^UU*: 2E㊲mCfIH>u.4:YaՌ%e̎(g"fA` բL֥IO1$$uk]֊ZP0E}TAnKDXT6qj {nkHY\ u{zLR,k%x 1cM=RYiZ*dfȑVqE&(UIM9=F_~? .ݪ4*JucPBy#G a>JDU E2Zs|y[΃HzۈT}+s>.w;H##-?"c._>Hh= BѶ|pRyJd5I0U}-;%_ o%xQ95^M7"-OWr>:PL{]N_f< lmXM>>Wo%S[ܑV,a*˜r\iK zhM6 Su[Uڅ^d!AtfaЙ~"׶NޱLz7M,)ФIk2U4{MA3d# 7o#bqAS[P]Nyejd)uLDbot.!RZ{ӓÝh9~C?ǿt9rzoRjsɥig1[垹30T)`?ek4[TOz}Dg*a5s}3s<+'QjNٞQU70Gk>]E" Ń:.DSF.F&9"ׁ}dxkV#ʓ*`zC5@F&E&ʯcn[/ [zֵR7˦ $B*DNpV(6jnZCJ+s̐N@e"z#SVGFFXɒ%W4ru9[T)+'U4dV(( #9FAZ@ aaDk}]*q) w0"P%\5@1!N/x6r>X m oQ7WVДHELI0f*ETJjuwn,9&,i}U**T音]:J$RK.EA֥EIMeǪ4'̰W@{>~{zOz̕Zߡt_ӹ,ȡ2]Csfj % Qv !aJ '&ap݅=^|`T%=SYS4)Jj sy}ǪOO(43<rϔΌBNb{,+$ģgeMDa`AQW̪|zk`c֠Zĸ"ffuDq \Ԯٽ&Uɬ" HNK.b)EɈV`IFR $;br|{IQpAj’=w'ʊk[ÒխI2`J‡W`{E%߽owc!!S!Suw6;cfKƨ#d*;ݨx߃5ڔbJr/݋/+o-WsB0nÀ18ǩ(XQ",aOTFPaHe:kf${\Q9iݺ.h'6c9/e5K[ "4bcwRJ^ׯm\o+_5z@%Qm:#',V!)Õa"sU*g;b5"ڒ@SK1(FHs%UsNӂ"+RMx}o"]uJN txTpL{3T)cK1%\p=Z=MjZ3+)Ap,g1MR&Cs*&ľU^):ǡ[󍾾-Ւӊ ,ݗjksT8][û|ؤF Q[Az[2|n i/wѯۚ{uU*}[K^Ѱ&V`H{?O~Oİ|3]u9/zKw'6q2W{̄s\{pjԥio6ڷ(NZ)FD 5ËE_!qb?5 (wx0ʂ$A*}^3?b}m6VvJGPn2û1s͠A"(]8Fd:bVz@K6DlaiJ35RfxYeYVYYUMJ[z ɂQ-PfV2LD:rX\+^K9&ȠDTIC5AXJAB$FadH˧$V,mYz:RQL#H嚉CH߽_ BM|oTQTUDx- F yQڜ7AdJHmcGIњuK/!nt;z8J-` Si9h/D\VtJ]?^EkjrQZhgM*(rXY“*MᙩfP2Mc5Df9J86dY>UKoH QAQ(JY-Xxc޷TBYѦ|XyJ˂%0DFDTja8de/yHYīs THɬ9DC UĐ ϗ ėcFCVF ̤ m@AThUr/W_7J秙 )_c\z)l1FiWՂɦO5$tSݻR(^Imo3wo+(d&J}[3ۇ|x_?K񒼒-$u֢`]f¾o|;z1˥ bs~1%ޭ}o1/t o$U3V 9$׽[6WyUT$ЦQw>KPZkm޵IYʅRX.Ȫ8L(t%zӆZVbj99RY~pppPYdZ]rxi-ve,~Z[b#ƈ! qD ZeR̄TTq JE ^s, (Q KMYBTHT1S:SwZMï?g[ x15DѬ Q਴[L"*qc 4UY+܆<~!2Bޞ#QȗcRpd~3}=kD{-!_I/gyݠ [Taӡ%EdZoEHA}jb9f;l^td鿓G`0K DP9b-Hxc< BD zA@jM<{?O?wǬ'"2++9/f$ˬ7%շU rn*"9q,t˩ai|JE"0LEf"DdmrΈQO<FF$X7.E6HJz*4jg=Aҵ[qYx0B&ee/FBlg被֜Qx˚ӶMP$̎tS?e a+S,H3qAYʾ_NDK``.˹twUf ES"ofjj 3" nR&0(Qw@̂Dޯ2>5'Ө573)F΀UU$L$ILhye1LdνE M/bJ4WTih٦{|f޾;,sBzX2m}5S%Nd'J>'iL26TO7,Ȣ f$?dA? Us}Fv/;'' /w!_"0z_ɾdz1}cZF_r8qy,OL"#M۾y쪽pq:+ZT4{؉ "b??oon㱗;{5%eN(UZ(X*}1b:_҆|Z!εi6n.'׌I0'TR i0-Βòu\i7rl9$`0*r+Z #$=RE++Ŷ0Xb#{C{!ll͌rX#kbo }tMܛ0\wS*3sۋ2H3+Mve61L̦mMt[aaD^g~8KT# YPUQWQf(qRM9fXNȔ?uPDvPE ͚mFZ}8|Q(Xhă;˷ fȪ}\-v FݐIwf~|wGY2[kV+k?~_su=ÍdMIC?@)՗Sò `ϱ=qOmLcw}洪 c/+{ezl@.QxeBꀷu(앗>[ jkS(DM@. mƉ*$/bx8Kի5arO3z(ASmmtX&X9PPǖło`@dϪT *n4V֪M4b)[[ՎN.kV @hCb+Zb(JYFkY5@@Jba#PY') xڋe= UӇ4F`Cj }(>[}Kn^W {䛤 г'e4'S2s"z@])L*1z7 #,>33_lYuMJ^TXZRWW.7 0ЯX}aoreƁT]ɘ>ęn\?i5~t]5Ljo/_O|/["[&El!ٓ-|y`"-0ZGݮoꫝxP28M - ej-\Q\.s>*)L2`cBY#tX[jB(V!Ri a(IG*>I{^3LCm&,Ew, mgMTfn:5.ބY`^ۜZddT+th5TkT)e@wk/l@TE&^4 /wfКߎivm]d[۶\.iNJKQ 4L%֪>rȮWaB oao)::88t'W.͑UnM_f@ygqxrꨪ[\mk;j|j+,\V*mt`M@{\r- iHSQ-KfQOzݗS<ѹ.Ɗ\EƵ`gaowOύm=Wf ? ^K+kl'Ճ1:GJ0"5`*͞nYюjv|2[kf!3+x.)ư-=3ï#%:iX1W_0JWI9uz2T%48f t|k_K5k3mW SovN9h2Duya#p\ҕpKӜ=I6Oj-}τoiSvR$ G?y?~u}קo||Ʒ=~ >S `]Th)>ְx8+OV}_ZXusĈKmOӉŊ̥5fh?_"C6ظ4-+Qذ8޷Aգԛ)h>.k?0 GJ(4P QctB Kz|*G @Bۛ+ ` 9|ހ֜n؂{y!ĸp ].y2ʧZi‘T ׋ 5B+oкw37/k8ʚ63P 2RY4`ijRa7ޤe)7QK(FB;Co BnWGy%O@Hun3f ǼG ^yϚ0URYal$5smϪUUhe7C<*/O[in+,'4ӰٽfJbV&5,լ\z]o_+폵b{ ;VOo/k>ORձ=,[Er+9{ϛn.߾]'>VK &];;W}TҎ՗:xZ{zdU"= /ΉbiбԠ\ThHm{==cjqFΒ iXC&`05AW&exQ|]O5n*[Zh ZlSF踶܇e*K/&0r{8h:k Zc4>MG 5bZ꽓[֚)wH6Ǘu4ʀ+ܛ&2YӖ*RSTK2X8EYfCU4gK;y[\{kw1@Y~{͗#6=pQ6Ge^Ykqn}x wn%ޟ}r/I*8644մ0wW?,bq۷|8.͒uʾ?CxLc]@f_z}m_`]p:c;9x8UV!]r;G^C`ؤUԢsg[@,e*Je̪[R`֖a@!R5P%3%*U&H ȹhށdǨyP =`;کOiӪޡ\@ ?>p^>Gry32[U^WYkĸ{\FBYrLf-T4!P 2'?mL>dGn@+4S902>$Y/u̮ TS:Pa/~?/oBjB:"[v˳}J*sXUc!e:xX~5I C"˒m۹W8kH0<'(ӑ'3uN7C^=4B`Ķz2X U˾o^@33,v&mˌ`{n)MkdF1q~8x[{`wN-TBܩBs.Q%$dӡL5#qxܫbPD4<sk]j&(VYSbĶo򞽗{Ӗ\EaXwC4VɬcRSu)0sY0=-CHhvWQ43Xp/ҀRt^''< $ށ-{z]aq12\Vv_NI Zkmś{j-Ͻ*Y[kQ9]P1o/mGPlE(dfsƐ$|r A\a⛘ dEM/ ےѽ`VF:4&U*J0 $Y+= nֶ,#R{pj1 |,fGl8V~ݯ6_37pG{dꓢvMۇu |L#ޞ޺? D&  66~//׿?.?>k;gU_w>"ER%0 2Vhnbwf'_N-@D;O+gk$=`\ JƶN`Ӳ⸶q+w4Y.8?}Y[J]vOCFfJebC #;Bɶ.e2Rm1;-rZ}ŲhD(+9C@6͝'YvҀ4)L")" (F]$ᩪ؝ 6z|s& _롏>JrRϧlڠMZhL,4b֬5\E~uEcH92\džA]qv^[L=쟯7?/~ןv #ōI|[ywYc}2s#id5?szF%?]/O~엿o??C{n_e2k~|yDI,xQ s G".+9ٹ$oLl. #m:ؑeKC$ dvT1."\\w_W7RfP"=[TO5_( ņTP쬨9-) BAUPĻs-{ 3Z&,UY*GusHu3`b@u+ӼI.Bw,e2B /#5ep$Z#*Qbzrw[XzF:ޟ/E1݌?pQfX<&fVuE^Y6Si8w| *j&ckfurz2{Lس/ TM|lǦm&k/ՏI!^6fBW(L;eeX$i%gp~iu7'RPeEjd@f#qd|'DׯݗlPHIqo\[6N $kf̷-/|[ME`owûZ7Y :V?%Zc} #ƆL۷bFjfqyGm[Zccx,U 0#]G;>p}}mNkH*wM1%MAشTcϑ!(cTUG[1 PCRE9)`5ygTUYww̚K P5 |J:2A'ӦKafA*,A%"f f/Fsna,'Gus;}vw˞K\Tz0QPg~g_lAV~FF>1vz#U];P"8"ƶWU;Dʊ;Rm[YO\t08}mK[>_FO[^ܫ%Y~ɷzO}e_qjKZF ->kFYi`޹#O,py3̨a֕37FYe"*<Qo}4ϵq\{,y̛/SQ"CeJ9k\D.b ڬ^L"Hd Fi9bQYș-Tܶ@d IǏ1OoF1S+N\J^(L[P֤>_C[sٶmܝnH^E0Ya4Ѥѽԝg_;4INy(1 R-EC `3ٵ)Qt4?||[=3#/Gblt+Qꝯ:w?pxF:wdEk`tK>)?AJc9O{`["4م7fG:`T(P?~<_g8˶a0樑n/^w._8w<8.hɊ,(V}i9>^ѫ% EνJP**[ڟK@JFm==eL1)_ٺ†ҍhVb@j:hTAbJ ,wlpd2FѪRt#e2#r =KZKGkٶXZC*2!`ILٰtԚK6`J>0<7@~g&>;\MbYSE 5xh3թfK'9Jm84!3U2eV&k_ K4^[-;]@wֵfWۦ*јesa.`f=?z_g?an~vEP2Gyoͫ7x1CFx;>OK՞^ XK|ѶX3ac#+dSycp5Un;e{d[2PRX5|gVK˶jYxX ZY,%a&"C $ HaHKx~6Enj4C^S.fD" cm@~@Xh8enF;J C4R;8#@*sLb_}Y0Lul!+S YNϺׁ eCּ@>ٓZA9gHN}4ZԕeW;18Ra?u7CUeN@Gj*W4j&L"{]A*H31;$'3K'K9!O|?Ԛ x |5~Q+.ƴ+xܾ!֩) lp~a;[Lg|cqIu]ݿu >ʼಂJi<>,eE4U73(CE8ԦPXj|/'Rj-cV< qɧQ(s[>~n==ͫivɧ3 -K#*/9hɃ T2l~ʇWhkZusX qqvHK`^ƴnizzc kݗ  ke$T XQY>NZ Z_,pE<1;I ]X̰*!vL2B2#{F*WaYպ꽖^fAYOZ+1XZ49./[oNgks9t_&$Lfէ+jxMP΢gFEGDH\&'4JwEY[iheSЛ@+'$K#XRYWbM0-H\,Q/sS^j_q?>fOp˦/ūޟ/Kt@VWS3eXNt}ԸD>;}4;w v2? J4}P_r`GN۔eHre?{:_~}-qyɒƎ4tkg^v5r=.f5wx pXזo9v?!+9@bC|oM}ǵ\2tT~X|ƵYKd˸l,HY28| b_`UlD?X?q}5912+8F# !YppA#7'22i/.mKZɆ$XQ ̲RI7 5M-=i[Yyu,?t;/ :L[kv, U&\ Ϧ)2w6|fN^T/ M:TU̖x.Mژ;RֲYh~@TWW0K"ൃt 4q`VS:LTzFj˒Qq苴lcB xs_O7F ^?O{o;'ggxi5^۷wg5'QpXGqFʉp\s?oɯ_3ކû}}CTJM}kͭ'Q^?,sBvjhPM[@d-sR@E& O^'klvhj͗nҫVkږ2 +di5/p*/tA½?{|`bjPiƲݗhJ"*ҍ& 6q@ླJ̪܉4Pv#YeC:AlkCkҗY&4lGU^p^cA&uu㟊W23"]/اxܛohlp{ô^7RD+RYidVC#R띙#"DťiQWPڂϩ)p Ὄ&]_ǡ@c}M'iiZvy޳Vi/m3{_$ IDATO'߫9-=z [#IĹnW|٭!x? $ǩOj[yQׯr?J!od9 ;,J8 g/W^{Z҂~}ݡe t8 d9g?xC|7?f-p_-+#ccs&[ٽzmz2TP@eӑC-{[ J07ϲ=qq?j6ro΄RP'Zl{<pzq,A&+41q` ըJ+v* eDJHrdKdVͱ}IeYQ6M򁓻)lfr$IDT܁ʪ陞r|o^yX~<w+?p3U!0SU}#1ڞ2h+AI ̐C,9yoSw;7oe a2FwVk"QI2zԂ1k;5e.Yz;^_]|:jr}DI٨cH0itht4_C;xcSc]",O_A1t>-E棿ySnoNIbWS_:>gGb\z dX OKݭ6q2_L> dA *߾Mf;J˜OE\цqTF~ )ieq x*w^y){:}=\-ACM@.[\v-bs%d>ޗR)oPt)!Uޠ݊֞xb͗ʒDdrNz(Tu<[AXA^]eO--k7JDZ"ܚyu{kMzRJˌh=Ӂ:) 2~mֳ1}4ppa] o3꺉y/=cDo\dl\lTqXd֑l!3pZzrơώ/Hl;x_ه?^?˲Y-E( {FV]C$Ë,l T2 ^$ zW>OWo4(+ƃOƒfgA[ # D>Zϓ$ nx=6=M䷲91S1uu Ds>1"EKS_4NE*ioTUj!Yu9Ê nq{u,0rD E f &P=fj0zz匥E,PֹdzHOcQJ\^ RJ-6fe$AuʅT}-<3jef=ۖj72/itĬ;0{ ̄ EJjIڄͿK{2cU(l9u7Ir avɲ>\?Wp*4F6]Qp)l^lF<n{H6li 3rvM1 4oN?S*^ȋϝFN(ѣH_a0..3@JK?_)s||n{XDOFc@`rIx:t8K.P%OO2 ۬79߆P%SE8twX񑟟J'h3ZI?uvNOt3͍P r1I5et@KE0b?XR,+;SO)^Jy~{̃8T'a*W >dwtkf5np9ZDt{IOYZh'VAlAReMu֮S#{K'$$XTLf#B4f nVfK: B2J0:AWK(4Z!NwrĿ*g&l̶ژp[r%-e6nNG ay Y{La2!"@ h9W9m'˰nC}/ݫݹ_Bdy&>cq.[8/a3m"m{_g|Z/a~}Ōnr1Ìۼ]kz-H4O ` xzHXN$a}1I%E-~ Òpmfʘ%V7ډnLOW^:$ p2UiKyAoߗ6T iGŝ"t5ر,qBx Vl ͸6x9tU/Kf@FΘƩY.--@(J&`-G1<{m,b+ŗ,0eʦ47u><<c6r"&Z?޾-wwF.$nԆJϯlyaH/Yۍޗi6qmiO/6>/.SrJaį~˿o׽ǹ9ONv@VҬó:e$bn<7޼ z;Y4V$F|yaP7nx,&eIyarJIZہC ̉纇3_3e^kR\` *ȿ燇??;՟ͧx@L:VoQ$  g G 0'<ʾwh6V|g,EeLuz[2Z3EK}C5TF͝I ?Dlռ,V&P7cG6Xکug3gn#$xh.#Nh{r,#퐵!q0U'ݭLڤiW$C?yj#,=[GFhx6MuYN%ZGy#_>fofFЗFI+3ԋeo vFpmFDIR.^˴cf?>{J ~4b̲}s]ldl._ D֞{-/qPkQ rQVo[nޖ6/3[`R_vC+zr]cG!\c83u82~Yo/M5ߔ|Űeѹ#8gW"b&N2Rb&~fgK_JfR5H<ԭԀyW'~N5*A%_ w5e,IµP͌#}(mfzAK vetD9{Z+}15[OymǫT~JH=W\Ҡ:ì@<G"fRͶW%ZolD"YI~p?~7OS?S{Xiv ;V]8"NQg#s*edwJ}ekhrVCrNI7wf393-nT%jXu8|:A/%{Po>a0+h&S]g>4%DÁuv\ZN=:*5{91eQb+ exƩg 0Ēч$z!~n<CܬTA  C|>Mw>ȠaJ!J+N=i2w "ٴr4:ƐL`fϋ.^:`zB!0!Ndd1y>~<jC6 %W!֚ĞΧOO_\2VBߞe26Dߎپ>~-_6@4ntOep$)YK@;E2-z's"JɊF5*yӃ>+a-4h鶄>i.YzM&{cKGD@Rf$,z{̧sP̪u&N+5g^>fFb򒒄|ӬɺLlSjDGfF !D3:P  KOO8}I,Ѧ8:/c^_s^vL GUk{m0z!-sψ=NH |!hfvAF˝] aklk+1ׇɜ,C9#3ͧeoSse\{z+X;:fv=-) +fn6XQ{%y6o=d{,cͪR2m{;ۅ#u$ 4S۷?}O~|,SzXLDQ?tr/g+dցґh(%4fq:"G eK2TlὩ' v jǣ3GLJ.i u75Bm)SB9AxL ';TΜ+pp8uh#埾|QҐ e\=[>r{@a{njXv捍ڳTW<[8r9pGnTOcV(AU/8G]گcc?p];b//#?/ݏup3?0Us | F2I!`0 non%瓟9Gȉ H)2=W!\kX*i+QJmt.f7cX5\ZDo▽\wX"iyLZD?Ee<SG^mȼsixi&2%cgKѢƏ?9a>ZjQG_) 5vhs] @cZP9Os˾*.*qW҇]@^J(0ޜ)>D; F y[ʄVRYb` CV2*쉕w_;P2z哱ǿU9?>{p@Fw3raDVlNwpp{;Wkp9 ڲ۵krn'|]/yܥ78-q9b/١n[BO$447go6E*OF6ݕû< TA"U$K8TCCtil3ciѲ7繉ݠDZDRi`zMi/K5q?3o J,KseAK֐MaQ\s&3 =-ѨV&yJe8;`v( IDATIgIE-x:[U ad k)ۡVn ;s<{!3!aMRhiD33lry^S5-C[ejWȑpMB\@X߭*g Kwnqz˕`_+S x3ȫ^Wy !^(lw܆wF]k1kz,v/_^.WH-ͽϵݖ=_}'BBVlP{#~z8Olӯ2urZũ&1g+U6ͺy[C)'Љ4R1+c.-{lo3Eeo>k޽ǤdtGzv'izV^`m׃fo k{ѯ(X]t/u>7  2T}>|p/~}'NhJJ0p:f|m-oo"EK$ TB@6Eu馸s9!CDZ k 2cSS<two@wF&np-1I%`z0fRBB EL@|z +M7GmtRXZzB'H^9Ug>I\ 5v1dtiw.?gEUhcLKj;6 A̭KXtIWn׀ܑ % )ɽH1k51IZ  `-C|Ļzi7QDC -e,b"l%6$ڣ:m븒5?];+hN#Fnӗv^ ro@y87W@zNnwveFWv\#1 F%4UoJwz_|O:ۻ?#9[)e/tΏT 2,VRFPH,OPDq^rBtЈT&CÉ?˼gRpS4iF9"QT@w%haJhXN ]}P*‘l#\mHyzTŰ`86ݝ˗T0E8 !#dZ2gf~i=~}s"R 2C^i"%%ύUR=^ 'l@!D-̌ɄKÜuvz HcNpkke6!6Ivt][j\NWYlM vaWe1۷wO?I"m di=y;m`]zǞw4oU $ U^Ո(%VW_|s:O<|yx<W>,q~QdZ_l93ȟb8xuVN^)jG1|:(g%zg$zΌj3K `D[=4ʸQs*TԜ=!۬AHLdyʓzXF?)S.%g6}?{`2-<+j1w;~GuhP^#A94@xck*1i..ovk+0& ޢo"qmZ1L5k*if !2Ǐ773b>;$8~/ڜ#zeגʕnn2;M+w]4\]׸-\oKuKit -._9d#rV*H0Thf2"Nؤ T=q,z)u#?o/>ýOk!UN(9hE&onxwʅ`1`ta]]٤(R=r[h$!s#(JK YZE=xPU1Ŭ tE9]K%,5XYG?$XR!t;ߏBI\#; _m?ŋ{tָiD WoȂuӂ7.h)%1F_~YQ {h'm`'N2EH @pOvFcEAcvсnYE25>|h9()Q@ʴe(U2qٗ4cAHG a뿼DЈ$IW.padE"c -X\צZֹFU^{dfR:f/\{f%R0pA{k첤X|Eǀ˱D-|ۃp0yꇩu_}9hKc;zc; F@4(Ot.̜ݖoӜD/2:AXH0%2{z"|졸4K " ,n"1s^ߐ_l.WyB>8åFjAwP-<~⦶/Ӂx QS0 Sn\~Ϗ@XH;LtmJf/HŢN`5ُVJDdklͥ=ړfTE’Җ8-0iiDQqv7w7tA'#DQ&Z/7/X' ;"4HC4:F;iDJ-?j5ccӶ뇌cZ0X1Pؤep".Hvn+Ͼh+ɝ{ :0`4hQN~>NTLUX(?~zDܯBgMf_6 {܌<_g@<ųɋgg*lMӘ|6^82]S6.e{x xX>/bMBɫ^u*xي3|u;$xW?.O8S.W|{_&OjeGo8uMLBOb>&k*B6Fޙ_!=[ZEqF6#b4"3dw|[QSqVzy;Knt?湤QN ]^M$v3uZO.@]Hy?4RSY"͌~!͇ɾ~ cVI7#bP%y=_e[z# Vv, {Hf3&H.cxC fe׀>foϛS{{ێюڟgol=#K[= 5bvTW{8ؤx ;8M敋tuK_}ĕc%|n%!J+ :?JJH/$ iK~8>%C9Dž3ےgt:Vj/pd޳}jhܧ:w{iCVTR#ebYfPQHCBIdb({Շd6᜹D4r9iRUIryGB⡸&MjzSptП>ךD6CRQccrXYI%7y^V. R\ٗe1BYwrbc!^zs^r#VC⦉73{͖WD#sT4yw|6`͟y,e":i\׎OP^]{ kO/qJ}+>|Wg߁%_|Oi+\`1Ҝ}PK`rXHJW)!i-?8l>=]nN2f w.GƨJ,5! ;LS,4S)]`dP*@*'rc oi%ύlK -;^JE~#9 fN3]?;&"GQ2Ht3l=kKɗKnC 2Zɏ?Rtvg_^ ){þ2;mǼn1 ԱoKw#3ӼNce7^*]]^&Mkuk jz1q./ tƘbNAA&Hc%22,Ҍ5=Q8)Sƙz w; ;f(,xz̧G[lIut.?iTq Ǭu9Q=K I2eca 0փM-j=іd,ֳ9Md 2d;ƞ'47}nL HRfDѬRC/H_*pњR=]DZ[L/oAs  !T(/q}h{3k!Wٺ/6ida0TsÒf,K? <=\`\Jfn7۲YYhr5M}^a^s!xqZ[םF^{=2^sC"e+}}WwʟPBHuߟ'aeKJXHR,63칖b ]6͉2]N]RO,1OIx;'5_җ'-3 t3 g7P ZݧRRJg7(`33fH٘w u{\ڙ8CQK6ҝ{SmTfӚ `$0;, d-_?_!Ԙ˔1NcJ"Iniyi۶nCLR^DQ~;kKq JX}˹gtTϿf4d^8+ۜ^n Ҁenŗ>Ki+RVnWlofX䮌ۥd8ە~ a]R+sC+۝p%^@Pb  i07A6g̘r̶$I,CSo3P)_oC}Q;Sj"ԉ Y.6CiNCqB[pSr44RcweL՚.V azXIb(*z %DTӶI1;ΖTAk(7{jbGkR^0`IJx~FűnO\ H4y ]Y+lxZDd|lמp"V)^'X3CL$A**'}LTY`w~?ߴ}犯ZSceмPJotVn(XH@cR濐\xҪBPyhSYqT}:qx1OOof7S,O~ 5ʜpֺљ%Z pr5Ni/}$gۜ}K %EXӕT^cZ UJzp&@tѤH)wJaʲZ/M^~#b`,! 0*JPCWf]#ҳ(Ai?Gi۶9խZqōᨱS@~WJ}jk&ܩOk_#6V-Hv9|D@׶U&y?Yןx2Vgy#< dD.NׯwZ'&+%*P'!$#,'++qc*)rALWY:a5֞i < @Dw45)Jgr3&[&!#bf6@jکRT[Ez+ +މM_?PTwI 1*dqT\bTq(Qᒁic:BZk&T) nr۪~wMj"ՊWmldj)v333U#QDQ\T7km njz1- uZrW4x!GMr*s$>9"~ R[{V8{8M3v~36efiHR&˚̓ ίL&gM-AI&,(S艷QXR -֊Y1j(6y.qSŞ ~YEވ7cުA+n~/`A<$F3iX0 IDAT[h<f}AGC%jJ5v?ZkUD`VJ^K5D]18m)$Gxym밶3hZ@Lj\d!2y~+=*55k ߩąxX$":!vg%:- m2X*qִj!8<>ϐVk8{b@WfF?Sm4q9,8p(:qôkOPYǾꓨ7/ p `G+EtLF bkCh 1;qDIAn 4TR ˯JmWzbA+FnHw=΂Qvi*cB~DaT*4&[SJAk"Rk]I5%~PiӞY;5J=$1k> xx8 Y;5x> sŤZCn[o3 ԴxphWIˏ0 D!ܫڙH`SOiO4MB{\IH4/Ãղa:y@F7%0SXЗWUmo|&l~IH~4ǒ tC9K~4h'( < ȣIM( 5SJFAi;:p{ݎ;D7U==\;BEUm^-p33/^@WԴח5&JPL\\?P EVE[5Ԣپoo̘ݚ'e4lW—Wh*d_9w[*t2\ڳv^wbbvHYdO'l+GQ4=7f,+f!tĨU;)ymN*d&J3yPF[.n],r\+?֍jSyMhO<*2Zb$dJ7t0xx.©dRH_oYwJjDik8R {qfv,M+[ -}@_3 #yPݚpL= p4.[>Pl3"(g96滒 U5i2Pu0KODG +8q"ÿ~=3C,Ču{õ"oco읙$6ߟPqR6GmQo3E`&H&2fv+`0Qj^&wnˆd@ߦ`~tW{-bO0p*1j`F9ZٶfTEcB h*I;nr:q? a yš-eV)sc6|5 JSR)BA}Gnۈdw]'Jm|W#K,xs$\6<8MI'3j%DaģudxWؒ.I77d9<1;['2B.؏u^+K_̃ʠ"dOGjn:q?z` ~a:&_ˆ=9b$cX'*^Fxh@4ܾ|Wj`[bTL.L]z9(6"h=7ȋVI?eg}ŔݱcN 3T!(,9"fBPhGG;(E )#όFA٪TG=ZDQe#yJXB)Ԭ ((;fFO_Q8ALF`ZCZUHQ'Np]+Vyʿ(YV^TaIm|⡗'Zu ӻy5C~'{ ͕lt2rƟĭkڄ,_Eˈ•o04љ[ftMfAqx4OO'UGb;MaWahwxaͥ۶HHm<e[̭GZk}%T`qhkHU`߿[kglXUVrDc\K%n4fyN$6!A< K t+CUkA=. ʞFxb\_x&!r%1IYflBRLR>qcu48UX˞ 8l,2bto;zcQIx]H5!dm&-Ĺ^TEd*q#u1Ȩo=桜d*2 ;'Qm"z;/Ag'k}l ;P̏8Mx3^O:oN"咎e;eng+IH"$W4c=# qXGkZe+y3B7< r6az~2`4LyvdN޸J@jVXղdQg2K,tQ.2 oDyNe5p20 xq'üJ*c`b ۬c \+; S\&2{8?j`~E-!QD~w1Un7t}0瞠c!`LK ~!)9ȴ”%onG5/Fҙa>]xCL%ABC=<)!bI5C( P[җ D|'IAԞĆNs1/s#A_rLӐ ̡ 4لiXvִWfZ&\dh|z&)"?׮ި<<@.CXxWҟ ʴYh'sϫ Vf y6zfBWL_,l~Y޺Õ3dpSS,Ƞ^k)Ɛg@qL֑N%`WšzoM[X";k3~iJ4hAB-4 +U\VcGΖq, jb(jP  nB2.D̆4={"B1Jlč([1`,"e%!sjœXvC Xl@?L)Bvl Хe'“e|N5?lվNV֝p7xNdWN d 2d>'ijbc1X=X>@LjBPE2B#K<{d\z(zAyճMOӷO\IfM87֛Lf'm,R @{)?=Ԃl.B+!V]i* 4t;`f:J7l"𪖲mCY$ɰ|K)~T ^hX TNBcY2]T5Q'N445ݏ+HcEC6!󸂙ם;]ELfu!;B M}z }W= &YN!<;n< >罅䲉[ e3 <Yx`#Elh)E&NO`@;ꓱgT58탡{ܩ~~^=5D@A-Cgs-h:m{Z*rD3L=f梕VO<5{T0Ss- @cz )3UdSQʜ$L̟aћQEWPX__f4zy<>W^nY/J*I-H'"^H(3S5Z_0Tvq&Vy>,B"), isÇW^Ji{ eӗf eNsZ%e?%c"i3O9MI~48y0i pVk%Qg0.:.3KMOγ6rwcW w9 KUN`@N6)lr^T Dr0L 58nZYH$@O1J3A)uD=C_(#OIA6 <# smUڴٜ? 3TE nT .t\7#hY@5awc R]v㤔*U2+Ky ?>\3,BQ$Ϲ(*bTXQ iz3Cђ4A)6b슓I*<?j:YOb fx2kYWQT\wi5146C]LB44&O }O_wZBXs#fe%Ƣ$`bQh0owLy40,U4xL5XZK-F IDAT~RPKA;nTD(P2j(kIT;Fͬr(EH|(f1;jA*f(p.ƌkA,wQIikeg6}FƢgfX~pn3U٣ $e$<\w ~̖stEyeJ@ KۇY6CD"o//HeqWv tO_?}EM9Ůeb@O>4/xg~@"6 ƗDY$}{{{?yD{RǙSBUkDZi%S"~Nn5(!pyOg=KIT;Z$l!c}7}!}pKR'_=,Lsʺk?HQ^s+w\?,.K5~̻SMdJ*#Z'Abv[R> lO,쁠3 ):K$q=8dJS82݉K&m.Lv3>Xi??1AW~BȵP [YMg?QfBfZrgOCxTXz+lE) o*e%\bs0}ko~}#hc=]1=$^U$MCO0)ùa`fю€51z4EͼHm}wR, TՆf4PDĎcf)֚ < ^DJVVupC{*6&bχwxfC.0f~mYc֛O''wmɧK 0nN蝦f4!S0 ǕXQ_ *Mڵd~F@W_ފ;=DI/bE틟V45;E%6 j‹fB5PN62+#!pw!+" +㈔ *OVQצњCю]DjلHLj #c>8]]uTPlOkz΋QqHp *Z c^&Ҝ1S4G)\,]7ΕpLRvG od8QlY2?5QñX+ߏ3B>y Ǟ g!+ptWO:RZJyy︃B˿WMo'o@J2pW`^+<퇘'2G~|ij,Rj6ER hִǔOR1D1=GH15f=!xsPvw([?~z41І5ذBCO2~&]ՙv9#:ը"G}c("JoV(9nYsoZ#Ք9S15%p0惻eO}Mt3?b?FS/BgA92S=h&Aa{{O^r3A~Gcf{{n`3kY,ԋ?$t>}+Oj*<'KMa6umnpha(p!yn-@C$K۶mdpEʶI*RE|guD)̬:~JQN~Ny!l ?yF޿'x_dZ;cO>VxN5cS)xY*2x3E L/'~I'EkpBtLw-i eM^_oj;IJ~-k{Y`/wBDϥ ޿Ѭ"A 0jQuE8ǔ;-qTDE}prdC$YkR Ś0It?/L"R(8JF >5}s><<i :LRs&"ݽZjk-V+6T{.7۬wWVq\#pӴuiTN J|sD WNd1w?Z*DnA~u+Hq|_<؄V@)V2hdI tw5SaOE@|6^K 1wBMa۶ fZw`0txom:if4jbT$"N&y=cV?z>d*,!x ׏{(D0pԸN"x,eOYB&8ZoHꚨqѥFQNkU=`Tb C95OG@~I\{S@/C <껄HtKTxHT"Iz]` |۶Vk: W ύ])emBW:옻pZ1!Q)/B6m' _Q]"yTUzV_>g|G͏MUg/+Ji3zΛYi״x< |6J'|ne% +*z0ӉκXSܦ+ӑ(_?~{DF/;d0(Y|si)'o=i̩G'mAK $EͬkB* LD(ڎV7IՌia>}ZhTR8〉JjLJdITJzaYI>eǴ_ՇkR< F2h|Y?yx˫G~}js9,'qA@PAC߿oV7Bh6`8!+8fW! KNV_2̀gtȍT} qKZǵ=/7֗[_[)jɑ&~֪IO/EѪRlG<{aoF?Q)` y ӷ~Un_ۧ"3i2AZ\׳8X`;}T UգNoɜ| 2Rɏ,H(clz ma;d@m>:z5 k㇃R2?H(!?rm|;oRL < i*\BR"2݀Cɖt5C_?~|P)ͥX|𬤥Fw97Ѕ8-#!e! \# SK`ZjuԲѴlv415mMA#h[њuW3ZS UltM(~qo ZP<Ų ?dI4_eR;*9r*askQ`8_ؾIENDB`dtkwidget-2.1.1/doc/images/blur_window_demo1.png000066400000000000000000002240771352002233700216520ustar00rootroot00000000000000PNG  IHDR,," pHYs+ IDATx[5q2fD)$#t1.HD! aC"_b?~BC%$( 0}gCVZU}pHAzWWW%W̬j' "J)Qkuw33Zk^uZw3݁@Dx<3Ddim="ZkDfL9s)J5Z -DVC0^H#| O5uYjK o)ZVjUsj]mfQB;uYH=՞ar K)[";'qZwT Cmۖ J}۶l,MT:)"QdPez<(8=J _6MսiE B21DH5+U2{;!E&4j݉E; #SJsvln,"YzA ľMN՞2~S`'9jBr){u-6ɻʷJ)4Y}} KY3DSث 6:M3%SYW#@ .4*?wK#0㱛%Z<ױd<ʖbċIt0٫ݽkHlڴ,A7Y) [xfPCGJZc"fS?]HG1e@p CQ{͈-6?bo]j- H"/%S9)IH?5M""{6l:?ʁ H2 bFިgH, 3( Z"K41=dfS>@*\"93Q1vIttGL8O-:0H_M[~3sk{  @{Rj;{.>.ɥ`3"’%XcTWKyow)QGTlj ZN:DiV:iKmajPcR?IHEI'ތb3XhnB "W)QA$S٥9.efF5g ᮛø"{aiGb!{֍"T@7s*Y!3KSGOf|A=O޻j|vEV6W)bV^:jo(9[h3))keX¦2Ї]'GjA-Sq4>L#fK Sx TtW.J]E|m0t*-ˠP*XVPQgdƿV4Ƀ=g괋SS<SJSs#V4BVc TnK>+g)r.bZnU{YE#$i!F=J ~ 2}̗bZ(P,ZsjDG}XV;D(rv"i0!clZldOuӭ \INP|/+ 8ث7>|ž&Ac_h&ST!)A̔STӀ9΢S]Y1Oz64E "P2.M/ʱ7gLrp`Dd͌eXw`(13vi* pCД<;dds6+is$DZ3Qٍ 3R|F `Im{ݽQQ}fm j(Fרa07A""6y&$7@xJ6-~RDQQ1lۣ n PQٮ@ mEWy+Fx)ֻ7 `sˎEj ;y5j"&Y9of!sĠ~㑪լ]QJ e`bSl{ z dqV%%#h\h ԀKmG3IdFD.lض } fZYpN#K-?C޳*(8;e5G~VUܣV2bZsa&=Kg@^2V処F|Kx (dh}W! SDݽ|;r]"9oʧ/&PXE*N8"&rR:)5ڶ*` ȇZ;q†92ySa@-&{wQS:#%/C_Xۺ=a+8UdybA݁e9Bww:elmb-9 ]I/ԟT(ם!LC5ds2O|DXRa6m3ހ}7Oܷ.6+meMy*@EwHި1-F/7~սm[&>jd8xW: X|05̽ODX2Y 0/a}*""5>-e?< `m.TDco =Y"k.ujHQkyQ[;=j¼Mv}fƤ6b<m+ߍh1! +Z+43EPBՈn |9k=>l[V|i,`9ݢXh=丸*]TXHQ[?X *FYgew`ւ:Ock@&9hhBT*|u iU[]kg8 yjϒYwZT!p #8Dmx~~\n>Fk2yJB |EX{mAx}F}6i+yT Gl!M ӾJ1R/X¥KJr3+Km24#6Ϭ'jIՀ Nv]/}鸲VE|*-фLYJrFY% D|)VW"qN/dC7+|ʿdBζUEst7Rc\}UsS'}"Q>.y2`s~ɺrQԹҎʌl4><N&Wd-?\\źAuYgAT! QMVĚ]uEabkG#b6Y fݚ-b~ !݁ Yw!^5*.KD„YiI?3w׼: tS06}Qpu:'_eXE#eKr}EBQ:PBmT9c:L*wj<[tUQ]4h]ZM51!c)"zҀK/],2Mz}vQh!hci'n- Ac B0oƲj(T|):j.KUnִ=l;W>TնքuSV}:o3(YtOAMkܺ_r(󄷫\1H Aͫ*Ƌak2!16i9YBaX,w}q fm6&f̼I$U6#"G T*55]Uk1plqgXKX4Qy;kGbOdm*ۦ@Il!>+"ܹW:ĤS( Z(L? {`·,.xEe ">4ծ,: rB/ZL:QŤsDdQM女W,"3 03Q+Uޝ 9JPWk\>FEjy*Җ'c$K5_#˳eZ ycs6Alj@[0cQDIRȢFWWm<8SZR1vRrfkXLe N& ٛXE .hV,W83ƹh6FB{ȦL?igb(!v.Vi'',qNi&͘% ;-ސH|eEDTRݚU AA>e 2|}挳/!PlI)˸,]}"Wc'1BiE&Pc{bf m|&CUUh1P|lVf0PyuPPcIl#/-Rl 1hS2?QOU쟣$d+X `+ÿU&$L:?Ζ%rIt[k|_!"<`vzaZ+P1ug*K6(!F#[:'D޿r03[y2dxm2DyN])j #mPTY"ҿLx[x:ftvLb ҥ* j0̮J+uXvnwcf W5S6"n0ltYfs0TdաHSHf9%Wr7iY&G5 i1@sC bqAԖGdQ"F3ʊ@v7:J E] Q]!VgבG?D(AEWЂL-2/=_-+1S3iJ-D҆A8< 0GhfJyw`: r.|03,3g.fRv֗hǁ(W(BEeZ+SVESifS;UXSő'G *b˽K@,@ O3eFeEh]rTqжL|cB 8R۞$PD.ɮ+l2©T@5ƖPL҄VIiPżyXI>ٻ[I2!eL }Y[w}cx>($cs8ggf'et&Q:J[MqEw .>ۙ9fQ.Ϣ#g:܇\c?Z˼o>|N4il^gq-]0!_8@9pE b=A=OR{/"Vzb+HU*Q:>y&CR ?u,y6-60Y7eL8﵁Yz*-hnٹС/艹cikG 6 hRUiJS! ڡȖOڭX?k HDA)YW-',!%FCQ7c-'ozID۹7j Tz* =BvB| ҰF/J֬9zc'c~1Z#5 W ṯ(R9뤵ƇhVzѦw徭ÔEVNؕu&^k%:wU@)'YOՈKY7Bޢer)K;ipjӢQL- 1UFC*gKx͞UNhT643UUlج| 4 ;_q®^lI0xJR5/ʮ|Ev9M*#1KՑ쎐'A!EaMvh/wocm Yl{+MF[kY 8R|6 8b3Z2G bվ`+k!3X*_#LCy5ޢ6 1@h3{)"7Ze樮g+uyvї_I}6Ϟ-:RE&~ų Hf((x^z_+uÇrjw^5qMP_Ymk k:ޢAخ*[0CTVUW{m\tB#KW'3bg[țED&K[,av"`Y`Αk(u)$#HNK|"9J98X).H7f:GQz6n.Nu^džfmsbfc zM_$0f]0%KWE^[kuXmytX+߉30+-$١~<L>)tn)XF.E9Iغvd V%%' Go*/ų&l ^, })Rn 9e3*8ߠBCVLX%m_Vɔ^oA |^pR݉ N0bݬ/{V=:S8Rm#d[- QEvgȜ4k/7uta5&Ǩ/a>X<2=Gyy nġڇ1P-連)!8Wu16;HXzLHSVy;*S(uEњS|;<* :}-S1{*ڛlWtL-zy:>LEKﳴIkM[V]RҖ,*1E0ByLC@MX4 @4v I'E[mnIF9Œb3C&!5yT,u!WsT<6, Sw~OQO-s)KIZw6Ӷ-ֳ9O, **C6 R,%Ea^VdqJu´q9[[l!.Q[|_&P5&]).&ÊwS@pAu1RDX+劙?T7akOT-f}m]ȏ]j_]ş={m:G녉+`;pnQ쎌mR,"r! e+@kh+YN Kn+j2b,VuOՑ9OOԌIf3 `ڜ&=~ޫNWҍROLE2ϋ9t'KʫeޯG4}Ǵ:ġlBe~H->93xj4%^讈b1Oh8"T=@T,!!vuwԬ1;^x#V}kMhDMidvp8 ֭_"%X˷ }H'ԞB|LO+ۢ-+M'/waNYǟ8Ϋ0 q~Uzx̷vbOc_ 3*Fq/ )&!zdփ*,/oju3ZL#NqxC뭵rWF;P ϻc`ONcs*k1P"rGrl-j2n%̯Ё#~m[er_W0C Z8sDT,Y8O'Tx~ v Hsz,^K.ӜR!81!骭^<" C9j~N%xR!Ib -ĵKJV_l32B`SH ׿QCT(YTt@ՒuK gҌn\!>?9ܻkNE]~a U#rN_\7gO!Kgi֝0r}iŸðklcz,Sݹ]SՄ:02yo<ނ+h ?sᛙ 껢)7bCϳd XKzm̿zlB/OhϖRګȜKZvn}f|V uj+/S\pl^xgc!t0̮<1租^9c{3dI!k 4uGN)t+>/|-k3mfQӏ?Ph56QxHoeHD>h4"HaCt6Ǒ,iթ n!eZ>W1xׄxOl| lk!s)РIGfkK*42!qQZ䟵E_7~7qʡʻ? 91ϧ 9!Xێ3qEl{:#VW=]I]orސJ Z}6M?/ƥCu طZǘK|6&$tc nJ7A(Up tɞʶC[2RzV`!|"Tb) _Bʈ\ސg TqU^.U3_!!CF?k9'8֦ o)dcg keFe8X9{2McjFJ14c9<-M=jR 3rI@T#yR{0wFI3=Z3]v 9pFXBl,ODN3iMTʍB6a'ī2:??qhBoR({!{{`ID(Mwm=N"2ֶv=iȨS.R둉b,>U Ulh9z̈́+&^]h]?;fqk9LGvbҮqzH&~ ]BN/&֯,ux5y_9u01oHCzn˄\M:8ΧӯS%d K^X^#:o3ap')9'&A7;bO6λҜۡ4[PgͥM | QX]t-qe༘ICBGi#ʐb|B qkC 䣧 v ~+-1?jq.Vyj͎*9=&\y oKf3xHo@qo8q K Vr;scvٹ͝y %|0 F.`"7awR1Ƅ,HJ>{QX753xt.͹b#̆fIR"RKmMx9@ 'ONHS;'&hB;&s=]KeM?gɟfO(r&/i,-tykS La_!7^<%¶ś-0Sns{DFbѐ@SpemNC2 WAI/o%؄u2ĂPJ^y)m4D@blҹyye]bg>pwq{?}?Yg_/~{|@)Vk=n[gCm% n;skͭm*A7҅L,[lλ.;#=N_9w=3i4}Ř޸JA89@ m5>~0es)DGz ̇0[;@]9G3q^؏C\@n~=Gno<׿5J 7+Ϸw<,^u=~OG?x.o?OV||/ *0^CnQan{n7j-DRd˯/aؽlaw0l?? G_{}G=Iͷ솭X1&{S;Ag0V8x,0q12Ls:w {*ܞ78Ͷ|=Pķ3`H ^ Wɑ AB}޳6^X/G6%-7dTsvw@j*{y斟ǎ[la+^;_ٟ}sۢVCTx+?ϟ-"ʭ,q0rki@w/]a k{n^͍zBkf/[soMSpI )h#PMͷ N/5_t\K' lHilo+a$jaQQ0T‚Wޥ>2tMJk-VD[ Hǻ'7ڭװTrʞܙsUWL&͕\H,E̡t{.cpBnʿ^ɸ]p$Z,uj-Fp3xoVo!ok &"f ]`r0$cb(o6p^,&q;0G_LNJK4[!pD_H߆0E1i|ru1 Yi_3q9'rA".z o;_p耼nsKDpw8v(ެ YzB} xԾ,n+±p]q(X/XވX~®2m,w4SO!?r9ϮNAx ?dxy &U\ֺQ& +;P݈ȷ,YwE_w IDATe4/o&2Fk=j7dpbAQ~[ N!ZŠ+˳Ӫ< gL8N bΰfkG.Y%*ܜ]O4.1{͇|Fb.1.ֵ5/RXwih 2Vq6p>t?ɧhK! ؔ 2O@ɋ`&KcrG\Ǭr,phgN< m䞋MY>>F-c<v{~WHcIJXVԆTc}5}4]ڟ+;I_85:0sWpG24o|!Ȉ{3f&O8_ Aod@hq>LFiah<{ f XBt'P>Díu2ma77w\g8 rOpH6sH@N`SaRV?Lo!QaKb)YL9A -4J;oyB* _q9mܜק,J%9#_0b $ %ffa1E'OsKR#0`ٌNQh:y)a} V~gQ_O|='6Cp>Y 9DVЁtK ])4CdV! @(?dnJv^!IHNT( /Kkk6iT*OdQPNAI![(T +׶\&xh틽>'G;[~s~/6{o(~x[1Ӱ@0@qMM:7msΌ6a#Za9y$)3a^" T`:[wOA#c!'4BӽLn46b`âȝkqs۪=`'}_|{O~G/я|׺?sG| ^^ +f3?4ğGkV~JzYڝ#1 Pқ<-'"Қh,z\#A/,lLBF<.Cf=i@"bopc>]c@IfuG ݞرbE|Q}گwο3?/b([ {S- ̼Xo6,L0>9j*ǐюFYfjo蠦4z=]"%S~&u;yg[s^_'rH#^C`]hQPT](5_VV_ijD:0ih~i^ǫL-zkwQZ[E==}BA.H/x3-8m>,sH(s#An1v2d5HYȺP&8=9+OdgǤs}I4DCq-@DU& $}/^aMi8O&=_SF7$,v{~|tٽ{xf5`bE` %>.77ֿ?ݞowxL[(+?2,-C v( vnW2y/mvt~ëEOBXbhpTә}nܻJ`-3Hm{~Dz؇{V-^O~ۿwl7ûGx׺cFc ' i i0DS ŁӕyL'gxh&ml3Z1N 8?wIr SO-OzX,f AӁ[&n/_-=V#X0iObQJd2pz]w(ޭV?v}nx۞[gnZ, Qf-gI B2dҴP'&*rn@mACȻbI_P8=k˒X le1Ul8V +*sVX X,`9kp383\Ux9]LBYL\XZێq7W[Ǿ?اV7G1Ǩ:,Ex~MAO4z'xUWqa2B?@eWP%^ғ or^epAUU;߂#HNkC593͎@\mz`vEfq1L~+q~D9OFݙď9aI1?,zq h v8"L`QP0ua@~,A+i2TXjzO*雵\3+?~'~m~W|7IN(,3ߣt0,,oȦpTvNcu. ??Gzn`Xf)/|«"/d"? DDYwh?WW#蚳 3}j)_s+Z*~|wgSy!M:0-&3X}BӆQmW؅,o %.bRjG9Pt:]~N9y1q{af~oWӵ݉Υ߈9W@Gz"N4C;Ni+|~~@݆j}?;r~@"o]\9%B|MEq,uD;@s(-fZfYi;L*#*+:NyBeTmNwY?Їk$q?ffg^/q"[-\\ QQDl YoTk $)+E SywNyJP,qr'4+"Cb"pCC;p5y-J =?1*;b`ՔD mV~ns) [s}%_;`:Bؘ dZ 9sAi4!&9|c:sr\lpv4>dntCDDd S,#1l= <# 620sllŰ#׮[mc@@"(dJj~OpF7Xf2Ў>% ~u>MR>DtB|/}^=:E{84d~lƕŽ:z(`mP5. o7/xi  &Q̾x򯺜2AκMu)2|B>g4܌k\.HY#+;=r'~bN]` ؜Û\]|uG}:[k.ࣅV=ã/bڼEN1mͨ[_:\ۨنCj)ޔg:Y8\Ό]ȂR&1~+1@wvPEO :g5;E -l FV"_?I/cG.wIż}̣@ <" .xףaQ?텟:3z|4k:qJcW5(dW'.r`bzrĊdK1;q8I,ӵvs9ګhm_ bo1c8GaY#\N/s\݈1Y`Qmc""`i4nZ%Njnt95WjHʄ _ޤWv%[ 2ww{oݪzڒdYdق l<l= HSUw&oyEA&s}*=b]$&rد i,/Kβ=il K#\\h`yBުW' Ƽ4lMFJRE2zhyjCd(4*Ȱr6.u¦a߬h89Ƨbz 3voi2bBr$% cLvRNN{GJpp!]V& >"CcS` ygns-mȩT֙Y UCU(UȆgVVP\pP$ҸaMnj%aΥ2is*!>с 8,QfHwXB'89V ]RPǛ!5v"~W~|I(D2v[Θ ePٱ~,nLtMdX$lM+Zzf-?vu4!l}>rCG " #`N0Wgfv`$,j ”%`O;a'K l .0/q|'gh!@@@ &=HY'`\h'Hs@j).3D|]j 85;WPD@GLڹ*5EʄɰΔE\r*Apg8#3KYT&TH4D+Nmeܬ$5 ZԂ|b^Xh7~ Aϖ UqXz i2-"9` ypR(LiXuiCg7+N|>f[6TBF#ӌǘ*w6(cnΘI"ʇxeL TdWdiW.ھаVG:7Bsaeņf~@1քJa/ڠ:0QW)\~ȹ8#4V~tNAQ 1F4Dxq$ ʬ |ы%Gχ=UD&Axjqt7-،?g)q6f5"jI9lQV>dXh"ҠXT hU ƋY:V좨EĖBېN?R|MQ/-` ?oXO8'ͽ )X.rFS \"MF!Kg&큱.SHypQkݷx B *oH7XQͳ"+VXDI2a)X$z1&|**nxhѱGcopѫeN 'Nr/撇 :HC1z$8ݰL&ZDl bz_qtQbkؐa:6R{'|Y(gPUU@DŽ %[)/M7>YĨC` A(G9ahJDLesO_?.K) >=$ =$G 'A=+tɖ2D3K3bREAPjs (Q桭0TIE ݢ\Zh.Z2$'0tB N֨;-Mk΢سږa\ѓ$Ə>Hb3P:Jb ")SѬ9EosRJb0 4ˁ:9ʌ~@VrPhdg[ !e篿(9^zY{yd @94F^@](%a$'IO!Gtgb/1Y> <`BxL8nBVT'O9 XifzEj}5㡫bR+NRH@aEzu~5[4\=g^MuV~j{|} JX%EKV_-)(I;'z2$,"A;0֍?nR[E$rQ&%QfEu*s]huFĉ.w|Fwzf R5" N_WO3D7AAf'^h`8CP<=Ȅ}\LȈs謾 `0;igH 0(ǂERV7mȶK2 F D>"*,084]aꞖ?(Bb!:͇\kN *\Y5*Wt#&Y5=REDդQ[` xN1G9Yij,"r41)Iae p0=%g`i9Aw^PAp# ߬0cb[E\,|7Aq2^ Ukh*twGo!7GϹ٠+P=6<{~N6S0 Nk/P }ΰ@ũk$Pȗ}Htp!^T2)~=qT_-|ԡւr"S'hw'MUˎ $;n|34a}A>.ƕf3XpJ8 S  ߏH'2@$ C~"dPH8&eClxgNxr!@m} UY%&  Q \yb5=5/l sw&^c+? + =hz V$աMjYjkq܋\IpC~vPG`teZipk'gzИ`/@V܃W2:D(|@$ iZŁy\[dXnF`^&TpP5jhÇ+W=ݺݎxzgx0YC>4x|yS*F"Z#$0$DWC);d>gK.@3d"Y2@u+3[o 2OjNڣNem)T'\Ro,M|C[7~Ah~[K&S|R q6e-,ʲNF 2i^? \˨\LضV˵2g{ Jl9>)~^"sz> X%[`%00N4mdl&v;/>5bK/Q5m2MOxs0rRχ.Yw~nhkSmd7q}P$݇__g~9ɧ{'mY!E`YVyqze>/H̄ rN}  eu:ZtmAkC?<~tVG?~+zX,$,e!gJC"^Ӥ.]ͭydĬM[I0JHJ+BwpﰿY]f8cgJ'sѯ rl~7,JB(J@'&(r:}l 3F ldQ;Jl!':*DG͹Rj(|{mjp৩|3g=)R7kz:%bl0T>ȷm]$O` 9Q%JJFqDԃ( L0iۛR|bϞwi2U x$n<(>eqSoUT˕ +DM`BS:[SWar5"} h50| -+HpI*`ڧTͷ̈́GU%O8V?јT p*$p⁀I s(L|$u:ܱ !(2njF2@ Lpҟ{w8;dz>%; .W݊[z}m4Me!C+=  cH6X~=ΘE녆83!ZZ>U:1Yk|QK$V4"P+yZ?\l[9ɄS=tA@X(: %La1f3%Ą'cwZd hEcBE4CJс2D}M4ڰW~?}KM}n(BM= Ե[bLoW02ҔK sfUflSwY@L8 28/ʡi2!rV }",ER[y '$n"+ďxs6qtvՏ{%~pi8pˠɜ(x=8=\ġB4'E4 [\\ًWgp&)o2HJ^Cg,3wOoBѥ?n8a61'ޣx, D8~H_îD B#fN8(+)Kݖ-t0ؠF:F=2sS2j:En!C%hl=&2;y&@}6VӄskhN7{w$)e!Gl`HQRDIƴɿnx{ǘn7 .FG.Hh¢A3-D3T9*B^uSdVE1$K $^ ̍, QXɢiͳ6=s~a2?~᪏ [BR.HP%)yg]3R{J|b\$%L~``ROP#牍uzUDoogKeEM1%#R9DS-}+EM*6Em4w 0LQUftTN00>@Ӕ̢hTH3 8ZȰdaphTjLKcÉgi~Ab =eGn#' ҭKdGv5JCW p'׶O9ɻϯd#gϒQ|Z~ :ZU΋)CeʒwHP3Ba')bfRk~/'v$}c 9P,[?IhcW{pNcWP4')J=<|o 1Cl+✘ I(*~L|5igrKwEs5h-W-[rܭwu(pCZ(Gi @,FPyK9Vnݐ%%u~YLYC"\JwR߾74`9eJv F?NjK<~ٕ e#c0Y-^|lyJ}I,2(p"B E|P,N6L@* &|H(걘9pm]FQJ7?4nepơG/kQnQu-l%G 2`HFE!*D&9|̝7B`rzL=EeC3LET`h uǿ?wwoB 8ʔ*&*^iC(wwl}ݳС }:qU mGR#%QH,n~+z"BL:CSe҆t I(mE IDAT"fd&rxNx/-93~M/ij퇔Ѝs9k }Ooo7 }`2ӊf8x)wwׯ_~zs'tIs prKy9M7/ʕQM"`:AyV}ѭ]Wq͇âZZ&bqDV7= *8,P,K֮j_\_JP\͈N7LDZ/qUgm!y?Q-"$(t[iM2b:;q7}#JF,J%% $f(蹧Sr`̹:я{o'©T5]2ƎY\|y绗\Y72C?ܝL\sesnx #V)/CKT.- ZB J%:/.͉ _ H˂sDg6Qeʳm 9M=nM&Y33$&:~ɧ]_/߽~{881.L+=^9'^^.-#[>@,pVY|Cގ{DŽSY੝Yvl3`#'smBDKNTSX $34RaWAoS!`5tO_|fp8XJ[#Ĥոb쎪 Cû8?0]rf3uhvM_ Uy3_9eq,l꫿v)WΪx+*_=d1XJL4He|_|1^VG`=-Ae.<7__~ً+K57ΤkVf_*dČ&TE YH&&lQXP*X5Sp,'4$Ҁ<ũ(ވ 6L̯nn :<>r_#ꬮ^e%`_p N3|}L9g􇟀S"|➥( ゐ )ԘAI}-BW!wg~ûғob7K^&OH]}⇟?/޿S2J%2nkkr3wOo|}곋/ϡazBA CMzV$/udE(M5"D.@uKVƋ20AqjI<5mi!G遚Su>j:QRthͿл$??nTLh\Œc@. !.ӜKݾo9؝hrD}{Ϯ^}O0F20P= R$M#޼ݹз,N7.RHb|E se[(U+ibC|VdTqb1yN-"!KV~kaʹ}Mˮn+lΣT:N#n=RsJ?cH0k~On(GY]0 RV6Ìa3evfko޾pw}w؏g7m A̱``Lۓic|qyի^JC= Բ %1w}Y{A㼛S#(j`TsꏳFT/Ss&z3VppUNF-\-c= ޳M=pn66\Tix_۶.><[Ahq5#cxci6Nf7?F3gPg) "N PW'rY:ûwo~xg{;@8ԁ&79˒w>'/SoohlT8be *`晦=3yƦUV(oIlXoBGXhuNÅk=Ņw F5Ɣ9 PH`%ف]$X[N_/x)">y!O\8!oB2L9nC yddn޾_}y)1'p'A=ԑ0-]>OڊAv8`hf|~*:. po<7S@3د@XO7U.}eM&,pȆi Źi+8Ad-xĄ8j\J>gbI#΀>;:1L t9/vgq"/` ,;'$$+y'$ȱ)(ХtF:x퇷/'/~~}gɼ=s>A2dNgO~_ooGAaG%2|De6QkO5`(aѻ X-MX$$<\1H(y!lXIxe"lNx.p*584[bfman)ԞK`@W5iZg?Ѷ P\ B캎LEjĎ$ahdp~Ĉ_gt Ytz9X ˄ے!{U# 5yuπ)h4wQy.y߾ÇWhv~14:ϼb 2Xꞿ|gqw1ɗ̞i0G@ϊ8Z(G"ѼQa%G8 _mRYŻ[VML'J,pi&.hDcE뙨?1#Fɼ>t;U*`&:G_evM-oI' ړvЙY0C 'g51̧CėDτ. hd`*1uYGQf_WA:1\g@o_|o?ysn;ޝ P4T:[K ٳO?yL;1}<&1/^ƘLqi.. V.9tN$V lw.hj,ja ,.Q8lش<Moe8\bUVooQ%|.ƕZoudD I1~MDlOqFs e*K^2}&.H 4 82߿ڝu8FJޑDŃ lO~~|C;eF)ЀGT^~YP~dBVRR>y3l)MveqNe#OnKF4j!֊eYزrSp VO,¦rx]8<]mKh\H[)H±m5'rX=Y[zD$ЍWO; i34.y]ȒA)!J=@vs~L~;8ߝ`4KES2$w!Q n77wotv{YΑTG`ՈD0u[cF?y5P`uh::iaey .Ȑ+lba:u |`-bF 7)ՎpxO㣧.4%A3ڽZ}w%]}ggF #0r4$cODt2ean(+ b1ؙF\ϞYo|s}]h0n= 3"6J$r8g}'o~?˧Y霆bC",Kw?7CvXͨ/̹m{\[N L3xUt:_1 NyUݜ մ\SRJyI 9s nH3bm νۭ6Qy/w?Mv+|: lt|ϾȁL%3<3w&08S}) ͕+'䬃@4#?{x; ]'WWapœ󳳳릉cH7p<W͛lwp jƇh=v'sv-+.-õ5I_-+.tO)URSw6 6 s09Y~-W"[Į~zGlǣvzyD A_tc %.k0;u/F%;xxp46Rp/ D5>24; -Lb1u<`oHg~www{wswp~~g~%G3Ot?\?﮾I﮿U>}Lc¹HfH.ɏ_|/^}NР2MȵDΧ66]Ul/ 8ƙ&%Fщfqþ!g>︹Wl-8wWWCַ-B _*D0{zF7ݎf#A3^'? i3!7žXAZw˰C _aѾtfFر$%]ɳ̳w]^@Xa#8\i_|snN|:twl8ƽ~'ڿ럼}՟ӄ3 P2v.ŝ{Ͳ[Vopb)b,r-HVw ne.?ʜ/s5r~WOŚ k<4l!K@B1Ou3<;#P鳧`ˁ9FIApD%qtDX] 2{NI؍#y}۠D8"'O=}?aF:G:LLwç?LO|~t#evy{ )7"QRN"Zs}կ ,fE}lu8Ȩ9UGu3}[x+:qx4A{7Jkm/ vwov_|拜ܲ[g̾>ub}MQ\]1G><zi(z`^Ƚ )25E=܂eD00v謏4,gtqquut\["]']p7`?n|?zv\A/L8AK#JvxpH8fT̠d̛<+Lĩn!kMJ~֘XV7ULG4Ey9ǎ: #!ATMy!GaǔwWù<04&9wO?a]"KWn,mƳX 2PQHrL(_]7Gy,%&Hѓ!8 M {啻 Jg1(f 4.5\.&ҩ\)g j""JlM{-\f>}>m^}ɍoyyiD7)/>s['H8 8ڰ(l!û %dh$sY̌)K0H6:/μ ҉L9N>"j<>*|g;\Ƚ;8Z G̍^FK/^zrkj_n꥿{qsß~vAⳳ_`}(ȡ u!'t bѩܡߓ_Yoo/cU\J'ޤW;#2U^MREA$RHAF".i'n$hh@kO&{SU{sp IDATǐC[ƻ/c;~We\0CMNcIAα ƋZt"zY Ѧp??Rds1?x݀SK%qP,1.#݇ Z(Nn&/3O) JN.0G!Í2V\JPrQ,X3л0v}xp)!=H;8O~;7?u]:} \wFi5-=7. ̇0DjW\Z(Ӊ弾>.]e?Z9l * 2ovGOSP_FN!_O;,ahDd`+Q( N}UGQ4RoN$$h4K 9L,E:,nb܅t r;]?˟Gڍϻ/V]̪k¶VLS֠ޖP(]b*ii lo pv;vYBw=Y}+ϟ%~o_l At5Arf31jw~#s'dJyL DeW.bIM*s:7FjڒS:?7=ޠl2bYZ(bnh@x Xr@wH@lo?p2Xg'9o&eRR˗Vs B#U:fa)goӪ`6h ΤXjo\_Z_36/4yR^Yg`Tn颷گ/KwU|Yyxߣr&̍«6/~hm&&b)n * 4z3-y估fUm4xŔr~3/+eW69|$v ~Zк.P:n2)0B]. -'͏q|~w,OC^PK\/[$t2ZQaV2Q^' %d" 4 _?~wޅmm8&#,B" PS"*릣x <+Zݸ}z:&iA`\m_-Ol jQ>z6}Q3ehc_psÖf_% M_,`q[)=˝$87z5śŧstun`:om kfBna=%w _כJ7VJWdehNtwۿ>11Et(g! DD% F![{S6}4ZDu*x<#HYaD KТ&\nCEwYL7KWUBתoAqz\!ZlG\aEI90[G|2dx r_Z'IWK\hȠf{<ޫ(ŒYGk?+r`k3dHidLK(jzx{8x+L'M*w1θnկ_oU਋gM1!wt8H͒\IepԤ BK tJ%t F! {Kr9ܬX qov[vz9 $v~{8*MlM% +PN®7+.AcfUgmA,Q*Ԫj6_+y&Fy+^e}BM<&Y0iTThi[;2U+i{.N zA"*J 2253{]|<~2xt ;c,yr1, ,{PY r …opI zT@WflW%:JtxX5R -ܗT=3EN@4m\גM)C.| uY}ZtQyWt(:8Y)_z;3lJevs ;|r!,^mYƴu1xɪѓe枷U(E2G-|Kv&eBtcR~x윧OЇtػ'ޕ,#Khrf?~}w!HV5r1Sd*s!/˱BWac+B@pFΏKML@KƁZtQ^n;//oWotz7Dywr)L+d"@F2|bmSX@I`BF9bR| PGXIp'ԔʨN2R$)m6ǧb ѳF3 b`E&o?3ov t2kGPp/?$~ҟ2(:9$ځ1NjܲUu漞Sɱ:Z80Ԯ_Oq]$sU~/TK,_# b}\z_MA,%VU. Z@1.tcŤ y-3J زhV\< b.;)ie!NYgMj)VˢbaY֬W[/AMs];jWveoN.W rM}$_6gW;lLSg_fSdHYzQ@S[hd,*.'e1ؔ\4CKz0cqi_ '-0vJ D`E-xF9:M!\B)t|{;~.uG!ó!.8 2plpV^QćhrY= |GKJ*x?@^isjQ[;T;3/(R=2kt\' gSc $]h `kV`"B`P9 GeTu].0g'GwևhG!|۰m?8!.,a љ! =%ǟ>~zw(SL7Fʙr-#5q:౩~aA]Q [q#qZddgOFi[<k&-uŁm#6+亼_Z{|3רL7]k&KpČ(&+)cT-WZC2D iz@($`%l pG>:eT:J&urD"xL 0:˺ mס۷p:=nv2C7dex<281IϏϏc^0/kl?E j#2X\"1ïte-^:YP} -tXLeT^ۻ%^5pQFϺUB]b ^M,0.uV98/ FOB$H DW"FQ>yU=/ , ͣ:T5d{AZ$̳@)uYɕ.&!@&⦷.vO~.ge]"1^__w}~Yxvw P;*?.>XT YUE< ԀdN"bgdބ7ʞ/\# RV5Z iK!c/D//`<|D{zyFvʰvH2(*1u&#1$`u.#\tM_A 0Xgt YYTJ aqۻI@:hbdwEl@lY.1h}^O/~x`w/&OxXq` Urj:[G^β`Beń 3 ť̗8 ҦVi?;bm% M, lxg4RY>DW=JB*+*xc56*0p @GДiHWrOL NFwkg"Bøm?o/)9IҐ= $Oz}{{xxC*q _H4\\qOŤbrsuy|Xw#Tuw_)_` ( VO6ׯ+Q~U>̟o@*]kvv,*Ih2 8ǀٷ^G[eF ISv- ˤ\ci1V93TIdH PÿK&##;N>9"lv? !G MC33N!}>SRAv6nP9]`!@,ԅƱ$I_Qapը݆YG].E=`09 p֪Inq,r~W9+]7n]jp(` & I n4Wn^y>X<-;)C`( E` -ɷFL?JYA%dh2XPVLXq1hN@nc,ژ`11d⢠@x90ݎU5J=fUҳifyQX\"fHy8 bZkMX6O nؙ^W2.w ;7^qymUz}2HΤ+cՔ)YڊsxIGJenA3ʼA D CdŒ?ǷOñ FZPr:X_\QpP)1Bp'uaC|tOpxm#y8!C!BCgI6sI&TWfũq6E&+_Մ[LD#k(ﲶ#gh%ZMEkz {ղU9:,ZRr8,/[\jW\5=A.UH@*:pYmƓԕaØO>==?ݿ{Crymg-3,yÞDC )[$A36w᭳qOD %Oca9 V qB\ YkJL$qcՉBKlZ`9>\JVG Zg+sҸ1y@3V|5Z *.ZXq"U.urӂݸpWcEKXk(I/E%.˕'#Yr[R-Jc~Mv~%k/=]>||ٿI!]Mf@C̒lf;MgQY9~mw~Lω4`'~~ĕrq~iĸb85yҐóta:X[GL6&lWƓYV P.5K0Y-W7Z_8 Ըu~0{z'@h; ŔRz?H178TɾM0Yt#H BЬyjox:'!+gRCV_wӻw),!;3yYAl>́&8騜UMw.ӻ?}:0lWX5l||X?d IDATj Xj1p @εmMLSljor5+e]-/ER~W#9^mظP0zIs|v \x @eX\]CɿDYj VzbP!ͪ2 XFT_`hFN3fH^tS];dRYT$=FY9'ϯoo//Bߗf2c׳AKC*DE (n]G3bfw7BO::Β`fʐ9Ts>2D7}fhmd+d8iO{ٚUfҒ`3;wK.8JK*B5+h^ۭ\c|lG4J0ev)ޥlGd u \' b(jwk4SdA߯q 6ΌyĦn6oO'\Nc2$1y>>\ }u\̙ػ3]#g~TH=@+kf)â21E3lt6:b$Lw9L r1ؚ*`>pwYOypA&A2#$q>w gh0 b`B,(iNYH9׳bvN+BuW>kyX̤ W3 Ƈ˩ q..vֳXfrփL<_k_۬~&!WBP-AHKZKU !$@$KHK`44XR ["Iuxȧ=p8ONr* Dr΂߾?7ue™$L9;Bw!Hܺ/@Rֹ~ %K:IMm̀/\04jP,˪Z(۴cI*|jze@RQG5YZh'Nw.e[uZY< 9O\Dg^PDwf8DCWeu(/Т:^%UzR%ea&e 0F 8gf3bh%(]I E oyи?pAD3i2X~o-7n{ P"9 aJ w5@!ED &]i+aY~ 4a? (TqO5(:lk:BM-!kqLF*$8׿~q]_k#]rzH\/əjWv j^4]Oʋz,*lnV iٺ\FAulĊF3WRVm,, PIZ\ʽ͢0 GC!na<\t84f1ѽ,FWqw8Yb 1FD;@L.98p!/7.ħ)lJjBj\(,*X Y5">Aj\iޭ8j;:bR#jdl}8/xO'-mޫ;n3^xV_LS i.;4bgJ2BHI$ɕ!fpPfQ@ (È1̙7A㻧󐇗#=qs8C}4Hɳ?Ǘ㧧OOMy2 悼^Yd)Rљeeu^^vZS?~{su(^*silE3NR=e؄tޭO Wp]nk9eompY'KJAčMؼNauÒ@Zs _R"'z,/eL/۟ z2!r=j<\q׆1RsY\sby)9 ~ \#pSibcXm-HTN$MP03(8r+ ,BȀ-Pn1 8Atwu}6tُh܌Fd :edi8aoǟOS`gB؜JzX{y=`qΚj 9b.O8dEVp6(ҫ.8éXeШ c ]qػSivL jyvh1K.s 9o/\=*xA'gQ;aۨO7F}lhd V5HK5^b Zx BDnQLIb˔ g} BP}LN$̌i&宜1@6F~ GYT'4~|cr{ժwn.L Uy^F;jF} w bj.囮>;bf%JnT/sa\Ov?ӓkJkY"eC.KT()֯N"s csyVMN5oѬ@uyR%@ fe:E!HF14RQ6q8]w{;cpYbvgRtY"i4~>>_}xשּׁA`T\M?KYbΔәGY"rv6s¯[LJ)a%Nrcr!s\c<\Y3~^BnQ'9¥%Gqic*V}Ԣe˟s&x%*(uJQ,1F,1Tv]^V,g"'¿{Ŝ1yNʺ[֭\(IwM4"v,ȊTg~z|{nmB =֤7b&Q/$Be[;E˩!9ޭq4.Gpӗ\a[4<? uJ - be οT2'`bn={42=3`[&T;HZn&j4@):d]44i UOQ56@xD '1S=)FR"M#sz5n=>ǻp|=Du^Ȗ%A%^Çww1R7F)eߺޖ7W^-K+iV@,NJgiDN4 [{*ҩʇ vkOIY~Tiə編M|Lŝao.F8s|-\ϡ5AVϤ]vN̗;]ik8? tTbΊ'6Xdch9Cfttd,dQ0D:oNx?~y|sv6 Ð1e\jݟ WN25(s$͜"D9 *mΜ=1cwwBs\&u2痏/_{mw̶a=Bˍ߼De.u1ţLeC]%`{ kĪV~y/UyA:ka ċ_XJ JT5y(pV\nW\Aϳ\!Z|Ϋۗi ^WԹ*>J8ƪw<`H۔ dJ)g&D3t} 9PK!eBaop܏oGʤ:vJqO9gY! CחO??=<{~2X]qL9ۿnlE/5ak8o@k1Ӎf>^ʳ͹sUOjɢ,>a{nB9Cr 3 QB6f p:NBG!w:^sHS'/ uP&)tMw!vN4'HBi`j;QJ hpODGM HvqL0v<}rC`AQYYjbrYL1ӻ>3R$ rN#$BPC7ryOp2RJ9gR93Rw;$22'j:- Ɯq|0>gdY#,w[pz]nnn>eKݧ~~y-48#C0*#;DiB-7B^|d ]mwy7n6;Z E\YC 2%GD%(3=!Y Xh _@q5G~۸?jOe;7r\59'o}oBu?92! F0'TErt>( i,v\~o?|wr e%ҀXFep#st8p=tcУ1z1 ]N1*􌛰mﻮ{M~Pݏ=UR]5O% 4y"4"l Zbɴd0 _[M֋[dS*3\G`@ܰX.tsu`ri٬%S ώ5yϫH^Ik}sX?D3,x맗OBH8zJ() m02@6na }boȐd03E;teRǏ?`w1r}'XU)eDRbd}`$~Ǿs( e2 UIrϟ_<{wdOT.NBX-H1Ʈ7vӇ؃tWi?{r {-ȣ|~8S,u{OOyaNKVy,hÄ,b%Ԣ6?`]198 ;U&O>"J^x kڈ{ڶ` :d֧GK7Ts0`q%T`%i%g%)_07A3cQ̢t󯇴n#rhLЧƬ"`.&$a%nu!vm9)D(C }3M~p1Fͬ,V]*~ZP2+m;B]B $,#`~awmb[NT0I9;,jTͪ*v]]b `r$A) wC:O/qH,0L DQޥ;;3,H&D@Zĭʨ`fo4 a %83 t=P!K YH41A$sa2rٯ}|̵֜Acgw-%::;w3"1el-cctFcř׆mi~mOMsGJv*x% |@x?%*_ RSLUfѿ34p[LJ4NI+!&Vjfto(Q2`f ӌ2Lgb̺;DtL4O̶m bEb 3}~I="ӊj{qHkO{gE PRPT|&f؛Zf{<qiLa""E%cxMK_eajD ޼ܚ{G[ؤ/.q~^/y $+ mN/Hc[?i_3&a40alLe}gЀR8J`n=:(-Xר\jהw^'2{]/TƻGW:4*ޥmzn5 _ ~qE`#]TTE'UJK^Q+*ѳ7=_%zeDd 4ddPVADH5AAiVil2KQ7j-T rGl?>>/g݊(=Zs75 ِtF5ҙ\zh7:F-'0bϑsP~9 5B~WI6uT IDAT'Pt3z\]Ĵ_÷S׉[tse][kٖv9{w1Ƕqm Z8MRtWSX ɄxH)'^)o *)c޶/omllS1R9 ׏BDJ)oN$ȐLfZݓs@ɱnF&Ѷu]u]ϗm),92;ddjbw=MӔ$zL]]F&ȄT$r,˶hlp@!3D7bjs;ݼ}wԢXId?7@z&Y vpK*Řr kgj3>s(;''~ ^?C񻃖}^?7AQ}5!܆ {P4ɡi7fPaÛ{zFD:$/myyyYK {)(4!=#ҝ)2>K"TWMRLeu*u:TnLefk`2#~<=?j)CDÿ5{L3"WrRDEfbJ֩b@FuJ0IzZ3b~"F7eBEmC5LںŶ֢iضn/[.݇>|, .Mlŷ9s5sWz;‰D נ}y`no{/<۟^wwWW~ױﵧ$#iB?3EYKB_/[ϥ{_{[ 4iЦY8ǃ)z$%pԊ21#K8.!H*E-9j4[^lvim}mS{FM! WSIQdfQc6%J-56eW{m-ӑZwAO{*`2dw?@*/|\.}/Z{ݛA4ٽo["b2/e:Ng_P:ᴄ~*?z"}$G\p/>߿N EXc7ou@|o笾`*QRɼ洷Yf^G^Aџ~ )ԛR %{Šd&?Rԙ(*=B-{[e9'bSD&Z$@ٛ%tw2 u IDI@\jcR@6ϵA$ ޢ7JѲmۺܷG L Ad]W}:Vt^tp@‘=Tzmٰ,ruk%3[D3\܉woUWV 6S&(A$-5IHIo}].O/͛GFXxm[.Q[mnno{+.)hV5z ID pA 'P =HaXtdFG%?}~d&d(uޖyU][Dd ;nLE@IHI[bXÌ9@D ]©2N̒sAz4F *(P;)ܺ|imSH11<78cXU*@?. %iK1T2ZLhJ@BSH!k1Q|9#EsjDPT.Ļ\:Ustlm[X.VlkD$,˓gECIZ))[==W-@A jK48!& aD"*Rx7tP̔S1J$" %j1Q*Ɍ@珟}~y-2gϿ?. D" a`# 7lV?{`R菄~2*Zt`^WevU:$\"S~,0;?vSԝPo+#FSf=Aԓ-a㩖*TR0:۹ o=eaơ"61F +g@h*u<XgRdsVg-C-u_:b@l[{yy!5#㠋d b*&b1& $w%w7t>LUU /V͊Go":=Aϒ*fpOq6UAbZR4S{XjQ&)Td/}~eyJ__O~cDz: 5C싒  n@~#!pA03!_b1n6xϡH;:PtH~wUADSZ" LuX>`!s=T +!EKxnAP.SĺVO/³QՒMk(hLEfkW٩hpRe:äմHdHĐvIxqݖ:2UeϤ)ZѲ(լ04ML1))J5PVHd LT]-nB+D@ݽ_.?}/mE`=ꟻ|ɦȂωj?jq̾w?aěyۀGZ7_PWi^:^u(/naτ㗿ʍ5IԄtwUns] Iq e0 PAD2>{ 8yzL24AދTYKzFNBkߞ_Ъ 3[NBP<)qT&½R|z)?.)*THx[GnO C{s7487g5ōI+}oZ@x HUc:IZ|fptq ]~wFJZ=Ut*>:L ;vt:ZU ƐB22zO$#\/OTM10aBST3QOtw`:ȎIDF*tNƢ0FڀH-6ӧLJwX'RZ'U8-3 Ls9RDEV('% Y%ò.u*kf U0vDRJ2$G2tRz4-&ul{N {om O*DwϿ/ћpתcj#\.Jo8+?ɏ?/Jאěv]Z} 6&׀kƫcaL+똻HZw쬈Ϳo3aӃ QXL1Jѱ]MJjXʤVҕ-禚ƔHjzoƕ[[u{=?|aY/4n 1P^痢 [,)S={sjдYM 9ѡS`-O??=/k `&QDڰq1JQܫD= bl#Gg,e`YL4GOi2SSӡX״wdk.vyIa7r~|TIF88Ƈ=,XkR2%),ŦZQ1"R#ziUbD5zO>}y]V:8,+{8>zݓ9r2p߽=g5+VLdUGsiVD|/ӧϟ~1}ozpfDxg qRd+S tԓnCj&zEERgDDPEA,HYK Ƕ8H52NVLd i 3QF!Υ<[)=rnO/K뽚ݞ8Bt"<9§((_Ӄ0\=( :\TƠ0fՊŐ{pu]>~|xEhZ$ST/f؝+ tx{T&7X@%:|.{IUU󎗫*zYVy|_?s9M,mHQtRYFl:أ:TZR##>^9ڹl} o2wo/7w!|ʕ]|CN 2K&Kl1E`BCחǧ}:̞."&D$l"Iqd $S |V Q QѩiRU LmS(B0p9_<nMA-d*6$Clg+gf*XDgvU *Mpf,˺ɦZ(_AZ)LE `Bc )faRʘbZ"RT ??>>sD/i^AF%3Ybf 'S<oNXbP`Q)c_VjTDO\/O߹?NCI(Ar7qÍ"ץ+qR\xI4ym_*OfkqUx3s;RaZv̈^~i@Wqrb:m/eyz~N%Ȉ2P*)f46<@I4( Lf0à"NR~@qGduY.O>~J2~>ܖBd GUB&DDMtsws8nZ("'Bm""3TEuT  > &ݕFX"52oW]i:`oSբԑ̊󄙪";@>ΫowrjgPOTnh!$TdUcj>oonool30&JN$zlP UEMzRrW_?_=?|GV2Y#󵾾_Ʒ_x[kėykrc ;,8F)Zv0/)_F5#{&! $/kA@YDȤ|~zy\aBzhJI1BETݳ7Hd$c% b:S)FbfjCI ³"zr>_[k D]ѷYU{kk[7J =="P,N*TdfrY+ Um2Ѽ3Exe}||z~zMLEAt8+nf`lj:G d"DDUJ)&6MEto>?<<'Js"":4FG0P%孽!JVt{9ܞnEj)jF (FZLDɔj"PԎs=o >/ꗗ>~羭jrP]n2D3ˁ||݊v{N^CW6ooÅjﳇ=sfQL ʘZ~ S Qֹna>ԢH* AFDǀXT)45^]8|Ǐz~~ Z jk8^&viB*Xt:ی-DKw&#C:t#C4;L5ÌN }Y,˺A-Xf7݁0,SV(*1&;z"ZkOO˲6vI1ֳ>J5&[gz N[+W+x^W3aJ'u">D=, {9a׻z.i߲Bd#DՀ +iw,ߟٮ#L;ہ8dpuR:ҟQp9 _Zķk)LrY$d?˶:\)HwGwC"3<RRJs;?n.3&bARgjdFl"wcH"ݷ]Z(KZS0:Yޜwf+kf@YŽ#g:# J:}[!Ȣ%Gz^źeA^u ifwww޽oP ^4@HewImH#3ӣ/˲\ܚp=="=L@HUU1Ni:ܼ{xQU#"%=)9%>~ɥw 333Hrmm[k|^|K<#˶ӵmv~La6aM4#A'gtQh;9涨UeƫcZu+ < %;ho&b3Beu** Tu4f#A)$V~y4"EԎ7n\E*wy%!x)aIM1riϗrٚ =9$dx%ҚʮNHfۓ͂ 6VbH,Mѡ$KNH6 UY\֗eݶv~^/E*lj',O)҇W{d蔈D(jyZxHkk 憯7=)DG=IQ!؏̿Oj0QvL9a#v~ { 'Q0%BCCNww߿s&z/!"uj =D[M-&Sod'˚宔g/˲-mY/5ր4t LVg_}t(`;S=LSn[w8 02-dz,sl}wo=B 9;2v#~ջۻj)=)ERrg@-%,eYeYŽEdptUU]ײy1C?,3Io޽9eG!)^~g&}0xJR%FMFn |.s}mm1咽jiOS?ڴ=CAO8(I:ېYmٲr?oɛ"$XJ`YDĊ%Q,&5@yos5 1UڥZ9F譵wt˵lgU2kŔԑX_0rӗm:`dgjOZc J#E]0`i}мEYw?84)1F<x2DMTe=0q7-ozZlbSY̊SE*ZDA.!i1[q~Y^RG1_ڈ.J-m 0,,_^~f7CcCRVXfU@&r+V3:h?x`dĹ yiI5a3#v}\O!E)2'Tϩj-vy* RJqGDc^^UKe\bZr۾m$s>$)^N}lIHZq)"ŭB@8{㈈ CI "nZR~A?E E,Of52 ^e=^ˌt:IsVϢ՗=9g j"c+]T L_߬jE 5Kղ-h6RshA2~GGFP. 8-cB-apٗzڶj dfW )UY\f}utCHnX ],tSDFc1F֟=):sod7H]l|޿}{EPkU3Mց2 Vu#b- Z۳9"fP+3{Ff%y)b%Lk,|yT+9`֌ի:?q>1("c[k}_p*?#0J-sde{Zf 4ZՔHi㚅03|Fu )6q-ͬ.8RgO_ej"@,ԟuL d$R("\&Iaƺ=}\ul[xfd<3Σdik*svrml;m׷/[h%AUū -PiRT9G(V4™*3SRMmr:y{߶f4@-UZ% Uڱuanp .{FFHBD1)݊or>u`.@Ug19©*ԢE3u <ڈz BXa8 BtZޖe]׷Ⓨ#^l5B A8I/ wQX0bh=Zk\j$M?9"3Z "m$tRʾvy;mgR@KHj^hcDkGV#2`PIJ$,nD1bM.L}$DfyU &$ɈT5$YMR7pO3 )φR<S!/XeRQKnVj]1RTm*DwM/ѿwmYzP9*!R[jYΧvNu1eFуL󥂏 L+'6$(zx9D"G>?IM"0#cR=D.tQ5H|-˷ۗ~= 1G)׺̊iC$I3P%!z-3{laD΅9R2 R./˭ڤMR!)cezʍ0 ֟h1MΧD3s.ןniR9>cW9/N;@HQ7䯾&7s/~쵖7)zL; 1YlG) U*T 棷ጪquRHR:KwU72E "$HjfOe 4z}߷mNZQ@MҩPW9<ŽgybQLe TmL29!.G&J16"nK̶SULi8~?Zk`Pё"fE D`5 Z&\z=}z}sn"*SDW4+d0SE=8g>̑$ ̅kc |}23u*,~D|>z^Z6}fĞO D:HEjMXRxAEk1Z1@fddKGtUOH,Ar:g. Zzv{Է"uCr^'O?x`]}-.y߯m2!*KZdY r#0PT7C c&RLK6?dRܪ.R'ɐx#; 1#3KL½":x~`z{G룍 Ҫ #,E)n׷r>ZD9諸b"X9.Y)sBUTTB\ aJ ""88"zƘP皓/|^|9HSW+LB /GpBN C"1Fob@r S|8]Muj" By7Y^|uf4B%T%E_4#';`1ID;ȣ C%RT^J|Uz/w-zދ"ɪ۾u=v%V t ֙wo-5X}IS|au tmG{q8Pf#|b&ibr;KuV9B$4(]=9.Y,b&Jq[b FJ4 ZX:X3zJv}u}TNUa”BܡO8ahSUCvM}/DҢ 1QYDj~}_Χ\̔3ӌPR̭scNQCe"#GgL"%eY`~r\iJ)pjK-~ڶ,~KR-5]K)-4AՔS% a6W0{/ڥ#ń}VjQD 39f&_ѿgχb@ĺWq)/oy+KA qBD:&N-fK e{L17Ȥ>꾜/d"uzޮyWUSKρ&TVByȪ#|Sx>3Ƒq#@т(f#R6RI֥z}.1NS$SS)",h I-fj5λc&ry܏v@EḐ0{wD's^V,$DKYrKs]vӒș!tIȌrKLj|>(2c FD"1K1QWW71a7L$0DQJA,Lv}]nZV{<O l@*uzS<f8dV$fb)#x)Ќ޳Gx>DNҔPZJE1}h¶~fTRX1d7OTRRǿ#=`EXu~}_Fd0Bi"jSK)T#ZE"ZD67<|]l)*YVNu?y_vz,{=CCʒZP]wFQEK}U\ G8GeF QRtA0rΝռz]v};gu 5h2љ2MSQs@*ZU*2'd1hhU@$V 5&Rf‡Z/v^۶Q)G%Ŵ@ u+E1RQ0^ u+JSfo"fDg7Ubڼ & }vAAFϤQlBSguY z>~/l|/K!,4QE}FPHA(TWDŽ3M`, AG [kcI̧G9[t#KG1y*D>~ǣVOIDATShJcn' U]l9oo{]Up8&3\=e_piʐy[k1[%)C@KӰ+bUz|*BSmаSp͡<%EI }lV= Jw}!chujN(<3b֥lW+:2[;>j&ъJs/BXNTIP~l'~S\.<"[o0$k׷:oM4E$ haъs'BL\i` Z8qր6)S%1FvQ5fi0jI'j%L[LطKi[}k?vEsW]t^^#eP$5NbT-"խFDj%$213E;qaϐѢ<|ɜEt&/U_ri&I5~_G=O+>#T-v󥦌D٘&,m2σ՗3%r矟be#%e<5uJWqWhj߾~;_i^NY%eKuTV/EQ/*&ً tM1~&gh Quq=SLCRͼe[\Xf ؏Eie# >naQZ{>SMT xqrMDg "). w_r>\TV EᚆHs1\LƴXج]"-G/M= ƈ(GAюHNwzwˣ TvPdw1ShmbV1R9?O.'1m\LvfRC+fbd{Gdƈzx<y:=w!z/\QF cc`"4 (P^u/og͇oMej)l z||b%a|*GH biӑ\~N}Y`bńh0YQZ5.Unżd<[1qoYj{Gփ=#,ze =b͊עWzB()hO:4 H"O?FDd MkwAR@ĘB3QQ R?}}lUeeUzܮMSFdT(EdG=FG=2z>7AzQ43sS&S0%]T=7+}]XN>r4Q]eD]"eu*R4Ow([lQH[}$}\4"je9Z1d@ ;ɟ.A.|ŪGch`g2)7UOtcXA ,FPԴX9y?c3 yvm]GƑK`؇-լdliԙTRSmr~mňɂ VvsLI]z(bjX.sf>RCBFZ{I1X͈v)io]NV!Te-dr2(EU+EM?"bX88 z" IL8&gJd XX2_WYO˺/t=]֋LեVt\4|E $(LPT 3"8I9ddvfdP3@Jp3l?xw< Gȋ1R2B$VɌ 1!9bnZj]h(zf_ϝl}}+3'E?srq@-޻g&0 h@EU\GIENDB`dtkwidget-2.1.1/doc/images/blur_window_demo2.png000066400000000000000000003215401352002233700216440ustar00rootroot00000000000000PNG  IHDR,," pHYs+ IDATxlkeYr>ܪC4)CD@YLY-2/0 ,g;&Ƞ S{y2!׾#v9232"2/T;f]w>y!r04xӯ Pm$ᮽųJILr0r 9M[0m 2hd0r0!50D6B4vR 0&  'Mc%A@4-,f#` 6fB6Sf( ɖ 0DXXI2@ B  :$ 5)iw˷Fkƕ4B^+x aXgp$@ ҙ PKdFAżHy{pc; I4H.b8# x@O1o @iC [k^/[?p_imEpExxݩ4@B-G`'nT`4[`q=$r= h棽aڈ`jy_>EhaͰZ8/`p=oӯN/o|b=-;B$J@ٶ31LrV: tp;uTB )G`Pv' ՞^ 7P wXl6K{/^K}lRK'I3 TZ4Lm{r\`ly_:p& -" o HRH UH؈$L =YgNj&ǬCҬ .,D @,{ D :1 +B0h8 hPgi0bnl-*< VTI$m8A8?M^F&h"~&4;tq]ЈSDžL i{S@r c0:Љ.6PU RS@Ԉ7dk7L>%n-*0Dš:q:1 =lALs܈ +HT}pۇl@ͲMJPE9oq:η_}W?DLZJWI"i}hox}xx9^q^YڞgʯIq.nx¶d4Ǘg:LVwH2ɄI$MVL֋r!n lARA,D WA+ (pv0YpHM6pCnJDCAF#؀mJg;@ 7r l2L3l&)پ0Z`CUri6+3m6؄ܟ&! *`UnͅXD:o3ȄWq F:2YWq@ PQMl-4 6lu0X'a!렫2'oKq=LFfK3mRdd# [5mtpTB/ূ:{w}?ᄃr\G:x J'ewe`^|lPG_e`!gW:h޿{'loC? $hĝ-E"ޙp5ϴP (uB L'l̶!Q9HUhXSp'3*Ld'\0PHQnAìOb!T@ب b Q u°9XҼmޟ A7-Bi4&I9+ N7獴hd4 $܁8b؏&6yq9  X8Vŝ)gm,ٙYژ7srh@UE E ܠDp+[ymOǟxro /K~r̤!XW/_})lM4R)SEnkxBV{*&6aNDLLj:CZeN&i[*5b b`{ -LYݰ(f;T fsBKL0Ԩ t$CuH4 nuLj­ލvWm ^0`la)XbZ6 SZ0FA ĕq: pبeg2M6 blyySHn??Ŷ^`]fVcPmVqE{42sdAJWoZ$>Pf@522 i$r;Ϳz{t[LbSajj覆^ӫ/|.2!7Fk-@0.v:ciW,b:dfc`d^L`lcf-Jl``&FuL2r<$"hE 7t 茊Aag:b̶XqI\&E{W#, LA{ÿox8Y D]a22urQB]^gҒf>cb>mBTc(9`ZD+$0jY-7 TH `V^% qøj"1' (Q Cvlk!O<>E(n)K* zKp"j=1,&fhɬߍIڣ۝jó(!:7xlґZ`!VAj;ٗ5'~n&*|񫿀g ތ[gB\ȅ52Y=?D0ɇ=eb?p$$9YTU?Nt"5/q3sݿsD[IRJ!Bvu_~{r* bL@8٤bfNF",N EO̗p]GQUGξJMA@u$& }#6pFf;c36tV9PERGX@6‰,@QVWdž"{ebx#aւYӉ/H`70;)NL E&5ArtN nm{t\}'ѥ0_gCcx>-qMnp#HlECTځfnac5/~ HV֔Fzt>'s/E`n+~}<}zx=a*IZryr֒3'2вE3D;3.Uch4N;K7Ioa=9y@) YpbSb*o{NkĻl,d۱< \X-MdTw4L*X;q @Eei)P 6a2Hy)ΒLŵ6TPS/o%Ose:Tp/mu?~vY;R`3 _~Jo93i0ak)8D*ղ4W2%$%V,Mz\)Lw|_r7?y?/Z  7#_|Ώ޻NT$]b̗ZO 'nJ}Le6B Rql9#)ų&EVM9z}N0TK`c "+tR5h@xbc0Vr?oPe[lhA\ LAL\#ˎTW#Rt؉i"QPI1XOQU:*."B3lvbT_*$]@ G82?]&1@ ]s#n[3/`w'.=T]tQXj0(OEeةuHV D俊X簨Hja92sD.wryiu>y|x8WI)cwUȿ<_gܣn^ F0OBm.OܥdL)'i^\i(sYXlWBf^paXLL۝}$KCfv>/Jp eAb]DKUV/;N#WRON7F,xI+ia`WذGVR4D(`nYsptx8;wPR.r=f߀C\}+v/ D3S,vpQ_7T*Nn m!~R%Vyy=c ƕ,w,e=@7L'ce'˛Yb6\h2 (ion]9X(-"Nvh\m_a9#hDJNmN4xWob< >ci-~^l)0)(bii[uJHO KH<\{Kba JT6ac#"6EHhja&n K% ^OLV7 "rj99d15ՌU#lQ A/~9͑C,l<tS䱢xZQL\GC7f.ň/ͷ.AT1,խ'<*3u@`bņy sQp_$e.jHxr`W:4~rM€P)42zN gϱ7O)h#9 &9KARKK<pa&Ȭ.x|loq.ؙXuI0Eݓ3KQ-Dgk-v&bUUzoǪ7'~T,mp8X&-ԇO}b{|lrvwZraKׅS/=$g';`M>Ϥ޽N;ʰP2=:g7Pi׎$XAAeĴ%FY=Y t )t5i45'v4ŅRm)#Ad Kqqvs6Tp%/mi C4;G.t#%F[zӮ)%@ZV4S.9${s8DiOu@ )j?YC)Zg"lK%5y >߿pyeF:EAauVŋ_ݽ[fzg7 MQP$nwi3KN:͓똯(Av<`?.2(.)vn\1#6O vVVd;s#9 7$qU֝=8L}Ȁ!Ul]O9iDT,ߌX\dor$Չa %iyp'^Nݠ vr'a+uA;Djƶ]} Oc8A;He"~g),U{x뿰NƵ60tÜ#C ċIxVxU.* R5x9 #wLSHꞣghȾbXUTt,SOZY A&p{=m%XZw9SRr붝Ϗ lHN"5ٳ,."۵{{nq<]srHOMO|°-"&G9Ͳw Ш55K9Q@ IDATi*JXF:N©hdd:aRGjUK8C\0|mJ~h{XӋ3K,MQ0|hט P.r%H=@Imw4LHf|]q4LT$$B41>dzi~BbQ)3w>mn7eFJ7α~!/|2{i*آc$ dfwȁ)P r0h`y{oCN9Tlm\P0|fݳ~eˬ^ ݷqyv@Șj 7}C:fO;>wœL4}6`<0)j cS~^xp]W d6~kLJj+ 49|4)[#o﷼ݝafn&O5]Z!#L>NhDzأH?9vO"Qꀉ31/h(qrwE#`}RƮO7xV&ӬDӿZ(H9eZ5,N > H8NE%.+Щeb?>/u rKܠaT>D>O/jI ҎDnݻi?;ݵPh1mZHL}M_f]4Qebed)Iaw2g5(|'ߞBn~@@Ԕg' .Ֆ5s܌(2Kܜ9.|'R.y\1,n TOUۥ?T7c]Z̐1pl Iߐ^:֙6$|^n/yt3g,s6RBT"l_Ӥs[et5Lg_{. ݿdCp|i#9Js,\,4xp8y8F$ QC~/o?ؗFRx=ښ2/w檀'k|Px;5=I  "?U` q&,bw a|e Rʞ6F}īFa¢#vLb'aT~|4rS6Od^~XÀ /Ī9L0jicV~j-/&39YG!0eRCyCC$F ,gj9-X-]3ϼPr} ﭶ2-^wR@Ok^ӺzʳvEkk ~痾[Q2g]5nDuE({0ݎ]$Jq7{6z@ͮd"X nc#iiÍV5nFAC/kdTF%AYwηz.dvX{'2³\)=Gyd M1;y A>3kKw~ozs~8\CӢd]Lm<\T%U E˲=j⶙\ewxvU;Ub:{L_L/s"\QPvx9e?={ X L;Ofl1R!6*bEպU&vD_^) 6=3GȨK֟*L{';`MγB8ĜXsTF܈oX%{AX{µQ+]m:*7?*@OӏnhB(ۇO_2)ڑ7ʏ hjQdi;Pځ7"BE~2D$9hR 0Lskݿ_Η??zF HL\f7ORqF'E~g)rp20ykF.9>{58bnTMrμ9g^~zyY3 Ax,Cו=̟O{(A6 gP9u  \/ok7Q^5+Bh:sCkcӕ?ׄrr|,Y`fB_y>S3L;GMQ B g^ #+hL7@q_&셍m?;%b 7h}x㣉u]>O0CeҪ_7ZNgbo`6A42P'w_r:p&/וXRNfp^sd(CjQnti_Çp:N9ݴxd; :S~T7[V'Z;Ղbf=GG9g0:eOInzIϖI T>k In5Kn@2a !-lE6~><lItzΈ7ʒd¹l( ֏j.?=5e0Z]׾>?m0?ޭG,[+bˬ93d MP]H Æ XQ@ؖa-Zc~_'0 "J$%JTOO_NUvD!3CۉBwd}厽#VBwlGbD^*WSTU16=~O/Z6,4Vm^|~ӥ-ItCm]fm41J_jD@v~,d<:{]gOBF|іX%,0 EqYH%+qDr82Х}^*8pgP{UwaAhB* ^{ ӽW|!/se*a×7qƂK[gFԅXM hr^, zRqrOhB)$0{ ^2Q{IDB  +ç| IIh zr%B\yPt&kk۠m,?c{ZVSؤMy/ݎq&_(ƴdF qw/"$  G_x "}1㟗P}}(=_zNP5}A/͕.PDwʊc'=?=@67P$2 |Gr*W(Ql@ES@|\񢖷҇os^D|pX_f5ldȜ;O H)"C 鎢< #3D jF;.m׆5f.B *hqv)t|٧NZ8鸙5@kwdxǖ>*Qн71hlVD)=–%JG$o *h9jU:`;V>?߬\PN P7 ޻o{Zbi' ,CxUro\pt3뚈`IL?.bԭy1o~{;onon UJs %"PS^ZdJ ~8^gZ!2x A` y>;ySTUd(v^ 1k r4 qszUJD*41tomzn't:LHQ,֨t+G:bD-ZKQN\oI]WՍἕ~~ $Ty2ݿ6"`!GXOfs>UQ\e0 g{$!u]ѝՓEkg`%®Ӂ5w ،ryX$E0-25Wt25phu+i K7T(֓UKJ/bC /fK-;[3LOb %+hM!*cv&GW-笉9J>MzNjΐ4 hc;HgJft!Q*$'}I&%$ؤV/a;юd '"}d$٤S%HSb~q'^t /3a0+q?2҄@Xj]J^ÀL(0s$ `Ÿ IDAT!HDA1t Vsa Le^Y?Oo*HV vl77s:e(E7gja!x:f#%,RBby ijDu]pBnq>>GfzI6h7"֧az? O-<ěDHȨ6\Oŋph '5h`#{7II5 !xr⌄m$M/4|g돲n PH1ReX2) Cp[&QCg? Fc4Dh@ܧED鏾K~)$X"":5$Ok`J b$c$N˄w)?]F< ̭?HD(܂AeLĠp*r捅TH%'j毬zR6,dJk $BUd;{N2)UEk0j\s8GUn6mv-I#tuPw3͛矯͠%H`ʦEnϟMfV$KtHDEK͂ Lϴ*W;BMkq\F"Pw_M"najPhIKX""1@1clڹdB^pHG 6"$"m]"\o]'1Ej-ZUBҦ$զ:ܖR$v^mm):</?qoZe?x1`0ґsGRR5Bi 1<Tb/C RMPn?yWJLtQCB%7?iAuH3Ɗ"sxCI&TrukMe*ZP{r>~|Xm)R"%H}H2M@UJ&ZG %b]V?~7>wbEbշy/:J8.D yC>OR&y񃉠 wBKj AN{>b]g׿%li3e#gA k OWGNv7nSIxfh_9/O.тf>x)G?OS(4-s\B%bbଖnP5;99H(!)Y҇=TݙQNh0/BP AtHAR?F2 ͭ@ 7f~4#_M"CX:M,RU$#[ٖp< 1mis7;nE5(TMUqu.g{z}Ez[8 חrr, .U.A^}S]v珶Ƽ2奺{3G?/]o U(fOo{Rb`(ѣqnQ}_-#ǃ_,9 WϬ(]sN[E\g"1?t*{iU\]\ݫGwM\8`+cn2lDuK"3L=S^ lPR#Љlݗޭeݴ*9kޑL["V/ t:P_sN&no8La]B 4rHGǧ:Z^A]^DG&m4_>ή Wݢ#g?mU }j_ӗ7OA û"q%\ZDj(9vr\6 q,{` IHz8u)eLLp-G祜ۢ?Z*Bx9$ug"," ºo-$o,Q#DF;}:l=^4WtBDy8 ORj-w0CDYBV` 鴼~f+P,rymk*[vݟg\+ *brz:ץy] ke{7{out#Ƈ7v >?xI+ʨA[2=sqPaGWusF<˟'SiFu^PŻUޮr:);&luC?< T(`Lw _G3 9CF#%H6 r!,܀sN+H:5,w/HDw?@@JȠBcm~2!䦸b ‰ lvTdfͬyJ9M$LʖuS"(pNw;\ZTk#*%,:#{yR nyWnZca}/Je|"/* W-cۭԩ(e51јk mtJxi &R=A~~~^`'sۼa8rcb?̷@e`IB)ee|mGgK Nt^| . ӊ?mg:̏yu{%a62!fX̪)[`ƕ" h+k:z Q:X= Dᎁ(Omd?ZB4I{m]ТٲStRZD3DDXHPC(0vR*rL9F}Dne\D,h8%I<%A JiRB{ /H Wo+=/'@B*[׏v?/?z`5yovks2hBϓW/6%-̓C+-X֡9J$;AFKu DIHX ρr)mLqjHhtE $=ѱ Fݎ0J o|7aZ:M2Uf 1H0j<ӳi=97/S}˺- FR-҇KE7Fu{h7S) x'qٯ@DjZjRh뚙pbu]\-j;}x+Vp԰R=(v`21 u~pqҩ2GXI I0Wo_! x?A( iX rZ;Hڬ9j!6om{+om%MR?}OPŠ9F[Un`$w"n&/v[3R7P fzy}K0e"_O-؝kjx {wd۲"}~PZX{9oF3`[8%g֬&N;% @p]YdZEJΙ>,`\I"\#܃aE4P- H[ښk[A[G)݋wywSo(sѩuǺ2Q)BJ!aP4!޹,r|=5_Y fIDi ˷_sR6~#T'K"Ha8lYy>{s4Cu6^nE{fx80V_&$QIn:TSM~cbPe W0:iU6S*q%TJ-@:–Vfn᫷emʧ6d+:"^_LP!Ue I\s% F_M,|Fc0ylX} 1Kk#RXD\DC:8@Fc_DI!#= yU9JA1Z IQS!ֳЀB פA;r>Ohfk\@ N~sbsw衔tR1 @Qxʻ%@#i)" :bm9u<=Cbfa>TJQ[zw*2:t:ƬbІNw^^/77nN0N{ni&K`vjCWa:`}ѸWg(1OOFbB`,r"Pd Ѩ^]ONM`գD,nݴ/ė-&K -bwL2-֡ R 1<اt^PAZ% Yd[ыn"ɜ˞ɜ{@7**VǠǯO2O3LHQwIAt2,|=N m+a6iAh"XzI\ DNɡke*Si*w5)>[&a"l͛Isqm2ʡ4 &RRULb֝QKAqg4֬-tZדpa 7QoYbY^P$΋ bHrS,+ !f hBPz\tP0D\T@zS4iv+^B@'n.p(-~羮_}g:pWC|{vhF]2 li %{"Mrrς ]W4&!mx |v!d],5f^Rb"̊fi%&aSXܚmZ,'IEPUAѥJtYMJD(HJ)eLu-4***%93_)yUC=0b :FdRD6ۙB@!5B$Ljۊӱy+RLBW*/Q6_:[[ڑf Fb@:K:%.rI.{]E4/0bTF( %B ,`Ϳ?"3  M_zs_/_}gKGN0H$h5l oe44~{n1A4Cl:ܯ]h sM3x5ҽKmajѲ.3[#oTͦL UCE~遥eq]UCBMA/QUl5DTFHT8ժET6MABD ҇t#V=x>[= IDAT{-2ϳ< }/%Euk4mlx&=WF_[+"HOdHټ{ۻ!cd} +"ZkC߶hQcT&d*,*sgQKNqucVx4(jUdbۚa`hp8+RJ+C#FX[}fLTp~Vs UkJSԺQ-\()[7pz>T&`&@޾7&/i B"'Wc_P'rF#Y; ,1"\cmwO_wo%HJ7%"`e5!@{q͑Lq90.ѻBzb"vov^IvwCGt&cLzsOXYou]W:oLQQeu]IQQhtOAAY}=xng@DxNet7PD э@Dw3:H EK)Ud  FŽןyKK%I]L4.iWGSI`V՟xo,ݑzhtp t 7x ?n){c9H|94e<ySyd1`NQ,&*ASeb|/a͢%4Fl9"2OtNp>-aD9m[C7Q7*Ԩ[7ۍ,$$BӟOv,XYR$Hx߷ Y*rX?!#g|Q"t7I[{p;-V4D" Ahz F#W$I:.Fx/s]qk_!g 'Ո1&j®GhB567!|o0ϱ@X[)p%BpZNOz8/nfn9ZL2lnko3ݲ=k;;9{lK6b( {C$#@BBbH ~fğa.u׼Mf&b bg|{˂swcXJ^%`|\Qpu]_9iqr>J)܁ Yonofa ^ k}ID$Ls0yqp:YVH&3JdK.m7f$FEa,pit%g:5@;ؘ@y ,}\|r { =fýnK'ʀy0qq%P v< 4{9<@.,Ưjc2&\XLdpZ Ƅ-cW10;i-'oշԆlg1+"!."C>)GNxT\$T&E]:6}Ầ:ԏޫrff "6 g锇8y.s5RF1FệOM ^VrRB 4< CixcbQCGBA E7iA #()k1ʓh|_^ˋMrnZ7h* L9c^hmL-Odn=T<"3(5&c6-i+'w3M5ݬjOX2>G23sŮ Z^_pu%u ;>"Rˑ<F@xRٽ!偓#q'o62~yjɸ@VL{\> ,p3%Z^ v1ݜ0O8j)TTHDD-_~ͷwO?~s3f qY]q@p27N!^ie8q8뜧9{1WS]P5E5%[^u)XХv76R]vܖ|il;//9C̝J^`Pu/kЙ8́O/+=˕4eK(j͸xMܨB= 3JVd@fVJQ Ptœ0X&n7`xc>e"'_8!bO|WvvssM:9LO1HB?wi<O::A\Y%P )*yx|]Fu.=Y 5ru#t|.pJ@Zt.I)(zXHC~83b0FƇlG@Q.m;;X[u6ۿY!:‹Z~@Jgi-HQ֚WDtj4՜'ˎ⮆ [(ҕJum ϭ}|Co`“oA28W2bɎY*J|IIAR Xt, H-Dfc2vsE!~omcs % DFG?Փ9za;\X<0c+iI?;و% !Zfu/˷/?Ͽg]غ DlVFdd 0aHRݔ4 <"'Ӑ1LH΂Xrp4vb,L)*!'| DP3jm{v!PmսP1%eip&h !{g>,BӋ EglI{%ͭ4&)-5p־B]uذz۶.uiWEZBr\NN BM^jhw=XPN `L-eVҊZQ%JL@>t(!HT=#n}YiZ-"[DCɩ!ry)$RB,.jbj)':y-JRT3{ B)u"3:cSNcE9*D2kf0OTb-`f1űʭF\:ZZIfgu#z5bɝj?_t]KŽ[YVfS~߷[G %Kz z+jJ=*hgIZP\DVUh\p'{s9q;9{P!U#1fV;Zas*(\8qJ1v1JK))&-~ʻLx5@!p'=QIT'm T]ÃH#BHTͽp¡>tzz~!ZD[n5Sߧn#1B,$Luiܳx %S݌\qzy>\ԂLR8{x+1DDWKKV'L.tHzo3-dM}$MaJ#tv˰ 7gL)GI&l$QTB x% ZmBbyosu[-sV Ԝ3Io TݝnjoG>T"jQa ; 006K1D!ȦI e/R<ƅQ&V2[KYr̬e[@ڤK` \ s DRp8N]Rf ʌ%\ 1u]]{*A3U4+teL^0YDk$أMo4R -k[n ^inV[`,/E3Jv Y&3o@ej ~++6ӫ~W?8B裳wV$iA.jĒzNiiuN9ݙ%j&;qO j++  Bm@ 314cB 1!/Uȱ%%~H ~ӓ6H Ib۷FFLAbm^Ie<7?i8i)! BjpLR{kb5pN!֤Ю]섃[D8jDvx!KͪVK/I-͝)} HAj(2C5X/<e|x.Ox$ޱot6%X>?'=LFDxaqd&L:֕\ɵ\E:Z@ { /p[JA 4rD<O痧 w^] \LZǟ˙)Ĕ$c1np%h9÷ǯ0S 1fn h.i5 ]v~CO!"\ۋC`adh$xYt㉦S>>>?~~yi:>zCyy?|~eVi&Ϡ#|a `4W6"`Mpu3<x&WhuLnth SaeUW׻#l5 7hΫ g-+[ZW[b}6ĐbV_@LF[}U O?6ͪH6s8H, h'P}zDjZ`5ȵLA,@/3\~+χsNͽr/8sD :v[_jԝ9P(u)_ 7Wj;>p9bgXUcApvƌ(MJ5-EˬnY1lyretN/χ_~mGQTN|K(^`-6r8”V \aX֚6(.Z ?`?^57ZMR5BYcE~ih?󪈞vK=XeŦlU9ժiU>s$qu/Q[D"1 ~χ5GrFpꜢ`\PYZdY\V Q`2cmf\60-(ni8$]b:hMO0nacs 8H% fD D7ͷ\^)1n$&Zny2.sYU[x05101yzK.TLrao/<=oY6Luk|<0 #pbb 2dV1 hɡy㭪 gNr!mw}V_$B[n.щ3v- gvpNdX@awbUE/XH9yxyfAN,IAS*986]w{bnIBQәkSX8EϚ4ÄkIxV :81t 4Diݫ(I6{mEsqa9N%]8̔jE8(777ww7)$$脃 NJ:i^9OY[!dF$6s.ʖr1uWyonz{Q9*rH?w4g$[),k}зLN[kT:V[:ZGH w]ĵbr}[Y}Iun%!b-g8Wl?B}A28$`f4=4< B1BC$PXQSGYH`C`ZLb`/'s~= G)j4aGT`wrզ!ԇE9{y<8h0OfVt6D BM@ @f lۦnQ*ąHݲ(l]6`)y#$Kt˟秧xrhr,Ͽv#) 5Ĉ3f6 Z6_s{b jZ}؆Dx y-c^fQuI4Jƕm,İcz&[4 IDATՐ/xy}Q/ȧ  B wj+!?B"&t1UUStBjpcv0a:^qEBXY Dley叹fJ*"Z A$H/) 8<><^NHj5-5QaZ;BlfecJDć2jBxsooxuIƢ0<|y9~5$z5[v+ sv{o]wgg ! b`"1.|:~{p|.{-p3<7u%3D#j ~UɖwUFZ>d3((D:BgJLIIR)3/Ra/ f`%K9lS3j1)J -Ob ԧiʨk5Wn?BvboSظ'"_x-6SxF`jtL,RR1Syq+ƻC1unD`pH 7xAE8B~m1QWbqQ[OEQ;Y_: y$%\٤{_Eީ6Mjjv5q^ad5h^&saF"u-L~9I VkR٤D\akމNy0a2WR&޹T=$X̛fxB%9n;RۙJ)o˪Lx~FH!n˘uPlK6l^̚TfLjQl1T a0Ә)jQˎ_{ҨiC !nĞH*d #g,͌)t!vr)epN8fV&s-NT3EHHΪټCkva!*F/]gOd0'"A^kuCƿfi)Үy-oigd>VL zbՈ=IU:";ĝ9Fr-ȬOҒ"=Xm9^ F]6ݖ\$vev-QXBpfPDrQ"p/8ADPje|N3Ed٤]p~C JDHE"bqa<}{:NBH0tdA3abHbTf~ОS$CND(0 Վ^BD-zli|~y~mb f3سW뼥rEMZSL~ws>JPB",!^ѵi6/ĔB!!A [-8L_|m:/?@,,J,:J+½7F[Yu!U. eFmKf7Φ]^%~_ٿYOP5!U9XKB1;﫺FVwAlw}ۆ$n H ,BV!Tt|9 )3,f>M˯ÛW>B83a % f0NQyR1:I)ZQ5 Hw}܆cdeQb kI(#i.iEY!frODaq1@k /ž7mX;S-tKy2u !HD*a~ǿ<}9oW%JUjPuUZ.]"n57~ۻ̉UۙZ`]@hmyݱ/7kK{eq_njшw~*Dq.J\;𡨞p)|v%oӐaWTu1#G=)^Nx|l5EȲ S!%!GS7sfp)-Q)ǧ#uty]7=mR  N>OK9a1PjJQΙ4+#T_W?ς ,^`!fԚ1A`ȳMs4s.̋\r`@'0'fg.?|lRHAjC08k$r"Nwgy< peT3"Wuw99I܈\J6W@UBQv76nzOt!NpcR!Rb%H@VxUc{` "007ވX/tpR^٠ȡgV߹;l񅡯[]2fd2CBKX+']wsnקM%f&"'@ȈCpz:><81vvb,^sj%=}qz{j B fs+(BB)ZLjS<<7L48cr}nnwm%^^S{R]LQjϭЖD4rqyʥkVesl!DvfY.w7t]wwamY\E}:^~ȼtȖ< P2Msj07R& ΢ O(v}9v'`BY6x3BvmǮ?2M8]l&_:5@K*z\8_9Vg^]wݐ ,qIjk gհ;zM/jŃ _O'l(PH%Uuw%a6ě/y6J)4޹5n{. up6D!b3gs)4p8إu]nKXw{ѫ%lRuCjlmIyq1sԠyf,.[pn{s'Ð˰f%ŚDwcaa3Cqq:Yxa'U5݌ Bχq8o,n[c~gؑY^1l ibvmńۮ2+] <5/~ˠ=[1̛tl@7gw=y&V笲ž, PU@dU3-l&5NКAKE!PIxr`^N!0Bc7{.HKLdaVs%aIR]QD7}ʦ>M;n]YL vY}=&TNbruݘy&kp:N\J1YiVJ1eb@kIyB\UG;Yt{Λߤ.|~?q_4Zs^/L6F5ou}ƅ"P9q"w'54wqkδgk9;yP)5>F8k-O ՟~^ =!k^]JR $f429{sK Qu-˅ξç?Y#ښElD,y[M/-vfdsiWJm)3b5$'y{OfF^_ Bn q΁ L,?~Nlo_oƾͷQ^e6F JIէ) DH]ȟ^^9.y}Z\eUyR}rrђۊ 4<8 žOnIKMο~jGIۇr~KjClZ&M$nRKMTi/\qIgmUKWJ'=9_lv/n՟" %' -q K SIY*:-K)PYM9]ZТwSiz~|۸M `%C yx [Ov ]RZeL{m/Fż7sb@Aj  sԋc⤁wY[c3rۗ0?W-xܔv+nnڝva{\]Xi^[(p)?-q , IQN/]8ͦe5w2~c^黌!3,G )Q7K3,-Os7!&rl`p9uu^;zi\ ipVDT`Z}ozykO(/~]UYWR!lTڠkw<^e+ ADөn[z|Ze@X;O݉$݅3<RGv^W [MTىԥ1!5MN_qjWsh2EbFMo\ԴXyywḐqݺ諯4)ze5UQ5[p]'5$OCۯkEzw>۟ û(U8U V%++Lc?V+l9)SE]g`pҭDwY|W.zy_TǖR_y? bVeުe#D4jEe=+2L~Ibf\8_wx8A+ht|e6ݸK1"wuk2^>Rds/>?iw7VX ;}i>9~Y.}׻7,a<Ov{xxn^a`9Lt|}z coCJ5>,qvZ֗ܛWOD9i$]kAzY? )̞?Gc q Aޥa[bYkK,ʮcGs1Dݱvlκ4 ]r@nլbF]ޕg !r""q'uCnNׅl¬lEC/_N×o]'[Tr%;Σ6]N}_x}np8㏷&>Ğ] ˔aŇ#!ۇ 8ْ c13\չTWʁ&\+y"}0]eެ풆DD(E I$Tkp/G3-t3ѾÏOK٪Ь:On?=_]qY/W6%st QLiݍ\ 2T>_77SG_"_VE:&c= l|&3EFP.|E!zqWƋ# r^MN=4ձޕ<|-fM1ps%) P"kY-sWuLzes R9ϴ i9+2o >v!eG&v!S[z~q;@b܏622;'Iнe ,+ϙ˖6̳{!vK}|>L%{_K{sΚMIY6ZW_?Cz=IcNyⶻl|3M^F"b(81-rŴV3y?Dڑȍ l?OrTL*QTd[\+.q{l'|zE&ܦng1}i(/ +^ Q Y8rܦƜT/j!48$¾7Oδ,$10%oIMҁ5 IDAT1Y3&R_" JH/_hR|zy>vpw5tz%WN7=iYyZ fDbzH 톂ApTVU%3S: ὖWnv~Si%3q wK|H&8!ŕd8hMi˔ۂ`Ҍ"NNI*{h5LA eYO+w_,ۇe;͟vd\Tp8Q$pŠײ5k0$j&LH>O8ee?(L^+0.3+BV !3+\R(ҝ_թ]ƵŌ  VLͲڡ[o_&έϧ#nonomڻX+ib_D.YU{}6n`6 ?  06069gjWUVH$#ZjF EQȏ_D *3ؕR܏KmD'=xCm^Ш nX N8z*ۮqanJ0kQvqG3~#wr#J3q>}E&(pS2naW}1utuF־ }-n(xmYprP>|/"Ǯ6nݭRn]#ofw~8o|{38wZ3kW+>~'UCǔE6)Eer쓘㋓6Msp7Ur&3Hf ]S>ݢOT5CvB BECf\݁ =Zn\e|ؕOnu] s=Oi9#eyzUޱVXW+Hԣ1i>fZs/Ճ˺i6mH BnYoEXjxȳ|1 çG%Humnvcl$.* >xnVNp|q'T[? != t,&,PJ2G)o,ʶsKL1qQpQ5\lRiW"gq-R>E@E1:G p]mӬ%Q<}\U8`ܠŘD$%Χ|jͪUǏ^{N S+j1C]v gbȜD]59>=]ˮ~[8+ԫ/?ݮ޼yދ_Ȝ,U#˼{ MwۻaK_>n B,9O<%Dp&w7U`/D?u^?iX&Ie16Gzt.`Z?-8LS}*,mmAҞ7|fU*ԅF&< ^B/ChZɈ)w6~F`>c]WB0e7M >K%=.M',9jN~|j 5[rI=ؼofV1F t0pDPI` 7U9/v uMlunV/۬7nNwEcRuu1yJ1R 4^0R=4lk UP|rj??o$ߢJ&LX0 處 jH|8tZH>Ò͝jjwxZZ[Pt5rX==׼;SzKݺIC\9]furjadžSE8f%.[sTյL>Vijy~5og=x:X5E) `GŽ q!4&I!% g*蟏$,~pCHknsu+;"gJ. cO9lWǞYB8vŁ/0; p䃞i ̈́8Mp uq5"S5X\S9Nx9I癮LЩs61*%nmfY qthB$R"jUWVJ)eP8k}!,!8T`X5"9rބ{m-1yOys߬%R釋E{ϑD]ZJV-f! f!?إf5o39~QՔ*"$zd:U'{lc.}J_sAՋVLBȊfᗅb\>b:rLM`i_o#a {N7aSlL!ӈ \4Rꩄ=WkX>xieanM;I UR= {ъ22Q86EN8S([7э|m&\BO.ۇfW h!bk qm!eqR[څ 1PF b5fU .=/7qfɇXޣF^ur};OǬ~W\6J,gw@k^4Q qn y;3;ѣc;Kmy~]U>}tUf/9%=PҸ  6˜!\ .'fJj)3 i M5ysba`kEiѩca=RV:@lFϸnsKI<ujTW-j'm<1[9Z]]U@;-9+e͡㚂0zɓyÕ`6ucqC)U&wbR5ktibIip)]~ݪMGUW>YxC@FkvB^Ei7xᄙ (!q iRkV28;8 Nn W1΀@ ԭ>|rvېKqKc OKfO\]fy vHN7ܯIsq`bd&Jvu/}%͗ sf IQT37xvSeU(bA>kCkQKa7J-M58 `vBQDV/z7O߄@wnF2e;Zofwqg©:}G wLk-5x.9r$߻a r1fYW@KfhJpUYĘQ$=/mC4 e˖O&jDq #Y%ư{Y[y^yIGF^V_+/CjO?oݽٴhΜ>79s y p2MHmJj?\ː{˙R%*ҊF2LE^1V?_5{d8;ƞC2%9aŢ"Fa1^ ?UZG \8*vA# 98EEL^xQ/UwUT󁙶۷jęd35{~?wwuXLB7/pxfsD8 Y׊\'[f/7˽fq?ȏhVj M8;03)cZ!Z$fZY'~o?9?É !W' M!: sZJԦV),jVrl 3=/zgzsͽ[Y8ZQuE#QJVMI:Da!bŽ|?}?WmJwyÔtsܿo;>=~|O~]Ǯ{ SNj[_^Zbt?ۻf82!3Suq2תj)U݉wt2ԩC2lI$IfH))?NY9\pރơw/`F101UX]NXtwkI^7\z Ebga^0!d|<~CNxV+ȁ]BI7]B(LDXjbL~8cl <1~pUOxRx ޯ^~$,zܛDž$ñP/lNM>JOBKXWve56fE/Z9QH1&t"5E3YBnB|t߮'%R:oF@!@bep`ӗcĎҿPMjǿ.uDT2 :JSN8 y&:ևǏf1BhŸYºMd{v㶴`kh.*.e1!jq7ul]rي//O3ȝ#Y5aXŅʧ5jrU M>&JgdʬTTalCchM;.63_YhFG$&D֪ͬ{H q}ܻ@,Q91)3'x/p? Rw7&5V!RJutR(=1>CUϏ.l&{JX3k #4 1Wٞg nfV+h8npon/ g+Zk6/,Nu-kbB Ig ׅ`^_OćjZkժVMp /DŽfjZٌ p'bΣn_i~߇o6ju1(Z>zr2mq%=1TXB+M0N:vm~&q+骙 F"QU͈ rY`YypĜ}}<1P3Pݭ\:WYȜx%ށç:2ݺ]ZP*"bԙ'-=Ą&#Ga3ղ3pi^C'c kX^zLL$arQ3sq&&a%{Zx͊[WmnRA!R̥,eK8MpcXqkG:]["BZku0d`yO4xP %9fjEki#ڭp%^!jL :n i4c|oZ2=qRvwwj+`\?FZs]BHy;;Z f2.4+e9/_L4NZAj[]e_+e{bnVoT-˹ǾRjpQ2*!7wwwf3 .dEk6!㾴 'dV/q8@ Zkf&.ps"r35s(s.7򤍻>€&M+"&BJFh8QAd~]7S=umXbENd^'~y턅h\*ZS_]3T/5gEax=qtyG A#2GZjVص$AV Ԧ T]ʜϽj0E{a? .lﶫmFVQ@f(DDB\M9 #Sզ\< qvSs>ΓbU-c}%QyS]:p9{I! AhFLp+coYBDSRJ#6\)QZig3p'N)896YU-셹Y#9+d/A OVMj;ww2ۂ^6_b"Z6CyQDj7?qjnsj[/pduUMJ@RE{iИ~h%7w6IdMJ[`dTDSeG$&CRVBӬ u>>[(pL-!e}weZoۇ2"v2fvcgSS")G4`&s31& $RL\bl"y9Kr sD!,fÐK%^IuRh@`qիC}a 'VuՌ*@CL|hcIp8܈<%-]$W@ ''p83{~s<<6:Ibie ~٘FB !(2hͥg`ȻacLoϩdϋxDRPJI:ZFǬ^,lwã|zK{zM+ɪ;wZ8N^T'p!`;?XjB%gH!aW~?˃B=)L.?~@mW۬BCUbq"6=*ʬ@#N0H}(u7C]իj9ӸGi]=)h|^{j)fR: < 3V+\ni f*ev{d G<&%q>InF3HN4^ί̄نk8MabW7uLDJܭhb`eww|կn:d0Ȩ 14MKçu;rǍ}ئ~8­V/>ĖV٬.ue'0Bb U6V UTdc6rV 5+ h4-z3((BF؜Pv!ܭ6oR۲ nicQ99ÈB*Zf$3?k gy}>T;8΁ڸG%u_;)2!Rp -KR-GI26NP7XX&6wjVض.N!U1w8^̜XYI8yMd:%,.n)$)U1D2+1%5?G$ŶMUnzbT#^*QmfWK-ދG meЗyZu.ԐK!RM ܜB:,p8:J?}NmDk-tAÉRESoeGϨ8[ƆI/AI(Γci4n1%GY2s!ŤNSff/ْ7/ZS"i.j.鐏19$,g Y3Ņ,A9qP_R-ۇqr֪C?OkCU5m4!HU(阏̣ 7`00sAj-_E aɲCK-¬h FB:NJI|xnui-!:Qe\jA3p} Ð? gp. ǦI![.ԍppӇ?nz6]ȍ~\p 8|D>R+z-pL |B\S.,RU@$ iQphFeeQc /Gv IDAT`+5Z4S^zrm_IKQz!i WZ؀Tlnlbz*&~¼j\nZ~RTEHl8Z-[)%|BܭWP%e#ZA-b]oca0ۨIT9 >D&DJ+)Ew??HỐ&6W:݋m7vݵͶ#aPd-XwF2tEȐt_<?B'3l&ǒb VCua1鐗/F,NT ;103f!EO˕_1 ۼ$R&RG[*hL mhBH1UiRXX+\3Cgɂs#Dudf dx=q(1}ݟ 80SAu(ŴZ*cb`֫DMXlMI@H<*e6wpnwlB#P#Ed +€Pq+t. x 4JQbnVH-T@0 UjiӨ^>}x u'[5͆=پ ŪsaBnjiG.OE/hw~Cjb`-JꮢiMy3נFũR136<+yW8$f f06kɧbcӧ74({6EvK_ !-W\ xHdY. 1jp>tw)ZUr$bVSvKp%(bCg^k R!Q3MikAlW8KXv֛;J^qo(޵ևiɐ//PL&v2~PyV $BtfpB3JJVJl(Ϗtlͦt?rϥp0ۍ ~הW'sб(3p+ !Ʉ3Ϋ( }Ϛ22{S2$jlE͝®s{DZ!&6m{Չ!LQE]'9D8Zl| =#G@tV;+5BzYWi&6-"2.|ρӪhIRO&9,| C>|&iX3]mJۇ* )HܳsmMU}E'<}/y3ޠWh۠+1L %g>-10njm3*FvAҧk.@8s#wrsUo j2j2}ȉtF;0;YӆN' .$/1MZD=OsέUE丧gb޼Y4MWD<϶{}M".zͽFJϻѩYIsGi+m9%-gw3_j_~=4RSCSG' MEh\\z_u_$m+s!ĭuJ $WĴ4k 'p_lڕ)t],l08Cz+ Dh\:<+"1ŶQ7{? a^Ek%Ķl5#2K0Eꖂ(]BX=%-v^E2!Z5̿v׫"8Mc-]VWII*ۼ; C=|,X曇 nٿ9+ފ-ZAԦ Rskǡ#$jHb}GJ:d`Q5;̡'>Vki&NҀ6m\xtSLLLv  ԄvuxqWi+2X1fMT&MuUdEVI1DN]x8~9-ȹ}~?]9hZ͋bW`#4pgOO!'rGxrT0Lnb9hwp1vMXwvu[v0e Lt:˟'AKb@>o\|Plm܈CjX ERڌ#`'E+s!YLU1RVXB$I?Ħ;?b/jRGyܖf/̲{!?&j~3pīV%Rb@X:"-^Tu7|eBE`ȿ=oҺ3ƥN8ɱS0^J0 TB`"F>RI (?#`0!i!ZM-OVJuSk] >t)0F̐댵3ٗqk: ]u6IH:äDLB84%\]˒8H䐂i d7q#Kx.No\ @cMv}wUjes,EP/ӟ2: pj&F!BJ&iR1(Kܐ}JR%ko)D԰AWY(hW@$]q iݦF>QΔ;&*#QnSa"rd*õjÃ"_HqqP5g'с+S-0fbKh};a)1YnC[E鸬WJDwNgG;3l\'n]G~pvRG# e3t,48-fE9w77&@L7L,4 /Hw+tY_tfPhGnt\oO32^.ZKЋ"4B41"-7T- %RkbD~(4ńk>u_b '*FX}UOCe8@?jQ'PȪOFbү+ u3!m[ )COϺ~흧7ǟ?`Ȍ~',eC&u{p@'`@8S2S@e$Q ZWf9J.0MCMB@y7sct| LC'ι{퇿WKw[!6`spx^mcI֗3IӜYFu3[qpNܚ9L(ttsIsF-E\zVеݨ+h7cXp [7 0+ZjSlRB |cuz~$+ZVo:_#uJ1](ٽ QL *}n?z:4~{OA SSZmh-O+*/e%N60O8N\W8G)J3'uiO"@u.tPUbb!L *yu8{Ի&&<^ᛷg?~/oc,FŽ0>~(@u QiŲ$ȘZ+J"~q:+/ܯs HyL?]7nV]l?_{7;Wޥk]SZyx8x(Ai922dS}R]}?gOTOu_.$}~[r6w0KhgP>?dVYO.iG*y)5VVH)bmm'kj@\@A HǶf[e9il_êt?8q;#ZOmR&i22+|;U=f$z%'] J7iZry:3y۷-߅##r9!Rbí2^c=^1˲izSyN{7ڗŶr̹S8g\*[%bVd2r1U2Uo>V?)Ut$KTSVy"dgsoEӻ3"GŃsΈҗ1PE5πCcFfxQߌSBz3B^fxwLǪ5ܖ[on+8s +xă+m " Y hA%jԒ%3ƌ}dL|LEȊy܏מ۶ *-0pO*#;tE *cd rc)D,VsT_o?!sϲn%eIa1S!B PUUGV"ćm|im>cc5j.ZNa$#*Uj͖cƝ5ԾV˻x%ZZ#+t]l]uE11({5Q"6m3sw?n:iňa0&=)^0 bV"PUjpE%ά-?ܪ3P3 J6"TUլ5kP BYƴUmIqYܯ/DڂšK{ifVHz^(MәZ K>LR",a )#sңY g܊jdz7y_#\h ZB0atDUr1U5a!3LJbǷ?fӕɂIjA*B*=XZ! zF EQVMT #-2AHeDmD|.LH?MpwANlKM6^Ƕk}*xUI_'Ҵ/}f 6+ Q:0!I.mi6[J*EYURR TD̈1]}H#ECZ̬W冨+˫e_UTUjl]FE.[t&Q@*BJ-(\MaZA~ F呈L%I<`Md phx E2aR12A]Vty[I)jR6jĄxD 0 Qa&MQd!tBk2/0bL$Q¢dkJ^8UB*ETPE=/̬E&YQR@߾]o۶.8ƶnW_|E<>ٷs^:aPӂARÂ>noz3EeSYs1Y{!@PYm+6ꢺ-l hRRǢR2ͯoKa! Ό% oEʀ'3ak[il]+5etgUkDR$.>?>~L՗eDuFUud#w?ٯ޿@rVfU 1w9>m&vZ|r(N5 U- +YZtH_~3PO_Xx IDAT]W@ K9- }KU"%%F!΄đy )[{vlڶٵ*&VS[)AR U{΁ ,kP~߽έ'RJ Y`-3iJkl *!DE"G) YRU 2ʊfՏ||~&vHINQt1=Vi5$Qj/wS&E!-.&il^J齯h]m5 CJ E:)KJw-mH dBAQQ#DZMl͌,QL\ZYl!%>8ӟ{O7!-Wf,= .5H\K8cDTSWVTE:Tf!&F]354́9Fc.d/Se> /p[{w7"{}9Oieog@rȼ#*T-$͙+E-VLUp]AU%zj`$@>KvD--~]ԉ}xH]Oڶ|>;#K3҃!y{Vq9gT`2=S4)&.ٖ:,8>213%JU%&֔ q \TN_klLA͈}bܑL%K%qzjOj,κ`$G@,Ӽ\\fCh$dFN")Yj7m"NDʾ]VσBlTH,F5xKz^*i]4NwuHv:T"ETYX5Q#'F5p9%@bHgr9Us;IBYZ1Nd;K/ϋQqX,`' G͇TU4"TUc\%Zeh) fћRbџy{)LjzeD&o&TfR31kyN,Œy{{]oụLu5FqJN&!t[[%H/*% #H"#|>}os3U!b,$ H8z>@ a,a~ƥ "fE_R~KFIBvå-˜"474 #Yasr C5DXN8Hޣ M B{/QJM*Q:7υjֻr5Jc|}<חq{߿6s^38#lAkJgqu H>2QTYQ{9'+ +됣 K[i3~Zjm;YOC;Z2[|iH&T=WųddsW^Da*w`7ȈțgHsY>GL3GJ,-BH5ԢᙐLj1}?}>~{͚XTdIɥ Ts{39d2Ԙ'm'HavC$GC(VzbOK1$)[b9rsTժdQ>Ǵ*+iBU Ԉ *#fIJyVDeF_ʈPՌRafJ1;|W/~סeyu֬K1^gGG,Um65_GbV gR#8uCl.O8SCIa J9!ۺk--b`k&PŪy#v׷0߭۲,}i;];8R{P`1STɺ^[9ve XVq+iMׄҺ) b#>l/\Vc׵e/,x=DFݫQuF 1gr/6PGqXtrkVz{C`>JU BgR*88:~Wwԋv>R}'2G^V%0”ЄZG2!9]xC#bۘsKDwfRX"}$Θ~x~m}zzIaw)x@|5M*u1 Fpy?`^%x+dF-b5-@[2kFdZCjKRҾywO'ךR> LC`y~o}+ZwBe_NbhLb콜yfi>,&{+~BD%< ɜU"5j܋9>8=-g;o|חS(}dfrӜΪ&TU$=ՒTa5)q_*aM""U!=I1;tQ=$?>|tas#Ɩe*~?[NiW{r[{:&Y()"%"K++cb~T]j*JlQ)1uwmYUkb* ־/mk YaMiK7S?1pfbI%MgY^d|v,MNk{:R*8 a#'1cR2Jٗnu #k1cW $gH)1¥:)W;./m[U۹Zd&۽䞎V_Ͽz"Z!PV|O{uxIׅdCA/v4AVFĒ)RMbt]P%XYUYcq>ΖZ{ҷeV*)YL/G9)E)JVg#(|.jf%eirsPO2He̪B3HADUMKOϸ>;l?8~YĒJ|ov^D{^ZAY,[UMV4Vjh&Xb%:QedQ[7ວyEPI_>&*1!:C?JHwPlZ6y:-!XE֦ʈiF 01|~E,ZAf~^~8a WBJS/]m'i]zz$h M=g/H") cKLk9>C|׫c=rw͐}W ϐX/_<]z*9)!+!VhiV:_Lt[lZvR NZf(詨}VRʂdnU*+ta.2Dpxp}|y}|7#=6;11*1q:)ӳP_%T JP^SoŜYY\ d ZDSEE5Q!Re???6 ~ʪt͖(o/?Ͷ}zXEfqt?\_޵~9V 2 "rJQѨ4UI{17ͩ4Q5^_?^L­-rY'6YK)@45[p(QSJHc31 ]}M-fOWgWH4D4F3IQ|l>$`8_HsΩ>)`"3fR`V3o)`qDG:-֖w7~ |,QEx&UaDfd<~ixx$LN I <[h$ESL@cHM[Qh}94}:FoRUm%,z_֓\ - ~,CH7k#'pYU*+m|PPjΪj HS b _($a2e:$>~/{~Wdͺ)9:J8ҺJj@&k" (MTflisQ=+9[yؙ]:h#glq(뺜>X"Mda:M"!gK)Ȭ@T88ß|Y{՗y~G%_ty7PC->۸]Q۵\|` Ǿ>]2[j gQ]+WXj: 99}+uV/֡Pu)Ĉ}΂,@",˰Ie^Q]uETzhyR@>1vTS)%!2EՑ^b!ѺŖBxE0!h'YZuc~M.nBk˻mOi"#̌HOdAeW#7atUE#[*^s̪fHS2DOyXbTQӻ,OY2]HJ0|Z?W+Oya~tmkʜ*5p^º.>I?'͊++80@=Z[dAM<|NÆe)ZYIk8"Y<a-]lOE4{h븎=b*~KkR\\󈫏?8~~/]J#1"TD"Fw)\̬1+ǤuD֓V|sܞ6##f` R]2u{ RGf~%Ӽ}$Y(H̒)N9#' JsaJM/ y|4r8S} E̙; MJ%*aTYg$AJk/?8}$/_m\{Ň="t— pI@ƘbtD ڊ0s$cԪ &I fL?o@H|84O׏6&}ݏ1=@)&sV2RڬX/]-,I,4bIY9wo|mGhRV!gd.Q||6UB#XVܢ[;5*CY;\_Ǻ]suכ߮<\Gu-}@=E,Bljޓo@KBi9Ecح|D-33$d4^./R|jB>W3S&yfw<Ѥ5Ԣ,dж:~Ǒp%Y̚Ib\MpvW d4$j,bH!Q$OG#l!H+<#@׷/y"4Q#pydz0fl -6NH%aDĽY=[r(K dQeb?0 [Lmޛʼ7>C>*(f:'"ΑJEXyzΣzJ{˺Y*"qkjzۖ֊Xպq_'= >5vd2{Ͻ3bƤ?__B".ɀgU^1/I(D%(S)">m T3B }zF)4*_x6I] U̩"yw~W;N8̔DQ4ʩs{{T3<1 IDATzmׂt' RTȅPA^VUck"{D$#|9xz/ٳ=.ۇVVf}EXYᐇǷtvev{CA2X+in]du fѫhNi3w7XcZ;"һ"t*fc>T9XE5*aU"3XIAF|fDž]ViVMB44fŨH"9]R Idd0VxHFZBwQhhD˦-AQ֤ cʒeɘ_|Joe 1[R_}(DyDD`lǾA>*Tqn/ UmSK"c+RDvO>T*<@iZ5~~Jz|0Pn"Q/c7}[>&0s-s< Ffj%qS{\lVf+ZQ{JoWHͰ9]YGL@l%1vߟ}}grnjC$a`Wң"$;2%[UvGѱrIQH5E6Q,Q##(uV|M+[ޮnDjJ#,R W* ΕYrC[6{~n(lLMfIB*Og.9xe\uެ αyy=35fH-"R"$g.%d1w:zU|Fj|yK5F%(c{T#^a sBtd";..J^oLGU"cKGr %D4:U)K.1LM%"1)@IHEH22h TIxrJnͣT "cL3ˈc 1mZ}"*pHTNa^(~69:U7HyN*82_?\s)lF4 !m[r 1rKO.5q{ڏ5â,"`IH uagik<9ID{ŖbJM2$WR *s.:&#"(ǀ.MZ(YKLjz 3CXfdPlW$ guP9^ vږbִ'H¡!)V@dmEԸW&}]QLGUIj/32gotW- b5FiID=^orVd)rZyR*!̌>gUihe2̳" LU8HxbLgXw6x[O&,E@ t8ۿMBJժ$K̤ٲ%uc۞Gh@:Eb7s\u&W Dœe*bUUbz1}A^e<pAP TtjF_벽e7[T${EKӝ׷_,Ec,X6t"%s-6_1k8c̨ X&枍|):Zr|y">0r%d5۰1,(I7)H?2K*lP^` kxs<)ZTRS13~;Lڦz <'eQ5rQiķ"h" 'TBhBZJ?ȩ1%g+90*[e&b2MLhl#yjNR Z$ښT#]kro+e UHCyjΟ< "V' 9Fz954=Fw?M|DG驔%ϗ@U^A T8%9VU>^?W?_296ͮJH%! b. ah2ɌcY[4dC0ɴY@H]=^j5E/RpPܬ1LBDA@eْno7=_oެk#K-5QH3o<-M5 |iGUk)e( ={,Bsx񰊟I[˶Ql4Ƶ8p8)&[U+J9GYnS$Tk 1 dέ<1nw=i0ʄB*~hq`UTZ$11܏ol-˂LJM/ L&ZHŕSz "OcE{UG`85eІEe#q(f\>C Li>珿+9'يiM"2P^dQR HD=|zޅK*DT^41YZ"4k~jzv?=}]rݾhwMZ.mXz5P9'4׆Ϋc>d 84DUU )`T$O}QV/־p݄+&R{yPb .9XQ"=;i9U`ڏexXG9Bm!gle RD KQ yMϧ4ò=\ ֭ofj"*̂b{)PɄ!fRku8PYC\&QTP8㒪{d.@3N{f'\ּ>J @5 'bsSܐN˳l08˗Oÿ_O~{Ln[RḰ2Xl.& qB2!z ;VbutBx4ۖ-Rg!d60@MBzR6n9oph\|ʹABvƸ,PjоvޞkAa#0Jf2٪  TQ+Z܇A21,3* $ӯy=n܋vmݷͬ"qlknv[.vmI">Pɵh7@v/PtU(!F F@iMLV@I)=+'F`ƪb,K߮n".R0|7`,t9scQU4EѰ{fG(5 =/&h `G9`Tx:?KX{rGy ǶIP>/Sp:ZVl\ʉtioOSy6 )0(%,`Diʥ/DkE|1")QQYu|N]h/'djV0fDf7`D+1Gĝ0X{3r<~R^3?oy}x\=u^d8S -X@Oq$b4϶e\qθ?2Gj.9*a,4(g`>!-צ**[gn LX-ު.,hV))iq0=Xޔ-Dzɘ;/!!B31hƗ%H ~jaHE )3xvt@_[{Rr*jqJD+)tgcRеؘ ز$mdsp~s{tb9VINЬH~%fUO5w?x,q* ];Qg ;/OQ"z~V?{_ſ`w齼y˶X.M1 J j3kJH-eha}bei[6\V](G1!F299L*BAXCVR5ki"8HJh96p ԇMikқEZK -Xurr53?GJ 0dQ#ʩф lyxy<7jֻc^e*R5,. Z9+:(z!n튝j[u^V[~,2^!E1OZ<_M4šTߏ#F~{˷Ϫ>,E\7b墍 Q\DSpQ.oTT YVe.gfUA*~ѷP]y}ŏl-+ؾ _#+_?o'◻Z3 p|կ~)=ov^Wm ,:LA@Y5GSgzUB5 'pܹ\ܺȃpcLHK*!f- 28xq/!~jܚ*B8>;T˲lЗeѵ2bIQTL XV'hGvQ,7_ӎ|" B@H2DCe%] yDCW*G~s$5vͽLatK:Wۣ WP`bLA5jBU]sa[->uKTt;)Pj"lIdL-(q< gHwY:WÆ-l!,$@\!hȳ@{9"LPN1c^"#Oqs/P"U{;+1O#0"^_!y+ _*H!m۟/g?Wˇ.K,eY6iMM\+)LAe#PPZ1O1K$j,2}/j-#tR$%3鳊QzIVa\1fLJc4OǩD hMLM8NOOܺڲEVkrqk G,)M3%"޳lqʪ#)z%Hqg$p&YQ6Q1Ǹh"%k Yh;BpϭmyQܲqi.24Lj%mYFu.a~QCDTDC% h]")ST`2x,>IGN?H'z*d 5zwO㦴ٔ%/cayEkx)Idu)(l\?޼^׋n \;UDA*J+ϬlzGmhnGRG){0<T΄%U9j?׷C[eծ)QRRQR˜eCf<k4 %Uad*>+q/^lyX]U-ÛH3,lfFQ69-.dzS2YL0zZT,B/KqnR&X-UY3\먼͹SJ aU&i UXUHʭi7cRE§-ZLVʩa QUPZiK@SG=Yaf~FZr.{dڇnqɵmTCB!^1,BX#%5#2=22ь1gywULɘ *2?%:>3jw-_~$H33#J` 4꣠[A/y7)DFG>]qYmJ00%|qk]㨣Ky^ 8"IJpz7`KNcEs9ãDe]Q&W}f1{ʉ*A'tVMXZ~OSjfm[o[`lQ{ ]CbX!C/qɐ\i>0n2Tz?`cqWZ4uJcoGfd@=$^/y˛/Eub]X"0ήm!)9,B|ݘetS6^z Kj1@XYGj&ҪDڕ];y,!DY1{HD@Ҫ.v7_;8'4+5xYҍU)$b2n1EfMk~L+%_y zx,RUy3) ?oy0M܅8fa .ll%V4W&fU3t! +cGZ$ـ5C޹l&Ƿӱ$Q[B23dz؆G`5(zHDAR)5No熟_6#BZ{Ɣ^Eg@BQzښz2.]Rx:t$ #f VJܚ$mDT13yKUmѪޖUWVj1E }?=k1jhdGI*5 rM+JE_Imwj q)Rh9"e9ETEb][iT&(dD83f}EfӞW* !JT#̌DTf7cx(Q˓23 龧}^}Yxs3׉IL_?O3s~կ__Yטwcf )^y??O~㷫}[Y q%5o>Y4Lq<U[}]ihH~$t85J3g:j xEB#{@ٚtDy%JV"g$34-ZV5PAFf{/_6<7ݯ0Y"۹O@ZUڛE(OĬ 49-u3y;qs"W;2:YX9C?/~I0>j9Kf'yǸωU/PաebT(`9 b\yБ{K̊ qG:no6 F)g_PR{.ajUIiUwLlKe&cƇ%Yq8T(R+%ƳO3(j/~ IDATT) )f*ݵEp *l*Bbjzy "-,Rk *@KJy󴺽{-b44*#BAI@枢(>gJZ(Q%Uʐ1NlI YCM_kg#3٥ju&2GTUNLH'~@ PᓦDH3/YX ԘCh4@t;JWP;睌Wu}~g4s(1/ÿ>~O~5ќ#<RSN3>oF,vZ9\*"IbUf[[δ9U>vhsvۊ9yh)MKlC >S[er-),JT_xskw>",άQ)]:) mo XZY϶mѥ54$""u)$!ʦA%SR26DDN_)Y+s&`adC4yUtB!~yķH趶Nd[t>uOM iJ+|`UQ0B2+4S[҄GD{0۪bK5nLcõM2XeY};Nx,Q73DY9=D ̬ @*ƈffs&;?>{N~_J%" u-|~{7oMԈ>hj%<|=e&j&Ҝ:E,Am{T-oMBb̉Sȏ:_{Nʱ]mVvT˲*iC3sٴ(-.r6kO8ʙYR.uD99YPfkގk{i`FG24 dV$&BU.κ0۱1 u.ᴨ h*% *gfӐ&Z>K\SW5Ue**RM`IrdiLSQ `9))`X4u-iViNIkЬ2m2BXӎ/ ibY $yn 5,vֈuΌSI;Ka!C|u;y}="#2&D[G??߽\qPcГqޤ E43~EWrmCYhK!B{ֺJ=289JLI.",A4 |Ƈ[vEd[b[d1mMET"C u;ZxUfduTej[LfKpއOOٜ }N4aNUT {Ǿ-mbѮ=/mCp KWSkU <BiXV@dUecУRjЊYA!De{yuv[}y.k/5S4KJFNҽ"GeͧM٢*JDYN.kȊ?_o+I\cVUwO KRXbE.-E z̒;ߜnfGqv֭C!+#q'ٱ_BT W̽j5?X9Ө]8Jl1ЧeJ{dמ⮕GlOUd =y_fIƌR@O_?dw1ݗmY.|УǬN=Dd܍e<-] LkDl0˻qz~[^8+m%mHҬ0 :kDnn0';f)6?OZ4N[v`}J}i-o8'MYf[Ho[1m>r܇Zrl[J6p$%%> s[p.æd,ˬeI1}K٠G׹5.vIm")b6޵zz&UN +җrSحu'mʐZvV/!M̦0UѸŪ\LV.ְsͷoO*B,`AD}b1VYf,edsY)4UBgKDgX5ssmo?x-$U>:~ϿtbլpǙe4M 2kFm\i鲣1_(c9Ղ|cgcă{=U~zZCXݰ-g)3]xkkY, d2uz':Xǵ2-&T`yӄ7XFոt(`P&4:҉~\A_d Ua%Mn:—4eK325"l` 3TYLI>2K @T9RVJV5G嚸xöڲtu_V(+eB3P0šy"sfFɛte*VOH3OʐtM;O̞jR>}+G)}.aÇ ^$#.B!Io?ܾoŻ|=z| WVN"m\T[ե 1Cloizoko0R޼ėf*y2++IFuSoӫۢ3* ]w>k>:e9**B:9ǿ_}_좻xcUnt c;tKCk4/Lh u xӱݚfx-t[EeP䢾XoW dm<̚}ܻ%&Ǥ?tiq;iuD}-9f}dp5gZhv\{ ^=XiefA"7mմVM^VVH%>Qx~OÔ{)sZF y$jn暥˒@^j45s^QrΙ%@S}mYh40!,Fg,L`DCD9-54}{52lھ@sr:b$Ut`iW͑Bُhw纳|=7.vߌ|=-8HQ=9BQUneyJӣ_\ؾq\Z_tdi׭jV,K8i<2#s(LiwJŔ|y*m9wj~,PmfK4VM$ò7xҵ藎1YTNUԈHhU'="05oaq3.Ҹjk-lKՅ`*,US[^Ֆ ZE1A&-SBAe)8 f>Q'a_Y~l?8^M5l$if1 {R,>Į@ 2zlOYݠ]ދwٔ\uBm8}vBeE'/~/?}smE74d|9/s/g[ts㫶͖ f5UTqYԡi5m"ϗXr:y!͗BP4a+[[pJc6eLJ%-2FC3Q1#}Q+/y^ ;U 14})-U~owX 9餣-ּcNಃ^DBcq;0ZF'Xha%}˅PMѨ"'@ )4Y9DD\Yzﶴ,~< SuUF$qwڒYKi55/B{L0/s3ZS4VRݩ{4תmg[k[F9TDХfjdLUI)JZ6[nV#+B<3jT4pSD͊%#)d9Lf | xӴ-xI{F"]@AsNu#aQUF2h/k[f4&}uxݯ=Y|X|}G3$q t0#P /??o~׽-YRvoj>~YY֖7n ˷ ˥b5٥ܚ2\}Y111W~hŎkc_Q$RUj١q:!"l+>s̢BF#{n&#lx&?:ɏUX_He̴Ҥ;nb42Fd|kԹ0P].6&a`-hh4ʍ<% !>J=]VOKekehnD5dSnc;;M&CfڼShZ#uL>ڈ@d` -9e@/ -1IX(g+CҗCsG[,!9ԩ*T9̕{/ J{o=PS`~(0>Zfh^waȯK|L%At@U_LJO8FaY4]jX=m$eثTR i0-xglk:vZᇨ:[N1 ؘ1.0I¸g`!URl `*&9C9.B" -2fE)O+}46札޻]1ڵx/LW]0{p^ZN,//ڋR8\GJ`PU:no_OO{!.r+>/?|ø6t3#6vuʳԟV!$oBfQ=֏n~!n|vn˥bKyȸ6lc/F1k{xlla=2[VQZZYc;QnuΊ3`RE0kbU=DڲxX{8.(#@V\.esi86Z92<,7ttM˭Tr@JA.e cq@6fYXނAP4 TSvqol.MiȀFhB9[TȉٕTLOU1hT8 68NǛÒ3F?Yf*jjV,U*ELeڳ&DɊ 3_{4eT0\#QLBq*kh-a]hψhˢ ?umc` ҏYkD k`~fbo{cijL} y#o}N?O7h~ճo%ηBTk@Kq?(a=pW:Zl?(5&%g6tb"silK>\deުQ sL& u86L Ec^k[I3R% ]ڬm߼n{!rFuFbEL!0/\Ԛ [pb$srU.kJj̭ %Y#rF~{7sC;k3ѰՍ=_r* MZrTXbd,3s2S!#+z}a dsz,Ўc} oT?dMUW^p~#z}띁Yp'lΊrTê4Uht ,w3 ]4)9 j:7)3@Ut/ ?X9lETh 4skd-M@S6:-i93`fN/=i5DZpoi/$ϨxqMnk骽:1W~\Z2cWиG/*1k IDAT8645nմ0?wWϖ⸍-oKdy%0"S3b ѵ dƼ"}u8"pO9BeaJѬW5cl hnR[X*Q3&6oJ9Z[9BjJG%*U&L {*tѼɎYFY݆NNwӪӏ[u V1`@!DLRd{PJܨ=kYDٛܜ~`]NoKj@aLssly:i4! iQE {F3*m+xۍ` yDE A&nr7O~'^ (ioG}f~B>#w A%9 >/XwW:S uxE\G;*AR*2!2<,~{\_fs$v!q{\eI]ζ Q)ʌs\EDU9ůg[G< u y ~-U0߻דjl aN4c1ó\lFъd8CgYG2ȣܭ`<: PѦ&h'[*2d)(5XJU)#Y2))DK$z,MLuG_r=-XȃKLR8B[ Ԟ7Eے$DrlV_]|s=K>pqrx?V;\X|hB}GwB}77pKWڏq5_WF9/c;CMHYBw_߾=M?|}bjrO߶H ǖQ^\yۜۼ\Wooko۩PJ*4UrIb@6zT{'ǘs娊"#hRy$\jw P&@Čmlw'hK_V."0_!QV*7:QK͹Kw Hy33pո̢|&Z3G7D#Aزe -ޞW#@cEIA|֮ ޭ72+qK@ړuuב0__}L =Ejqw5QdD%TP/tz'/~o>.?>k;GUO_Ӈb̼ȦyѼTD$*+4d71ͩ#35BcFT&YtjfV6;UǵKn^{јr$F$/kYpV4ddTN1ξ9*Мe2Rm1;-rZ}ŲhD(&+l6=;E3+YvҀ4qi^ YUtXE`@#.T%l9yD]tD,_RIUO=y03>eѾŇhױ>tm_p0ϖ{/@m>u{"Oq {Yh*Nh%.R~_7?'[1r"i^+|%*ԽNbJťV-LN3ݣsI, n`9Vi:c]/Gpm:H2Ҕ#I*@qåTx8xuq#eF e Q)ܳNTBkNPl!*bu LQh% w-t:h龮{ҚTe] j{Hi3sŮL&]ݱrQ,A9/3!Q̪ ޜ';z3qaT0~wғS jfGc2'vTe)!ט~#2\\w gh돞W _\}C>g0E T~Ͼ׿/?{yU51oǻ]z`\ʛj+]uqsڌAaWsC&iݻdf[[jfq[-±1+&"+KhbґD{r j(ʨ~ כho֌4RJxyޔ[ 4-5b/Qs1 ӭi` !n\8UbnݝǵfG-64cT) OU)ZG&d˚%#àAboH (2>6 yּDRih)4A~I݌s΍dk-sWŋbgQT s7lˮ 3udx>vMvFH `>@O!?я_/z7[Ч︑|Np亪quZM,s"bnrT (XvZ1l ;|5y+붞pg8˶a0欙n^w.9%T-Yс`{Բ{`QXN:Meij] M\URQrh<(. !lFm=kZKGkٶXZC*2)`ILٰtԚK6G0%' M5vi=ve?J4.DNנs^W?6hf~d~̯\Cɼj޿fe^M d#mLkњSϨF f?_FO;`_m~vEP2gGl[onqѻ/tD y\x]F*zQ,8` ,EېOK;q\&k3boX:rMnx}td[2T) (e=jiVC-naA9A+Ŷ$Xdix CrIq&mV ƂP,`N$0Fᆃc5 ۭᘋ}lSb"ܱ( FҡL"ž7AP}~εb );+/06>~QOc_ FPW-~qb~z >/<[|dҟZ,$\VP)眘ϋkplfHKh0/cځH̴=<Qaram̖d3j+*w֩C+8aYk!`peBEF@Ver0.VFc{f*0*kr`13,ZZ =$sZ+1X.kr\*'jC_ޜ>Y׼s9tzZ$ɀ,n^RDޮ-fm>~q_Xg'>$k'E7~lw@栏9e!']Fۅ3$pP0=ÿ׿[?_omqc%ǵ4tk#/C \ˡY;hk<"1n[#Ivf@Dd[Lpg")jKR|%-f]U]s23p7z@qj(x^ @:bp8)rH-ug܅* bT739YM,dHm.g .xȄ5>&G@4ZgO͍`D(An^G2—s -'^y{_8l|bf[crX_Zֿf[>!wߎ`˓G"y3 &"outҳ_w??VgR{౉oS?͘h&R Y=kNz/TF;y8P a[2&9pilʖȹ8 A(/۝>=ETcOC&` 47XBVN)[f5Y}"CpdbAW/?/@%se8l8plcY@ c;$LA^Ll^-]^hrg}I,ɘ9<3DMbPR,nP&D A W-*,]=RZ c_33KL4|V6o|쮼s{(ekG[ iwٖcWQwz_ -y$mLq0S42QD&f),&#߾O廟c*r8XɆǎYKZxH-EƣySAlWC;>gG^'1z={32b ,K G-1/(YaPԗA݊gN]lѻRY /%hx,0T>VVifSsGeB9i^4r3#KEsw7 UPŋYHz7;0u(zN-b:Ab::zQ%cЏ<8Vy)aq0,TX8eԫI PnՉd2p-- ؛uVflXd4YTHr㧏s&\ ~sF vomJkliW~] `inv(yvZy,qkkq.wY@*dIH_o~>u,0rD ERT2 ,a 2REP9gIGэFǏBm]ǁ%|K:E5W7>ۍ-I4ߪIbf}EWF ~v n%i 7!)&`$2 - Ì)x:4Ɏ(s$Cъ2Z"ɧZ1G{NA"|QdK͠S^34V4t"ZszGi B/.~e׵pL"`n}"~J4)#tl>U(׎-Gmk|;5jiaتз8$#RMblBv>k8r-DD|Kx˻yv0z*SL DXM Z*xO=?eԣ-M 1I)22㧧LCYj)C9~ʠT䷵8rp;a,EW>.tECS6wWKC aXGA0MJ\Ej],񥌼Edoۚ:֟.m*6n{evm?f݁-Rjvq<ŏf/~SB>TϕK_ uyn~HK88a2̀ٿ?}?=~q ȣGyԪZZtLYDs7 yh. }F)sIAñ||XJ29U`1+h9P<#ܘIgm IDAT>h LXtd,bG{8T;O3&&Aŀ<*mi4)b٢tмI%A#ЄtU"R t:QK0XUj0` 3!-):;\wwmd vX2%,EєWBZ*_HZt%ui]UrԎ;lRMI"!gƻ lϸ0I<=:&$9_7sìƯb3k a *ȿ?O?_u/< :{(X,3c;V+!mF6):.3zG(a;3_쬗3^d9|P4c|a`Tux~x-dLZ 9[C(Kd3T?#ΐ9½5" BV[Cf1KM' ٳGFP~^brxn.#.ײXhG!kC`N[ -I |Ld'"@"J|4$\PokYj3eUc;WѾbzNG%s(e5 _eɗry I2br6OV+ۢ)\ӈ*һn_v W{E)ݵXD:&GW<}o_1.޿ :j)9>x P4TFZң%c*mKN3#4K<#s00D-E^8>8+K甲 |:W0xTc08ÜYSGG1eW"b&N2Rb&>1{3Yf:NCGFn̻:w$aX\GY*Gw!ω_dnq $\mg27P85PXDR_tc<,;ƻWFc+<.l[5mYe+LLev2b3Ѳ! ;j'RͮS%b;*5VX+[R2䒝A|Grhw~;\6<0OLDaЛ7>VJɬE#PJdaitDtdٳ2aNTJ38-7phXxqRZ颐Q`e9͙.f 1;{2*'A,]yu`ʇcsuC4H K1n=]l-C]! K&YI~+aJZai. T 6C7D@ϱ+l!hhH^5~v#owܰ.UL"^[yzSA7X7KA~$I^Nuk[.QKg?E~|]_'.' 7,=?~Wa C1G`z-R) s-7.~ SGڅ H)2Ӌ=_? 9ZR cXRh)xf$#)2:-{o9gDӨ\H>?,-i%"n#Ql|Wgsaxi&259KgKѢƟ s(AT)%K)ME%mQW1QV\-.+}򉍙d[ Z5vThK tFFt<>, ߻xMqmé.y+sJqeI١q[LYhq`(4}dٛ JtYxy69ѫ nz`M$R)-aD@2TCCte)cnѲ7sjb7(K1^u9KCPkSas5,eF J,s玩ΗV lH׎m8pA^q/+},=[21VzZu-s X|%Ni˙[;N"23k-fm%x ; y;\Ϭ˽&YZnn%^7&!)Zd+EοA>k"S͗yzV\,.6x~T6R Oix&baqU P9#+JL&']uH+(%8׈?pa;ьsdLP#Β2=fէbBJXgAf0Za۱jqFZhDVY7É/?̚D(ҡ4 4!YLl0>sb?;\P;0ܢTE6Jvq+I@˫(nfDltu>Km}ǁ^[.3ޤ++#TeqpZ |~M1#l#f%%t.\Iy<><'.k @)nCTN _Mi-u(Ȍ L!WKw=_Ó{F)R#Q%+= F 3$)P2uEt9u9B G-[uc5קOHe^ ñqo+ฤB)FqX(RYLWgmFan3ڹcU]jqou+ۭ;f>zwz-Eo{0K8ob}6F){Ey/v˻:`nW˟߂yW냠3+T!zU#"(Zo:kL履<>瘞s~|9E^%g'U GOYG^\KՒ-[3̇kIB z֘wFwM;37,)Dσm֏O4 X;PNpRc*@j̞mT艠EWX- %/a[JDsflݯ?'dTJ&s-n*޵Ogl++ծ ;mVXۅYo.s} f.msO5k! Z9f_mݱ[@Rܔ]<y2oJ1$TA BE[ 1Cec_;ꙗ7ރ~߿s޺fROpBO?Q]Ny:3bB0]]٤(R=r>[h$c(g~J.1diC9`Wy(f%4f(+:H/tO9utɖIjHJ3$XRSaxzZrْyAÂp=`[4W"\iOplo-wU[\[*aKw-c$n]g_^k-ZTjc2#zDRhJ=3.s|y%g^ h$xknoW @E-/+-y˖йTʫNMn@XDTJ7u_}?L/~os|~R dM}>[olbe9Md/Tj>nj(^*;ϧ6v/. _\ݱlN*}0_O.EpIKt@b̓c-w~W ͡Ot_^>F8~,o8؏YKDqS^I0ȹ'(2ia|mT{|F@*uh&?Z1*5zhg[r@#^d 2K%Cq#` 'ӈ88v7tA#D(so-fªEYr0pp?[d\li ޵%_JرXquvonoyUzoZ8[oðTz|EЫli#b5K1~]~Qy˾cAO,"[1xfNCep9N]_?C)k*֗.6F9 ޙ_!=[ZY1!8I ִ&PdL`VOПepPqh:`^d6٩ʁQ<4)a]e'T ˮ(!㵩 =Wٚ+inU4}.Ŗ';8[/MopdWmye;ķm~)y_lwn~;v&Zêwg (-i QDXnr(*!UzWT=y2|,-JPq6gg]|pi:M=JIUs-YCI-f52-}یuH!l01s20e=5E2ZJa&?/Cq [QoT Mtk@"̡ fKUa_7SU݇x [~{ 7yn1o'U*u.me/Yq71a;bh;۟_awŘJse,=D\2; f!!i->i4{,X̹BsꅱDΥEYSҘ ; C{.۶Pu/C&T"U'rAR4`֜s';T lfM$\tO)RY`XmG҄B$%sBx`FHkYDpOサxe-s[K${ nZn땙i^z w1{Z-+]nYnt3nEn$?mn6N`*TtVA&HK}MOK"AdF_"G%..u;=3K_bs͉NE==$;1*ñ<eS9)S*A:fIc=>Ȯs6'c.@G͉n"KQ$+6ٳ/<+721!ʫQD:,BOW&! m~E"k֨Ew(tU{6仅AlPwk_7i[:]_; @bkJ`=:-ӸkT/ɩlwýsrv﵋xu'_? +RoѠS`\Y F@y 'hF23$W0*0&ʠw=;-Ixiٲ@tiPyf}>h9fe 瞗I&(n6V;Pb9-}⥔yv40` K1{zvΜDLPzͭta~ÓYt$.D nbNr>{[.{ϕ\v`=oZܢH-7wsmjSKUC,}S2d:ۘ>IZKFXt.#Ҋ5MR/G'ьKhM_0@@Ƣ$25{bAf xk%=vw+ީ7. zSەݱԘcDOp T>N 3kf--!2eDvdD*rz,uPQ}fp_>DJƥ2!mQ 5f{9z}q o!xfзx@YJ;;/W '#l=\-ح"ɥn+HjK|q]FvTܗHniޯ޲&;پȜ-qWg/޸j~ ]#g"ONwk|q%9b*NH]n%H-a%!PF5"P!T%,":fYL?|GÍ!I,uۯkME 0_#\Flk mþkn\/ޡ7Hu$)[ەcSh D޸z><޾>n+^oggx\n+jy$;v_P+|S#aʫ X@9B3-Kl@>+a4Ґ H-mZ$cd?dhX=SY6(ei\lLOB"(%rV)½ݷz+̰w% VنJN.QIy}v{ ru{Vm߻]틯6- IDATY2-^sGoGۮ4~vEy#G\NhA)$E T& =IU^USII44ZԖ֊N[ї֫6\bdVԀ/Tp(4-nd[z@$H0ozEzAڑ=fH~v;:˾y¼dwݽ26[J"ʖuSnSl)Ѷ݋b9|EIm[D]MeP;S*=yYh}/]-" XpɥB3-r`HTrݠ-&De+ (B\,{e"]#W-Wyš[mf6דFC͜bNjoXh t/c =n涚%dE ֡P\M{gUF@(#+A.\FE&쬎Z?|޺> ֬Bc[Ox:j\Z+0!lx^[?-BPrc 9%uUّC ˑr}(0!> Yٹaʦ~HQzQ{?|meA!2cq,_֩#kgJ J5[mBJHp%N$\@3ɝ:G^s÷_k_ge2٣h']b y#n\q ]K--1ְJhNmԈj?¶%sq[.6BIE? i46)BI,_9tL YXȆGm˰BW| SAn,V:t+jkT|BZwf}5 }ev[AwF!<}E3Yٹd_V k8Qb̖\<`Q=.94@UT Eu] ީ+hn=R.J6xzH?c V۰ˬI)9QlaI)3X:ZCk "g[1{3O[W0v7ݖ<Dw[ 7.$~=R(a4e"2#ȏZ\ES94>Rg!daf&gVmc-ψWG$zZM!^I"QQ5zq z=<۝UG ,j6dwS\Jo<٢EmZE:dB)*a}tiڜ L5@Uk|ltAC\E @J[N$ Z%G물`D( pkg@!n*(jN0+$!Y֑4_1w/}G Rw| ؗӉeQL36suu3.y3`k!"*p ]J$EemZ S!lE[NKhmB"K*!&WBoٷ\zfe9/x_EYU;=Z[W2km& ö-FcѯjrTzds"Qþ$]ҭD*<4-փ\VI(G% HU;U%V If99ޚtx֣y?@\q2o p췿zΆ`G_ݗ.+Ӊ~E^,:kbi(O)R* RE氭gH]"[.nNmh)ndNŕZJb%5 JlW¦ !HݜaT# n%Zn h2է2-t FˋѸ*CI.@95kL _ {iϾDZW{+}H{O9.+8e! !f!<U' cܵV 8S)h"}W-: N~F{ngb\M8N/4b8.`O z)TJF. Y+p(Dmd]lM#kn[ITo*I|N% z5iK焑?bn"d*c-"Z?"[+.41Y@~oϜc&n5ʻkb!{,=#A'ɮ \ovb*ǧAe]\r6iZ"&b<2A R#jPѮ[C!zvRA3&) zcTpdwDJ.kⰕdf%5DB"4t %}nLy>̬.Kg *!o~q.mHcY]A0+/ҬtXƠe4B)ǩ<(T7~oٸF"k>C8Q=VͣhLIP۞A JJ0ګj3B&Os3uRfi+T[nmbJp; h޲2lD1W' x]vd3ch`pM_2묥k`VҐy@ rHGZծKUj>S6: O `;qNExȮ.Y%I( l.](#)YP$!>5[Ds-hjo3l௯uruג @쏿?_zBVީ>ON7S0`}g}%-_E ӘT㿊o{Q_v-Y1+dnBYLJF蛎kY.`&gc+tC3xVz}&.c4hn~:${$s1~po*^OҐ$A: )yPܦ(\$C?P$S/EE铆.B~4qYHmOl݇hdCUnwl*\.e!6 [!7ò>0/[5ogrۛxf2 4:H'R}B8Vx7^QǂgW roGՏ)aTD".P!V=ly wb`2qdIUMi,PԜ!Uu#RJk\./O56):O'gDxuwG=*f:JNtQ|k/y(h%%S *3%4׈DƵ4Ǫ)1[Y$YmM!5S&* /㧾 IJŃ HQ]]V$k)320`"OrtUrM7y[ugy\?3#3-4l:'O[ЗNe)b_&)%%Vt|WJiUBYLR}~$! r&z)AądFvR&{ tC!#Ii#nm LBM;xpkS Ts($wL 2&*.7Jkh_<].gBp-;tq ;uSv5rk,3@Ael=UR;TFiJL0ǒ7Ш_U)LALU[IRqʙR[QQt;M?@b2#S:Rr[>A_cCVzeo? ZkV:?fVdjZ'{K{\NcuM#)H2R`jST(¶/=߾Dk6u %HiGᠽ)蛪zPVI;D|nCh N:LJL&(᥈ xbhh'1j6;m ArCa8s3O5ruA#1mߓB'OU@805ŨT؎FS\?9h4s2+GʎLJ.(v(юphױrc5 Ϥê&!%h$"'!([c OVrݛ9hnXqny&N3֓KM'`kMGN P|b+G6m"Q9ʦō}^` 4~p]R*vZ$Zf." kMb觹{wE6i lԢfK-LUboI̢ȯݝs\jvqw77G{/sy|x5TDWдV[O<ńĉ8??d~[y jJͫa.l.澁 %UI1]G?1{10A_Gel;o]8GzdRG%NuFF LJ0R\Rff,d0(30)A+(O_| jO|r8aps-/E@W]"I7Qc(c1҂D &8U:w ϔ|;ٕ83(|Lofw{+dK[)u pן}y>ic D\E) v[ER.;EU^[}ćMY8>JcQD%^[mOh6lfͳ<4F|\zFA#{en/D"~/ЯKd:&x* kROC#` e5K)T16`E]Re .Єj7&9).81뜱-42:X}:]e]#fc7oh_??6xi^7(1֊~mB5zCH̔ȝH4 ](YqH +2*%qn%2мK9Ɓ$L&>kOs@u^wGmc$Xb7#^{HzCRZ+ߦN;k)$gj;[rI(YT (?+c S廭dCퟓsi{G?kuT9UBґdv)ކytumuVK9ް%a8WA«~Y͸Ot{`0x ki1V6ڇʶWإ8->c4Ca88`4L '©Rߨ]Lc﬍XQ+:>Nsimh3TLCSƕm\65 ^>}@E;_TN{zn+`vѽlV 奶w>][mepŲr4 ..fp`]+KOq_j0l`N"wg?\@0.9t2U55\03®~ؖ+(;L8e΍D 5kk rEk+\d%`o@8Ofn車 4__"I)bH:ͦZWW| QM&8kǰ>j#a^j^\Η\ZkPxx.Y˒t:M?7<^.Ojβl_Z,{n@Q\ZCBmVsvY\OmGԃ=l`x(,iMqdP{@f&ޢN>9V~ُJ[ n7VEW??~mf\34^|FҮIf+Տ(<tV4ǴN8eS?W8B>QQ3<lP!&> yRj>W0QH}f}IhӮWoͯj+яWr8r9gU>>L˩*>?? mIԅD2Z$(*ITFB'56+NV-kODpQӛTdTQ9*?o)c)N)ʊBVWx0R>( *$Vn69a?uzɣq_JmMƄ][s .eJ\AMe/}O1Qr}>/e͌5{[r Qw/XipS_Ͷ\p&$/*gK J>H [dNUO1շ&l'W hV40hپ> g2.Z0 '[y#F,?NMv[m^3G`Xk]y}?'vSۖE3n/:O,5n7!d9ãlT$afL1GsI{dƲT{xFNr/Ss(2_'*!bu* #^$ͼC}W/?*%'5Ox8?=?_6"{'1Fݶo^ ߶g/Nl _Ko1!$x.} {iwA荏[,`/Ukuo3fo~y"|^_?=dR4IENDB`dtkwidget-2.1.1/doc/images/clip_window_demo.gif000066400000000000000000037756261352002233700215530ustar00rootroot00000000000000GIF89ay2c\5 jcUdpFp-]ki08)70X7Zl JFLBG@B@B@D@D@F@FBDBDBFBF@D@D@F@FBDBDBFBFBGBGCFCGCGBFDADEDFAEAIBHBMAMDIDHEMDLAIAJALBMDJDJDLDMICILHKDQCQPHSHUUNuPwpUqJotrvCMCRCTCXD[HSISIYI[E\PTUUDaEdDeEjEmIcIdHkHmBqEqAqBqCtBuFqFqFtFvFyFxHsHrHrHuHuLqMqLtLuHxHxGuxz2f ,#ljZfngo /&2&4Ƥ\UTԥpishrU|(\t+pspd͗)k6VgKlUҐ։%ծ ػ+'0ܧe,8,;(5,5     &7)5#7'67EgEUHTFUGViUjݓƖΌדέը댚푧⤯ϣڒ9! NETSCAPE2.0!u,y!\@` <@P .X@T@"Ɖ7^\(0bI1YQ F.B 8 *1˞UnT8򤅑',:eL6 -Ot$ΜBx`:yHlإRs\pcRf٤8a.-jcYj*bΣcB,ڠ^3 t|Ѥ◥cδ)۸sU9[*irй36$H|ſAfU;{R҇ AvZ9ed7?K$0-1PE\jLUgf\T`iBUQ u2ӃeXMIa^75eKdzUpH\]oPUs FYyDVPYeYZIz(@jp6i.p ՗_vShMAYB`,Gזze4N8toWY'_IW_~oD[GGIRv c*q))ԒňSJ!B]>(jyb~9tj/UWZiR垳%5U7jY0w_Y@!,$ЮtRɄU ٻ{,%|}qElDtCmeQgU\ҞRfZvri #^[g4D\w.ya6Z%U{{%!|"#9rMy:%@lmo ՕG'f q a.mlR's$&fҳp }[ymesuibci"H%t|6eK&5 Tcgk[,Z7#I.AyN]6E2L@ EFD]8Vv\ICB[n%Ai+E豙'EkGcS) բq20siT>P酩3h4TL QfG0 oo0&1 EJ0/!J,јmb(/A $,$S R263E}  $QT<0Ax &ceJx2 n1TLRBmmcG'JH1kl~;9ʼn@+̀<-cK ]($ lbOE{ú*P( q#NxB"vhrluDd@%_9פ0-*Q O\-UVĕMrRTiY$ 1wY[BGnK1~ҒE2gS!\o6D)t Vtr|e`S"_m8QȞGzCt pI^L2bi#? dX -Fd^!H݋՘FjDi8 I_2 벦r hL4M鏷)J/7 kFH4$ꑧ+l'Y& ,=snLbqv3 p2 Lh'RS ag_JѨN6ú|Iu2d5`eZDRbb`2g 3҃.$M0* ݼteӞs&>Q SGd!XDҌPV1cݕA`o t^E}@ joD@*n,ΙĽySo{9_wQ" +W#ǚ%b 8ΦAHj[oPՒǙc[hRQ y&r[ -l߳EE" ?`n%nFZo}; He{cCE4MfVȡT4|~ڻ:?|r|g3?8Ms3'lS-p{a- -6ּu ~h5I=&H&G'-I z7n>_K"ә[[U[zX "40HkZ9*i Z5qEIw3w T> .~!JZ *hy l=ak&ERi~BEd53u(egsg=>F7WCe^'=sM ė ,U%O%Ue5;-ja(Fdu嫝Rp{V;尔C\q8EZCxj-diq!E9h5@ǭ XvI6[bmm2Wh&ek4[{wh+ڭ)p_L1gOF`c!4zE7i]= Ag!YibF<%*Z6r^%x}ttѕ+ bRwZ6)[=4v,0GBPE]BCcG\-_/V\7@އ\kyc7s]e3EEalr{5K36&2:p^B!5b#h 8^cR:;9X#7YsFt{uǂ%WGu#/luV6=s&^GU3^=C`~QS@'evT;u&mt&mGrz}^B3D+pGX$ 0У`dZ^Om4mbPt!ӂb+?kV FFz>cw5vG!tN=rt6&*h?zX]M3JAb4:gEg&z5OKPh;Wj<mwEw5`)[ur[qpcQkטZu(N.b3(uXBYtt/y1@am&'0 ?y@;P91 Hi Г&Sŕ? ZɔQJIXSI=IFVyIٓoHHٓSl VyI>IkK)yT&0qyIG9{Yp>iVI9L9[iqYfYIGɛfYQy)=ɚlIʼnjI) ēT٘<$b-OPxy}ɕYT9~ɗi ITPT!ᙕ:E9/a 1 V 橔^9ٗi@Y? ~YٙU 9bɢJH7)AfɣlYɔidi_Ii YY1I>ZNiuY9|)ɝz9m Q*eiyUyΉJ9iʖyP])k:VYb'[ dɗ: Tfʓf飉YC'5ɥPz;ѭ;+` `&p`@.b: @:O)F9`*)׹` I I )V YƚY!jHS *j꘠ɕH_ƺyɟRɟnj{z9 YyXw +Ț: ?Z™_\zZyTТ ]i:;ٝꨴ٧ʙ {C֊ h&ڡ@ҪD ٧w$pu qKT>{<Jr::;;9UY&ZT]gz::;WYQ9{:J]Wٟ~y駩K)b ʵ?Z t G WK9Ri[W[$\JR˳ նPӅYʫ |]mY|*Յ]]z.ʢ֫,ɥ{݊](NOm(Nћ|  ؛HJp[º`H:bZD`Il[0q`J0\LgPN z>i[a+@1kr39Ql&ko>^NuҪӆި ]m5c-z)Cpa1@90\JlbZ;O݇}]Im0+2_})^CON̎]l?@8^p0?DB]!Mk|(emPSMߍ=E @Pp@1b$4!P‚:l8 & , 41$F^aQ#Ƌ7*Xǖ%WbɄu&d&P',aƖLō*5n uIT0U^DxȐ݊UWv52oGWo" *T\ ȑĥ`ʼn $HTP_vS,ʌ^{D WY֤ifu^zLswn1UXťS'եB'7#ѼYn]0y^ő=s<[jpa n<≠ PO- b:x %d"5B*mC垢)J掓/, 7@z)$K3\ Q'>:Ԑ4b0)@  V@` #r%c 9S#";a 0 8L(2NkJ bkLd!b'Gs'LX!4؀4˹r +4 =2mj "SL"\R#j;Kqh n1CBsQ'K21)<O&H%T;VY]%v&D-J(W)t pQ<)ywѯ啽cj3c2QIUL=@ b!6XaT+8Ј~ !L8A>8!N 6` $v/p[IA3+4/"`3Uh;bZ$l j~CC#My[H [-~;VY67CB!jV b,(ͺL˫^)暚m[q5E"+QǾrǷc8KU`5LңY$r>ĺK$>ҢDܗ#h`p+< 40^ Mi`15Ð>@:3AdE #T64SYV!8\t*h=tsFC#MJGhFtj5SqNZUY)N,m;H̄Y(!&f@" AҴ4 W=XV5(}I`68Wլ8zbH3Q'WS#g(U-({Ch)4a߂IXDioCJT)}ᚘ$--\V|)^4DД (ҹZNqQ@ VЁ (H > ˜Q#+g;"*͠%"mrh1 Ȓh> 9'BZ3|4,3D3aÉuH*/0?8 ]kgŢ:lp>z@C:4DH3Æ>¢8Z?hR* :E+r[E{YjZB' 8#+]?3` =D0NI=;#-ul"v\ɈU b뫻=d =9÷/0Hh>h3"LW19>JH8BK:E$'Z$\*ĜEI$@>䰐*8s"ʿ@*l`L3ca.!29'B_4$c$AȾI'(I33l7`ȯHQ\4LQ.CIJpD|lz\dP+~YFIUaG2i2OVEaL(MXOJrJ>{BT%vĩ=0<$[lvk;b,l 41,PѽlOɥ:س :+;A,* \)UDeIJ2C! ?| lm>FMALL`_K3? +P8/c?NtQ6]F,VCavKׁ;5![DMCJhTMSF6{RS2VDjԟNJD$%]@ ;1f|ơ BK \x Ta Lyġyk+K)X1/3v2G/|.Ȍ[8=Uѧ]ٓ4CCւdZVZlѯ+Z2 V,Z6Zfm+ }Z>Ǽ+H]Z_¢Z~D ,[ĵQ;V}<~<[fUC^ղ8Z=c2Uڗ ZUHU\T]ZZڥ\d3 `fAm323T<ɜڸL=c\].k]ޮ-ܮ%\ս3gs\B8_ Zȵ\E ]3[U}\53^Z=[k̵Z,_.K[mMܿ_[]\U8 m\ۦ[GL=U[6M-C~`f8;l]5\Kݫe\~>`!N3岑!`6\&c[66\-Z޲M`>^Э̣]bå8>N)^s`;.?[Ьb\  c cDn[_`_-3d5[-`\* 7da"QNb R\n3.`4FbJ\JV}cH_Lݩ}dmb$ [}!Bd;mTnޥ8fIafN\3.`\Z67}Ǘc9`fh[\`BV4cfh5]HaNf-W ފDf"5.a6nVV[nFbVbUcmg.[}i❽x>f59F`2e5b.,j[6`ie\3jS[, VUd-] 0%\[iW_eeL\.Zgb\fۜd\F_3f랆F_e Vh~i_GOajg&l6eE^)Vlyg(fn֍^ .`ۦ\d]6fb^\%_.>a>иh +A^osj3U^n`;PZgVb_ml'Enm5IdlVZn>Ԧpɶ\in۷ Gdvlӕm4{mNpn|l.w+pj &օpm~f ͦg-Lf2h vs_ s=[h'N[rV&n.m&oi_߆q|le`Ld>3Vc$lM߳&!GlMms9MQ0ruedlgq p5Xs>mCO.g.kh_V&FhnmY]SZ23EsׁoftDWlpd7VVsOP__QsxWb|z&h|/ "G8`fi`RcGֲXWL&6wpl_jwtUVel䣖4W, tPnUx=:/z6FynhhuZr4wzmM^OVn- 2-{..~e 캿0e<őt1N= DSDbe`%&0{ZǷV (UT'netţ9aF7md5/(?w.[0y[. r(ulqterEO} e"y, Y5ټ$P=Qœ(_{)@ MFlVeERgɒ&uڳ /[$^OQh#p-pJOuzr]][׷u\6Xdzb ˲{26/49 VD4`ˆ[^2-R/b7=f3-]\pkX+P NdgJ+^{k[Zf=>:Ԧ4s%Rfx !:[>>ks MsL@.9}|,I ̋>^ɉ) eS|^Z}}DK`50e ܬ ] Z%Y!["!MDWaG.m9@nmԾ* J! &.`!EbeLamXdzC@  LY_at}O.uz, $*D|V5I]mzm V v'v֥S(A .b"ڹ=!.әb[P,!@9G@tE94vY#[)⩱_GN3N_.&&UaG  ]L(D@8"YA^UcJVjV<[=:=%Y63830#?,O4jaW ՁcђDr!bP L I ޢBڤ-פdUcJbLF&u%)U&"]ZPciXT5TJ bv啱#7p'qrVV~e%Y128>^ @I¤)Jea x 4 ~b+r,`ڐƍbPdb2z\H"[Z,"N֤e"ekB!Bg].fQ4!2 5zd yE#(nWJ`q(hqo*'X2'=:gh382,C3,2 !^ \K69@uUk1]R~Z(˒cmD |.d+jgh~!~(-xZ%bGS@Ȍ>ib]"DH`̡$&꓂L{ <*HVMⓎi(@`XD @8UfW"`pjp 讦(k..3)(P@ $en\0@Y`{ աJ*N ,ŘTo|j]))ـ* 6fF+Fӥvާ*[|>Jݸ)uXl"(j}Lθ)^T!>6*GRn 쀪.+84jU Huv +B-벆101,+|}Kv$ ĦrktJl"\Nl\^|VѝV BҟSAyg-2$r25jF"oFSk,ڭڭ2Ê+JDn.UT&*"xFDnf&oǂkER@ |Җ5#B-:Jq/o㰺~ms0 ٞ-2N\sOSVjR" u 6j}*2JS(ūr0^o}zl ʪ+6Gj̹W)"/kvj?l ߰nOnn#E6eYю!(4/Vqp/"_Q#<ﲖؖm1i2J` .˶z p(y6`Rq~ZF`8%FB氦01r+-Zk$Ů ,6*F83z_sĢ2NZ9m*_j-B2#3n3C,R8XJ` ï5G%2Fg4*#S#($G$(%t18g& pJ&/1*D= X{ t.PK>ViЖS,Ю1:v (S|.7#4Z1>sjs ;͚lnN͞l?o@rXۭ jrsZ=kZ˫+ _?uJAuO,cU<f^3sD/EW4GӑF6l_-rkseB2jC`I% 0140v&&#'_ t*.c.yƱ$eCրGrf5n3r*aXuۮ{nn^۩A;1\8[-cqo;o6R|)T~DEB@#VCDvnj*Yƶ9G9q-nnI;'w61o0 /.r?~kpV;@S 6nsGrVn=qg"WV÷|CaSǼW1<581/ss,7+]W9ǷZ+bn{u8*z]vS;2ײ/5+|C j"3< N׆4kÐ/y!Ϩm?r +Sr&wqÕt&/0;r'X` @b.Of?(֞D_#Gqsywz^|ў09;:xoso:mF3Ws[_/6]1׷Nuev0ɾn{Ce6g6_g_.[s߉ꀸ ޱܠJ\" jC2趲 N >վQ7DwE{cH4'kq};}qt+ @Z%mؚ[;b: 8fs^27inz+fuK0vq0S>'7 w\ (AT0c8雺_ wtS7^l['ó}Rʋ@8 24C2-ۯ=jrطؿv׶p%gۻ03(WB : ԁd̰8ac@|AR%JhF˘wܘi 7x~#Ι-aҥԨQ1y3g͝[wڜ:UgM_A"!6L;e~\-ЮHSn5v&U35ΞuzydٜeWח y,ּ/뮬cI1rC38pp-fˌwfÉ7~3˙7w<[tөW {v۵q nܺ7۶mٷw^{ߵ?vG@@;AYb"ȠaZ…!d>ȶftZJNɣ<"kLB* JR¦rK(;;+k+0ʦ:$0,(2/J,;kn* &9,+(˨&ʧs0,(fTtI)6P^Qf@MP T;uT/;#孁tRALQKYZ lD`'a@!^X⬍a 2Ω/%#fEbE) i Oƚ,*QX(d?6Zʪu#. 7hTqVS+S Q.ؖ\:<}F9]"7zPv#]%N@ P@rpO`їbGyz'K3D'2QP$*j33y @Mؘ,&9DmV[WhM4X< gZ k~lӓ!Wkt5Qt1(N<@"K[F"n`43}Ty<NCmos[۾A73Ẃ`/e T8Y]mÒ&u֘.IE;4l *Kt`YUt30'Nt} po UZ ϰyH=ű!ID X lͨٴq$>qeF>2moC:%n@TR\k omrڽ7 8j7AE0N.PhttXacľ}~V/` *UX\C*KU@s]Zovח $Pm*7=?k2xv]ZoEvo}^ vB pl$&m*BM|Kj"6,/TZ{yO2KbK@\o *lM("RPRt06ϱ jQ|`Ha Ti&hͷǒA>lF#K/ ހzᶮ 06HN8.byiKo&/ٺ .kLyjGFH´Jh'Bn^*%^bIĈ{^|-:pl9l%N&LPd,Ю\6NjI!2! b N ]  Q퓤mF &dZ~ 00~CLFbzaD.،. ؔtPȾ`ln$L:8g ,l|Nb#*omQ-G{B EFL% H8Rji̤YɲQOl*C #?zˁq#d(;n]0F8/#jN|h$H^{^6o'NlIn.#J.b$﬌Btlb)0\z(l%b4;k &#Q5b4S5#1䚎F# hR.Z,h) >9cݾ#UT+,8Β7 os;r[f@-c%F#Ff51S&GfH&O>QK֌&6a3?s?{n5?3 tG"l1S3?=5ݓ'$T3+T5AT4cN)s%PQ~0$Mo" ) Yְ8kG>r l;k̆n(I;ta N.F $j?]25C.CL??7>ATCT?TM9@t8C tbVSC>!NNM BCO -`HjC܇E.F2hm8MGfzG1?tHj޲: j0JfJeCu0  @a35 4RTtvAE5?SB4ŴCLӴ[9 N4'/_bATM [׵[33^7ZuB?uQ;bRU J!r!f7et)=U8ADuTwTM< M ёm: 7hVZ|An +W7Hn"$@H6nm0MQK[50`guC5LL%TC[tM334\e.Lti)TYTZ BN3V~,Ƞa7718k8CU.<&vb9TcMѩo"dSKV"W.A^+x("0L6A3_5M^E4Oi/_NTlgKgV^3Nv[5iQ+6vk5RSl!uf@E+tp0>a0nTI*U;Z ӐA25!qK-C|AU;!7W"I"O'T\UAu8ljstT^Og9M7MuZ?\d]zSVn&< oů*WݺC?bϑ?ptَ99W;fpow%dwqe)A.`5MN3#UZChiXvvCLu[U\[B]74+.?VkNaw5Du<9wEAZ8!qIymVOˊ8XW8c=qUُ :#.@jtkzc?v1:!zAK ☜gȖ~TH1ZUgBQ'ty]a)Bvsysٔ;xiC y?Kbnx-qs%rЇ7c㍈wt9J|{c9ۨc9+IicLnZ ndǍ;u AZ1@/TgՃ#^#4Z9yxcD3$ t 9\Bړ:_ZL763s_7`?ڇC:Ꭴ֤oC8_92;20I{:Ƥo&HrZ8uU~ASAi Mĭyu>ڐ#7s/uy]1[C{<>kA!]ZhLD]Mx|*R_A:>C:ɖ924{=6vIZF|pLUe;a+);C kHGy?W iZ+ ݫK Y٧c˒mBpqYFFE5Z/.0+OQpRO Pbf/eVH-ӂ-)\kac}nr`nU7چP[/w[f;&!i6lnnDgK1gYJ%h~{EG6`} CjUIvL%sG|;$+rLfRN0\|q\ BIcDC׾uqt= dKZւ?Er%v)ҏ|LC+i5LO81$LM^2JR6͜ԙϹrϱ,m @2dKH;&$ O21gb |),v|a5)ai0`L$YtmѳEy̓l+OTp;@HzuRЅK8dD2EТN(YhB6%-eVŠ]b)t m4dÝh"z#.ᆦZrSUU8GDMU"40lW[Y1b4%uVBk[<b[օCmnh/\ׁn "KXmM)L9tL]W1(ۋ'ߔ.hCM1&t[< :?2:.PkKԞ:ֹR x3)[K)4L䆹E-BwRuh3V2g:];Q,hI/"-u^?B.4^u$~d-/YNJ8 'tdH a\e90 8pNJ4Ic[jmj`I1!NMpc܊x;HsD:C5~t:{Xe0-8kՍ2;ܢbȲ]pQ}Jރ*i]2]fyn@jk1ʵ+QB-0fKHڵipcIF'dL]i-<:ըn5 2u LJ$Ob(BPVv-tUh+=`݉X}mܶG nb2B6m/݋5Hi7"Pw bnIgMD[\hfQ4q/h8=8Ko0}Jy8#JA 2N-Oj]ri@ܼ#Qms(H|(xSԲ|dսSzrA>nH`޲?y1+tUfLN x= +Uxmy4y$0@ $RKB)Zj 7( pSTB7\E*.D;zKes@pC4U5+%|KFqw5Ň8ce/_Vu}V'-Qgr}_WfWWN-oHoPqwAlHiSs+ `g50&''VyaihZtby& z4aD2vkz$H+?us"\*x4K4bUX$NJgpPfFX Om@ ńeOuwnwWH~f[oVbPoژga2j|La]&>a`9hh F9T9Ȁ hJAArK% 7Gucq\J[1MDO@ D0׊ƷNX >@5Y Ptt$?HWjxv◔d(XRIvgP1dm&CAYd5z8&qXjwyBZ,1&9&S*=EcO0c+]D0]%NWm+ide#1i 6 焯  ?fgXt~sJ\b~qi `V"WY,wX@iJt ab5098't)ZayBחyX .'z! Ʉ*sD[6GL5kUv]%虲h]u"˧H갚!z #z КN.7ŹHk65_kׅ@l1¹$AR$f Qi/G 7Y+h)h h91u'1ف|y )y(CV*Lds9A{ɉ2h"*C|tzj-С!j$* (@-آ7XxWegWmǣ#^ U(ϩfXpIxUd:BB%j,Jb* gzir 9;P`l "G=KPsޡ[@ 0"=:D5HZ\ )JѢ fvI5vIBnPQ%j Sb`>XzN'CgV1u#yɬ,h  3I!aMںzSAz8(~* ЮY*a@XFۦ0k{ 'VpFp^FvnOUKsO2# 7bW"˯c^ɎX5 wqQsSb*by{Yfz  4LP0w ۊLl5<k8wվ7JKyFŊ8ly7/Cg,*[e C x)Reg6 抽 o lAnw+7 ^ gL1OۆSΨo@j.qaݹ89ܠa1;xܖ"$|) `j <'/ַmL0ʉO ~>;nà 'Πݾn.9-\#/.8&ۈ.~!-I˒@m Zgƕw?B^oa˪/$_|?*Oֹٺ[7֫EN @p88?A_C>ֶg~VKOO6To?}ta^$oҥMWz{IΉז!0",R J:9D pLL7ŝi±~ S,Z?.J@RBDXT ,h-^` =Vd&@,1W+]|SLTJSN=}_EET_ŌZ X1UÚU֭ͼ~V,XgeB%mݾ{\uÅӗWopK{Եl gClwsذ6n,Glrd͝=eѣQYudŊka'6[Yl^y⪕XrcT7 uUT* uدÀ./_P'^Yٷ_nl.]LjѯX~%ZnE@mAXbi0B %&.!Q"Ri(>!O!@ &xq^hBgdr'~VbH#r**j,)ʬPAE./纫8JT6[MŶ4L8GÓ9Mۓ<7[M۸fcm7GSuKS(++:RaNN<`|I<ރ+KO^ÏvOA_LPAmb+& 0f XD"E# 2qqu ]7\W$[I'7eJ}sFP.0PCe27a;M2ML&393K 9KNԺld:0C,C խJIMlR:zA5RTJUuVc}fYW]ï_ @[ق64lQRQD֢\ iZO<"\qǝ\tWzd7qr!2^xN*{}gmvW k` .Kxa\q6"2&4J=O& d\ bC -W`feRˏggya=朴*&:T_գSj/k\:l 3\!fNL$#:IU7,!mۛgsx@\~ UB@g1 P{{Iu"& UyAqP&@`\ RI. #Uf+K9Df29L9(,F1Pw ix͐1NƲY8@bzĄU Q_G12eq+rUT$:v4gĠ )jHxşAc@,iC>BJ#!!ti[HC8 4m P7@ēb:щTZpG=+5K]$eZ]V)aUaJ)7a9V/{®Ԛ4Pzn:q8סx g#No6PYkxc0>y11 kPgr)r*:IK;CWPd=x<Ed'ɨG;JmmXEeR5ȑ,"Rm"z(Q䄊,@o}0TVл9JWX,υ dD5q jc3!HeϪp1f53͢E ӐyɊPE+ğ-a =9o> `8E܌D+ZH> V:fg+h0L#sӜ&;>ACW:laضr%KNiktыIguky6gmSl899FE{JlG=ƪ}UlAf<$J`\8a)K[f܉!Y;`B" ً/,A tPo\& iP{At9;B$$jk3LCZ+/RS111*7ďPQx={A($?HXH[L޲[;\Z@EBɔ1[.L{cQQ3 ItNUd'h&8,Jۼ8a$FJKFJ))if+YzƱ'TKWjP{Ks60l@;1>90!G+B$":,n::*?l\1{M"!);,ԼH?aۭZٜڬ XbQ2Yg" 9"Y@0LuLM%s(1|SO+Q; wadC\# ֔m-#1@DcyRG 9QR{ҵ9p7ןW׏N(#*:ʥ<7;Y&ۧ'4mUaaYKY`f\a܂Pa-NS,wRp)3WWUlb8@)v*.X+.^]/F*A;]堯?C7nL0TZ9POjĴ9d yZNXd\9hJ6K.u@l΋|eh};]6cхV.Wͅ3me^=F\\!)^f|b9/Q )\Rwn,71s/]ݳ%w^.ڵ]\\ m(O2XmƋHӏGAHV|HBh5iKSc LkliYWyG>$;ȝn`֡c\h&dvDֱͨP] C*$MfKdf& keY)Fklbekfd(h}%S|u^]<tfJl;%g5.9Axnim; `|QәI.L,DJAĠ.u8?r;AiUF[fE?m~f-*32W-MqM@...lw lgFWƎpIfP p덺qmBBcxZS}0Mbދ&k VJnW?a` jp.iyЅ_`'岅vV:D.ev%wsv."tTWl-5|{WX/Eop}plI1A!B^XoSBMxFhyɯiU+KyZ͟[mPy`i'iɏ/?y1XxsA!Ҧiwr1**?Me6,lzwzSܶ7-=6\{'o7gtڵ4]@ꚳ"]%+V̷m2FtT^f"C"cƵ%y2ʺrY)T> Y>*"z5֮Wdɒ޽ ~V[e8ZʟӢ%KVtӯcj;Pw}<͋J^>F/_3O%NN H  _M01tRaZX%r%Nfh!'xb'氈@̜dPB$D7☊.xlxE!F[3(M>@դ2E#SL6PEQe5]U|YSYOXWr啙gRZJ!UUWKSTrՉ+uݥSu2A5MifQs1˰[oAfa&SgHR-򚩧6nqb\q"\s(w.Eׅ7^xޝw(׬|W{ɗ~% 6фLD "a'8nˢ99QB&L+9E=8HDD3 dLOR$5NIQZ.eŃM_f &UӼْW_&Wք\\]饗f)2b.)D 6lnMzojo\q)uU,Et}rw*[^G(Rk|j[P,oۡcx["+# )St0a;3KSNN4M4\?u_AKQcVTe+:,s. WVj錝u'*(TW蓍! ^< mQsJdfY[c3YT@2* 8s㜺=gnıބu7\)B8!p2$eC'ZԲ3nQ[: 8a沐JDҙ_2Q:u2@hW;A*; /&YF̲ dOyMj2la54bXA`:U1&rjud"9ѕsJhV`E!تiyL ?ۖHDrF: NսS^cT>9YjsRQx1 2Jd"gi'mcOHJH Rp\唆̷6H,pNqSNƺ.J~k06 üf fԦ'rkXg;}wBt*[G2HiRL>v9ln r/ۦ/ LmuݦJ\dMgu P{;NcfɸkEeSъ"Oiťf޴YMs>Xh ↮}9.E!HOMz%m.spټ0hEvNgENl}V$H zcИc+ֱ]|cjlPC+wYCP+$ޙL 1jzzXUAڱTS%˲\SX7Py\YDZZ@цݽ$]?iߑp_3XX^FG@ 5CO E_Nߑ99mj[PQL+>hVqQ+,nx`O `M`*B-",8D - vW` BUyBs|!Gt$ ޢE YN ٕD^Vh`a}8!H%ad5eΊ9D/GȠmtI<֔"b>p#jidޱ%I%$JRDb9qИ*ܘ.0F++U.d,D$K0czY|1#]\u y\x`ciq\78rG̡ZH-;F)և݋$%?1D5ȊXMk(dP q2" LRj1]4-X`X0rE%Ц+XK.GE۫0ܰW-$NNſgI%QYjcb/S2nXWޜWWWPSz\X9] _ZS熙V߬r_#A ?78(4pCx_?&!&fa4.dclݲQ_vFd-HDr$+֢_k2OID4Ly FN"g2۵M!mlf%I$3nP 2n'q!5,gDe9g 1u VM |ip'.ڜȵy~%9!E8|Z9}'cƣėqRFR2 >-DۚXXazwP4iX:{ N{} UK}%6j@*R`NI˃*AZ(b¨D+حjcn$q*jՒ,z к+pdbӆܠYDö-|Jr6`ңáioѴiXJ5tૣ5Zt䫿j#ޞ'YF!L!9!]N ]\^l,HǞB+ fl^ɚBӸecm-mʕ'((灹ܦ%ˢ2. ja^%:hl炪Ɏjb<c줪VLniߙBQnZ[k Jm°*U@s0mܛV1J F+Hoշ fZƶV'ނcmM5VܖmmP<ihvH;>/ 0a]"h? &>)+enHᔌ]pªR.f aR2^0$ (v7؅$T冎@/'+VvuoNB^\܈Uiyl1'N^qZSaHo<qϋ7Ƃ'JBH|7@gvn_*ƣrA2VkBL8#R$!f$N&O-m.+Rgpo 6cd~]󆗿 CXo.FFVC.J22&iG(dy8( 3譟 4o9R)6klK7SV8GH!rlG $dIPdR檆BK /$2(t^*C&Ff$3qҍY,e|Oq%ID.DQKMS6t@ 1O4X*5}"*T5q6K6,VUWsC h$$]*q534<2=^)N"-u@ t 荖o{ߪi)D.B|Ϸ{`v`w2FMfYGkb;40pe#X1YBV.wnO:t47D7X }E"4w0BQd!j+CJƃD4.>DIG[^^vi8q:)XZy8zze܋xU@>`asұ9s?-h퐵ow*"u7Iy? jfIԢRb72|M b9s;wEèKrd;m W\m/[x?֒pλԢDdh@'d"|2kd 2 lah! +H\%9BD[Bɥ`jQQD)Flip yDO )J+!j",jKJi˕q&˙+ӰŎu(s:mM޼-!y=adfitCCiK9Tƚh4[ MEKMc94ԅӏ3P>zV[2t!,4 E?j9EmYT}Q&lQ?QpwI$ k^z2gת*,zE ̾̇S9TqsTRkuStͦmM?I&y8dS:jbfh9TLqYX:ż.c`Z\2],CT~~Lt^}5&1 B<PZY{6>ʖۿSZ %\vQuqXH}I|;7y5<.Ƃѣ|.^qř.Qx16s1\XFD9=]x ]SEd4hNKh:PUfpY:@C137~fohW_uU&>,hmH#jBOpdZ~"N \ڊ UQ]SǍ( (7$8) Wƒ%tz%%ȋlddaPYlTn8xț  &Ѹ"[(3ZzxEtƽʳ5lab%Hk{Tتlc#x Q LD|lɂ#F‚V" b0ɹz$ɵpDV^I"C3!0 ؂Rw'ŠyL3C#6hd|2yBEzy23xfjި">I5XO_|*=`ɴn-,hI+-2Dju" Hip2p \Zqa-G8)(\Z9K$Uac冠á-l@S6 %ITlNLN!Mv(Ewv1$W4yT? j8q>CG"tPkb*zI4cf JfWtAH $e(@ fYPV "!D<~$dq)袞p0hҨ=A-r]r)*yn`T*}}XD4 y>&4} ]pʿ; hPETm*ۛBy4cc?qG錊4͘AF#>f9K*OhdžQC^UXmӹ-o2MKT\䚲 I)4tBݜPW]׭%NxlWHծTɬK`J/WLý/``cU "ߦ 42k+3xlT56kpv8N:=Y"AƮ86곯gb['¡h|:jQF:oA[\HD6FFtO.r+kXd\), KV\fj+-$b̴toK&l qӔo5 l&Qhjz_AmTlfoQܫ}'5^fh8OG icr*Ա6x}a<\ƹPyk8 p$^dIWV6{'\ h깡>IHҜvyGt*={|w6q2zS4ĺvg$=CrX!(uMKs%AeK"ި\N.)X!(L`{Yz!y|^yD&Vq{5!aLm/!>CFoOg4+@4B!nfRPAi09{"PD- i>ڧ^ff,>~Voo뒐/4ⷘol PNĔnPhB' wb(ȏ¯( خϗskHLGm쏽t,I.v a+#w03jmdC!3Z0=9^hzF:31 X~P,:+nUr0>0Co] !HnZ o︠ɨڶ0Z]n ~ʰG ` ʢHЪp0+${iޮ"dСAg/v1aaȉJ!5a QgSNp)+v4 !q#)qe`@fi/4lϳ&&~qxQ}H*ǐm !4:FLOdf"Pw^Ȱ "Q%Hm-0)ơ G:0P"W/" M's3!cN`l9s ű.4Yӌs6`T-kO.abhoh#ijL#!&3[L3!k1VgL/_6)rrWl\61VF8jaakob*YZ0c~'q0|pe'co"W˾KeW^FW(tYt/uZuat:av h5[@t r|0hT!Hr_/3wkm:/ %Ai@!O928_(W() f.XMt>?YtIMBNgZq^AOn=11\;VwXwâe0bBCnl9CWRRX:2v1Q; 2 bˋ8 ˸mmx)H)~xw٦p_ Crr dQ'J#s#y(]"(stQY.8uIM}6 Yy\y !#j${AiuTF-]URXc9Q_2V囹#*j'Y-zqW٫mIT]a?D ɖM:%WqŒY˼&zyBs,ϓ ;<Ɏ`˂;tQZEsTLG1,hZwŁ\_ڽ DrygLjw989Xz{r:3HMzLl՘;JzW\ˬ׸:c1"RuښD:VFVds΢Ӱ ;st 5f!/8=yKl7hq>DKM[/lDWmt*S2۵*wv £`8չ Ǜ}Ǩ{b!]kPZZZq[Vѻs' rہ(.{RիV7M POx.>;%`LanXIjKgwBD'ݍx17Lkƒ3M`@<x| d(iS[k"iܺ_J"&?D[IʭZuM7 A]S =˚lb7VE+ǖ+ұ٭jˣصd<օ?J=r|UݳXVc٥e!h)1:K%W$wس؏WJ}u\ü=(<̥Kq P e<*;m/ۂR:[ޏ3\Ahj7>7BNY.}6]c^nc` iT*'9ZJ<3.4|*.bŻZؽrnUqjeu,ux̍~ 2f `!,b]ģSS>:Xޕe[| ֗S%*@~* R L*4KÇbI%13jܸ1hB$ɓ(S\iR(Q0cʜ)jM1m)?; I>FmĴџ?6uĊUX\j׭YZzulUVb]0E'J:ɝK.]Kx˷_x%  Rst)^|Μ9Ɛ!'Β3w3q:e)`Pȩ^+Tb˞Mm]!ͻo[l []R笢B%}sϳgEZ4kޣUmҧ?[AU˗=Ă a釅P.X߀h~r S UHB.$}UTGBKFH!TK,$J8S5 QB娔QH혔TR$SiuWE^QdU)֒K*yRp5~eY`Yv^evyfduiqvfd&hlJklgm^p7r9wvUu1*)w݁g4W1^-7B_ >ª'Cݗ᮵laDN$- "tшBR(ќbԲQ4f+O9TT:ȣE S%즕U&٤Sĕ%cumɥiycdf3ghsyʟgL}>;(mfɎLGՀ7^ƌ^:*r*&Ƞ@= Gꩼfk [ǎxHDK+V{(dhL4~ (cv%%YjՓ~e {G bWofwXcSH|AS=^Mh$D9I"k`Iض͍ }G]:Q4ݠԤMF $@^vi!9eslڋ%c *fԌ443a^çbl*t`CTІ!!3D N= '3ULYi"jVIB1dhҒ'2 p#:@JytG=F\|Jh?@ ҟ Yj%Jv JJP@LRP.|c:05MP BЉQ%kб'Wԥ-_\ڰ8.K_.xOAg:O˔U\uhJ8*UkjqY\IdNxSEtI^r&g%yGwTJ>6M R2(AR7vTJSʕъ*Ea-ȝɂd e@9ϙJ</ mZ7ڰ qӝw>DFz9*CK꫈6SN]:^U#?bQ˹Kh:NغΡm 4{"7n+P>PhdJ\0X;&0N,f$Ҡ5%SgYJΦdeJ(W`Cek_ [Җ>mLy,nQ׸En7?pDl`d]]}6n;u~B ܞ#"IeuJ LmC{w0600HБNj&BSh5,CM-֎8f*>ƉZL/ź}6ccMHq1bOjq} SWAFts8j۞)ׯ, f1`2=~ RG|>_t\AL.㨝r3}6J<+Ss-b6*g:i i imh7.WCY7-Zx-f2E=r4sjq{c(i]lEWVZ;Ƕ&YpѐKFYϋoP"MA }闢w'{]*9>M Mu}ui#}0b_J+Ǵ9;NLA~yS{:-_ƵdwMj=ys_}GOkhY$ݽƫ x-fԭ…f%-Xg􃟬˟MӉq R:踻k\o=RF9ʹ%px 8qTcy[B!yi%zHz0gz#z35e>DvN6HV{?w{;btDtl"1 `7KtwuPOwm:4ȃ uuf|v_[@/]gu}Bv}P}o'o'asg~vw^ Ԡxp 2gx׆  Wvxh쁇q (q&LuL hyvz\؁-7]5']#(6&re'(RJltN؃:hY'nve`a9p&9OR'}Uo'~H~օ^xw۰ px(w1 @q X xXXx8yGS-ry؈yr8 Rs\+r"X\Vb>lV&x>G‚cl/ȁ;WMlgm')=L@_Gxf^WFh|&gL(sP6g0gcfhhw8q ׀(``p(Ӡllxpqyvh!Tc<Ih-אՐ ِUzV"yzc1"6H#skV Y.q#8f(a7ؒV![iu 䓑b=9lvIbq&`hG`l"'S [h~WYنא)戎mٖ tIxu wzɗFEr1XУri )UȲ`T1z1љiA>dU)W#it47't)xEG9I7i_V'/X00EI S`9霠9 Gw׉٩ɆYTɞXYqiyϤ8HĈp  ɘǂsj,ɠ -?!NL6eCy ;)٨UvIXUē}82`Ę7vP`qg0')BqJZ~Ѥ밍XU 牞Z: z͐ Ț_ b(jh:DP kzq5s*-ZçV6*-G{dxtOĊG&&Zmڒ+8m %/IXn4YAZ'vIR7hzqH,[˺٬2;h*hl:;\ ɐʘQS5! G-Ƨ)o%.X$JŖOʨ5(d,kYJI9v0Z&`GQhXxePhJ}KF1R ZHww&(-; Ǫk28Keڹ::A)C[[tHk*]BF21|Gz>+l沵J{.$y( 3'e9X-ɼ_prm}[ՓZIc з%Ak~P Z/1عK3`:y{ "ZJk,$]2 HqZQQGÛċ1!1(9f{&ŷP v/cG&m%$9YJ̩4j;R;K}IJ~Al Tʿ+h<,Jeɭi u۔b; Fm[s#^>/Kr2̨97:l)j p97Df I{i"ʔ꾱Z, ~(g+qF{|dj{?zd}P!ۗ >Ʒ^Ѣ^›^ʥ*^rAmAܒp:ͭоΙ BIސ|˶ @R`ݽ ]ƞ 8MC{W"QcNkk<67tN=O=R 7-(|]ʻ=|JR9BDޓ nM,J ͪnG/gaY;N X*pi<ͬ䚧 ݐ쭭؜*"ӲX#X4OFX; Oq <15|}翍}QknI9of~m ʩq0ҍP ̜!DཬM؋Y ޒMԌ p* R"t,BefE5^ڶNg^lIqڡC>8J뚏8 8d9A0'In,W%4n8@-~xɅ,}"R"]弉`" `n65OZ73~/"1O67e[皰@1 0Q(IDOqn!&%`ϸQ'\9'N lhl|i?5 /kJM\Ϻ*}6-N)8OF L/RA C[pix 4nؑ%K@sNv$RK0Aj41eJs7q3Ξ6J)L΍cӥjtjm=ǵVRMVie7^Ms]y_&#\1ĉ/FaȵjupZpmܹsβ6iԩORMKVhUv(Ru羽oE U?ɏ/g|QơC3*uٯ?ď'_^n:tA#Ð<ޓ<>2/@N;EȊ, j$ 'TV; Q#DD3p'TX%QVu]cʪFd˂QFuYc"Yrk6&)ulZ| K)5Kt4EMz\677S&8;eSTHxD 5D*SM3td9ETRr0U,aS_eBIh2[}rJWsW^L,Sڶ| 9Io/qwѥK\jywm;Kzռ5} {`:[8$X>8mĽH?>OӒ3mŌ{5ϟ5Yna_h_7;pP`&֞Iq`)L\3+dAF4BXU*3IKHY=EvІpWˆ+vnq /{RDz~=v"3^bw BA8Ql ޘ\?u(\ef nDYVcad{;Zg3Т"YDNJ0.l".oGUs\K RQ6GG"Nh̄M{p&*87S@%`QS*YY#Z ?'5ZCgqt>LH[vؖqߛ|3nmoGlujDfuj~=1w)r9+0lf! X`/Jճ=7ه((9MxX>,BK݀%/%AEw 4 .xΨFg9\:ձxÞqD;)8c[#<哧2̳W,X"'ͬE۾l%TDt o:`aֆ5Z vZXvC{ˢ ~.HS7]QqM2rZn Gx~1^bݸv`XL&|iMx翮kA C 3񠚈jӤ {փ;j,p;q߁ߛt;> >#;&2΀A 覨b1N yߐR )?R[0[#B2?($9??N邗@ͣ+X@::@بd8! 3ʲ@PX:!! %C7D7c牷HZ>A1 ONCDA9 Bq2?$TR:H&\#?ȳ+„ZcG|KΠij-DP̛#';#Gh?xK9)|<#ŔK9ɣEˠ9Ȃ+ȈHDȉ9<, ,x:_lOoS38l3!oҝ!Ժ,^>+Dp*Gtl-tlAy[͈/j JL|18ڨtz?Lˀ0&#<Fbǫ< ȾȾ LqQ9; 9|$ERH|OT4Q -+O\%V= 3( @5P)+=MBmb1ٜS:PsPeg ?;n{;p=Ԯ"r%Wte%Qv}TȁWTϐ}WR~4̊h'=ܕR5(5iI\\U 6J"JZXiĘ:D⹺TI%mٔuٗS CћYK%UD1BYZu2NT UPOO OOW--b[$[Ċf#\h]6m F!z׃uC6Uۨ[0D,JˌMMYkYSP\;r`=54]Iظ"S]G}ݡEՅ5cv<$R?ɗiakZ$@σHNXeLTL+Y0V~oTqesz?^ڑ-eܴ\i cP4KuZ.!f.f#<>$!ke2Z`:cfiNdCMim{i߽%+&gF\x䄕~wv)ygFOu)b`vFKe.֗XEj.g%O84\bh4`h<`'DQVK`g.AIeifq`nvlȎl׭.Ђ^g!Mba t^Mja)礎xL:,(VVR.b◅Mۆ8phvG(p0봾娜 i+[k^朎5=TGid9T VZ@vH-l엛o`.@z?DՔXn[x~xmd׶4eYE$hjfXyʯ,n~Fa XnhY$CG܇;Kn {ZxJőkƉ~ffol6l/7a`/xw[RG pxL:OrRPPjb@ag-{&-Sn؄qH/7&kpqh}.PP#P^MQ(R0ٺn"7+#q sV\2V),*ra/_vob^'3@5r1m\NvpGL@?ٖ\ȭ_AOP߆Mty7nowe`C uPtx;tkT>Kx+?`{.QCB~]gP2{{U3W-kLno~vF%Mb]ɝ\p0#qYqShp+sʫyt|iE8CkҷMP_9; {o {TN{g^ >2d{O`/ s{msHA sꥆyDlꞿyZVYm,~C7O6t]I}@CHCXvzPQA,h` &4!Ĉ}Pƌ7r#Ȑ"3cDVld2%i&Μ:T'Р| P ,Y(m)ԨRRjT/HkbNJ4+Zd33ܵrM z_qF.x1f\1rySg2fpA%,6.if5`ZҮmv#,iNt7 R, BҧS$7Qn(Kϳ'!Cl>xobQIZ+ 8`Lia%&qeYh J_ z7{W_%auЅib9ee9qV"hFZf1:V8 9dx+[pIFp¥sT tUBgBCa%y],G)ywy{y4L4L)S|yw>߁NJ  L]XM8U#XU%vU\aNf6Ek];yڏ=_Akm*yodzbH!s-7A.g%(\j- }].QKEW[z&{nN{gQGi\l/SS<@2Xby_g*[~)^t}٫㤘%;Zu㩼b*lo%q8WU^;Pu{4IKt1mGz8%d|y{ukQMgqEem  ڃm[]?vu ^(If6ida:giH*׳X42Wҩ-֭^ծ}(Ri_q/UGՙ_ݖޑa26㐧_ENW{xqKNyfB! Ag-@ft#d瞪 ] R+XaP X<5»`Tf<%,yx Y"6!mb,𡰅V BgH j4 _% FD1Q" `w(M9`daPiÂ0(1N%m H[8H~$ձC*\!d>oqjH3s3%‡ґᨬ#J Iמ>PLE+" A dr3e.ccVFl,qSܛy>edd+J* Ȉ8☾eL64`y@ʛ<Pn/40wýtWl_{ fFH9hy$f"uHs<2" hhb@C)QFfv#C}6 8|7Ww<(]'+=u'FtQ ^ƢBpY+Xv@ %"va^f&$(ZuLjh2mՋv ͍H YRDfsD?8K{& Jpӛ$k%(;CII:Ә v \S2m ) m k" bCFiuR]wGit}a֚uLu}hޕ6{!#$ %D@·bN[tL*tC=mIwв󳞕I蟣 TJ5*ʇ 寪j [@6j̳WjcM3XV51[A1]Hy[R}k$Ji_Ibm_vH4#`70)ρcr$8 ȦZ'S@Ӌ`Z2B%34  mbq*GεRqAP+Jx}+$a5;d>\fw7gPvo ASNb#șz9%z`t̼Cl ֊r)yR({d3nav1K)Ң> 8B{pr=5/:38̂AVBbMH/58&U";@`35UN0vȲ,2ɿٵ_Nn eofl2k?UpUBe>UlPvm;,IPX x&pJ۸A:T͙o eOat{%l}XDL&8H5۩0v0;gwF%cs;~ L)h,'y٧^aRsQlZmW bDh˯EWwpKۻ[wI:Sr\-v8vu1BM'ᡵͬO" B|)LpMM |4`991]JL(XyO͔ =Y! \]`ZUJTMW]iT}uu!<๚2!FB2_ vYG zޱ"IXʔ@ ֡_PT! b_QR_ ` NQ1b ]޽ aPҤu0EFܬ8(zx1YOCta BDʡJ2ڡ3~GGU厞9͠= =6 ZeE "$]$fp_%=ܣ$Y(bWt\*uZ50YB+_ =Y% #|MDO\F\R0M26nL>MPi!|0J U|QX8#+Q_S :6";h %=v%(&=maz!ڏ1J 1$kb]nC0maOUdG `ʆB袰y\H!IIxGFB GdNM~{YN+S#my !=Sm~#],Tf6fRզff=ve>L=&_x4e5!D!vG]$}ɈB|\4_ 4 yd!\/2HiQJ¡evK,ҤgG&~U"TPe6^ozmRkE"kq(o $S?)N>hqUV$Fm*EN>>Mt>hur='ŧ{d ].>ї^^zCBF !\!NfE (2N͑I#(-Mj&D>MY=ݛH(U [h6f7VmZQ>Rgrjahy<]s" "X=%VL)nxJBT)tٖZCP+CHzCj|"&(f/_g^1Jfԭd}G%dF Ĺ|LUvp4'X6'j'(<+h'9$9F͢vIpith'C:IRΙI'gҩdh)K.b^K+y\ FDnw,BzKhNɑd[!1NBй}  %nhS (n QQrg,uJ(Z X,,>ޣF,eiJҎ*,ވZǯ}'C0oL}-~^ Z@^-zSd]RmF4diPh%liY"0j(,D,ENbn hahǶVpUKm~ ٕpިb,rΓf(v( z]qN.ʢ Pj >N+o/_*EDn=n"1 \2,Un\-M-uTWJCOGz-.H |%JNHĝD{fp"^(iNm0Mp-p᫚y`@b,~2( R}* ^nz, /)k뮰ΰ̒ꊚh=-@dl͊iJ#gq/fi;+3cja7BIJt,ӯqi_qr+z }0/ Zh3ML.[KцFmޞд,Q2MkM|2(M4.ǞlݰҖ)1.RֲjҨzlNb. 0:&jQ1]4+2"t%Xz3߬BPZ1t<󑝩fBrɳjS^vn|!i?o+@c7¡cj D"ey"\ g{ &'?6J2PRArn., Rpouonvq0*w nl3wQQ]%w #wrti`.BY,&wc m:VW)z7f+w[ifFAtqTD| `sp06c$@b;_"uM6|zp6Ǵ!G+r':Ilky6 `on37fT[r?Q7 S7ugqkv [7yuq7yt6dw7Ux'As7NsY{{7638Cڹ}97\;RKyNgu^7kF}~>38{aiٞa8w3RvNf$Kzx%B8hnjcMkǙEUiNyu;gyUJ9N939R[SyV7s+7&[{B(@7.s!y"5󪷝p5]cm满:'Քs7+u+yv[{&ѳc?%;@els;؏cًu5_sڹ׽^z<=Wk/}Z͜\"@;a6bK 4xP< 64bDC.GĆ9vQ!#I`,Yf2ZXj9J1_쉓Λ; Nemj)S8k> ТT2^>ffS".JRd$H"!B@`#YԗuvLoÒ)W3 4hˣI|uf՘O/ s֥eF}s#ݻyNDÉ?t|8rǙ3OthPt郠 .u쀸wW0axG7H=t>Oȏ!}B( bZi,:jk&I& d (`@90, ˺J+/0'-zi2"k/l5H/tDb5ͶΊ<`3:{ Ibp;ͱ>t6$)GMLخ<-~Ks7+NYH!}9?s7Rw7Q"NPD5gn'v¨mUYë yZ5jfn/ p`P-x_I\yA_ȥ(K`G0qz׼S*H]J\lE-sp@;9tCt0,bD}01Q$s2Bu X80 ezUf2\i}cAPEXiT*K y&aՐGFMUV; )~tF&Ն&:nt[3"-podS7I BzPJP=1(R/3r\h8C%gN3¨>PO{Đ"QvHDvBYB]Q֤&JІeWDJnB=Hm̙t)>^hg췵9(kalZĶџ8SJ>=\ei'Amdsk\Idn rIP&R^EB2 Jte΄%|(w") ٴˢLtI} ' ybivdvӤV1lVb8r<6 e _7uRZM>+)r#CW4rř[d+["Et䒙 \ii H N R&B~6p%F5.P9KzJMjS'>ɇ% 1t9zgsY}cy{Z(e-fPVqY`8 YBrEm%ua4)21m*c2m)keʵte1mq;c&mFHo !~P CDɾVԼv?ݕZ,~"Ȍt{XfM\'|_3lRrN^.Yhq, gH/: a$Ɓ)' gS2sCK"NƵ 5ZK9̎*\_NrWWdd.bYső'G>b\` { kdj^-ꤳ"<>ĿzX;'uo!*v9'PlY9<$x6>DX31e63ui5oI7-Z^ej͇U͠gNcV.up_`.fV1 R;j7Di#AIO1%~M1lpyVJqf vg7|޷ \6^T۴2X*v]=A C'~58LVk] *m^Ez;.Bws9tXϏk;ĝzD޳?^rgAn#8)wSu&ؿ:--7vD}kտrাZmV2Ync * 8Kovd5"[ 4c$fjn҃]ZeP#jMy>ll+uɘMQIzGPNdx/Q@` ր{*f%nѬ/̦.Y nʭҏH$LOLNYP o ! O-)̠|NYELʀ(@,+.0#\^ ;> =e,+rִd*dMVNJ\'lp(EZR6?&e@SF=3=)﬚1M) ݱ =kM- .)s;*I4 ԜSt7,;e&P/UZBn1Jť2ڔ21LTPc n"s54 dkBB{,N0T$ĸPqȲCFԺDQ4PP5QbT`fLmݢtHkE+˜Pi) VV 3+W;IJ*Ku `Lϓ7glTNS`n/Q.5NFQ0In> .2yX XMdI2@p *R9Spt0t8da$dH5^jTIUOCP `Lq&3Z,*gT=ݲ 2+0XUi}V `kXH o$//N!=T у(] 2qd Aa%~J3Ś 5*"5L #a# .׈뇌KuHh6WJV\6. ut0̵iSh֞9Q7vvjk6h[qT,m7 6ׂgin `m&lكB^ 40ճ42#^A32`D{LI9O"(bDC?T'F$sX!H&:uxgVv PJ5 ܢg) 0)yKv6\L#xu[))nRZ6!mT0S]yO1hcb3068p)d 18uwyXQ/Ӧ>Q."B2 ~&WS4sfDJ@O6.bT xLVcE F2xgvWiM-+a89wG6xQw+9jYבٱ"'DŽZXulYܠ .V\VM+0O|)0=,4$v@%>NcKa%7b-ccs)59Vv@q ΠIE-+[w+[eؐcKwYk))5Vv'-\282:E?lԙ7PJZ(Nm__Ian](^L25"JDBe\K|a/53{cB^ʎÜ%!=c?jӞS e +Zwz6[68E8XZߚٚUqJ7*tk2XzwEY SKـ`0o쳪WmY z5ovZq'˷X!aN5OVLhx2uUBC?Y|)qۚ+5#S},rk/@5Dƙ;Ž?"ރڼ VEוy3ِ 0g-u- :Yڢ'yiI95 {8=> 98ˑE 89 OI,5lM[Q2B|c{RW];B_[6n#Ł^~IZQl-jZv︘#%w혆9b^%;F-?&߽S_ݏw+_j{Z;+ѼG%>_Zߡݮsëm2˔yÆ`B "|ARdHq e(P@$$$K(ȕDT. 9 &ɘLҜ2%!B), 4(8ă78cA+W(̀LSѤK3oll` %&H #}[!D_hx툴wC- e?ȱ_+$wg?n^vvglc; L~|!&nrUhxTH4RĒP$W2tH N[!eW`MZOT:Q#gDZ"\mԏNŕ\a_J.aNXI6dTNfemgu%ڗb4P_ߵ֚k\{E]w[~)BQđo vaܠ1of^EF)IIZ߱- ^uWDG>&&ҊCG$ZHS Sdi$ e$K}yTr !x!5dMK-Qwd~ȓJb%eaȾI]elѦ*m!s zqBgѪ]Ή<[{i_Z)6GN'lqn!*[̾Y7x_[Ema}$┓Gu,PSkK;NrcVtvWqn{cy\nM&{/U %\rnLy,UvDmn!+Į*rz:Mgutv9/*r{WhA:2qvJ7s:$tqnE1bN{࿺;MGE$7];њfHɾL$Jۀ"p.V|E\lVAp@\ 8)EJ{\$G˩pZ0#akvaQ>"*;8 nJu>%8y,2I,OM{f֞ 3G|==R@[0͈Ԡ=P}ʳnDYk ",,cy ܦ $F9vrWILmw ^&%U4KlaYr$0_Z㻠1{XGop@ k[|uS|ӓ£δcuC]aP?V0Wcj ]RQְ@iY|\d+0(U$MGcT()U]1n1`*Jf9Ee$5/z`gzIeԛUa4yo}JLl&"ahh f`ez\;'#x<1kXA܈1mrN{!mbAi65'}аC_x*0BKWSneJ$#A^[L:uA7 * 3ɼ%1ەw+!oK|^紲UPs9/De6t`P_}hEgu7 dR;9A?jl5 kۼ%_lAnra_z>C'뺣,>~bf/}~ۛ%$GX.%<kooK3;*VwPm PU_|oi_txpxdhx8tZUzo1CRvzgl/6{&t8tzf2z(s%z6zsel"*kXXtgk4`gV5om4B,ۖ+-5Sg]wSmvߦ7M}DH2vn^IcIWdw/uKv5t$xe xZC&ep 8:+sr{EYIg6XgQցfb s-FlFw/| և2(H9c|?cokp[4d&UuXv6s@@W"VE}nj-,v#_7bdosG0KwKuo@e0M>0vnpylւsHz&x|莇Ms9OG(hlksh'ZZ\Ha)&ŋW0mঌ]ff7ɕL]a`،wNKOua7B8@`@:9T|ZuA %Vꔃdo0a[֚+fA; eg]/.5Y+ꊴ1:z}!Yf[˵:ia_)o0`  Oчk.K)(<hPV|[[˽ ˽ +ዾK黽| u`yh+닽拿˾ {۾髾{|0[٧賽z Z zopPk!2AKY,7JF^zAn7]1j^ۨ^U%J*dv( 8{oP+廿k Bk P7|RV<l+dJ镻nvu@iZc\] w؀b]lt ܫai|\~+omĈ`k=իZQcnm`_K.Ɖߊ==̔Rר=0] Ӥ^YٓlLԮ&~}9-N.0~6i[Rَۦ|<ګ|I~Uf>-}tnldo~^-Z}H;~qa>-}1<ĵ"(5:њt ۨ@⩭:k&ڨ-Ңʢn⣾/ª8A5n_v!:J#A[jЫ>^}~nwІ k{{N@OxTKģcm`_OE@ݽ~|ZK:pʮLmҨ^)ͮ00-*lj%<9xˤ/q}34^U/`Kח+ ΖGN`RۻG >g\O?[E?Ŏ\Lf¿{^MHoiF?OȯގhWɜP}m4ڞٍ %\A @ "(РA=lx`B+QƌhH!lQJ-]3QD5męD}FO?bbAgI'  ( !"*C C꣓RϺ 3@C r²3 R,`/Vn4#1N3 H(;.H |LJ[#¦̸’ U "˼R%M3; 0J/ ,\##B O -JϢ?=/:D:MX)1Zɩ)y*cÓ7.P7 >a@!,ky H*\P`#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@#r JѣH*]ʴӧPJJՠCjʵׯ`ÊK6iֲhӪ]˶monR4&ݻx:˷I}KpGzltD\PqܳhYpف?'Y:]Χ.!r.w/ 6|I˟G7[3s!}wFo  LodS1r1V{V!@ #KJf!KTbU 3 5 ṡ 6"{[XU2pLQ186pf#R$ZFf4;DKFQcMC>AْlTIeT5P3_G)ЩgYhVAXfi(QQ~!5ڑ eY\I~2?~%EsD W0ABhGSm`JR6XzKQ3@۰L:ѓ`fDa.۴xL+8W}>?>tD:ƕ&$6d3/EPsЉ c cͳق-=fK%A&4OCU;Ko 9FlDP3DӰҬP>@ D]Jo`ܐ.ְK'RDlѩ(*P;IIA5FC0ETC7CAl6BP %Ӥ@-5CZ[@%='Cf qN D@(2il 1;SH mM#Б$2HmL! oepp9 ҫ\Qw ĉ3, E &"\i):^Clcm<=ƭ,mÇcJ+ɣA"EFцDX)̂Zh+.Bls+cBEfk86l G m^ CZf"wO$# Ȉ@R GSB5ˑG+Bh"N* GQc FK{h `rmLHC 'qi&Dٰ-$Eg*O5$(.- h'Ğ 9%̈́ ß 7BDiGП,C<H4rԍqF&@ "$Hy J[JQ)ěB2!A#L!Vs./YX:ш"nEHTOuSM:d L>znS u5ˬ3-[օ4q<%O'I֊"h2*▴nC ,;`xc\IQUY!Lt֭^TKhx "R<끀,:<45:!qKNc!^GURsҮU mo& y9B`UZ .Ҋs4mʛsAxX[F-^hv}ƃZTlÃ7T849xWDQ  u80gW#gN-dkiDCF-k֦/ro?}!B?nkqj`"iffdtKHH&l>}u~7,A&^$ȨL_yi tĝ A,Clfl 2Kd/cTnq$,bK Vrk*`?GPǬay7"qA$zX"H*O~/jޜv+lSgHmKU>usA1 ^CDtifP 4xgvPn |m"QzL6dWvho Hc'`7vzyOvv\b'o7n Q)w:ւs$7u%Gm'Vixs| _ф *AJLtLgzqXh PxĀ ^f'7X؍UXgyqve؁H|F8 @t~p׌xsuZ8Qj&x6H]渃fG|g؁gVen8g0@  t uXx8_d(uV8:Vx]؈rĐFy k xc:y6HqvpIȕ' raiDEYl) -N4%q ԔyQ) TY<IMH&G i`h'UWPm=kIzwI陽 cg`ɧ}Q !$o5iw T ֙as(n^4hl)W p&9h47\(h01S yGhp i*!UˎWn'Snz}.L`~Cc.;od^X\Іj6G1#LHkU!K[H˽k 6ofehkk۪wi|C1B |/,XҐ4EYu|/o[,ʝwʬȔ/WlK"fTTyUb {\fj/霺Jn^a*ncGQ#a!1^6'1 pksIS;a1nnODݝN~a8v؞H;9ҾQSHn. {~ ?P<1оN_2~' "A3A DQ6(_-3'8:?qxʹ%;s6-EoOKVQOd?#1Vs/k/jc_AQ/a@)Q$8:at]!4zպv|L'dm7+j>g+\˙=4|K: 3)!(CYS!/.aR4+M@uHI~+]BߩSntMbA!s4#I M0 9D:L3 oo @q6 5% ӑ81i>%.YYXlLAZP6MNT2 T@ 8饷BPz$7hڣz~Z7^$5|U(x6F~di!NvyZZ)ĎC/kEڣ$)H4F&̻kVakA|JSIkeSɾnBZUxQP#)ZKQ"AM&(ɚBWbG8?5: QVc68-`J C 9yK&2DrDoRa2 =mOBGJGPweӶμ>C7c\F( 2wmlDAX2b0S`*~DďNQ vwB>QmWMY5<%Ay5d 6CH*u=i 8r# R`R C~\>n؆ŠcxwQz!EN4AT `A7] .@2WDF 1Cfa1Ea;pԈaFl#di>jADQMA8Ƶ,C?:탁;b1Ub$b{ʓǂ!Al=Q 1ReL#B&YmFED(|o!e"'RI-A"xcpt45HcRvIW^ˈȒ":4jӝK+'B1_ӗ5awh%C--2 0 x&K'zpnȨgѻ'%j$ ;J+QO!!uj))͉}!NS%H< aiBccA"= F;e*DFVB9S BFh3KAʐnsAN:"B!Ѕ$Π<:$a*29u ,I!PH%BT @Z "$*Bj֣tбr>/C>$5i/+Az0V; فշ/Pْ!E:&E)nːh7A_5"_6~&݂(! @&7!uAܙW",zB@Lt"Dʵ0Pq}/TvXyA, ~8"!l᫐V `WJJ) 3q\4 &cxw2 O㾭bt' s 0*#MpB+zރdf[-NJ i?!r9ɭ_xqr} Rv!9e!3>6&?qaF9@+Ӂ, ֱiPUg 6h)!QqEJQ-.gS0 }3U=k`GZؑNND:ᄋ] 6H3e?dö ڊv ?n'ҨEJsWi u_:c=.^f :p^"6H4FUhcA2Db$4m}W 㞣:fgQ^mt_\A+seOAs>5QjmVH2=P6'Cf'UE=hݷa_|eݞX"RR|GЂQ Ŧ cdf)ؖ!- DOH-qs *LHc:q yBj1}O?R{"7laf{'x0|@-A ʷBCuUgy}6}bo}\lW'gU w"'}Uv |07[HfB7Ňg#u>kÁ1s'g W~g+zȠWbZu'?h|hԃр'tچ*"`3(b-PR} AjvycyZS.X0x'G(9txN[XFDht(I!*YiAfn`:SxȨ3އ}VgKS0xLƔq>׊;Qx*8,ukgqTuu"s8w˃X6^FPxxy Q6Av(KxPƏ1Q-1DY$<1LDFy y ID $aw3i${suu(tC/f_$9"YKS  p](ytVGtbԀ ; q 6QBs JTȈQ.~rM @єӧ +(AXiHpq@05A Uxq}s9Q +Ǐ) ]:_)qYhm! nX aPIyY*a%QyiPxsHD>my 3܂EaO'tq:V֗'znz֧ JR0iyw SmTซap@prZF{^@bGb8$Wwrs4%Qgfj Zӧh3J 8z|A;eS#8}M$fޕ T*t q9v!'4U6j^GwG 9UQUaȠ)p3;nGjxʑ~K^MM@qY0#K IOZ%GNJڨIˉ+c9ŤX 6JD#*{` `?J껾D# TptK/9y ڗ[׊+ȗk[WyQ J juDx kߋ k99P& _BI#/*ғ r[Y Q ᶿ8OoC;@ YZ: fkK V‹a;XJy9y}};%9<a \ C ʊU&ALP{烩6UlŘŝMYa UYjUrT-Qjp"/g0iS5CN3?HyIP&.QqWɗk8qޡnus] a ځ,j{[3 ˰+9=qK*\LjL-ZW aK\k)x1\E# ,}au DW ,AĪ{Nf\6^,\ꅑT| 6 VwB}C Ts-=$՞jC#p e|Hv517u jN omKIN(NfPGa QҏP*lkjy|.H[n, Tat n,N׺ =-RGP Gykj|Ef;;1n /5tVgz ^K^PccQ:O.p`ɏFȍZq7f蜙qPxn`-ǎ0oҬuC=H4¨vb38L 6Tu y+qݔI~CZ /?M,k/^*R=*嗟z7l9& 5rr3"o˕  AK <@yy9hԶiʢ3u O9Cn& a! k13L/][ k k>^xK--댁lH9*&1wJgLK {\25ؐo¿vNBYkw_ٔ+6,V*Ʉ┵\EܨS;\ qZR'9^HS1Kl{ tʺE5a`ѬZ=#קVN8ŏ }]RO#b ,n?\ps*\qEkI; 4ZKpC3jH=&ϱV8| E @Zp[qС΢MlP/櫯%̏yGr"V< +H $*LH(WrT7Ceρ "H4 %5#j1rш2H-R/ӃT(B24E'+JTQ7%ꕅ(}TեNIBsV\'3W$=U\TV^Z?R4bCtVG ڑC<+!WuiV!?O5eK7,-W oEH_$8eR&YzKj j"`ruI:T42s:vlx>Y`S>`Wy|vԅ{x.fr" JyQ!:]ˆYf5H씒1mxw]zinvcjgSkǎHdxlڶSb{'Zh>7r}|NK\*vqhjqH[%ͻ;tPB!!{x,udaW_)|AG(o^<^xAg)o  I?%j \pIu "N^;"q\8Sօ<%Oyyz2v Ҍ/|$GA,UZ0XO<+9\z(x :yS APCUy?"Sbcڅ`PSD,f!3Ap.IԢY:q<, CDCjc!r@;Q(g!rvvY 0*^# C KD5rv)yd:<)&#i4J=j ,m6ze/}960N$$f1³YH`8yS6 ("Q4sj}QX_1@Ά7/x>bK$>M6(r>L>2eBA6^ 7PA66q93ѮɓЖ4cAhZ+xUv$B#iي`D;VI{~LҺ'5@NA+I`e+M![D>rےRc 5;GV.Eu;'Yx Oͻ|—_s+$ $ӌeA,4ҽ \2R3ҥm|P5J*l  6JB AJ's.l]1 #d y<%#:@c>,:OhR#CVg.E\?T)ۄ-MJkXډ*x/n5ޑ"#toLrZ! ^iȶ3@0mCy1zY}ޖSڢˆl:uǸOUn8tJ5An!L>qimlsQt+%}i@46VIMORA!aN 2@2X p"412N[Y@V$n@ڗMCD F ԎL WDHK$о81!=ӤLj a 1'1jP`41uX>t9p f0`ri Ɨ҇{졗t1 Me)@F.$C~; uuT T5 C"@됓y4u= m r%RE‚Zх5\Q)hM(t@ reYH!}BCRm#?U$Kv4D\CF}8|#1ǶBH.QSFu"|A ri!ȯIN۠ij}Ad)IZ|\d"(Hې"/sa3ȗ dhdU߈pc;<}ȣ,JV x'> oxc쨇*xB;ˉ(V`[ 2d>6$Em|ycVӡ\M d4y!xgc,cqQEq\mby6h-Q dU2EށCɨ8Q%9r Gi5t]՜Y "o#@>Fd\P )Sx#HCBcW)RrqH G!+d(t=CMS|ԕ'lFj) k|F6eY0Ǡz#7Uw-ݔjVn/GRcC5D\Ǣ$ o,u@OEDHZu=!t;-k }J:h9B}~O1 0Zx5U 5䪍@+ZI;|vԞ/oQ"g<f\ L -5l-\>b&7G71:OiN}+`A7Zj0͋:7Z^{Sp5+>do\t8)sBRW=Cl .cGxWvʇS $qj{lṙ|@ Z+D} !H'|&:$}"~CSh~h[ @ IeQKWNBLALѰu7{j7frSvrgyc{Qe{7[EdjA5p?uSSGa7 /D85>m/h2_Rn 8Wy1 Ktb CHp}S1x 'OHLP`P؀' _dyG5[EE|eh E k`ֆ(|7CCxh0gPa W4KjQGtc%q҉Khy!ŊN)l6w"]}8H 'w YHWP!'Mkٍ#H h;)KZYt`&vbWQtX l"@D 9 m+:DWcTP Ed3 iPі$ AI_%zuzY([Ovga D a 8FO~+YYY0VZc>,vL ̣ i LA$%v)cI8%ќwqo1i[a+ **'|4$!M 8PY V1 GJ@U9pkuP8fYL!` ȖYRY+r:**: uhC aVsx9VᣆZ𤜢 !M' x FuGvYF5oll$Ze Ѧ ott+J`,zJiLjiXкE*إXwѰj  nNG)["I"H"H[F A ʧHUlzz DPކVr4bg73H+ "J\*7*B qN:jwh8Ckjh' z pr0@ qȪRz|)` yƱ ѲWUYrFWjdH}'ɖD7[*ٳ?K A@ >w~ 1x+Zct *#e&i;^ch b :8{Na:`œbH-HiPH%K'ma !ݷ K)Zi0t{-Q+U6§ ڈ˸AIDHYܦ{lZ k};5z0;<0$` qcyL$`˺w :˰L˴4{ֻ ̶ ȀD\{8gH ܞ̦cLٞZ9$4B x$ʩP - +, OϟN:L,pGlЍ}4|濦jELlt[l q1l1l}opTNFg}ld 9}H ͒ML< ̥D(ݧ8cZ0 uKDXɾ*phֻ)LrKyjFݖ1pgG ?q(lSی !]|͇TN0iXu/:{[ܚ q' ]i0 9Ȱ ݆ QPU~勠]K+ R-ۜ<݉lݭkIZiBƸY|^䐜M{n_Cs n ~8 7A4=-V[ L۱=jyynų Q~ɛ Aht챧췩ڮ= A;Ij-?8ꧻ7GίT:MN- WCu"تwYi^clh<\ I^ɰ ~%_y^ B'^ߨ[*bsY yql&_R nE_ u Ncz/%fMh'~u/jYl @ͣ]}!M+C%ρq`]beHjJS߲t,o^d^ԏ./xoD% > V_aLg6 blua)̯0 } NCW %2DMăq-y/JܦʤAWaLjTuI\ l8ӣDU/Eꓗֱ}HLA\K66 *q\zֺ9̬Adh*(AѦͥ|n۷c4yco^^++")ן)QZT#}>lN[gѣI|z0jdi(ح-UIpeu[o]8wVKᆛݦpڔ_ \'S17BӖ Ĉ\Uti}bZ$rMA`E٤j}lJ;ni7~fGLSO|)/hY'^ L"8:K" {EŶDjq:(j}#Ț"֡Kj12,1Z&cͩl †p-C4!ClM,C <  D(ǽvWNQLGJJ0Y1E 'kKT2%&R!\:m:=BMNPKm OOAMvَN9Lʖ&EG%=mZX kaD[pHTj0 mW4 ]12N\[6^,M:C:(>f=sqk R˘ZQ/#h5cz7VĤ:㔡~T.I;ʖk Y|A5Ճiu|*bJAtɥ3eOlȥ2Uت1#U>hn=ƛdqr }v٠V٪SwmobI߃jjפc%m)y|zI2?FsT}П_NRWBi_Jt^&UڥܯEM2:A~gVDhX  $q y^j]v@<(1G:,Й\$p\ȃ rq 1>;*T_TaP<;boBHbsALhB-!# ְkD`(Ƒg #C5<:kGkɑc ,\k4xx¾*ZC\DLVJ+JpC ݇ ʢţPxf=5AXF fGtyc*\B@*gc&y2ٌ6g|sJcXqNtSLrؐh3!Dn)ry8_A Q16Kd&*ģ3Eќd[\$d}`Ҝ,+LHTʀќj|fZXX@!% le} bR aE=6DbF;伳!ROu(aU/eX1H-ߦw)|.qQ*QIiQs]ZҀ.NXhh]ba&xKJ{S6*ZGj%փ !KX%pڥZX!PqGzKXiI&Ì׎* C@ MD٤X"aAZө3D9vT\q"IgG"e)DQ Z#:7r|Ǖe 63{,4#2[̤i_z*[56{VkI4e)D#.qUSU+MjC莐CfUMia{d$5HU#hbmzaQڂ̮wJX'Kyb!:؃6%T]i\!$6?(on(ŗKD*M#C+D?vw:ER_G2K*3re-=C-}6ϿP!x 4Gh vi>wK#bMUYwϻL}hdt}  _"<E^K<;R:k\ІxsӪS!h> [вd9ÿC/?Yu>2>;t>n08C,B2!Z@(^beX : @~Be1;02sG 223@t;'6\;@;A4CB?$\/yB,|XF|B@cBbhDJB[C[1<@,E305H;CCI48C@dw\̌KlK4d}Mc8f8JLelJfψIM2a<\Q,YHe4HLJf4HL] \|QKtM"MLe tRQPlM.C;$]C#,U04}+K +]d.h?-Sp;#MpLDs҃:uԴ M?ŅT TA,D*qUTQfi T@CZVUX-(TcMGE RpOchRXV3ʥP8#}HSmS]Ol tU;PlWyT EyʲƤF=B XQV4s |g#vWPWCUr@VhK [ЄUXGӅdPHXd!eֆWPB=zu+]|uXeϟ_SԚ-Yhu-AM}Ѣ}q|>\ u+[YȯקВ# [q5ֲV=[H62][; EمΪdھ-\/…Um\ת}\ɝb;K\\3KW ]ѕ M]-MRM/][: ٕ0%;dک(ߵ -M/3M]^53sB-ň^Wo-ؘ-_ZPM]A@T=P5R5U_p_AWM&1dLcq S` ` ܂ Ua.a>aNa^ana~aaaaaaaaaAi b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>cz4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS&8eU^eVnA^Wn\XeZD܀!,'}& H*\ȰÇ#JH,ZȱǏ CIɓ(3V˗0cʜIS&˚8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhZK˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËO63d]/B{k/{>dž  H^A=B>X"8 !A(b8dl)"Tau8b MHn 3 2c: }8"8Ѓ e$E/ԍL AS.2ȸ.#_c/g%$d~E>SKf>AD GWFԎAhCojâov&BsR 2<\fODzhH$G2a@ 5VNd"橉ڄ*iH28g@W>*:곥yPͺ# "GīK(RXp)%lB&ze%!-CNh$mۓRoNZH~[{%:"1k`-FY,$K/ЖL\- 8;#1 Ey@O2aP=1" 3,,VB# qcsl+ M4ٰ6tAPkOB,3@0L"4tA mhO"~9cl P|H^\r}. fb|YQTpc5.UmjF2D8B5O" AD:A-=b l@>8}$hvd;!k6%X4 ҹ-j3/ Č%I>:P!Vꏁ8G}I \A8uK Q *NQ $L>xd"g1y)K[ Nqj7̡A޸mBz -zH3`M "΄DĮ!H 2f,G=b2tqE+I%j.-`fR>IwsNrX;I.h9r4\: $#4 @GX4j1Bd_oMy#gIȜ,.;! [(A֭*+v( DA"DlܟNHdh# ^,\8 iBC0O>davQ -)!]3"Km"R)vG)"1H,(BhQuT(U @M= jtP }`U"ZV6.䮻gAX5?Rt_1ǴgR\VckI+7{|~uuPZQ^J[PC^5"B#[@-Hb Wz>-gxO.A9"chEKЃ#RpF!d,k/i*[٦r]dQH+R[ivkaYxdB1"y8E ]9]"rS&Ҏcq6Z`z`=uXWQZ}WkIlM|ȗ!.py]*S;vS-#?' ]܃H iw"ǃ<8[Jn7 F$johj &}ĘN"OW ? 6&Pew:#2  r"B GbtLSWSTyh6C[x'ׁb6bHV zgRKKJY"d9f^j(fKG ,gTH:P E\@I<=F" r`QM$)#OT ^U 3= [{8 9fHf*({yefKoȋB1dY'Y@d[|YP |[@|g̸Y# d6vk4@\Ux)@Rٙ .UqX Ni0@ P *1Ii  I}89 |6Ӑ9byEr(urdk6 II+Z!")'9 0kHX|[)W;9ɡIXHbi 8b9 öHh)sv Y 쐡~30* Z !J٣`9ffsr)ka V8Xpb9)!G 08'S F:k]gg=:g C7tIWJXY^iaꎒ#yqialĐ]\p P` 2 F ;# v<_f9(z ry3fKb'xjЩ5Ȯ::k[J`0kggP "hX:T=fǚyɟ1Pj=!2| 䚧zгd8JK˴J7c K[`k+_Oi/( iq۶; *7ٱXZx#zz` ŽI[| @ڳ  {1 'k%*^;)뵎1*T륍[]+zhdh강 'rgѐԀLr;\tvK\ ͕ JП:=LeUJ;&AE g ;{[f]{^h[u`h[ Jg䤾g#7 Pћ u: 2 н;q׎P4 Rį +|N8*ʐX :rMܳO̥Ū #gfܮ# *KƮAIX[ cfAKkĺg%%^¤ i*ִˣK_9Z|\j˶ •)fsSVJtE ߼1]t!*0T4Tv&TFsK\Ff Jf' =8(l[J ES0X*ˤ]p6B -g,n,qq\ P;02L8}:.L3(O<ɽOg}G` i7o[g oLx N]-cር  0  |]6#vIg ۺw |e TxPG5#LJM 0fMK~_5Σ[ D^rv a7Ϗ.Α@&ex".ްn!X=w~J,--;p m޾]~N|>f ϐ9尐 0! +F ,\\"Qm1IF>UB5E]f]py;>{ʹ^ }̥2#_; aOTxU$Y6s I:&IKyʪ<rVh"o!ȰKn /ؼσ K MۧϠA-6 Ç %N „юm8GUIT .bMdBj,ek\6[ռ <"8 . %eڬSQbؾeˎnHeBU9VMbƯbk "lMma4Mm޿Msaʻ;/پxlHaJL+x0ܷ+vűZ!u2J\3vœuT} y"U.-)ԩTU2oюH=7ۈTYmhygLhƅ6|iw1Ool?0쮶?қ J\("T:Z鬖\qBTc뒊m=j-Z%a̩fq嵤kιDd4DRc›Kyо |hL@4>2̢dHZBROlQEQOT)6PI drq`mK/ݧG"eNX]X1\PӰ}jǜ/?iMVY9 S‡8,T5mTC(HY"XNL+SZS,!z\b.}d$b*W9FcP76UTWBr_% Va*P63q۪%HPh8 Sr%BeJ"EM3KOܥ^{uTZaEiXw3y'n清MmT cTըOWO G+JtЖko]+>3gηYpyviBh4ݢW@dckTɼʰ[ Wͷl]ߖ]uKz~>쉨KUJF"[S}|]=Qof0Mhj֖2Q D[kx:c&22m* /)nsb1-dd!H>^3)+N_YC*}<3nb 4*[X #xwR&,R [<865\! Yp8Bt#qZab1 "N$[>@,a+ʂG$ꄔk>9l.0 Qd3d4&ٺ-`;q[_Q-9 ͒c*6г1I{rūh`l+Ruߗº}LڧG{ axxh?|;C>ɩ?Sg>@"4t§ES+J[K;?"?gx ^,<3[ C&  ⷌ`!8 ڐ`&48ZpHz11q#A,1A  !;2ªdASc=H>I ?@z0J;$ḂY@Ldc|jµ.t0\!뻾S$o:A)Q[<2< ̿ U>< Ql'AЮ@qD#$+IdB擇K8ZAFɸ-$\69E2[yx0jH9/xltdzGڈY!AuG[=T=$Jѐ /t[(98#BYKȆJ,u06Y#,  :!kKcWRq B+K3y0c:k bb NJ"A㩙>Cb\@)(c9E]Iʪ:\}$_$ zɣa` "lAex/ ^s h/"c#i= 6Tpk؇$H9GNwQ,P7, ML,4L"ۯh(?9,7:LM`Mc7!ѝ/E@4KH2"]Sʓ =N $ωxCajOzCϫ1"3Yǡ $MqO2M:dJBۇJxFM c QGdYPTrPx1ջj} JSY ͬMM?5RWڈb҄p'M=: O %LH R2]S33L]˫ TxBq3ݜS+{!/:ָ0~1H>"ʉ2@\GU HMPlh@mE6\ԚquC1U~R3 1#|KWNXY)–p\Q9 =LQP*MABMC"U|QC\Hq@memTxp\/1D@,0ĎL3+U׌ٷT|W]@W 3!# ӏ@XDP=4%Ru؇4R`,ې%x}nuj[(XvjBmWktĉp~堈ȒRׇWkUWeX;T%(̕%x[ph%nB1"Z `E}PMQMX=[ؤ؊/?bsua-ES`x}5ܺ;Xe޻kUY ӱѦ]bZ]̵U?M XDRV@5]-+׍ToJ]W3=WQޘM#: YUlU8;&e\Z3&Ok"eOS9]х`}!gXU`[@Px_@sSMd氿P6ah0WZVqL 4l\̰)ݔqJJf]/L(WjM =۩dI> ko˻KCLއO<[p$'qe9Nʰ}_lO^n:Eqf`do'd8܆khqq0g&!/$_t\'wrHwp|rrK;b]Pus΄1SO$%TYs9WX'pooso?j@ibϾxLtEgLd]Hf%tlrIM]1BX P5vR\ uP0qn1OPqtX^ͳ}Yuk0æosbNc[f:td|x/khd@}'_0fv &" ^$^P -vvs87{NUXhz W:6zF=_} 8}SWc0{mxC/+>dt_7c7olw$}KOr[ : &80}wwgewz·zXCoWglUX^Ddan}mq wq@Ӝg$ywyjo_~NZ~Z:MI1DžXkuɇwqWCV߇z!d &yqΟ}}ifР@mٲU>eΜ=hQu#Ȑ"?qce2k沙2g$@b:uuR#cu,z,QIiVZ֒ ӫZmѢό’-k}uڗ)FPC.uT \.|`V3^|1^7".W׳o9"ly!!CCUdh$P( 2dPļlZ(o!p2FOՉUWТr4NFpi$WFyvidyideEF}~M>RZ9`Yp18a3˴6efk.%#PnI"Yo7"9,}r$9hݘ[y bG2bnT_eBV:jE2Fhi.-$D&> &u]SZ1슀$FhZfz8l(=굏Ci6vY]OeߨN$Dn_iB l2`JHa#fjf*̩oHwH)(V1:-$mWј)-f# NFd{|[d*R =4/š0l/hFz"( 2#w*˭Ѷ8rU3^ @Fx=g*χFrё eTk3 ܒX&~!8Pxj,V͆ы3'QԹ,2eOJ &_28BGO]jVLfI! &-);G@4}.z4ʖtAᵅxB =Qdc@$#3ZYF-$_8B1!%苕@&A};4&dcaUeٵ21AΈn"O!3gOD蛳{/I 9w MMj'I_ǥ7-Onݲ8&2oHD4pn}t8qsq8>RUDu9`.| # zE7-#pM:~O,>#6FőM,c" ]lМSLNP#0,Qבrm3%sRViE,gٜN1,Hl, K25g KOvsRdYLd|fTMW}4gvؑŇeNuQ[ﬥFؙNxKFAl\iM?L | #(qїt1 vӈɄSs#{L:z7gVeV+9*&9bFJ4̴(NXʌO i_#]kq 0GqYJR)BA* Frnj &5:A_{Z[C d'#`aKnPeIb D'9oEqd*^zCrTid[R nJ}P\,n7neT'pι5+7Ex}:R7a+r7a$cVU\ 06U|Ԛţ?qQ+ +םUDFsK3b'i66jzC#ωKcuv#=T |"z@w0 {RUg剃 e9I%dA}~Z^ )Ĭf'ש%H=k-\AY_1ϕ&4S2ldZe.꘽"j3Z~ cǔ9%:4ޫwctrz#*ת`[7uOl(ZӺs2hS{nv0L#V{[ylDh>IsLqϕUM}F.0=]oPb9zR6xIjhL*3cn')Vcbbr FjpdqxFUOZ\757Kr0>n#~G;a[}IW1zѷ*u\[͈ўv?="/ Mz]?U<]@~t|7? [eeY *)FWz,tc>Ask/Te1u*rnPUlZD:3_n"ԋ1~}x (@=T~iii܉?;'|'NļoW!^eD]ڟmP-`I6MYX 6l   S ڠ  H !&.!6>!FN!V!~fbv~!!|:!!ơ!֡!!!  "!!""&"."#6#>"$F$N"%V%^"&f&n"'v'~"(("))"**"++",Ƣ,"-֢-".."/ Ah"#1"1#36V-3F4N#@FX#5n#7v7~#88#9#:E2n9Z!,!{# H*\ȰÇ#JH@J`ȱǏ CIɓ%3Ըr#ʗ0cʜIM,3ɳϟ@&RУH*]ʴӧPJJիXrc֭YÊK!]˪]˶mڶpʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ+IhS hA0@ n c0ʆr`C &τ^ω(D!Hbb+Bn#r 3 2,܌(ы%B!͌1 cDNG-FOe>t>/$fdBYj6%A΄ģTN@^Q V;5ɔ;cU9AyO/Kا.L ĥ*j –Qc}11DҾle*! <-!RAT.!dB`]Og@pI#BIdv \1vn @x".$sA}PT#uBV$3@EK;NCo~ LDeqkfD  ,>HbɆ`R ФCJ*f͢^((1YR E$SvaZRx2iH<ȵ3ht D@/F2w2 ulGhE.6UL v":bHau)V~+uNrՂZq@6]LH"0'WVDp>e)g4ڄ !i?áVyoQDw'RÇ)>H2 \ĺzxFǰ'1r[THB6r 9Eyޅ|"!}Ϭ%DeYl1 %"y61>ZqBܻg P`+[mx$ȘjT 3T5Y!o>jr'.kN20F9:Ja"!%I$5id_Grjs޵>j^59UEY Qg<,KӈelB9bK4 MKϭsC=jt{ w~ƞEUyF^yc/Hܐ{i~BKhݡE*Jl=>iΜFmDnp7Sk.bq )Wp:2Lc=y`Wzճx }IF*fAyI5ZeQ(f=ʼnxq|p^v}e''C^ze),XJp8鵝`kzzߠu0^q R .rPvfK2SJf*V'zw |2gggJ"kwx {d5ՠ |([HD}y7V7}P2, ߷2!Fz'jk0q 0Zzi~0Q{&qZT^u{G1(sx,:*o']Ђ PvGv4 w'448VkEyx"bO nHE AqjTW P[~Nu ifHYHvkNP #Xrtc^X0twGfŨYxv !*V-f 48 rV84VfO~W^WHl!7mrEq6 А@8xQ 2v׸HwÇ'D"O4"kܧ xg0֍}Ђp\@UX&RX׉DEF",iMp`G1WDF& А z10{egdxZp~hfuZEZuTZBWdMh7}c7 }[3x ?\=—fhi K9;Tv!SYh L'nsHU(s e)z zmI0 i)HwyT󏎹(s 1He1?r} i{=\; " $CyىkE9VKFBt4:CM;t `pI0 !x֞Gv[עY dBciPi%h7 乣wgI y#+\=d\iCp0 _tIaǴCF@ q2ˉ N,ڢza).'E0:z?rZd?ʣ)[P U˕\TP# uf0DL(]t f6/q4m=⛳CY Q QcnIa9 EzjWzڢ rWIv#vi1+jꢅw" rjhwZ:r[>Kjj˅jԠVWFZz Fem%أl  stZɕIsk&c pkgz FC aƪrk){ӺHj{嚭i)s|JxIۧ-1roEg'ApP N%`)\R1O)Ѷ )k-:%e$]! K+ڡ-;O|5;U \*`j蚂ʴk|䩣'=-Ez}+1v1jY ٩n5'ꙞC˜# +Xp ˼iqypqO!$kHl-5 *PvJJRr繂Zh֩n 'HI; ݪEvڹP  c"uf .)XQxW<ԛ $]C ) K R#>;T+ bj0 { M {~"QHǴː1`A{+̞'< #̠<<0`cמŨEoڵN1PF6~\ u;h ƒ|(,̜+kj "$|fA X= F˅g)mGM=ٹՎM_x"-AۜЋҍǔimVҚ \ ׶g8o]'b׀-n1e!i1z~*\֣ҋͤ]iCm6]R(k#\yls=l!h װ؉=,ڞ%IM} عݟp.*4@z۰=_u۟\,xN13U:"&ݝ†%׋" H$bI_P=~T, s{:|4h IvLFNHֻPp X ^+D6M+=OVSJ˷}0߯>m ̲n믬]v\:챎p ޘR|߭~f>m+X>pa 6;n<7rj`.eѐ! ^ɳS̯|s🋴9_]\J\ n' As"ruOD0ATRX{ރsιK̾ Nڴ+HiK>kdnn v\<|׫ %Oǰ.R'0K8o4!D m mVi;T* fUo냷`OZ ?n ęP-u$OcºTn0-V՟"C6Fa hT٨f~ M[ɥp¾HŔ* RVp2d Fcؐ‚$N8->%ViEhKF}Bl1TJ+$'J&Ej/ Sb+ȓRt }$J6kXw(,1rJLoum%})+qh'=B"BΓ!} BD&h +i=lJk?9kVG9rLhƛy~GH4Yf}\EV,oU E2Sq"m10)EZB 0jM7$ º ' L; 1(ꈚj@,R)-4rk5ຬ8Yӥrˑ쌔+tY.t޺OD[T T"T}V4K3l`SVeEh);t(>DVU[HECdO/Gt%T"EXRf\KR ,o_IPKNQ"mnLo=0uW/X$+MUvOml|N|HP$\k*H˯flI)hTd"xt{W_E j:~`HS*{qX[iXET'4jrIZwu z$jkf>{u2*tD-U.雔$LV#=DOxŖ1{c$ձE>xG'uWZl$X$|KFSo,$ `H ~I˪Xä},HN`OxURmuՂy '=ͼc W% cNŢh| Ͼ1QfRmAwc(#ɟx ͥ)iG8xEg+ XPp$. b**1wɋ^Z2Jxp˲5Zۇ GeZ'i|8)"k~ָ!Z)&8E'eP(=qs$V5HEx&tq._DH(wCUj\#8.:F$,7Q+꣉&7CɑL$iTsCq)w"NPHD# #4e@URU1GrT-H]Nď"ᾢLfef,JW~֑ aǐMLNlդr789]SVDvzv` w (O~ /+?*]:YP&)R!z\@C9H$D%3!!F%j +Zt>&zTʥU9P&J"?eM4Q}ʈ<֭' S& %Ђ}bę~ŦV1g4Yn/Z(Sp/VSbT 05Kb12'S(z4n(دÝW~<h#tEeEDZ2HɊ^3p0Fdb81T jȆA"!!*!" +#-1J=N¨H}˯ۇrMgG Dzlt(OO#ج/bcr[9d ! "*WttbLܿp)OtDOX5|ϔ.7$KxK"+Lf>dnhf+6  dIۑfn2VF4|(i·sAR?dqwxfgxbyPM/e_eYB^_^c˒J6^hhjNfCh,IIQ`ke~CU\<uACkyg.x2?+ֶ@m٢j<&` `44";f8dcdv6hi&NjfQֆk1گRudȝb:1cmܶ^&ܦ^$ e[jda-lAkYp'_6(/M֨p* ߇W+G-r(flflX 55?6`+:,gWm^)A?tbx5aleZtnA%ƞM߇lX;qPW .s~+dj6d>VkEɖα[<xuPr`p?xyi^hE/;>O_\n vtXXvvnvmKo[Fw8m "oL'oϗOcqYbu{\1pc m^hMxQ]x]R)׈' t= "nj ~8wma^ϝfNr?}w?N/͖'pL},h Bܸ%YCE,fɚq#ǂ#جbBc،1)Hqc^gğh2 %ҤJ#iURb*֬Je*ĊȐ#Ȑ>lFǫW,fY;[7/*CzT .E qWYWAlyW&$ӦFiYm+Z͌]ęzY#J.2p˝,\U3?V`ȔQW1niqEUڒt˓ [Cy!Q'|*08(gUN%Csѕw]Zj}irFZ_I6N`c oGP~%BmvEh%`[䱴kYUY2d@Q7dC0WUUA6Dڌyg#V!{AzPHQjVTTRRFč6לdBLGԢejZE+B@PT7jЧehV*+6ܒ-:W\epm2cIT롻b|kIem l/˪{z%zP!\㰐Y 1y2'/|_B iQ-Xj A@ >qX΄vA}E= "p큎 c(Cx2k grˁ (M%2()RV"-r^ (1f<#Ө5n|#(9ұv#=~# )A<$"E2|$$#)IR$&3Mr$(C)Q<%*SU|%,bc)YҲ%.s]򲗾%0)a<&2ed2:@ gRּ&6mr4Aez3-9˩fs|'*!DD !,v  H*\ȰÇ#J(ľ1jȱǏ CIɓ!3j˗0cʜIˌ-mɳϟ@884ѣH* BhQEJJՇP^ʵןCٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h ΂ .D"H+That AjG l^h:v 3 2wJ"A':M! c/xفB5M>143ixXNȓdӓEٔUQcaAZ3 :!R)At eRu P f3&N2I c`nt%LrB43;Դ6XgzTedP[/σy&G ML }X1viH$B:+Ah)+I:jD{Rfv@ 6'iLlC k]'+غ]+ ,R$MfCeODHV U9,opta,U6(L2L 3ܐ5=йjP?V }j|^ A4TI63cɖLy(qx1't 5BtkhW&Ug]4$Qh;S%Z !C"4*&NYwMebҚC $9)ГF8HB 68R͹@-~ @SA<+|B32C+n7ZXTI޹@dC$nm >Ę WtBd:F2$zF iC#ɨ^ 14wo!Vt dT ƊA?(3<-Y(4Omhɇ.m! B"q+ՈHBhTcۀ!C1DҦ6z:x1緂bpa>zuSٟ@*#)ZH:F y!*vmĐ50vM#I 1|" Zp}@tR e&1B K*ĸ !LbH[$9sDLPfS ͼmh%A27bͲ"jQ,(N}X#gԒe1ZH!0$6u|#F @Edu3Ff5H'hv IjQĝ?b那6W(rYZ(DD $ D.Pjv*C.T}l OP6GKA1t1VdTuiY:i"RO?«}UpQ"TTҢ}F5W m1BBVG!IHo^*kѪGѧ$rk)fC+!=1"V 9 ɚjQ+|I!;[^D< Yq`Xj+1,2AV ,[? ]>WPzm{J#Rl;hQEX^i}5iǎ1I#0tpc yEj T(Kq6^` GhPxQM$** *4|*D>]<>{8X_nY$J+$h pXval 4qʌby6X"hU#f8֚`('{ݪ+XA;UÚo0!EbvSԪ2W=T(BYe1Y!=2]z>^YH $%ell҈%'Zcv4Bŵ9-GAiVbn54#w[U4߈l,!= V{~/QCPxy$ H n6 4DFNFٵ Z\1ߺj#l5dfw4:'?rAvi$Y_2>lTX5Ab&k3jG>0iy%[F^/+Ͳ/;Nv4)*={sYG/sK|ՑUkUƧVBj4AԄQCEjMmjܽ6&y _5]&^nd#;*9[ @Hu_l[X4=Fl̦}:˺A)"lt=e&-e}Zc|'gsa'''0n7lS*GH b=}d!G7y %' t3Y~36s4;"9~@w8uq{vu%cfc(wqu.ErwR"mQs|'a7˷;%&!XyjMȕ}<qSeH XbG؃G w__'`'I%vtxv&Dnd# zcGvw &lX#sbHy4exp0Fw:7$rBĠ7`BV$чx$wYl$q_hvmTTw~wXȆ_!XZ`?Mh8 w]xȰ.v/;)d5_'g\Ë$1V6^GQ HS5Cv(bٵh*I) _(UhZh~|ǁHq"9яA H)H ܗ]e3.k[U7X`4 ^Y( ni5&mYR8Ј*t)J uœQ ` JA' MIɔ𘏉-ҋ!e"7u$Qu=j 'I^WI^67 ad70`ٜ0L(6 g3u"% =X!au^'n"cXxǛiܧ<Ɵ} lj^t4!.BIy 0A9+Ɂ0I]~ɗD+G0ù9և} Z)%"/!jye( ,dw 9@ĥ&9h-5!:ٟoj>Zc ;`0T*%VO>tVI"Xy*lJsz%q Q 3AZ%" $a i*QT*#& At2J!": 9_Jc~cJBi]d雽 !Fڠј/A!QkCۊ%a 98>X(Z:!jqѠ OSjy/10b6#ѯ9[zq4~A9.;j!г>;646!d0дN4K K `\۵N] M.(3q"k)XC8KR>@z模)ȠL=GGL; _kb+N+m$3).&>jfqgƔ:Cpl1r "õhndM{`V{X FR3+%|I;aMzРaq[I]Ի\+r`Wr".|LJN? }K}@1*'iL{ Ѵ6ڦH!|s"qщ:K[+˽ + qGU9 $21lžcPȎg 9lK:hqK?))!괆H1 Oٴ[X쉜ZEY~K)`j[H[:osVJq&FA ;\oR#@{s\w UTLތc̹0Q~@ A!}y|~ڐo*#k rnšZhk`z;G³!tL!HG8t V\6:Ǚ,.3"0\<k  [8슪p- o̎=,q?qq !Zh{!ŝqL=)24-P !;eX1#=ˁJ\z$Wp2յK};MԑՍ6֋ WFr@ `hP,<{LW HNZ ; *27IڍvLؑ∖5] BAP^a7'3 խd}~;+ m NٴmJ |[u&;F]! M֘n}#cBH @# tMuڸ ݃tZM""mYܞ'G(Rܳ=E0Jۜ&ޅh $d%"妚Հi :⃤г"(Ez@.".u!%UU<;Y7> s4,D Rʓ۪=aG*Ngm掄M-[[ZcǁM sMw.~>~5Vԙ‚i y%9QGZZ1}ъu HLюnlLj!dNYԷz߅ ثBS] ʛV ++ Dʱ Me ^IA9 !z p<ة];; 1KH \5^B!6"O m `[` %4.n1.;gT>PT#i x4>J۴[ % A|Ske%Cf A=NU[XCEOBDWȪQn 󮜋 O$^)zt6^? b"kMˈv;*[E"GK+OOB֛me?HڟR]лk ߻>TF @ ې$jA .<`TtbXE5*TXc!EYEdM;r-[*YJjUVt9 inj!<өӐf * amݗ5׊.ʬceR$1&u(h֬[B 3A/>E6rico4Y+Vܬ`_gvָEn}ON=}pݍm}ƿ+1qEJ_ZV9[ `ڵSv4xwۦjqk!|ӡz?ouOǔѥvrK?鮥 /z-\Q/)2ۇ+&V;,4m,n;-±b)L5)&W0,t юCDCܻql*|mmq)G"T@邏hBId(]Ǡ(->J4:RSG*ṣX:&5L/Be;jL)R*"ﬓZt!>2 >tUTEhѺ,>ŮI%ba4g9mͺlh *TouUXsŵM4^iӍ,CR.6YM= MXa%:Hye+>p܆̢w;2Xj:2ꥴZB4}Ge6|FM Ĩ`0!]9b5gr&JlVX34ujR7gQ_TR=ᅅT2'/FiD.G+_NQzGpVY!LEo^N\'9Gi-{#52yMr"|m\8?{dJumђ&yU^٧wyͼ kLij_epWH!+Zbp.}ߎ5wK yaIʢ%maֲmhCxғb`7;5/s8o"ru!1tFxo܇fx44pz3BIp!H5cU t[tJcIEP( V;uhge=̆(,&1Fyh7 gВul?o9G5LT?Є2ڹv MBqի6((vu!1HUҌpa?k2 7ۂRqyOQN![&5~ɔBMA[Մ.XU5zVFT]kXuajʐ:W$ik Cd¤obOs@Q9>bE1$H$ueP V+Jуf.F>ѪE aN6օ&:jkuiK͸;򕍥O7O+ʅ@ͅPu YH`#*E9;f^UFbbFfjB;"+ab/EM6)kjslT[a I=K #l@e8^A׊"}YE+x:ގ{ܝp5=a2A%/YFDцW~2yMfVtWU<0#@HG34ґqq<+yEJTRfHhC]&j7M_W}ے)tJ3M u[ (9U)`-v,}`gJNH49#ҔpfL)*(Mowaa]E5]MuFWpgytG^vgf6or'=BZΖU2n(~öYՄp|i%zY QpyB^3GvNŻ׭uW75Q>dpH9M^Xأ.oD)ƎxվobNtgFVx(bd+/QX>3(dؾ#$>Gm^~C~;[oNH(0nNvtr/^QN0cx tZW\q ^AɃ"n~֌֐i/aK+#;Ӷϫ 2@@ 1.9u@ڛ lWA-C2>AA=?&?&A5)=@@A4is"4c0 5K&d6r(B)( BNb>,Z0@ C3T=1:3T2\C7|C86C:7C;C53=싦S> =4AtB,o>#DQ؜绒9DKDXDAMC9ܩNER,E`SLE2.; ˰,K;LKEXDKK; !, AG*ga8G.txpQDQ,"\ S-Т\ IɔWjқ.][Jɏ8悕JOnD;U /NU:(uR􉥘f.]V^ٛhm۷q1<@$ 0࿀`>}JጏLY ٲ'CũfZ@njuz6o8iʹ8wBg:k^Z@Ë`O 7Hc\o!,{! H*\ȰÇ#JH>1jȱǏ CIɓ&3j˗0cʜǏ-mɳϟ@ZѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx䰏/߁1  -+^ Ɛ#LX˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h1q 9Ì@D5TXD 2كtʇ 4 \3@9 ʇGxЉ:8\T T1/$BO:XI9cU63S1XN8p([M3RuȧtiSh8*6W|XN"ZK-.&q;=D>jdԩ3Ħ@4*A0j"7ZM jL&jK&4kJѰp.b7rUdKh6o:*̭l #;n8H@ϒ+йN Ѻe7 O|.|L|$B>1T:$A1]+ÇBH/^".C=k ?ZTR qDt yQ8 "9(SĕiLa"bILXXqR)>櫞E&n l,!B%kܒHȵK`Jq!YϪq i2IƃO#ʒ͂Y*͠(7 N\hCd@s*qRxI}@S_0B2P2^t&R'QD+ZJ:)%*|T 4Y^ +ʽXB ZQ/\K]m+mTT'rc)K} D POr3fljL͕,h Nd{]`ju$CQ;KvPr_0=9yo*xB.YBK^()\ ":hOIJt"ٜn4?O)o9ZuBfb4Ӫ 9 䂷 ӻc0\!y ORi;ԺuEB5RMЯhzT0L}+5=n#X _y#OES-_ٮJj.  U`nw]nxA0GiVҽi[ւtʛh\MFCovSvͥjBx\!d>Si&aMp&ƛeb)/>u>`ui9*⑉;'d!-H62 Pn 7Mڐp'`P6J+~]y\-8Ou<3%_ׅ郉U2:Y8CeóGbyvf H: B&%m˞v]a j!=5:T=(w}Vkƃ]e^)Z AoLlCpٶ;mV{ڿ[nFpHC nq H{= wݿ+ܓMxc*u웛eeo‘P%c/d~8i n֪l;{ݕv="ݎ9dV#b7tud1glieOtAyOˠ`-3~5SY 2Ұ8_&e!v{i|# B{v'ShA E+ /!/dR]0MӂJQoZ׼հu^^׬Cv`/U2+{ $o{{wgwFm6*րcEmf7s%/fw Pʠ 0Lӭ@A ס"g ' I, .zm)hU*f.ˠlK Tc |>BZ}(r'I'Ia*i`5tLVJ[;B*umi,` * (g F a .ꢽ7E.f$u&>Jl++p$HpT;BTP[I l:Z?Ȟi,`FznE? 35+@vƠ(Z_W B U{N *'h_l:R(юS $жy>0%_vи2NZ\VoG D-k `ɞj&?\ b;P $ΰDCj:| {Y'b: {B|vj^k!d+pɌCQGCeFO[ې H 缣kNK֛ q ˓&;'QS; hհ`gj!{ZtYڗtYIM>QGx[xlkzkTrںzv K<+gNL8C >˺VϩU"8X:A|ON%٠ 9:qʡ|29(8ţ 1Ӡjl6gf ƀhp-<< U;P - 4z|%fF{A8 /#| | uتķN D,iKl 7O%L_}`Y{N]ך 2A< ׊ǰ-P>Ŝ@l̰Т,{u; Hmq !9z]`$SCV ΢EQ.;|qk Kj[J˻KPV $x$uЍU ݵ M.|}& Ab%CzN҈Ұ<ã h\vlٛ }K L BJ!ע< ՠ .(:W eP̚ ܵc ַ$ M 1 M~m%:'}NӐݢadȅxF%4]v.VE h'ԩB~. NZlGq m J i>\cJsAF}r7ބ_MDJ mq MiIPN gs4zx}Ƞ,:Q<>؄K$G~QB L^Zv{ cد\P N bNqʲxNi]ClJp^.,,epD xOP2ê$ =<1Ҝ雽魧!AbQ$Sf봾Էp4bA M{|P`WeJ՞(C ƈzϝC:aA1 R~`cqxvJ  ƚxpnOc̨KC1C*N@; {JM/+G +?p+\螮Rt] SK0ԀAowDj:̥-G cZy/Kdc]2 t a3> H>%]Ԑަ?؎-߮o ǎ!Wp>d>lR*ZÄT=4#2j 6INcqZiF&fZjtZ۶Z>#ڴ/$ǔpV6}Dd9"F"U* <Z[P۷Rӕ>ws[0TԜ*DJ0W%.LfM|X-Y"E:-+r>l׏ &W؆bY2t=xT=yjVhbح7XR>.1WbUhn7ܾ}JUVl ַN|Cbϟ/~pȒ)^Ɩl;3 ȢI5 )[ \n0⩦x7 ,$QEZbIB'#9U 4 ,;j`iِi0X ?ۄy'lKLBrOs5V,(Zؓ.JkƘe #sLh-5,|S >-Jó!M#⼵B]\t۵ug=1wދ@!d="_Ua)8!j+ ]>)ɚ1l/;!U\٧"tSZ?e©n^Mzrq#n _>h;|Iv$jR:j.j>hGRޚk>K\u 5n?ɇ"A? eWvb{%jm>|?BJyS>dlv},"M=KY'w_+xWT)RØ?H^Jռ;~C7 Tm<򣳨ON qƐ& 9rh3ϡHuL8VTL@(>b`aD#G ͉7WXb P* b‘5Ps'+Ǵ<eavNIJ%#y"bȘv>ɏ cddk̂=:9f'JeO)7GHӰ!xK8ȷPɐݔ4%X-R@g#IPx>,sIMjâJHqe"U)'Tt(M~,7!0+X$4 e(,;1;,4 IJSLrh EJ$h$Z::!W >eKǜ!YѴ=G R 6MXe3S! mChpdUUE"d#* 1<Vi Jfb9ӝKdZb"(=Y{+X-%miad okqI%"ĸjQ qzyG54#r5ۘQ+I%1kK8yJ9C5哤H: Ȯ02|<%}UL)U m93DTlhDO d&)LA%Aj*y擌MwTAGl} gO ~HQ}lkE-mA8VGlJZN!F7H/Mj<@M@7J ?p@}zaS<4MgfIJn9v:hG[&2c;Mu2MF aP6ϖE;ߋx -w9U+^W8H+RAZߚVQZ CDVqݞ@)RF#y.MZb51,Y;;H-~Yt?)#h;D5ȓtR/J.u/vY\i"c11iҳ=`-wۓRphh5uInYb>f۷v9}>!mPb>|2K;޷3yY[t+(X*c 5AXcC9ł6fᔎ+m@Aܻ8cS Yr?;[, j<9yACZG@dF[@}a.v;ɜ>Ɔdd d?yezT;M*Kn-J@8nxKt>8ixW'd( MZx u !D4LE?]0VmW5H +pH{5Y}I@BYnݾukId]9}]ưRUͻ4#49QƽZZy`*ȀY^n֥QW\E\G^U8_]!yQl!6t0؊ )=ɻ_:EUWfJXMvЇ@&FO8 K ݚޑa.}}\-Вk!-1pu NЕGX![Ţ力MqA=֏3 vڧMӂx7%D:hOKF ܆tbb֢֙e9GLclMQ) 1[yCՕ$`[\E_kdX0Y}*({-`Xbdtn9P~[ ;GmsVXF}\.HôSؔ<736a`cXg&9&9x W5#cgh"r cf5و2SGjFӒ$j#WQbQ.exIiĵYN㮠 i6.0 fYBV(E:'2+NDĦkdhZۂGr&~kilvb}XFևV5U|}iV1 RkpR[ ߮뜴i[ҽkU8 iptrLr tov0ZOtPFLz.!c!dg,q%4dsjcZ[uROV(`ox0O(fN[b6q*ߔ+Nl/$Lk*tut>\[xn?I3?W(x_4&lc4]HpUzHOqoPGgWBjPt8_7yg)7b=Pzy+/1'3eRIu5& #7x2&Ҝ|G)3YLڬxu3NY{WFmA7߸Ma{ڗ{w#qGep{ |w41| ]:3_~}Ȣ~>x{s1}?vw}X}Iدڧۧ kt ENJPRE„"k!}%R"F6r㱐Tr1$ʔ*W%̘2gt9D7_SǠ'"ZҢ<܇)ԨRJ71>IY%i JbɽzE穴hU-ܸrNkz)T,lpST2 1[,fqД]cYW)k.]>>A%11BJQ?e:KU+׬@;֬ӞycʴV5`}F/x1BǏoJ˘g{J 8`i96T)EQ=%NV]Isacy8um12%*ULT35ITMDPz)B 7_}?݇*uTOJ$i!O=4PTm"aS)N'XI\W:f~h>13bC-C՜51Nf#: =JA5deEYH,LJZl: aPIJK=Uԃ=(DzWMDW9:TQ7ݰ)g*'xMsDZ#+׉BS]hSHN⩀= g$SYJAvO]bkbNkU?1GΛrhlu֩qZ\+m1 ^JӞccer&R2 oƚNQA*ѭ6՛,_CM[EfqXy>0&Klh]ĪSp8*U M(Q&-&HwC?E7LܒͼCjj8ǔZhVj=E20oj -J3="܉ONduXK5GU뭃}1nO6s-Bfb'|;.9Q41Ҹ\-5nɲ*KnICǝ\'RSKP`nt#خi)6b7mmA E䑏 RP@^d],c3+ܺ"'O{A4Z V+ 2Ia>4.W!`ęxb5x Q{e?3{I%bwn"8\jB SgBq-(ݻ 7!UU(ȉ8:|/-1b|AJ>iBa7*U'R.Gp KNiUF*g$)QIBXP=hVAh)1 *kd,y% 8CUܤ28aJTR,;e@oΓ +qW%h,9宝">xU vSjNK&3򰪑ms$Pi#g1DoQ$:$y;}bfՃM).:e%Yp>YQ fTJ:mD kbPɨİQhc*ŎG6Ede\>YSwe\PVI@C;ʆK-fa~i[5Tz4t?(T2L2[-`Gún,k{Nc<Ֆh&h,Sp>E4RϷPB"ť$DRH.D"%Bը*۴FR X%:gJDAҾUjY޳ Nk;;{*BH_*'.~eey,#kJ'ayZό')|SW:+٫0 2M`>_JSwUFHmwo ^sͧ(}ո҉eo59񒏼[nc4Xȅ 9Βz#* JGAY0:P3# Y;9*%:[TP9қ^^br0'牜M4.( J'8ll>P&] *L7z8΃nN"fC\^ocs:* No}FPˣPtGyBoD8>_gZju٩RrR5T8}v|51~c^Ҏ{ţEF۽TFY:lu|~zm5 &)a}uֳ83z^dxo%42VK~$j%Tr_=5.z/il$5 MDƴT,o LZӴJݝYWAE\WQꉠm`5uO JɟERUݚp 6Hፙ`I OD(M/Io9apPZIH _UDMO@  zU]USZa pI  Fa,T!ߴL!: T4!$Y aT!P-\FU$N ( J8"MU0%)6M,uӥ+VAH2CP,ڝG+_T1F]'7(锟TR RT#ˉ5n_~)nT;d%5a!GNG_Cb9JB/&#%M$Ed4$!REF?JXJ¤N2V$'Oj$U̢-V=InN6SRdaN:SVU$UvWS~X%YY%e_X%[%Nj[ƥ\%]Sr]^%__%``&aa&b&b.&c6c>&dFdN&e:aU&fffn&gvg~&hh&ii&jj&kk&lƦl&m֦m&nn&oo&pp'qq'r&r.'s6s>'tFtN'uVu^'vfvn'wvw~'xx'y^eBh'zVf0z'|Ƨ+|2"g}b&~'&~h!,,~. H*\ȰÇ#JH>ȱǏ CIɓ(֨!Fʗ0cʜI͙1Zɳϟ@TQѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkν"c~+ʫ_9={޿~'?8M(f7`d=K 6>BaB#j((HP5#34R$j((ЊysЃ(3#T.N26DܨT%`,A |;2b閙L:f3Ie%B]~)-M7IGӚteA3СJͩuPu#hS~r@D<1ZeC&C⭅]CөjB@>mq z*ħ{~  TQ$LPRh[BRe2̓{rjkGM<;crئ݂̌'t9й+6/Zi`<ޖ*\ÕFl}K0B*Y1 Q$OC/*4Y C6>QieYuAZ͐~ Ѹ>wȎ^(VjiJ(/ B,toCAr,|7BRoA.D6D50DyE+2.@۠w,fsBRg͏Ǥ>+šќk>0Wͽ%}륇RC~GOK?zB5.E("օ)7@kA}^S]j-p AħI!,W)mm((#섐lqP#U ;kp"yVXd f8DfvPrܩB rdU ~Ᾰk.!!*ZYզ(.I !2F za?B=' ÎFԠє(&Q D#u2ƙj7<#~ÇhKaߜGf(Nu d HJ̧=^ sJ?i׶RoO̲VF?36k!GI# 2mrt ­sODpY| #11xsG3HA8a wuCǰM6GnQ2}Q)ا`*X}> }(`$ c6ΰ  0!FFdVGSa5Ɇ^mKTHq=ɦ(k'u0_ r:52h@-J*qhsvHn8Qx|X z`~Ņ>u[~Ͱ a  ;~._qGdV*o8;"^sv^&p/lg@fЀ!;؋h(D $l T wxҨ}:x52G4NMDCfY7X( (؉$'zv]L[Ag 1K\bpVV#GUZV3_%uT^(maCY[w"#yTA0xQ&xg ǑsT$s0B Fa֒ 9Y 5e7rH{U电&c Z'KI:&k7Gzgz^АfR@C gv[c]o0fYG3ؖYq(*si\ .l+6d݈9 ֙cMbՠ P_6zȦvV,'zͣw  gYic# r-LJ$Ys8` zXXL'* dD6(&< gV#ژ 1$瓡鄓9{OFWY&fBXRf؟Rmŷ3a cTY` ٥ǑbS֜R9ԡb[p9yIoݹ๢Y>WyݥZEp{|ZW٢H*Er 1H:__ gӤasZZHx p\cxe (`PVG* 4 ԰ 0P ډ р)jGdَP`z ohtz6p=*zڐ|׊:N剄٠{ k;` ۠|pw&8I Zʘ઺QdʥGiٺ|cbjw3G0a K$@ [ `JDz)9c:T_P WKF*&pYqqf'٪=vEZP0 `w`  J -k hk *h)** pV4`]jsZ~wQB((#G@ u{ײԬL~4R ,*VgH)hhհ ۹Ԁ{;^y|x[۰k$ ymT wxi .'~k ֤M~Iojr"$Ȁ[EZ۲[aΠIpƹ狾!u)Ef EK`  4fPȋʼ༓® \zs.$0kØ@ ` /+Π :&>)3<[KEgz[!w}ZP G޶2| U|o[$Qdټ.w " ŸP:uXɘ` ;.ܯZP 8|UT.;l?,|V pܹk U>qzVŸl,۵GAbܩf Wi.׷!P |UT:z+ܱȥ`8;> [ ۣI:!ʋ4 PwK fYw6Ɔl˹lVt 5۫ݤ H[ ۸ Φ\0fKïȝ+բ8 Dem YVl6q[ϋ*!ϸD n͂Umo &GmVkr|M-W0:;٠w\m;i9C| P֒V& ҆[W+= e UqꨎUf߰.t$QÌƨ&$[^nJ(MWQ>^ SհDlp &_x9 ӾU (m9NTj#%NN^E^ߧ.L p7waTMbsdxǁ>J{M!9kGv߲ʐȁ|=+ouvO_Լ/}Y<|= P=h~JTmE/ RMTTEm  o TMM iρ@¹IP {gƾwʲwҼ q쉼:1Z?ǐ~U{W| gPOtoL^Ԯ WРu*oC]%Ju" ۘGS$jH&SlfdBe嚵TqDL3W\RN0ώe;kX$J`œIXUXshѣM&oH }yNs}Pi;:uWo:ݭuʜ2\Z✶0?N{l ,:3BCРir(\Zy #°8yTi!$-*UTQ>jijУnm~.&!=j颙j}3kƆC?{A].E}͉Dˉdke=oKTރO2 89md N}Wd,kƃ)* h RjvL2y(Tg.$N )[5'j͚$ $:#3͓ mkBs]4ױD7L:cFr8Wzj(}jqU.QSRPS"."-Zr.YD!W3W_ v3$bW68{>'hi3i-JZkᤆ$X? TT6܏-wMD3%yQW~R751:^T'k|x֨P:.tq B0Y3-a blfjpf̎BQ9/(6k$Q6ud,[d3Qn:\U9 ^ӏÃtTJ}aet?hٓ y`h~lx%?&),s:ֳjgPFEjOfxdaedO3T}(~1#PX7\ ,H*Q%<&h@pB Wh2lâ&"GxMDX1L[޶qHD&Rd6ZG#-ym/$ۇ]G1דQ-sI,$, Hv'1eVti4Tw\4XX,/RMK.Z(!Y3B} ڊcMy>BLf(MV3;CCzR 3EPBi͈lT%0'9`YOj5(5eOn/[;XDmTdZD)63aGAR3|*jWTq)"~| $7jNM=i`!:TB`.F"?M l f}HPacC r)UtuOQDZ^[AZ խM>P&O^(u܌ιDKz"Oh6`bRn#dƈT oBC}XF8j3AZTF24O$G%џKpYΪ\܌bE5#ԼU]&=ѣl8;,3z½F4JS҉tQ6iP'fI S>}Q[lڸqUJ#֕5e)O 4vDxc&uǒp=%qsI9Ex {.2˓z$8ml Z{Sj!W>B_4)HJtVqMkz4S(; +`]k ٓK4K OSO4+G>k;ۑW5[C`8I&?évR#3SCʳ+IoؿpEؠVL&`ʈu;lj:@_3@{+> MA8!);# 0̻XӻJAJ @A<2m8W*BcPc, EB+\>[a}hAl蝌HA[W` O-ƒ;4.P;"hPɕcK9[D[AL8f,QLMDbʼnEু0CE}Ba6h{E';ҌZE0 Ì@^hHdHd$?P9TsF{jPC曻3é`;>52uv+a)M k|¼G"{ q‚?o,\-\l0D}؉/ۇ T89HO|ÃC? ?k$LPbl4r>$R&xD˟ R2ê&~ZeCC 83п=PȲ> YJsHʆņxx.rI&lDD\촼U2A㚆l>hPH&**X(DɜLsS |LF" ٬0UxWz9,MݑFظM8tm7TI `P} D Dk\⷟9̆XO̴9|̆3=ϏOUйӄ5C9@ٸ PpìxdʷLrT SI^ׂ=G[Nts-ڟ̣ɼ9Q8тL ?o 2"2hج #@Pc4-M C 0K1e ᐔ4վG̎kNA='E#/!4>3j IL !}<2)#mIT (ۻUȜP_kK.M5TƗd;d}8X; 5yZv(;Z8a]>=VeȀO|)O1R XtMt7r WН!8˽lY 5W/u/Pl5EGGTPջypkL4Д|Q=5EʆAB-ra18 iB1I@OL*iK\" W`1 $a5Z@GIOy]cF-֝ [OLOZUO5ZڐX!ԐVm r&yٹjNK0M&Y/G$ U5[W8s4HōڞIhN9ړQ+{X{_e}BZH]}K% 7s-R_@P[NO ޸Ɛ89F{h4ejP&M^܊XXθZļ-N=͈䵈|xີ&}AnʇJLb$ OoZ޾WiX$~})(Y%&&tZC _F1*֠&ےiY@%0%[x75UcL<.i_5iKTϏ+#IAHIE];c0[a:Zt 2h꽶+@~&}Ez[e[ 6HfE)u =a,O&P|R}8oXOq YMUf吀}=*G;g"NE~+ٕAcdz孋1 % 3R j h sa:ofvhX#[HglU0ۊ]7m[)!ɷ\a=fGbD*bhl؊n(K':`m.ЇO i)JilTifiI|&vn K-ƛ&Wȗ`˸h鎌 $Cܐx>ܐ Th XP.o0O˓FSfqxbo"ĔLamH<FIν Mdž]jl쩰1icP,  >irmtFkUf鏐Iar utmAUHe ^W2"~Inl E8({.$Nep==JHYE 쏈0*ܤѥ(c6&kvmU~Vٞp8Dp9Mgv5?'U ÷ Wn?s4봎Mik@(hʌ*q:,%jf;qHJ6c䪺r"_mΈ:PUrWaFnMҽ^SkIȗW4 \FCȵ/W0Fq<'T \K~=V0*Nߏ!jv}(rUoq'on_M߇wR/P7!e/yp:Yڠ0")vDodqh {lml?oy8y}Po7#7wKKKq}txw&}/Sew7zZu457M r$d=z-bf3t fE_&Fo.n*O8r߇JwHuƸyN_v\g/ף|OuUXp4![īׂ" ~j)hdjw{{mUfnr{PP&|yN'yTzʯ~}|5z-M ZP&Rbu}:i=WPnT,hp7>j!} "}(n#FIE7且*lj)$%:sxjߩB-j(RjiIfhZMubǒ-;'ZmV\Uj֪n-WzM/u.lǿ~3n /丒UŊe#dȕJDТC`СĈ-J--?p3=Or, evW]ɲ *|,d DQtQlZQm[&RM9%)gT'6"Ԕ*X3hcW9zcYxobdxJc9.K.^gd`uFBeikM$,]X9~ESqHOO%"RBQs7X#1> diyrQ9|$W^9y%x#+Epvk,k+j +aڛl#}I(ՙ!ιg6 G"9.RC!垒RM+K9ڲ"cl_+z1:e ךjڮEk"BӴus-pv;r\=uVﺋcW|iO囤dj |)7¼rټtMD!agS#c-o'gKMEIŌ(+66[s; iϜ $mXӑ7俏A=୵p ^R-q5g[[_z42vV6j7OOH9.ݽz79 3i|#xҙB.cS*:fC񲰹nv쵍gɼ~>*EL*xײsw-"⊽f2gLpT\ 4`Ȟ=y2= @yOLZCL?C8R!$#4F0Š FpyEW.mP-6S%L5ٸ*V1 (](G;DJ9͈t-}UdJO@H+vWeQ=B}(PN(D iHX֦Ĭ"GW9YT ]In+y|/G½"6 m9BP#Fsj3d}f%Uȣu.f7n/-SEZȦ|TZ^ڴ%!E%ۑݰ@EfFaHE#[*#>OEk qRs\YOBl"Bj@^%3o|בM(GI*#p7>q͏HhUGV[$cN\1}jjSD7-v^H@_OeGPL9nvsAcXǬFg#*K]sU>#Ս{E/$>v-pv52J?Œ٨+'.pIdMC޷~]{Ql'LIG3l\өÃ~@9mcJЛMoycc{hdּwMe]8#8Eha7$yF:Kj }O F:!K1yo|h5^ k>y NWI2vl1,,Ks W>#O/(3DJ},~liV3)2䵧ȏ7ݷ]&~sl.x܃Gwl)#>m!ɇ+AM C[Ƣi<-ΙDS^% ^\9%>ߨQe`lH\%`K_lQZ `WOY_@ĽLl]k*ի\vyؒQ`a>@`za`F"D5ϲI.>bݱj#l@$0֞֡G$ ~ ߛD \K;i=`D=DdOl`km$)7Fa2n$M[E2ʘd>BP^9]!fҊؠ$_M] L^/}k:1!O^$>7iPBcF ەQL}wAel|KIzIdl. ;O#H1YZD>:V1&fF 2ZL!-[RlLek襗%V`!l$]`RR'#M&(vr3Rn_gzlHelR;(&'F^donZxVUzcJ j=_|UV& V)~'=j~Y#l6āgyShƝ('ĴgD(GބR̦ Vb1XYn'wρfĊU%gi.~{ݎbD(lǸ~ӡF2F"z!^h4'X9n))}z$eч fFz(wZ$GV2"¡֗i/g CFu&&Z )Fz=)U(fYlhڣBV9OOI~)ǜDB2T~]j!j2gŪֲPjFaƍevnܧI&KW֚WjiEU]c*MPc푪kn9ߦvɟ֏k)xz⫖NlFtkCPX6r RɮO49)X_I!jcbgm}zI,Ʋ|(ET؆G\Ln lF(m+>bD-Ԯzn f-؆؎-ٖf1HӞ۾-ƭ-֭.>4JbFY.'...6>*.N.!T.fn.v~^..閮.ꦮ.붮.Ʈ.֮...//&./6>/FN/V^/fn/v~/////Ưί///00'/07?0GO0W_0go0wJD|p W[@!,ty H*\p_#JHŋ3jȱǏ CIɓ(S\ɲ˗0cp͛8sɳϟ@n$ѣH*]ʴӧPJիXڬׯ*KlF ]v,ڄju㦶ݻfŋ_D;O-]{ǎ*$ܸ,3i 9dvLtE9C:t)٬mg PSpY8_&>u򔶣.Y auu#<}~< sS`b 1Bmuϐƹ4>g1vw8ĝ}%'LEHd ѭu]eBӃFaM@z!]Ha N5amނ)oѷB6~JF\ xa{ɘsecuED#X%ܒ1 txsܸɢqU9gCPv%^{  69QHBdOh'lO&y{HbG:o#^clr h:$9SPE>'N8:Y8ޠisZ~'תˆPx.:E׬@jI"Nh*b6zrDA]@ ԫŬ{PB XIr~m~fm)ҷl0rpI #cPA-U=qj͊<*Pi#m0@.ktXrٚsB:P ,v*}wIWL(!+o_M%f\JlbiⅭJ^3М6J{MwzH_wGL+1MP i'u6%*)Q~2j7%7+P2TzW]kUyC+䗿6$dq2D.H+/}I1 PGAbLj JbƔC@ *P1EdVd¢&ˆMⒶl50#3Ʌ܀F8U)!ZBɰlC&T3]@k`єo Sx ɂu) kl!2,R`+YlM-md Bp &l|@9 cJ&eJ"ITJX'+sI[T&Ho]$+IKDydK4Rӫ1Ϟ@Т60uFňCa⶜6#p+B&鳆Eтl4Ѿ4Iݯm*e27%Oj M1+JƥqIFzǁ4Ԍ4zJXkzAP2u3MwC;dF5i6[W,i-s,]’\Y@ mp֕ 6/ⷿ #.? 򵸔'BKsjA)Vcc`~ Œ{\r(סZ1z5mU;Uts9&IR{.p^M印.u^&2yA.3v!]tVX™=y3^*rUZkZ*E4<+j2_^ f&˒@(\a.aآU *;9U%}9ܲ}IZs۾%y0N2M!k`:KU2_WnPϙFBiX1odͬf3Y LRw޳ѫj4xh "~׍e}mbq Q!Š=Q_1vհֵYӚ=Է1L$Gq;K:`5%}ԡY޴odFߏ,_iWE.3:}@5kXĵC|\AmZI_lއou䃥ؙU W y kNe-+-3EÝ/ԏkS _:><5m{)twR3Ϭ^yrL~kYmMs&ݳKN߷'; 'mn`tiPcEO+E?AGbn7ܾ 3kKd/[ j $֗VZurc'_a,\(aǀ&un%!p Cڷ}G]mfkEf6b}=tv&YdXTegʀ~UucXz~Vml;iZ={DV?o[]d}Ff`|peE9S~Ǖ)S bh ЁgAtfTlVxt~kSx/x^΀ 4/6 8Fm;hETnUhrq7{l9w5r#gnx'zEhWp@ ̗ x bwxhx}ooo}qhptw#A@X.xG}P ʐM(lgE-grvVԒyvYv6Q ,rxgUy+|؊҇Uo7!x}G8y@dsDe\V հ|Uhlv(n({B7{nטugWH$X~X@ё 4(xXH]tovT@+Qюz&1q {Ȩ p Ȑ}V^Y#لгI_XWyh&٨TnRGu a 094y'0ho>Vݷt~IQ~Cp+;eQVyX 9c\ٖ疝iS[8!-Tp> Y{bكZ2uxygh_7usYە@pK_8t'xe/Ij_HuSǠjgɨ5VYmk9r$wz"vP[eٕd1G+Y\/Q5ٗ~2@X&6b}4 9#;tO"Z\!IĠ icQ^MIƃɃ8j_bh帖"yYheupG|yiBs \ 'kp xsQJ!| 0 GGz& ʘw`hT @ rJsz>0`=*`׍ a` 磨c P ɍ e†GP ';} 6i89H9C٥^#֫ q*} HCH)h: ; t z׹SLPzѰUp:ؖ ϵ[6驞FIJ 68n¡ ` w*s` ﺯUPZ g ʱ` ^ 6Y &{ k: \ѧйxHw2 2I{i:+e =G ^9gխL\ۀui;J K䴋v "~}ŲdL X. İC zAkIĠ Zej E0xɊGy82ٳ4*> ;!G DP 97q]ٸKXШyll: L[dh H6|:0WpӐ7;ԗaӋ) [\:X; S:; 7:;=w6IbkMʞ1G9` Ի f#*9!uk++aK7z Q aH񪀙(KڲqK<3iFw UkSP 0l`ċ5l Qiˉ,u; K{ 29U˥+<dQb}6<ܾx<" ERGqZǫԸMLvɝ̭_\6GY | rAt,~٫ʤk01^L Za0Gx hPS=h[ Qtz R(XVɜ,÷LȷT(\Fl* "̈́|\lTɐXW ,vzkxQ[ڵ ;qݪe` Q <ѷ%LP $|QQ ʱ#==u'*ݳ-:SY|.j, m lِ|HA iŜ~kk % *yGM. [ KGXS!T|XmQ ]  pt?99k;\#Q ݌  ؐsːm[XG \ PݩZ7DH fM [ϸk@|ݴ{8R,TGjSgѽiҊm{=Mj_[Ά-+0ߗ`IOjzL` cp k6NE DX~9o'oklP9q LנS!+p |-n -N /NqM۰Oy 8F,L ᙶPqM_µf~lN4y q>" Ed6~",=.聍 mU?-M>閞Ũp΅٬@cX'tMG Ьx c.Lu\@ ǍP. V! Rs +9w RGP~Z$},ZY,=L 9n )2җ^ KE𴬌h͗m oez` aܘKͼf#"IKL QR.({Jj}}DEo\Tޖ.s2 g[S>}1̷Q`> :l~ʀ a/ZRMY}ԃߧ~)n6]:'q>/ ~nc UP WP@]$Jeu 2رƎZqL%OI'cy1ac͜[o[Bn?SO>PUEo>dNuR}f%B\M[%jqέvUJe <)+_=Κj+5*RK%[-xrC]'Nh)5C?lpdTm [<0f24aT3}$SPUjي:սhR X]umqэ;|]*PkBV-oZl+3͠2t10!}ȳ 4FhiI E֩scI[!:Qи}Jȕ3R$B ʮ1Ңoj!®bO.J+'?$¢P bEsAjy07kP! s1ȴs5`KeSf6V-'jN2GqQ8/:JKHZU 3$ξ&τEdoiLh9PA%ds+jST0cju4Ó-Q bBGJe_~%wߧIELUnOnTL}J1sSMH[o5\%R֡fӢYg ;i%k݁J}@(!UZk T3x/ #hj;_՗rESPqN)}ιhbɀ8[U:&.*K센;I o|fVPfIt 7$($l7[{ܠq'$$GC.&o rs)C.,sT$ Οsyy燩N>LhESt+])J,^+h4l"ne #E#eΓC\9 ][ߡ#ӧNbLi鯀r᭭i(~kኽ#ݒD BC'C/NKY4='=v ;d@,J; L}0;r-HsJ  ^1`2qMk7y9t<bp.#B }@ ѿ98;c}8샊s@QRJC; oڶ$1DA+sWxyc7222 9+}C  B< )':J)^LQîؽ۰oPE@@UC23[5T7Դ4=ܤ#)UJ@`d)KI˥gFd >; ]@Σ?p4[BM0 P4‘q80 ,\EPp 8,⃶\, |Ct]!6> H}8 (ۇz3ľjAFuK 3ZG xB8y8LO>X fsAJl鴤tR< ;Ek$sa U l#FTlL2U7KLl!< )DO=UvR||܇k, ijTDIHJ}Q8Nj2#P9Cp;͈N0̣RN%]^ !ZQ}hQ$IO3݋Y4%ɥOQOqRR;$KĴT(IbR!)2yXЫ+F|,B.Ŕm(qlNL52MBS5˕\U]ӇI<%CyกB,v2$=uHPx6 GW2EEٺCph*TOh0T\Ҽt^'E5S3S=y$@ X0O`PHXSDŽQbi;r.!$#=mCC})cW6TFk gP׍IJ SxMJQaTW夕~UlڦڂǃQ̂؈qWr%r֓PTg훮E5tW@mYGyH4m2Qm ۺ+-֕]SuP6 O#0EmǢTQ|Eϣ0SPUPX tZ@քɹo;[MV֑{Hust1W5A Jlܪ9;וl1ԳO0تڥ݁ ]>Ե{Э7DJ\RQ*a7[ݾ-_c!p ^};+;DE^YP\魦^_X xi=JK MY A#YBW,k߁m'/%LZ 5U޼v^g2 E?{Gu4ky/ $yJ~cMrZv"VI4 $Զc2.Hf)yۇ0̑ 礴L>AdadyUM&b*=^˽4VetrȄr|{P=[Pg]i|1K-Zҋbu K˳f5B|b\[h\$9)S\5u-X$9F؄陆MWf}БL堖D8~eh $"K胆r+h,2HdE4>;_Tk˃ htsZp0պa~dҰ"iiaUV-Ƭyq~~HPpC L.(>!)`dsyM i5žsFqGj nl0]~}p .l*{Vpٙ^\kr槨Qn_]os `oF^ =ǖl&hˆWp胞8#؟n9FUPN^\[^/Zm8;Z5g^Z։^ougZǎeylVn~Xn;N% p&W/'K OZ9Ӗm] &q+gms^qY`4]ZޖD9 jqŶk!F2p!gnI#/T&c7!'k)rT놓}ߵ3,Z0/1?g!}֝vs sv<6]*!w7tQȶ;W}C&4~|IK7z?,vP]]:[k/}S?usNu3FnuiYssivW7u=dxev"ow/02Jg 'G:t¼/t?Mw_kڠ6tGRXVgsyly75Z}hwxa\jHf.YkG)Wnf.ysXȕUdXwgxonvqh~Gnӂ/݄OEVgvOq TjzṿKWĭˮ߱)uS,6fmS=Xu{"{Ǿw{qfGj/@-teO9"|_k_ )Oݓο 1?GgNoÆ6[Oc5/F؇& GxCOOq^!Cv „ 2l!Ć&RX*U6r#HE^,Y2X*cbi2gƒe͉6+N 3ԧB}RPq̙*nX_)T%y;n؊qᒝ+.ŴjջTR&oS0ĊR4cǐ1^DJ2[|Is&вtiԧO?:xuQUomٺbJWlݲ^'(im&dy ^7yR7~\m .]1ϗ!GLeeƌeLgEZ4ѯOR[T9K d\UiGpb5Yh9܄9[w1uO` r).x㑷y]Te,٘g3W{RE1_ORJ S NwR9'W-h!PjH8g]~1VvSPC8'c؋-RJ{6M5O~dS!K N֤QAy VdaĝeY!r卙S^L2tiKx'R7h,Nh֨k"(Qf^)EJS_F(![jQ4fҡ ƺ(+]"Ǔ},rf *-B2lhtQ().%1O\\QoX멨xQ9Y f]^Ͽ]P Y45RJ̧,2G9Fi1RKu$a|2ox+%Pt V3[253st8S,2>4D/S듴MG\5__ɒВ]NrK;C-r9esEB~xM9đWM -_Q;u\k=im C5vy;VUz$ V9O\u7sU7ԻI"O><eOrU[bӵ$){֛=UD RE,TN/,j`E,KsLS"_Z%e0YT+ࡔP"=Y '1aOz>Xb78ƮŎ*A8T&1fon =ĆL@RbFy\iQ8+k[ל&4tBu1XA:z_UT ,."ONN _# ~DM,H$CJŐj"/)s$[AtquЁ%Wx 탚Y_.ȨаHEzģAyP|XDYFy:x}쒞iM7{K)1[TԧPk.o1*3ef)KO' xB!VIE&OSIm0+j+1EtHIIf] "EɣLtPXG-|TzR*2SKg6st%J2bu_@Hߐ1r׉>UbTՂ4=Fe*b%2^"oRL)9lP4} P)FW5,Z@Js d6C!.} cEӧ05zV"dM'{=R=kicY<Vŧ/*<[ K PBL9.5\9W}UN8(ܽlK* _HnѲDa5 Zfm :Y@l_+UI 0!lRLΗ*xkON(&6HB@\*>@kVdC}.R ! _1B-0b WnN5\Yfan}+%t8T:/0Kj*nq2LP$k<U)o]_3 -Bmr!A) s=f]D"]53,YG*ӚyBj5ӧY+1ծثuq3})dҖ V6nkH^-./ՄΑ]%[U!JM6^eD*p%z7Ⱦco6Jmo*.rs;HJYL3YL4'#3 nl1m _\}nl@F4"8)R8/NNJ5 C![?,bپVjvu]|skϻn~2#> NP]oJ=vx|Z}"'ܙr0>{w/}㝈tݬIg?DJm~hz07'B/uPAI|]xD =m_kUERE, অl UDu`Tpb` ! SF µ^q=\瀠B Њ0. nz*va5UDfO!NDZ![V"!!T!."#5"$F$^)$^"&%f"'v'~"((")~&"**"++",Ƣ,"-֢-".."//"00#11#2&2.#363>#4F4N#5V5^#6f6n#7v7~#88#99#::#;;#<ƣ<΁#=֣=#>>#??#@@$AA$B&B.$C6C>$DFDN$EVE^$F""#aFzc|H$II$JJ$KK$LƤL$M֤M$N0ORt>D PX@!,y H*\8PÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8s䦳ϟ@vɭУH*sӧP4*իJaʵWQHիَƌu oO:.DMW`ܸr9h^;ܷqBOʙԼ1cA5݌DJ<2f o& bWMX3Wxjڶyskf b⁹Q&IҼINÏ_|:f{t~± 7j'5^t!KuvQ5m*v1 S1tB}(]x~:AT#71iSq@(`B*l (U3sP>hcBy5E2(ML2~5#OBMYjiYJ-ٝRti5>h4I&_IB㧗E Gtc5^1 S:J(*ИM$7c2 -zخ"tѩ)Xj Z 1^9u!Jj$k*FYiJdȨmf1M ī퓨~D@ymjQp(Zм3N4l$.]ԑ"cqGAWi@о&STEz R 4 l;fLS+Ts_:>:s,>kRmG D 2X3RK-P>JKZWݷ^Yo2ӡ0!A[wavBn2CuWMs#!e#C8"o׸ݚzAy\uJcƶBɈ>쳹wߠGD (2$SOh]QhԍggKWOUެAo oI->(*r= ոLBHD;%1>Ml6b,r#җ>?ɛqby+ ]7i^A}ZCp6՘KaH$8p V `87?Ê4ѝ7ej*wl5]qW9lhpAF3g/E> Ġ'É7W9XDI!2?bn̸ 3 0#|HH:2uڊ5$$+SEb Bԅ2/fudZQ\XӉK06IzWa%GMraKa3Hc0 c\FilU"Y'-X‘^eFƃ2)CLf6SD$^ k^P4o*1w+&Ca"B81Oq c fjhoe@zP6CRmu64ib29לObB.zb HDb1Ҳbs!k7#Lu!LI*0@$Ӡs jdz5N DO*iDظ+ku|݆5@ԁ m E5Y4G0'hYJTm`c? S<\lێIz5"6ۑnΚDj:VH2i1"APsU$s𺎅cs`YX FLS i!+h8Ϊlnsr]jX$#5;nLr~pϛ*?싈-a7_HE]\Bp.JA]BӨnB~)MX%cPCJY-.hJGaF6f"vhىqaK@de0bcB0bZH(]%qՄ''"CALɳ" @N "j0"6\AGYpCe)~tE1Iu[V1 fC*H*ra[dmA暐A>˒5|Dx4nZ1V:L]K`b{1k@G+j77H>^oGd9ehK`7BJ]oJx!~Xonr\J#5FgeNu ޺ʍzf Y\':AVrR 0HqO]8ۨ8`ё\ ,W$Cg5w8ƥ" gk/ Yv%z簞ea^ڝ|s-A o'DGƇs-ɐ16ruP#춈y[ca/ NWobRwZ5Epd3u' ` _p{\W/CI|&G d]br1 n'D71q~) H/9g|flfDg~GZԠ~d^c'WhÆPD,!{C"07e()W2aXcm0U| #G'v.%m(gaQ58. vz{q|&\ͦf Oc'07$gr92:cvZჟrp OH5DS=AWk؂kGFB Uft8t@GgP OyBuQk4H5uH <49!=w4zۆc8z g8 h}0OKxmHhV{ mG,,$ve/9q#$*fʤ 8V <\PQ asm|כi`(% I-JaȐfqgb<9lV!Y֐.1lB*uS0*d[w-W gрqWkbǚ!髿*]U-t˴,{ o7;'pDG Ј q0^r< W9g*ިskS;7_>y4z& pQP {Jm; KJZK)*.tp*ǹ:aq!<Aa)R Kq\l[]%k SR?3{ vgk |+ !q6pмQ  f[K[Ѿ*̾QjOK[{QP;Oo!:i  ~< ,ĺFM e^lOA^ڲjƧԒ q=!&Q!iAǶ.̴MY\˶|˸ll |L˯< tM 1ɭ̢ yU  Z ?@!*ʎh,gxla$q~(q<ȕ iorDͪVX<kphh!Ai ΍kz.q +GKq( ͼa\.sne8 ):Py~ǿK~PvMymQLN cѾ{i_yкvU+w _]\DF= ̴ AO]6 JTM(' ̬ }^ %f-s ǡLn={v)\׶ 1Ç]T0 9#ɵ.AOm;Wm܌7.> i `䆎I `rL)1 czk| KOɞr"ojc\( lL|w=d=~I]x@nRPX#deNO3`N,1K n^ , Q~A߾'l >p 0@Q <2k}K qOJ\M@a[z8Ġz5mӊҰ}  C_}n 1! #1 B{Nq` >瞘2٢V;N~ug{4u !` >8Yq^=(됻.`Ќ\sN|R4k! ;| PA o>D?OZmE 1/m?Dos%sȷOx_/쟪 pR/8!P$IWA Roݩ _飘)5nx"mDrThdZUk*c' L*}ډPg},ڌʠ}҄"FTJUPՠ,|'cabEXn AOj$*_a̘ 9Z)W|SlT`V.>!]PR&lPXCT} NmpkWj7NϢH ] ݞ̛"aWvҥEO._=KUN^V٩RJy}^*璓 2,P' zKB$I ll1N=˴Ű9mƒ0$K/70;( r.? P@HyJ'm1 h!WnLh< zA4eRCy3"zs7O4ia:E9Q;P"O>K9/Rk oTr}P )x>'LRMu|Ux4/:T#~b"܃-2?`h.ڀN7J5_}W_MfXSb8dؚ͌Xp8=vha!Y>7fe}9jWyR~.(\rP <$gqwj'u. Wn|ܩf/ߦ7UF[9FdL6vYXJs.pȕt8*ODŽ!~zlCwKA9g/C57< dq֋8"EԀˌ=Pq ΞrP| B 0!`BQ>x\-J :^WiSDB"M '$ ^4 !"O|V>y/X u."n{&\OCPn-L e(=ei_rT) ),F Ȕ|D.GPE*ЏhLKtwX0JK(BA}wK'd>j$I)Dwz*,Fı(8A ,N$є>h 0%p#~O$6sX4&:9J3xAL d\g4(đ@JQi r1HVҒK!4H2V|dD|e:g-j6Rè]V }!m’NRV*4WMiڐT+YӍ NXa2d԰< *U2xi0ugCء$1c c!Rv%TV$Фg;ڔfYIRD4T sc#V8M9#Rˈωdd0E)"ijfJup2k^7òZr*4j0^q-|bQJ qL+C"D9fBԬ ja mAd{xRjO0n0w_$'/cRz7tlāˆ^I9~cҎ먕"O1%} b)!$,4'y(;8RvlVJT pD:09aAZ5- a"y&4L) 2"lR@>R0#JH<47;Xlav6AIdڲrCV>ziᶬeÃWLk|J/ҡV@mN;N_>UZa rCbF2* \E GSBq6moRgl4wNA?2Kʽ}Xew17y9ś,tOi4&{H* V6(BzX ⰍOr -kMhCֽ۽8ELθ,dX&#O>pDnm}rf'3P~<x BA$JCCkCP[6g,:V>ĶV D=ok0;;IcKç8mZ2ÆC&$ ECg,+d W,o+DLF@,µņG$ `l&ӞDCƂPF+S1fS|F+BV6WLϳ F#st֊u6sbclFC{|Fm+<<B$ -#4oE܇C G\1?4]7 "'aJlcLy?G ӱTXSU-[MO!":eQT`M .c} ԍh>X}9\9,եTMk5-iERN0,V] VG r追 $McXStUSEKuLw5ݿk׃} WpX]mXׁ NI8X! 3? X5,/VqX}YYEuٕYY]sH>=YقXY]Z$YCZeZZ=M}ڪZ}٨YY3C [][MD`ۧP[wuZuٳ[Mہ[ۼX\[MܫR\379e!me܃%Իܧ=ʵܼ܏}[zɃ]>P]}]m?[};]@ uۆ]]MLmQ%X] =^}V!}^^^-^_8\M_E_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c#4Nc5B 5~c,.8/vc:\c=!,j H*\0Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӖܸ=JիXlQ֯`ÊKٳhӪ]˶۷pʝk@fS\1sFpÈ+ZǸ1ckꍺOo˘3lƹf^-ݭM,9;6 f'Lic ;6l#D{a3dCֻţ<&/cMV{4ʨu:m5cӧm[=]ű3徢G-\G@2'MOB@ft%GQg|d6Quwp7&!ρ G1q(n|5G3]TQ$q%#1LcMk L*ޒ.F))R$>hd y1>A9 eJqɩ8>l"3C&qI@{2$\o2Q8giAEѨr˒dr Qh"4l X13L],)sPz5Z jzf$EK1"D6q g!2ˠA*z6o6RܯLqL2yӣ u-"1+BF6m1ʜѼe5s6Tc2[64;T/GVB9M7oC4]@Z+PG]%Y$ 1䒵 52)zX (x u86-e=ķ1|&DZq&\Fd(ئnB뷲 ju%BX Hh "õ_B.$UK+JGd,H*x1w^Bp{ 6 ҈&*~D,kA-=_āmcOdKm5LK ,I-ѓ ?a%Q kh^wR(5 %З~0 8)Ŗ2ᑋV-wx1,ы@38&x6P0!sinp#$^ h )  @Dpi0 ,Qfc)m IH@ɜ{sAP ֩Ҁ^.A:B @ 2  0i AA 9Wf밒_HD*I$  h (@Wz3_ C!fxbD $Z41  KeXw uDPjWv !1R_&"09 i 8%%4w\be%%Ѡxıф a%xHWGjV"*i2)#Iu%i$eyu7TDkQݤLj'{[ uɵ[qqK ŵ ?К!1NP;#[.F@b;RE۶ _["EWwG~i+: ;TKJdKŸ yd) LuV9j ޠ ;J !${#t xQ <c&s22; Q|+I ۻ I'ѲqJM{ћk'AsX[!Kk+Cכr \!{Q9c1E[ X\!(W2Oц1a<¾!>)H<L KO]<\]XN_<o:,%[q{ aL! UAa2AȘ yɘs\Lj~1lČ@,!A﫥h!BɁ ~wLL<&A|?<˓GXx<q.Q mB}~ Ҽl<}N^\ /A`LO)!!LD9ALyƱl*1] r]< qGM ='gjƸ,ɤӘq N FUH%+=  .q@Ql -\3}/ ` %@\ !B]h]MA BaԎ} u-j%]ԙc }]רԉŔ=a9 Na٪ m-A<r-%8'DҾq!ۑ ;=Y; -}Y`d P@kՊQ. }>.^ոN$^l((*q.>44~8:2>. <߉aAN=T^SK a8Vr>:L^~h} %ipr>tQ^xz|~>^~舅芾>^~阞难>^~ꨞꪾ>^~븞뺾>^~Ȟʾ>^~؞N0@!,R H*\ȰÇ#JHq6m3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_\jУKNLֳkν&<^C<%2uɽڿc|πNGq X LB VTag1,3ΔhGUM0-(F.JCt6sK5!B :ʘxJ5IbJ> /=@L9dFnyRMNE]>S&G+IcJǬ3̞ͤ`]83لTk5͝c {&fL@ &Rʄi5CB犅&NT's 1*_j+]Ԧ5d**Dhwڢ ͩZSzeB65+WrRtі, LMjc0It+ ýVLA3S@@]Lcdžtr`.LC 5 3,P:CpYd,2 #]xfT:Mc);41/a Q 1&y2` fl'&GHSK>=L2#D#ЋG*tE1QsB $y2˼LK+$S''.؋S#Cd|As; ?PuTdx"3y]H&eYSlz\\D@N!K !p >8JLYhb"&Gfy$cW%A\跉/=Hh7%yKlb IO>]C8OH &/~A>!BBxA&nCxjTh )d#4>HȑdBf\(47>%!W c~5(ϋH TJN4ױmX" U8)rZ3y&5NkLq_h)C9̄җɅ.a zncjE"2?t=(%m؂xԦ Iyi6(m)SC7чv?tRFVHh <ڢh|ի RCKBP4-hCL>ԐRKsd lt|¸#%4+^JhUJr TbJ2:|l# )?y U0 լ1%D«>tdY<* iKdTsHRSJhIdQik6i" :`:dVbBv*ұwlAxA]$nBs!JnCGmbW6V#)Oض5!۸kK2VĪr]czinqwcȭfkMڔQɱe`/E+\"HEYR/$M]clŅ /A\1=uu>k>pE 9Rd2j|dy s\}ZVȐM DMbWN>ᣣ,ISaC+!Ũvl1NjA}Йb3: :O#.6c Ը78XCpdCh J=ϖv1HW[1}=;}:$D,૯Tp ǶΛ!} yLP!JQcT-!<_;A~ H\wCpgcW N 06vYv ְ1_Gt`[e"r`OT? }~G}Gqmw }w/x]SF V>~(rbc~DDa ,zHG=aow{tkou/Eg ? zvW Tqb#9Uma>dYӂ~S&6K6^a kdWPb-%ۀyQMG!v'oH|3 qg6,h{uw'6wPw5Pkrma0JU犂8Trw4.(}v`H5(0e>?x~+U6v%8$bo0ђq$H:C9r}0')x0$B t 6\Od pT-=Qx'xd>o]H c'F( "ҋ ڰaVTG +X j7,# l&.uHw<; ED(yI P yT$90UjtL({(7hRVjy%P }]Fќ a y):wy P 0C =u)IEVS愩Hp0j ^inFHFA% n|j p pj*C ~vp !9cJP'. 24!Ga%;YRlGz((P Y  h7 " ~٠ fzl*Ú shRaPhߙ-6zQ7S r'Xť 4I 9$Z-ʠ]a*@ C:; `odIJ *Z*ڭgshJU1UX&J_+Ipꦹ V {h   ] lwjJbj2Z)ۄ($z!5;'( 8 иSL gH芯J j;k a1ԠºpB` $ 𧝌z"ڡiq Ԛ2ڛ@{˷PEP ybZ[KH;+[YXwԛ{T/ZTtךwڰQ 0 bIJ9r#qw*+T !*~6 a *zS*,*L X.q8eN4QW+ PKRKoW{]{' PƢH@La 㰧\H.'( q3ʭ6:CRq[c%ZrS:KWG\!eQjrZa0RWYL 1  lP^0o|{8knj҄{l-PZgjY ~ Ȑ<wBO MZm*mOlW,W=وGe<<MŻ, %ٟ65L.ZVy^ p}۽s-[ >^{کEku LIˌw]7F R}p(  [T4!-(]=0-g%߆k =|FG,IX ^I pLN̋ӵt wg xZEɈ е޵q/1_ Ζ1k BQ56r&L.wQ.N>ָ\^^eNy Č,:}};mY{>X `؞ND ݇. ]_ #a!~֡ D-΄ H.\ ]nJIxGyn ḝNذԭ eN̽; +O㋰ 4 _9߭dw, 0>י AήnVbAK^9H z{~uɻ 됝xt½,WK1./1O`@ ŒݖL <~ %IM j.ٍ}\ٝ-Yk}K uKFî" Ƒ aM .O9 A P$#-A_~V%m j<JZz$A.,P+}% \W}4*M}# LhP]Z l4վmJU`9SpiզuXqB!-Z7+8S:Pa~}NM|&D2532;+lrƋ3jl<*U-iU9khuZJѤY5kfUU*H90*kն};Wn]yכ}.|_ć_qa*^HSJQ4R4H‚h ͳ۔˭N*ȷ\QHȜ:J(X2j2[:!i n3`ZbQskPE :(#H}+/*k}4uS!A ,WLK:Zs}A +hj AZPsQBZt'unO?!!UyH %%[ͲG=,H: K.A1<6+Υt3:0BU,/; e3tCjPC1AnFL N ǦIJL}UdUכd sU0q VNկXsNKv@--㸿J WDmKQpj4Wt9}ڥQct2)rw3!X}k &k+q[ qL L qGq"ƏN,/|ٓAfv+6e|[7F_ᶲ 4:y6:K5X\:":K,}Ksw/@3;,YV>#|&jaulIju 8psl|_\ ʩQ^Z8yNWU WcAlטMmL':!Ҍq1_&e4~R:v4FCWg7Hq d7U:3ҔAo"Ԓ6|2ߒ *LZ|:+qoa `kZQ!A oZI yz U/xCrx͜?FKB7$'_(, DuGD &~! "'CmLcȼB#<^T?:/1O҈F]FDnј#Lx5FC%,H-Eᬣ5,.f?5YV  AV*iIU)'pIWyR^>D_AW2IcAp1$[7:D0@`5`z4 "mxDV (8EB˓~v㝘,vLM/R\j9arH',ɶZ-FT b%eαdYٝJm'. ZΊvAD>Hɗx6a\Xclmk\jAa2k}^gR8oGq :ϙBԹN`ב>dhw O$v[i m%zuH!X([88F&ըQ Nc!!-0I2y0$CKU~"ta%Vp(W\qO:CIM$RcPXju+A"|,0WMc!86|w%b&3rxf4.|df>{7׉˗Lz) ֪ρ&V/BUAہ!A\y4AJZM"[Pqqv}).\*D Q<)kuF;[ ވ[|᫤C)a ۭ*7\Md^(j<W`Ȅ^޵0 owwQ |/Ε)b~7alK[`{^ORWl@Ll>Gb6[cG2 y5JB\z2nDu(#t~Pw£ >xB!>/%#yﶙ(Įmoz_$ oP]g{#&'oH^+Dv#yIHվ-D!ܩYoB=$ Awv=a+ALɆ8q@0"q5h }Ik &Z> i(#=S݋Dy92#3` {!껎칾 퐚q ț[58kcc/%#=:?8T1T}Ƚ%@ D0 [> Kx)b&y$)"R<м3*RRjPd:ID[#$<(D%[f#h.*+- ADR# ii<x%:7ѺC 3X:C@;D-'ؖ\F !L$JT>>BCf|A'44R,TKEyV TtpZ[dR:Xc&a HDCF1h AaPpNP3WFqL? OC|TSR 589. dH$D)lC0)WLJ}@c?r]{k .q=˧!} 4*G:ÓțĖ79HUȁhõ$JS:Z\\tʦ$19> -Ih~fT˷ɶl|3K,rX3E7ð<JdlD#bIM `KȿKKC\+Bw͆LaIôǰI %o<΁ޔAK^qJy̕+$jꖤ ɉOSlId_[ %t_ )<}JݼߡLb-Yɒͺ P\<mb-ώatq`hc"c5\,Yb+mX,a+ecpAN3&_d GS~b 2vҏ0۬7݁=Z QVٺSqY.U:\yJn 25d{e-57bteUa2k1Y-rXc@[>#_֝s hUQxl8k7eNlʦib lF&^hFlNmk-} mkվ mۦgvmm߾mn&CHlo8m@n.innnno>NVpv~of bfdNBX"pF'ni^tn m>oznphpH3 mmqnMq/Gcsq7>'r%_r&or'r(r)rp*r,r-r.mr0s1s2/s3?s4Os5_s6/os8s9s:s;ss?s@tAtB/tC?tDOtE_tFotGtHtItJtKtLtMtNtOtPuQuR/uS?uTOuU_uVouWuXuYuZu[u\u]u^u_u`vavb/vc?vdOvVeovgho} fvmvkvovpnwvr/(s?!,R~ H*\ȰÇ#JH 7n3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ /`ȓ+_8УKNسkν{]UyO~/_۾vϨvbG<_'#4Ll I6՗Y! 0(~s@pX*i@ 葂>"DGb>ӀLDKբ>ʔѐycACM&B[$`Bt:g3p&}8cIL<17^$X殔cn$ӌ2o'2)H ) :0J iXŚчɤx`Kqm:a"eJ.(& !FHuyC b^ =@T~F~Jc5g@ 5ʶBTMN5#YG]3B  QA։Uhxdт_9-AP v@%Eʒ* sPbPg0TAQ QcDtj" n:uAZ-/BR({DĤ*>K)X=+6 䶔#~܉N su}:3JRu1an>jW쫂$]6f,oUBd1<T<)FbסOKK4eMqOڃ1CF; ZO$NIv I.QkЗ!)C,/%#w!L.+ cDE<110YY8ek}ko\q:Rj(L̠Ry0dyv}Qw:a O7Ԫ Ŗ'jCi Fu@[]16Sc0F5`V#T+eQjX?OBhCQ .ZId ɶf4'P1߃u- ^R ]'/,6./}?cEF-c+. RWI-,dʘuʉ'R~ޚ ɜ{оj<5 HVPwhP?.M,typrt#^TEB&٬ؼ'Q$I>\!6c9Ǔ; Hȼ6z(dG'zVzu D>k>?4 >h7{kef{dgbTt|}TM1e !h2 w}Ā%0EC3A`W ăx~ger~xQy|0" tԒ$ dcF6DЀ ;$E87XH{5~!( F(yw0 s7/1fez2H96d` EtyK8ytN(~2t?H bnX7/ECR6F  hfpƦuɦ^WfCqou|wh Aq-*kOB Pهpn}OGsHs?8qa7ID0w??]&ExswSXp7YpFCVOt+c]`ց (wJX|.9W:V]^1Dg(MF3aF*}@hSqyUxs&75s7U'Sꗒ(U74 S1z84YeFlbk{镐/8+)aR{p,*%,#iyb ?9/p Fb!ऒ~=AU1kE6 !(s3sO XF z A?Hrn4H86+@S [yU _  mfUP! 鱑b P% sy kW4aTKy0w5xh46r0g"~tFԠ y(eeX3HhpvwBGGp cYvV vג9Y}T7 ƒPbG; tIzYz-B|ٗ)aŒO؝󉝍 4Ҟ 47YCXQUp/rFu D !8"H gi=]:^wzp-U4#&¤R$ {T e˩,*Dw7$TU)u^2GV~7:Q:I- 5 I2Nʨ` _iTSik^1`Zٟ,O mJq:{sjGnjG<-~Be):+ZکuIItOR} ~ sS7NBF*9I05 ޺Q K 2T ?пb9ܫ.U a! @j)˗0*0j̹:HL70 < ȼͼLLJ͗< b Aq~ZJNV a p B;x%W-gυШpxВ̇j^ eR,(͑ fѩѭ0g= n=p&[H',,QBT<u?A-IE"}WPSs?~*ߴ`έ^]d 5 qְY;c}75=mH | ,'+409K+]yːԯ t$յ R= k[ۭb { ڹڭKi} 1= 07M-ϒ-0Xm )~Պܙ'̰&mߪͿ:Lq ` 0&1 B@Í >}  j [^ O^5P\ٍ r>t !.2=/˹]p,~ +ާͰ`ݟ-֑ =:㎰ĶxA+ h.xѬwk j囉} Y`~:|" 'v0%t>%x ~+¹FE˰+ְɮ}Jm b=š9@ 'S?F+#@Ж  `ne | PN’̾p. Я̍k }ѰVٿ޺ F/@!H (-زLtyܜ+ )\}^}r&(?*擕 \1/4/ `mM^M/ DF`l~A OU/! SY0+:.6ۋZ.b ?"oi~[+c 1B@ ް3_;4Ժ0pW 1F TRUZlcЖ>Uŋ 5ni!F."Ćۢ|!* aΤ>iV-4d-:*}Dv鱎]JE>jJTiCTEٳtWmcu ۶-,yDjQ8;Zo"9¥1CYGTYRTm,_ц,Kz4NNƊٗŽb\1hÕ+lL+Uj|F!? (סҧ١bEhWkbiVFaK7ݼy; k5p,3촨89 V[ )W⏡ZLoZXdȢ̦ ʵ;Ֆ{)'g9t':. RDJEc Tk}t!ƾۈ}@^DmQp52!K G%ܬ 38M5Wȕlh" sBn#B}+ؐ. J+2,`yTJeI ̼ 630P,p4sÍ.t#A7ۧBe[DF9 SD y11hHm(>2 Zթ߮NRж)V,׳Z/~+Lڌ,rWdHEd%`V;LS͹pŹ} g:lDQR:iD]Bm}{TF ;P!NTx\m}\1HSlX--2>/.*FF?W֠Xo<Vh!!dqLB' \KI03ubH^'rzaH;P#=kI<(lfx: "iֆ[t^9b0z~1z (S\3Jv$F4mla_ʢxӤ3X^W-℞XpV.@oe3}7ɝ(K2hmy|<^`]Z ?ϊ)MY~x,M{ذL4Sr<?nHG2"SBer9)3d^3<_fA9G8-d25çFh:" Fb7axi9?hvW1rPsPLr`+7KOY$?!Sd17#i`zݳ5aa_+ xMNnvT,X_ɏ2f2;Vh5mog \<0In9ff(-΁ C<^l#"3^6R8A23?]=4"W%fPrS &4rbƟ \|l%U^s|3Dyx=ޣ}dI ECh<]#Qv>ېoM::u˰#ֲ(.(Fq^ęEQ۝;!yPvMZxD:GD~<|5p$󝇐5".̙F<ё{g]*zt^Mm7;=}bj@8=*1[wSc0"s  /a(6y uOA{?'@ -Y #qœ?k8F=?@W B X# :1@Ҩ~4@ HpX oZbC< ::L"`:YAh20}`!$#Dٜ c)$!qhഖ Nsj艞U\EH@ s3QCZ6@%QU)Z+Qly4s @tAȈC<Ҽ?8<$iȄDA蠆U\Gvlv̌èEzEńq]Š.%4{VKCFsܰ˛JDD\Ďz{DIG#k܇ L4utɗ|GH4E|Ys 쐖[\>rAe|XP"P`J༬Jjl""$G🎨̌'tKK'a5ɹ"E@|Kȋ:L [ ɼ?ɴӝDQ; M?qTX Ȭi|2řJTM!%R#Ӎ0 U)ULB4zqޠUt:[u:DIJg̐`NyZWy+;%f%!~}~}܃hI%jdټ[Ѕ+G4L8]N\޽H~5zÔm'NmE[NsQKIRKa_D^Ndfx]6fAU]%j5 -%yZ>К5RY`4պZe/"\L y,·,>H_-}lט"E^?a!XLs0_y5c`+1-6ՁNK>_RLq= ~cbcM}8sHb?Y(=6}0ls]x͍szWQxWҔxf#/yyOyyG_yF(zoФw߇o_zD9yzRz6zzz{wD{''?/"'?H{F(gG{ݻw}h{8}||hzÇC0όQ|o|zpm|@|?Q_'i̊y?}|pחA7xM˘ܦxx݇_׏}~ڎ4~MDx~grgz:_o6w},h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨLIj*֬Zr+ذbǒ-k,ڴjײm-ܸrҭk.޼z/.l0Ċ3n1Ȓ'Sl2̚7s3ТG.m4ԪWn5زgӮm6ܺw7‡/n8X(o92n:[k=iBW*$5 wuOh@!,l H*\p_#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JэvӧP)ڋJիXjʵׯ`7fZx hӪxAήK鲉nKG| /a%gX7ALj&M߾iڼyDGCxx`&}SV74EmF[lXZ<:5 cȦ!;'~GtPm nm$m!I,"0Ɨ׿ ϷvxіPyMtMR{A4Bv_Gxe&!#ɳI 6>+r̋ IQ"A8yV'YCbj֠8{-n|b` mW^asl3$j$C$Ւ RшS y8A#DR_ )50`EH _mgq ZZ>NfQcFX"(JdZ e@Rv )ql(a'эb8A$Ju[3"$JŬBGXtA֤iD ޞjPM3t@ $IBzDq]ݏ[vqS='#R!*tEr@3Ť5ޅVHӋ/>\r2X50T3ULKBRl ]gQN# NC?h_҆ˑ2<`j`R4ϮmBs ~N%[MĵLf~xSwѲ\j? "lN'E{n8R)'w )N>E vJx&A>~۝b>bI7CAܦk^01p8q1 BMdf^S,|!"+򙆖@KJ¡Ŏ!phbsh d$%)du@rc8p!H!(Ł`_B0x-za91j\6lh6;;mN;*ۂg5O&d NT +}ČhQ$ Rh+/c1^$pR&ARV8:>v7sq tڈ% ;JáAr\"ьX2Ț,%Ġnz kƒ6 U|p XG;HR!!&ĥLS@",P ,'8.r b2}1"e(ABYĚ׬d6'~ L\34T`;MiOִ(Z=%jV܀ZljTcl,4"tB:)&qe"2M2dG+Ț%3ؓG~Q14quuPfN F1Uu~ժ!}"VzvW o]}SVgcǾ}dh@%Pm"%>+M+Ȱdc"[/Dpx-12cJ>*QXab:mK5JFmo%4u׻QrBfnu(WṶqhLV-8VNQ `.Ajnɇz,.r+ǠƁ૚u(8E$Ho7$4ղsmڸ;$ K-+}Id hUG5 kec &C ch@f!B@ttAkWV^G+ ]2YEA΃2s:'&J7΄Ahȃ}l*Gͼlʝ=lːmTHẪB؜Z H 蜭;bVM-}B`6rW 'D1U(ҨD%wKD+[Nm}i moە\mAhF~Z5]٭!} ` 8yd}11ApOL۔P$E5`8#AB  Q߼7gi`2yj֡ryp PU`y0.Aas}`\xB/Dnɕ^7v`J85O4M?gy&e]53ޗ;SuY511h3A{H{k_Rυz f}@:^"Ϛuf$IƵTG+?ÓȽO6 ƄCTO@f G5J{F#tEVRבǸc %ڢWU' {zwO=5.\Wc7$$6iy`\V$?Ep7'#? hV YwtxL'}lD[cV}J ]~ɱ n-3]+,5\@}MT 56C.Rs7 #VSBx+t7fOdo%*kVvfS)P q'uf\@ $@]'r&P% ,6Hh7&>\/RAh bbV IUC xGY`@ k_~w7V30=A4fcbtCb RP8u[֗@,dl\H@pHm;htV Qb/r C(h ^]Gm0' &(kt31HEY8 T5$(V 5 X H ՘xRAn Zd]}_r*2U܆ X8(y1_y#5_@ i51H8j8,JDs_ő)VDHR&Ir]ըd&eE#.#wpWp 9Ǡ ڶ= V^$XqaWcY>  %K {[`;0vȩAʞuzBJ˺)_C~ѐaJQm&V5zF"otB J[x;`Bl a{ B [lk=k{߆E۞g. ;6;* L<$ cE@GxI ŋM48 0vΫwrY%VE R[A$ Ǡîɐȩp=ľvc*jaۯ[ū̩K*Fk EؑqmJWV$[r|l]L0 5N(. 2嵝Ðnc^ f.U4fJn{6Z oL.} ? ͬv[pѪVq ᄝ -{%[LɨMQ ^ Sf!nNN+fa 󷶓ڻ~8,#lz8\%k wD Q4-XN~6;= Ӟ{ < \T?϶pSW^FZVZo]ϩY d+ӧL9[ iyl|-z z̼'_8 +O z6oBEZ >i@?><ӍoNQTZm+󚴀dOʞT}Fȋi:}g}#/{Epq}0 NXM?ޚJjXKh.ԷoAU!;6p+1dG!mE-ڴi'!2G)Mt9ʄʛi5$֬ ̑.WNt tW:T +k֪Ul}a;&Gj ņUE[6TU+.y oR"LU\6Ozw w-E);KLjeGmܸ]kE:l9u>("Y.̒$";Z}R^qg]ٛKS~}$ 4j$lYؗ`髮Λ<* q ZPi:cR/  5 1 }GS(3=1[TjMؐRuVŭUɉTQY*Z9_T%]'D: ^{):qܧڪj{%4Q ڨj Eu1uD}i WRz4QI["LuMX>SW%f֏nuhv=J)dϊF eDx}QWob,#lz'vDSXPC{UeaA*o>W4$[cM ObuR)k'":o,{% TɄV˃B <#i3S9iqDMDi' b4^aЬce޳<]Hr`觵V}ޒGoqh#:pRkZF@RiA?P(]fJ}'̥#c9 U_i-8e:sx$y; kZt>tXRUJX1%8r#O>nAN厲4Z7W,ZbK.;TTw4ם+ OF)x) /6Lȱ&z՛"TRY=#6 QO,h[16D똖U+Q[ r as*[J{B`wR2Bݹ)BZvŠMJ6j/E{jdfV8Q-s yx~EL^1CH-HΙC,*mi[ T 3G>'?2G≾ik9.]4'&Э eEڂ}Y[ǻ˦: j}sJ?n!2*vsyඑJ|35UG lk[ayJ,%UH[V0;5./*bj;N=:fЍ 2p{404w\^c*Nx.$oq E-:^OKHQIUy@K[O [8ȆHkPNڭЅ}5xQÒsfAq]*p RH~}rO+e%}ٞ]azmyWnȍw}B r𚩨Hd z-(M6CM>q{CG zaSo)E#` ,ݿ؟]q"۽;C34KϹ>@Ӿq9 ?Y c"Ӟ3kPAA|A٫@C۵;#H1j ѳX@|@,4>rSNX4@P)Fý[OxSBTR=b$ihAd{dӉ| [\{+LW>:(>")l\C+ Ƴ7-t=/ >D7PL̓WX1ϳ*|Ñ=T 9C}@\*Ă8İ?{PD!C&ȳxQ.]DZ++87Ʋல\@9Q>N YE sOFJ N t+yP?yx2' $Ht?DȊ"!͓{üFA@HF)܋›19DG ո/G1oP{{XiUQB!G7| +! C,юuX3tE\3e ti)"dhspJAK, ( )܌?# ȻIϡ"RG Jz<4# \ ۇU LT o S7TXH(S nA3̒Q"K=ū A1 IĢ !nbD r E)BUp;+11O6#ZGcф< T}xMr9YTp薶!7Pa$HH;- [HN K ;(7SɕLYI;}̗C=φ L S͵ q <PIЈnb$ ǡH,PHdcNQjt/` h vA@Ϲ Olc   ҡ? }tGt?+DMROݻ#?؛K65Q8-h|9E-B<ɾX%De]"GTtLZ% eJ D/*] $L\ToUH(URulS7%FI4YZ[ ;3MDTB Ze(6e=RH q}U\JOXmeo Yڑr-U=هSeW8S7" *DvQvYp`]"evLcmQ!J=ҜZqQ VLMUJ(uMr`@3e۶Dd׭H[zxNFUp>e Ġ=:Z- ӻOMx4RE )-X`VHÔA`гNɈql[[6eYPZDS.E#vՐ% ^0_5ڊ9A؃x& ZbZhT'iR[ݼUߥUS][5Y3=Z[ -S\S N4^U5 e܃KfSK}<[M\MdJVr0r#4_]Sm]S_]YݖMqNmܳrDvlJyOn*Zb\:}`D%ϵ@ %M ıH rb/ѽ9St-~PV[]H٢Ѡ^F <9& 3& ,EߗZXdZF?VX&u~/,͔1&cLy]S Qv]hV}S.HE::IA! 6:G\YfF^dH%XJ\]NP0LcdPFU83n]tuWhcqY" 7HXe]J!U:e6rVf$UdF>(*1+VJjROhiFj&7l{N6qpfފ -VXRx y"A,$ b Zd1eNJ%thi&.ꍤh9Yq]fPٝ_ӝC3bD=1V꣝U n1(+cpi$U~f2E^ 6Vh(}Mbd6k^+٥dF@|_1VNYj+ŤAi)D9ⲞO*S_bndkvfLɄNkjἆumڎC$SmReڭOiX@ȮQDkn QtYpdҮZmfYa>sf̱ڮhlNWvSPO ۜ&iy]*6+ZnN& &LHﹾ .Fx_mō{QWmoptone\$aE. sr'NqffJIj+*=qp /ژ ge>_KT  }\ Z(rF!R8}r~L.b'm h 3?mm00Mػ77~l[9s;L =r,f^]h1b >vٸ@ar`؀~tHtJ K+oRssM0 %Ї}>Ԇl009cfU@WVPku[_x'[rR.efpɣ|x׾%avccHfOXyP{G&l& vF~t Wafpt,'wغuGLowzyGT[kAgx?olwwx{xO#ZBd1f@f0v.BGB;[Pt"GG.f(ho Lt}'XM9i#PyZ3:|&gkuG{}] g~/O{jS,P(>iu-cm]wޕ5\\Ѭ'Ӑ=R{Y_7_euB^V~xYfd g > 5N:>Yچ'nz׈y*'TRA!gS*N6EGWdi#X^1-x%^\@&9 dN`|Qjƞ~cUX`v& isj٬fkt ;m'h5;dtYhv5h#yUyi){]xjgy=/| YO*A㔓h3p0*"MsB[S4"ގW.-oO(u׹<=$uؿw9jΓy9Sҋc |aQK۱zIӲZ,k-By|rKV$@=v(y$1|w>aXxebeG4;L7 t55Y^{_=v\+ٌ΄G\-w]te嗢nw]f=cE*TI/f8n<5M[3Sg2]9:{(U> ˙_{{+O{anτ-5 W8 bU4}q2)ӮaXOzqX"'E{]v6lk[Y zԷ:ǿ+Ky>9&\g_ T%@0zԫ``TZyoP jQqKqܢ)Pf4 qhfTPRed臈B,>à&y9'`#6Q"$# ɪdD"_~,_q }ۀ$$yy]:?ȑ/t#"/w!X:n)A* @FݬKzRi +DIRwTAC(ƪ56M-Q&Nv1t%ƨ@h\3)(1Ԩ@>FD:jvU)N0$"yZn|by02 %ZLA;46{X{.Xp+\h!eN8kAR,]o&s.3lkGt9r5`i;1/ O$1%Vtל.* Xiq!er%WF)S5(nc+SCq8Dz&Cg4y L@KW!Gv#^mjl%_veq]+){r YʤYcYFl⪰2Sµ {)6k­eеE݈^m'51aIch<}o?}PיK}Rd_.S>A4=Td%{ғF#R/9-?kϕ)b⦸1y>u0ehb;=5 ZFoxu-{SsE/я5~Q5-1UsC`' (jMœ;ۭ\i|Xִ£B"SuW|S3v_Ln{ 2$ǁBwf t^v|\kٕy]ݹ" ^n O4ݚaP IO{(E4Wky[!3z_T0i-?aLb!bB3e]<.P1[|ȥ} Q#}a "cRݮyr%ɹ_ ᵽ_Sz =!` )$`3&4^m̼کyJ`c5$#_a}-`%0“eEn dl$Ly$Pʄn#b[ R!/"TaFc!QF!?dP  QViba_Z>%BUBDCzbV!bXZXJ&YM%b]Э0fWp$%PëԌ,J%M8\l@^qbMU>(抑0WO:KY"#Ҹ3de g֫.-i>-FN-V^-fn-v ~؎-ٖٞ-ڦڮ-۶۾-ƭ-֭---..&..6>.FN.V^.fn|.vn"..閮.ꦮn.Į.^.//&./6>/(!D/V^/f/vm -o.Nm!܅/!,ly H*\hÇ#JHŋ3jȱǏÁIɓ(S\ɲ˗0cʜI͛8sܹpϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷p+fF.LqUy`&}Vފڴev_Eŕ+Dlc,{Pn<0qŭYD:d7GڠiTM@ְOVpi4u歯L \PLwzESm s/( `BLF FD%`)dͅAtwЫݷQ}9}zBъ p*:Pɑi &##&$mP©-DmB"k/v,g s +EdiR@$ I6Z›1J1˰AG /DmZ"+$$NaOmy1ZqM /@?gC( p*T13"ֲ*T2+IMKߖ Q|kyZp 0AK2D3UpA"OC6gq;"y2~x6oDU밝PfgrU7렃+[#1D>WBz:M5 FJu45<88GLv y5:;'k\Оg:3%Y9 1~un;Y@D33qAxq5'Er j0~y>>! ʃAГhf6.@<`>~W!|I2 )oEla1/gMHᦩ}Ԣp E c n$,H {j`^#_mIY dH_YZT44cAjFRBBc8ܒ. "1Rd^~p'Xir3 ͩLo*$6tN! ͂j}TI< 2 c.Ƌ~Rz&AB+dKtȄZd:}OեkJAK״ ڭ*:-  Qn#5t̃V "Nd-lavPԙ2Q=jͭ9eـz_ɗ V>Y TT``jU!ǨE-2,Y\W X̔5"G#Ƙs+}<-Pu"!}s~v[ Q65{f >ju6(ZúL[gy2ATG4Y/چo)-!5׀x#Fb1 FVl5bC#g@>E+f_-73uH+&a.pK"Lj~^$zMgxJ =1thuR4I1^qo_ANJY 䵟;f]n'C)xWk["|-SU7 _ Ye~CQRi|p W[/N5?:=I]Z=IE-țdoy5wY-B$ZTE}4 O|ic4L`Ku-JOۭe? ן-ڢ҇\7Pv{Ke{3!|ķs1 \E WxγFuzzda0TmXgTF(PzD67F1qNuSKӂJrY>3^f 7gPF W nw 4$K)SpG'}fxjnD13i'l:h7oxHqؘ]0 ў< GӇD2J(n3Dѕ:`H( ݶ&J5Yxm#t-j9h"U; pa !%! 1 7gT:UkK5::u~ rt yqEzx`r]wEC 0wɑ-q r'9ZKf8Bjԩ veڡU | +ѪH{2(gKʭW )iZ!Y`!yú)tPu_y2kyVp; 57#qA+{ˠR/Lk;^9 y=@w[ ^˥ވA &'K{$gTW9 DK4^9 B'̞S~tz+rc(qضLAP8;De4̹B;[Je۪<0LC A0 bZKꜮbAhN|П;.L* aQ&bdҠЪ\5i[սkĹab2DݱLza{;(6iZ6`:Wo$ڠCf ȺjRa  T˕S_.Bnt}e-&;srrD KʝG TN3D䕅 |ZۧЂ ,Fɤ# 3ޥ贂?'|)~K%9A i[[s: 1JjuIYx׶8qe3z?A B;=Țn]P WTS^Ybnh_ D Ͼ]w1Ϛ< ! | @b.Ϸ恭 ؅,[MHq&! ,/^zYl q^ jk5ݬʕ*Ds_JC! 0 Tj0)L* 4ÑABeoVM_Ȋ2K#ۦQl97]l t*1! )PYVcHzM{=<@Q%ꨰyoz/ѿ=U' 0OӇZȽ;DS=kPUBʠ} .Lma4} E[哘oݶhTOUI"%L˗`b0UK0gꢙgM9]UK1 1DSqOJJ9X_VmSX%KV+*&TP-Fʝ6ExM-ԢQJ*ĉ#aĕ= XZE5/4*VB] >ѣK7 f ?לVc Ǎ]UZm˽ӵjݗs"[+V "W!YJfxqH?-$CX>kXF'vBeD}x?ڪ $PQ L"XBϼ$܇'cIJ3 DqWnl,91iFj}6dA$IܬĕbphB)bWr\ G2!g*Ht3tkͧPS rmi&73qL9DkDѕ."ȽlQΉXŕξ*\Q*U1E)uVUI uV6O<ݕ%W3PZUK^u@&mg\ϣLeJeO>dSuPjge4]vq{;tJ}44aǤAowV pcuuXN吽sW&망z*7^eb[X`֚R/Ħ[Pxb3n?M[Wu $G]~ꠙwy|vEf 9o}Zs$܍Wy!n! ĭ'jcg=fh—.i qvݨqjc 2e^f}kc1Dz]"P$BGULrV}(ʓ97[5)aoOoV=UvVe{pY1%j;!'qso;fLKyK}ͥ O!du )Pw ٢s}`CQF%ȗ.2fx֧yFz{ƗW:% JU8r/܇6x8*Ēߌ Lj>dR!KKYJptB&KZ X*2F MI0JSDVgH/t zEO.ækPoL^T h5@cI Y,P =UG,) E(Ye H?ìBBׄ ikke5ו u!p RrME҉ UR*edqDv!/{Yuf#eUwRt6!7M3՛&%J=6U!N Ex|y(r2q$}l&!ʥ:&v5hj=7FI{jbܼנ5RTzPC l _U!aKikqTkRȚ4q߫ &X"ZVBaPǰ%"] 95AFWb'7oRn;苸XN׼/O!hK$a3/͍ikd9v8mٌk=?3DnWc6vd*m]gҔfM[^&@Rble,)\8+0NIhqRqu}%t%wu4Ha@ ml; Ŭ^l:(ITd];&"4s9!aʺ9/dcqM{6i~%8#N8|S.^QpuЕwB R\72R%#ͫB, ѹ,@mCM)R]}GXJʾ;&5Amo7J|~#ϊ,9jޘM5Ӂrv]Vuo޲Yi|t NW9My*ءgeO~N9C܄6zEw9}{ݿ~/@qtg~Y+7z~XT%'k}JQg׼}b_$v_gu Z?$K@,s\?#@7i5 ,_?؛@?b Lys@@+>LfpA I,cA AlB't1#L4$|B,B-B.B/B0 C1C2,C3C?C@ DADB,DC JѣH*]vJJjG}Vjʵׯ`ÊKLM 3!f۷3Mݻ[U߯ +B+fNǐ!/L#k\BsLz]]}M:=[o롈\Q<f2=HЛپYl{nN{ p ovfs-q4x8(IǞzЕdDvue}2 s Q(mHfgQ!$_q6矆;Xwe3ҭǠ 4XFB'Ѕȓ%yᘣ3JR=V8_Hʨ~G)6/FY[l5L!%YU"JA_TH2z܌i^dQ#e;~%EE:Vj 0osa>GjA fO a)JJdf51ݠjA6fDkhңW[o.뵺ik,u#lknh$6"nBTzhR^{*寿݁Ѩ$*w˩h62ݻMY[4 LDz>wq]Zgdy7Z.)U[I;T"`ewMqrP;|D*#r:Ṫ@lX1L1hG?3M > ˾V͐~hz3֭v vG^ 2$N`: -z'NDsd*^lD ";SM>{44IP>$F2i6 eA [յwͭs==Gd<# 4C+Q/@WEo!o{[s&Lj[wC%95 2+\yꟈ|OQ/t oy3A7[m[U`6,TP\]X:'6!B-u]ab%uPtؤƁ X၌Z.":: q5[6 (p}5ndoe"U0bJRڇS(](6z CcȉQgP)G6K 9Auh@H(6GL"ogEC\@lq̌f c{0M/e!CSr *ȜT)7.ZȞXx>~; Az /g(ֽap$ŠZ{S 5ʚ06,f⤬pޥ3F Sh< 71S`Z?(L=; 1}3=zXXb0±梡jh.JVmMl䟔u.4-I b]ܘ%]Z:C.F;a C eUT6qJ˰Qq Tb|jTjB'lM(qUnё4a[֊rP*U"5 ""~i@m"OFwP=ΈH+($e*&1lHvS ̆PK߬n?\L.z٨6|Uku;H74YHL& Û[2"e,CG)KŚl,0hݬ+3ƨ90u|""X=\jЄW;pഎնMoFVhVOcFkW^)<_) Yk+a$]bmy&vH CſX <YA;;yQHJ:f+GGĐrcڣm@е ?};Sa8htpU vu jFVŒ܌! 7?7r }"ύEDm?ٲayY:xއ͆Tn0B%8 0;}Qs%nq2J2TQ-#C$Y*8⚛e4gOqe[=vjO.w%8(CwPxV(ag/=2f$QNloWU}kzQsқ ;P4h#\NaBٍK1v 1]׬v4;}=.&\Ta R]˱Ss%7<:wv^7f ʐ{pmoErBfx1W>PEhruiqsa>-`V-AFwFp(8r+ 8{9yppIg?ǠpuvflV]^ aCSalO7f86ohnQ#`iesYVMݗrΧ@5g+} p.EF 0xz?gXqxuDh/ ;3Ybׄ0w9 SH H<0倭m'8w'G c i^&ZVHlikH}aZ$Ww*G 9fv ~HgC?B>pҵp؈S1bblTwv؉ihH|=7`trdִQksWwXHT,#6awEW|%W@+XMv8>րX y~lp8  C&x ԰ 밒F k3؉PAЋq8d{* g6 6Vxv_H|ii>-Uy؆1C` =ɒr#W t rz%lE Ig۠6ǀ*vؑNUXN'vZc{#` 09{v X_Րu.}9&Xi{1iUVI_ڇPհ B*`m:5 t`@ Wg?<(7mσSH8J ё)~ʑ0g6IAsZ@0Dj_;ʣa'Vʲ **<9W{v_J ЇXJ p<ա<Ռ#4oҥ ^C7lIRW𩕚QH@{HU j8`ú򩓈g|szRh(~ dD7מ{áa،ڦIĠ ˚+O3!~Fٖy*SjJ:Z xPԹe`&K0ڤ\2˭c!fY0yq 91M1)ۧ zfM :ZF;)mȉ+K.[ʂ;*O9x:{۷o>(({YnuZGLش)SKV{C 17d1:fjk%hԠ6ȓ~{ߤp$qKP ƫɳ'0SUHgvf{ٖ4`*Z` y]j3`7p ۰Ǫ hY 7Y2c0ꑩs=x k3693iZ[ƛXƕSʆxP]6] 57]mӐ4}ƫ6 wN*k3gx'٘ش'|8Ae  j֭!a "`~Icr Q9 3mw62 iӉǁeiڼ٘L{`R| ,-eݴ|ߤۻ֏<ĭ4 Vf~l=h lIc= z=iw۝6SA:{p ԌYA ي̉mٜ4ž}\X;ډpL<4M ;h۷}렃ᰜ cqnWb#9⃶ϣ+} i ֍h2>SHM㔞=~=^RND6aG=ǁjS@= oV +MymIqM= Fj {^n/pW$.ˬq̵P :/-̶ 6Z^F [=Vٖv g)n0C ULN`셎ML:! BW~) ;s3IcA A<=1 4o@Ad~97>ݴx XOo ѭ j =qp"_.q{C X 02߉n8( ؆3NG!`W*Kiӝ_o 12Wc^^_8XQ -y ` 6s-Oi؝.CZV5 ]ӗ^[CO Dl_cjRXK:}%F\7p_B֚QE]!EDjZe*a&LNRIse /E.hic ZUnβKuWvu*U-(pBqF.+Vw4Fpa=0iզAܹoA olrGj B4Jg+[ld6ɱn58OC>q\ԹSˁ—"0zLf)A9ÚlEV^kܹus޽(,/8l1N3j"K,DJ@*q\h2mcI2"q߀[~I%:]eeJSrS,fKhD z>-;7P"_SNg P* ,l4hN}<4RO5[.eZD]jĨRRaT&U&<)U$^)sr K,yo,QvKnR=^a )W\LR3@s/T;f\r5\tP^]]x-<DIh0tEl6NEȵcBJT•跑Vg=TjuVUESԢ~̩agSVl˯)Nϕ|?y[dehNݤv$AzTN3ڇH/rR᱓d$w$bXHW0JE~-yʁ:)drj Fl.)\ڸ=,Ffϧ3o^ޓ:DT߁ O5:&l#B[G. e}"#T)d=fUAi<)3h#$w3Gmt5,'EӳC\_k֨rf:4$</E##--;xY,X ezSrض׸m,#-p>q}C!w/_L:{3 fW#wɫVP*sD1y(KY,ei(ˉ^+M%PAjDCCvҐ5)bxH%$fRZrJȳ9cL0)FKyQ! c)̔^=fA T}Jz - j UiDQ>J_SA݉ 3^җ LӒؤ6;MG,b4!nzD(̌^L VÖBRgVJP:2)ȥ0CЂ 5zQ2P ě=c VHQ jHKk3S*IRddZN:&" 5E?RMo͜.iâd8*R2NGR+ŷ@~j"#֬'[,D][S'c%F#h+SzFa/WkLhl@z* S ī wRΆ$SocL&3*.EO7?9kjtBS"x*lO]Yנˢ٨` W7XSv7׼Lt)5G;ZCv*߶~Ļ>6(&MyI "U⾘ͯf#y*t"di( qx "f !q 3EAdE4 3Sb$E#Bt-TѮ:[N@0ga&a= J]17ʻRfFre,{c"CE&*6)Ȅ8ɔmYO'-ۚ6gOf^!bpbcav wZ!\t4(uY*&Ӎ$1km%+"vElc .0eqvGFk1 7K;©8^jS F/VES ;-sou162>]_֒am|oG#M1R5j4*"-Fw<$6RB)ؓ-eOi; ]$$<(ҶWҐPuqJ]n3cG`;zeO#eb1e6ӝ>@K f#s~^W6_$2Q2e*beoy)-p|J(3%7#EL|%cǨZc9|t(Z я,c\#6xSY&k*3;kjY8X-;""}û㉢qN>}x X6 c1 3xs?qۼ |ؼ(W?J!=S .X~@.됮K/WAb@5ޫWcUarW.3K:[ۇyXxxTPɹ CB{3rriJ;. 0Q2P X@2L.6 B*Pչ![0gID6PָSo0n#GIq B!$AuŁJ^2ED zy*rJ8rTSAT86l$Д AeY>ND <;Ȅ ˕\€*א 9sL3SaJǬ०42AD< AF;yط&2,I4ͩdY5[imMtFrNHA*Tź8.)Y.̓h0bBCB Ixx7򥳈iu4Q?نzcm)$ T` ,먅b  t"eҲKrL#\Y+G<1IAQ[؆Y ~;WюW. Oϐ jэÈhЎP."}**A)>xREr^/3\|+Mp}qHu3uSThQv+Q xWI}Qmѓb rΈ(X( ϕqP=@CR@Kn;})q΁NPЦYY=@i3ȖՈȇur+mXcՇ|Lj% 1^s=XyXئnmMUM=/B '9׈umytWWPWgqqxڧ{%}ȇ9ZU`XٰIX5JڣjYUVýSHJ ٤8[qM Y0͡z@-i SZ82Rb(YX= z4YWųu 5/];ێO$2 *Z3쳷Dg*sCu\\˝Y} )V}*mV(5b59Ұ\ F},UHCT<4Oݬ-ޥ$~[^A4ޥZ8Z-'S8jXW|R x8M2LD5#ܝy`6,Ma`MX\(q̡2b`T^p7-ܷ ^`IZ$x !HIX vЇ9aW_Ray "Όxxr0@ O >7}x'VW^+.NFb0VR +HC9i](1 kԇY}eEgcr%x(_!Xh́_䐵w5}DZD 4\)EZ͸hp8O\e"* 'gS\8sb)rةf ^ ̍ Jib)FV}ؑip+ɖ h 0^HY_XyNE 8y]e `eJN SجX36kh~Q9\j捾(! "` l)yi)UvX_z%iuk(i\ctzjj}ePجWjjll@Ϥ@RƑR^\4c<߲[ɂg*ڸj9և8&(n} Oa=\=Flĥ)qPN}l^d >.oж(h2}0A\oYZ NsרuUWus뾦gnYyktP^PnC'(Q~ Ȏln^l(h67h24g)xNiTE 4#tMTfadY^yc+ye\imvng~M53q8-QlRI>uTo\(8[qߠ3ʷ?}E^!untagPUWOxa(kvUax$RpqgfɁ tsnX3t@l(o܏piر :Bxh=v_ ev]r%_H{_{P }00 rZ?wtOuIއ4w $i.<%x0MMCzt3:zyJ?_* z}gruX.{k)}ܷ sQf{\_^q{lxw❃k/ef1''l}̡H? cND(QtQB+uQj Fh[KQ&3%+v+PcQ$ SL2˹xAUtҍ^ĈWwoݵ[awy^aR|٧e'BYYfE  !I9HRkNH&j n5q&ܝ@}*$h4t$xD:j`Y,Q:}'ٔVz%Y~ШZeIij^xڛINBvyF#2}ݠԥ(l}IJ$c|9ICui٨8EҶE;F -G.a9k', 5Z ;֣XZa* E٭eR㊬ZhCjB*IDވԼo,0=2<JhY+p}M^|Ηmh}IeC!sNDF8e/+zR942TBC$w2G'\ *v'C doYCHiXXFB43{"u8yEL`(k]끌I|$hLYNSZ>-j Y ^&moJЏ!gT?m˸#} i  D &x+u =-2-iMo!QR`J"C KZՉo|2Z#|3nzB f- $;<&2 (rH: OCG>-cI N149HΑN6!0l91s ɗIXM^A4@ c̅34,_?G*$(E(=U1TCAl̩҇ddh_dюtSkQ7e׼B 2T@hQdԂ D!be)])Zf)% RUDTxl2@WHLeQ̃bU^!bjQJ]![+M&+1<:y_KZ W՗LH2rԬ S!S&Ciؤe/n!nD#HDZ`bQ=qj7A Z4gҭU`RlCZzM)`}6䍲_t&?6!}_KjUעfD"81H 5 MfNx'*,B^ xnw'-mӻғ~CZjS 7͑fqd6q23܄b;|j 1EYPռ g锖kS4r\q[c:dQ2:0U'Gnw6]j溜,:ˎf+йxvD},w33Nk\(0{L(yDža~8 \BjY$:!( -!^̒] O7jz>*/DccX`cAt\ᵶxmMW#gntz ޵ _!^jvw@3\,Uz,!li8?TWz!?bG\/{_?~O5=qG}Û|ml/jK !EީOsocY0LObnZ^1Df_Y_y`M)yϕ"ߣ쀆㍘Ǜ!mݬE%D `XFCD֔ J 'dPaOfI h` Ʊ>t4hI䠖 uW} (}B((З8WL9Cx!a`}t^V6!Da !hʉyJ l9b(e_""1b#z9]Xj\C ( }bxb-C9L![m`P`\/ɘ9T0MK21r,3n.4 |I #Mn`;Zxٱc>#LNM) ъ&6JCPCCY)Eݏ ?j$Hz8GzȄDxhH$CKΤ-KJJj-d9B'L$Q[N%]KJL#4B@dQSRV%,Wj%XONDV~Fe VP,B@DxCP%]弡eWڥ^e .\%`^v[Sa &b&P%b>&dFdN&eVe^&fffn&gvg~&hh&ii&jj&kk&lƦl&m֦m&nn&oo&pp'qq'r&r.'s6s>'tFtN'uVu^'vfvn'wvw~'xx'yy'zz'{{'|Ƨ|'}֧}'~~''(af2'&(6>(F&Lhp.f<!d~((hh*((ƨΨ(:Z@!,w~ H*\Ç#JHŋ3jȱǏ CIɓ(SLp˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯG[KٳhӪ]˶۷p)2(6ݻN˷^KpA'md3MTLync9k]K,xsPw٬3gW X過7!_nMg1δ| j36)5in~㝣X]57+"V]"9AρtڂԞudLEɷ:QI8m.Xt5x(R{]1'Qo}vD8A6>Cb`LC'kյG12$@WU@c$n*ifAGfBSr4aI^|BMfAvSД(HٌiAک3 &C͚h"ZN2(ZDJ F0&tiʧiV2>(8 *1$9+JOdk뮻W0QBΪw޻Mʘ];6BEbZ0^:찳8޼ʺe65Fr$[oWnsq% F"HT3XWRYŨ-ЧdC(2DyozѲwX 4$tJg\QZwqAxK 5 glFY%L'h=b`+;$ -2w+pDkΙ<.k-#rv'볎2 d`~+]ǭM-;6D3T,np6]e[=0}~>ӎaEn5AJݠ\+T8To 3']8F2>-D{V"FxN[ ќk6-Ȇ U ovW'EfM i^S/H#,¬.D-:6ڷc!q@ (}fBʭ:+da $i3H )@WlC PwрN a d d2fAhuyV} h#FHkV, VRUhRr, A4JÉ< 9;yXQ^{Ŷq'$ٺ% kfخW-jz5\ӊG2=%IKs)Ƙ>`gĤ5$":]"% ǚ)X 1hAvH$qy ^c686,Tz7rtUD{^g)~J0~-}faI4!"7A=(dBk8rkVB鬍!T'Qvo23ԩ.pUqS}>>ZgGx0զ9`R՚YJx lSU9>@|GU~Ek,jD 7(Y+U+q*Z5ͭ`[VxkO7П䊮,("EXS0YV7F#I4ʾ^ID j V.K+fLc Ĵn0k1+ܾZ(KIP?"A N,ؒN4hTjW]mU("i7a*D'"m_so  c:1"{cC 4&>][߂le0٪SOzxڃ {h!WAPXz P̶/`T (䣐YJ T+ֆE [*,^H/ {?ʴs % Vry͊* -[;é c;6{=Xt>`Z2D[Z{{* PKaR;+d][ \K*D [;2g2&jkm۴1 Z+a[SwSc# >'I k`d˸:+1q * ;G++Z߉[rZK] @P[j`ûH'pA* ykuIˏ'-S Hm"J0m Hm3U\UP=뾔 +;+ĺ*6뿱+ e3zĶptebKk  Ê6*l #<;@[=\L;Xv;12qE#mD q: C:q ڣ-Wh[ |V KV?y,=Fo^Y,` 9jL 1;`E.k Λ:ƶ O4[dzs_:/&޳A.A ήpæSMVtN{>ڄVY=RձTHJ|[Z ۷}kLׄ4T4 ቋm-ހ1mƏ}ݵ0J/A-m,(˹S=L: I`S{ 锞ݴvc]; ̠ p p NS O;?le?mѻJ޵ BPRB C难Н>`t ȎBL}M|}>j;ˍِэI[=U&Ӏ,m.ML@ dP e6p>1:ڹmdp7/MpnAYbMLn>(.wg+e .6>o {in Tq a1%  a* T qe4kĴ.OE.] I}2[) cB}:ޘ+Ɔ{Nƭ 1=tS짢BհZp - OE7p~|oooG~_'/ ֍ ח|BIjҞ̩n'#a =+ ;$Xj)T*>}%[g@d5n6qi!Cfܷ1H(mq[Ɍʪ͜9-_K}Mȳ }T dj_QVp#hf5.Bl9}"ڒO]uՕJ Nɮ͕W_j_TxǦbs]-cp'K2aM6ٲ|S* <&i:NFŨ1i=9Ӛ-_)+0-O·<)lUÝ̺`|T=,0ڽ=Z^kw,X^Xo>v+s2Nʤq2n"2o MQ"L(ÔxC>BirhP2L8Jjt)Fʈ4 +" cjqp;Ƽ<ZѲ>>T"IHZo"i@ C4ȕF)]C7 ʈA%[*'Rh^Κ`c,ȭPu#:9%J.+=W0U̥*UBv[pQ P8V}^yV8ل-[R+,kbp3xT:fث(ee\YNf.Vυ%uA;s|ףJDF.+ [wQ@M*ȁiT=oTimp^XػʻvOQd5Cz\9fq\.OC}{-#5'oWۢQzCHˆ\Q bǗ5>@FÌ,eG 7 d1ߋ$h`ZB"B_ [ 6(lU!8BKl{^< O,eO0DHBGE;EOEehC iP%B!JeD+0G86޹P!CxR)yo]Hű,DN-ԳxQB$,P6ƟsY xNSmB^.h(AǒQ iYAiB$P牶%NnXClw9帰AèR@ᶷV9tvK[ZS\dxb0;&14_D@c=mDJ"EIhI`$xňDCc./b*(b Si OQ@(fFYDfJǡ9)BL @uF&=S,Y'6eҊR(=- G]B̦tZ׺]F*W^+G(`:ZJūIS͵vrz yîvu"@Am\6: 53=)s6 ck =s:ш-(K0Iw+%i* 8misځ gֈ5[v*SnUGniEp(eKI=.j8 yP˂;i1S he2dAU q8Y׺~pF pE}m! }\]s3l*+4U L#nJ`,PϕⳟDȆpI`dE~O|xfYnώPxq,;,Dngfab@@xm[w׺2*l*70q}~B[*LYm *֬)6"uslflF׍GJPגyGL%'\H~ &M#Ơ>.R@@%<" ;u9 Ӥ[ ijZ.hO>eHy[$Ƈ$51YƇI־'bHfzǾQ>p1tq R/y':kKm1)ML,AyШپf| 6!<Ѽut@YE0pLF}Ȝ KK˿iaP˃KKG?ˏE{=P=YxoXL}N ~ ) 82MX5"  ę3$Bd Nk &lI łXNLdz+̲3%PvЇvO, gL lUS L'lO$<׼ TbMdׂ,92VF=DЩC+z$f*QNL )t@YQo0SOPQMQvZQK іт4y dTG}- ԉȇ6̊w;K)% yC>m_DbP-"/}h ̌X{q_HSɔt VxnUA$% [`>*K0ևpKM0y,eD=rP{L4e쌟2]Wz#[ ;4Rxf'd%{WDf j,ג1نٚۆU$ۼن mXU.`a(Ya4vHUV" vAcf6D Bf$e f2PIJ}xmfE~PVS oP7{h_U󆗉㟈a\\󓆱F\+ 4˄I[uF'UBieȇupTBdvK¾iQ6K=if.dORfS79ә~RV3E{e\#^% *?ң].ᬲ {-#".TDj#1Pij֓Y6i8gERkfeaOyg3o5y hH=qī~VEƾirBbQ[QL`iUfkNѷ>鸆izQLhaVVyQg~:QfmW!mT "iaafeDcz.}&QII Zޢ' ɁKl >f ~1~m7-PHo&綣0q~o!$<53@(nY(p e~jCE1ly]rqcYq1}P{ΌNU>/Wk= ߊ!&b>C/#7 -ÄG'/J4iLq>iEYi6@63/l]Uq`5 A%4#>1;di@Eg*@H_Y7 Kș6nv3oNR şNu4:XY^w̖Hj]O3@{|PoQ], N,[R .wU>fWxtvEN_oJZLVl@m9I]AR4w͞wiC撮7}mm#.rN/n/sJ-H_U6w7/sϔ?vDZWnib;OXm \E~tm7v]vqq.g K)QmGV*zL@/TOw:z_ɯ}`>@7kNSR{ylOvP{t|RVq1mo:eax36cyƧ'u|# {lfbWE[{*o%Yw}6mPxXtU-oG/z6x7I' ԾWȐk!Ĉ'6e@7Z8P"E*i$ʒVR%̘dѬi&}5 ,'͟? ~OORJd*#ԨR ԬZ'`L[%ug,ڴje$}kǻu/!ĊgXbG GLie̗,U<&:EiH=T)SVuظb8_ /w>yM_p ̊x1xŵ*rɔCܹ,+Cӧs'PY3*vlyD[mUM r9fӉAq DYuwpu7Tx#^$stYh]p FsˡXxwEw#SeR}A yQ~>VGP29TBV\g܉ium_tх&^̵`17>FO'zGg*CQS(SKR$nNB%Qۦ~I՗]nyW)F\Tmc@n꩞Qk3: E|T;Rv٠,ߡfiGJz贙RjQZU 95ّYqVbj$ZTƽr-x+'{;Q*ij5,X!)AoU֕LTå%^nfe猐=ZD>}(}@6qWm1ԙn.A㕃` @^Kn+ۼq3olPEFvڂ#< <@vt}9NWmTIn$kV%c*AovHF)U9kos!э>@vwYB<{>htHĐ;|վ;fƥNGtv\g+Ap^SᎣ-sTd#:dA͞dF)zJ 8nMW\׀>8qs8!8}-}1 )CNI`{LNB8)HY(6[)`54hz99AMЃ˫6B选;Nħ=l1 &)aTF4% Fjc&qANA#UMoME9 tB&_FИdmM4FqqĠ> Mu0aiY0تԁN.M@.j4U0tJT`Ӱ f뎯Hf*{^nĒ&m.\:f&d>P!:GnJa'{qpyAp=^ r߬-D r~) DBA}Bh vA{8!XrSaQY˸IhZ/aH0[1fՐZjE$>PPQՊ#[*8ƴZ>$F_t X@$ZѸ4uqJ2՚PĪY1.+hi iH)}҉& '^2t7G]9W*Yj< \=|XoWv:Z Uwh% :vkq?[VMklV]ir/)Y-3.[sзI9gQgBۙ&Q@<(b}%*u@B SV=%$tSwc%g715*{W$Q NmF`Pqs"x[׭nߊ+!fŘoa\8Ⱥpn\cxR{ـ|B捸.7Kf'SElcu'g;]l{ښe\ώNPYNiT8cy#ޘM]O{z m:V`eWy 0S\ol4A- RC⬍m_+P$L*T_LՋ;4lnۀE })o hL1<|Ğw׽Cd v.X/Jq\`sA$n-C<+'!P{*}8yɡrYQAĉ^C4w^"1=)sܙ2nHJzc߷]}}?%WK%6A {o/uRǯ~?y@ӿ_-s_?ڹ &9> z F^ fn v~   Ơ ֠ J  !!&.!6>!FN!V^!fn!v~!!!!!ơ!֡!!!  "!!""&bW"6#>"$F$N"%V%!#^&n"'v'~"(*()* !*",NJ&f@b,".- "/-"!,\w H*\ȰÇ#JHQŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻYM 'MO~89N뎡A{nXws/YiǮUNwL|ݧ*0́1|Mz 2"ЂBؙy Z6ecb6jЄ4hҋ=ȢL7,SL^$f&gy 8ՎPcA>N)kX':sDHc&)89/AHVZiPU%A^8 C娦Bf a9P^o% YfBQ u  Zԡ&Џr))&hE)6eO:ZƉ*qMβ.kY*鯼jg"!I' IWBn$V;憊f{1r!LuG*Ůː}u@TG顦؆9nlpH%L. 14qIJ`M] fBTNMA.EKonsI%P=6rxԎAO}%!>2A3D4McY2:TWչs5+=t:du7O"T}ONH5 z v[$wIvNl{zg$D>@tݫl%1&u}㈻~ȐqtDtZV7XE*^ ƺl*`Ȅ5P" 3G !:>@‰eH^I-r 3ʽ{ q1&FbrfX鑏 4P  >fr (f(_N&BUvg@a HV&Q!$, fRE7%Np)BV-vDiveY@vu #av,5X,y'*R@fAKp#T$Dd8ÐAk)!XFBk!B<1 kLs@h=j L& @`h8YzDKH$Aа65=P"fxj/KhBEڌd̔pMU1 `R2Q$9&X.v?BE@ecHUjRAl[f"IU.zdU ID %@Vg+0[`}u+^E7ә4?̦I k UbMF2N؆ Vd7+Y>IT⸱5fcLtE3ȷœEI)gNe07=iOSG&Mc+cլi2v9[:OĚӋrPD 1lZt'F Ҏ)KeUtM6^ejAMC Wb aBLnܬ&iCj޻}=t:޷.}G}ź}sv 2\*۵k7~)sG,ä,nюad1CM =oO85-tt6kvd%] GT`EJK!xpn ^NlMoMKhahCh?T21 jlYFbchjʽI].Đ3A k & ăoUʦ{OC.w1[ܑ$ꗟK”2{ݟUgr 3Bz4q vEPk rs{'~$)BbU`{@s}:f}I'}ݷ!P68 )rbA !C` .~w KSGum6fqT&,z! {@ k{va&|Uw&B Z@\kqkr׆|CѠ 0HCq1,9 dj[zG&q _x_XH>|8O`dI%]NJ)*'h0 42 7|@٠}(0cAgC l 1H2+f` (@ f%G1SOpFH(Cp=1 @и9 Hfyw"հ ؏P 37oō 9X E?~`H_64#Xx`莨9cX'9:Ip hIwCD9i |8  CC7 ɐ4(]Qb g(W6bIv( CItoҗ~9O:3-Ǐ~6 (/:(@Xe2)ɉ1h-ș#YhtY  c )|HkM)(҃3x]HkI˹FA>SU'6n ffeQe A 'H e)@w9ȗ;@ JKH~ ?Cj>dcxXs5A#(wdհ 3 p&$Ɲ` %S0fIj W< 9Ӑ$YYh:yqI )SՀ 3 ĩ30 5'tn9h6Crnp xZH [H .꥾SH9eyMbJj@69F)u ꞵtYyp1 CZ- p{q6Sh +Ix٠  κI 9t΀ |),Jy$Z ` /Bo~Yyn)*ZpѩQ>p)@Oa :N p #]JXpK l9STر׆ 78o +Ӑ 7Jp&r) j &xZ.n9WHɊ L) Rw !x0P a l+ӂ^8HkV Х ?,0{ +Z|&fEy|?}A[ʑ FL3ZV Xl\le B;pΆ+]e)! X9s{~˚#6 )wڛ?I~ 0kZO o9KPۀFHGتu۱VZ[IuY ;(0O` k Ⱶ0Ī2 fѫ9s1 ;CJ zhHI*KZai=,b u۱_KVy1}YAA\ l nopqǐ§F/w$u~`FõWD"F*Ȯ0Ckc֐ ,o`fƎZ,W됎h;Ljl#Qk0;+ǀj!;;jqȄLua6O< w Ьi:ĩ|ʺ+pTI̱1˭|<*i)  ‚aԜ2l+[׷q~ά lҊx q![l[  FmԺѯ!ӫP=V x&a 2ݼ1L͈ȉ`[#pMC P}W&; Q4-K,Ӧ@pmypԭ@G}ҭqS@ ) m"Ě `d w4=p p`  - |˧[ SX m?KqyJF 4Sa * Ӎ2P!ڰMm̴=ۨ 7ܬ1=k)|pR\ 4 ? }+mlx *Qݽ}u = } q-} )[e-¼6VիL؄:.a9 z7G~ Y>؋XLѵ`UUXhh}`\`a{*NPq&)}M|͙Q qGdFI5J--ޕ~"ŭ#>X$ P ƨjwl9>wO 0>HAƽ噎=_ S~q $7k1YZ] o^l?m_ <20d>2^$[;.7>8O:Ĕl؎? O1HO"_RPY,_a5 #]` Bn m_A; 8q4~@A"Aόdlﺍa1Ҕ/>S囮^O"P~?  [/.  $Xp ,] .dР*UcMH>141VC[E91gK#lM95sxBAڌ&bSUB-UfuKkVKB$#Ŋ|D}N-ATN,x_%ĕ`\ ^< Sاd-UX_:vl{SITec5w\|Q,q!>q߿j :T66m4HԣVySb9aA#S\eٲg?}zKn)Hs+CeBTb y!" @breZT ]^lhO,ڧ%prHGYdPHTq 镂a0 0%E 74:33&J3.CTxbRzO,/}-q F\D.M/ rIcHJ/T"h k|<'L1BjG/cjA-y\NU&chO,yvEy$Sg^yJ 52(P%\ AuE 8ڌ)VYao+eZrTe}瀁շ#e&2g] A<2[N+0!R6}SE>ru&#I`Fې_aJz@1o  (J.K8uBҒx* Dő4QTB.FbMW0a;67}{yb hĿ%p*X^EHÊ$8hd"ɑ9YIx ~TTA^Ց -kBF2ha$!LGIJ&Ub I(OJQO<1 S]ԢV9+c,eGaB e Eb$_ 0VL!Ĉ$yI VsɤN)BρR*FJxHAJҖB>a|C+eDs$Мcp4 8La \N zeFcj܎M͡ լ"ylcTQՂ,N!KkIT KsJ$RI8BQPku J:>">E,'Tap>G'15>3 iM9CpbrɹXYgѰcB%5tDCgo"ju*obC{#kq" }"-o-mi O"'o))!=ycGP:|} X] QcfL32ۤw9mIVQC\l-G|OU}mD{6{L_TC><'^ f4~ hƛf4óPTց"H摑g<&Qn0_GV[.`\܃@q C}# z1=Ί%C刌X~vɣd\ [6ض ˲^<:˟&~5%&uF:ҡo3TBǐ3ZKU$?Ua`.ѵkmo Βӯ%l$&leLvomch;c5RVpe܊Hнq{Ƈ+>n`Au`q}!j[m{]ێyvNJ*`9<#LO8P{ӏ|!8 ?yԀ9ؖEb<}ħ$|NZGZ)bnݴ0 ;I (H{XbI~`xV1َ Dd{緽c~.p3wˑ )R!!;RsE+7ګb?܋ c=Q?2.y?W$ Q)80R@˯dz*8A Y0Kǫ#}ĤG$B|&Cݛ5:Dg>%1@܇y7G{Ȑȍɥp4ZRȹA S;L2|?K~düC)FA>0㛔gJɆ0 JE?|ƻHD)HpʷH䯫<Ȉ <# 5t~À.=FaV|BJIȜ\Itx9(ʾy;Md{A{6̅R89L1=|ɂ0%ыdMD]4ĩEr43;QJY*x MNͥP7@$dÂHΘmCXLII.) ;Ϙ8qO&9|>LZz/tu3}$AtL=#EǑt¾ZDХ@3P.sMl`j<P EvœYp@/RÁ/eC(SFTP5M2+Mp4r UR ] Nu|h1˸+͉0jSlQS 5B *S4SXӈ,M5oS) 9A:Kq tqT|EأaR&;Ee=.TRR(N/S^Ԋ  N˜`lO]@2"Kn]rI4Z \*չRD2NړCH-B|.EAt}ؗVFi}?% LrT>[9e͆(M1WPH׋]vU_ʼnB*bTdE f5>>5KAK'L(EPR4'9$IsQ̓őM88ٛM28Cd}Q6EA2Tz DL#a Mً$\ǛY sS0΍Zm]>ae:v#mŵBM:\d%WftXދW9f[lQދ+50 ~^ixY8gfCdxctuׅݿ40hP|xg aeWX^VN\<`b>Ї4LQgF#1 ƅ$gPvh\>j~䕡 ]%٣>"&j%)j(H_iH4j=>(뙥޲IX6]ދJQ_B(i#)j2l8j lɮinX^D8ƎZ)\ 6NC"vîҎVbmஙuF1}P}DHCVm6s輁>r]jFC`n^.ż jf߶'vDhnoxoFx. $p'pĶ[o@Ηv ?fpKg7' q?qp q&pqʖF~}qmm(>r?r$O$Op(r0&_r{n)w,!wr v"r(r4Oq%!Q03Os * r(@1 07q v.1p6o?ם9W}q譖tLGADrrtRF_,_Lu-Vg>uuspHڹޢZ_auRu^Rvb0W8O_vjwvevFjuxvt`-Wovwq&ww$ yw|w}csw{'q/x}7iOxo~_xxxNGxvx'JxOxqyw/OTGyoyyyyyyyhxyyz/z?zOz_zozzzzzzzzzz{{/{?{O{_{o{{{{{{{{{{||/|?|O|_|o|wsǏ|ɟ|WʷB|gB /|/} }wyO}}}؏Տ}گ}u}}}}}w5 ~e !,\o H*\ȰÇ#J8ŋ3jȱǏ CIɓ(S\ɲ˗0cʜIa8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNس71ËO^M#N~2-~lW_7393R|56$:4D(cL3b8$_|!WfhG6H8aL+Ԍ 2$aG)Nb~ݗRDRMA3ltD~4eR A ӌNS7WOxA u< sL9Y蕃P&uS3,D urghK"([DhiǬ:4iTΤhˬOBC ^_N$`"5:y4A4j@b$_(>!jh J$! R1.)Zx Ej-enԄBy^4L.aSa蠼i#R5$k >3cHq\2C /3(G.֪tS+wNl5 ˼|]v.}IZ>k71 B $6AAD1bv L 9S)p 1t귅h1M'J=TD CXe3<;ɡOjd>>JD'T_ NzG UsЗ? aB>c> K-gr}F<" Q;AD91Q$%H>k N<}H DQ|0|A hΎb]C {[M^!NJ6A9DVUK\c٨m4죈EF@Iܢxno8F )IΆ>Atѽ"Yd^H  IgҊe$R< #HzpfE$iSLcGҧ DfRL6\d%5(㐧LB"tǰ2>! d`-IH ǘ+iS;2Z8ɞ"Ɩ SI0)T "J6NUFʧMc^ڗ.!LH B%Ad@EΠfDNx.pOA)"j|c} ~J:֖J$ȑ^W!# Ft&CGOV-80T#@;R{_ATXv_,BuBH>pI 7+AXuIjBPBl.umL3}cA.d(7纯^d6#lzc*p t 5^Ww fC XtbniG+s<AZG=9iT,sBkt5 T f?65Rq1-pd#` ^Pvj]tdDYSXFbm\!#ڪASP(UJ $.=H0.U-@ L^.s$Y _xrZs S"žk0Hj| I: Uz-L^=R|6z}[>Cݵ4GM?~2&tgkG5N PUy5 S% qƞh:" wAMW-1 ;ϸ@oPU}}l| wuבI kV0n\ɨ\OH-mY-pA1r\" :QR7~qw};'NIgō+ƭQ c S@n AjGu؆d!>qqIh AT6U + Tܣն.w@kE5NMID1ׄ:_9ARzg~5\TδGw\HJgw\Xy%paW6lSjEtLlU)6w AbU3)1dZ1oAj! q x"! ! `+c"Qx ~Z Іqq*8jPz($ȖgwayׇQ#BLX(I8! W5q 1k1c&nFqv qqJwX5X~&l(k@U^sx֗0Xȅቍ'bX'1|ccy'yVD(@b88@ЎoW5#Ĉxyp `ʕPd#<'qJO t} A= !McQ 0/$ qvuh \+@yI4*vca ՀA^sE't%Qq|ȕ1Ua 1 5Ln pD8EvxE  րK _6Wl)8@q`GoՁnXEb9~Hi蠗EV y рK 6]XkIt  !&tG0KDUG\pؙ9K$ ϙ}#Wo TWu]  P)h1oY8 #CEa1|dqj1q aшz5؟* I1+X Ђ  tX 5eYc!َ̦h\+S->VlX6@靠KnaYJ^N0 Q[WqU Y[-8Pu@ @綀I+$ X}nQ|IfI A!üQ>٨>-@,t9ah-*Q= NJ ΂?:Ay*-|A} o!w2. q^J籖?!|pa-!o!oK߰7z5?h>?dDM:;'1ɚ|-^7=Jgat!۟@z3~qhV [!/ _Ѻ{P ͓_p#yd%  $ Loϟ;p-!)% /'M-, $XР@qdSC-H1E zرbqߧ?dʓ/C*"͈043($pbL&9ztT 8WDX_TX1h:ǰx*CL#TT@ #MTV%!JI&S@2 RYX@vЗ$$Bc~HKR4x5C̛5UhZs a6v'_=IV(yN":f62I3YJ'ޖL2鏸rchJ5X3:fle*+P:ڴȌұ`X,]2>L.à-]2 $%2Y?u 2XS 2 ogLzV ;H6tAnX-s02Ӫ: \$Q2'fO4//d%9PY%S@"> =- 5M$Af@Z^˶.F d>J+e#tvIm)%@[LˬԻOW)%BUޗ;k髛:CT/sNh8 cO 9ԂT-Z=1Eû>j"Ѥ3i7/0 QqB/_T*wOJJ>\i Y댑 `?th A (xT"]ov{K]·7-nP(g:eDӠ6mL#Eʠ"=oq9FV؟mX Pb ЇӨB )_B_B(B8F$H # 9JvST.Ψ]Ьtr ؆-d5[LsˡR ʃ!q GRm㏀t!!P㓠 Ck2U|D$G'M]|)E֡Đ.DԩC!SVTYp3ՊlӧAJ:jH#c=zqfC <IdTnL\*|_A7 VH+V KH&c뇱VQuQۂh&(k%|er8!b-[') 7lɁHZ_9bO` ݃EQ7<.KYɤ|3b^V6%G&žIb ?+CRnCv*t՟̶WmRytXm{߁s!0B٬oBx%' 1fT9 jI2.H4gՁ܍` : TAja ^MxCD1T&H>A3O8AT*vBZE܄ Rϭ mbTrAک A4NiB[ 8?\^02SZ!HvCQ"쟳2φ!Xr8k) 6!d\ 5EY͙U]b=*m=WZɸAmIdAI sCddwhjmB]?ZK?*5Q ܦ0BydG.- Pϕō1؆XVm`K"8ֆIwGփ|4usVE7D\kXju1s\T ޻Ds=r;&Îymq8M1SDX 96kܓ8 CyDm<>oY l7BnGu@"Bjkbe?QXy.H 9*x .A? FJm u4="+G` }f|hO)}A}QGXmuOFdu $7 V& X!Wy)N gg%cW1xa1JjRg_;yxq$GO8  Ei!X0~" 1 T;+J {Wtт :X35}!W 9Wt7R1vBmK #`t4GeAc 8Ґ_p 8ib(' P0цrH傈H]B uXq (} |{vU#8j9WH5(8NYB 0쀎`tB6qX xMXp Ĉ"悯ьˈ+yCwܨFQE҇LhuXGp')P~ -0XCR3v` @aeHC (5hWGȐ aW@CȊIɊālIO#y}gB ' ( @u!AK/vt ρXcnD)KW/4 GfڒRe$_a>w? fI(i% ( d zI5VarOpșB!FQIn藄iQ5Q (WyyiUV){PgD⚯)hPG`ip0Av0 pVfƙ܉O̟ qŪ 3aQʮz`;jG+"$UHK"1}|@=P@:NMaj` ~\ 2*lTگZ~^X#*}n $>q--L d هޮ@ M>pʾ%vm̉_JyD-,1^v Sݰ4y=0ݿPK͍n 1AlyAf޾DMfyu6֭6D+U뿿["͡ Ɏl<\o QK ' ^Ќ_Y~6a&/9jy{@Ѡ 9O 11P>-+:1DvOhIp$D_Q?jz|ߣؒ]_YfN`zns<-=~mw0 Dpfv]+Nǎ4^iTk*S-e? jGХ+:aE_U$ 2 Up&=l lRp6}!DVÆ(n*m qܨPD:ֲeʄEL)!BcDXAe:jCz"ISUCnD'PKʻ*LaŎ8n>qiJ^&IqT6,WGA]I_X[̕݌Pe 뵗Wn߃ X4P>#s~.o#x-h5LNChH)D?Új4y|0[((7O_}#9gaY NI+G9g.$FHo6eꨝ+} rj:֩dsʬqFK( "ěFn]hQh0e' 4o RrIyg**Ѝh9Ҟ2V zݸBۗ*[Gy'IڤeDmQi;&xRa j}Ӝa=AI|ȕuHCB z%($Qyac?,7Dp|/%ʄ9K*ӄăt޳2 \{!Nc&[ Oqa oD*aI#I E~)!B& 9h#yHИEZJ$d!58RBYmXǔ0E)a' T,~^ (rz$ZTI3Lz90c>Orr#*r"ʃ"8(EJ2duj=hPi~ɬt1mR B6g$L5)i"$@(N +]IX2d%@ɂ _5b:%i6*bd( ;zn4FrĚh1}("t)a*- O:B9H,H_H)uRdDZͧ9TH5dʬH\̐QsJ5> RfB(R'TZӰtH<{ӰѦx%,X0ӎj)yT:Lͣ)WReyM%C$SS䫅m֨4|\I&5X!Iٽ`V6bRe-:C0n#PUkhnCɑ}J5,@Zس0ז^W Xc}&}CCTA&j#֥'[RsY5){ANG: SyNk*Z$DV&MYXg7Mt[ ݇E%]}lk[T)RnM cu,pԃKb|Sh<n CuBK MDXh]^Aؐzrs;Zsd$ey{r9hHx`V4gYJ1ChPo4aBL `Q3XicJ1.D7#ŭf)}"dՀ1a6%& S\皎%--m*avXciw4G]cI?;Y/5kj =e'Do|;grjB;ix+~V,Ncc!@jEh׽#%iڭO~s\Z5}~w{bIW%IOz.u`酥ֽuh},H~}]bW{v,Bl;!^4,f7rX]G&us]PLWt߇x̋%{#Aq̧Gwzk~JR>1/w'N\|'%x'p$W7'~_g~_/?@+@ K@l@E ?J)[; [@U> @B @AAL>?TAAAAAAAA B!B",B#C?C@ DADB,DCN84P6(hW;FNGf!4& Bt >Iax!2t2)CLB#2 3L>"n7UL3 30IQ!*&A=XaCr9MyAz≐!#C 1 ؙJʳ:>P!TgKjgF Db5>h JC.:*hRQIMx*Ӱ2禙&$njc>G:׊)(31z)Pk.jVl C X +BD4%#@V:lPB$(e WNT5`_:Le ! (Y Edt͸b2ڧh DUrlT,r:8q1r֣D+f1Z!r[>Fw)&2|r1%P23aiJ&8e!4%ɓq$2x+(EXD2$YwD26$D4iAl\S6)9zrOX@͏P2q F3ɐt0\2!׈$w?D8:zu!ƐVAn ?,JMB ٳHyL u˜? uS{#֌ZT:nF |j -zLofwc8 <> W3@ΩO5{\"=[ R%-!-ˈ[2PŽDP)`γT5HN54C(5Y9sWPYAmi="M{ZE&#m' A%QRc0w 32!')d ` k,׍Gi&P}0_Y=T,AtWXC}"^GQtLx %I4QiG[bBQt nmNh;]wenmä%E-jfd쵏@lU Zۘc\h6`zj@:l6R;45mV@9WDl/.lFO]wrrU!J;5g"Ȁ_ySu#Ta!{xl}Cznc=>h@^e?ˆ>DھZJw/>U*bMj3v;$R{37pi܇}rW;nBʼn+mz}l(B0^oýMMZ1#'sŝqq?#'ֱ\Ru!yLCmnV.)doH׽c*].tygY?1Lob>:B Ni%07oZ^m8޷ 2QAy=G+anنyE *4*d =%j!qzM~2鋹n'VgU)"_#Bk A)ῒǗ_oJ2 G 0tUyC}g} ->wLz&"F?ua e]|.]RtV \tE]\tN%9wE_u_G ~$'6Kwy/Aeƒ"V ` pvz% Pzh%`^}8hstڈ_! 渓 t ?BNW2p5 )؏"Ŕo3 *tX@ x ux"baհ`v/S6" 'gn$Rh )y(.9fs.sax7وf<ɓp% b%/ 2v"f YEJ ]zK:~L}J! >i/( -+ʢ-^'l7w':1iNp&$j"u8W GZ+J:aVEvQ:*H zTba& c(ХT"V% !lڦp:&cJ!zR!tQ zd s'j٨ӓL!"Y>:P `>ҩZf yO_:hҟz~׶i`:+f^"p#)*Om9KYTzhb)jZ*1G-$Xt%p5< >ziJ6GVu ʁ:S_*{B@(M{ѰbF !"ע&)&Dz 8* 큙4Pdz@LHh:"ېk qJ{Kb(]뵄 kJjeF{sz&s YG_׷!̐H"gR S!Lyg ;vmWjJޗz_&kRoLpW8bŬ !{ +<,k[w2Y%R')y{;v('B !cKI$ѰI + \[| `+Njɼ$a j fv9h" qŒ -+-F?)2$âK̗ܛ >V;q 5G [-hrޭU\!ԩl=},91PJrϻ*<9mS8~'SSi7{ l ֠MLL=cmh :."|Z`F/V1#W4jժMSujCWbu4:v GxQF[)U 1ʔ`VsZh%-ʋseO77t+UPUbZIiSJbhִN˩"˖a%v|Xl-j^vdTꋫ ]]yz76nw>X}~"ر?DosDqqs! DmԨM+=QmƍÊ0]\i6˚-zk"ߪz)ӧNNUJ-Vk5Uk_ǖ5ZUٶ*ܺ ϮB XL%T@qAdd A LÇI}p٬6D3JC 5NGI@qt^&(!ʫe([\"y4228IM|Ԋf&sɕ&Z*뮋 }T 0 qه34 N6FTQ LGySTqKi.#DW`+i*)K-KggL242#dڒ3WTem/4/1CPtЇTiG!͕#s-KFM ӈpQ6_ ՇF}PGrNFo WoZ],dNuװT~ )Tz}*hr(jv]JIM@bjh -]:2r CP;KW}t+{Mo)8DO&SH bPWD 2xc!VG&Tl*30 e!噧S΃@3Jut{{!,b>"ײ`rJ>S@%tYJBԂ2.03WJI]ct %P~ a^%D^ ש9H#4zjqՈC<"3 /$&gDG3AJT>}"YDJUM@bʹ%ll%\D Kܽ>̪>11LS*a~Џz¤ArXM:QӈCS:!Iꅑ+6}~¤EVteCR)1E&o92qfԷY]E<񥙁a:rGLskףMga-FUz#g"C5us.pw*erHA-~3$%zi$L\Ҏu⿳"8rhDvClM Y(-z]I+rR7և/ħ^a>:TyjieYr UcED&T NUg?SMZ _ՈRh&:R,+YWx(ʊ9u:b "HI.7 "qhEf)X$Ei,cZS*-[a[9S}oGi?Z3aIu f5*-[p H4f~O4Ja(^D {wu,} ,eʨ̰wpoY! }YQoD'|x,Z{3XE JզV &0YA%ѐ<b?$P,":bT24{)FcJHh̒#gFz܇P CQOɄ!Z=aR1f!+UmIWȃηs!reBSg`%eqOzڡ7D/{HuE,H..V*ᅯ_GMmNqjW3 o ;"Z#^"N9W3u6^ЊHy٪ƞ,g3ˌT ds  A2)@4Š??#п?:p2 8C2$Dz,@8upZ>) T>!-B} 'Ip=J\^  ٫A,;ۑC;iiP i: ؿĺT *!B"|!0uvRùq!BL:I6|갅3ZEK~sɋc I : p#{хCCae;B쿈X#sćF #L*Ȅx(EP;0-IPOBPnGWX\W|EXT Yd[5-5 d9JF>CgT!hiAEt5j R,:BC Io$>I+<0Gv(LJhv|P$cSŃE{XƃIG'W\)HT79 B È? FP2JLA .q)'y00@cQtUOadO ϨC":3 ?"B"(źPAZ`R}Ѕ#N,N J!iG|  k! @Jj"S9 S;7 ^9 Xjl6" P#P3dDR)̌]3*(CRx$+M/ iSSYU[UӞS^=1\0I!^Q@)^3M>틾#R%5RE,zPHÌLuP/ M*ҵQ-0S LDU- ,SUY }WꌙU(3?OU0d )ԫ: JmV|H#e9'nF|LA"'9Wt=Ux.IF $*,SZӝWEӚ Y MCmƶֶ #&CJVX!uC%%5&=ϰl,DKِ}݇q5І+N٤S(C$o8!/YPٟ[Y 17A?ѭzRVTe\R=CFٳ*n%( P`Pҍq]]uPUۤQJ'opWw w*}ٞWoˑ<3Zsۨ< &_c1D.K5eY4Ʉ5^psexV Ak\acsÌ. $^ZCFճ vB܇e&]Rgb֭d]P( TRT)-t]0勻M#eu1ey>j͍))nbXH Iu/CDfjhf/^pf!XDj^m[o浳!ihI(-@WvgAs礌yNi0X|g}6ɲR.~Ve&HLNyDR'y!q30foGn!ioSV键g`5:e@ԬˌFHDWfc>'5foL$˄p&gy'ޡ/5ltjG .vneV!kVSV}䱭0>D,&NGJEUvPFW; v΍Vi1Ȗ3>nlV~2&m}Ku>k!otֶPt.oFlv$|.S &ZSCl&ݐTfc.bF_rj -0>D: tĤ io#Όōo? _?oD &~,/Qnc۾.0 Oj Ǟ҂%Di\M)pmV]}f/WOa.#rbV'.wj0æl~/ ?ab?fqYpG'W[rIsY emucRaR[ ar8y _]wB*yu[?R>R{ʔ*%C?fk 1aHiж3s8XpP9s9vvPxpR_[VXc4ax'MI2|.H.dfppvvnZSqӘvoWUΈ TSv r fpgfXÍww'zVvO=R$kqYf-HrE}P̠vxd_z?tHw6t4S/{y osp 0yOyzy(y?-݂_vJG cnjsīnP1vۮQ{K{ѯQmӒpl~OHx AA{"{`PP7xsvJwKwjiϞi7oYIr|η}PθMoywF }{W߇"WRQH+8A *l!Ĉg์qq8q YhqUjlqsCdRavϙd&D ?1e/վZǦRM,Y2Zo*+دƒ-k-Yj-}nҪKK]YzF׮BY}.l0׉E1,H81e~4h㹎5dWN%~̖Xcm-zmmKVA\u]߿w v#nx="e:Y9 58KіE [CJ98I(L" MFS WS!,BVXѩȖu{UV^XC^] d{ !CAIגfHh(HƙT8=ڗވ3!?UQ^ԛCU,&Fs+euob]xJ(c&wSc!ޣJJ:E4yeWhAXKL0`S[:ey7D  (8!DP&ֲhX]=Ңw4Sha@&鑍JJC2)7ud饙6`QiJfꀕ`n6M?Z[ArfHk7X !le'0,Ҳ^=hYۭbF2 2 U:]2kHC)mZ[﹨B[O-4mә!D'I,vul]0UW4Wwc5* ߐq $@mdQANfzLMRr!l*(&e"f MCdZ7zӥ5ZG Wc 6[ݡdGvAeg6rneE*_/h0CDT9YX3E0Uj68w9u4OCGt)T'5łח_y޶Ӿ?'V7l(dzJPH6,P!JI~/'4ju}lp7i'.R(}V5g=_%|s"+QN  crX=f'I0 vp" 'bnG@_wJ8NQBhÆp&!`dBzDo{ c!f+MeAMtX@RF91\΃K#ȳ2ʅf4?rLvv|4C*>^D]1LHs쫐2)6pi&DEJ6$Qb5xrt D#T] KVvdu9NX0\eS%n"Da&O05JѥBUz GP+Ɓ[$(|>)LE-- :$3a<~,i3,7+4 * S+v(.N]OGzrRZ"B㼛d,%'h4ٔ+lfA/i4Mh"X9>dc+¶Bd~H$ AjLc]dC_#HM& .'ty3iYT3"|IjWMYmD*XI %>a,rrM]qܐ7iH:TINq+r qA$4B"xr#1ZNla,_f="C[^!XϏ;cnCIPnAVfCbz\s-fƇ]&S$TIc'mwÍ;)Ŷ$ vܭWY2H-h٪a1ٹuH%dNw؞%}=judډudf4۞$~;iQhi\8WԞ4-oXj N(۶1x[!mP/=;'B{5|.|+v5Dn!kUJ2܊/1I$kD"''"%h߄ 1D>>9̵[ӷ4aG6;n,ߚmA?vAz^CHn)]f#dJ_rƾNp[ҍv&'b7 MR  l \͟D`D;]C Tv! :! ANl!LY֗BFގZI!ab(>`e! "NHJN!lyu^E D V"&a";]&f(4C"IJ%&MD X'M,;(>"$_)""!.0"]"B̢X!-#Z"%" 3’4BF6:bb X9|lT`#h7#<֣=N=c>bWS ޣ@"(AX;@# rAbC2$EV!EfFaDnG~ҵD$Id|Jt$$KƤLڎKΤMd| ]M$Od($PP%QQ%d`$R.%S6S>%TFe%*TVe=ReA`Une**i%WX%Y X%ZZ%[[%\ƥ\%]֥]%^^%__%``&aa&b&b.&c6c>&dFdN&eVe^&fffn&gv^g~&hh&ii&jj&kk&lƦl&_mn&oo&pp'qq'Y:!r.'sSmr6tN'uVubs^+!,Kx H*\ȰÇ#JHŋ3jȱǏ CIE(S\ɲ˗#OœI͛8sϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞۸sͻ Nȓ+_μУKN:P33;̨ fO~=,0l>>9}7~ 4% GA~ AW_δ6kFea~dxQ54!HFEF>."A<*'ωA @&)QKBdߙN.I~^35Ywb)#Dۤ  d:y@6"D:e'XCfK i)S8z")aHi^ig6L>jBlfj,LPu BQdL:DmdnmnGtZM3˦gY.nANAѮћ %(T3v/M9%B tep.1LW DAndFJjw١+a+ފiF9M$QPc5 v yCҭ AGLF<2Zr*t,2^*Jz,0bT6Aoĝ"]m4AStOgTK$T !>тlc4D̻DA7U92 9 R3DR/TBx8D3k;6Br{ĹU|6EU>Qܰ L(mZD +h 2Q?2(; >@@o9G&$AQd0 A !Ջld+CD035KHro\pB?djد6>HrcCjR۝hsEHЧAmP[H?]hseȢ,(4D'ֈI1q+hPqHF֒}G"טW4m"DYDcÊWTA(ePr!#,>xv61+'za>d"+L@dH"`.Z a 8A[/koKF#LGn0cyb.=exf[7FlFyY2?LS:d,;\,OR#bo'2Wu3 X^!L{>4f:s59L.F.y~]@u 5AuՖ&@Q! NF\HytP!*<ULE1lzsgF#70KPSZ1D@(eȃyE9bXG@<PbOi~V^OӅ.t[=.GI@\8x0RB,u4uxv۠FHS2 1-2x}8!lg?YqY󖠠tPFhYUeiGH .m#d b`uB,HkBh\gc<6M&+{ors15(U-RZ1+H5 ,YJnY,!uX㭅?F=^G }jiƦ`Z9(UKQZ*&h|-d&,AAm>)R)[+b+g'[:@qV63 ܩ)fc|l# Q,k3hcԩo { Eh\ aX(-/}We>v2g-lZ0%A% Or,jsM >9m>GlS:V\#ԂЦ.t m(Y=DmMXt>P;ye-CAkV_ \c>n[ڒ y{7oф83KE3n[$ztV̸ru+^bKP2y|+?٭c1K,!ڡˀ ]Fݝ&s<Җ񧋎|,D[s Z7Ru;d@j%r9vC=xM]}ݭ{kQ!)6/Nr!g$6AvӶzn X@ß}02gޤ?YKTb3w9^En弎n|lؿ{ (1,Ӱ2lQcG_^2ЮvӨ#"%cgbA FP ڰSfu%2Xnt*xxq|"P X~X P%f<<8yZ$rUx)UZ~]SFx"[c Ć׉nhoyEauB z%^hfAh|Uf)vQ>~0n!W5XsXRØ%] W QCWQ/hbI"t WY wVf_uzgJP(ӐӐ&OK%x08p[G7  _Fl8hVtFLOG?Adyݵ0 h ~I(rÒ+yw?wqB|a X6LnV -g|xF*€4gY$ )\a%hVF6x+PvgDXP'xX]a]U" o%/qըo4~x'HXa i?dؐU( 7sb y8ǥWWbPؒ )F9^tE9wtyF\o8]i~ɗ!ٗP' Ġ 5ؒܧ}:)pX Z@Y dfeH x'vHۿzy ;~N Y zcl{cc , žd# kZyRhj \x<ɘ|h*<`٠N  ׹U̹;Y|˾< 2][ulxc h< {\  %lc| BT\ l1[%;#|< :F^A!:.DS M8C:BŠŪ0QPIgr=t=k,OҪ6O.؀'ëPUn lG-la= nzΝѶS)o]x [lٓnNNPVWɦ͓mZ kZT J(TJ\UQ#[,;}|ZPcS3Wל\= cIUem'VyqgE %VQɆ ?f%!:i)h뵍NAjK@Zg0s*)N2*Zie:jaR$k:;Nm.Wo.:IU/!Ά$3 J7>ihJ0zO^i- B%54lht1͇:l BD؇9ED1{4ís1tB̄4Ms6JL'%",Xa-/1"s3}s*734,;J*koYfItZ2Ir4ӧ!\ :;WPTLM딤,4uUKc̩fm42 4`-V<*excE}, \ \TӠWM7]v@=j9T\&W)Z ZL76eatc IEQR.H=% 2łƄlU%bҡ|UI"gI5nE4f0m˼TZ)ب+*9JguXgcmI.hYi ҔU ۢ+wKdhYOr :Ɩ|*̕8$&t :Ē ]nkӆv9}gx1y( y3s>oI^Jz&-@)h3ȄtlsSB:9Q7A0@$زh]fPmH F@R^ʒ;ŀJ8e'DG'`A`ťQ.C"JH{Q+DEdG8GUBRc3D:HF9nr!+d2-dYQrm) "e48nQ#SxSڋl!6.pUW9fD$T%=Uu։| b4Xӳ2TRB\&X$L:@(L>@䖩t sXttS혓p N{L=S!fR5ɿ $L|*GX*+E1%8G63 yh VY^E\ ? 2qIՅwӑ( M2y)qP$;,"K99vL FPxh-K>P AzzigdOTq"SE4>*Ԑ*V&TzUSiU:(C$"Y2[AMPn~'x)jٶ2+8,YZ/[H5s< |G;SZEUE*m"vܥfSEvD`ZCS]NE]|cp*j"dpTE:lc #l8B%$%* -jסSM+: $JoK 뗿K-&kʛt]fg=W݇_&f;N6K%Ȗ=qvB ?2yCkNC3{7᝖?&{+^\82Il]3 S:a_[jl> ;λsSQTy$],2N AD{Z`. 7k= %`!@3fRY@`> ґ;ڰ^KX@A .sth0"|iA Z=q8{=b ٜ=cB‹)t@',DC<) d BD-.8Eb1N8>E1"R4LCrXC6<`CC,W7 j)*#ö Ĥ0qZD|@+SD(9ݠDJl;".Yps(MIDO$A*j"Es4E4<:{UtvdE3?EY\A[Er%KI22q,<0> i/iF/t # C/8jb$s43|H{G\WA:zWEaƁL9GZIƸS(D ;릉F0FIFŇ0LȊ&#*ôA#- @AjW~j짆l>[H>VΉ-cmXm|P݇Ftli>6fهPfhiNn6|i7~FHWff2l]e&bmߜ@گvXdhkqhm/+``,kdlk,}ivFfnp^#3ƣp/6̾_O!%/X͉njb~}Pfqؾhv^jʭT)Tp/gi)+,f YnϤ~Nqq%XgsFlm<$Mt0o^Pݪ$*'7n)gn.tM//oeɾlh\Z8q}pq9Oj&`GfqPF} Bƕ^R!fNȴ$IOMvmvOnQ d 3G^VZ8q aޏ[Oڶ~V!vV^O!v%C?Njs(tNF߶3kXvM/s|vꌗ}p4TqWy5_T}Py`Tq[qz崙 vPsΊb@&t.q%?k`2LEj`(xx}x wr/V'y8}@y]"[o~caԩ{ԆP>Fr6~iB_`bc'uzȯxYOnl?|yV77gl]U{Z_ NRžEy{f*BWC?|In獵>|.s[s|'#}"UBeu|LG]iq_G E-Z%2-(KaSѦ6$U*֬Z*<ՠs^-(W҉mq ~mtwkYu#,ď3dÖ+' &:5㲥LPtӤeJӺgӮ 6}cǢ+WöekP }~>}W[3fIU2̝o -=h2mPS֬S/I*ZIh~UVIm5\ZUЄꕎ\ WB$8tt%tfͦ]CTGy^HV0tKL4N>SIDNk6iW hVVQyVa)d9dl榠A4$U,be]u)$UF+2V/)S2dːqudS-5iUSc%^ &WꦕW]ֆq瘩¥ȕc曳*D$7ɥP%)3RʄWǔgzGhOhABE*~K) Rp"IWju\Cڵ`~](ފ1WWg,Mn>@:$mG}&ͶmLYq2#;z!‘)k*$m˱hsV4*[׏-O^cS2Uv}"n{V]|Մ!k8h*~D?VL(B$q D]{Qi Ք+_kn%amX2Jm+ҋUBq&\:}Qdӊ+8ŢMkڵغFK4|LV qm^{u! I9rrem:30R^}Ő֐%ԥ()m[#'"ʬ`nhaEgcξ9Ul!1R*TF_3dKr}wb9`R C46$6ڲ%I^ JC,Yo()/s+l6lRɟ㊦>1EJqW9PHӢX L$tPj͙,"]MeӗrRWiD.E)zjvRS@H@~ХFUHHA*uh\ .VqjU:]qdY_eւd?d+')uu昝e_-MP2/#^5ʑ,O%DzZj!m\)3m9Bd[n.uSAچ "q=%Zq E=mK ~:%pKw+M.x(FNnv6n uerr[U«_ ׼q:YB_9^Ǿ loW@tAPrũk :lF&mq)SS015ޮjvr$C&Y,6GlǂJ^ئC^FeIv̢iv4uiC"yDv c_vJ%XyכlZ4W9DFqXǟ2+c͑ o["":ю1ri+D d}yL5_V{fHvԴHkQt^7wrv]V\ICǺXg%q-iǙ־6gCC;6-q_>7ӭu[sn75IȻ$}7kFJԃ3QBS83sܸ8C.򑓼&?9S򕳼.9c.Ӽ69s>9Ѓ.F?:ғ3N:ԣ.SV:ֳs^:.f?;Ӯn;Nӽv;ޙ>=~;/}?<3<#/S hx!]N藐>GT~17`N)24`^ݧMY9BI:2$2d8tML:)y҄i#qf[mJjג3 S@ G$1]Bd/BGqEdHIdQJ΄F͞#IPFTPhBfr5QQYͤ!j@c^At(YVrMX%5'NJ2(Ͱr8$IhrvDxF,K>dnH$7=jӴ )>[ U12e+ӨF/A2ж)Vd$I٥'A&ԯ@$Ʀ6P"BN.T\qưKoMO"-OFlBLSi[qIVej$\x Cо!m!,ۣDtzy&*/<3=U|3i7l }0 >i@.2t=TmPcJA;ť vc?%kY iJBTbR5dӞ5Y΍ߖjm\D f4j.ULiP3:o3i dAL o:ÂΐXXoCrj>X5q 28H;M)1g0H="՘6(" 裞U<⡔MmX0B1x{ӈ->r缺Q^2;,lKkr j<YŅ<"KĢem_Y؟:itDjXl+R3̀d:HEAqH67 A$$<̕d&5g| ߘLcnAGс;LFZ+SmldsrYG!D=d|&4}ƌ`= Eiy/ ov ā K4&bY)DrԇDO؍hb7UÙbG9PxD֐e^W $@+ n-AŁ~ IZ٦B#i]cQd)KKdK/Jc GD<8k+{>R Qu2!r=Fǂ lMZ$:. ^,D̻:6އa@L]$%H*c\G1>؈71?h_Y7 U1wQk f ZÅoy(ز+4A0-/g^QA< < vqqk ΃ 1RJp4\h~X]{QہԶdn2D SgQFl""mVMCa4zBo: 5N"lu$A~sQNHXp fAg}mi/uJTcirm :|`˜lܼ 5<95y<"8Cg} ` SW#hMȫ>FLGxh2NLj xW^:."vբ4wC} pYQψ붞ytJp>$FCw'gA UIY[#t&[ywQ; qnߎ/cO YYU3"Ӑ`}I9ϧ2ma /v89m GG{ yQv ρ`k7 p"w33(@u>biwZ'{hoResgMt>(XPA1 rO-NѐxgAl(fCq !~Vx !GpؗFF'B7j1Ch|b7W5-'U'9lN4.9A Dx (o(W2X D 87dZӁr>wnQR}h'؁l|{8y9SQ v,Ahpe± s'``Q( uAU 1fxvA0'U]he%_Ȁ|9˜B@04tC(i'J=.<ћW )RA% u pEL$M*sZw=XjZ/alZ!3dhʜ'|ٛogYddJQ(G76Ca a$1! iĄXPn9zMqJkJo^i8A 1q*k% gyfzy'+!_R(1xh&Vd ש0!%a1I2q l*}(zʞE07fATg )0$iƜmg :1k{z8:Lv489Kϙ[ j.[g瘖$K:,RM*yz.K?  8Cqڳn{ȅoo ȳm 1bGaiB8!Du ,AAKlC7۷Ar{ )>E F˷+jkGpw qGg"&$q 6AIA*j{˳k{Oɺp>|=+UـG Cʄ̋-q]`49Y멽ۺXkoWjx:7yXgGRM q=[{ꝋڌpv6Ft .%@M @a cњ4 /[ qNʮSTI^@xb?X*D ]G@4 a+OV|\lP *lkWuj{p v4k)֫X ax&a9F2YIJo s0GTpU Î&ExL8<c|+J(Q:A@ɻI[,Ѥ,LT6L/5A| ] ީ< 0cɬLlddX9 J Qv(_L- g{wџ nW>΄ٽxm5{R=ل`m9Im ~AE s[dujJ ݩ[WG4)jÅBj b;م+\DRѽ\uF)h|لZI޸Kq!Nu^YyC$cБFTJwg_{ĉn}N湪Ū^ Ꙡި 1AkiԳSw  Χ2iD!ěnIV10>]lp >SYT(}톎 `z^ޗW&խ 1N G,/q O2[w>' s!0 YӢ䗟Ov lHAAȞ ޠN,_gr/x u5ⲝE4 5c>*jy?řFTjTCNk)&:hq ..Z_\ P iz1+;}햚xx[oߋYzXNϧqlJ?.Ͽ`_; 6;PreD$U $Xp.]a$CU$2XE57SLDFB˗)YM8YY-;V2If,1aBXQ.\RWU j=fp"A_֬,Cq)x֭S'WIٝ$AXҮ/:բVTIEhkZZxYki$ѩUڵO[ba BJSɘ +~s3NKǍ7vT3gXi;c\:N(׾Z_Ѷ<#꼊*j D !"1,; "ُ̽CZK C oCo)"ʢ2H*L8jA ȿDtj.2Q!RB '%n).[(5,I+zs)-+2̅2| pC0*zer BE+ K#<\pKPS0*U#Z,%X%}Uu֝βƠ] /L7 0OĒ"άSMM4]$yE6Jcm2+A(XTCʨpW^B}$c[BY~@\vL7@`a-*p kOzuAn d%SM7׼9' [ȰYV8ĝ5Љ7D!_h),yĊ<4HW$@ Hc9&}X&#SBɁ@H,%03bAFxrxd_E\56L,6DwrH |p> S%@V @0!01J"IR$4QE0F.e$Ieb0ͤ\Aйt4nl=mz>$gO} C%2%kQQЧbjE)>*ZI.g$ I[fYE)Qr>2әJΰ[|)*A BKE()Yk>>՘ЋrH\'ѴHWTeX}e4LK7*jNyPE^mAL5mj` [NUN`OfpH3|L?#Gm?5o2],I~_?o(_1 ?x<v c#ݭˑh}=3ds3gȶ M`m[Rgos ^NQ,wl;oЛYC\ dۧVGMBPy2\y we߀N ڕ!Iga}+!{*H2xcO%>-"ƍ6ndcJu4RFF!$1YZdYT$/iU B!scA]jDA'r؎LgrcFi֔f*Ԛ5X3y5=hrIv3O٥Q3k";ɡJҙ -R>֩;يӫL}Ye m@ 9SKJB赨v-BvO2H!wUk> 9T̿ dXk4k%m-Hi-GZ2xі[u2) 3 0*s'L6f,#P1*rm2k 1)6K:+EQj;GdA%ͳ6 _n,sk,vЮ{[ fU@u͒K>I.嬼c f&L.o=Nx2!C66(gWG\$q.2S\;n&?;:} 9旿:+ZE+ T2f3 !1a\@\DvKrcLp5ך9c24 nB¾J!8\6;#Q1vH E$^c@ǚi85P%$c3h ]c D48P  jݎADh3lh3(oz a6Rh;CzɆ#ppP_!qȈ(Y!W-^Q.tڌ./c[e!ס3XLVX#Fo1N5&qJ,=;mа!&9J5 }TH@dCb2`b1 vS8cۨ\ Di& )q N,H0_`ܨJi* %%bBB i˛SSڎ6bs4.TH6if(5RxTu$f ]R)3*=kLWT:ŧlXqDϚ^nda0 NV3p Cs.!=1ʐjf=)ETvW`UXS ؘ =3ZǪit!-FTX)݆*G f Mkp3_GFsWȣ\#Rf ATHJs-VR~YMkuS7ǪK!G- Amap!Hx#RÉ-2w\CNup>nHjҫ܄HĄrV*Z 򚓔"1v^c9yEF¸q}Q_f YM00 beKz8M:jd:d6&( p16 eL>^+afM%daeXMe7@\jY+L6`q\ePcp}Qs+[MXz2L6E4Pe:,g~QS*u>1W(1gL ~<2Z셌mW×2Vo jN`tumLpGoz3!{2U!m:],9(Eh;&hKE2d.&'gB$욂#-qWĜ 3*Â^iϴ4)L?H8Uj ^Ə Rr ۾i#~v%r -g]Qi .yh&{XHK[g<6`AD! m;b攩Mob[wnZqjO'W fo{=ΎMG@W?~4@}AHt+b#o҉oL+W}Wz3Z&wsw # wTw}aftr85lp'TbPw83,)Ho:G-Ev`FJZr<uG eU8uv ȀQn fC k#'>VS3 7!~wwր+x~1\d qVn"@/Qq 'W W Q Dd-|w&FV%ҥ7aC.Us9EI4zx|rjwWWnXph;Cx VW,8He-8DepV` ZƂpVI}[+hՋ3Ȍ̑ᇀ pF腴h'Qɨ3{h#$aJ7~='dH-f&+5m\HӰBu hQvq3X Hg!YJ^::EH0Pp )yHQ 6 U[y6-ր֒/IC!UDD(Y^~{%4peJ#*YZz6J6BҰeኪGT;#x:J dʂRjɘ+^u h&+Cwˢ dT桱밀ከ 讔y"A!\v^I8?꤯ 8k<˳wj?'* P[bX+wQ$!?;:ahck;!E+0 !i[9+ Z_@ G1XХ5SҎՠ {P;a)R ku؛ ;]h Z {k;?›0–q *:e׫Y ڦa mʀ. bG\!\v|4#X .ܲjg?{{:󾮋;;=Ai@jE$q }WEYر7-eObWkb9p0|15ܲ{AkhrQHL8q3h1c)RGZ!ҠYqG"j ~ )LT|.Ux){ gPȶe AiFċ<8| ABVHmSsƒE<ey!M l!ʶP-{^Yp~I|\:÷l sZ Ѽ{pѥ‹u m ՟[) el8.zʦ˥{DSϸX1`[ I{@Y:G{ȋ X}53 r  <YP$JJa&L.-ӭl0,{+~Iy)V+ lжU RMՋ{\[-@ n9lg==, ҧxyZl|-+yhZ ?ͣEM=#a |RY+"{ jPTh L38i<(vЦZƽQTmw!/x =`])].i9͂ 9ۼƯ!m=v{툈6B pFJ&Xc, Qa*x&z/ZLطѷ{O}k4N̰㪀pА[4.! ~~|{9"0S>A ͉UӜ)8+]ea .^ L=ZWo掝6.7> <q  I\,V WӮ#(aNZR[0Jm^ 2AK|7źpAﵞyv 璐gm SG egP?\a!ۡ9Q˕ ,y<~ʳ4ZEкN` 7O 4ڹ1by A{`n? a yPaX0?VY#[껄ٷ۔ ޺`%;] qI>~!Ŧbmψ"0),y#¯i|^/}P!LN2NGԽ7 w+6loZ=~.-x/FEFk*e$=e!AGu\˯ q7@CjH Ȏ -ԷMZk%Lxl_-X4RD0,u 2c*jܷK4B< u&B#&(BKŝ;}uʴOզI3zWM1\"Ediba"d[F˷p}^WQ\LվJPGM XVզ BV7PWK=geɓ;.dX$uͬ>v #gg7}t8zOZ4jՐ}*l~iF}#nimݖohCH (Қ:.d\q2${Y'梈3ChȖiJo![H"tMT^-$Zy F V~5<`7oH}9T[m`+BYgmyżd[2+k>TF:/ADfTG m 11WL4SfP0t>O0XhqhGVaCO}GH 8wډI,(R2K$$b(uOf=dhΗ@4,N?b$12 "Q{%PU]VNJ{eYNםppe3X́ *ev{,Oڣkԅ䡘3J9 j<х"V-{so>HEa孥^=7U`XhUc$jt.bY(Bv0>*e9頏#/ ڭy^P8{hV['yLh4Uٝ{7^"sM"Z%#WQZUKmytSG݀O&>_Br+R <ۻKۼFx!Q-%+kϚ|FIwQ:@J"g}ᣢgM:0tFmqŀ^${҉\)<{dy^R]VګKߤ@,r; ,}ڇ`ԾXF,A qUBb GDCQ,sf58QE-@bB,.C:K AbH4;MJb|9T0b.8 qQBhĈb ˒2P,iVU{ QUp <.0:lF"|&ҷNp92ãltJ0ih̗(526-_{I$Teu!U<ɚGA8V Cs#j':Љ0B6 &BHT y0%ʑaF e,ts9љS%Mزϣ 5QY(ps*ISRj|U!Bh#ANE=TLe$Aԣ`F:a~J,&!86g07wԙrDSFm ]T{EW*ΪIQ^ Bڬ5aaV(a]ׄ5!miM{ZeZ$KU,hYz|Qv(eXB0VRǖ!+NA%E( _J+%"/, 3F12,xѳ(QQ+ڌ2Wɞ:3鮖O[TP$4[ @H׮]oz1#eMY6 g+ԭ.Fކm0[`r r5,\`hm|cPӅ[ٙ9f*`4ޙطo}FeL.>^IX:V5Rrx-J!LѶf>'3)L9|%*k#>IBgq &Lf)5&G|l*efyC\ Za'hd))_)89fٴ[YLw3"i7:  .=%Z߇s2]73vf 쏂&rCt;rB\5G^,OH6llya'sB"ۛ I@Ԫ3'@3k*ee*3dx@*AWC[P@'8=j8J  6!(a?:Ec*pݢAy[,>rָ1dBBVlgl đn= Űb rG#,52D鈷 HdrHHwxl䙠5~IJ< lDDaJd.0ه"\:K@lIhMǦA@YнsˣȔr`K]'ǰKHDZ)q*nBILd. ˠ隰̰lD-QLTJA#J`L:M .\Mݤd+Jl4@Xcp/Ӓ1fIrNIL,N~_qRN脉Nt,@tN4DLO|O<[CON|dROOOP-ЀEd5Pmȋ#srP P:i*lN P-kPQP;K(Z}QQQ0Q=ݫQ RQ̴M Q!kR(PqЫ | R,R-R.}6R0 S1SlF S4MS5]SS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr%PB(WtMWu]WvmWTw!,v~ H*\Ȱෆ#JHŋ3jȱǏ/Iɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXj3ׯ`ÊKٳh:xK K[qv䖐o]7*wKX`wlF2zUdDžmXʨ-,v"gM%L 邲=:,0n5썣?MD҃E%o޾j3D Hsggo;>oP)D$Iu;ul$`OZ5: 1 i$'CVmXFx~8rSiU4Dd>XjAN k^ skYk| 'G*fe,yJ3,JYkLhq+~6IKܮrtj D2>LжXs֠*AJʛ;I#Nijs y7FL+ pA[d>/K-3<s8l',BHP66i)#VȧMN8PLR듯AkJ]5P_'fo ;*8=eiYY@!M1.:Ĭ[;] B,2BvۣIHf@|@)AB7Aۉ⻁,ɍ[@,#{%uX/@b*^Au*z"IWIu|#.Xi6`A1}B@Uf:b"dxO $f9HBg iGA.nۈAHz›D/Y}KH%f Cj(H veeIj Rij)5F*C[@>iden2ݓ-!GV9pd'Dq Wpv|= QWl !t''Ry &tE4ĉǴ_ r o 6IQ`Xs\6yb$eHțl8n%(Aי@F݃]ANQPS2%"7\ r rV8Lo+;@3&EV kX 6MC/HMb3[ 1~G`Ǜ2RN21K{vHur6#i/?%T :87KPL jea5b袘9Z/6lZr],ra 9C5E21Gw2x+y(D:i&H\T3 +Ӡ5zc!۝H k/ !t; ; tԺTlk)g;kP 7`E1l6|6G],c7T-dn1lܠ+Q2܋64użD/C vvE>MNn=8,3-}JZvZr.jj&H@9Y&Y}֑2<$%ml<`Wp|{ 5O2aynM)>5r\<԰+=TuXE:._"f~e h @(zPpʹp"z vtV`0 d@IP`@Mf7\Wlt g,~m|nwq^}GP 75EXN>D,8xօ>3eQo>hրW`|%R& v_Av)U a?ʹt 'p21 hp2Q*x!(${[c ;1 ׂSHIf mwFٰW3bGN~rj E{I8xiNr@ Qa740E q^i`HBcZfHTt1 F *5$QZW ȇ{n@((1a8X b 7j(SHi~}iO=( ӊWU6BPZr htR1`0u$x\GV猵p(9(>dTv{|` mHi,T!r ŐȒh$U•_,zIzePRI/ 8 9u`y XH5%rz]X6i*5#*I}Efِې^ube"  +ye"hiǐ LᔮEToNzق % EVaQ6ugaU?yD{U GxeR /7}+WNBɐ$Pro e)*ye?l&8)pJR"O"Y[*-iv Eh b BA4'#Lg7vQsIdnx(b-X|F~Xw**u,2*8ZI"Oyeb_o %H5ً6c|h %z% WzBf ɜy@Y*Oʟ09zOR}2EjB8G~z5St|ӗO\]XsUxJlD晘ڑٶOa6 ` Ti9Q6 p Yz|J_#"Pz/` Z@:}(בJPYx]WcRu`iTvip 蟼o +Sw1u|b* yF  ў9D h_8Pv|]P,*4 Z'J `↛RRJK~(dUg/(UDeB)zv #;a8dz)pB+:uPnWcXzDɩI:C )Bzqv GjfeI'Li ХDyF  ʔx^:E~&{9Tja'.+z„N**lSoB֭Z=f:{C۹Cp,BZS; ' Y+v_[b;(Fe"5W~ Pd f˶RPrFK?+*JٸWa'dJ 7;g a p๝[شs#𕨛"[v|a[f{/M: L8mK KN9JFkK{e]wۡ(ń6hƵ%a l pB ѳ +BLw C+p%,u aR쿯 rP ZȦ Ƽ闳.հmgzf|@}lv6ȯyȂfTӵ_i؏{ܳL*ɑ*pRM%AaSCUIW|+ZŪ 7|a˄wԀzgwƃb ̿XF*ȟ :hEPqR,pгi|G`18 ύ⾢ "@вM*a! u~<˶j` dY8sw 5vͅKӷÛFZ P D]PG#J]\Tr2ȠL5fŬ=*\c6RzkH5cMhlw-*=g ;a_h؇}έغ mY }|F|GA7@7ϰB|0d<ڭ]41{P۷ۼv΂Ty1܄2j߹x͕O AiޠÑ-؍R<{mwtUZG !!Qtg4hy/PV=p`xN˧ ƲN )]*kL ik y'{t)X$͸oC㉚ئ {B>nڦzEmԖ`!0хk *BBa Snձ_l$7H x/)e|b\angT qč,˂JyH_f|ة08O{BPKSG b% S+b}8˫N௮M[Pog~.i,mH5Nu5@n]^Ȣ7&48,PuC:]#EgC>ZC,lR?RϻNZd7Z0@PP O$#oG,$n)_7N1-g^5=hp ٚ} /5{ C&2+@ LN 'ͮN H%6 MOb qm)'hO© QY5]閎 f^}^qVmp^l׹8NU Ǯ?TJנ ؞R^R $X> RCR%HŊ5ђ͙ۖj)UKQːk̨*!tR}@!#Z-y-{.eԩӤNMSY!b*WTT2-f8sۋj͝+t)Yq^Tua*Xu &\8.d<†K%|1/e0#>jٔ >c7ӕL7qСFWѨR\ʊU붵F틺'{J,paX;\`BL'#ԅ#۷C'B+-% R2jnhK6t+ );.[ ֳWcΫ砫f (B oA]`1G{ﱁ4(2}Ō.*5 jDDm)5tPʄ07 mաhr1!T͈!%v$JVڊ>b]L.eC+RE3$Յ {4SV%w>ԑE@,TMˌGi"\35 (^p:* Ndp^3i6)ܘ2>2 w/v }{$譔HVR%`=%xReʵ2"I:r*qv5hW\n!4sf3٠qtKqΈK:ÜTjr#W.5/;^[ Sy%JDhE7LIĩp>Z.4'l15B,ԍfJYd)oҒy*bhڝ3|U2muLψV :5 H{j/K滂 zRE;XND3'"-p塁^uT"Capmp k,B"g7UmCF 'd }~vVvD%!EP#=Rd*9YKN'Yxl:lOiR+cqxpH7YRձ5-r Žc$yCh4"HU MzWɨZUU8پLFC{ؤ)UJD<\uB}JK4GKRFrK5)1]r/}iDligF.Ysc$W2)N4sz'a&2 -ЌT#R kS  Cz7^) }ŊB Q\JG 5Ɓ ҕȥkӉJ„!G%GYfvߌBy#;R Ӧ=\4~mM(Ym+U*1DQ L-=|\!!BȻ$hL " yJAx&?vU=G8"S"Doa:{ ^ !뺏^5ȻVi`2YcD_$Yri3}x!yr)J6$reip)L:{Ms툁f6մRa בWs,\jxR9Z|T'(@4Yj"7Uh-U'v(Q[Ǚ6֓9^\$$s!ls&䜧SMZU#]>mjE'Έ<,g:n׃uAs f#8z`R5ZdoxjYVǤ!xBca$^q+AEȾ\'#g|osx3yKv+.\-hwM0A2Niz3 /J"8O1}Htԇs,=߫=ȈrC}@@ג2R Li@<چ騥>+03ܺVVy'i ! w\É =ҿ##~k }\QtoyC`OX83!+ZPx;Tq;\Hy@LTA8<8`6im8!RiDWo3%y\,[& GydE}ɬ`[~D iXGb!3"0؛J\8DX07D}Xܳd$<ȇA4IJI\ $ɽI L03[?jx[ gOL4kCcn ʹHX<|;:L LyT˼4L0$Il yD LZ7vaL} ld NUCCP04HK0Ƅ×8M̈K LxH *~"t$ǽMJhΉŒHZtl=L`߄y((KSζ|5XM+K܌4LA0WM=ő 1ẏ=gsE1r洉zΙXPZQ 6d5LR P @,!OrH*E| 9l> Eڇ+WR'Z%| 435=+BQq !}\KVKK@Md҄HAjR i\NJЇ-=Q60QG@Q -S4e5E6 y28͉pJ0% <$|H}a-MCFr|Xx(ŒT;l|iŦ) ۆkmL`kHg U؎|>aV eo>$ǵ،FVf"!l^lkf"ed<@i6+o@Ìpm>_@COo7T\(0bL, EkΈ*~pR oަ NӖb+wԄR03,XenA Qq`1!"* !#"Fc|n%h@mr f'(w+,3>qg`eO7_K6&7ZdP%sRR2p/ tKp8tOVtFHsQnvu* v_8RsV ѱp>bLVPrnGwrw_'v +,?&.wgt_MNU6jWX dHmqGu9;6E,A buWIZrUvpw{rv.D52fHtq`_ovo6/zhWa) ۙR7H5'aPrry:_hҳPf؇o_7_z[O[ɘi꠨lȳc*A^ ޲w.pcyuk(x/4}:߇·uG,krRA bZ`C %wf&Qv[ϯPFm2,[/K|q)Eu}`}%sySX}PyZ,XZjx-ڪh0XdٚXFYm)rP*Cd$}+YƔY&Μ:wSܸAGgq&vtSRMIN+7hґV^75*ԉB r>dʒ\rҭkwn>*U* DHxaAXŁ5fe,/N{G.,ϣXNZi}uɌt\w&+n8zn|D* 9@b ̕cS4hw3l{/D޼vNd+VM퓗\I81sjs5vFDREGRfGf#M7#1IbɁ#um}9T5}U'nSӄ(2UquiyNE6PN}4G(#Y҈+")/ָ'>ώ=MuW1vkU?2>>LH T_.%v4&bb G"YvwYL2Ng枮S$9R&u`&Qudk6\ꥧ1}Sbvv5mjx>yHKk>R ӑ?G}E^RVqآ\)!AevQ,$.yp朵XkN;oL<#RH>SR,5FN<)RӅ`jf#u+E&-Uwtd^Lں2a/iLH u9/)yt#54F\Zs]-qe}b؍d68ӐO}5U1z5&хaי9ޔ5g2.~;<(ݤOߒg8UנOŵ>}cq-e_rz/>1󊯽^ *i&QM)4Ӈ!+7OτcHL$,LܒwZ& |Myl5t=YYM'5$?s;W愜<{ܘItO{睾%Sf],=('J6+w³/Sy%月(Љ$;%;:P'z!E!ґo5褄8FfNZ e`H%JҙX#1o a')M}_iPviRYrd*Hv*>:|*VIU$P+CiXŧeBաmM!WJԷuF4M}uF[*vOZG"}7d^'fm,hlj%zGP{Z[+:5lhs?O@(-j\tbiQ݉ =xnWaA-eY :M̻'oֻHS]ʎU{ {|dRuM>!_#Al[]efc"B`M@x7qC.+_,Ӹ6iT>1,!F>2%3N։,)SV2-s^2,1f>3Ӭ5n~3,9ӹv3=~3-AІ>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5s}O׾(-a7.>6Hd3~6-iS !,yz H*\Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJêXjʵׯ`ÊKٝWϪ];6۷pKݻxf˷/˴. &دa +Nv/6 %'\٢?MҙfadΝA% .5MNZ /ysϴqMVN8Hcƒf lv{[XXwhOwO]B^5΁Ǒz 6@ >%]|' w'A Y\ABل}5an 4deXP|܇U9P=ψh$JոR} g_j 3 2SI=rP_&) B)ԦYqlS:^$U0>,&NNB”22㵴8 ji34UN#A%s O{~U@J : t\6oЀRF)AXP8[iJJb- uc`$=PoR@s-xZtxbD>g2rʫIb ҊR7eGɬzFt)2 i0ŧJDZ1$3"+ԗ! )׮Q5.כ6e'L\KT4CcIL{#BtH-в??$к`WpA:uս!@W1яNg1i NoH43H%+dZQ7L:.7:P-ɬgx.9AdsyzyA.:)Nv"Z/ dZ5_~ʸʲ]0#_b) f>D&&Ps>d jP~XԐx HwI 39C`j1لD-8,TSmh\h!q!$O|^ǀr8S2(i ġEn>`a.|`񶄁qf2kOT,Kȣ0tcC(Zd_rFB 2 `EIN1¥Ml܋v"g 1Hy `t!Ǘa3,d4d)>WJd#?ĴU%Iݫ mdc ON3of%i{O<FlO~*yI@LD2 ltĶh!y&͎zԢ<G Vdg9T U Ńu Z&UM&wю~Ey6+9S,1ɐ1j:Ux>k@iKOH H,T!Es U17NXv0_dֱάgRD%V~"ǙK)P])ϜT+?sR4H' a摏ܠ.SY#mD7{3nTXXJQR")uhCnְ9m%r0\Jv^}[[=_ z&XҮ#>2?\A]]fF 9m`3ջ^׽)eA[?-oۯ` -=[#I-EˑW`Xn3%jlc`^6<(dF^lh\jLa6a{ZWQk9`35ȋCe5^ a"J.9tޒ|Q4e) `򮶽OV\sN?&򕻳cPV k 4oMa9S NlE#r%BFV֑[*34=F46EdrWluc%5Y5r wJaIjnxUʷBLSiPK!OXwu $MAEb 8ΥxZ )+: ;}ufYyk6^Mf=:—Rdo咢%l4Uic`Ҵ҆1!۠)Dv *Oh?H+W$3L1 g !{+jlW<DZpi73ʅOioAanfgyAAI-k%9z} ɩ.Po낷pyw'[<kxG!kip|rP3tp1rҴLVu~Rr'u,dl$V"'sg%H }yk&$u4Nu77(wvfH(A)D A Fvm(y]0]wC3(|]|ҧdQ 9H+Y]yX2iӀxweﶜUג o盯(XQBQW 'qLiD_|Ɏy͇Yr"b @9/ɛ?טaI)Cʐ  ١y Y0!̈V y1a*"@`Y5Vy 71IRf*S|`LZ'Ҵb6CC iɤ*%E0S?xN: /JFZY"#J'C#u yYSr$"RfGt+Ta {)[6eLit+Ea9LzjOK]m(xJ p aV)3AXIkz*nP7 I[aS5U5vAbG(P湣žvj g'AК Mim1[|zm Fx*uf -Jq¡ǚ)I̊UgкMd:434w\ӭB# r 󗘐1w蚮ꊎa*a*XbJI ZDIR {-_Pյwt *!$;AX"b뒼% -;0K'.湫۷ ʳ뺉 ]ګqKL}ƫxEتK` [0] HYw$iiZ"y(2Hֶ֚ ["Fwy+y+2^ :Is k8+I:5/0o+!rJQ$ uga+%kL%Q2ӊ%B [4e[й!$$b2+W Pv?H;*a%*w*|Po/Z"V{V",m$S+D&dEL=:U{-,5Z5 Ņq !z ַ{1ai, õBH$\9Ȏ%Z o칑WR҂,/+%S`rASPl S\1 ˔NҜ V6zM™*""! r-f+}qQ!JuW +6=4 :}'ѩaA XV{t \Q-˪0H[  ;-ḿ9 R %,: +kl !Sqi'{RGŠ״ң`v Ӵmm|jkj]=~s7ݣbml-hݪL @%BӊRoTLb{ Aݨ(%A,̿QX~lwȄ*8gClʑnHn="YSoܢl~-2{L.qӞ#o]p  Q ̺Kx, ] 0pN<;đ[vils 5 CaMέӍ{gN QN` t~}yt|uܿu Rw >qV,@M钎M ^ ۞)ݎH>k>4JʉΫ!-,W}=tEy^ǩ` > tl ^n! `@.?¦^u'_-2y>nh1/)R䵾 aSOgwNMF_pA`P*d^U/(WH 飖CXE|*>UTGGXd}Pd˒ԷUBU0]Ru9m*>[Zn#(2PKFYtSdӴNjR^ɡ QEUٗ _>>Mu /r岬YgYRK鷪5S*X0,]Ӯ<}'6̘}ՊS Ta[U@YD3a>#I':d - -밪ny ;j*ND+[iCC+}zE`zŃ )ӎAȕG}q>"=/j|*?Rr0%TYdv93coB8/:g2ĥrL4 %6\qr\ʭhFm!  ݇B˺boz ,='ߪj=|ı`LxAU,qXtCAmer0S+I.+P4)Є*˒AGۅ"3lȵR v%aUhc Tكռ}kg"H3$%W'ԚEu\Bj!Md Ϥ׎h,iݟ4޹.Pۚy2*VGZ̡XbZj 8"eVْlSSùjx£KE^WP&,XˮS쒬~2X>n(,NyT//X\? ٖq|IN.}|( ~qq`tG(uOpaN(`qkt[$ޘ}1pPi%}w t :^ jblID */q!.(}fg Gz%g-lD7 ua q.C"i +F^>X2K0GH/BNjiŞqS)##P^A J#vhG†QFӠ򦘅ob3d3=xCO~tdQwZX ۇJ]"(JJz擖 sG9p:~Y T:-% L[Ҝ5kld $SK Nʩ$~S@:JWҠe>@dxL.(GgK!:}vC+X-Ӱ{)I>1Ljl-Eatz r™S!D%{؜04ֵ 'dafar$/?_^:/c@X"vC%ǃ\e;8^}P-B2x!yPl,n%s\:Yg{ބB0ǖMrF9lNo)BMN=T)٢4.苬cҀA|A"NHyFm#r&X5k&|Dg솉:EH,TQc Y'Eq2 ٿ4khrv RjI6'E쓩ƈVgP">*v\sr+V"lé۞ˏn5qr83 Ulc'\aˣg$ww4!u`%~+ֲu|pb!G(" m,giqtf:T\PNb[& o~2m Jr.͝,o G'ץ~(p< Wn3FT?BQ)~'6m.Psbs}}~Gӟ̽sY:廏CY~u* 㫾D*{^Ւl_#^ Knޢ$h)ƫXృ{Ңѕ]2z1LK|ɣ 8y<ۏ3 {+f#?3?xsX?>s?HЊI>jXu*yS\!$5iʇI,sQXl B ԉ2/+B :B8Ahp5k0͹c> Q Ρ  8 )@ DBck=t=.BJ4 )13&)X <ī$F:&y`8y#h0/H„J4s0 JL:UJ).;VΉ1 ) ZШ0Yx+@ |D+`LG`di iE lcFx!XP " [ۮ FEk= IL*J^l 1LqHu|hk8N4 zYQ<}  4a H 0ƞd6  botи—0tl0NrJ 4 4$,,?|$ !шTI3 FY$ťd܇4l8: i-ޢ| e~<:6 Rˌ8˜䮷|9%Aʹ ^KqK| d Id}L 0MklIzI˂ 4K 9t ӣ rpE 줺L lÌ4AȄH䧗2D @L0dl%N4󎳄I,l6FHD8 I` C=Mܼ!!ǤOڗD2-Ӗ8Spl[Q9SPPQԄD,M?mՌYEM"ʓ <@*Ֆc$G, MQJ-0e%MOFT; Uj ,CGTM}zjՒ?T ֘8JU bLx+ES40d%NtƝI}U֖xd'j35BjQ-W6/t줸͂nC5T%U_bcτ R7YYbQ%5i@r\|=ESXu VX"W-^c*\C]GW@Ycm +Paכ#Żԟ['[04 U[؝D8=P%SՊ[Zp-[[t-Z-լ_ڬ1}|CeD h -8ݻjEU<˒HTp6Q Xۢ5WXKdܝW%VÅh@z@8@r`e#سMۃm,QȶC9=^e1˥\Y`EKQ-ϥnt?MZ ϖX=Afc]RbbB6BI٠a^UN\Aems==]5b#  eb/^M C7Qyȇ|G~dE՛1&53_m} f5׹_;[ \`ps]W8fH_ͫxá<4ZGea wVf%}[ X~ l1d؇݅í̕})v'Nd٥aiSel6<1mJ 6<)RZFg-昗Oy\4yN}fr6l e6 %c"-Ufei ҽue$A>\MJ]Z z,haw2܋i^4}։Ի4Rх e9gX^hّeCRKؔZZfjJ{އgt\c}v c^* Ɲ%&="1ne勈αmGDS aKFAEd.5oV!kأ6lzi`9i~ V"N(nR ֘MjێgCCѶܻ>ꖠ `ڙe%m( N6 m8\!`HVo g'%Xxfok9 bIؙ(ߍUUo qZoDcҀc]eդk g1^j|qi=e'.pmTpHЖq3_7r8l0Wm:=W'sunPEsDkN/A2gʒȓq(pK|trHZ4ɖ h8DoKfcIIlw ̂o `uP j8^nCIm>u#>:s А^ԄJbmGcTUvawsWMdbJ=ut+H\4]?Pfd Vbv<^Jw~Z8}lwyGMgx.χxrDwT0wx_ yv':yywyK8Tevz zGz yŎX0y*z z.eg`otD8D:Y{T{D?pu_Pw8}e{A%Or DV{TEC4J|Η|8}cW1_{q7ڥ'bmC}Q¿tC)} T£č'W?:jzw0#8.~o~~ҿ~/sO_o!e~D,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,id>(Wl%̘&Uʬi&Μ:w'РB-j(ҤJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴjײm-ܸrҭk.޼z/.l|0Ċ3n1Ȓ'Sl2̚7s3ТG.m4ԪWn5زgӮm6ܺw7‡/n8ʗ3o9ҧSn5ڷsEǓ+L*hВ25s< #f Upzĝ_P,dM39V֓  )J)D%\C:$uQ>tQh*:$cY& wvu)at5)1j4$[P*ҬA az a{R 7Ҝ̖l>ǐdGbC~eAʨ[ PȘ[4!Qт(t`[9#Btѿo((E 22nU,+Cg$bSS8 5A;}Tu.3B2 SAdB.Lc̀D tM)M_#SW2A[&]5'x;e7De0<=THL1LÉ12C+ЛLw>yM5ܦ潭*fXO@ jIKO9}@Pl)BW$8ˈJ^PϗvGt2}5N2$H`f+tMGs+]":O f?l I"6eː@H6N!ە, " rCn\5Hl/"Fh ǐu(BH!Lb.; B(q0@jڑ1զruaRV0!$f2l&#'Iɂl ƽ(Aʲ `M@)T2Ze mTH5]Ut kh<2!7l$0G@n<`XEDB(t fӤ8u;b.Y6`-QJ,'? m@j6u3h?B@ h ,a5A ~4f5mX՘zh9ᏪώJ4MؚW]$.q@Zg( ] gZ”<ؑT`$Cǘ"mBM #Ffc۠BI#vL*Cj2"ȫ^=:)PkBacq!W U$OаQ:QT*$#)Z">ȪxHCjl"ۘ[7Bц]G֡+%ó6QF/y@q̚ԅsS_UOVmrB`#\5"T y@"w"n1mV"aG$V"8O"݄”X]mtkL8DE$ ;SPޘ^\F-dk%#Q 5@c(Wr!,آr|nUd2GJicw ,r݇ tsS/B,0(!,ԥf_-^._ r] '5+cf"Q# Rg, 9ƪ=ļ.C etVdyqwD_&Bhi@`*s 2~Gq-6849),m}C6TN_d}[KuqE^ 6>l+L)rIzdm7Y)B|`͵ X$]'=5gDt'\ ۢ q.]*#476@Jz=/յi#Y\eJo驧5"2I^\uX~k(sCDdF,BZTx|]t~ŗH@Z:YO} ೶At̫ɚ=F*e@, 7*#u 9~FSb|A xBGt}B$l Wg&7Q֠Z'u8 d~ԵKg{zHo{|4Ȓc$;%$I"SIaJD&m BD@keGtuV6 3TG~TstH v"9$qp(rG P}r>}0t 1PqpOVv% uqtHN|X7r(Hy+7a,xw11ajS AA ;Ȇm&%PFpB'H6QcM&myqD`Hgq`';w876 YM( fۤBd Ў__ Knu ui~󏬵vh/pS6 7 7e^(wZ!;}Mk; eY -ؐltiWe7 % hC9Tǘt%K YSP٘ i^Dh#˂ziSI?nw'w&kf TP{TA2 y(FIO٘@N) M b" `^jnIHs(GF~,œpMg%U~BB$;9@*ř6~ ցz& R DHYt}Xv`V+T(PzdGARyAtJ8C&ן4IsDtQ ax~Ŗ Rp  sc|_*)zAŽ혢@'fƗh%Ph nʦm P ƙl޴1SfY@ާX }[uzzrno}eZQl:(z }t"[*x:{2e )&XJչ逕Eyiܩ 1QFڎܺXun nuрlʧ*" aQ a: Q dIIZr7;&֗IOzyJ`"+сHXei-D u9/Q% A сS:1  % j1VZ[E;ڳL˘с  VŶۄQHq Oyy jO(;M aӦ@5 )n(k+KQ+*˯KʜI^ŶƵ7ѕQZkqypjK;"r{ [tƵGKnZ|mߋ{/9 ʉa^1ˑɲ{G; lX c҉| ~z#\YPk6  Ѵ  lf 4{yd K*' J I 'A ~Q ȱz ]}+'aP09V W{Cm'\ gp뺮 !> jT Wi-(.@n 5~ <ʚ @. En a-tqylSNm{ ̺\SII`~AJM.؟ۨ`.?az~- ~렐뀾, 7ш޳ ᧄZJ%}Rn& *N^0r @qy}@~ +c pNIjJ~n >ʦ er !ѐnݥ*y.ѳNWy۵ e~g~uU`MPBȼzU,GҨ7^꣮B+oP$ 衇~sqyqY AWl۰l SV7'zF O+}|޹N? !wP|ސҀ󏏁`dw Q.dnZ !iN̥B qʨ#W. ( !LǢM+V/0P ϨȜY qOFsoc˶2=Dʦr #X W.\h!CP9Xp0cDžX2c>G:U%aL*-MVRNbI.i^N*븎"9AЪjX26]sF2Iڪ;atf*,UŌ3fO? ~+eъH577xv+ɮԂ, .fyRqAEvtEkWkkpN|czV@ރT Jf:uҢ5_:=l޶f;ndǒӯ#?+(u#ȯ X P(PC:$@JFJ[4cp$pZ^$&]l,!gݲzС /((*HD:K*4 C$#?3\8tȌ,HΊlиۤ,1gD.?,>B';2Ma4.JB4N:XK> J>W"k ̠|4ZTȸ܋A.L3I}}YUv)j P1u'$_}V`؂$+IJH-1G}F݊ʲLH֡iG j^fJ SYdW,P̥(:= DR^eu auMb/1K% %ִb{Icm yQdUvhWzNgš)r2-t2k̘ ɐz>:+BO /nKzM j krUNxr۞pOd%:22y{)| e6# w,4}v,x}Ծ<σiH}xfGudw0=v@]Jx{'==x Rսò}D{F6H{?M NR][J괳,$ӫHeT ջo:GW=P)*braK&=yz꒗ BKD)o)ˣ 1flt.ːT#8,P<,șd 0f2J8Nfaw2C"AB_8CDŧ5c̴3& fLF7! d&e$ eh9vj4HA}R:mt[V4WǷЎ7^Ac+/(a?’\`t6h&Elefh]bҎUfE1ɒHsHYi 8ST-"4ςsR,HT3Qlup*eAtUNyJxkq̈8~)BEp'Ѩsr"4D*8$A4# )$|UEi2RQNreP>,mL9C* YlMARQDi kK-#}]햕]D'9%SMAtD !6Nl iJ"+Ŏ#>FKڠȢ*V(8dP#:Jn؈@ZR j)^ntKE+MZ׵8eKAYGDajukgQ">WwU#xhuW9KXdJ&:YJMeSY]*6`} 7/|\NUYɱu2[η$jsjݛ88rsMjO-Ulx|}{s_kyA&+ҁXӧpo}RK7@9DH|VT'0V4+կ!)֖~}!F,>x~~ҠD8@'y!D!Ava!,Ry H*\ȰÇ#JH 7n3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻGd ȓ+L|rGkCN\Ic7=b3xҗ_FmoȞ!4wnY3 3 2Zz|#_esaiA6`HLbJІ0 AQ7^24M>-惌H*2\ Ԣ>x #A6JM3!#ϒsGsBc [dAPm 3]Q6΄ؐYåzԠXPC@gz B@ka9rS}t>@n"Ih\-Q3wm3e4P}SʣJ&jY̸z'Q*Cr=gAnfc\slKmA렂J.H3&[ܧּ4&pY++)lCئ.EpI`X!%?LAl^A>M>κ3(/4%GIh,!rA4Ea/W'޼5_HA2tƜ*kD<2ЋLL=)[(eBC~͵mgT‡x.v(TwA"S50 1u۝LDU;4y 02P@ S8EJkr8Bg ;CJ*8pk1 2 ȊV'J *PX8e`^@_?x_FFsdyU‰b2d(C5(cָC++S($m& JkՎ(d,c"LH䩌# 'Y1$ x?bdȠ#e$eC Bڔ.71$˘ czL&+N"TG0QS"$1JTR S9+tYn[T;gN4gcNo9lH(ƺOP3G1L2NcwD>tG(P.#7zʳyDC6ʡQI5 %)I}>·̅-^WV 4I1H|($&Q 3!M젞yѓr4>3Gk #'Mt 4ekmP+ʅ\ Fڵ@ԉB9=TNX`ױ j,dDѻ!MTUSiX#%6^oSÕ0QTCWŐԣ#5N|#@Vφ D2tQkՍ Ʌ.:}<ƻil7B].tJ&fvD#-TV}p]]n`ϜriuxǣbmE/sU>X(Pc<*TƔ7u".bP Mt%nML&͐+A*&*b.UsN=gZhs盤(c h#}4ʃ(Mր!2V ٳiJ^b,+[T } `^k[cUF6+~Dkf4[mlcflKbdPuGu_GPxLh<bN X+sofeWhric!n{FޮsZǂFm [4@w9~4^IY*#z~p}* k=LHN'ͳ'ARݢygGGgޟiln4u)zW ;&e0j ${wt{ |rt;t{K{Sgq];Ų M}!8u6FW y6e D7"!La~QnrgaG (WFh27azWoCPpg-5` guWna `5QG|X}3{`'{$H|7H%- %bc`=D#Jo7G.x:'IvRǢ cv p(WPxWf+k#Twq `$ CDFG5p &PX@t#E kX{:ww\Qe ЌćKSR"W|`cM>Hu Qv8Ih؃뇉X/(h*ԥz!z@u Y;xM.5%o0|ÌC ȇ.t'\x"Ywx[w!bv$NM<)C4Yv TJvPQ R %0gWR'fM  Pq#مkry7|$%'|WY )3Rgx'{ { xi hè&mq a58M^3 %]2rdIɏ@Rf.Uiu6 LBwÄJp P 0Q ]oEuixBi p"]>YY94Sy[6p ; 2IJ8 g Ȕ.8*FO Ɖ@}ațMV cgMC݄ٜ&z%9Uo"7~u#ħ3H piI`ڛ&RF+e@9h5 RȉȠ)>q1 13eijnikIJ/ Hqȹk7r̙wŜ%ćS'y;vʜh,)p`9$2㸦`X`V*1@u. 'Sʠ3>'1a7:Lao f*[* ~jX (wQ&sڜ9 *:I9QRm aJfY:Ǫ 8#`zk Х y04 (~:6HWOڱXXY* vwj v5 נߺ}amIH%rQ&UV ZP ~\CQTY!Fhʰ*C:C;<;~5 ۶tYբ!Ɍ-WW&`ɇ s0MJ^D2V jwgG XK+ ۴ Z3v) R؅  s6 t j;X 8&& ^' Z|_gw*x䵷Q wC ^ w rī Jk п;5dr YyB8z@++»e~` V!|kˬpۑʚ'QZe+ S۲["'I#$\rk+q+T\P \,3UkH}  o,t"TU{'}j⫬i0Mds, XzL0A]np K GkŦ\[۟ů\̰9}X [m t¤̰+\{` Fpa }Éas̰p{[}J1Ƨ5m|R lP{4(] QHaLMpl R ap {pY L!LjUK һĸBzt}Y"+* J`Xz\ 3K;LMQ\+7a ~ G2]=M atU=  YBzӿyI;}=ǂq DF}w>M bXm` _c_^Jul->ր{4`ka+>-~]B ]ؠ;  JVMYt11Ѡ}i{f̨Z(1`!ĔX ۾ݴ͹]Vסk] p ]N-N֣H'}4{d]ьޥh w km9x9KPHƭ >ckI/'Ҝul&*IuW0x=Hݿ  >G|n~Ž @ !Qo ann!@2c{h^j .ppI^ʮH4ˏxz>?;p 1X O۞= z,> zӇ<0v7}oL}=0^:̏ލ M-rgq{N O.K~N0aAuչmz^3,X,kG/[30J a`/`D—_c {y>Y?J!a^^ j,|'/|<-pre 6ͱ^M0oa R.JD{Qﹼ~W[Z O],_O3 q )!se_̢̇~8+//B_{P3J3=i0IaHn _Au,~] }jJx,C%NXSL$E$pbi*L1LjTٲĖN(o%K9s"Lhpa|4% SfiPMEUj%YZUE-HU(#tYBLO<U!,XaFLU}x j[܄>رVv##A@Ȱa[Z5HqnL8hjL*Wӵ[ds}C QZq Y|jXoEZPk E&mKD=y~vmgkbX0S V.`15J,0Xkl2]Iؙg pBo6,!&L2畄#tk 9rz+ńjz{갉`k.+%{)k{襖/^R/he&r6뷾j/0 dGR!? nI."gif2}%FUvQH[+rLtj#ͳjIZChE-S-i6UsMT"˳h;!Kz@hL0!>9r-XCB#KǙ2DQTSZKDDhhؒ{*T괈'}(sV6UjAUQRKYfLMMS"91Gr9gFh3QxDI:FQ}qT)h8"Չ^Sh+h7G$!;PMW;NhΉ2}%gj|qRKH{*|egH2nԖH!!}o(bLYOQUzLJ6{k#Yft-T!_hG*mYLC}Ƒ72Q16&TU"ȚHaAyEuAwLHVp'I8#^T} =pZk/'k{Jτ/S G"X_h#/ADINc,A1rbN{ xN*XYIv96,DLsq/V/p~ =̆!a`pX|X-bD> !"E,a.~I|H'XFA1H8&a]W"⁳:Ј6$kXuLn\fBbM*c Be40 I, I#5_D^eE`G*LE--8l"\(Moz&$MI#2Iq&'穎ByǔG1Wʃq6Osmmh< 5Hxz7VvD3M긗5tMUl(`oi1{9쉳 k\nD˃k։f#82C|D\x(764I >HOY(?V;^k!rySLbJPQrl1hYrcGVCsǸ6Zb94L Xز೜qB 3@N(>>PP6x>ȃpAD jDTI{?bF*:PZL&I;ZtXX";(&@X<LC31}>dA;C<8";ĐABԬ#K"\"B4)|=³J,|-s ,0\PX@2l@5TC2kC7LA;<ő 2) Ā*DbP˔IcDfbJ `SFLM )NP4PGÈ@3KL@VlGq A[CA#ETp\V'˘ b,Hc I8"0F\F+rg^qk0DP 4EYPGsRHIcvw>xC9|}3jID0bt@9jHE|HDZ49Fٓ* BFUISDIAulIW3>@[}E}ܼ< ȋK!!Jbj2TĤdJh\8@+LXŬ z M;Es8KTK3|K 5 Dc9ƟEJďALc\A4  yA؊$e](e`n7~6ByheWvDcr1Cc> YST&I`OEd4MM݇NAHfq8ᙝ='g8VeKqS:VZ; ehWP_  Pc~~V`Gfrn Mxdd0pfg6e}HcsNi&axK{ge ` }|^h`BZ$XM2gќ,`j"fa_gp7&iMciED/闓r Dqi]j֌gG6M=f@XΜhagjFiB`FVw,Y8RmRSMbR^ЦgҐ-`Zfkg` xbp6ƈ-6Lm1kmfX>ɮpXn&W鈉Ϯ$n0"~Єл&K]mPEGۤnN߭}o.0Jj蒞q6g^K=pMp nc~LkVTg OW(mm(l݆o}=|Rq5qaW gxnӻ9YZ iޢ&Cil$jvYq*pHflb6ap5wten`;gpn> COZD.rHu愦\2NiYdIQlxNuZ`Jq4Z7K&r(\ vh):KhotabGas}ow-oOXesӠ"vlѾss0!Vih=n͑A`uOӌD'v{w+/Ewe߇_o⅗cH]s=$K"$]9rg8S̠ozkNa7sw&H}7vLY4q eg>7TVMAw#MӤrJwkz&}yH{Hᩏ1w>ARIRpv!!Lx#}xg `X^NNj_9Et _^\xrW{#/r"} }rO柆+OoJO/y~O%jDq,#H: ljwiksx{khgR +'.hL,h ƒ2'nRLhkҢ ";Ҋ$Ji%k ˊ2gҬi&Μ9Й<t}"]T)BK*Vl}ԸWʎ-Oi}&J-\>5X.NTu䉴r̴7̿E7c2ʂ&3D[q-ТGg\ΠS|J,pE֤i6=y%ٰת$K0} ι|7讍M5޾H&vԩ3T02~>aF==ͥC8QwTey![~`A|X7I1DJrE8" ~@DfNN7SW"Eڸ918 9NaةVΉI׎86EtH$]dN4dՔ ݐyiЎ=B#B9My'yz XV|9(`z(bXXbIУ!:)j"d)҄_@*\rjz*ʖ*\SeVz렌6됍vZ˖$,\Zl~, }r(2[-i܊[ǩ᪚Mpd(\yh ۖ {!(DZ`j8@7T.8oAh,>p~=#Q/\=F̥oET93wڥLCnNl4Ţ&/:' (UssD1r6v5֮| =jˢ&fcUui92IK6hχ+8K>9[~9%ɐk䜃>:CQ:ꩫ:Bqc>~;;; ?>髿>>??|???(< 2| #( R 3 r C(&sH W% Jט5!SQrCNEN8Vca]Y_Mm86^0!c#.UbAFTX̌ ӝKHP 9s@܏;%5!Wˤ"1*9C(|,%~h@=zch>$4M3c5>#h )Wݙ2DE{ 2F2**('1#eNu@t^4BAfͱi* A[ղ)DV6٥mA!9)뮲J1TJ3"dAd>b+nEPJ+BBDA&) g])9n^ bL6$L'j2<7fM/U9 ԯAdSrA239\̴fDshRe@<ͳA4YMPLC@2vtuAL.0%n|gFmm@x>: nNPu)➇;CԲK9_R*/jzC2gp[d $mR DAWD}ۇ ep!Ҧe<.{Bקij UāQE)ackVB"Hb!XEHNtb=q1!R AE)NXճ>w3UC\f4#mXg"GrCbB8Vc(q L䉃 cLcF 6l؂n| %j@= #!B;JQLe|VIJ4W:,ױ QZo;F4a [Kgb@(g^2T.IL2"Ǡvdu s (/rMrrf_ndXct'qm681|"H0Q 8$!uAH$E "Gޫ)̋{8NQti'I#I!zc>Wus".MB 4HB*t§F+ʙchtENimFu)GOi}d6fJSt"*ZdG%5P[#ljxݖetyc/߻#u?LkM=h&@4il֗4Hc"'W֠YdwX=ݠPCONjeF3 mMwݨ 1ENi4nmEǩëGc7 o>aZؤF\S:ۓLelt c|]ggw<2(6 >m]_m ٤5]MtXY2%QCDT) dκa#ћ)A1 /:҆NY.5~Y.?߱F6ABgrȃUq%tʰE)X}ùArK|4N$RƢBлApGkGF4POe _]9 8?Sp%Lhqݏ'Gy]|3ů&<]+G_Iz{g5;OA8zDN^R&Up۠uDoKTufw|xCfXp_Vpa&r$W&VLfnƁaVkf'etSC}kpeEoQt^uspFt  s'p@z Dpt z6'Ʊo!: Ѱda=h0fXJ,聼whՁZcCkCՠpDvWOS R }6EA Xj4YUym`5:}ЄItN ;x8o qI4ʼn bH d1eddž؋rC C7uG v CkׂrxX hf}"B|T$~8Hc8d`H4V8T?q LeKNńLc0eXe9)uH苾?5BWaj&aENDlY7dGc؉A (hK;$%u 1ׅsDIȄZjIrrfW oSfbɋO֏Wpy (Lcoy9_J8Ԁn ќy P朊XR/a-b M)ĹGiY'DRY( S8lKM֋jvi4j)T<6ljzs7_Fr(Ԑ ^Ҝ)` ٛ=< 9vu Y98J` أIi2IcWL!hi cwuPK6'i6A dksaLCy_4PDYT ; Z JPvJ0kJ̓h` 铏8^B9ڣʞ@UŅXzuK:'ہNkdcd} #] `yI7 ^ؗvګ<_. ) UڨJLfK cRa ZT u'a9]I|2 EP^I;L ՛Ȩys1c٦zZ Z0U0Sj2I7=J)d*}ʤ{!ٚU'IIQ_j К%!j* 9?۫uJʴ_yAd&7y @K[T^UGeg124t[t[cFXQ&c~dK :WP=Ȥ !!kԶ?c` @Q K%X +>1Vc[蹖aud<Ŧ&iF{sux +*ML[ m* _u뀡 DTJ4c' u K;kuJ={ e 0K(ApP#eB a Zæ<jY1C_=I<E׊LAl͇ ZLުв в .* ,ЪpjP3ײjoyJ򉶵Ľթ%XLY~'?A$ -ۖ)=Ŵ{v~?Lb8Y݋Д- $]w|ݮ1= af{XdMKUżF O < a V2 *:y(򰣴88_= #](}5*HJÛhy˂=8K> 0vrI$aε;Սj.\Ƅ_ ֮ING h \= n}(ەռ=ut5&LLYҽ=ݵ A`=h[( Ҿw.Kcȣ(w (gL4{~f;.9)n7dphI= lj 4Pޑ*p ģY4Ճ--AR4#˽%K <)Mj@=莾CG̯cNE9jlGLzN;Lz>K!R rJ&JI[˵ >0q!%a~mhA;ȣ~!~ک D0Np}~ TM n(+(8i ]>.NɅg{. J *. D !1! K]gan Q7"q y2i꼥SMs:Ǎ#؉`&a-8T\5:zPTaD6mB zEU3vVez!º$I}Scu){ȓ)[msL&*cNstyAzH?Ң l6d6T&uz,H F8n QM;hZlłRDT;#0ä+o}K @ (^9Ohk!-ҭ r"O6r . G6| =j(1K.GPp$;H:JnH$*ʱb4'Ƀ:!u.mBE)(M%ʫ/Qֆ|,3aW)W0N ˱u$JmbȖh;-Q#X2G;x4RX6*,E#Ӂp).S߃;HNsYgV4ʃZjŇ&V|֡&8VpB#ׁbNDCT}XTVe[=4ӒS=souOrI݂=蜮wWT' ʃ|Vb*kg e ˾F[#!9;ubQjhߖhlHZzБ-'YY%B$԰Ep3C&_DUIK*pd@(!2ijH0 Ada d Aae`zɐ4' ]IS)(oԧ$yD R[#D16 HD)'RdjѮDcA /#(`c)XCsduLNrJ ;$c2bĥ7 ̉$1 ЂOfN6Inv⠩82qLHB;M}Ѝ<[ wӧ*hXCT=i gKVZhY)O"`:;(b5]-X®,EK۳͘jof։TdH_3*U%XR嬈U'5&V4QVD뽊fFёuQ&^Wڄ l AT:U) shX6D8gC D[-EQˉ6]4&T#Ɉ*r!UE_!"qSe?casAR^-/C+*/&+ }Zd8%ՙ1=DJFyGX9L^ǧu&'eU{c6!>:5X|IÌ7]'"Hi{ORg tO$k5^jȼ|  P!<<ǁ;?e4Lep4̒TL= fLT ǁ[H ̤A+𔅩M SM~qC8@p}HtPsE`g@$^d|HdQHERAE>dmO" TA-R&]t(mF%N0S0M |2D3ee&7F4Q(8==b0bKcZ1mK >Q5Aa9Qd:ĐeN.AeTJƄ,gbg ]ڛ YNdm`\[$ ˛gt`eDngcWgz`]=>O&lM^&Z0g.&Wgx*g㌦g:yi60h \MizM}榕fieLJa,i.v=5p@$j~j&h5jpjj涩jfSYW;F$ <-{k5U0RC \aY3RŹFlȎl}lk@m$9ka>Xނ>mõ ^}ZfSFmヸm_^X5=>n$Nn1;nD8n^nnnoo.o>o`pHojnooooooooopp/p?pOp_poppp p p p p pppqq/q?qOq_qoqqqqqqqqqq r!r"/r#?r$Or%_r&or'r(r)r*r+r,/qr.r/r0s1s2/s3?s4Os5jBXs !',vv H*\PÇ#JHŋ3jȱǏIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]PJtիX}Vʵז[KٳhmfӦ-۷>3ɝ+Rƶpꭩ߾&̖moEl6UKȶbm2~x1dӐ;Ƒf#x"[a#Զ,a;'=ضHvajՓ1V.>P6niDO|0H|_wGN|mf~ٙLd'N!-t5NbO 6gQMTsaVaG+,>> >(fA e-.Xgװt:#C*EL)eK }W&(Aҋ, m$OsP_Jt"V2EFԢi&c)њzRgsVx^I3$4M3mG҉|(EytƖiҝ/(tyaEL3P9:Ȭʨ@D4)Aj%=5 bs4NѬ43|F6ֈ&+:Э|7n1+BD!ITY k^; ћAκ,K-IpK T0S.DC'y86Hhm' niѲ&3 k-C/3B N8TE 'Y H\ B۲jGʚL2ˬJi)z޹׿>]{DmE"{ԌsOm2 susLYCrs󠰡/Dh-v]vnvBvn@/7~+CtpZ{j t߹ Zx21J4LgO=ZvwF5sEy/J] fHyLf' /czBZ N,CH}l$q0#>ۭo& D@)J8ɰT8]Ba!H ,`1# WPe<+H $a2DcЊpH $!)osysRjxd)dB d49>C]#awrmk][ cLYH$Ũ! 4*%6Mx6IY?*at;/d'eFp(|҈5PIUB+QIX1 hlw X.tqjr1X,B@A (%H8K Ò2gŧGlelɕ !d|M F&APk {gs ScIQd>'b|Ǩbb޴N>`^s 1׿mR:Rh T"LiNh'MDRZ U4rZU+ڣ|lT}ѬtQT Pס>25>/ERC(kdA } L>X9Uja}puFX4fkTI rv $CV~h`  6(k[uV]KauqW4/jmBZFyZ'ێKTVu# C_ y2܁Tú,҂5ݶ:v lvOYC 2\B5N3$9l-F88ǔCȄUc kX8@Bl zh\3 eoB_,c~BFc@"Uc -Ti;6 Μ@F$Zj,mP!ųB.l˪ C̮UoM2c/Y5acƝ&.q@f@Tm%&֮*eT{v,1C{Ȣ qRR@i!o!q2 &5kW*+l5.cAQWMCRF j:=j@碮5!L7% ^$ȫԨ38e1 }Jz0gqBqj3my.ZA9{9sw-|MBJLfֵWX[W#_3q!/38yO=B9lTia vQݮpbRgйs /Xle|[\>1ѦC)Cu\w=w}6PxD!^}iPql1(!-jwWc.>y\'wO i,4AlLR"vmp*YϛU4\_W|_Y~`7 UCj eP\wwe|KtYGT-3oB}s}7b&0WfQtayGyf W.,:h MDQ] %qpP^\ WAw67 װՠw2KdgQ E`\ԇ@M>7ǰNi<5W##V%Xu(؃~ .t-'!=d=ij 5@d =5pVRg;ֆl_{|&[X\7FlʆJ7z8p  X7qD)BSGAgBw&x[y9_(c0~ CXF$fǠ bPUQlgAXlM8p6{ >J4KwZ}r\uX zAFt$B}iFDu@gUxXW,cs+&s5t!35?04r59-T(D0D明 qD~hFPv~VFCⅩlcX]٦|Jؐ @o􋵗A}1ոtx [w&s{[i7p8!zBhIFIh(O{x&ɆHPmE{ u V9&}QmUavA ;>t ̤f> A)eU C @ ADJ&X.֔((Xlob9UPO9v#X|4`kŹF58Ҩo$ Wi.G & 9h@-8f)KIXbC$@@9I\6ENyH>XԞŚIFhm{iFnvQUQ 'i1bɡ *":&Jw $ Y$:ʹ[Bo!;j 渣ڣ DIgѠ=EH z>ǙJkDyU:]M F` (WfVЃřiQy@* uew }JzjZSYndI=j :DPozeQmKzHS |U"WS 5A z"+Э*t6SSc`兮 74ˣCY79 J%x5( w(%V=aFtZȵj IgЌ;Z=vza3<a- q3(];fgHͼڣ :<>ӯ ?ӯfaa\a^kN%Vyy @z3A FG| ЫЫͶӸ=j#K ^샂W|%;]Mք $ں`(; Q>G^qہMQjӠ | Zk 5[ӹ])qcg& L>0ܹ Փ LX@}+>˫鵋4X 3A{1j5<4=<S<ӓ 9/ގ q{d=|䀊\1ay] a޹; afge<plH[=LN`a4$aα5 zƹ/@Cɇ}  3ܾG2\޹\> ֩k~N%?,j N$R  VϑXV4)LDtUmE;B1!ΑYQD5 n]ӯ6Q JaA  P25XY~oS[őP>I ݞ¡}Oʓv $8H>cC%NQ$qm\Wq⺍һ!%gȸ;*!凊-SmKJ-ɰY{(/f6%lI'nlĒ&;p澊s=[ɇ k(<{NBoj BeƽT}cȴ#ʪ&srIB#p(X(W^1ͳK> NK*3u~hY'p@mE<\KL ؤjrԑ2Yhf=%MXK?-]jqR[(x -s|P̣(d3CgV`&@\`.$U,'gTPk%K*+֮ʏ6W(b=>Q9;ktM_u.A*h\Q%hΔSf7&R+(;,?]IP|h۫Zbn\yKY]፨c.ס[z.b d|_{~QH)r8ZlIf}PxdLr, kT9NAWrZ]aHɇfb֍x brMwcVi'%k|/ZȪi2]@nlU[Md4.ܳ(m^{ZۡZ4;E[͉%Uܭdy^yoy~(rmajͱ7o%!u'M-٧L`Gכ.vp̐ %YKѢ 9k$!G%P<*xAD" hS3%S 54=UBs]Js7pTb5d~ CW&A 9U@0n$,q+S44S;ڏC\%F'Qd0i&YX2HmBRsHjn\d%+Vkd'SC''x ň"Rr Pxe0-(2+IH=p$_X8GxQTT^B>NoyYAf-^XFE'/]DVOR2W2tV\ZUx7BP鐳2+WВlH.9h)YŤ(uUFedEiR6"yjvRXծ.T$jd:1$KbO4bا>=R/eDJQqmUh![)FUG a. EDLi] P1? 92ɚ"RNSqJ $E5\OCM8jЋ2VPzN;UhZc}t+\"ח'+Ӹf>XȢ RBنHD[@TnuM#` 0M W>oeXib)/"n[T71dDP]d9GҜm0a$)S b"U1}ך!CX6Ep Bk *%Yr]c:i@7{*, Z0$KՋ!6:D"fPZ _*9yj)Xg>[4=B%˲#M-C҆fL; bE]֊F6g_I"5~[Sw.˦n8̤7L6'膈=`W7C]D1'~M;sR9UMN&u `~Ku+d=h2DzĻocY6Ggڂic$k49h:PHDJG-pŠ|?0w9_O>eCG ,t-xCu#!mYM">xJzD)+g{:k'2;ZhMvs!ci0H!G;ѡu{q“}L |C OdIT;RbI-u.:3?6"g{C֙A,z 7$|?P0kp#雾7[џi+@p7K˻mX?i 0q0aia m:h+}+9-yd?$p<3ϛӟs("c̻>I9?9==eP!IB3B+'XB&T{‘ RQB ,^D>hd/:93}3C>A`6|CsWC/C,BC CxAdr7C#=(p*̵Htc7C3DNԻ3$E7:=T?mr$ǪCt?b ElGHx B<]_\G\@#=Y FPIJa lGd\7g L8:lA“A6,GIgIttE6G,IzdɖdɔG˻[ _r G'1c@heU)CJX;/tCI$ǑJ$Ifh8,8bǑ|d˶\9UIDKt h<3HLrJ$MeJ$KHMeH˻ R* KpMtƣIlB6lH;Ƅs *,e̡t̆4do}(x,M,}Oҳ)U3`ЉиG+I͉J*iTLUEM S͚DVuU3Y䬱0=U^MTLTBMV}tRXHTx%.UXkmXkEzTI2uI3ՇO0 WTeX%NQCl;wm5Ft5֑Nş5;IEX}pXټm% QSmUǜT>v0ѓ% dlH҇}݇%lBe,cfm}Ll5B8Z0mQ ZSW\b꛾(,( Vs-R(̘mqFuRHtֻ x{ѵMPuIeLڇ |l;5·][]<\-FTDT{̬=ʥ8KefzB$4 Udݼ؎reZ߼Q\]}>ٜeƑ@۶1TW̥P\هh۝TRK޴-5u7MDs]E]+eDmֱ,[-Tau=ah}V6 Ҟ4Es`<|]7ۓ9Ĝ]X4>\sWvMƮaHP.fn6 [^+uQrUZ]s7`'c[*5 c.[|WnVfΠ啈t(qΆ@d@#͉ٞ0MTKKD d#:aU6[@ZNVlT* l``+Uۍ}&dP>_eg5bg/_Z6^b~XX>`^ M6UU5WDz|@/ntPmd#6be>Z; b\ޔ&Gl爐cNb|ZYi4b0S3e}f \^fRϞɩc֋%6Z{bv;51+J1RhndXPS\Pک6~@R(&Hk6+(VI3IiMǸΒFȁl.'BY19, fZ9: XnRnC5 hvβM~\aci,moWٟ&^^6 SZ5o^H9Fbg>\d>A=o,~,a⎽Zupp@opG3Fo/Gq&Hoq"oKYh1r(Br&/ٟr,גegXZ.gL.ܦ0r2'$eZ"p50ss:@Z%u߉Xqs~;sA9tst6t pGㅰ Itݾ8iF u:W]t'gZʩJ6ppu_uXuar^'vdOvQ[ϒVWvhtFoDvkvlvmvnvovpwqwr/ws?wtOwu_wvowwwxwywzw{w|w}w~wwxx/x?xOx_xoxxxxxxxxxxyy/y?yOy_yoyyyyyyyyyyzz/z?zOz_zozzzx"zzzzzz{{vB( !,q H*\ȰÇ#JHŋaȱǃ4eIǓ(S\ɲK0fG&o+i˖O:Q#ѣH*]t1dӐKִիyʕm6;>v]˶ێ+/xVEmɛkPۀWqOBGTi8U .1SQH܊-bcq"BN[m@EI4Uz'sШb0(P23Z>^n~YوZXP7:^Ai!4Dj r֭_NISX@-J;RA}3I6o"%/NFs˩q 6봺}R!T%C1 T_ڪX3Qּ|T5ʫ5˹ 킪@ n1Ӳ1ԬָXsWDޕhE6nXlSMC-yPk>;1OQ,. 2Mc^.jB5O#PM&tD֬4|5^*+$/DS>ۜ{µ415@S Ŭʌx4BtTFMm%BlhKLPxBD[z,T 4mM.P~nDu Pj2v:~csu<3 dU=m߾Xp;]P5[$V^Q]n+oy?9m\osI[_;MO+;<]l5FP"c<%,"[w@F"H;`DBɀA'ȃ|1RsuܧLj4Q8mc>>JLP O!DH+m `1I eG>2R5,\". 9!@i0V c'9ȃ0 $߲ ) !V]Hu!;lNjf5Zֵg6EXG*USb^rFQDp5Mc}AqO h3hLSII ]p'Bpg?avC.k h*],s e)yJ8Bp.@6Z2A|e+>tPC3LHMCTL!}aH\*=I;b zLUҴ5.@-%h&!Ր)E,,WBM5:$ 1T+K֡ *$G*A i4.p"dB4V;ҕ'$K׃UVC(H&Cd4{24Pֲ qA$k:$>F1Y"]pHV;ysCm8)T <-ET*".Aj Z&HX!\l֬Rߥ"EN2kmdr:+q9"=0-NInqݴWR0E ߅H?b$M>Ѭ]WR:$ %$w7%[B ֆ,=g 7b2h|qf@nYh_|Y3vK+ZAF^]y *dR!ceVU"4fjiB}1W Gv5~4AMC!$qIF$ YWiYS+u7n۩h5Z#]+f!O=-kFȼxNinKRkp ȁ%s@q#j7n}#xf/AP|Dv-fz2%aOxC!yn2dR] 1x+B\524F8弰 ʙWy`ؐՆzhO;"sKWI[omY>gGfZ5=P:Rd}"YRqB]ķ gd 1O9#dstH2<%Dy&ޑzGOZS$K4/9؞)eyo$>=)~R~&"S*l"OG!?oh_,$ m.1 JDKGp}7zR~VHqofU[is%XZĥ^tW1p>>1~ q)]t6(EI]}qM~} !}DR{ R@@Ra{m.&uQz w{Dhr XHXtǧN9WfnZA7w}EKat }рcф vhyb`{]i2#kic 2Ut1Z3ڷׇMXO4xWiH V} ҅N됆arqARaWsэXDGGpPHnw{{?_CFN4g+nj'a0C{F^?sDu; S0㐉Q bX .)tq wc@v13) 185]i`Ǖh-Rs>}b]=96g|Ex]#21LIH Z>! Am_GV#&l 6y#VE2@1;Uyn}bcZwq5~5'$W @2yQX a^v Nf Sm $ 06yyd iإL!y! 0 gP4!_f$ zȧJ! PjfP~[QU{i2ڗ:C))`l* R V5 !j䀪*ԯW1xXjX@AU1k& j~ " ! 䐲*K.Q1]à1y LSNǠrfל!s0$+=l1\ rC'{(1gw Pz;{ʷO);G:A' ӷ!@T㰸 w oQD'+ٶ\]к˔Ѯ@Zr !ը/i{p&` @f\A D1kye&ov1׮ԻѸAQ(YPGpѮ3bJaQql;Qa,ü]L׬g>[!Ly"G1AZ0#_&Z8VSB,lovk0#Ok *~܀KaUxh.A aX 17Ǘ<~qUDZHh`$9lTq8 ņ# m1)aAJC[>x 0r E]MA\P6ь{JJ-a lLN|UzτyG !]$-t"ѵL10$ؼ !̿ WL37a<3:Ɉsz,ІSORңH 1LM"t/ )^>G ql qj p\~TUmW}(I[DF-м-aUq =| Ӥ=aU] L' ֭aس1h ,>q %-ڔ]#]!--Ԅ }m1پV{u!}P>z ) ؜]ptXO]] 1#A QA dS;{[>-~jL".q}fӅ<3%-n2~)~AJ<ٲ.#zA PR) >XJn 'Y~^h\`>c1),m.x|m~yK 1܄>̓/~莾+>,Ғ>ڔ难閡 Nآ~ꨎ$V>yNc.؍N~^^~Ȟʾ>^~؞ھ>^~>^~?_ ?_ "?$_&(*,.0A~!, AG*ha8GJlE%Fq@E钘jEĨkdT%OdK`r<ʚ"o˙ }>`2!QU'!YK19U9ЧTǮluևJ@]RG xFZw.^ `ŸjJhKac!kx1ϟ#o9 Dz>Va=Sۮ_8G_t'иdXٵN!,t .*gCG@ZBj3.G 3zqʅet2dDokIS@=})t>e2ih%O<`T`ǏSV()Ã]+Ng@!, .*$hpE^-*ā%TjŅv8qQ4 *ZtěRV໱Re]i[}eǒ䁅~,hё^ W!, 8޻\p_9ZVC 2\}gOITp廓0•`ƜGRUqJI\d$TECTWH8STI}z;&[*&MmgS[5ihp6\kuQ)ڹ S{lܓ UVZ%(E•scW HH+m "K_BxJ$Kd:B> !, o)D@14}%ꚸ@y#ҵ!vI>U˗LUV4.,X}QP)y`ԚǨ Qků`h9lٷri 5hǠ<97"E (;@rUE9n-0s,xpEA|yoO뛜נ7vsV/^>0!e᪚!,& H޻\Pp#B\JUC½DZ<@O}SꓗJ}j5Th_ [|ÓnRϑAKP.A)Hi])P)S]HW]v$hmܬ@E cE `Z9԰^Lxk}e[UyѰFx%#T< Z$+龷NxQZC\T}tm8Li<\7ʏc>{.m*P}gZ`r"eD{ZHdV7$ X'65O=@;q'(^HRZJ,X"J4!(8O* 0bE(I0|bM^tBYxQ@!,GA\(0@*(CR|1‰)}ީ|NUA1 Ҭ ;2iSϓ$52MۺK%4PD}DrypWo>`,}bVbOqΫ _sc4H >ƅ 1P@P[p.t7OǑ;& gFd 5E֜ !,5 HPA*\(C}Rp* [MXq_T:c*I*RJ,[(, UęN)'XL=4V:(URU)ݧ+jӭJ+PFNTAӋGI@I.ʹvm3®>0WcA>68!, XkŊ &Eă+^QƎ/qH 4yrI> liq&2iNBESO@]j_(LZRPۇRRM f:,SOVFe*)q@yu-yo* y e{<ĞCsÛ>9<@]8eáYr !, EP ڒ@\ :'CY1N'ă dSc@K/eE3(s&ˌѢ @ѕ63ZQ6CI%SʵjyWeڵ*W-qګm=x-#Λڎ|ˎY}$}~ZOޥL#cz@0a@!, g CY2l &N8ŌB0vGNYѤ>DYbI>7a"3BAS5jSo %E@ބ**UXuj՟e+UkqߧtcMT|Ex徬Ay%R>~O΋"F}/vY`9VcÀ!,  m:H‡lPEe0iEjǏC`Gɇ*4`%Ę2[ !ΜBFOZʴô@i*jPbݺҰ`lT҆}#~wFKV}Aյ+pfIUX+2G"6Y hP?8@tD> ;0 !,%c @Y rbĉ BdQ>[Aр,Y )$ϤG,eŘ2IFp}Y0QI|IˠyG :VUW@lׯNcM_P||D*Z4q8]RKv(RLJ Ys'b"~G @ۖ ohRm O2nZ ٴޞ !,G :p* |qDUPƈQő$ l2ʃ-yIKbp>4 g}V>>"N#yiVΣ[MPhEۗw xرB}2Pǘ6yGTң 5j >[v}!,G i-.#? e+P@DԀ֯7-V,S}a"{%kP `%KP/Džb+XDŽeEV0c̴6sn|5o>!,اj 0P0C :<]ĉUg!F8^1dG C\kʐDjpK}1?tSAvyۧҀO@Q2'U4 >P>+'5AT/a^{vYmź;V'],,\y-&)"AZ !, & K!64ĉxѡU5d@G"F,idJ+M@U"eF&NtϠBXKP:jTfū>Mun}C~*@ĹoF*kAb?==@Q%L_USxx_ᦏkdݩ3y϶ v邤6gԶXƸ!, 2*Á0|0Ć`w1A82lqȐ3FR$F'[R 51Yz`}EDzO= khQUPO홪jO@']nΛV"}:۵ZvJUOUUH(}>s΋t_Z$JVb˘!3$ѳ@ИWd@@԰z 5ڶ⾜pw퐷˶ ?8yI; !, e K‡ 44q MxQC}>>hdH Yt ̃@HzgH$[4`LЄk}8hНJq:gդ cMH`}zu> G$}겉O& ԅ@}'t N;!,G:0ᾅ s1 #HQ>=~G}DHpA*E~L˗45 `h%%`jO] ]Ou9*j⅚G]ǎ%!3,G Ju "dPA}FlcE=jb$;zpEw3W>-MGju;>fd`fAu]``í71?&!,ZE\/!A BG }!,L  ԢEtaO J\qĉ% ʛC 6T"I =8 ȕ["D 3" kyT }!, ܗJ  QT)VF "\qH"}V0u#ذcSXQYBl{g܃sկƊ `Fn\PR骘*Ϥ5FvAʷE+ <@%!," ܗ\x0@S9h7@5T} :Q`ȑ%:c}\0fM4)@o>w\t1!E<"]RR=]j⧧Zkb0PPW+]nSS˶Xim%W_^c~7HKH0T`-v8_o"Ur}08ϳeѪR6 `7Й#El*zluT >'ƥp{-vGa}2;Z8!,! ܗ4ȰB ‚uB@][z}'r%L3IZNO"L> (&O.ʔjBoR )BPY2UƖa-lص@qEhh*jW.]o|0ō雬kBȍ)O&B$M@ÃV@ןL \n/Y}SR6@eo~b<30 ӟ'ʐ#\y^Br;o DDv\x`@/'Ch-۲뉪hJ5}mڪ#.4վ/ !,, E*LhpCJ,qÆbˠ}2*i`+]$W4JWJ+eܜ,[3'(oTeWJ2 sL*g-SrMjŰY.PҭI\VR!̪ԮԸyj]-`|24u_bc5e嬠je(;ˡEuXh} RUKd@ٳY6}E WE8l)_z_y׋kkx|B.Sgdn;oAI$|@f>B@J~1'7Q,  JJǡ%f@|bN$>&!,1 (E*\hpCJpĊb̨p#G?(2aH'?2cK#̨+MPhּiPWN>w O"WKWчA*hZF_%DX*P[Tu@J&ԕҮ.ER.{oUyz[Ե/arF` kfD 2dś`@*A Ө%֚ >ץcŲ8VmMoʦm{>}&8}Ο{Ius\H}];Oώ~|yϯO~ " }Î7I$4->5C(Za^|V(xb#A#G( A!,6 8E*\hpCJ,qĆbÍ )p$I!QzTɑeFaNybK8iɓ.&t0UDB4cbz]cm}l%ݮ=0-y&`$eD2e^v@֥,Ř-bՊ:RUNf5vYh{nԺ--[G}C[`ns ֧owo?s`w$Q>ݹIx[×?sOlt3;g't[ya{ >ЗQ~~}dT jуx@|b$ !,7 8"*B FpÊfԸ!ƎA($HQnTEaR9fȖr\g=}ڢ*Uzx+}{\H໨9RxuaVU6̹,E(ݷW[ٺM]Uz=._\4.J)^\p[YI]`_aV( ERm&nj L|='mڒU>}u7T'yz {' k `T?8j{@CԯwWy:(rI'?2cK/'Ɣ8bȒoa͑:{ F, D SS}(>RժVj*u"[e:&@F&*hvELAVlvQأD.7ҽ #`zs009 aNk w"oA3MIi^`_Y5h Jm@y l(\}m8ߡO%ܹ>v D>:T}סs(|xf{wX=?"E<'g>%8`6;ޤ8Q{}B`(Ia}ʂ5<Q@}T@p@=ap"H'F !,' H (P} *\pAP # |HD):0F?[40ȉ$IT"ȇ Y\͂:Gh1'͑,/Jsӆ2::SQ+YTN1r:`֊UŪtY]TDow\R".FpbBƌ@ȡH>m1}'4S e>}RV-I߯ Mroh[Ie7|x_Z0ozw}{rM<ۚP2UTH4+MoVl؁HI=>FRj.Eh7^? Ao+N.߾w DxQ k.˘5CyQLE]!eР[ "osYPIa.Teehˣ đTztix l\>}5~=|1wo~`{E<SyGy 6`EֵFa^Q( r$rwÎ7Nj] _Gb-x(# bv9"~pd?Ln$Ja>vt%!,/S HAy*\j#dȐ(3 E !rd$<^4ieʕ,CLL53 r'O(K)r&Q>EMięM>*u˨UO^:q+ׁTn*6lY_ͦEUm[U•zZb6kߪurQv81Ϻ| )I1(,9wnLTBƤ7Vz昫Y~&í]7c-g aܧڗuq96wNE1>[=gή<\|ͣsǟ/},~ ' |xq -_PXsᆿu݇ ""݋0(#v h@^"8yy(d(֐HÎ\!9$,i(Mz$ʕBBWV㕢dϘRR锐`9@:faTtOy0ϚcyQjWg%Î7ij*K"8r 0j8 t}A颵j*Z}Z@fӇAT;P@!,=Z HA)\ЛCoJHQ"R2j,ő C"HbREYɎ)Wʜ$̙8Gfi3fΟv<(Ρ<ҟM>ԙU=^zP[+:l؉YQUI6ٵV} 7ܦt,uT2 bǻI ͚pz\W2eK|_~&ĥ*QϾnmsv찳_~}{km.xW+G>UyqO~}Tv]g@ӧ}xKy}Xq uu_s)wAxu-4aq`uHva%a{1"eHb]ɧ⊯46X"P##^ c=dnJi]\ACX!hoeLǍye|cYd#H#Tlc#)']類9矀d'}6"m᜔).'䤔iiwf8qJZjyiު*Fd@뮼ڕ$ʱȊ2gl ;Zڳ+>ZEdVGg+.An*&n˺5Үxmpv(B LpaGL S }F>1({3;0,|2x-S>l_(,3+l@-m=/-}ĹOЬ{!,Oc HưÇJHR3j͢Ǐ7ɓG,%H#YIH4s"Qϝ<33PH84)ͥ:u UTZj2ѭ\?V s,ٙf϶ (jln\sB!`ZL]1H"O^ѲǺ5sEߊ>̥(K4Ԣ'[lݮ+.tp}O6~am77<7ȟ+9͔w<?oS'7_~hHpzg@5G-xoqSex`XbdapՁH#kyH4h>(d,B㍦8$e%T(KHTB:Vi%wPUYtAdi&~uȦ`4Q $gM7ypH>S߁H|ww(8ј-Î7 شӔ_>@7ͳ.98HP6!'_z@!,eo H*4譡Ç-HŋKiq7 CرƏ#Si$ʕ0c*l̛8irJ} ϡH-jѤPg5ӨX Ҭj5WAmفKYՊe۳qՖ[ݯyGtp_%ƪ=:*ÖRNjsg͛zVbhI2}ZhjҬ[|9웴;۾3ݼW $_3sS/r/d78\G}h>g >]R蠁ihD("n!6|Ȣe4 ɨ6ގ@B;C"$c4$I#M:i#Qd}q>gdb@e2yeH"p6 lg's9ow h'z"9i^PvHi&Mi#*$wnb'ꨫY~Ū-ȯpW*& ,zUFH~@JBԮY^f"ڞ}ȹ2nLz#^Yk^-λ"nY#8kl0/oᶪwl |l(|',#r2&oZb,b33=4FhJt 04#}|D\[/;^a` Rb볶 =3r=Ԕu7{uA}>8Ѕs88?xULy_yw-<=;@.,>dSD 4#z뛓Nt:D |-/@O !,zy H*\ЛÇ#JpË3j8Ǐ KqQ#G<9Ǘ0c2Lcʕ(oiQϟ0ireʢ&Sʴ£CE™i՞Nj'rdTIuuٟ], V-زg㾬v*U:•Ѱū &wņ[{Fů/?_4sG@#@π\"HA .È"U8D M{aV )mXK3 yV~C$`wC#&0?&ɉH%ŋlsĺȐġ (cMľxFPHt#GfFr!?2.$69~Ӝ}g@JP~z@'PӠŅ2Tޘ'B Q`i: ы)UH[y4!)MiS)B9vxCRPvejBOt@HTBUn @'GTzNG+Y ԁP]+WZ!, H*\ȰCo"Jȡŋ3jǎBVHɓ?~ 9j$ʗ0c&rH.eyO< 3dǜC*-X&MKԫ:i֬+O,WZJӚ=-ʐimZ݋УOz x-(- .0ZA㍲ln6"`;mdtbyڵk4mXy|t5ȱjn.vʧ7uiO,mzoOvn欭ӯ*m(g\# (t| Jl9aKA$sKRtIQ$#|uR(Cc8d7Ԋ;(Em {Gd<6@)B@fi (ߖ\"ea4&eD$`IP@p.)u9FuxyJI9hIy(IT*F!*g 'y) *(y&X:iFꛪPi\*k&l KlA;PVަ.[k*m eצijqRgj!rȺ+lʋg+ (k lHyy6ݽ.;pFp"`|1A(Li|'A b3"D0s"@5k`7Y|`!HB )IAo$PY"!AC}!o0B$>QDWHHY|P>Ȏy>$ƈhܡ>nX-Њ"je|gd"x>&(u4WGAnq JG@!,;! H E *\p(PJ8bĉ Vu1Ǎ=b)#QBdJ-U4Л̙+N A T>7lgʟE gQ 6šuV]mslׁ=oZ݇T.[L%r^|W$%"xw%W^sX͙-sia!My2g&zָ/N:sѵ%.:hqˢ>MZr͉?tՑ_מ]yoaG^pz}L{!C7tH?9֟l (`p^ *1H"&IX!|>` VȀx2 tDy !#"%d!BHRȏL"BDIFd!4c!O.$UZy%D$^2B!]Z9-^8e"K" R bLwhl!BwVZ!@#l3HzLy2Ȁ7G3Ц 뮽,¾D>y>:SD8B È'!!"}3dɃ\H5"JgOMxTP}<9nun>7˫7\UܽG%uQG{v?woT>tE{_jyg {D(2J8癃DfXMaK#:'Tb+Ӈ0R(X4x#%-ңd*hFBh!$L:9%AYii"mѸ`:Ș)19Йp*)'Rl^y'yAtg^}9(Ay(.jPh:REi@:&i&)i[rJiVȪ*z+} `"|vG}ȹ{PcGn{ֲA b#i>6mAƫ.m[o /;o2>푈 <KLq"c-B,b(g!,˄o^)l8|!w,QдtALG-T3]XGKsy OĴ@UplyHu_7u]!2Aqt'Nwߌ73;x,>p^+褗}kx w: nU{ݪlnPxd^X|;b5}b6eO/@3˃/ зP~>&K~L uIq!NgMv H@aO$ 1,KUȠ _X6Jf< 8ᇧ>\UMST+ B A6}b"źA(D>hźqUggh$ !,}r H*\p"J|hK"-Ydi1G5bHɓ(z(1"Ň/d#SsJ-_ʊ9f͢H\ʔ7Y/'>(GY5?6ʕӗ]N-SPCfʶJ`B*ݎIVoǪŒ(Yv&دOkAE#U"gC|ZtᐈϒY&I֞a94Ⱥovo:|*/ϼj4oŹ?]b[k>;&-I=6=8[lqW>qQpxyځ%("W> Fyhf"rah`gg'Hmbgc፞˜;#@^D֑9(8:JJIJ0ZZ~#(BF%W`Z[V%9]ZZ6I'SG\"q($؇M&9F薢,R 2Yi)\rJ%jJN)Jzj'ٚi9S+{$j[k̢䬱>[VkҵF;z[Rbb+ʖk.C躪n["ʋmܺk/B>;ﯜڮ4j¼i = `L1C |qƒAz|(+(; *˲o3\7r;Jn 2EsJt?MҽtȦ2Qմt[szi_Ltfݩo-um6ڥ8](eswKMx܇K6k-vx7ȼVuMNuYzqwg.2"->czË 8u\w}=Ozov|@?ͻ~#>O. HЇڡ΁^Id|E+a [H?v&'^ ~9 L){LBAu0*̃GB5 , }C|C/~=d"(qRC#O8ȼ!6‹$Aծ8F*sa{o装XGx+]#h{[" F. 1;3 {sHH.d[$*D5X$e)1:Rr@WЏƫ,ow|rK&}<xäeBt%S L]Rff+]yѬ MI<}vt\YXu]vز[ǽ;wXoei-xoM+Z4ʗg]9tӫC"RI]thᣓ_j>ݿo;z' )9~"UX0!螆xh)H2(5v 9n =j#Aft#E^$ IbȒKfEOS.THfyГ iЙa_jhpeu6t'j Ȗc~j""0@}(;ЇR*ꨤj6R*+Κីr9(諠6b^ lvjQ{,.-[ʺ87&*C>FD/ fKȴ;P/;>`?)"yT*Pg},/ʂ D( OL(1L@@)!;l&-A)/mNG-TWݙ/t]{-ap]y]ډvl]i%]+Zg˄!x.1?.9OxԒ!,RO H*\(‡#Jċ3&vKǏI$B&SLK(_sMjܹЛ-@ JtТD"tΦNmB*&ՙV̪U%׮&%حfzM6,۶dXvnɺvA.h}?."#KxEŎ%B q2e/?!?&(zҦQV ugךa_Mvdێq/ֽXi\\xACO~z9s.} }gWsxξ5}go$sϿ Bi d(GJ44F}BxڇA,B}uh"&E4(^`%" &XX#ȋc`h/ J.Y B}n d̍et^hyerIP@!, ܷH P`&\0-V|x#E6#!6bJ%Y2ಢhh H>{65gΝs } \J} (C>Z`^ؤc Vim>hշO6v.no=`ӗniPW}tQvUD%Hx`:xxdžI]b V'bDbaHB7V:y})A8J.Yq"7Ri%MY!P6e_*odåRV>A%mnه!gaN"yg#[S&H#(Z ڝ7"礐&:'JnmR:評.y!zGJ)&٪+=i*lBzJ,Fr m+Z+= ʚJJ߂kѨ&Z4ケ[Q>; E+/P&믹'&|n + $,x1t.;ƻ?\p6r Z-1q.'A-rVm2gӲ1mp\{{EhY[nڌLoU3 ܣ.m;1qW}|m@nx">w[+Vn6nܘV4#*z^o:w٬OB UO6 vJ4Zs[<#ܤ ӃׯE]f>{Sg< `GO{Lg>MM"HM_2A5 C  W8 aC8̡w@ H"DFą,MD(F y>h+#"EBab4V1Wdc*^1#$Q{c0<걎yH iH},c$;oQ*ґܤ$y},"Q|$&&.qqeH4\${ H@!, H*\p#J|ŋ5ȱǏ 9 IP$I\y2ɑCʜIfC-SdR'ɘ6 gΑ=U ӧPL%ӫ@j rѪK}ZɵٛJ^UZrge]q/um`-<}cvjfZc75r` RFZov[#_]8[UrG!~5Us}$YE^|,wKiͨj9(IȐ+zHJd')I}2'fme^v{$>9fdh&iIy|htWbwRO9gj5~yrYiRzb^W d29'f[/EA祆ʨ4'њIzJ@٫~:=f&,{ѨDF+e"lfY3:i[V"g Y"[/s.Fn ke/n0C5O(gIz\Lʼn:r*uq Ƽ̫\:C5bs L<BJ{sOϤt_TPZ1?;uACkmS Cl5mnFQMwv,=ܣ>kւ6vg>Qf}30sŸS]^-z!оK^㣎Nq՚ós,!~Ͳ3#T:w.T#=uS;<+?'ڇsb}]oY3[o8]?|^O3wh!0[Z-O D hˠЄ(5B0<APݷRÌ14!ȼԬ H!"P" CbPXE ISSEu lM ъVV:fm2@8Qh<3#@lWפxDXz4AF/!TȮL^#>J^ЊP"eIK1L'Uod+6)C]4--G]$6[ y2>aP2OJ- &ކi76"FUK]%Qʣ<"ȧ890bј$[E[6s !xxϘ.˧D Qq6.# G"RC)+ZщDJ':D0JQZU8J+2Ӟrj@MR*@%iLe*|^&%"J՞vX1Dg"WM+VUnLɂqE׋NT Q8t`G>D#d;S ^eE2F4-[b"ZV*IC죬vZ l61,-dYk\G*E+*4,'6>NY H,[ej{P. !yұv})ϙH]-kVzTC$2xYٲY'[JDڦ0@|kv 4&r_[nxDl*;uro֢nأ o7:ؿ%laXOEqWY[\+;qeA@v"zR$sYT@ <9a.,+k-+":x Ae=BxΧ@B}6tLE:͐64mrJyO1K+Ҝ&=PGe{~MTհgMZYuP+Z3zk`$  aCfFg[vh{Bro[VB]no@V7A=s>]o{7Ao{<&p| |`<` xlv<~Fc=,-<| vA>@+;އpH  !, H*\ȰÇIHE3jȱǍBI!T٨e#p,H͛7S,yJ.Iѣx'8o._ի GrOysHKXӪ:W0ͮliڻx$\rnÈ9{lEgKpqc ̹󾝖/س\jXؕ1Ȍ`:=WȿW2FK+^gmњ7SNt3Nb,^c_-Ȅxt6֝hvxPc[_k&8`cț79]oY!qy(]X&bp ` /_%h9 SXAdE^dZ=#U$7Je nD_gHfܝy&]^iM}rٙ{Jyh']e J(l胋 h.F(|ZۇiśZ]V窦5I)kYM Z䘼ު^lbvܱV4+i2ԛ+m^)k9m(D.Q"x.*UnUZ;/kջ,V '_%pQB-6Gz`wܯ|,2Nt827jH"0ׄ!y䱏!r4}H>'rVC=2G,5374GjJms$b 94 v&\.y}6JT.vC7v#5f My$@4߀g$8QrHK]#C%ԏ/KʲЎ23:c~͆"ȽR1AI]65;hݬZKG쳿z#ė-E#G" 23w]s t%o)}UΛ=M3ʤBJ`7};ߘ DgmC`(A/~V`"9nYvu]3I5 *}R+ Իa'; Qr#`7;yd89u]>z8)QLl"BX(W\E,B c1FtM= hDһ8 $!xBq#BǞ"!GJ* ]DdAINvҒdEU2T(JQ!-k)\҇,LwA B.Y޹\&3AjK%&DD1}cҘU"Ҕ4$/9p2B5]FI鳍fңH3HB% ·Ft(NfrPE5tPP4, NyT@Hè&QOԨLSC [W YTH6uHhv#DzIjd#c<rd_ SC_*ˤ zSLMhw_f%HEU勇 cT[U`>{ӘK4g2JѪYhT HYn|}30`?hAt}ms <(&5m7{γH1+KgmDy%swַ vۇ {C f6ͯ{&oh:مP c ?_c.~c.- !I{R'^+8U9a0},da8}-NFǂ}^ x=Y4 Pʽgt݉a3IL% (=$RXV,]^<t-^ڕy[1!3"\ ѐ4\X-tr:@# mjηkA.0>v iRjTY'D҅7m{ߏ~8Qkd WzGb%dDS6yy X|47^( yHU/-ǣa,} _:#MpV&B Gs}!['H{v{ exK\O_H;T&vRgnbdQHܗq]@?Rx<==O|Z1CJk4ѹ ]3SqbE BlґBjՐw#w#<I_kEO7?Pۤ!OAϿr*wWrU7 UP Gh5pEhUN6{gs~̴~7eP!#$(|(~'H'xl0%8Zp5x9^0#8688 .xY5Jx?؃PS>xVY5P_'(5x7X elm3tIX~H`QY`{xܑhh؈(h 芣 n8؋؋x(H(~ 0Xޠ8sX(V`YX`H`gpx ``x  x``(n(!, H*\ȰÇ.Hŋ#jȱǏxѢ>(4˗.'I͛F4(a”ѣGI\ҧB"JFp'eԘVÊ;EA%˶mQPcIԭݻNk]+E+&H^KÓ3mT0ƾ5[疗׎^]UhԖ!=pPÖm7Zy m^Ó| m7:kd 7~Q{v>{\>y~ۺ=&w\~bgv%x݂A]Q( ar ҇ ©hɈIRpu蟏#sDf=&#:)ڎM(bTwef.rb]JdӈM)qfjn[YћwY@'Y SY2 :XF%K-giuF(bJ虎5g2ңPq*"ATjԩWCV7 {kf6 h2ҳ2UR'&"TuL6".Uz&b T{$;X+@p½!Dqo.bd#\[ү4n|=V|;o|cLtG, Ǿ{C4 "?t.P7 c˽Ra#$a W(~p -c8CÆ@Tac(ц"{oDd<(Fg@-n 7H@1רIMnfs^ F6bL~- Q u&4%IB$L]RC:1d`g1uĆdR+G4FlhL(B,9IJ;ҔJ 9/e/aP"PX.`\f3=; Ou0#!_bA>Չq/IՍۣCrS&=*$/5y }YAMP\FJO&,'G"vH)@YNs/ӆڡ/MӘTd"#pJNy> *gTөe>BӦ:ԟR?Β"eOկ0G-%"T2d+ZSΕLEjQsu\5jI{TSzիYI dBZVtf#+2}̓f5KCpX W6QM]Zv2 P[+] X!hGn @St}5eZɪRnm ,^^Ve@DFݘQr`Vr-Zq^ Bk߁w@@:׺ҝ.Y؉LWs҃,֛1{+|!;]C. ZLFvG o|`."T/a!Æ-P#-a%s!! J5x8g2"=twR>;~^i˷ `o g;{z3CLQԤ>A7Y)5CMN7ZG]H i:w.>2]8Ԯ.H}l8:0Q=9ߚ굵U n`K AD FdXn7EjyC;vok6WwkrgذMyp;or]|消@tPǛԁln6Oa@e])71m2gom e69~e?zݽzϰu8%x+ކ(yg~"dzޱ_{!Gz}b{G~UvD H]\VWc~Tk wn7aXyK7u>z'|~~``Ff s' 8gy_]cb^zvu քx`}TfwQ'z;8u5(azc!GB7fzazQ؂Aqu~sU}Xp1p<WP}&f8(gg'w'{&nW86hkYwu1[^=7Xxl%Wm 1gEl=v$VTLJZh;؁!(3d(AllAjזrW{h'؅a=96'Wg6&jr8o^טzh}x(X`>8QUeU(oXxjh88`ePoq{v6Jfx*9lj.0WV)U Qlo48l`o>@;9QP gЕ>IU nѕh)@YPf)og`no` wzqw f)0I C)@I3zYZ!0 igɗ `ziV`}|ٙ?9@b9zy4Inpbi)ndy p ԉ9!,yKy h_A*,x„ 2|80"}e(|X0#Ǎ=jtPFF"BSbJف徘2]A7y"rIQhLysPO* g©C:P陇v2MXf!, H*\ȰÇ IIHbEQ)b(GCIɅ,z̨r%Kcj:먪`JչGgvT۷4v(eZ˷ë?e}QSm*^\pݥB52ˋtI7•b Ws֞AQ4`8խM0ڲe꽍nȋwʷ&^scuCHIυB-1qQǽ >ϯqCWz'a߂(py6 1h!As5aс|wᅋ`|i_b#.XbxfY֢̩5ަD&# 9$)$9Y!FVeB%W~X#Na Vy&Tqߎ]gtƨfyf&i)f^f\|sne~6i:6+*lkbmhƎɩO2۬)V쵊[rdK:kninmFo/0>'<0n-/ֈn 3Z<o|@vQ J{rokL\/33\Uʊ\4묜+;lBsM\2A&M*^9Km>Hk׼ }0b#qlh=ͥJ yȭ4zu8?Y48{xj}q11AS>7pmp#.I0ꑯ;Yf~ynv輓s]MyD_K{H߇t/_we~{oG:~N KG"0!>/j_@py`=v8@C<|!׼M}RW:d]̷4 Þ'ܟp!=\_7D/(*Oj/6!Eq!I ŧA.ehpxcxnxcU8>8 =t I< r! H6Ozӣ#8Ɂi3YA$0b'Eop\8y' Bd%O?8"GUr,E IM߈EfQR|fyqה9 PLgLR$$@Nwћ'=yNpSx(>Mg 0ԈA U"dԢA4IL,ETy(HEE,&Iњ2 xK6OZtO5hp*T'(Ԡ`\ 6Mu*KS)xU^1ZW:U } b7ִketx\jjWtUիTު y d ʯ&VhQ+WRd v㲘m!RNAuE;*NF ^ѵydu;yUM>Q%ZXZʥ s9ZF֥VЂyu(Cq&5>zm5^ZuCެ-W %XT{},F?@X>a_B45<4[{X5,.x@٭I |*>@Y`a Z:U%zL%8kX  6paeWJ6JI=>` ~^<^ %09Ђ_ld"/>(>gx%}`"kY8h*. ,kYԇ37it`pq'-iCr63EV(p`Ls?;OCzε6/Miι)k!ZM-nkc{[ v=pg:;@ a )mK[򸅝eyv3PZ _[킏(߸z6d9ey \nq yɎwa %Np>(qkF8Ƌm:a8/n,X8\ o:5zB 1xG{@!x@@,>Gx)/[o< BOz/`@Dn=fōrG-ZgLoƅ&Y7{w|}+fl^e wq3d&z8ޔ$^sp27w9s.Kl}޷ Q~r=׀&| XFvso]}F'i} o QQT1~*؂qP.f1zw7hnlzs7.~q0x1~rI8~~+|,~oLl0gmօY؅1 vNv=#XUm(QE㗂+~vXT&8wh 15ek7}V'ngGfЈn:ׄLx(or8E8*HCzwpDX{xvf0`\wlzhgӷc8s'AGȆ膲Ȋz 8a8[vwWv j0`jd U~8q(טX؊ لGq mZx6xeHzi苊Xm7VEN)Qi [18Ȑ3)]vp=Xɑ(Y8zXxseg*^0OV(鉜}^ 8g[h@oGsK"8sVُ.,@.ey e pZzoƈ&y悤GY/Nghr7؃&ɔc{ yO`YEH3OX Xmɔ=X9ـ)Ul`frpg)) K~WFڒ'E gp=ؖ$HYg`ι !9ZtT~01jl I5 pv) y.GKZ4#dYLʣ1gj Hv`qK!6N^&-zM,y-Țؙ7ڙbڦI"L}٣y3^2^|JI( RfgRvTtLwf*Z" 8*`x9*o苴 nꗱhlFтkd^Lg2>ڰ8Wlr춮묷JR<) /EnR.f/Z;뾁;/"'Ik'V"*q芜0 ;ڜ̎Bh-rK+>8,HLp2^ mxC`p qE4CMps_ Ł,[$(8mo#|"ؐ%`3`–F&j&d@1oJQlzlc&E T!GDmU3P)I3Ə$Lf$!YAIz# mCL`+sJD~YK^B1k, ^:sJ"L9όv|ǬCNkb|& oS[b'5gtj;)OeQyOQS<1!-DGɳoPzHnNT>0 [(J?R& G9əԛNҒrP|4Mus:(OaSz5,1M&U2P"$nmcX}uwMfGKQU,A'l8QVfx-iВ~nGk7zpָe3ٻ=ͮvzn}mQة,IyL(]w-TV3CJJW ;>$s lą`%h'|<<ɬr5X>$ X^OrS/=9ʎX,ȐW@#9HDZ:aEO>~;)SYNW7 3>aM(rʶhQ,^U3"N>8,ukdg92=Q3D']bLyY4%l+Aˌ^i"j?ڄyjLZ hZjP+d֡tZ35j =H@*;fNf=y0![|Xx={㕽8ENaG E } >\.ws*1>1@]|wܺtNoL!!4!'b.> }Kg w6<,_:ͩއ=:|{_]v,;v~ VӴQY,;]wY_^EE_vҍݯlkg=/s.GlCYΚ%ejʏ~g:{wOβ狭C9_9ߗ)?ج{'?oqVp&wuK5wz7wvGs{goWt3sxgnsxp'i!(Wo&x"6*7mCPFtGo(6XE@WIgcuL-ssR9Ȃ' Vg~fb&taEnVh'U?7$j+2tZ|*3Mֶvp7u 'oHq)åKj݊(Ċn9uL̥r]˶ȞL)W-ۻP&Z..[ ~kɾX(ȑcӖō3||U2k+ײ,̚S\sC[׽|[귵e ?xFot& <ᖍKGjα~yweUv{O>k[w䉳.\UKyǟvv7т -*(,vhqdF!-saxۊˋ(R[]8⎩1m($E6 9$ iѢTVoZpDer&c!ʜ曂ytFIa4]g4ܹe(VR )wF*V h#zmB(Z+JjZkrg&:z,QXVi@>Uvn+-n[S碛;Tז;/b E"pP[K6lS" ӴcJC <2(\qǿZ, )- I<.͵Gk$L7K},Gw !vmr3tӣ,5 u~]*==\?kM!(p=6L ޢf|o&s[yS}C."SN8n{㵲yx3xҤg޺ۯϣ^"'~;]<)|7|>iw[3>RK">u۝,Î7}xFApĆ>M#( x&gc A0 mYLj=~.`70 eI# EA5aSC}vF.5tàx:uŦMvqc۳i[d}d݉{ |%i᱉OyyiE:7 ztG~bSfQO<^}Do O>7Pv}( Eށ1"0"{ ላ W 4"tbSЊ#c4jx#89v"#A^WAFֈ\YK$#?&STv[Wflq饗`9&oy&ryc6҈ho#8izgaF.2(m"*Oj裐)sZL~jڟ-3*>zjLjvVx۫wg ۫+fv뭲ˑB([(Jt>+oEޫ,l' 7,@y \܇2l)27 P<.s7 M4yJo,51;>?rBsN1"Tq}1ur+^ A!, H*ưÇ#Jqŋ3^TȱǏ C~,Eɓ(S䨗X SM4g\$ϟ@J9&ΠPJHtL\fW4yNKjգWSks)ط9ŖKY-SmN}Lx]LK Wk֬^ \2'c2]vK^s1ɷ)͠5oר`Ըb,Zbر[{r@w3u8ο}%8!-/tͿ3'%>}B۹Ӕk:ɗ['Pe|t߂9dހҁ\1w2"y#!$(zug~(d7aR^9bNi6#׭Y5![J} _>J7$T-cPJIU^%n)_֥wb)`l)YM`vZZxzRUG> J$6)K696g#bYucaq,fQ54إV*7)kmɊJz> b#[\)墘6ŬLEmڢq›bnneP~Z\3+&{TYy"De#^Kpx>odѹ߃jqg\ҹR<-*[o tHpts8l)AeYŋE!itaORO=kYcum[v&b؆XTv]j(ncqWSYf'ً0Tv|Gɼ|ΛS)Ê4Qdz]L?|3Inx!Q o9BA|$T &*>/{(Ƞ`1Nc 90v^2 yH RL$G0e+'9/;%=ڕ0fXBb2xTQH) R2U&%ǧMR|#)2ade$N^} #T,* 8MrN]<$)ENSߜϹ5ҫ g2~ B ј\e/ }烠C5O8-aCCrMx= |An%>wJ? -"kd*S%ƚ.`eU(C|*VZhѫaXZ7RirXӞժ{uj_z]J(%!XBv}*eb8ԬP;ؙ5hR a6O_`Fx-=?|W+Gre)+{]ZuU.*˰>q1F/?j+wZF Bl[ֻeS{شj׾s۹>T >0s7l-^EIA) C N1DK8((VY@@AL v%@p=-"Gb9U&Kr.0D" ?+_#s^L@t3!%g@ή"ҜBoImܞ?zb$t׌?[D3 h.[%"FM_0'LiJn҉xekM[ZΗꖞKe}7'"η PU DVt,k1Z NvBɑeTŋr#hH # mj^y@HFAooۛ^]!4n܁2M`Z"危{;x~*G{pN|e ª2G~F%c0W8-2&y^s~@Oҕ;1̣NoO@FԳsǼM؋nhzս{=2rgH=n-^m BxsãvӮ6'o}yb S 2tC~rWԈ!el\fX -oA!]BxOF1em;ܭ=M?ZCz>!ګO 2an9.~ɻYz78~dn{a6Wh{q&y7l}?FyG{7 wts3vdw'v7dW|x7(#HG+I7uzvp,8lKxQ7vWrt'WZrR(^(t B6wwsc؅Jd8tXdHi%jWv'qBKs3GAghx8gz88޶yrRh2jrlrqu(qO8U {Xl|@&pMx(huu`qQP~Fq8-LqWFDׁKȄV,ni犴(y˜!x0'i{EfWlwheXe~ǁ茔'yo|؏ k}Ј/nhznhԘwGzZKɍ9W֏py%7Ȍ}hm xq4nfwwpy)Bo"iz,/hq0j8x߷蒣'kُؓQJW鶒Nyed)kXmYmxyZr9 Tvyxz|ٗ~9Yy٘9YyQyYYY`Z1iyٚ1 9Yt9eY@da 99PP@yϙڎ VН)y9 ) ݩiI`il*YV0ٛ`eP ١g `ɢQn0n 9*!, H*\ȰÇIHŋ3VȱǏ C 5IP(QǒeIǛE4kl$OE JBp&OL%̦6oDğ0'ʵ+G$.m ΛO7R5"plQ(Em )NU'۹L9 ̞|Y@kJʆ1[>̹kA5A_n[M۪UϺ敽[.Oƣ6l^t+ץ>ιg{__w%UE^~bY⑩f&_9%mW(ᄤ?ND^rjBD0nȥKҙOևnۭamεZnq>r䮫mba֗^l^oA2 V mÜHo…Jfc\enLTLO#')2b9eP/++¬]{$>ePYI6W^VqlDLn|uAۭxQ+ 29B BZݓ ,(Bz!ZOa:"ɩ7ɝƓ!X $''{ꯅ_ |"H"Cj|[*:;H"`wCkjbC bhL"嫟6|r\/lFAb;G#C{yHDԢn\(Ê[E(B}"$L r[|#LIt")eLgT]tLYSn9  GjB5EGh]4 -ͧ# +N&~!5Ey% Ȋ>!:VNR)_&VCk덳MV&&5W/j,f3;+R]% Vxb9Y,i'B ejZ޶ֵlgZ *RUo [d.qZBXkszw.q_Z@\׹-s]*V%-y.WaX dM@޸ut\@ +`G80qyfXóE_5O*v1i s. tHɾUG- 8#qX:٘58ؙXD.rB%  .eL9!>-2ż6g}n}ٻ_ÿh tټg7yq3 ,W;ds݌’ pPj6+*I vYI\zy&vÝiڮ^+WuHfmx]aZTʴicrYn{6,fީ>CNVS Qu3^=Ü'x '@nҸg%GyGNaS;]O]<ùմ!nc“r77Oo"}=z~ObQLdXΉەOv_nc~?>k~uqӯW} ð_I[]v3oib"6B1zh(z.7}8](fyzZx~O)}!j<|xuGzw3wH؅M](lZ5.`]҈Egrm6ȃ)88h~nXȋh2&h(gh ؏}yc9.~7ֵ]Z],8A9~(`0df()G[WBZFgSsUE]ʵZЊh'Pr yx!X5)(sh^e(<)yr[ jKYP9֍Y槗SuҸ%XigG6jR7jJڸiwh艞x{sh+YII'~h|OوS7  [9͉YN|WM(x؝~܉wRgSȞ{X |zI|ٞI&JI (gwIY}ٗ5zV؄ .ǩxVq)zj#)<Ȣ[\ X~e~{4 )>`ZIl:Y*9 '֕ee~yxggɜ Z!YY.9m,zQ XtF: [fnIz2Qx]@XƚѶڬ'js Z 4ƚ_#]mgo*Iժ5}pe:~hJ~melڤꮚ ;'ʕjyzizk5rJܹ ׫wy|:!hɬBۦI'ʰ*,fZ: ^xj_,̚욲% D*M7^rXƚ=k窦gkJLj. zmR犞P+zQKY_f@;[ ˤg[ۤdu٩Q:r;*#(KYkp*l OQz۸iV٠*o Fc빜eGՖǫ}1++i {[*뿽 `jYժ蛾;\r9ll_^lPl<!e./&(\*DA/ 05l);L#lLLD<0gp/\UM QXUL|^qb,o@J<gil`t\p`[u Ȃ\lȎ9!0 [Ȓ,|\lV`p,&|lB\~|<\ɲ<ɵ\˞ ep0, q`n `Ĭ<!,I$ H*\ȰÇ#2d$ŋ3jܘ>|Hɓ( zdʗ0cr$M3sYG>y J4(MD*=2(#KJXөXr4`ê+";bӆyٳjf}[r..Ta-xlD +>8q@#HPe@1R8󀂝zp脟 ʚ떮 .do ,\xdȑJ2УKNسk]Dsw;~UO#Ru5{qF%{D`n3 dqv(y!zhbC $bB)꣏7(F/H<أ"cD3LbXE͌19GbhY 3ccdqɣmy YQ`iņ p|~a)p*ਢ1@`|@!, H*\ȰÇ#Jċ3jȱEyIɓ ADɲ˗ UœI&F!mɳ̞@ĹRѣ-"]tϦPF|*ՏjZ֯PqKXe=Znd+.LvīH~k,ĐY +H C0$c,cΐ=,ze˦ kN=+kʮ_C*0ڂo{^5ƏM<-ecC[z>~z>w^-jE/U>!V-߀VywȁJ҂ VȂ FؔZ!jU"$RG%b$ !"P+"R,8Q5xN5Pb=H$PFSJȢMtȐQDa:]eM3%a 2&/x&.%-&'i&,9'$griZڧ yH5*)Iz)ii~jj j Jkުk lKG!&G 4 --١Ƶdۆ;k>ڪkno⻮@KVK0"km2\npOlK+"23/2ü7+l.#+3ks;$N=M _7<-~tN! E6„L 6p*d@L68̡qAf3\B#V8C8B# ZD#JLΰ,8H"@7E2>82ȣ>!0 d<RRb\#y]#cJvÈ<Ivg>H&qd;#P#:#3pFX. 3A8`f `7l+q.!, H*\ȰÇ#J4hċ3jȱ#F,zIɓ ADɲ˗ UœIfI6s'ϟ@w JhˡF*tӧBJԪX^5֮`~ K6زhaMeȕm )˵v^īoT~s(pFCDqL#S,>–3_1Β?v,zҦ N-kŮ_-[0~o֫{޾v8Ə]<-eCw֟bϾt;wS,l#Þ眞?Cߵ|Y5T8SHT ^A%E%e!!vȓ! h! %)H2uH5tc?N-SBc4#%" L&d3=90YKZn WzRb$!e$H}RmYqIvg#gG~QfDhD. Q:i MJB^Pi} @Z*vG!::24kҊ+Bjء+ JAK"*;PFNrK+^[@,Β{."nn [.ok-2 lpkp c|,B\pL,#|,|(ܲ*jp#ߌ"@B*<ؑAo@0!:@v !T0/3dK$` a!x kU@3>hhW_Fx `\Qh !,VW dD>6d!e64(q+*Ƅ=~LMƑ!BPeC)WŒ K+mSOuMCẶ/xkrtVɹ'-š,|“j5HxG}RSUb'o`P+G}bs"uڪ912soHk,73jբ@vL >m]*.  ѱ`xd$s颀:z]ԝ#R7y-?e_5!)ҕ0(+MJtPfޢ K}}pj`2?S'ZIpc׶hj"k9 ;.w>X _k:&otBDrTM鄸ڜQe) LCXocGLq*lp߫b.j9=;%,ѩkƃ' ڀudvZݭ\v52M`XFXġ?F-&")l܍iap\ #$}o>11C+hegl"[َd 7~u ^%axLqbʥq\&^Yh|{EƂ%%JMNH=jj%-uZiM~Q⬔1(>%oAPe3&ԵM%ӂEXYN ػW.0,XVn]b4osT#D% JκMiQXb,N2PCRj,_8>-XHTosk_+H(5 >*}sE;J~6-ekZ0֚kAxP|0JޒbݚSIKJ]dUtež,b6JCv2a +`(֓k=ڙ~Wtۊ SA0ػ sؤ610wW)( Nt-]5P2Tޤb!G8 WVo*-1ilϣ]}r["q֤T/,wxAY2w{0_(u*noc.-Hs&tbC{ YLտ4Ԣ,9ޖLa'98/qe|kF$NWi&XLGW#wQ+wtKkrrs87sWn(}S\ z GaXN73cȁw}T6zUAgGq*X5^#/:]ƀv)7&XFuGb')]$V_L5xUATF axUYsp~yo43P7lg ȀBuYsgxk`j4u#5yVQ[ڒU( |ne(^nGhU4L8s ~vh h0yV}w8dX(51֍ (Z0!xfktܘU'zI'rՎy}( q8ig$BYxȑ}|oHCחhiuz"HYwGfh.ַ_,ɒQב0SNh#x'yPzNIvv sI)LQ@hiSrxoWN:ie dَ8dOiQnqeÓsD z9yRz97YL{T/U &s~g.)lFP8j 9yTfx57I 7:Yɴ3k蛿VwYi8ƉlQÅՙ/9PٙH0XoչPI9Y= >Ip,JqɟeٝˉQ!B\Y!. * JfR&#J)8ȡ~vd2*)z9;'sjC pԙ@F޹\Zqu!٥ll铎CVIxCeKy7+j_*sy;{ ڧxPXȍvZʈRd)]]xo 3} xYȜ) j|oԪ(s(eJP‰~:LyJo* ʬy`٥ں1m˘}$ zٮY~)l: Z6x#iϸz Vq_ GkL 3z5IyɮXڦ"[ zw"X` hkH8!Ȏ h 6 ʴڴ){4ZiDˑ\8Mg^jl}*jq@`+u۴wy[{0Yj#(zpə˥PиKyKx[[ آU}- @&z칮ZK KvK{؛ڛzQJỡ~d9;[6{苣z{|{~zo[z9˴l <4 |Q.\<'\LBy/\6ÈKɢJ9+|z@˦ۧ#٧3ˤ);| QLji ) B:Yő7xɞsŹ7Yz݉:zS|GvT}Vᩀ< × ʨ |`V˷ZةJ g79ƍ 0ʞ<y{ :)Z½3y΁5OI  eEL;ZP֯~-;.-K]z+}0k@A'ڱu lȓ>di!K}M)]A_;)* : ș/yuqɝ*i {JQ aޒ^y@Hҕ}MޖL۫f$s H~.ͅlϜ̺\^Bܱ ^͒N`{ `pޯ@پ-0hkhȏ K˧̔2V0a]."ٝN85y*WҺn].T̥Ӛ_kޛ>} @n : ˥c<Ƅ|jIȅ ^)~Z)j诙^jǽ]>5M;l{{OyBNڐh)>RS_y*wfǝ3/hO@c9łK>,LHN]:v k`0i^d8JfPv  M=H8¿ ҏ_U5įppVqoZd!X&@ <8P`$NOE5nŏ7^ q'O3K1[ܧM(QJĝ5OJ\æa0eÇl>5!ՒPD3+-u"NJ$?f 2ء>vdKm}] aB0P*T aݷu_.]l3'ٸsEj\94Kzdg\SJ> T+lzjUP!*vxc4@C_&V%]$GW떹0B!JM[w[Yapc7krVXO$Ң zmӂݜ"h0Ũ*ȩ`=;$P"o%(Dl#&^k2A ζl ü+16 C$K|%$RJD(|%2;n몄CvS 3dN|#Q@0r*L0m+LF֬.znO9ԴC$ /c.L҄Fτ*L^S.֚TW`.`J)U-Aid׎P+lΌ#%aSO 6JRx*U)Um6Wa%0".)$t3ӲJx\ի(c5d UYk4X͌-vүdNpb+s]bRҠ 1Ì2 Y7|iYg!4RZ)I/n[~:TDtn*e9g' 0&]ff鹏yƍa=zȶd%]+W.pbg6ђ۠v*nc wM26Fs3Cj=q;85/ 6-ۼ|Z=_6XgdYGWv{9k_G{ʌ+6hz3-wQ1'ߪO`WB\~<!)C+Dh>G dȞF u~[<&Pei*ZXj!cAh*p@ֶAbRbH:FQ $.>.>( `3dk|dXasDC [b'1~Q>d\h3 1]Deeqd G7:~?.RNzQ[7H {I+&K;EKNcELe=v08K F)Ȗ6ߡp!0KG^pdd/a ֑j&6SXWRI(?|q;Q@Q04 FsjHA}|/I꣜qt,cNeRDɡ` [,%ϙ2ˡ n -1TĩP+T0"|"U(]Kf'rR1Am 4m% +*XEȂpI2fH>7/ɖY&ՐM$PrYԳ"/g# ByJZ">8klt שn]SN⽰h|)֚ꭱ+t(n'봅Uo5,Pqي" jg\2"]9xZkN]r2wmmٕXCdyV*Tj}᪡,";n_@Bp?[pwW'jhͬu+"}k\%/($2f|ݱ. ney6nV'o[wqsȒ-s>"1s\'.؁m@cBڹ*ԛ:NE':yg@+`2;JLtٙܚDg/ aBi} n[uPɪw`]yΒ`7q_Z%G` 1Lc0H>4UHY&3?3 >Cm9O[}vm~67|7(gqX `uH!NDפ51cbOcI!AJ73˴hP(\sӮ6=lToԶ' $ wHh-A|s 1}+6gʦiJBJ&k#A [f:#h{\zC>jc<IZʗõ]z]kg{bVy)p{w sp nhnEG^|E΀3H XDW^'ۇ\0țX~J6bUa],Vp㲝 FG[ =1;33ެ%}-󎕘93锧 rCmi(V V[!CÉ;'=tե_:޷+KwD5=Q[Ϸw?{̞_MܲYO 7T 6F(Vhfv#a#ءȊ, ㊌h,<,ᣏReHJila"*j bꨥJ馑*jfzƙt:eȚsz>+좉zi&Y6DR9ڸb0"bЈ$P@!,Y G*\ȰÇ#: ċ3jܘE C$S\ YʜK4shf̝@.H,NPijU?jU9ժU[ÒJkSGŪH֪Ƿhʽhr;ogv߆&OvLs =V$:o in9lɉRtpsqLZ 7s>u<|13ܳ'ojw۷=lwr£Ytꐭ_׍]v~מG^zkϛ>О!qnet%_[qwpXa! ($h(,0(4h8<@)%qjA$Cv N2AMdRKAv!oN>c"FR"F_Q&Cb d鐘l~>TƜrȥsFt>\Ϛ:A(Fl\ZƎh :%Ѥ;v:Hkë8hR)d)>B楨讴.fYGjofBVI#v!S(O2mQvP@!,   GÄ6|Hqv +>T@A#=,2%+- @?&̛9Mu칯P:wi4<"ËyWs@<}=xPY;٪\2I%,Z.wA0 x:vq2߯-LQĊB7֤ht5Fi[ndPv=k !,lG*\ȰÇ#JH!3jȱǏ\ɓ(Snʗ0c4( gɳbM}7/J(M@q]T&ҤBJ)PoPu"y@bڵك5۲iծۻ>@KaMvyӇKle,[~w12Q/>J zrѢE G_)}t{7o~}`┏ƽ\@rУK-:쯷^˛G>/|o\}WH6߀h`虁V FVhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v%l!&_:$ee"flYigBvY'k]fDtA% kfdgjs^Ij*oѩXDZQRjz媳j+ݺ%:, ˥"%|Bo>^{lJfZ+qP@!,4 Ѣ*\,d5HbAY ȱA?yI1v7\Ф>Y,eƙ2k4sΝ=G MǔiѣH+*mڴȠJ*QWq:qkW}Ҫ +sX&c>xٲtVa\[/)Q O0V"/L+YFF@P&D*f |d9Kd*!UW)FjGgMmŌ RP3ӛ(|v^S͘Mwu^'<ë ~p@fO@pʓ)ʂ5_ߗ};޹ F !,kk@Р *da,*|QcAYbǒD<]%̚:ع#-٩Tiϧ~%BIE+Rҧ,Tr<QZ*7}OCE3mč6w}R 5T_HMa!,0*Ä,lbDv V@FFqaH#I~iךm۵m?ۻy&wђ'qkC~& :k]>RG I`x,Ǜ'UP!, 0*Â,laDv+"#C9v\X 1##Ԉ2JZ@˃1۹槛s'WQ9`QcmH> yS#}X{ M:h-\v7V̮ cVa&^̸`[d-ʍ R+gзְ̺qkؘm/];l޸h:!,HS…D)Pƍ~)"BR4iJ}<9%LLPfO Z駂v3ҧVSLU`ki>PT<@U==Vx۷Pmݻ/}t'KVb;xqH+k|+͋oJ&h΢S:x_e:ul\q]0wn } !,$SH`T\ 8L &*\ 7ƈ%M&D2c$, ˃WŜ;y3fN;k5:>Pe77~ cF6v/#@֣CaՉҥðuW'/+XWV3^(ȍ+LPf]-_|/{ְ]';6;kj.8;wnڻ[}5תEq͓/ !,%G u*T5<*=dgC8FP_HKɕ"|[LѬyC;mz(M);cgH޼=cN}1[ P@԰OE646>"T1] Db;ذ"eرaY~|sA͇9wOiX >=pjѨž>r6TlsF޿uG\ڴAWg n0 !,kHR A S5tOv UQ4uȑ6;1ʓD8 L49༚6wi>"eWvԔJAHjߧ~u^J7} M ۔JT ,jÄS+xXct &v9E@ ?}:H>vSB;*'>dljU,2c*Ye†d&:y LD;]mBoXO}5 P@ӧzUi*U Z˷cU}2]}k!F*ON|wSTy 儦sX+`vgaB!, g`P+ 6<]ĉ{†4B"I !#KҠc,鍦M۹g͌S %Z'cJ -9SXBȵ͠ӹV漁j- IoU>EҥTAu+p0aé`ƺڬK꽩3b}괾fUĀ!,G :xվ d1D}J,1F}$QH}48 J#\I˔4  !;?ىĝ!}y;0O̓i'U ;pja=uTtr;}\sǦ!,G*$x U 6t*@W9x}Fl$o Fb$̂2iwRyKР2Le(A=u1UI:7}();L(A'pOM{2HP_[D'(PqtS  ! ,C3ac rxbDcqcq<}"x`J+3YJ4kw3I:y JU4cJ5@'vR]ΛzêyZݙ>*wh O<8*}(O@Auه 5dZу!,)G4c DW$RX+4rP_I$o)l&B i"ĕiz{OUA=F-~*ONxy4 fi. o_No>}Ju>v!}9/_WOmϮxuiUĊ7=BHSBk`KO !,GC𘪅 tQγX}(#Ȃ, ɱGTr_̆3kjC$$H(A ZtFI|SjJͬņ:?`PX }FD4hM@'OgH¦Ȏ#y7iZ5$ yvWs[`?TH!,H}\0p`*3RĘqv \d(У>R!JKt ̂ gҴQNjl8qΠ<J`Tb `.7S`g!`?87}H#Eu);L'LE[ ]K):Pp6}uR(T }|_!,HA:p`B} |X똁Tӧ7T G#ɔ#Ks JDi0ʒgT@$3!Nކ}sÄQ?ZU}YQr0հA9v5k-l H>}JK}dIK@ ,%KvۢK KQcHL@^̫C !,;ӥ+ 6|PD(+9z}HQ_JϥJXWeIz,@$9$ϛу*Wӣ&HjM:WJ`Yp#%JoMFjڂk>j$>PKJ7rߧn\zУ~|sT>vuLʟ DڜO !,ӵu)$h ‡ uCS⾌qqC}"v<RJ[L a4s2RB:wKIhAJ-dyvyԛ[vfى܇hԏVE'큻 S9OWVHذVKOhw!,ҵg U* АD u@1ł78c}F0p] %L[HuXЦi(P6.eylԬ/9$yP:ƶl}FmTC4`ہ`5qPGCjuD^; _23*ZSbN] 5}zK{!B! , L%A`GA] }UD+Bき#MdD+[>| ӣ̂) `Đ0yN4(OwRvy;Zԗ0DziǏ,w4HP>L{h[LW*y(+C4l!, %Rv`* 54ph& |⼌xdC:z3IH,7,̂<; T}=M`RRyc/ŋK}vE8 53A\STe*M"]LTO6a6 9)VS}2iNmRcSŔ]˚Ka}0 !,UHAj\x #p1bCvSYlt@_nj!EZ,ic*l R*194M# O?sZ'@JiO.WU}fU 9gS$,&꓁HPEV F5>Uވ!f(upԀo!,SDȰ "N"C-&ܧOƎ#Y2DWrOY6y<m|ȳ ,S @Hҵ"FJE5J(V}H 龨>j%VBxڃUmjVSҰ)Ÿ.u|򾶔!,H;a… `0bA( p Eoa@-#dÔy)"T́9uͅA~2:HPE.n;3#EUUiJWٷxoPo&6O\VUyVf TE6oɰ`mř!̛/f9V2!,H`A\!Å=4@A+6QD FbrG ~8B] S>P!F8qȎ#H> =P"N"ZJױzj_S]X;yVڒ>ndR7I^@PU-߁!,H \x`…4|y ZDEo+X}#2Y7*O{4[۾ObL@QH cHhqFRRH}*(y?= #[ zcqQJւ!,H A} *DP! :x`^É*&]F8v̈Pձ3yĔ,[ciz)zɧ "ܹyI- TJu yT5=m*Z3jсYx Ukӫ}Ml0b }ojĘpρ>IM5>0Ju#xy? cY9ay}c~2ȭy!,H \x`…4|y ZDEotug@*-F:i7+Qf|Lh\P}5EbL@QH cH>}h#})( JrƩ(bֻ-2h9 ٠fcWٸ.%u`ޓm)Fܻ6ByDŽ#NӸcԳmp]3s.X6;x P$?kf?QD~"-3N 4GfF X4sMރ" TSYjR78QS:ȸ`=yӆ|M8859iSA L!$S~yTlC4~Ӂ0tE4]KqdG<Ռ3>dK9lI3՘)Hr>e3V&B S'טbURIŖXR8Фe Un ZN@#vg)GK-+BHN7+ފ:㎯K%䪟(r A|k@:kZ*3Я j^2\i.YheK<+͎+(p Т F쓱B밳VݔeɆ["GD$mJ3@D#;GE; [5L.+NtB0:d4j>|r QP5ӸT6.YSMG"t5vmtFM}6 F-U[+.+/ 2Tx=Z4<ۨ>иN%-ѽed5%߁#dw*ɳ5 8X ,ΎA -^%zuDm>$Ȑ/ۨDd`Jw(ea ^0 FZP #.O<>֡ '4_2BC*\} AF[{SivjlÀ\LHJ2eoTs*\Hy!زa佬 !mw * rBKT#J ;w=KrF`dyB1IJ#*2W$"(qB@)1sABH.6x2̈>qfUDL Qqo4RI[I%Q[\R=,2@'"$b"CAX$Cl Ȩ[O"Ƞ4H΍J TAYveS' 2 rŃҎ`҉hA{ze Nńl:bEѵf9u$sAxSFH +-hUhbL+Pmu\¦-N2@W p=:IUm F4G&5!8hAy[**zU `wȨXAbaQBxJ쵆E>>ʔ4HOWD(pt3A$Ӹk^i;<5 ) !䬑:D A!CZ \?qٹP-? ZkE+yv.SHYGv\xi[PDfA`(WWpi25NX GuK5Rs.1wqae ,r-`pA8AT \HJ!"o*|T;B >LjF>8̹|P%+,Wh70WSANj7i>'lfc R Іo,ÞucN2%o]B.H*@ǹ]dv4Lt#M1rZC݉ E V9siVL+W}>AA+|뙙քKV=c+IPueHe: Êmd>T!uO!JpV5Xs2!&:M :߳Fك‚T#uȡ聴} JOhV7mr0p)gۓܝ<_Myw&W|^Z.h[7A}F[I^ f{#C b'o-D'k =t%gO2tYydJ7y LlK"Hɽ3uccDo[]_! V|NQ<3A VY k,+gѨKbb۬+>`p48<~oľTn~Tq'"* )%b ӣ~E7vU'OD7{a}WfqӠ74 XpGRc}gжWW Ab}Q+.X.p(A [~nWpC:t: Pxzzzkhl6 ql78Xhfv\w+ҁMrLa&g *8d(a~ ykUSoDW0o,*u PH#87V FvDca{qzi$S$_='&ŀ7 phsH<_闉bh <2 ~t|0xW(WtRz @EqPX 86'Qek)!W7H_wJ$U{Ƃǀ0pp Q+ PUa0|?˨v|y  qH6\08pM%Q8i# 7Ea>(w7sra>BpD u'*p( Ow1hiǗ 8H jl n=WВnQ .X6;9z؅k\ 2b{XO_W<& Inq62`9 F@mY\p)Qx* UY I ZMV " !f\hXVO\7{Rp 43CUR VWG,ه8 G(њpm(qxQ ћ aAC ž7yIw СI X`)/pw$=.:)9J친 f(fij4: VJԄ:.v/b:dʓ&ʐVdl/[iPOpiV~<cs HѤ C% аVj0EL[drBԩvkE"V vp4uԡYaiJzЕPz;&::0y C/9Q@*o q\_Jq t iDĪN)p6T ~ ~` 2;ircw] zȓ+>P:q(jюO]~ `@( JY #Ʉ:aL9toW@Eis6dhMQV OX t/YW!w;ze0XAO:g/{q2[PMU:(!YѬnjHkVK0.ZHuMt9WRT.F:u%K ?Ovh "YT zW~qQ` i zNț{&E;Ћec2ۍ!6;ˢ9T 8duw:E>!z 9"8A_lLGKVL_*evLZ!Hszj曩q!٢\ϹQ |y`Q|,g\of߼6nq92%u T <ǘ? Xҕ,:#ЇzHFպrM=l:?#AKqcO A +xV+ Qʌp<˞k칵Ci9)yͻԠPmc=Qi[Z=/Y\My2a-ܪʜKӚ ǵȞ{9i͂xGXfDz QT`[#)]]PkAb<<.OcslL6ט;Bԧ,```cpݡ-^=өޥmH_њ uT,kj9] Xq@YηǸ= z[GLQژ=MJ;@|ˣieɹ! c?gw 5 _G;po |u.;P <?>|{ Us˃mK=ͯaPR))%/~CW ;K jwmGDψ+>{# Qj>.H,ĩo>kNĪ Qz.)'xqe}@ )?=Rβ p;XN@YhPfB,Cm>x%ѡka|ƍ $EA]ӮtTYQX΃]" XJ㌬R0@B_Vy<>PqdpR,*> snӪEԩW*UWs ) _ߍ>o n/ 117t_~3Ehs'CI*eVbE_3ʳwnG0dAYsxg#yZъK䌸! O >kl!CAUܖС>}mVq_h>yѦ+XСhN8"BT^+VV&Tq'KQHmƚ*Qմ־cQW2SiT`ԥa}DH-U^eAyL"14MJyS(BR?AZ4E.M)BVJ1%݌ cGUx;*D)#Ϻ%9& [3Y(M_W]Ջ9qՠ %-r 慤"Y٣mx):P^@AR$([8sUdSY"K~Un+T}TCOnªL.Z&S/ =}9ךZ2uH]û*B ȃ`k\*^eN$ 3ư>Q $t9],kŮCqsz=Z4/PqH|I<88!29:l{b2?9pBFt)4X.X ' RE" vj, bE'xL+bF.%*/GYa3dݬ %Ǒw z݇gvK>.nd50f3lȡ~yi89BdAanzN66O2KnVSVRCvuBq6' ɐ(D4u\[ݷN`5Ş #ڎESSҮA΁Ly`i4_:׻^7ݺ"~d7C[MP,S wobbN'x98^l_k$|$]9 #b[;.,mGyPt^^{O2qdCE{~w׈;SӕMĔG N|KB?k}9PsB y=e =hmj/ ;j>؉s <[0Yt$?L{$ ;s@KËh; T >D"t7=W>PA(ԱRB;?= AB!¼ }`BRh:l̺+TX=r 2\033 7t^`D8d('4C >ܺ2<s E4BE< @|3EZ\Ã+REyDU:Ì[Ä+FR@]A;\@6nËExDIF]Dsطx[ ~ 8ZFu4F9Edk]<ά1M4v\׬M<"E%M= N\$t\~1:Ԓ4N\9LN"N OOKL\O\ PFFM1CG0OLj,8RdD.Ҷ} Zt8|O]PU?g\)OHC.(P ^J:DP(F\ʅ2Qmф0 *R4Q }QQQQQ 5 R"-R#=R$MR%]R&mR'}Rh(R*R+R,R-R.R/R0 S1S2-S3=S4MS5]S6mS7}S8S9S:S;SS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U`S"Vb-Vc=V4d]VQ%f!,my H*\0Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ7}JѣH*]ʴӧPJJիXjʵׯ`ÊKٳ+]*pʝKݻx`&M2 |3[x7۶M[6PaL! 20;2P)fl[c}됅 @|Ud -.O cw /CF8}ӴzJ}!眍> l$I7| q^#k1`2B!!Nx6~j~g3!#OB͕8o&tXSzMӌ>j#y=z$>+6y#bAGȬSPnC][""[MC6LsLE@嵔dUi3|23$2}7 7CE ^S^{=ho)d;MtMM)RU)Ef^w $CƴڪJ5OBf ڨ:]2mVM&ֺ'4 zAWKjcl4)@a^-BmSKd@QfeFmL 4n^A<>0W>>лLg/[Tnٮ;KdŌ@̈#U3esKA] lT21D { jGj6$,zA 935H+4eոl YkM55X3 Gl.AD. 2d/M1@u4vzp"PA.IB*$KI,+rʄ)TddF\ ,_JW:A[`8M$RD҄Mi =(4U#um$Ѕ c\xg:r>dh|2iFdن."Z "C"̅$똮xj&ꩨUΩ.}:5'5)P5Z/pꜴa'xn}^+I#Qcl]FW4R9uĦs t (jXg@*}J$A#?OnqE_%ZV"D/ЇZmYGIrkdG֐M\'. A+X v@_6ar 4lM}EeT69E0tS!Rhl kBɃȃu%aB Ě# l{ df-岢 .fw\YDA>in! +Aيw%e*Aڅִc>4` ů q~T hK$R1HdB\(PKA>!b̃e&B8lbźy}<^$`B^UXnA=ҬPfH"ǥeQѿ]sW y)_lSЯ@IUp`>@ `D8ޱ6!Rc缐 $.S:p K|z^.at䌙7Ƀ.b5NWb۠,@ddK1KX7-2/5DrVKg,A/b [{F KqX+ho^ ӈtY\ޕ}Մ`AE;\v<Sn-bЩv bziI1چYG`Bj!Ma:Adnˈx 0x7oE38'hzH `:Ӆr26PByr u9nQs]gҴc_+sg$Y~o}f7zkD>"+rH0|D;)mhҏo=G6BݷZ"/د  77PU!ByEW &g ~Z}[b(@qsEOmq`_ &mWrr%Hw bkpx JG_1 ǀ䀙X} 1y=}q~V|2JorA2 'h{vk4}M0( D7|<A ؇A {lNsDqׄmp(E !Bg7daroxubXoh&MΑ; xXu8bc}xozH6{ "p7]%w8h}t8pr)rGRkAXH.'xb%6xt Nl{hȄE|1Q8(1W8(z=hpA} "7ۨJ#}hĀ !Wf6)b0whqx S 3C0AlU9;7PDXZ\YEoRy8]9d>QhXjYH PwDykXNjAIX Q7 Qɍ)Y )iX' kb;.w w;c8: H,7'4^;1k` 6K_pLw& X'}[4N{X۵1F=8);FKCiJVwwWuwJ[CpnӺxPTȔ_:Xѝ 0)1[>1"_!?qaºo` ?Uٟ`jG8 uIUY'E_8o*uK\{[} |yЧ 5KyLIʧAAUh:(,Z5 14Lypp!j8RpkԱ Bƿ&O%[#1A`vb×[;?Al ln|Hۑti$ y x`+ ၃mɺXeoLK ':cLyl'VR 9s'p R ?;|,*~5c8̀,"qp;$pl.\UXFlA nk2%x ^ кQ` .Pz<KV;^L(^l M2QL!9mӆ_4g c 곧B L/Q*ERעhćq,$ɌK)POj |%u=n:~ J)qs9\_,| MM. l9=˜ ؋K)ѩ"Q= ݹ#R[<w^H+8Ӥ_3Dpn͉< 55>P<̭_<Qԅ4،$'<Ԑ4׃= % [KS i9ail- :;KpiƩ=ć+abM|N \t0_:jg΋bpn vMa<G$.4,õp.hStyF6e;ħtl r-U6yv g[y{L\|)+E[ @nEֶ1A5}N?O&Tqݨi(pkc.Ch(}'Yltz}`7P+k;3@{ ^5= Ns}T"^: Q.t vu ͞uaٓnRQ͆YLD 6 _Mi1HWYxb6`iܼ> u+:d>n\ܿYݸ"3M{;1 T*ŀM%Xw'a-gZy qԂ @v WHt 8_9Bhx-^3o׻ܮg-9 ǔ.3 7ڻ$05Oߘm䵦 <D/ $XA .dC EXł%TuZ #CXH;6rZB.ɁpyUOAֲeK#G"Q@X&GN`ˁXO|ڕ}z%{iY ݈RJzk1WS*Ky=r VP.c u˰0g?, ^ֲµdEfkl6Xܐ [t,o†LֺʮLŖ/)2h 09իG !+VR?VՆ|6p.+8;O>sC Tp +) MDMP(yŧ20"6f(:FE B e|E=822d}2Il=0%,ƫ&3ڇ(4$4H9tsloI;j|ĝtaË,"!@#A!41-C=TJ JUIҁX|n1\/PƢ3:&MNeaG}s:%؁T u)/-K<SSp,7ܳvG\q7-h1^vHXݶe4kWƠl BݝvW=IxmdZ ^xid2%=1&-mbYa~av zv8!NJ|6:y zC&iDv֣ee}J6( nfJXV{g fH[iH?黧yʗEY>J6q\'llqf͡+|j>ƉVOJG/1/_H:\sʘdHHP^yCPvw 9$7|Id(I3xnǨ }#GHN,x8ta F(}i''-$s dCVSB!F-#C*KAI(!"DE8/zq'?Eq'gEL!MBpc6 ,d$vňnG:yITovJ9(>L6m6!K2ׂk$JXbh#15,!sxSRNa$%FQʩ B(LÎ5tyE>hLq$g9YHsSn N,rdW HO|&Q@@xbHgA7# e A[I>xD|hGREzT#%iIMzI5g HI]T3=IKizST;iO8Q^0OzT&UKejS9Z!`SjBb^UiAM>ŎҬhA(խUkeLVUl5zWU{k_WV%la {X&VelcXFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo(PE6 !,ly H*\0Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷PKݻf5՛o&.IÆ1m`>8cȦ!;vr+{X=Vlb} Fj| 6ena6.ufyZ~Z3Z5N_t>eG>v)TsDP2CIҐIGп)g\`@DGLc64Ϝ6H i3AlM5T>tQdKP)P\.,]fǴCPLk'}&;|tsxB]aP]i 5SStaX#Efќ>4L62^KS[.,Wu 5qaK ķ QH<d#Z Ј]6ZOD-2BwkxbA4yޑ8E$an<2F"-x*##jq^ .AN-'1}Ġ]t= os.6H|bL^$m@" Gw|d/dPt O"R l pA1`"[Q 5=1Pgj8.$"ShFDa>wFg!"AB 8@Ì)0 '|$otbG}cA=:0 Їc} 9hIBb4.0C816mdB"G1@93c.Ď!@*h ڒ" \1lG>x1 YgfF֡?!9: [6`Rd.ALHtjD+hrAPSY[+:!C7ʃa1@ u.s>-L>!], r Ĉ 9.ğA%2yFi8jA ~4G"'8yl]ZBP!x+* U#PF̌zy`R[ȫ|E)nRk>Ty ۨEV0?tDvZ>DPKRO^ X*{>;ڇUKg(eHU3JʋT?K4rօeEzV 5Q2 x0H BhLhg\³nm*ӊ(8Gy˨Ljl!LjM)zW`p9V$muBrv+OMz.A6JN!ZK2?\̃ ,mvMh K1 Ckн$V6+.ĉG4;"[/A* i 4f9QkVeĈ;qÔyX;3u!Q-'SB,Eo%I)j4TDM2*k5<"-陒@ Z"Q_d39F*`o:8]D\)YDxTBo -0SS\5c /CJtGh AWmRx Ӏ媛iއ*lp[P+O_#X߲/R d+ݤl]q)&WWˠ4#vE0!^"߽zAc_sZQ}y`YȽ~K>}~||!7'zIt*Q| x}5} G 1Nl}t X& wPwyp&PukLRub7B>W&vb?7JdRvr 8IP!x.hX (pLR~$(H& )xRwl,pƦoaw6x~ a'K6}nzrEGHQ WX^\Z>qs}ax{ 8oX^ȁ8EVehD@jHfpQ q(Hz)7w/772ĕDx:Aaca78؀7x8}ܨ؍FHxd| 0( ΈHOHAUrhn=HH`XG5H\yPwXn7hy'  9(} :u rdr919>fxyh 7 鐟 JYs@NBYjTW +"TA;quCӖnp94x{5xug9C &ѕB,  `bCfyؗɓ׈99T7rW>8acs#TǠ yژYq YW0hɓÄb!!1 0w9&Ti? ֜#܂genHu/@9׹@+y=Ai?ŕ'H yLyDqn0)Oq{9ǐء Z$Yh/! "qq(1MH, J!f-q3fI=zхgx}զcY`!#zȅ! XbюX+~U-Q%h\:< zzG qRࣲx}sjyEx:XA&a@Ut A, w jG:-:׫Z,*iAͺ*wvCHj(| #CnÁ6nCpjw hx z2Y`VZ:!mjIA{&qӆqZ;{?ڪpeY⚜W}qʜxc )ud`[Y?blwj/ ru{:apQg15JYp֮8⵮H uR1Z ,/{eʦwhשag(HQ Ihawyʋ9)YQ9hq7:*O_k爫tK[}v:K%-l:jHa : 6b:C5+]XxNWvhjk}9zI+1_u 1h{w:vY+ɬxA{B;Xw@cp_ٮ1R1{1[{a8 AkHH]BZٴk50w ǂ0kAqxh$+ 񹕰ԼGGЂ$6^jyHЅI}=L51縇=&",c"Gps҂T8k:];X; p… k~lvK<|z z*tᨦhp *:kD[uC壸lG{m2ˊLѮ hlr. 'ňZ쐼(;ȘwAv̪͆<Ÿ ˲k`A!i7L,>%OXuBLz "%1ś;hl(еFZ=<^Ҩ*& vO Ѻ(,1ʱCj|{%ϸ+]ȁ}''P}`\OzrLrdѐ)&  ֯7te:IUgh&/|<0m$,Gdؚ(OEM>Dl01 @ڤ}ב]XYhLC @<ƒt= 82c?ry9 2#g~)mېۻ]Gf mLp8 Gy eYA:0+4h 5 }ǶĬ ;kcrthx:Z&Hm߭R PKfln-:Yh mlة]#h 21d}OkӻVǛq~c$~qH÷HtUmE_n0] N8$ENz2>%wz6T^q^(>1+e-݅4_m VfQHQ@T[L@;~RAݰh^!^]}1 F~k^:N*% 1Q4. P9 eLÄ/|aIS5UC.n~o&lѫd~^ލW酵Lt +hrZ @/B O Ǎ:Uo"A?M)׬T4h޿aD ݸNacK,H{GbBUͯ*ȅQ!L'enί 1!!Bt _c,?@rTQ$ $XA "SC%<6*} UYa$ dɐ%OVLY־Z1SjY86u|ȐO1jH%£OJpV Mh0)R4 jiI}₎ نv^̈*̇W/u̮ݖMM}ʳ"Kx;ƔٰU&flѨ=qQtVg5Fl aS]k,,kA[eφ =-D­9;vNIx`l_Ӧ^u|W/M{s{ ʇpͪ2/S=d%ܓ}KH/ɚ}0 J;3J?"%K.J 3؞E -}8$ŇH@kɒȄj# 'sΠSɆA (AI%J&3$I+h#KbK@<"Lz 3 Z5+LT' JNT;%*Q0l'>TḦ'fTsE&LJD0MROsiP;V-(UU H ם .u%%(e:FY([iZqTy&b[Xm5p#זee "e.tCZ]}qߐJqoX~aMgd2'Jy Z 2t'xաlz6щ)VH8E|:y@*Ze7<ځbnH29Krv-i!Reo ( jZ9n+kHf([:m$*U5&}↻tN'tRn} /v!=p*m Mh g jsjkmq<1C4x87-UW}Rc'dkݡ+~c O:p-pNxj j!"O!{&d: }50(R}P3VǺ>p, DaֲW;t宅/$'&n{Q9qٞN"ȓ #Ob"E*ޢ` Xݘ9ʏ |#B::vf!I@Aq'3D#6y ^DF_c&隭D u 9cFDG03Rtr< 1BOaiA-jr.k( #knӑTfF͎TRtfdEezӈT;)OFӞUPzT4-\DjST*QFU[e(jQ~?6kbYVr5ie+||VhsykKFrTYk\W6laM&6WTlcXle-{YfV5#8YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\FWӥnu{]fWnw]W%oy{^Weo{^Wo}{_Wo_X&p |`+W M@!,p{ H*LnÇ#JHŋ3jȱǏ CIɓ(S|˗0cʜ͛8sɳϟ@ JѣHyfZx)ӧPԴ#Xjulbխ`Êjٳh6۶KʝK7cLͫ6fQ#&8Wx[c- 4dǎ]Y>#.h85U-6DkҒQ}\x3nany ؃3ϴ|ftAܦq怡3Mzl3$L{fD&t/G*lF[!G,F>92,+Lh?6 #&( tq洍 ),z;>,L<7@;k$B(d@4n wk eNw6uFRBf_d D;wBjL2^pH8F8_+1zj` yD/+G 3$3P2GyDw>CjL"k-݇L43) >?KAT>:t5RASCM85k:Тq C本в,kPA# mn0)L `gYNHiѪ\dFBYS!a;$Iɍ қ"A=rPֹkHAuQ-&QgAaOt%XBz9Ч i]441.ju"ԊqiмP %PDVq݄^1Ku|seO(|6}P+N33]USZh{4D$TZɊ(D QVWL^PI0]^} Uy@FC`R!Zx1ՒfU!xHHo lr!yXp"ը,MD5p 5N鐹U0A|jt:JI.4 TqGx,2~;%,RYBdd'Ƌ҄$+p׊hJK Ro`w2oxnu+ܖ*de>d|Fd#I`qXw;ɰVDR]#ֱˊ0o1hAD_8>(+kFB1FRӰ1jLD%NqFַ @,jҖ2` rk2e51KDZW]Pl}0+^Av+*a2 ]YȠ-0 օj>;Bw>,٘ dUi Sn& m|rݯL(vf7obdmkQw `.zv"Ix t ׀hv3% MuQ ~L⁰ju(ۀ mWfr~eDnv`F Ηvv6()mG* ehax~|yLa0IV \cGj$\ֆ aGːL<FaFnc L0`"DLR2#@Rr·d4AlQbli7 DV8O(*犴G(dHU V9H"9j & NFar(ȍ8#`r7l/41Kdg&L"br~vE J)L78 }Ky0N)HQpG^Q0nxzC 0Y UY>7vh{f4LGL7Wldؒ(LJW1PƙFE haŏ@DY9};X Ǜy ZF?ca8k)`Հ1 !H5YɔGg zU=0W|X9}tQ޳L\WwtșIL~I;2DiKq贵{tq o;r۱?˦?&y0 .JkDWtɍer/LaȘZ z 86Ԍp> \QPl`hؼ'  #lZł(|#-\äZ(fLa}WȰI)|;O I,xRX\#< Q/ez̾Dm`?kmc\e^,+\9DȦ1\, *RlJ*D> 8 SΦe,ܮ,Qj'7D ;>,|vM8j[ |̨VAD̬]*ƶ$͑ݼyf9h۝ + J'{nςPe^bLnk*Fvjq{$)сA[==B }HMYvuJ`!'T0 Ża \K\ӻR;yk̅YA<m p :[؆|؊mQUؓ[ѐ؅=lNkʓ8|HҘYͺ%t' %mF"+/\T# * !z #\PUگyа~2k9RءyɏӖPK: T+`v܎a@,.{& $-z+-ɲ|iֳLUmNc , ͡ sI ɭQ ZZظ0m}Jxz'ًٕޢޒʗWIZ έ ,I^ֶ}uqwZ7R aAg)T⪉ي}{躴2Gڴݾ) NY Pَ)>DD&GgN#*4W };( h5,+NX뭦˨SD+yn|2cժM=(ݼF {zzy?>+ B g B!$߄ڝ(l;DI G.T Ҹ  <窻F, #v >D^Uqd8خAL5q>xvd^AYؽe![}؈6]륈N `mއ& ҆B߾&#^ȗ>/ cPhs ^o^޸Ե(뿋=^`.>8O^> ͺ&\8$%"i ۖX-cVjQ²*@/د oe~Ali\-ϺšAĺf,g<#]! ]qQ;;uJA WKU4}Sʖ@WmmܨJB VYh\#|)OlȐd<,#tRf؜v #lͥo@V3v:*.hiB֣nTJ}<ϡ Uq+ k.ڧk1dCܬ#QMEڦ"ҊhCmyL+ʦJp5h :bDŽDh\-ˑ->+PCJDKO [TH'ò)+!2L/kJ20'V: YB E['5}C 2R3+<3Z<Mд.V7I RsjMh%EZ4,63s4+Td5WcEhVZҴ܎lӤJ.$#6wXڑfƲEFXnTtFqcɜNT$rjZRij|GH٦6y;,4,a^A$*y1 !]EIaSR΃bTYHjl-Kd2[ פr{YU5IT(hS,_t$jn^W=蕨E'ihU$O\Yq}01ʇE(Y<3EgMHF몓ۭ\.;NoT(p//iY'q&_a|Lw!}mxsEy}y1e]a*pmA6di.b⒈i4sM =H3yN=d$/ ]FW;"RE~"q l禈cJ5hkUSX<1a\wv JH j<1SPR( oq@6:jov2&zC*T'a#/)QiSImHLnCi_ILC {qވ'qed>i)ZΛI<|38Nx*'YT2G&['XSiwSHn5uȱG Bd)!/a4=̞&i/uAT!1uot$ARI HDF@ Ҡ~Қ+I@rV3z2?*KW2x'Y #s-fԑ+iʡ:ڻ͝eir6D)R "BQCR(BO6׈ƪ*|~!@:EԮj%k݈CT2) ^<6sFnEa:D(7KF6,4)|&5pI3mtv;yceIw!浈ɟ;.s8g^;I'ȷû*j;\B =W劃GX{D&I7Sk]$L4x8>rW'dBYG^5!Loc (*D}-xښ-eYK5fOZх[n*%2v:0U08̼D*w`3fjBNHS+c"f?(%ENbJ3JJ2?D-Skj8mQ)4 t;AL)SC^UmE I fB,'e6s# IBm~4i9Y$ҵ Գ_z BFtW5%~p+$}nK71s aCo O1,j/#ʙrnTwпqNyp8^H[c"G' 5F.>a?~шhʓ Khq:`࿒3@dڇC?X+" tCICX B$,سcB9@"<+*5[:4?XB(W8ȝ?Bp| '[ +AK@t8izP3C;<:;(# Dȳr S;D @(XkȠ?9Z4 6D亸MXh*vaB0.03}Yc6>EFtO;`YW&Z-> A6B6dCFNV),r[Ѯ3 EIVǢ!T> OL. }etcf>Y"qkYN,aXf]eެ2EvH|8pQKY`Cafbdۙ0S^&YfpVѡ"eKi6t瓸魞. DHsvwekh+r8Yf8)V;cFl_FӓkĐlfhVm)Vd*ѫmsiRN6홐j4m9ɶgQrhZQl ^XA&ciQYlٞ $| g:a>nfonj.ڿor5l(sMmv>ӣnaN;fdt>I&nfl, > h6W4.ZhpP m/s? [߾Fj,.r iYe5mPh 'r*/i*Wi5q")r1n,_w=RrA.BwEo1,G-+o&7= (sBleD"hJ`ja-tIKUZXE>ǥtO''NuS?u*W"7GuWuV蘆uZs ~ 2LL3=H`)Ux6gM6!!̓LD@& T#zQ54(:$yII&ΘMB7MNFdDWB3!#sIDW&HJU8dc'Avfwd ZSW&䒂Y6"x'>pX0q*2B_UeN~B 4ꀊٓ5RSeB&J:4*NլAЭzOY ԄY4,BK6*k63&CZ(HOOv+ҷyI*AlX*>ЮP.Jԛt44͖:0c4)t[{ewX@d/Arx12od]r@ tM. rWݞݶ1X4[fB_@"Qg8q`O& x[=T}1POt+}RxlUc8v mФm7םPԒI~ 7CR'|B{n8Oӈӏ˷.2'5ɖ1]Pq3cK۰@nvN'>Pƿ"Bxxf)@p5.$K\ ҫ멤~Ҍ 6$ `&R@ b9t A8ŏ}6AHz$qRzC y dB@;㉽> xB O 8Xѐ=!2ț⤐1FM¸#~xEBjL O\Deq OS@ ÏP#eQ <@d#d"jf%1q8Rcn#x+~#RZItA(!CZ.c+|;5e$x0 ilKe3H(Qj2/]nmSE:sDH5 Q0I#Ff:L!\,N}b D"1APE"EUHG OA@m*(. DnXSݥ'JI :bsru@D%L6]Ţy(>t ruTc)-)rw)͋:jMچT5Kկ jd"lxmCW# !/[c-kJ:*h5۠vxh+V[6s%@#NWɣW:y $Ė>ŋ0b:]2)D2e(];woc"x|ZiFm ׆ ^{}X~z _#M'A!4#ЁKU TBXw*1UW¨D\0Y@r 4jt / uulƪXřaf2D<'CY"f<)>õb#'t)cѺltBdKjt Oͱ ;LtH=}4+I2j CP.5}&C99EmldpDb@FkɣÛdžmPz+^a>O2/nAX;cH)QA1+ |P82h 8:ѰKgv/!wjJ+lml!`E%Xڧ6Hjx1=Z3W:2y4w|Ak̒ZokȰE},Pcak&ߒ2r-$KՀ0a6AfvC̼Қ6һB ن3~_;J^Wo%ÞT d kbRQз;2Avd'*Th hqoeHƯN_5C2o2u(.JgH@ _W WzAw  g@Mt_{0`DPo;Dn:v&u§ f |J HF|WwĢ}C44] u~TgZR(_ q%Vq~^U?7A "Ȅ`U&t Rlc8&v"ցmXgV{&t'|gvI5(g FBQ6XwU`T p|ח}p ̀!!aX~L/c/gM2nZՠ 7 K8R 28 A'x/?0 Ǡ 0 ץh0x{xU7&tDz(|8vX4(dTkńHHр w BF3VJe~HjPfD5"3"|F~(WIILv8w%{%[#zEaH0 +KA R+XDvČg$ 0xJx|Ȅv gJt6K "}z PJ  SZy!4%+Uf+by5g^RrIhm 1-Ѥ3؋3EKd_5SP{YɰSpЌR BH;=S 8AdS#quXGh4}OɁ IlUy!SXm[ɕ4!ӚWU8 VfwRRؖ5(NؖG8!̄vp 03%WS(V-ղ >`1(ٓ a|قv.@TXv7q 𨚵ُ&GWyn*AOLb8Kioa5!Z RS@}ISayO90aV-B*ꙍ|H Y(ID=8OO0/e JfJ:I*0;W'JSP-bqǔ&:3bmb G!_ZU 7Z *_ISr 0M  9Y (t"/M9[j*fȄK)S55"1]b4i+UNKYln9 j Q,ZNӀ 3;&KZW)ReaZC Q& MSjEaWTY( jz, bf ɚ+F5j3ݙrf': ~nQ:HyKzzC.ҲD9@ ѤIK+K˯ 嘟(Ѫ 3ԥaĆO ۰P3˄  "K:?R+zL30**;,1iLk˷:8K&i ٚ7{󰹜۹41|OK R˯Kcbb\s :&fˠi jIQ3Z a E*iзjj:b2.[V {ձbh 0ʨ:Xx IK #P))c_*p{۰{["]Y -3t+1ƕ+|K;˾D!!\ yDO IQۺZ,ܨ l|Mۦ麰lLKKl{M1|Ǫ12EtA~|DPs2SɔDl ; V ɠf gY [ q g\l ~˷Ludxpe`:.Ȯ&Sy'Qɗ|wlOF Bgܺ!Ƃ)W[X(- Z\b) 6y̼k; QMH,O5O$R;M{M: !ϭ ZˋZmOw=MQɾ ݼ ]{]I ԵnKͳMwF'&iP{z 0Ll`'}E-p .2;9MQ~ͻn,µJ|}]m$ +]iʹ +3 W'`  "s=ZlR ظPcM*R܉C~ʳӑw|<wwLRӮھl2ϫ] ! t-̿u }S+@,A~Cl uՁ9t A!lM΢٠])B bޭtŅvJ !rc x ۼ{ ܁ߊ=ܶ}DJL6 ѳ[T䛬O%֜Ui ;K *jnفdZ+OK| mnF %O%}2>ϩbDj].Q)ΔCη=ɋ 7STξZ(KեDG<*W;qخ} L .8=)8$]UTBW7*8yG~ ܙw Hj鶩5[A=ϐLK< |5dS; {5 /jP7~P .޹i֖6)&'!t %v j tv|ȫwJU}G,_yMs:a݇ nZ^xD`M=eϿ,ˬ]EQ`{Ԫjp c~}f+ٍ+FC䌋1uJKYNK Xn*Ñ+@l Nl ukuknd|u !$ÂP i\&EB; WݼpUuJнB⚣< &p>nO]K_ ᣽ራŭQ)-N)0vjק H(TEWP>֩bX2 gPh4&u1Z5F#E."͢u;X4'QF)˄VYO:v@%`rZ*Z"[6\ sUTeu%VXOcFu20ղΔ VMuIb|S&\!ϩ "Vq}#CD9M%GHzir̒6/"TjСQ!ZO jNja#OxjrqekرrnO+1p[ݢ?.:>g}K|x*Wp@`b*[ ![Rͣ$db).چ% KɤICʨ}"jWzCHj%  9脃J1:CH: K.멕Z‹,+$R$!9|>iL"b\ *@d2!-O.GD>$,m[Q1SJǺbnkDcjnJ۬ $unILJ<(G}DK[| 0/ NԄO,@1#ch3K0%F$CC{BtD*1AEHiJ 3K<}TTCUճT5*\Vke-/ sn)be",a>M"U95 tBf*ףCSDmYEU魰#u}Q8 ~ija'#.rEN/h͍h[ mFiCW: ;CGp؀izjW(T͚xMh4+XmYWJo}D:aik`qTQ5-y7u%6x1D- Et*0=akYh ]j=Ս"$~G IG"Dc5"n" $MШ<>Jz3FRZKe%v Ϟ@d4F(J**^QH]Uw9y3]ǷdCul4* '9?VT9:1+]0LhPc}k1BN\jmWYN˅<Ħ:<(cFiSQeQPyE͇-N@T̨% ۀ02R wX"%"}԰c!ԲBSnդ#*L`g5=JmQ{W2y.]Y(iooKݰF#G P#]Xas5^ƀtbOjA›5;v w}"?O]H[,AӪ r: 84ifN\ .5n*7!@М)٨);ǰckUYJFH|gN4 +ǔBƛ1uX!l5Q2|, GTO$y[A`wy:XKV5EhKEv:b jtbh)H ަq.Gb(҇8`A804K "*f nnL:#Xt{8XʜFԒԦ y\U'ZmRŚA}R>V{eJ:c|(׺*iG= Yɜv[G`EK~Bp"wJbלn=xOՉF;{X!(e/x4:^mm??doEƟ^RX|6Wį`G8ґAQW d+JXjdnnSEbM{$a~5J$/y$H_;r0%5T1uS 9|4b3 -Ѐq ;;9d)åk fA+ր 4DUb  <`CXC3A [ B+ dP WX2B)Đb+DD-6 춾%,hPD tI;Ŭ8V`3->+@AȄD #BEDBp [̗D<@DN Q䑆2@ Q@l @p[{ ; ?z wVl~} ?D@j;q]0(RT5S| S\CDQ'";Db,5 A<Q 5DI޼"519R [ iL0*(CpАԊSR4N?Mn=!/6Kѹ.ʮN̑漈"{5,-~8BՕ4X܉HT,`Tɹ;90qΐ $Q=Q(Q]Y=Qh[}xՈۈZ݇sЅ [STg$԰ՙ! gȆlkHX_I/t 7ջO l֋hͼ2PОlUPeA pMR/%W0 tuESD4Y]FBEل8G dWM;U&%MXa@EփRBMǠ?tMEX W+ٓKYګ645ሼL1'JLX- ϰ 5OZ5 1uZxZU*ZEa=YUܪe>4- Az%6 +[9[ܝ5ܹOk5 f۠Ք֢ qq͒܋L]rpZ]=YKL4ܪ}`%`l mxÐܜɻ\be^\id8ehY ]p̂Y]yTMդZhPQ8ؽ]]\Y=\)^}Zx޾YNѢ^e@%ܡҭV#-yU} ]MmߋOAq_Va@De]Xr@?$\ \ܣ<9І楉L}^_A|8b$*+dϨ*}}H۱ >d,քX>Ya`asEMܕa;9l}_qΧ[,Kb~^)P +(%2>YY+ȦxX2aee8cEcMqe؝_܇]P8aX{ڄ6c>cnf/ d0+d+P0'\LNdtH:5fR2>-%3NXM\g[\[H8^i4M]hM?TfmcnmfhfjjF@lmVmd*ntb2+q"m&uAWVϐVއ{7 g؍PkM݇vꆎjZ+hgWxMf,悼f* 6tfvif343Heۄi4Nڄ]qhML_]ahha`"IvcgllxІ#f i^|f ΋p6soJ*i\Xlk۾F j05VhqXy\lMH?jll϶+^f(mއ^(GgݖV!-iFZ&lo]]%Z; Ol@xm]%ݓJVo֖ ئ mQZ)F0vXm}ՅՕﴙ[^\vjފFycnQnG ~ &OI,f?oW뢨ٮ~RgrV3>sEH5W_.|Z5_\NPl])py yp"7 ('-_m*a0k32mqRX퉞sF6脸F "MEVEqO)q`먺mE6UDnYz+?q_ ӷ:};FH[Y^ۯԗAoZG|O]+?JCo@:~7ϯwu}'h_]37CGGZoCr@eR,h „ 2l!Ĉ'Rh1bd&k#ȐlvƓ qRP@2gҬ\t6wDh2Ǝ"PM\l4'ΧR)TǠ MRɲ+ذ=bvVڸrRd.óx wܽNY-l3cK#Sl(׃/w̙&Ϣݙ65Q&muk٦EЮH _Ie˖S?̭r *+zȕ#d>;E8IElƯ_Ϯ9sgS[vq7mQ_Aweaw!{e-mwRbA NwXE 6]&"E'xR}cAIDE@ax)e^d t:'-i_A>[u`6V)9 J}(ӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ㮋O?];COA;4` b 4A^RiSaAX2Ӥor,XS7S8h3a6VT"2pΊ.Y>ӎ I&rЈ3:cK"@?EJ4M>T3MNB7%\"Yҗ=)#~僌1mAzf2 }RM.A85)|AoY+LВo<%A1\WZJ@LR3UMpS盐 !5X3Ͳ97>3^BDG#mncFL/T7G@ Icb=RR+0wBk]gs$D=N$AN,~;T=h.P㯶͑#c@:P2n:ᠩ,zASnR EQ$Ox\2 2PBry1o.#@j)#w1qO"u^C U!,ȌhGZsq TPyw*-! RM~YfIB\A8.}D4WrhdPk&G y!pY8N ABv ZG"9i.Kݢ%NMHX(CZsbďX/+,2JȽ (AXF8 YB]w"E4BRc#LHQ$!. "YBqe)4uSԘ*BIN/KkTjz$#>̴ّ#Bh22C@l5xln#FAJWQzi81Z.ri\Mx**I7>WMDTMh>oմQRJh-HFͺԘ҈_HM([0j?}#Zc$ Z1ʕx.Eb:V2"tD8$"yXc!H5QV&<[]$uP>? m@rh .,[}lͥV%m ŪC0*ɵڤ(\悵F j9$Z@NJȨM >RDVCpݕB8ò HuŐbwB˖/#VxjCiSd$ !_iRi 1ag0Cx*Љ@s@r7pe YȊ2(jtvuEq  i-@P XqA(B(S聟5ZYZ#wH(ldR1)lI ~LtHLȆ&ǀ$&UPob*$w 'TURupi 9(  tlFi I됑 |F "ٗZSYfp“Ϩa5rlYF9OJ.I|19"@|IY XSǚ~" n$X#w8fTZQ W Q q)R ޲g )T!Sٖm+2x^0!Q9~~j߷lI幙BteIxH(P9D"j9Iu i\F H)o)/:W/ʝ )!مZXVorXC􌑩o^"mDB:ܸFj^B"+¥?:PY ;(lTj|$ZRi/DThH  jJYz )).#c pT){,0ש =xOWBe8 LZX&$I р(axe;Uי?TPb:q&$(5wu!(J#C Ip@-}*c '} ) ,6S}fxSkDAmye89N1=HG)&p,b1s7s2#x"wZ ׹=1KzԲPТ/ fJ(Kҩ'#Ȫ*6ӟF*¤KR[=:5Nr"0sl*yv+y@)˃+kx 24=V4R$ٳ+*/ Qr7M[k_ɉg6#SEYkXFue&(£(;|d ! p뱘 pDfJ0[{{W&q0j_ Ю zkk)S L(´[Zq-`kOj_SWaſvщQpI |IzF `*ª, $F!KdeWf+{[ *2J[K}L6Uf+ba7C}L ȳ\og cpHڄS-aj-nu-!M+Hrĭ< 5T"[ :#̌g KBøPξҙݶ냼z' ?4S ;d.z aB]}. a@U\դ! ͉?ު9^N_.yR $Ꮼl;c}\T c2mk 4Bv~F[HE= _ > flx2_Z5>X}i?C/,hAk(+n=?UCƞ$3\B|x~3V8X;Dʍ'oƹ 0 ,Q 2ʰd^΢wz 5|s/l  ,Dm:V俹[k j } V0> .܇L$2eCVnDjĉ#y-U .RڦR!`ɓƔ!K(Gb%MhSƌ5ФjʔVWB:u*վUwa4 ש0>tʖڄL Ă"/ń,8`tƄ8 wZ%I2lYz%wYs1T:{,*kDB0)1"LV|]?kTEic/KU)c.+^nx:^ST*Zl[lJ%*Ϥc`Aȕpez)B˅2.r!I:[HSh5`!MDh.ih00*Bmsn?Sh0  L(}@ClQ;Rc -Zj}T9i&p7L,䧭LHj3;\$,OK/<2|#2+Y(̟d^HMHA;ƥ:ųp T!kr"M"q|H)RQFz4d"j]}*!A9EM,MTw6 -c}\\W3=h҅&LmGjum q9Zn઒̈́"L1ː-CϥZCU!K/eg֙QrxdOt !`ղG{YBcLsڄpZi9w#^ǹclfH Hj ZSiqe(!sm4sacF }"ϮNdhkpk;QWfp)ƟluZZys.ڡ}CVRB7IM|3X!5K2~W$0γ_pW [BH?wuytnQT W2Zn$o[M*`9h9B8'TA65ۚ8)6#L`ߙb5 Uċ &jM} ?YQi%53?a_AzM:m΂aSB1@W~Ned U=!X6y!3iˡM(^O;0IlfXs`d9u{G/Mˮ1u5 g4wz9[/l!*SSc\Zg!-\۴1Zwn,;+W CL.[7r3q qUeڭctkY:hr9FeUeX;vXL# <2C+ZR3^Q#~R5Z2:NDvNXPmw;B0JUvXj1Njf_*+FF*z"+rt:!z:99X7/8l'ffس|l5<_6s %N9IPߣq b_kwxpa~2H/ī棯:U2:E>4H0h;0*hɝ}]b&{?rA{18 d> 19%6S9ٍS ݘcZS,[؇vA mmA.lCœ3,“# 2<# 'l=̐BC3H,B:43;Cl4&'y4<5C +2  : iB, `2̨DT4zD̲)̰A3B8^ :D :l3qBW 9:)yX4*+1ˁƁp <7 BY…DCDrT,cMS2ǍHhGJGūGOO(D2Ր1JJo<դF^Jʹ$ D\P UD\P+ @OHP *RЄk*y+4QҫqC+`ilS@:фQ9eH(HQ˫Q>msҟ(L}X$К NR *HRf S0MOM2-S\u*pLf0^Qj:S:}9CQQS }V }L8V#ER UREUH#FU fpkVkR-L0VODO3ɪOXe(v:}87VlUaG)S]@ԅ@X+R`uP9B JMgIJ(JFAl"U`fxx=Uv{EVE}1ڮdQ;OQMā%-҃5ءV?ce#5ӐZ*ڨerQVxm Sn[n( U|8[͇RW{v]YۘP:5^Y}eἶ}T X>ݼ%؂-Z5أ2de]ɕ\Z8MMO[rY*@/u?U=׸Wʮ[}e5-BݭcMEK]\UE ܪ}˜Z7qU}ۯ%SEܔJ,75Մm3Bv9۝!=ܑ^=\UfǠME^`=EdQ \g_`^m[нtͺK_S_ BՅaeXN VaRlZ#>bS `lHk-  vfݕe_[_2&zu=QY?E>X[aFZMZT0m\&e^@b#U0Q ubmTl av [nrPτ8Vog`܄?RG戗)h=hn&azT PceDMtވ`(rqqJA g "q72ITN/rv'rd*4rԁ]r 'sm?v(ˮ~M{n9/ >Aw߈ 7r vdI.th6M<H!= 6EATtuK$tMtE7uc?nd/.vqv=u eev &uhk-l'^ivUvschOsd[uwoaw|w}'uOfehۦ}}gtp|7~{wHwoxRox۶xtgntcJIqPt75y܆j_ bJL7@xy@gH_wDB:߇A7&_Gzh@"o7w;z?ezڻpyVTBk}Pc{c{"LW|wݞǽį|G\/}O O}ѧ./Տ}ٟ}گ}ۿ}}}}}~~'s/~O~_~o~~~t~~WL~/?O_o},h „ 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w'РB-j(ҤJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴjײm-ܸrҭk.޼z/.lS0Ċ3n1Ȓ'Sl2HmϢG.m4ԪWn ײgӮm6ܺY/{DێM7C&j5 !,'z  H*\ȰÇ#JHB1.RȱǏ CIIO\ɲ˗0cʜI͛8s,X!Ο@ JT E*]ʴiB:JUV\ʵ׍-KٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_:3dpy_Ge*4>$+ThaH0MO6Qxԡ}JLC4v'I"fcM J,&6 Gls:5L…$C_ uI UON1b>ѣ7/)fy2Y4;&Oz>ͨwH2Zx<g^t>SjlA8,nl&8g+3]͔;mAX;:d+79:4"2vA Į.Bt;52rԎ@/Kۀblydԥ4BӬ4Jү 20t@OL$AGb|7+n<t@CO2X54Jĸ_EMF1'Ts9>c4@>7飏K8b%9-wl&կW;2P&[Rnd:Ks˝'I {w$@0:<n8-7vR*37CM˵yӬbF{IN$LLdIAuK@P{:>E˷|Ay̞hP^/SIbȊD)/!#ȋ@$:%Q2q (`Af0៲Wb=D^t|k{ܓ~ƐQ$ +h)O ƈ@7]~^n VHȔd q!-mmN*Bl>"D̈G ֱ\)#I!YfH$ͅqԇJ⑇\6 Cp4Hr hHhTS]'TrinrHX.YHG0֡uI j$ <F& ϒ8|0]hSiƌ\dW Ac,Sz'"11AxVhۨy_bRO}SfL)Di@|$HG*hd'JURQbS> e*4HZd|= pD% V$`~t5bzTnq~X5TGP>6Ë́P2Sd )h9[z H J1Gmf4">"{~Ĩ VXRDlbȔ8c]ȉQW)<|!BD}̔-g< d9b+/xkBmUKG:ýzȅ1_ԗ#O;BiVȅ{>J˱*FIF`0h} 1t1:Bu1NA@Xr1p%,+NCOHd9y-Ӭ -N6P+[6"쳒 O&5@]8ԜвCkbtY* [Lc}!R6&RT͡I륹_mH4k+tF#ƒV EEV$*o!ڢ%ˇ1.HWZ"D.v[|PL1l)S `@ WdC|$#mדW]ZC0ŵ!i>63!Lk !LG &svr-@#]G钠 Qak}C@i-xCd*N%Uԟn :U4TY:K"ΈZ?dlLw5x5OA(xa-kMAjZZtQ kAϼ*PO4CGS_iflB8k=J5qM}q:vgLn:^Z`GŕXpu5{W4A.3'aOg>V'pO3ɺG$ zO7SL7P\66fPQj_nj7XG4ydHuwoǁO 94 )M+VfHf!r}gdNy !ylt G @a nP 42u&ՠ $uYY7j8Yt PG0 5fM&HIpbZwtaxPwr ߇ (x%1-S7n&M ApQj +oR9u4wgj5|wwwh3wr|qEuyKP < .pm$^3؊Npwx 5we~:7JsF}!>6pX +V"uؖ4A]W84|Ҹ`sQ4}d#'#J x*|(@` ƃG6imD5c5JUm B f H U,h)RE#Hv(]ϢvYSwYxP+itWHRrR4KGՈld01pV&xr Љ (UxA 7%y[i,GY ayf9g1 kq p;#ɑrY2py]{@#%zY)lYvHuIli6T R!H'LX? rxH6[I0! a~I,sHIĉC@O R9(K+&f0/Iq2XL$58JӀXqqmYٝp쉁P% Y[*EZ'A PPP0 F?&d焛 J+I Y 0Y#@Ii=Xm7ʦ"~9u_i9Jȣ8q#U.i zJ{*JRA1 h` 0hꦀj   ` HaN7Y2EdR ~}꧂*j| g(Bʭ@V5Wޢ񩩛ʩY*W'j퉪Ѣ CzԙU(Z}WFމŚ eJ `njo &A5or>J+ T  YɓKЋA|T pmHMbnY_/)# l"5#3ryn E"IR}Wf™ d:'";:" Dı { z ,W >ka `P#ҹkbI3%RX>ZQJEnf: d$ ҀP# n+P-[lH}nD}9BD6M!(;OUȐ:V J19RUؾyܦS!Tb#,FK+J] 9)f6*sH6źѕBU \3# !}n\ q ^Ip"] Uqbŋ3~xsƶL |Qʢ eb=qڧ*4+}RHժUܸ Йj])uOw |ZųW.W:Fva@Qj f[|멥Xk0mp|<}S9[IS0dI Uֱ.:ˈ/Lo2r<ȦF.Zɤ*PhK8%֩N@(‰}bh6X`a8 0C;LHgH4SSqŇxl Fp%KS8)!?qjk3Ɩ }'^I+;MT<*)"ĭd*)S8cH96Z'AMLҴx3'} r8#}v*Ս!$Grl!4ʍ85PVrE,LˬLl WΜ?,}IZjl .YlIhdT )26RԢ%* [ZiŕҢl݅* ahVy+cI3(@TTO\Z%,rSg7 I^,.=Wvێ6ciY7GϖoNh4eZE/I[ vfg/ϣWTtaթ7#t%FVTj҈a#=Vq3muQ;kB˞og䄺(/j'']%X^ EԄ&WޯX[/;#}1I1 e~9i& A ]"-j3@Am4[^YL!$T(52TT=8l H|+єz 7,TZk%ky" @*T1.&PG8DЂI>Fm',LFB%e؆ FjN6QR6T8yJIҥJ2Ǿle~N\iPQR֑̂IT"dk[qR,L$Km;R(RC9x% R?VDJyA )tDl`^R\Td*h\PczT)UDl84HZN*f^0sJueZS!i" JzȠ M H3NfY/E0 =IIi>z"^MJ)&Ȃ"<rڷq:G\ tG*No4à'!ê*|bZīeb nS:UԨ1 u+vl>:8 i+^[AxbE+XyPc: p k1Pf,N-˕жGbf^M q;#J[ōFꊑW۠{g:e/،6JHQfm+ U2ވ#W,l\;r|\y`戫Xe0,y LC$nbK|;F)W1wӨfc 2~6IFCӸ6]ǒS~9%<( 9xk"P4w*.ay&/#3Ny[A2UFS3X,L#2|l3##iaӫ3>k*ҿk3ac.wh[!2"jq?{al21 ;lAu ?( ӪsB*k&@@|ڽ+ /QC*h(8l$?&L&Ŀc>,$<8[/+A#!((LC5\Z; 4¦į?hC˄>d;D,"LB:4Ac2A+ͫD%DQt Q\ oPkhm8 z8q}TZ"HHJ5K:[jH'E;$G@8qȭi0%KBfIy$gt>)}\I\D)2qAH2c!:ɯ Ju\ qaq }@̒"Ү}`+\ylʨSGh#˅a^ L`\ 9lMH$LqtǔGgMglGXMJ˺fѿ|ܴ[&ds=܇L܈NLڬM;z`N܇$I 9L3ܫ8=t ^`,9"]Ɖ NLMLPLKXO NjJfѪLTXI@NE}ώZ/Skehs,s,^TPR*uРqc49PU[H[Ε(JK/K"[A~QQNU36 t]B]<fh_M`tLPVu}`|8]ETN?eP-TmmV %4CY35R܈U[vMM P {8,ӍWY 숂ц8֩m3V0 mZnxId`ԏ :ԇtҒ5{҄pIǚYMK32qԟe7= %Ӎ8گPZuΦUէ]ح= Qc=MmeLTM YGeے}R'U'}&TUBW]UՊN]I2N(ZEӎUW ȕ<X]^}ލ^-ބ}۱؈ MƱ`}HL]V},)ۙE*9}WrEpw;U\`u68\^&TNUQd`ݰ`0:xdA-߰ԅ[if5J] ۢsHE V_D[0G΄@5^VUm^CX, н`XnyH|["b3c'e%JqR`ĉc}N `l*|5Źr f'^ N bĿ|uRg(fY5qatn0j88al$f{۪$4Ѧ ^pL;um6oRʰf Q함 >o(&pA=~p70 #a.^1Or%Wrb6?om}->_>f醦qkr(W`dݞ[r5o(/H.(Oq45snhsÆ89s@tsA4/^<_ .E/t mGCtJOrftYMtQ_pqH_sNOuVouW􄠅MOWu[w>kuV/`aocW\vJne'hv5e{2vgjoouv-WjD;G6KbѶq7\"vpnt0q"xv{kJ'^~j9zO7x܈xx4o yahx_sst_yxHQwBnלNvt(q gOzt_`zQ8zzKzzz{{/{?{O{_{o{J8{{t{{{{ƻ{wuo?|O|7a_||ɟ|ʯ|˿|||||}}/}?}O}_}o}}؏}ٟ}گ}ۿ}}}}}~~/~?~O~_~o~~~~~~~~~~/?O_G}"(},h „ 2lA"'Rh"ƌ7r#Ȑ%,i$ʔ*W !,$z H*\ȰÇ#JHq_,XǏ CIɓ(+VHɲ˗0cʜɲJ8sɳO88Jѣ>"]ʴӧPJJ@8jʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ/Xug:4+"X'5D(addڤN(OKfe2P3 25#FhK$n6$T9*t!DȬ:,J;086PcN=䤕UTM>1F8H$1eҔ Y2tI.8*a4en$d#D;hAyb2wAdIqvϢ 9i*AYiAlڬ>*[J2_{aP54M-Bqv+.]m\&d /Eb-,[1S%Ʋcu*"7NM62@i4koB#$<_ ԮW)67FLR6L%AS2O [UMm # *osAHuQN :K@tQȚQѥLuӶLi^bT&n5+/f ]@U:.>rWTx7%1PiHj2neAY"1}7yˎ2BN a6B{+vˮ }Dӥ{bP#[ȓ=Hg1E* 2LPeyA#WD}3 : `$w#5u`\G)#]cÄ ]O"p,!P26VN$HPth H.![u,oun3b5!ը5m\,~"Cx}% ! "cHNǁ*!o$)C$DH|Ώ 3mhj(RNa24EL wh:%b;3!#XE bLkV?k2*!AȀ%" CQLT ֔R%$TCۤObF${&S-NI1Gr F.ʆSӟu(WS#} HfG UÐ dG;$>FFa ADB耈7}{SZ jOi}H $N׷6$BA2"z2Nd,r \VccIKfղǭU7z`%"HLBy-d]u<1DO !@eV$ Uݪ1"u{YU]P#>?_RF=no ݕH*QqBr7ȢЅ>ǦA=m5q}&.5nJ?[8ˋ: ѝ*>p!06TAQSBFF~Ik!չdoCmO}iX@>+!2A:hHQj*`+au!EB|u}LHuAa]U)"A #m@A$k` Br VkK9l9/M43~=~6~QFeV$@(a Cgq7 0!$& 112,9aw HP`\ g@WdEeьiaPeqrq=ie7UwȎW'yLpof ؄? 0,C`$qS7R i09$Z A 9_,ڢ "ER'*程*3J)*Gw7ety( ooE'RIP a  Y &"Z# &zA,RP |A㩎R<@zG6(J*Ф 5 q ʥ J0,`g*w 1% (z q'yz,r~%Wjx-Y s0 4i.jX) xƪ] Zʥ0Q .? qb%XÚÇ  `>)vZj.ym$I P8뚥튪 6*:kJᓊ9 H@FѰ 8IvX )%>ʵ2:4dCDIaC2}?j k˲ 𮫺!bfu-/8P 23%U"~i{R&ΘE9  P( p:!<|z J Q +wYV.,6x/i'tCzuҀaw YK8%#Zs*+a +ϻWy5@<;ymY ;`ސWڬtY] qu:۷Jѐ' (\jX ЬPbl D{4 AX̩(GD++1(kx1G q !\R:!\ ;U{ TJBҰs5[W  a&|u 7],I9]P|[;,H8cx(A$)C丱 Y[ %\# Gk)v !cL(Ȼ!@ Ǒlk l;LрM7<,΢yedYYV9̪#|̺`dμ OP]Jh+{ICٌήTF|# J %df(ZJ*)Z KƤ<Qп˥ɷѥ-a1C! E˳TیI)6s"g`+-J"w,JXlla нL!]k GR=X-J]gFCy \m f6zҩLeFLۡ~Dө֒вˏ]>]ʺǷrkŭ5\V rQmK{h e,l)Zk ?  w oClQ Mə=ӗ ޝ-)ޒ*Ҹ NͰNYKF U_ u` :ύ)bQlTBZ)$^"=*:?n@ޫC >ݖ\`YINZ\ٞp#r \Nie:ߕQ:*5~&:=Zp̬K77ǚݭO*ՂY|3˗"G$)*@0eԣw90 X Mb(ꋻ\ Q' ;e 4K`^[>6! rj Qܽ Ky?Xn[3d^Cykb~ @X,;,#ٺ ݳNE>M^H배ty9 .؎g[>7O7;?ȣ, &/L;໙Qȅ Qjj,>5-A2-2)V$ o ωQ/s!g?^`0*Q? ,rק߱w﫴;R;~Ga* bx@e\ AMCh𠾄E}RhKĈ8dUFKTLV}r&tjm47˨Ɉj %(/U\Hh̘ԃ*úobů]kE˗DU\B :(mr[06u *o}MQG:DŪdjPL:M|&Ηm>jD;SR&0>e\*D5B}Pa^k fme?\y{ۖ:ҽ0kW&NR崁mnb-"UbAB0R&<)ބ#}k\gj)&1d4贶H1|'Hn0jFKi&p^qmp$![x( C' > 7jZq+*jWQ@-s+B|fTDKDJO?ZgiJ[{.%yЁu4knj~(e e7 \JpC+CSRm:vVjI#|q6Okw_vfɮ"~ >S$'Q3-:YD)Nj[,nꩨ5d>Qw]~J+t0Zba("$s$!k¯ geZ 8.]MܨOo[YerZ"~ZcNK2.![ 4{0 NhimPAeۥ(ȭ>hkvRS EJŽdsLs'Nh Nd?4*yQ=M|*q>Iƴ]SH|%FE*#..T;ǴB(w˳'^ s@[=ys*Qڝ%vj'dь |@ ?G|u1B}}& &$P1^#&kKG7Rh2R8{܃gh>*hL 5 `;(%,qiЅ]:ZpM%3$7 [8ddPq DɽlZD'>@[ȨT}L^,/vq4*Wծ-d$3kavI`+0SXER**f0כVDT{@`C1VBj4?#MEBaki#vgHB;[kq(ŊOXuY%.z2w/4Ygz=: 4:V7w۽ZeXEy؄`z%hKJ`'C E:[#E+~ z*}P5k2s01r~/UI-݇V8N% 58"군)F;Cv؞c:ȐXUn{Vd܎1c4c 1Ay K]kX-3^[A >@/2[;3?}g= C?ۿ?skX3k" bɚd` <}z!`(<@AԁKՓA?8?ˆ̿ࣈ>vk(@B"ZBlBGŠP 4^DKĮ0-ʵ6|01 ?L3ˎ0XU d5|8޻Aࣿ;?A"|HFeyh!SDgXD|DkxɢDKJ4 B-4q#@oER,E0A4WlK9f[?tA:?;,*2Q!#<㰿[D[D5ym,rLOH;?1$q=ؓG 4TpWDŽ[<[D}H,?eC 2+6H/S/kB(ieBG,I49 HDdI:ɓ}I\|AAPp$AD,⫏/PL%;[FJchB-,:K 2=CcB44EGp$; ^ý`?F˴:8=㊬JHqQ˪JK+AIP\͓aEM͈I̓O n,hưDϴBLGeyKML∺DP|PGQ#!?ki\:$% =3NkC%<,LT=[2= hP$?LA5{:e2DDJDKTXeIyORZQ$Q [R"LRI,SSeU#cVQ[8=^ѡSH^TM3=f=TT(LLVt0Ռ@ڻK|%cEWCS;e[=lSN5yFQp=~M%;[CS؏Y>U׊8X^ՄU]XXؓi=ٻ8Qe}YLXLOW(W tZYٽWPeu՞U1%ÃH]dWrY|VYH]5۽HZt[8MJou}[5 N?8[CWb[=TE^Hh#í\*Oɽ\7\\̽?]m%Z ]Q"]Mb]܂3] ރC]]-^M^U^}Ne^^M ^=^^h^x5UP5]=_UB^_2ek݇M `/kUv-MA`]Yo# ƪNZC1[@[̵``m`8߃]_`.4~aava b!b".b#>b$Nb%^b&nb'|b)b*b9+b-b.b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^2>f~fh>E4 !, .Zx"LTC9|(\Bo; E!ۇ֢ x2U)s:`>G 5OO6HJ [ӯ`hyhӪZt5IO"ʷo]J!,$|, H*\ȰÇ#JHq ,XǏ CIɓ(=rHɲ˗0cʜJ8sɳO6 JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫUO}&̀́θ*R ہ٨߂T cܤ$0ȠsP"uaa+""{gΈʍԃA;b7pbL@5dB>L61" =8 (@tR99Ж9c䚷]=pby )!)m 2%T8R'AdgA^'*NP I(rYYɐu^*q)L$@7UCK p]ꢰ%9_3+jO;Ĥi!EБ[*42lj1&<َ&d2R8b܆$.CE l~"\nnP,d=I  9\,鋘*,.d \[G>x1LC-rA tkvz A=sBWL C oE.ԨUrJ*v4AsK1J-SY7Z\ǸLA/J'ԍItIM%I`4 ^>q괞:|36CeKd9A yRԥڏɍ ].T`NR:P>M>ܫޡ62Am6,@u/3C2|Kd1rQ/@ض׽l!x&\ ;.X\ED5g֘2u$K@?ܬ{}Gw@e V9 R֢ O~Ȇ |EZU4Qha3,ro J&FdMaC6NF@.AJ8$2(;,Sxx4Jɍ|d.(!ˏ<=y S)ҷJDe2'f g,%'ǑбN䥪HHr{t:iYHK5pXZ` 8)(Fy^5mTy&'B EW kRD6qMDJ`$𕌗kYqrt 3$ >lbZ?'4"|B0K: 4Pg@t 5%7Q9mILT9V}HSa*]Χ.@RsLgc.KVBM UQj4JӯR;AZndDF62C"̉xd_&Y:uĭa X ;HSj~,HAJ4 , I@8X8)XmiM{Z;_v ~%]vx^mhW?!ICM-~` ,Upf1v?hClvA>TJXya#fb涍pT(qxWX A^sܨݾ$dЫ8fUZ["X( P8͡@6Dr)SvD`bk]^ac޹>o:Z)u|;oXۜc3i@_$ɊN52|[F੤`fp4(W 0CP0yD s ^bNn^QAb Hu剄4Kyi3:+q^ cڛ[?$miyL3dL!}2"SOv*i`u{#TH"07(7u{_[}f_P|ercm0{MZVX]Yh frm%oWrG"D`KxEpzY–]Q*={ԧ$ꬸƤZ J9uc"?; iow;USi<]!:m> TݼNQ(%8egzSDz:X̳ϛb睡/N,l߲/YuK^ /wŽ 7bfw 16gsZfjEl ;#xMpgUFZl] sշu9mH=\U-&" u{ A+ q7lh9bOk];Eo݀kHh,GoEQx;^#y _&H_4Ӌyhhzh (xi4=?u8TvӔ D%A!]l}<7xC%f[tXȃgX4Ktrx}XӆVWhutxL F6x[miP%vHB!`WEM$p p J8p}]bYxAڠF>6y]OT]%}WZs}Lu(A)Xv urE A P p߶$ic?7p)I %@ ۰ҩ0Bp }QA5+i )9i]>9%k 驞HfgNDcopӠyyyukzwy׉ imIA BǠ ٛběh7i[wU?6dgm2 k5S AR .Y/Y;QE :Lۀ G)ZN@OMVPZbd6>xѥ` lj sN:S `]  (y0  * Z[y[@ ;HEpě;i!kPYe)fHa m A +j:Yya[D gA V E 7Uհl#O`9y5ZW`_l)p+ᇛ*nym* Auݳ X*A syY@ w̚NJpx^zPh]T ^#` - ׊ i$̀ jʂPU=@ i IzZӠ cRްw-w µ3` If4l]ژʵ0k ť>+XְLՐʂ5Yd BkiD E=`i ǀڴ'KPl)W l)&h" a# )pO;7{})y[ ɧ\)` [¥ Ƞ 0 .pZ z9-3 uǐț'zR0qh˻ +rI 8 ۿDռ3 ;5+(\V8BkdMӠ #z 6W [5M> 4Ң%kY9iIZsDܶiڂ |A:T“K vK , E23>uB0 ļ`M@ ڤ;;T$7G%LVZD Q P~hL y[[Z=:j?+wِA P"k+׻=[ s9,<jqЋF |gI+ y@ zl 4 B*-a RlL[yHᵳ uR V+fLQ-udM$b{=-]IX+ݭiڵp ',!ႊ W l+*ȭȠ ѰKHk m#z+33'_ [`~Ġ î EO`ꫭ  -xWΨ}Bg8 b>ئpM@C yu0 Hj̳G} N.ꐽ+3]ٹ 嚊q5].í9dԮ !"4\K/RY?m= bnW`F\$7؝Ȱd,I~ME[Ҷ|Y !N>ELή T>t3<wmmk^ d u O}eaW{}/.4Dqp+0(ۮ}ܮ׉&^hݎƦGL Iɋ#/}Ԩ%\}!fm4dȶ!DXp2ʔ1x"T\ Gt:VƎPW\3gZDZ>0iS]YkYԪ:V:xf(ҋ {%mw nViwoO+X} [;\bnܛv_}~c(SdlO6]%g߭۔iid^SkיZjGv-T}M}w_tY.&q߅48;i# ֒+,5Ed6dJ&VRp1,,䨲ʩS£䡊T\.; kY QI+MOPR\sF6*Ѧ`)E9@8W, ;\]T!hEA>:TtS_9ШGFM7"bs l?up}@} u=k)U&깤.LDZ@"UFmq#ʓS'+B|5Uq-iTamoO Iv2ݕa9,Oq+s 9$ɩI%7O mQE NpEaK$fmJCVRw,G)\X&-Ѩ>z Ti/'h,pq˵ش"+{l^*AHflDƧ&dRbd>`S&0mB6a}9a=AcS5Q AIs;˹#k]I~bEԝ>:.2I"ߘ' 8K򢐞)ؒRɦTlyW׹Owʎ0 sR[d ߾h sy^๭9 2 _3 kX(1+T1]: d@7Yֹ!e>"z'P^mX%-GN=US5bhB Y]B\D6ϼUf \3"D!-vKms5 Q2nE>Fn,5y\]8/XKET?x2#Х3|E D@ }Af|3)y\EEdmy_gLX ˰9r,l'VF3`#ڎ~Q?H{t}jT>fǺ9{v& pNWzc/= |eN6ݱ=N|u˓+Bt1)F_XMW=ýý}Gy;81YK÷TkkZ'"5j0jx8؎듦 6 908*\ i{? ؽc+?RW1 +;8#2 d8Bb"K2K[ !,*1Cih>3p=5zJ60 A3s*dZ?jCd@"Ŀr5%|&th`:*4˴k ::+0 IE[55嫄W#O@2ظy(FcSA!H4ÑĦ8h4DEK?H"sT UYBK@V.|d@ʇ18ʒnb`$7 ҈;$1!ʯ4HHH@9I2:I$ h1KQA{3O=ǛGB{TUQ*IĘ@}<Fn$!2>AK G8!|<ƽɺqqs$D^tqL\蜛RLE 4BG+R{ .4^jb4 9R."4D|؄AXFD|Gq¶ҘN|8%bNUNi؛LNaQ@8îW02 Ʉ)U hq n`,,4 Dt{"B,zϻO􉩊 ^؋FP!B\N*C fR(/;Pk UkE+2Q'OTș!5: B 鐳/R HIe $s(ʨRŮ)Į[L΁FNk4LɂX 9 Њѧ0 D=>uSBՅ C%D- xhTJT9UFَ\WM.=2L[R;(]N@V@U,n3< 25ë)U0tU ٭em mT jYd%XEaȄ^,X[fdKPSNG8}0׻ ;=F"\Kӧ`e;NQaRU[eB[8ˈ{]+;f[KeFNgVLOp}-\e~熜PRN\r1KZ^Y0.$ДI 1⥳hШg|戯ڢzXhFV9Le^LIn r($e8'%ƕ 5)882P`4I u Q,=g=j2n QIM J3..$]螘jqpvf r }ј{ڋQ cܞ71c UfMhU t 1n2;=,Eqއflfއ~|GF(kQ8M@l->@U,k@6Z1c+%nQE1Jl&>ÎhMn6}&VoJP|& |&{^6mn ٵg=^ ˣEfH0Eg^.g Kn\hn@FbއNllN~՚S($rlwGFb'PU* hX- +&.Epp6*% 4g&W //3s2u0sqW8 WZTIS:D:W)DEG`ؕ]-&Ϳw XBEiFdbuM7>j}Z}hITȆulXwL꩖7uOH91rI cxQ.PuvϸԤ71`mi vݤm-r_XVq/ԗOnwqww 6&?lq5x?q6x$_eziSx?Wڼȸ/2 rC@izyrGEy{婘ys z2/Xwg6jPuW7z0ǭvw[:{E:m?p+, yz0uq'os7j`|䂘_|G%?ܯ/ϗ$N{+Bg}}K }bppq,(NIj(iD@"g"W7n-bW>g7ւ5i{!]b7f02ɓ)\Ȱ>C}f:H)i%Ĕ*2JNȑm !*FD#pٲ1[qU5wv9wV'1QzEBdXa)d'~!dG 8` 9&eiN "Dx4BbSN=t'8=eWDE*>P-7_C'5y%fMgJjyȑ5s GiqPm#K+dK(m_-.6 ,)Dq+fOj։8fJegCΨ^*x *+o"-WꦼRRD5F5C43a*#{N+#kW^9pИ E5c 6 Vx5Ԃ 2-Ȳdd6(VnۓU9uީ)t~8L٢>NX2/{5iݱ]`G^8hmzD/n)bԮ۬ "['3od\ 橄^9E:>(w 1!1FFC1"9؊2Bj>kĥMeqGzWx)'MCuq$ ).W$'9H2EP &>Aa Փ0l~"CF6 >G&hG-D %#C"iЩVɾAd$G4}@p(ʛ *Si Gx%,! VcFBDrXZN6p,IfP}yU0~Ԝ!;X1")F?YHh"/1x%Xk=IZ2P%*[<A:ex$`(L11F c-=Z-Gx/1gtpO(ʻ-5hER'PSEQKF.]0A c84H"]ln8Z)<#N39ZjE#G$+bɒa'*yl5"AAj=LFj8rzNBc͢E)=m5j&Eņ@k~"Ek66J9G\ ΃0",6"S(qF=%V8QdQڈ,cQc}U*٬1ch#*7"_ͥاnjI֝< "&\H:| #n䮝وF q  S@Pԫ.:FDYhd/R[oA-cC6e5k"2+YcʉRQ2a%yĆHIЖ ԩj^s|?իw~ YICVhCM>M.J:O$izi%Yhgft|#GhYvOny;EƵ[D (nG$ݞ;OeL[>zGn۪Srk}6t k%b]nݨ~#;_vIwDLqrײ I.h<"`7o B:<~E{Rbƹx'HѦvݩ9[=r9k#5 s@w^Qgnw>:à{ %Zֿ9i5j>?ssx.RnH9 _^XzJਃ.֕:[愯|Dz}"Gvl#/^ȅ zO1 |{)ޖ p'_LyH滧!DR˗lB_Mr[֪ E(b~+$eisFRV=Df?e_XTX|Ȉ_Q-ٓRM`]HBU 5^H‡ n`}`Zq D -؀ -Bՠ (Q91M` \Z ߬=6Ea!1>[} F^NbZM"HPaQxa!f!radO{aH # GU] FŎԞ{!N3L!-%F,8J.b{p"6a'\A c<"e!Z amc0j$cRE"5^%{ Zm[5A ‘=j6~'7BJp!#3F*NqQ{uՅ!<5`'ac>N1ab_) CHяA Fndu ڥ#pq-D %AB^$ "`EY#N||$bXBR**n2THH$fazڕ1 (hh}‚((|d騏(NQg:(W.(>))F)Vi fn)vSQLҗ)2 h)*ə)) a )橞))**&.*6>*FN*V^*fn*v~*****ƪ*֪*檮**++&.+6>+FN+V^+fn-"÷r"k&++(+֫*DDkG+, !,g H*\Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@+:;(/ѣH*]ʴӧPJJիXʵדCK}gSW۷Kݻxw~K0L^7ذML "ޜg/P.AΝ=6ɍ4n߁U. 2 7غ7Egȑv``ĺUw8n=+_^3zt*]{1Oe>F>uQq|W`q Z4߃7sdQ~YD ԍQpzWGGx5㢋 aaEχ HB"8uދ*dLD,c^aJ8n4Ň h"B[& ))Z-*EDS'\"$وGf'- Q\Pl*&I[zy9QJ\vxg@cLzB&' i@ʕ6Nhdh1V%Rjv q'^Z'v!;dkL3ZHJ$aT9*hDMT{#&`XEŷz䂯<+ߑ6W1N-]FC{Q;Fk]6'[6/Z- 8X"#,QA2;qAzXv "@ MB4'A+4)sea(luDw˧=U һ B"-䯚*[HHJ{ܝȪuK* a$%74AYY-=NmT r;xN||Bmz^qKb^ Y{5;BOdI曣YzB8MΦ~rɠkg=wD{P8 8D)r5J2K˫Ac4F}_" .UsGOME2$4-B`y`Uw~1PG㙺<mf5FRt dL8D4(wQ>U9#^W* H-hjbH!%=m'{$ Sgo>$jO;2u P @%I\;#ZzuXXBH}OhB+~aغV,0Ĕ(oJ%x$Ei0BQܝHVC GT$Cip.'uУ.&-p. lZP٥y=SmBq8JmStl6 y ~If҈qȓQn'K5l"ZHrO r̃D`xcX6ʉNtrcZ >vπ 'IE<.N='+n!II!Iܠ#r##@H|4&="2K:fS+w )D4=i!r7[=Y ,gSA1u~֜ AA1fpP*X>>B́8$0*n79$HG`8u4}"GulO:=Z~l:T½N 9ʞB;em6\ڢq㻞-Bj ev AMho}00Ļr0 Wm.,]ij݄P x4{cSO;Re%h-%A#+^㵬rXc1$e3A;ư]S3@) alwó6rU׋[ʳB-ahGϩc CL5P^nX[]de#j5F11zZ)zsI UXt>CWllFg ҫe1K<_s2 M #=Jи`1}hVblt9]\Dy'CS\3 s:s.y4CIl`kұfZ&d6 իl 1k{/6qrt/ԯ&E3?IqmfP\oo}CIx~:6aqZ cuk/!7Ms: QFk|ԑl3w.[7?Y?؎?tӫtBt21Ί}llḏE=5c%9 OmWq*6"vy]3H1 vn㢕 YJUS?h@?Ⴍf>^͊@K]Vɰ?i_bh:lQeMe31|iwzW|.i G 6g?>bϧbs"q$ C&)t#e,tZKW~abt#f5e"'IwVgDvY GrL -dvE (I ؀^"̠ \ | ;Go)b-0uC_Z;ET h?U^H'dE3\8~Nf8> ~V-bU> ɰ\6n`2aId2AW MXQ;&|vVXWǃʀ _daxoe*ftG^StJ}XdGG4K`o@f'y4HW3+/|ʰ6j|x{XDqaдщrWp `@DV 8Yh}(hՋ|Xt!?ׇsuNݰ )p81ftaUz5t1'(Dž у`&XF.iFax7 ?Pix Bǰ|hLȡ ghKvggIG@~@JI=Gk]&h dyXu!i"/)҅x* igǒQ.9I'M؄`Hȓ?|(ɏ'\hMbeX:Ux9pVb ٕ y-mv~GZ]ҌmI`}b؅cW烴WxQ{yHLh9yɉ;&rɘǰ  Ņ qɑb__IkObՇ>ן]Y` =?{jwDȉ"89XmwW޹7>҅diRNIIIf~lY HUYgPxћx&L jm Zh͹`r]:0z۰dJC:`8$:Y @ cJej ՠ*JTeZl=Euj`bZuyJ` ?dxz&Iيa<w @CǙ{o;Bw !(*@4mUXagV ` =` "Jo@U tP*P ؙZ0z@ ih}2ȇz^ɭ\?PPTc2- \C0 @䬟*r-gDDVFXDGRJE\Jq Vo(LzsڦnʯpZP+;sY*{j-Shs9 W `: bxӒ"fU VNX vH_kVp{mGn[k+!+ $Ke&KP+ BG1+8x,6 N۷!ְ9C?8; (Zu}4O+ְnV+ȧ|q` BIJ0 Zd{)-8莧"jYK-Ao@ 0}kNU ;P{j~?5[ k? ~"ry *wv ? L; ֎ktX |aݶK+0F`c`@ghTV){ : r1LZ똪\EȠ b qV8aG;)q8A[XÛ wz{ ?yȠe1@k_^_U ,m L;kR"2+\Z[!HmP8 P\[S XܠȻ*[,_`J:KƁVȷLÜ ozp@ x!Z !ۭ0 !vJ a?9$Ӵ̉㛐im Ɍ VoC P|Ô%4Vz# a @ƸCk 0 P<Z\Q A,$2xeqݿ.@bOh̊XC><|4LC -\{뻎n,ո^ͰֽA *﮺.N؞ Ô褗ϩݡpq^ ۰8DNr T?=` Q@(&A'=Վ)H|*슥` 13s5?6kݾ;L a=!uk!Bt`ȍ O.O/|oQѶlOZݴEHxqdjeٽi~}XxOs=,NBY^txo8L~#n /0l ڊOAڷ1ǐM8q]„*Npߴ E!5kՔVͥi&ۗGj<6qZ5kA^4m2A]"u}vS9ujĈ=5iuc W֬YPu5\O[o4I\n*2޽ka-5lY3gβq -eWNmޜO_E:&д*UeS!جb"ɑHr$J/U8ȩ!y/\ WB(` G6vYެ^\:C섃޿T91Ƞ 63vrT#RT` #@b7芲i%A3iFɧVJJ)us!l/25[;^"^YKu@^gcr%M#NaώR "?SF'lHHFR6% EDd%=mPLطp\cQDj-Wy ,;0'9c1_F p'm |6G%Z#LɃ݄ ;s+BF#W5?t ٫ 1tSuVvPZp躙TT\y-]s"[+EH>kʯԹt:#zVNQQDMbAE4UP yhA˘]5iHx܇=" I.P="^YBXVTЙnOեِS-U\.d/A$Cgb yִ`S\^F&L*WW?adtVv*(]Jd)SN aNxg=]NNXXHxKWbe=EF1X&]R4; 6h=RYқ 8IV""^7iyTP\*yɉ*.5P3PGmu|UfN.ΛOˍp1VZ?F[Bӌ>q*I&0g,qp N1o(ەsyj$i'O5%r a=k2܂?z&\ w1#&wXG|vBjxN2kc[<|B8FNdg(ԣ>v(u^W/*Zr[#GENzpHO9O(3. o`lm6>V1rhzqԶ!WGA+Qm L߽!Sy4փ:ܷ(:,57P41AU0 +HQ 83/;y`>(>iB}ж"}9n}L?qSdH7w+I*Zr:x (9 y@D̾ A[G,(9Pq% hW<ȁ$IȄ] kUF Ю:ÆɐIĨFɬĩ:tԅđ|A QGvJ D&-FŦ,E@} ը+ZDK0E4Xk)<.\S L˴ lư'XoCKtL,L0-ӴTX1Я, 1<02tPB}EQP 9 EoyhSoFG15QXӕk}lCB %90}@φ 1]i(O& ~y)=$Q$UL"!az>k"CA> !5'Eŵ+@6)!J+⦭bb}b -`0cJcU6n}cRB ࡅ;\%Lc>Nc@vd/K0x][V'QK'eUd ֎ !sb8 7>amfXe< XfuZ1hADfWX3a`zV\]Fd TH/gVE$ecQUco%K ܲBq>ه lmBu@YFwf|F|؆=|4xWOx`HdKFZXh?NfRFaɲl~ㆠB&ioBD,jPPx?DvF7e|uN'y"iL+Y. 9B+b9VhUcnQVejއF%¿)$.Isg>ۭag 6[/ɥd5i2٠>V76lflƞĦh>U%PnPx,ouXihg>no>bwRDVO TOu^+G %\pw~ZuoA:?`GxIkDk8U`xbOK ifb",vc[6?7lb6 ~ 7BpyhqhBLw|6)p~7uxV"puqu2@pϑox98 VV{c9-!mj 7fA>wt74j/|)y_|Ǒ?}wY/ƀOzqA9xP "ah5ܠ@Y q}ڧ}XR,c"l谡UŚH1־Xc,Y"ei$JYG2T2gҬ)S}̉N$͙IܸJ[TL4 >P^#WҢf,i[_YkrVV.޻t-l0mR1dR 1"C6ܙкL2C˔OGzB ]wl6nPf3qn4ϟq jSN:u_UWk}رѦ'w׳;ݲ>~5eD8rdvZc@mg (сVm F b[n!Lԛp)h>Ƶq(NpC9G$GMS:Y$Tqw߁%|dޒѵYd2%Yibdg` rh !VVQ,e8lTN)-"0)(8Spf0&7#P4WTM9B$u97dWFz$5ѨgWG*f!fߔWؙؖ h n&g& PGIbvR؛0(oȨ HQIe$FBJdF"jK4ko֪ϭlVd%zFҒ⛵GN-r>*c;jtvfV#Vz;o(sab*࿛54p\+HB,mFKK1rt!&ck(, 5Ls{ʸ=3̓f6D?7]l0vG#,o$:m%6x1UmrX LSI5S>$6y#N9nW۱.i75G[N7wwH!쉊G;V;[\z,=sh)Ƞ73]rO}~ߜξb7Yx7PqyF'YoE) dkJ1σTR:o2 ;l?yiW6BH@JC dI҂\L$ R{5\1Yq|$FH} 92c3 N鸷 E4"A> jR(1*drjt(jRg>dEYMi(0l\YHCW鱎3aJ2XC|AȐl#Hp,^%ǽBs2d;62}I#amf3 8K:'[nC0\r=DN7QSd0 5L`&܊//:s#Si.@–57B'TFF(Cts#|i8&N&Ք !PD5(3q(+J';9qk@b_Nq;JBut594n$[ݨHQye%iX}*nukR%;]ʒ=Mdl*XLLXrEUNEPU(BCFjaFմMsfnCrWYk[5vzHGKd#|=J[jLX1t"N1n$kzDg&*hHIԘl [1[zȶ)mgHJ[>& [miH|֔ȕr{B$)AAMT$\ľ"1fʌcqySbi$5^f+.ΣX$ Dd4/%8\hT0 *B9ֹ>_cP=Pn92N3ʝHe4Cpۉ! u@4^W:[dȺ -LȴH&SZ81"){f.uceq\a꾌> S&f2Uڻ2K޾s9)B\LjyVQrϚHvrM&"VBեj̜ERfP1~Te|&'*Xhb;d3~[~tzj۝ljcn&:9n$),MÌ9shs"*̈́Fއ{S 3uku3-}x{&[7ZZ#,HN9bk}bX?W\ #bѓ^d%qش&mKb1 E`nQZ_8}]EU]IԜF_ TA'Ԅ%Pޒ%M^ل=`o!ܣ=A.abU rLMb MD_H*܁PI}#^h6KlU q] VMWT!]_NL@لmQ}ᠤKAL=\\aRZ.!u-W4eى^\]NY 2 /%ZaEq"a' (FڅF`-؉PYLD " B#q[.b, .o="i"0#124^L"e|5׎,K9b8&#AZO!%UbA' fCH: J=o^#M9D9IW)F'o)\ QdMcN=֔"?>b#HJ >턶̈́qa:ΤI# ] hcXV  $Q)ƐQAa9SBeqcK!ٵ`*z%$XJ˕M-T1eS] JfU]JMMbe^N2a!q%eIcZ`d&(⟊ʷRq֜eiE ԉcA֥kcvI3las5 z& U-a!Fdq2I"grNMtF9@ nbT `ԤiwfxjSΥFydqu5=ה1RaNj~΄7&%TLevpL\W@hN&qQyh&ŨTzVfid5OШiK d'9dt](a(&f(!gFvVnD>!fZz) *FW`](TP#4kiFjxhZ['4gVF@)Ff^p,"jrj]Mdd*o'#-FxjN`i*j2nԛ*ZW!Rj*v6>5EVZc)Mg.Rڷ:Cgf+ZKj櫾++,,&.,6>,FN,2+^,NMf,v~,ȆȎl*ɞ,ʦ*l,B,֬,,,--&.-6>-FN-V^-fn-v~-؆؎-ٖٞ-ڦڮ-۶۾-ƭ-֭--6췆k:-.&..6.FN.V^.fn!.v~.膮.閮.v.,e@!,R} H*\ȰÇ#JH6m/VȱǏ CII f;ɲ˗0cʜr%͛8sɳ} JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNzg[νf [; ҫW0yco@I'm$9#B:ǞC%A_77`K$>$`3 H L$A Qf@.hj3 (3/cL1SP+g$ʘ!W%)P5>Ӏ9(b3=ɗ7 zd QdY,Ny T" ;tc'Q%ٍNVHY7G;c)P1L+C'H>LJS ッQl>JqVZ[&D))l+#02, (!쳳FejPn \*0 ZpC 7,!4.rdTNZ{׈@$ܐ+՜P/bt. ߙ)OTP93CĺVm)w麌+0}ҟzsG\s-5P4HsDp@ꈭ+G x" +ڨPx<^x6sP ֽ98HJs HkO_8AfAL(уCyG&ސ I2pb=Hz6V'!|HN;jG_\ !ئ,#vB&c` 7̞@ 8 y M I+ 3R(P(TS@eJ֐!n$Jìs"3q?}x 39I)oegvf2v072>Usy6t=8͑mCN6wfecϴ򬏃Lh*L$ Z1<`" N+]> n,JدUwmeaCmkCs] ɶB^<H=|IQEIh M] _>aGJVUu @*)CiUh6>zëF8D5u~*ͻ}s3u;>3Ex49~x+fvh# upgnʹ(!lsC ܜ;#,j{솥My;8= ۪Gl2da]Kv93ugX˰i1}D $#s:}y85DS׆rC,3覴r6\qyW8pB]7[c}hdJ>&İU1%m!v{mWgC i'uz9rFPV`("fuJ}e!FsuXFW[wyy^rOr/#?uWz 9 Eguݶz'c0aRj'r{bGh×wgIaG|jחGGxsDE}jjy`E~'fbutvu!l*'B*'a"|8!1Fo+h @/~ 0 )>#cyiU W)C ^*Zf-(Q(XB 3ĕ9zGn1 67ޗ Ԁs)kًv6fXې9 -zy}W 4p~`Iۀ dps ĐPIF6p '7 SIm+U!Q3< (Sir3թ4yiKXrV4Wsd噜Qifjj04 9kU}/ >'u0Z0 `U r | h )o3B Y&j`IhR41JFXAр - Z"* 1*vٌn pǹC@ ,ʇt%:J3${ꥊ 7 \b∟UJ5l: ;+401Q9j֩@PjV/gz}v}Qwoчoʧ*ȇ樏JbYZU9zfx *C SS 4@a?1o8Aa !5y Z: j})8aP rpx9v:ڬ[ Uk;wdk^#=u @]Vʡ %{IS TH_ Y86d36s S p)tf@Vij* j]Z+WI9ɍ 3 8Ķ򀷗9b An( JL<Ӱ h ƗS;ndDP Ikc dD  H~hf!ˡsiɹj wrut{yz˷lpziW?*5LYʸѪÓ Hh+g Krd %;u8N"E $Ԁ] 0 j4pn%x@Of + =p9,};CL `4D)D;D 0(kTr ,Fۑ\0ʻʨy4 ` lթ0̯a1 К+FQCq "PmN݀S] XZԐU_? @! >蓽 !q.t^'E{xm]|1z.wkF 8.3 '[9]&&O2D2.^ ĵ؎ǰ}`Dxm{J _>PO ?S/ ^K%.{~iݵ[ :^>S] kӴI, ~ t?o}%˷oEK81"Ƌ EHT 1e҉*URbI?:Ux'S\*`MߴmKL*S]xR`%I{|M0LVSPiY;ZweE@YYisUW8v 1{} T*,nV`% V`qa3k]G8/'Dr.}4NHI'C1]FYw@a &BDvK~q$?F!a*{Zfk4k8pͫ,g7lK[٧%Ydj]X% 5rHp#I\n%:.m ?F(UW<|",U$o^I笲VVNKg%|JxK@Mw]Q&PM$20 4F L8 Ioz>yBRR.t VHr8 9$~ &R?$raa"G$c rqt'_IK&,!biAh\R9N#H,IR/&*nb,1g:Q/82Z-wdD, u G~` 変RS${ ë͓R.vxmMglLO\qŗ>NRÐPA ,"pH>083Rr@″"Hn3A}x_|3dXNYaHOXaZ8yBvK\\ %.۠κN*d.s>q aRH0̌AN&g6Grpr&X\`YشKW ?]mQ&`qWD|-#Q䧅W2!Oҳ:>* aZ=L d4(XCiTDH>,-KİbRUpDjA)qٮOC eK8+q=`/{_T3=R[Ԣ!-i^OdSغGdƙ l ɕI_.Ńx\o*ZcIdӾjð˿$+N1;ubZYlIqxfdl\c;w5 *:G6Ve2z(ŋfs 3Mli0h SIjmP)s*5ش}|sFb()fqS4ܒP2#.|hI@noF<({̳.ުE)O(+Q`,kyЛʼnKRu&3]'kECͫZs i:4b瑬8!c.NJSuwgD!iI8!eC'/7*VұL(pU-)8Z6X[0b;szÆ5>l̃ ĒVEṥ5.tC,,l^'"^=r \]7 xDMDTG]Y$arG_pd旤 uo=(|S4Ew"b3ۇrtƉXgm|$+i' :nx3k͒GJ)uMWz>`{?`4Hv=hWkA kQ#AaGכX~$V<4ç6Ϲox%lXuX =}lYCU\?+cO!UpdrpzC=۫> n88f ih>􈅡X9UX1o$>;ñ3(4RZ"z ?(۷k¯\={$@2# kqZ8 CBڇ8`޻ ĥ .t66$ 6-,C󠬫 XABx=#ҿ# [c2`&\ಅkU '`@./| XB l2@4ZE{C{Aӝ_ x zB]Alkز&%nYĹB), GӇaLG(ER"UjYE3$?öhyE>xC ɒȄk!%`FbD\ :`Fk3cFk 61 .[h"Ǒ oyxI>}`GO xU%`X~ZN Fa,H`4FjJH }7Jɶ8By@7ckنRĖR4zxlkōǠJ8PP̢$}0 d;я\uʼ0*{ |FȮq\ y3ٶdM}  xJ_\ u`u4LWXt3D܆t8|`/3yƕp; >QO@I@۶?7LlTPC" tu({R 4ؒ|@W@l N3Op){ mXщhLu(iuNd9&mRZO268DL\9R  5s?:|ɕ5 U- "}#y) ӼSSiؔlTxTH5eS';3ċG05A 3x]l9MmӶ@:AMO{ULv:'V|T}XELT[SOTQUPR5T lU X:YJ! `H^#T2/]sVp˄I4 fmø֞LOu[yÞȄE q u1>vtuu([s|"Y%u@&B e}#J,]P UjҸVl% żɾ9|X Rxь2@sݲHYjPK TXMD O4ZTXTV-2U3S)rP…`X FM[RdžP}hl/f~}`f]iƥkeӤhV-_4eRN=t\9'o`^-gMgv3j2Nk}bc/lhkKF脆c-%b*Ȏ vkmj"nm^_iV;0NZbJd[v2 l3F;׉KjEcjKkK#Ly6mmc Oj^ne_!i+w[{eF?l"@ dfChhuà 'k- i 9 l(o.7:ueG[>C(4ip]ѦiVV@hT]Fj+R&?.o_q7t֕ W<nAIqnLdq~,e{@fO%Zu>ڡ]'7[1D,Fv;چ΋^yI~1OlX6 k],f>rC<@m.dAuR(xQ؇y&To9 I 7b'}hL7 ohaqqZ}vhpOPX juxk/'$#uӉߚV'wOgwuVv/7agrJyW7;^to)ON֞|_ZJ1C\[fozW`:>b,?sy,7YNrFxeWŜX4x4wd$5.İPfj9[zr_k.!>{^7r#s=Eñ we^ﬦHX\S9dWaaY4~T/t/LΏlUZ_}-ߝG^^|y?/E8\n{GkPOi ^Vf 6k2YP [aCR hŌ7Z%#Ȑ"Gf4⸔kII2GvR˖7wLoşeJZ}jUTjWGUƒ%*ZӲm@[r- ^-!ą - >#nQ9R>N;=fN<)S^mcDt iPֲZ_w [Yu0ºƥw [;xD]Ș!OZFsWB,ÜC4k$ MOiS⽷O$E\Upd,Ģr5s%W(XuADEԁ'Gh؀(EfNh-Hs|vS9Hsj;HЕ,=Z-R,m^"( x-"7'u9?jT>@B{$RD5T^j$Nި):bJR ɖ*U'\!^$DE(庑%zztN|jM=$ujiFLqDe8CnVI t ŚQrg#E"E[*Փz!ipA l6,M][/P3D.qKA\FQ'#ѫ%T6Z8"߽kKpU>U;X3ϕuw ѻQ|5Ņˏ%E3Q=YY{PzZDΖ?&ysL-R+FVC'oMP'9F^y cFPB{]x,m(^='Sm"Fv:>}_D+7^{{D؅ R.hQ火Wہ$8yu($PP67R%~C+{v"d;F'Q2J5¬fmVB~_FFH '"ZIN(Vj2+ 3qmRKj(ãD@(}1~"b$BL."G×PK+Ᏻ65)&]|B܇)4#ٕdB&c`F&H&RFЌ[(Ant|ch5ŒΎWaH9?6IW94υG #DF,7BBKҒ$>0+r,Y#. Tn<ԥF6ЙLN%If2(:9'uA,ΐ̒#:}F|a?Sɀ"%"6}(HItΈEPpECzqcAEE" K[2%4$L7R1}^Ӝ0ԥĨ*KMO@!aCbi2NUaZ>`:OL!ZE >UkN}З_YwZ&BqFe"]ENX\4i̖+-FH6F,> KĆ~,b+NMrDP*g3Y4F=E۠ϲ"FQTRpūjTuTLgl{QLd"\P;}7YⒺ.LK^Usu#RU$ϻk]A;]v/5o3 g} sbVC,b'tG(5'^1c|I6%,?%Ë},!,D>2%3N~2lGKV2G,syT2,1f>3e4n~3,9ӹv3=~3-AІ>4E3ю~4#-ISҖ43MsӞ4C-QԦ>5SUծ~5c-YӺֶ5s]׾5-aXľ򚏭e3~6-ifԮ/bk;Y&-q$>wn;!,R H*\ȰÇ#JH7)jȱǏ CIɁ ^<ɲ˗0cʜr%͛8sɳʔ> JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KƩ&k΋Y͠fMҨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOפ˟O!/^a(L4; `l찳: E>*v!G ^gn!bRJ6 "|)daB!4Pԍ@/HiqJ3>TC+ 9PTV.eHFYOcX6hfuOndѐsch ITfZ̈́3kfs@I6%FV@>ĥ})3ȋ4YP5&H&(Hՙ)rVSxb)SU& ERb4Q,/ : vhz.͏:N ^t0:jRC\oA"k,A !N M KpO+/LZkҵ/qDR:V(;+z*KDO;<,rhFg 0#%"2,F]@pK 1#15>WMisy"$bBNE|*!ښ*iQHs\Bf'A\P߹P&rΔpdMnJ*^PYpX>ȏe#T8t%&fo 1bLd3L=39MZ8tN8ذIQoʎ]ڧU)yI bL^g"C1f?QV ^k.ݹ-L4d:H(TQWk,.f-@V$b,CLb/"8&Ĕ)A:HHkBFɞl\'d 6!P{7Վn"JJK\ѠN*ta2i|r՗TZֵ]_ЇjWZ 1*|]H60L~+1TiH6 Lq GIZLFbމ#v][݉Xg:Vݔ*mO՛Zֵ֮v-Z0C_m$귶'o=wOmQ:N0+0> dNq dCuO.r78,LX'd5H?): wJd>uF{ݫ"T!̚td*rCM}$Yʏ 2`]QU 䰘Ka(F]/e r✐W w6Nb53rl_"=1B $낡qpkd%-rnC3 )-##4G>f9fJ6%5ey)!"-&_g@6m'_zɅίB-y}']#_{X|2*3W".zƑauZǠбq8z̳&ab[ uP@ːV;LUA@B ]6DŽCV|=޸ǻemDӬ`*2!.>k|W"E0׉MbJ8C9QL(^^ Ԡ_][b[LyےikWyu$љ8Ƿ3Y{9wPX٥4PFmf6gvY}_H/jA&93Nxx lH:.AP~m^iASW<} $#\}shD覚it-{f^}Iq??d8Y ]wȆdH}=vW|FM mvF4&`KF}+? }"*ے$Bu1}5]uK2Gs԰~9za6{ư~Tb S5S$H7-poEݗC!&T|K6yFh[m<(շ|RqFנ fm Bc=(2gYf1 nGcfւzwg.c 'a ZMO7$'P^?*EDGy|iZք=^7KyMTttDUb g^憨bV~k,XCB,ad%ƴ) @S44QiۇxxJxSlv_u˘yMk24A~nHbo^fxojȂH~w! aI6_ 3 7X 60 (2XuMX耐(_u=|ɕhalC؍|.&YX i Po] (b?׊ ,ي])F Pdp ؏*|(2@ʰ|ll^mi V`x\=gF00fp,1iY&l$0(9d$5V¶6ʠ HM۸\3xuRIǘ ׀Mؕ<r f)dl(wisK 2 6%6YvȓFQ z" 4Z8i Y蜒R9ɉ&X` vdɑX PP`p&s=hVURيry@@ ģ9s z9V8Giɍy|X[-GyZJwvvm!0 v[ m݋}ՠ!sUkL(p e =4McoܫV1Z}ǦQ%&,ڪ ܾ Na^^,q $!s+; 6ʼN~՛& sD稗>Nc| R@ZK]b ^ۀ4w` 0m ۾=! \.n' `ñ&7 ޺5 #*G)جUӉ %,C,4g /ٍˤ pݹۂZ a~q,JN.P µ Z ܰ.^n̺6\Zt1bck R것=Ǚ հyN|G e ;;04ĊI)s >ښ˝mE  2M!۹_& jvo=w8RzΊ-nnu~ `@s.e }ڠAXVr /skъ.ZOE4XZPϩ&  o h( Pm< &q QjrjL˛r *詖<9o q/?I5>_s^<Acm MV  W־}.dp[A!ʳb-5bPbAy2Z܇I)UTyIKXvw.99u'cDq^C.Q.Uu*R2ӞꋆWaQ{Yi{JZjΕ[ڴ|?9K2e  پ$yc,~gB^ -Tf0:UTod1jYb3]vL+eܷ7Nx[&9u)QWmb;4d%}SxZ[ޮ]+L0[;ֆ\qeﻬ+38lwB)*XZ#Z:*K%P"bͦv'1Z )[p%2}r*^QU,K ~1-)o*a/%lϾNLA]Yd;$,RP"d{0%k|j>MdʍuRgVQOTPajE2QLƏs>DR"t< Ј{E!<."j3,,*z8tQ-`@@Uu".XbQՏ9Xl" gg:yc!?ULDWFE-ZK+pD>JԟHTvU9Va`" TMߍv\^cAMeo"cf7i-HjOBt*T<>Ij"tD%SK.,: ߏ%_lJ0]>xFic<⧌HcHxmUvcXmNh%IUWn[D(f- sWwڇ؈>di)VeQqxT\Eț"TOp_Vem!U%m"Y_WRVN:iV%q' ':Ap@yepkO~9|'cQrɵ"H:XρNtSH|8c:V6ֻb4"!A#pYG(XҼy2v"=}$A>xP$|R,~$Ԃ2MRudI2[h!jcj@W(#,dHSi#`-V&R'T"OiS -R=(Y1N1%TU'.P2[%T:r5 Hh}T.t,2_AH|'"5bB$A^Hv[YZC$g5)I^(<ܤ'7z&Yڄa)G2)@E+#71$#פDKzd &B$cMIEÒ[Bl 4S!BjE`% j&8I"d+4Z$k2FqgKʓo<`>qDu%?IYJ~;AR8UbXLPVUsڊcxݓ#dh⤩P*k~uޘ7`X>!NIF@] g;kb'D&CDUZ8!L֪L766ySADl,-ZC٫HȚ&ЍI-bاD!@q RɆS"ҰeOhdEYJc8i(N{ok_VuL-ct, NP'b/$EFa G4 my͋Ԧ-/fI )q|ߔL|JYԓUMDԠdfc ~$;C|܎Zi.IwX#9H!rQʌ]1^ɎLvk\tFJ(ވײ:=g)yɆU}C)I$2Fyވml% -ʼǔwXڸ޲a=m̂PC&YR X]ֈ<^rZ˪!?aN!)qBl꘴x\L|p9k]yl%7ʐ~tޱFM1 #$!!"Dp%4*BpR {|/u#K|Qs-G;"$ UG.d*/H9W*6{{ɟu<'Nэa]!|]/S%ۚ~Ӝβ:^Eo=NɎz|ǀWO9JaK?>Xt:_{ 5|[H$MIw^B>7BV^g# يy%_Au/F5KZ#=_O! rpu83> 曈D}H#b# _+O>@)Z@!!! +3!PC=ՋsPsAA!?m @H}*y ;X@{> ԇ҈R @@ȳ ܾ! 2A@ԇ5`[Hs"dhA­h"/D“ڠ;\B*@b:YBPt0CC"C9b 뛍}HcRE,òq8*\t8J ?8@Q8 KLӇܣXl탮e$/ X)}G{D:]\/\܇[_H FAܘ;;h܊$ÐN2SDj*AWFS['0A E"ǣk$ Dǣ3Ơ7w4>,,SA~Ik뺃 ;hؘ'I䛻rȖt7 @4ڠ>AD!⑰eܫE8͞dY0Dj9L D*ًDr܈N}ĩD_yˤGt\EE,HJJjݤ |OՇ{@\*/jXk-8ovi6""luȵ =W>@jٻW츜lȾnglmdn&]Iff LڱF땰6kkndcmgq{fHb?=315&캥n\:޺`-n6oRNtEhFr.' tJLt %Vo9V9_uKg7?Rv&fovX%Z'r'ztCv`_TJ-oc1avmtlUmFPk *u?OP wn=]wꠝv$k|afL~)k4rPg9^xXwnrdu?%_+w_G#B4k71̙)Vh߳7%Kg҈xaAlax_ݥgzd(IA-d0o3WZlٖVyOm9{k8=I{o`:n\t)',o.$򧧍>h'lQt 2v7v;\R`!{yWǂe/V"R@}d]fuw.pd].%v}8 UQ}ugp .LP8'*hL62Ő"Ez+OƔ=4$Dr2g^,97rσ S+jhH<R%Vrq©Ru٬ 16ڸr4q.‡"Q%ǸxKKxJSfH%s48>׀ ?+Z 媵YGӺ{_D+/, Č yq1l[7m$Au>4nX>Zj†W5Qi qJ48vpA7t FA gP݉gFi(B>hX^Uex_j,7kr~x!qP4` x`Ee\TdIOӉb5x4bQ1Bxn]lZ݈n@Ei\Gee(6H4ET%Sse؏Xpp!6VG[(fb*Y3.4'^oDbA㠂 K>7MSVyв7=fRJajm5b"(AނOvVhS1T O/ƪjYw+-Yq\YI| E4- (Tٳ3E[llːzmJ+TKWP~5쪽ѿ+DT+8:qӒa0qONT2u֑vb")<6-#WMɩPaA~x w^-7RKC 1 m7uyd[F"s 6Vckv*Ԋ7>Uj-Wݦ&V3_yrE iL:g`ıB:%AO'LJ5] dB˵;SS:Y *͞S}{rǍsE dbIWg'$>qBe-' 29E0.3D Bb( Q*I!}-yAf'^~۬vs;-&"<ў2 84A`ed-q',\ȞJ 9$xX)C%V|"D]~Z4avd.:T)sg\Pt Pud(J.)rJD yB b$ qL.sTg'M4@#hA=rJdB!9AS̴"D.&bݨ hBS-j2ҖR-))K ufPeUqTS4FS<+3mR\!]پ6!,Y"i0Qj\04 3׼RSDY,+ޛ(z؎$MbIpN\2Z|imr[ki m"B`vI-Cf5̬~fp.v֠<*p-QK(†!(<-KF׶ei$LHת0}0pVno4WݤU'VBb~:! ̸|CؼLjyGԹ~i_Lu2VmL2p}ּ)VL+er "ctt/D]ab2BrG[g%[aujf.Y)u ca ָqt3$VfRD$W>,0V]s^?FDtvc뼕04}+Nˠ~5CQ;?9oXt8ѾV \º.U 0&\iwȾn\^/&q.#kIwE-4q˅,sv}ry .4{SҸ}6K_lQ4z1u8^^G8f'dMk[h2?a:8JqE/ၷdlTy9}!Eһ\Y˸.j}EQ6yGX} FN V^ fn v~  Ơ ֠  )`!tBC!>!F!V!5^@!,im H*\ȰÇ#J(}QȱǏ CII^<ɲ˗0cʜI͛8sɳϟ@ mѣH*5>KJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOyΛNؿW-Vo쬿b1A mӬZ]36c̅iJ*4XV3Px#S>+183dqb ^$"Y$1.C26&`R;r\Qx6sL;ɘxOBU3sP>lI؂%HҒ9yH1$$.b75X3,D.F%jQ ExBy:TOB4dbEj\>> 3 %MAzjKȣ*1.Y$t-ӬHlW̭6>$ D YJAb&EjfAp6R;rmAj̋W2 35 C$ԮBf2N*+XJ`bCL+[)#rC%qAkl-BƸ>Y4' IZOS 1t1/ q|p%KP36 \P=YеQ;BNCD6A$J=13$#/̅P't3k?=Q.Ɍ<5 aб7qv(L2R+Z @C.ɽe.'An@/|*v L|G{H3 +gSw43FL'mdڅo^1ßQ*8cϘ9z_k\/{^C~!ޣP2 lH A9oc6-#~hb<-*C+vc G2AmlBNWhÁ::бWD! ՟fiN|61Vda8Dd ! 9Pc?ױiآ4 ?UI!x*\ !ЫBN#z#O6uI!"7 &RLƶSIjpR!2'"D0HL-Z8hHhBh RH ex)IVrA.xI3"d689rD+$-d*c2|lc@Wb [o*q"5qKH4be@JDԘ' dɥɨ#:LH>A:i' !*$:A:ȑS0P'EQt$(G %pGSa-ç6 uQJdF= ҙH^q tkR\R5W:l0,A ;muu23 NJKHgcHE6ỹt }8!X@Y1eD؁ oܮJ?{ˬX#Z BoUjGd ܮrk.K2! o 5G TUeT#0< d+Vɹ5࿮=H5f4 $>^ B1T&c1݁ȣr%Hnk2dB toWK3L2.rˬuP#HFnujT!.3%eBOdGKѳY%QɒaNfkWo#M僸 +I&1]jC!:4"2^ [2 ;H*ه5|k(#gePjԶXrbD0 qDǣ "U ŝċ }c *TIMmI5hFv TUFVͪuC5(l.q]>B\1=I}X*!H@䫓akky/ ~1 j'Vd6~>]{ۻ8xdõh[q R ]'$yŘa]$aV[ ҈@..G PHY Ap8ȳA0.kI`)*12D"(@ $b9]EXDWH4Vm-z89]{N@<%B&Nj(ՇC'*BEl ‡KGdb(c١/$H#rc"UB_ݺrB;w=Ē~hlA ↠x{)]P}7rP|uz !~vl;M !vq @xal0|7(W g hPyY xiKXd?t a,ЅD ATb'|&(_.'uo \ _HiW%,0AnEw\jZjX t6@_@bMxa}[Yg 8ykS[u:+ȁ : Y)XGj8JэJ׆у q88-v|&<Nql4 at8(0DxYw ]%|} oA (JGE2a aqPzV}A~vvpz`hՀH6w\(g7CHY??A``xa0p 7&Y%a o(@hexx} /0 0Lfg!Htv6\Ih"*)YgeID%ю@?逦5qG Ly ywp+ɂ :Q#1CH)Y pʹѰdbdVM﹈yW0 ǙX>]TzZE~ D:ZD&( !vuƩ i&Q7*{x( g 6%79.U(3u4gѣPVz $Jz?gJђ-j6!56| vzYO_ʡק19Qю<1-j=yik\k`jZZhȧa azxZEbJ] ,Jk= ]J(ʡ?:KѪ4n Y٨5Z"H`Pjᚭ a>xobj;Tʦvաzz8!Wy;cѬ9|q~2>y +j?:q(j/K3k mw $XELQʠp;Ƿ+A:fS+ZP [ɸM:DK[%,qȴNcPbPxN9ȉp jZC yPqR `Zk$!W|ˡ ˛i !?ڶKj0 !!cW])(YڹKKjzѶ*+5+`k=[ ;Uur! = qʲYQ a h[g@X!  a!Q' ik6*ۼR1`& ; j -q c!;"\k)4 4W.0Nx6a!a ;,@ʠ[^lc|aP% zWL bȠ*VN(*~z)x\1   㐟7•+s|k:x*Z'e $ZC LdlEF[ `T; o尙\_y@|r(ȁjt5G| p`pWaj3y𰙛)H_0̠|ܲ~1 jQk Qĩθ6p%-iW,<pƙ\ VN ˬ& ȍ 6x+@ MZ a]w,+@piWggܡ Zt{hVMr \LM Q]7ՄM  pA%q+`{}2a!1\Eң2֋\`{rB]I! qϿ}̉=e m,AV̒qK-1K! 4a \3vթ! ۷r~==c2$j fj cHLA zƜo,MY [+pYմ UwEUKҰ\` \ HQPMb~̢3\mpR0:`C=԰*M^ +!/\@I16<`5S 6N]@b^ Hᤶ@੻lڽ↾v|U ip>~kuM }ޭ駞]>1;yn< @. ۍ<nbh-A>a$.빾M̼(l!^bo!AB .N-(u>;[@H>bx.} ?վ8\#3_0!?&?= 5] 1>=|0дٞ~-9[1k0 hNO;Y5Sa6Q?3qDNC/a/xfO|o~t? p >'!8Q, ފS;̔_XUOj~鼟-v[)- ! ɿ11Qv{ Q2__?M|#XAD%dŋ0"VPFAHT&7 `ʛ( .I0gO~*(pP#+sqbҞ6ڰd$jP㾭ZvI,C A,TQKm&CK`؃+ 8ݐvMs>ȑ#d[pqRf3Yg^T).4tzPI3JoއG^6qA.zgs{2qٵo0M={OC$xb:>FßW|K@lC;Ⱦt5l0t"*CCBuZ}2LqjDcQƩh4D J mrH"(G R:E%c>Q>1Z2! ΰҾrM6I'S$A(;(3QS5dSK?C6$k(H8@>k4쀃T {<ёÔ74ɚQrЃL/N6%UXE4u@ocu[}uW^:Q;YBWdEX5VYh;}upXE6-T2ZϚRV[p%WUw]vu]x\y^|eZl-Ԫrw` 6`VxaCahb8-cC.r{=~7̤aXR I/v-Iesmf޹rzhğaZiw>)zkk{l^&lV{mvm{nn{oo!,ky H*\ȰÇ#JH 3jȱǏ CIɓ(S\ɲ˗0cʜIË6sɳKm@JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËӫ_Ͼ=ZgcvƬ>3ٲŗxں~5F>C q4ӌ1Q1 |Zq!NiEWr 2B !QxYh:,1D#(ֆW!A cM0NH?NNBdjQ2B6 QC 19mW}A̶ g>n"š_ˬCgw&[{) ӡ[iPTVABV>d 6v<fD*J*2!i s5֫Y+4&%,d# GΥ 2X3 2DdK:]-3 mM򲏻5Lk`Hں˙ 1P-I$#1@;+pal1LgsV0ĺ3ϕ2H 3]0 >LС( {\P2N) 'Ct0H]ԶOv4fuB7TCDD*]iK͐u4+5ϖ7Iqy6i Ԣh̊A1 fM+<*PyȟP~LC6Ƚ+#B}ow4 5۾@ː. `8jPKȿL kto-j<}%Pŕ"W4 99${ېC 8ҍ8ߑWQ4NCHP2FY 41'@J"2DH> j͂Wنgu|I" yd?F OfĐmD+Ѿ#UZP2|l,T< Ӆ5R&RL8:l!H&$B,L >t1 n BvyLVWH6Z^o$ !B@rm =Fӝ 1b]2OIj O1ld*pOiL"/JȎqliwAm|Z!h+¦o-ֈP!xAMi4K7@Tn_k0lϗdaWѧ gWhv#$NwVT ~kȶV Qwl7r*3Q,Q4Wf Xmv!mt wQ S H@I01Xh;7{_QE .zH.87Ppgq iy@ a/'GY^E`>VyXVI[̥R6b9dYSb3VR8M:~^> '@7yEJ R zhTyXb%ېsy5D:ȇM9a{֘ MwgMQ_I)9gWYw)F^Ҕ%A lquGl fx©(`&!uМQaVНTk䙌V Љ y,YB (ɘ.Ѡ x [55i&E֡ʂ $zy)BW PZ\ڥǢY ^:~ {7 [И haj8:"%ZE&qAo, П&Sne6衜کzj*u]jmȡy Q:aq ajp:#-JE&WRT;#é#|1~@*g Ata! JIªj* ŶJ j')֖cbIu4*Gf9*ʍLI)tJ)ׁۖ=iڪGz A ѧ!ZKKڤQ1F y 0Ju7٭ adcԊZU'7; ɳ aA"!QI ,!+<@FѐW.8;HIgH۪hEj˧ptv<1 R0k;·G9պq 뙶+ n#F!(tI:jYxxw˖j4'xĞyɏ [}J FHO[w<輔Է#Wc U:ZY|j{@qȼw K֢+!|0"*kiP; ډq+Wʛ[ !KE *|aiժx|* Ѿ íU(1HL. M6Ūڲ! N޺ ,xHJf|laQʓnq&@T&G ] \fh`((@$C,syq l™o.[:&}컨,xKˠ  @̇jwPZ[{~˩x68Ax4L | y, |Ɂ̯MdZPlkF\Ùk? ˧zIyጥ.0}˨+ ԭr} pai` /*T,-du Ho뻄l%Zڷ弢=FM ޠԣKL`ĕZp>cѰcۭZrp6d` 'yى>Y | q q 0]ø'd E `*Zl_MT|(,Ldw->]Q J_kC,ϛA+޶ޠ a ѴaA[`1>J(7;A4"^ΩbC^3fZӽa7^ ڳcQ zڇw 2Z LQmuڵj\n^JZS1ݘinNUnhNFeˆ,%\~Y=Zwڪ<2Q%Y H@+ e TO\_z-Ic+3YǤ{{U WӢ@{>rNY.0ؿZޯd+T% !1>d2F@] !{dAHo~qǨ ( ?  W =, 3pB O+;špBp)ïBSȻBSEaqFJ͠1ҎFثiDF!#ȁ 鐣vDɈXrJH8-RJ/aI'4̸2M8i+}sO> 3?a,s7%/: uQH *ZJ$RL3մB*sSPAC4TRKiTQGզ.TXc2PYmWLM퓍~5֟> ys 2ځ "T 6EeaVl>cH DL`VA beL3O͸`\Mu:;$!956MYc̏6)o&":ِ:ʜۓ1nr6ID52Py|&(UA^~) УNeh#R(fi~2䣥 hCJ8"J@Ȭ#g\k iZv4L̞V̑K!jl%L2⮻5Lc+2 hu˿0ͪV30S5> /E" ;9TQܑc\-OCУ(r6Al4I|R.: _:x2".j/4J}m>8vGR[IMN8"Y=Ж\гoeQΔy}o|Ff ,ы~+*N_-kNzELC65LӒl:;Cל4mm<2.'d9;1P5oK- 4 ݢ*<37#q+H5QDsIտxRQK@ <ȼ% v e PXG4jklCG\B qN K@| $#8ČT*xEm#f+`aBX0!5ƃh A-q?T%,#B2(&s Bp-DԨGA*B"RTF !l+"} IcV692!ۨUaɈw0Y-R-ЍNl:4P6nVqmJ Okm"<)s] H_-7XO"h #y)t]_ 5'2b>@t2gnA@'ɦAN9JX6Z'DAāR)'EցD!!B97ψ2.)1)G09m46vSDCpo+Ni:T-u X)Bay0aL ?&% @u7B i#EG"~>Cb_ՇBuP#ʗj`!c-:ˊҚ6w kCjJGZ69Vc!!kC*U F4l⒔!Cd.ICW"9` sc#[! FJ;^}Ͷ Z д%HiClHQy R|3@$1mRc>Q‚p~VsP-TG V&8rYYqA |z͕eS. *xޙFo8OH*hD# 2**O$`Ǖ1+DiTa5 R`A{q@wސ(0IH!PNvRKNz8(){AH_cAOІK> \c؂RvAz٢ G4RAfXcB椌e$r ;y &* ;!9d$`ECBkF".HY_QP|E>.+D)p w*L`wQ~jKf{ATk>JmC7Я(t/ĐN- x8 /:Yq@>#&|BB/2z2=.G,jXrkH{v;cj}A g`CGp! `xpGw㰁|ၘDbV7q O~584E8&-9tH`r7w'o F 8 .oIWH'HWc2x8VGQu$}}v %EX!{5m1qW{>A?avzs[fk# S @ [#uExQ"Xyhcy(͂Ͳ "d A_a VhT|(@~(0~%@awHL؈PoSHX֨ ('#]g1A&@",,um$.c1 l\c-38{QW ` 6 ` ɐ9ЄusFDXHHؑn8'Ѝa qu!R0 v.iOZhu B_ԉ3|䓇Jf|Ja Ѓ`W{WvHـDظim ()}g4ygaul8hY& a34d\sY8H7taX> tw@I d#)p $ sI`qA7H1r:~K2 1aDiv/|hpQ 4 P)攅t c(yi@cǗ 13Z:Ou~Y&:36֩ymYH:o $Zsڠءm99Y)i2s0'{FJ?c 8=HbG\sFWLM &Jښ袰 )(Y1AhuW eXg*FPR xXJ F@bIǢ9yhZ3:8boZ Aeb ,ѧ ᘵ Bʡo&*J@jTXuZlj''} g0lg@UYqTUJDӄx5AxY?ʚX0A j7zj}JЬؗ8Jl 1*Ѥ%z ֭ 檍jacꫮi8#ۑ8A Zpx#ӗ8*8 :g򰰩k!a+X;FJI+k˱j*q'k)6氟38 Jꀛy)l;uxzzyl;+&HiR xiHڑ]p4η*m; >*v.젺 Q73hNf29?)X7x[JDVz a䪍:8AW((8Pe۹(;b51bpI4) Bɉ 9:{M)kU디H0 ɖ # ` -栒{8A!Pe#Cm)fț KUzUZS8۽a: ARbDxsI!ŒźiK8xٸ;X뿊K?oV˫UxlQHJL\'1K}kf9HWQY8^Li~8k ѫ[!ȱp܀r Fwy+Wʩ!up;QY;f \\ t`E< \KAK1a/xi+[y!ݺa5WH٫ ѽl\eǮ\ˍQYȷlW$XQIɴ껖mW |Fa!nQnY!ˁ̎A` 9ɕgx^ BFlԼo0>`?ːO|  {̒8 [ C_) uH/|ovnNBa\? bxNԛOtOF~$P>} `C JCq_)PA"E+FJ)Ud@q- “O$")P ZS$oWN8K\nuTZke,T4OW5I#H%D!JQ`ø /νG32"Gk}<| zId&o@5W4K9ӧQrnqJy@ujX>6ں|vͼ M6\ ݧѺF{=IÊĹ͛+[NLt1,J!׃\q,J"l}dQ PqpZʮHIN:@ 0sIDXD2ADUZqRblTeGY( #CN$E hrJbJ^Or3q8%̮=dI-[N(`.3S ]H>{XyS#rFNaK'A4#JaM@CF1 'N'T!X$XdE(,9~"F3!(2kGhwh@ iCq]T#Hp,!$$YREf2":?fI $%9oPe6&ҐVPyK0Α+WIKY$0'yٽowW%E,>LlfOp4#+}R5MmSATN L9 raKZg3%I"iNzS_( PFT&L!iHBObhG=qR% U(8dRIG]Ő*֔iH.?@l,bK[ӗ}[?}VNDV4Ke7ӈJhjUÅN9~_%PLv3c w1)YJVr%o:ꯢ6T:@]%la {X&VUMՖ"ᬌle-븻^Vlg=YЎ5%mi+PӦVemk]{%V5{A UgQG^Rp{\Ѹenh\FWӥnu{]fWnw]W%oy{^Weo{^w˕o}{_ !,f| H*\ȰÇ#JHq6m3jȱǏ CIrcl%S\ɲ˗0abI͛8sΟ@ JѣH*mӧPl*իX+Rʵ׬ܶ~KٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ;/{>l΀CQς .) R1s.M3!ȔԓM$0!̈́0 #$4"ASIbYc>!D#Bhc`$ 3? dKGNI]Iu91丠<2$c'`U t>̖j>6dfV>֔>4NДSJH8@1nR9fAfE#Y*F:3ғ6Y|iLj:RFkFSTɬcغY*ګBy ̷߯*Kn#H> Q9;aA1~;ڵf;%+ӉѺVYnA|kѻ l3F4,j`l2h 3 ԮqKRqqx\4,,3Dsg^p:(m5[$I=2L2/LsPY_3G>1eҩ)mCjGd| ٺ X3M!GX[;d>>_Ǩ#QQ'p0;GxQ"JyW'u %a4iOQC1 F@WE.r\DjD13":2(neBPyT^w5; Q2AsX:*^qT>lqAP!>D1 j@5Ŵ@؆Rj5"/Nu| 5NUCPb7ZԥXt!(*(yl I8L2z ,FD kYejP`b>kQuBƎy8umAYb!]rGZhCU ^?uLCCSu%CP?A$ƑnH#QMc4H AHO< •U>؂mˮv G!̞. TxuǘqqS(>a~H_Y난}lPi}?$j#؆qW0dP-o#"`/((Hx 'SvARPÀ.*.m924l FU;o(4 IHLjRvڛ3 :Hi%򘯐98} tH#Ṇ@JWTo+yY5j ^ԵH{wwx1*w `sE0D t xT>f94.cF@ (dYz^Ӱ5`d:Y{4V V|K xWV gr}p } AL 0 }[A ?boQaX wuQW>Yz뗂W6ubI! HvKx!  E1 p|f ˷~w ALFZ@LdSF6P*zt|b8x'~f}@3CwEECR ᰉQHq` VK8q`(bp iojH  `C[%#'`8kC 1~b(pQtEH=nX>gqt iJ P 1R ]؅Z]8`X@j p| xx!;5vX%r p`>St(Xu򰑋W=֍pZc48EI3h'騎P `Ä HV(jW1яhnHX ؕ\qrir,`Ĥ s%p )7x~QhxP +ɒzѐHd$PFThMu <ٓ>'Rz0uIuh]w$T90X\9 7d,3Ux}v#!Xr9_,rDgty)%zRAf=9_ɀu}VVH5f֔Mɉ1{I97" se\(5aN` ao" }vd. @9tp̩_\`)1+;{8}zܙ!JR_iZހ6qcԀԢ RFJE”`Mr ڏl ZR|p lʦP Ptu yz"rGwgŢ"l:k嗏V9裩ЅHYuj]u IOZwr㐪W iXg`ZR%wV{ʧ"Zo IyefWP9M7Ѡ L97GZ uФ:$ iF aN\t)Z)0'̉Y.%JoiOEJu+4u !j*c`&Vt< ZFZ oʩZo Թ /!H zٟ ۯ|q !5\RmuV7w;uܹLɔeAIN :빭0S( 8媳O頱 B;0@D{tWQ!Y@B f,@SSNP zUI4ۻ  |,es A{@c \8{Jlu‹*+jAjOi|Q gl +Tȷ UL]V̔FP eܙ_ukL{(x|x,HKkQSz`JL:ɋ̫йQL,XKٶG #Llj!|slw,4p 1 1Q^zzȬ̷9 }\ eϗѐTrɫX" ; \ϗ[jƌ\]M7TM = -,|B6Awc@zL6 6@} s o̹5 DUm] 3v۬Q"n,U-WY}&0(kσ km0n3J˙Ru%ql }MEXFʬʞ ؠ,l‘^!HcOY[lM~$7׼ZÜF @ `  ޔU ڬݻ ۶}HYPB\w a-*Ҳ'm]}+H-MӳQ8,>_[MYiYY Rz^RNl*qT! >ܕY^ pDz>Eְ}g!~pn>綋}>3hy.MAc`\|RIMGZ QZW >A ZL 1gVeM qQmN~a|~v>nɃh Ai07SL R Rn M+ܝ!C;nb *>ꐥTiQi-]Qov9wmǩ>|žZ+ݠN ߅꤂IQ[Nǟ An_u`g-~*z9p@VfQNހKV`N^/Oj_9/$&kz@>Ȫ1r^וm=] hff߅L~:;QGՕ%5Aw~,ūfNwʝ ab^nyγLR/~ocI_͇#cͶ"-PRQ ?O(_d^ ǣoZj v Rߩ L.#:K Wp4U ?СP%~Dj A>Q>RE$Yc)nHx-%3YDxt3)Iˏ|$jPUZIk%T |L?2=Zj}J%TM #˕k}]h0դ$50VxZP݃(.dOV# ƍ?D[Y}$4i{mE];y8Nǡ^5;7Z˞50_/_.RU>a.*ӂTͻ_DZ|G#cy1HʖIj.JssMIa/Ӿ|.5L Q'29PDeɭ. +pLr*ց:ba*Dk"/7+<ۇ 24# D}|̦ bȂPrL;о 3ِDO!([zߤFYZFrhG̓=,bϽH#1K>)TNҠ>i}<AT5,ζTLNN−W3#̮FX i0!Ig-2s.>PɠHR vlVoD->-\mo6izm9.JyeQ_O&LCc+P cV"Cd Mן!h (G9vRNK"ވ 72=fl!JY5qÂFt$a< (FCXطp#ArCQz΁t`FrNi&OG 'qc$%4I1zA+jb>& THEX%!vHQ`KxI"HQN2&|#Q:$H$Vxe$%jm%Ǡ~ ÀSɇe1,TŌēL G$p=ʛHRn}4$H|WJdA-{Yk,fL0Da&Fq?ȒQ&m@hMJ)PpDPe6uD'[3/ feXB~ޑq̥UTin}VLT" D2XIBE|MBK6%,I(6Q0}.*f@)K DžCK;fo`iMMb6i {x2i4 1!H71mh AVՍrYue0CNn$8j敕%{ <)I+O<<qs5R$"AW -N4X2E52 =ċL% }OrQPdE]Q&%x)Eoi¤tU-K)'ɶ8+IAy$|[Pb$qUѹE0T?Bexƃأ(W`g]'Fqw;rNBAūْq@d:ANqs)MuOվpqܥ Xm&5+Ci%#/ y)QUZPŎ%Ԫ)Pln7/VcvK+"GS=;iNYʷ hI0#Mhb3!_]@ΜHcj\h#9 cDm[BdIT(>ʵdD:ӚVMOaEqYaRvXf7n$)7srt #M4iʳ$]"aI"dnchL4߼svs3"Q;bӸe֪.4I Fi]-vm]m'FDtztQ.{Q*3ڻyĻ%a㑆.dפE >+0U9MMY*!656_( @d6ۤ y6=ZqbCl@|%)>orl1(lN2SPMٷWOAWУ$U~GBH:η#<[N*2=/(?9gDDxbIfOmfOQ=𸓻3͂;;?ӻ#X[?  ;ߢz=2@<<@عm9,\Ճ@@x $ C Q=#4;@*1<>qp%1ۇ(l#9-7>ù=PB@BD'D4zBC)L@ACB T2"* ,'\Ùh&L68xCm8,)?D.컿D/9(4᫉BSB3|BY EQ DhCFE\x c,Cs`3,UdE9QEYF壔\4)yZl($EKMFI1;x4BqA4U9zkF Tzz, Fr(I8H) d> >X98ztF(Fm4#JX#iHrJH(ӣ[Bt,Y K˼;+ =;cX,I^ZkpJD;4c}CD<Ϊ D>,B}THp2oH)/"ƗʠiG@̲oʖ1$ L#6Ryzza:t#=J*ɺ p zQL̓{,Bm}8M@$ tL^4$),=LٔFhXzN{EEMKԳsEIi4XlT4P`FH$O} BC,Q蹤O[FĒĉH\E$% 4PUPN (O,OPa[OK,-NŪLY RKJ  lFQF4?V4%ײʚA =Js4q4ulэQy<3тQQKT#-9O',@a TEO 4B+ -G\J݇FHDC`U NP:TӢȽȘ)I =NmUG-S_2C8`VV b[eVx<}h%(ϐwŻ=WjE@L5q ׂHs `U}`؆ SFWQӉdآ؂Ր=X`=,aEXpXc%|YUmU ^ ׂ_mؔ VZuerC0ϜmZI-QvY Yp WJ}8Wtڮ%m#lZ<h5Ya5Ѭ52sZtۭZ:?hҲ[mZ]5EڇUW[=>[[ȍܲ\xTH\-Ya}ؑPWBpS, -]D\eE4õZ2Uܭ%B(<([[4[]]mۦm]Jy]\݆Ua ۿcRJq\O ʠ\`ޮeޡ=Z=_#1^d_"O^]]%߯AP_ؽ :EC ˭ =]uUba$Zb$Ub'b*nZ,*,b-bR^/Fc3vm#bߒK=0=c!]% 7nc;41& -?>dI]̝>F䚅-@λJnE>?%߰OG@{K LNefMd[Sa6fe^ege]^[X\aWFȪZλ@WgtNgu^gvngw~gx֖_gzg|6|gghh-hF4i^!,V H*\ȰÇ#JHq6m0VȱǏ CIɏ/\ɲ˗0cdƙ8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx 7++w`Ő#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOe<˟O+_6(#)3F6#:ۼ j Anf#> Er Fw 2 sL2X26>Ԍ@):ʬMM*TI)T"AK&$H>V(e-tSKGeL> 0V*%@"J =E4CN:2򜩡tѓa.tӗK~Id75٫CRNV泪bG>jJ Q5*Pz29(l{,"),*lr5D?&*38iza<iE9[*B; 5/BCf$q/dFCB<"MFDqN2{KZ-[<2D !&]rLīYD3P ~ SsZ =iA`+M$pC>]cU+4B=PMS41=1x _{4Q:g RzqD&3S<$>1.2y Q剗"Kʓt7rFƌk> B׳/NC 52I;A/11 2!ouv.u7MKp] ß槉m!81/"Hs4e;2¸9 t Ց\U fTp Q\BFxJpɠC\(;E/ d>kc"Cuf lb)iXlX6@7:uKI:'ȉ\B"9gV"D&BU6HEȢ&#EIm[#c(u@oK](o!`P*A>QHԶH+l>ΧT d7icdRH :ՑQ%RYIw{'n ybx `r^cI4!|>GrT 97u1>2Q*YE$o[JCgD`vB;s) 6C~bLBГN*J\fNr go |DhB"d(#:H^ (PYl CfIcFX5OS +A:rMHZICGu3}Q\R0uJ6M`'[c(\M%B}27piPkm]5B2zJzNR*/WQc>ۑ6zrkTF9.[C0)u +02 *tbE,d.3Cg8"]y$G2|p"DmĈǰ_Gc6&$!QrzSljPc 5 ,n{Hoxsa2J]f郴%."51r dx.r1o= NUL-*`ʏ2:pK\Cʘ6, Q#asSF'CyԨ-zؒU{-tXd5PT&E\F (*Wp3!`^ bΝ"fr1*hJ~nTv ۑU4`XG!jI2炴6D4ûa  3]NN ^hJT5WDd|~ d./ze_> ؂~p"}L~eavrb mCM%;$ZAo*#|'ztHG8p8fak#Tg([sFhI8lx X&fg7}Q}"QQ̀EjV .&F%?ߧkTȋ!z\qxNCeƋ[Xw&4b}(lP \ #K7~P{AU "k|L)( ^L<|2#_3h0(b ?i&aV*>[ V"6L2 "z(h$8f) Bn؎rVed ؏ LcP,a Pav2JeiKIXiR ,q p-huA` ejڠx G X6u:uԠ}qpA2KteR Cf 326CYP*xЭ !0v4kz&g3FCji*j^ KVA"(O{|P ٚYx|j ɮ"aUx[Z[ɔLR⯹f'#P[ʆRKehaKi(#BE|  aw,[OyYJ4zUx1b v4=;Jģ 6GE(bIk.*ROm)joذ *a!8fI^ @` 0i(K8 |q#dku;P P*H gr7k"S/yy p+; W PhK۲ Dʻp ܹ~QK gr K $LӠ ; ?KyaH۽ ~*j3d:+\aH !?pJBU "Tlڊ@진 Gڲx0d :y<kШ ARW % (4+K`zI?LV1j1K6&L`,` im\*c͆\ܓi~Be  l}Ќ\ 1+t<!|$|€K9 l4鋩Κ 2] 6=@h hi|VL ]`P- }T]G= =Mk,v[Why#Uʷ̻"<DŽ `YTQz|w!}~{O w6m82M :FҔK_-} K:0[ ]ѨF>cMJ=>h=P!g:(K|޾ '㌦.h~_92fy^A~ꥒㅮcn(}-0VXy韋+S. U.[ #)Vw9ujér^<*+L1n(> \Uŵ CN x Nn( >T*kN^`gC1{рKNf^8[ N __0O1׮ǩhy >r^*g\{--ƒpqNNNO{e?O;% g# Nrt?{-ax 2ʿ̏ ~a ge̹6?M@kceڷS_ Q VPy 'i_9} *pÇ:eDE ;ѣG4*|#*U)bK1ͤI3Ȅ*CU*A %*WԢ-͚jӦhK΄lժ9FֺsX]iK`TXU7]҅ +5KSbݧjZ` ڒ<%Fs14֛} 'N`gqr1$֒OjUU.SƤ\sP(P. 9PiJJSʫX+ǪZXZ']xk4 J=<  p2$#D#mŠ5Nh:JL1-Ǝ3vjhh\:ꨪʽ늭 gCUlKx>T ꪋ P(CR1P2:)hB*4ԬH2r63+3E*;Jlq***+ ;LmLoĔ\/ZHTm$.Ϻ12Oqд-1.HM> r^y$BiL}Yj\rcj%O F ʚ8M ݄@mJ`QŰMb\Q0 U hM2 XϰbfmGZk%; Fq>ɵVBfv# ^*ũHWmkL`NeˇH-E[_Hwf `;PBq+M 1'4d-RvYnY>jOe|ؑ햨g/ zJ]^RyuRH]Njk-Oe}nXXE["HhnsPrzo \LT6W/"ƨq=b.ggSc)usMG`*8;̮v3վUPr6W,2MBi2A#j@#SHrtC*~0&?\C$K9Y]cz"Ơs\8&P> ,BP\H-C̛==,:qF a=} y3"pZ cB\D$"o9툥4ӥ"=i~HPU\yLՂwdTc42s#@!!$q<d\>O!#CfsO0 1xOCyaiܤ&#},L)dH&TWb+K;YFpw \lSc%slf IT@YQфdiCmT}#-*ԍ<'K.Dgn걈- &Uk)I|2\`+b0 OA탗+Nt8>ؑQe!H_H4CQNHgYLi bׂ_m.{"]{xzsvWLIAגM?ڢlOw ā!F}sO3}dy߮P]`SVl6hGܵv *&zK]@0(R>x^*R R_̼ܐe}4(+X&\e>_bg)c%y6-q:2 ߋ;c/ 8>`i:H4 PP# _z(;r-| y،;Ai 61ڎm(Λ!N?ؿఅ9yؽN@@ðC@|@ y`: 0:<ɛT2-<ev`|(0o:pAd`jX1%I"‘0@ y4HôL (MC>BCS $ÁPK8hE7+^ÇIj9|AcʨLu5 zȑB" 099ruةFHFf-i¯ N=MsMD!O(<-d2kSO#;GBb<ꝵهOxILy ?Ψ Ը ٨;}UܾLN(}D  ,L?0qĔt$PA*L dMx؜M1|E޴,cL̾I y43c[NxiN<*L$ $Oζ/TO`Ot0ϞK̻9GȵEGX P]LⴿFRP$WzX} =ڐ UKQKY@Ѻ,Q6d<|&eJƬ 0PZҬ$0RI۬MgX<$eш%lM"SX6Ȥ̭0KSw0̇YYȘ%;:لI+ňOYYgEӮK =ڟ؍#U jZ?XJ e'uLZy*ڝIK*r j`1۝<ݟ-Ο<[Iێ⛆3ÅlMT ڈ̬JlW%,"J[3"M8/Jҵ^ҍ[^I]U]\A؍]>݅ӨVtUƖDD8]3^"`mT4N[M+Q]=U >Y_NEA#]x^6SYLf=ߒC FHQ`b`D c1$5V3nVcK X56`a`]/-JXzcn=(VJ=\cbBFȎ:NEb|MbG 3H\r  :cK68>I:VS4:de2­];fB.d^?-=N>R*N#fHOy4[c6^9T^e:=[ ^5#^fd_Vo Mh>Q(sEl2Z[RFcif.`@ൎ:fE븉6꽮Qd! ]Efj^NwfDVM |n y|%>J5&aƈRVܰ:j(T~&]>.dpl/;4dl&hmY"qҷ,9>`lmcSj^+jh\J. !poC6>v&:=Nx MѦfh@.: _Rkjhkپk.}sN!8tHpgf\k7i)dr_ g_r%(^k > whn]5Qog`2~>^oq:GH1$?KGfh@(rqp pM`,Y+G] }mEk_q>s>q]lENŮv>hÕ-5Wmrn4bk*~tvcޚ.s=ꍹmsX/qxzK]s>ը*P:g'~uhZgO^ $^ n-'ѹj2|_m*ad'ÿp~ʌ2_qtOl7J!<Ljty⠀Uh`'v,tfGŌa^jw&5G2r܅gbqc3WaVNTƈI[&Ҁ߇dO{gclOm L )Q^u?{^j:e-{h,}q ]kQ~/{Fk'g{U4yݮtpj&ckAx3j__oZ|K3|֞l|Q0owӟ ַ:G쿯w~6l$~l<>yn}GeO~ϥq h Bk8}"68r#paʼnh$}'UhЛ72g)"ʋ'J8&9BcE᧣FImڔQRR*)QGi̎;v,8$X>8CSU ג(eK5MH\_w)К0Ele^3Xi.m:سbU05u>X]21m*~ (½9%O!b~9^{55#uMC j$C$)UOMAE""J^ΤSYX'$u`OEN1MЍVh:lSQq:(2EЖ2mXن%XS kS 8,jYzLD8A+:ܫ!A10߂5mG@zivЉܢ:5KjcW\-d҈nSze>EƜ/03Wɂ 1B|HdVYh"s,cȨQ[Wi5b&EoAR$A,"XܔixtYf4j:j'RIrBfRE+CqNv$"!!֯HAķ7U]?yEis oZ43쫡kAoO)ZV;=MM?Z 4^٦'prȚKÏ}XkQ}t41D8ɮ|!M3JD$B x SrβUH% G^BLHS!7d2f9$Wd(ΌHBR1[r-^*Yau=U3/veW$Em[X) }|,IZ\6-;GZϟ9hE/vrkӮ֎ܝr;N 2oibR]M_&\ij{տ7{ ,a7LdlMTŸja' Vo&wʳ}8"~]] 3i1BV ]+%@V[vX=>2iT3N~7CV-R2,f&e3Ӭ5n~k{f8ӹrvl=;yKFqoAWYЄ>y;C#ю~4'LHS:̓43MsӞC-QԦ>5SUծ~5c-YӺֶ5s]׾5-a>6e3~6-iS־6ms>6-q>7ӭH`~b7놙"ߥ~SM+xN!,H|* H*\ȰÇ#JHQE3jȱǏ CIŋ%S\ɲ˗0SI͛8s48sϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pm_]xKW߿;ҽ È+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ=O%-c( }h` *>F796a81#"_EfOOX1L 2ʇḏ&͐92|27c3Ҩ"9`a Q6Z R5H45qX%4 y9V¹3v.B#>0ISnL*>@*Ҟ ZS[Jd͟n1YQ3訄H B83*n#@r+B*rJ뀪: RIL1jd aN-r%A mAX~{D <` 15b"SA&‰auCtE[.CN2Bƪ@J)$oAZ$0A<nPqB+Fvdo^ӨGΜJF t2A;4dF@J4+bي-XkT2nT>[P{3{AX{ypV ] nD;j,<^-\r( .$~ Q@(F89aqbS]CkBco ³&#NjRA`M uC8%Kb3>ALaJ 7y"Q.fXDW\—-eSY!'CU(fBZE咐)HB1,~Yʁ>E~̛l&"Y5 M"+mQZѰ%ej*sH9d'+YF=Qς!BՓ|\GI֏{PCWLUMG"LN'12 9"E-4,K.CR1t>քOnP(K]$w i4tu .yf&FZDmtFX{7rTSPvְF}\c H0:_fbUHBmJK!݇ kpw.:F.raN.lT u%;".:)cEma^מ\>Qn Tޭ(-$&A_N[F{ k{5 0v9јFu.^D%jsB*jYBXҊsQ̘c6g;uA0KB)ni ie*auXzԯ+<0#CcQ5|31}BǶ7U LF$ ZՆ:jYd1ۼH%N=چgH)ɧ @A*ո`%txO7}{<&1 9+62j.Um<A#4ʇܹ]wE t!I8Tlo G&?/_*aԣAYl}uM)\e̽N-0 ^>eC҂4M8^*vuw B(%d};z5Y\G F>%y;ۏ:B bX簴ㅻ/cZ.Zع?;KBcGlp|7Vi|7T(%>S {r:C" 8j7P}ȷ wȠz!Ŧ'QqmT\ nb,U6Jb` d<i&eOAn5w\"dPf3:(6 c ` us0_u}k _+@(!flpzl y!g/a/(0R r'?FTutR2 .VLUC"u\ 5[H?ED DJ[XIoհu'&joqbFRuT#U8wb%Tv8V!+HJ%\' \\ rrxUXceOP (YR'eȋyV}eh('s!P؋8u@5w)l&l,U̵JRh ps%r3P !&` 3GY-20 eQSn2Q pJRpt")`䓠BT5X0a0r9t9f njBF56 'y)bְhN133 'w7 Ccc hG#` Chx9 ȏ qʐ_x)H `ِ eI h%m; Ba0g9g ȌrXH)<'&7HU \$И ć 2 թ 34^iSY )!dNp9Z8xiJJ#cI >JauQ5c, -P  pzDТ.Jζv\ P(r 9h#Q ^Y)p?3 ppnYg4k(XUH}>&a`ɠ-m: (IT5y $:BѰpxBY9f I#&i*-&p*w$zXi:&VXb:dЊxR  d*9VYd ъ`B$YeYᐮꪮZR㩉i`I= { J0}B04RTҖaY 纮N >ׂBdy*QQP;hdphP [ i3ڥBY鲿3$˧`۬Rz!J]Q +rD"o$!\jX M GS#GZMjB'"]剶f;Tx8)F] u{aHغlTާnLҫ EFdܘ۲˸ @[ XUH@MDiQ[B 犮@-HHj;-p* 3gzBuJ8˻R:v п CΦ k.ұ"J{,n`eh蛾EnS"FQ L*˫ڋе2\E1\P) ) PƚzZ luq 0ۼ( *\sQ (9-۵GKˬ/򱹋*I MSl 2^ XpQ8`1 ǺPƾ˹ Pƭ.ػd*1&ǁ@ɘ&CFzAk:WR|Ɂ :۵9T im DPȥE> HU lP]ѭp/!,b!XgK<-6 )`‘ &Ei8 Pg LdBMCPITfJ&iįHݬӴ*`j !EF ]},gCՕ`6mmlJ#:Д ΊQ-0KBֶH=.n۸Ī d = ΕMt0UJrmtmʭ܅w ˮ\REw aͼBR(qW6]dmsn-ʪU(lOLΞL,  :/ ]lvzm<9ɽnЭR;K_%ڽa u\5DHEh waxgyfdJ !xkR< DB=ŷJ` YͶᚷ]%ǭm7˻l˸)ae;;Rb|mہ E& IB>$ì8NlM4Lք|VLהּ'L#b>,j~ܞj qqgE p轔9-NՑ"C-KZJɌZxL;iraGs =u-AM܃;1>>쏲` Hhºj~nGRH* _ S. >޺.&^aNl>*. a  /Ȁ Y7=HϞ8׎W~^ /"yuYi8ԛl#7/bџ@<0Fn `K<~|f~0Tjy_ ~=1 @_< @E {ѻ__ի 11􉯳/ `aO^ 4}a ]o Oo `>)ЫeʘĪ `4d!xCmMbi4F|GZdDX)SmZ*`Ɍ)L`zP^*]AذQ$%Etr T8qE9݇%ujСuR FSVDBݻM; 2d[ྃ.h.2U$K bXÙjtxTRxL= 93Hwfgɜ.qT*s^e +VYos.޺缗/D彥p4%u~_?|&8+ $ZNC &XH:}`.}hi(| J#dnN48і##;JnS.l=ܫK򂏭*o2D4$L%i0-$DD#|E2pΡ|e$=|TtqPB :n2Y)jʻ2[TTqjA'«S#+ z%4K(僯{,Ce0mNLHVU:9rP*tTqڢu(O{KD Ni8qD*it+ppS(]!LM =*T"} A}Y0ěkH+٧-q%2zԣ̶YA~S~)Zi)2OmCTТ9!eN񡡋+a(rچj╴zrE*6~.h(,[Si3W"KhWD$I+5XECjAdzӢzM:SۙkvvN @|!JxG !t:⩩ʯCeN/"Uf;&reK-5yw I,'![xYjR(q6-Oڜ, JF' 'LxN^@)8r"Nƃ;MBXi"2ʣS \-jKg+" jtdIk LZ1o I$Wlf#xcÍ 8ϸ:D]@!!EMkbWX4 RxF)"`ڢ W=o)&m o̦zĻzG`4C*.M/>tȘLk ʍUD}ۇC61sGaQV{T)X_<)Tƈ0=s7T0amyE1B;"n+0VQl*G62A>RH2 \|1)$j'KIdD|DtP؟*q#Y$U@H#eel˯i) ["A^̴ =Ǐr9߀ ɦ:CL0Ul|IGSxb'Y[ܳPbFOhLfrD mh/8>"EEXG|a~T1 k@/  m ͘Zki7=C<~J uNJȩOM0y%8+xڲeH/Gue HZ֪*ƭRUk^ I2C1ɖ厱@uXV}Ѹ2Y:eVvܹ-G:&1 $JkkᗅCAb):b^l%H\;#"Rɱg^]юKɫ|lCU1ؑ?JYJR7QiFJ[>gԁ(v`އ#b?$B5Aޤr<0d}M`Ğ6jgL/ %}fG1 *i,n-+cX6ֱ#[;&NEn=sSCwBxALX{w.:(%7w \ 1RvF(/~]k:vCz:d zuJsL#ړNy`g:D ݈X'E6N)KWƴ٨dbo]}1 o{_u-pxBr4qdJǰUl=" Ys Gp[ځSh 38ђ~A={2ኆ2YXú}>) S2N8;|(uPxۇC횿@#ˇsa Hc(%C$EbLh}3,L.$C3SȄýIPU+|: Q qCQ oȰSC)PsA֛ͱ"AA-xD,|عixAX.;y$[2%))+lXX(Gꬁt,ŀS,3 TCYEoP{=(&\D 9E;ƒ;6`ܒEK[dLFj¿- 0`!b7L1,%:GL ${PB)3]*G(PG`3|.~NUğ~ZŇ Ȧ9<-=0{i4im8FG@jJcoi7R(F8l2pdVD,L,LG]#LNpDTӈ I&m5Dў|munԏ}Rp [T-T Ut%եLET,xmy]=}m9hѶ XXP*X@Uc2cN0,X@V0,XWV YV8S٣`YV:WtURW0PYΔhϱ[}ױd:ZLUҦ@ҸctR.ä\N䬦a!<}hQAIYπ}ҁ(X}+@d$ZcJ3vD/_ePaNF==cR Mda1]pĚ$dO4VĔ9euPUV=[Wa>>>F\n }r\vBv]UI"@p) gude^eK ̻>Εް\f>`$6YxY֢ e ~q5&UC&`-}}_I6Ѐ Y>)p=2,gZe%ibI+%~͘jAҚI@L[hPFkFpN j=0Bv X 02eFhwijf`i@eK YEa^nnkxZkq8(' B9-S:ۦjjFNJj~aܘnOڊlۂVPvq?:s=/ >r$OrAU'P^pr.Ze)uSWx.1ؘF|T8ws\^htlbofB[ts@tvI.vʊpvXyiuv`dXffp)uwhqts[:Nj &v7^ee oN"GlW*Ak!'j'呂6cyDp w؛e`Q7uR/26Pmq7۝Oxoz:Ox.wxͮ@Z8v$gO( yWtHpj/^yMes{]ɴ}ypqunfŕ7[0DC0Ôȿ,\VOH ^ѷx!3EOpqP{Lj$?OVXhy}t+XЛ} .L0ᧂT;,ƌ%<LJF,irZ)O%2qݺU+f:w*.ZB>'( .5H+Z4RZ*֬Z:sŽ5g.}̆mقu0k&qڦmt ;%Ċk-CÑhNJ4HG钧N9Q9s(-&m4!ԨSNsl;n-ܿ ;N脹X_eX₋{EȰd Z6*g0z:~}O4-61Ŷ-2Q!%SOAe>盅jZts͕9,GAswUC~aޭbA-d׌E}cBE|vLgh@PƓKu l TPAE!ey\i=ֈ)\q5W`&b9qgBi5x(v #WE*yLV'Di%V OD!Y2PF*T \gzxawk"[ؙeP]y>uy\f@V^C/~ZNbCM%UZoȩ\B$hb׋^7VAv7WٗAdcBZ( (Ќ>DCKRƖ啢:{ZcZ!)+IPrqŗ1կVӉ@.*A< X4chÇr1OfmAYn !]?,U-\|f\jSܝ8"]Mu7707JPՇr53ENB]KfW)26ͼyU`-';Yizyͷסxc;oPeB- 5&#>In+NrB>\"LOVrrPuJcZ|>W,a eoHC5{\%6SL Hf{e\ê׽&h"Z}z7*oQcMe*f"*A ^HXDQ%٬dv=O˼ڰa1mAp˕F4 mQ AӍ%IbYڲ(+*u$sS߀coݵ]]t݊(qk އHLb(һη }g-ThTa90i `'1ʄ8ϭeg2oQB}cI?D/[Xƀ-VJph)E]%m3VY¿𙂼*v[ѱVJQRVB~{a8D֙-:#cAB+R.e㢔(0f{؝*4Vx0}l&,:(\-I/fl=oy޳%M+erlOK:>X 3m>u k]auL9` 6B6-n.ĸOBN7MOeno(}K|-pP2 8M܈Sm[3a|8C.r֭#?9S+Qüvms|>x~.t!9:҅܇'fӣ.SV:ֳs^:.f?;Ӯn;.ӽv;~;/?<3<#/Sh<3s>/ѓmSLճYc/3> =s=/?>yCc'O>; Wo}c7>!,Hy H*\ȰÇ#JHq3jȱǏ CIrE%S\ɲ˗0GI͛8s8sϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺk^˞M۸IͻoB{Ɠ+_μ9LΣKwltWֳ ̗vLi{'(}3}O_&ۻߜI~ i×h͂' `1P6!48I8>G\>veF1&4cDL΄ 1k-#dC!d)t] r aCs>LAё&YҒi6ۄ OB`RR"7 Z GS:dMYry Q (Ad>iAyc&zS&D;2nb%q'EjGtAP~:*AP#bI Cq7BN^ ,+m+-S:Ñ3Dl.EJW:*@5&(-j+б{#+<9\āfz!R2@`[ h>tRvBw"p^SMk;4:Z2Nr>d6d- &(B\=ѭhs0XAؕ)ȣ ܌R4 ;ChC=Z/}c9H u57d5ONC9[ l oK,6ݾ>Ǻ ^ \{h\}#ef.Dp iK`Gn=`+q wɩ^g'M`C6O#Y3AB@|U[H3dvr>AbSe<3TJ|0}!D@:/*߆'(iaȅ3DW5֡!8`ЇWuG`( LJ'!(E*^ h>IjD gm)HZcSl6ӽ"ZԢ9IA6G0cQ.wKp% 2̧|"yG%+SP ٲRL 66~i ] V~Crض40ԥt)Z>HR9CA< qAd&#́̃$6g (kfA$=s ( 2m.c~KCPF3s5d@$%Tt/c1_(l"fC+:^wd!JHMGQ`e}R;N~dUss5ŽRd|< N9Ӈ2$A} bB(:.Q{56Ϊ8)Hv8VKTCYgajxEiM(]hxSle+۬YC0k#7%rsYv@ʖNt=,"DV Ed8nDE.T?өLI@w J۰*amUAA]LcpRժh-Fo ƍ+NXq Nr j͆5V[0J ~l Dw1x8Fx ІVHCH?<|( }:cPJ:lHִ >#D#/yt8A>yexAZe\7>3}"zNvk5SmODjB F9zI Mކ{-rnV m Aʽe>\j(cc3w9W:Q$Ho ]Mz7 y5 2i۽=Qla3Ju G'(7w@ s7\b47R`W{Y&S|.e&Vk c]pg7mJvU!]xl6 PsoW2 r~bFf4iwmEX8KKd|V=bx:hplFLJNR&A]0fa$d#!@څ>50Q}"7dK nE'GnYЅ!`n~eP;*,d;c*Kh FZRwOh{v72շ&`!f ׷F1 *hg%(h%43F  AsPgS UՂ$^D>Bh`ʖ8 &_DHG3.UHc~ K]`gH>adO:w5GH']6g o7b|+lw`(`q\W*x8{f`#w>2 H=YH =Ȏv`k㎞x(haU !'Ycu؅1phb(.F+W{>ڠ<Œ-bhE]f[xh @Q tB0AhW,p8XW,=~GL@HX7fVXjJ HoP)~p c cZY{}5+_y8-v+Ɛ'y"pJSb cQPT w*S I&k|_A4i9YΖ eT% ;ef Fl0Kɇq,Q 9!`5'cY9i&hF' h,V{ɐSHZRw]%y(gL7ꝋL"Hh빈Q'V?yzLdR iyH>hVW JZ`p9'E $hp(֢Nǡ': Y :xhxVc:5 7 ȢJ.9Ej  TL5QY?3F7)؞ -xv !X|.`~QtKX Z s*dc%(s86ȧ†s+F h(@ hZRWc>֬ ڮ ɬMxU8u'5 'JW07˧=hzzX!f  VA :voc &Xdws chɬc#c|VwZצ躲 ʮ {vSp07Vkү$!w@ٞ=GO:`TJ0c YE! "KZ[i!Ǭ jd?!2O]xp7Y4+c9ˌ:!cs^fB[E GI Lx4Z>˩:JYi^Ku{=Ճ)#f elkl R6'\Q ۷~;w~{UhpDiʬgLcD 8j+|jA>"FZ[j|߅Sj ; 2k_ :xfɻIxSbV_ +kĪU jdЅpkch{w='"9f#ء֐k[sblE JX r|JX 0ps<l{mԐK  ȫ9#F7 2 ~{ɩ:qJ%8c;+kV w"ܧL ;\Da< W0'r.hOw,A {Ll +_q8&8t@b6q  !+í`ɠ̽콤\@ZܠL@&we U|T\Ѷs Ȑ!L <ƨ #ȿ\vU0Я|UE'{ \ ́-.ۚ>{ß  Gd5>n0cw/v ਮFdط}L^pGǺȒuL[4P MoҰۭT=$>T$ /Nkt^p.^ج,Z]ɈץmK >VϪ>A @| ,g=jL @RX ,ɾ۟L{Ԏ=n7 r- }@6.r#D;0d;TWb !u٬ _a 19W$4. ,#f*sս3O[8UaX2"..E_v+L?.lC-LOyWѶxaMn_9LT!2GZ>g-_㫦i[E'O* sC qȑo|o枟FS! KRUܫk/ Ooo="(p--dp>$J\GA-,mch "#0)Ube}R"Sh5'R;vlϚ=UA$ZTMtՄNjGUbVi:YթtiJb:%.H,Zjʕ̮2eFL)өSpuj:cMMe'j3> Ceu J&MnH:a{b@D7`ErXpWX֌:UDϥ9VRҾǶ[Kܫp?{t.1{LpbT2U23H8f 7TAs?mjmN &smಥ>o(b;]`)SnNr; <'=CR >{hPc?RRJ!Y̖l[0C@0ci{>6=*IlS5F-mL- 1蚚NyL)KU R,j2r(m'S N7uuQ 0Is`Q \T6\Zdx5Y f 0~P6& Ԓ0mlٞ>{C”l&4ٕ`%C1[dWt(с~C] ?]M1DKe:K58Yq,eW&V!lck`7Z3X0VGuE؞CJ*Mc$JHNESbz*YN)xNB ?LT@-H*mA'8^ h2NDD,P giX%sSQ/<|ZT HN2%ɘ%$n(QFk踞)`iΞ;M^ys-'T"M Ճ 8>XUth\WEir4_.vMۑT:d8r4"j?RIuVRG&xVfd<08;JDl dDNiSvNn e\yr&.I8%6C1'?Sňiܨ4gxmPcɆBĜ>!$M_q9U@s.1GG ٸ IŚd%+Ld_mӠN\:-u4[9FM`"(jw#>Y XG6ŹYoCun!rrJ*k}[zkW'>FI,J(xkUFWĮ'Yw|KX&5 ^'|L߉WVoB>*/_;|үɥm?hT6;gMʴr+\GcJ?O}O԰02!i>K| iȶsHۜtˊ󜫙;& {?ڳ{;71< iA/5[W@s@62(賮@;k*#xъV(A"ZAךq3<ۇOȽu?h#syBY!,z|Bt@$LB%&tB!K)<:bsI21BCD:$r!sEX ٳLxȇW8) $9#NJB`q,h$U3x$rDGh 5 %M4yG X8}ԉ|Jq;/Hp 5sý$!r#FBy@!LKF6bsDSIt>Dr$S ɳC?J CʔЅ4KsZNLX c+;JWȋF`YL͵3|ɚI/.LJEʯhJC&G:?wsKLLL,SL`DX|FHAsTRTFԉɰ D$ $̦jD"@艨Pm%NwQkХتxdG s P'0 S$Q﬉)O geI9FщM2i0?̳ WپP #')J?0yK+=@-P[N-ۇ0-U1%4%QC}U3T9?kVQk=7B c@P}zLl v!/Ts O?Շ4RST%@RYUy yMKBIU~ /UMyh9du4HDV)NV}h-Pԋ8/*$Ͱp׉pͻ 25PeH,-+URE1̔ѬWEӺL~ [Ӏ؁U60aR\p OLJaRIuLH YǠJRM݇ՉRPRZ2xYXכ [a˟}ZO_5ڣ=кBX)mخвPSTZ"VZ [Q,[5Sc0]H2R5ӼEUQWݥW(\S .lZdOUVTT\5 -Յ…M TZ] 4LLPWv}ٝ]ݞUGlIu ^M2Km:^5ȵZJ뵑M`H֑vK(ْeSuٸYK '5UPpWma aUiūs4e bK n`XDyJ!%X`@H6SM Mq5/RC_ON`އ>ɉpўeI{_$WbA\2#NLVL`T &TN +Jމߚd5O/M Ss;,3M 3ߜWѽMM^j&c \Av%bm5b4D=hb|bcI=*J,OQ2օ=P q56SwzeeU[U^^e- ^bAc )@CF=/+fD1; \xl}dMW.QV[U9"5Hhglcx=SbOWg|>\>WaqӔD_NfEb!5dgcN?5hm Noei/VVV+ceLa>Iva1 |՛Ht> _e hc"L!Flm-bIvاf,jhl8Y1%qP-KR[ek\}uzCmz嚐Kdh^DA ^0u)+6d8JjͶ}jg.Y 0g E]~irpc7>mWU]Vxini/!O އ ?7 fnb.c.}fH?eX`"mfd ^f odn։5sP&іqpBi:}L&׆gڶl .sn29p pXnFneXo?LAH8UؙpGXlq>Rq`k#?DcRs,M뉐rwgWG8.O0q&s>s\u]56ws`v7 |8vdχsC?'q^8qfn KMFnJlfHwMt}0PT=u(o]o`+ul]?xu_vwݳ +kDž?sc0@ 2vEVr7p_*mݹtqH[vqpx[g05{ǻwqM핖)Pr׸xXDŽzZlzckd?/g7lw@7qqy& thLzwkK:k{ݓtQwP n}nzepawz֟ 7d2{}gGM*M[ʚJVyd ٹy(7wp|||vȈvvztHtxmџzտfeDf྄2l!Ĉǚ%"ƌ+Vw#Ȋ Ct#[jL[ ifL[8c֜sBe>R?2y9QZW%qn=+دƎ'S>;m؄&d]@%/`tmӦ-bn3cg'Sl2fD6S"h KۗѢINHץ_sTM7FJh4ZѢ%U9ZU>sp-{vιu+OgzW_!#vV3;B`i vj -XJK9Q\n8c R 7PR͙sS8SuVYtu\ݥV&Lzic9SNB3MJ6P9f( DM!%E֠`2F8NbXO-!2W3Ry2S؁עZ1WhTnz3 Wz3Y>JnM)e=gaِGd*`ZldfLO31WIgS*Uv>U" JYVzB6EޑH(WHNBJ鹜k٪M檫_ yo&S硜{0tOeG$5ݡ( OոArԒ8ɞNZ2ڽ-8/ϵkM:kPw"L{g6lUSGl\WB^t8>5:2F+rܕq`2K G]l3bkfM<&eQ$&4K,f/Oؽvm%[tOMHRsRؼݵۮG?߬ ϸZxK4 5EM- # FG(exgDF;v ߞ;$W yC^OCND4;EzJs?X tk{H+YQ| >鯇[I?lʨS2&p>ɚ")6PRɝ"9 %Ӟ(!kG"Z-HF 9Ʀ'!q+Id&D׃rd BcJu4SG-X"&9#aK\9=/[qmx%tj82pv# F2WDOV d܄ 4 `-zd2=MfO{0:VnciZZ:Džip[3 1;o00' #iI4(%M0 {QX>-b+#zhLVtY4vx4@%D  BфD Jm6''] hZyckgWʰkιL ojCd%A tT0}Q=>Z$*Yu)N'Q9A8j-llR2R$iH&Y1)VUKa 02ӰɇR')%F'>jNtD'i>wpR1b)˟b&"(& nTj4+)e=E/!܍i[L::X\3]юbMIiB|ٶwS 7LDaTsV[.W{Ժѱg}'g:K ~;ănp"A%jcDwGRryEm0ƾ;d絞kI(Hd-GnM 2=7WN].ѐq60 6UaDQBR~-eQYD㓛`#}JB hWNsKry)SXVT1uެ8JX{Kd*d8O2&nQLB զMteQc#gD dsP.e56OblY+缴oۭD +&ƕgl0+M,}[D$' ULOWq'E*|K9̉n/-9' 4,;L9ԕMiJ*G7u  $&KkVZlb%Es2GvG;fɎ(BJ奝g/p\cI^ҞNc߽s9)5YX8]M¨nIin|{|B'U7vmt߸o 훝ժXOߺ~s=^H򑫡, eNOr?:[lFYnfY_?Yq4- 6sDshF\_yUu+a[ʉ _&Q YPY^Y 1VJ`HXӷܔEs W$X4 wWd_S4 `U%Sxt ! "L :!P֍ j[&ZRh6d!YZ !S9 .TTIJ! lڡO` b!9X% ȓME(xC [('r"aG$bf-<.Ƣd#b0'c&/FhQ cI3 5z_jb&Rt72#][Q&c<5EzQXD6H񡳅} #?L4ZvcH9#ԡ>&CcJb!1Z#@@̈́AZP#8TH΄(HdŊdt :#5zEVEdL4sIP#O"LGDSVO%UZEF9>RZ #YH@'u.V'v:t2ElgTf'xv'yy'zz'{{'|Ƨ|'}֧}'~~''((&.(6>(FN(V^(fn(v~(((((ƨ(֨(z2h~Z=)'&)6>)FN)Vifni!p)~")Ě)!!,yu H*\p!#JHŋ3jȱǏ CIɓ(SV̤˗0cʜ͛8sbo@eQϣH*IӧN-*R[liӖׯ B E inʝp6Gd(mJbtWbflZ>NU3gx?GLӂNZVGvڠms-s*|xC2#]P1GC//4cߞ:w'VYӗu3[k_lZiw+=l h\V5Rx0GPaԙӃ-ykUQxLc]pexymȡF$"V &\N2܈2H#1ӐAڥ IܠЏ9Y/$fLBU*v/\EiVe)2&JsG])uDdqܞ ٹ1JzehPqIUcIڈK:@zE->&hw%ELzL 3ъ@\0 aP;tݕ䝱Ut 2qӪ[6Fb&&sIn[YU6܈ZI\ yy31O\Vd{.&ODY"C]cґ7 r0k{L%5Bd=6 ̛5t@ՂC%}mvYcyoT߁7RtL4hv4r}2e;oS yKvPsY㘭c˫׽ k YN Bj5 5g1Kx[Y+#sL.o 6gHlD0ba㶡1E`>Ln>@%HG<دn6.. >e1'B*a]أS= WDN$_ %2D" ;p"o1:g-F.V$3LZ )DTZ2dBl,!C, \F (FF9ˍmG @P_%G\"AEHCH(Mm&)Ȅ%h>,לczɳ_)!dHIP HqbU‚GHJtsn{Ig3Y"dӰ*a [p T[HB`¼@#Q mf((},+P xxPHtlcA9:zFN' 1kfCjԂ8-$&ij#A$*GHZ#mzB|!^$LΟ(- m+5XAJbFqJP yBBȉBmx+2 Oy 'H¦&D9EXbmU,nP UjʐlZ0k54LsΩ+UF)NB Yg چmH\ZAy `؁cm5JZ\?8UNaۆ?fһtDҬv7jPՇSR D/Uwy%s#5hFɊU7ӳ҃V 47KN!bͽFBMUw :,>6{2 - Ճ<ffA'x r64A$ሲ!٬U Q ^@Tʙtذ cU>@ ҧڝ&kd6D@{wDnL5zԸOCĩ"wQn&l"Da Q$c0&l٩+nVi@/l$OV>]w{FAF0"ʞX5AmqH.Pz\dڎwuF.x+_ 8,yhM%A,{ț&ЁD@+?Yy4X?:.\:BC /vsx }`H7BtCwhhꮉ QET_>~A*?<!RgwfdW a3Tm6W}" < 1D! | QjH(@Bjg6  q6lkg  gh'/(WIPbQaQR /W_=qvݥdchqV<7Q sjWhn(IXMusHԀ7U6ӀwHXzddԩf!KKJOc{_a@Xr{ OQtZ)aLk<:PрIT! d` k3eAwyjŠYyXp溉kc*٤2XXxƐ?Nj$+`K7 Lx0'W3j0J~L˂-:P1DH[ ؛#! OxZդC˺ouG%e#O:AS>i ;o(]eK?z5EѪ:􃪠YG:!kNPOAPi$6}48bd%TEÌ JѪ ! ź!3 DrIrN"PA8ȱdGQ/?1V~;A ! .<\EQ۱i aG dʉ̕ [1 `op Ԫo|ɍsjQ !}@ ѹت^\jLA˝`˖ܸ,Q 8}ƒtN[ lDȼeɒ,<ؼH믐.:Clq`Vh !:&uCцl HD6-ϩO3ae!(=Ƣ e=En# 8AP DQP! jBME/pdCL=T[$qն *]@͔msēyc<}= D vĈ% 03Qγn Ym͔gsSuµ1N =} 7aؙ l- MԻT۱C:$ڮTցQNL k=[&:AnAx+&$tI $j }:M-A -N`ë|k:XC7XqZx!-M /1Q927uѵ7֬4>ٛr8k8~a 11a0m Rf>rH%q;@sè Z+-S^SA7rbIr`рw=\B[Ah^q 8~WjIjeP!q!;tMjr}~Wsa蹫֊xJ^enff`n>Nmɮ%N.s!7!Gl!~~2M!?PhV4 :񕶔/9E0(_Qw< AO#pE<` SGK .a a^ qwG,+T-j./q|?  p_Po1Z?Q_>P aO q_9z0'!\cy%t sOu_s?!!R?< ̱;_Qڍ?cy*&DnԌ¯rO2a@un 1K1Dy@w>W&Bm56 sZI/؂~?Њh36X#XA ÃʔAX1*ncG>HɂpdAs;ma&㹎}\Lذ@'Ѧ- jdqD%(Rd"\IX^S{ͷ8q>D'ς@ ݈T!ˤfSm}Ee7L`փ^u͉&&qmse+1,7>c[zU}ɂK5_L_8b[HB(f8 nǸ䊋ƙ&j 18[T1D?J+Z\22&FPz#L,l FsHȃh#q/%]:zmo)0 l )$/rL4L:ȫZ9*3>cZ1G*H[ JE!R "퓔#Tc5;'30YPCICH39y$ F=+"{PμC,!}GtXDJ'9RKL 4HMnuÌ23Z[VS=l.niQT7DHYɊk֘e-8k[ۂ-)4;c\?]-cY?#Wy%zSRɖ{>c[ғdIIHD(fS;Y}2Wa-!Z+qE"^ i-Hؗ!fh-a}n΄6hte^H*:?lf1_XhF-f>xuWsphK9;M<; e46b1AWovd@Y&ըdP>,JH!;I)11l )! EDx[{LE mc Բ`K"ZD[᪊I|h̃Q<آˁpUؕ5m cb¸e1y$>/)y6Nnudd#& qdU:VR [92NR|96RDȑ.JX^Δ,L2lFze,}91,/9, VL gAQτoЈH,FW(GDZY~4)DRƔX˖,YiO}QiQzT&5;UjSTFUSjUzUfU[jWUUkYzV·ie1VJqk]zWU{k_WV%la {X&VelcXcFVle-{YfVlg=YІV%miM{ZԦVemk]ZVmmm{[Vmo}[W%nq{\&Wens\S=t1!, D1pA;E;oT5>oNvI>UM 7S7-80E+s`"C}8U!@FL4eJoa=Ёæ*Fi`輷pSU[x31U"Jp$JUE8ŀ!,l H*\PÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8s$oϟ@ JѣH1#.ӧPZ'իXjʵׯ`z$ٳ0#[ʝ+ݻxRE)߿G׭=7%T;/IL9c8Ș3KK%˚%r+mtѡƅrꓨ-ҙmۯrtns {aӲOx(^-qd]~дrWMy3%熨K41s'jz~9M69cn*yY>F7*)ww!G[H6w`1JHaobM7uhy̌ص^GQ}$8!P)nRlT M S0mť#k=>'Ҥ>,)!%(h`3se>ܘ*1nWb Y) MBf6sCucLP\)$磏^RgCɒ>4 AZO&>j )^I,uF>A jz%io_W6qg*3ꮆj`Gp5B 48+qкJ!x+дZ:D%j;g"͆~$ҳ_$bPZdMKgxĮK0I!k xcBzCj>NjUy,xnG);q$A*#4 q\1Ϸ~#̬@j'ڤU>+aAm5\Hu;*#Y1Ezl۱MQutEuX!C6LsBR .P>)Cِٞ'-&;6nlCaYl 0!Fܴk|m@Ƅ(;1A Y2p(E~Q`G>d+HTM(Ja% RNT&Б8M:aQSqˆ+XAOVlR",P*UYci-CK8-s:"&1idT+qW@@DiL$"IqÜd7G9mtqLǘ2"}'hAISm\tŦHm+T} cH%Cn~a%Rg x~1FXeF3[nV':'(;G '`*_X"ws]vU#gmv!kٷ & t$Z[7:m'Egg#GT>"h` .q)sZC2@ XgC#(gUxF8gm$(x-{ FgF VV(8M(P ktaf >xW|$~R 7ԠgDcg>&;]>J춆nȨ ֠ &WS26 ߧ ƀ1 ՀFhhx|gFh|0YB(_𓳖1wXT_ H",11U_`5lX+&ͦlr[ P & eY~PmRwE.5 !Zba;:J*#IO "$G&RuKi5#ѰQZTuT2o]_ aZaQzSy; I6K`3k(妢ȬNvm2 ~Z Ӱp{(V(Z!`hyȘ g$tf Ѱ+C^z$wѶ[oT5ZQ:v!Z ٥!GzbHW ZčW ?:r%a#w%"kH&ESz(㪳FOBFj * s.G{w`P[&R'u \jڥ@*(bR ؃B Z P $[Y֡)/ fY'$\^[.yUIZm[ vF5 UW$\ GT Y'# QPJn;Р'HW  0۷|wU֛֝~aЈy% *J5*eje+K@L[d5^+W&z ް "[Kzz]u1аqvWX#JU }}˹{s'›l+t6ڜeY~w97#/[4r|/`HK[֛jܫ.7˺Wv] j +Ha њ C< QfКſ',I+0̕[j[ɡH﻾w+Gf5[P,!!*7 y˼n ` ԵѹYi,̫lnx,V'` ū!+( ZP 7, &kKIɒ޲꽷^<ȩIy(^*`h+5pa7 A>vG*<EL^~[Ϥλaա6>R u1\#o~~%ο W!!;Ͻ{ݻn.=kpW6;q ®ޔ D7{Eޝ}ʌ!ZhN+]s0Fj['hP-E)/n%ʾ{M9v.1>=Ԏz1JFAHq0Cc#M+ZΌ.3R5πNϯ `w@Z[߹^/!!? w>b_$Mj[zazӶ4 NW8P{|[]NT y(j~/JF|>A_'@ [|{o. R>ݭ ->=|j|j9oN-ž^1?3?~l]-_Aۦ^ !^KObH{?H(`u.tl8b9Ҙ^^{MUvLmM $XA 7CNX`}!NCձR%Db}TDfZRxl1tKd*:b8 hEIUҫGo]sg2N% ZާGuHo_ӥΈzߒ5= \چl`A.R)F*W}tU +jpsA ߤNYGނRۗq̬H9g!$ًe"DF'mu)lFҵb1ZnN܁*Ty b/ AGP*fc'I@TX7rƉ_ u!욆k8hb3BLm !R%vb#yqK _аd{pY{-D<" FnL8E*(.+r1sYtI14o!D3"WVt$k]P!oYLQZpЏ a;Bnx[n G.<^} G}X⒙xO&g\1DJRR1lߣv7*tQ=# %+? Jt7*5 "쎵0UB~ bhC4#*l ؐ<`ȉΚ< xSp|& ?P/Hh_qDvS/'@&Pe~fIE-ZA5i2-! ޘ`W荖2zLwdp-öPKׁFHUjRe1l~bU.j6Pgv$qfvTd-) "}2ǀjUZ b$ A Ҧt 4cȓS>*̹'_(TI 9Ii[QlIKb™T5#Ff82`Ep;4WHC U8ȵk=n[Vܜ.e 3]$$ y$A7c)aMW^ɂF(9<狒w:heoSgݓ p~Tj%G̀V 7ԠmIw2ӵFd<,}iLqc5dbE't òK3(S' V\RFS]C`7sqoh*Kx̜U#P B-t5jFOT YO TL6}nzZ,I1Ӝϲ>p"2Q O4 2|b yK9Xu6-FC"a֌-^-E"UM% WXc4 nG4~ط*`zӝtZVWHb^6qng8'}iL&IHf_W3~_^뙢A%8Jb27WP|F+O24qc 5ORQ6+PY`^eX3+fzFdDمK#[n;Ѽ`0gZf4wO"E,E8pr6*9f2j֊W^Qܼ3jxzѡ 2]X=ث#;ؽ̊tz /#C"|Xu0?U(Gӯ{\ S9A 1چu>1A눗?xj?l yh 4 ^ԣIc= +=:xvZ5 :x0<µ&V2d(]")?(DfZ8B$|ӱFtD}*2CØ^Qy^IT(ە ŠJ4C*|&ңE$%;t IȄxЇ+DT-Ҹ0Ƃpaɭ}hFx}?-cWF70iDI2 E#)E ߰" bY4 \Q2!@9FoDhS gT)H}!HQ#qDXH)aGЮG* z EGGFr 3HY,@HB;<ˈr Iye5]ːҌ.i-ȣyȈz2(|x0"tDD8Ç!d+GIsG(C,żŮ $ " ܤZyW 1dK"Kv 7c PRK @†ScK`C(i6gL =D+! %!n:2 H٨ Cx'ohB\r JG9LmpI(?dꜫ:W8ͅ@i;2=)Dy T"nfGhOȡT/GZ􍘈8,8:EJoP<{ =B`O{O* |#Eh+Р$ @H} 3Ͱ0p!L!Sy3 (GҸM,+ =Q(3ꔯqJ:XӖ9ׁ s+;ѓMld 낰 _zLQYTNV4j$ҢB+}+G*hq!}N659U O!٪):Jh-WI% gջR-Zx3-iX8X0XȺߒZ8ȥ<1TQq"OЌZtj(6rE3큦H$)aÓpT& )EŐU݇-XE؃XPZx}PJh} W)|%Y4!LzNzBPPTQTTW#PLjeؓPڷV\ک17UU[P*婣Z/=TTBTghDT\PZ%P=Ȩe'!Z= P Uܤj$HZ4Kϥ[ R%(M߲]݌0\0]2a u݇%RUr]/Ȼr=YȨ K^.Y`ѝĜ@]lEH[\UHZ̒ 45}Phe_}ߌ(Y"4ЈջʢNLTL̖A]eZb X} ʯaB_Zra%^cZJmX&M \`ݩm` 1=S-_>6ߩ,x})N]u F4X+ --v/0VȪ]d7.c96ץ*LvZSX(Xsb@U_*n_6M;aiKaHq<#M, eHQ\aT`pNʷPXNS (B.dr@tZ;Fd݇|F" 1f1H fV:^("/ɬ@^yBAV}@5}Uda~dʈ FA/jk_1&oc"mjRS,e}0;'~ggUxS*ndGdF-i 85PhJjfxV!>_Z\~lgjpK&-|El}FFBk8:%(NJ&71P1>Q! 0l ;";/\zzIz\hg~.Y njca yaRs$NT fNeq:ڮmYE;)3lohl]kKuϳ.3 k׆}`p~GJvE*!FmH&Iz@^[]c)dejH\({9v PR-U;LlF U&_pw#hP @e7HNqvٿ*dމ>gpon0`d@S  jCM()MqrIp @uh!^` )Wז,7%|qVZrqE"B8Аq3sZt].nEGBKntgPӶL?2/i{kICb :h%grFH;om1 Rm\&nG<( fovgtٸ|(xѫ$JZk/ov$#:)jh98^]qvjmwz7Uu-ga&ӆe͆l@ y{a}w/\1x,2OqBjps2ۻdN}yv r$C^irr_ry{ph,?zgvPGvҺ1GR㭺Hbs̖!\.goe ê&=G>r(}0}ӯ{U}OzeP7oMOg@^|c(3WUjh/E?vF 3~jw6ՋkI}tzeA|8P}BJ5&WGh g!=&lL,H 2p4e'RHƌ :l_dk%H8YSM"Y\v!Ht%8Ѝ -7dICMDtMBvD""PROU $P,HіM7#fYuau^OQsFeTUthQsjfugtyъQRFj(oP؉REz>O ZYrOQWuD'ub2З՝! SxQdDQ9*Z#gH]w֏ IdEd ;O,>8ژhgkS- PT&. 8`ݨh͈ Sck۾ySy-iYВ\b$k119qcYD8'd!J{B6>H˼4Q λKTNw0@Znd-SJ>"?Jٔʴ;u$7NC+.+9MLx dv8>ޘIއ2NC_ێ%.S:{B?</;?D 鶺}[=k#jۼD/=o=Ӊ˓ _>' h2/*e~“ÿ"BҶ -Hπ&MD7i{ CȮpoH BPQiE쨄Q!EphcK Ws@aDH 1Ghm6P-VK]2E15QZ"> ed4ұv# 걏~(A<$"iE|iFđ$&3I;c?)Q<%*SU|%,c)YҲ%.s]򲗾%0)a<&2e2|&4)iRּ&6mr&8)q<':өu|'<)yҳ'>}'@*Ё=(BPdQr$C#*щRU(D/JʆjEX!:IT$-,3ҕt(J[*әE4P@!,r H*\hPÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@УH*]ʴӧP%JիXjʵׯ`ÊKٳhӪ]vipj}+ݍ ߿~ E|Fx"7ƌEb%3ԶfCk. :-[ƜY`kםž8;cۥAXLm^&V|ڱe3| {k慝=%ABWϑ[l|7{_cyA8ШdހǓ|ٱ~7uC9\w.ĠD䙇^zBƑ}J At"F)J8q(2c2ҀMW^N5B!6k7aD%"wMI8c5^HAG_A_lx~ܘ)!yH 6ӣfAVJA-IB}>tUtCtǧ߽9(j f 1Nv (Z6>$F}*ctZ!B)czi>t.і,fQAa:@H)D+K*L 'BS vjG l1.$Vd cP+l蠰M6L_FωU nF5 91j`o*&b7T>8;.7hs ҆ iA42>-SWd@P[{'@il:l'#V}BC*7V1B 2,{$>Q.9JAS>iv3b)-lĠˡ$7>MxEZMu" 3P#bQ:h:o gl]* dfNf4Ս# A9d'1= 9ء:N}HN!KX?Obars'aDqU1>Czː687`WUx9Evc +"nS’ф278y,V4b%p-dO aԆQ"$kd+xpy;W)`tnjiSeCqSJc!Vt3`r/hhC3 2{ڝ&1c"*6I, (Fqa┋pŰ-l۸GacA\A^K %L}7Lȳ5ǠP3ձe=5A 8#6+@6Js2FFwJtҲ0mߺz V\8ŨƦtϫakYG?P tKM*B9PoCTh2 WbDQX (^NI#M9#4tOhWhUyEMʊ;Q\ARHF10N$SjR'Ij]0(4f>uDٸGC B$)\:V=m1_dp\˴KȔr$*W+փ\5}TW^-!>XȴW##{Tv sɼ, /Mڜִ (hon. 9C[vD~Y2 Bm'QW X.szw%쳐aiTK [T`/By~8Pp[:\=HDZ郘7B, Ufs r`VMʨ5;c"C:[2*9bHM\ 58HWnn^+ -]'j,>' hpwLmdr8T{G:iu j"1 kPrqL5NnF1Sɫb3FF{cFj w"䎧KI_զIMި*քȷ54,3Jy oMJ^v1\_9AE#H\; ]2 ez]h3 Ky}- w6֎ﳛ[Rgt6E^< x0htc쎹)2|7P1ggn- hVWkۈUmmrko^lWbBvd*'q )>`锼4:*C\$>[>ϱ.e%@vŻ 9CVX~Ա-ll E_^^҄]Nό\3H=1˝uONR{+cy}1#Id2oN Iw޹=ܲn ι+k. Uf;Cz`<=يEq@`^divbjb8{KGE 0cҁgD87:QuZ \fqAfl lV%?Z?$(dw~u5%@#V%v%^I BSA{8-sWPk5w XiԀĠs#x|SQ3}&qxpiXf)m14Se~Wۦ~ hYFzGetB g 7PGXJx{jƄH$aW7A&8|]h 1Uo6VrXmue,)(VhHfX\GaŇ~u9K!Ϥ!Hu!o15Ӓ Jj8ȉHor˰;^R4 a8J~=kx_[8V'ev@x1ZVWVSvP^HLr z0{Ġ iصniT؍ k{6QU{q+wEgGZ6 ԰ \E@ Pр xm;AV A)DYcԇ`0x~٦QְQUe RWp9ZV|xj;RjTi` EIc9#mƍݨ P ciӰ2{4wDV@ `:!` c0 JV ;ǁ?I]9s렗;%\5uYpBYk {8 m@l ` IcĔa8`I" i)J%3gi1:3{8| dH!f#I9F1 Ё:k%j8[ 0_ cyYd8 W{5(4 09[e7XQaH({)) PfL0aƈH0 VkkijPQu^t9c`ey[h_Um9á 9p59 3ZD 3@ <`HD:"y>0-ْ3N 7۠5Wډ Y[Z498*6Ħ `_zB.*e~<&l3n0eiU> z*(3PrЮ >:4ʠVq ꎭ KPWzsm59sAp\*YB ǐ +۲!i1:3ےg[^QUY C T]۷cLo e :՚>6V{\-3Sb;æG{ʣ'+v`Hyֲ0ۺzZK:'ƂUЛ TCt@ P;TMkoaHS"dg F KڊZ'wkH9 `ԊcKУa8 P:Vs =[D лDZK>* ` ` đ5Q ? ˪^`8ax [8 L +t;KZD:ǚ+呿;mu |oÍc S]8ːZj  ڮ" 5{Ǜɋv4B"҃0,3 VlHѓ: 9g $g@CZ {7 g9 Ź:V;kH v b Bɍ㱡3ж ඍc)E,Kl 9"{ @ 7P Z-kԺK]M*-gYUjOkʬ y =OxmOy?˸Y {~ >6H 4]DzmȜ̊$'k P;--ٯ D-ڕ (,Ǯ7!ڬ ۆ#zڋ8,.8 E L)S H\/^;Dɾzpm Z 7F $ I 8O.ܚ !n5 `\JڱAmߊ{zR}+qkMlS `W~`^芊p,g(4˾]RW*7|~0DS n ީ^_歐 G[z'=L-Îs A{!P { nLÝ|Mg]\icUVj|]:sӦު` iQo^ E;x CV`۱ 'Fϴ+o=9f;ې^ȞGi}\8 A*-"ɞ/Z9ϩ" - ( >ޞgk`qd u?[%|Jx.E3̯ ~|%= yP 2 {oW?`jϠA]Zb+C SWbux̠G 7޺e-)UZgJלMgNRhJ/ӛKh ӮRI#;ǺRI[aj)#"p*P ;LKq}*E^kѵbjlHq$A瞻l\1(ɹPIU3씒2<h j?3Nl'-D[cJS;H} 0jtjJP_}%P$݋\ 9t4wRT5M5ip^T2u'S1GXUX&VZI\gu44HcJvYhsyg{33=nh_QzWlt$,L|-zeP@H_Fw^xq;ńYEO#Rk#KSqLJdUx'j)̋IJ iDz%:!HB3\a)Pq> ÊCt* Ӆ/7T]@vk7[~wk"H 0xSH8BGJ2щqp_Fa9lr!JTc@3bڔ"6}( #@>%ōAIRu*^v.2,$h. l eEfF$pcH8Tѱ) qL0J+IJs#x\HI~"tdH-6E o/qSrIVɐaM+tYS%x_ct\1ىi1O٘L I_, }zb[J&ӼDC*4(ۑs'>ao+a-y mrqsh1AeDFN Hm(haFG#CTIx,OA*qX&,erꔐG@)wgqmo#B`yLmRЫ*t`h2UI@E`G~G~|JѠkSXEtU Tw\@ A^2d1IBJ> J2gW5aOPQ[[0*nZ`K#0O`pB.ݚlr;RܼV׉{vQl9FGx}JMU8bq%}(9nZW@ͯhXdOH!A,i} x4,qs̖$DC'sY 쨵SuUE7}bkM26?aKR _JG2W~mu}R6DӃ|6]CX23':Mλho3}H]4IJ>yEٕdFR,wW89%}/VW"2b)&x1&yl52Ӄ ھ -֍RV^ d U" OOc7j6bN[Y+A lwx}OiV;%%wݘnr$=cX|s`Ee] OZvʕxLl.6w\6<#TP3Nq8=/gUzJRwr{%];7CdPzcY(qy޵uB8z-꫟4/kJ) Xiu>P](]|1gcx1U\֔y\'tVn^u\kdꊵk6މ/.4}#۱xhC)TR0y1 $*2i +1d!ߘI 驾h+;۾>=q6 =[?.ӫ)!W =;=S#22 9.X2;,[0Hy3>YhX@^@T1e[ #̑}xi kAr#._A:>ѓ4:3+:Q|?|S,i0Bs"(53:)yB)"8@V,JHBvH0%[Y=VBA 9Tz܆uSߜٔԆيYm(4ZSm>UZˣWL R0 -ZE}X7۔ DW\m rMDж%{Bv]EW )=N(ʝ5H/}7jƄ"᨞НNqҕ$sE]ڵ9i[I"# Xr]Sŀ,#X_ƵK%rY^1Ӽ[N@Z0~U9^m =LԘۻ]dž!Ip-H% JOa.T$ay\EO{5}`;XWg# C!Z?TX؄R[dxAE/iɇeٵ| di$hQU=e!&`">A\Ub9FPъ V[Aؔ801u5f)Y V:V5ɔ=>VÑ @.bCNby A9tdF9*݇J)7qy!崛$ jTNS^ "sjcra) [^%3}ܩ Ebaf|9.xԈ JV?t*`bۚ ۹y QNj(gMܤuUE:D ̠ـ̇uh{eMULգ:^9<5jFPPNv%C(Ʉh:k&Jyˑ.,b rSطfik! h ;z$sD8\JiEq _)\ X.ljǭj0ՑPj6mNm褞1Bbڏv~$=!rFy.hQ{M$l^ dž_^.ڔBҥ.RV$.mjVEvi( [k6vW&<ǥqjP4G *8 Q3N6ڣ=oL$!g֑&&rro&ih}'°QԆT i*dapj3Z.@ O`칼\>' nN-7OM(qmIѵn_<q0nysbټ X P@~C:&WЌcdj+WƇ&󄲭3dvkyq'8?e)F=(T2Eg0^At%Zcht|^&mJtK&fՈґ0wZ2uJ.<eus78ӑ%Z~VM͔]n)l]v@pE7-  _v6#.f+v6kO?ov 2Q^]rs'Es4إuygjl}g-RnGrf,hOެ9mdj*QOX7{ZyE]cVh;p@`%j{P4vUp^rhvgW`QpZzހj6Ao6t.ܵzCk(;7Aq)l, B56̤ fs#Îy3x߫9mYꝲeTX(ѣG}u±ٰJ~:^ڷ[tq#+ ̰bMWOg;n0dqL^k7r7npQ1`\rWbesI[WuQ%fIQye姙{=D_8TZb_A Ӂ%ς*Tq]E!r`e>hqxe(ut&zh'^ęd"27N}9Xj@̐}G"ԒXjUXAܔ`C`!)إ`Z$&XEeH,NTin.8B.w*D<> :uVF%P6 if%;)^#Ezʩ'Plf&ΘeYW)Kj7%3/k[vS T6r L&ag\zpKܐa f!"` f{5߬8ecӼ){21ۧv ZUc \W 5* 7J%6q |Yga7n7c{-}0J/ϬSO·jd=(S>unUzK_;w-)Ҩr^$5v.n#j-%smzsۆa6w{Ke } 8Z+Kt[>k8>(6W#Ytts `<e0 M6 ʂ" w=aC=Cm<nN)JD]COUzR#Xt#10#~];*_E  JjC 5O̤J\ULzP]{ Ί"9((s bh)`_hA^dT(HHVqe6-qJhRV,^9֔l*,C5byZݟ.K:|t Pr Ry[ `q _h fBV (J T589̑PQ)$JHvvVvrAٶEy@]xyHU}8'{4apD0|~2Efewae>4CkΉ \" |~8c*XLGFh{C'S'TQi5k$\2]fPעX4jLmLri>1k)wl_s{MH=ʎRd|Nm}PgKL|>A:`DY涸ok6[e&שL!x7j"'Uo\gN[<0Ж qGRD~'=ԇ-GIq(m>gݜ;,ɘߗ-9>-q@a)*"δbӖnհmfHH|$DRo;;pā}'ڽa~_d},"wMTMkGnɿrIɅ}zӘTkI4:l6[?Acڗ8Q}<>0S#Ao1/u?QEw$aE,Bb@]eeYcu hDAy]- (T1J5D n\`ju``v,E09>  5[<`LF`x^^^C^~vA(!b8ZHO9fvJ"!!8N !!jM&SF!">Yb wFJ a!f!&&HAb&]6-"TbܡE*!l",f*:b򅡨eb,"/`/0#11#2&2rW+.3>v!4N#5V#6f6n#7v7~#88#99#::#;;#<ƣ<#=֣=#>>#??#@@$AA$B&B.$C6C>$DFDN$EVE^$FfFn$GvG~$HH$II$JJ$KK$LƤL$M֤M$NN$OO$PP%QQR.e1&%S>%Tr8SFU^e"Vn%WvW~%XX%YY%ZZT[%\6D]Y@!, H*\Ȑ`#JHŋ3jȱǏ > Iɓ(S\ɲ˗0cʜI͛8ss@ JtȢH*]ʴӧPJJUGrʵW?-rۺoXe]v%h$;ݻP1lW0߿Ɲ;Xa7 W,PX1f3w\l(d^ x6a8ڬl2kq>XA۴qw+T fb]NNsA֞>թ K0.yA/?={ҹ}%nup|+,T|˹G`ufքEH}EA[D]@$VfimDjƭ!fbG#Vg݉ ⊨ Ae#ނZ^{W!7%_y9V f%5ߑ!Qw6Ɍ3x>rv!j5d^gZd2jrF+wDŽc|7~zaef&Wif~ A[z>R튥6Mgꄇ `J6 Mg+S֚$^ [X*ꊹгI謷ъmuVP3fB@N,8juobL?E1fۛ1>G 0+KnzEi8i%OBLB䔱t~l$cD'zxJIQ¬rUvs srSjk';@'h42]d .Q4[e#2{y5 Y$kkgvE 4w!+V7bR~`J6 Z8ِs]׭*f6Z.GjEύo I@O|7/v 9~;AZsͩ*|~פޖl/OQ󝗘tk J7q`cP_DYH ^\fj*͌3D[6Ji_GH$Z2UKK{EWnU$KhI6.Ci;2c#@T#)YmQV6$%yNV'{ͯ\j4{CW)B"L~KlEKa:Lg ؗ(WWyrNd C\Gj)]t0FxW,m7RO^оjIS򖿰%k>Jֆ"loӥqY Vy*zC5[ d3 gb,Ƭbo$pa>/ý8js`O+Zc.aX%8[M zN@D~A"Ɵ fc:jXaY\*sFPϤgW©K:F;:ӑ>Mk46> W6١uŹ\fQ!a35bλ:- [U6 lj/ݫp O"ȽG9jQ'ۊ't-oHٌwՌ]MU`{%>Ȱ[eoyX; WK4"K;e]\1Sz;{X"e5 x-0N]ܙ01 {ؘSP{5WKWjhC:bCkeBmf'ҤXޚK7F3~;S!3zl.nXq%.oGetmg{E0 0 e ok"| P(,&Ws%\yFJNդfTӰ 6ǐ L ʩ aJJkTp P Y9q*ȯu  Ǎ\ pT ۰FӀ:P2 NEyh R p]ikSתxL ԠL f㪌]Z Q[ 溮dZ кk jp gk RKۡ @ "%ᙘxbU  r; yh˷Nd~#䄷P[`5i|v -g< ,J f DZU_ bꮊk@Z[Z0 J {N  뽮؎;4$ cV z+e 9Up 0ĿMw ѹXlV z sqG/aEƪ'P;q %Bǫi 2c ۰c)mC@e 6Nh?L<$_{s V X|ʛT Zz蚴sHEFkfP nK C y }V `ȇgck /|] ֛ ͌ƨZ:Z<˩ dzƉ[|QǙ `le\ q,T}cݜÄ .<F øV˹U,\l07 slf̡.spD ]j}:Nՠ!{*mfïh 9^aauJVKy <7QTd s{˩q ! 1\I6* j}ט; ZwX'} + <WMb m ښ Xj\*| s 鴶P }VM!a g ݷK \߄[0-Zhf;[e0 `oy te gkf(ڧtm{Tg Q` Likݤ s`J Z  ñpp]K8 }T!^  ͷNn>| KYXnFI+ W.` ` Dlfqby#.27NԐT`f}{>㼼g> a>NsS.Y 6zW~Î.%؊$[`fiWmR@zױ>Rي} }Vc.d:ú )If 07a-! nMۊm N@ mkPO&s 5@fa 6N47N I\)Cv̥2eZW+A[4G"tϑn\QFk-bӧNJp躑nڵHUCE/־AwM[pL$$I9t mWqbUȐZwFj e̐ ygСE^Kq$*p+=V$) tXUp{wi4XXTbsPʥ[M.8BٵEKPi"Vܶm{8qx `XQESTqcBֱŲJ/ H&7BM5"b#.s6 8l:3@B&ǩ"iN$ .U0h"oJvJoPⲄ{ϮW >\@6aD3jf9mi!8\m?GjDNI n&\ {; ⌃ilιZMӠ"<b$JRRʷխ-R܃0+?S3AɉO@r%8AGP^QSQK4j4J{^n8`tهPR9N7n*ZIZkX8^˫r'aEHKٽ} s$!n2tMi[K]l`[^s+}ِCSFQ"3=&K2pi4jܱQtyx'\%Uɑ2NR$;J_e,R dOfX/DZ YeI,͙[ Zu}Y:5Ts#>ˆw6B 6$y!^!dVJ+ L)YZ"BBA%Py~ZǦaZۀVU ZDJ:TQs#`P gA5XD5 Sq!HŧR1F{V:INd{>8D #'*1Bʪhqȇ/ZN/Nksfg2%SL 3y. L6yMlZf7i}[V䊮Rr["SaH$汏zzP!WJ(U>ނ8O2RH \yHKWR'j9NPq'ĥ"qlqgΆ)1^+baihqI LY:9q$>XƮBԉ)`>P:U |ndAPQ")x>XE}b.VGRc-+9^`:^T)Nsz֍2+iÖF8Iqo@#,P+ ZD䩜C!kjbhAFɽZ%De%N([ݲ2.Y\xźf5<@1fL$` "dW$)/ykp^='->ZbrJXO-UQ[}DnUJWïDqdqssEC (L0GrL%g&r=qd7.?~k70;*-e0WAX+AQ /Ѭ(.sĢr.ⷰ>.no"cO7#dʈr9Q2\v W`:?AJ"ԡ8)f=[/7ձ/L2WNsqDH !3,1絠lv"_At-!iJ6B?V-ev²ӥ5H4:CUMwA_ԃZv=%:#O#u#pŋ[:!*RpGb.$nʹ%%}K%R n$ՀڣFJOf~s+r;NJN07t}@߰M5njg঴Bӧw;#+[}=<^@1ٝ6˜r獹KjDcG11XI{d|f*x[x&< vRMSHH[mbL%6H$}B5I[P4.hNÊjQs/3埂+ G#`5bWGDI|,=.]8;'$i+ +?]D}ړX'/Ye}SY븕!:;Sc768 {)p Pؙ r)@A}x雾;۾A =+Cيd?bsܚ? ER'zbyB+§˷U@Y< !7[%ýAP- 1 l2µ`?:̱ [ `ҐW  xU8#}P#,~$ܯuĬ/cITQ7u?oG 6̛.0[r\ zAչ CBIu 얽 H[$("MU Hӷ 0%Sq] sc1ǁ: z3;ex"^ub‚zB,֮⹞KPh2ʂ$+NE(M5Ct o-P(p ӏ-S`sHu}[ӺHd"qWT'WV+TNLd5H9?0S Uh؉iͭRڻXOXXQ"MMPA/ם١`Y.&M2Y$yTy؆8ZɀHf]1ZrN 3Z E ܂N UYZrC*z.v}h{yY˦ۇX~U*% S\K5|ĽMUU')yH\hhR#"!j\XS P1X1Ub]å5eljSx]Rٕ V[H#$^#2{ z^9!މs]Qc]Zy|fVA{DQܛ0e<]eVneW&2/ \}eG~ي 6Z䵸L`cކ4R`GAᝬN0L\ \R n\)zcer>n` \]ygFOߑni&|9bf.^%JPt9fh6PXg㷰c@^uvd[|HefVB,y2\IZ]bgH4^Sh\Dhu Lhr7KjtVjq(n`ú:l}h:9,v:U B^ů^VXIV@)Z:hXm&L:ȡp=40jM&l[6Nx(Lh@1@^EvƦ$Ί]݆.vI]VhN`2\@F f]PRfD3w1Np`npotnqg{; /nX!U=UdxWjԽž$@`v%溃a5RG߽,98VCQ8pWp$Wݓqp&OgDfaVj w?&}ra~WH@ Y%%ۥ&@G$X .40^%5rK(oQ!"70&$&CL췐L1Ȯn (߉H"L M4WFq)#8*;O N\#cC?tp7nOHor:8tb#>bڕt.PWE=uIua o]!,uoTw;p_X>{3&Faًdo jv;'--wkZ TVɵoU("YưtL=ޒ.Ot>퐕cV#EtUO Oge''wwhp?zltbHxzaxxxtGHuwNH@iy#7ћf קfr⮫garb3zGz9 xz΍\(X ]*TQz,5l{p{4Opssl7 dWͥFdo~}eJ1Gx\֧ȑ{0|Ys q[\͗wx}vQ-W;.}Էet)ygn o/|u.)Y,hp_}~O'Rh"OCq豣DP(,ir("?JyҠ(%cISK2s鳧9q -I}PPd՗KJװbiVz0H'%.T.޼z Y!D}3LQ"i<ӧM c3%$/hקFײ))STSgƚ'_{#+wjCcj0s~+ sѥ'Xp=䎸{(<&z˕wB^4M48j焍m-pc!8TSC EY\/UHPs I@v>ډ(w x(YybfGVx|=VS~trFY pa59AhULUhqSx^7`"G'#z('MY;zYJAoCShR~y$椊u DyD GRbzqDkhz^Ji(ADzdoCj:ܔMZUoRJIWn82%% eb/ 0*ch;骞hQUS9^YlSg%0OfiiX\cFh dgVg{zLaY7*ACĐ1YeUbUL?{TI=)|A\rʁe$RJو5Q6>κ}A$ISJ[IeqմAhhj5{("e| )>6}K;R7I&<(Ѹ%utTq^gHSWCqA?.Ec~-'&wztrΤw+)p߳OEtnqK`.Z?<2壹}aʇ3;2Q|n3ةu `Р"aoEA⬥5R kC4Y ¿\ qhh e"CAs`~: -{ AS*! < PlMQHn,"J5ỵn<b0xq=<|LO"4UQТbh-mR5A.e5: g3Z~KA.d9rF=ˇCl&eϛr{8c˅LX-'Ɖ\R2'4g}BR{}I`WĢSD#?Mb۹ᨷU$(ZO.8 `tEcݾb8! _lW{ bfu?/oheh'3)qOY[ LN2S3"7/Alvqhܓ48>.%W$+r~Lr{)8r'U;P+r~Dh>6əВY4.f[<+ Sk73 a@կasE#%B3g%s)wѦ>NRgQI9wsL9r)Y2K!fD=>7[-쟴&ŝuG $E(ky)d܆OGݗ9F7{rps5˞uoLo ,NJ #ږbwޡ'MΓ}_6ɮZ 뗹LߩG!y8g}9d2n|':GwK^D$OzՁ Ap'5G1h+[Q>:A>t=# UI!DP'9۵e'n9M׵^;[b '>|$>zIP'4 OzSGz߻Csty@/{D~A﯅ /ޣ~zC'5o~G% _߹_!>n 5OHY|%&A]`ںy_`OX!^ hց IKd.aޏJ_OD 2aFaB\8!!E`!^U4]!! Bra ."#.`6"$F*$V$>%f&n"'v'~"("dP()"**"++",Ƣ,"-֢-".."//"00#11#2&2.#363>#4F4N#5V5^#6f6n#7v7~#88#99#::#;;#<ƣ<]#=֣=#>>#??#@@A)$B.$/"4*CFDN$EVE^$FfFn$GvG~$HH$II$JJ8)$K^P@!,w H*\h>nJHŋ3jȱǏ C$mÑ(S\ɲ˗0EI͛8sɳϟ@IRѣH*YrӧP"m*իXjʵΈ^ÊKٳh1fCH5۷p'jSXmܻx-hݼkoÈVF +t[cy&WADVliΜe[z@$Al:bmVwk g7;j7}mNst{/7mх=Iۯpӿ.zOm:uks &պVzdt>WkWJmJ]8su}W8qہ {FΐKjhhYŗPJdFxg/֧GǗ_!qUc+(g6Q6Ԭ쳍B$zwcs)9QBMI%GX. B:ֹT3ͨAQs>a4W JQ_fLvYHeJv&(*gvTxۙhJ4iXr 2Kx% !h]3"堅jPg᪢zX Nw̘msA?d@ri{}. :H,%5sP>>Ř|D21妚.nAF@#. ǻvctBΔL9.۽.aڄ> 'w1 y?мn{`&'Jv:C=0'VH{>N2쫈% r$~Ws !S ~e۔g>%9 -i=}T+΃ `W˅:>w x* Q8ZNje 8*V!**p0-jܘ⒓Qy;Ȕri8tZh)cx%B|Q Cd39Α L@(=IK)Hm3;FBq!XLO'9I1 t.iFK~q41HR0)tZnHp>hc9 n( ,p+XAz&d>}p:h$4 d&Gͼdь68D7NĚ.>L9zӛ8-n!ژh"eYk\g!$*$y^w mt#R > ֧dSSX[-v e$Xe11vHw R@\mFj}i㬆Gvu]jz5Rl#>6l4?+b6-tzIb׋FMwKQe$Fb^6UzRdH5Y:=TE0k70,Q>!XGxh:8UB0]Z‰*,d֫_.1NЛW0*N-kbNL955cVIq'"ا\C&$k~ 6iɏW_$i|!"W^$ާD<$/uV"9{ ٰg 1S?7uixf˳ ֑u@ '.F Fi#(xUTwP wh5뀉G)`x5i3i 8iHB%Ԡ 2{٧RE-wjIk`{@OY)Si3LNta Vqeiŗ} Yt v18Pe+y9ɩh }9'0yyy)=H~x%۰pk5 poAcY0[ E( 1S7:V0g0 ՄXZeQ^INF5{e} tGx <7؇BH2&_" @v^( oGN !S) uC!E )OH/G:#`lr!f}x ǣ+q=؞ _=i &u U,<PE Aɤ * >q u nbɡo  id1[ HzcW:j/&jjb Kija# b|)iҨsX̅o3K eR+;Qs={@9 ЪA ( 5I*J}X 3ЯZf ):  [P3( z. SB-7Q&g+2*[++ WiyʹCɹF;(+[@ a @ۺZUKD>\O : Sfoռ"ok00xi}  D #Ăyñ .l@ުmM*m<o  =V{ wHJp70[ >sWV~XXۓn՘] >#dϬ^=(}ks6 |==*xL ee{7]C - e+ h9ܣmt~ި}[5Q1p+鍞b-C}靎}dwlnޫ.a簞3M~`e\ :Ⱦpn}^N^!ݾ/.!ީ]#1N.!/: ~3:[03].VmfboJ;OѹJ~^ޅ=om- Qљ*/^mcﰸ/ؚmr/ ѷnbP ,ΫS?AU jn(5fCԃT wߪȬs{b kӳͪ4sR qZ.79o\} /W nՐ}-6#INj@@QO $Oְu J&"i5Nh@d!E:U=zղE$x c-SZ4JU*4Srb*c4&};%,:Wa^O0ծe7ŹʹVvM.nAk9n̢̈G GKPτE%O66!Nk_т#TUq)ӵJ] S}U}[P_Ty[^+8sl35&8n m!F3;}+W1>kB-L.ty Zmy>)?"*"6 Jk7>:'99HZGi y3o'0'y-+%O?-| @} ) &(64*< qM"'53D*Ǣ=*Gv%p M&3=%L(%Udj&β,bAyb51 C2̐3y0Jy^esւFSE3Ol WEUAIAM-j);P"-FR[Ң.Bʽ$+4*O)n-s $I'tUm}Uݫ}Ӝo/B;xq9-/iձ ;wAe==љl Ԗַ>.KlDm~uL3O}π%/ma (Z\A06L{!#2X$0R>ry 3ӆhP!EL%vX=-^ ^)9@ NZ 'UFW*:H;/oeRis %G="ߋ !>{t/)F)!H`_&ILLyEnS֌v) JRu$KE/%L`DyLs 0 *e4KGN12WLfR 4"ޤJU>ᦨZEdf(MUS=vN $d'[<9)@$@QA m\V'cQ^~lApmLBʾhɡh\PSOfa-R&R9ԡ RjY:Z)6hpj4*CBe,ByH' - #AJU2#)j*iG%bPհEW}cO,kh[8J܇ZzrF9YFyt I"lV}&ѐe9-豆]wR:􌼡DELn1*>J{ ǽ7]d ?vss1ۊC)o{\ħExƶe*!2R+Hi ;_@)v-.0|N&S Pm\V%Tяiaݸ1,KrVwC_2%ĨF,Paw_#sJaeS,3`A鬪(Fj.UXv)yvB~ eTl2a waa6_j rZIAl $]>yTLDR CB\^{MXqbc x@2`^VʾH$F]?3'ujz,ZʴtMYFkъX"a_aҵ"H ʴ;THm /H9 ʑi+]wV(ΩȶCE|rCkηZ^ ,etn&zoVXZduG.^fF0i,YNw]%W]oy8.R :|z|%ɫoUme~'ߡ=ث|}Aāwñ~Mylil,"Xښ7?Ւk;?D=k^ck?Y<ȿ[3w[7]2+죻lzr\9?@λ?>>T;(@8/xN؇Kۃ66M#<3LۇtC7%4ėOH* I #$?kJs7*4CߙBy{¹˯Y@/4^yZ%1Ľ:ttJ 0:ĂAr( ("MU\UkҿC$0'kB\\=,SD|9=GĂP@2=gË; >7jFZy'RCSFrP"fAYQb-%TB#c;E(BћB}@@}Z9|SɄ0Ɩ)z tO ×.9:F£eC}H JX:{!vȣY]C|('|S@ LJ⽵ǞKJ<l<KE o714$LD-U|æU)-K]$;ńXį܇}EB>*$INʯ@̬\2-lNTқ',E$.鄡؇%u<\TM|+FItCM<ȵ Ư9@D\K`LM L>K($=~/Qx 3ۭcCDCgdR$ Т[Ҍ@ с-dP/OLITOpmlG@с8?=tm.CյE]"S0SM4gl AeM\KP\9QD@MTFEXՂWuW}s/ucC},] >McmJMӋ) 0P?zHF;S$mUFZUUq2E5T_C$OeELdVq#LÀaӹx1KLKS!XUK .M8Ե@@%@YV|>LHTNMmD%zCDX7 WU[p]u@aR,XH$Z@ԏ H3WJfYFCrYLصt4tX WYwzzE/X> ک,FإetZHE $RM4XSg4U}Y̷#MC} %BRY9BھTֲJ@^}`#I؍^1:T P]|>`.a=ߋ_R!U\ִ\]C0_>`6~b8#j}mF^{WbN$_0_5%n۴#\I(^cR#)]rd(`(=a<ԣcBȥچu0:_E``J.dMn5WA>&>S;A@K.L6LfZR7e^"6e?<VKVPne^2<T.=>S.߂n֒f6qAY s~jf`_odTnoVU&gwmx>NefNU"}}}hB>P.݀ƗD0bo.b.nFfug>Ei:T0&0hmh'F=Nxej9*b鄨=vVj`jjff 꾝j.އ걞~kѯ븦h$kf5k&A8lA(N>?ec(lXltb^Dhn&t^ڒMm6qg^hmqrPmpZiUmӥli0n~W ^5T.]>O\Xvny~Ӿjރ~} op VkB&pw>Jj9Bprgo 'G Wpnh Z&q Ǘr#?r0{Fr&or(r'Mr)Ϧr-r/r0s1s2/s3?s4Os5_s6os7s8s9s:s;ss?s@tAtB/tC?tDOtE_tFotGtHtItJtKtLtMtNtOtPuQuR/uS?uTOuU_uVouWuXuYuZu[u\u]u^u_u`vavb/vc?vdOve_vfovgv.h׀!,} H*\Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pq:Kʹv @ )^a FhGj2kμNImCsżYlR ֢?:.][%mZ:ԪS&)DUm+ N;Ω y&+NYҙ3>$Vw=ڲokzȣ {2 w2gy;]~kMAX') M~\iCvԌ@/>egx%)H`8ЌT\jE/'F:>WYM%Ʒ3Y%yf+2O].trFTlXLN ّ"SMN6OS3D@ Tu^5S Żh{lFss|]bA^j[ >[gڶF,Jw9DJy~Ms R2g r饃$g{oUW2WTsxㆹdҵ-{Bt02P cP3M#>TM磿@f_׽L$M Lj^-@jD#KAN'3>yFCܑꇐm#N':TW<9ԇ<$cHLԅ k0D UvmQ.# @hS:[22U#x>@ f!:"~Sژ?(+xHΜ#B6vD52A"#ta!Mj:lA 3=CPD,yI̐9\yTd\KfTqNQheBpP &2ty VR2H|2Hx$c̈́2x$i: lB ^h \4k~FΆf3:R qe CE0hyBl/D^陀=B߶kdIH6%,YtC V,!MI_S<ůBD5NxI$DyV`'"ZhѦ7YmEIV8*T2SB lET4Rז)5 B~{uHzQU!,rJ .f|N|26k3aN .YqWCD5HNBv xEvef|F[e:槟%d.kBP\y6.s#?;1 9FDX&kc@/3B dHLQ4XoMh'!k౤O W #e8߃7ږLjy84v|伬pŖ}q '4c/2 L2'A*Z=ؿ֡*M횪"Ţmh 9 Bx #"Ò XMCY 5\ CWfEk Ҍ :@q3[)ρ9l<7>@X.DO4\m8z/ȷbWcp'tn5hί~%HMu`ˇeMppJufOcl@ۀf1F0"gky, iF-'Dbc8=sX"&LQ|T%sGqz]Gz/*7tmp2@߼O{UjD6 gTh6,_]ZV{m`|3 ʗ0zW^/w-s}1WgDc12t1!GBi2t~waV ׄ`guge0_N8NPSBpEmG% H#xrЌx i6/Hv+ax cgXPD _J aw6wפ ]X>)1zvP`r2qG5Vy(Ȍbׇ%cq4.$.u<gĒ`GX؊cb7CY rJ (uN9BPiV@{!  ]\ٕٕ޻M ;^ G]|v$}a\׽d d/B~uwt=SyNEm b!^)SѠ<^~!@ }\=͟p}xteA&ޮqYI5~T Յ\ոDAP[>ȋiGNbٕ }U۽\ -詢ŮL>e#^t8}!9K/ F x{>w*zᷚ!٫;X]RXX\ ѩ,A,Z^2nW-]nI5>{qe ^hze|d͎nيR~1ۂf*%0 aOU’MQ߬yMQ#G^lq6)PɈ_? EZ'Nٽ)тf^uKݠZ v1jVy0/>O1݋/O4gJ n,ψI_0!T Oo,( A6iwC8H!E rNNY- qM AAOc-֟o-E $) .d8Ç 飨o:UnTXkD3VP-U 9&%dɁ2ΌkO?LJxs_(HZ9tt`N"N|q ,Xve9ӧ‹#s+Ȝ#9.ؾ ]TO**%Ud 6djR%|LH"T?p7f7v+*)@.!PJCn+V\(;ܪn#j6}֪1rZm$)i=THIL)?BKu0h!MFllAtH[k- )} Ez}JEqlF!)J)QaǸʑ{&eR*_"ޓ,>ShjL [lf4ٲE?T!pu6i)6|jCҐCiORj#Q%4EDkN܁ sxĜ;v''SRJ[7_U@_] `H ')e!]9jH6jS*b@4WJy Mw]u:y])8_Tҡ"ȖbX]3c5yXC$8 ->O@$ cQR䋹<(fIh:*MlNj3dM$OBѰN"[RJ<mL$B>nW8uungGjPvrja5-ŵ/VIA 7׹DT7;uSx%+Í#o殻&f .5N_JE*(t*Xɒh9X/5ي<*g9YZDБ|f"ul(l8?h#H]ux,Y)Wcw \qw TJ(tpB.&h0BY<=)$D"aԛm) PŐ>0!F,q$ls|eغ5}ୁB`;LpL/tKnK.r挢'nd<}ϨՋ@Z|x4N9 cv0EQYD@0 nXZ |lhFY`H$}݅HץLBMY>r6ݲ*oulQPV\Y\ǚgB5\ٶ_2ŅwJUvV ?Uoq]@fe<8[D]qEBNG:vjmH>;\"^ o~(v%=C=Nx+6؟Vn}?c|΢^VЁ/K_t/\x{'`|!۲81~|O ?o8еW=p&2˻e60±&Jٷq\7ٿvI{.q~V] U/3]h 1V_xn*viRDEXY=^>IKV |YVc+*=P.H>bvsCyݏd>G+(/^U(շ"-"F!?͞KIRx\`p`FPl X&3ʛ*)3<\5(H}@'<!!&1꺆з t @ck1!${zX%J!$u.@y@#̓;.x!" EE83(0H?I9,܊5*#k4EC'G 쾓ôɻD2,Í@CF<TҚCj?I G#jCѳøDE0CHC8U܇CChVLQJ1?8?-dtA{41WEUŁEXU|GDJ]EnĖZ[9!$?GXXtfŅpﳩnGz<r3tDLfh\GV Tz,h a?:Rl2GE@m4H\!mk=Ԋ3|FUƀ܈_I,TdTDhLiHHYlEzɚ,JI E4ilDHH ;LADJ~[EʍXGilȁ8|K|sDZŨLxI l9L䷦$˾<̊<{0¬}ʻwDzL,KœL4KΌJJӌM=W$̼;D }@KLAKK@L+$M$+#dj5o}G>H:P>e h`~ i1⚄곎]P6&ĞB&MVl3:D̍#Wz53"J/ ^L>!2,SRi`B f>&F_ @/i2#OH7JwaY>հǣK$ѐ94txK~zS](EJzz6IxgK•^~Xv))9*&D~@W,CǶɬCRIU˸ @ 魫HI$),aiMv1tmYL"Cn.f;*EiY/7YV6jnHpZ~@31 YP.-Bk̭*dj)r^;2,+@1%tFdƅ<H阯@۩H'5:+ l2PfӸS_1R4L̽edqA}N%45#>c~Pd%Eiy$TҼ /+xyTv@Q%Cz9 Fȋ4qANL~9δf;RN% 2o@GI_ 8aƸV;q|59@ؐY}ɐAih8+;z l+ ]GRx/ h1',,Y1&}eȉn#*$yѲ 1J {|"F.x#fuJ@: Y[ M|ؠĕH^&k6ީ rQ_BHqrut&AP9*R6Q9T)2@#8ehF}A ÕF.oK(:Q8RͳHdH52u2dВaHE@2Eb2G_)EiZLJti1,ylp iؙHG "ߩ41gt gDa z 84KXù֨k1m 0*FC22Y[ d ;! %όjA 6)UP|U!ǰ%#2qY;b6*+ڵhkymH\}@,R+h #ȳ U W(־mp۪_:c/$lF6"&t#ϙF>2acı@H GN@F:up]/Ȼtz T^}\&|OSC.A 8$4A¾&Ѱiیzm]Έ|g\umr:?=>P7aOuwC }5tylM3LOW..ZD GRmH9kDO>Cבgs|ÝiA?IKoP]'+x^"~H99wmcC12wяZ!鐘y{ic gw2vA! G{}tqg@j6| E{s|TFNHE 0xGnׇ} ) w` <4l'SN쓀zg 5 EЄNWzTXs!DH{x! {q<W hm9tK]XsmFS[h` f},؂Ɓ)\/b7XyؠW| HZbK[w!h!PTxSz q!ug{b( iwChZǃ x sP}µ5XWy5G'x> xA < ~Wa'  ؎XiP@͔(.ȀA ,j&o'"ؐXe"pwGqK~ R5)cqۀxWRq Ga EvS곇yEz6za J@H?iLw8 61!w A Q  (yp2b(`h@Ӆ ب ޸u 'r8F_KYKDHIX")qNI{RIGWWy /  hve ၁ )fn %pV1 %}0aq=eo24b`C qOy|C7Vs_M1Dy  P) ue`yI  )I'S֛ U &W%`9@'{y;7a¸]GCtK5ygDf zٓu'PIްLyg ʏ)  ! ypS`9|j:ju] tK.*C d̉ < `[?2H%Z(J{agsPT9`$veTvTA@0 h 2 F7%YK)G oUN s0]AM2~niwksTօ|T{y 9[ eېA3R%me _ڢ eW4@ZP&ZnaR2+ѯE㫽ʰw"Wj~E7Y# & A 0{aUb  I1z3ZZJP W zz ڳ!woTʡKçhZ:(R jY[y+YfP 릯0v ;摽 Z 3[;XaꩭT Pᚳ7;2@XIZ)'#7@XzPh?b%:&s{#rJv8j*q*̺@ZqaHI K53+3 J)} Z`Kk@  J) Kwzgۺu@pJ v̶xr5rz% vk+A Tv+9У+;|н[vWF (A1Z 1 +O+.7v\^`;SzS=SҐgllZKlëɱwqټXǘ?C |Z [ݚ;Q( 'a D,F\HJ,PLţ?VFe pG]!vz0F?~#9 p~|^13K6lVØB{KaH Q1RŪlK˶ʽ*hj˦-ˠ9+xK\ȥ4̜Qй<Q͐z֜wA,-ALw\ tsi$t0lр"ؼ=ڭ\|8!aPF j0)35 eU]s3cTKӹLЎTIwԚ ;OQ!Tџ`VЭF{ठlP!m=0hm>l @8kG 35(3xΠY8^F^Hެ|t9KN=B͡^Z坜 qcNn\v)}S[ۺQiokwx6 Nߴ¾Y|.LЅN]T->=ؓݮ~11,=)`[kkN U OpHKK5 Tr)L- QXB ~5W 1f[  tvz%ޫ{ /Ilguz>HtRZtۙyE}gpǗ/p @ g~ia\! tov?ِvC͡2V2u' [MtMz18 AKCObBͰoh.[^` n McȐ 9Ѣ[PA%bQĎ!9"I2ET"hKZ1e"cc9Śb<˨Ț`KUgЕB;| UU,X1$(>iQe%;h ~UާPq"%.Fw#)oA ׮A5F9~Ի0R$U哌q2F:(Ǟ_4Ө.j:\STM:ȝ-Kv_Yغ+7e #i_Չ+L]uׁ"q3Zժ%hwslfڄO(t+:6Hz7KhV*8J-J00G$Ʉ/JDLu$!}h4=4[i ,?rS>?P( KlJIx7 C>iSnP I99Hk9Ms"l_dqr$q}*PAu,?a/:R(3T4w%;ͯIrԾ@r |pX}bV>+3'DdI.e )O/qRT:E2xDȮ$4sCڴ$hGHH$4(eM_YIK&lwj%_*3X#9OH Ee Y$j>;n_.Q;@'t/M7ԍʩp3^|I}_q E`rӕLT́jmȷ@nV9ʻ#I;Ǯj|ɹf d21f+?ݩYiu|jHfetʫ4N[ 1c榯n[$.+>Oq\a\/T'Gj!h|;r5WWgy|ZpݪZ!g-]X>7Y##<@aM/a`Tl ><2qEO!#! rq70jnN돦TgHQMl1[`mTRB"ԯKLE6YvG~!^b"GB0: 3 c Fp,K9R}.!}!#>2CRi6hU R˅OAC:P?QHW)Ivaj>5u`&p灇Zk$G}ܣ 2-\w cGVg5qȟPIN?RCrE4JQ2"ҾHuLH련\a$Nq5'Dze- O!1#Rrl+'=F1sOYE-J0js_Y>5^&)A&f;:6SKdmM qbu.V#Khn,W2o[$bb7J*wT6aǩ>}=&g-l!):U6(Dlj[^6mq QJw<پ\NĘǝ{HUsء-c 8bQqM:c)pwI6AnGeS>c<˛<ˆ=Cqɣ!j MR۷#W :+<#(Ǜ/ j-i(#fB?( 7$̙?@A"be:#R \>h  ,./ӏ ˡ:aB7Ӣb-l} C Cp 4#@2|&?{CJ O6SA= >CA+/AA$@F:Z fY[1H$F4oLopCd$e\z?c+cdk/T/Erd(aE#c3K1D4BGP1\(- L G<H?kC ,L#g((Ir<; 6xHGYG|%* "8Z tĈs G GiIrhI9Б#A !8ȨIm$ qJܺ@FK\LFt<#PƐYPDMH uI 9ܬĮ ч҇p)-0>X(3>k4 32l#"G SmІ7?ӱ'Id 0Q*RZJF. ۭlKFSNQh{Ps7>Eɣi.;Ы4gLh.T Z-TcF1NL=SlSP-= 7=So*`LJMg+QȖZVo-Ԇy(Ws-׷(⃴Lś:VTy@䓴sVAVM{JoNƢ[)%c8_3{Tx Vgz]qU8LjJhL,,P@05 \-=O`v N-cXg+=V OXuϧe♎BԻ0\dY'X>4BH)ڣW8]0%oUb*\Õ39LøHfZ?]mWϵ#S^Y+R%EHE8]bL, TҴ bP-ԫ MQ;i< ]V_9%F*->3BM]l_\̝ hӗ ``-ե+_=DEeKl-ٽ%>E^Pb,}Vܒ5 \HC} an a1`y٬;VbPb'&6a`f&=5>I(=_b\bo@&nbpC0ab<ؔ @e@mE]c6~7v>cI.JK06bA3f(vcb&%69>N5VdXvr\0#OeCHDHDx6>_^/ee;5`e]^Fc4Dh_elfb;H^f(>EgF莎@`jňknr솎ݸnhmПj As?s@tAtB/tC?tDOtE_tFotGtHtItJtKtLtMtNtOtPuQuR/uS?uTOuU_uVouWuXuYuZu[u\u]u^u_u`Paorb/c !,d} H*\ȰÇ#JH 3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ qݟУKNue~w =򩹟m_6􋧭O5 oH_^:tL6 T{s 2k *e6*מ6,Vl:hD>Y36HG/I,8А.2xO>tD93e]>8yAdbCJw@F*Ak2u:N'O0]-ߊBOeӦR }-YyЍt){)RmshJh %cLĴjZ4saYkZT2p:.Ƭʙ1Kv" ۫CiF/ Q*H:&kh9" @i{ [TdMaC6 HBжO#ϖ͙l9K2K@̚:0MEZֿP<2X:+̄\@c4C$䁔_*). Sl4stu,^+4CbrH 3-҆NC4bbdqU1 %QEQC?&JƨtS(DL7rZ!9N^~ /‹."+3GZ[Ta2\ !RݺI4ٸ혐}D>.#OXLÀCH2 e`F5q=+ $P P w_g<^:| ]F2 m/'H AQ#01BTe1{.\…@*b\ ߀bƅؑK z7Np7C>J $Զ&2UL$A QĕT4^ V48}a2|ZBV&J3oȌH'T4)HJ|إ&I9⣉D$똨5ђiLc ݆5$( QQ4w~@LȪ?ѡ+#a Rtp%!PBc W䱍h`(jRF7*!B/'CJRUS@Gj&M!VE4U;KI>~B-\X谇@rB]< ɪ̡0!!5tm*% fZdoRO'lgD $FS_&']2$yŢ< {ȗ67B" #'qnȋLdzvRA Λ!-_:ƇbBAm5|W^Id:P>(2'i(1HgD ŖL=7Rf}P8)=*hj! Z1̼ ӿoDhex 1wKC8YRV4wjE?݉9E"UX=TcٓG}duW!~굓Mj' -!ѭYH؇AZ4\t#DWhvc8-lqRo&A2hhIO: :HBo{,!j\X$m4W$5jgl[ z(NSXtaoBxdM:w>PU JWg؋@vXv7IqqqxX&_":}ֆ X~x/|Z>s_cxyR[1'qC?ѰXxzayta_h7h׋alwUUQZߴCW+ǧ/e rfywxܸ7AeK nZmh=s(@hLjƀ [7lhXlU ^aCYim)IX˸q 2,~qWqbU+$RޔC_CV9xXk4T؉B9 @wz Q f6Y>! `{yhf^ək|"eiyqjg=w$$cRڸ߂ 05ADWK嵛di=BהQo t P AԚ镪PW Q )g{䀕ZP 9!7v"ߔ.}qEKG 0 ƩhP[v}5̖ >MX9 ))YM? )  I??k陞 o v 0Fi:֓Wi ugwgۦ jJʦ:*y|76 נ?&X0Ws(i6]*96څB ? I@:Iv89l@ PzPUv 9RF6 Zi{lQ m:.qk@! ewVI*[!)Za㙨 @D:, 3q:.`\(u:pђlT dq0ueI.#_&m XjyXJ)  eFJ#TH1:5 Э.T2 ڔ) a{0eF[ Xq=h q$:35d( ˰ Ʃ +%UJ# sSښǰY ؚo;Vd7 2 *.[1˱3+5 nhس06K<{|7ۚ55ɺp '#ip N`,𠰰p:qUp*]J^jd ^yq&[ۣX/0Tj9&k8K^ Ѥ /k 6_;; a 5 ׌Ƃ ˵P  VW:{v{Ɵ۟Uˀ;z;0 .Z L٫ Í{|2 ;  nDZXYL7QLNP<_',Pkp( \\Qht_əП," a}& 0ö[ø A ,Q CGkC̹A|줅njʼnLʥ,Ƹ f,v[ s?o: ǀܭ9*Wv1, 5P1,.) A#X~ n{l 慯̢jnȬ»L˩0k@J< {ڬlГbΛσ\,Ϸ[e+K<.=ޖh  Meu?ڶ?Mo2DS*A߲J+-I+U= >ܬv ljΪ.sZa*> p;pi <ڽoy;~=>oA^1kqے }I @W]. M) <jn.=Vkw ~>}~Ů(ʙNy>Q< @@=b鲜 ؾ RN~0d.mlMnžžzM>m3 a۞ Ȑ^햣^׾{EKM>&a#䟐-N<{Px_kɷ_pZ.u+X 0f'JƾΓ] s̔ϱo/T ܜvOU.9 D "FM>.͖|Xb}TM܇1d"*!‰H:1ä́jIU'GLLJJ3;Ht4QcM*k,X'~sOf YifӛӅSpKZTp:UnJiNl0_B,RyѲJ ׅ*I|PxԵLufFrSP3շV\e[q̡tV>xss}əE/ n/h/nۚ-|{3Hd0DSJRY^(6[OxmYbHR #iq[h:+bO!3,:Hyn I(5-#KTyLVKA= IJ# P#Zó8Qʁ>0ՂeTMLJʣ&046s*:sOT4}đsi?i׷Z<,H/],\3Y,>S4򉢍%+1>2w9m :T_7sȯt-*'Ro Q'"q ( ඏ+ I4a >ys8RјIֱ<~50.UuJS 鵐+&k!S>qP`8!os HC.k@!EF){1SG&\-:Pc!I>bA4 L:5dmlU42 0!kL4=$ORr/IgL!qHDe!6&H O{z!Zj N =YbW9)ɺB]oe!>kU0j9xO$i^9ْ l]Y&YJ24fuYq%<8Rq>o8\jShIgi&5-Dȡm]S.s}s5a#YY|B`R{] ?fg'"eFn+jyհ[;Bt%bZgg/JQg%!N/b54)9{TKqŕiLsyDdٻ:S7i OKx9WI0EW/W]{ZE;0%Gδ>qӘw~hIrE32(7>Ӳ97^/z@ =4 .(!- >Ir@P'Q?|帚ܪ@|@ ?49ڔ1QuB`v dA=ylӹܹ㸽-L(}5@ MIQB['k;7n43-/sB1DA3<-SÜAj(7"(t[ )C=<|Z-D%Ei+ |¿n -uBa<C0}B*4A\ <,qP3 JjZ[L7 I$7DX9I03at, ?o\3Rh3Stźh_3m 1L@Kʺ!?6<  zģC!x#bC{,f땉TvKDx>G}tIȏ'UɸGI\+HC ^Q[òó@< y{DA)+<~,rhmįQY U2x23+L$+4ͦQhP5gD𤩮̳DVlOm,MGo O tC$Y wK1sTKP{M#1 }9]yyW t'D)N4w<0!ILKӺȳL$%ʛ*%iÈmTm&xAtJ`MsЉ0cUfAMG҉ ҅H=9$ms}I;X{TW*Jw)e)J}mPmֱOFrܼØϛ\5ΫtUO։vBйщ+*zM,V,͡-}mUK >01\Ç}X'(ҹ%"8-{5Y};Îק= N95ua[Ϲ=7SդS;YHR݇CTØxJں\Td SՂ|A(lԅ-:ȿmҰUBSB l-K\ɚeКm]1^׍ՓQƒ҈MFhX0t\375䅚UOϝ5 U۫Rߺ@L]\}0R`_=]n9݄)[-_ޅV`< G$`(^߄qMѵ^)uޚ,gaa_G>'YU[Q}`⁘_'> a}aV jW=r ] ۥ85mY%FXChDHc8_-wFM❥CcEV;dW$fW> 9C9>Te_VM h&nS&g4uXhVD.hVh~eg|i~^;6^iƓ6 niӊ:iiiij\v&e=j~j>jAHjjğ>hjgVfVi,f}}gNA"ea A(Pk(G@^_k>nFSNlN߿*`lӎmrmٮm۾mmmmmnn.n>nNn^nnn~nn^lnnnnnoo.o>oNo^ono~ooooooooopp/p?pOp_poppp p p p p pppqq/q?qOq_qoqqq&qqq[5 !,w H*\Ç#JHŋ3jȱǏ CIɓ(S|p˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯY[KٳhӪ]˶۷p_K.TGv꽉w߿:eL$+N|ɢexI˖%q,P}Bk8i1_/ҟAGm1dӐKv:gji0HcT>6[;v Y-p}VAr~i&>)Eۉ'ۀ*!#|sLHT/책CaF_DW`lUڄL0h5 C 0S[$߆%#hቸ]i\5IPv1>," QYЌn3Pch&*ԟS eL8EheBs%] 9`~B6!h =]8c":YP@3iIP8).fvB]hCfd͓p"n)gI3 (AgihL>,(sЮij@\1C{8KHb])_iٞ(2 N#P-#lD"T1a,izmg )Iyh܌9;G|2ZEHrZ%X>d>d\@6/x\hZcXSw|3;*EIt5pƐ{>T)z5}K A~&l~׊v5e8)o=X}Vr-Pv4>М+c]}{^ʘֶsҹ;tQOD2q`I TVM[$2:O\QC-SFAJX ~2!CQD$guf$jF@ѴJlڹڟ!D QAݔAGf]Wz "B Qu dw?HwzNUhӲI1`3ޘ4U `ן*XF-!1B]Ҕ1d8JC7sх YO3="YE$D9 ]~̣.vG34-7nJYB:Xo ܼlW Z׺r$h=]udW6pc^n iӪVT<[B 6rsF8Nv%=;A"3C"g (5N$ OcZm"L_ne bEN"]L#êGtrQ;[i@-@F 22UbaXUb'bUyl% H]7JxP 2'u5|,4'1gbiG᭦J}h(d>3݄VVǘ[m > XARt zeA%]t ˬHavGcdFO8$<3ҔF1LijbޱP.md2 LҭG4n8Y.c CJ LKL>ƝߘG% z(ʨΆ){/kv#&8vأ۽x(FKr3NzL>.RAqtkPY˪F-#J~p!l,yl_'cc?oXw2{*{}2> t 7WW+a/̇>O}C ` Of &&r\y'6)PPb<r$Qd~OaPa %aov=Vm@ xefaN4_,U N]v~۠ .aP OfbjDžj(q KӀSu#g\EFp~SF!X%Gn31u%m'#% f 2%rd]~Obi!%+u>updNvJHGsL]vJ' pH[&|\]b(aJZj G)WT5YwT(r֠ spRԠzc@b %Pc%DvV w8 Ezou C+Enz4 YhZ.=N(} Ces|t3X/xBV@ mbL˅ ψXaӠGϨ!&^, 7vGEGʱyɸx6P?75QElNwy 8 #T#V15td۸Vp9 $Pwuz u~hfpPv~v WJVpx聊dO pD -_Y6& Xy xJ\8. (%}ey H># l %l˜1Бzi&ts膎I'GEةpc  C$3i?T)с5PRP0DsTF )r`x{ɀY gՖY \Ӝr)LAP`&Pt٢YI)+ @4x9Y[v%86 Ґvّ[O.`Yr; aњ;g7o/dh/AirfY!ʜLa⢀-J J pS虞 w԰+:]= 0JqP0IzP-eN*le$oh `ખ bꚃ88ej ٦ *14L#kNd#T)*:Z,IɈ,s $اtI1j .}Di3٣sx # ZbX eR )W n9GOc\ QsKWwP 8W L ;$d)Lh* Jrz'O @FNŶO/%1 _RQ S>*n`v2 a `a1[][\F,, Q`* ڹab&T] PՋ^1j̕.ApќN̞N>Q& Q+\qn:= g=q쨐H 1(ʕ-Z/ N@\s  v]=Q 'Qݙ :*6!v7nQT v Dj豶d  wN,n&/(aR-!a ~)- @x3Ozs&/MO3L߷L_ނС٫ S}՘o<*j|oӐ,O\ h{J\)<Fd!0-qP8Zv6s~~o G - d#k,ڗ\@I號 nKM{ .\SARbˡ}aET*5Y C] auLՊcA})ʈ^lM{ U%ȏ!OfU4kQW>EˤJZլ){,m:T(?/lʑ1HC-"nQ,kIb}N3Оȑ;kUĨSj-Z؝_wX[?7X;}^fSű 2Pj0 >L;+Ri*H Ͽ3;{%$J C UA0cC DO)E\R(8!۱~"˭hK2"p|c\t"L+ s[?sN k[ 3͌QT*Eת$$]+$\(VzXe(Z[H2Y:/Sj YL% {['/UiMkiӠ8Mm6ݺD.kv Skp]JM6)fc熣Mk8xbf"Wym}*&"]G;q:a#ʲϼ\SY0++[VKwz4k0{ 믭*S[3 6[B[Xkl[uFZ^Ƚ o#G !dZI3SırChUHzFpV‡Q 5BIf20֤V@#4IMR1LH'iZ! I%$[ QI.UL%Ғ1}qRJQKF{?(+$ HzRCN-U2UTBLTN.􅩗9Rμi"QNPZjKj d Wr \DD*V[^_fEnkRIvJ%C,5LNF%4t#{:KRz\Yt6 iXTEv#TR!J,^.r ?:bY ܇fҥ;AH'$)WL$lO2)?M^`'aygXFcҐ:TչHk\ú$Wۀqdޕv`m:V /0h6DKO{gq"^d'A |!;I-P:r9>)~:=^'F5"2"%s+F~/TlCEJ˧įU `18(liiX$=H%ZuةUr;T>)G}g@zqq$RG%4& ҉+T' uBA4)źDij"e4"^ YK0]ük{:q: ExW#i(̅S\ R|EF<ɵ屖B'u(ʼn+TTk R>И˄2ў Sո8U[ejWu ]U^.[JA+>(лNBI}g`T T Pm}g{ q3'<PtmSǍ 9M͑A:5S#r| @Ѓ6Jrc%({TQ[Nq|NXM%X'JдL )̔Mٕ%m[Y8Qe-'؋%څtoU24:jc@Eh}&U>8`ҖTɫR}VZb)+9(̲EttݞhMByۼ[Oc;Z}uD؅3 X I^+ܫ ͥXr3ݰ[:SJ-WpYp[ է^]m>>uS2u5ᖭmd^zaeX$#hA%DWe2 ^؆m.jQ؊n(ssP_SlW6]hVO1X#Hi^ifipij>GQd^iC&4 &ɵ6kNl-m f'hjhꧾMp]+U o̮n>Fd}H_D|O'smP9﹦dێol}mlvއ6E NY'n 8L&$ӗ&gp =Sm`F^QofBo o#3oV 턨rnюq2%Pt鶖+B޼#.Ĉ&w}&7l3.s!vBiM%l[5i괕}@y2)p…;iʭVX9^neة%KY;[Yp鴧_|)ve+0Sh AmQT&I0BHtˆ7M+nӊBMu#1hڥV ՜89wM1{}9eQئ%zQ!dTYcPGJ&d lyVSJt,-5():e*oŵϏ@c8_8*t*`Ji8.Z2* Xkeki* [,*ĸ,P(CM)GUF|8nkXbG檥W+hEILo ^聲O * |LV a,F]7 o]C!W*7T%h:B$_1csܵ^BYoyʐc*>_5j6B{2QknpG.k{$KIJu^-vM]CvڮMT]T* Vܞ2q]7Bv^1WڕIp)~=;`)v|BBߺ9S{klVsxƓþqmӎHP]֓\≋\6 oDjx'E=W) ^ C߭^PK5ZDcN?72+Zبe aRXYҽIŃ tW({\QPH> /2Ɔ5,VMbX2Df8msεD9Q"ӭsX-h*NyJ c(43qg倒r6BNrE U`$y-b %cK &> DT] U?J$BIL6wZ݈W /M#`9URKG+5~$ZQQ0qBLPi! }bIMZZ$4[3y{i:J݌m ,_O[nNB|J_\IV"}Ӡɼ!5C2l+XuIR3TJUqT 9:B~yK-{QH^7|Io]h>k иѨ%ab6|d7>9ѸfjlU]CRTNN2+Y]WIzYJz8ZCU°\,R*ǒ(^47&U\&=߈q+~ Os ϻyp[P5u]M92[t}(`WNxL.׆ȏFYⷖ/jJ sOkT+9"ν6hƧrX%Zs]hTј7x(c7EGCvؽ*0+$ yӬx܁%iIQ)G9%;:uNÔ2^kO.f}J3v ͣEaf!Qn|֊+Ǟnq#zM/o,9zKq{)}5tGK:<Ȁ[)R3mE%QC.ˏxk%xK!e `۴ҽ!pKL_Ӊ_aBEU`e_`ΊSӿoTt_}=BP`uޠa ޞC1D aj VC(ULT t֖8$"I.ഐO!:^z DH {8a !7Yߍ^*$4BQ4B#6]ř_jU^P١߱$: 8 B"YtB4G]|D#J-a2aU` nqW")"3N~XY8+6D-FbVG4%f^cؕ`9^Tb0#!Fw]#&6>"7 a%cVx!_cm_'˜BEfK+B$}z_FoD=!Dd=鹠q$<&B^a=TH$ݢI]څa 4ZBPb" &B"CYeC@*ebQ6D\fEI.%<_=٤I ^DjK`%]"JV JBDK EiWCbeMjV!dTf1#Y%YH&YPc$nrgbg~&ASřNI&T &tj2*m&YB;*Df"- xڅ7͢U6!at 7&Y'7cJm]fsej_N`__l&&:`).X}BGf~]f(`YL6 N{.bVmEN [*-<(Ob%Ze !DRzf]'Ҩ.t(Ɗ6T$6n#C)I2ives!bN鎞QFǑj,2DÛ֛ʙFENKhtBQfC霎g~F(*B4h}! BnNKja!(עd *jQ>|."#?o$*:Jjp|B}~E *z]jW.k:ɐ]i+)nabR6ķJѮ.gFkfˣbkT+)+ڞ* fyZh֫xB+^щ'R ,,F,Vkn,vlfzȎZ’ʮ졲˾l,,֬rf,썄d-ܴb-&mT6\2N-J-^-fn-v~-؆؎-ٖ*̞Jlھ-ƭ-֭---..&..6>.FN.V^.fnv.v~.膮.n*馮.붮.Ʈn.ޮ..//&./6>/FN/V^/>,n/v~.܈/x!,vu H*\PÇ#JHŋ3jȱǏIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjhׯ`ÊKٳhӪ]˶۷pYsM߾4jK%}#v1@|ČK,P2cȦ!;L˗e2m77;8} rylup2V͒=YM#v`.g>PAG,_éuqvLlfz߿ԿW::ՔpcVT2&Oy:5hZW}瑀:9=&jUB4P6 #OB蓆4dAbtMӌE2L*(E6 lbIT^vL"\3ˤ1CyCcpkfg@R - h$:lfIpKUqWvff}# FtT@*A3У' \, M ѕYd%u*ALK>$gmYPv>YrdJFhN6s@˜{ST1rgL4nis. -Aͺ2eE4(,&kt$ᄎ4KP0zUp*(2+IPȰ3M[QoR!S0C-`z8/AEhmEtCaLl$m}1o>7./5XZTF;[$dh[dtBrC2HY@d^wDyߍз >f𞰱Ans9%>DSB@oOT昃FM!5H@($@ }D"HNyIcQ.dF)CSΌF[\QBzns"Jcr *M(L/ԇ{8 |"!=}DXց|o5}6WR#ƸP"R6I _z! %*Ӱ2l 2!:v ( p7 s #ٺ h^2vfF4pmuջS|ن>*=[b$Fi]H ܂2[4^{Zobl ilT6?8>c%`Ԏ1lqa\/j]l[e=0bx\APkQBA`i(Lih@0VJe3\˻)>ċD jxCc ğ" h 3VHjoW*[{ǖcwF W$<1^d^^!S[P L bTd3m& hTghu Cfmwi5}$J8yۄ Niqtovޜ3沖ƿ֣?[϶A=g 91VM$Ẽ#+{:8EADٲ4wZmпHRCNT?M2鍍+ys(gzV!X3RVY Krx- Ei#J &].7.I[DOYmzgX߉rCC\^b[OHD4WQv6Ȱ{7{~wd| Y#g'Η>5(cHؗ}fP 0%iyS!vD\Ay~x{&pztZ%FcG8;J;Hf G~Bl /ˆz p P+GuV z''WQ 5}m<$i0~Q='/w)tS7=0XiFHZ,BC8舟upgS4  [7` hQ }g`'w6R jb< !$fLX xy7 !A$DBd~rX yC8uns_?lT{dD a /ՆŋcN!AsXx0zw!H= Iш2e8W{w ox6(9h ~< ofp`!B 蓭B D >(vqe ًe!(t8mAY4)b-XS>7~xSS`G9>e < q ml[> B =IMnwfA"!0\GLx!n6H`A=VP EHZ;(7oP )ǙɩȘfH k)  摕Ԕd_}(M s< IAh n^XEv]6i y*3r߹ 0 ʙ=ple(A:؉p IMP+S-!ٞ 7\)Ր *BFA Cm9 [r1Prz!  y]Ux) a5oshj>قSr: ' qQ\m*z  !4՘XZPp+% a wL$4eQٙ<ƨ$U:ڏ9)gN4JS9Aڙ l&Q 5| RzqH ʒs6JQDyԡ'9 `HQJVj˜?Ȫa  :f />  Xq zgs@3Q>MC  !:B)H8BEm2 {Qq'Q{A1uls6(ȱ< -ڢ=YCEx렷칞{r  7k 'aK)1D&A1ؗh(hȺzYYyw-z~z; {~96\; {*u!FV'ȱSkȷ+Ft\6 B1Qp,uÇLu8Wy oGaXr[EDe a)^:i%ao֛b! W꼯vWe™Z摍olA L2]ϰ6E^eۊH>SbQҐ)*ky\vIQ}Մ0 =! Wdw7g)WzU&ܷJ$1PSAL! 0guwHJ?e~K@ ~LxJ/tѿto3My nd?}[lM]^m QMV+"bJq|w-/|]=!{IŤM{E"^ <٣Yqn]TyUM׿ Jۜݺ 27M 3|:9}=K~;4GȪ [7JAw~} ĉ!kڨ] A+x`Zlэ Jz """0ԚBә-!E@O򷌇$9+ZxzQ9>W[tm0>UD^xp}[<pֆ:fDpqvI [d=U}IMHKFqqeBڈ p,| DYuNr9GP9i؏A!>哙rÄ>S&9KKXE 7|P"Z촬@O!1>!r*@>7&9;a7 X##Jn z 1O9*,0mjr0E}%Y} #  p ,.?~Y@6;/K!E53< ULz/`- 1Q1O0ڸ\/e?m>(=kAEocEZzy VI0M N.p Q1ah # 2eyĜ1 tbZ ]Ʒoﺟ O$XA-%doquIEAJ*TDjXH)UDʥɁ 59sVs2d0gQIb4a}J+UXaQm뾬Ď:`,ƊEk֭م 'nŌ| s_ A5hSjy JL"*SSrp+C3 ,j[ber5};6¿gcݢ :xl_SNKE}:LyU.ʝ0-G[rfZLtGGwutP;+! LZ>E> B ]s}XPkꠋn:ZD;" ?4霂+)fqH<!jnJ'"oD(N\\,8dδXe}rl2.$3_;)aL;Lp3-+NPho8r43qGѤZ;pǚ}t0},'M.?O+&l1h1ɼUT^ H(t N ⭷P34-RKҿbeW[[[V\t !Kנ_ Bgw;2i0ڇM4%(Y( )΃1[?8o-,pXr oQso{HL&m(^b])ݔ؜R,}~8Cre;*ymSl9oH Z>5"yeQ ѥpIC6KN-ܤ7 ;l F'z̙eK)IU&BA.F.*R׾}.8yB{UR_? 4 &6,yB>P0L`BrRNG29AB(AWK5 C虅w¡[Ƙ/FdB D Q8q(6 w?8C\T ih05e$O2C4mXk1n}%C2qA DXh3 #F:R d-(M6Ie*>Ec"@ }R^,,9d(#ۜe1 Ig dRD0Yb^"$#g„db&qiA'e6f$T4I6Dȇ<,zr˲AQтe_N 6e3gdLL{4q2`"ńR hQQ\EJ,9Nu-" o9>NodvT)L E1i&Tl,PU-@ E)AaU .VlJê|$q8!7ېPF3T ]mKUlUzeq5ƹGXB!erM*h\N,8Ēu.>:ʲ&x@dۦWe^׃mTj.µX*9wqJtKUh2K:xTҔ!gfX6SvIj-pApqb₿Q,feMJRxY)ŵpթŜۓ71s 9q_ӱ1Bl2d;vG /Lz6jrh"g$!NpGq;ҭgUQp[\He'[.kלX>/ZE}&h:Yr3Fc+֫q;-dҙV MC6%rC6H@NG"& /ez]*pѹ@\Ղx]F1ALfyEZ8w!6i&T}hM2ZqaAA-\PO; ,m~v3-M̋k^·c3!s|B:\tV./_zng>6~~ JxbO8h9'|q7XGG6oA|o]pثǴI&n%Mo%L?A<~먛NR8V6e.3d#ۇ,%7;?z`7*@G %뒻ۇþ!@ ]@yTO聖b"4Yk)}M J@Ǣ0P袮F&MI,HҪUU𪾻XE*9yxz{jjL]XOzݷxB k<ϲ3}F}YmW˧}y}s;).յ5 9 _$!,# H p+ȰR%nCȼE\07[fx1"oBQ;{ٳ/HǵI9DX->l#JH\$!ˇǠF jjWEzt>USo2 /֭,֭*NmxY}TRF u RT0vrѻ{͝n th^ifzULh3+hH5%GO ZIT v0("= u3;`$| C=E(>C?4>Jj! 2z8ς?6yfjsV R'mOV^|b@h$qv!, Hc*Th …6tht:р*U1fܨK*A.pdɂ'QVl#P[HϛP\p"PH:Uh:P9]b4r{˗#ojm=Z=$ˇa˃ A8}'|  xѬ08@8UG>NςXHPWt&>!6(w"@J-VX-7(⎆4Rމ(VmJ ;$̳ӕ!Gmb 'Q .8O:vtxJV}"UFv"9EjXqJ(IQ/XuM޷+i8/Tci6Zǀ! , H޻\P`4PI(QaC@y#JǏޅuQ-o>oLeÏd-ڱ%uLBPT& *R$MzSy@;"eժQ!5Z(u-O.זu *ZU K1]zEp`d[dK.S $l9}QOR-mx^)%BU(:^1X q﫥eK/_qq"[U"El "0 !,|mPm@Ȱ` >d**Q>#5|ѠHz `^O+QǏ-uC٭\)ҧ&@$UPUɻ}xV 7oO 7}4xԫh@u;󠾿t\,a!,|% :P* |q}x1#}#6{xe$r˃MfAt JA#j$Ҥ-(Z鼤dSՙgHҪBf H\[>Uǐ8bڧZ#@чA4H1c 4걕 =gU;i d!, HP*옪 .LxⱉkMhqZV\d6,I1I,)^83fB]&is`}x܇s2dCꪈ4)A? *4)Ub%3՜-jL`:%;UlIX4.,NLwc^]wLXM1 !L,}% "x* 6!DU&R|}PcEFzlx2ʒ=ce9'  FgTUQ ع)H[cmH}:zV؎P1c۰Ut q-y^#skCoVkO.j` L cZ&!,w H*\0Ç#;FPQQG[C!Ʉ j\)0%'֪UP c)B1z\ّKnMt2羙4<5!,W*,Fz"ӣK9nԪmʝK7+ݻp߿|u.Xo#K֖Si޼YϠCMz4ӨS^ͺ׮E K[ 券S^|Ї϶,RruGνmRx\ (ӋξDxZU, ͔P}&TA~)h!XPN W7Rۅ$g@ЂC #bi%^Qi>cwA`A$ 9."S:8ӑrf޴(ɥFjHN sRƉ07ƥfG& Ju *ixsi#A2&A6 :j@Lr ICΫꫛi(6멠JpȉP@&ls&vyd:آm \R.TMZ>Z'jtyn6hLb7.ə$=ES w*1o`Z{+r8uoRdzGU{ꧯ4K5-ja>M 6 [xզa]lcc} adEXY̺,*;kEѪ`4Z2R ak9H>4"? sBx|۱=6,bQ\+uQ:T%qPy@iJ }Xic5XTr5t1!![/ַ0)x$?엿ƉSDE XK=f!9{W>LZo]e Gn^c\K%5U8U38NuZ|ŷPb)VnFpDVȑCikoދpdpP x3Ex U'h2;ˠ?Pch BXQPeWipf3/0sF̀7`טִBF7jfLyc#[R| vGH؃Q1>YKM>6 z0@lO-(pޘ7t=z#wko#iǷבp~ wq#p, 8U?XD#~ؑ"H)ŕ;"*w9}(vK$5 s~p!AC|#9ЗF?:%r[=1!r_w`zDuaO{г^svl>ΎKf]ִIvl]Oe {{9jҞ<|8-kwxcpg"Q{ۢ>uP}e?د́*X{9D_@aɽo.0䥵gy;=~{z!h¯>O(P n/0o7(vL'k1 s{{{7{4(o׀vvq?7|w}F0!&P|t|'g"% -[ea!v~tZ'>_`j g~.K(BgKPOtQ/(|(zB>{}p؈rt8rhœbf$} x}ߗ(5(t)]Hxs2W肫X}h-CbF$~H&78Xۗ`kҌ@~8)?ǁcVX}87ȏ9i珍HhPȐL'9swY-bs ّ!#I9vx*q02 4Z7): >uA)DY2A M;ɓiyВ.YNy>^W([IXK>)uvgܸ[ȍtRsɅ sh5v}xyk {Xs˶C(66yȗazX`hu02稙阢aHDWHrz9(rHOPCxُy97A .بH(I9Y}멊r!gTjHxȹ[Ŝǁ8!lȁ|zfc֙`xyu ))8 }G=s.0:hGv9|?' :dE*֩قI" >'7(ȋ驅WY*t1XQ!ȁy]Zkmjwʋ[8zuڜ@K'gj}ڂZ WJG`W qX:GJڐ;2ɡ @;)hZDѫXڬꈴ\) iʪ qحzz0s@麮*jYUHgڪ77Krٯy +H +ʺZK+r {(؅k8 ;x.0ɪ8ۅ/AHXLD($ HVQ[}Z6 +X۵RH7+zxs nk*jw"xvl[ڷ; YyQkiֲ`:+KKk˺ :*Kʷ [m@ 땙  Qae{ȻK0īUYkkDiYegb@ `+epGKz7bl;>[Npʍjh b<.Ÿ{VgPȢ@>6jZ70v;|L!}@RX}Żggpg<Mλ9םajYgf1lo 3x2Id sߺrs;1c\#MDiPNP[ٳoM3rOQpIPSB>tz0 !,~Pek00CUBtC Y<F:JA&yYY\GOod͛z#"y Œ,3y0"!;XP#G6G0㾇DTّKDع<ةT 7r~%PFU}\gP>TΛfMQ3pkGS;UoD  ! ,w H*\PÇ#[F}&8pď>IR! )l#FQ&犟8DZD!Cʥ%Vɉg7f֝HQ"x1ncD$󷴚TY)ƽFEa.'8Ǎ{ՌrWΌ t&Hk[Hqnk|O4"yLK6*eP^( X+K}h<#! 8$S[EQ1cCL.[nMN]ᥦ^n"ȄԘF4Kr.J+%LSl=dc,Qb)}nnI3, Zq!E9S>u*0,O_x'f"׉B,RZ!15T}Vi*ѧjPuLH+ZzV>O!WhQL4"3 "a<Gc`Y:v[2Dbv+CsFlqYPwh#^Oӂcg{T0.SMeIu< { 2"-[Xh&\dHmX"PŒl)pq"Fqՙ2} RƭÖMTluV n+ Ri(hjaEe% gQ\@+ݸb^#t oH78ճBufqkq1[ae\ӓ viuw95 ], QX\Cc2:vEefUL ڵr2.P=iar')94,h,:ɽ%LESU3 we;>9MABЈvMfI͑^A4fRΔ~qmfˠMRS8g6ЖM,7*;Ѿ2sw4"`.6gL=*ChG p_aqch[PkTZ܍t{}tna 3~?7{ͮxՍp3^H Éʸa2h"庱Y øzL:t'Vv9{\ޕã._g׉ aOԝ䪛'xL41˺رGhmZo'A='.xv3 ]-5xrVwm6S/6c<<|bS]mwfgJg};HC\힏qp8OoAҐww/B7;J7/zog+/).'GHtG Ane|o#{'H~~78hRmƁ~XF܇uH%esӂQswT݅&:i<>x?hB)&a9pDŽ|Ox'  h$+31]9y}&#x~2$pq9!RRv8?=bA&~H(( X $(]u' f8(g=b6+C4+t(Mo+`MF >}NȊ(8gχ+WK1p5`5`seHHxK3Hp1v81rT]([vngd{V~(jwF]ddlGK% wFlTGgu蘐 ِAKQA<tDX4d6WM=Yr kg=h(+ɒq.|4$8Si17_A>9{pqfdyat(Wٖ1F`eYb)ze 3A!7n)WZ ^<0wyxrz0  4V9N%\pai׊'+ipud&gb}p) ɚu ًGhvp m&XW8 (wTm)Dn#iƕ MH"֙y pyYFq&`ɞ?w!7)DNRDBRʘ8~9qהJud]Nvpiz*)9%FDfT}gIP Iɨ04 NF&jXb-գҩEjˈÙvh䠺%kCX\ZK* d F[RmEjp٥t`j)7٠V;A H)"jHYyjWTr*jHY[:٩Gʈ4:NJʫa)wBɪj: ~:zZzl jϪ|W:ȃک٪u*l*Q)گꮠ : ҺJ阚; K|@;.갏  {a*+yj%[:A2- ,zFjF{k۳.?{\JzG{z ^  >a ~8銂ZX{Iz_P_{L۲^K۷g To{rQ۸vdk}[:ڶ2ZF{[ {[K}_+ P yJ6 +pkʛ++0K}`ɻ˯ i;[{ۼPg{};kdirK{ˋ˾^[K<۷ӻ ܿz0Q!| &|`˸ٻ0<ô[֫8 ,#|@¥  ^[ 4Nır+<" X| ĥ{đY |OP|+( %|Wņ0(PwH hǀ+>\$<†Y<)\۵е|x_2ȜOU|ȉ,(Ȑ|nj ; zlɚ\<˴ 1ƇˤlZLy0ŵMLȇ˼þ Ą@Kɐw˿{}`Y{<,|ƒ |K˵Jጬ|\nȣ ŅPKQ<LLLm| }}< DlrѶl†΃09JD*mх\tZC2 -@<NԄ} yGMs_;\"τ0P- r]_ MeԻNփ`ng y ֟zK|"l2} ԁR-صLH: I{٧m,֔}mŒŜ-؀l]ء-ڵ\ڬMх{Ռ}kl-f=O-Q-6 ܞL} ܱxL ۳M3 ם݁k=5lM"=ãLك  ܵ,>Բ| ٜ-7Z.N0] ~M&. (\k_nLV H=N}ߍ.tZ.CGnHrܫ͑=N-+ppNUc]#<ߧ_ԻF瀾.|*q}>~amwp>n›^~FenYͬ کDC оLܱްMc-!٦%nٽn^{>~ʘ}`G}ٞ.m^Ĉ%n>+. )^C܎~> n㎾;Q,=GՊn'> !,?0M1?n@n> 0]foe.Ac=ԋ {`0NJ'/!a吝d\^/AؽێOg_nޱ[nً.={P.ΐY4_=pƔs >&. 1/$ z Ol֑,t=mȣ/F6]yv%"hD $gϾ}!NO5$#B@L$2!" B9HC+e rP @9q* OA%Zy.eЩQ)j̸*I)OfMUdL2ctYlNxeKt@ϟpKh]LJ ի?"DIdI] ۸&AiQ\mg}1#֑O&frٗ# 3[ykys帠k+7zji :˱d~,vKΓRoEn:!Z[1͙ڍT0AsAO*J̹Զ"?Xm%6ɖ:A)t1*cn ; 5+\鵰l)TTpE_tI(9꫒#xGƄ q&HD b̃(T'H]kmA.okUVq=YZ8w>]7EbU᳼w_exʂ >ؾ$-I[ qKe'McU!!&ĭ73fDfH^`˱U^aCz9OֱGS-5;EWU׮NY\(_yV*'H}^T+;JKU/T8m&\mASu\v> O~251+ 橷hUv̙,LFqB"Ϧ=׸{ND'WxK hEd!MVkz[AE,ZZt]D|tL!t#BL=JxL[tcB>/ ѐfծU|$F6S܀ܔOk,"Gh*$A$>sQ@&'m3 (" [Rq)[!TF26yoEddB WJEfdMtӛǤѫWB rSKQӗhUDi+,.)REC8ELi7DWWhh@EWVAŜ>҉A )u1;! 'f*27*˫.L$Dr\J%YRl:pdQY'LA WFV|Z̕45c&\z=Q+*7=#/F)Ob2V&Yd6aX?KѺf 3kبRIF}]I؊ JHzዙh B ncJVN̦P*vE˒}\M%X "kdGˤް3LKMɍ5C(.n7o1%'Li,fc oyP`%00.ݙG[T^Zh| alRN8C5ۣoZ\k+ovÏtUJ~z|w/C>Q''b#ճʒ;Y%e?MwvgyMϽņH@!,xS UۢE@Ȑ5Hq}*VJ#EP!⾑ DA,Rdx }3i\P%͟=P!,vg  E6hJDah hD%Z!EK\ B+ 1L5o⤨S%E;zճ$B@UHH#3$1ԇi!,u  E6!"L>p-CX!F(mH*<R&z#e˖c f Yclyk(r@PjPU ȁ u uLվ5CJUU ׫O%z}UImVk]DIի1@;$0KR7Y!,s 80ZR \p_)o"JV YC& bR/1d(/"( =FCd͓\.̸hfJ("˹@Ҧ)4(Q[Gkt)ЖFI͛C#j9kM_iBjQcTcVݶV ٲuW/^pO2$L&޶ejx_@[`TB V-ѭ4"0REP;ޘQfxǒC^[Vmu$]:!,zUڷPe1 ``_ZȐED8"Ì7Σ-"'coɐU4D,f̜:*c4@hEHTE@ $ ԠKׯTS=Cy4ROֲKJRU>% kQ;|v_ݲ)e[̏7D#>Q7.n ; !,r" H0ZR \P`4p޼TĄ ZֱcBE[)dIo!_~[+U&7 z6e}1yEӎ 9hEiSɬZ(jȰbm-eo)ʁ֪eۅ0G]Gj5So~meX*T)uaPm+ﻌYs̷?z{je3ȵ5]i Qǥkd.ZW\>ߙO$;P)(伕_IKF[TU^$}) 'f('>}, acet<O`~ZGQSӄ}b'[lS*>>T #w7p(_ 🏘G@|b@y)Е)!,r Hd *\(02dA!GZD:%H Ҭ"ΜwIcVthZH&(7" `^S>eպϣׯ~ٯjS";)~PFpywnj@>]*4F[>b@"2H`!,s_EpX0aBTBFAUQv'thdcV"leDgge$U8u4 Ϡ % Ɗ(]'$N=۾ԇ@T#?Ϋ觷jqrRTu$4YΛTEzxao~fG[ D`޼!,rEGAl\@B 0ĈQ Fv+vd@ȍHwRUKly ĕ3DR5&}tH@|Z(Ҡ8z4>}E:ϩ>f Txr*M Iɂ2zy,u!Ѓ;?" `޾BzlO*Λ>uL>@yS+@Ċb-z7xgVt %Л/1s*`@!,mHۧo_$OChF6ʖ-d dϛ*'!\ Kd8d1*(#l O2XɠVd ϜQN鱬 I[ֱc(5cM_H=O}{Y [&Мx+:oUST,ai-zU+zS\׏ɣ6c}< !,hGPVp`>}JT<%E5ぇ@>o(Ȳ%m٢yPGt&$Y}:m!C!JT%Uzӌ|RU}9H0VU҂:V_ŊMKYM).2[?Su@$XbjlKs3Ǧ$zLѠҁ!,\H :!PdР4+IX"q i$%+\+^Ǔ>954'H$UQaQގ6iӃmߧh`bպ*B$:l٨_-} })#VgK} DbY͂tD`LAwh'RLLJ<TB&.xPkx܂>i`_h?k@$ΩMzug& Zۍ`@!,TG;Ȑ 64ă ZܧbFuq>oKʐ)U=\J*AH$}XEӇF)+TZ  X^)m[TӪK**jO$ؚQ3!,RH*h y 6t8O_D{h1bC}!E6>$ @T@lTM-W6 sVX)H*y. !,N 0-Â,T&g"} 1Fv$mIH>TqeƘ,\LOsusmQM(+vP2uG[}_3.It#nf<큺⥹'"UZ-+>sŕ*bn{P}Z*\:ۃ>!,HHA\Xp1\ CU`־j2@GѨ ɐ>MIeɗ#EC,͗8EB@y躣%UT:}IJMo'i/ j+P@ JJvŷ87zcO[vmA SZ<-cSR6LYXveR1T'FU*-[T=OQUHJ!,7H HȰ!A9hD)`w1D8P[F!ְZqalՔdRϙ6 YÞ>yiZ͂NIy>~f0*2Ӭ!5+ӮEZ⼫er,5U&uVd77"Ex.R̷#Ī^9J(N 0:\sO{O%(iVIȓ_o7`}e}"v9ص7)||RcEopc_4[m|>!S!,2o&J,Ȱ}2N\2jܸO}9qa̸mc0ԷZ8aΧωA1zj&pNӢ>*BK?M;v꼪#Òf-p?!#p_y[O葪>^RekZ)ڻ4dײ}{̳L].;sU UEs7vUA}D,mm$vfƳE{_@!,.U`Z‡2tBvU4h > 5nHXl ei,az!y3 gP<7o_OޢY;iIX~6 2{9OYƂj΋fִ^8v!; پ{7 聗 "\pVL`py;p6gut£r((o0!,,00M‡.l1!v9>v7BT#HGzԷdjT,2L⼞tD'P@!RԖUvSn;oAwz.5k\A.`uӪU*p>oRSlkUc'oAd ?or̺'P͛sT;@Xڢb ښVm AMQ3X bAVj<`@!,)imm`‡ Pka5eVEv ht>v)$H6le$-g姘9 Zyx 0A)7}F9jaV\ibDȮ%5a kϖТd4x!h':Ya[Ք>/ժ=\* !,'iGA Xx> m Rdg1>8dHH:4y2J;ZCyIeAd PCy:NZ0/( Qw_M#MV N3ZO#ղM{6Ae,WSw邨SK5l0 5|M0 !,&iG T;Ȑ }PD,O#A#IdO M֐<\v5/gع͌X'y3| Si集}TA B9o^ӈ_F7} D+8i֬}p@$!V1l3?ϖ-9C`@!,&e˶ Cm P Ĉ(VW nkW@$Y|SOWy:Y РxB8̤@mj>X2n;oLvm4MF @#U S E L+jڴ}p%DŽBFieL4d$M:3g152yÕ;j! !,!H h;Ȱ65l5 fⶅVj!E, R}d/nc,> 7m}7t_O .mhԂK$XU@WR9cM7~zu$fZ5m0 (e[ 0[1mG5m L[ `:g@э-/rO> qڲUFi}@wfCLHDHil}^ q;o~M::Km *qPӲ햗Hk'U0n #K-wՀ*dٲ}pefe/h^ F٠Ձg>훨}9omIp9!,iG <Ȑ65d> n ƌuq_H}#|eʌ4I[7dmߧm8sb5D37$M:u9cO`?(;vSI4͚5mۺPNƍܹS/7܎`[7} LkЀ٤iBebU?$y4T m쉴 !,n*ܷ kipaC&rㆰAma<حE'Ò=@m锹Huj$M>UYdBGy)PN Z0/TC7rLש4r$Z}h5}U%XOJHF/7;k,oաaI6XjZjTM+iB͖uO>Jys).8!, eӶf3P-C0$b5m3؍[EIܸ[G/i`In0-з@$`jF24EFsɇ@4ɧ UҤmm&)"0o*}-[B^+6'Y\ۂՇqFr;oUǃ=v)5k -ĵQy6%2)dM%FVbiU ~p`_$ݚ!k6O>N^i RG+z?!, 87 Ȇ0@CJHMlv˸v1m$IPPɲeFbD`˖ ̉25mڶňp(QjP(̜9A)mÚuߧj] *+PXYvmA 鶿uի}귛y]rchʷPYSm.oȐ4l(̂@Y#0@]A6vjLw5 |zEP Q!,l *\d ipa5!8Q/slc6n(=T@ȁOY>"Mˆ#ʓ miŸQZlyj>y\hiSo>IQyMozۧ53CVO5mطryvW)ƆUm-!Kvysch}V_Vdʪa@ggG Y:tvYk kz5f 죶MVTi@NTVO>R<Hv.[0 !,M] B ˖A Lhq2"RVG}!rDX }!#m,y%L6i0' fsis7V 0Q:lhRSէ۾S,U>g+ίTy)Rdʪ TۍAb<ꑀ7}4*6 apN;LO>ܱڴ!,!˖۾4P‡!iMEIc6D #}"#5lKd4MRBoVܧ }emt^U}2`Sv\)o:Eiھj" >Ple(8ON%]pX8TU8sc~2DŽզU!, leCp+ e07$3pj Dm jH E00ͤ6!`r6n!F4@M7u*4Oes bӁȌiӫM#*zӴW۪lYo>)Qxs !,_HAT *ꔪ bAӲUFyD-[HJѤE4O2$ : }yۇәyHk&U `2g͛ZWF5ҧ d'VMS#PTm[? N; 0 6jO`I4}2qk/_.!,C*re0} 5|(Е&>̆Ƅ3JQI&%vthYʒhH2LNfq2|Y"!QӧI5)(ҧP#M)*Xo>U#; qĂ'.(qc Fr#j$S*Ly%Gb%L$g$j`Wǔ飩o_QٴMSO<)fիEB6c+jVyjʥ&޼0/s 6 㰶cm^o!%JةyE&J $pb |x԰egڲioa+,0 !,eG"\…6QC٪9&2eVSvǏ#?,d@f۶%HRW47mM˧j>n_Q[zӃ~dӢFӫME,oi,O}"DvWo `ٳy?EKKx߿O[pQ(&Ȗ0}}3 w7 :>!,Ul"XPÅ >t8 #NӇQaiӐDZA ,iuW4B}XNt-!a|i; G"Ȓ>v JmUWrlג+BU(>^JY,VWLU DT}&!,H`A} *܇Pȋ6 @} 5BUE##?wҀ4ibx@3iLxp%Uxm@(}V*([Vɪ"|@NCnO%Cl \w.&!,H`A}!3P_4[g@h `@m2np`@ؑ4rNN0P徘 i֤Ν7e H^Eø>o")64hЧ4U10ϤX?'Mh|r;oOFDWFv6 Oߡ* Oh :OX@ ߁? :!,H h *ܷᶅIqDXq߁y!R! 1.o#hQo>$>jJ5!,EG)DȰ"|H1-)>4 >TȑD"*1eYPϐI6H @" A}n7+U+O){`ײ]ڵ[}Dw(KVkyW&ny>o 7K[˛x#(z߁ Lc1mЭ!, EG A[50U ښ*#.XqE5rH";"GNÐU%HeY%}2mi3ΠCz`tJ\4ȋQ[ b4XJ]ຯA [vj[G-Z4y _op IvzK\P0v1A5wxD09}*,z+\K#/ؚ5@-ZaJ!,C&eKAdPW ZXѡ*U5TH1ZDŽe|#G42˗?͓u Zn挹gm!iPhSo Ob +V٢g)nWdƆl5|B2$Y7)CڊVe˗gƤIP}@oܙϠ$8Ӗhx9iҥS:T ՠ*)֩U:p>p]vfM;m>o"[ؖOvQ-Ƌ} I@% 3 |vV.=S*/ԷtcYHP_lȦ)0+J>ە+U2D]SҧPz!,+ HP&p`‡0t"v z86aԨh ̸aGd-TdTY0$MTݜf:} (hъnSsML 5&Ձ^}Eu_XW˾6ں}4)/OhKP8 Ѽ 17/A֪>!nC.TQdz c8,)Ao%4mګWi)(]2PǬ8мy7bOYǁNzN4>!,7 H`*4‡0t4U6BI->*W,fŘ2i|7EJ+vIի}Bx4R}??5'u(ªVfݧ/-UM v'Ʒ>=֖]Gc +H> ַn]vT_U[wn >P"K0Z F:o"6QՐY:&0f!};'{׌-]ۯ`5[XR14J/'>?guGX:!,D H`*h`C):V1"q\ 92aI}>zSfͅL PO Ϡ& }G8P}> TJ#UB%p+WR @lY] n]ŷAUcMRe)ȢMT}md< 22[Q@$}fgyKN}]Cqv¤5㖜{J"i@sz[a u *7O6ݖ+Ukʖn~p_J !,R (4 RK@ "P"}lG !"CNG}txqڴ&Qӷ"ALLicW qΌɳ'Hn۶N΢&I(«NmO*ҁ1;lҡ>HΎVhvTN֩FVW~$@>P) .5MuׁѢuXt$|Ek9q%gEjm'ǪRѯ,*<)/.]`@!,Z Hp_6Ȫ\Ȑ4l!kH 2UUy)>E}(^G)dǗ ɛf+,S5kH R7RF`%::P괄3^*tSn ٴc<+P-iP*wƿإݷ-^Te7˳"SrݴÉ+ _o RF qbV4@+}U֑ΛUJO_%Iし`wՇ xp5{zel͝FwqpS+nSso`j*qG}VwT D`@!,e Hp`",wӖj\YС|EPYRV6T1c)A\:U4Xj8/mWTƕ]­tPٍy[ ROk%\Ѝks-X ̑P@ohZW*|Sge6HYYo~y +TJOzڄUm^ f,_}7ӌo>c@!,q H*L6|>&.de⾌#o" J}Q|r!2/3IMtoȗT'yW\WmRA|ʷj`*Ǵ)+`eKmE[vO*6mcf:TUZWcܘ/2[f$pV(VqǠ[0`]W rKڪZڝ;1ޟ~lQW|z-dpq}?/Z =|͓Tc}Ih?_Eß{hPx!, w`>2l(PE$RgQ} RaFo#9 %‡J:sG,92ɓ)l֬K*"YsM}|ʩo5d4I0OSA?!#o_m;NlЩ GV]SOlu#>HW(Bo`77(? Vuomjd*d5V^@@ہOVu(vu9mi;BJ(Nsfb\̢O%` qB}Ԏ]>ا<އ 2g?ʨDeʰf@!,8֬پD``A6$ bBsV>MLf"Ȑ"#i>}D|ADh7>} Dž$ͼ/ !,u. H5CȰÂ.|H-jl1Əul$HQN4iK,5T 3&Ŕ3E|33*L'ʁ (џ80oiӧ͒Ee7d`uC&{Y岲fx Srsd"&kw>D ̻Oeo>)6IMY࿃m<ϲi̚MCՙdI>ygeWz>KN[㵃@$ϢE 0GD.wDŽƲK1er_mӐ)IpuӘ1;lhF4E ٱɒeVZJТ7a![{ly\]*շ\-ԨZBcǓfOzȷ#ecdCBJMUkӮ'1myv`@em{ɶ_aUZnQs!,nGAw 54`J `պqL8a})4Y2J%QV'Z1Z6e̋OiՀ }I(2dA ,۾Oǎ @ERgOh?eq(HV#(}:U=XPy>xjP =Vt,Oǝ꓁jeTYf!,l')DPBV :$q߁ )2p`@pq#;$Aǂ U3RKoUYMYM@?#Qfm'2dS4jӦ=:o>V>EWa5r'[=e)2ZG;u_HdlHty>PT:v'GoTVGo?`@ނ ڸtz-!.,kGA\x …"A&>D9ذA=zKɐ*EF3CѪYf3>o>EF"Ȃ@?ٚ >G OiSdPALtcDz:l}:cHz#T}"]Peֱ7/(˸H]pޫ!,kGw} 6D]ĉ8c}x őK)䒢Č2?ٲ2N%o✩JG Mn;odDђ KH`Q E@ IGo[&4PgS2Hf!,l oTB  #p`^DQP}DGR dɓ(DVK0 2]t '[@wS_OzTiӧQu:g&Vp:,Ԓ&cͩOpNݗQcU}2UUeڇ@@UVhO[uQURoR@[ +N-[0c>϶T}2h>KtP}e387ҋRs?b@!,q 8Ѐ5m*$@80/bD&V #o ZX$ʄ^$@}8G2Hy)|~Bs_NG*eiFJTߺjհ ODPTĩU>':׶6:vSÿBٴk}2н#}lZ綕18mQ} uٵ ^6x}woQ`z'ϔc@!,y hm4%LM57uN#ǎB)Sd7"eҬysbΘ?KDsdȁl&̹.y*C&*0߶iȎ=*Ui̘:*שe:)ǙۗM[/iO?嫦l1d$KnIUZ 1} )h[@߅\Zh? 'U?id,{cUl듁ƽ}#Hm-a1 !,~! H A *\0 #FDaB Rdg1G8B\-} Ct`i۶}&G k̘ʖuس7ӷtD; ӦWn*u*ҖYuJU*ՋYF$ۯK ]k }32ɯF)eM-LJ|Ҡӯ?Pw_A߀G!,9s> *\8p`c.!ĈǒM4Xq 20jؑ }!%QJR ˗1g6&Nw<O:ϧ> SR5KբG%շk}XSAeSzr3Bh S1WoC P@0'}PF S>]sc%``d^&;f@}e h̘-Cm RB}ZbZ!lېޗ[ )4/!, 82T19Cx @Ç%:kF"9%9Rɓ1d%H2l @ϛd$>o>ڬz OU^n?mmL2!xd@u6c1.Z㲠c[ٲ۸sJ0YK! 4pYh!,v@80/aBg,lP3gXq_fm4Ï ұd QX%̃2i|$4PfCB"ҡK5uGQQ"TcmH>}JƍIU-/F$>PTLoe(k`o ;p@UcĮ,{`eǎҬYvl . t%!q܄!,w`MC5E5;@G@$$H0G%#i˘uOt b͢GlQUt5}aOv7]M}*Zyl0R}ZtK>PR!LVaCoFj@-ʍ\Z T75y! ,;80C}-l uMX14P##cT:lyecL-eiR|1"WgAC0ZPINmiU44a$Rk$>P>gKKe[jy%`#Eok^5PұL#?ؗ*Tjy.芩!,; wᾄ :,o&w@e7rرȢx82͎dy3Yzdd2%sPB~zi4hR}v(sPXalLvy/ҧORV #2YL@@ղfTk4p<m*J ,O KFU (ֱZ6`@!,H A\B98PDY`2#e(1tÊ*?C0W,'c7>>)M5shy:F}\֬@JS(Oj𦏀WϪeG" +ӾHL?.uf !,N toB ŀ!, TۢEJ)ȰhIhQ4 M("}8rthCpN\T #JRRQĘHb&ё#pt}8"X*#%E9@۱1n_T}>vPFkZ[n0`_cv1˫71p2āGY>o"ZY* AW̰c  2O&=[VnvHv;ohF;׆•/c1" P@.9qa};GK_6}I*}*!,vz H*\Pෆ#JHŋ3jȱǏ/{ɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵp^ÊKٳhӪ]˶۷pʝK]!kַp\$O/BƆ#M8バ g>٬ΒofMz!_n-fy +K7>wt8s6ܹ}nz&p+M6M T}cȦ!;l:u|߽>ɸ! \uL|vї7`Z~3wj $M3g7'oAC!_uӚQ8;֛sH;"4Bڜ_h,R>"(OB2D U #?I!8-KVcD;6v%DM#A)@UZd9)P]~i7P(iW̴Jy*Y$'A&hLuMmF`ؑ1uA-9%6fMv"dn*i%;$&[fܜl:٭A E3 D02,|,;Lg٣F4-sɸD"(c=|ҚSY$*eE-aVD^yk3-\s4vJhWtWcG\CmNǨ@p@p"8wF 1쵝wLm:tL()G^c;H/-^xߺ`Bpp7|2l3џff*yKIg-s{)Q3p8P8GTU]3#5g8->{Yc&6<=%2ꫫ^8,ͰL{`pȺO{@"|O8{azjTcٜ0R<9*a6RnaY!ˆp0jÅ()aAHGO"7>Q ! 3AH DdYfDQ79A,VCEI;qcGG0\.c,嘗:wl25=n*XFlq"2i}D/D0qBI? db&˸\Җ$ %"D *Ofb|L-ɈN\Q!;AЂtf6S(S T&1(CDL<=`:FIpLc4tְFeyNvd(eASt@', "4S0+%ӢK q R' {"Q,S@FNk bTRD*95!u ֏}@ցO [E׉lu[Sś RIm=%BI/+j*|lw2Eb"Yhny۵bDi1hn| щt&Cj) !b@a=e4LEY:B٨6 iQ":_V"C ,>ScvQ.wFsL"9Ƒ-i4 !*?D/duYG5+k> C$GYՌlCsB];qF,-ޚ1"fE;y21}8qX\rq [fTH6^k6nM{W׾3%O@MA.&g$)5093Fjp3vi]؞lMuZ"v5d3dig&b]}QG2ܵPOx\qA}1=5#`2ƚ8p7Bsq _`6r ڴwsGu r 5r!slw8 71wuv۷݇y'hw (?`~& dW{F{gtYUlNE?/.G(>ysk8p;#rQD%)9`h$s 2n7$!\tvWD2a%o pxZ,Ac80 H8IK yFRttIUtd]&ѐAʀ NMhfnRSkX`v7p3{vpin1/hzr5i޴sѐEZD84g); -^XӰb9bkE_M<>gq%P/nhz$Wis׌uPn1uqR&,W$ 1 U䃪'tX8~A kd)1z4Pr^8_..$NbXEzB,%r,r *&Y{WWi gq R3LQy'yACzJ;<'`1ITSYzsY/u s8ElwI+߄YMNsI9wGwra(h 1xF%*Ui y@Sy:IFXIWE y^''`F)tG,l` ?5y&nYX}`2)1 Pxy6iyquʹ;JN96Ng, jYd QW8q q`puQ9>A )rQwiGs5A(AцhRנS,g?8Utˈ&>I9b6ي_iSF:,n'> `>ڣyuH|i|;?+]h `g~T Qx)[{bl9Fz`yHꙂ3%N mw*SxI57 ;Z + `Y_٬kg% %aqɚ ѠCs9${oi\Z4 a +6@u":Ut-Q))pi Ϛ jZ w1# wp (pb;F ?GRw;zg*kuf*pi*dSzw \sYf ?kˬeH ؚ r[!r 3`nA[Ҡ6G qb9;;]=qP{E;Ag [ᰖKcҀU] Co_+q4zmZiarȷ㇔Zz65K5z9zGʭ k  j{rxKzQ{UZTv]^;`a)y8@Xz91q9 vI=[,˽[wchx勽kJz 7wʵʛY:|kǬj{[wֲJ|SkY0<zbC g^Z\^FK1_\_LtK8w˛\ZEl+'@ : 8 TƿrzOl8,Sӫ܆>^%nݐ0ޫYnP3x]4 N y6Άy#pf& C!(RD" [APgH].nMvq,S6Ȭ4+4y ΐ! ! \1[ 10 LފJ^Hp>B ߊQ!'d=*젚=ew&۽ ^ 5Q~.kS|虌 D@M -MQ]TPu{fg& OMe/mhۨ7 ?^nn̸16|e3_~8ڭ˹E h9E&q`pPV:ߕnReح5m @ z6J APo W>[!;Cj nUؾc ڗ`qܧKClH-UVN>ie*UXCJ$Z(L $ؐWێE%q LX:_aŊPTD65V42Z`%`Bd6Z\%qAel%q.SYtg9x*.\v'i =}zߩSbM\ܮXmxlN?| XT*o}UNU2v%uwŋiYWg/Y~ADkꭳhC}R# l{hq"!qh#4tM< L|C4< Ayhƪ W"j9j7!Qhf2ڋɃL4jI'S E#M@,(l'ub;o" 2K4HL E4:=oP9 :‘$/zhTRE,Lɂ^):iVh./˂tu%9G@5͂yEؑ;%-O=q#'q!l*D21j.x[QTK.Jfh?-!3Rx<2ZuW] U\ :˃)TMDgb̓āڂԑliG0!U w4o6]mW*vS, 9UujJn~Ey ؚj.蘂km+n -3hɋf2T 2SW5I+7CdKK!sJS"h,zL$yEB _0H \rVݖmx&50"SW䙷{^:k޻ƗhB\[&av8%bUW? ʾ=cf2ۂ<* Xz#S"j\5i$*1-`^tZQP: Mu b' O^q/eps{41O!zN[4oaQaD?X*4p-OMs"}ԫޗ¬řAGQAܕs븇DbG*^ȼjupi:yAEh8QBs Q3ZS$Pf&םI|ֳV&PT@#"),7GZBAW*H,JE( f 2 7^7HIFI!!YV D=N"MlPB2GbAP!(U^T[Z X'ZB̢ d3 95ĘGJ>Z& _S0JYMr(lV(qNw9cҩ&T\~e-g># [3GMr-2oOQt4tNcAL>$I6_-ٰ3 ?Scg՜ڍ5Pv#@S)OB4"*PڤIIϙÒ5 RU|(8r  i\_It)\0kJb\/?QQ[Bql |(90Q~L ΃)>֐:3Y*d0p37AICʃj)#y*6n_y΋FygΣDd`nCxa\lgI (y]jj0Vu02qD(tSuu\y`$Ù(p|uʞ Ѳw>9zm6+HfK< xwʲ$TS(XNM`g/C3m Q\ϙE50yw"Fȵ3],ȯDLp{̊u*Hb:-$tlx}Ca9noC}|օʡ3\cv!0?HwtkIyA&$q;9gyë%8g';Ho5J(~\~,iu`IZD'^@y7M{]Z/ 42nA {Gfk@|rӔMve7;S8dꌎEBQG=wI72(`TD \#;^Zp-(7S03;8?ų}8{p9h x}}-1ʻ#{3 93?8գ(" ?Հ@g s$R7!t{ȣ8eȿh}h>*%TA0}A>A$r44z9; !Bp 4iIo@ @<zY6)DS:s35H42k1\03ĺ5¢MtC CPD7v&4>t3@4 epB/? iD@1ĴF:óDIĴhÉc ƑCP<@"Rt:هl[eFeBW䤶+GlCrpLI FN\?s%`vtǃ;iFllV4miEo7Z4rZ$J1H6ăzl´nGɢljӦ4im[1ZȨ_HHS2MWgѩ8g]hYVȬ!f3fWRԘdLo5EKH2刚Xt݇8ƩԔ9Lv}VԈT plKB_ٛv%#EU/$j=Z +W=3 Lڛ;7įglG<|ւ8̳IRuUh؆$[NYhW5qFALtᤛe9sܴ܋E κz[9Z hϕ]{T1Y Kq` 9].:!E 8]܂Z ŲLM(KC] Mޢޟ*r|J$+IߚM_ƥ_SCgW^v3I0}ɗL=_}ˇ  ~@`0`U} bC_~4K!Z RHA9_aca 6 \M!^hM"5b%` #f7 ]&b,.f!3b2^ҝ8V]އĝ .c9cc"X,c]_=Z;bc>.]%,bC~fdHdFdJV Id WMdP9CR>eTTN;^e9>cWeYf7XZVeGe d]bi\$eM_އNKuNE6]Eh>Xfɍ@b9elfF;pnNV6rgu^gvngw:wg{ndCg~gghh.h>hNh^hnh~hhÉ6Fhhhhhhii.i>iNi^ini~iiiiiiiiijj.j>jNj^jnj~jjjjjjjjjkk.k>kNk^knk~kkkkVizkkk Bkl.l>%l^lV>k~ !,y{ H*\Ȑॆ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKGfӪ]0۷pKݻx2˗/Fn 0vx7Jqc$~”I2r!@ &dXS0D^ACmFUCQءĊ&D-ZERmȟ0BC ?2"C2=/!z '.`̽bjY'P F焟byō!06ɱ+ MD,9#9L f26ELY!1si͉YkR6 X L}P"9tJ"%nv!B)G93I2B4Ur[lrDŽҘ"fG=ڼ|Ib^cHA}&T<@aclTh>BM' eRNmc&"PBgF/T:Ct}s#lEԎ#-*d]@}y Qe'crɘE3~\H 5#p-@*M, Z6v`&_ӌt:U D*,zT9!Am)U"Xլ6jUWl]E-!E"l TtQj ,6u5H4z6I6cNuz)֕M_:j$- "nȬHD:!-71ÿfm']_3ܖ,q{C4'n{iPc:AVwGXؠCt,AlT aiW'sijX#:[Lj{@ˊWJN2{-dͨYcbL*@01r\8At#wl3(;ғ$)2u,DQuS*4tR؆<2jDՖ#H06P=3Ը'A%BZzpAeV`ȣV:ehd tѳ"]j]xĺu1 G'$;򳄁qY8;$1tA|Hd-OQӱcn'DfaPpANg՗I슷^6gl }옇GN&{b C#Fr{R]81"E. Eg`h%ce9Y>vBU{My::J7C{tH'HL!:*^D5)}'̻|5 12C+׽idFnAgCH*m;{c8 S&|oϰ YK@bK!i'<*NǞ POD~tTo{9 8}E\,>Η4 'C{ym D59ʠ{F2lu@-rsG{dpv R vJ8e2*:B 4\fX/7x nȐH~!ysۧ\AWy~\otONcT ^= G"P %Za{C Xwa P>P(8Sx]fP % fxtJ1 ǀGxxh~Qy q E؅Shi,Tt P vR RLcutÇbL(bwTDFB+gg]s n8xɰh/W+}+F vH[4gx13q woP ЍDJ(/bu=Q؅x fG{A ؀k6F yU@UK!ٸ ` k1 xohf U|q ⇍i۸Nȏu~W1i$taI41zP hosbD `vTpd4h{uYMyx@@n0 Eʰݶ @GSmӋEQx bv̴ 0=.xUh6p=yi;SbZp:T I@ $EImq<$wLY@fbӠD.=4zl؆)/ԑܗK  (f.ys$qvA X'hgy1ٞٞF2ksP\&~ӘYqYFRo'XB0q =$C/Tǐf  o~) F?'-e%iBjdNK7М'sy6yGT^ JѠIɐv!=Vh*g y$x`!zɢ}m&\/J# m#SYNZ0zPY9In9zxQ*Z3/װХۀ zJS>ukBh! qs#`ʚ .y;A3z]׆ Ѡ4 ̧#͹q zk@:"s!Ӏ:J!Ȑ~7p Nxx0d*ʏ+řr%X Ūq[͚ qfg rڢi`#\ꤊHgv P :P"S+;X:ڠ]z*q;ܺk}8=MS: 5e7k?El %ֹ9Iѡ7( !ư`g[S@ڧ`ƣfUr$ 7JVBo (Y<ɸŦSR꣈75ɑLZ bUL \^=5$qƫƭ! » >{ "+ эtyԍ`|Ķ@\]@< D\ɟ '& 6L;oS%<kjK\  K kL Q! lݘ)=ڼlLҬDllϏv-׾(܆n{6MX-Ո"^pX^~#"!f^Ķ0%ɺvĤNVݟ)G~[mw% aݡ>0d< QfZ!䪺*}<.fp^-{΍]Φ y萾q Z.4A^ vLFh]Zs.eҝٙ]pFUn֐xS>~ fOg=q e^C.ؐ9ݎo ha f8#0 ^1ѭQ "1  Lu-8 n ';iܶbM7n}ߩ;k>޺-L˛y蔞 pⰲ@ZL?;+bNl+G+I, xy:= ʞh A<СAI%N'$o4K(WQ$jcuT٪u9f˦M.ԹAdӄ<M&By7mItߴPMe5kiz2J[;FUVי ml0AS.TʯJ}Tb[Pb۶oE\.bZN qJŽ5J"lڔiMvҭ][ uĩzAl-U1%2|VBҵ=pBFv]/6&:gQO$.s~< ͧKl%i,ʵ}Q0AҤ3(+~m@2 5 S ڧt! {Q}Z @l2 !o$#(,4"DʃTbP'&T&4!" SJP,-ƁZq  3PZ1TlA ɳ>"Ȓ1J*Gr B?_,,dlBp)U\+LSaIL/5tEHtoNU1Jhj1tRvD1!X(/MQ!rIf}pAH*VN5qU.thS(bZ6X4o+B~X Mh8i%V|5 Br-n""hޯjD׻rSF-6Mef"H`\6 }LڠrȬW3NQ{gL(86dp?8mJ g[\jf0Rw2 REy>uSTN'w1qհk>H}Z%Y+k5O1ݥ22\6(}5Y)WTC; ܠ鏣e2<Ajdb+!q/;[swRVOr ڗ[)vAl"!InGIZ\g&ID:lC%P[%db#0QA:ڏ /KS:gS6X=iTuD]EWBm[(}hl?0#k5M_lL!GNtRF jleKYavVm"H C9/;C̴$N &" [nt8u$OtG$0O&O =M PSӀ(ʨ9vWt !ςeS,[+*^qQ9)Hh 1M&oN*},e~J]> -4d(=P[s,;'3TAO1|+\QAF6Tn7d^ۺ$:ؚߺ5ɔ<6̮ق6bW-&>aT~g9/gnc&-1f T:)ىH({MuàOԦVmo9x TtՌo}@!%=^Qq*k4)pٹxL[6& ;׆iHiS1 ~ 7-\Ͱhq}$UmQ%oSܜʍہ'2AnjC)J; -+nq#',,OcQ:ȑ'2QUY |k])sd9v2#]4\v7|dz|HDC4\\n9ӻ.M}"[HD( wU#6xo]bpyT/Rhy>Mw  ~FsHnw;J'+#;D|²>vy*zgz&G=y ᇅGnк*^%;m}ygG+Rdb{vh͛0{z;[cC]<ʾ>N [9j \ *^ڐN n\XW(6* jTg@C1zʈD(ۇn#CнnŨ{A'ςH6xOjC&jbFE^ S)ٝ@Jd$ÉC5,ȅO$X,4"G'pF0[pGH*#a.xJG`4bDNLF5Hh~;ÁFHE[|ȸ>ȯHtsD}$n#NʉPI@E:$;TFI$ P9Z܇ >BET IIySJ|XFɉ D#8F Z MM L#K}ʲHcB?Il<CILʨsʐ˱G脢 E$kLH( MK]"><:3IyMHĉhLtPJd·|㬃$ A|@K bL3D@\JO <UpԇR,RPTeKρLXVPrz.WWUӌX -Au{c%ىWH]<ԫ-7h4%7Oه%a pm@R;UMSN$.AV=Yuֱ}VuFNQxk Eٽ.s=ߩ 0S>}[ )'.@VR[7 3-*OY};%$/VڥddPd Ue= ^\18[ܹ=y|ZEQ W/TsQ֟Vy*S^X:=ޞ]t2 #okW6 -],=E]Q*Ώ{eXf8៵daUΝ^xl8 [0e:&VP;CœcT@rA\?(2ff ^~&c1SO¤Zl14'a;vre%~P].K-vF.IYXª0F.ފ;3O+Y^_-uWhG=gJbbC3fy&aVXfHmqy?ȥ6Pʲ.VC-YEbee~k;LgPevNj`& kZ ߖ^ijնjAZЭ8<8|46ZhF _YX@vs }K>jjAfdg%1,ۜ[8lW|lf`KxN fT_؎U!mNRcrn~AsHoP`^̆ޝnm>(ML*=˶l VnT~ʈo)Abg([g{.lp騭nn YqONt(2QkrxIFƏӉm6ncq"7gsqObۍ{{WbObpC.UQ ?rPq)jH$G\ woXs4^>zrQo ]r>Gs[Fp(rsa=屦'YoKtGY6t1$xΨ*'!ghF Y7DuLp@tsG"G'fYvB8ިu`WV挩Cma>Tit0k>LO=oow.vA՚[wv[Ϗww~/\M6gs~{u(kg}w~CS SȄpsG'x.inGxFFv>y?(R߽&ǑvDOjymGWVkdQ89yQz׌}0ȇz?yk}}Wh?ٸ'HOma6{{Ǐ~m-||΀yFG΄(||w|.GOy?w}:}د|Ag}QeEӏz7rO{5 ~OE/HԵzkiwN~rtٷ[ĭ{LWC?}},h 2l!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&ΜA'РB-j(ҤJ2y)ԨRRjO+X]Ò-k,ڴjײm-ܸrҭk.޼z/.l0Ċ3n1Ȓ'Sl2̚7s3ТG.m4ԪWn5زgӮm6ܺw7‡/n8ʗ3o9ҧSn:ڷs;Ǔ/o<׳=WT@> !,T H*\ȰÇ#JHq߶ XǏ CIɓ(+^Lɲ˗0cʜIs65sɳϞqJѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+7yiУK9سkqĭ^yӫ_Cox>!7!ϟyܷ} 8@X dMG F(P5ӌ3bw`8 #E49sa61Ð΍bQa 4@.T$E&٢-HA3 ;P v3aQЉ%Ld#@sAVe}4LDx%LjCo$|9LBXA0yh-jB"8*gJh[-6daDu.+` 9;-Bz1;~$j*4+CP rJRR촬͠ºelҊ*rBߊ.ru)ApiC8t ﲆ s&4`+۫ĞV+j^쮏{>T\1E9kQInA쳎* 3 4!:t\:[2m)z5aiu b;Q76HjS;fςZ/ejE1L1U 2^Zdb+xzK 5Cnd$T9'4F"! QVOt;؉cx=$-2ъf>P9U^34ir˓rYg;mAGߙNL]I4'P^*V%6P!0 2a@ɃuIG' vg· | D~MC.P Pgߝ 3Chk71}|;'cF"CU/K>pT#U(12HO`;E/cVK";1FdR0 p2Ԥ&/VvE@4нIJjB79C2M Ui-k]|*iD;ل-dɯ)$IOEHƤqiLq3:wZ M}ZK7FEj1W0,!Ɖ&¯Ak {I&A yX[Wɢ>ノv}=P1Y4%mnGM7={-2y('wu;ttp#7c p 'Ʀvgneے'Ab 7>ˈ5*Ev&ƶ_>QoO5# 65NU|`>ʦ}fS{zÌ([u `8FuOD$fOGE2 ]~F^f\dG]l'GPVN:ji1s#zK>F-jyUnoOSMǕX*s d~ǰ3{2{G6|v|Ж|vI7fdHm{gmS vv'n s}i3J[t5$VyfJ/pp/p 'YMs ɰg i'.G|7|||xwThdy7mUc>A}}m20 4U&:jxKNt79yXQFj&]6Qe`%z8` w!MP}>%"$Łis Z|Ps;Z {Fq1W'a 4BEe H趚  x-Z;25qC 0~6aG`_'w)^ M'8pI*#c- Oj@0p : ZڠX]X0sŤ~'bjw j mdP y ꇘtev~t8.j7 jRx᪤x=I0` G U*5{ʠڪNU #GV`/q p? {Jt/zIZṬٕ~6{!HJ36i i* 3 ^S *S([*W Ad+ *Jd;P IՠBQ3=g:`{zita ۰{)ɐ#hɐ_C @гFk{S+79M.P $_ d# tIUkY+6kx0 v3Jـi3Q ࣅ%m t ̀ GuɶJʷ1;si8s:)tƳj|[q=)+ f [B[dzĻP ̠ ӝ%$ o`8APs xfՂT kI y8M %$(".{ [QHې 0ĹHi=jϗ^}&.aEˆ n 3ז0.8K L=I%Z >@L  >c=HC:Nܠp ?3n$^a /~I Cċ İpNޙƓR_&1LxPpҠ7-Ъ#ƪ 4߬s g.f+pŸ[̫#h*#JX?d *ٳ6Γ ( GZ `Pu?șGؾ_?(ޖa }5:Ca c=Y 9 ?SH;0%K6PA#xk`Aep!EQLDJ'hUe6ߌ(|s8)osT} q1bJ ,л-%}Dz| ǎF>d 7⏧PfLg>SдH!7Wj5"3$9<$5y F*  (vDzU5M)+NLRF<$fdhh(a"S2yQ:%Df6iX67@(P=_)̂hs&\J4I&J&W \R4[nu3=QF hjhI˜ѠP򔇡q Ҩ?bT-& YBʰ H?eB/?M ҉_?#f2! =nu* 5*Kȸ,PFA]U"F䈐K 0j2+!VN a$;"*K1Vz%@<:udSp) K*ZTU}dħW|"q^GZN}.W8؎55)9H4֯UQ~>skW J ip:Uxc ZX, B;Q*s\#GrGh L||P0/N[SD 3'Wapt2٤h]d.ŗPH^}pHA}H|F<`/HHj, @۸Ĉ{ˌ @̻ ǤO,󱹤TJt&ha3R`ZM5<YMMɐ܇t!hˎ@6 cN -̬&*9ihO N*2dzϿJ \ p,FDOXMUMhMX{HQ@eS|3JR$O9iR|\!OZQ8vάQ}PJb|Ɖ! E ?3*tP ̛$FP695uR@yTzPZC&2e QA6uS8SmH<}gSSSGD{x eTHkPITM| 97 };Ë5}LԈe/QMddGU3SPUCr(sɧaEň#"KTeUIVD i j%LU ̵YHo>.}UYJZ!|uԀ:R|UW`أrT$}EmRj0XDŽX~AZy}#5ˋV%F8]Zv=UeC\eMNrY˳Do`u)& (Z_R y`OpΟ7/:BU}r\-]%=5{ ([uیtTm6/nD=@ b [e-O)"X8 7\ˎUb ]9 Y8 =uU]?AE,ݵݥC 7J\ !^] 6X7\^7 -_}xF hM_ PWRrA}^)*5^HЕqStv``` `$ڤ˪ۭ\P'2v\_F %W:aa b8Yeߍ4&")(ުVa-vU6#W4ʈvP؇7`9V%^ǒFqTNb "qp@[?ڽLPZ:d1^ eJU+^MFTu4KWNF.]^&RK Dz,UeXN% i@^TAs“[J`V]_l# AcN9EAaOxfԨ=h$;1>,I<A̅ iU>[!$4Se?~P#MDjhmߊ8 iL,Seϝ^fim\J:Lsg ddvhi%,6f6)Aœ fJ4AF缭Z.;豉fa8R㰦|4뛎~a7vk~kPWhP׎#m .FY] n(C荚wDMhS;Ec4WvaRnhV큶kHڤmjP 최>vom$nsnYID}2h@C&ʗi~ڲFYϲზkѾ.mСq(bI"|m~h®D8٢;KvTP d8eg2qaZ{ MGs&жp` p?`Fbؼұ'է1æqU^ :)*pyV]=SVr8Wg gPr+r@ƪͥ^msPpt](6sP  uG{׵_e|D(}DEۙ Rڛ$zuxP'GH |w %GK^H y:du[/Du n*Otۭm ɒwn1d}=sERy'7v $^}—"g3Fk)Y*h`}l0Ĉ&ʊh1DR7r#Ȑ"GDc&͉g-]Τٲa&I'r>6P'G!ؓ縘3cjqP|b擧*V}ie!¸ m$(7!Cu=jq_ƌ,jljpCQ[I7e|i%s t(}L3jC?tL3vNHv >U*nx۴h6Lxyž~֮}1E%Q(WȒiKSU4PCeoT4ChE%w\q%P^vAwBz]^vqCm7x"Hz깷eMtIS9&lRqfox_ IxQh!UbWה$QA}F_+Fc8JR z XZ88ZRP#ّѡ">a=Jw}I#h陡rԦc.gz3ȓlKUZGt(G"$(k*^B:)zUFar;}xJ.v|RP!ϐ$S@_vTu꺘2 R&\s aWDMDIz:;,,Izz:%88 IhrC>沿w] Dw=G HnQȓ~=JͧP{N*j1\Uj|X`m3'mXL7IYqC~V4G_G(zxfx v" %99%u.z} ~5j".s>J_yۣ6еN/Sz>s|<}jXNV;= #\Fz3?2IWgI9TiyroG,|@6a1ki>(ogF2 ZD@(đC3`s3o#r7Ұp;I?eg*p'DB`H9φ)`GL2(r^ns}lqJt"(F!]I11nT(4;G4b$m ks8ZaylEv F1&RH  >'5 J~nkGHDR*v|<}v-EBv$(Jόِ>3X~.RIbr.47FQSDX0Jgʾ,qsw OJbŹQ5!v Br1YO NQ WuĢ;IL#(8:lFtam3y!5(DK#E+3z"pAj9x*5Z(TH]i@@yH$Ӧrua[MxҮ*u!9#Yմ'-c[{m_U$*׽ʲ+#t򵰆edOw2VTgc#+Y,f7gVX66 ђ6Z--jSղ6Lm-lc+v'kdms:䴺m\I-.r12ns+Rׂ˭.vr.x+񒷼=/zӫ}/|+ҷ/~/,>03~0#, S03 s0C,Z&>1S.C_,Ӹ6fno0<1,!F%D !dԾaʿM@ܰP+ H!,Ty H*\ȰÇ#JHQ` XǏ CIɓ(nKɲ˗0cʜIS͛8sɳ@> JhO6*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟ՙ37թS2۬́C+4qts:d~w[zX)MX(Ē1L1ɈH5sΏ?3ԆcF&R& P4TL12~uU4820;9} )VU5 D#HPX&AniT:P) -8UנSS!X -R˟A](XttǀJ'Jڕ1f( J LV:$#e#@.Ox $$6eL{35됄LvmC$5rR (NTmCt>J@;@*T:*T'ˮ@f+oV"\BD ThC2Dt.b9/l14Kq h㺤̜1AfLtL<쑫Y+A\J I \,T2)IAX +Y2##d@Mo;Pg&G~qK&?nmjGN|@d,Qe7 XDN$цx Vl $:$'cQ 8]l#[g+DHl@ hX?ƫ 1($cDlg2q*$+H |XC]k } `3!X)LӠ6GY h{U$8F'/:9ËX UVd0LkRycBƛӏ }9F3#y ZFd܇3Oɉd+ջohI>ND,0gG 'nҗfaJW>V-*,BJ,!]:ҲFHOT.MIIm$#R Ҿӂ`͐B 2Z#OYI4F5HUO2C4*COEHNM42W kbIClZk5>SFs)!i$iӠ:v[1d*Ē\Ťj:\׸Ńj$) lڌiid fY+A}46B`>kivsJ}"|*@ւ WW9K|d0"P5"'!aB* +HJr1lQ^ʃVIoh86:vdŭ$b ,N0j۰#MH5i@vKm.+cHIㅛ$]1B5 AzM6x_bSB)˸?$IŦUkN;G/e^dB Bpl:d~8R|/j 62zA.UTCRqj `kMrt^"OQo[!~BO g6rYf#dj}mv%z9vGhgl)qw(V (u@~ Wz qy1}Gd>.>/re/1 hwBdasmRؒG1<Q| A a WM8{V~ qg7mr[qvTX)n aT ֗4vwbGTGL ԇVHSr(1[rǂdf d(7eG(1LP1yQsmu(-K8zI3C$ o1XaCa\G@C1#X87 ada!HPq -KЊ+sG: a X}HFT7TogLjIiKnNhG3)W~1 fL2!0T8,ْ;TCd P@bC]2_ >)#84<  Ƹx~86@ {M!Ҩ>YA|ۀq rEed(ym A[Kyk 1э)a 񸿙Y`h' _=ƄF7Txq޳/ɟ4K |; aW] c)ofQ vK@a7 )<H@CP1\b_&J6;)LN}^ gzWNQ-[^^(m9;*RdM4qn?v5R}gf>\ Q b:±<o7R1>v`C< `鿩Q]F֨5kk'XM­^J NTBΝU"!W_}_EW\.[5lN-iNe@t {nZ-D<1 1u>Wg[G` %^{UX^XT{D9u 1_\nABR!͝9 a\ܓiMV)pA;bto恠ZrhE[^c{mssm͟[{nAbK\o zy;8pS/N^O2W}WNRH d}dYA}O# zB̧u Q'{Ji@ŚBhD0F4( s̜6?GȁDT4H>JcN(2!{CnDl/$iɈl^hF˲ Ŵӡی$h2jh=>D'W17qtQ,HR&NL ! ̄)PHPuq&(3.3Gro:P{2Bu=hWgXbUeH!u:Wٙ/YT'nGZՒZrwSp\ k=x'/K%Plz_eEWŵ K +QDHc8l#!ʵ@GRݪȼVUk'Q9ri:Tȹh¡=啧5 .zS !m&gۮ j]vm{.Ikkxo9n |q1ŻDrʁ2N3|C̀3<~ܠOw]kR>c' sL2֢A(27S9"L-YP/MK:̈@f#LßO%A`UfR0j"Ζ?ՉםW aYh8҄S1Ũ@ ?(d= i8S`a5S5~7 *s̬=\zx̃ 2̮-zИؘ;Ri)A""vJ~oP:Ͽ&xSg./.0͸OGʕ-#rpK+m|/ DANjxȁBR+L1ˬRQ!MQ7k$iF&2TS"Xgu4)V@.#tD 5]{:3x5pj3*/T#(8Dk;L)\ k ݌1)\?Kݽ1<]i'Ux;7s̲$@Gny^y w2ɀ@|Fn {“>Z429PIY}u;Ѓǹeܚo;rC7L13?Bk9XHn|JAW$}Y[66lGFG8@ 3FNW…ρ A `ȡrSRa̒f@ʘ5mJH$ `F3lS" +.r E˃b66#őHG]l#ym!% &@Y$~ l?)[nĠ '"u hD-d(B;xAImxQwf$8FMKiʜ!A3j(t#ԐiE귤1dT8>X|ȩ-\A`x] XT~ * sjdb ӈmWRtNz5p}(~B#M5䗅-m*!} PY9R 5{K!7H5$y|QjBH[8fj{ނ|t|/A[ +!Uk BYW ЋQقcԠ4"Aji*@iLck/T6d'xn + G-|}%le oBP!;{H]!+aKш`~ѕ UNN5Ү:!":D,yx؆ ;c4%&^SA 2ׁhO{ejhNL CZ]G+T]܇,' .@DT!k| uuaX| n܍jCyq';(!8˸kK %JK@m ;S%[#D-tCj~J!N"36Ѣ(O W $I[b:eʣcB:G: P Ӌzژzz8. !A!z \:aJKШwkzψo%ʘLzǹ|Xz0jpE$7puaںOjQAʊ: X: Y DpPۉ LҰZiZ [k45 jꑇd & :A vR5)I9c%тlZ ƪ3ɺi)KӧLA%1r tb[ʱ*moPM8]P^I^JiK@ :[W&"V'AP h2'SJɟKyyQ㠸}虔8#~ ;yzٺ[[bI$ KG73`+ynλvҮSkKʷQʽ D i몏c{61hjtyWI[ 'o !A /! L"h C0fnu{lfg&),w˜ 0,@Q_ aX%q*ē5vKlj-P ;Q 1GQ0kG7r<B,`#M{u&֋EZW(;t|jJu.Cc\h [ SL !   `αl,9|ΌF˜% p;_,z[و'zv<p1[:F`σ $2"њ#3&eڔ JNm ×y͜eʱ *PO i]^T,RmŚ%h‚o.u LM\Pjdxc$v/fU8lI5VZ/&:k&N$*e{ш ؐ8[%* 9DsE~pݢ.[`wl;gxGǫWR`(՝FHJꗿϚri :#j:--D}TkP\3)>6b:#PU,BނSk-ȫ"0pF@z%hJG:#4ETi‚,LIFj0GR*G ϩ_*P8[P ƛ ՘l.첯7;S΅AR!,2 r-NcJ5囮&;3ђ#iĄO?JЂ 5rtH e}(ƁX]՚\sr4Q\;T<Ą"n: u*D J[qVM%VP K(-S$БKjْe TL6dVH߁u(?p1%X]=J F+6Րmdݧ\* C_fؠi1l c9jkx=کc'GfLC;6-:8(o )dU,>z(:~r(6\Ϭ5 hMw,O2؈"LV^fD?^@ 6*_R ؟ fp*Eg1o PZɼV>?/JJC QCxD$֤Il"D剣~,'6II!E0Fda$c#‡.fƄfdcYqGpcxǤFz IBA<RO#yHD&R"9GFRd%->t%=IP))=IQTe+]JX1|L[RL%-KR\R$f1yLd&S32LhFSӤf5yMlfSf7i`J$$g9yNtSdg;NxSg=yO|Sg?OT%hA zP&T ehCPFThE-zQfThG=QT#%iIMzRT+eiK]RT3iMmzST;iO}SUC%jQN5U -RN% !,O$ H*\ȰÇ#JHq62ZXǏ CIɓ(?fh1˗0cʜIK6sɳϟWJѣH*]ʴӧPJJիXMׯ`v76ٳhM˶[\ʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËO<ӫ_Ͼg jpt( d h b'24q07J+"tφ 1xDM4ҸG.>:M<#AȨ@ ".7c6eCjdBC Ph7 d)Hӎ1mMW)Е2ȣ3h"ceiI&2%IĘd0 iLr>hѐΔ矀.4 :MT'At`e㦤Xa~h)0⎘5#jҔHAZj1Ai%.DHz37IdH321ԮAڈ3KKF{k2'J+п־叧;PB ,#3@>J T2I'lgA\@U%!LH$>@Cq|2J&0</jJ)di %<`-N4d"-}RQ9L$! 8"6olwv#+$I-cNަ>|@#޼Y2C1xA^R:9dD!s1,#Oॼm{bB>:m1hN[Qz'E&WD@x#f"TQ=D:Fj4f]"IwajlBU.'En !zpPb@(H(®wQ 8CuJi,K$A:X̎NѐB6N'CH*Z1"ѓ@T`Ïhp"4+ ͒UJI*3Q %zʐm8-^Ŋ\C12b4ydv$"GGp@G;g$Õ\T2=Z&T…yZdG/R2b$R' Bk|E$bl擵@$m",d] $B~i^6O!֮eDz$J2"aKJSS=BʎuLʈ+i/pIItI& +l>ȉ:b`L>yh̓Bc-Qr hAX9 K !gcSEŹW)D@ }ԅ.Ry*z$&OɇMZ_F| nl*ġTFAZx[I!^NuVYå_=FXNYbH1iB^O44*%S;٪NDz^UXŧJU *e٢z]3%ٚ1Rտh#B!XuQ=wKް1`+ރhUmeB9J$K"z:6,|ͮ,{^ܐh(xR]  4|ճDh!T:v&ju;Swؙ>`xQٶ9*kmp%㣒 2d]lx$5]m}HQQj:rC1[HrS7fRL6&^]0zk>}b<ꎊ$EiVxԍƂZ4E3q_[ HrJލSpK87&s6mou zӹA|L4)`Fe#r.&UɄ_BZeGSud\CVqk2R85|z5j@wTjf.6&S)ilUW8ОR ٘qϸE|#;wBswiol2u 8'v%ȭd &ulrl Ψ$ UŠ@rA"Zb1}Tf&Gi|xeamPeu6| o] z4dKgot] C}rVG& '2vLƁ1 N%ڤ@Zt Q=lz;10 RS԰ -c&QS`nr!npE VƁXx]5vyW mGHףf+RlFz0alp^ ~`bP7h5KeU 8Bևau."uG5RxUx/d0P` S(ao8y /=oSR @ h2x4bć{xI%s[ZEzh=b @q `bVcYH8 xXhTW#0c x9A tu%{S*:xF Ћ 1 pԍ]Q'&+8v^긎hmR91@$:V }ZRpKhTwWAuܲV)i`A FH@Зї} S #Eؕ2ćCgJ ˀR,E' -Z5z~UQ9qq1 @4X&ٵ y&+|GuɀTZPm5&v{e 9 ȑp!UZ"ZTÓA레*%陹@ =OR H`!Y, fvLt jyc)JI  {2KQO&iFI W$]t8k!Yj@Yaa'Bkx *VP"eF ˙WU`~WfՐ]ge&%9)  FrI;[;AItFg@:Z" !lX$cZpJwc^zL]Qf*KQxuO`ʡfli xZ zڗЧh WQOyɘH*XႲ:XЮ qqb |eEup!SX%٪(*1H9zիoJng։ kّ& yڗ ]jo &oPy=ڪ -}sW蚮9Ѯ@: /Y Цjʳ:{ Jnz IIݙ);dK Z:!* ȀcP @ S{ٕ77=:p*0|RKJ+p" " ` d&P듧 !u*{ocJ*9P` Jh[fE7ɹpJyJ֢ڥqX>ɭ 1mS( 0kUL:edrK"Rf`f@f#Z= [d"᪴ 1؅9z %;MRfVj[O_X LJP V 𲈚՛ 4LØ45 ߋdR+ zȦ ndd %,>a̫%a DBI1tuk` wf@ a 5G1.l@԰<: ɐ )K)$Lf`ŀ[n`˲l a )i&FUfd恽{Q~īX Ƭf @ Uk 3KÖ,xZə K _5 2L&*;lwZ*eR`l 'ʮ#cu x\ ʌ pOςfV ;*{ɶʕ)Uܬ88t#S^&qP"[ MVp ۇʂ ^`;ƼʫW_}h`2Tq#9$@'< 0\5Vk؈{8=m\]\'\˱=Pczڴc޴>-;Ž= ^&3M .9]|2ELo݅R(ɩCk' K}ʦ2$͇m۷M2i|p)f1{H }=׫ T6 TNÆ!5\iA݀]ؽ`ྮ*N/;pG7]kIb|`}A gd,cI؏ ؽ˽ܐ,Tn ~^b^Jjk6n.pa Uufxiq+~ܹ Gqc讠U.ӛ͝nQcLY}ǀ A .ԪޮP0o`Q y㴷%4ur Nq-俼Fu=b{8 .ݽ6;,^c yNod߭8 nPҰծӿ>@zBϛ;( T,w L>bhI>톭_5 #ON^1NsO\0C-W >?^ͺ_lf }fTO)j譗}`?Od Cx_gjOlOCΘ[ q ! 4__[6oҵP ?`/Ӽd& zTܪ Gpd_ n.őIkE j}-doTM8Eɒa̸2!E4b c9帋f20}Ny*䫛שRUQ[I-MSN/ZЃFuׯTE Yh+U:,+Vg1^yЩإ4jք[YXKa݄D'qmX1,:6+Ċ>vQioix׾5;h6BI5c)eNb]ΐ"ѻSNW-UGtשTڴiƕknJIkQlޑ4¾S%( *(sL3.Ў3DK(p$FM$7Dꄦ!zJreǢ'gN#Pa"kʾȤZl ʡm0L( 뚬#ԅ#Ĥ pdVeA36NY&oW^1'{2InH["3rJmj[;<ГRJP9R>MZރ/3Ee3c"<8ᛳ2;%<!=ᓧǣ-A -Ћ36h NуAl{i҃x .%Ej|ȕ뒺詅GMXzT_In]1ufjx0="c\@Xm 0ks7U28 jN .>}6Jl}x{>4cSFruHUkm&J8KĚ -CeNiZvCbfiq~L'{"qz!fZۨveꤤ.1#g_1i^M75m≊#Rx|jɚ7Z:1)w$18)Wi/Bܡo6j$Ed^٦"Ȥj`p# P/ڇ$$񵙭H z; J-4ZL`z K;cZxB7O2<Ӝ.`!nͬ~[Hu 5]IŮ!22` ڝ& (2ջ-9ON8kpԛ{ 1L6P_C/!d2fܴ!ʉg6%+)=dMLNlf nR ɣ@9IȈrHfIMQ)Gz# Yjp ;N kě t\Vs>GNftȵ,YIQ~Cccx5n4DXO!丈@}Y6]B5Qc/Щc [!2Q,,G4cAF_6Hp7jUA) $MϹ.C,GlJ v9yzN$Q0Uԙ{8AjRA?PZ0Y% yc_*XT!H8֍h:zXWK^2ܴ^/t9U ~ S#nFĔ=,pLhb/hsW2'Xx5.a"tu)D^7)G,^Hj1bDXVa{i,LȂ1"ml -peem4ǚ$,")"\X!:9R*rd/Qod&(G<6[EA⻏O6'B1(km0_d!6mYH-GېL^4ކHѬ9M MHW|fw a7>"1bij6>HMˀhPz5_G;YxVzrq̆s R&81tVF‚6B[Dl&@s(yqlZ6˹ y`dMn|,4_瞢z|Pc/<|Q*락-tUZE(3Jg=O4Knw%`o܈=av;>(艆m0Cu3Px8*(0>ŒS1C,?A1< Oj?oԫ *8;#@}@U ‹H"Cc@_0c!LQ#,Sk;{;+Rx>yp!&Y7 iXHA2ܼAj \и 4CD\,EcrG{7"L,=Ybu'4ؒ8j­ [CCC0uES[m0 7,|T0p; 1й>U?8o.o34Yt G<{K$Ll k-=O Lj@E4T XEE^-E 0 [芶@ (ekiı3Ƭ.l|=pI+qG8Gq#R?;ɲy<ؚ$ WHVDEUDEB)H +@ H$)YkFbIp<v4 K|(JN{G\ʦ|ʂL䊪ʬL.!cIf4}a j MkɢѶ p:$lXǃKG/9("ǥm`Lڂ( LG|1˴&? `3b4A?SA ZOYxڄ,R͓4DDoyDq(NĈNH4sLRkRF CL⼋ :Y0S|PYh6]ϭB}pѐSͱ Q;Qxa=b-MAZ6T:ic!PԪ1ݺDA[TOSVuS8]SϋX=< ԦK?ŝՕ}'( A&IŰJmF0=O4 SkS@Q 8hVKZSLW_uDKU_? VCTju. J, jF4P ɼXɦ56q݇PXrXsu5 v=4W`5yVQtp(_5F)}Mh֛QMMǬVpؐ Wך/!Y  όLXb?ߺWլK %uZx]SGwU=?[@m~mK|eܠ([D[X8eۼ\*MN9w#٪,5eڙhE[PMdVE}ۨU9L|A=|ܐ=ŗ.5Yk=k3=SZݟI:uݍOu=]5 ]=1 Z>UlV=l$M4Wn]ӡɕ]K]OZ횬]] _(]8ą^%4h`X=؄UU ._e t`_]՗&0|+(%~ [f`ЉP2 v6ٍ)Am,Azb%Db}ibtQ{*NDv;\$ 3d8ќdL.fE\هRQOXfS[CU'5efeDdOEXXms.6Ѻ26"dڐHTgfQ?=k6 =xWm}PT+>آAh.>O&ꉆ1&cyfGf+5*9CqQ>tRm| f=1Ik芵YYU~|ȇеs-=iI i>ht(RgPVןFhI^8jeh}a6L $jPޑ cKFͦ`t-P>1nVf^f~:hC!fPUUI[^MuA{Sho ax&?|gLnL1 6qi jE۝ ,mlql=S6w8s/n*4w[*b &&-"mֽ%%kꋘ 5F-otrl01DQL^^f0NG9iOvolVkc 7 |LoYkFHk(UE1EFwĺn3]x.bt@ ujͻ=pev~ermnr q ^w_*GpnJ_SIJӏpIfi(m^Qvv}ko|כFwk TM+EwDanr$s2df 2pS#qy;ϗruckBwYwul{q3Zp?s,ytTyynyof*8WsOrTv=ۉ/5z҃ {yF7cKF۽1Adt# kr/z%msYr#}ty/=1cyK?}f!|zyTWf|{DxnOQ/sʿ]*ϏӃ%G}WzFfsccP 5Q"~3n[Qڀtm1kgetw} <@h,( „ 2TH!ćIIh"ƌljx@sFKq˥3a(!DL8-G@oB,j(R2mj&RsR 8s師P4}Dv=1Or2׸rJ8ѭbgؓ]8LqZ=SpԾQН}7[WS(Ǔox"EUqVIf)F(g8bE#Eћѽ8`BOx֟wF=Ц-):*Bhԩ}E,*ffmVQ/I+-{, Kj5 J;-AD= _E-n;$2)n[A䚻.G]Qr;/{// 8+8;8ۉC^?l U9gDRC9CN/فw@.;!,H|$ H*\ȰÇ#JHqAm۶iFǏ CIɓ(QfLɲ˗0cʜIE+kɳϟ@ѣH*]ʴӧPJJիXjn`J٩`~=˶[cʝKfںx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνË/ӫ_Ͼ˟+/K*(hR 1 Fןt4d|-2+ b^tD'0;)~4(ce!G9v;,~n 2D͌38Q&m46%(27[15$4d@gO7]&B9X@kn"1M`>cAT^sBMJx@Oӭti)> x)<(9DžiVS,7ϻ^Iѵ32rJLBkːR#3$E]KXPs`2hx~ĕ<~AT8- 0dlH`Gף"m !KEBN)zW)L6?-o(IȨB \^P KGĀM|m*UƐ *!6t+Ф"M\cĠcL ‚]bfHC3Č;z\AԷ( |R,Ig\*#'9S52^A$t&AR6!W4Ƃ=Ҙ1$aHYxSBX*eD# Da &KZьQSz9]$AFH_3@XTa;(;yM4,AQg(CP9dQYSid;Rٓcq)c?UFDAQ^LȂO\Q$O<3"fJj-9} K)t4!AƏ"$>> :QzeHD`*BR1^̓kЅd' /1 }"%4qGV}beWIpv!SDahT&.TL!eG"c51K{,փ|!BFrm,W"B4 n݆5aյ(rϋ^푌(_KJے b\ktȻ̕B ^R:d#yPHtO FHzermȃ44ȅ)x(z3FPޥa(^}bIwHN4Q*Ԁ/w62UGF|xWpY~Z>ẒTcfA kz{>ȋ| 1dd(zR^F2Z &4ؾ| '&a}ԂHhújpHL4ZU5z4l6Xs5 e]&IAhIչB<accgYmkC`3X3)"ti8] q:ZJx"Ⱥ i<6Լe'v6aͮԑ.I?XT_Y|4qeTض,w|y r9.o*Ʃ<ݼʧq稫]`O-)Nt$g.ݥFHpnRf*u~6O1b@>.(&rN!cjvWp@%2.- SYc mp GnWg%Tʀ}''@ }~!GaV jՂV4Le* :XaCQy@ dw{uTO6BEk7PdBjUȐQa6w4Q Q@pV AKh C0(L/RUn{u\Br|_%rT% +{oBЂ w31Rr 1k‚ XȈ` _oY` Մd89'O/W TU } {< KQ8(_(ƀhzSRӐUF]/t"k}GaP&n%ְpQ,x2%2ArS7^2f X h< e+su G5HCB`b:8!8 g2P`X'b (Øk ԣCʗaGQܷxJ ؒ=c;911ug`^;)hJyЉ3[Xq6a lP 1!I1`  y ӆ43x%`7UWHv,DywBy4>}@ XP}Ў߸8Mc&J8edяKE?X`b8mfyhos뀗̙ zS @~ |tŝM(Ȁ}\}E ؘ&YixW; y b~f)UB)8j֛ !Q )B?q 69f iQiOUu,6!kg"T|Ye (}3x}QeqWK 0F։VxfY *b {vw0 6-;!B!T QZK7 %Iv{U<:*/GG˕dcI@ 緃@0 <_ŐhB\Еwj& `p ` U/і! t4kš {5 xa׌~j}Ze q}ɞ&)z+ddd(8I YX ˥}ʤZ V՘dTuZR`ŕ qwJ$8I_` qX Bj|rf؊ydfɭ1'*I4cJHY!֟YH JJP F+1| 87n J a cB[( `?! B5X`H-yqp`d~:e쪛\_8kzpb'ڞydǮHh -EP*y Ye*WT[pj֪Y ŵ]\adf˛h)@&Eg Qg x'J4}Kb̅1ddeBHhIFh淤[ 1lΗd6aa.zX**`fk8  ιGGٖ8]e Z7q "1J}7IBk+؋|!\蹒ś ۹нVv{\%a {LVlŭ` G-1p+x9d)\qיiL `1A:~GY ,q7d{<< @\BfģHfURNl;7Y0X WY<˩1 g*ƪQa a U k ]\E 1~WzĹ\]{e V+c)koEL3 ɟD,|H ĀbE<XV}bO,z#Y$T,˴ ˴\˙%.!alʶo {4^q6 q$Tq {VH>D<tF}WkM;2^T*Y#N1PHcV&lߙ 1.bĈA>w1{w JJvAݙa bFʗNf(Ђ/Rd-w 0Qbf qǺﺗή ̼ p!{j] ]H benxkp}Rݪބ `˫m֙u⠖P~FEUY ^GȨ<"] 9JؼŸL~K:1= &Vۮ|izlG`Ȧ60j =ON=hhmj :qXBPGѫ ?&d\,\:ι :%,B۔8Z~L8`MylnE+j+k9 ]OVOݡK6KQ헹بb} _#ƇWWРAXRڦϡ.Lp.1XPCxdP4rJ̹Yq MsL6iJip)jV[guL8T$kHBf5H4BQ10Uav &ȓ4h7ڪo"C*Luh!{Zb@%Pa&)jn}W^~5phD5dv [ ؛G[HU`[$A:8p$(t=FHB֨> #p%Pe9.<3iqn^YĨ>đ X8?JH &Md4E锊LWdӸƖ5 "9$N{ED[ $kwH'#N$Y9P6dXc MnrJZK㿬$Ԣ("OЕi`, $\˓%V'駚d 3W8>!5S"MF"58gLgQ%v*2ҠswEl}h$~qťI˖pPC{7yѢ*(@Q aٕut~;Br8UH a8/񁬃dZrZҧ š*p#e+qJZREUI-nIBgUX* I}H[ W$֣ANE|H!,+̦"Xq#A$WJӏeT$ɪrc18*e~ " vUQ֍-A^#Q>(ljN{6)ns"֜bϬǤT5}]1VvØ{xչVT1H5/wء52sUŖ>`/*æY~1XUqwזTOƬ'%Xk۱Z04|f4y69E%P\Y,܌_c5C?Lċb/3N4Ale7OryCF.6 s>R\jۚB@s kźidRڢѠ/c!J1E[*.lpz3ӥt iN-M ғQ Kaadş5-lX/A *Jj|znu;Y:w CM®ʦ"7+'g?zV@|Cӌ& /M8gPm:2+}xgxn` )Bwvq,'Kv ю']#j _]҂ Mڹ͆8I_F&on-vGi/!wKcםU0oX.4yU][1rXG}.1-nB٪ϝ- x+C|@sgB̗C<1|7iصh`AkLA@L) 8C3q);#,$wFXD(&o  8C1,CTLxKÒhC 09 A{%Q<\jP+C;D%!Bi+#TD%mMTXDNID؀=Qנ4dJ2̻T Erp>[CiUbNT(w2f, 8Ny7ST<];R`UiRVu՚؆mhQQ1S\Ք:L?)P U%ry?uVimsDW`vQP)W0ə^mYVN5W_JXƪš UhR S-h-|WV+ v,Q+XQeY0FIJf<- K; O?%LXH ӑ} Um EY]YVՍ߰qYV(؂WDBX#כI?C ۚ]eZ<͎Zڪ-\ '֮Zi s<14U`w}l׼ܟ5=Z]]LU.\˙~Moj۱e/eT-]ۃ,SUɲ[]#qOGyU&TP %e ٖ E&Ǖsݚ)S]^ HMN[%݇s%sh`j&HԺm)1 Q^uߥ GMZiM-a9u `6E`͓p(r`XE-5>L?zA,Ed!X=A }ҏlim ז97v6>5mUQX3b)]bЯ-IIU=NW,Y+]`L<myq7N `_n z_Pbpb䕇|yeZ?62Q (-\ZC`yЖp GYحa06ai]dOއ7fTk l=]M X!qe ezͽTMEfS1Kv՚fMn-5;mPrv ^%:beXudPd`\yee |BiX 3Պqqp_ZC,H~>g0[p~+&hgW6tu6q)-&q\MМ^l[[qv}ٹȢG tс 5hxgsWJp@2ħʼnxeJnj 6FZT noz}߸/|ӯ4l>q؟|_gM}'gi1H~1PxӃ6dItSe8u8H")@"z"H3x]7c($Mޑb$QJ #19%YjBe^pyטe9\3Z#l)ʙq9uI'yr1^Cn'(}*_f[8Ee h)i^->Bp5FbFS j}:jP)w{7mS A᥶,nT@C+F,DVmL8~8+8;8K>9[~9k9{9衋>:饛~:ꩫ:뭻:>;~;;; ?<+<;O!,Bx# H*\ȰÇ#JHq3jȱǏ CIRE%S\ɲ˗0A<͛8sIsϟ@ JѣH*]ʴӧr֍Xj *ׯ`ÊUױhӪyڷpʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνË}?ϧ{˟O\w_`č j8nw .X[1`iPM6M+2N&\ҝ3G>(7dхaX݉*"m.>O22X3 2MSeB$T2b@9$#\#Q4#L#KsHEMHP d'y4c;.颟WF'E8#b$l8thhB9qH8ҐZSd' [lOZzбQXTB0PڕRZ8BĬ^%.Am]VDONUI'FU"@cVS\ -oX WUP;?M\ɸCg1Z~P2fbcE"D&B/p DW-FJF8D̼15TtCj-) @\^4 mQ3)ʹBGT ;$+t<ѰAS 4+[Ж R3 yI/s )ÌI<MJAsGi_)B?_Ǥ.`S Ө'/xDˆ;lAI;Bx]jArk%z 1 2 ^PT#wr/QWnwBsξ@D"G'(M_11PN7UC*=V>0' +kħ7ɫm:FX@e( [ rB0O-+$.gp!kL wA2bŹ=kPlՍ$JZ2LB0.f8V?-|HZOu9dbt(%.IS:gP1i*tE8 'h`?BW\lD2Vl!Z۞F7 Ds +%\%cTr$!s=h^olTεO!t$'MkGˬ<"E>>Q [E]Dd'L ,bx:#a f 4uYUEykӟMuN@dPsӐC&B.M^U423q&W|.4&Ȑ@CԽ [2)%ȱҹH(t 0(@z:UbCh0kZ+9y'T1Tc+]0fׁ'+.C Xd3q45l0ZX*lʤGQU8fmĺj6xCg FtJcV`=^׿u!2[mCm$ 8p Hgqk$jT!ef5颈yCDT=RIDsk XݶFMk1fbtg_R#G4 IJCs50 x3ȫ.{!VdW g "7ŸF.W x%PH" Zظ v0[{*G.5(9E9ExkZ2^y@Rڂbc8(h#ٗ' c/ yR蜅ҝ3$V)~c4ɾmqg<'RsԄz*VQׁ,:EumT-'@WY]SoNb4NwzI`cǽ7ǙU eB*Z UuizH2YG@)YiAiT=oհ6T$/Y6;:o#ia2D,؁ iH}6Ȓ.,^RL|Lu"j8!-HNamMXq4fec_R><#4?O&eC7nպ ^5 W(Ñ2z\#M3gyۨE ?g΅7 XRANoEtG |^jHvy{7Lf}U^C(̥3W^ 5F،7K{5Ӵpꏡ8 . T܆87if7Ez>6|5(:C6zu}&|Aۥz`%MA]E x w5&R^wG6^}RQ!yp} swx` [cS*~@"kF~ ~TǠ u~gC:1y{oPOwTPLTRzY_G_u}*%&V&:v*"q"k6I4K^"R!jo%x'0.7+!3 vjM6 Xy:Ѓ@9%ZVCXqxz\ul{n|Qp ETKxx|EvLvveH|eH8kw(tGcS҇4uX7}d's B  Wu?$n4X3:4 @Փ@K2ZDEzѶ h+4Fp( UTGk oBҋ 0v$6ENs qrG3C=؁El8`/ Iz*8=~MK D gѰ61o8BDG$Da{Hz67 HkD O^Fxb مaVNJh k A|XSDF@zBBԆTvp9dg$V3K$!I~Օ f Qu^Fባ" يYu薏ZYqD ߵY%8ÙWq_y$DP  ѠxM q=×ݔ}Q2H+x5)p ǓCE9 z NɚYYql ֠lwuɛ#dTYЅR p( fdo|XY)*'y}=X  ण)q(otMBR9fbqȏp^MdyX)ڐhϹibVl$t fC,԰8 n o[. Q3s[ O*VV Q AJYf:w_UڛJ:[ZUZ Atj(z` 7}@9tEְE   2R BoX&, ךigV=[H2LՀ t#\ǎ̫  0f5Qʴ͕ٞͼڢ]Ԙ7oq-y]z=1В 1YMHvsn yL ڣ͛@Ж lV)<ÜVvI<(PX==;%M ͘Rm[-k tXZ i tۼˍܝݜʕ]fVjNq Q퐬 3pMd e{RP9 Q1Ta yv*zB}l=g{)*H2@q2Q1ށNgnXI!nXhn^vZؖ]q&R~ѯy!ۜ]+/x{*QQ6rpT;>(~nsh wk\֖3~艝ص@!ڴ|Q: !׭gE401& Fc,/髎mé Т2YkMRzf>e]ސ}Q$akP` gQTq o+6.|3) =;Q䪠tbܿL/<Z("x+J @r|G!3.qcgЌe\E`SHXX~o1GiƐ !!-3bS8Og*^B RՐH˴()X?ʅ\?1"־3Aᤛo^dSZN voN #Fq*?`.xA 4(+Osm%Sǜ\! l5A .dСAq%ԧ/Å*bdx*+FI)Uaղօ>I*\QLmp]-k!t)Âu钪0SYJ7bʼnOպW4GTyB[͝ ӖE[6}~bQnDD[(}3&z,z7ƾ6ʧQN.+}G35%mΠcj&J:i*ӧ3 !ʹ[D82^Gr R';ϣ3B|~Хhf [mH\R%&\GDIN4o2{LP,PAyX}tb2Xd{jҡh}=U 7L} +qo57?}Xiԁqu}tYI'm)lW[c!k'+4(Z\gK V*74\%I}ɤ]E:F/RIڄځ fH JDL 5&֊_x:Γ>LFdy"U7b6_^A^/oH}F(}=֠rn(bEܩtIڠ×5qKس]Sֶq:kJiV70TN1iWZ\g Tj? 5vP6`j!r1h8!Wwhq5å^}.U9>ÊN8}jtK?vyЩ=n-`SHZ£/yX ptGԡ =B&FT$!#%bGJTKt *6a"j "^ ,xTcHԽуXh]82R !yS}d~dY](N!]kIM4%*X+@P*4Hٮ~Þ?;׉,5$Pbv+ SlD I,2D\G=Y !i-b!6T *9O[M;']1|O j|5ʙHJrHKecB ,Dy=(.ĪcǙ AuTWٸ҆0(.gY>'ҵ[gV}CvERkYvZl*eTJ_CpjB+ZH\96$-:U rĒd~m%䐓Gt"iSG_w{ ;D1%Ad'69ZHzիV.ET69R4~Mg%0w 'HVI@j(NI@AA$J!ybaKGKLR&">$)+fRLfź  ! nOȓNvrB~Qmb92|<>dة~x鄚r"b y>m8ͼybzv-.?Y{KC>VLNPi~7+5(ΐKsدmpX; d=we1*BJx$)FH=}cS^gA9gk.=vH|Ը!S!%W=\)ZTsA,.gb|<ƁPPt8 8,OH6\3?LyrHSEP:4v}pDŽ(bz| sCY|윗| A1*@h6)Fȓ+tX8ȋH-9HHʈGR$ljHLkɐ+0<ɒlǁ@I [1Yd}x:{~TtxćA 䈹Z6ar}hǤ?F *ʇF4|qJK$K\p|9<t˒}(˺DW'zɁ{οɽ\ 2L@?愈 FNLfddXNNDfKcH6\X-9KsOl=$ה͑B P}X+|1(QdN݇„0ʄ dN fΆmLϼHdKDǴpMC\bk={3I4R4|EP\R\PP҃0sHthHD$NpN]PLH7$7Mt4P|mQ;9\۔,58ZEGɭX\(sՊLSځٚ͐b8{\ƉLM%ZQ8`ѕھm3SC8)\q]_Lf08fyEZoъni^*hq灰i #LɗVn.܍rx<f\[m6[Ǖ,Vn=fVZ\?꬞6K갎Bm1orklZ+l^l&G.밎jO[unlvSlʾkmp6ml6~v\xؖmܞs AmdwIrl4YNmamޚp^v}֊bmЦnlVQk@֩.ohnӎo-SF}oFQ>d oPľmHopM5[mNJ֬6Moq d /qw ^R&nqqhq#?qPr$or''r) aa)r,r-r.r/r1wrs3?s4OMoVs7~s9qRk0 s<lP JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫgmQ/}rg3j(`ߐ`]t|9S`r 35 #[3D8aK0x6 Zd6*EN8,45A$d҄SX@7B"É莆IuNEUHD0H8Ҹ&eAFD&d{2"_3;_ 3 O&e#@e9HXވ @A'L]Ҹ'aY3Yg,7 19)6F:slLjFͰ;"$`Pl.G$V b4вis'̨E1 $WݸŪ2(<yө>ؚ>/Yӿ&n5pMJzcq&=l6 fCE"4ϴL_5#: M4]!:c i*E4WHu})H3$4d&&4n+{ E'.,1Odvcwj2O5u[4cBd.xf:t#>OU>H7m2,>RwA!TXKCmD;LKiC\!U~CtU[x:\!BAg4Ԝ~>}5$>>mc\H]4_:ɃKZ:d~ېG;>d\!屍*m5?kP.D eu#4DiPF 1 E,H]P#XȀ1c} U2 +2d@ۨ(C0Q@/4V;XÍ P>[щI1):a3"mI#yҜ֜%Ev?}pLccQ3$r C#% 9ectAF5Kh#״ N4cF_hE%zs ,>?e1#&B29T$iJD)F r:h (2J"bU=-%D+2Eȧ(##AOS!AO$[ɐF y*D9̪d{Ji|*D db4"h-}#-F5aj,֒]bWD B1Y ]=Ղ@n% a 14sX8 H>9/sSEvA !#~/dagV؅~Ev%܃E ֶ EVʱjp+X tR'A;Lġmg|ZxȀn;K].iL&_&f.oI9jpH2 dM|Zy6D=1+ў|2"oM(S&c)n*僬 1,Z/}t s)\:xs*Kj@h儤g$g5WrkArC>h Gi%ê_2)7i2|>J43d/!sF2g ]KJZvaށ@f"=Pt[j8@>O<`ۆd1B# uu;\CDALQd5DQh}SƠm!mv;Jh0h @08~ aErNeDN!fg/e81^Xik^JN}yZg]kٲPHӒ3ɕ\k#_<\?~1annk!-..MZhLK}q+rpό6x}mA.l.z[ G?k ePg ^]$`,H %wFuwS xˏY ᢫!yhFL\E_{u'  &^Uu?Fyb(u[z9VNړ>bip4VfUpݢQkD|R|A7|ԀSg-v  Wo X+gcv-0t !sq^հ҂ַP (mxUI~" j q~tE6Q]V!7{-&eFc}|p4Dזd4uux(S&l!9X ()H>vk&qeGwq.H:GjRh!NEhlgwW!5 w+Ň R|NSdP"Ad8؏>xAk@A&P! oMc-mHHɣBQ @R-dh hO->uHQ Pzp14EґyuG#mQ|ѐT5XZ/g@}09! 1aFA?UE 1H{ ?d@٘$☔Y>g 7xi,jIiԖB <izIU23GDIDAjaY9D)dI#VHUjI A>]0u,I/a™ube j?5h= q#! -$LCIr{ y5uu hGA!r)))YBq aHg/Yw Tf'/jɡ<øa'()%M!S%M3`5> Kbii-Jpw+vK/MyЗQJ#oxTbYX:>x|/Ih**6o9Y}w383<qn*Hk YJJj YbeDĚZȚcɫ ab0̪S(zaʦj2fjG 4i 1 Š-S :zQt:ZYF-Bɷ[ɇ@׬ uVz;ɭ6խ8(H Z+‮J^lȜau#ʯW)7; ێ;0r&)hzu%&M(T@'4ZI6+ +e6j P!Vuha`QMۚPˌ,( 1n*$+`41Q+g |Bׂ4lW q0Z )afM}3q(&Se7+XQ 1+o1F8a thJSlj $˩9aB0'  !mịv)vPXd>C ёj9qnظ:4E{WQ L*1!Wk:P⾟g*wFL#ԹP#zЋ}cp,i 9 )h79jzn OZ6v:⠾hB=} aU[Hl n<YB{a;hԨtIʵ,ađNLpWu"A37LHG] 0op[ }׉ʌMMQ!e!N͈k:6+A/YY ^jϿ̆HK!&QZ΋Q' 4+Q-km,ٲ |,#pYq < R8Qd\ZFR&0o4Ph6ө#|Զ yԱ  y{a9JUU:rPI ` !åeZmhqn˖ɲI̷N R6 Q :fd+}R?d>w$n|>' Yy0ȇnY+,!l![*Ip- K/-LͿx4@v,K `RA~BC< tR惠$:Q˸\f̞}x ɷL! e ꠾Pn1ށtM@ɶUFh(Ly{9FP:[?C4߹K Q|HmkJ A qb A%P[i1'=Y݌;ߛz@́0ZQ A%}|ʻЙ|-ɭJ㺔[)z< y ^&@ng>B ḼP鈲}~f#a~q৬'S*ufK '`@I١4b~q֭a5A# ! -)IL-[.' "~!,K& ~Y6̌{g(qw N吻~("͆YL މl<?iԐ   TI (;fO }0 pp Azھ5M`"!?-#ZfS4fXTm_%#Jɮ% =W;IQ/{jzjNZAL1{F3A<O6t}E9HLs Mn\oY|o$XР@s%<>q !(5n,#G!7"SPld1WSK,XinX˃,ZhLG.eʔ}(4XjSbb%PZ(kȤG+>rguXӃ' TIísR x% r]1>I1}xYdJ8c9i'΁ >jUb?=gp2ʻ,(*Fׯ񁪡 j-siq{.ŌmDN7PdS7psԟkU'LmWeoj݂z+F sA˦DjMXbM$O$ QALJhiFR4 >(P$ -H£SqH"b:d2A, UϡN4JK@!1+%ٻ(Gk ;Ϫ30HA"ӨB rpJF} Qk 99:7J*A7UչR}h.ϼc֮H}7u*E %Lz7KmIo5C{CW}i6&f`A 0l=( 0m 8>"q_B'aP`Cpl"P8>!!='am 0i,WAnЃ>XĦH ģL -ăg_ָāl.~8Gd!y b(9L\wȌ1HB?K+w|H0ihRt 6ʼn<"R5HƆ,ÏK%V@iE`Re0 2L/-IM|(A˙y܇KTMv:P"Yګ 㥯eQ_WoEWo  fp`GXp-|a gXp=a%qM|+fq]bX3qm|cX;q}c YC&r|d$'eYKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|go_+4p`^aʠeРG/޼E/&M꼫<0gԩgg 1Ǽs;uTQ܈@#}䷢B#[پ!,A* H*\ȰÇ#JHE3jȱǏ CIrEn%S\ɲ˗0aI͛8sTxΟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷W&Wp*.} n]ˆ=ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOn^nrgϿ-( s[3 61hy(I'aB@ۄ 1%+b"$ s"~L&J"cE=U(4etΨb"*̈3=B>f̓9)T"c4S72@IE<D41Xb&9?%9@-T?FkB[3<Ġ+CeJĥN\ZЗz }YК`r 2+ИK"I|ɓB$ΐ uv,^dO㫯#lC6 e멧VPiDvQ.FO6mA}ۖ;%㒤aZkS mD:?y[ \#3{,*àg^N*A+#P]Pl<὏ (rdlmް%1tR2_Cn);\|bB:4LM7ƞ3~ܧV%ZmZ]n:I@xP!@Se p'\2r}l ={ a(!^ MV#%@iu YBn3Al(&H4>NUpxAw]~uǙf@C#(Ew%Bȕ5A.ddI#"j`}, ʄ8}פ kP"9Ei z@EB@L$DJP!1J}|)/9Vld`wO[*#x)Ep {Aykxa>p5dcA+b/! fb~1^c^ycD!Gz@>%ϕCg;i2!%gzP6TSwL6=4nVԇQvԣ Q3E%(eL.m>C6CܣiA1-PMmƲ1k[ZJf!"HʐiU !&Qخz+vdPX!O"T|&k@jQmԇ9͟>nmVj)/1K."}4&Ht>152խmխx4ZS Jlj6ic?{a9)e ]Oj򎖷>6jXDbyRd/L. C6XuPլb_eYjg> hӴBrCo3nPS6ePG'6^;ȬrȐm1H]"0X7#+Hյy@UNB abٵ`^ɹ-oMq.m*";E|d>ћC?-WHY/-}%Op`ǫhܲ@|"Ռ5[8*Ht\y}61 f(k1{QhoKEYOtݜ/ nO]o^Rͯc>;~c-_f^j a;qst-;bm)3 h-ۨ/lZtt-`*Z ^"&avnxGr3 Gݫ?!m rȆ9ၴ{zr6 }4O`j40Z:x-^5%*D[Lѡnwεaj1j}TRӹ.S g`#F.׹>S \b?W-%ZMl|W^eLc%;9+TU_8<`b3] }=zoUz9o=oEg.co ˆ{bbDmG5BZ1怺%|%dʷc~WcN&:Nvch&^} #YDS(gyy @kga nGVYG%TUe\ rlR?Xj| ؀hth4hwI6s9g}ק|]i^$sfoSk koyb] NwÃNzaDzOwe'VM˖sdd#codAŁuAMDKWw/@h;ׁfdxzg1}N%I w(  v}OXa`zM e׈E (ۥx?T_A^w-I% ln&FAV6Brxx5WnXiAPtdćmQx+X70$ Q~/DvhgyuЖ\;p aRa  UUDH@qt@h O+|膆 ta 0(OXV7 y P }-wme Y!cS(Ђ˨ybga{Fjkg ӖrytxIX7AS/)`2ܵ@ Am8Z0P~0 ^Ak` d` b!dGG>B @ ` -UT1t]\IO Л֢.jsK(VhʕsL׃Vyu$I0@ =*ىAT*8xGVwX QP^arT]С ZI> YVu  Zo 5 ۀ͙\ۓ:8& E3 9 9F)SڏlWJC{[&pyr xwՀ*5tׅr:Z֥Ԑ {3 i J@OH v O`s (&;rsiJ˰#ߙv x_S` pVc*vz:sE ԰?b]@Kt;C*=9̶]fw { 3` qa EZ  y9 Kڤ; qKdqV{Q[İlr{jM9j'hs d#ۘ姲+~-R B 0 nˠ7ب9>K0@6pZ7ـ ZK۴+y @f ۅP[d ^+Fib۬\;ٖhj۴p${`#KOP~m֨Iط4 ~˟;g Gg-aK*1Ob G,[?K=zyP {}#իbzM f I,ū Aͫ - 4;t pa5J/:'Z @K[?R{ Z~l:kEɓ۳ *W, P ^jD̞#窑)9 ԰ C|ЕB#!Pxw{Lk K@ېp;9J0s.)cs$B 9{HXj< _|\sJF5+)`+FUiٰʓ=I?ΐ 5x͌¼ QXZ Жܖ ȀL@qL]3PЪdS7&ֺ[mɌNfm ,֎oc=Ev [5vRzQ ` ܠ]gE0Ph٭ʐ*՚Zž ¨]El5Rm ` ֠ ֵ!í靚q-Ԧ #րLlm ^L nX է9֐ׯ7v?.jޥl;TڥVnp;Ѹ* ^n [[ l >>h~?Ӏ?xw6^^Հ]w^I+&(b7e?mf-dEIKM^Ibz A}ܖȀA;!^a)V~ѤTҪ΄qlu=+>Ѡ3v.hʀyjy=^,zڝ& !NLd^P~sV>`빞8{Dժp`4­v~*Ŭ7Z.ZK ]=jE7x?LSNZ~~ ] m[~}@{.>2= 1x~%2N Rn$^IpǝQ8N-T߬ A~A q 0IkFGu%_oMüGn= R =^icČ󸃷-ƎAԠO Do2:P (NAcC$N] 9$VXd2$K62Aʳ0))c-VU#zR>U}Y:<=)> u6ٻҤLZվj æj5m⮩MVYU];#܇wa[z|[va2G@K -SaK0StdhւѡdM8\2I2)D' p"T4#VF*jDrI^nh!Vm;J*@ !!Zm#mˈH'Z JdH[\JFV/O'yqhP iCS ˃u5KŨhMV *VmF8U+TR&!mqxH~nL_WjaC̆ˡLZv[;4N(y#BW]uWfmi:JYgj:i}fTQa!&Z$YVp=IWB9X$doK] 2%iZfm!Y2q =6Z,SGuUwާG*aReȶ[}JOok.0[mٯ?̙vđ<'?'}tDZo5nd^~?kɪ_*qnagˈ"=H/xCjE Oob7Z/o 6*wqǁρN#KTH0^u v b6ż I WgJE**8 +oʠ '.1㞜F8 :8ZC}q,QԤ%$x ;ذ] c_!D昭ZD$5Q:tJUMЊ|,U*a&F74{>(ɹTXHY~Y )ڥB`$m눘z@'5 F .e1܇" .0≙A-i1I[Ӛ2t3>|<\¨wBVhOqg@BƑJ@udžWBZDIUv-aՆ(,NF6SvȢ* \(YɏU)'Ax(RJwj2ޚ,!mUGπz rDVL4:P>$X-2@0 D;0O=!jY$>!H +!V aoi%n$jI,nlo^2`1<;Ľ!h*JLA bN<*ld_AYj+!}!PJN{1KՇ< (a]W%9԰"qD`JG`1֪#DNz@!djExCp!†Tf80qPC qw泌L+Uwn9y}HPc!CfH&0C$+@jJEKI`r]Zn*ICN>hFme;RnTZZt#cWR(3cI9dW-a颢e|yLz4#9XRfRv72@ȖdJjkWHقeȰ*ҕkE:͹v+=,buNjjǍ&d%SmHKbJ"n/IB}_3:&[vܺCoPz=W[#D,k$]mڬ1)HYT?qϖ_u*q6? ٸc2.9xNIb5.I7 cqO7S"q@~7:AbKvWJDW媷zெ5׾WX sMED3Dϙ}C^aJc泴tre>n1U^s~x$p8 'J;3\jËPZ㻸C q>lUq IX x)n)2P K /{W%[=[ |pJ(?&5 a{i2ZX?Kg㓫P9343CA>0X8aAJy=ô!{zp<i2h BIF/h2A\kB't #;`6+|ٯ9뎭pl,qJ˫ÀZͪEt;<\b#;ڇ?tEP<<"7[%}xNl^#(+ycEJ1b@6Ž7k[cd|hdg,=s`Ah,k w}(p Žc#O; PiHd{oddj4)K>iQǤs^ TFeKhz;K b#eSugXQ$=[~3GcLjYe^f?mgvAŘ)^ mvA) }GQr [:N.8Y X59IL*/a`ج͒9fcm<؆^}xfi-NLSo "iH ^>jy^}f؆gaK1IZ8Tj6bF}hƦ O1^Li̱LTN@š%hbۍچh6[XDFӆNY>.~(^nvt&EV8"+nTmemt~kpZ ڎ]h ~VlVk!K/^~nKF}7r i:3fokmN }Xvvoa&nvsU!hmf?<sm\N8oqsCpqqyFE1toajqҥPw뷯ܧo'&v(R`L=r\Ȅ#'60B*3hqԪuE8ԨѤҮ u m\}e-wܳ2iҧ' W9s vqŅ?P'G.eKJ2=僙%DFs5lD!e R%Xg[oE܄fGZ-)z\[ E%dBe|udQbW{)4a(R{@j6ɨhI@$u8[UҶ`S`ۃ]Z["Wq&֢bܕAGcRz}yQWFa䓩M'TGYyiT9nh5{i$GjmWvͩ]'ٯ_Ϝ)yOZ xy 4j4uBiu>-Wci!rLrB6챿:c5dwH *} 'lG'%ϴиEOSl3եSi_&ZB|C_f|#Qڽ"E/! 4h|e5@Y*R-qPK_ F2B}Q_~,|S'^ Zg?Sx%<Ftd3Eb##Ru0cOLpeMi _(ƷO^9phmNԑq !Ӹ}4zExK᫢Ep .Zԕ %e ]P^2I=c"/ٱeQVHED$IH!g{~._V}c<2Ī:;~''S >>3V [U+0nqo2Mi bˬxOy*d[=Mt ?Ѥ?)ӆXq78(/y` O %h~NltD0s 4Z&Cw1!?sh3F E~l#MuFd1OQPM>6/6$b /G 7;/~)*uΑzjtSx-0?Qpu \-lWEQfrđ`fƩVyTRJZly/S& %bU16mM1}g%!$B iAV¦-kC4%,u'<ՎED nNQ{lfY$DpƍPLVO62]m.NZT w>4*]>oU d2bۢ_wU.)\`]"F8Ne5fɡْx6dFCUI\aӇClX!KgphGs09JHoB$}~Iwq1`7):/KtmV{ l '']eF*F,[y#rzcY!؝FOaZXNȧhӱFPmj8X?!W6Z!J#uhEMuby  [U=k?Viڲ]6 rFmk [|n"҈FwTE H<1uk]."CkҽOo.d-Y4!?|~q+R4C?9 ?|=/P_' Is3HLm:08PUm]Ԥ4A}y::o:ړNu8u NU$xrv{Gw.H9F [Ǽt1 <~?6Oͯ;g܇7b,kd*MڤZYw]\Nm>Tvom<*K-s^[~Ӎ$ӯ~|?Q$:@jW9E`! 6_A*9^D@T vR    !!&.!6>!FN!V^!fn!v~!!!!!ơ!֡!!!  "!!""&"."#6#>"$F$"U$:^&v'2_!B'~)"**"++",Ƣ,̢-".*a-" "/Y@!,Nx% H*\ȰÇ#JH۾nrHǏ CIɓ(IZq_˔0cʜI͛01fɳϟ@ EsѣH*]ʴӧPJJիXjʵׯ`ÂԦMٳhM˶[kʝKwbܺx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ$w:'bwP;&Ts)D>,Z3@!D  4cLi0F4B$nd3:T#E䨣H4sZ̨!*~B3xЌ7&$J/tc=9Q=cO'F>Zf 2L5yG(YtfG]3SKrhA$QRy4(BXXg3[ /6tKdfԣ ZFl>ia餹5x>X23+)APt !z&.,ɲl*B$[fAt'2ۄ:nCͭM2䴰{KRiѲ:le#-t ݪ.AF,RkR".%9)ULZ?6qU2onlҲ˴1L1v ׭=*BBH3S%']3рS:hJ/LFDAJ;=gLb{dgt@evĒVLKSDH8g;ȀՉyZ[Bɤ86xzcY7"8r#y̋nWbڰvGb,#17wM{̉NQ)?;K5zSt$WO2u{Ap1`Om! Eg5`>  JpOf4/21=OR:hulQ]n &q* >ٌ$:"}}Zbyta+BBQN`oY!@ȰF2נh=&v}Ԃx `qu?`уRbb"nAbD8i[b';Ik! cb,r  VľrT@A‘k I'LJo.e-DMK Q\0,`4Zu).d~@d*)& dt%ɦE ʑH7(XF U0q!)*A}(A9ʎ`*bCu%cRĒ2e8%!K GNvlS}(O>ˤg,10yxc,[!mn V7GX>JEb)pb' Dh(nl#Jb]/Y=%Hg*q$>LBt l5)DQ+T,#L>vnӺSpH6n.P jRV7ƺ0LjS;jNl[SD,nֺ'AMH*Ce~]1i3[O}$c\M`d!umD_db q69Yz1&[=:2e~vC ?='$XI;]s⢞Y `(/?|k*'wa-슄օ.Nw]Ȏ8m9N`m6 m'b*_SQ/+wOw4d(V^upWW#߽ƬdYŰN:D;m6!u-e}L`kJqyF%-e" 'l%{[ڣ]۲'6tJ"r7*Tm+\>1lN C e8W\"61+>yg³=ޱw+ȏS##Y vi\de {GvZ .ې| wdfm݆JK| Z(ṅ654B̰ro7 }p&g%GWY`|3Z`.7y` PG $?L` ]ECZ)4Ma 3Ѕ]xzM@v=eȀ pghVj\e"g`Wf@}̐ LOZ!j#'() *Ȃ-] f;f԰p4H E'pFJp"5&$+cT4h Iv ǐ qdq(0,: 8& Ċ eֈ + #H3u] W]=ZtxF7Y58 g(p."#4z:MEv}WQ 8 2 Zzdw]V4ч()% Q؎p x`(Sl$.83Lxt`0w =9sPc56|e\ed q H)\yd7W]4 8G۠ Syۘ-TX}=)5 g]s:i~؉ T i] &uc? ABun  )QBv30DW gIG ,ẁj.#0يWiUKxu-gSƄ'+{OlV 1 xQ 9cip8>r]g 89sѴ@B֒`(39 YOH0]_ QJK^}+XwPԠuXI!u'ҕ{A v񄯠 !`ՖAg؂X9@X@js rOH.{7pH N}Ę ?:j31Z ٕfH !`/ښ-I\ʠ낤dus]D'՗7Z (ՠ)@E'UV(`Ga! $t˜!਩ )yjuay(iE quz @X~Os8jp'pGX;.Yk5 I嚮yZff5{{p jK3 ZP Vc:bZS`Q Ċ\yfH`NQ Q ^F + Ӡa [鰢 tt zxPj V;=莿Hxw iW ڒڰ~q 6U`Z&{KNxZwh\'m9_X a 𲒠۫;˞g贪eF{8ۮkzjY0V \;LKKa ѠZyu7crKjijSP{ Z7Zg ZǕF% /  q N[:ۭ={yZbfaaVp=w 뀨jPa uxrt "R}`bj+puc|v120K{ګV{/KE;ֹfԐz"\ KL J)}P`C| {jJ^:zr(<-/LkuL\ XJ  Z䀾z+gHs=°[a{Zjzaykf \&! WJ<ė yxmZqyx ԫ{ ꙅ̕?p<̓l%HK |[ʢ<:3ܧ|J< נ6,LM<#j(&<+l{|!d|_j! !p) XQ <4ka\h>3 gL|a?s WmZM}-zuqѲ%Ѹ\]l֭Gl5]PȐ~?Ӏ< UǹJĖɆ kV-q<XmZ7Z=Xq`ݭd 76z`װ C,נ==?pq^l;{T]` Y[[`<Ad`0&Pk iumULۋ7­kH;%M Э v(߿8 ՜"Mhj-p ֳnh)fj;}ۂ}ZH]3n6](w] WMᐹq (4ec`Ɖ =X+n=h4!5?ZHx PR.JW ^.I`="]hN(笾l \^\=7G"_  l|P F~—MQ >Bw]>~j3fZ.墙%Jh*̈́A~ 1ɞ.lo1k׎WҔܨppQ?cy#Z}Z_+^XO O=PV==!HS tj0BךU[x(+_.n ^ƞ9o@jJǎNю 46e=͋L ѧ&U>P~//om_Ӱ?A nO "}}a5?$|*A]9_ c_ho`r?PP $б/A .Q Mvt !ԐюdrU1o0yWA *\mBZhھiEY*"Q;ֲKu*&T9SJ%ϟ=s$ZQ*r'N\ħu2 iuK-:uʤĎYUծu:%+K]y K_o4y̢a(Ueљ5XkRyyHZMI9bUD]F&?j{͡BG"Ψ3ȓbPBpD2P*n$oL FT (AAQ kĈSN,-2npBJǩʄ#IZ,-/?,#I{q6KĖȓC}CZ(4 m@o2qˣ$1uLCߒtWM $Lm!O}gψ)&)<;j R\rF4y.(FCC-N>-M6ˆ 6MBo [ʕsXuTq*L]Y/;׍ivC>%k:ح_fcmyajMY3$FrV׬z ,+;ɻzdQO]`爂[ ly%dvu[6r Qo6Jw%,'}6\_sy>r=sT^}ѣoE)ՏiukQgIP:&"xxEcqq =-&]TFݣN;D: T&F1A$+ULҥ^ X@tdyE˦"(ԋnT vI$yŝ&en&TC>h;vBEjMMƛ#XGEG48EŠ !X0%1;q$D](FnpTWƒ k>BFc|󲧏FF´OFiH,hXQYmwEC0>>٤H*e~e9*`FJuCy,5"r 1܋Xs+OG|Hf`h Ro[qA*H"kˆmFLRdqHHpNTicU~uBѲ$>ɶ2䨎|N6mfBPP+kNCUtsF1Xʌ*0NP Z*s& )iT.GBVi=|!4T\T$\{Y`W"Ӓ}]5I~[YRօEv gRWr”ͫEVFdig[|>5J-y\B#ɱ>VYf6*ޅl`Y"ʷYi9R@ k2.IHcc"Z8D@IYv iQ9lk,[&r X֍bi~{w 9EYlCD1 Dt! YbOՆ9 " qBJפIY\fF E(k>úb5ɃgYFy";%X޷M(mʨ{7.\,\[f M34qOw,qFo!Ug$ov gz</KI(UF)VFHCfr,,md:cE8]$}K2OxD" <+q+$?RP-jc15isn< 6o]R&x6á}iBL ^uz3{T3uHl8~}f\G>N$4/'7?VYDIFsy?_~da=qaJy~X#.q! +J'6Q:;:=ۿ3 HG*a(f@@(* @c.vZA`K@Ar+QA';Yl@\9p>k>AÓ U=$:"6+ 8̺9%܇<©0 d3) >b-B@?By=b$;:6t:%srQRrz6O?l=3$ #D B7{NpDG9 o@DTIZE0y_#IsgkM,2El|6SS4Ekۺoj:,pňXxS D8JÊF<B K"8>lB#A${D!Fū;|?}lA 3˝43'f3 t65F GtJʓJB X?Ŗ,aKS LU ԨΠUsU}`J\5Y<9ʚcN+ {-NMEV- $ܪ?>MRpWSrSľ2PKQ`W QՁP4X, NmVH/kRنuT-ԁxҟUUu= LCt@M^V)4z}IٱYj zUWߴx˜y]۾KUYY'[&Gxr<Ԧ,8ZX$=t LU٣`5]6E58 rWuP?[uXm EJuͺdM[ԫu]\EVܑeՋRa՟dEɚr10u~5 r ܓΆdMN[[L[,\\#|ڿf|KU!0s8Ј5ZݺeM#`4tTZLӨ qH9Dڭ%cTGl`Y?mUfׅ]>JKߓl_%;˥Zm  .6aStYUť5_\(OdL]~[M El^ܕm >_+:܌K؛bb>/n^\,_sHs$, 6 (5*LEDd@d a KRnǧ uޘMa%c^M?^fa6*tǪ)OӀ . Z ueM!PBa_6Xqaf]tnŊbfy|glmf$gpV'F Ev=gA6 dygn|hBh@^frn'G_|hψ~i}[ƒ Qg`*K;6ثjy]EY 6Ov؇+i.hrGqpb!6jkXE>T<3Nj@N^f>Fi ީi6^lȎln͞lCylξϞm.meq96_&Юf.1h>Dhɞ;0fnHmkj$m5 C@ (Qxnn9. gmN6 e. ΕcoψI}o@om@n@NpC1p p G>pGZp/ ' nqqǒ o֮//rҖ>")wr׶*r-d-s1xq2?s4Os5_s6os7/ 3s98s;sä>#؈>TL=) Nz>N¸H8ٷ)ԇC… N90e'"0z9:]PMbM(yh hG(\: 76[A"h+702JF7 ϰ"ĺR1[@ J2(秎,̈́ھiIӖд:M7FJ TmA.gYN3֮6";$ЇD㞳 TqMuJqA2"$C2[ 2$#a2)>v'D@\ -L4k4U{1B `;%[sMaA5Drc1n]LV㣏QX6Px7A AGCt8B C2ﳸDzOSѥ 82/A;rJ*^uBDd39+9̥6k|+EeL8HnwOL.n~ *:EFl"xW3 56֘LKY4qM$zpƥ\Vh|~AiL>HM CZ3 ^{^.t O~Tl(DPX mC !F¼X Rx* V Y589ba1A\ZBA ]Ldžrer$,^nCv3tMD8E*yXG! I%zWa+Ȑ|lCYD]t//<6 y W0($F>Ә%Eɍ\p6Rv5@Ӡ6tWBG4Q M@F̍d#)V6@<4!Mb'*.5 U*!<9 e "dCSγ"LF6ԓbSfI 2)6 I[=g ޺WB2 U!bH'-%:GS܇.Zք-C k JQ J֡ A+ިU^4k:$#:)nAZ!b0B:LnS*92a/MH9qD&/CPLhbXjC _ U2wPk&'[|u ,D,'y!{ܑspDꈫra0SD[JW Wf4u4Ǚ"șKʈ 91C Z8`L e烸Zd45J}jN5MJs9٧{}H9[(A^DB$!.Hg&^@!)!~"k ia#>$"o*AvlH\ xE# %9`CxR[GNr9ftGH6 DtxQUǸs  / X(xFfd*!gq A{t|f~5rqr$<5<wHv'q y}'qgpExU!%сDG @x? lFR8Th ~pzQ~ ӠF^Gg!^![ eYB\(')8+Xv{2AA 868|lV(ӈ{uFJ(GExWq~qFJvs[ C4f8Q9e ]щ?1yQHJ$ ')Vx Z8* }ц`_u(؎HgFьPQI 9YI 1P  999ϸuXh|A(hZWc5K&q1o!"Y3Y`( h+KFXI1.qg$y Ga1k5yH]2qQFHkQC5pgiIQ ؓ!=q11> єK q"A=*aM^931k+>5ș88z#yl  `gmW)`q}stIj~ GHtٝ@щ љk)WY0 QA 8g qHvYS"!! ЉpIa; %VF!`ANaP ⠛ )p !Ҟ<׉. ~(`|RPhʼnS@?a :  Y҅#>ҰI^yL*`ȧ5ODP(c^QI b PZə!sb T Z%Rx`X$e BTB 8 ސ P8*N l Q~] a(`EVCqk IJL(\8ʎgwIJd∟a/!VJwk0!k _  upD6ak*$j4Ҹѫ ! ]K&Z$\?[^cZQZNbZ ʲ9WJˎ"a sX: k'8 1=bYW'";:{[ny ˷hE7;(U j*WAVmW J1Ȋau#\k@}aIh TWaE0U%S zG qk0>lp(1Э[9+ɱ H{)sYv p2QNv;;X\rD |kۘۼ &r*aG {<#K a,4 \',+jԔc1\T]q1mxg=DWaH\m%dM/-a͵6qVj`5A #! QLȏ-wN 4nmkt a%zܣ<zmIa"$< |h7#[ĭMo~ M 1ӭ˭m܉qhBvQ(أGM9a@>*^-pՑ@`t8^6J!5'A|4^8{w9<~D^F}pJN} KqAR~XNqua7\>F djlnpr>t^v~9x|~[*>~v芾>^~阞难>^~ꨞꪾ>^~븞뺾>aĞnu o f`~!,T  H*\ȰÇ#JHඋ3jȱǏ CIR$ƒ(S\ɲ˗0cʜI͛8rɳϟ@ѣHF$ӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNޒgËjyyןNw@}}r ~% y!3#R792p<V(>aCԦ#ހb_$ z<>d0Y6آ:6\$6@m,N]ydecf$+pbiT'Aa83XggfjKz%(1vs@Ԉy3fJWhC *#!'DJ"[z&i2#R̲#F;{Z+P%뭰"EH8覛;d̶]+b6.FS1)+[k//FÚi1H  C#?d0;HAK^iM͹w.AZC'+rt% żJ2 WKu8L_-sA+;fL8s>]s-k| ,6Nj*Ƹѽ1wKJ2u&HH5#H2mSc#T;ʤH:7|NtޢM2, u e{DfrhDp /. u1n/T .c=MP9YX4}Dcy [b `lyqkȝ: N; aw dz| . jBx(E5v&pALB;թN` Wh)2Ce%,_yo|نC 8)^V˔2HĢQk"Aǐr(ԛ" E|78Ȍ0q ! 6/~{IIEH|,cbנ\=i4zF5̥Lj2Y_BX{i1!f*d]6DAa +$P4yՔ4BF1DG4ʷsg^ErC.H?҉< dS3D5Fnvem63B ʯ:!،v?{py V)^H H}| .Df,INq*dD+Ol]?߲N6 0 Y#l"cINsIQ?Ә.(p;.VA~?%HaNvE}` 6W<+̛!5}=K9>F3uf8iCQxC:y42ui$Ynk"'37;Q#!N6s(W|5Q":A"BL]az3I+z?#|'x Iwp2 bg`)0|pb< 6BOWsG!Mʐ F 7|to[WP%&] E|jJ'7x 8 Ӡ eW,x@^ .dw<#lPd$YQD fgeP ZrqzĐ ZG q z/ UtՀ rVUp4h`kd8 Kfx \lM&&א Ef 1"r萃8 `pʇ)ExEqgEpIR={uA[Hm q R5U)Uh'ߦ\kJ䁐(VU qgӀʀ`QbtA57X'Xlj_|Gp p]h fA^b=vЄ]<I¶Bڒqz#ƿэ[љ]l JYڸ,Ј. qr&<")."XPx">7H^.~k. ^N=Լ.5#* Wʾ졿KY 15 s Ay,!N! o0y{}_txYo*>O!A#bwVqÝOX+-PXР} FG->!Se2d4jD}DZ'QbZUzdDRYBX9am{ ZT:ujU!+UŞY}z dB\_z4Wve͢U+n_'qQI+ 8Ǎ)W&S'Uc 1NV*_} %f9m3Ϟ?ۦҦSي:qUWyWX%eO,V.\ 3% *0 .^>+JL3J(}&j*.APJmRRBzLv '{Ii&J"z2jʑ/K>2c-ṛ+ +ŽC>2W0[G1ܧ=0!JpjAʰG/"*LRn>rUtOS4+Ꮘms!uPY5iK qDH{[IA-IMz\jvׅ^UASI?XdLUV^QHW<b/;܇,КjaHY: +M;[J{"UJlNVttd+Y/fUZ>NNKaP5J}AY:jOkfiξ[Nm岨X#jswwT'B9"oa9fƂOS'h!n~2II2'uMuS>P7ejR;#h j.>ezH膼},ON#Y% gp")cXxORrO,C_^ޗTR'D?C XV5%$ ɝXnAu{a|5lBF>Q{ 7HG e$9\D8hE,QWw>Ǎ/rTY')ӓI/t"b!3X1jMc,#_Ј0oSB,cv`BƼP:lHԧ1X}Gֱ *wu밨I$sbCf;+_2k#bܜ\* QS иX,F-7iy}&}sa,dUPAfYʹ%"iS3%L#FYӜ:"-q:d깄}GJ.RE,M:w=HX]rie@W@}Txv_%uMQk Is3 $Ԝ59WZ5, Q4R|.i*2?\6*}qYLЛLq;-Ʊ} ^Rďd!:)eh=Lj66ܳ>uXWHAV/ܑ8 }r{%Lyr m黏ع 13@6ӷ ꣆>+"?ʌs8YˎHK"uH=1c9=u O+o i-j \j>c3.+|2hшָ>x @ Xh,(?SOhDGt;J4HßS9 ER%K&Q IH*Vԗ+,XWiPeQ)Ҁh&; ҈`)K`C_Ө}8ti:x1AXp(۷` sJDNQ~h}+Xl2+\d =Q-!bү=}Mh֦")/iRڼVOEOtϡ.mWM=3V?'-J ]*RreC^ :cVj\88ܸ}u QӞֻGmOŀLRjс؅ ZZ’Αh8 B'=]

amq`ajapbT_]ً; b bŸ;becP0MS=&&be/)>yC>_0^)2.cG8}P#ΎJO7H[bz}vAࢬ_l$~rw.HN|d9sa6PVU^# adV{]CcWMIm ]"9sda^gxP!8ҏ=,/?}vFTlƮ5ڸG5yKpug~5xSrVTefu^3It@>gcn ݯIt(h^$DhLV>fO!]oEbg3n+YlB,`E[iӲ`hF^ޏHicv&ӕ(b\h鎣)T#>L"j:認IN&"@uVou)OWu]솥tY?pu[?_u/)ta/vn+7v`!v]Wvg#fthvjvkrvmvt ˮ/F`\y_yoyyyyyyywvy]וy/z?zOz__uz~UzizzzWEz{{?{O{_{o{{{{{{{{{{||/|?|O|_|o||ȏ|ɟ|ʯ|˿|||||}}/}?}O}_}o}}؏}ٟ}گ}ۿ}_3WݷxB}~v5(?}X(G~eW~x7H7xw~H 3@}wO;8_vp !,~E{, H*\ȰÇ#JH3jȱǏ CI#ƒ(S\ɲ˗%OœI͛8sZܦϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKfu͉w߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKN|ˮËOΫ_;3'UX/۟UO0;~C@;O1'27>X 2~LX"bp<(>*p8 3Xkl#+DBN&]P2NɊ-CLCO9 a@cCe oz8%lYic͞e?zZޙLiÓKi'^Ab)Ap80Z3*BjMy YХEc>f>f$ZGIk*S$V5Yg9&3e3T$ 1 1A-##q /!+(ٙi }?o <)@?x {|vf#G3h(qT" ~%.1%*ݖ DWL%̄`u'60"a6eRC֟ eMo* "J(9dX9]0=|$#IImީ0'B̮qkh0/SjKDv/HwXC\2,O0L1 +](|$6pgAپT-b5㘸}p :yN hE!*'"́o"?QHl6%.0.S|>Vw"p<G/Y'ֿUkCd:D)2GDЬ"Ӝ J8"ӀcDоhEbeC-UUXrN )bÙ̓*t!(B u$+A ̚c>i+ ϚΕu%^6Mu"TV"1V *l,{^m,:}6lS'dBAc<=b}ƕ" )ƻV nHdtQw *% dLQ"-S,hWȴ{& Lw+𦖊2k]jɱW|2́8PfGVs0jwWRL7 Ƥ"u^94]7yס^V&J-:1xOeDij^:!iطh@7_ u|H}Ӽ> Ӹ,I[;3rOհ6g@n QUfUy'^+eB yLnFC|a&o[6 S5ެ8o)2 "Ǡ}E6 nca[qJ^$Ֆ:!]Xܙc1i֑YuM_JPu|bT>Gpxy B^@JF>4[[xuHh xJ*ZU.1>>Q9D,֒-P:2`>QQåumry)^q"Z, $>ԁx M$l0 %g>w}lF/ϲj$}Gѳ=jkhy]=`?eFM"e}2 Wt-Э!x=wr |g1Zt3nk+?d F. *vA{Ωm_" b?()yAkc '|u߲|7O 2#}g'#ɠyB}O u,}6^g0sxvFj7V}X7g3"ׂ` ;JAs4(3kv=(#e_=pDĶR~Z"n}vRJk=b($`E3h"³L3(U=r( KH=B h'SW AffW fzt}PP!,8(fP fӐ{uhw E&@ &2({}f֋7lVL6T6(*o ys fz5 #Xm÷TXVVX" e (OQF!xu3 (劍w}Ԡ@%^R2/[o\'tpm'x M''el=b G8TDDW]( b4Yw :}gkRS! 5G'T槊q (K (I0OAv7e8,81 Ӱ=hBnrjU e3b1c}x'eG,Z 묵Z7+| =|L~n}oΌm ȭB&rϢPNL=K4A PӰ T 8]Ӻ>=βF:%3EG|M\ȶ`(<^ КDйOm&= vjܨ|mn|lp ] Ұ= )J[)bv:T[8ӑ (?ԇ㹹4U1=#&`V]鏯п ֢Ԫ'al'ϬWgo_$wmv ֮|Vp` ۇ تIp 2X٘m=>B}ۧ2 p#d ՟(uRTZX>ƬWdfXp-r=̷Ѡ = ¯0 ׍׭ԅ텪S2Bu7Syސ 9 !}!jH=GL% է q ޺A*I }g|]d1w +p&~;Ϝ`컊L79^ )6-Ta亀ܘϚ2 aON 0= Uy؝Wݿ ~f>zz qv>• v]}~μg]0yPS N >]9 Aӧw #. PV>Nʿ斪} ^2.{nv>╺'ne̶ 5Pf70ҭپCgrae^>⠌\N$р ؆OǠ?^T_! ?vm{׹+ҧ<]\Ȋ=Z/-J{U;Q>#0>oBxGˎO WT 9Q>~ͫ뽄{o n?b&fO%h0Ӊ=[vO9`nr%7'SqֿI.0. QK_ UO꧍.g  U0 R;01UpZ:tUZ("TH-IX'Uʉ$KKŁ6Gep'(Qs&Ԝ8u#+'U SBT#;U6!HT*S[qU[mݹu_&\^[ʛXuM\2`d:DUɳgTC+6-aA:'Z7+TKc}T\=˕pt{@oO{%s?*A.HZ*TDM#J}x݅ӝjlݚNS vZ}-G%%g(+JTKEd1|vuhKF~@^7Tko'0Ium"ph'%Qim|s4Cn(M(q7`|kR"ijzSTQ n1`Jl͢]7(dE }QQe*PfM@-9!Szas5Osqې^! <5Y$ٚBjee-ڕ\PmX~pW)+CMȜ.Շ2(Lh:nU [w5j,վDc.0u>)m(E%J'jC:`1/qGZ`x6,,+ (v11N apyq-$D)EPv1̈́2mM12 #d79U.EKl"(VQc>,EuB`|]B!FVvMƻxIHlrԋLK GSH${_Ʋ!o)X³ܰ}) %y,WM,!-ۨH #}m+ חOp}*⌋C\d>-\\>5)V.*8`qfQ-G=xK, cv+zȚYG}jFwdq&J+-D[h΂8}+I-1#bq)oeӌ m(6lORԨ٨m\PI{ڪN i(F/~"iv _4uDcHU<\:5F`"H%\ax;QqǘN@ӏ/6u9J*nCIF2hU; I`'^y;$(ǷêcMYu0]*ƌEPuG||~8%u"uP0F#?ZXwhL]Rp'%Lw!E9>~@7t UқGy!_FB 0;LLGB}W~૸c'$$s"qs%:Sډ9; 髸 3>S1+jPV{PK |$Ĵqz?Q|=xA늳c.k@@O.xw0@[@>}"!;/O1CA~š#rԃCJE?u4*WE}!?ĉi:x=[T- 'FIJa|)zDC(K!O *JEU<o6l֑E9LS;@çG\QFbߓ-8G$jd +4+ *ќ Bq܇/@>7\00<ǡaL V\G2t}fбE<9y@x²IۣR;T%qZZI .QZIq”LIKPI"VIu`S)̽$#$Y#|29uصXZ%E_1[{tÉ&J۷u؆hLˆH];IR y,[1]гؔFLqK ZKT\GNI„["#4GΡX< Oj& 2 ʮ; ZLMR ;XOML΄*\zNtNNVهLh/NH/"\ dO1 PO_"#t"g36Ω>H-X-lNPP,PpuP&12UE΄B dQRcnԸK cK>)5=xK S%{ɗ焚XP E 1U*^5JϬQ2=;4 =F;ROܰ`= OhX`T+ST+u T UQʼnIքRs>߂mUS9`  =^+t2[ACuMd5QiVUXH@ōYTpÉj0Wq5U䐬PRT{L|ׯC=O:TQX؇-ZrБ,բKDUVq5QjE&vrtU hS7[}Y9y|F>=cY$@g;֚O@-څ8}Q ZTÔUZ̵ .M4o%Qڬ=Ղ1H"BSCz rW,mb[ڭsYM:5[U<[cY;]}ZڄP\4Q QdN\ utII$\m9| ]1}iڅ[;AW(SF:(}[è]uz]7B^=DD[iTK1}ReTsdQ9^ \}ZII؄(%Wih5䞄Фle۸Q fP'3Mp<`1 +FąbI^"ض]1Zz :EaE}bfud+iVYPX+K`q+F 1M31M6>=H8e^Q)b ;,%~ e[~Qvڇi>hbRfo/5B^%t_ec\VxM.0bN&l\Ye ܑ%#ie^F}ؚrhE؆m\+i&hB`kջ6f F@VNoh et,ٹT1X1}4Ɗ܇tlQYe J>fKMjX%V\]јgFif6އ@~V&_ M6gQMV/pjY7ꧻljH ϴmF^i-kNh^~h&q܎mmU/XQpj=n[NQϪVlERY$ŒnL}5m+=AoqfW KSa Mq%)_o]N`evW'Q12pBlΧж _bp'Mr qdɎopn' 4o՚KKһPGg#/V)%_k8)Kr+rٮ%}et숹QY&ߌEIsW>g_ 8'8o&s-e~.g'򒼒[@tL/Eb7ێH^6ss􁰄0T6婝ZVt8' v36Nu rU|xwxy tAw[g1 툸>>0-J)m-N">hdewj*2j/xiq{Qlvp;1BnaqV9/yoao oazgi|D[uبBą[DX,zxsvx_ tIexGE {yvQn{?{Iykq2"XW{ݞGwNl_zwzf| fJuozj%0j.{//Lg{\wsњ} 8|j[A¿_^ vkzFið}Ǎ@ {/hrU yD}vU{O@/oqL g@oDpc&Cj<㱐F i$ʔ*Sjle[HҬ5&:s鳧,YgK'jTGYMeEj**5+ذbwlYfͱm-ۅ:u4`'Ɲo_pr},x`o L^UDle`NTy]4Wn}4lpGs6m2wσM{>ǠWj0a3.v5I_"\n&L^R L ~3ȌR3NT)I9hK&L2R .фK.-gPPrUI"0eYp][3εt ^'7eCG}>]v_~! 3ji>/uRM"=ڄuxlbO!!yK%E*"UJE#WZAU#vEP'@GxθB8eOv*XUƟRR>0#ځ ZM 9flhꡚoۚrڹTN(NUGYq%(*Eh7xl14ht>J bǤrJbJ7%X>*i_aK2/݊[m̛qEeTzܲ_EsZcu8uЎE{bF5'3|GAsiII+kI,A(ULuH}p TǥTq=%w8v rT+wZe,]eb߸z/XH)YTKA<t ta4-Py5#&'>E T\wZcUJQ\qmj([h~?$wҝΐCb\a2Ty>U*dtuu>O;Uմ~NziUPhc>6DnCqI <\ {<"Y.\WJCS\ve^ũ)_ֈC,TuK.CA5J:rGu7#ini`67 /'ce繬+1ؓ.`Gw=r*](_] V>dItp"N vbh8Ѡl) iQRexGTLWNf0nR0GBݰn,AnlYaY *a5H<Af#ҿ:+KzQ:Q"tƱ&Sޑ0*1UյЏ :ERƕDrZN<6g5)\ "gB,ӝ(=ze63:HR0Tb*ѥ/V"{vei[C ׻,L D~DxBT҇1]0XfLcꋾ w\Gh\5vg{##re4iڊJP-{ .]vXVm?,o?k9əiL:l#좫 e8CaďX, &py=X@qד {Cb*/Fn/\;~dypiÂ[TlmăFC"5S!9gcWNJa9F21䈗-u @hclYd[ۘpʰzLYr\&Abrʗb&:avyŨrzċBQ1Jmb)XB:vN\A#0xjaY]3gIf[1"p)aw0hNWHƱsѭs-Zi{w1âKsT+Z$w-n[+k|YBYØkQ~u WR%Y⧔lsYYV'J7cO<3K$coUz2Fc"N0oAEL9ԥÐbY43|F0q;KgӮLj:ᮔF4#uA>fG.vgm#wvt߈>@Gבh̲`QDOstWkK7x1Xf_szgb]q/H|)>]孆yoDto}ۥh eU5F1KA tAGB`N-GHRc %ѽHu YXAh> zQPX0u`H }D",aX(L ƕ -_\쭟 JG`t`tZ!9^aH\WD_: EMG  Rٸ^ !6Xߩa6ߩBAt<&" >,9ay")B ]`b,+".Β żb./噞2Z_&.#5 J4V#MA"6v71~8MX:#- #7;ƣ<0Σ=#>#?#@ c@A$B&d)$C;5D&D^8F$Fn?>$G~$6"H:z$I$9$J$KK$LƤL$M֤M$NN$OO$PP%QQ%R&R.%S6S>%TFTN%UVU^%VfVn%WvW~%XX%YY%ZZ%[[%\ƥ\%]֥]7A%^%_eO*`&a#!pba&b`.fN"G cΤ@d^&fffn&gvLg~&hhe&Ii$jDk$taf@Am"dlRAo2$po'!,~Ez H*\ȰÇ#JH 3jȱǏ CI#ƒ(S\ɲ˗$OœI͛8sMϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻߪNG{Ɠ+_μLΣKl:pWֳk }+$>uu*O}yTF[w<앾j́ M1X\8 D xvB$@ 3Ml~ 6eH-Ƞ ]cAр9DL[$.>&8!M,6aac>3$"93;9 jTdGt!AQF4AIbiQI>swb158Wu]'З2TH vd1Zҙ*'/,M'ȴF(ߌ4CgRĤBAIi38 # {g_CC͉B ZPͬ1Jzpj&ZB+-M ԢehkA6;*|֬3K/DmBWtO6j.!'ȖY54 ?L}qc4;gV*B )MSwڲj2O8E\+l}`)ͺ$O] 䌺7ˤnF̏ 2#R4J> ݲ.htz [ 1ZbKlC#*#}D0<.>^1wAR*"HoTMG#ԦLP\m}t>7-g) ɼF{Y@>Ccy@"ª{1`zm0I*B0l8Hx0p"o#݈f؛AG쩈I@42Ą P!d 3#)3Ƈj kd487~B 963ҶQSt0ոjkI`%Nu?^tQq>^!0I!Ƙd #T MSG Urь*Cnr$WmJ,[@Q5 XեHv:HavwLyņ5a`rԄ )+l czb#p4D8Vfy2XhQkK_:wr[aVčԵ\s\;ŤTidwх$G)ر6d DЕG4ݩ*ht2 (ޱ>W=0Qre,k*;ec"r 112Chp^螾zCV.B$7,@.J㰿ɲD|eXȇ#n j m[ij*<.%%)^f'|7|  A0BkB-9wF5!]$u MITбZ6݂ #Vq}hA57Z\<[BUԠk-D൯`$B+aa\Fj#xbKSXt0f Xq5nXYC#X&G}m|aN{0[0\ /2 dD=1x.}-qØ;bPYGD2^u`F#d볞UF%#t%|xN3|4 >0vvDLُc$T}\"]ߌ}BgҐq t9o<ԨO37Bn>ݵEV X+R1Yֽ?s9C 7{Ji)f Ou}в |~&{B%Pb۵Bgi!P x"?"3SS~@ pV 8XfcLNT* WeIBw~R({cfF 6` Oi?U3T}u bpVfhӰB6P~b~0 @a3T@u+;\;v @?Ӱ~A b-+fQV@ p[h|p[,o<ެÁodt6lSM Uf </aip ZF[1f6 ~~s[M,~}/-z$ UӬؠ 9 ;ML D [m{K=O0HlŠ M#4}(vۺtZ`l]ƽ Lq<|M=̥+eL-rҌZ@A 坪K K M{ړ'M, ۲-}[M'wi58:j 5t ږhP[}]Kƛq a<O 9ĺJn+8{f[U. -׽Pب`dVމ2SargY݋<7ٙ,#{\㹠 鏄=.3B)n|cl RUn^,WKU=Mݺ:d]5Yƈ]a}{NZ\8GE('.pt lZ u~~ . fq9c< dv2M2\ >[LI뽾a$\^* rhMjscK~.馷5$WZ#^`~m^VM^Mfe5TL[NA k3na=0" iX\]Up}ª?9eCKZs]+AA[c>m[rgƵL$! GF QN_L~m.8L֔o  ؟jY ?_={!5O }0?2}?r 69.x>?QBr$?4OhQ?[ Qրz{ -KVi! } $(PmG-C$XQVJJ!CyH"E UdRL*"LK>QߺUClhit%ͦzF-ڴziի}`]J 54, D>*Y>٢&ˢ} BE luŌr1K&*$灒$:(iւ>u@@,\u-^YjӲ~m^W$s_}g/XG}p沫 )ydJ7V;T'U 1|>,sE,Ϣ;mjփqĭBjAn ;オꫂl+چů|8j[Sk/tN HLF9%{c`ҧKVuђ.$tsU]G@OC+țl3CeT\V"UJ;tqCZ-** ʷB Z 粦 z9++KcBTۅ"hV%T͐?R*ВvQ1BƦb) ҕ %Ђ(veI}c)rBܶZd4ݬ X.Ufk.(N^/}KS[ief^,IKWHaa%]NĹ8&Q&HLe%ۮ[ e{%sg-^)?fsn:ЗS! U!p] eIJrrY!Jh[ LTYtI.{$ծ%;x*C K9xGFu:Op"$unP  %}F| !2wmn Zo'?HY@>XU^5aF ԻqNxacW,J{KP缃` @1>Jқ\E ؒp۸@% brEĈ[zHD%dCqKE--I&b\@H=IdHJxd6br' MveD/  DzN0EFglKjq4S%$1UWk#fl! AcJwΖP^(HS6snQc|`J|fzMyx!E{U TT/0 y,3e4iѽ™MW=IhʓN\Rp'yVC+#Uӂ&Eg?(~[K>dT=-Bʞ|1IN>bHp~">%+Lr}NgԨ%[ux"!ҘM"ExE etĨ=UQ![𒗵B~*,𷞳nE$ִ-%:u7Hg,mE?A<}{ b|)atT7cHz,Q!k^RgѶO5+=`[nJ0)mW倮JK]A 0wShW8>DwpwL3}Hcddv+_wʇY?4DfȤ.MR9b0΁.TT=!L$倇b%G>!9F됱DU:ejlc+xdT5, >NBR=Mt1  \0U$#Vf)^ SZ+s+:皁SOq9Zخ;rwTDnPpjꭩ)&2|kqq\z%aNഷ{rawFQ+E[P\z#HsE83g:z԰yB1LdesbwΐvCp^)d<6,wATdS )E'Emx!z=ϣmYjU*%w[}|Lk9w9Wߜ?{1Տ Pȷua1#rqDM#[E.j9붒ؽ{;8T^{~fYXaT +JBimh?^ộٕ{-w8纵^UVE\P+2'3 7ȋk<]uݩ[#ʫ}`3|8{P><[9= L 8! [ci{gZs"9;#</ê )@2P '+B t/@u>Q4t APx=I-0 A[j)8=C?G;ĻHOѬ~SksWl +޺B,܈ 2(Ӊ CûNx ̄[CNȄ6t8,9?rC ;70"Dk,Z [+b"9!(\aQ<*KPϨWC]łE5@\yCr` b_Cb|~۶(;DDTkK$@m< J<@?sDǍ҅e8/S ܝ lŁGZ+KH]HÄCP2%=3!U@*JI:k KHp4ZD)ŨII>\s2K\q CJ4\ܝlLcs9bL1gs09)Fn<0+Tkی-\R!$+d/ tǻ2ԫ,JH] 2|nsJdpNL4D,"Ь 4BMd0T)RS"OdGS\Yq OK,sM+sp~Nd>XTN[ thNPN 59;Nswa 3?9MTKl09H3@xSIπRiɈǁHjOI14PE$KRqP(PP mLLB BPdw9M,K;|0]ЈOs2V[хp?D.#N5%u$\<0)ȜR4ȬT.}6/P1!SѓiNcfYM`|I9eQqK0QTQS?  ΂%\E]*D u T u -u TB0eTT$c')w,Uϸ,Umx ?I[A%TԫD}Rɖ8bm U-R'Š: xKQ%UouSo%OqMz+\U`W%-Y^ 0u_MN =YauXTh0 ‘!|c:cb_ڰYb aoR 6dQdX`We3}8b` EA=](eP)b/Z| $0^N5!&09. BVNc8]3A7?V}XgQR#]LL`D6I F^$sH JPа%`1LJ(~ Qf WDRژ߯1оmȆl }we9;faJ*K[ؤ=s_qu ޺=ߣ>(^_2,;ą}@^mCKkȆjٞmڮ9豆9hT|ny`k}޷rkdZhFSE9>#fx증Gl'x^ ZώyG#m{o8e|emgmm$lx ^pgc4Uk@f fއppeEF. q"fq\Xʮl>q0P4S?R@m{]jnj-H?rpnHhFpWgp(w9bR뾶p r<fE߇qgߋ$[غCz=qVVNt1%GvrJOr*gM_p\Xs rS1M3fo7Ynp J/:Ouv0gU_Žu5Ş7^u\Zhx_ evs htDVo jkhJw.w?ywO7 'nwv fWwy+X_Oq\ 8zo]QbY{egxux>笵t Wo7dfg7w  'sy|d*Z󖵖dn.\õbWjlH)kNp^ISg_}$Mu]!P LXzf9z55߇O+Ý"f|ͷ|r YonӧzOso}{$IT[g_oQ]>ݯG(jGJ?Cބg6+8ƒ2l谡BɒƌYq"E"GLV$ʔ*A[r[ɬi>[pYsϠ>}hh4E2mjԒӨ\Fz+ذbVg1LLՎ.Պގͨڎiݾ FA$ORSI 3e(1jL\7ݪxgŝmTlYJ;&j)NV4gӾ\5b؎[TQ'k1]9w'/?r8ѼJ +Rd>f-Rjf P(8E,>KCnjouxUY gqMQrTp3VQvcshuy=XzQSe֙dSfGTj&MxOVTA(ۂiO4`"IUQeNYEeWȡ9+\wݝ%t5ޙu͕qSC 38)F Qd5KYZd()YiLM -fiN]*HEr&w'uZY\EYyTwuΌٕZgBZKY$~ަ 4i_-ij ۖ]n+n{Jhc\gt hM'7bzQui(CZLQS$K.r9[KZ/jHuvNj#ؽ5coe6JQ3M3=^v)~R\*k<;*SጦQZGy3\N/M\46{E#G15i{m$E+2#{ٕm|~6TRqWkem{y km-+tPs+ I( Ʉ"CoTŒVcLucdy!tӻo ~Ǽxpz^)zl@ZDHLr{kL5E-6KK2sQ9*h[+&pQSpT! ZT^ xQ!}rI_#0:JH#dB6N"8#*= gG1+IG'A݆L|n&yPކr-13R9< a"d馉gDQ(|g*B@ -dSZst%YŎ;]rV\9RH3*2 -qɸDUSQiĢZL2Ř(ibԦ^mS?ni^5RKY%~H{StʂUiΔ_mΰxoR|0++2gvy%Sm*[ծ)]-ېZ )XP괫UT \vh8kE"mL jhfilqalw熷hhPM/=c!/yɛ+v6JT-JWy{߲7nAGkWMvs}Lg@᯲rW`]Ѣ ߆$.m [ı%bGf_`k8pOr^FQ.!v 6.pm .tZw[H7jͲqTZq2Sh˙EA N<a6VǨ\z{:G۔0wW&>lSEsRT|7rJ1:iި`l jWzԽYbв.B&^vT m(RFV#ѠhoWP{-0q;S9kCro6ъYݶ#4(~BY6WDUrqBڽ.o#.<͸AQy(/^͐s(h9ЗMn3N/7!{SHӚ7ks^ֿ.3Q<7ɮ_yig;n˽v0v;g;/?<3$3ߧ<ܒg|C/ѓ?=Sճ=c/Ӿ=s=/?>3>/Sֿ>s>/??ӯ?/ӿ?(Dڞ & 6 F~"XDN] !l~`wB! `t ` !,l| H*\ȐÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8s\ϟ@ Jѣ!]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷p;^K.͹vuw߿!SL+J <}#CVٲ 60>͗Jdɔ;Z]P}3 iXlvpS ~m &i \^IoT Ze6ׯ_,lgҠnZ}2:szLJء$M 3,z8H p6~ΔȄcI`@ux@ـ$Bw̋$܊M :͈5>̏"1b >93`>5iF]L3 :Bߗ9])S3dH.R5sy96'Jl5x~ >w#'r|%+2IVq)-l Z f#͝3T%2T6L,ʠl(SA'7>@VhЮ|24sB&LajčE¦ٲ9%kPUS @ƥ>@vkmB~1˔Ϲ1iYf淟RiڲD q#1]j9$tGy^6jrG#A#e>niOkDٜACۮ 9A##3'CR5-j'7[F:8D 쮧amvх⽈Q2Qu8)HQJ qFA~pqI ]s0 32iLc,5t"TDod/"8;mm$ @}cOT„'EX(.SUkl]4px0FB62p) M ej@&II< Mmj xZ>OF>(茌dkGJVBfk"RmҖƢ*2 G>CzHXmȬ1 uԢ @.ʘS; dc!2D!C+rXMCgaPCqX61 =VH@Tm3X:`题 g.8q ZNpK\Ȉ+fL:.a ,JHEH* $e>XdzdJ6΋`SLzKv ʁlr~ $]х=,+z[@hc}F*\ӎ !MY{;:.{m9[gk&fKrK/|{}җ}^H`6hmI">" hs'cSAy q vo QRLV9$t`W [&lԦ z\fuXq6HdC }@yH$qΰIQs4212*xod~ nZQ 28S#PK3F!{&UcgC[x~KGkCl!wqw۵>!\& `Gd&{o&2bX{5V1dƌ>'>dKzƅWэz'aMQpǎ8툅g Vԗw§ZkP1 8 X()7xn?I!{Iqf>y!>Dߕ iAuѕ ӟ'2. 0o߸8 2=6 Q`  rQ!  Gh* Ii2D{aǢo gpaB KjgYH n^M  7GF8SXQY]Gijm)hZI k@ q`p{n&zKT؝hŠ ɑLw R *੩ڮ`TܳKea { O*9Fj F֚ICY A  HFx8Z nZ/I:E 'а\ԣ0}µJ)Jƫ HPRFf3Z"Vcتg"at![ a&s.2KBc@PAŹ\J @ʄB  Iv8LCizg)˯р1k ȵ*AǰytkZ2Ek<̕W9Ƹ dIm`2l x{ 7k2U2ݨ3h4cF5yۦBʌ l8po>ʋ;ۑP Vk!Zh+S2 ;2:+2h Z; dXV4SY Za!0te ,F#S IW,Z*w$4j1'ki)2c& ,|芷Y$3,[$a}cuც $odl&\ YV?aֺc! elTf.kRn3Uty-9e $Kylz qۢ zdkML+Ƙ:y rl&޼=< a@K19 ̦l`Ͻ<h[#ř@ m}d;q`Мhl2bS 2|y/L~ -ͩI|`0v~>og {j-ѰikdhYIIр "۱ы sjhgsǺ-ҞZ@TJ68E 0cupoȕԎYX +\٨%$[໶n z:תߣjרl* K0Ͻݴ)ddRoi(ckШ)>}.qQd~1ېa:xK(-ADFH+,E-uN ,dI q a]g$ Y 殍ޑ `~j۴9c9zz |qK&v !D199޷]4)qŝn~/e=Γv֏ޫ"î(+k=GK^O ͻQnQ彣hcch W{jSxKةd莖PR*,균:λq>=?dzȹHIK湯#:cߝ 9'dJĎg?eJ,/p,nuOAX;y/?, i(qĊ܉ Oƽ^|yf}F|y$]&O }Rͥ6  Hރ$m9 j ʠuװNXq-񕴉ʫ(1B[,vT4PU(Ra%T\g˚ hc6TEp1Huj[HJsa.ꪅudדcN$&>K^ϝIwqu$IنfvowN,Cšs#V#O!&JTBFy"iH9ҟ$Ǣk)^08O#l C-|ay LWF OR@e4|T!ĉkv8S!LUrkC#T@y*M4CQxN>FҨeQ<$)5r,BT&l#T':Ѵo7uSKlM9'|^B_s~_^R"oɉDbfŎ(_ 04CU"v$x[81ul;'{H>ofx>L<]lVu$zՋb{0wAO+x?=k,#n>1:u_qnhhze|Wdv^1$$-ĦcF= ]F)_|DH5v28:OB#FI=Ջ&KP6|  } C?3/ɳ>x ..;8Ћ\Zcɢj6`?) tCi>?1T(@>?Y}Spݳ"B|C+CX+ ?,B -j Q*N`CR JAItC[KD :C;)A-7**ū Ì@D-PӹgKB[EˉMȥ;8E< v3TC "%ޫF662E[$R<^`D:\4f>?A272b*vYE،Rޥb'b0sOEX`1͝C5,</^c= cOw} (dDN0^bE6~dؽ/$.~ Gd5YMc:deRL.e;@cTbVNHeZe[Fe5)e_P\fFiE^eKRڇafvbFXv<QVg8UPfo`ff9l6ohoFedml`q>gxg8 kgy_|fup^~g.h[Nh^hnh~hh퉞hhhhhv Pii.i>iNi[>BnDfiiiVʫiߛif`ijj.j>jNj^jnj~jjjjjjjjjkk.k>kNk^knk~kkkkkkkkkll.l>lNl^lnl~lȎlɞlʮl˾lll>mm.m>mVh^mh !,l~ H*\Ç#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sꄧϟ@ft(ѣHӧP;JիXjʵׯ`Gj KٳhӪl۷iKԺxVk0޿k=79 #^̘eL/Iܸmf&/ϗ<ޗ4f qҫMw+7kF8vnZwUiݻY3'8=a34VΡ j%݁4}-@ zqMXڰ؝Id t.DAZP J V!S$J& IѱHх-[s$eC4b( $@ɟ>dNJN.ta/Y%f>)PZ#i7"I$ TfߠlD)tr 3 2rqyQDʈa9>2IIJd'Au 8#k8 )I-#)~*訥4ݪ4*;jіe+?Ϩ&" {6wn*b줾I㈳cH{vנsr2r~Kt.L5Ы47JЖ+hmEL]zO aW # kA{G I̠8\o@yCUL rm.9tb\GrM#Xc;seH@<h7%Mw#IJNA2̖^Il(/$?P27@F8qJ2c"SvZd:x`F[EuaNv4Ŕ`~3(7JY2 "f6C͎b, 5P:D31u|#A|R`Cأɍp\P {gBxe6:*hĦP1@K U¢ 12bУ%5BҶP8\É nkT|hNTw}â-Qg 1* / p`+BȮ>OKF;vH3 ohMZ;*kjlmAYdv:*Q<핝QM!%5@6QT]J+lѻ:Q54K^r m1}L5'ja;AmlVb̖cm59`t2!XKʷ2÷4Z:fOU3K&]AQk!&'ec:ue f}E C݇74d}HF%VŦ_(b-mR>$)ou+#n* [l-$Xb,igQ (AP=_c!G;QCfQW ][>ʁ_2wi2䚌dT hi1a kmv_㜡bM3LT&Z)zʻ6ƈNt_7hVֲc#w喦uiMP5ZYkX&(вx/fc=CF+[) L gb˹"Q1B}%6[ڄ'BLcjl>(;`+-#ݖ3/H?lE.j"I^Ho |rQױ^ h-([ >Rųnzq:v|ONW}*, "ܦGyA x_vw's2|}W|4֚=ylu dXcۨHoj,I_:ӛnCc9"m` [Ow*wi4!y8Dqs==wIY?5|d-4H8d~Y/A":bȚ^@>Jeǀ{WP+gt{?IF{E {2` | W1aW'Ԑ{{ ӀOB}K$@%~7Ck'Q ggk<^&@WB}Qǰ 5'GgeP uW('W%|dr  ^fFbXG 'grz8wQ` P% 8|0'55s@*E(W7Qs6_AFN@ ;Mې qo oj_ Ġ p 0臃2 p ycNЇq~DPygʨTfS((~j3^$6e27긎iMSA B( A&ר8gxt#u_u aHt ׁц:x pɈtR1PDE I֘ElX&wԸsQkU6i/54p}d Sv{XȀ!t[ c0k(4vPiHgD[y=6h|6R9fNv2vEPkP  ՗~ UtC`Sxd2 _H~dR yH'؀5V`Ȱeix^lX`w_rYiw)NctRS6|X ȠTK BM9k6(,I  6 M9[R ` p~\!oWvU )gw 'c6f b{ve}׃$xIs*3Ո0Qk΀lc+y6D7$W>Ysw)|S)Y 60Ez9(Puy)yPQ)\ӐqT 짛qj`za#heZ' *@H8  yWR1Նl eœ0"ɏgX I&V:N8 X$W Duxʠn(ZsAʐ yzʧG'ՌU(aP'dB k Ax52@0 ǩ鉿[*됨!t :(a Xsa5 *\HZ uZ{WnV ?jX c im2H oXʧyYkI&-8b s` 11R*:ZpZgaa?:{eڰ:($TW']Zsf ۱ {W8(ވhtڲ̠& )l4 (6[)8gdZdzʢ'KX?J+`  ʺGyR6%h ZD yյ7xpWi ;U Z-KTw+K|j~+9^x'2z&kኢ?ǀ z@|{["J` 뀳{ ah F]Q;alzb UXwK+l˃|bG+U{z:kA˶XB|T;kPM @ežY r ̻/z½6ag8h)Ӱ bڼL.|xۨr"['Ƌ()r B\+yzǣiŨ {ܒ'QN5Kv{B`ƭ^oW,.ʬ8۲ l5{< džhhu ;Tc p.ubzɠL<쩦R {{ <\ \hlơZ UUT,1,۬,9<>̱l)*7-7 k{ LH;@|8 {Z{GB!VˤgЩ<=(NHz%źrmd{* afnf\W{+='7u˯э3])L \&ñ@=* Ь)k- <͹V)R=*\գ\R \) md~(=M-p_Խea-P.Ol- ytp=: h~ DgKdkvjrdR܌Ӯ⅞׿ꣲ Ů.Hـ庞t}w޵ԮA v,~EN]w{7mм|r5^@Ž׵uKP Z~t 兊!fNNi|>x _]7t_t+~-/\v~߃*-FA+=^ڧO^.NQS7j"*p11AsϴJ fyu[qPiW,_bl8=>O vu)힋㵝Gʺ0TI !ցjVdZ?q}-km~8Ǒ~ 6i EOC V-ZB֫!2Ը1ToeƁd @-'V=L>y`ƔREZu%Uǒ%SlK_BUKٳ$SUVÍUx]yGSgN 4`!V Ըm=Jmɔ/C 3LXpV&V R̘>lإƾz jYԶd(Uѭ;z}oa 7>_luDR⇝\3hJ %4X5he]yP"n)q$*I$yŕccn %J.-:<|CW;NiqLJ,G͎j,c#dS"5Lk>l-$LKZ(6)*6\_5[r[Nj>`L[':Bi$ ..r%jH#=+˖$'[njPz>0_E"?0w*m DO2estW:yNIȑhaSD<)kԬQeΑNW7"֛Dh!\:]~vT.Q != VqzAp"/^*sٛƕY9LZsRJҭZ,kYrPiaIK84Z՚z8cG}drQ'D?jO8H:'hNO}{]yu %e):7wQD<1'c(M B^Ŧ2UWj9L}| QXfO8hOЅEs6gE#cU!]VtUS18˃1ex`V`g%c*d7`eCwQTsVb;}-!TE$1ICuJKcL4k~Ta-hO'¼&ǃV8RL&,*щLt@@Ũ,2q# Nق:Fg7D1YD  BKi0e dQc=FS DB nUm?`X-9fLxDz땯LZq\($!C{n49-@㭨(X}BIʧODȎY;E&IB%AX+ X_qcQ( I%Tn^H(>yc&iMyJjQ*U$>Vkz.+" VNR-HBFN.Q^R.ЌGQEX1O drLt\C {=8RqV"Tq];e6eJНN&*ֹYvDʈz{|2iً#1Z)·=Xљ ,Ca'mԇpCU#-- RxIds{5tPS&qWl3Vv˜e:׵9};_t+*ؗS!Qzd i'AΦ֟U["xٶxtj&lх]x&h`Q6ә U2R=捯}GKB]8E +1j bYMQ20cLdPy)>J>%kj)/) Xo}\m Z 8T$c0okmgd!ngZ~ʆAͽT!V^hrH׵'" es{!䄚F7LV〧wGx,p9'OTk*sVoC&-j-^жJQɳ?ڸ1}PG%]p{܏ḮFk0򧉼"PWv Ti9XR)j:CW,ۋLv:~|Ȝ蜃gL,eM4scJd ;l~ǘ>j*֖#,?IUw ] ,gy7%5 r)3w8O30v Bx)tn$K_eqKrcQ}|iRT~ 7-5c^i:i}dD* y0ժ_}Tף`./mi.< aJ-9>»ʈ[)Z˟l

>駥QrZ jĻHCp5 uT` %A9j:; 7y.=x{(qLo(ËlL5i?ȇu@UUD:a%{BXmJ89ВE{D2v\Z̐HTNL)YMN,N#$7蚟.9T|(t-{{J4`LLqDh{<v4K xyоNP2SM/L40O5˺;̢D@̊QOr|{PqƨyPu8M> xS;]t8!P*ܗ< pĬг( >e7x#*} T(`.R"X(̛ÍT =.9SN'k؇⋸H3\2(/j&K']KA qm1〉LaYJ`YWŐϥU\-JWV^ЃV #(9=&8`VԌcJZy8q JVZhXZ؇3reQ@4W@t qʈ[Xթ֍x gj;/B}h XxX@GVցXML=p%u}7YXmeښ1<̕ רشIkSٛ=،ة߬] MWÛj$}8e \hC=#UHOT㠕Ա3XYUܜ1YZm}1lľuҭ `=tY[pV(Ȩ4۴EVYZַ%ݩE݁& Y]dS8ݜk5M+فpPȰuY%U߽8%[<5}@[قT:uXZZظ )jNX _[ՌՖ^$[?] .]u^% ai!^0FZ@n}[&V@\6@`Z8 a=EUW2FiX<-}aaaNčZ=c!&bͲ~[(ۻU&[-ढ़UDMDI_NaD@,G% Rbc3ʎ5^XeZ&!nb'&`Έ'^D>UݻI&sLf8%M4WXZˈBu:^Ə*(z:Zd`n%X`'d^ sb^dK &6 je4G+'o'噲4UvaH;sf/W~RI|;{LO\0g}@~nbBPb8悶Yh`@1+gncF7SdPnnו(iU^u7pߒ&( wexNy.f;dD&^l&jgnp1+6lr%$j~꿕jixc^m ͷlnaFk ;X۾K/ < n>GjiAfc>]Hb CJqln~݈͖jc)ﱆ4BMoBmo_Έae|͚o2oy9Z?.۟F~ڠmXfΐ鎮gL~W%$PL.cm_mR^UOO}Po=R\q)qZ)9Z *dtApmFfDVnterq8F1ip+Q r6]4Tm?snsT 8 ̽;K Jm`FAEoGorI( tfodd@`jΐWNllvS`sTOBUuuu cOP#֟%tcfCWtagh=hstWWlp1L,g~fr('ERvnG wqAȸnwuu;M-v!Ugg5pyϗoE;b&/6m[HE4 z+>^XyZeIw OWd^o+CUGw ez؊PG$CAy|{{|z6X]i?s[B D_^_ +fols̯f؊|d|psX@Q3ҷd 3r%֧M /zPVݗ.b+KpdnOj|,}(iAȬ ĈQX1ƌ7rxLZ"kʔ*WlRI0] u}#keKϠB)KfPJ:)ҨRRj)B37N %fºoa֭\ ,+vX YUuxƼ"Ktipށ)wę"I@rA[P* 5г,YK.ةpFKifFUty:jylf8r'Q&oƲ#jŅ\Xb̈Fd<V.z<-YAi!\0L zn>\ v5{{_'ՀgCP ŕQ_b%LQgXSa->$-$5^PwThhY}XUIe9)ZhpsV TNVGDfe׎Tad߆E D!4QՒ,#D08h76U{%)iAtZ9P ۓ>@@RއLQϥuYr] c9}(M$"NIPEԝV:L{ZpR *S~4A`z,Dftdi9ݒL:ya*Su6҇,B9䯹Ί(REx8n%j1D:(+WAߗ)U9,jeJuS@ ^A#{[$ h+,UTLg3$]0i D O 'e )1IZYKrЂ:+o>JTr4J\^yXv"mSbGG4DMGwcV8,/ a5ʀ[J;c7]"@dMPڲxϋ>5FiL8j?ɵgqhƂ Fͻ%均ߤ.;BrU;Zk 9D畐G%-Ϸa9M"vVѩ{+Ad0cn0P*A _AL ;)Nꇰ8D# nJ `4Q<4VS  ZU*ζJ%B2HRp]Ӑ>ʵGKwğ=esKXFD"؆@JG|%p>kʒ=mX//E-H¶UaW`eBYܭm+;pPI&2}.tNehtݟZw .x+񒷼=/zӫ}/|+ҷ/~g/,>03xm0#, S03 s0C,&>1S.~1c,Ӹ61s>1,!F>2%3N~2,)SV2-s^2,1f>3e"Y%țی"q=7AAh:U?!,Jy H*\ȰÇ#JHq6m3jȱǏ CIŒ(S\ɲ˗$/bI͛8s(sϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ'^УKNͮkwi{fgËܬ|BUMgx{O3xO?c (ݧ~MJ4 x (!*q AZeAm(&C X^MH I~Lݼ߅ ba G%ckiBOոύKeãXB(Y3p4dA$`% S ek_GlhOF9N!Enb9z}("14bK-B@:.hAxdI݌a3 ҥ>HSgẐm:d"vҘ}RAYХ噇bKSL kAs>ߴy hP䪟H+C`^ m[z+{5B#C䌾 3 28Ie+jyx@K A$"Δn  8N(3iɌ@3;Q6 Y)@鐒3b$@\ܐ5(M8x;42JX|PFMݥ1[-AuA_Q!MqDI#G?ޤ K#TDxQ+~% ^R*qۊF.i!1jF(KC`(:C͸.;0-DB/!~= bjv$4?FJꑎi7HD%_cks;q#)=O H%oYL2ޙ !Vr7Fg@#" -lIr3 +ɍg* >3a SĀf]3ȎX%x@F0oXy p!;2N_ؗ3 %dSIH5s $s{D0Iȳ$ Ǽk,h1dH3q5`0%F9"ĕaAXGZ {Q BN!6h(팑T!&g l4`> nr,hMto:UXF8HD3X/PS!̛I5ɷʄœ 9-& ȣ86QSTHE@\>EN8lr/Y I8 ҚW=l;:ڤKe3V*jS ihfu+o֋ B rP8sdb:T*֋Х) /DWD Gv`VHfKi盭b<̯mqϵխi[:R,(Pic][m8TUϦX)Bo]2tqFٸls [ĸ/~kyK֒(I> VU-Yy8 R7fc)k̬:-4ĆT]/>-fExe><7 lڳphSZ|eˁ+{Yp S< >A(kH <DZ$`fw^d%M)}`fgvCEj2yE☖ jF2n{֞X %[.Nf]rkTGMjS:թYY$^v8VDrwdyH]]&#T&:эnH0Gת kVua?Y,fXn+v^cN-n2.Qcu7-? y/1H/$jR}<;y[I˜.xgv\˶+*V{6\, Y Xa 6W?b9=  zwsG}EjwGxH_ds)%ihD 7$wyCyjkpup7Sd"pa7u@u'O #X_fG%(rC6V0GWn$xZ pn *NZ:wsK&f7jч8<7 a1~D Gk$zC8zs@ xh 0 E qad amuuWhP(QknbUm=d8U-gXŨ/k+Ȁ s snGvXxiiO>Gy68 Pr&` HtK(Z F+ m^v uvՐ^g,T4@ ak Ple !S0k  0 $9DWu/ yMF_XO#Xd2vZqiq 0eD BG `޶oD1[䨔G#fibX^@ ceI X ʰ/)zp:24nˀl vZǰ q)p 69f>wp;18޶ Ew {XvIpm`zՐٚQ~P 0 pAn𔐃rGqDVc/y IB&x9Cw!7dyp B7^)%"[}#IЊ2 Gj%G7A:Yb]߆eY 0+$K 7p\ʰ H Jks/ந:5`ty - ~PJǫ)jէ70r 7d"oJAԐj`[t elذd4;Ddu[ ޙ^`9[r{ 帘!m*3E |p* J  !r*GZu8PqsV pY qJ7 Y&MJ @ ۲ދZ6XGj߆S9 uS9h> 9B7 P 9 fq{Q {'WjPk8ǫ$ ކ[ ѐ+h-9& ໚2iunU npGO񛹦[{ ؾ@@| Z̷JVq<]2kmӠ |Ǻa +!̧ R78 ×D&|[ aMP<`ƥ|9+ 0 pJtm-}\PL; =Lo; k3\7t: G ޒMt]p=1X[ȽlƦk)cL+D ֝ب7XB 8~=+G) Ю];RKTމ1Y΃݌-a^m.(ոŻ5^@٭0>h|]Ρ !Oк|Y|YO-ʣ௞jꠉ  +y|>]U[05 \.;] | omqSt^ \C2?p- lMs ?\in=> eۗ\T~~:O] ̻;9Sy,\ !j Q.BHU>>Y.g yl=.=~ ^c蜚 蹮Yq!/_d{֟_׾C! 0ޠ{&hj҃ۨm;U v^> X91 r;Oَ p3~PԚǰzx ׍c/ sR#! = W`Ad*vРh *Xpھi5^G3V1#2'nԸ dž* VRr_hyVA[>s(1TTuLfA]QuPR׭YN'/}Юe{94h '[Z%Y_&\m^z{p֊Omb}U:H ʬUZcɆTզhN2W`uLYj9[ƩqzI>]/Iٵoxqŏz +Py&[yMNäǪ[N\eTXO m7|+[+rkNZ{J9Nye:IH3QLP[|I8+h=n d1 )n]djI*0$"4(H+њrZ\F*KzJħ\T# H5լ3Qه=p‰'[ک.;*J)h6rҡ(a٭7*d K,rRWp(;:4I.MbiYu;/<FIX@y**IϐJHtj%*Tٲˊԑ!i RƤ}NY Um[GVZҧz5}FuT%>s OB'ʯH}TYV$@ Vժn:8R&]܉9wtd ^U:f^~͎D٥u̠yTG*-abc,UZyYhY(5qq𧑆My7 %qV!^:j*MP uIec ,5<-:^E 簛%34 58&"U(5Y4 HтZ/0]؏3j&-"; xŃm9sH v!*HѧJp K!RQ}d"| /$OhAb pAtߒ)a5*CJĕi"d"w),DA2E+Q "#~(ǃp1D!t|D1$t]8$g 䧫3JDWI#+:-Jc\Ȧ;ir"²PmҜ8Ŋ0MPƨqeqq)>K,!¬ֳȞ{d $2RL%)(ҘĖT<@<>ȱᦤaA6 m>Q}#D%[A jГH+#}tRVd\SB4Q%̄)DȨ^i5a%-mfE`KK'IMeiwtDqrC}g< B̾ۘ=j&<†5Ԛviy bWb7XzL@hf=z "ē^RHI TL5jb#4q#n-8!١^f͛Y~֩*FkC3|G]r,F<:TYӲqc0!jRS{粅M''\TDRv[x#x 7`qc7qq|}48%*z[$8E o;1LLFj,2 c; HCˈC@wY,^K2NzU /M{^-h >ۗ@>k #Cԡ)mz4ϨGL,U-o,[Zl(eHM hbPYG 4~6y48H/Z6ȓVi}dԌ4[SӐMwa@RarQ]g]*1XZwkm8{yl}sjw,hhGfYpFK[OpOcG*. R =Nr73ءCŵ/o:֎Wvpi/:Rg^7!9iB-(3*W|2'lәyQ YOsU*ӒqW2\_9꓏zԉL!u9VYBe(WOy|rS !VҊ-LjИ5u<;z 5s;f^qx#rtgyn gbyCO(5XWef4ܖ1Fmp[-hV_B k)dC'W+XpYȒȐ5c ӎuH3 rÌ{@kxғ}6ɋjˏ/p{?(@㨎ԔoS qxB WA}`ŐBHۇW(ﻈ=m:=pERY+VF[TP]D7t!Cc8 e GjhFL}jTHl| ƂDgT&8"Gr%y\ u̎]2>ŮC,X,~G%,PD`8yƒ|7ܵ[y1 @ *$,sR 5}15q5Qp<z0m9͒U[!ں"̓@R抒!E@:+yN|>N҂RT/¢ a :Q%&wa2<=!Aâl(?kF?i9l HFAL<@$RPP鼢4U/(SM.EnNHI [ MA)̛Ux %*?!stJV"H$sكԊxVxL5jVj44} XN10SoNWq-I b&Ͳ:jHxi^>^}fCbeXD6f|jGV+hYRXG^/Ұ"LVDmlK.pMo6.B9 yckclD"b> I ?cee(c^LUjfhFƢh ˾l.Hd(P q8mMi= !aLܮؾ>D6n(Fc=6eX䀐뎬h&R攒6KoarN]){A| 6G{-ӟD`oR%*>.𵑬ijk滎lqml8S ٖ6Ԝmy\Q!d=s7RXlȦd r UmpN$w 'rliV *?tFod)oӸ4bl^ChW*Fnl6tND!s.V_R7U6@7%XߟhUU)Gt&qPC'V^[1pbƍX-@HvɈnfĺhhn Nip1{u %c\̼H^r_nj,^rbݮkcOmXD~veDl NǢBr=qスSĈoXQY/mhx!\tNyHOc_:[q+F}h6WM7W NVmx1g 3z6z@qnLHն_뼐wG[ F|Ƀ\oywOu%Ux$GKzt/(/xRϏdHC{>GgyeC+bPRp- o>xOzj{cXuZx|W dI|%1Fn+ej2}mz |?U vffC11ױ7ou}5=ʶۺ_)Ro~8>t05)v~ܦ2T/"p6B.GH#< Z%e4>.%/ Ž80K&s04(ĂN~K92Ka$BR-5a ŒRDWdXrXr6,=q{Ec{Gq] )Drr,"-eG2\FDHLc>X(0cQUB$9)Yb)gr#;inU!e<:2E+ b+)mֈF,Qft6iL03~0#, S03 s0C,E&>14.~1'SwY1KǃT},!ٿ-2dyN~2(. !,Jw! H*\ȰÇ#JHQ 7n3jȱǏ CIrŒ(S\ɲ˗"/bI͛8sꔩϟ@ܶmB*]ʴ)DH괪իXk5ׯ`7 KٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼf/OϿ^N& 7 .LEFz3=hr1MvaI8c3r+;3Oz4A#C;:t&dLA ֊@ 9b;4\d̐ȔuY3aYM\rLgo%An^i҅8Zg?"4*L3v$&t9hM;NNA hnfVu&G*ԧOJ;|ӣQjJfL4$1T$Nܚ2 `Bm,B02KWYE,a8CԒYu.G.LjV)6ɒd!IiՐ TAvRқ6)LnʹqD؋Qa9STk/7t ^s\3C-{DoRL)QHKzU,W/>WoO/qĒr4DӆUFŤаO2`zsBS6x?Ա'gD ]vJg(˘ !ΌȆ-) ɕORl͐YPzQ]"3(øBrv^%.1[S }.IS*̛R?* =nmoZs@)25 1>tC7T eP!Ëg%sV3P [NפwN ЗcP c2׌$ ) 57.eyCU, ndc*TVXlN<"#(1;2eT[U'A L2rH -#g hA$|J 8AN ҝ ŅX Z88.%D:] ne,cBRYFb03*W>`CZ0ȡR7mqHdDM!Q\$#qFV|A)E\&k- E(VJ0FSiVK2Cf6 k{IPL!9eZTM$ECD|6M(FӃ o",H҅"1|P72~qO{2<~ȊԀqAXY2qoR"xw!)1XI ]4e>ŧLgǨCne0C/u3 Έ/Q}mƕ:Pֈvy5[ꈍho }IRF - v)/=i # TJnfG j#Afp9)Й&ԣ] ѣG=(- H 8` A0ŢKw|Cѥ? WXYK vמfY^g4hJ .JaE #w&BI=* !:Z@@fXv#m q![.X%Ѩ *dתzy5b ϸi&@ z0qIZyBᬩ P k#:ta.^'J}٪+{(Zzf:c  {-Pd%koΒ+Lwz] ^^]皳b0] [?MPuۚ!$qOZp fKw۵a 1k .wmնʡEM;][Uᷙk~[| |*c Ѻ|N DqțʛʊU{W)KK;ەf 1۵W.a+1]Yld17u];[׉)qqr1ѐ>(L lN1!"u8@C+\QvI<;dzZqX|l@}ȸ1'scl` k)ƅm+i:z,q\ǵdh|\z/\lпMa.i];(G|K{ !v{1!ᾡLP! bLш ڼk,ee!]_P Q 6Q "ܨҚolLqZdIϻg)  cip@0LtZ~5LLf(}0Y< a0 P NIN϶Āͽ;׻k\ԪkMmM)`Yl aghTp0Q_5#Js}ۚ錜pX=m2ߨgQ9A@=|y=xh B /m# Yk@ $3 -[l8 pBΐxɗGzQ /N ؖ *<|۪g~m~ιޠJ%Al` N ! .5g e!îԐY}c S/ ncfc;~p ~Qn,wɮc^ԭHwON^,n  @ͬ _.~ 4L٥ J?[> /nQ @O/lL/% mC,%1%St 79O yV@?/ K tGM*$YNy ;7,ĩ)y^4ydcXݞl>//t||bIc.ApP鉟$%[/sv Ֆ_u 3I-ӧ<2ZG2[t5ZP*Wir1CpMl kXTۗ8 i҄p`5*/i`+œ1Ǥe͢UP.ŷO'k؂/oLz b@Lto}[hjkg]U۰A)c^1O}q_ /m DoNL (=?"̚Ild R9f1y( 4-"!td'z !AsLAFppU4OR Mx>cHF\Cq$r%c-&ƈO0y)(d&t%*9*N,jP<9@3&䛝:1(ғlqFWu> iE`95 u~hG4RHkTUA#I)QPh2JQ#T=j.%PhjGʨq XI/R$#ߣUzF (vsXMԁD|`Y/Gzo0ZIԴzFj{5FG:O]`iQ ё-B"[EY0c[ąhZ[TYk;BDm+rԷrV#nRcR pvPȰ甯Y-V"$UH| nd?jYt8 l$ZH;YiqQZP{w EIFξbBKޅî=*8[>iލh wajVs8po!J_HljH7C!]081EJ`XkΚiT0G<3EE(Bل/Qle\;t.C槤MKC177ؔ Y[_,|Cի&ƚ3|H_8*v4f:N6Ɗ{|,m >$VrTFWOANHpG䧽Hog -tٕd Rሸ$ǖ9H2W)䈣vG" d$6\Yhv%ҳKsxNFc4qMi *Oݻ@Qfu 2{3û0>+# @b !+9t@ Z[$+; ܈A2.⚎/ ?y?؀AE53AȭMӷb,1 (!2.0#Ê7P@EiA Ա7g0ԈܓB3$;;{;<@3#4ML鲍P3"-t#9} CD(a| Aa~34Sn4LqJN; e#_# !萎!͇ C1*H<&4#[Ma QP5D|NլD ca *M3f6ge$O9}%'sOf"v)mf8-ɨc5v)BR4Dw3铗DcJgZƌ*H*: F3UӥVu*D药 ʠ@W9LE(M^>hsajO쩤>z'┪)KtJN#N˒^p<~,;`8a:֧$ a03pTձC JPL,2\<(e9P3 7οsrP)E̊ί"c3GO4D*emA$oBBВ&1heZD6IRO7r[Bkvn,2ʀ4E eha4'O1A~OE-Il><4Mlt.^,1;޴2Sc $C]÷:]Ol{>WoG,L :_RD=DūIODHrE ! >I"H  ĉ$M{D4c yg"ↆ`Fhu.!aJj$[#BhO SP7Ι ##C:&E!($U(Tr%$ 6ݙhB"cF0d~@c)iYdRJd%#I%0[L!Or 1NX2T 8ÁĠY>ȔJ;FMcNXǜPDOdD %G1 j`4݆5DkI1հ6P9Q!eC^AӔ^9 E Ԝх.m ͈Buw1qX"$mh HHB/Y$݆<,k03#*H5fV}c8Z)X 8E+V )"@Ƞ1 .sbbQljNH1խ#H%DZo95Q #SBYF qFg[;! (ky,j`+ FWjԧ!C_P Hc21u" )-j8d*TQZ(DPK^u{VD-ZGqhYo"z1]%H0\ji 'P>vl6z0q>f\xBX@^f0ʅTjyxLJ`IlbcUM9ƀߤnͤ- }TcK"ܷʑ2B#O谯ౄ6/DY1rĪ* JU4}@oABLdQ>֑4R! DoI}v>b ZI`~4+ 93/Bӈt!F{&-*LYڼ&!}@ +Jk*Y"F3vKH֕5d_Om6@Tl}\x]e ¸HA.d(1laC.kTY5j3ݷ{!]2\r UwmF+GZ >i^fP .ӡUP|'NH>ζj-X"dؠ.[_vnܸՐS3`C6|7h֨7(++1} 4d}S W뮒V B@F,oڜ& 4 ;ae|g%DӰ@a!C2! 9 . \jq  flʎh*Ir^ 6j9B lڍ2䥏G @Je*hEA Ko畺 \ju} V w 3ȍ Jtz j(!NRJ*Hdɪg" 84C崨Ө a/#P @ z{Ib' ǥ1!wɩ!e v,g@9Bzj)ëvZp,)f J*>EԚ$԰" ${ߚ1![lcYʲY,G2&y&Vhr2$Hr u2B"- Zaa!ۭ'jj';\:#!566FIdf>gX*!q3hoNuXs*R*xi1UH[ @b 7E \okjk. kDET cQ}#Q˹Q!L~9u{@pcVKJZh k_xG.cl˶&{+X/0! .[$5\<+*)uY`;) V,JXٲk vü#klY(<zFkoM|fKO;DG01&:+ )ݪ>oKmEEl*! l ~ϫX"+X\p*^<Ț€8IuSo{qܲYPxl0t_\ȁ rk(LmBɰ BXµ>(M?M͌xRTOOCA'`?Ϊܥc(WN*%1?1 KHl`Cln7ۉaN)qΎC@1hvAjvyM*䯃r$;ԬV`@!'/ $O7N{ qW xdH Tr_K1]l(s-9 挦q㶄 + D>D"݇j`5֠NCf+O<jvԵ.D`É)^W>u1$.Ɏ&O9m;2&͗2g:S0܈rP&{a}yA*[֪*絖]2 Ve8Wo*mu@zk!f-;q ϥX -_.y@يL8pc yR@2*>po;+17&,c;绁pî ODO d"I:h=rѧ Ҍy00 ZR!`O%}aHAek)$𡪬Nu,L ʬY1k ]DPTqOԊ'&3k4Lyoo"Sˉp#dz40TP̧-K1bu"nQ'iͽΡ::ѧ[HC]G+/PbeB!DeJF=#H?$TҴTJkh}ʕJP)Ր u^F̬y W&n}H\qEc6ӧ_ <]hņ j*0g}Ȗ *9j%yG!]\R7ZS^̎l!1y ΢f⍹Œu#y!Xhrav 6rXcuc5LYKFOYjZsAbuȧrօsjfifɹ!Hg]XbKR kwz!NYb'ud0:&ҷLh󞧐{dpmCǸΘP*A吟+saG?+P>4C$aK*zN*Jz+l,u# [&Ņ#:r2y)#a x=DeHy!xd"xGC@!G L5,(f : WTO#TƅPzBԑ8Α\ {:D}*R"8Cr7KB- tG0c]C:4H-R%Iₛt͉R7J*S)B8:щLR)$=ɐ|Xm+tH>c"e^P0;.]1#m:kV ?0z!BiRz0 3FŔ"<dt$Hy!*"ΙDѳhآV!hC jzCGD'0w$" .ꓯf,()moh>@ > -S? PhĿĐ#Ak0C@8@0C><ӳfc[1߉ 6Ypp#$D(c(<$۱<̣  /4B0; BB ; A8\B(;xB#Sm?GBZ;s=A?3 qkK:#\QjC#kCJC+Dc8Bt/Cd6[F0:8Jl:L=Eq)DE;Kʼn\ 6i3 'ZE@ECƨs(P zQQFH\l挏[IYlCĄEAbM؛{<˙*ϊЅ EL}XO\$= \ P=ǐzRȰUP8m5P&U2׃υQh^$ `MQQU=[[ЊQ2ћSc23)QB%Ҵ2RpMSSr4}H܊Ḿ)%*hQk322J-ZLQ#S:/1 i:Wԣ_(_N݉UNށ] ]V^`fPJIZt-tPa ]-:އ(LhP&RVU]K`r W^amsb5bUs[hᦃbՁro(ca Tc*>>=ݶOUW$iM4n:}ZZJt2.䘚"/FdGn%ɕ8FWF~dD&dM]cX0dR6<-e]PFeVFNJVXreVe^e_e_n`eecNfe^fffQhfhEpfsQx}fj[fod2&\gs>}8+jFgTsVi~RgwUg{QgcTg&Lgg耄e2覥->bTQgvifunQ&oh^O ViiiThiiiiiGi~d >jM6j^jnj~jLj^ߩjjjjjsVj[>kNkj6knk~kkkkkkkkkll.l>lNl^lnl~lȎlɞlʮl˾lllllmm.m>mNm^mnm~m؎mٞmڮm۾mmm,mmnn.n>nNn^nnnt.eBsnÀ!,Ig H*\ȰÇ#JhP63jȱǏ CIɓ(S\ɲ˗0cʜI͛8s)O@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNukνËOyҫO|a}Ѣl,^ԋ߽cL14Moe~'rM8 1T@w>!.Ž*獏yJt Z gӂ!HT-(4 y9e axIb8fjʸ;9k3P|x<f8.@c1m39R8ҡ#l^q9ϩiaG> C)JrM\5-z(\*TlP6D ʛ3|ɴ_`~I-lR MǸ H`+NZU 4l{:*o37-D>ZNIBHz1>#_ާt0C,RNlǍ,@꾕IB21EJnDlC,E4;uGN D?4EOa AI'ԺD:S>8U3 5vߍ6~R6XmMM9z+n1l.6V}2L|'LuzXI<~;>F85 7C4W?-f =2(Sa.1B{A7:G:EaTj|ցLv@+@'ۨ_Cj<i r /!;V tkB8-~*,ʅp_1"KgB.[#B2%#r$M"u6t9!HTƩ,S<9mBnKk.ʠnQE.AQWňp/đ*`dS/iAIe֨p\{H7 JUMi nKE^ Z!@@{>@Ӡ-E,tv jܫ@P,AqְDbci|+rߊi‚)L4 Ʌ.;j*))ATъoD-&Js lnK,!cHzERD8mzwQ N|o[ AU/! m-܇B;AGنhW .v>"Lr#~kyc拟ޥKݨB6cq+n">mR3!0fڂ#ҔQѐ .tGB5!a0vdd>琭7̘Q4De :!4R8#TA I#!"VH} "wıafK%:LFmz *7B*Q tfQjk^76@< $B N 7#WV1楚o,ildD5bXFHƻ,URp~wOJs Oq'e8(vHb"fD6<#?i|Qn#+Odn\þ:E %Aol>>Ԏf :Bahn\#怏@ aqGÀD4 vby /Q{S^h37)W K* u\[+I;q-!рb!u}''#LoXz=EOu(^('h 7<e '[茂70.MRqeԸڷvtQy[׍x#o̗7J#8neL ZAy|P\ 14wH˨vf] !GqOd%wAw 0 Ȑ2qO2 qXo b^ȃ5xFHQX갍4q~%_ Xq 5 G NyⰉU1!e 0)AnIgQ[ Vzb  lPCK?2JWnڦu&A @ yH8tSKO.4k ɰ+9dg &LqB[#l҅\6).i0*jժ@w ^ D3-pqhFl+j+)+ag)i{/;! 0Q*(ƺX8 qnizhۏ6+%*vOkǾMYh~vѽ^1P3i K;>84qk/(a*8n7^9nO=B>zD~2!HqR^Vߕ1 W.J hL/f.lipr>t^v~xz }>^~n芾>^~阞难>^~ꨞꪾ>^~븞뺾u ^~ÞGA!, .p*L*ȠIڢ`<(BgJ1 `539p7h1mOɀ>^.)L ՚J-js TP_:SmE FhcǗF͢]o^_|U׮R ֗ӱv'pm⍚c2Hb^wزEJ(Q-<5 R~lzO_J:*Ud o!,Ix H*\ȰÇ#JH73jȱǏ CIrŒ(S\ɲ˗%OœI͛8sxQϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKN3νËOӫ_™ˏ=f}Rl eFє́ޔMl wZ5,bSd\5>h"Kxc!#"#x`KLm&EA xb%)"hd81nH#PbA-:8XՓ:Esa8hገu6iӀj&Uʊ`ie)V7T)d7?dT ПZԇ B*31Z3`}deDbΐiЛ>PtjC(3)9= @* eD4dTA5+CӰ%L#T@jIv VUmJbthJ "ՌBBjAⓨtBD 7R䟶@5sB)*u# L2 PJu[6T2DԠE20SjSoH SLH\Qܐ2/dL`T1Q\Oy,@D[*Gz^csI銐O)1Ʌ{MW;bCf$`*H8&Pc_<)D Ymq U{-c>QkAFfiضֱM}!6?khpo)ƹV erݗޮ$-f[fQ }&5:]AN=+8!#m5*AÈtLos V٨۴ ɃD-n6`P]D/z@S)V uIQsKMPE%b9m2[G@ iد68"(p(=V0.nx GQ}.&[G/C&Zsq砈!hL4hƛ3»i$  VpW">tUZ3B$򨰙̘q>b~нj=]Hy; yr^Pє{mh{z9Y՝#C xܯ!OuJy̳N?l۷ўdY-e?D4BgWLkGTwjQm\A4=ۚ7n]=jTU9A1¿ŖhfVdwCjmv 9>$zG*rK%BZz4ݱ(}?(`G9%/F(>Y+ -yxAtC$nT]ٟXlyisXD`rEvG =洇2wvD3!SG!M #DS+d/@nq} h[oGװ+{b}Covx|7s @<Q4Dx3|{ϗ_KvjA}>a)F[76 0 gZ p a a aV\CG'dr{GH_KtK[0# e~xvY lOb guG~U~1 R8L_d%wG4j zEW@F[qUW7$nw! iehgjNqm qBUj*V(Zׅr @ Wee tXLC y }{Qm  8s)qqhXt(8'iᇖhY(}fha&UWH4Wq (x @Jg^Q3g+@bȉэSc Hhz 9!>qDzbۄ.,ْȂ!gWx7i e9{*y/8\#(@ Dp]n/W`Ja)hX5i8[ By v`%IzuQ RI13b>qi-8<%X D8pQ]C`#zvp3uq_t~I EIG1DƄ˩imw:a 9NÖvtQ!0癗9n! s|H8џfbi  g9#Z:x[1qn#w:zp٣>iZpY: H @J=jZ8.8ע ! ѡ02z4ZoE^)@Ej | = OJ ^zygX$h38FleEUq`Xr~Eqirl*7 F1ZS:`1qC !ab|E [' "y=JʩaGz)zAynAG.xj֢/AT /@xORi3a 1lY Q ZG ٜ  anq !{9H!PI 2!d.XF5aWjm@N t(aZ$֢c56ZyZ.WCzx ͹ 9t>iY#1V04H щa [) K~1i{ɲHN L[vN_{i,q71avܷQ' K].}`CQhʋf1D ڕKn!{Z$۽ F sGQLq fo)_yj*[S]ȍ !1 1wb\0aC௖ZJ~ع# V*uKzQqM (l!ͫkPq H85#ݺ5j 9[c\dLн "qgWP P+Pʣ6<ɿ}G@DUXg4@O9 8CU\ qW,9Y! i^@a= )hlHuߖTDOI$Q ܻ"t𰌠Ja' J2oL(,KxP jQ˸b, sai_+R+-,˨qP ,l~ JLGcFK,v }I=ukAk=@ ӆ% "[TcX~W d 3ZH0'_=aTJ uنE g-M C$3a x k};밞]9 H jF;MFmٞ ;|g ;㷣; X1ݙ }U=Xb|"aԐ >YMP^ {cJ߳0ٍl.ymP gXIaHZ 1F,qw\`%1~5ł [8mM5!Ha<Z<D^F^?܊G᷂yx1IiCq(~c坷?!f|}A ]yiWڬ Σ* . |Qڱ<y)>el s2i>h◬X7p!A 81[Q\Ү72#3 n hƾDMl>Nu #ym" A@qmqEscuZ @^WX|1z4_㣖>9;sscu 1/qp! $_"Fi`/w^|Tc>] ]RD/BCSJ})Z lpOY 65 Ĝ+ow-ޤ??ɯ? 8 Q+O?xo٘? =1=?kȐ/?텟j t`J'}d}wZTa̯~+`t 0@K4ls`)DY»+Rx\c`JdWx݆7wx ºٙІlyY^$Cdb; @)5SX CĖ$:Q[Ăd"5#33Q {S#|bbcG<h(}Ёuc!3,Cdd# HGFRd%-Dr㒌d'ݦIOR$e)MyJTI#EV&ke-m9PR*I^&`)Ld)Aa2S2BG3S2\†Y3y5छjNV,dg`2lS% !,"$ H@iy[X*J󶨢ŊFܸTEKqqƐ# FȱƔ(\ࢗ̕$DJPQi”9iѨަhu'VM 7PjJ GV`қ[ӹo?aƌG8q%_&08bɨ#12,E.լ,9d <@_h "!cq'ۇk-옲ɚܹwБo,~ 2Է1wtԑQ}lYsEtlq=O '/ }748 y<ٷ^qiy>>1XvGX8kÎ7',Qn\Hbh * o(;ǡ,.8zE Ce#"Yq0xX L}b@$D 1c!,s(# HAΚ5;ȰÁ 9{HB+j<љǍ !*1F(•[zTӡ̋^,Rbd2DR"dʔ %8R3Oxj2TI&Y}vDU@t jWz)+&7+ٯЗ28r8^[!^8sjG:6RBk,`|:viF}bϦvywd[*W]:7yKO:ϫ@$UU=V*ǞZkk[^ x6{R!,fG@ H*g-JHQbRi譔 C*ĨQ`y&eKpEsFf594!2g24ՂnG:dΪedٴњ5|Ӑؕib3KWVKՙ5nSMh*kj:` DO1Uk6OKYFhU[+ی>^:DĥX}YٞmV)Yi R:p`llq`}WY#.[pu#ڴͬ."X7o\d콫 +~|ֶdDJ~k$L|I-R2S4ʈ2DF!H$ÌLT 2)IDc8<@OrBRTUFBlCM5PdBTM6հ5AX nY7]Zfb%Tb)P ̍Sfy1{(Eݙh"*(ʉ#`韎j);&j;h4D*TCOp-r⫨C S˲JU-M 5;+fy@$$<0]~ҥONiIH[ڋ3;޼m$$oD0ä(`@˱ {<ްOx qO,-!,a oDpJ >`JUV>TE7cRof=&QUxb.c#X@0"<@-yH@Gڒ_KOn@ 9_Fc@EJ[r9!,R 2Ta4p<3-!؉'dnH>>S&y7.8dYJh:9"Yˆ:7&a&AʡꡬjT簀 oq <ۗ~Z{` N\lk!,[!G D0†"SA+Ztq#G} 7*jH G42%2O$y fˈ/U80̃ǎҹ'KI}+Z遧QʒO[ul P'"TIoܺFznϧ~ڗ_U2hh]!tpEi2cvM-Lw \!ΛA>„sVɷoCK$n3pó!,^!G)D0 >\-Ę D;~92bICnԧ*ʍZ֒r_Zǎ1DZ8uZ(p߁9:$}AwNSU3U}V `Ex,fL`Np> ۬nE1?Ehxą;)eUӟegU澱ba P@Y',˞mXH_x,O"}ސAY1e"!,eG aAsb-ʓlj cȒ(1fDC,U"ĩ04ِ*:I2'};=E @;D ^Rk,lT%PSSKhO WuYn K]oe7,fJ~[ vyz^~XNR#,>PV3J6`X0D-6ĈPE =nidɈ@4ɒʖ0Sr.5m*'̝:{RIO:eq$ʔ,YnGkhӦd*ӂv-x,;A2Xv}gV\*ڽ+7oݽq /H-ܗ#bŋP81d1.7gk)nf77}>"vg>,ZDQT=o4k}dm[_n;o\X>nԮ|>[} (ȓw1yp֛/?C ʳ>_A!,8}G*4h@B">H"#q"&z󦱣I؁9ɗ %ɑ/OƔyM9+Ӏϟ QӢZ%N >uAC%քmhCp[ҳծzmܿb.›W֮&DaH_ŀn;olݧ4濚 rVVҥ`J}B;.w"̵ R-A߀ -+ &np; $x !w/1 !,7"*\P #J(P3240>C @TďE䟆(SI/I>@*D?o&ITхH PSJE8jTNPD&՛҂];rֲg6SmAn3;u_WL.޼o; %/9ey ٮy@6yhxY7fk5-)ͺmϓIz< u'NZm2|` з`@!,ڷπ(Q*$8!.la C ϣG*li}-]\^&9gˠ; MT(ѢF!'r$yr&H&ဳ^Gcq_VRz#>e/UJ )rſd-+pr(N!,2g  O‡:|xv )> 5v1#ő$Ap( f`ygw3ΗGIP Yr8[>tի}tN0Py*v4 D/.=u,L@ !,P\*\ȰÇDyHŋ G8Ǐ qI#9\˗,c|IS͋4k0N@PEoE4RMmL 5j̩XIZ=UV]7~VX}ĊLygն;Kݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨSK@\;jMql}x xY0.n.ˍ@IGzb0ٷsoqڷw~qٲ=Oh٭%;l+–G x'vvhPZr7A$Ž] ^U{ [}r/+pRK23$%Zd5fb4M^ .Wկޓ~ד}33Dwe~'U:eu8Qٯwin˓o?Ѩ0F ސ$OCЎ" ڐ+kABy4Z:>u{Vc:I*8X;f|h3 1ӌ; ;((g62:aLh^SAmpN-Xy}3E3dq㲒GQa /dZuXaak]솺 Q~-@~b@R*N+ npsgu8 zϣ,JfΤ3Em LƔ`A'Q?#RR2 ڋ#e4My =YyǤ({ZZ#a۹Β&I:LpV?P 1Xc"?tࢪ5 Mmhb!ob9jpL^diyaZktd8JK.~nvf̒*C\ n#2yv>Gg4;W?͢o g 1kgq76d~`:$$QZ^C&񤇿lm1F,ލ% bVrDz7*8$H*^?X}|e>x2xkR*:^]~UV i%דyz3a'xF7L;IW oC\[pÆY7N MtY 9 Fjk?edT0n֟4L\xPL2G yQ2[;- ƣ#K?7Y7WZógzF'I50gjp@ئyUی=kěMl}K޷< !אKFoӯ>t4k]'3T>`h_Ro{+iXJ/ZT[Go(7㿎aGGFڢX$wDm^> l73ݢ4~+ej-`R5W))tFn [C'Y.UuF:cl&x6e Y&.Z)yPQfj-~xq#/}}ԙ=B31s+%F7C UE1N @Zq/f͜óf,\k_^ߤ{N5v `h\`>[;{]JP|i%? e!V+2E̾_C+jtxM))5 iԙ)w!u?7l!HS' L6IJ~w9b3]}pmԁJVK2SPG 73$wN3twlip>IV\A Ge.֒%$|@QLזf2:rb<fB ,KuDG21bOxIT,pc(Z,F 3 bm|PXkyR-Egdq3Ob=hYόf&-=]ֽ,\ry6w<#ѽ3VGB3+Թif̥sގp^rrld "l3Kn <㒤#$?9f᪌dQ G8;]B ,CjdJe֏&YjՒ hrb!-q8zgVrHnNra+RLfiڰFҺ֓'D<V/y He&: B3lu GC:DFz2 )41z窎q`HLA[4 댞d#1ˋxHĹ1B䚱fKA[ ʧ?_lQ27lA wffEt9็̂2 g8r -)#Az!c0W ś1DU[gf 9 ] vڒzJnJt7$E,vP>ڲqoOqKφPXKBt +yUWg̝ɜSfB[\V[v1Cr;e2+Y1HrU"-\_ Iɞ,;\0cƣ+!x!$N\GFw $G7d^1~Ų5tΓg-sp?w1AO,,EX{Ƌ(] !s3<)-igO^~ \&X`"GsmC`R:oH$\"+VԒE58!*U܁NF=]ː_ 6dڏb8腇aRqe!F  mv֙`1 d6Ű^٢<뙓BtÞw_Rb,dnX0@¨ِ((m6lrmWR|QV"Y,(~H_ɤ`mV0WL}fMYb7:ka$Dr qQ,Q#VΓ!z`RĬ7DO[~^c,c䛙ˈ)URO/,ߤ?m&&U" }QaA̝m@d8reJ345@Z-iZgqVKE,]H; pl+Rz]$4wk0 X& XU[Ki(H$0Hpvw3;˵C-}YMrpdc$7sZxkSki7rny,JA,t}̂o[,fּ 6ź4+YkɄ\?zA7 /.*,6'&X͓Ϭ+Nj!(4Y`F@V ̪Y"[39I `).D2'S3P]dVF[VH]f{7.J!y@+Y)ՅR ;XX:s`$BJIVQnF,* /@@(0Š rUUuB`ʊUi ܹЧV|BvtK(Rj'., Oh&EI3M'Fk:g%(Xс.,!R,G~&]N=poa1Cx%ޟZN(R::y]6v%_s֧6X u]r.Zpeҹb8I4ڢUkNA kQcVFŽ6TQjɩ&N>E2ɤ8ψ{ ];HBJZ)F] InlZGM(4 JP\1ʜIVYn@ FX*D5Mf"@ZQTzC@h&+^КF+"iFSśF^\S^HwA(V 5zs+f*NAJ('CIUEB_۳2lPj{CtIBn{=tQ/*d>{ ZS 5Q)off_Z-˶LmC<@Fc ҕX lOL[2zULq >H' k)1a-nV^;!&($UiRQ0M^c5j(.mĽR@9\zsMy n&j}O4/ XȶQ72|ZLp3/V^^&vL{W\*JXN+#7X%]JA5HX$8hʍH'."tY8@$aB'hm̊0U`&Cu8HIc)ԄbEļ&\XaWj# wuwuqJcO zYϲXì`,qF;- `X>gTp]*Z: L "̆#7rqE+ Ð-U~LNߐM-DobwhP!\PޱP=kXt@܀T,5ǔE*ݨk* *JVEZ#&EW.P3eʩM{()Bkj>S(F2Sj+ uYoۇRJ1ւZYq] j5Rڰ"j);\8k^߷/>,mĸVbJZ0нu8wE;M`-Dy1ޚF^ LZYpMCC$ھPp$INI8%tQCuX z(eJv\RhI MmR,Y!@@v.c/|Cq;цa^e PUqҖb6D %cvHG;:x dh l9/PGDz9 3&8wьI#*/ȢUjY%l;*bq(50\"4Z}\.r?}Oӷ~g7޽ [S];w޾S37wo_ pMLb[p!+G 3=CZd""ޖkn 0 ޯ7l{bto]uv{l0[:ZUqiOڛx#U ^al7׵Ur-bN9bpޚ-)9)if}T01?'I1G!9PlYd鿇azJы3QA]BX=H}D|9#q,\>rdA2#}+"6E_R!(=5X<1UXz> X{3͍{ԾM֪dq*I#58?,zʟ;ݺRw.~Y>=q!н**>{#$%`XCL@7p t?ع_TVN`OM.)PK wws^VqYhMyk`i[L&A}}rf_޹go_z~xsz5Mݰb45]CktP[UM0 ̓ \'HsByP(2I L٠Lʌ;1YYs&&y-Xz#Ysݧ< S=Ok$ˬҜ|֚xgbY wEhKUԡL( Rz8w%Z]CMn([W_Kjgg;+l(pݐp4Ծ䗝PZ rYsfff]5a΃AKJWKJOә(޵MJWY ꡳI>Kv窼dE4AejVX^ȋDio7޴փuxË}[PwZ$!Ъ7+1|$_'!\{LbBͪD B#%ˣN̯G[qH^2F0% 7>:Ed8EC$OS_g)ߴXsn6nC{[(.b{ik-:齔aP%&Yw PgZyPО 7sئ7{{³/\꧆XɧR43AMpH쩱XVJ( ˽S 'uuLVȋҔl©k@5T ͭ23ZܥVIhz h>&O}*=;ܫXNa0z?~Ճs\'7oKv++N˄KPRC!10&xg'8Nht RJ2f"*YEtk\*6ykрNQ2K g~E<ܼYSRvz8#3~K=4BV6 6E+W!'؞nrTjd(hn7yA*]2f]QzS_{'RUD6Qdtp"ǕkaGs I <\‰Sp N|ʙY8UfuwVߔaG%oDO.X*M}14%f#Q@HÀEML!~'?|w|}ʯҮBRP㥼r{i`+>(FI! AV$Wsuh7#0UJT6Q:8tE,d*:V +dCJJ~1=+Anwh羄/5R$j%@NgHoE)+;On0Bi :0ah&qڅ{¬M/8#$rr4xkZ&VLj۽{|3ӷ3?/_[6NiI.L1~Zp eBw}E9K\zCי'In'E 9t"Kf:ܟfusR;C[r42oZ!Z+nR?7{/g ~Ɠ77LA͊90ijVUT邉gERݚB&8QkjZ(L :̣'41i=iݰ䪢_d"7s-n 3 YX;YXqHEza8yգ S, Bܙ (%'ـ17GYqٍxt]ye|ϟ{_Ϗܐ7S4q/0mg$QomR q'Tp,Vǂ[#c\?BѼߗ~bHHHժcUPU$5:FZh2#GYNS#7RyX?ޯ}ٻ7_x×_:ZqA) f=92b (qrN (#kս7JbsOP.pn IzoTJ{rgUyA䄺g&@$pPD½J~?z|%Ov Es6P֬TksR f&ϾνB"Q .Pk0=oÌP2Pt%:4 IDAT vHA˫\ƀ{>1@1peƊb|@SKL n7tx7>Χ?֯ /=} nu}ʀH@]nn4SCؔ mv|Bt.7vV6qр<Lg pZoiڏW_z敗{_x)Uo8!RfzDFsƌP"ktR=7BC Ū9uN͊ʒh#k Fzǃ>sbC+^t@z0"Իzҋ3{RUd"B־ 4~2gߐlB7`TNbطPig7x?W..nQqj=R xFkFnl&#8e+S7 䶐2VJZئKL@ *oa\}CHe@o7_xϽ/>g>[nS!Mb4Iѵ>8&M(D?.,u %e*aAȒ3xfG9-\:Rxw{7‚3غ/!QlΊ|4l;ֈH P&ͩGLUfaSUc`.4br(oVxVѓݛ>7?ynɆQ P͚ߛZC/!sb+'+!٦"#~6뽙XIt/[Q&^\&oPp$DZJkSv 4]t3{{`VLJוow~ן~g?;VD ^"F[2ny)}wX V݈&,+@kcŽC5wz%>oQ^g̴thwrfh;`֊,o-O!G cWGCOFL 08KU t9g )J}J~[i{wo[\w9]yf5pF wArdϸuyHB),УU:PyYD '~`A(\2sk iĢuzWNj,mRE.6`/]P[` 7~s_yᇿ{݈{S3.IX@/b~x=S2끕$+4vQd_ڼb'$_uHZ==s3Jn=0?#ت$wWlr@=ekt@1A;N׹T8;}!޲JQ} /JMK;dɆHbْ+i'Ԇ鉯g7}Ogwk2 l\ɉjeV^M%Yq}Aq%ӟR4dG_ sZ!dPt@q>"zr1 [V˥&6@4nf7>vanjnX䄡B(Ё-,/Vߣm $;Ά\85;tDL+]go1=ef~l##8y_ɿ/['uptιXEp./j]Ģ;hS!ƫ~Nמjjy?w~ht?fq^1EɭMbn6OJզ(Vk*HbN*/kX9 "\gU=aN8գPҰңbDpuxqZl<61?&v|VD mG!lzEq(h;KyS_o~~fOn?՜8@$#|6@536 nf-ٝq̧ rZ>|H췷iovˋl7PΕۖh}cy2; y>^{_۝Ow. "z,D]fⲓr!"e9lDMΡYzLk|sVd@f\a2Ge:*h:=Xgl_;ZP:p'\;V_&)tiK VNvqH3ӇVHਔ {%D#TkVڎO8)~絿w=gX.vi  & !ԕ<嬽^07gź-x08^쯮:(FX-\ܛkt(W>ykأ4=Z]> ^ ~ӎ'nLȱk\? 3i+yD,9u%)KtTɉsqʀ Q&>p?#Zut꿲fhڧu%lAHG{N_I`D3~VDCXP.(.m*ƛ6>ϽFç_ѧӻWnMڱ lx)rOKx@NDJ9l&Q Y7ƌO4L cZ5Ja+4Շݿ3g+zv6.dDI!$ZO w]_ߴ.6`*3DbjYj)ҍ^ <7_{{#9QR l!(aދQa"USj^t زaˎ0{$rNj~*֣^u_iǸ|ARzuz?;F>vO;*`j\#tIdS#%r4ȱ2 7p KtoQ7`ww\__+?;O.]D1uykjYõl%NS+Jpwo]?]va73nf?FE9 }Nk|n>\=xCsQh(G`szjĈӿ`E}M{lSՅa'N28v}]8)Ù3uЙo~r#Gxw|ĵ*s6]5 è?Tu~DgS vgUQu(68>;i۟?q<=_7>g}wW=Wd:ФkkC͚3,Rhk~MÝW4 QJ1ܧK"Yپgx>o}ՇJ)f+`v+J j^c_Ţךּ{⩝s?zN:m((ҮGש<ƕ}O+{8T[}jz˻NBRA<^W%6壡'k= =͌z'I:{GAO8(=2[_6lvQ|(4՛pz?_z}>]{xbeqGۛ7BI5neXub='!J36 r:v H֓^2hW/zf`"fG@ŎY 횱t0t(3񈹅sߥnmqzI?75lsj5<忬8}qfց]J4(q ڡm'YO3|Hs{N]?C0/0}-#j, X9SGW lA;d BDŽCŁj+}d{P|^=ZeJ? =[9zw0u>ug7/zo~gep94?"-Dhm2y =&4oۓBg>|r o|L 3=q h +8r?z׳d_z)}P(#rZt Q˕.L8?u~ϟW|^'/IS)e#ț7GhZwïY;CO qٸi87 `>mjԂ l=?D-76KP w|©OW(?2 S1Tap6vazce}y:#y))OcݷAs^87Xx[x唻&iI“3өyձqpo;g"t7zP5kQ /aE\]Aj9J^IaΨ "~ؑq0p\S6œ%m{\CJɴӝ? rM6Բ9X#YqfR䜽ӹک}5.|[W̱<"fNxYړ>#=IZ#yqSV E'FCk':|]!XNdӺzK>2Cj|f0ZaʬCNdC4mȐ,r>yRZsJow,~w<ăNE9qH n:L1۴MĆnM~Hb>~cp1ű鲼//~'7׿xO?n ЦVaׅsW3/ߔpaՅqϲ?'g}.G׺3;XZ2tGF걿sRѹ!M&ݐ~?~ww~O?~_k?x`@\;'N#>J{:$܉ ٓm g?,9mYx=J3UpaUy9vR3.LM~XVV0b IDAT4|^r19LIO.MhOQV\^?{?yDzuETȮx ! ܷj#B.QN0dO.gYEZGiW88@L(X@|X&+O͟<}ԡ|죓zSO汷h9 Nu㠵G+Z%o5ޏ;E8!~as ˏsYU*enkY9E{CKa=/5@$L(`rbj-dgwbN8׬wСƙ[Wv8AQY/˥ A׭翴vX=%azTA2CuEtp-DL8üA(7ꕾ&q݃6~3/z GW ȄXNoЏn@as_W S&fsVȎf3v3pn=6vtȪ KչN;2i@)aNm٬Y{~5z;d i)ki- V>|ekR|ɔ[F˫jSu7,XФ 8Bˮa"hvn] S]Oj>oeJ— Y{_stE9X%;H93k-#9<20X¯17f9$1< m/T@gZ²#rub}0a[^͍~أlQ\gf})u1*r6I[:Piz"ۡB` 5psNBw(RH[2pVkٲ|Ɠ/Y+tJ($8*sbͭ.#{Wq5y[jƇ?,̟j]0ea Em`ߌ^& 8dؙVf~v%._d$jp#2y3wp@,.U:{G_gGmỵ\]2t R;#kH-Q?xv@R% v2u2ڕ%#9ha2e_՗֍,@.f~[% Ý^NI9bonAS:0#P d !h5w~1EW`<#'Ozs}?xbXLy%Xz<$MtyFfxnfbpg9iF ""k f֜Q,[`4-ljټSL(]ӗ_>Qei-wS쵨ݙ!:vsbڴ魙sr{*SAeY}ν7~S#NgNT(kIydV5o5g(Oqgsڜ<ÃvLIϙZ6v*hJV,ĺV3v]2YBИL }^M:>0^‰ d#>[AެGlcpQÍCY#& CR)=8 _}*;SH@Կ٣9>$K2rf-Ydˆ %(٤^2ElE舞Ȏ,Y1ʶ6/Iĝ#qhuLƁEP+Amj QIP+I^uݳŴt]wϱh~_@Q׵<$GR['/ij VP, 96 n|G<#LF=89d1 &tL*mP⁾u!Y5Z5/:1@M99xPzc5KN BF4CtۋH}I`GuDp g^ [O !LE[wV6%!P)t )2)DWiC9X@-˞|k19pQBN/W>G{8A6j;T,8zlǏء0Ls9wlrOn(ѡ i7fC(jLH$E@%Hdj IR5V!TO"A,t-]cctGf bcI`b0.+_5j Y15GLJ<~ӣݼ]&A}0` K-VJ[iNmٿ?tGS~]0+WNoC6q 18 H!?#im·5lYc"C",ah'SnhQfSeqNXF] h#BA3_9qpc=8PJ VLLϔ@+Rиǡi<'bƱ@0}Kœ0VU29\餄KcC, JH'i gs0>\:QD hkIRK5` u 34QٻʳQK!ԶemfWxgx4!5ՆihM(7$},1BpO(!5ݙh}av v}BњTdBbaZH C +!^# }PL`So; /@+퐈0;U*c%z`7mB^ݺIPR .8uh`42Kt(F5O*[LvFCwruW<>p'3Nkt2pwHBER0F v8v {%3*h 5 P! Oe/IfE5eEL8wKhTcr3;A9,XDHk@IKKLy9@Gv(tPaf4 "EMB@jT4*SIdcZR8ԑQ&+c I%<8+1bȀR$F R쥴)cޝBP%Z KҘp3DDsV*"߳ #bZUhre9"bƕ7!kı#]Ihb9ǘͨX,ho-o0 "e_g1ZI_|4X#(¤ <~Ea'hk|0FC6E+\n K?z;vƠ&PrJJ&tc=7"sm~:'~5>XA8ֹ3ΗiIf]YɀLBSA {r넥ݶ#hC04>eBTCJCD BC@lI[1"[]oR,d#!WOe G{7G]*i "6!#׾F]t64,%6_\fLFfeiXY. #% BR ff4$P+ MTPaB",h-$L.fV:˼@%M.Q9C?K$1zV$4#cgid<5вl}ǘȔ8X$k0$ĬplZ*hcAf')tcs>S#Á pKj,HXF8$m”YyIZbRFA*1C`pЃNrɀ1Ղ 1*)̀:dv,a鞯.Tńx.R[w h ěshlo`2.lG]@8Wıo=[=Sw1j-f̬1è6[3F&ߍW ãi = ،QVb:fjw d,[4t:yh FZv1YeZjq;̍;F"fU ys/Hc$3vtTq7}ɦK BR$,d 3.u,ySFrAI ģF͊ S|cl604'77u_j#* D rC*ZܻVO*ZMHyWiIdte@'!!Q 58Y ˍJ9.9&`42a 5ڜHM--r4@ $,ekyu n"jȍlc=j;ز :-&p.4.K8=T6SظΒ0n#D,(0?m>"r}=ꭺ|Y~S ;!ڄ}# &0l1<\%?hE~~bʄ?VtR4266q[v~]>LM .wSL7>tΐ\Q7k˜l b)%YLlq]l-E:6><Pfxy1 "ȢE܍~֭#.#o1o7Ϟ?ןX p`:GVRnLN=˺Yo~+Ocj/ǻ}_<@hGulzeIF@ U372L#d#MZ!zR [ܛ' hu÷İ{ysقdUdYaP(^M&`w:P*f;֩z҂%4İ8{W_z߽c;3? CXm.Bmqu^q(wZm>ܢI"Yu1lnC8GX(B5Z ö)|{.% 41v8^]M/|QQG1rwzG77*azSAl' ng8r44{<)O2"f_$JXOD㼛X[yB'&!39~QDTXeNԍ'οۻ#', ?ßi jO#?|}oo$Yf䡬 @1Dtb@(uswqyzŹw_y;~f{XOvS$E` rt`+TƲt^`$ۆ>ӯiv3ΓRh*Ҵ̬Xn⟸ןK}F_Ko~༫^ߊ7k0Ku@{_7`#"0tQv_.̿S[C±09D2h7u'/f2B3s_s ?rzrfJr<8xVz&i>NG&AklhoHRU!{>y>JBuz/rxK~_ ?/ X)h@X:4dAi09kL}v]r=;1a} ɄWڴa[\CSц P,&mgKoLx룟:ջvXKaZ+DTXQkf&`hT ܼx=z>/t,_Zn %V56\,TEt.8z02 wʺ~l.3nGH=QƺلRȒN> ,Bf8 LfWm (WԸsjs/,w0~FQ&6SW)~cz7h& IDAT͌2_ eƘB><^Մ}l4SZޓL>V8Lc7μNV__|9S2B̊ٔȊhB:bϵ [mK.[?+y퇿?u{Kw+g=?ݺrӌΠ0v#9D#c">++W^SŹiwOv/kn?o?Ʀ%XZѨOgU8D C@T{MRA8l//.7/'}fy_y]םRzJf??^f :c*~Il`,\v1뿖W?˝ͻ[[ lm=@a)z'Ǚ퇿[ĉ+/=W?7ܨq(+L 6lHocc$H -0Dr8޾g∿޵_;/آ\5b@Ƃ Ws'-0݋kM \f^F1 mC,H%r F1,n*ʃ#D5HddEz7|sW}跷jokӺ(dY~{ ^*MekV}AO<;J jW $쟻ğ?Qw^7Ώmί+ :#xquG?Ų}[JDe98PBvPuo߉ iy홿^\kǮkPU%(fSp_w}?{y߽vjs_^d2iQG$f]>F٣ZSY3&_rrw*=d2rp_Oܓ~9!KǚIhn+{?wIO@Ex'^/]}m.Fui%. {mf^ i UӋbvoE_7\Bu BLRxj&l ж0 t/͑ևecwW0B Djs<;jcycw| HZG( 'սtn_?™ugdCB.1QIDi(Stڔ%^bMI#+ I_@?߸zn7E5Ũ] ]2ʬcga0،2[dr)Wny)ƛ4zeQkDӯ>ʓuK]@h}楲ؘuXP*b䲋S3Nkt!?{'=;[jY]\[_/tEH1(Ǿ G3W^|/nϗVZ*p#VpY`ŮxSk ׏<ƹwk$sI&ԓ]\ξww/<6W$F B/.MhSTԆc7 ן#O{ v{*JI=KE2wE ٝQS[V!h{l$@c˭&mo/}cWVPU79K3@JdHiP="}/8j7\!ő.-cXf$} =߲L4\1HӣAۼc45P]OzxLy=Q15#f&paԋ/r1Q:>01h03E]Zw틕G?u.<.W6H?L,׬aPhH=M c-ukN=GQ'yks5" U?:ZQbHᨃ셙k槷7_y>5{caU)s.A*rog*Bhk:Ćt:tJڀ-rȐ)̲U:}11E0MIC`!W i"QX .rmboQ&ʔyF+$G=x1CY?x/~גpFF l$(Ce Ugku|"FAitRԂDG5Yw{vs)ɜʈbdv3kJl25.UW!R2Zz9DsJLdB}@zǺ<^zssk_^;Cl^!7|K ŸfvPԭ\zY]/KO?wf6 ;-_Cg{j}烜en1@zX m4 +3Q2u:p?<%_c=Pcv0 Vz _{]_?( *jj *>4F%J>g}!N+ɈN𰩎Xtr~b׻ZWAB+֠rд%'f'ʛG֩_we[&B E rg p<j{ݹԷtWWTuiwT]k! V*e}$a2~\ܣ_5ﴬޭaBA3~y孏C2DL Pp=_v=<ԇ:#8}_B^2x܍whNf *B](q. D k]F"Yf߻G]`gQ0@SAȫWqBu&g-FcyRf%D <"j(Ý%d"WqWۺm6I\16m (5$EG#;fLXLds'q,}hO5Y G/-_p" T^XJdf]cd "=q~F'RxS;6ߗ+9Ն6\bx%kU5\Zg;"P݇w`gǾfnUʹ6L NqNԚ=\8Z^εZKi}ߵ%3&A-qx`W+y腅uyc q'Oex)G;u]߀- ٺSPE*kl2zzv`#’:BC`KZz[?)ÍYʆˬu) 욦h SDb懎/~nڑGuaLc',7%4 .3ƈ/ĐUr< kg4^ W)Ea 51`lwmy#6gX 3S:ai0dNd~ƬкON㙟nbmF]k=##]O)(S ͽi H";y=jp\I0vw3D5 X"D7`ڃB BT:b&ty=dB+i1QVZc:ޣ'd&yõF^90HP=}ِsa#PPz DD}87ʎ24nG8"ImLՏcQNP4֠cCߎrCOzm;xȇۀdM|DԨ!C:Pox`#M!6t>1i0(_;줶w^@TBZ /#:7"@C?{㧞yW&R5F看bݙA24Ha(c-f]]/tY{"AQȔ*5 ٕ|xВFy hn^E(+ E/ّPŘͭN6=*f7Jڗczq| h`GMM`sI<u`)0f^zҺْh#BB8(p! }TitKe󀁪ё@: jjr,mwC'tDH 0;n#/g6X"% *œ# 6BkI36>(&1I)g@RzB7Z3r&whcb=1x"sva)hȲr $D&iHHF1ΫI7+hN٫ mo{fXy0|cg&D:GcJбo[OgdqLt2+]M.Pa]7?Vh#]KN8̙w(F1« `U3G_rR!Tno>vg*ߺ=I1zqG?q}vG)XJNq釿ܻݖ]ac̹9{Gսݷ_ޒȀU1"(CW TmLG;RGqcT(Rd H%$wK~w}ך#?n=d ^u{^k1ҭ=d,<5]po9ʲ;̽":1HVM gv[#kT@X{#ߔgGJm\[2m dh2`! Q^k淓^MsQھ/h{D6*x@d*@F,˺Z+V%#Ν0Ylo-dޢ!H fc•ÔYwrZ0b%Zj[|n< aEj]5I+-*[Ef.c[S{ѪrSWA+MjTzp7wԺ`.!h;p S6bvNc+;m¡ g͝4BP2wAV~Wm#"5@ غhzڈ*Pi>l-0`h#we!(.m%h}%[Iε"Hޒ!*f$:fנk: ف"mzZ7jvlNu4xJ&-+tFshPk]?ͤ> Ϗ2EXOl[1ʏ3I ߂Q8JRN#Jר?wf$ Q7K !pvf^ͻBZ3`ʺLj@K3X6t@up06ҍ '漅%>5B#m nRReC<xAZ@ Ђ ugXcc[Hk U˷id>zѭYT&ĩ]ds]F(/'EmmWhrMkZ$B%Rcn[`N>oJ8T<+Mˠ}Fc e"YjSa-O! 6@ۂPw(k ܈NXZ-e˵n;iDt=5m,5V2sIt:\f7\Ц4c+\Pm|zUL35ڨ1i\]NS1Ȗ2O*Z-A[$͘ե'؂h\"-C\K$AQ&}"FRC@:ɷƴ3y疗jyj0XB#DM$gWM'= 5:i'ßȬfDj9̺l*aJl>GXYDlpr"j#G:Gq8d)Y$\Pt5#v(kYݙugU00|f+x6[ E PDO;QS|2я-ɦK,aJY H!"n['\^B5aS`v [JG|S @3vwG2AwzN>JQZƱ/]N4k l@0lD^ETC[>JTD63r8>6" DC41*uJ}IP;_zB! 1;BKIFzGvp Jt`F-9((89gfXv]WE[b"x0{_{ !Х X!ן"KZ&vXDeV* NE}.bPQZgℋ|/yϦ ,{',lF3aZ0Q0Bꤤ IER %uvD`[J1ER X-Jd$ fXzk"A ˰97hUCJGPkoQ-* Cw{XS& 6ԻV哈`@vS Rnnz.+!:s3 qeP HZG,-Heύ) ш%Ќ섞z)+5:!eΙ7ܥhNu`%*3sJ3B'`=M&Y6󿜅l(XI$M/úA CQGa]RUȑb4KlY[-W%eQ[C)dlv-Ԏ3mVyFUƩqs<5\n5`aZgq\1W բ1"Nm֠͟#$Xr˨=#U&גM[m\z.Et6;-fp|.D5=#*X(ȲKNk^ĤB^ao<|E! ܺ| H”eJ4m-,@NFUI,S&qC ǡC.u('8(;c Qz&(fǠAK˜ޫ1QUWB@DSK.Qd UFH8+s:,0941(9Qi7X @d@$VDdBE[Tp:`F(-K'2*[Q 5kAG0ّ⑆D Ur ͤ&"e²}`gEi45lJ`4ٿu{xĴk BM)vp3riP@j5ݟ}Ig=cNG",BPj5Zٖ TBhc'7 G(ǫ/{ qV6YOH>̟xNɒ8"F=hd'jIX Kiu-WM2YP=u$m{y>LT" kDB:$ ]  A5@'H Ua j:u#lv{\R U Ib`ܕu>04|FWRCbE6G3z "!ӓ[u;{?F(@EԄF[afI(,h%[+g*٤*?0ěP/)`Mc' )` :@yrkeD$͝f`l:NHRpZ ( JZ H> *6~sԓ!@r^ٻXVQk _fkwPGK1M Rt#T\P lCu \nd?gWS۸*KjT.rc}GRg7YDS׼Yq1$8F w)ˠ`A2Չb52+ Uqpqpዿb[KC\, v-Wd S6Lny[w|r9f=ISy4&@e( ڣv.Q(K\i^=ٸ 5y*AId WR)nj_FÝpr/#ODnf l-ņp}WsDDk޲QQJ?`=3"d:{,{wR5v3>[c,HJ[HC& RZ̯l0ZMdjWn z򭽉W/A 7sE-*SJFEuSC0DԌf^5۲0dc" "5Q]a,S 9d4g5\j[Yy7Uñ6F:o]BmBؾܒVp69) Җ@|ϼmydv[/_ˏ(T whdOt%TiV[W*Q[=-H b]*'ϸ1VGȮyVjヨPMג!+e W1몒NZM4md>X':f19.w[:nb)MBWDbQDT+ʸB*Y_M9;`^pl'bծuﴇi&:W~;Cf`oj0W?Pa@ְ]p =НJZ*E3:FV@I`D'5hiTͥ9qZP% a¦O<{S02/5yՐe֯+KkD@QA=U6#

TB;hb&Ɖw3N_ !.i^ZW& K= ̈́`Spv!@=o (#JB9m TEb.D'*`iB6]y',c-w,x̉M ilmC*#dvsL6DXps1+_i@X(ZmM!>PJΨq$.鯸soFRbR^QToīCjz""bAE狮_z}N@}xDW;o㗽쟼q?̙gs_ {0qJD&VK/?ӛxQG5c_@wŏ$w h8{Лzco ΈBԌ߸?@` ,^zmH/ TiGk&Lab"DM(E` u& 9v]] -{}Ǟap Zf"DN: [s*@NlR?oM]m9KQ@cAn' TzQY4O^r!{^_ QZVg_6Fshmx.$]MYx4ZQ#Lj'Mcs{OBu_y'w|:TEYRޜh)f1 }o>~~I}&-w)wힷ[MLSr wŒ' @'>? =ٛ=5I N"fnS!;p3E$k)-bDҍC Gn.rPZ8#irfi8p|p"FtO ma4)ټ^[>m=TVL,j,!eᥨDaJ?n7>CQQKs9^Ӥq,[ fm{ \f\ޣmnūpGdG Tp'q I$Lmpr yF9*V ϽZ B"=d O ^Wk zRGevK7bOtD/fnbW߷_߾[_.kj5UVki:{\ oKry`&Rw_y_$L} .buF@ % IDAT7gUTU_~|~ԧ~w;TB(9ma&d4X48%U"@FV=f=ٽoozP"CX͒J61A;H2*|'1HТց>\i+0*_,lx|w^~?)"(XZKdrJt_2nvo>Iȏ6N$AF@3En<DMhiœW3co:ܩhr73cTam2L,p)%;"5:42cMhV'^']L;M:s7jկHVSB`lfvI3(5 @_&'^Rh1"hWEF8:Y$-}ZCJA!4*5DM 3ov8QAb4nV0F V0JE)aL~/=7}g}uN )gQe~p&gн vj^w gk0pE[7O)Z&A]iX<|}-G??}_4j 7ddZ+@yCDޅzJ<5ShbQuhIv};MM/?~xu K5 H4SZZݦoݿ S[ZkǕL~< vB_w7IpӡJKnVr3ݹW6p>mO5ւ 5ev ۊA!J$R=ђC]FI<)3Ԉͻ$ڈFGh*C \Rp`G_/~/._,VG^X%hݳw6P/=}^;&wN*h!#4~ 0=J'kOō #BbPOҦ}K_3~78bt%ГDQH'\4PUO}P0tG x_( "1*͉uν._|ˢg~z F]XA0v ]A~Mѿ] tsޙ7lGT_PeF& AE-`Uo ER3W*ea0z&JJRv mc-Qj\ej옥[=875Nr&ziF"DBCh۬9DkfNu\mKv^Ws nNچQ^hg?wiQN ڧ|=ƿ$eF[3On7j5hdxn8Q'Ryؐ?&b ""5 k&*grfۦӟ޹ɨffVCg%11{o}؄bro&֫Ow.}lK~7+=8W`cJM@P-Ì޴C'VB˿g9 eZf8 Wڀ G/r\Xel0Z,M;Π>NPz,~ߪX_ʧDߵrRli44'Wn:D b{`mnrl,^5ZRdxrZ =78<+27! A'k/`CVN;,ȲY$:oçhФٲ(*!-֨g5u,N O"j#T@SXl,z|>G7aR | d(?5}+lވ@OfČ-zoG_M'j@6TWI>wnX$Ykݿ"1?MS6N*,R,R0MF/Pӟ7,mK#OS8Ȧ쨧QW$N:nO Io IdTcF$O)F6^5t 8f]/o`g)idH2L$ ]9ݮ 4i>X;o Y;h}!UM tH @5*Z#pS sg;剾qÿ>4i0\;&pMH<*${ mh RRT y*jϿM듍8^Ko|zwBNvt*V* >!zp-7gPUz=򯝻w_cy{Iwl;Jd\cXRDuj =MJo[YJ`caD$Ф ׉ҭ'dNHf䮱,cN}ZK^ITOL (jS!jNR1-M4pm˵1m{P? T iUA5ݱ$X|} x/c_7W7vt;;g^s0 +oW~zԦ0Jc8Q1oBfBL,,6BO?3=;_GG=/?3uTMfWjD!=U."B+ C&Ti`\ Gohswپeĵg~_2ݘNlR}nԊId.@B-!!V0t~q]3`ҧ协nƐD4n5O+ mo9Pr0A٨3rε1Dݨ\uYx:Gve[+A*s (Q@0-[<ȼvjAHG&i6Z \Wy uq}rKt퓤I ժ3l*>DDI2_A*w%"(\_v?;w~y?Uq?~¯u,$j۵ˣ 2F!/=(FYo!'H{?&B7'P``5It齷|ã-?v_}^;A3i6aXBmWr^5`׋DYV蠉KIM]dŁ'srs;{"a z~eq}0'gƉZwAQ""+Y5*՗}7;MLȷܿg~WL_aU(!;QF Ȧ9`jyGn'?:\ٱq@RKTYUʡ ",9&֞@"梖R-8 ׀mH@Y jDpgwEcN X'XD)lj輎]FTԘ฀6&t!)ksmm%Rʿg\WB20:TnXp2(p&:N&5+lx]yW ̏LwF[q ׸#PMr-sd,E@o@҈8fsj-y&.LkEdz:7)*}[@Lp\^f#@@%))jRrc}V ) (R)W0(n$WKVԔ1Ied I:= crBf58CL2 i5\1 *MʔFpVtt5-&!݆3PR:m\)Y-] #jaJsz jaǚTƮ"+YS%Y 1"] RZuh H]#Hfr7R 2#2/\< ?~h2FM ēA Fӝ-7WKEKk3˂Au}9٩Q[i.7u X; #D4*Qo#)T<%c۱j!u<:9WXk^96O8za֜j,.!R%1h``7> d6"?52[i?x'hIa08 ( 3k CmIи PVH:pTˢkUjET\VSSd")PsdiR*J"aЊP#Ҳ!O e1"U( @ٶ m6E(EETXQ>`QyzD֥B\5Z ^UlUGoкt.l4W x1%; U`p2êܝ6V0fHKu㿴|oƸ.y(b>?U~;% "GB 4,5Jƨ4Kr!#B:V`+ͯ_~ᮃsS7[J4wGKl%H Ȓl GUבˀL[D8{4.Sg aBR0ZQI7"U%M-2WOIO'r#NIl\B5Q"2)X0k ,?%*N)"E}4bPPUCdjwJYQeB˨`(hTvtxb d`ک0[L$K0tH!h:^yŌ^vBV.DG6P)h9)rwT4(K Nvcc2 nF iZkHq2w-͎"vfKߧ{z.ԀEE CO~0 zld/ &'BC" r( ==R*s+UM l9]%"V5ᄤ#rrݸoWNu&zҹHG: zCgp8@בsq,&rX ]qdmvKB~FZkʕړX>)qJl}wu^[Jt~_jFf}+PrzY2|=eآHm L3tB&Pq)R@ %<^BX fW# k WTDTsmMMV7''f N{B:*^z #rԜ#J뭤n5mSDJ"& ޺`^! ?@8Cÿ,YGx(4@0`T!QNq̪:n~>۱n:+t؅e+ިUcח?7x3 RBP=^SZfqtz@obZ'WG DL *( r'V!jƼ7 e3Hl1W02B0q6pvy qJ@ = :w #։Ql1/DR " U(Qה` j ԛ$O9γFi-q+tWiGDGRc+UA'e(G;iµ8D'G$G$\+LIʺ f7_>vךcX"&9LOh w`BsN! aQA\{A-iB9Yx8lPR(EZܠ|LI.)VY1*pov}t`.VD: CH\obӈn=ȕS@#=(Cq=n_;xGo9BFd.(63@A# ^ZfjūzYXC Y~Դ<_+P!j`)P҅Hl&BciZl#@y~w[4mÌn?[( lQ"Xm`-V@ 'T,$C;HPEn]UMFhN-'7g%IY8Й#KUW`Gug1^϶/˿䄼آ|k 3S\. ,†~ۀy.z8jr= f.I5X3\Sz H{UFBc_4>qMVY%ohQjHE( Z"!ȮL=gg[#4 a>BB~X:r}o<.j{0o6IJc,bxxlb!몃vc@vB$$Mh9o! &[]ؘk,+۱ U8Ẍ́` Muh0XµZ hygHsO@rpYUppI ;jP *Ɇ;Dz5 vw˟N `*׿4@ +pݱ#$,]T; ]GS F}0 H rĤ^E{MMHi gyn,<7|~ *K^9T+8hU;hDMKQX*Un=avMYXٷ nbriCį4Y4\?/zw7YzH P5im1Ulk+al Nko躺ߚ@1h1x%w8}Е'2gx֭WwCVS9",XVqdU6Z bDē C !IHϾ^K[K U1))FpBud4q |`Oc 13|qM^P|dB>RVYNXEP]tGu+=Zlv h5Y7XpYg\{+ʅ|,$KiMͣ T^!_e5jIX/FUr~bSce{&喤*^l%G݄j9aӺI*G4R18r3gp4Z0IG{P7@nfYLfop}/L`x*P *ZS=SP 卧[i"HEU|:WA~Asc*o_|Nر5Ϲw:H$;"[#Pv0QP m;)2 /KV].P/Iwc#UQ pTlxVo wώEyD8x#ަ5ᴾbA&IT)~(/k.+ԮNOX(\0iWX@IL~/ū2}VZS^6TOxՋo~磚 U@ X dToq#u$P[.2Nim @Ac>SC¤vﰋ%ڋ5#Ή X;Sp[sTPʰ(#3!l_sh%1cFlUM)ɠLĬ$*s@$*V$.܁oҗ~Z#1f3\_ b@is VlA$M*obFnԜ e)?x>w`K/8K"sɖQ,E(!Im@Q'#5+JYhɴT 'XDК/V0 Xje]>쑝7al.JZ ֋֪w5,4W=\qпAܬ5"CHw??O6 1̀P5'W1,Dй^O'~{ /K Q)F2&|c܇7įªnO_|^XniInok_ wsUWT 3b ܹaSa{p'"a)DXEGAL@d$"ph!vzVfDVjLz =e""#NaoR6a }p 0RUByJB 3#,L\ݷ L׫k^\ PR`%5&*'L, Poy9X}"bwwk''t0Y-:|YmhJِoKSv}Jh# j#" * )vۙ%6M^Xh2K 258&ɍ=l5iY uVWBS*5 W{rIC R9_P/uS$Uѷ̛7_]?|oS㘘 $dY}5.93YFD{h$Pv4[ADMbMAӭ;|֓vUTV/Aq! Ry%9VJWUj"Y>2MG1X`]`aP a;A*&,^NfCW?0mm ;I8W` S`8<~݇xPw _՛?dQ$&K\Ͽ u'"PHS W_-QKTAjZ!ooћ5lôՃC󺍍I%!<>N&)r0vPMttiXS7g}{,ƽB`9 FwǦU ]DZF7`|lMd; MaLvcg8t'_|~.D؉"x-o`Tqo?[vDQTc ƪ*3' ZT ;P4x@d 4k΋dn8&뉽rv&qVPz L+i!Z ns^V7Lč5ԥj؉:pi%U@<+xY"jwSrxؚbtc:k{"^N 31\Zs >9':%nR(LT}{>j҇}_d2ڪ ~#‹5FQUꞡŠQ֤1kTy:)*ӎ"'l3[r_7e9 b]9 1Q\V3duΑθ9$ yϕ2uWZXLwuur:fv|j^}4iCqöO Ϣoo߹OחoRǫu܆ɋ6r;|/n_wCld=NQS`Ӱ.M/nVV) ]L XJ_5Sn1m'7DKK0iM>ÓA{)"$7=E M M2mgJP" 5@hugE0wN(rz"&89l* 2Q&_O $NRAiu6vQf7&{d%R2 ƚ.GVBr'U7ohpB)*y{&B cMFX׹yb[MmY]NFͺ_~[޼=F KW0kʞbt6|l]ܠ|]鹯Eΰi `@Y?#0EP'KD"4Y8׽=Ti{ª !*;qQ•Kjm# @ a_+hFwa_FEҫ st;=Iڥi+l!v@՞3M?o6C%L4KoۃJS?kY{k34PR-CP\9A 4Yyx!ysUAwĈei)+#²Z`{]聡;ȆJvphGq$xeNk?n-)nhU`xʳ_%)4AU3+nT}FXdpnq޸-CpI}۷^;OH Ƃ 0KM̗_O"SPTV'x}06(WPKnV@3=v4$iZo>>o5n w]"EH?bߎVPP;R>l}OQ#u X2Nt 3NJM"#%mP" gbx6Ta͝1^{N#yOͰZf= yW~TסY:qGNNL*cȈ7t: hGt 22eF\)M5z TGHr0mPk*w^T`ZXj 6;ᆶcv?=\j@r$6+VPIkBO3{I T/2svƫ[@ޒJ~W_^<9ow SN'|qE|4˛ ٗB2Cq߼yv~gQbwF$^O-nRS&Ȋ'`xR+N.S9vAhdX=XڊDဲ\Kѓw4"c±F Ax ͌ 0)0<1T;[p >AHq_xC(0HHW^YN[ F~PdufiKZ iS@Yyy훻3ӫ' Dh%`ŋ)={$#j^^u9 |/yEL#b]no\ XN0ӆܵRW0p~t@uSGp[$C|lq8X,I$9"K6"WI-GXJ)m-pHڷ>j܅|킽]3 zL2Lapn'+-VQtZv >2qdx5H"Hn<;gpBWUCusvDep7 k TWMLSK=c!Gp;L.l@JUHq*oy\M􃪞[0zk\]L4XE8j)`BVIu4\w1L1}F܈k0oNXGX;2 Hm+wtfΜGgԬ1Jۓ/^u{sI1y'ONTE"#ugݤ뽾}IAwfktCfnB."{CEa!lw.{u)JA'In㓘 y_~ݾ|3~:1YB;)yug ky-[G0f`^/_zr9kD? 0#^M $DnP?`qtv*\ 踡17!2 vC$2LFEvH`.5"537ϮnuQ1 P3ED o?="bkVD%1"ܹbDov$_lchxbΌp{ulm5q^o+@IlLۊX'r g>mg3"WsTЫꉇw+t]Y2`󬎢_stp76c$!#cobxD&:!Dr'EԪߊ@ƼR w{/>4ވ>p&FO,"nN"^zɫ;=Ÿ/|7aed Gw7‘͉F3b5`~Rw" f:F.پAj)nE8_st}ԩ vtɞΰ/};8,S z*Hm XՖFǎl'٣N:D=aMZN/5Md6]'_r'O j0=szrq`8BBXUC~q{͓m;IKJ`qy=Fأ`2R2snb<8~vSDԱЩ^z-ݣǓ{-iGo-5I>R@v` $Ƥ8ݗkWȡXi,6 8<7`BW<Jˁ(ډEl~>#%[Esj&-=gX(&(r JgV;XP&GӌcR :RZ/wQ:BQD9##z1;ڤuWh,G'<~uk\xˤWax0a,S ݚFgg\[*1xX0qm?g` @PAuG;ߐwB'bP~]ufex; /?k,/ߜoonj5^}֑W$:j\Q$2UO0ݯzΐ fj dH-09ӳZMkamD58-_Ӷ FGNu.JuVŲBm2bCxj89T@<,N_&u 12N; z(@Ozɦ !R3~>o!r'DƂFjX\%m~sfka NA)b")+ as(\.E"=߁`v̍)F<b͛.Aƹ*G8ΫTZ3.,OǨ`e~YW\[dIW7CWጺlU7Vm}. ,ʈ9q7 8wSSjr/>{W-;ś籅Qxzyݹs4F*cՋ | p^:L> 4JBe Hf2Od.mh-0+8 EoIG7 sy88 ρ^tҪ5U; 6j-߃b0[X:vD$PkX~<hҥ]Cq$2G<~zNj꧚?U"{o_JNu[B{K9ʎ2 PZiaJacfgFV?ǽlZpܡ-MO{h+֒-w3ԗGP*E$gC5`c@ql /W~򨹖k/w WqjO׿_fi:/dGc&7O_ן_ej TNF Oy Q E.9[g]+D "b0 "ӪQKH ȁ؉ݵLN$RH3++IY[\,r@&ZV* x;]=!J]NSB:MKX "SwB@*ʽ0QSP@{1>HS~}ɗ?|ts~+m]p~W!T2ўwƺܫT7oܾzٳm;gwڣ@jF1WE`IVRx贎|rDX^qgW8{WGdttC8nrYgjЎsspl:/Hzɯd!-diKO`TWx?O?, 2 #pFi;{=( FC}sq]Xl$Ш]0#wM6紻,;p9FK zZ1vLL˽K3x |`u! oRXSI΄v-{WwS怺Àrh'>tX,KCLTc#ȥ-Gz;>}k۶$x֘G`af'U֜/>?{۸U aܟ;u[e"]y'Wq>=jr^YW1Ь>CǺYwۣ>r}S ,a"R1)(b#wFbbYJjX(H8VB ԒM3H%1dW X0][U j'?[FhHɺ}" ?oʳ W}q>[=a &y%+8])WPe#`DK*oR)<;is̱4X:Eu=k.-h}/z\󿞹C=iP߫;/[v%Wצc6r,ų9~ZLmC'FCڿ¹&ݿE֭(o}(x([#hucF |nxU| 3$T]}jѬ9%]XWY8;V\؟XNgQK-?գ ^h Vi ;}NKJ1=! O,E l0%)Am_+JV u8> m:Ag8dW/Gdi הchE@Oտܞ< |r\/k)=6ADyۗ_9r\?"=AۡuQToϞy>#P:ƒ:)^׷~؅+GdfdKO<;QƗP%zӵ q:pqj.mQN ,nzWUP WJarwZtE]e wڰ"bj^%R:>DA+( gx t0y?׏nogze yϞhӢBL U9QmL2?aӸ՛#-̙P1ӁK}|)[Qi"uHPCTwwX7iԨU3̊bO&Nɇ.&V`C@nӪzl,li[un=*dI.dӰ% F)BOmlfdf|Ҙ s;^ث޼zq_t?>˘'C+9c"'W^NWԌHpvӧOS"=plV}\4~ XxA\1w}V9 !D/hFWrGKBqm%%Eh%D&V$T֕lvL;E`2SK޵X܆G/n'wB2` ui/|{V)4䀜Y{O($Ad+.`]ک Um"੕5UbxXԱ UXԲ2&x)#G$ZU"i.ܙGjFWzZoJ=v:yu'oz=˭H;*!|wo;pex"y_qz|W2S Me˻O oO.1hţ{K[ޜ'Xt$@gCB6Z\eɆD{ef:x.M ey&7EFB1JP5֟, \rx͛?ϟ=,_Bek[\1wެbdL %rC$2?0 HK e6I$AkÍ$ o\$N~5g̈cYFh䇶W/ RW ,R<zD"vj0i`:"Vlap{'vO(i=WE[2Ĝi;=YO1E=M3A8}PT<ߜ2פBq<'Js zRu~-CNCI6"g. E0\:;,1Rc"ν ?*,F숱,벴g@<۹Ͱ2w+dpB־_*]mMrn/^~O6 iCvݼٳU誻Z,KV^*\gM 1$F"ErܧQW֓݀q'rgEe+iy\h.ʒ#$$Mlu/88/[O$[ ϒן-?9ٺlG/x }vi{APц#ԅM薆nzm [&Wo*!kBFYɸ'*[bD!γ L֌./ D!"INB$v_y 2ңLBZ ʥ>ys됏rcgܲ;2x,I.R1*+2dZ+=q U[e )8f]!3o1L* qB#Nf,i=>z:aI=PDȢiq>>󧱽lvr~?EX={ww7a!;IKQ y1k@r +]qh7!a0'0Z:_3%N&br0f2KL-:,.[@V'ʏYmɽJVI0R~[2N 7+K`% kr7=]MDk3GGraXy?ޭf2W,%fj-̇sؾ⓿Cф8.&N#G*,"rµ`#NԄ`:{+8f.fnL Q13/Z PZn1t1‚LKkf|6O+XΰN UBJxϷ,4drB?U]\"-f f>,LI 3Yrh-r$<" fFF%4/;eBatenUBxGHe1/5N6ɇu]e5Nn[BѻI|>|j}x?^?g<3紼Oۛk,I80'qsspsЫ뗊$WVJf8YTt$6j+8ucr*ЧDn? ڱ˕UsaـOy}:beC&T,gL?PBp!ub s",jst㺵}3mehj8ܾ^,#R-#F :aGx0t`C9ݔ-$nxnx,oGRYV5j*0Q1Aɽte=k2Us~MG7'}=@Y5$IsV6S<%)`rrBL;dll~y q*" r, -%2[lR13":JU[9S IDAT&b$Ҽ5_BVFw/Hr#rpVVHliNqB:ÇXx|$|М/z⋽xZI qc{tzf3-L utߏ_4ZkKFI39Z.3LM+r׫Mѥp.6dH09U=9ELE&9^*%K͢Y7#&EO|XI}qet! hx+mr"S$`3n–:he~JV@X$ua' ڠ6& s$9 %8[\.r (oRC9,#Fƣ<&DǓ3dm("=Rˈ3eskka5dV89I3HY9, 盭tBύq3Bjp# Tc˔4 v[}pc1];_d2nd^u#櫯;-ͼ>h0wsO'E0ǻ1q~KM6_~s{Ga#tHbAp=޿9u=IEf8itHx07YqJqdY%ROqN(SF@EfÊRalȄH} );#D1m̚@w'|ޝn[ gKx>r1L1<~ͫǫLAt-n!^-fp-ȸ:5U@Ǝ2@z|w9V 8Pro'.,>ׁHLvRzih=8{Twü3:0A>]z֯P^,u!Q-` g,ў.<0s$el[L%@f/ oFS:QjGTb[דZ[טdtZhlmLJvmKkm/Vss7vi!hE`A8w?W붬e~ E]eē;YOJX) '8sM<>Go+Ѽ^W՗[Eb*Ȟq%v- A.s!W@8Z-c<7qˠ!Z<&dhҶjۏuR|#>gr3L/lcP8iT)fn2cD2 2Em a9XroT\Rj[Bc쀠=3,EnSF @-`F &q ~k<$YZO<\@%&`Qq8`-SZ4@<}EA>#B(2.&ȸVL3ozZ1y^NLZ*DlrDwϙuh!nqA獫sywO U@e&.ݾu^'Iy:Q1^E8I*XyO]s!98@V59Jl@`& 5%oh敦|blfj=xo[q~ luʓqQXܿ_!~kf6`[CS&HjS!?*D ~I %Y]J(/ \ {C1|g#K lօ\NJvM.pr< f.+:\_TƫNxz MS@\TnTreUs$.mB3$TO{`O#T+jNa"$oei?i"EӪ_kv:]ybpZ7P-FhH?|Y:=78Hxq%_ٛ߿E3 9fSѵgi]NNKFN+BӔ/5ƌ>, sH1d8XP݁$dad2XZ~ .I ;nAҀi]O??)G0LЧ^=~󚦓H7.< -r2*Cl~1Cc :lZaVo4Y, LY@,Ok EfRηMm4x(&8 ֵC"EFdgG\QR}հ TòBSe[j <|5H1}+Q8H#N;\;*FM+OL7ȓ1Oì0Ō1s%_ܼ0-&WkwwwF?y$| <9XAs-miͽ5w71-> 5;<b<>n޽5apU{ݹom>%-Qg &? s\nm֗[ͫ9#a=b9Ib^}S};.] l]G%?6{^}~┗4B-IbM/ O˘l9&AlFۿw??yl}Y!6@&8\숒<#X=ҨZ DWt$f\r0’mmh# ;$D(P F`mww5_34s#j0*<֚ŖZ#8RޘV\~jFD_Y߮[oMB 8!ٴe 2~ûZz{]jbs[”NQy~}=5 zWQ\{Z hiކ*9X"Hhwn?n95TJ;P5-.%=6'7 b[h16egL *"LpO^l>Fdƒ]+M#{}"R!E3"GD(%dȮJ rZe1[A:|mx{|ŗ]A}|^>Woyأ`DM3ȅ&A@B!Lhrvg7R%&|P ])ެ':\3z\kGy$):2PrAo|䎷Z.HI=Rusi}?,ũІq+Q;0 p33: K!6J!XbR92RT \GtDFr3Nw"#AfrD}e:OLߕ0)l$^k|v5 #SiF͕W n&;S:PSSŜek3; 2dЈa [Q]aIrp'~xpY^`Z2'Iy5U՗vZĶx5\թu$TW/>{QᱲF54`Q1IMn󇟿yw;- ̲A#}w&.D0_cIyO1'OQs2eu@"Y&ãCÿ?ޟ*Ȣ;Ks!0凐+^_ц_+x8STD-ӍdY#YIrg:9:Ӫ18Ea1Q0y(I9n@T$a(ӟȪ'z#fȭSrDDZA";DfDi?aJq6af)bk8 ^w/VO^F(f66X|K+]khVWcj" ɄcHroʫA?',Bw7e]lIPLegŃ巜ڍ˩bDĂe=}x|ܗe6̱ĸgl,gveoE9adźqxv}ߍ},\W_ 7phbT(r^ʆiKZ$$ KCp/3BTxt!c1F 419qܞ?\ 6j 7u) \\\",|ͫ|v-DϦ/47Fv=Z'D! ҦREDz͘<2dKQq`-fZj4óo(1mnWZQy߲)ݓtGȀY9Ŭ,Vyk25Yw'c]ٍiUuzV-"P/9TKV*!A蜞 ( LӜOWuN0s =[=yD(:w䟦 ZfIsϪ`jx}?ߟ1pTΡHRFYE4>8GjUdM[z$ۍ 1>t?%LZ9|OMѰfW//^ʷ+а L _<ڀ)s"C+$YRY[3Sv|\0ƚ&QiI[fdiֲ5^%IR=$3T&3Sz(4͙dB;=  ZKHALEl99{e4kw^5_`Uv\%2/lYڲ,rԈ٪M걝:ڀ ނb}>z{x|l5X,Tiai~S&p7- [qۛޅ]jbtPz *h^__n5/EE[w_ܼ=O?w{;>!'bLlvdj3o0vCܷ~W>}\:@nMzGlꈴDr4̌6EPFFZ<吲0gz1gl 9?>/bL#$xb3F-f SUs^'9lҭZdpD2'N~Txs+l3oZ#jr~} 4ٰ)Qc;F܁YE g}}>j0Ab ]Ǧ`D2']5) p!OABCS `jL1;9fԌ+`-ư>c&9 * i: T(N^RgXӤ}~KK- :㋛_kVD5ѫ"m j7r6`Ejmy~\jAc&?zaL8RNHG߾鸭e`(FYqYZ[@= GvӳS0_~w͕ 0F[^ `W\P@s~ԁȝ@hrZW׏wwc+Pǀi{gWeː\q|>ڏno#%[+W y "76p1too{7_޾|-a1p15>}lxONt9 D &#ȸv+^03ēu]h_L [Y =˒ŗ~ǦI1u+<ҷ>/ ΅"v]I*)-Q zeO7ɜ{k DbPdfLrEOړ PM0h@-;]*;9.jDH$)לu$%bXmZXu5D"SAGu+p  \$,Dgw'?y, X݃c`R;}!).s4A;[YI4.jztތ|V1bnoD"P eYifW'ctaرGo֚FwV._{ѷ1V,v45${|yK=ԤYbQaOQ-ݮRLObj Isy3_Kw4LDjck7^;'EBߙEkNβ@ R2rݪ͖ߡ QLXsBy^yΙ RȠ/o~A݌#D!@ cgtEOmJtOQBnC2KGfgUQ|p5xTqS/8Lv{o-$Ia!ȎDL7 <@`vɠ'Ra*{s*fx&ILf^N6.˹ 0Ui8` MJQnV0 M)fY:DV0V5B0?|l!I=$b7 D*ӮM/kyk5t9+Yv>\!+:jtkX[Jsv:`@>ܷa]Q+pNg^|ū}Ki̙\_ 3OCm7ԧ< +J+U< 6].5qB#"hOz}1` _wp? 0SZo*:bc74~Cq6+ f1ɉ̉+`+8Jh`E<2̆1<4(#"11^6qqZ]e"vyKj2[< (}NS>hV2~U Os G6 _ȫV-{hdYYFLxʊPX^ d*!!5ff/xi`H-IENDB`dtkwidget-2.1.1/doc/images/dfiledialog.png000066400000000000000000004216541352002233700204750ustar00rootroot00000000000000PNG  IHDR9]{ pHYs.#.#x?v IDATx^|ƟMFI%BMJ`A*v/~vUTPPiHCoC{wf7I6y[s*IV:x3 81&`L 0&h6mڌeHRH$᪅xʪyk`L 0&`Lk֮ŧ~ɰU;maHL 0&`L 0&ZcǍެgJzh cL 0&`L 0&ԓOBT*Y`L 0&`=CBn `L 0&`L 0"/&`L 0&hXnF2&`L 0&^c ( %HZ3##H.nCCڻ٪X%ՙ"M Vez'i1&`L < ^we\P("PZ{؊q9d2Y}-_B Aąt*KM)̐B cn%:d400Poܔ*nli]Dvʑ#o· )Z3L 0&`& Fb,*B$r]qYYY񿞞n택+A*!\J?M8<{PiMg%/O=4nCrj?׌Irՙ`L 0&jC@Qqi[mՆE}:duj.V? W9Y_vKXۻkX6#A7&>7`L 0&@#Xj.]^WܪU+<쳘d.[e1&`L 4uB.^o6:us/T'MԠW ?r,h'$Ʀ~^hz2dĉ\LX:>i` GwsNB8pә~:_qz] 4B^Ս#5FtN`$''#22R}Au{ׅח*_3+PHbu{ A\&Es_бC7Wڙ^ʫOx.`QrS"*ttnхj&#m%H>/G1>Og3:K*pHT#W!mdj My 9`L 0&tG@tuD+WXbokUEk2.ֶZ2դ} T%Ytڵx饗`eeud*S/`FERqCF*S,khQëulyGH`Qq1A3X.VK >PXZ`^ kفPz(Kdʾ O1xr/^`L 0&D@D{cߟYm !~ǏCu;G)&ܝO8~ ̓N7D8XwL5ۆj\u0ѫ)7p}V߆Z|/AܖW^׈mex'PG @%ڄVj<*J|+591&`L 4s"ڳ_+ڵȑ#uP9{QOڪk՚[aHh%D6ɸ `ц2,Aҙ6''-KPXo5,5Y tDpG>&Z<[X%ֈ`#2JP_}̤EJ$jMnjsq&`L 0&K|+!~?Cu]R7Y8aŖ/_iG* x%/\P-FkthBx搄֥m}F^: pJ0haDǕ0%(sP wr *\)-yrL 0&hDoC`ݰWD1f̘^e,b%%5._j4ni&IksuQwFZ]!`k% L[ww2_G}g*0l݃jT|r&`L 0([nw+0GiiUgkyThNչKj|DI{޺F,RPY`L 0&(OQmh  hmm>mPyZBb٨j[{6H&`L luuOm AMU=wY{ƀͬL 0&h!ik]qqMڶ5:7m׹XJ[ڈtFDci[dzT<@j]jNIԹ&[%&Tssj<ו 0&`L dffDz׸bezz:FZIFcGƮɱi/YEb\\'ei[%RSSM)5m(fM#KF>N*#oYm+`L 0&<aH-]SqwmHKKSw^lxIjC@BI羰^pc!ʂ\.oAX~)P8.EZQN)&`L 0&P1^Q*<(kt5˸X眜1TC MHהozM\7&`L 0&h8Vwn5`L 0&`L`⺜`L 0&hX~V3&`L 0&Z-˹L 0&`L 0I@6Z&*n5`L 0&`L 4glnνugL 0&`L 0 gdL 0&`L 0L@/==9ן`L 0&`L@+zVZeLL@WW)jWp:llltU4`LRpttd:L@+|hIg>lӨkԳəH$́ 0&@~+⇪p^wr6>"2&`L 0&@"IuW 0&`D@Y˔|Z&@`z˅kC]Ҵy`Lt'ѫFG{VW"zR(a^(MB%eބD)BBMNղjyu҇My\Z`\Kp|X#PFcwD̞7r!?l. /|J&CE V JkĬ|.Cj$Hyn 9Wq Cׇ@.ᖤ=Di,lyVde-ۻoBi.fz4ۀfGp33蔀 yW 4-F1i\`L 0ßNjUP_ö`1r&Xb +K ӾxOi3QF4~ϼ~ͼ V}E[4tlN:@k{kKl=gHRe\ld- h힢73}G;7EG0,l].W)UV1>.هӑ qۖZzi?vb+x=h&LkI1&Z#`b¢MD S[BIU| 8|[Q;9C ~"R =s x#Wb!F!@]EN$ދS7*#J8[{IRX| @WE<n,Z[6dw6L[eAD;v{40,ּ՟f|iiuR$=x N^- |:J0(wuU;XDk<(ߵ'nd3BFMsr]go߾]]؈#T}X=9US^h/qϩyj9~(,kYIB|۲{FF1d@bc^z f:l# "׬Ex摄6Dr K '?eB1&|KpJ4Qb8vPQJ p1 n0:uFOoA|n5 Bz~}A3)T(9@& E}J.[wG!hmk}3X~dQn17]r)ʤ, ztD2^PRIYHK.AL|.mvCBp[p{`?!˱(}wT8̲WWr)^LO}%HyVNʔ+?+ $4Ab k[Ce ;i7_u5Ը*kq]#4r_FreCn nUP,e@\At;xk)z 7mEx==+# yQXٻi|yÇR >h 333߿ =oԺ3 W2)`7uDZw@{- o061QUT}f<$7/{n>9<>Rr%WͳTZ^ K*Nj_0|hHeh_YgȑAX+6yi3X쎼Ě6zhe<ݚR5`L~:H`jai^:hݭx*9LLaA0C}5k$&氐9q4/AʮSN\Rg̈́]3Xe b?3Àg4% ,1w4*57W.5) BWFMb:*AVZ:$aiiԶ$SsruN*f<-tQNLZn̈́΢;İHly yLI@֍#LJ)LxD@ `pbv 1(v ML 0&xjk RNWJy~`I-oe黥eVSrAb}[-]a0eQtAm`hm{@( IJJٳuV=UKRݸ2pY676l?ahPlvl_y5 "Bq>CIve.ŠMje N鴥D3 Z[OA0F̤’\g{Z]1+LfBe]VZ=OrɩS lNz=YbD;fm`<#ӽN8rjy?g* O- <_ *U& z۩C V^&pؕCMTK  K%YTagHЙźЈ ѺPt:E-916c5Zv7@k$'wCYRxt@o{1]W3&CL-.۹~KԮzΘj"KrhYaSѢr&1[niOkL|0رm Sw+k<=&N4(,~0mDy 9Wd% MIz~'(0])ZŦ𦀟d7y&q5I[u@nl_!s78eBDg`FDTy߈L85*ɹžAV5*\$>GKp"YS\{ F@}x y>RpG Q9$tI5Ը@瓰 %D%gH7? L>LրTXEB XZ$xOqgp`QoI@TaWp:h&`L 0z$''z<0N{>4bA6ujmSla j[?^(~E) IDAT ] ʩ$ |2-cNY^$)LV?$qm,ŰR+S[:!AR#]H[ QvQ9$hbM p %xbU.\:V7k tՈO`ZC>l=ZEkTM6nP$H ^_,Z}& +vZ 5#du(lʧ!5]I,Q YcG PVI8OK7uD3$Al >';=ֲ"`L 0&@y \޺{3cX?ȋ5 luJHC' H{T\%5Rc:UqP1OoBnE-9Iq&`L 0&ЂHl}^Y  OSu&]IW^j9]Kkr-A;n*\$z|%^8P;iLEz4GyJ݌ߢ]hQepHLFEu;!`-pMZ7Zk2r6hrљ.kY r,i$7Ra+@6'^M_pRҩQڏ;+ϩ4$777 aO k `l,6bҰg <ۢlq} fu =U?FWlOr> 0j qyaSRq??% v-siU"B,/=׷.ہk]OUq,Y`z4St.&T]F~ٹDQ_}Dr'7}K0w=R:G'B3ٺT*Q_RIYIu#YE]<͹ݵy{A*&xυV h^ "!MA몜Ek# {VCdQhcqʌ\_ qjE<~ S麧$%@J;WghΟ?CCC ++ 水Dll,8.**Ys^7fc5SpL 0I)xSr^. 09ĤI0tuV)p{9Txw+bẀ<g/Ʋ#޴#<6 3xz¤RxDs[tŀ=Z-ZP JxlsM*6mJCCyeBd }MdeN er]_߉?oz`҈v۸iTPȋi<[}KUyAh_ c1ǖ4kkvkyjԱ8=xM+7mt$~e`UVg;|oW7kBڡp ^/{o$[fOII a͆ ؠO'Uc©/ ćW:; YH>[?Xt<\%0 ?-k3&P#*d_،%2g z~o7a%M0v?J[ 5 EA. La,8P&ú1M/aHUol̙3Gya2s;J-ʡ<^ '-X?mjH^ۺ GۡxbD'ggq-L qLt,?#ČIJl}Tû0'G<`͜ X(ɓKQu{"xx|;yվWڃ(5cJ'Td,:OM {AwX5^_5ZhBd )W^q*/c+LW$ҙLxA_rt+Yŵ&4|{FĖ/ܫPhKg.hv{aǃR$cϞ59D7yUz,=CjݜKy(#> +nUTTXAwaW`.ɩ^ڮJ߃& E+0Çj<}/Э[b٦0CGZ+uUQ"z~p8Vd_?aC3뀐30}L uV]os_ўۙ|~ ~36k7TLlXBocE/i@/ sN]GPߙ֚K7#xpfU&bfWZ5EEжseepR[[} D}˱ _ʤH;)2`˒EXs &]ٗ@/Gza"*uCsh_jK{ ھĝz<v}Ǣ+K0iv CWyPg=v\(B)owz*+W"z,} 'T̚6m`y eM'0PPг!, ހUR~g BnV0r!.8qʵ$#int{tzZ[i$D@i\A˴>vAevt\2a?L'O;vmqꇙOU%^{B' =j*"\Dt8K^M7<ȣgJ*ň9X:2sb ݭWwp%∾?(ڕqF \:cਁ]ƚv@:j&w2GXw!e#HQMp</X1bow Dbmom +^ f`Ěߔᤤ$o"o$r -w} >Ttq#>]4/78P)Sqd5gzG_<ĠTSd#=EVU˪!!KZAMsank?W[sqޫ~iPy30a4׷4ōq! ]8G`@ 13F~;<2g.5c8))Nh%džm0x:ML"W0KƱ5qѤ&?5=u c G}98 y A>bB%<`֫`ZH;Rr3 7`qU{q_VZq3rtJǞ" G?}8K ƣUl{0'zhd8эԝڜ 1헿A_}> LĘcI3%^~SuW$| +,#ܛMMME0,!Ś`\\\T)㾞bY =U攡O؂$ìGo'YdѼ |44p(4*i=Wkvz@J*vcGXqYiCGO:KgM6_ӿG ZnS0 fG NC0Lsa! }ݠb~N4`qĨak1Ug1#DeQX.}/k)&&&u( q=nՖey2~&/S!>jP[FLL H>#׬i7+nDFeRC|*'Ǝ5ǥ˻l(=GEO=SoC36T4/}qE͢bkzqh*(( +pF.yxsEP!I&KBOzA Q9>q:n6[]m0%9=\}|\4믖@j)YO`륒+cH'琧ŮNl6E+8}> ;,Q쌝?㫝Yݼ(%L,66֐'J8ڈ>@p3]zad } \ȳFs`A1 䰰M+;Ԭ79Ɩְٍ{qAvk?`~Q(탙d$W„e`F^6(}ąYy^_Y(sO c˺ٌQCuׁ~0$s@!M%Z439*jN*$S{ZIV3NUNeR:&,e0k 6vh]O~x)͐^_ ҭ7aql@Kc_b_!8zSzVt/NX_gcг,vz੗_#-!#Ws߄uh,$tj$K`~4=~[=;HFmX eZ<"w0|o:?t`Z_x/>#)A5Cyֿйb*c!cU%8*;OZQ=ip[!ezR++מd IB1{5 zx :M8="MXꕐ6Bzst3 IU{~a٣`DVΛJRRQ,b9'lSC[wÛ#Ƙ! w~Y0-H5CfAi/0~JO-CdlCULZ#^z3݆emS]~&böcNT/L@ZqRɝ!u9qcW^ܖ$sD)3#g nމskW fCشZFND(H< ז|Cw2%&,ځDу:>蚧`SdL!*.(̋=sjk=;;b?NUz9(p,}{R%}Xw ;ƭVhm_Ur-Q$'i\f,J@%9͌]LMXW%s1CwYzil ߭qC{Iok߇YilU>Eo!/8[8/^~b5svބ2>T[~)c\|7%G~|OmhhWWǏf:`a"**끅-ZAA#*')WR|ՇIH\R%"-7U JuehؕI+EPO+158MU* x O:>UmC@U_/`S]qS"9|µ)C~z1WkKOU =|}KYɌ,7Gzfk#: H*O#+ *νK`fc#gplG54 > IDAT|1¡KLvoD.np {5[J,IhVzVѯ΃ gKL"$ܰ GжR[89Kp:5⧥Hd[V .JI#2QhN}u6Zufa5y̘K8x8^u(nw Oz nE1&h7joUv:RpD aʃLJ=%)A-R1yIU.wE>AS>_˓eaK1{zoqvCG&aȹq$Z!]`H3[xW9+Oq,v}*~N6h&Dvpvj|}zF/ Ae|<; :PgwzVʨm##uOϏAGNKrEի ~aСݻ7zIU ,UI\5WNocKR{Z:0X7#~t-Le)tg|QgBn` S=cr< M=VeU\oo/P9x! iQ\k?/k=] Mchoe^߀ysCIe+)BfM4YѺr1!2~_eNw$+yZ0LƎG tWBwLRYP I۝,]#&e Ο:__ =0hR0?#2vҚv4ƺ+|<5U~4ے<14 D$&"><$Ğ o d#== d5kS3Wb 'x.Ť"#5 >lﻁ۠?p>8"i Tt.f¦[{i phȲBfB|ݵ_?$%ΰ-co!&!Ч'ǕTWDvΕؓCO|CKClqHH.#ac4u2u2q!"Om/2;;#*qqB,5T\wFiMg4^ңČ"(Sn"\b M++ d+qdTN2\"`any g!51b ŝYإ&Mx&jDnf 9">E~,h{'>w~EbE-x2QXT:xG8=|[; 929**gn {d 7{.ZkD"@Wb- hZDd^sx?F<tC5-ׯu4 ܷX sp:emrQKVX582Ax~<=z_I~xSlcgMzuóh_xCMaԟ7҇~^󐝙ZIj 9m!R,Ob~}%?u=NlނEA$E?kw:ڨy*w!} pq3ZSSk ;\=*)ZX%ș:NmcHé/A-ڇأ79Ȳ1jYUDd%~Y֤[˰)x1 '`E@7BlOCz.-Ȝ0d ??}kXt HUzLJq<*ۃ.F .~}0m?9RPtxq.aæaȎش( MY~VPL 2ӎe|Krc/4C\>|{c+o=7ŴW񆥻!q ĄG{0%R,z#E>,Xqζ0~=;=6 ;XT 5AGZ\oYđp .0dz+콾.u]/MA PB﯀G)^CE)x(USߥQL9vB R4ha~sk7 !p>bƆơu[nɺ};oy67|i=;niy'~#3L掞#~~FOL}ظl+M%cYS},(i=pa?8~B:  aUhEAFɮA;$FȹVDӘ;CtAxCI$vƐqoXnA~h}֋4vqQh˾I#)*T=ztWGv&zX\{i~+Ao<%zgE@ޟd[oLY kwpZs=onO|~ =GK@?@9R_46@8iiB"9sF-xa wg!zeXB(.Q5C%r3o~YUOVkͲLrc(t}i 骜F@d-@!oG)Ȗ[Mq-]1ȵ*iU8}XUO`ٲ$i `+ml7n,U$G=.)Gac2v}1"&}`^<s] ;~(åX KK#KM(k5SOaX;_|g y)Yʼn6>{7laKqw {jb[l59m'ˑ>|e7~jjX; |Tpss=ej+XXE+]FhIm^#&6+@"Pp;q_+骜yuþup3ձ8Teµ)9}AYqLGa?E c#}U&ƁgG}/D&#"ilw gFwz`'fa ww+a{5ӫXV(E.~<>A6'PL 11Am[jUX-/Ia7KZ-fL ԕIxC#tUN]3&P5=0>b螒ĺ;zE֬D=ؓqcvm #kͱgޚҴA*ݴk\SȪ=lE`_NXD}`{پB`L 0&hj=Ѭl U pVZЦB '&&YYY{bGjݺu5W 0&`L 0mZkS8a͍)m!@+7--MBio7{DD(}<VH͍ח 0&`L 4evnʍ5M:>>JR-qiEME"\B +X Kyx7\S&`L 0&u87zNF$D`L 0&@% ׬ʶ)C|(`L 0&`ޠ!Pn`L 0&`L TN-|e<)I9 ՛7sbL 0&`L -|<X>ʍbL 0&`u"NJ-Mg^L 0&`Ln<|f&`L 0&h@,6 0&]XTG~/AĂbkEMb_f_Mbػbņ{~sEQAh2Ν޹sOyC!`0 ߇Kaz~Du -nF'q C@nҪ n~:8 K13#2K6 C!`0 C)l _'8h8-H&Wvy5W]j;`P-ֈk9RYa0 C!`0 6G:דhB|8rJ%ZRy%W$S!ϯ>Vq"T ePë !`0 C![0!pyٷχB@tt4% ;;. 4VtJJy ?Ր#ڊM7Nb ?:C!`ԏXϺVa 5W;M!8! k1_7cxVbƏXAvS yh$RsFnY5zP5:>W5Z:v ɧ䩓;f 6mق3B@"4F s%rtN =YBJںR2]qc9T6\PgJt)`0(0oFk$ -G b\-@*LsD-BD^M_Y PeDTsuQyO5EdʰkYJ-hM-WS$n@+lc3j@a LrH%™$9A{nI)bYGڥJLqU#{Zd)ƢF@Hx1@4Gq{k*oC .h_)H6L7U,@fKIqJˬx6du&aӢ$ȥؑ] I&xwD BK9A5JJthg\ QI(D n/1vSCTjxZ,4"Hhn;FU(0C׈mě2\N>G-W"жFێ2ʁ,r#$F#nn <㡁 jtX//eIU#ܲCHK\T{L/5[CO]h-JRɂ܌LR]K¦;Nr!C'FǑzVfe# y p@gtUNVd]7Qzwࣶѧ9l:^!)ۉ{:I+Qj|~zΦ0h>bxkk:7b M:'DT`c ct5,аF AQ~9Xaם/Uhǜų'e^i_Ǥ֤ȚkЛؼ[4>9Q[k8I`$0ЁJ!eB4=T p ~M]1h׉p_lM.R1IxpE[+oE ruӫ88 *6If˰VH (t^^W+w-qyup;m%Fz}V:uPa 8Py/HyFd# C,B@MT%QL2.T>Fb}W1Nf} &IG Λ`Y6E2DA(Kr\+-H[; ȰYϺPn3!a)­0ךnjPJLbc*D@VdP{GDc|tIb$k?}"-s:r+I&ݨ5٧aO!BVwp=t7GǶզQ]%8J\*C~i =1f$ϑBQaFXr \,i$f!UbRM2/*)%lE]nWkEbKID#v>% Ú"1&'!RSxET~ë~vKZ}$/#̝Bz4= o+%O&CGԂ pB d*\]h"oLxSE"uGrd Cė$HjEHv5<)J, hƈ\Rj"gs4W;W!UEr|J,;Bu J#3%)KoL8S+EnU"zye*B_0BC](KbTxp} IDATn-+&%aUx7jMxoȒbBө> 6Ž?/b.u%4 RKdjB(yb?"j1I/8cl)A)]j&iL OnqU0St}y !|ޤ|LPpR'@au":KHF{]!<Ŝ>/Ÿ<ک+@%:ٍx Aͣw]뻃 !ETN2}}9z:jaZ#/p yq]*NGJf 1vpu@9d cMnܥK{}UMhmPbuz_~έɰ8nnfQidh3F7" GE/JzDb9RD Y*Th5aR+gm rʃF"*Y9Zh틢J `I1AP)R&71n\)0(c,9\‹m$H̪FUQ`C_|bڠ)@*7xq=P2C!黯ֈ6x 1|H28g-eSͧ9j̡Wh1nP]WڨcF׸8H= {DZܡJ1Jw"A$xIIB#Oc3xiT*@Rl g+Z:T {9N@!Q@Wkw{О"1:!W aLTCA 2l7a9ݫrR  `d@)H4R‹4bgPt}([i)Zu4=*x^NC@Hj3%lC(͙.\5<ѼNA{B2i]&#\촐{ M==g ~UxEܘ(iLn25!BJ\06"AeV")4 c-AELֽt2xֈZК,ПSt]#Ay>K1.>s+y3 + fB iptu9ŬOAI)\Z"W B5*-|q(dN0[IYMPQY|vs)D-ksĬ,^dw lA~ro$Dǵk#9|[*$g$(sW5Hqݽ3emC^Wy=%A뀒;Vd8X9:W`{)+tSqb#z j(kqV;%LŢ̕ӪZ]b%8J|SyL9*xr˼QjkFx"[pMu"(J~:2r@MY>yێ ͸N~gK]B\xF@ r!m*Л 90F a6M]M-)m{ ~7•^n15:G~0Bk%3Ի;r*)~t ~u N`soQAatpz/X,^޴Q't%|=gOC?o&[,bs 2S 'Iȧd'Z>)tj y]9N-Ȉb(&UJ(;%za*3 3oO]\)NDgLү`Y'iSh!D-"̥$Xo*suK:RKv"y3 _bc~Ix5^N5% c1q*UqT=j`0 ޻vpzu;)ZAe(JiH7[\)boq^DOSSKkYMA:ώ>_VctޚriG,Ɨo=EjLegT0 RUc4D?<$/(CRJҦ({q:hq1g|A$ga^1|A׌%u ?J(&Վ`%%4:?˔^+v*ѣ3a_sAUDSe|,Re\\_h/(N?֡_J}:)ku_)Βcd`|.b{{1FeHg֟|+ D&<1fet,݋{%pV2KU/̐KN_:PLƖ yDQ%⋳[%qh$Kkwvùh?hUϓs(2EK'e$TQ {`ހqiӼ*ѓ( *r= iI9ѡpsx+X,ybVP=þv=@@fw)+\ڻࠤx+P~s?<` ?-I 5DJ{xihO@K(7$K-0^M{*r)4ETR`F# ֦8|i~-W39P?,A$fI$Ɵ={b4ݞ[XS8im7eh <|G[<$!`," :yEJ%cNΞg#X_{Pܔv9&!"I,' RVG z kf(/NMjQF%D~B?} [(cK>DRO{V_׸4D3/tTnD9YŠsr Gn䛬/o޿ .$Ii 3pI/XqBeXwzyc cYtwZ ZBg^xO"eg8y+(bO`9221܈?2tHR@LG1 ; E94AH?%N){vE^}(K1(2e±謲B޾h%=G6ͅFu JZ{!Pvߒc\u`0 ?Iy]_;Q#q].<rOc #GWq#?xj:;:r*&+>^!DHa+PԝE`s~_Ϭq11BX___mxS(!//~Ƃ' @{kfEasZ>>.sg=<tQ:zsۑwg2j0 C!`0<MJտ?/ftD́_W!($W&`0 C!#$0Sh+:p#>T6<C!`0 Cx4@Y7\>,gFf!`0 C!` $ 4!Tb3 C!`0<wOٌ C!`0 Ce<hH#V C!`0 @mC!`0 C!W mfd0 C!`0 5`0 C!`0 X 6I62\ k%zbӦ# 쁮c C!`0 C)-51@`,XXHf@=}BUf0 C!`,LnYYo8://e@#Q 9ixeZH,N 996)C!`0 G ?JwA > /7h18mNMܡv~Ͻ/`^\^7|Yɷ L+rPjYt\o$UVϡײZm1] (I ,-UK#nD\?)Ω-GT C!' FBxdT T!.:rS_t:aF0u~N+ɐ~φ: bb(U3?%ߞo! r*ıH;b=corҎ% 'p%$fk`* ]oiԠ1www]?@[;r~ֿ jͧʯG`޳HSZuab"^ǛQ[VWE3/:໺ZvPt\ĕ:x `(qI axmr0Uk9~ }otyDZh3ytJlm{2v%|B1,<./z- c؛iGWpnTXW|۶ xRxݥwͻP~ sZ54uQ*$)Ns>":"oe j>\-lrX#TW5hĶ" 'ѦJ/+8ջ xl\Pު/gF|DZ @7aJ\c.&W &'/DзbrbI;WQx<Zmm.$: shQa`<p(/ #Lh+۰}GO]IlY &/Gڪr(&0RnZ7?i 6rZH 2%?ľxrr?T^؎uxnFގq~$n0Fă[v>Hlܘ'aI6No]1Cx_|U[j& v:bu-h ^qlCVb/8fEH\l]N)pi:tv[nihU?-8(+ 21~gN] L䷯Al0a\(lx͂d{YvU<[\0|VOKg L:`ܳ.CAyٴ Z1س9}G=X%-VLǴq OzppE~LQӢ-Ϻҟ+> ƻ?Е\靱p'Klz%rmVL{/ƚg@A;ZG =b5؉ 2r:g 1c':}^C7i^+v=BHqDJ IDAT̆^9f,}iOwCWyoDʑn3 o:ް*DF<-+N{ T8s|HR˷o:○¡TcwuB^헒*g7.ƒe!S>4lj/F/2AРxfJx6`wf0n0~ /@%f*T <!KЮ%n1G"44E(0rC+/؊w+ ?jYoio)Tep]ގȺ igG7'![؋rq08_Xp2rX)'2Η`x6p%ˮGu`0|lGpW!ӭS?.,V\LBtp4tSS0 }1Wm9G=ֆI[8=Rb2 !xyCΥu/0AH\F|a#STUB`WGGXUC﷘X{Ti#w^pB9,`#; V#Ͷ 1pHG_gRSymTW_)ND#_慮#](z;j "XIRv=_)wuLXq&zQCDeY)TM>8?1쏁#'BAn3DhqrrD6BVp iZJ Jq׊a:]ktp#6vK4iJOJ˱)O Dk `|:NBQA>N D,*e;5‹gs8M:b?:7“{UMF)\g8 )Ԃ/bVUR*-p0FJ#!RgUͣkZK!;˥99>Rote jX{'ݻS<502Rqp BB*2JUbe `DŠ@..k  6g/ kT 8؂'az"ovjC?<W#bl{ a+П4W>Z]Q>A|L7],=Y PUCe ʩ UޭT5ڹm4D̀k BQvF: rP+$J±xі Ie5GR%D\I͉>,ngcЈ"BnNb'//Ҡ9!|z<ȣ\X]H~/ 2%7Nb58D4^w*98=V֨| =ѦVI<|w06L™zrM`azKL,`mmAYѠԮ'ۮ#:8/R튡/cŦ\a>ϵ9 Zs#2anM2mkCUE98Sӛ@0)zL(ȭy`3 -XX#v\JO~9}spW𚤻1\ǯdS(OX7O7D/="hʄ҂\X٘zD~s>"ҫ8Dh;apa~;Js^P#RPGrQLV-SKE*3K];lأxlغ5o@ 2{XHg,_wǽӱ܄D۳$*$o\m(o=A6p z Fm_K=J.q1>Nķ -:HT|X^N3XSO)؉m.4ЭD1\tAHֹ#Av_J=op{bޟX[zD3W7~@>6Qw̜D ]I'Te# nbSCƑh1Y(T!QͳA>6 ! E"Eeq㩋ZRRx$aRX&~E5ؐ^qa,l݆{0 ɫjN*'_>T2'$CL*Bss.dM1g/;70IB[_ԒJl̩UhV$1}n(lOA 0DW/[mk t$X6Tqqn䏘wp&gW9q[!`,0 _:3k<\]({K!n&뚨}@1=&y90 ^.jY7Hyx&llz9de(P [&c:HOےh./w KE(MNNhiO RɈ‹ 7ݭ $Vp!6Z$Ƴ  ܴ'Ž0cou!8_DQ'shbYgDNdhm;b!mѧ[4>(IB|U+ 4Z9Y|yKy ٪zBJPXCYk[6K'>>KN )8={'B5}.2 5E[GT`(v M"#h :iu+1#9ɤ< r%?䈖#%FЂחdd! ]uU{pu-\ 6'IFA~Rif).gPf9 9D-8].9 aX^;Y[IhdD@}yɵؐٯLXk[P!\i!Fp,#m p9XVhuB򚒨S+AzvBޑոs{+u¼gRwSPFJ6,|avuBp{һO9F+WͫO؟, RހkB~4t(O+`„۷{b͚r9 +^Kػf.{M8&L4–ūp<>I`d1R3Qz)!ƪHNKWTAK+`42 GW// sQ!C+dDE ZYОEUI! KP!oQ ( qEGP^T\73)V~0Fd .EFrv&b"N!ƶf֎ {c* '5J-& qymg>E]2'Mmyh%"Z 5Bط3څxzRh)VҸ';;UeWq2cYHxQY wj}}Q9ѻtl_3rAUr^F7ŗe~tf?NdsP]5`g{DHP\t RDPwc*%̈́ F4F &kj}1dJGг]r`'1C%"vF"@%-V#*:D(滒rnvq(N^]1PTdg%p鎎yH{ZcpC0g ѭ59O / ]qhW$2ɑ=3(GN%DMwm=Th_˦,'d!zuЇݳoZx679CDDQrWũXxC H1 g5F6ךϹѮ]ѝ0Tp@M8>m(Nlʠ4.MXm_SjVwx(((tJ +xB.}"Sxcǒ ^3IS1p*!UUEa &g4¨U(ps h{!X;!:׬Ċb;tJ-z- o_o`{ciӺ~l6[m#dsF\b"Sc<&Nx|([ߍ.4Y}"ZC֩*PZ\o9o5~Ă?+ʼd1?RݖA3G( /"$Cǔmf%Z Nx(5x"FL`ħsՠR6,s}uH7DRh.m;S ;cr?nY0Vt7,B.1ehj(섄pZ`ض$ u&' NЎ: Qܯ^ g3z*1$v "?1F5珩;`Pdlߺn}1iRgč9]G"<{/VCz-X ґk;<f>1y\CYXpeAc>S!X:B8#6R7L}i_!V:02x X .  SF8 QuKP*,}o0M5$X[]bo%dl'va0`l0*Ob  zNRyuY]tƙ3!un6{>Z[8\|!`+UC{[<>"G1:S8I8Dy' xgbT¡?,cق?DzMs/NGO:L-F}aAA>qS*^d ŋ j"20_T ih%8zkĄ/k۰'Ɔ!tMیo#'᣸Stt 2n!z KkbK|;̩( 0vu Sꌨ} "k%Es!t[YG܂6nfWpc*1 A+RFj`2A@k~ Yx3V_>Bhal^x&]\y;,'cfߦo={{t:jە;w[/K6!TkĿ'@EEN9ٶ(8wjo BSNWFXt;[j:`&t~;_`P?&5yjl2yr)\C* ̺]J0_4vL:C!!P^A}s!zfûs'Z )CE59[Vu뇧CY@Wqq%F!@piK@ZJ b]{HB;{NNI;Ϸ3g AVQ,:nϐ:[J lnlM fp|l{5uKoW&=D\o=D\W$ H/zCx^E}Z_ق$ D@Ǿ9Nj-,Ō8tqތGI= =3z 5__N#*(ꕱ.-Yn)%‚+;ß7:1byH$ H$ H0JiiZضħmǧԍ>hK)̙3???QNmHՖC"RHEĞPy9jrD{i"Aܡ>[-dZȴ131ٿv3n IDAT( w zXnbj QfyLvmSZFP. H$ H$ DL (~ :t`ƌ[xy{geF ݪD Dyj _tCޕq/?$(q%4m1%&CToǵvb/TdG?-ȫy.0Qy\9 oZhSYKS`7|il _$_Lԓj`fΓ~$Ԡu^l-e䉳x_~Ƿ:!;\$(ݔya+;7LV3dErqvĢԌnST|]NdשۤЬkO8<nDyտBϡ@fE:,j{϶8߄Bt'/\Fd F~4WdsI.]#ئ/vô)+X$hviw9$N]Rg|+&gҵJ}̌ʱCw"1NSaFMu.Swdiއ$|6(7^yחÆ䈷QKs[gB6=w&*L$0:I!>\͝1)/E|[7o`VF#V\|OUܣ6";.kWb0iN%çЉܱaAwPUߧPfxcZ~Ub7.С9=jOIE }Fr._%@c,P{t6Ѣݤߞ]~<YeTEZ\":V¾W߼͹?z`%*vFǪEf2\e+f,]OA(iD<_\ֳ(ە35 u`܀p~5.ƉE+Y~Bۀ1 j\Iʳ)R3ưȧ8ɚ!8x ;`ᷞ- 9ݼejbaߞ쉯Nic|kRpy3+h55U+8Qx,NI<.?dph^k hsoГ"ELb^MQaZ‘QqHV ;JX},%qzίK:% -cct wSkɠqcS'ӫ7q1QV,Že%@|؝a3aQv7x AuOm۽ۯšʯK]g6:syI "(:+SSP~9HL^GTlIe&gF^[GwG뢕)Fˌ|47fsrկ,r*RpЈ"pDFD U5K~c۷S}X2-N_U"`S>i t ,jM%yXu0 n. goi[үSq K`@'?m+E'ɣJ[%d77pKWw_eg 7G^Xq12FńޮTPIJA6L4m~1By}!&1mt28=ce,wG4P&9[CBf5ƽ5j(rߣwљuM8M{8z:I7c }jW(}2M"cK?ܿu` 9^rIo7,d۬^*_x ƭ^«u&_MLv[YkSur6g"  fz==r w~!7-,Oi5vo\MA3s 4k}녈GcPlֶANJ<=Vsf2CE#ضԨB[.:ՈZx}2 *{WLgYlLUt/#BruF,pME-gg*WR.cj;KtꎋO2^w|iՙ9-7EWFtpӄIm҄gs;Ζٜب]#OW=O;Wd YI0:WMxxщfQ"g;dr\?垓,kPBDZG.+ê>'E%*];é7s3z逋P jڌ&9{ӒX; 7V&E˦6-==iVXD{A;9Oq-<M,|RVw YnzŰn◍t{s8;%N.1x-s;E-P-{09|1.qiZ3?3?a2[h>Ub81ۼ#کW+gqT4ңU+=d*Xe9݇!7^ӿ2퇛~[f<'e=ЬL sП 鿄lr[>`|YtV4Z'bsX3[l/.yϾu;=xoy߼iE ,Bh83MĘ&%ϤFԟ;3mffX FƃܧhyƅDdJ}OFeqvd'XYt5[G^[:E򛻴$59 =Sctx yaZX@hxL1-o䆻w\~-{*_ZTV0U\$a*l,h c+lxN0?begEZP9U53K>Y3A]&kmێ^0u&5!NyƉ>}螬 ! 8=7q:J]ٯ/$םҗ~#0 Ąɱ՟s5v+i0C)85**X\?NEM3Хɩ  ̬U ݦ]dTd LJѳx,Ϫ >]}ӗQN]O2ҋ7i> J?2XA-1О:\?O$vś]7btOVP~ewMnihxK uM;COȹ{Yn| gdOO60o@\e!ysb%,Va ,cLlcЮ4Q(+F*'Od{>tḺP 5Tmv:b-i*]F0$:IS$!¨v/8%T [X;J󡮗֦66.N2yz{D~zT; O@F0G!}-5B0(B7Yf))SmRIno78:Eeܫ:X}QQ,,͘) &S(雴qObQb7>i c]$ƫ ½KǤ l]~:XzǼKӔ$\Ɏ6tP/7dN/b? AAŖq*wNu5'4'rmHs̝=+H0mI¹˷1uXC(@Q)U-d.4PuRjK\,w-Q4Uf~%E}yZG'-pU DG gEG€p3k1҄/֣c뫜qE^?j7hY}hk6aEek"*6=^hL˘UqU"p;zQ{ :RAKulş{^j1NR췗X!:HN;x_!"v'\F˖aeEnMnNMCt !6ԯ޽!"/T(O|p4 dC_ 5"XF ]`JL&6mwzR1I0 XFfZP{o\XuB_̾;0#>$m+,L΄(19FؙxkDSwUxC׈<5w0yhl֦K3"hGũ *X-׉K~^\\bk|NIQC#Srx".u6I5O񣬯W.i޼h$27v-8x~U&TS\9Ɵ-M zwNcլW$oZ{ dœ!uz͆3E ڽ6?D"=_ >דxބc[yj|+8_qC+<0Td~fZUqGőGߑ dr!- !ba?T%XKW*sk22wbcP 0׃b[u/1GE۟۝,Zp*s񟵢jY̟[r \b%\pGE&d압EYko'A!9>!>͝;%=vK,9?.jb-| qR/aHAinOTTQ X_QF"Pqd"vD:ӵ ""bH1+ r1(`cK&}AIz %*q9ib/mCUK"7A1GpF(zBq|}Irya5*>v;a=EC*H <áNߩB{wM.q1$K ¼3w8-72X pK\rXf' >q$L|\ i"M,4< IDATϒÁ"Rlue V\@UwYAdf)SeEl[lB0T] rͿ!A?~&_a%ւ‚xa&8gX^|Х8".6/trw6 uk "w4ijKOyDaby=ڸigb"RFw(CկEvuk Fhe͞=!Zz]ג6VFy@5yߩ_{ \M*s[&dbѲ%50>Hx?w%ı ͜Yj #tzJjmEfv| O%#5ZF|'o *"L[g#6!Y|n){aִ+8^nxJoQMVǢioxP.n؝[B;>"14RӎؠY*hwa7g=?m$~ h%#]i"˶Ln?b^]߄ΧWV* dh;"gAٚ9817L3߻/t^$V#%}P|y{}O)7YЖ=wo+# %MC:"j-;WVp;,ť'ÜÄ06M`3 F-PsbI $f6$g^? E~l0~5#~]aцz/Sjߜ};diCn#ynޥ߯yV|8m*3IIL '#]0m$:g`˔rG7CxEu?D33]ux{>y?`~Ss /UہS 1:Mv1ɢTi&Kk~f{`Gvt Uң(hкDeX-{5ČdQA:m - m ]lc} k.duk+'XMR'qh;%3z7ѿSc{ajs9wAAFM8ejn9֍Sxo2N^,#Q+*;7\ ZżzF:%p^t_~ٜscx$`[D? Ei]Nl-Ғh, 4$G̹_ߧ=4SdtA.Z9Pm(AA@祸~o˱.M]k`RcD0P(YGI-: C84E+ǵ`M1#w i@MpzQ}G0*E\ ޲?oXQݭ!'(~!B`OU܇2ce$+XiͺNˑzM*Yu/? Gq TUۊ֕[Mv,mԮeCp"HFB盂NW)=Gڏqq]c"WGP5//YYAyXl3QU\Z&)?GC |C(cu :LTbcy>ٞ'0HFMi9Zߚ)s ?Bld>9|O\Y)wф7[&~I[&w$y㏚XJ^,yH$PMAUlZ?j1RsNiʿK B G9!sA!ט5F/HߞD u $Ǜt=TD6lX/Uaʨ굟eLU^cju1QʯFe,v/V5G$ D] ?-&1e^.H!$I@kVR)>$qI+.q+D):67R\Y–%R 2iӦ]o0*e찼 qR2oP ?rZw%I@$'"`Tޚ쉮jIs'[/NUX4O(;"_ClW_5''jUIQ\9tкgþ"s̝PXd3qwD[ dBJ$7̘ 4U5I=5ofAdoxwz'{qYTc+خ\L}I6YMVz|sae%I@$Io kEʥWaq/4-lۿ[>811{WlI۶ms 9rOeVef;2_s dϣ1dscOlj0c Y7^Ċkbf퀃 W=T!t/I?-?]Yb{?d@ZRcD[R^R/lR0I@$I@$I@(?ÓoF(Og̙OdeSD $,GMg"ӈ z{ENֶ<ۄ{JkQ.[Tėqf*p t#;n%?bH$$I@$I@$I@xZʭo޼Yĉi؝;wQR\4jժr2țh^+ ;gW֎j:we(!؛-;I^U63Y³k oNEŇkk_fngUK$I@$I@$I@%r@/^'QQQiӺD9_+(?oǵvܒsɈ8Gr rJ-k.<I;קPؠx&͆0~>MPT][-.,612r>٢$ H$ H$ H}Voԩҏo*X0)N tcխ/'pm_va'3s?J^aX1sb`=Oc+z ~fj#ym.i?⿕$ H$ H$ H@UG.IN.TMMM9p`Yn';-I@$I@$I@xY~:!eyy <+X,)e%%$I@$I@$'$I@$I@$I@xIH%yPRLI@$I@$I@$ pɫ%I@$I@$I@^S) J D_*G`b݈JM[6Œ$ H$ H$lHp4ʯA6HzeV2ޥZ%,%lY$I@$I@xiHyTRA@V1[rP)I5.V!$ H$ H$ .4y$O V)Q*Ui#I@$I@$pYhEв. -4Qrc[L^MZEmv[eN"TXy5)^ Zn=s"ϳa~Scnx\9U$g 5|៌PWȺÞM/gV;C^. S6e'yxU|4Nߥ\KBPs"b˳xCʺɖoe_8˯-Wu*>? WO@H >VՇ~e.UmaQOrtUNbD+EBzacmh9p76%k'0K<0dc?Rͅ xŒ1te|~N멼iU}̇)O{ R EUOY9I_ 8t?|%&K2jIÈc?^kO{̲R5- Ե ~9)CP N7:~6 K$jv$1јFeA)(}OV!W}ٓ\UX- iD:vkS$ $]Ɔ˦tFGE'ed41'VVҢSQXǜbOJ Ug*4분:d 9c'1<N;-0 zVvogasTR,w,f[b#zjyvBT a;T01GUoLh]y'~dml:0}W'^e85Kv0G'^W6%n69Ť8he"z6vk, y_`ƕ(Mޤ[ҕ' h5yKq:iyi+ZDRcM Ϡ'>V2AJ-z=3w??=0=3j̵? :Vϼ|

pN[IҖz"L[A# }~# \;V#Ԥ.atzȯNҷqlfD7EcW=nO S`}@_ctbE-, -q)'h3NBO,bTYW F7,Qhc1s 8uaLЗ:fZ(/bФ`nR?Gց 칒Ia0sx̋Zq$g| >ؾdU`l"=:?mw7m^A}{NL&y&*:fu >Qr}^DoXAU~[z: yuK?4eawٙVxqu湯qW/obPP ު^`O:XBfn^ü8۠ԁfsf"cP 8zBɉx*SVDXӰ!y{fj":WѨpFmښ+?'l+& >m-"q6ێ}[ƾZ 9.'C-BPIQ_U3OH]K8vh lsfXRCW]OO7NP F9:T;A xYx2]Gv1$WmAת^D^>z mFWl܏Պu|h^ SwΞnLWQt}kfbLZ^w-L-?p*q騅/Ƈ[>) `P=zPa&;)|2V3]ۧp \uKLjg7 mGF& 5fXFg׫&̟ m9cC:D 57 0\<}k~AĨӡ܄_ſ~۶ U.s9 ct'1hdZ芧U^BɴE]ib_4Ƿ0eD\* iٞ&<kcȃ>]jyz! Obe^bֲX燏̫dI&ݿZXiԪN/gнV |Ws$⢵h&G W~5{:q)ZwsnnCTTD].LЋSg/B^9F޵l iNfb  3Mj ?}8'e=.oЏARx"05߾Y䕜,Nn>JN7i4w ªs.py,{3:Gv k]I<9~^ܵf| rF-</`000++MN- ZM nԛm1mfDZ_(vcSĄb*}^ԕJ͙n;vl㯏BQ{+ 3bx6_*{4>Z\KZ45PAB+so"mZ{`lCRH"n* plԢ:kVsը%C^C7Hvl8K*CC1w&TԤ݀ьdK3/ z_'ՃútU;|"{g؈Ç.ݫppSW{a>"1dU(aK 7Ҕ]0fhK }'+ p7CɃӧ1ipN^ECI:YZs1;}'Si߯?͍n!ܼmkU#f lNܡT؅zbť_M. ^OBsByϊJ q<]hrϪѵ/?=t6=,L-4(r lݨ$Ş_Q1_|jN~ubJER\bN}zQ֙i"5 >Ǔrgf~?S w62u/Tt,_">YniR5EwV-ųXѳZ&&ʼn |1]sU.3 IDATGd}\܆=cxAM zۀP eRMΐ>hvi<7FXz* s&;d1&5c^2Ţ[O842.P2sѹAWN~#˾_s![:إ=atffJ%Rw{vMP?jo* a|!<0fG^'6Bfn۰7q4ui"g6Aҝa\rs _Cx] j+X{N'' Lߑ%Wk[::N.#)85-[Jc[%]d4AꚅB%*i" B+4CUxM{JÚ&ԫJ\~+ooxLmpVciGi&;1^Ӄ!u4xb-LZ,*0wKʹc]ۜ_u:"vCt͡]^]Ekn\@O\Xy4Ju;PW1?$Pdy6炣jX Fz&XXZ !N ;)ՌD{?}gqU5Z}K#Q$_Ozkέ""ݺ{!ۗ՚+>0>Uɛ,r2bEkp?T_]Uؖ^HhfoƲon#F5QmPvхrL=H[Z~e ˬ=ߛJ\in>.% ̩l7T z΃ye;"jm!sw0>?1Y_I,(GEo' /P?.f"!,QYqrvuJ"7SdkS11B} ZZ4t%3_&902\/hQ$AiD]Ι,d-_D)U·>ڲ~ZM2wwWcGu/d\'9NaqJ2wx֣5B G1. NPF5RRx+r{{W`}t^Q l_{q\{RhbҌKZ,E*bf¹nOڎv | I50q;* 6wsۚh04n܉.)d# tʃF4T =`қXYڥ6ᰏ@n6.܂zꔣ3yͅb|'+;(I|z=&u0 Wcq´쎓JfƛCrgl.gU4sQ[2Ĝ )xbXV?oj-:Qt cz~NEbWV RcH d7F ̂v$GXܴ\yB]NPlfa]\1.qS'-ZJm23HOE ࡌ.a{dͣ7놄x^{/d&M Q- U>a~A0kj74^3|os J%4lwWj!;,yJ,m]1e?jh-FMB(W&R)Bî`oܓgdr JC3yJwB9 [f ~,bZW| |>&+b"5kvR1\ܩ6b,]D! ;>:6x|6 *)Qikgeu6tW[ w`Qm~ޫ "6Ċ;5DјMII41{。],H("(ј<=̻״ZSc®"&.yxU_a9,᫮Ex)/bwa"hTGe_.k;O\-hgS&ڴfM永ȵmZƞP)k /ݦ^XcK_܏?8"]Ys*Ze>Cȉ!`_252={UKO$Ss#Cv1 ucg,6]";U/s1&+/lq6⦢ڰRL 㹙eOSW :2Jw4ڤ2#bFhDJ?=#ҨQMv,&Bw2g1BnUvQRA1t\G#^vJ;--*޸Uw"7(a7ԢtD"n6Z43]#*۶>CmX LF]/go$^#>b$ھ4"]Dɿ8S@Ub3FDͪS3BS؉i,"fίͱ,!0>/NUKb``KNY!UO4@ڔJ6K.XZHx47& 5' )~jbᎆ z $!nsX)I X{ ΄:ĵzݨ֙Io˟g$P m WO[hEe^"QVM@gm+CKY"]Ŵ凸D)h\`Zgd0}=hw] SY 6t]ڕSlOWuNB|ȫغl=g>Ol5'88y$^!*!Ԧb[`0 o@\;~`qI~5M$66Vܟr٠$p6:{˦jtnJl"EđggÚ$OPx 'AC3 B@BB2VMMHH$='/QΆǑƙ(8c+L/_$MSp5:J3Ԉ:2"*r- u+2!r~YqsW# ;h*Wùh^#]mz=)".УwA+`-GVl•9&!A YJR5­acO@H qA9'0V`y{R;faDE^7J1a69b<#%IF j3,rkׅHuf}Q.4I'&:1(Iu?:y&ks%hgMKn-Wckܺk7)ivkP]HR'遛}ՙz5muY4㭧'.#n"7 qJO!#]-I=Gpb#R '^;]mG;/`}ʭh6[HJ;6iˍ}l< qEGry9t]<Œ<^]*!W66D h1hNKKvk7npV^LjBUs3". R{ߞ-\ܞz8L-}ict4cNz,,c= H\*=#]?8M!/2׈bR@W%a| lCgztSJXpxa*Ccv ԁqcN723^` vܕc]Uͥh1A/网2n[Lw1Q$"0SRг9E5Ei=eѯߏ[+DII]rUDn[_Sg&=IS'ȹ}ZtnL^2?n7Ҧ:dOM=c3:W敎~XH!7Xx1 /gn~z~JU$Pq`;bNi)0wxջ726i";͇&Sg1?,i953;ؽWbs-\%úy"t-,L?N[6v! 6͕g趆Fh#WَrC= ItN%LĨ LqL+? 8iggX$Q8 Rx,ѻ^Z˞,L+סvx3/arH חN'ЇoGwԊXi" `_:_hu6:M%r؞EړaCxk@[w CeI8Nvr{`'P -3 2YK7}c?z_͖rr-yXi1f+sI1/sejuKkj{ ˱Cx.Vsg<|P,o=zع1\D|N%aа[{׊MvK(7ou_%\EPElK6JgD*&*#m#g5cS0ѫL;r7w>wepwla\zJ]e=CŚ r \Sa].bRr+PC`m%A:r-o qh={ߚ#sD'iB=D|9=o#jʢ&;0\V_ߦ=pׁ+*ژR.;q899XE1o1H|P]%T.Ia~VWKI@G@v%xb/<ҒR9Gys%IB /?C89cաK{cR XKF8YBFt&_~Ǐ}$IG@D&D?-'*B.$ cd*p5>H$0;>z˫GlAaӃg 0oӣ'qmST3Œa" t~ޅ{i|Hu<6p.y2p!IR6d!K$ H `(û*+Pd-z<~}§[`E-|XTpƵUG*Sk͛MQǟb/3{/ҳum6%nE~3qtgtߵ a_x':Mdfu9Vpֲ+O}Lb)?%'rߙium0gp+{t;1J$)L.;OǙ?yD>|OjݕTɚOGr_aAfNX9},ziF֕$I@$I@$I@?rӛ"gSIEf~5Tf4D&r|zR{Lb| _cϿc9a3/v厪4a3wX-wR$OoSCt vll*{ԥp׃&!dlmS)NFU]OL t!8WEc$w+Mt\~=K$ H$ H$ <$rEBURŒ0ҫhV-Wrs$j,yjO1!>+EC!+ЊElr5] =qvMݧ)2(8P[U)"c8Z0yW,s1yh3*姨E$I@$I@$I 84Y.bix73xY(SK,mqRs$"N|m M!7]>f!deNҢ2ŶR%<ޜ~( E∺`\[[FӚgoqnftK.kjJ_lSD`%I@$I@$I\G&=!DcSohe`^cӿqk{X>;2$:T ,N]AUpINae w2mL㇦V k6!M\mL 5RViӫ).z&ajl l" H$ H$ H$PE{4,݊i٦%mƬdu)= a!?C1󋿢w|a`~"c*Тh^l[׽ ܑw@\wwo+(Ǧ>@:k*b΋ttYR$I@$I% ɞ'hI=N^EX3nr6 FMCVV֭O:?6~'S}νŁDJ& cQemxqͿto.[$I@$IM@ /G_J&6Աt}L07wwo+ǔw8%4 99}4AQ|4Af0WAtnޜӲ[,Z1m}օ.aJW?ڴiKOՏ/.'Ѝ6zBĢ!;9\ȻImBIW` WMDJ,$`r.5\x0Q^Ok;s#>= IDAT^ M"d8Ixn'hongc;xyQW <3Wi|!S?zѪLQDsGJv0wZsR޿")d !8=U;ࢫ%!h/wMFhs4k}ԲI@x hҸvt' ϰztkふ2d~djA=h^T7g]qy<`\ϴĭQgzFiF\+MbybzǨjShIl:t kwwU5s7TSxV GdDZL*wEJ>^Í3i{E^E:NxηfEqB,FqFmX5bNN?™7QUGh@Rs}wޛtk>W{Q5$ N]ʤw-Df[6B"& أ=^E/AXw|0_~00kf"Zg3 >CEO`݋ j M:Śq @brRV-hmwNs+M8,|b6;3gsؘz#&sl. G璓KLV}xR~tֲ t]X c^TKuW0HBhPPɎ +i4jO?!ض+ <W]WOcZLm &2,}RzTurI:-/wwr;*+Lt|Ա"fVDN"pğ M_,uwyص =7z^+ٚ$ hI>e'h?Z*jbK?G#wWcq41Ud"D4Y:AjK嬱ƅyD]W+,Tlϖ&<33遫YĄapj5[}hOFu[iveP)M>͖Wxxka[ZP߱ɥ-K8 Am1 `튥ۿH[~`. 9ٻx+1ү%i7r.^5PF>yMME_237@l.\ܲ=Ym4ڕ [Xv7+X!Ch6V .3 1%ĨD鄧YVhbz= B{z,:=jɿňX|<*:T,v62kH.lB`iaF ׶TsAޢF& \ZQ̡ ?ӂu`M/G EӣX Ƌl|+͘Ͱt4Ɂ]Mәߙe&/LuFŲb*ܚ5qogﵱ%-`?JՅ*5sj/W<0p e96Żcְ/LN ;vT[swu]| ]1ө6Pr okK^sY˅V8)QR_çKûT+rl#n AU5b3+ǫ/$'I@3Z#ǙugHT[;|L`p2Mm .Us, !/18WjVwAϝ̻/dtK? .]e0Bj05.hZs"26&"ҁ!߳D8ͅ;nAWgiuMNmD]7J*ohYJGc#^lcX}:}" GeNuiϡ_S-/(Q I]c i[^##'Ec.TCfʕTI TLWc-߭uSg٘b:$HhCpmZ"c\y1ti/O`fe]=q N& ۂJC~snq_0us;7Yb[pMM8~tj4҃6ղ8/rK<0Q ܉'!Hf > F_<&2jҡrjXKp! %B_̘ޟ%Q7@3^끳^,@;Z"0g!'bU 8V))~̗ԪW1qx5WLpfz <)},RBWpHCMёb#Mx>ʚV}kv*ۅm'fBѦ~J8~cп(Q%VqDg״zd}I@P|Ǹb!KQ誏L9 J53u%gne΁dz0zPClH0^267[̊^0! 12`v)Uk: B=}K}Pzټ{^n ¶xm~؋JY|W5JsoԲxZ~P @ʎD.,R_eO!hpW\<@J.Vj*ݢE@T \ǒE毰|1Bͪvjz[ův9|-SMYgԠmRstu B;=_o88kZ 'lRb"J 5q,>"Ciw[|03w;\Gn)ɕ;cX(?f^#8u{\eLzv(7r.Rh؋F!m=%Σ6k ne @@t8 7휿))h-ڑ&ЏCnu3*V| pUzK̩r"̚{RW[A8nlk,J{ s|6또V{u9s\4 wֽP;TF>:*S\Mg*w&M jҤI%DE;#324yF;iaWt"G07'}w?,bp B3R IgD1YM_fї179E$ٻfE 01Pla cr0 >72vrcϳ{jmv`4ƫg~ &sQZ%p6lXl9y?Cuuz+ifP9vJz?8n`wRلv1M̱\g`%/*ծvr27VnGJ3.se\<}vZ#xfXtݚZpAW`#(t>m˸KZ`- ~~b9rݬ{{ܾ1Gc(L`l>LTC&&=)Ƞ,QDN~+'kݏ69q\uMwu'kBݤ{zºEX-2}V7]Yj5S^XԐP|",+cEnD*t!~\qR<հ+V'a9lpkK16Q$[7N')1T[XBkpSLsuѩ}=^t/4Qu۸똳Wµ`* 'M婅&<8uy H~O?G`I!E]ߺ*#awpp㔈^acX 绾cT$Q+ Qogw&mo{7՜{EuSlV.90rì/QؚC] Z\L2* 'f`Uf~\![6ҽ#D. iSհ=%1xD*3;Oy8/xW- HG/~;F{ѫ09v3 M-NIBL_TnR@DT]ơn eǺky ZP3/ g[I/L͋vh u=ZX# Sh_[;f-|dŒL2bSҪ"t<3*Ym[L|;o-PD,pKiEp^|+PhG҂rz<F$V&Ӥ}K8/2:]A1sg&/b{#un**s,loΖ't JO@ i;"V,! 3POW%}RZD>e|)7r=0N1A.^D_#@>UE";Cc{ȟU?nN`7C+Kn.X+^yᗑ-^J5U87h9ϿfR/O8iE65f@h2HH>-"eƜav>?\[>67ta UfsU-9Y{;\)'||(| 91;%@XݺSD65nْ$ m>d;jЫ;*!x5dpk$դC5"u[yBDB8ٱ-HpqjJ4Bk-a,].ٞ[MӠSSu2sc9 -ODYBX`W|qvJ'}FBRgX6*.b[kIm%҂ XͰ6MIz'\ Q;myCIZ-`lʤ^0o5D _k,c.=Htd7 ͢{fſF“@|ظ5$A.V͍c9iՒ1K1P*˺tjO"`ѹZɏGFJ"y%tXoz*v<:9"Treo1K,ߴ G*g}ژ]ʶ:Y(ƴA R=Hl-pp.Van_Ӹ8~fJAJ8>g8xI:=nC{Έa\ݳʭUUmJ:u$S5iq$pMS"/=Mj"TLk6vl8Y+W/q.ŝVd{63Y7H$0 Liѩuʦ.gT]V$Pscۅ*;OnC*ծ)yf=rQKK=Dz{nXs?/$Eͱ<ӟ R~GF/#F)NMD|#\LˏѮB/ęOQ0 Y+WjF6rj+|*ӊhXanX{ѡ#ݿ5uE "qĤՈ N`{Xg̼gH63xll` }ϫ}fԦ oOjnoX}"M@UUgD^VY0mYcب+mby@7sP/ڝ@/{p$P)C{տ xZ֠x+ȅvrtև+cߠ0mcײYSvk/ SExjr.bkGoYǚ?`(+,*rLȹES1\v{V9w s=N}Ҳ0j幠E¬,a꨾1=$VIYWCeْov. Xgظ"bCT`g H=ܿ1ظ7aȰTyϙsaq̨K%{{Ղ}[SjԅV~eT~q@H4YU1bDS|Yʃ mRsv;A9ʞ%ZKj99_]7\c^mDVWXO.vd0_7UqK;BdgJ>^ϒOՐZ^ /Vnbg^X&5|ls*VWE=Vl("Bt]х6ͻN0#W ֝b^َ^DnWYs8^M<=^bhU)5^zRD莣裤v+ѐֱyQdWVE)C&:4'ró0|.ʚ"Xͬw 3ԭDD&/L1j5 IDATE.ڔ*;JHuK$dbm.ʨwt@Ȍ}-Lqhb E/F|Fݦ$?6Nw !^u^݄},YbޱgqW\[">M]=h0(v (%D#1vnKVۉ fx"֏^r9Lhx]6-9{h,e$I)"M;_\>x1kR{B >L|Ah;6z 3b11ӡ=R.p>qV;ơ7kle"O85~+A*oLъ)"@` , H"qf 3/J;ڟj%I ͯ3Rwk_.TD~Zh]pV\R-!z,Y"=ʱ%',RV>\KI$I@$`Vo0o懒xR^XZZCb>UEǶV>uje0=:ެx=MYZZ4W3bIo|(ֆfLvE$I@$I@yeB~-.6F_ߦet"{}ڴjNѣ."@c)D2EЅ,hpy:V T3ȏޣx. H$ H$ HO r-oiK[w-, q=\(I@$I@$I@$rg},*8Z݁kaʸ_klj:~M0ߋ=yږ$l|3Yafor{ MO[1B6J˦?7c,#}DbECʥ6}3:!Yvp0Ԙ] ^mO+›.^"vEKojՄώcL8/r$ H$ H$ <rɞ+>oQНDJkhrBY2y?65mE+8sCR_ȟ}9sN5})X7w]~GYR4 W~Q`tn˜_F`gJ,._HW`lWD@-g{/c_OiYE" d]C! H$ H$ HF\\EVB5JU|{A%$&h'+}~5>!B29d:N*g8t4)8C%^m&c:Jpx*Zš 420F>[ nV"QSp3k9~qc{ [$ђOmhYZ4Q9m)~R[VW$I@$I@$#^zϷ?X+^ܛ~c҈װؾo"wG I@$I@$I@xz EcUV琗 /%22. 111"7㏹ԨQ Ԥ'DvI.py khe泂?oPNnɏ[37ƨ0 4İz~sy}10'#14!uLˡ\{+g,r°fN4Y4޷Ǩ_C;ǯ !v$ݏjws!"#3,M01feAdUI@$I@$I@D`,|ӗѣgϞ=N~AF_ eOʂѭ9H>D1+Y?NԤ&C~XȀ1t87`[U m]Z1ujs|ear_CL$I@$I@Q-WR)̦o/O, H$ H$h55R wZ)@@Z~MjXGN㏑<$ H +lGQ^jNvm+NO>C5v/NgFH m &ؕt̚dh-dkH67 7qE+e6ת '<MnJ}צZx  _kyzIDlhlK!km?~?V33}xԷG?=-dގPT9tÿid!>o,f [ZyX9{+Ri#, 5ZbNc:v8Fh;]Nf)?.ޯe ?5[p'?F:5-$I@( x!F:jc^hT\<Mq4Vmi8*Tم!qJ^b,UY͑ ł!hB.Z5 UyNϰxTGkْr. cqY9(ڎ-˅ nTi@JBH L;pX68Q6mfi6ԨC=켫ms ɚXڐj|1slj҂g껊T .ѣռ\L(2m֮mgo_FCCSL6E4F;Yݛ NՀ$&o+;V Cl_,˪o࿇{,RӲ|۽6ʲ,SS˽ފ8@AP@ޛy0g.B}s~>yICԲ͚r ߿ 7 },,? HHԙX>/Y Nx9G.3,CЩׅ:PvPgyG;>6]#(ǶC] X%4!-ѷ[#OfB H9y/FyJ8ʯEaP[բ]jr"BqiF=_YڟzCpJ34ŀ;\l[ aD/2jY2TDf\MӣN}s*y5snGcJnVkJ #ȋD%W [h%x/037:;F-*K$HŊΣ>7 ]r?Q>HZt} in]8"xw/8sI.:-ϟg6HaKW ˟[7:_lV odF32+]]^{&{p؛`^EĞhf.ﴍfV$IoI@Q.jZ_HNv!&RU ϲBe V;{҂wB=Ǜk*!#/-SbkYES[cgJ\ 8M0³n+SwRX .ل+04%R]/^[zeqrQ֛HH`8=0< )VuR ;[q 0?bT5ֺ)j\ssD|GR ?{֡w7O ۠J%&2pv>}=I閥(' ŬES]ږ+"F֜Ȥq>x^Gvf:ѡ?HMCܭ(P #w`cr2ܾs}ӫ>%8|arw#6b5f~;p1I;ceCq]ȈXDĪ /<}ػSd|k.:%`d[!Awԗn E~^p^IVNDi&j t/8JNL0ff޴rr6Es‹LaM\2YMr`GiUsd\9w g]?̺E=燷N;zΝ4: &F62BZk7e)I1 - mqpGv2a4+^] j,[KzB@B]ţL-CKFr/naZMZtcP!wPS@t.z /dH|:>MŲCc]l#.r-UgESc&(' H Lk5 ĆT_H#䦬gܫs{R;ޅ78}"ga]K>;Eќu^3hjKH9(u!EfvDrlZ¤֖K.+hYbHʕǯvgٱ >{4VQJ+jVSKoBƫCx.=/ /%cwR6D5`Դ6j$_x Eo!)u@|r>jl ¨45ružo#4r`$ z";IAҁLz 1nxrQahT3Ov0ۈ,idw†RQv9vxv]ٵQQc-Euc~Ŵ7[:ڶ\ ˤ.aAeA}@c~ٴ2k[MZf1MT\a`f(V"̬$"P UvC@`vLO7O6E y+X36=O_[Ȉ"۶ UfZ@6k/Ѩ#*Uuv2l7 BwڸP$\3dO$<-оfNF5&L+UlKIUKj͔Y0J[s-/r@X9BTx .M M)SHPX(6p74@Iz5v,qi޵abH0+SӐvct]XhV|Z%\w+xksq8h0\ Jf 46Hz#:b^#ׂބNLn`7͉bFi kUggS. :&,Ȓ$,OHx1֝7o \_ꅫQ6A8uoH߹ڏnfhꁛ=&]c{#V XöJ41$\#ZF))Iq[̴SĠe$ΥZUY} IDATT$':G׮P;["%x&VȠ?pzOtZzyj2*/T#=Xϒ}tlXǢW[07!LfzvЍ`Sx8s'!vژ8]w㩣]E=նüPNd~UIXV2TK,]1>_I J3$]]kv5nM I΋n%łOGf*an]cT[IU9-bű(xzf6X=,XZt?yy"k}XPLȦ5+r} M 8$_+iݭ9uM$_>K;8FgDgnWSwF(KP}iݧZ0mɿ ŷ= 9 뺼䄝8*U8BnUK4Zu 7gg{1tCUeO. 9k{ WG|M4/WwN=7k?uXGjٰbXZ.VUv歱ݗִWuWV.Z6S _6:$ܻ[`Gjq(0Qk71ʔs>ZHɣh_B 4-{7QngZ a#Z ݑB2k"+.ePc0|'P&\1Mf|þKWDc#Թ F,94kpkOutc8##03Kve^&`٭m*|2ȡ.뙿plC wM[s1;?\ *WdFq?@ :Ѳ'Y 'ߡ##I[|z>,tQIaI#ڠFt@lu/qe5cd//̴C$I g A|}GӯPV5 T.cў{Bs\Ha3Idҁ= ̦Nol.">D8W%![h{!H}Z[alQ%Н,B2G(9#6gΜ#٦%͝ :DN\ȧ+6B}: |*vG_`hጓ"KgOp"1 WO [=qBU/c߸ .Nu-WQ_QS׍hޱbD%  җW8}g16^J ye'w- 1~R茗UqOaC{w˲Ԑ\ِTc#alP_bL!Y{*E.4gd/vx$q~Ģ՗QbQ.8}!^XqiL#U^PCl+ f## H$ H$ H\2;g$ H$ H$ HHXNI@$I@$I@$a$I@$I@$I@$Xڵ/z~~>y$p/3$ H$ H$ <-ks ͏VI@$I@$I@$t~F[U$I@$I@$,+I9_n{k֝OE * _Zł'A$ H$ H$ H5xB`%>f3Kh]TyaO(rI$ H$ H$ <:4F|ym[˨}$Vu.hs-:NL~$ }}|f?ӃS>cӕDˬ9 vSR:5ͷKs.9MR*y1eC4*MYu2b /g9=vE!e%}"wٿrs~(:_u[o Ƃ-'F5s+-a  F6J$I@$I@x kӢ2rmB2 mܦR~ҫ3&6< W2#ThiZuPePTec {O^i1׈ XFwۏoM TP mG[,t! ݯ=,/Dڽ ]C+36LGvM$I@$I@{x Qف3;ܠgS#%gRDtE\uJ)2 $޸0: KnaQY EiJ[Vħl$bM^IPb mQ桲VI@$I@$I/$@ Զ Lߚɗry|o=ޅ3&GVc,a1EӦ~m8}:W/u:v:Vxg.u7eDce\%,2yRf`rd]NTXm|c"~_cҼ/wǞ!NG~rO{ޡS}niw@uOBPVXTb`񐚪ιy)MZ2lLDa .or.َNg0c6 7!Hu&ņRz*c:OM)oZ;*)H7ٛ&YťkI(u@Zih8Zy޽W0piI=.xu Nu`1JnGKť0h ɹ?džskN``W7~tchK#E;"S*+ -O "?TK/_pN˚$GI@Dߎe S14]CNLJh=ŗ.ߏxGqEϑҕ&* 'M;TDsjI.!?3oQbLcd&kZ ;ȏ;iz`ꍜLbc%íXw0hw13Bk_z=gj=m(Uy)зC=ҿȷǽy~8V(N Y{::^ 6G[¾r'-c=>}oboE?-aimZԙ-ӛP E+q=VaK6ܘ=zs7h6b&'w^t[Z|6e?&tG@OdU1%յ9%㕀!^Գ=C 놫wIu򢎭 88CPZV'1SǃVr}J'5bK7V)-},Y_sE7z"e8q b1ߖAC.`xc݋ v 0\ȼs޼rWls#8kBx uE`b5ǵl;Z ?.^$YeC=urξ/9 WJڴ !lb8}1Bt46Ne^7V_}3"p^'֦\뵠[41M' Ӑ XO/M8vI ~aVf^Ğ}v з/m] Z1! ߳a{gZڕs)Fp80`O㚙7(K,gF=isY4'myw:eoQ;:O'5F75J-z|_ZsF*>b[&V]^!•%g&IؘvMU =,̬)gUou6|8M?{fwW?eGtۇO\g(+ꬳ,zw=?aE~bs^73k5x d_lɦ`0[zOy_M|rk͑>b"tȺ;ٹs=_v477Ax{%\tBLe| Z*Rb⒫MtٽI^Q暢J% Ї%,]'Ry'.!xyT!g;ߝG@%!7,* +@y1JDQL4ME6)xxŪ!l]*mt>zVJˆFm\>]$ֹ1n~Co"-cy-|Lb #V Jb 6{Ri"tGc(ٕOXP,vbNĊ\4ة϶uH"1& ';JTB=Dnr Bһ/cGo \UC?;1XFs[x*a֬y\%t ,*W쭈=M_˻n+˪=!U"U{ݡϐM. +\T2/ -Agoƨ%q(" Kd^s5=6flnI } mLV #%_> [NLsYy9eaR۳`Wc؝f "cd&'`im&¨IUy"H/]3T-L3?B>.%kc0jvcߵDޢݚ Ū nBD?<ܪ{ D\vgVϦsֹ^YV#Pfe~QhPbamuGަ0_&z2k\ gv%uk9uc c $&d|MLhJ~֧ 9y7FPcr5d㸴u GQQX(ḺQœQ[Cױ_5r^V҉ɗ]k(_pߞCҨϘ٦V :?]{ez[}3 .@T%*p[XWMњ FtI*|ų}Ƿ(*6"G*釈1?߯0} bI,oYX4wxWg,Qx ~VpB5(n"BRRzYbTN(5bklh߄4K!ċXFp7 KdZN$IcЬ1)$[h+\Mh1d*o}o'U.uJUտTޥ\B7|mRqJ"4Y rDC>-ȩu?5ж2u|(W *\6uqmם֦7u,q}y):w~-"<! WVma%viJzju< NOvEc[-ŬGӷm.كY(IMn+!a^©7"Cڦ|}K0 X~]Ha9C/fX'ty{~Z2X)jb#DRR|؟du+gɴChSb5mJV`df^gu$l.@īViU/r(VB0K;|,NĈl@~?f>~O}Sk _ز@+Ħ½n"Op9jٵgH\6-[_u}WjoUٓ$wk| IHOht 1(sӜ_=}N׾\UQ" _~cr7##JbEoG34=oV\ȿ^# bä%5!TqPp?NX(++ypND-,̨XNqQLE ~~co+_wK8NywǴĶĴS-ZVCp>²D،Ɖ8լ;\6XwpQsfg'廎KsЈP,`e|oSX=$I)x |$!ν؞P~QLv9ޭH?}D$'*(=i%W [D^ S,b&'W+Q>7IKҕj%\2y+>=XSk+ȍKaф>M@دD\sTWPCܚzsvÝheY"pyuIw'21${BXҊv֤$Z@%:G_x߄?1.eVTFɾOXV@0:YN %1bı\GәGj+ιMI"Jl?Lt\4WOpX99<%^-_TpOZ`V٘dؠmGbvfSx`]*Exߡ]C/BD?CLME#]k1EeI@[driS.m3_wc/^fzDq)l6[Rofòz1Zpz_yV $L zDR۱73mq Q~}NqzS6+3^QJAy6OqoJB}7'-I59dgy-%㳆t<}ʕQ,)I5RA=XN߃18әh{bO0XEaEF|p+yNf-̜ϗ֯?dZ7;c7 { kƜ.dV4*r3HȽirjKV>y}TNgqQ/G{u,۬͜˦<'|n͇31WwD2NGLw'`[dٶ;jFio3sXhLF]89"ǻH٩†̐'oV6~]qqDBC#q\^VBNSzL&c:kSm{f$ԟ<0{WX-5c^%B)_&Vye.~BsC։Py>+]uJ`$XYرޟ$PH:'?*rWު9=)hX-mDݨCk9wG&Oٱ5Lf \́;Y?mwZ>Hҧn xyH7DYV# H㝦Na-5H!P:+,1e.L h˼Wcb6xYK/AZ&74R_m>0wu]rNc7%~7ϞgD/o;?|/wv`XjWg8v O ư^>YK6J $SVFLo Mw֮~6Er-6w@PʌMMϓ$I@$I@$Zx2cl6dlj/дs|= F2,rGB@~zk.ǥjDq21c7s['* ;TC(>em=/Zo/ɇe_u7tHeb2~u1ʎ'6Snr: ~xuuk YDOJ,V>+I$ H$ H#OkM}ՑO1{ m2:MGBO>A^kc#ysWAFS "-qSScӓϢR)(TunZwu űDh t PK`-rY)Hж¤~),^ҟ_~k?I~Y}n#))̢Z9mZ;;@?}ERuCgwx/<F֨0sn$uiڝ)ta{;>>ď(h%C#mb7Ū""!,Lbid![^N&ɪaL;' })R؀)f|/m>ꂥ<! ʃUS d]"xZ0AYybUr='tTuu\~D0ŗ @2OV8D@FMgho^J"Lg7穴d6_3޽Ra(JoM3v*crz .!{ ۔VuOtyE 4]fJaA ރ"; 𪎴n=$@-@p(NRvVTZ%ƀq'{7 @~{y$̼9>O/׆xP{0'B"H7ݿ+TŎDV¹>MQ]g{I_H=syBF4&FSLE C9J\n~] *N87iYJȾ]?zXeQ!GrF,:NvAFT M?*z#kE,j݃-CjcYp0A!_7y3c~n~qjԭ&y G-"BB!>m곔^Ss,'υp%fcg塳Ku 9Z~2kZu[ zDl_ǠYCi\y&)39vgb›AǾK8)LcKӱsnbH@@Aqv*eD){:W"4hǓ,ts"&/LWP"/-С}lveP=_+6nsDQ oиChY4>w| :ߝ@`C+F wCu/h?D`&9ICCCuз>ֳ8o:>|JLp5j5>TCZb(|.GA}VNXGv`gv^=?yC(~J K9(]?%a=PU-<aUeªǬ.nF~d[MlDIyk51}.sWym4)snp)Ɲ}L$=YWRO|5ėks IDATןjAK}z) jT ٺuNLVȪ+dU;U +u2ĝ>"YJӢLJ1 y2-s~6O&0f>_\ᢟyor[s$Z<+> jގm;w.o{p7f?CU}5P_Q~]T^O/~'hdU V@zƢoaRfh% ޜl*>$NϯBsipP n4Fyq$1jD~Yn9ci6y UmR\3V]ce+tU_t"f[ ]sG\;(œS^\ _E lwbᴶSAߣ,*;~]c dD!xzk Mode/7y}ۿdy{YrvMVʄä_2ɻ:c 2:`Go ;"$NS5Xj=&S3,ZHМE [er²e<9L7OgtGds ;w+gaw ߮ad3iwӲqVD'P'#"8 wAõ#-.-$8"f9щc7^,Wșz"ƚ&Y,j`)ȓ0H^'䲸bd<5QS\KmApAm7wԢəEDN8Q[1D\g"47{2ެ;+l'(O=Ŏ[6Nl.Z`-B F(-K9Ϟs:4ldMDTڶ\4ư&5,vyH{gtf<.ĶIW.v^4?;hu,W2aX.qad7m!^FaCS,L1$'V肧ҋ|L n%ւSGx{YA`gaPk~Zɡ9( &`҄v:( gx=,M}ҷK},fɡ;cmvPȠ[+"乷9{2аe׮4w6{|%IMy.ӗnmE^4ĥ{5!>ot&?[ICqM--L$@Mԓ.P<4kKUM%'-&}1IĽGu?#"h81MhWş2#σ#߈Y G X6pӏADHՕs-94ߊB?؊eŌv8@Hϟ-FjʮrLVF߲^K<-MQ5̕O:?5Bh l?GS gNу&Yxz g~bƨ}G|پ{(^b3 */*TEӨ;9SY ﮜBS#cpk7OY䱆: ˇOPxZe.%2oЍKx3X.>Bz"5'_n*  {*_oJ+AmEɉҼ\F)+%Ǔ3+K3M;`K7"4j(RPS$$üO -$)Mx ; P1kO]5N4+j[ dF"b[Ybn=Mvs[Dq륨kxˌߋM(#A@97mdGfTs؂'RD:ѽHeD*%!tBF\ڶ=/xFe C7w75M$lJʙk؇!c({ +D*WRqZh?zض};R5ؐ8uD&HMRYtQNAކ창X-xD$"+PЋ!L{3Z$V]A<)tBgDNn^ ̀elLiΘW1ƾ*Y5fDQOszGҪÕ^=) :oLM>TϡEԌ Dܴū2t ectkFXu*ϤSfճϣd&s&3gIh , ϝe즩W6e9Q)NKcUAZܠ{*i la%`*r|[!lAw/zj—MR<JYse/kNyإK9TP\pPn}ʇ &wbok K'w:!Yr3DcUބd&ۯ4g5W(I9ޔ)BHs1UӮ!KNap*U-(gCm( dE58:F< XUޘڋՅuIhY2a<~S~*5?Z{W[B<5Sf4猶<2-T)|h#jB>1};xs~EޓiD;@+Xn%D#z2,Kͱ !.Baו.je&VO@á%Au*6ܸnxsGiݞTRp3P摑ZY)h↉]HD+X+>T/e;sh*"AO]v'hkVk"i:,f409(rvEJӚW#IB05c_}Ja㯃@!,."J F1kSV,+?2jtF-WK.KewnST%{7}&VeA$֐Qm,&L5} Mq~(ń&^HKMض6 6ΦĥꋪڬZ%[ OSG~fY`G McvWNAa=/´62LE<EQln0G~OݮF"Pm(h6렫U&QUjJTPRR&ny!WϬaC?_ GEjتL偞rF8^ f)tW'OVYB.Q"Wz۳OЏ[a׆EwIW 4E9ZQr[ gT/Nʌ\ XwK_eѵh2r9sm`QKj\L"tMcY3}M'wiJrlF\n9 Gmɉ- ogWŵ7E;B9+= H`1yB;϶s|(F&lKI ;73uQSKw) Ɔ/>P(ucT'QGTUT1ގD%u4 v>E})ʏ\O̜UoQ)SqMwSr0BUb\==Q@DA54U 5?"rѰaG<9bRa{tOҝ J#,t)T( S*nQINRT^-ӲAc;J/*gRlc=5;r5g  f?wz~MSm-e\S)*U5T$!žpzLC{z1J'X@/wT[vfh- gTb [fI~z~¶(_ )[%g޼JN8V}F6;,~'/Uw JUCʭ:i YOe `boP?+3j@vr{YdU"W܍}NoTveģe.KJGYg$?!PM9Ձ6}jXb bzD"4~ՄV!Oj4 - d6C\Irw\snQXn6墝-Z!\& Ҋ,q.?wʲ5 pOҏVNd]XyW0y*?;1"FXp )rd"Ժk-WIȅH-*ݹf7 187oM#=L2MX l^ʫ xCϵ1s1Bo֎( m'(~`_g>0`d7OG 9]t.n1hjT߃Lddd67W!#1KJާB(42A8oNMFsUz0 |cee5av#>]ynesW\\0Zecgpbl*MP&X#ruOeL~c6ZrU! kyj)j9YeGޔ}`@a)#8v2Ğ>MOOݺ?:ǖAKtDAO-3rSgsl;@&ޝ غr#oqzkBonrR-dD$fS*,ZV4ƐOڍ-$W3tlDF\,# )i|ޒY,މM$[xO"718R% )(9ʹiصf@kZy;qEo'ʉ48σ,n,=Qq9ٵǞ/K!MV –:h.EsKxs)SOX jv$Y!ާ+hoX@Ftq6.LۈXM#55Z C=ʂ8^wqdSD2S# BSH=,OS)r s2̡@$ 93Kb/%j|:Y\ ODsʗs3z+_v,E^3H(ذtDWo=rII'GũcJJN vˢQ^|nNU1Ω`eɚs$qnO>rw9xzͅ=??25: ޛBE.aűXd[Ӟ&-m ]OJ'YBE?*n$ffʣDx rudpᷟaLH{D+Xq9H̱QS;t<|oVȮg9dg8Q5q.;RTS (ĆqBW} I")2I0ǽvs>Ն"zheƾ}aĦf}$. C]kbamAfzv9 EEI>Yq$WXܰy[֘`,Y ƒtS:ǶG&;KQ%o 373 cSHs2Kڽ5%?ԛh6gAŧ >[Ag>y-Ur>̤U}S^WҬܕi߳87/^ ᴽܗv Pa}p Yx?*hѰosNBX`U¥U yν?MpIע6NzFB@Ba:CBSrmKEIf5ó)jFb`Z쇏*Mxa6Ȯ )J4UkȆ_H-5±AFlg*uFuN8-n!-"Svq=GU:eƭVq{-Qk{4WH)KNJJwA tJ)lyI(%B=~}Pt$wH?NAa"X%*EncMxY=[=w_qOa; -!n<.i2~`t2q~5Ӎc8>^[RW\'5#| lM"*Ix(nt`1sjظ4v4 <13@&[ػj9 p }4JejK;?q5=F4ԎzVǙ#{0[~ITEDEq74wŋuӰYoβ <4SMb= fDgAoB#wʸ!3`Đ[4N'IMq^V(ĵ1mکU?$d+kJī< ̾j3nUW+2Ѱ"`PԄ<*NAzt8J/Q@ 6$LުgWt tR).IMB/B ##UYϻUaFOضnO'|5~;ޗ^zy(?3n_N](gzc=/,$$$(XK,3 W?$*%$(Kh|o5Hs~,ot-/u=|We:gTN<~R1QutϻU i3 O])r6-U.t3K L%$^v UwyuϳQ!-! !!@VW_m[{3cyW@i۳ci`kN)y>댥,oupnE R/+\w}ϫgDAB@BA@Af:UR_Qd-Ɠ#@?9f)Jlh9"YY:ޕxH sTIx'[zVB@B@B@B@B@B@B@B@B@B[3b            @@+99)^^x>hkt_EB@B@B@B@B@B@B@B@B@B@B-;@mP@KMB@B@B@B@B@B@B@Bkj IDAT@B@B@B@@g,#Mg:Ҁ/RK$A/I~J}JHHHHHHHHHHHtH K$A/)E*D@T"Q(_gL&C-/!R~|DوZQZz?CKKKRk_/!VUmQL%KMB@B@B@B@B@B@B@B@B@BF@R_{0.|$$$$$$$$$$*`i/H<#JKHHHHHHHHIXz ƌM@@ O.Ҕa$ 3s R E8tm h9Q%H/ew        3)*Rߖ-Xd1&Ls;ww>O$4=,~;àfĞ !|{?Hl3,z{=z$ӮG|uq@Rke)|w<8_Neղ5O@Mvʍ'~W?H%wo=C,8+7z/:?pH³J•\ݴ1zTZԪ[P~<f8=iABeAO {Iy][xv,8:oOa`ޙp~o;Q;MǦK'<+JϱeVv8uğɮSQ5M޴r s\nLig]]q Wh_7zw¬ ;*M c鉎JR޻2qmA>k,S}&E[wLOd[O;h=M:?(_ѫbA˄2>=vcp K3cz9#_?2.Ev˖&SY!*omꝃsJy1Y£hZa;gcrw`2\'zkv^OQ3Pfqv>niXslL##-&d勀@I, 1RQJ+b|?~:?hT'"T]=ynDֲ?e VZ sa2v+glY̙GzEsKQf`,K+Đ >UoےEt}0gmY{~^ȥ"%n- %9p>ԄA(K5l6k͹{y +OjehlOi g yA:t*S$bOToV7+IĢ~[!w%{3xT7/maZ=oV~hD fߐH;Jij?P\=)s.MJv-j}1[s{HKHȥX!* :w֧ml6eoeuK^30l\t΃PBݜR G=EEd\{r#LgU,jW*)+@-a ڔ n|H>c!M~.E'Rltj4}NuqE_y6@ >}%4]EhjП= /Do_YiAO /K8țʜ\N@J|g_Iafqi69= . 'ε}+?_WDY~~pH=I< !S~u7-$~W`UaX.^پ>Uw_ӣAxތ+t)ПŒ**XTA{)7m^N}'^{k:}!Ɖ{Շ}D_k9dGq3*sLjcP6.XSXaWIfWjG #AX5/^ބ;yL&Dݗ jN1df O*=#!P SAGHp1G%PAHѼkn8K94naKs9z*׫ZJ bi!V$e/LD&O"2DxL^#8i-1iG؜\IQMIH`Ӫ~Ϛ)̄{p?w<_22'.x[uza=["oh6E,ppTNvjJVԳBۮ) mN^ "t=̃x+ʒϱܸg -Pޘ::bgg5F y`4q]s,*'rh,nfѦ*Himoju#@+\.3q.^C3a?zɜ9dc?('YN<[ЫoGu×--\+C˙p#-JkLnȾc>-zQ1%gcp}NmuA ldNtH#˪^M%ù }If4Nrd, +uGf(s{mJ<궤G65AӢYJ,оW;BQϘk &rM!0te~4F-%MѯkO/bѿ<ނ]Luec$MUc-N; 4lЪ[7Zo|EI~ h u`TRB\m@/וCV#x]ؚ8`>\cҿ_ĐNY|7ԓ6޲Utp~lF8b6ӅT4{cX~xHDjaCK@F-p%I]>Q]0h?E bּǛ9أ _q) Z NPz?-qW> Wg]F˺\\Mf+ \!Vk]L+$3Jq[Ь^y]5ά~z ^ZL/~_]Wv5qy>o0Oob|}ɤ&3knvo>F z5{ ܍|4٭|c)A&I%!kqP ` Z)Lb[D()j2f**%a8~aM'߅)]m6uz2ڄ\\T1Qfן"9s>5YZտ¹0;5 Bw,[!) $,&>`;|ǁ%]B)U*it V|( 3EÝ$?KFBmPSߡ\ME~}PdƼ\ZbcIRZ3ZZ4m,,)LNEY~7GH׎^'hq#j~ Y|B ಛ]#_'Cͫ`8u1k\񤡋JSZ((.$x1JZM"1 k/͜`.գʻxT/,eGHm>+fq&4^QF>*K -p"U2a?⭈l{2b@aáha.oʬMz{}=bP M0Q(PC r)7 `m Hh\w}e6ike ˆ:a =ݒٱ,)K}f6b EAc%[^ɕĄ~7Ac\ҨKD7tî"+ KБacYL O6q65W6j>VCT1PRpi"'~[E=ލJ8| OANաA4΃SqӎP;+1 oq=Fj9**,j{ M&}/Ê1|;-l:o^njEY4݅3áE.\?>=_;N53^_Vik#!"&1-cb[~b_e2߹LĻ Ob98a#(XpgL):A^ล1i.WQx! K2}Jc3/0k؜I$''#s!ǟ"NմF0yh[8rR6qPxrA(=2wjrEʈعS>cߟz2q*Bz֘ v H09c+;l0%!X$gB /O;ʰKC7KT ޑF=6bFa-P_P7^]!_ݥUھO~2{9!|SH 'aُ=4S8]y>f0NX:y~~쁳v-xd4!zj 1O7d[0 1ͺt_׊AoNov;?\xYD^V~։)Ӆg o?pj e=cj{Kza?/CzNDf hFtyBP)9yÌ.hK(kSj,}#eL},W赢UJSQhBbK-|Tz$CF9A^TDij?\N Kw=#SPƑ-´'Oap;Mی q &t9҃FNaꫭѻ5'XXy oGV1o~ }ەi2KSűtX; +ܚ7#-J=G=FQȸ ӸQ/nI&;T7u6UȉDZx(ߊckwٝEIeySuEDCD[wog\\_+M4,xeHgmy)S00T_ 1f<U$}<]z ϖ=ϑ1"i8tBNuYc)TD% 9uTźFZDǪ sH(Ŏcj+y9fB*ыķ`EY;f.:g`.>:fȫflL!UiI B>5􃢏^[?.>*I]ޚ~?d\jPz3z*\;7IQtܡ,rqqfѕ8^N%EP*ZYB:-SpJW(<Pz_԰[H>2-yt.EccjnC] L0.&-|)LMLFb䄊- ILCN-|L'2񣖊x2'%fثн&$Ɛ|)$ kz}g v XJ Ç#vjyBݦZ Ց޽7a$rƻG*dž]xylkJOpT",ࣉspk,[]gq.RFvF6VfԘ&B+8SRuȧYQ62 45+-¡ ))Fɷ~5hry( N(VUI]++򃅸i}c$4 ob 9ϭrf-֣ 9¨% ݔG*SJui-?9e +X CV]D˩ߧ#D|?) f뗻m /$Y'<O~j^>Aݜ7ewshrÚC~V׋ =}4ͅߡ*}7S^ }4\! Hܰcޒ7O}*`S Cn~Ź K 目> [b]ѽy6?x7xTz˱e"_Yxp+oOS3\ɦ= j\q=_=ťD94%ТMYw$ TEdFsbj֙Ng|(TzEm374%>rh2L ˅$SZaQ}%Y,h M[R,0D$b" 5tcX*g"@N"ijy8k7QLD*/-Ao2Q8 CA\QVDNf>V~&"Nc j1FYȥrMv&r#w*=B1ԥXq˭~Ziir##0J\5\^+r])k8܃K)۶m{T@fݴ|"293hë+J{aQ_ÖOêy~>1$u%ҡ\K ]wu}mi+剏@dήoFaRae8{M {j_#"נs_W}.4ic!T#hƢKG]UEHHllDo>z3FT0\ >M۲ZZ(%T%F3HJ!j6"Gz`iREWwZ5qMirn!Y0V/%ckD[ikb1UQQ! hi)7)d.U&LKK\-0pM ̜hң;?|/H!MOdw;7rֵ0Ayg+;j<\BH#[u>dȈ9+e (/~ckgC:oz>$l%Ģ!HMBC@Tb>wNkvb|giF {uR齹U!u"$F2b _Nmp~g=ꊼh Ta. &MŐMDHި IDATaAiE8[ v3A0L]9JXRrRũ1V%[NlZc]~$i׻^T\|"f[&~Y_EEYa,[ CGčZzvV݈ħ=Oo-]@DѭJv/yLy3Pdxkej G5' ӄJJQ?bm7 @>a>Uz&XukT(|D>11X)w~y!" @ȌL1e-PDBDDcC~⌓Qhdq+Ƽ N_NJDIMȦ9CE޼?ɣ.#/=Y(BI+QP*ˆR)V]wpQ?wGw#ح:gw9uͮbt7  z rbw}~a ;7cptQS뭌Bk B2a{Ĉe.=1j{t ٌ5ڗwq`I2m fWx~ +Ѧq9n- 6\Qѥ-^7XunQoBą#DʼnS)n!%*6G' sx1ނOg!gTa\O*19tV0zNޟkG+kOko&9#p{ή]2tZG,!OFTQ^8q%E  BnRUr4ܼ|\ ))ig((7.W΃We!œK!93<]$q"x r1$N\v+KpY!VQ餓Qyh4z&f͚5X< > #XE͒8s&^+JXJ%ڌe.',bx ^sҰҷGb7,FŽ 8k9֜\wLO.笙ze`tZ0ׯ=I[DE#(c@1r,N%vHC# 0JĿAARw9Rm{19][*4G3XRϽ{y(RPxNe Fp{x>ԇ roMP#櫋Lzf8AbQu+pax.+4C,kbymNx8eB[9Fm8|&</^%_MU1XY#?8T !zŽY K5'it!b-aYK,@4 C/֕#~࢘o2]T/,zXt7D,vfrb1룠)?/_C8D,)",/y7B,艧߃o%hX<7^=Z郟K;=)>P.:bs7+'c?)):G4{?-Bqv>4y‚պUXb}G#q'C4uQE'`Ѽ\l%04ÄļMWw~?DO;+C%"}# 7l^'XOѢ>dbPæDthI@#"HU)&F_|%Y窨WkzKA.eWb4^'iR #1W^w, bO\ˆ6?VlR-C'/.ыcQW;Jeax=~_0k_P9C 5ȇ5h #gu&{bFPmQ{zq!|~')!Ͽ0FXݏG :^ EHhT**E$f?7-֙#c*oσ^ғT?b_sX8_zN~X~t 6G~chuszcbر7, -1fA4^ e] ~[8juFc'PiU 3+yMkȤӭOs~~G"qom Qc3V,e/ÞнpT꿭Ψ`.CYO]dy2! ݆fN[صVyG4-\]:Ox%@[OGTPxͭ 3A5w uVUz'/_1򗩇>m\`....Y1Ő\ s^ߢɭ'ay8 biΥUsVŠMj5MĶq=>z,SXVU_:LĤYS߹DbIJ}G޾krmGcJ{HE~MJ}HQf<f gaxI?[Wà1E%0XG"RUbK9gS h?x=c欍c^ ~֑jh^N?RSU(@/D@'?6ӦFr ) yhfI21Mw\ayrZ@%Vƍ]`P(bHyhB@ Vsq&Ki%/&B  ?HS|zI(3bJAZ%50p\?ztֳ CS e¥<CCZBO P(@l%3H39[3cHk:#RaYQ_N(@ P(;rgpbA 7d gReS_zC<(@ P(@\';{s UG֬#(@ Pv pv;kM P(@ P@k](@ PSv;kM P(@ P@k](@ PSv;kM P(@ P@k](@ PSv;kM P(@ P@k](@ PSv;kM P(@ P@k](@ PSv;kM P(@ P@k](@ PS@';Rp9\>Lǎώ&(@ P(@ P7ifRT) 4uօD"A?X@ P(@ P.O WlI7 ~W4,l4 (@ P(@ |q{GVzv0hUK\ٷJ6h `I(7.#8i:ˀ(@ P@8e:V'?e%X֔IJ6^SE1ܗ4x%(@ P(@ |v١s?W?vl/CZN ㅗ*Ƹ;Ncۏ=PpU"}uj6ǀp8.Wgg̼*/N-QE”o)cϜoѩ^ ? žKӯ$ -ja-9bN`Y1zO\c"MP(@ Prg.ql !sbV`]_L;X5 eypS/Xwt1ڍ~#7aR@13i- #0zt26UDV&,^I{\|dLV&x]<kٯ#靿 bs%UđekPpa._u@rNb6s jZ¥KRV2kG|*}VB!~ @ PtU<"001(@ P X={[>!Hk, +Z9~/<[Iڣ`XxN=4Y}3MM(;B£!EdI|v կ^3VPl`(@OP_}ù lz6aO)-CZSp<8&D('aW:U8;g4ߏ^^ ǵbhNҬ,S(K,F8yC,ܴ6#ġx婋&Ka_"Btlbn`_@CL-GC6s_pawϐL|%v`S9ݗS%%^Z8t:us~KfM"{L¿OY/</?CXOb2ec{:ם8x]]z" cҪ}=fGPblЪ0/{XҬ0Q3*7sm͌%a37(O#v 5w} N‚պvXe;C hw׿p"%046Ak(@ dI@Z0iw/W"P L`bdnĿӛ$L"E ܏\o&8 9;aȼ X1 BUxBc083}ey=1cBC#{ W?Fy0?J`VZ>ގ^ BR<צMB:T=04wFVO&e&+37 ?oq C1))lM !hq(fO؅zvǘa ׿ן;G}n 80th?%CxHug}aQ1% Pbm2@Y=0}~Q5QvʩtG0)`AhU!o)Ί ;"l/v_h>kie| ώ=ФNĬF}lVeY1b+4D'f ;I4B<~{Q#4^H28+tFRQ^ 4,iST^?]ʨY qu*1Nc>eR3Hada|Pb}oUѷ_]VR '|g^sXu P@;>z,SSӄ}rar&bҬi.AO2M`k^=[,@V*IPE@[p!vU{Z­0uzhm;:U(@& Dv Þ ƎMPH zQy=sm*H1j]X '5(_REX#Bn]EzG\?e~9@aL+bClx `mFư1闳!BHFf97&; |[ˡCy$|um ?o>Ջf> ʵFqƶcrt[<`J7N3O5C;/%bƒ8뉢 k\uDwSyMcǎz`ox>'ʲpz(@ X\R+h#vPHopb 7bG-8tFKpE. Jg>vD]S0<:_NuE~uv%&\ TvbWD_YA9;ұ8\q$"f-P-#z`-RyJ{ sĤ\]CL1lt*vGmߦc`oR2.t# r)@ hF@#C5SMhwMB'nViaG PyM@OKA"TW, Fdl1~ڄ1i#NAkŀތ;;^}҈ g>S!x깕](Fl}ԝrx;v=pFMo-i4 :t Lg)b[xO]Éuq1$1G 2&.My3PY-jPSO;d(gTx5(@ P@{$0vQ zd *+#qGиC5îF_+í|v"NL92YݽU k`? 7+ ȟ%o}R#SXBtҺZJс)K6@E vsJIN8}J7=oX: i̺ Arf0Vm0wy,S`hb|[#:24ў_A֔v<v̀(Qz o D*jϯ:MPt`0¤zwp؈y+pC'&|"ウ#{Tzbgp]Sw\ٵC[8N: _bGl:: a}W -\ZDe0 ~؀[QӠto^[EͻDq]RG?T9czco .}G (8 *=8ZaB^??X1{{չ (|H㛠Jh3d:=(qE<:.Eb.c(@/S@ L ό)@ P@T:=:i<*w~1pxThmaP&G P" exk5=KgU U4\辝PjK QцR/XN PyU@n_LrK!bsX(>l@ P(@ @nyԙSe>(@ P( Ym P(@ P& */(@ P(@-`-ltV(@ P6 p6:L P(@ P@ ka(@ PQ6:L P(@ P@ ka(@ PQ6:L P(@ P@ ka(@ PQ6:L P(@ P@ ka(@ PQ6:L P(@ P@ ka(@ PQ6:L P(@ P@ ka(8j3@Td$"|EEANroiAEc(@mv֟(Ihk uC">M"!qPW! A tM,`UMiQE4I P/ao jG_bk%,7ZC_h})R|c}<33 P@`գ(@1X% zE\,bt5@`YK1f&0ŠM}Mij~809]5hu(@ P AVA(@ hB@yE2j7K0A"X2uܹ =A3֋ŭ4}[0_N0|Oj'kNh&J4(@ PZ/9Z (@ hV@1LCpel- m]ak`èJK`p(=}`$zڎŖHHfۈQ X[[(@lPE>߆bԥ>% \0d)N܈꙾)!,`eI?[X7ʄ)@ P$XZu(@Pȼyt8$M@+1Lg ;wT :,!!aSro)@ PZ(!Z2(@ dTVeP@Lz" @&3WlA(XvNh}/  "0̃(@M phMj2- P(@ Pȵk(@ P(@M 0֤&Ӣ(@ P(@\+86 F P(@ P`IME P(@ PVpm(@ P4)XL(@ Pr\4,(@ P(@ hR&5(@ P(@ Z\[<\CRZj(@ P]zzz077]cirLpQ'fkk_<9(@ PX@T"66b $66ݐ9_33SP̆(@ PH+HkG=9a[cs$guf犖`!(@ PK@}O]3\,1989̊(@ Pd2C>1(@ P(@`JS(@ P> Ux~.=GXrKu gom<tXZ "A:F9%km̎(@ PдfRzȂո2ՁsQwUpVF*t@_on‚};p 8&8(}Nc5*J4m=,%P$V-!SqjV*DXTC{¼Ys4s̍Q(@ PQ@pB e(mʘ 1\M, `DDnc7PwuXPuh4 ï9^\a!(@ P(@ dC, ͓ĐRxXCԆUjC8yFQIK-f&BԇԦ0Oă\4ͻry+1Qu+o=?Nôe%޺ 0SzW@74lx{AKKQLxRYnJ)%TmCQ2 WAR؈b%TkZ7-Mѹ*> ʡT!N6Jf%tPg I!:"<\BdP b[;(N)TCU* VW>):[!&C IE Ku\m;kvy*Ѧ u*Q/`A c ;7Dmb.nc{sjP8Ȟ̑(@ PZ JMa&C@tCp]4) .(`JBCr`T$ MLcRFSLͰELDK8 %J1 qJ*21Y)S!TO==:U\ǥehTSb+UVV?'lkV+TZ?v_&p[q[gP(@ P9!y`LDޱľ,jǮN¾ k2˨t87tŵTYb8u%q8Ia!+|G`1::B[}ċ!ܻe^^)+z{?Y1A(h12ڼ2}; ~m ©JE%z軤>bY1XF:2$=A P(@ P W|Xj댊7p'+ͿFsGqvJQdUVwθPjYMDGiY4nၽcia\ ?:^A'{ę8D(.bHuPg=+İbhs )l [1]Lt*WgX+E:TWbqGr*Pb O_*  ylFK[=\L* Uׁ4);- '7Gܛ+)@ P(@" ЪGy~~~(P (56sg4Eɧ.Wȧ5z<?f.l `w 6bP@<_ݞ`9hn$A6cRu"X) M ?6L%G-(ZXnAͳ)@ P[W*Uš 6+7Ibؿq L#,!ՓXu]9_c:N"ϲ0[ Jgt(_45_̶ ϣ(@ POpfObnꢃ%$ŋa~ =,TmOI'̛JNNEi<ʩ;|{9E:eӰGWuwâl=L(@ P@V8:+Zx?A*}G4C? <)@ P( ( K+: ?0+Dlhhx.(@ P(A(DFF\2/A3sԿ`! P(@ P 744oα窜C}J}1K P(@ aTD]]]y?T5(@ P('8:O4#+A P(@ P`!!O P(@ PyBphFV(@ P>$CB|(@ P<ь(@ P(@ |H@C'} $lR48S(@ PH$6HZ`Íkk_<>d<(@ P(@P*E@@lllr&S撫p69+(@ PR DGG#""=Z`d6zس(@ P({s'8\=ÞsYQ(@ P Lph'X\\{K(@ PSDHPɣ߃OLP5dHP 6߀QJpL5uX S1F>+gLft6hP0Jnb/_$ "b#s~:p s(@ P@6 $s`ҹQ=UOuhvB3 #qj^Tq*:}ƶJi\uEm|$ i%|?[-.D%qlƝJb۟Q\FW!nuU#:|y&ud|\ K苻#[]cދĐkBh \0͕ 6)(@ P) 67Op#8}([)䃁D s˱ڿ [<Ɖ!(ۣ'E vP8^5XؔoUuqI\JmоQ1DucO?ĘG֭P1n[8(ǍQв,w5"^څAbpؙPV)!yGaul.&- 0:Eg)/Mk؋i v_p1FVHZcnn~v׺Q 1OOnI\KED>1(__0Yd,Y'nǏŶ.W_A٣xU Jy, (@ PB]HӧallU~5c5- sU Ce@ WY#,?rE('[TEՑJ,$ͪF SZ%ĕjfA4@n96 EavH|-`p)[XXcdK+wgbpv.axy=$v!Jam[hĦV}OLCoh_p;J{Lx;x)'n+)1z'̟Ro!h3l+% նBb mÃ|Y zx R238z?Tglh%&I P(=ӦMT¹&,]v dCbFwCN (f+TRSX頕H%è%2舒J 2\..G̫8r<<6(d+=qT11ͱjt+2]_ܪ[K4s]0kxTwMcӅhm|}:{Zn_L• 礫+EAb8XDO݃!eW@'aC3o@W/_@dy(@ P@nhժUB1`uZn(ː;!~bs"$\ Û/O7bTܡRwq IDAT",Gs?pb0 wr(48E2 e+ /FAbkAOH/_U4^@ERf k`;SĔ0Ӆ=!0Lc(ĈV}[r烅 W">,$(@ PR ~TyԮ'NKx?P^e8|b ThDŪ A3vY-t^F`tuT޵* 7ScTv@lEGG| ޙBMF^CEbQM11:N܈Kb,Go(EU7("S)@ P:e[V3u30D)v#OaްWHRtfKqĴ,(ae9u Pn3=-+1L7Jx]?]P4)TE[P[`߼T %փqEXh("cE0+'Jۏ:FvKl-ˢtqX&t _e*Yx[,HEu߿UӛTJ'YJ P(@ PY`Ԥl/ѵBWڷ &M՚R) 5LA䟥h4H9_NR%A׮2: jɢդ0D$ͯՅY|0p7,l5GSQLucܤ#\^VHx9` _z=_o8Wf20HhD6ʗ|Z$ƕТ_J;h(C^r- (@ P(%Hbcr׸/A#+j5̆Uĕc'ot01 -gFNC=TV'P(@ 1Waooj|H4~zI"y!^sq.JM/8K@ P(m !iZKDRLS/2NpUbr%(@ PyW@P{lgbj1s<(@ P=XP 06777GHHh¶EN<(@ P(@P߃GEE!,,{s'9CŖEqqq áyP(@ P9# Jz~wn̅pnl(@ P4.!'e(@ P(Va(@ P(@ P@ 5N)@ P(@ P 7 0΍2Q(@ Pk R(@ P@nɍe A||d<(@ P(@P*E@@lll4)5Q|L{rOLa``q * P(@ P ssOJħҞR{V(@ P>\}o?UP3g=k)b 2+oWGV2}CeK W~YsF P(@4q_l{j>|Q9Tbx+ab +$-tFI'xq.*tJ](@ PDgg ڌ]J̭4Uxz. b'auEdIg88A C0EY1P\Wyិ.9;P 'oGx#/W#gaNgVw;qe ||:;>5za_`5R0M6ÜaYN`Eσ(@ P V`U Ns0UA/df+8U.Ľ03K~ş$â8o;&)W R˓G(j"lMӠ(@ P@ TU`ֲY_ IlΗKQ=Qp  ]Ҩ_g.WR{@'o0_ q .ZFF =(DLQHq8k*j-+GdP8- :pR/(^N-ЬUQT$(@ P׮]Cdd$\]]S>}ƨZjR_)S_+JUQJt@HO\ܳ8QI2tmtb;Xص- GE+/İQZP`&PHLN_FW B)X6b8mRG7Gz1(pcpDog? "C(G#Bj C%I3 JWC,-:(d0*|=+LFqأ=5fe(@ P &`ڴihժU1{TpZ[a:ap|7Lx?X˯vNK<^= @_~21olx2b*rXM['p{xY[ۇQ mHNjqBV!󿇸 X3Bj)jʯvJjqH!4176o/Tڕȣs?#wø4fE_S/X-+y1.<6)(@ P w{~:M>߫_K+;JP!:ְ0N^ eL0=CQ)Kn{AG*o?>x.o>6r?r_'sJ\b߹: ?29zF8 (U0V a@JoxU#H=` KS)t M`/t2m)ܴLaT/J!]:eSf2q)ҏCLɦ1 nECWG=Z$[t.i_h8$?o/КԺL(@ P {~9WICsk"4RdNk`fwԪ8FňI::bī9 ĴIT#x#c<5g" [V(QVRG%[ DL <\ wV"UMHYK mQk!%%83^ ˺XJ- v=A쐰ѓ5J~o5(a2H`u 2VA۩a]hcP, P(@/F 9V8_LPP=`>{ΏGI q11Ѓ玱{= ʬed$1#bELK `e%_+3,eh,sXfaWn8v[4:E z8r&5Lnn ?7'/Gb|}qhVH`Q@7Y`mEQ6 {8q1uJ yP(@ P 7$0xFst fFARfzv+>EQ,5b_Ru->z(q /sКVu [W _W.ܥ5E:zRD!B.:5a~Y_J]ڊ`WkCI1.񡅖tPXL(mPƆF0_2XA*Vy&/mLŶ?cht1+VܭZ=bGOnLmGoDD ݩ;s(@ P@ `طۻss. \pB0U11Ib:4hkNMھԕD34Q0&1a*y.˽j5ʅs.w}޿}qo@ۘ>,R bd;/t{j>~r%&Mł_.%<:`g xk: ʖ.O+&w\i DAɌ#"hblk%zEV-vmaZq{U!|r Pcmܣ@a>qp_t W^.Ϩ0kۯU-,,DDDԼ(@ P(C //aav00ihlpvM_(@ PM ?c]OC@7(@ P(@;B$(J_$|(@ P]tBB|k3Gq-Z me#)@ P(Twr//q{Ux26ݕۘf\Z ,(@ P@ h(--n^uOnϼNKJJPUUuc% P(@ M@e~~om6zke<Ug} P(@ Pp Nvab#)@ P(@ P@`O P(@ Pn!-(@ P(@ >(@ P(@ `&6(@ P x^իPUY(@ P$I?R%(: L+)|21Z,έb(@ PG@Ql6\r!!!(@ PnZ(/le~؎-]:+Eu)̑҉]ڴg-B P(@ 4N-ڴ"Ұb p0vEɠk5l&oC P(@: L&hӡm/=U_X lqq<;H\n;P(@ Ph^ދGSoAWu[#i2FDi߸waN~6 ;Y -|%uJeFimM7PqyRdÔѱV#-Z;?7a(@ P˛p*ʍ֎{bOQ1~=ⱒw'<}kUXr*@;.N, hL(@ PF*( XmgY*O|!] b*(|3YA=I3"dac/Nx%7EԿcͥ:>7$ Ю@}[8rQ8:k/>ĹN݄UN Ny琉H5 ] a&!@ s.GNhQkT1ccS P(@ P 91X| E0 `F04n3yd|x3F#XO'.K#c V]@q>*sOqǧJB > < '@vBCn^ BXU*8| lNΥOE2݊W~mFV,ss_`/} =0׾baLU y)LR"8H?[HCG5Q(@ 4eTTT 11nر~~~kݿo/IBlcBXa%'*N*<_ŁJgë_D>W#LHNmv]?=$vX>oYN CdL T+Oz6W#ns`ߖciEMt8wqѹ*||+Ƨ"˷^ʕ-":?;CxgVDp:{d΃kk39 0~_9 Qw"f=W߁ϗa"jf;J P˘3gFY 6`޼y?~@dtAoE@;>ZF zT.0Uܧ1vv_FU Drt;b.0 Sc'q$2T"qpd0Uټ6&WжeH'O1zBl0X sF<ԺEFNeێ}?1dj=o"y Jpgĉi ,R0 >UQ1a!ތNov(@ PI h_-EZwMwO; Ce>b _KERQ$/"(aP;*~!";< [ܮm Zb-x)UL r٩p٩*u?n@w;j&u|U ,m= >(X(;ݎJt4eOxYa< z\x_1@ ?79WrX<K*Brzƃsө (@ PZFF|k607HRsC;I&ܽGNE8j&TBl|[U":BFg;l*v{ċ,FM׻alahI<ۥf why@t,sQ#1!Gu6W2y$z\DJhp*t7+auLm 1&Q1<˥EG'v;bMTTlÿ¨hT (@ Pnn#恘|7@B lh- 7!Rlt`ۮ@-2#LNdMm"Tv6a~vbh|dt_-#1:.u:[㋘A X:w1; (@ P(dF7A$n;`*Sfo c`kjJL'2&&iA".z"X ZLv D -4w($MmPQvaɒlػ B\|UGеX{8ILޓ>%*J,Ś^ޡ#;#Xg!9&m=֞ )HfN""BlB P(@ 4@^^>tjRoF*^d-v%+V WUA5y5uZU *Z.-k+IDATP(@ P *_AG؇߿5.Zj#}Ub/Nn|>(@ P hӞDl6`a[DfGԟ6Yf7>|(@ P(@ 4r6(@ P(@ `W)@ P(@ P-0(@ P(W^A֧(@ P(@WY e#)@ P(@ PuX~=uz(@ P(@X Xɧn`6(@ P(P[}ӧOAj1JDw邉& ^(@ P(iZP?WIENDB`dtkwidget-2.1.1/doc/images/dflowlayout.png000066400000000000000000000631221352002233700205730ustar00rootroot00000000000000PNG  IHDR/b pHYs+ IDATxw|gZzBH$P$wBPEPDAĎ RP@@Q); B:Үypixas2{77, 0 0 v0 0 {0 ðZ820 0 0 0 # 0 j1DP<#e]vue% h4V:FavaՅ#F.eff>#D")//dYĉǎoc=zɓ(0 k=Wqq+W //vYXXGbii9j(z" !dccwURR-vvv&?0 { 8^^^AF\?x`KK? eKJJ`0TTTxzzޱj])ʊ KF";0 #0wɩxU*J -**jȠƧ ðZGxyyeggjOa222JJJ4CPPyePNNNAAJn߾= n0RRR***L&cHHyK.)ԂW.]޽{EEE<?,,$IJΝҥ}rrB H$\t"Gi&)))C QT;wvss3oNtZZZIIhuz硛STTJR"P%ӏɑm۶m׮#ХK*** -NIIJ 899u L&SvvveeBaaa|>_ќ={h4"Ν;#FΝݻ7ge3334v̡C aӋz_```m0 bŊڗZ.**rtt6/,))quu4.\(..vuutx...@Q˗B70 RI.ggg3  &$L&sss3J2++KPzD\t:]VVT*-..ݳ*..*_UUU^^.lmm+++B!wv/^,**vwwyyy?tzXs玅Ehh(EQܻslmm-juaadB(33$ɐJ.((jm۶n^tIV9::VUUiӆXVVfmmFQTQQQuu5w$IzԶm[777'''d*L&Ӆ }Rח ]ܺu+;;ˋ霜ak6zw {)(R! +**ڴi ёeٛ7o .(nnneY++A|^1Djɓ' CCCVnܸ_^^ަM&ۡd2duݻ%%%!!!&ڶm۽{w*~bbj~ݼLhBBBHN@@ Ù3grrrڶmkn߾M&d2|>tȲٳgKKK5md2ZnӦ 5,BBB"""*!!!'''== {Vkmma8Z~b~~8pի,S,sW <==i4MΝ;knRJJٙ@ t3!IQD" I:uZmll,,, CgKrWkn~7088\kݜafn3n~ݼ" q[[[zb1HcY<QVhJ~~>EQ; B?//Ʀ $E"QuuuII pXaVWkMi:++K$1k­fFT߿&Ei4oTT!GGǺX,&BR,k$hxۘ!XmdpMos^7vvvօzC7钒$+**qƛFYYYVW0S*E?JF}4M?thh2J ..x<^޽o޼yUmNaf86h4W;88tرŮ` mo>S4HR^JNNȠnJ {l;B%&&DFF:::&%%egg?tu57rtt6lD"̼sNZZZ>}̭#a/VgЩSҴ4+++@`2xd2ջ2͕J%B\%( ݣTT](KKK$u:0&7 djgYUUU:ѫjdL`foo_\\,Edeeuԩcǎ졩:Ɔ'E FVx <=====KKK\rΝ㙔0 àUgGj߾hLII>,#Pjrhtvv:siNOOo|J L\|Etiie\?D-B^onP(EEE"ͯL=rrrV7̷F#L("L&S{&<-4B(==aG B0$IQ#7`=Zw>Ν;+*WWW$M߾} ʒdZV"vڵgϞ/_Deee&88I|esLTYYimm]UUUC?77+++Fի&222 %2ĉ\nnݺmif ,--srr><<ݻgΜeeez>66=+++))I.s4ֻ흟ϭ`2I)}Pr ɪܚo0H$ׯ_𰲲*++c]vO 0׺!ܹ3Bݻ, 3 )H:uլC eY677Wv1<<bae2YAAU>}AkOL(CqnnMp԰_,[ZZr%mڴ)//H$... 7H  F 8ťnVVV={6T՝;w֭[ B XDƜa"""ѐנAbD"IMM(gϞ  ðQ_@ug|0 ðnA0 0 0 0 # 0 j~ama‘aapdaaX-`aV Ga‘aapdaaX-`aV Ga‘aapdaaX-`aV Ga‘aapdaaX-`aV Ga‘BeYNa 鼼;v$9o޼6m= L&k:99YXX$"U\ A3r{*BFСCׯwpp B&-\pԩ$ӰV0ʕj@S2]+>_a- $Τå,P &Q7LɤX~{BAAA֭u֚5klllvV{.MPm0!t:9%m >N(]3ZIL|( advr|= ,/ZH*?%%\]].^e|gkYjzҤrnX{[&NđRZ72` f`HG4 h?C H\cawy#>>`0 111oߦ(jǎڵւjĉV~'Xm9-r`ƃ9s GXKikr6؊jFpcT}VMcݻo񆵵uXX`2.]Թsg{{3g1 Xb@5aY`! +F*DarP'Z۠`n 8Z=&ngkzka ä.^!;뷀u떻y߿ _pzMLа%ReRmj)[XYY0È™kY$ABܡcl5ոEW0IJlNN΂ boBB-$ ~ή~͛WZZd=Vb%vDՔ>}-[L&TZE#ƃ}Ns"k`@cop10q(~5}K#lᅵ1eRҥK-,,n޼p'/4x$ϟ_]]=8hW;)TjnA$a2r2uc=}Nb,E)V~_$+NqTocU"ph>};غB\Q_Niҝ #,d,wH\P{:-yX}!GUUUEFF޸qFBׯ_J˗/oӶy7NUЏRa>]NZ39ܱ>a#^xB㔍l遞g]s & H`B hX2휸(Bx_=aKOdawqʾz->I$wJ5 FqLwh&wV iWjt&5: uyG+]-d6W!Ic?9%y~ʖ \xO7c&~sANy{_W9S_A_b+8ij8|OJCܽ>ɿ^c0| HJ%0Hn}Gڝ$It)76m#egW27uČ73?=hcfG#h7ǃ^ α*DAYuaf\oή er^úP9qG5/ᘢW @Sڙ}60J/?z+39ڢk]:cDt ^)J_]dѩ[w\vVV~o^X{5}|rIMEVY-)8dx,m۶oIZgͽy'K\$+vGF1999**jڵMqmۡ뀩_Y#$jHk#d[ e7}8gLعN׶m]C#2&l\ݽ:F=ķ 2_ںdBWP&].mr5hjvvJ+U7xwJyJ2_Q hL?}c-ħj #Q]_jۊ#ûOۦoKO.pϹ?V;%ۮ'쵡}F-yGӆDD)=N=h{5^Ԏ*f(k1o끟>}mx}g'Hr.jAO෻r.m"w=V{ F~tAOQmk =ʼ[ôO e30JjVk m#Ʈ_ zyHUPTNИ*r.O'(ҥ]94w0.lA&iǎAp(~ޟ+V!Kt|xDi5pUUU$cǎG WvNCX6 {w,A{5I{W?x7沕'JPvFݫ)R.(LqE~ ͍]O{7L_M5jXN*),,,,,,(>Ur;HZe"ׅڍb=V?D0OMyDMM5SB 7<}5gGD5RPQ\XSq繫V Rn1A?3O҄vomٷeEkW@dؕ;_N%J z/ܰ s_Wq˶nǥ?9T= Eҥ+#zԍ+B#>X0 5U`27+WAu%Pg3ś;B~ 2T?ܜl@C< |0Ge]>R=6Ԁ!O ll=w|O EX8ʿx×}A!)RWL-T޺f7B|g7GKÝ!'Nxo`Fn3aaP2%[hawt"0hYpא +;1T(w}Һ,F֫ůLydRۈ~IՍw-GXۻJ- lw¿A پ#^$x>\\2&k^^`k?g6skm\@uf+e[ؗIݻ|C[^^,s?~UZa$Eg"q3 qR1 ˇ+{`@ޠ|iD$ɦqv=X75ЩJـ.oaß9( ,SUFp{EvૡOZiu!80x& )S6չ@50E~A!$^{G/iUR#VU+?6>d4ndYEʟ߭5Q9[ʲJps!ȠO[4RIn^_vcۂ$Sj66c'H>4xZRw-0,B &8`oh6 @ h .}U}3g6q4o7-\rNִLC`d3_`4#-J3݊u+MjpOۦ) K&V:)*mFd(cݦc~Qaiثv%՞zE%2r IDATKw)$IRk$'l z :~ܡaP7 F#u̸3fԗ\ Kc%p㐶ÑU"SڮsPRqn4B5 mGZ?=:*A…4͈AuJA P@hȺ\gY5C"᪡Dq!){p϶N.̹YAM=j>ݱ۽~="j&V+.=ɉ=hG^v1c|姷^* lll&Lx…^x ]N /*k$cbb.^أGɓ'jXP!+׺5yc֭&.aKcKSKTIH(/ΩH`{ZS%)7U\ݽf#={ǸZVYQƨ* 3>0f0m|/"+]2{dc74 8߷7Esoq",BX,"I kf0-aP3m&h XMUI~>όr9?x+!vK?oўfq_mkOz e47+N46j ErO[Z4EKWWWd0_~/~"UZss۾KXwMp!9jD47 e<O,Gb֭[={woe'>y!$.99nX@DTTԭ[VZ%5_/3bfC=@XiGfL藤J',2o.^ɩٯK '?Fko-"%ߞ2ض}~W[t}cמ.6pogO ]\B!Z(x< {4iID!  IIܿMp2`(-cZ3>u 9[>#s \97XG  v,ع^,[ KY?/ 9$uvvO}{tM3:Xc&E=2sY3ߙ߃"%4?G*OaΓBȧ@,&`L֙ڢ^N~?m'H k,J謳n XT#[}Zהpy 3|񚵑仃t?6*ŜȚXws)hn ( ;Bx X Xt52"7O[= uAXXX^Z.u֍{/$ qqw JKKR ڶmEg7)֭r޽{w$vލěUV:8o޼%b r42?~b?؋QIoݖ08,Z„ w,ڂ;]qhBx\?'&|vk\J>wG@U׮]?Ӓ^zaHL/vFD=KJJ6l^K1?nK$Y^[+Dj>$!߯ԩSb:0 ٳgٙL2OKlEoiG:55SJ&   pY"ǯCanaA8|s8b&.8Yr+(~PxxQQQYYY}]ddd1 "*A*^p֎ !APWVVR?222BCCe2)Cn0sۈE86mcmBz6nd+ZՎ݈N<`j&pQLfXjP7?vqna/2$mll֬YS]]2p@KuDKJJR(}=pX,nCL&T*=ѣGǏeׯ6!4{0Ln]srr#GK@@}*Uz u70_M莫f'̆ G vG/sww߾jfDGB:.55uŊJr)))֩Sۯ_>88XRսzEg: pgY6..^p߯;;;>| ! ;<3dddw\@ĞV A>VAď_i'{!۴u?๸8~ڿ~)Ğ{U6 hNLL!!ܵkz} ࠠ 00҆e@TfAk?S:EÒtIY[ܻ}z͛slD|mRnlmmz=Q󚢈d :vh4 (R-<~5}K]~_Nfi=lU#BB,:V K>R@R 5ڨ X|'g1- n[߶B(h͘nIyت_x1 H}z o \tgVCD @z}HmAsx M.|{P=auu a'`.J[s j@&5l0 ^+4́k 6T1 BRi[=(yP`!兏"|V0>B" Ҥ;zX~đWҮ U,'HhDq+2b|1Ƚ&LA 6wH`'FƠTF֘~#ed ig'[~.(<)MWS:37&1w6x螔MSP=)SH9G&k3wo h ]w9QwMm%9#mgmM_J߳hiLEK{ݑfT~sϪw& =tW4j0wJ5L.[m|kL4\(Ji?K]S%7Y3B`CC b]U}`\1#G[~vj90<ٿªQ4zhD,e"͍.g\w>' Nݺ !x4V.ɪx‰g'O%lch9䋽gY=(opK*Ν2lt AH#߽vwƎ/gM߼r.m1y/I~7l^5/b&ou jfF>zI pU#[6f7W^ߟK/5: ]Σq<Ω//m]2٫dao_:WHg5-;.;@@r.jAO෻_"]c,-br͞])<ֿGTv㗏gᇈ=! R4Yk$1JyrF%S,t'|B"b2E1߼dK6_(8a-rYa.|uYIH>_]+*wז@urf% L%1ʴC,?8v?]+6bՙG-?xv]xP$]9n}"oO6w6/2ϥ'CuN!ohC&-yItIʓK{W47;qذ~@آ^{>:lƾQ!yBc^ %E"(ׂEUUI2䯿l/~#8 {\ӿ+$銓 }s’(oޛ"'/65|,d(K<9cD]w?Ƣ sȴ[iHk#d[΁QV%e/mwn+¾IB; *4qϧӆDFn>7YG4CVg3ͯ߭T"Eٞ-3峪#AT^LֈG\tof{q@fK$S+دˏ_SeB{R}ƍM[~Hqmnn|뒨ڻahn%|sy~Z7@Z]Q{#4rZ@#F]P* NMIݺ˧PF Y$ ``UfPWߞꇟ\8nڜi}1ػbo"[ wo>]aѱHWRuiR{ƴӈL: =,2czDtёO90񫟾7<{՗G`+ήUteC]uU J/}da?l^kϔ5IkRWތV.}m3 ~m9`U8t>J<.]Hrz!_?~2H}\UZ w ǽХk>._R( *_R_Z Vuɂa!zէxHa+.Nla#ޠ$=;w>?!ڹ:ےS>j7r,_=X0b ACo% ViiV e2\'|B@A0x~ҥzuoډ%T:^B KkGyZ ŞyڃoGv7n߬\'H^|r"Wo?͕byr!uJ||yǷ1sz@vG Bf;?W[ YSkk{Uu5_Y =$3 = kL\2&e sd&ђtppw -qV>Se18 :yH! YYt5qP_zcZOZӞZQImM {sbEc#ۇt2z`@ꬉ:)\Re Kim9tWz4x(;mQAW^XX˽ ?vaA$Qz+kƎ;Xd+7VM:Λ|,^FӼI> <LeAE5kOd]EMIPxaǺM*":Vk]2(FV.Ʌh'M:yCV;QH|JYU-vs J"/wK<=bB:XVlx$Hǫy-du&^~"]REzZMFl $:^sH)Q߶ OMf5A؇F]UqөBUزq_(e Z,|򾮖v6BN$DW]{8)a:h‹skq톾e,,([١E+jOݹZSWsB!e> ", `Ba<2ɐ&E IDATޟ߭5Q9[ʲnCWݛ^4i\JrƇlFB gB딝TAغʲ|gmfuDDvlw>kz|ɬ~~N }"=m^#ރ&J e|>͍[wn{zz E͂JhpVaFTTϮ2[>x}k 5ܷNڻuxiGKH+[Z'2v's>4ѽ JxXyyƈq9ludM0M{<+;b\=  (H/B ,,Bv-(8 !&@{v.zP?0QP~/[F؈,.uε9tў.W#h<f֑m{?`frhV5Hksc[E>^0?҉;vAyqV76C'y-TN.7(N=g"a<_wȺow)Q->7o]0vʶZ]A\ƆW&BXxÅ|yv'^SKC(t/ˆhwNOwe^{ĸ} X(BhICm |  w_ѕfHp8o]2vN޸c"ԭkp[3/^)ƌ^cqodf%tرϚ'gЫ#&caqj tS>N5z>o ?jSYVChxv-:u+`Z7Q4~bl_~Y.!zNœ~~!r*5 1s6lT;+3rb69`WD5z!yFN6w{Z "FE=1 ε]Gvݴ[JwX2/39۪-$(wN ~1_ 9Ս0[ccyVZ,ĀQXJæU%]^R|6kqkngljNW#XSRr+AڷOҜ_;ȲRƘww8]n\#ܩ doB.UnRt8@)*Rtt?oE#ڳnsAd稚(8ag]u@˄dk9cSx3G rM2Φ3*E$ m۵ebA$3SN~ىg}bAu0֮m4cp -? ykuS*vyӦڕ.å!$44իw!$$|3\B9!SznUa}PT*^^^wځPpZL"uUW4֍_0P#cMr$^J"#2X1SKxVzMpc^wM%Ɏ ~u[|T8sf`ZXU 2@6ܮ*Jԋ  QQ5 8BAf2^n^7?0#qi9iRsr2vNOKSa,@լZ F]|fCی'h'Ji xi|5=E_7_Kx29g5Llߥ 3Ba>|V77N6%58["BաM(Rl0+'9ACt~ =&r4[ܧM+!zUճ wܵD R2YUllMV?WM]ӷ]v`vJPr\]~ݟMNF1--b.⡫|JMYs}ZwQbL~U_2p$Yy9y [ФeTZc|2[,URIoۦ5D{l6FQEQB6)8L6*9EmH_ˡa TZ՝ WOK[oܸ\C&44"*Tu\2(y⪜g0fa)5Z =l0M品,Wb|-_ՀIU&dC o"BB!\0 BzkP  C @Q=&F>`DL衦P(qmy^Pt)v NVc8@5P3Q%IbE!8A=:0 B& BB!\0 BB!\0 BB!\0 BB!\0 BB!\0 ?(̎.pqT */ B䍭gJ‹|f82/lPrV1GfW'&SR9X\B0"jw҄]NlRSZzNTӥCPb c,r{zWV*9ID͟r'A2GN~QiETJxvZﭬi;cN^a:,:z0+='˲,I ,IVItK4'u۪WlW!&ږض(^_󇣹ԃR\:}.TnX>{hKOMәƎ8 2ITyM_wȈ⍁&sZ줣SS3 a/D}݉1'6nU#%/9}w?5g܇c-iL&S-k׮y~z&dPўoO+/RLz1#5'K"eyO!55[aN积۠I#Z5wfΙihm{cgf|z0D ԇG?y]I?~k뫔ոٻ%`׼l׎O&մrFc=}Ey;ݳҒpb(6e2*Sٖ~.pE!vg,l5ae_s׷H@5_bw6n\ьqO㗚;yu5|sٴ?^_{ sft M}ƪXUSy&|Ϳ)9E#ik q3|xX}*g%? T?TRїh-":-K^p¯NE+WpRNK:ee PD"5yFQ"''ג󋪌S>[7YoV=_7his?9l`@o~sʜ9'МU"$RkA^n֍ m}ego} {Q5 ouJykη]e֋ͻ<ùzqKRWˆyiQ|awN0rrrΝh"oo;|q.zlEW4xFC"9o(ȲdoThqLC0iTfO 7waBB׈O|w#:7l}R/^|c-Z_Nc:tz_v('Q(7O^C{7v+neG{͘5}TDύ|;s߂I.=Ls6\_}+vl|MXmր:m6l`4KuJQbYB(=oeʕ3Z,{رcǎ;xyK>o:oH=ՑSW-vVeSzm޶WNS2e{ZF6/uhƄZ>DKOEw-*Ystk0/ htׇ/y)(М#Xː1D?> jT9ӦMMHH0Lg6lXLLLe'SaY-};Jv*S*TTLs r+"3 ԫ9I+EG>:`n&%g9EN6Yo?$qVY c|a;{sMg&dڹ1q>|SN 7Ujb_,:*.e&D75e l *f]-r7 ~vN{gd_v] /Iظ3Ɏ^X+}$,k,>=ums>~dg@oq@zHThĉ'֫WgϞztO?ʫM6*HQ'TmpAsmW(9G4Ps^Fj!7-K_V:wq蔠QVGiOKLtWh1?<{o׳'H{?W] Mpǿ;tDnDڨ~ھREw4 +ʱچpjVQ xN6ã5g3@; ϑX>H TPܯo8y jBFTrS$A~*Hs DW)8Wւ+2n\>+RzQ65ɠ @:ua;dMYo5\rQgY7^=eqGЄA-3nMXGzO,.Fj#[jREgG`,(uo(فλү΍F"}H@0B)J c|fa֓c:4v־>5z:' ?iԷ5h|[ںm֭~Yޭ150IDAT0j3`nH7,&?bƇ0`8Fk)>=教Wx<6)chͯ'+7V7j19lble>h7>T>o+MctIt?xg| ۍP %r)!kܽ|\'g~WGisS~z}Q#?\e[1bTWR:|4ky#vW2 >q/.ţƆt4Wwŧ'Ѷ=+~^qI˒>`*WrfJ5t/x,OZ?tsUhƪ}4ZaJFe񄐸n+^ 3ͣ!؁U{12 onzOJ 5MּS Euѕ~Q |@ ;{>T` N ET4+ߡ1\ U*_Q6g ܹi_f/sBjJJ)#ޘoRуJV:aqk+$VJ7_wlwP`2ZY6O%GHp6 Pud`eJJݞfd l 󼠤+6 3*DX!bFQu Ȼ\hʄRNS2E㣌{ j*Ne&rW %mVN8^DG>[%b.|ؗgUϱQ-@~S;TVI֤ ?|yD=FE7~!t?Ϡ"q'(W;z}g~ށx+U}T!_oڣUh|=ZVRa-z0B#u-diORr;u# 6ɡVeK_''67=7rȠǦ{{jEM&RF:!S*aBEB2߾ Sm]V;չ6duϩM+5BwQޯ,AdPν s^a,@GQ)ڸ#I}T*h}O!8"4<ϓ|J7pv}8"TS"TlYb׾zJVTjZToTc D7CtASSGSNnIrIzjbǎvs L1aXDKBAp:B*F15- $I:@hdY32ITݪ2c̹=z9̿o/$2ưDR'B(?B`2@! &B`2@! &B`2@! &B`2@! &B`2@! &B`2@! &B`2@! &B?r'EIENDB`dtkwidget-2.1.1/doc/images/disable_close_function.png000066400000000000000000000046021352002233700227150ustar00rootroot00000000000000PNG  IHDRIw pHYs+ 4IDATx}tLg;ccF$!jux[Z+]{"om:El6iY=R( TDDAb&B5_}?y=߹sW-vە>[vѡ #G˶nh{aEMs=hxGᲗ^ޥVG YL@wyzpW@   Ͳ@ WX X X X`@V ~mѿt4?3ˣm~7Vɝvi=r999~ k|^i,,BEU-W7Tw\ie(v+==i:Xvׯo~?*߳tWK)Ю/mι]jnpreYilKs7S=y S768[&spm-*dqԀnC. /;5!qg۶|xrfs|>RJy?YN]%K);qDYܽ~ =q_ jذiFNnx6cƿuiO>9f\zZJŊ飣o$k،F/ΘfZʌ-֌r±ӎ|c^zCբ.[P<`ڕ9_qϯml]/쏛67;4;.T)Uri3뿃PjYveaa|Z) !j1"uqF.{N՟eYyZzmƃMylTp >W]J)UHR׶Zf[ԫ}=<~̑ݟY*NjL[9w%P[pl6]=OHH{EIw˘f_)V٢"[릡RJi&-"i%+;Lԝs Gٚ'nB}*Z(ԼnN-tSZꆬCCǏOQy4/KWm9X@;6+B;l*1aMY0lMVօ#[S׼]gq #ɦvWf,]9$3#'g_2t`_oFlu KciNlˇ-S-[^f}g0Z-,bp,```Ewbp@ @ @ @ @ +,b,bhL H11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111tW=<@=@jr\nFR yλ ! =*o}dݎ/3*|BIENDB`dtkwidget-2.1.1/doc/images/disable_composite.png000066400000000000000000002400721352002233700217100ustar00rootroot00000000000000PNG  IHDR[F pHYs+ IDATxǏ&Yb ^>.]ee6Ù!9KX], "AntU' \f1=|e o_ZF h5Հ$e=Q $1+*nBYUHDDkEVm~s"nˢ. YD¶5M*/UMp1=HB׮Jz{y3_2=$,#kxuuƂ$OӬj G{;Eۊ:o +7Џw~ 0(DĎexiY"MAyVȚzt^ PW_\CImht[(qo{UA=a'wݛ2No&YQW+''O&Eۗk;-̗RR%I]Ad ~wnlRӝn/ʙowzAN:x<5Y!e =%). ZQf]ݵ4ypϏ"a p^:߾U2ŊVT( ۛn~з~uQxz_l7EN@BԱ,^xCIҔX$R۲,E^:^2(><)olsj;C(0 zg,¶mUu4a;]tU^v޾[Ȓذýv XUtDi vb[[n@t AohqZ2, _) EY4ʜ0>|h e 0(QY6@ @r`3a@QvҊu ꊲ DXQӋ|kZXKRV[a:Ǘ%7'7oD")\4uݢ N MYlIf~|g((Iߜ^qI꬝4I(8̒ # ;y~[dXn^ T$7ldji|^͖݆uwm5,6ۿl}7 BzA8۴@7.۵t_e]eQ#mvӜ.MSofN%<6 RU1(GYiUNߴ7 ׯ 1߾:AX.]?~OMEV ҜE+'8 QFoݠ,+ E'ad03;Lz1l!dc$J({nYPxF?-֞,)!B]YQm'i,?^= '$'?~ ce|ts5C5=yp0Fi| )*=;Ap3Ymu u'a`o(g/m+Q%y\ohLW޽-Ij4&?xMẼ;yI,Im[*A9!,&I  Eci꺡U3ʒts3\ww?۩*M rq0LPRP1@AZW Au4"( &2eaPH yֵ4GS$Pմ kB4Ua41VUUW$]lob!@_zh $IH0(mhPYbf x66M#?}xz/Qlx"'\@F)͛ӫ~6"掟s8og}$u?}m5몴4ُ$Md$4˃(5[ߟ^^Vd\MdR㕻:?y{s ) t2BjZ;^ڸ,fLU<me6I*%I6u`_8M<'9Xra_ߌ'r V ( 1fvwݮqstJ|v0)i[ ٰ,U]qAɲ|&,y O?/6'Y42PݝO>ڸkIF,M#M3@w'Պd|9<70t]vlK4ŵr5@4ċi2f M4AhYFWWНv[Ѡ!G@yִe9Ď:M]iUe<'&IyUZYm/+2f^U_^xooi9)MMybTv gE߼xL$A ;m7̃8m(-[{{1]yA],*7͎&o6ߝuu3`1>,EI˂şk)^8</?wgw jڿoumE8!4 yiO'eU64̧~%sG'77n@18vMCG%E>'-aTeϴ*IVcuTe^ .+IFYMS!Y$3QfeUvPa0T!X5BLAjNI%UFd/(D|'>CzanZ.q-آ KX3UQմFUŀʊdQ4 fd@YYX ,# c\PX&)s@) 3ò!AUrBXy!J:/eYZ$J YNDYd4L( AU cSyΖ؁"ɽ E4,4-]W%_V'zijz#`E\l6592a[0[w6$Q"cN5YUMMΰ{0-+NMRP/mV:v](+HY,z<$ zrr5[ʲw߾g%BAĶ_]\}w)@bWiUn_G~oꆨpw7^ A0_;$QT0/gه5MC(˼85fƾ?N?~5p Yy1lz6oXQh?}xzhԚ,E|77dKû=AHH=Y2WJlS&% (,zww𛓫gϲ_>p$ݮ7+/˪nWo޼\U^=_O}s3 (P,|o-#,G{=A;eɶ^O}M7QYܴLRg$+~4L⃧W7NN]ny^(`;'Yv˱߫( (U~n .no8g-TYO+KjQ,VU]#j)jB `s$'YI0`R2cu0e,ˆEyX֔#I᰷2 %A ;s*Eu@XX ),bŻ;B@(d A@Qª.RWUCP*'4 fɋSż.EkCSU8Ru]q-k?yǑUMh ̳"2UgJ wjjeY"$Y$^!s,IimY)0MYw=Y0vښ( ;MEDQu ]Z.=Y+Zq*IpIN)$FMX{> Hܐ/lsܨ۱UQYlܼ.,I|hEA av}[۷4aZ/n.nӥsYpz#0AFqq\?N)zf*J,EWEqMEO?to+oV1*r޵t0<(/8YO߾ey%e~zڽ:;&ǰ ܮ'|p_ED{҉w緪$0-ި`p6/j]VξE< 8pp IDATNU{~sqgۥ$ ϭ c4!iQVi^Zv~)xyu}w/ϗ/, 5 /'39uuzqfDWzaow<'E) "$TuERzZo,C-6T(D6 <,eYlۖs bfe(A@ ҌyRh0/[7ummj"EdAePF)`Y T2 #h *{[`X`t `1(sP CPV.u(J ( E kIgIZB(C#EUYV Z;fو#mp 3OvٸA9ĒeDH v%I|}zX{~EAYU$;-ho6̋뱥Iݭv]Rj# gf8!uQu-IBl2ȍCb뼽'A NKMmXMCu캢`,_w-MSȊm,+5IX |?݋ ?y}3y3{u~#Bʛ8 ڭN&Y!1;4lIߋ"MkeUEm;{֓$a:,[TExQvt`FDD+5(+@kEf1$<e] &@)`P!~GYAu^N4 ‚B4^(AbV ,oZE$H>qY̟NWO44Td=C;v, ?O:~bXvC u^q TZղ$aVVnVT26$ <w19ϯi%UVci/ޞZEBPc]Q\?VDAvYFhE˂bD M Ę.0Yސتr0:x=^j! Д<'2.K|ɰipwO 椤vx_eQOZonLfѨa*?^\K"igxa5T;{|5]$'9ii39)!"HEQ|wr+ 2oYog˭w=[/-ݸۍRq_K1q^V'%v<8f6V=YEށwI2?WJʺz^TVbNc1ruu=5n2 46!9Y0MX,<5[*Y*"#$vMꪦN;8 BYj7 d0[3LYU 'vвÝj[zX*3hHݽFL{""( 44>t"S J@ fIp Vi4@Ib K@YB$QY xq\r @UCB@q )EsRHjYR#*Jy.(,E)21fPN(,Veѻȏ ׎ӑ!I>:#UlIG<~8/KRXw0H A&sX586uEgub/<=ז'Yzy;=/&"3zs56U^LMk, SizA|v4Q0eY I?||pwrXQiɲXjq4S9ǁv1u=acXe5T8#EK ΰZƉv]1xqqnݦVU" `œG;#J뢪ި{`Wů; >FW>uǷtmo%Y0uA^.! ,83/ݕ}\n ܿ/~Q {ag^;'$Ĕiø. UbyKUj Ad ۋ":N$1surh+P ko;߮Ox{m1oupquz;<9]L$h&=ўGYiM྽=fǢwvʢڪ;MR$a|z~)BĴ*-]|?7gWWMK0ñ\Aydڮ5U;A$ dxzz}@AA4%ihZR*׀$5twvpZ_A0nP[9$ˊ"c 1P5ZW4M@u0@DC]T<P@Y`i"Y+Z.E(KTˢ*+ %!,ʪ(}?2Rᡭyv:_q\9К̳ΏIIBί>CTjbvݾ|yI6mM-*MrU7g P˲xz5,Q W@eaGap\ b֎?[oz,@<+<â0[/mt4к$XMLEƈ.i]yn2#}ry%YuUiDaTd]KL%'0ÝxƱƃm}4KKP6Ng8Iv5_*ryVvi X2뷛H׫˳_~t84&>O /"EHҨ)Jx&)(h~s%G sgF 3;s?L֛ "UH^\͜4``k 21 XNŋ~j}LQ.g SuIji5qV }qDJU3֪MSZzUG;`t_=%فWDһnfGCr83AAzЧgѳAGC f٦ꖻ&o̓y~Xa=Zi'Q;[aE oۊDiQ1N1g?C;(4߽~9٪?fvSLe8c\i$Ai/I5m3 "=tmiQQn /KJci*2A%NJ&sn-v˺(I(a4tq7?NmQpͪJ8ZveTE Kf@h9>1YL`9 'S! q !@cA|m{$1]P$\5]T8o2sIQmYUU=tLEfVqguWAوslY\T-vY5Y^Ab:"7sǟ~F|w.UVm3۬X}ڶՏ?|l.eHG;[IoK۳E7Q^G\,7CVeZr4U#Cv5c @R埿|Bͻhdwo1_{)]qKNWǻgza*c}|uz; #ɓn9#|ף# K4 x7[EUA?ߖ82&ey?*gOas6߸绀gLJxw:RUSU7?:;\fs5?|zܤA#6ܞ"?oߜkJ vC[y&)=*& B*}')߼zm*=2tr؄xlbЋO>xx'(NF:}!'q䣗˟ȱ쳛eWwY|w|ʚOb.at3_̖߳A/ϊݭh⚖F'ۓwhB]^y4k MڤdԢ A7aMP2*ZuFV|\HJ>}q4oߴ]Fز'{SrMm _~2Bz:kT˲cSE|{334g|gln]6miѵߝ|e|IwIXi6uM59f5eIb`[{Au1& 5EP2"zyM2{[[qy7?vXp !i6ئUj5,ɲL5Y$vm .>я?|ZnWYI 2ei}\<7T"!ې j_>a1Ӂl1[SAaj, Ӻ]Nc|/h28NVomíɛ1_}s"VA6uMSBG\fepfm^-Gyś '?$yW~uw<I}ytfLNrݳa?NU>,Ÿ~Hz 4c]HғcЗuUAIt}s[Uutpo6tMk!@Uh2I^׭dkG8ǑѰ_]暢rp7+˼h$s !uZץ*m^J>H 4AU vAu G20~\tIB2<gb BHT:.0XNԣ~//MUys0>ڝ aMSZmy~zw EYꚺ Y]S7J^>*K(g~De>,/gߝ!=ێfp2˲mmAvR0&Ga ΨW2L3XXXejjzs{dGnȚb/=\̻NȂfkdzj!!b ģ<ʼ2eku_mQdOb Դ%2-P IDAT]?G?HEE]_ܮNoo櫲lwGXR fqP$|g˲,Mnћe$EV;M1j:/Al~*M;@khknpسtaIQtliCن(t~@ d8I//_MQEbɊr5rMmӵ uHtq~ n/|wFuUe隄Im†eYٱv"CXq^]{W*z}<>ػ_onKY C^\r ͗_Ma}ķmICQs? h[݂$hU CA[a!d 4 `8E )kc S@&SicX-ն9cHtA]ǚ&yۓq:_7MUBTe^eê>NfuWq]}~{_TOwTUބq%D˜#ֲvFl * 5 ]^wQ,+<K0`׶~ߝ ={z}㭁Z[e]Izq*MWY˛(&mdok6[Ey0eSEc?z|`&L"2]Fy!Sz7=]RW$") (%\¯N/@ࢮ]߮a&QRu3te=[uwd{/K0,Kx`*rM)0AA.Qnehp{oϺL,"=Xnb0>]"lw6u.Dh&$uԕ S\ogEy¢ |psBP*:y;[ ²|h' ,{}9cBT`@L@5Ų >F)ȭ59g7).~}V;?ΰnѠJ8$+~+&ku'B7aI7U9c{ΰc.akBTE]J$I ZƊ``Y祦MB1P3 DoZ5PT˧',x:g;fߒmiRIr8_^ S:HcP5 :kL$Na'DA@8C'ZBD[ Zι $g g΋( ԑc AUumR*2beSUi;S!ƺcmvk۶+UcIVpM=#7 77"=wD¸el)\/Vcyyzvs~9+"2E]aDV_|~ښ%ZnI@Daf[ZU֔ebYpE=L8ޙz+ӄc]&LJEYEYX۶Jˎ=:ز z9,*v'xz~5ۋyLF2 fiRJgtIŵ~6 Yiڔ~rN2 pг =/[@pT'd _l~3y}QNYԮm貼Xy~qq7wL)vlkۦF%Xw;A~V:#\\q/IKJ4['y[7__ck~wɳ$NE{t4A { {ǻPN"Q6l7 9Zr;DqRE&2㝭o.lC+ێn,_g;^%uUלQø} 8I)o ReFYYZtM[UV`4M˴ Mcyv]ӶT8iaTbʎYgebIq_ VzȳyK=߱-#R3A(elԘegE'A?_+p fGc`90,$ S@еPWcHa`u8X9$eEU6ǣnv_hX[ֵXeA=ڲth۬*a[ړִSDii(A._78st]+ZR3{y=yvrQJ|UUƏ&ߜ~2&o zAY=DqF=JReYȪj꯾{;z5_1BQ(mD9mu'2+aߙܛ/nC1tuEU'mK|<*نdx+sX7QZud C`QB47?BO?E}΋@TJ7緖ՌLarE'$-dUyszZGN]x~2mC6'[ ɷ;MbzEk2ptC 릩Pejx`[Q_:ڮ8%SVaiߛLC˓߼:{泣 &l^v&Bxky]FqS IMmn?bkL&K_:'/˦7of3MnGb^N/~lYeǗ77JDڦP) ǶèjYQ4i| qӴeYgy)I,K*S1FuӴ\Hi**E^7 H:*ss{D:JÍ**+FۻAQ@^0PRs Iж k#ICi0 ct  )mbE;xIQ_8WAe~߽Õ`&߾>_/wlW?R<5@ifkj5u Y;{=$,&EgS"j$Jpt\.JN_lbWohF̓eg9EX̷M.Gе@ȷo_mzg2J$f3p,]U.!$y]ǘ.ϯ B}szmjIV\qqzywu{W6|9@h惓頿5xꆚF(=Kc^sO>}vOGjQfyCeIӴ$᦮v&cuc: MYaw&=;0& 0D4 cR7 MG*E&Y|k'<=< UlټBqC$QVHD``4`DFycL$@@WI`[0pHׄ0.n JL<Ιh;( ,[mb,kMVwwD׽h˶5ŘXi Ct~s3B\6u$D׵eY)T΋iZR  `C{O?#Dn,˛x[V D(ɗQJcnO-SSZV|  ,۠dP5ARY]Mt]eahUڎoY2 OtU ^_m{ѵ 0c]W,cBi#=ami*Fr1Nwߟ˶/'8˦;yLYx+<0?wg*Y8J=uKHӕ2hFSdYS.GӞgAU,gE`0p_<>=VQe5%dgԏRJt⼔eBd*S"w/nAqڼ{X6{th*K!L%h5uiTq֎}dg5{iM' J?}Xtgҿ{$[GtzXw_Gmǻm\_=\ 7Qq3[^%/^|wy)0:*[^ůyB~ͷy^^^ϖKE;u=^A]WX@U%w{nZе]VJD„0Ɗ:NUEH4È8`$$d-[nhej;xC7yXeO*w Jn*AGD!I ):* (:ʀq C@݀B(kEA*̀UDvU] u ]k>Mױm&m#onUQQTMi˓iM2 ]Vqbj&*5uY89taR_qU֘<-v%EQMAqJQUd:yz;$ CWuе"Q931i^׻&LxCt6Q\6iþ7y{z;.K~hmK{9 /_[SQGG02UE״&;Y%:LL0%dk=\;- ;/BaYQniIv/^_UYZiJHy+q!+rEsw,Bpv}:δ)[[o*I[ww?{`D]WյR&\Һ,,Ld2ptUM|u[<aJ7x6O%2[V|揞QK1l~9FHds̲ngԴcYdҼPe/|vl;RUydIz{yjsG' zhoiZ1c:89_,UUMHD x<NF(NvmܝN.i;.88!DSdJ6aMI͸ vkYUر2:$Gh,x<(m)Jsuc~yH́iUVCQ@ ` Y*ZC[е&K2 QК,aL9EL ,PG40Iכ&ͳ8zmR*cdKԤ}í,K0Fm4ww&`SUdƁ }t;ox}:nZ28.sܡWK@p=nVBx 6of{ |ʦ~;}qjhhz&y{= WCfuʺkY(₫T&Uf#uMfDպa#ߑ)=>Mmh9$ش8dڶ!@G7.gC:Kf:cl-Cl8%ң].DQV`Jn3tֵ8/8Aa)Sꚵ-aD}>Y/yw߽o]e:u x{ڧ@wo.qE^ޜ޽[wm@LҸ,:EʋRCe>9ΪB%R&[xw3¿7IE~ZVqCLPqUUWuqGmwMw;y%c~Teu}{g¸kA3tm:MӒ$j0g̱4ˋ8lj/f59q^޹nɭ)JQi:@Um:E;&a$0nIxL \|᱿wuw&"y E 1@%hZ #PWm]A[#1tEˢa+:ʶźci`0qG1 @ Eze(ڪ4P%Lӆw=GV*P%)β\:`3zyYe)bLxE Ψ%&> 0^z{cٮg/4WeUd*IXBaPdyaY* E$,Ij(eSUmɋ(Qa(JtgB5%(EQBtSKb 5 /ţ:~haj&|[4E5 aG;EZn>[룑+)kgY®㣞/c)JH WM]ΖQ\܆ `ahδg^=ٛJ2ESkQN4*_7*M;^/m۪DR%L !uMY<ߛ=[W, JQ5^ j~Żǟ/B>]mwA;/|9w =*U!T7kI:Ǟ?x" [iEēWUt2LCߊ!:YAwY8$^UW{{UH9: {q\ECǻ 6$UysurR,^[%|sg/(eP&c21A`ހh1!@ 99@eP42 (R ( \1L!@A @,@Հec"F:&0[I): myϥ[>edBpsm5M_?nhۼp-ͱ E"o;i&i*kR7xSEH5-]:.c,knaH妭$rEyUc,@h @ߵ'B|ISwCd, ViU7uٴ-85Yu&Eq0Mڎ2FCexЯn&Y"J ƅc齞yr=Ri$C?MU&(G??Fg?xhk2RT*I[eM=<aKCUM~svɪGaZialKęgm?s/\dii*kڝaniX7yI-VR!`2vr˲o߼/;dU @_\'Ey8Ͽxbo:9V|eʲA%΄_]d;o۷ѶH'G7bEe1ma?ɓ=~1֓=ٙNi C8ųIOTMq1g 1t|ON;⛷כ${s5~{Ѵ*lMW.Vjzyޟ_[+cdYÇŪ,`w8M48Gɲ &_\º6MtUUe-UYYuK01x%DeEQ(낰U LJoοx'[ QXi׵Bq1ƈ (?y2jUQqE!KP( d)TdeG/XMM ę e:ƁR2` <$uohW-VA ͛Sh@ukʂ 2SQ$wtUS(%"p]We銪JGSUUKW5 LjbMUKÀuU 'ƾxo٣}CW}4mw Z,A\ǭ';pu]'t0GYȄ"m”h=goo]U0G0TT% opٜӓpsw$1BxGVjjnaax,+mTVU۶CyVr,mZVHHLka\S£Z4 P ]m`ۺD |1`mPu#`R(   AYA"]CY$fBA xXnpUu髚`]UcXph[4[޵qlOyЖQ'<;tq$jbM}3@dZPij`0&0MzE~d]⽬4?W탡,"I4M?-s8fi 6Wl}ٝ -CHxOAm69}|rPsn8|c?:j6[EI(Hߞ=۞Qb9(JP}:e(!?yvw'Oe}ؿgs# A i˖`a/qܐpB [òD@ @7z22ÝE"}ݼ'nib^-ƳpЧrAGx*DxDnO|DbӶUm;F;t%_7׿Xl.6/쟾}X_}^YHһN7ëٴjyƭO\~'qy&WWޠsZ[OGG~~4DN/[5]or= y兿[iZ(M[S_'"ϙ,V/Fw<<5w/狫;aN7ݹZo@06U݇UN&{_H4bˤ8ᰩQi$Iʚ(6֞%2%rQU~7ODC'˫Ql'Yˈb42uT #At#I8qpA3%H3-f Z2&NA9FQ9̖ @@ !v $GLۘy`dR|tx:NE<ݔJNe. ͓o}3So>8W *>{dgtk% (k՟88}Ong4{O]W~NWW^|x{|wowՋ_OoL\wU%8{~XW}M[K([uD"Ӌ񪬵eymϾz(KNy$̝fXUY׏zEb2A,"c 㢓!`\H)$yxz^m*cx<{xgb~7w.jmq)$ID .8[wyZIX'Q6KU\y~ …:kF)K MMZHAVKK$>{笞 UBrZ9%KRbDp..|x;Hѽ{w}mMSXND"%Iy^ Ug7/kOqۻxY6q`1λxOǠdpƃXJ $ B0%)Vzg4"݂I3B'qdd]QwLj$$5#t 8 G2!۝a_J(5MZQ/(:1(';.mn(K+!on@%$`=(Agp\='`[IT.BEqtM k;rH)NRjο7?|踟unk mGՆ(i$x(Ex n 18iąUrJQא@ZQEӴ.0g I'{0][Zii97k3cmkmq ?sfRsˢS!߻[ׁ͖RrOQ6M۹\%I|֞ʛ^Y;_// aΈ"zE3KC#d]Xq"@p8q8} /ݾ>ogi\,wH벭@§CdVKkl'+~~j]:j[jUmcR*ɺmSJBpSӡ% `B \m,(VpxPi0֭$|z/h4*ˣ(?O,n0ƶɏo[npc2_N曲& Nu(^wgmt6_˷޺f/'`wgyKAtmF:Bገ #:)cSeނzP@& 1)P1(kCbU08fW!,YAN$<Ƙ'Yz>}s[jq2c^yzU7K-dˋr;$.W kv^\tf4u,NU qp{ob)0DpW`<'y3p c=l }4< ꈑRi<&H76J?~Ԟ8Ac _꯾?|9կ~_y啧xRN=yr (Βd1W͓,I1QT+s}DYV^hrU8#Sckop}_޾}?cFjI  {U ;k^Sb]pǧYx6du匋H8JphXJ)yp(%(cFY zu|kx)_.a x5d "ib9"su[}mn[@äM z;}Ź^}/~_W|_җZ)ۣ훟sIN%~tZ%8ܸv3:A'K߻炟?:zEdq !ϓ",?r?دoo}+_9>>.wwc?rL="8{txѣ'A_YRpt'n޻҈_\gsmgퟝ'hf3VمMᔈHhc30Ti!.Bp[p!1[a@Q삔m⭪l^/pA!#w;t0!f2MI=vLYo~c~Sc>?Coz嗏zߧ̓Bȯ+P"ͪRe?ܻwt\NZ4I<2ϼrM`0(sF'XE@(O<2iyxm5AhZPA`=Ia=æj'h4Yls&h Ji A(#EDBLMUޘFiS7n+~'W$ɗ??z77>Z[wB^j$ѠWzYH'lܔeɶQi0JᠿYWu6u]V趍($Iq-:Bqug@@P ' Evn\bS$Puc04޷Ym#7f($خ5l\aGoÁ_oۿ_7CYSJx+OcEO.Jy'OŪ_\\Fw0 ڸoq|B(v,ll[8`,ZjYA8: 1&c,א7ӊigb؀P zh-ƢC~iZҪS"sm>ϰ__~os_׾w~w꫿{wΝ1Jea'3!ZiZ8EUm$vskJE9NT e0 AU F:%o[0JD(r쌰@zNlI,< "H"Bj=< AFQ">y1/| ?ūʲy;wTݻwONNC))VrY)wFULF$eYֵu]YL(ݼp IDAT~$xA/:o 1 #a22PMeh` ""`r&Z0[@iR`z)@'ă>'E8+/vry5eRVzǃtzyI*i0u#)Jq]JD;g"TvCԩL8mv{]cbvŚf$WݝwEQMv:,Pq6 M[{x_~k\yI Cՠ!d BQP`SBF x{dCU$8`uI/XQ+JA}!BpΙ1i=}ɻ5{=ըkG{e]q.G޻w[5u1j6> 8Y7nN#9t^$2.붥1inja4?^ Cl6(KH(ŬN9: vwC]a@@ ѠؔO@ٚЩyڝopX$ JѶm_mJ)DH(뺮qvSRt&@HUVpj H cwBbрIXZR2XG>"5 7y 26#NN/8j^d< _P$PL`̦pX,(?כ:zq!͊wݪXv UQm "͐*XVaFÖN7B=@(A" Ccaݲ,%褈#RUj@ m7nNͣN;߿k=6v6%4tl"_jG{o%ʲa7bltmlSK&:E'BtpBE\@zn"X@vA$05Apy8c>G>[{Wxx.nsr|2_-_t$q$;cQn\?<==ujE~uq>N*Q tc AvC96 vw &P-8 Cݠ\1tR)YaFSBr~>8'Y='(/{o{_'|uEgݷ~jӋVۢ)I,3Y Bq93!tȒTFQ6\Jk %i*1Ʉ?(C1 ˑ`%pK-( 6%e"y.(f`.{| 7o|az<|s4uF;$e;Q,9%|dqOpc6_=ɝuRƱ4iqo߼ɷ|a;_@`0ȢhZ)"bE9xS ʹtl&sF((Dc!->P i p>3CՈ9a  #(B(8öikFfe%sNGg;M7MmId+(!j{;ώ1ΚuXnd6L"&8jZNI$k((z~Vͦ(2&$ < uHƂxXrOP20 m1rsp!b6Ebb.q_L|\Y)R7N/bJ|,d6 G{zQ֠BtOj%~V:Z71±a@gtg2F7c bMP m41$1CDPd 565YB0ǭOwN0!߿PJ9tr"aE2.X2J꺡i5r-,xg!z #iyVVeT[,U XDUb:y0C )8kؔp:8ɑ\0,Gɶ'xr>ûU۴{;J-m`,༬jHSe4֦b#MkB)$3ZY[U}~~Id|5DDѶr3@!,Bo(t P#"8<ݾya]A !Q!$m'և {u/WJ !s|p8ΔVI!؍U GU0JN/͓oyQ]]MIy!=ɒhgow2HFC+Qn(h%AoY(%j" !T x΁,6lIpc(l*d;Xlm ׎|/mSɓ BB{Cl:r1,.7~{X֕Sv i9cz4f: G4j">(A[" `AJ: qڡn0_p-1QlwP0Fhj1`2!< ^~gO6Sr]؟z\fEe xNcapL-4-VknqgAG;@Π< S\\&%v6Fo/@4,ɜp.wgϞhlF<^.o[nǸ)9/xZŽŴ$˺cI)Y+>ɒ@ax߃`qBp cppr NN 88'jqEF!"aCH@!" *h!g'IA0՞s/͋ş-S)eYZkR DC,.ku]q~$ﺶ* |1 d7˵~>W BHB .|%]ygx􀌋a6q-e 0 R"Q\@._ TD0h$#mp{hOjlڬӬfϞ>篯no,K l:FgyR٫7ەp'8gy78 @1B{eFU81T} AtM ~cz6 ڀArĀq|=}fNSy%Ϗݤ|eN&]nw16Lr^Vś(|Z)9]m~2 #X,pvN5;\gqܡV$9L@%yз:=%.5 {p~MFRWնT.9cW΅*ϊLUEqu}bϦb6K.OgKYk89Aq0$tx& $ c00R0!@%1{x"}YWc=}ꚶțR8Ϟ,t0&O3R1GT\wsHƘ*2+,Bج:/whqg-@Q!8 R AB^4n.<#.a>pp1,Fſ?ۮ!ϟ<2׫}x_UUc!k cdA0b Tȓz?[,g1xhRĀf@*1mpA),h;#&X|P 8fwYaؙFI=/[W웗)y.ȦUHY>xxyzzk\ C4&xzp Eu۬4ŷ=_5D$4[J3h;$9PUỶ-]CsHS`283 c:0K*Eį~S{OnG\Nvtv{~~a{p8Uyz2{vZMӺ`qMsnRyGxu_mvYEi AA%!A%1Xﰼ186}9Nϱo 0X >@pqg>1ôzѣ !E>'}3}{/?rhZ'J;;=6I6rLi)bnoΣ#p  "@@X$C~؁+p<@kx@#G{)4lwD>lr:ϟ|;Mۅ1k컫tm~Na0\ c =ރñpN!"pϡ;$a=n~ ]OCJpG0az4LA$0+YhN34D~ß`\F?2ϭqEon֟=~tZMR4M2fV0_3bY&jRyv]8l[ۮxDwv}_xbոGS?rbdL?V/*d秿eԿ~᏾7WvR0$\ ~秧zynʲ,bsDZ0G@!8wO3ľʠ;уqp 8~ooG l}0)WW/8czM?=` M}G_[Ů9h_>scOYoq'ɤJ%٤ZobQκfO8J zGUAk4-7~w,`1*lT{y ~y}wfy-a𫧟c\F?psuQ挡,M?tz2>xnbzЧz'w.ITMj00C;VP* E(0q؂1h_NNPU*"@ B8lv}l_$ dyX}GO] .w7+)wAB|ڻ(IL'ei/fI"uoygy1&c}uڞ΁}"kb4$5VksT 5M PF4|GN8cy!T,٩>6lV@RB$ھ胆ϲ$K3nB.?W_O^~e/.$q\.iI=\{Osc6F8l%%|Pح-k+Lg87{HBU.^!) H< 1CI:E2 qhH|VQk3˳y٬[햫uӴrv{,0]|͋7gLw7y~ӓmkG_>SiJX R DK8 b&P9b#@RsĀс}ǾzQUB"M(P(3L&HysOy0cq޴1{7hC!2bJ>Eٴ2%4MLכ=|Rd>zfBns&`Dy)BAH=`#Yc#7`Y[&PH0;P6pbq$je.чݱb>-͛w}?EA\ʮ۶ODs3 C'Q{!t1z(ponVzZmەEYRez.x<@0d pjbqz{S0p"A^Р7  ` 8G`m 5uЋwD>ue99/~{U~#.x:R5M`U.fFd"ڶ_m V]UZlgJ)bĜ3%E `4t{ƀ,G"` ́ .P2#I10=#|(&خP9hClk#w2YLpq~v"-3VV(5h+JtfL7Mw}`z'@tFHJrP` Y{ kqwطh4 NPU=hI1X00AIp)l߬gyQ06Ny>"K<9ϲD7w֚wɣd?Ā<Ѓ?;U%Ÿ쥔.9qNT5:_pCLD(=@ EA`5-\K0 qg.#'ek$`1s$x<ź(Ϟ^?>u:[o|EX=~qrCx6Ϟwct w^uq&;˺'vGi]uz֕4g1ޠ N/QW ޢ̱H!FPn-\ 8o_`1B#BPU9G9Wƻhvڣѧׇ}SՆsv:MefsEQsn6*KC5ݬȻh|2IA[e^ ُx44/0z CrL8 8n㻗8` ;1FWx6㑼 DpJ<;=c}GO^b47_'Sx&S%ͻhJ쳇0|?W>o6PLpHL;ZIAZ<j6`1I1?AxDoT gHSĀa ENP &'(&H EYL5y`\@sL$<(f Q>5#~>mwUQJ^y'y6PYa躓,l1\TVC֓/ 뺢:'!gθþs!^?{,3td9g aBwD$DkXoC[p)/qDX 9h#0 d6YgS" oW8,̠9^zp2`wօfmp634k4Db*Eg2  >@ %MIbıAH0A9@PJNdp8~GO]U2ƔE$xen<Ӄ0ڜM}@mwšihNr̪rځ ;./*`D;j$Cp-9ܣE BBpX-QH $*!)I}"S".iFk#ESb>)˗YJeU扔;\3.!wss=dzsܬ7bdq!n*_}[LJ-veH[₝a-ѶXaD ơR6z k9œHr>qbr 3gU|>yJ&R %"}lgVWy4R7YQ qZ~[o,/zoeUd9b|Aۻ."pu2> L"Wxm B vأѧ.ƨJ0ƨ$]~g =}?l;b]4I \Ocjm&U#1LaB}?4m?q(RAQVOuI= }'[3<`F3F1"ϭq )~8lSTe[дy"|uژ*PF& 1`a2P9B E@TA0 8@ ;pHux$$x0" @:k>@*69 ψibLic0Nm#v]gYv>K @IIHlE e*K!8gDDdcL@LY=?øYo zcP9)(N,G$#$BD  DhGZ 8R`)L T@i,äFE>6F`+$A"+pl&Mu#(Bk9C᷿5a4b$8<NLIZz0 D\DHRCsHi{vJΦ~^z3*űi9N*A 7F!x'2d w8S!!)xRY>$bD4V !Dhdw#G`cJ99q!1(ɈYm b+k] YUKbԶr-2];dYND1w޶}/d4)1hzg EDs !"0d" <p׷;4!" Đ(pB162jb1ZWYNļw!xy{byZ]+Ҕ{皦sGyXoR16ott10 J^lAIŘ!R;W r.Y8]1KS`zLj8怍A!xu&EL=Á<'hw  }E&Ng4QYzkqwPrlL>(P9o*R0,I]9RzЃi$Yz<[|dQ)apVLh-mz"`U}vڣѧjI\tb!Rs2UTz!pbu`]HrtJL2>Ƙ&JC RBV[fx \ Tט {ހ ̦q2UxI"8SĀ^c2"25xgq4ETgb ,@1!"1h)Xmu?PJʮ|c0A ֳimlRfلs Dxh:&Rln]$u *6FKж`!`Hs9 ^bZ|'ac=}2)DpfCP`Yùֳtٔe]qDWr;LʢȲk"G`.s= ਪJ@`9X?e .R\#XCc:`b OqhA@` p<1xy>8G)LDc3F!pbAQ @quea2AP&drɒ[w7Qk02},QORDD!I=#` 1@ BI( PS Pr9NN L8bRÍ)o>&b8G1ng!Q`2-$U$(*3NCY(dGpGB( @:@ A`X@0A&. \DUAI%Z ӄE%0~}>FOn2!y"G" B&zq\.j.Y4}di&N%YA*!Δ ƅ` E? FrC!QgTUa *H`̠ϐXDQۣk;\rd:/^uYhm,cZ B`8'N,xωcDF D҃a]-0ΌT*}(&)l娧p DZCHDPWSe'x |A1nMwëfD*`kbo1FĈ$DdR1x} DC$!DP;IQ3㜈1@!lE0!F0h;`_#LpSGkt@7+8Ǘ߂1XX, 0"Pf~a4o G1#s+"e@ěc#EFzBHFGGĜY @>T1r}1V[X,5XŠ*TOt[>] b+8jж0E)0>w$[̣P 1F\DI9D@"zh $ zJA@ g<T#҄A C(٫ǡט>7cVT8[O?ǼE׶O+O|rTv&IF^C"Q6윫)h5@ s*PF8g9'@@B]EEr( 'm/0Edgu~Gm`0 qo1NKM{ ~x;O<18S L)T*UBB;6옋Q!Q%&Z0q0-=JbO| 0u匩*o *VE()L4ͼk4Qe bfkmqFKae";ly QJ|g,GMu)&c[t ˋ(",TA!0Tox0֌ T5t5Cz~o9#Zi Ar D|.8<[1f l`r0=s&Cs;I߀}驲B]{f&U86|t0֖1p Y0R:ےafA3A1Jڪr9ZI%i6jF%ӈ̰\aAxG pp{)l! f(\`֫y;@rnyLʕ74k4uɹ|糷Puk?LׯqyBQX-~ Sė_y0k<5hpvŜA` hy'F$e(4`D`xd)Kaj[(noݬ{q R0yv1 |֩n@tZLU!79k[ ޣ<_#rV&;yč5-:Fm ?<pƢa"[6wmZ *g~~xr)u%e2̬*@bq%#*)%./TmӴ$USEUy.npq/~ɏ~1, [(C nn HG.-O>ɟxnͬ.* i۶뒊Jɏ@D7oo-A詪T8 pQ_o(?ld@ ڿnsuJr?7oqw)2RÈKFm' ل)Yf5ƔaTM !JֺRDU,Y|0=<<1c)} bfUSۇa D4,XF vF䈛o1['9/+^f󋋢H!aD7Aq^PYaWvZD5=5<ķp}ucLIUUr0֠n<9GTDUua !PByߖ,ָ0㬷NJvlujlHSUdlަX1- Xa\6g(F͗{ ոḚ9Ȱ i8~.k0>5<ķDlleIKRaR3XSrf%UU8*AɔLٕ\r*2]פ\isuVJn"3yR*0! ^qq!Wk<ue|嬷Dq؁ \4.5)"H8$HFٟz<{~"!kSמ` #II)ɱ(TTX֘q g*WT(i 1ǒ(sRְͩ8aրڑQ8oP8+la RR(1ba-2cn #kԏ0fyCGHqlڦEA`I,M lwbevh*4ib9 i YJ6 *E}ma|g+~F=$c!6.n/>G]jZ>;OT1pDHu>! |6-{79].;8c ChU:cy\Ԭ%vi߻<{vyu?{~hyu^~_4Eu%g|U׻meͳi8Y~r;1ggw{WgPrN%I* fɵ7UwntN%% j'9b6|4x6VE[vL,)%b;N]m_|>!H)L=H;Ëg1Trawj*5gaHΒ~P)abo, 4֞"PTRV-, QP)9307Mc aR&r:cC8(Vu]sʪc";WcpϢLdB0 WW)g @hetSkLN)çTle,5MoJ)Ƙ3~<MӵMal ǜBm2* 1n{uy%0Z?ID8hӴ` ajldRqae6uT|rr6HzTD8\U΅Isk)iִUU0)YT)TՕ5p2*l򔬷"(Y 4edW%s\^1ϰbX-9䄺:;Non0E@uuB? 'ì%}cm[urYU.uϼmU]晥^j*XK.R~^˛ ؀|.9b8;lJqHk ?#_JI4i3:0ŴnU5kYKPsbM?˫n|O!Kf(%R|[W:L^pp×/Tg5G𸭬{ssL nwJCXwݫj%ƐbiߍC_JV-꭭XIrvUUd1H)6,0 - *ZJfQXf21&u]()X㪺%0HEEWU!&0UJ!UJ&kO1NR5FJ$qJnD Z-]} c jYT($"*e͘aXW K )ֈlaL1>nkmʱ!6U1MtֲV)*Rr*PI"7Z \agUs)RT V˜SL% B" GxzO?A?2u8[ig |3ZwA@٨*)IIdŵuݽ|ܰC_@)|l;byr Ygk|sOjB !\@λu?̠\Y&K R=u`匪6wfq8f9J|ܬ7L$y)+gwޚ4Cg󜢲^EXeqDuya8 iJ1jX>g0nS󦮼;]/5_|mU[ﭭc."Y8"~TU(""PnP<"4dK11N7c"%XW5!殝01zJN1L]U(TĞҵ*@佟¤U%)5us2-hiSryK.͖TȈ p5` \U+sM3͋VTq9b 4MSUjiꪩkf>m[hBUWY{whWE;Ӭn7K "w)"sETE2  &29cK)TAETŢkyWR$LXO />C.[pvi8=DXiDqc{wŋN>=x+jeM|%i8<{;*9-}aۇ1ls/KJ7΃X)kg61WuWW]{e7}-Z/泙C M#86C kN:󦪬q" R?|u=l!p&r}>5\r?!mʰ7f*21DTdqcξsyYY{y{o7ݟ0|k{gW8ӛ?]gl?x}ۛ17 D0cbѦuY6 "D0lJdE TU]9 39gL* ":)ruԾ&Z;S*ab§p.yc(N4N)sf溮k[8hYӕĤ -TJJm `997_.BH4ysDTTS%~ai"⺪98gs8h.YUAij9S-D89kJ'fuN`=jB '"&N1RY-8j(7o'' v{x %?W7ߠF*v~]emK5:Mݻy.\ x n7`gu [k7)1L2M %U!!ojaUi feJH)C T9K*1eHQeZr|Y9QkH ),Rzy}յ[uճEf?4w;p/_R, U~g)d/c7}ʱUlXaqYukVجrmv~I[}y-)}Wo 1իeU˳Q& IDAT07^#"_?|Ua]Oۇi6û/.Vڻ_yswM^.ϗy}*{ںX8(Qf?_2|u~p9R),[ђdo<9ǘr)L4O~g( 9'9L T}NO!"2l%K [Nb6)i뺔""DDD**%cHa0*t*RbY&NSUJCZ mDT-}ߧT5`j䔥ujefcyZؗRw8WEi|d:%8P E.֋|T|>+9"k8Lt*PΥEJ,)K."ry,e,e3JR@1E8r"_9 ~} Gl \M 54> mWa1aPUUID#|w(U~~eޏÐE5&)PӢuY;P8ȱ!]$1‡g)E/Zz;S-!nuf7La`ksŋlj jXSNi>nr49ۻ5ۺrUm/iIS 9[rI1UՀڦ8i !n~=s몔eׇ~ᇗ6Ѣ|\!8 ]כ?oӸZ_|o;w1mśv~yx5j?/|ˇ1wo+: TXK$R(H|<E `|zu$̧3 bQ0WD &>U\ BdT;i dNUcS *)̶ȉȻJTrI"EI j-RJQ0UUcl'cRJSSIIZWBH)眉H2HR) ϺՒUMLatΪfHQlQ‹KkP$JvE YTɰ+P1@ey&KͺnZWcN_9L1LDbh,+],quE|E]?Ϯa; #f0a!'svMGT]?mۢW?*ƀ!z7~1g-p%enCJ *@&RŔiRʻe71],g%۾h,"~ QTuG-oæ?; Gl@,Y(Tiݢmڪ%@\,x󸽚-;k90LcCl+׫Sιc8Uy?YXCZd S_p1vmw۾ϖu}W7obIy}f_j'.?e79x݋u弹ۃQ7`rfFX{ ])W/\;Gnv0J1oڒ7o5EZ㨇=Dlhi4TA%ES)Kɐُ!]z]{fS~fw*h|3<"H5]sR<ӂUו\(d yc̤zv4 R TƪJ"ب0!9<Ȕ~KHyLTn?Ϲ<G{"?쫇W їo޼y.w_]׭q)zxZg]S.nѶw}>zvZ?߿Ͽm.>w?7tuq&Xê2Ȳ)9XPf9 32F2L U9m+C `#R9WrQ\)JXv9:s$S5 RTU@9ω*sZc 13Rڒ JNP9c)1' HWưHbx<|k Uu}^"RHULd%a,1WʹUÄr){[{S)Eҫˋr֜bflfno7}nq1gW " H.-w^xq[ 5m~c{8 Z+[ )aǼ|7w09kF*}m͎z.aP&%!w-yY-F2`E͗cϿ~x ylԞf!r0_/-؋598Ks\"ASReޏeRR2KI'S-nN!˜r4$QB9Κ|0iH1{^_Ulvƞ׿} ~#9덩j_|<ЏWv}5qC..fۮVsY[}8<^V/_KFefRd©aXC )Ba1u3"sJIJ!b\DaRm4Mx\c$1HΒ"T0bk%JN9YTIrqփ-rQ@RB%©AK)E֜J, cʎRJ)40ڮȥiϡGUmuk Rﭪqa4lBR&Lz*'rVg|>c-̜c~ /oEaywlf_q ]6?W׫Ţ)Gnw㋛W_zQңOu mi-f*H"{ՙLsfWL6kFE\1%"1(23#/<!bL!Ls9!BL 0@@b"AfDdf2C@`̄)e@ dPy^k2oI֜Cy0Ib$ Ye+#Rw}ԇO!hUWu] X754u}'YrL᠚1MY4Mǫ媭d(v.,u]<`ǐE[kQeY1Y3bUc~3z}(-8_=LoO;/Stn''zَ1>(+u9~TUG'LJ?.i]OA2D-7F$2Hr o71 QTĜrB(![T1Ea`QM?NR9kR Yoݶﶻf~.uϢ;ղ7wg,_ƐO<||~vys3Mo~+_n~~'_?eZSy,;4e|_<8)9ɒP IrJ D$yafÚ%ȊBsagwSD>> 1eqywwXj&컃BD$*БJSbmdqbLi"k-V49NDEӀfL9<K8+Jp^I2ˑ0?l 6<2!ibb,# 2:kD^UE'qf/uMPKg l8kFBBC5V@fvHpQ7UULAiLY4(3B,ۻ,ZSe7v{{)DHi9kT8}a32ǘAUG*[bBdkrV"dͿB|N[p؎?١GI#=T9U,iAliͷidoe \*6x^jzm!:) jRɚA3x`} 8L"At gGpC ^@zDr$O)7dqFY3 SBAEkTD3 Vua__1 ~?d)"swEsSMQ/墭_$˪"yٴ=q?闟Ɯ7Wmxwu._rqqrc{~򨭊@ʹJH*,5Lu]ESeubTD"fF<&$U !~xe&`kp6A,L8dI@&Ʉ3Bq<̆B Ƃa0,3cİQPb aD5ʼeUt@9 miHΓ{Kߍ]J;UZڦ;s6m؏]קwYr<l1l wF}u8X -8E c,U@%BlA,b͇lԤH܎@ D1L!eկ9 `Kp1A]1lx}Uq=@ }a!+(uqAoڶ=;pIXlq"QD1lbc>Do22E~lڦEO/>~x|3Su?8R;YQ"²,收] 4Z-$ )g_Zc64cys)8Ma],)9FT $"|8:=ZJgN̶&K|sw G81֥cg*ߖE z~U5\rYO?֜Jw-,˺- @m]{gad]1Ɛ$!("dQ,κ*!:(zk%)37`ADƱ1S nHK)T%bk&甊(X&}HHH:2H*""'cb?h`ȨsL Ve&Phe1瘀H$gU]-VxvzAE4^ߤE?eC,=SHI~,]QuU#cg1ji$b" wI%d,d κ"/ +lpuw;hj߁`oA ,C K)u]폚'.,2H )8FLӇgZ0Wlv0Il@c,7 ǘs}R=[Iniѐ9jCq(5E<d$"=Y/w0 %Ɣޓ)NPAae,|Y!#<"zk8ë"D͒Bns\L\,ٶNOooa,|O>l:ESn<ừ+BF՜/gOv)uƦ),Ayp8 "0g"A rB' "Z|ÔSRɳai#fe"PM1ldayHhxVcfa?̜*)Ff&"UM S v1Ų(sL0S'0<uXm;# );2[zDtÈ 4rLcSf->y<BtzkcL:U1]!w1rf%KM1$)1(ZÒep,2)S4s܌HΝASNlx0_£BT`  B:$C[BBsp=z&+X-p4L?8H?{xޖח׉aYOtֶUr2ty!GUY~ XZ{~1~}0 ˪˲O!dvCH.?:{{sl5M7 1mbȚɲDWۭ䌒 @0ŬR{Z48pPR4DuY2LiH)ϛAEP2bD IDATfE^3cIZ.֋JTE~omC?xn64 c]c׫o,ۥu뷋Roߞ]\zxz2Nw.ڪ;tzb߾ o [^b A!/\3:DP%GDPsqdC"@CsN*e"9fN9!#UwIs ['9 :~zU1P0G"h)_ !c@?((9s 4 ȈXTE$8EtGZCJlMD) cPU9R%>ZpG؏c,5g0CQMUNYƉ 1!dxsD9fc1Yc@4a*BDbRtYpLIT ɧ08DáȀ 9CYb  McT9 ۞Ő ԡ"V&B֜6ûhl̉Ucn8]_vD 6.!o3)>cWRE>T{w^攬nljHtfYs"6OStZe4W0tc :_mS gI+eA!ci#]릮{{b 8־\5m]S]wX.'SvC[3#sh~syu~zƫۻvO]w׿o\7j\]~s,ﭵ|:1gB@%TT$e<瑨$UYPU P41E Z6b9AV1@stRl  U9#1{9ǤN"lІY`ֹqr s1Hʖ`5g-sYxcؕiZQ8k46SH1Ycg @St/8 0zgꪌ9%lɐ9DeKDD97vh5kV*hHPDfyq"8k8 (H4M@fAſƩ 2@'ǰ\BDŃKĢwZUpsD6CPPva2JAP )]ݎ̋El.+F3H4C 1)vCH`$mas?l7rAL0`!>c6,K 뺺ߦwqr&(h''{wiR~˜IIH4ws_|YSWWr6V|\owUYNb~/߾֤Gw?ɻj3|'?s")ju-)M]K0Ì䭍s4D" 0[>Ȉ`Scd1g @@dSDTf>!H޹"9b2!cIfY@9gg"`E&@7mIn$@a]-x3u lbۨhJh}4 ajZEQuYwֲ]D[c,RdQ" ÔRyAU8uCL)`I?\J! BBLIL)fvVUllH)(C2GaR٠,[akwXP` 1؀saFHK"H9gEY]ŃWK~9&qs!~vrɧgdp՞7Яڊ6}G*Y4hOO~$616\4UUkOq? d 7*7;N)LyDC@HUQɳ'!8q2Lk+= yònU`,M!?{/6۲aZ._|M?M}g Wv7wr7_odjh??|ݣeS5Ua\-&`{bBM;xonoH4_99 V*\+}af|h5, d 3(]1Cij?H0C1sy6YkSR Y7ƦSJ0% 6zPiW&.DZo{wwKHyߧ鐊H?SY$+rcH913ﺬj h]ޛf; c 1e.MQAd`*fksJijb fS,!rY#S&b:;ST1E@P$s D֚&bcv;o^߉3Sm3HcbU<BE4Iq(3kՈΞ-epvu iB}׵_nsUS ߐ=*O!̆|,5Փ]4S߽}9?Y-wEUU!.EݖQl,?xdd0.jߔEH'zZ^%V89~Q' Dd V(|ڬ%G"Q1\:Z/[%6OgCwwغ*+g?zxvww7_*_as$ggw=V?.oo_׽ﯯi4!xJ:r C*9Hԙ 1 e%0+"%|a5ID fTX!KP Mӈ'$pc@Ns! I!ĆRl XoHrl܏SB$id&v3Z&H&a8&BqTIƲ UB! !:A olr$9jT~W.HS0x_hHj=dc?Ibb, )% 8sBdoÌ\@1Db9'jp#""Cdv9 !U3o0@}r?UX-󰇡_1 8Vk8`1z ww̱,A#L\.ˣvqyw5m,`u1_<~t;8:NE閅SCt6'YX7Mf=ka@`7/__>}r^݌)clV( gtD$ }RrD!%jʪw- 7ӜxgE]- dc)Lca?k|~|^1pwA"f*K}s+PA{liO0wcl'Ϯnx?w/޾G?:qu|ׯ޾]-]pq:Z,A~1&n `!8"⬫B s[Θy) !PLPTg:(!16Hs *hIB9֫cs1 ptv7+XC)|R&bf)c @4+"B@* f iUQ*seJ)Tu AAEubTU}{c >t}]7cHUY*PrDĔ8MmhJ?FK4N qFFd HHCb( bcbQ9~ga"<;AT baJ00| r?i`т AAwq&X/k#<~ DT ,QN?zj''~<\YcWV'g~y81UA18m-lﮆd15vTIQ*5:Gq:]o:666ӜQa1XuU!YNj*"J* CL|tznC*(ʄ~wl6}qq{uTdnz)~ z?Xn6旿 77_O)xtzɓ߼xo6UQn{KoIiƧ81,:^_]Ә-˕1-qUMx ) Hvyg4(("EaR( @07353?%}! 9'I*)0bX")a}pdd<)u&935X "iqXU0Gi)00 Ld$'PJUadL$ _XW;hu)eM)/Wq52 v,M]q q4zgM3fgdDTHTS6!z% (Zc0l 4sHRR00 Yi2sRTX.2 ^80L #9\_up~ %xJl(itZ-oޏb|tvV%zz~V^~c }?lHJ*u5 ~ѓvwG71MYi"cf iD$͉E mwC9CJDxQ.UY/n?YAEuaqʧG7WGu*a,uec )Ősӟdh7w7O<:^}׍]9^__m7Ϫ?vO}tvٳ?|>RCe͟䁱Ef% U+oG˥wSG5( CsBPgH1Yc;gxNQD@Pc1F?(L̤9"HXEHI<?Z/bNhbQտ}vm3 sRl,]L1'EOnT,g T<\4sa 93(iVͪ(ytwW7a ]׋j?M c]]am7N4! /$n=|X[nl~ك. /QO.6z'O矷Eyկѓ?xGO8ou͋8jW*B_ A>Mx?ۺ9Դ͢iRN"⼟@>s"bΙ ͫ$gbL*"2ќL9gfw"8g&LHDLDDD켟LڜSJ%t-21QQTftn8,YrE?̐Y{qW8w?/,b$"=g&RTd!@`$&ΚCHdz ?ѩ3E 4M1(TA8`h6M1jVSZ(" f#a8Ls̪ s~xجղE_q]7`bE a \Ee  QbkwvǏM0"p]=6嫛[Fn`]71WEYZ:ӛr|-ʓmwa:m!Ů.e9~S|>zжw»a* 8|J%o(Gn-51fcrcT8Y)8ڶ*~c$B89N)ӄ s*v !awqv;TO?j|{\TO?ۻn6ϟ</~W>~{I[74}%:Y~zuSՏϿ{pI8 *iZ.&U 5 WFdƜsiN2%"&B9"9LP a9UEU˲RDsjN)"U֍S,y"B1hW!}UU!)4ghzgq.aH1۶dP9;z@H9[cUK }TAArFf@—0!N1zMk8$ZI~ήGPTaªrQ؜3fn @QD4CH !AVCl!a:Eՠ֕eIH9 !_WefĦ,3~JÆ, w0P0PTP``R8/ݿ|A ,jZqq>>Mg}΢*#pBEa{/>?\]IdݙM je,O1Y2qxΛeU;,yQ/<9l~h◟}`)L CTW+ XZ>_- hNǫiM]^5_,*@x{7wv2J(7f\*g/0 ]|ūWݡ?xp?f=Z//NH7o,룣,ﶻ7UYTw wϟ_bO>w !LxAT]l4aT5ĘSX/a7ĎMNIPqb "yԀaJcMs\>e%@PIácf6b P1 ~P{4KfyG|URg쪞gcb`ܑ na jUPsbw#9 %X*4oR=RD4ee Qb 8x|@+'ќH1)&*'窳ͺ*o̓Sęf 0 m `.0WU5 ٦s)bf6sΫv۵i8=LSƮWŢM!z̃bQ]UUU23d:9f1jN䄈m]ǘ-["S S!X@@ 12!(HERL)<4) ! 0F@!Ir*.G?ifi%\EaSMݨ췐Jӵ+ħׯ|{Q@bʱv`CSJ˶3IDAT4Ť[~s~0}Sȯ/Z"8Zkx{8RBNcYjiuʖW@D],r?S9"6l!` aHc"hȰ 3B  2*CqKTE㜱oH | 0͘2A!L !BIXf,f-V}YE{%&rb랟=[o\[$Xk:|}٬!(br>LP.yi0W801yu1M(j}6L11fJ0/jbT<"Η) _mo_>>܇vg'âmϗ{ȪqX\SUl8]׶usĺi巿~CWotmSBimbxuyx{Y__ S9AҫO)<>fuZ1"JN"0 ba)15v[ĐsuXcH?\1lf 2bU%lM))0!N}9hAFP-%v]'!c)e"$!ʹ B9ƤIKV-DR׮x(N0*眱)e,"cf?3>XJޏ1E?q@&2D9fFnp8n۟?4mwyQ8Ef3H}i=ק07x<6M}^֞6ZT ]S\qJ SLiTd]%6uSckj_{"pJiL0@ H(0CA4( b8 u1BZmo~OG@yQ@kΗ`uJiSopCHGe)]i1ӗWgO>OC%)/וskS)osه&4#cU`TYgXҋ3DDq 1WbtS*1UvM= C Ӻ[,Nc1_y ᫯1d͛҇t8κ޼~ݢnK)Әg/֋_RivoՙcNc]SjQWagЌ3Jm-!:Erf8 %Y:Zy?s)L֩Ȍ YkG"(~AO !&BEe6lڦM!5 MYrQza1X <)83| KI)W90aV$e?CzjacBÄ 2 滀h xdƹ׊)Yc\.]]7U\-};ۇ^WU1H*aM0s*df8۬a8'Ie^;d$B* 64G\HJcl1C)\]DA@H@)" <$F3@k,n_޽a25 SHqq%!bq'D6iӳ5+\-;8g7ݟƏCʹ" f=Sx\Upwrfg>8w7̎GS\ [>b.[zr&ZnݦA68Y?<ĔAu7_~ūWwDt}Y4š?WMDd?}OhߟN/|ןnn>LSS]ۢT)"J)ư"]Ġ* *%ϘJ"Pa(%Gw^0) *BDs.*͵*E3<;TD 8sT@ @14C1`dqMS`)b04\4e7ϟ|/ 1q)ZJffYrJb9KY,֚r]~Sm֫R ؟ k$!A@c9;1X4O/ϏcLiB9b7xƜsL|SU*CL1X6U]Y;c:&f5 dgwNJQ)3lFޙ P D40D Y1u*#2u)y'V= )8H245( r}k q'/"oknK"Oy="eG(߬I4HShS(myoժ>:a"hPxB # Ѻk]4NC?JIk|ABo5Z[WA 1l J m3M#W~md ?=[l~3O18͛go~}03AQ8*z6H!Cf@^-g1c?]o1(z&Ctw?+k8x rBSylL%gVcÐ2^eֵ6m ҔS)$dbP4wjNy aF-96ӋW0\D8t,"NӸ{|ݷ߂v ~O!))%cMSy6M՛W/\]_WZ)B.DUUkaCXբ@sv9d>fͥ5f,6bfsYu)@tԖ1L}zZ\֍BR?w΋~r:_-x^4;ޏ.'˴)O\^Kλ4C/ES_nV%s8ybˮ9R5r89!ۯ+tm= .6뛻ήnArts}9Sri?֑e_Ծ~x{8|f0Y4MUxryq8?t}3X9SrݯlRxvu5LwVeSUJ"E3in)bBf8^q:P]%2Ium)-EE{gMLq8CQY"n K΄ Y2p 45s1 1-9ESTp ֘qb uSYcJM 4LP.85R)EJM~蝱9Ozb~>jrHbE STh,Ps.YETUJ+BJ!%a28a%-YWUι:dH2MIɢj {gHLEHc$2YRb9A AŊ²ڃA`Tu״qAz`Z6>۬qL)!=ëeW[tۉʪeU qBXU0NLM0>ҟ?9TݾOd 9CD!"u]JUBKc4biHr]ۗ<}v )LJC,m˳"]FM!S&Dˮ[vzjr&ylXTU R4_~vO]o_xmoatW\1bcc*ܶ͢}յgggՓe]4i yV$xgRJND*lJXfNZc 4ǔSZcr2 L릺AA@R$[k4. EU(iGbcr9Ɯar*)\A@D*RW~^b||x@ilMET@D * UE['᰷mpU卵DIF.sj QeE0M݄iZn66ŰެM3 bCo7] %LO')4ES{$b$TkM]RE%TДf)9UO8drwa@ji%8_^C&ƙ8/nB_R/_NSib̫ˇˮ㩄"͢B)ۘ)'2U2®WhT= L)2cڧ=Rjoۮw_s\7h*W8{r^^-owtS~zq>MqogW+,eUו5E x%O<<#:czx}YoVm4a p||77wMJ0~Ͼےr5t:/!LwmU?<>~zswwhmS r~iB+" ֘Dxc* Z01|aF5UyoQU֎ d 2d ygU~VSiác"j+YSo(0<Ũc`Q%K Xk*kKLlxC 9JUa]׎Ɠ1.ĨEoDƐPKz?_rήWn 1<E*zPaU! 168| sZ /V];MAKi12 Bcg̩fbkusO_߱IDcz^cTrؼ$ckLz7kcXbOSLM}Z<[Ϟ\ñš"~uSm֋~>ow>T*ɆЏc Lm4,W/bcvDUS,*rxbQ_\}p8ܬw9&9鳷o#.kzݵ/^zW_q:_W?OB3L_$wco^_~a?{>[={rnT7_!bv?.eNR6D );@YiQ ChI1z는a8j-WZCh)ٳ|vnTRUi}zR=wࢊIwJ4q׷xgWm_Ǒ nr{=P,b,b,bi{ #p3Mz^o~醡aRkqy<^|$g葑Vk{N @Cq:AEEELh!J)U]v:CYIw\!5(媶XdžL71ӌ>|4i[$Y2lYTxaaa#cfjt Ys{N0Rs/==}h`JU*ذ>u8sp8jy6666x}siii=z8MOO޽{x6W&XOTJ)3ɹXjoY]y:thVV֌3R>/;;&$$X`1x|{~BGOlX8uxރzfjV~qa URJOW{w#X`ɐ9;&tGgYɹJ).|ܱw0[;e*֎i_?y#!ekv{FFFnnnQQљZ͙3jbC {_UsO]]޴`ˑ??5b?<\V;d[b+^xrM ]-7۴gr9wBKj^Ӫ3=ҼyfeѲIn?w8mq9wR)uleުi&dl7V@0kƛVYfEGGϛ7b9z6pYi-8KH \XpGGt&PKmaҖamt#;N~`؂^4MyJhlpZʟ>t[U$D5m۶JN?VԵL%0ceؾ}{-6[U~jx[nqqqwu…L3ȟ!a#9vɎ׶ytVڵԕRJ.-?VgeV8p7&tҥK9{**ݫwM=dS: x1;^RǏ|999QQQ=\QQQ+@ 4o!БS?Ii{O]2bጞyul9X-v/8g@tIoѦ*=C`cy.4$jz322gϞwa.\<|sIK)GڣlL?"ui;oM^yS6ne1+}]SnݢR% l +;M߾We$_kӡE63zI/N._/mzVg* DlnB1 H^^Rjܹy+>sg}vg zrr %onL0r„ڸůuQ&1֪ㅯL~`'9畎Zd57._z}ůong5++8Z:fAǿZ_XnVoh]TY}7ǥ)7;:_}`?6.JqiUg+..NLL)4MZujY5M4dy<.$gaa6[}tԸ.Z 2IԳVJYS%t<W\EzlȤ{+*2t^L(|K7c1cW>^RR#˜٠Z9.]9xLJO7oRG, k96@5^%ݜ>}\|奥gz>vpy5٣ v=###//b.\h.]1!{X}s]yޢ鿪bGWGY2G/H=V_q//r[&ճ]/gYnjoK'6ώk ^ȯ1&kG__Xxl7Ͻ3c-n Nu+զ;O:ޞ6?-6t6{V-yfMϙغ :vMmUYztwN&LY55}%/eQ-j)))~QOXV#JEvyzŋ_\,腣DZ͂mo7u؛w2~7Eٔy7$wZfu+\cfSuo;:0x|kWy^fcͣ&N4,>WXze;7Ͷjۜ篭x#0ywJpnzqLn*ťZhLi;Wӣ}ךe/++ -B]""\8J4>8٠Uڵ ՜6{@ӱZ-!!6C!!64GLhᡁ/[($Vhnw uO׵`hR[$}4 LIwb,b,b,b,bpa`Ca``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````C߷dKsV|,_}}nGK9oXc|C]a":էwT;M8qHrIENDB`dtkwidget-2.1.1/doc/images/disable_move_function.gif000066400000000000000000020045101352002233700225370ustar00rootroot00000000000000GIF89a,)y!)"$$"&$'(*$*"(")%*%-#,&.&.).(+$1*0'0'2*1*2,2,4*4*4,6-4,8.8.4163607883919295:4<2<3<5<59899(%%**42,1/415379<5:4:::::<;<=8=9<<=<:999;<;>>:=9>=>>7:'5>A8MD8UGKAD@@@@@@@B@BB@CABB@D@DDAFGDKDKIMHL@BAB@D@D@F@FBDBDBFBF@D@D@F@FBDBDBFBFBGCFCGCGBFDDDFAEAH@H@H@J@JBHBHBJBJBMAMEIDHEMEM@H@H@J@JBHBHBJBJAJAL@L@L@N@NBLBLBNBNDJDJDLDMIMHLCQBPPMUUP{v@rKcct|DN@P@P@R@RBPBPBRBRBRBTBUDPDQDTDUCUCXDXHRIRIXIYCWPRUU{m3/ocnS5YUў k1 -5LءʮФƑ9! NETSCAPE2.0!1,Tp h@C8`Ĉ/b bG'~,q ȍܸrFZF)Q̃`xSgB/z62OUXҒCر$VA()fUcWv=HpLhAjxsIn) 1Ap gBH8ᖊ{h{4,#.beP@K'V@ޥ''sqIDŽ2tك> 7VL( #+S7 `@N5|Qu;7VSKZ8VG]TN9~v)XG pJyVi4ZFvA^y[kxaWbL,U}C Hb@.$ck!_k/vD[_AT!SjVIyhK*ZdE(UU1I SOP)SwعݖTIW*=g1b&~a!Z֣Dm`pIz)\^z]v])$~IձJ^Th"eqżmA&ce˚Cʅ6esvZ+_QYl%޶!@jDPU."D۵2>Z+݋)O5@)uRJjuFaK(R~zoôLJj(^^A JԓjQ%7՝ˢ|jO PUa2v3bbDkfXrm}yE(0gHkk_`fjEP>MQf;}ԾO&Vzԡk[u{-o6xfsvj2PzX$'d|SŭBZ3W+KV}3V^:7)uB׶bD%uo;d-6גHn).6_6[e[RƬ]VY@^1-Z oUyR֭qw8h f)A.Q1DҟU=jVjy (nCQւBd"is0tV%A *)3Z-&J\ JūL;I ]%_ D"zD8oZ#yo Wjr.8@6TrӷDTo4€J :c[P?nX N=Q`l)T㙣b';EgO@Rֹґ5@iC5|U;y>#GvHЎ*^UK5xB4@^z'cMҐf 8iHb$%yK6u!_$R)grE*<7DuSCqbwIKm"yCS`u u 8т>%S:*:ͭJ ] fHSDʬ ^`Ӻ9 MhlCRa&s1g`XM1^^'~D3~~"NϞĩ#xU=HT{ʫ^׾ `6Mb:eВG",x{ u$9=ՙ_pH5SXHkQG* 8̐p0qTG*egaRmcͮvz xKMz8ZʑJwMѮ@Au}n]D QQfY"I/yS 0O5`@ 8>ГHȽQez ZA;׍L"HN]qTFR*S-IIc]C$Ы|RZ6sރU[ƚ qe 8 `šl翲jH4g=!mwZ7 `7N{Ӡ.r+SS|3f4;c6ܷ:μ 'C'kh/6Nkmwu8mNOθi<ێEjx{a6r^'d8Azη~NOpCh׽f"18&b.1mE&5@2oXgvf (>Fٌoa =cckgqykj K@÷{`N%vԙD:t/9Ħ ZCH:f^v0hQE~DN Yk6֜8AѪmQ]cSzA}:V;NrZϭ@ +jϽw<[ɚ'HM9ma-%ݞg8=NYSYivqd&[,`0󗑆{z.h3g/*o*1~T({ ؀g0oGx"eDw&`F҄=/t wzqmwنs~7~nCfn&OdSSB/v.fVzyr7qk#sai,V&1.o`b8d|*=D[T6fO[uu@7I"=nפO}sUEfϲ sK_$hwqHD׈3cuu56hh6CxeF1w"MH7{Q.$S8X(TU({EZFnD 1b\g$7o6afOwJrsϗf%i[&~*1gnXvXuIi|y&Oa=Vr9Yy ِ9Yy 9 [v`x-qTOx؁SFt`Ɩl=V\(8(x 1ÌOxq`/I~E*I!Oܘm0wg4jlٖnpv 9*('DjGW/wkTVeKxcFl(xfwU5Vsߖ/ahqЧTB~f6L!Gup9~1\_k fh`);c!yșʹɐpi@铲qنr2rւ6w\&i$g8r\/VShZƌǵT0gZtw'BYz/|!z[aEYdsGHH٘9ukwvD:#.3hٜ":$Z&zPѹn`ry~ vJZv\&Hmz0VzZir}K ]} `RmK s2g2\׎m :r_`: ; @b `; pt,w,9 ̊6(\BlsZ$DjZgi kWer 5 04,gJuؾ ¸ Wue[[z]CʚkO(CP/tu, 1 0ƞ@P Wk۰';+ arbĂ9 1[_* X䖥/}{x|4*;7h6̔>gŋy"\#a$dg.l--؄ܗڑeFc9C;y ¶<ٔ]T-q˪ӖH ïқ(UL#ygn;x^[^ɐ{{N Z[G>Ee>t} a@PS^ڰĞW~ܮk~|q.G>3]ԇT'",Ĥf+pڝ)Q,}.L/DIdei˪[c ;Y=n k;g. ,Ds,rm JH )>_,a<Ʃ@TlLT_V?^J{E wnА-& LQ..ی-{,Mɍت\N$ yG;٣.)_~O\lRkW`vXbuǝtJz|bW[,Hk8d;!Ϋ"YlvrdtU>µunib+YOhE-zQWYߜvC=:Cq$^##*^ )(Ei6X5Us& Ԟ d4VaҒvdGNl'ϊy勒;SȋBέHJr0VUo O`#RH!F4n  1BSڱh^ ,dY*Zpbt LTS:ċgym;h؄ Q{ ;?Dԭs%nq{itM4N~rJG#N14ny'`Ynfw7#&=s&c,{\DLsڨ Fy$hJ9*jnZ,$:u qW]\p= ?w߁7īvS!Mj7 ʚ"cWNXVjT9zK?!@w_f?F $7e@ sx%YsFkQn Z9jnr`#NU 9!&z G9ҠpVUߘWLMa_wc:Do9Jz>|k`[&v}ld'[fvlhG[Ӧvg5Hcy5^nk}4@(@D?nqS:t9I59FGݭp$0{w^+(y 74GKUYot}=_%q\Aͱ$@$uG{_oYN@jSlKbLod1/"\$kK|G_ӧeN<.JუR~y⊍wJO38.fguoaٽ? {?}j!z+3$;3ۭ&27c>s@@ >cjSKFiVӤ0D;v+7[w;tR7zӷ˸?sc4ӪF$4R0<ҮRz=,{?[1 ̕xA3PCXEYŖ#Ak3ש)43+* ,%@4=8ElB̼&* @$"#/ 88ÿ)[B2k;CjdGlT$:>.ZG}G~4[> !y*19 J?s*yG,?Z;c,,T;D* Y Fp̿ÀS +k7Hdǜ* ЀssFPsmEH?r)گk~=FPϬZoc]dosODWyxWCPٯUmx^=XXeͨTS;E^ww'&6h4%IR\@JOrVw/E~hZ[^r~}lkdO#[εm\/=5cy|xoîp8WFo-zP; y|ʀl `678`n{ݧטOGNv^s\j7Uʦ96ibkQ6{_ї8-zr z{/u||{=&x|R8`5uWzÆgqE=Ts7ssL2֔8Ql}o̗Ƴ?>xa1| hp l!F5~`H`†% 2DG":TؑĎGRX#H S 't(ŨAB]U'.h1F $RgȦ9T-0Tn *P /.l0Ċ3n1Ȓ'Sl2̚7? ^yGNH,"~aȝHl=#l6 , 4HjW ;\snbRTܸsQj7֌+JL/i =`uSWg 8 x *cW^wE~Tj}CpYyC%zi؜S%p0EME7 [PX(iT9tTx$yT{)z͑t[l8]UR!\Ք~uah| m&qyPH5EdbqnXUٖGf@Em\ <BtA6es$UjMGWSxF99 O& d|f_]6ah8'*,Z|eZ ηN<7yxTuFAyhg3*Wޢ(s,CUp $e@d+[ FZ~=8[}}f)yAsPf-.\RVxWEY@^tʳ|l2!^9$@!u9ʒ\3 nCr̊i {&[ڜ~eO4HGHOf.#$n,;MB5|NXS*=)N*a\+\>SwBqWT5d,EX3$4F DUQCҰ̤A6Z0RH,ݙ9|1ԓ7N[U<}>!بq1|YK63ϴx뱂Cjg1q6H^'Q`', *F- J]Rj׻ΊNeca–V^6c7܇Xa,eAόB9Xρ+l}TPXm"}-3_γto+YQ'doy T"(A J0I d7<i[؝qpMl규7smrӟ|wVqYӪ6毀rhkAoos63>{̖-hx7,,7!_/CFZjۉ.~ ?UU L  UTf PQh `\EYy hSf `鍱 c D` ͠_Zm`=`x G 4T Zu_?ZqkW N~iVl`AZu ݸuI ! oT+͝+qz_QL@++&R]dћ݁a氙 Xԫ q !q]Z!/^X vJ !Q db"N(, Q"7_TlM` Z9yY]"9򓨴xVQ_E//hDfmamc9.q!^ѝ &>e-c1j$cH ~"^"*DOŠ^@T@eEqRíÍh&Fd%2(J@ գqlG[Oe^euؐSq$}}! "#nDE!RF=ZIy6աK9Y hx@$Su#с%#"[Fҥ;fA9&iHd,g_)]}R Pͥ\OnFdfg%Q֡ag8$ٝ8OWRh~"'ppL\*_!&ob_&zuf;Je8漽[QZԉ b6jl⡝Ii W#rLbX%ܱ H $ۉ}hI%r*HU(6#M]2B)fezZ֣I¤]{T֔}G(U I8\cčx'>Աi@`6hp9 eqf 5'[$}YRÍ!(biݜ>. Ej\)^hb>e8NZ_VeZf $6krfnnݑ_#e**fG֧Ƥ2Zz͝&mcG NdhvϚᪿr0Ki'nځUbx9+P 4qNKBjfݑ$oG p쀎"`,sۻjcO;Va%jcW kmƬbԿm3u˔| ^Ѥ_\n"cH@lg逦$D*,pHN]#zb%%զHnl7"9_ =:et^ -ޑ DhEТ@IQkFz#Q|%TlT&z2CJ]e -&h8v F(#d'"IvdTY%b e^%d&.P bJg2aUޤ"F`]lK4VaVjVɾk,J(;Zv+Z6(o9JbF0#揹JkV 5>]%(]ꦵaz):c,[gFhFiH/~قoR)R.۝j?Th]_Q.'y OTf-ߍyiζJ]fV"fredm^̂,j3zB-dբuZB%_ HAE%B-}q/1\O L"Vh~m SiΙf*1-"Jɱ0/g Ϭnc!Eec\7 AvSFrÁ2p>T i1;0p.'pO1VCY pZbkæ,˥-+ /hfd:D@0 }HG dHo@!)1&>kOVZb:0 4 CVBFO릕p/W4 5gQqB-_&])vX+u}t"p2&~buHx@H\ 3Dx@0=1.! uvp° 3&uv&_ }&p6cEisX,=aG3yZ/K4[f)i*"5+ 4nOϱ oC/'wtrs2`;5D~"5uSYhyI%WstvL{)[s ش:+]W3CtwRk/37Jq\ptxS6b+0ndzo?y) Un3ت0_SJ7 Է P tn7S.bc7 _eO3{* rvOuTEyL]+.:9P8;\ƶx0tLG@]&ʴsO8+v=xf2_4ovx_b;9k"y8_WO($E_or\@ |.zvGlq:*0[vQ/ .'3c;N#7F6^Jk? WfLW_.|'R_ L] gWk h|L"@glb"ܛkܛT}ۇC xދWs܇$Ď& >/>}c"ק(Փ[vӟc6ibG5@vxu~֫@5jM={ӽد}G~w Py7o~$G>?譤>/FY=7 CmHz}@D(@DA XaC8paF1q/B$! E UNED>rfȔI(ɳ' BOx Qԃ K.t_TSVzkV[vlXcɖ5{mڮO6=A rI|9A? 0!)R]CSPQp˞'&$ђ (>89NjReBcf^!#te I]$gKhѡJ۶}ztөW~{v+X(~xK`:~!:jQⱎ.5hBrj. j7l#V{Mۉ?|O#ͧ{ ŤZ;{e*)x"(1[DPH ᰄ@2`L% |B(%dJ-3?Dhbji"s8Z"!B|SaȾT;m|H%Ҳ[jG"/NJ\1;.Zht "L>B'?[c7?|?5J3Eh^3BN7nm0m6@&"1P0QQ溔J=tե:*)  MY@5Jv@ARX1|Sͽ _ ϿQqNݣa;f8RU+; +(ZѥxP>t:jrz4h$m\g%@5hoSj '; i|T^fϿʆs^Bf!^#_ut$D^iM~4> ivB][ U~+LiL2@+p̼^p3$=:'NTs|*a^زɾM5V m[\9G/ClJ*Mqϩd&@-gE$SZ[RrQTQH~ӟ Ȁ7x^]=VYM(ʤ*gl }vUaHOm@`p 4± E#[s%m>p")ϹK3ʥQD=\8yt',Ԥqt&F"Ul X)L_ +X,faԷT;v%&\Qs"nR1qU6 d3yֈP.u ؜xyvغkCmB1b$8W4KBƃv1I3mC.W@4r]olxWj>-Ya5ET@)$i43+%v2$y;VtT'&gA7;*8Vv~%g%[J#{mRzi1ny7< V;HAF5ZWkoI)ܼ-1ͦĴkD4[Lq Z66elJֱg4fG>s ۦ{RexNze4;d;J^Q>A]tȌE 9`QŰM9 E"eVNdR?:n{{UVhx(hr/DxwjDV6>$fuxg;gv86X)Lζn>s8IrsЅy#؁gpܚvnPHJF~g!*}rp[ẓї~Zh &ԄHN;(V2"vu<Ǥ!yg׎Iܭenp erb,5$g%y12RD~Ѝت5TXB%(G))-DET=jǙxQyRh$_W8,8'}h1K]r('Q, -h,[pf1P1PVߞR3/b<<ŷ G!]eCF"3rG{ؐ9%"aC.2FđJC 3&}r,.xK ""c<*e6S=3CPNPF7o@*rǼ'SaqlZ8!0>729@%RB1 B2 EeNjbדFm[s+3Hְ @8$0ذڮE%1$7}E+8(HC%0"q혌qv3H!T24I_ !sIc+!b@<(rEjTP,*tPD=*+- 60e d`V*cAO(6%1d/K,"%I?[$];u -a6qTW8sH1D)0ehS:+1:'r BH" 3sPCk&13Rc@>%-$]m]׵uU]K^I/])._[^^^V^YXj cbq)0v c4m.YSms$T(-^$;O`ue_`o` v>.f_VdUe[5]GK=,sEf+b֫F=]3v Xpdseq6`Sv^}fQ^ߕ_mfͶ\0fkdQ6`c6'ē ~i(i5.̊vDOs>g0d@?)[}vn]VlUnpeVgrylm$7s5.lW94X(.Spg7t=sF=biMOSg6g6g':`WL7`U%]U^Wevxuz]zz2&oR13i|L3CbO7˶A)@wymov{Vl+wyq6z`Q7_lW|Vy1¤7nv{%W^E4`G|7=(e|fdf@6^w` xx8t37S7tf sXzi6;) uaLh#?Y%c/=xuR 5=lb.KPh3+(źֆee8yeϸ`W{X̸mɖW`mf]YO2=8E(UgG?$1i0z8```5_`59xq_ dSV[b(%gcdoY]31=/ShXk`~]v^Xv'9յ[mؘO7uH+4Y(jZqٜ)EFi'(TnD9MggW]ǘYzO9nWיٍk;I/a=#Oߢ[;= C 0q,;+]qyW%ZQ9Ys #Cyy%چ'y5;yaL8nC-n<]1to٣zFޥ vT4d d۵15eaegZڡy`9^;Y]Oz!Uқu+Ϊ#*Q5qc#ְVzqXrz7יڬz^ `Ӛtsv#xZڥ:T#%_^Wq"a=9.cVH$^-c@}n{ئ ccحySU:ڭ?׷;_9"8``Y1.±Ej,2T@O<|TMgY2:\~;=Wڴ}=[]w{}w_Ճ>]ЕO:̃VxR-uб 3ʯ2E;Y `FY >c>\;QV\tS}zUAٶ^5#Vc.ݖ.;V> \UWX ʼnc;e{[m;ayk;8_ܶӚG^|m⩝^w;6oLcs4eXȁ^S\e+?"@:(P"lH  DaBVԡLj%T Ɗ1l2ʗW"N+Ty"(#*؇4ҥL:} 5ԩTZ5֭\z ꈱ#=/t`Λ1"!#H 1^\DG.-9@S6cˈeb R%℆ \\x%! 9qK9v9rB I/PF{ ?<̛;>uѡѢ{E9 2p peן͂Q>ra 7 YkD(C4[Fa2-tYdԟ|DEH .wQ].c2Ψ܊cO/0b[6`xյDȰCm=ERLFXkEZv\R$}Y6Q~01֤ؖfh`b~ $:] <Wp*҈h.h\5 .HNv^]5EђwC-) Y']z&f6Ш2dۦ!dCqM_@@n@JY~ n[XBUi<C_8eJ@`-YfC {ٟJqѮJ+ *+kY:ha"aYbA@v`#6ߌs6Uj[[]ƥPiPk^V끤*gڊ&~VkRomm9fvdA<M{K{mT˸q~SI ,ʡD=Ma\:)yIUN'7gVʃf55I?LRUA%wXh #6߀F%Ido4a'} xև4eSBã!ܪnkֿF`٠(5:T_T6>q I|0,pu! MnI Y=(6H#H-1hrio(\Bȳaoxނ0.ɷ(ZWAp5 wL[([iM’J M&5Obt)XmD(_I$ WAQ[|5efaaO¹Z(DYAI/y0d;1y: 䔧A”0|&d}I Lfa2)PfRU§KRT~2!.:85h3L岂ht{̦K_ Ӫh75.ɓ^cMpˆmj(FFxJSğĄ+Yj\B4tqs'r$(W c#U*,Iz Y͘ v0Թ l N'ȃ$ CaG%7x4z*G:}Ru'++$OwVJj+US"Dh}-G\IjdnR3mAY` ,I Tv|2e9l*Q+Nml^gBOΖql/KK`mV\碸RXQS Jp%gG -/ >%Ėbx: zO\pmڐzKB)PKnj3YۧJH0_2Ja0Ŧ9'f& t(SAvDEP-h]52A+Z󒟣fӪORV'XyyډXH曣A&ͤl|Q's!T:\3sWDVVe ެ3=AެAbs@.? cApFd,d_cMvt;KG5-2_G_-4gE#dp9{\=vk7XꞀ&EN L`B" ?B~3]q[ %-3D39vo<>Z1w9iC}Jڶ&.meNU*@PK'<䴞\{K}aOc8pn/³(heTyU>UC1ovth7zѣ rXm\b?XZr IgH$pɷ*W$mx=Bi+?V1HĶM4W5wW~w+gsVnZD6m?q7wvǀؗnkW&}+7}}*x&5{WQdryfZ47Z Hy˄2Qj׵\ԡ gG@SonE%6l=YpQ%x2R}dHVhsuWwZn((u.'sŗrp(pg{ei}g5|(wt6,udf?P0HHG(PMaK'-HV`\(y'x6x'h>& cXt478(W}7}s8m w׋7Ck J *~i Q芤i;w*2wڲ&ߚH^c}٨9t{tY\ ^l* ˜kH۸kj ;ەi"D3jaNE3`^٢;iڭ@;gk"Zx̿U; CNpSBBzD`/9ҫŠkڻ0La¸i+,8̦4A-L9L30[CYQ\.N6ñX Yť ̞(kz:T[QJTTK ;rLq|<:zl̵y«{+2;Hqs"FM{:E %|<M[5=ќ&<kќ\%L# KIpT<\Ȳknj,c|k{\Bk+s;gjK7Oz8ezA--! ֔ۦo-%uvM;!] -_׮,tЩk؊'Ŋ7R`*p-*I&K`k8J #E@k`L2i,َm؛'i*Л֔}-[k؍}N[יMM ݝߕ8]8QP{呧ȉ̤aaP=[lۘH=(y=a _5^[am*.9X`]P\[tfwt$33f՝mY $ޑ=߅^tMYl]}=V=pZn.CWW=kVeJpykrj;'λ<E^Z,ΌdK麓99أ$@l 췕䒜_xr3·fȃg8QBt043ѹG.e^i>Nq..y.r~஖"lzP26[ xyh'ɖm۴Xn},:N^՛oUg%.T-So X798Ѿ8?_݆@/nk|]YT7_sJp6BMշ;:J}~ꂌiqbJ3ks+㕾뻮YǣX;:ܼKVikU31oRuoXD!6O>MMԥT._kn-4?n͋o껖3%OݙoNH5.CJvJLNX5ny ?x/En뼎lE J@Q` BAr+$(!AA*2DaA)th1!(dQÄAR8S!Jze(@TH 1TP MOLzBTWvWba KVWjr͚uشt-Wo#m6ּ k׭֭r'΋ߵ^Gec_JiըU&j4j-gaO'4X.-„{7I/-}G ߨC޺#Bѹ%~<9ɋ ٻJv3FˬDA2,L2:3k 5PB&1ZPqE(·jø*ј0T p-"d`b:;n曮$nC8D+ *c@"8C#5[H;) ":\S; j) c@D+PL*W Q.WM;,iu@2ճ[,AeOXGIhEYXu5qjAlV=խn5U 4z)NIXcn;|‰; 9t7 :bϺL%ܨSK&чtJ(/+%LʏI֒ "V4i|r)|ǪML=)UJzD5jUJc)>Q۲TަW |zjywW|.S]7x7?T^NqsV^?-)؏֗HMQ/;sh (#e1Qzf<&hIݒ9)鼛IJֹf8u1g,f Xi`n4.~0`[PZ뼫] )ت:}tWSqfsu[4VMys\6'-ІvR6s[@wΕ4i%EsӲt([DwΞ5W+[!sj"k*II~P_qPqd1K'.]Ld& U5,`_ȓmW?Y$$3YS4 S@:@s@CS39 @[[@G;9?O"AOZ?rb:9׊c@,:rqj-KA*T/PcAS`Y;/u˲S'c˪ü*.>$2dh7.؂.<S8~+8k1#C2q3&˷t 34/B9̰!3C{7"{ ,*> E䣯2'Z[(Zq*AZE줍cqr/3s9?s @' KCAc-'58F5XUAiť \+-M+c:Ӣ2#>;g,Yƽ13k:l<Ǐ@$e\E~<-B -C10&121{6ꓬ6gs=#u>HLЫ>C,8F|8%;LEl2AZ>I.lSl'/MC?,J;1nS,{<*1FL> { O|HQ|6hK=tsvS"c(0,cC$DNCO:Ȃ[)2>ӷӱ;;1f>'xC<<۵\kN,/[ȼ\HxǒӴ"Lu\0E,̉5ltEZ8!QsLPER|łdLVL,%b,(K̸'ŷ L,o,SnLN\;c¶"VBS*=\sk=(0I1>ۂ, /Ph+N7E FHCN?\C'`ΈU̔<Q]sHQ]KB-snUNW\ˇl(t ymWz2son5UܲqMW}參=XtMX%=3TI0OrC=KTțڥ\3e3DUeZC.7Z(2,(21Cˎm03ĦD63g;У${IBhПV[kňcN x\q}\WvX|Sͅ/ V8|]WЅW\Ͻ\Z]up\|խy]\.C\)QٮYE^ 6 ,` 8; $2LNO3=P3_+H Js=2TE7[շI_^H^=%  2|1d_f=8+ʣ}`g/-\[C])8Z^>]|5]沉~IaV݇\ĕޭiU]!f\a\ť"nᠱS2*?"؃22߹``7 1>7-7+*=DLDV v@%s3γFߒ<_;D_U02h`c3,@NUE*8dAL2;ITdFλlD>A/sKe} a1&fnE5>b//Њb5L*b!6ƕ/df\>aʂ^FpNffj*o~bЂf&Vp^>M#a%Iy*228:f۷MDNNu VߒTk`N}I&m=HF[E^U3ihUe|S߭_VJ[.~6DneGj"O6|jgMf*2$*f<1V^zܨEhۂsm ;˘ ᱞBe>kejƮH2\gg ~봶o&g~{kΏe`e6\S oDԉJ+=#ce_QDՌ^<iJݶcH^d"c&rf~ΎЅ pVaVfk7oLzsVḆ=G>@fojwnt~.aJÞk 6-D_/,(='&<7ZceC N2m H",O.i/TխuriN%iG]0"neZUN2hT_,^oI+ 0{C7?IB 8u}w6x~6opSwTpeT20XCvcrE>iDUi#r fc`?e vJ>ClyϚ._67 iG_$d(nnAida-=\uۯgۍj`|6ϓ{_jN}oMux{Ojڛ|Iy7|twS{%8{6[w2O0!,&3@qWW`&OrOi -w`To`-ZOhfOU`5䖧E \s_^n叆C}_OYmK߯zl۷Ñt?_{>QlcBPP!Ŭ5!Fʫ_UHrܕsyr)&}+ŧfG*ɽ;AQw{.u)Qio{dR&g iNK[]20hmv-eEMl] \~bRdU5M2iXSWUJzRBu_~T` *xTJV+e f%6dkM rMLjdNYP6~yw7ujonS\;k'Su TpX^2:1.pSN ۜ(X^Wd-KzCgU UEWIʻ]v WHK($P)ZTd㍪l'L$U+[j+=Ms w<(FV,qRɳu&3L~Wɱ,F5+(ɟ /yKXnTu )0wYYNeT@|`?xSvрm|\'eEpq{ U2# g^5 Is|cnw#vo;ݞLW q"WnɌcNXuŬ(LzM|ǯ=Y(*7E8&{r0Fs&3;83Vh,`sYF׺>nd_;?k{c¹ndk=Yw^為~_jUp~Wp6wXLX_^8α e3~I3[ƿ.;>v dT˺L]*_ ŅɓlU V`_"p[T3u~aN蠜\ ypSLi ]>OO(٤㊙[&tɠfW̲eXs a~n Np>cS8}d.ư)0ZaAWQX`u!+]\ aq}!](; -^Ynqr]ؕ!aYQA];DB\i,ФpZ$dh$!@]UIJZ.Z!RGš}Q`bA["7֡[a^]#ј!b_JpE壥UÁ`b;du6a\"`f"MړXuZ"!?a׊M"^UidAّ0 tePZ5X!6# 7a#Lu'7Y`lAUZ`DZz(y]SRq)BFiל"AmM`OzdOal&UKER]Q]e~](^^^&'%>^W׉&#?ꨬQ z^ߋqd]~!Q%ڥh:iFZ] v$z5ahBihFBhQ.@ʐ`@z*e!ٱBtYv&ugJyjyVו\r~Z/&S. j hجPyaejyeZU$eBeϨe ɽ%`j*Z~j갶(BEi^)镎`%z)5g\!^$z.r:߈Ii`B+Z)ڥCDk+1)z*&i櫵֫%k.۱%+Ņ"\iوO2`U WzYˢɚw\jf!;$%"}*wdt%$:֤ Jj!hKuJnŏ5;;gPdA,J-ZM,J$$J$.-F`۪mߢޢ'q cJ$bK&W߶mO୥m-cbFܪ-znխ­ឭ2ߎ--ޚf[.z.n"ގ;,QL.-߂dp٢-ۺ$nFnήnFߢ/x/-ςnڶn쩞. j/zVoj/o2Z"ݻltV/J-*슯^0m:ƭn-noᆬMlpn pp*.۰߮p2Knݾʪ qzm#`J.B^K0횯b.f[vlm>qo-j ϰSp/eɁ-.j_qtʮߒ0S/U$,#./) #2oN-q2o-0o62q#1p_q1ҮA0[^2'v.prrpRh" >.*[pkqPn  C..N/2rZg.rS/z ?n:?K9'ڲ2332x~/:/N.@nBqG˰ mv&WV4^tI/.ۮ2 1'&10/,No=22%S6DsCn-?/T0.4WO=XqϭJ3su Ѩ9oF@`c28Bj W.m٪ ,3*W6/R)m?% CnKDqF;,Ƕw.ba\o.VQs_1h./$2Z._rrq80*nw_wB7-kwX-q@/uRc3Q/SSRVy$ǵV WVخw@Gn0hkӶqro:30/-.F[o!iv7[2_0?'5"ׯPNRjB-+2யfvNj2tw"7%#m^7Qj.,dzr3 3ig7/0SrnI#11SOuOttGq-77f_buu2]?qtd .w$uQj`Gyb8f0s%[5C6[5xbC/Kt&tDD/8mOu*51Gh{:𚷲SwZf˵^Z3{DTG/"8;xTrvK3yw:9UG;s9twnw0-iDwA!`o4NrG K{pG٧/ ϯk<݊Souz.7ouo1S5/Ktgsٲ-Se3uF339G75_sw;y6 [3f$#<|ryR7Kf2g5Xy706,Y$C/:JY`Ϝ.yLHp@ hO|Xe͔Haz͒IYrݪTҪ>)tϙGZI>^Z9rkԥi p(k% %`aZ5Z #7nr!?6S@LXrA{CC^Kcsb} w IwqVf`Ō̙3N̍yMpRFW&-喔ӯN e &6?cd2!?xl)o3O4 "α3D˨v#00V4!2D2ZB,]mX2JC@eE Df(vA#ct.#XC= 6P C0+ij.ܛӎ)cJж p<5Gz-"uAZ-9_iJ@: ”104 D6%o,>3;,0K6E~-Wb349ۄu ŮQ[gUHmZv%4sjI@cL ,`P 3 cpQݺ1aj5IMYb:ZF ]Y)u1<96 s,RTkbcҌ Eٻ#[0Ưlz^٤`yc*PMiu$^U['S馝ΊJUd^$qD:=וּݎQn &F~uu$5R 3`b>C hv &k*y:]KMjO8tl_Wc>!u eػ-?;WNbZ0J8CZT;(,~e4؟xR#I䯢nu9,y"0ٓ[Pr+dy [>/u ^CfAit)ye c@չFuقI5 4xH5ݭTIR彪. 1W.Yv`l䝐M*ӗA&X 3W\Ũ[:bYp.t ft"Ӧ݊lel>TɖC8/:@.}`*{ۻS%9?=jW#ٍ&v2Ș氆+Lh`?A~d~,, wW i#,cM/2s6}L U):t8҃+ 8-5j`Ӡ,c\2TgbH -#添h,NXh1(z-Nu݈%N07iPLDP"]8Cf3X Nөkz[nb@ȺBϝ|{RBZHX˝UO,"*:k] r3A2apX: U`[ 6%c Kba YĞAmgKѮ鱚},A34V=fW[ve.Vխb{V8o +C:\6o9ɮIN ,]}vQ+*7UvY6Ǖ|WZRֵmab_n'dDmtX 6}-qOy-+ky6h\)qo{ZZ m{+[x2LM[Z3Y~{^Ԭ)QiV6]6.Ms[2`^SmKFOXrz  766y5l_z?.ic+b2̅}[XhYm=fI?Yքg=Ydǟ.̎۸2c/ V 7dz]poV7Liw@nqo#]Nϊr#O#G2KͪFuKk%9G9-Lv mpp|6tCyGk^weַ.Cqqjی[u?iK7K}mn/ȟ7?SY} kxk:.u?Ӹnp ___?n'+VMfMp D Ѡ ,L|ph\؜mhT$M"̭FPl Jk. ʊ.Ln@K^Rh Mm,^oد4n.Ȝo[Ǒ- o6l̠l̖M|ޜf XekLnAM ) T+ϳ N!nݾ0(NElR>+ mo U>,Œ -0pȌڔk p&XkMBy ɭҭML㘋XZ oK s8-Mzdrfܱ SonpRknXPZ omцծ,!Nns"eNOk̐QaMN'qܴ0kMˈ6+qPrm/ +,Ѩ`1ZJpM čɦ-wpqRov 2l4Q % s2tɰ2\'/ƀ̻ ی.j,{F8p* /71Y  OO. AMK .v,n' )r'G+kjl)p܂[#r/~kǐ2. o,2O>Y ?m3=;On%DDk64 ql6 ܰrȘOJпHFRDos* 8 S/!Ͳ<ҿ3>a 5ǯ|N Ro 4'qHLS-1SP `&eN+ EL!NnHQ0=RD.D{r 'Yo4M04YQ;̿s4@J+<¬SSƆT4kT2/q>Q/"}12L;LWBMܰo#tjq=M +T,ACs >0(%6;!4J&a2w,Q/2#QTI:-1r֮tU m-(SY!@oD31qP < &s%Y0q"Qq P)#CT%U, )U)5P"1]}+]NXM5AT ^,1= ѲRt4?߭D MIo_n)YU)0k;'uUlMQHO/#MY-6l 2P?PNe-T{A   0Zk-S%A%d;fOD)P2j2Q1A$5lr#^QZ5ܔAS?4B5MwJT,C.!]È MX'1n4l iPu.g4S kQ$q2G5-WVwSTKϻ Q7T=TT`;sulx1Y3\ A5R@ML T@\WDEr5d#e6u 1(0xtX L;7EW+sk.}vf2qWZH5hE?mg;t 3wkǗLN=yN<_юU+tgSvwt}Qstӎcysv!W?|\ B/wbCTLMG7D~W~uv>yőF'C^ߙVmH%a3B5yZrmQ։wxMd[+w4t@Ey4oLeӰ9CEtivLH.=YwQvyfhꊍUϸ{X-=, zwsiC;g_uYz̐OfL vZ7rRn!uǃf+C:GCUyP#7Z)s;%ܩߙ|u ͺѹsYhgW˲S)ɗrt=2WVk:b){3 qsyiVW ?oyUa :}tXsx ! 62FAu5p=67Sہٞt7=9h;%y坋S܌{[E9RKXVtg C a~e聞꥞ꅾ ~~>k꟞^^^^쁾>~~^^^?̱9$_)wBɜtE5~JM!"$a$I B E%>a;Z%!1-bg[T7q~Q>e<\I9j}vx CH !' &$PhO'8Ɗr|8$w7PL/ag[eeUTL{%(UA9-`m AFEmU BUBŝ@B נ#(&َUSĔMvj QkU](2 GFecvV$Y3V\d񶛎FV%jrTsaA񆤎YW;JF"9_Z!5Zeu9__AiYRvYiц&D[ F)f% DWG梉K9utBBN?wEObaVJ2(Ck*nR[F{*)h+P_ݫ`i|vp|䣲FXrug7j^2kƱn&01 fYF6ݛo_n KGZwZwe%o(Y!HF~X)AW5 q&SޤMʆ&bC^37){5æ-NRp5+BuXqZOEHYITz tvEG!72C%W*g׍ǺnW/q慑[*P^bWo'_Ǥ]ݎCZˑfsWun%3RmCŵ^es!m@P*.]%`UplyBFUm4 m$'N\eAj_Vnך=IZ ݖ*Dxu[׸۩E)NyŜ,@Cf=ikGEt: v8*,z^BxO,n`39.N~*5eiU\S,;Ofv;dyC8DF#7nmJҭ|KF*[y%[Xa'+g-eD1SruR04TQGMX8nvu|),q]$}zW(a#:A=}Ԓ_h g^b3eS_% lљ Ng*OUҧ=C%*5J>Lt̀'g="bd&a}BHtP$¬6L~A\GGphdF'#}3'U9m%®j,ץ=! C7Jk M#2 ʼn*?Л l`ܬ ihoZMa^9_Te4ɢ_|izC~$V{>策;U<'%fCv.#s;gbVW㇏!r O\;aޔ0yRjЗrd?2qGv4jhBuu 4!t`|\0gtiF~2G~gA4|q'}e{'g]bvn1}!||y_a'd6U7Wovt,wQ"] hy@wzkft"E$6gWxx7(zʵ_N#@vbyp&O&of\Wxh+gflf"NHbpV`hxxܦpr{~e:x2rwn.~!FhB9fyHzc9[Fuٷqֶy5h":ZH)}aU:D[v0:7xR-+ s7P?BGG^H^ζ/rgpxר$%kSXQgu?hf}{Y"f+hw$VT8q q q0 !cy֥Lj~Ԑ7‘9ctfz7XRHyQ}>7̨*gyyie4H@9L@N yCYXv|cPSi,at|yI' !,PI\9xtّ`c78v+)}EowI PB q87qEi5)8+,Ve0|xhUyTF|(sEȌ?AFiHi88f$7yIa)+)`QɗNU9VU(Btiٓא`gY `~gnX\ɘ26R c )6lsq'tY9 JJ5Srhi{熙 pAusoI(5*gQnQYi/uȖUZ.Yj ^8y)cgDiV~@Y7YStٗjJ헔 h9 yX\){ǤH(R֜8& Y>;X}~ w6٘zA) e.xJw^m I~9xvQ\dH j:xz%>|iIIeZțVGIZIqė:rZ fʠᦍ7`jhSr LirJHy:x橒ͦUI$!q:8wYxȌZ=XoW@7pp7q Zt {'8~}~*-C `z8HjY=ɋ솮D:QVzi_m8Zʫ褗J`[ Td7Ja-+ J7לۘ![W˶,$=qJ6^ Ҫ3BrKʇZ@mG2i#n^5|jb~X{j]Բ-[K{IbY:ۢR[x)YNؘWS-``h|kkk {qk 9ElyG)kRu@[SDY_ 7J ~<ܻļi}gJ hk[ h(׬huۼ?l|{@dȼ Fܬ.zZy~Ls`˓ǔFh :t{ʉg{ KWʞ܄ܬK?G)I9J[ 4J[!4 lLT9JV>a0` Z@ \֔@֡0 P֔ `^_M ^]rg֍d= rj-ׂj-ր}mmatu=wMׂ׀p֋- y vמku׈-y_ ِ٘M p֧ٓՇ-uM׋d)o~wٌ dMx١׀=׷bM-~e ր0 m ݉]{uڶM]-dנ-֡Mܞܓmz֯ݐֆ ԝߜqh]-ܿՈi nMiܮwttxN٧=܀M.װ=֝{e]` P } K] P P 0 `` @ 7pQ]VmSլ Ґ ״لM^d lڷ-y}g]~^ɭzܷ-݊~q`]ߍMk e=ڿ=m=7׆M ֣6Žlֽṍ}} ^s֪Ҏ=ދ]&>ݸ=ك0y^}َ޺>c݋݊]۷]ڗ.mk-]٨8h=}ף Gn P` ^p~Po @ .N ``_pL m=B ~ރ&>mܡlmw?nܐ3 ؅Na69._رn-؈mQ-d}ݻ^>QoMߨգ.׫?! _z"=> ᄄ~잿q=\]ynuȿ]~٧~ _t\o^ڏM G cn  S.G"UHDa8q"2gΤeX5)m4R#!;N"2J6KBG*ggǝ.Mj%%QĕJQA)( Br):KTm쫵B1'ќN!]=*(JR $c⮺3^4G94T4kJ;ƳNTu28,# ӌ3{M$5:Ώf+KN,=|-V5K9T;l8b1E(r$tϲv.ǎ%y8W^}w'Oq* l^[B_Zj0t-h8-6q',qK@J!0d%*rˍP;Ec6jh@Ɣr#rVuFNHT4Ehs$C=Viotv'(ˊjֲQ[L6[Qף7/ҧD 6ڪ驰>/dMxry9.H$UZNĚechb'PfVNxt'yo81q :%qׄG6=XI ?OP-8##c"F0 i"UOpW {A[MT(Nmq_#ݥ1LF5/NB@#ՖԞ֩OjyB-ePakg2|.P(urЬ% Jb8HT2d <ɄqN6$?͍GP򳟍 h>#Beh~DP'g>~2DG7P6hB|'FzQ"t=BQ6<=hA!RtCS QSjՕ=J!==CǺSUfmF5 ӠS:MK!Ѱ4}[gWiKG:В>V?u:RHzIabme>STie;P uaHNjӐ}DGQrUq^CZm ~곰9(@'QFH NB!JHbO B\U9(SgF~ךz/-r?ךRuQ/zӕf6?EAҒT>Ũ(Y"R_{8r?G[R)m}_42E]Կju@$m1JUniPj[.5rQ*6,UtSԱ *H SS6kzI5mZЪ.+r?GBNhN:޲4hGjCCP5R*82gfu)Vuғ)P#m|&Q"Qn#p&5o[_R41M3d<֌4BS/[bΞԧPiEqҔe,t?*NUо(Y6sOLXBawc`5JVۊմH|Z<%\;g.S68R} MXpDq2^]y {unD_mB 0Q&'v6Tm\O-[چRHu,`?Pm%,VdVi[Bf-k(AL 0CD!Ba_c'ȶȝ9RBYI{,ئ<|ԯV8p ߻pqFg৮^j2)"˽2Gz,{-SBZ4KB+(%춧Z."4 &=)p,T 2Ӫ@+Ӳ1/-&jBCB7ik(b3( ڲ,<ĝ(j[0Q@M?$ BUK 7 sgSGz٫;8̱Ỿ=|R-7;59h (8AO P8JCȁ'bAr'%{CS3* ;=-;5/Czk=1,G7I)%D䋻 d2Cª^,r4칑RBdCi2k˾+a>㶌c(,@K+2-#H *:ɤctv1C68N3?O@: 4C 3 48{{2@n36G09O@9Q.hƑC G]RjӼR'CH8#prlL&:K{ê 886R3vK=T9zs*]*Y$,*K :~3I'< 4C n7GǮL<|KjJ2ڬ+cCE伲K9LPK2DCLѯڽGEgBز9uH|6QĒE{@g LdUN4tJ7FLlRk31~H}˚֓)ەWEmք-+%Z$6T)7筨EEs,W,,#+AL,/ 8~-"c;L&(W0?OpT[kpeVƔxv!UnaɭL}v,,2P&:ƙ:3Y&4T!G]ngа~eׄSu;~]2lF|XPׄB5D Q]<㷶ӊd׭~MƱ&`|llTߌVMafQ5i.#I-C8 @'SGXe.n`&Gs7_פA<O1A~-oǍnܽP6nTSĝ]i{ߑ{VM62<YCh^a*76u^ ϼ ^?,䎎쒵 l:s/In `{߀_Aҍ^uaφ]aXDv%e)Vj}NiK8pth rWNn\nKBǶ\b'8svVM9QSQanad %b>]i:MMSUE..*h\Ȱ.c6\B/*dpvC'njuͭau.l*VrAsPoe^` of\B)ׯ_r|ruxsM\;Po{Ǐ{+WTEqDj}':{|҇sxO`ٯo\\gW3[jG{ jT5o)?VHfX;P&}W(7~&ݼ2|8d>]@:/~s|KnQr@I+8pÂVqS ' tUdCQ468q%ȆBAtQ'SDB+Q 2H"0R8fԨRRZ֬Zr+lbǒ-k,ϊkTٱO+9m SO iQɘk'nTWڍ噑$$j|Hpue;dD dGP຺*ė.庐fdd&BjaK˅]BQGk]߽J򓗪]˛rᬟEJj}\nJtĚQ8q.Ϻwbi.몠,p<'r|I&$?h4p-Y]B$Z?nQ02[/9^ַj'K<)kw- o~Ow*g "~ qۭwZp&| 7&e%2L~fIcO}}Gflw/À'ꅴ)ך8$"NA֗5jӜ6$AmD*ϔ4G`+`E)JMk ʲ@ȱX)jQNȄ!(! KPb \H/,;XR>nM$u.L:4PiahE uPNz֑0.Z 20+hݳӆ,N= t1T3jnHZ`̛ZӰ3㝭DtpIXƊ@:G3j$ Iw I%KGe'+hTՍ@e>8=GzRtUNH3DŽIQ*A,Bf(έ yXX'vMהA%I{hz1)Gv8c)R(F{Iw<@ٝZ1c MSHSS g'dђKK>"Z k2@!UvbC &W]k%#=Qe\0:XAJHB2dfhT&DB S\ŲJ'+Hqnv8jr"vV:P?)m |@6Z10S:j 4 zb24!D(%<8CQVφ$*Q[w4o\:RHB™)2/Q~O/ PPj76.( O驊ƑC_(gzzҲWxc5zSEOOd:6[E] ) ,;L[ O` N Ea0cmH|fJcX &avRy|"'L0WyYt;̺=:6 b:8S.|iw~qEis8dڎ)jdb!a1I;_E#<i[I"$YB~d!Y&zcn 8*$3\IjV:?r^U]m.RuD\Yyd%%b2na8]$hVCMM%4c}k!a\``ڠCc%qE# Z_8N=Yl^U[%%R`\V!&kZY9`$峙ce%'_F#uD4NU嘠˭9ݽyaSi,}/6EhhKi.^z,DBVhd(Jhh*fhR&P(^1ى%R.Ĩ6Fщf脚HyMh`9jE۹cqh*"hA֟zhyZ(b(h"^U<~!ىM")hjB[Dbf2X.i^)^Q).',ܨ,Z(&oE&<я~jꂺXPQE ]SIdȃH⩄Ih +hfh.k^j)k:,* +>isW2ه""ih(b)H'V\F#E饆(ꄞkb$V(!)NbZjQ~$ * ^ )=+BhjjiY\j9*64a(y_a8kbSgQ,ZBK&HH ,®N)N))F.N&J[6`쑆h*jrZ6bW,i;RۼF.\)^>Ȇ+(RY('[iV7N^*hXr-(ĶJ(fk.,:^jbه&2Yh)pgL&m.4-X裖 +&ii(,򩠺/bJsjiziRhm~膪e!#ήBlZf*RwN_ir:z沪N.kyjNp )zZmvV.K(--/.D&0)kvVnr_ε,Ԃ)bkqYL]ۦk^~&q'q(z葺j +wq߶~,BiꩢN*Z~(/kBQhnvrĎi)[V +rqOJ#7#芒oow- 2k.rzn"_ퟦ)r_I,/(o:2i>*Zp.C10*++~h=';,-*k% 00{_%g;kOʪX?0),'r jr1^8]kjo>㢳C3o*Vx, ڰ6esvlzlW2B4A,DZ.ei=#c(-X((X)F. SPC?\yy[Ws96 zkzlWageyJKz1U r{igʳQ5#kCK'r_:GE<y{oI6B6)whJ|yy?KS6[.mt.`xQ<-k`&!B;_X\;'=7IH?HwrD﹜w,;[pC밻18;g3qwg=f}O6LrBq~;53yg1wB/nQYjn[7oj~Js&B){?T)C}&'+=Moo>47Uy+zm^s<+:'1fC:qo3:ql8:3QG9$+.fUР g^3Lre,OfiBhpƅ My2 ǂ\rRK)2,V gN;yhPCZ3ziRK"jԧҨRz5Z6[veW~4 RȇiɖhRa܂DXvƳkG!ِB.)I y0b~eKlɄ&CVVb"ܜyÔA;6Le;PmlٖExx)n;ng̉T)Ψ5}zRQYp"&hƚܓO==/? =T?g+2 rHBtnD ˮ'IP46^d-H~4II9bM1l߲R: mņ M4,^ /9HI-Y4Q(m߬5'#\[ -t2.S\ )p&>_7B E`ѭ}ۨ X &Wjo[Z/Wkiq_ o+7r' p ?[r1po=%p3_rZ8'EOEq}wsVyW}vm>sb'9y̟̍\CȻ~w?q~ ! 'opC\ܔt3bv1zEra v-c pzܮunۡ&tȾπ]ZGy|sD~_FwA.t p93׹)sGiq}]nG;۝tN;Mskb HDq~C Dπx"g13.)͎zFTf^v 6#֢,rA'@ưe]OxB-BGm14{2C~p8 AQ@_8 N&=8u ;1E=2Dm|I<ͥcxNw;)H9q,UI2wqb9/: H0Lga+N (l#&޾)+X;T,lD.O_MzQpVLlO'n+sf,׋N#lYhl̺".t=҅Ia܎f!neڔW#k.8jLJٽmTAߴR2 ή@0q&'sҶkn‰^\ :"p_GǫǼʚySF1G W3Ii=.fUlVD;6dB}&P kVfPyzo`~kSqo6mi@nڎd!gtg,8 IڬB vA|!:raNdblSmJ1n!ءg&SЇBvMNP'Ҧl Q '$J,r}N ;!)%+FRJ Q+e @9LV+wwxo21,Ǩ.ǨF.*pْNM}z.+RتMbpr4@lB*TR6Ӄ%[r*PQ&iR7mrrrNϭBPmqpvrQG q?좖ф-.HS˰0: ) 0R'ǤGqr,MO)N+*g1 XNQ#-1׮srɘn#; \N6#6gSF%]2&uG77 S(Mn:sĪkڮ!3T(m4mt=rI-ߓI1 sQJ[1qDŽA*H5SJ5 /tLX#UĈs@o+#VouRF䈱ULZ ɑK,A*b*w*57VS^XUK6*\UkVwSGWGwGtֲl`Myb-Kqm 10S3ڎxA]- i4Ql53ن?}Do_|;QhՐ5@3C?i _P5klp1dMseNeeoWwTzt14`V |ưX4 q;f4bc.`;ox1?y2v_w٘QWNiTO o-5ǂW=gn1}VM RP}r@Rsr\#|sbd3׀WusǪsX6t[qtu`zG ^34kgLaVjCQwŨņ.wuQhvTls[UPՆ%UzJ{H7y>}uR:kŶQWkwqw0 04=1S'%ux,1׶"΂!xdxj*ΡV#t+GGMXXʧߓ;AtSp]אdzPؓXՕ=_w m צҍ]7^=30k6s,943{054{ vǘuYpmDL+3Tŏsy)!8`( ky[X8i+9 QՖBӔi/*8zS^Ԍ6ja3tP׊բz6 ך 6]LcCԘ55[xEAV~to;ZUPEҖ|ra5aNn٫Ye `t{tf:a//:Ia Xe6i1ԔEԆ0Q[+vkB0PA]WQC9;䪔d 8l/5zU>UIհwoqi H*ڹ#c ٬=su}=Xa!IY>c w֓wSbpI[bqz=Ze퓈7Z];ٸRwIǦ:a3S{~ <*㎠5w͛=U{+95ǸӶcLtN Ȼ9eH[)O4H1VCX \)YM EZ1{m+buZ-\/ǻ;Yy{PUڻĥn1eS?3U/:ڈ!]wL)Gol*իVJӨ MYe _0 m`&KBDYi Xh_-f`cu&)Y{Uۀڊ|u[Hl"PDvd. =) s:@Gta4HՁQw^z)^bg^?TS1^Pl#|i;v(c`%jWxY=(ic i`Y6[&h#޶i"⦏`h" :ah(.+B0CN/LXDetVztQeG_NҘ^[D~TiC'Wjyź:8;<6c.xk@+i{Fa\(Qrx(qذvujo1]fv _쮾~Ίb_[W=ݜM˜y񣒊 U)F *%TQBd#[DSQ\tLI8ѧ|СJzBsO%JjYujDiY ?=)Za WT jKUu OpPq5!dm +>tZyL 4.vzW:|5d)F7ol#MYlXrr+J}P9d Z9\˯--2pK|4~"r%LoVWz 3Me샯)\ҫyə /).]q ؁u+x'3pMzS^L 8R>d}VB\R M78Mg Xn gtB͘%07kj{i1[Z <'A sU2hͯF~IoĞ3>4O ^50~xC)I6A=FwS()zee&1,|̎mM̰lfͨ. jr{ni׆QGݙֹk.4AKQ8Gij›(u{s1j8:]$}5{3U\|WJu]b2_Y,@I o#hT-1 $=RIs6hefU!YR&0ӍC&P밸sky;zdԧ=΢ړZcg~N:"N$0vz!R|^$$摌vO5|Þy6ks\;O@sg}Ł+=\;ZO-P[m' .r;<bJD.fͩw+Só?CM9kw-a7A*J-xuf]bv,*0YJp顡kmNɟ\799 /F]YLI :Q87L]4!<Yf` 5ʈbI ;y&D99w F8m:4u :zIHA92hdȥƪrY* ( Q=le15gk|j 7nʞ)sJʢA(/zrFrꤻ(t*g ßzu6}J t`:HkZ~%t->1J 9jڱʐZ)Y'#[a$zZ{ڭeʮuF\CJjÀkYz{JY,JLW^B4A{jW$W!,ǯp!?w":<1"!'BȅJF;*޾VD澜FӦOC gDg* i y0CTIԧI9ت3ÂH`P !,4i"ǯ*\ȰÇ._ċ3jX,rI$DC\Ҥp)EIG}0)ʬɳ'?VѧQS @ӫ3jS`Ot'_תa2V^d۲fҭMn} ޽+]8mj♊+8|-ն^fYƒ!wU9s ֮6ϐS]ik/rjtÉ, BTN5[_xpArC^t&>Vխg~=Qw\֑PށҔق 6xBy%^ Z`-)8By|g`%hRf.4"_::!?!,p_6ǯ*\ȰÇ._ċ3jtt7IRaG K\c8!Yʜcܹ=~/UIdGw"-Tџ@%شã jԪWAu׳;sU+Wh];۸r?ϣ_-]8mj[.qL]E5%fț;4厈Q-ӝp oF5|Cm꣇ڿ+_μУKNس[]{IݽZ^|FGD^C/ߟO> W~D "~|EX>^ &>ana"8X^!,SC3ǯ*\Ȱ!C{sHŊ@7Ǐ5nɂixnjTF$&Ì&ѦO)QsQAƴӚѹSʏjӫ.:S%j,ڴ'Rd8o-DN[>s%p22g)EaV|Yb+rN[8%=aK3 G5EgCk Nȓ+緯͝?W]խ_g}ݵ?=Ν'GxϾAȻcg<_Gz( |!,D!%ǯ*,h| #J,t'juG྿E}#¿O.NiBĉmZԖǭ~!N[8pOsdf4փOU=t. X3S؈y-|sqL!\y#s3XƌuQ!E}",y=~"9d;1o4h%L2 IϠ6:iRD'AZtW(R}j\ӫYȔ^hVlĐiUpں56%SL9ԻZszK0OĊ!-qeÀ)He-H1Η';z<@CGOjڗK#36^.|qΓK^yԫkXyjۋ?!,0 GpÃ@È)Zt1\Ɗ Fq!ȐaH[ L UҴj;8'}IDXԨJQBh^> sk8tO[mq$:ڌ ̷*]5N䋵A5C'_a0%捨6"R6MAMG.=}vls]{7ظ?-|xƟbU~r!,+Gx@ :,bĉ#6^߾# RsX>2wsfL͟9 uGQBCϞSP J/D~Y}]8m~Ӷ6ÄD.pJ`cU羇- ト1%eOw Q[cބ3O9ާTz^ ծ_} lo !,$ G@G 6| );-#HuԆ$E$w)g|y߾h2羠,]ϣBdZ)Tm*Dג^] gpiˇT6~GrhԬ< vmPtyBEN&s-F}s m>}A/^igժ|kPfi_ˆ]p`M;6oo~3p~!,}G@7C 6|x0Dp#D6vĈ}1Xҝ>TNt$L[S[̕4'N% 3P cZ)TtJhcKCN[>ڴzPHt~buXf}~wfIiWOf9f%/fncI|ט<^ k_3-&:[m!,y GpgC@)Z41\Ɗ#8F~ O:#ӷ% Uts!}@t0":@ F!~S S;j(UQ j=J/DkJi8t嫪mZn=@~nʭamÍ6GUҲaw[ܒgM/4k_aҩ:o;LZW!,wGx!?ws"~)NA:z$>mG&]ѢPI񢻦Nn ʯ"2FM:ŪY/X{ná -_֞ueY(:~pWbzl Ye#\`ߏB*TD&Uz["Bخi&!,qǯp7Cwk Ă V1\Č!("ByB}*paJ~+'tGo_Am2O~@ -HQAir͟Q%RH/_ă]8m kol8~!dJ-ٯhkpOUb8WW,- ^UyrL6EL#c!,o㗏^ C NÌW"ȉQD{Tjcq"?}1̴7P"G9w; }`@!,l/^ #CNh&#FWDŽK PӞO DwƳaQ TTӁP+K*_իYѡ ρ"G$pWӮ -_U;b `$˺L ~6m%Z={qʹuY*Gg:ح\*NF!,f ׭x*\H[H_CI`ƌrt$G~$KFԎUd>2ǤMo;}M;s˖YdI&\E |uoggތo3h^ á -wm\JYu$Uu,̀95p9zGu!W((;߅CZs>=vb@!,i%/ G A*\ȐJċ+VxQE=)ўɓ(Qlɕ ]PfK męSn@i_7eHv#G%P2pѨP**֬\~-ױr=;V-U_U.Nhn -9zaaa;vGp}1#]>\3gtBԪn iԫggsD1϶6vq8[N9aJ_N/Wy(;{c_yt Tjitѧ}cڀ_m脣M>i`8W[o]eu !WiYTm٧M8u(":-|\OЃ=!,r"-4 G A*\Ȱ!?9H1aĈ32xQǁ!~RȌR\$J*uo:a$ dShŸHESQ@o.eSʬNX'VZSװbv3mڙpMP]tƻ+7^ބ<0_rFoNj>&! ǡ}_d~WXX` !Hu脣M>jcb8=!,x)8@ G A*\ȰC#{HbE-j#F zd‘M숲J-] ͛7gɳN={НAL0^P) InnzjVv*ñc͞E{UmCm.kU\O*ěWoSE-9z8gbVLP(L/#4SfΎ5;,1?ҔQzɟM.Z.noMt˺֝P_>}Fh|} \.{Vhz u}㝗lڞw;읻 >ֹ3@wf֡~ & 6hz](`>ׅ@8%:hڴ;)|~u-bIq;ڄ݊;^ܨ3 e=C!,69A G A*\ȰÄ#{HE-j8cF z$đMJ- s̐5ms'Ζ>K J$ѣH*]ʴӧPJJիXR׭xYyۍUdǚݚ6-ةmRv.ݱvvͫ]zNES 6"U |$Ǵ]1秡G6:pO39Zβ*8?<>̻sf2_oWeN6ɭF:vRd=:ܝ n>|i zхӖ3kqwmWZn{i'^Thi^!T$xZЅCUI=Ct!,Q*0 G A*\pJ"DZF1~|2H%EJfֹJ Т(HP_>}a] 'lɛ+_yrp ?T,1lwkv5ع[Po1?wC%\;ρe޼@ڳr[y7]8mkNx+Oܝq5eUq|s WYtj^> Meva>=!,]#( G A*\Р} #J|PE)^ƈ~H%MTr_n0c8mn,iO;ItND|TʄM>TU^V~/*SVrbV)t_Źb,]ty/]~`a.vϱށ&klYpfw j㧍do7g.]`E`/?tTC$=pA@x8K .|fk瞝۝G8gw6t!%>-zk8[ice-Xp ]r,obt {zCy!,i  G A*Dhᾅ:lQĉ^F7KحȈ),M%ĉ.II~,q4!Ie@w|i';QTL ҡJ" Se9; iG, x;C(Wra+BTnBݬtfhXŌ"gP?msC6FL/?AS\Xr8mZ[8w{6yv8ЗSݱժѡ koзmn s~=VW}룧!,m H*\8p1d È̈Ō6N, @ /T(ʅO%̏dNҠ2rO~@s4zФKt@8)K/cŕ_wUN[ꚅX՝=~wI wӆW/}@W1c#OF e ;KFGymσCGN |Xc[z;~ЅﲶnזN,eݽ(*R'oH󚬮6ؓS3-wщO9\w%6)P_>葦'> !,l \Pn $Q"Ċ6Ԉq G~;nH H=#W x?:iGxˇ%P(Owuδ 5gȆ-_Zx evSj׌b>z6,´!,o)SƯ*00C |HQ +B"|;! . Н^޼McM\G[O5-:F@e̦A}Ҙ u#:VJoé^]VqDN[R֠p%H…/n\PEmMty3aɟ;t[hskȐ;ٹ쯸 ˧Ϡ>zg ~!(}:6:!,Q34ǯ*\Р=5H"?whG7zIcIDQI)WhIme͞:UiNA?BgPQI-bD(?GViӧH2JUbjJ/_Ʒ™M{$pa7; MjY}שā;Fr k;m6es|9~6kg꣇=ӯs[u䂓[unȓ+\{}سd}N>;9ݦuzۻ{\wc6<~^7W:ȩGX}m{wEEav `y! ^(tȡ ~آQ X vއ`zV}yy{7_Fgy BV]rMrY~ʅQaW_)y 7>fy8gB!,D#ǯ]>#È Nh1cƉ8^p G<8D8A6gjl%u֤gPϜ3'sדQI+#ZhPJ6ujd֩(>dхӖ勇;$ʥ?o.] Ų5ѯ_ ;eQ4V0:sNϝL~#:1BWCѢ1ĝ;LoG=B|·c7^Ե!,=HFǯ*\ȰCŋ"Ə /j1ɓ 5#K͇[m͟ 5#У)% @?H giOQjDn>Cj*}_]ks+Wh:֤۲ۨ7}uODN[>s6pH3ĸ?kXGqg3:tM x4΍5&kxXoSttm^ϲjc-|xBX;MO-^ߞvݵx'~!xՓϿ(h`됣 9N7F(a!909Ɠ߃3=RX߃wPh)P\z5=(bkCu#Fhq^7>OvCmRex\v%HhݘINxS~Y啷1%ChEYsR'Bh yc79Yf7XI2y"Ev$RF6چ: !,~2!ǯ]>È'R1p/vD8QȆ"GhHmU˚2lL*i3'ΑѹɯO %jNJJ6mzbRQX0V¡ -Smpùw5I>scط_3JmQ_c$60:̷;5(@CGИ;]Xn~:"O*~:Y!,x+G@7 6| )VD,($Au.IRF)Uy;ziB) %jџ.t!RS<ʐˋq̙#pim[9dHJ˒vK mP,ˠXO^F7-Fj .Zuw%/_S}oTcÎ!o>;oڣ)N0 !,q$ G@Gà 6| ):;-#H I[ I~1Uo"Ř ƒ:Y2Px\2)Tm/!RuG/~SPa8t#m8wB#`Kwx=Md͵ |`Ěڨ|IxwbW1?w %ʄ5L4ƍO=t gދpm kM!޵;MNu !,n G@7C :4E)wQĊ񋘑_E~Dj;})ѝ}1WtG>m29>HhohpFU[8wMdD6t`yf 4*ItՈCa-8T&XG#;Hu`W4|b~+!,ip Hp*xÅ FlŊ'#G 7~Thp ‘K$)Rʂ])sfȚ63ڼ)r'O&crL'9RfRO-2]'ƪAJ谫Ѧ[!,eGH0D-^ĈОǏ96 2ȃ%ADIʂ)]Tsf̔']޴'rn@x\7eHv#G1&P2}H՟QvЪգYRJlXc=[ZzמuKՠܰt9͚#V[W>e;UpР`@@ǸAw'WLs8ɔ9w3wcYjΘZ=!,k%.; G A*\Ȱ@JE{36DZGC"HH%K J-?̉5MޔN5RG}B=TҦ":hnXƣ(`㚐װ`ǒ*ڰ[{v\a+w/X~l޸\U+W[ƍ:ծTk4ʝ=M;wX tجi׾@ݸKuѴ1[ݭF#=vG6̳sΝu~k=azɗ?<|7}N8䓞6xWx~WwWchi`Ǖ;c"UHӝge=COv!,u55> G A*\ȰC9HbĈ3jwƏ ;bIH%S4ʂ-I<L57is%O'(ѣH*uӧN$j7rRRZkVMZXe͞v-۲nt.ݴaݒ-,9|5*ʴ'@YG>fyכ8+,b77P_>}JKh|I)t=/mn6}]]?^5꿩; :j!u;mGď/+/{?~>N~KN8Ӟ6 &^w#} ygSxN`o٧M8)!:)f^8eZ}Ѓ:!,F3: G A*\Ȱ!C9HqbĈ3fxQdž1~0$D(MDIReA#]QDm⬩rG>cv JѣH.׭xJsJ Vz@[B6W~eM[u-[nv,XnbZK|]S'ϖX1a~652">VjS_>}e.g@gKUvݓ_p[i>ܤu?Jf8;ȟ 9i$;zit85:w^~c5>ܣOؗm脣M>i`8xupiw;7[{):u6([~ikbQCakxy>=!,W33 G A*\Ȱ!C9HqbĈ3fxQdž1~0$D(MDIReA#]QDm⬩rG>cv JanH+\ҧ1SS uiV\~؄e͞Zmͳ[ƛyjXr+*ڼJo/pcoԗOŏ .X 6G6Z&?V.؜gu)p=~uݓhw#'o[ٜ3=ڢ/Xhto.;_]Ǯ}ŏo|Öut8thy;xсpٱƘjUvG6 {i_>NgizsQ>=!,e30 G A*\Ȱ!C9HqbĈ3fxQdž1~0$D(MDIReA#]QDm⬩rG>cv JanH+\ҧ1SS uiV\~؄e͞ZmWۭi\[5,oBkP_>}g*XwtYuVd*_R e}wZe{Bk\TLjeC̺4ewc{J~"Cmn8sR:۫]vmnXЅӖܽv^j\mvz!x'ZvgM|X6P8V>bfpt7aC:S\@!,s+* G A*\ȐJ"DZ#=bPdFMDyPDuI3ˏ0ٍ˜zhK"$记a_C~l(W/䩙WY߭( oWڝ]$'$ PӷMF7o׸A6&8p-.'N9r;c᪣P.|N[ʝ&{ aq 6gYpw~Xԇ;\tݦ=Cm!,{20 G A*\ȰB9HaĈ3VxQG1~90A$MDQ%xbʌҢJrdYI:wThfΠ:-(RKrtTfT":QkPBPU aU6!9Ui܂sMb^r4_‚"ic`86oU7;Ƚǟ~zZzx:aך6 Z}ijRyajw]V>=!,71 G A*\ȰÁ#>Hqbċ*j܈Ə;^IrH%S;iPeJFLYXN!EٓP&;$Z&҆6-HSiV2+խ~PlOD0ڥl{4ܬG U(ܕzrl)AQ"xBC<1+Lp`~'X1Jw#mDԩWvmuج,Zmѹ&FfDq7o.9=ڰG~jwN;jteWOŗOj~نN8䳞6cvb`xIl؁x"66[}jjz!k|eV>=!,7/ G A*\ȰÁ#>Hqbċ*j܈Ə;^IrH%S;iPeJ]yP&Hm~ĩ&˞$OqѣH*]j3^P1Hn6zjV v*c͞E{U-?mµU@Y^b.[]6lvXx_` (godmYi8]ױtיAmV0s'-Ʌ/M=-9|G\~x8tK}c$;氛K?}pdUoMvfy'cs꓏vЃ:h!," G A*\Ϡ} #&|PbD-.Oa>$[7!G24y2A%Y¼hУI~,oZthΜy&IDYlxIeP}.m*2ʤ./)˫*n;Y­Kku-Y'W[ߺ# װS#WP[˙ F7g;5lqPդ#Z"`[;.e5CN[>ڒsZtpjFaC_k3]s/sI7Vwچ;Λ8jЃ:!,  G A*Lhᾅ:tqx a8!9>r[ȑ74bA&MV40&f(΃< f7eD iReKGy@eS+iRU~qTW}0We+!whun\~z뎞`a=ܱ/ӆw,AǏ@N̅M:b -6bsv8Vj{܈uߵIOgl ]tXϵCtt=kˇ]!,Y G A\x ATH\DV"uw0nJD2$}&OiRJ12*kȪ!9݆ƌb@!,&0ǯ*Th| #JTt'jX"ƍ V 1cHthĊХƊiS"Θ2$ؓCz YTEw@)`Et&]JUQrk|Ht囪n8wdG*^צ#قF0bիpFWiM U!nS(>z\p]907Y}7=1uQ#Iq程67zs渫Sszܯ`|t'o7>iW_}OٯWn_S'dWr xX!YV ZaV!}"!Xcb!,o;Fǯ*\Ȱ!?{sHE@7Ǐ5nŌ4r4aF})#lI`F{RjX' &P9$X$Pz)%dFt򓺴ǫFkūXn%kFNmۅ(хӖu \LJ9!J|lLX߷S)Wֆʲc_@>oqJÉ]P`Y}С Nȑ[r=|:֯Ϯ}sӱn<<͟|A' { Hw"8B̓3SOx$ 9M7߁=ؐ8b9hQ7+N8s=-#e0thZݎ9dwBJŤPYUf4^x#IG8c IPYyP@!,W#.ǯ*h {r$pMF7;jWb]MjUjG-jբq=v-FMoFwSim*>z̸ɆPlmߦ{޾[^6޿#nn滗7.g.rއ$y3>;͵gP>!,F`qǯ*\ȰÇ ._ċ3j|t7IraG K\c8!Yʜcɲ=~/UITeGw"-tџ@%ش*ģ jԪWAu׳;sU+Wh];۸r?ϣ_e]8mj[`.qM]E5%fț;jprbX_8W!,Aǯ ._‡!Ą'VPb89#Ð%QȂ OL1Wi ĘO %ZώH-mZiDNuy]Vz&eGt@[^ g2k۬N d۵-.-W~m/6tjx;m*:lLM+{f q6mٶc\rmo !,6lǯ*\ȰÇ#._ċ3j܈,rI$FC\ɲp)EIG}0)ʬɳAVѧўS @ӫ#3jS`Ot'_תa>}p~UK#ȶj_m1\Yt_ -6"s/p9Rmhė 7(FUi(inR`i 1m4_ggýջS}mEG*^?= v~y˟^z퍾G_9~< 7 & 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)ezc%9뤸N7\ve#%99\=\ȝ^hʩuݨ!1nfxv'Fpa~6nCpuh~hDj76V꫱z*D:!ʺi7NzQvfw>:( j{JZ JypyݙiȦ_jy% !,, G@7C,l`D +Z#E u.F 먭IRfE*gּI^Am4c>T޾@w"$QAm$Z龤B.dH$?L]8mV[9dH@ZGL0ѥ`CӃ DQn+Q:Ǐsr|ZGP_>#LUI}0oۮv޲a7q&n|9!,)qG*\ȰÇn`ċ3jXp"ECyI\ɒ:~PlIfD}1?S}1I;}@YJw?j;*Iwiզկ+Fu>h#VO+ٮg]NlۭpE6I~'0LtO[pL ҊI֛Sbn{1EEN{ybHF]>Ɲ5;w+-oާ^]zHuKlUݪڻOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@w ZGd!)5%SJ]teU:ԥ}[f~cje~ebf}kF|o>g|sZ_ 鞞Nڞޗyzr2&AJ.I)iG&!,"@G X0aBt"tb8 )Bw!E~mCPR#~l;z2ic&:w1eiO9;hgP,x4_ī-.|Xjuj?YCv,DcgeI__SP[8~^/XwdL}G-=|sS$ӡQޫZ&֫MfZvlٴc!, ǯ \xtD/C 0D{,jНFzD$J #'pBt-ͬI N;SC^چϡB -Ugp6tXjTzh +Z)q'>p]~ܹ7shphӗL};ytb˖ f`@!, m#ǯ .K5tў;$NW">hG;cF#KeBz83io_KmĉӤ;}>hϤK- })]ipNӶTAaJVPg1;V;qѥwd8DWc/_[mZ0uo񾋏Ƙb~$׮gƠ?jK/F} i .f`'w3B"ԗO7?};3!,)  [mȰÇI93Ԧ ?/jɰ H In*Gt2ƙ4'´gΊ<{ 4CzC4ڐ޺.$=z~b*"ɮ^B4a©$#[~lڦy(W_ߴG J}}8ocw ߾ϠC՝=13z6nV-iO 6[_mۡq-[jz{w_/wG/=<0:piV[ym:35ᯛso}FW߾C'q7gYoz: 6O>fg!?S>=!,@& GA*\ȰÇA{3jܘȵɓI,eĕ+]|S̛ kɓ΋=q<&H&-:SS1}TiTuuɪG5ZHhtӇEv*ö Νͫ]U/ Nk8!X [c2ìy@*, ;{zGt N5^Ƕ;x֗LU{欹sk;[YO;ɯ+<:>OEg(N-P {=h`CX`D&G΄2|:c6,j;=CO{!,*)" G A*\PJ"DZ1F)~|Hu[r]}0cʜɏ˛ȅSM7uf3Pyhǥ15꾩,uWu)֕WR̯@G_ծm[VѯvϦ+SO/y޽T;/weƍ<jBj#k݁zsZ5k9wνvlڿ'|K흞¨̗;ϋ.|LmCd O-|/y}:6|P>Nm@>=!,0*" G A*\pᾇ#6H1aċu۸1cŏ#CqȏC>.Ny֪1 C : H]ܗ`)6D(a>Np$'aXcEv0!,2+% G A*\ȐJ"DZ#=bPdFMDyPD-]6an8s; s>r9v#Ǔ$CB]fҤ;dLU^mUW[VUk؅]vVaZEx)pjɝPeno۟IۇW[%1[tb˘ntG^Ame:P:Z;z e:ts^6] = -lmqv>Cc1 |:|V='?^{|M8zG:Εy{ xY8X>Co!,; G A*Thᾅ:[7%6$"nj ~mdD!ZҠ•WvkY%L4V 3˝ !n ɯQedJ0%?P@i}&W& Wd,w]S }d=Ы5뮰Wo 6[Lj3ٲC\1ЅOm_8m8ki-K|kܢj*ٷ3$յWwqyE?8dslz!,=h G A\/!B BŁ 9M#9vXbn( %ʕ,357*dØ;{)0C9b!9JFur*Qn !,>\ H*Ã64āUx"ō)r%:Lp%ː_yeH))떰fI);fL)%ƚlfLjN!,< \Ȱ=#$w!x-F\hn"8^7ʔ $޽u"82(dz'M~ v]HpE"I3(СANԘWioTm]['՛V.Ҫnr-;ݶm멍_lþ} JU7~ Y$mvG/~8qnhUIЅӖ6m)SlΔ'Cwc+덒6jL)DSjM׆N])T뜟;mQM.{ufO>J H:cv!1 NS^ȏZf!,4*!ǯ*\hwJ"R8ŌC*F(-+$J+ ːSu䂒[GpC3,:1^n KAmJ{2G*nR~X.ߺ}p3A^*>` K`d˞EanoK˯Xe@NM(Ti˗VpPXUZ֝MP#& waWcdt9 -ptevWs-\Fѕ/8;}^i8'?'SЃ:}XtzNa7͆s9=gM=&\Pf=E"qbAl=u#}\(Sczp6Lu$q$PO'dUv7 !,+A)G*\P;6H"Ç%Zȑ!: #vIp!5\9>Yʼ?Cwngϟ65'چe*ӆ#&uªV:ԢV]Um[t@鮵0pu8ʂ- 3Јt&ˏnuB[GPw.Tۙ5ub˞M!ơQJʹub'8^~8$ڹk=+^db&N|AjCtߒ &:0eV}h_ۣk08s\rZЃ=w~jU&uuMTUvۑ`uFU҈uC\U܊, UbG,q8fJ=13dIEt$JCdo$:M.)bts#*]\3g:6V&Av3& p"߄ gBG{v:]l^]*/er6DlejhYP@!,)Gx@ :,Ć]-&\ˈ6A'A\/\̄ЅӖOmX 5ąWs+ZEWY,Mwu} UeAwڢG6t~ 0p6oԗOM}ҳ\]w%t[0tр!,' GAsw! :4 +x V6+Ĕ$CKIo_I.rNw5Cҧ…Y\/\̄ЅӖOmX 5ŅWs+ZEWً֦Y>TpeAwڢ7wn^1l `6 ˷Ҧ>zѫ\]v#t[0tр!,% GAw! 6Dĉ]&%RseNmi}pf5]>Uٛh-nEV[W j3ʒBi/ں[ټIP_>7+JJxA,!,"G@7C :4EtV  Fy>FVto?3L+s`Li3cPw:ktPL MH/ū! @d8mF6+ҁ ÉoPwܗذ qXtkQл[u-|a U\0\LdžKZ|^&jpoT]0 !,G@7C :41Dx:8#}"1ѝ>TJ<>2ws+i.tg6*~D>H E(TmR .MH/ƍ#e_8mjM֌""EG]S5D{T,?n\L4u(bzڢ˗ܗ=峛fd>%/}ѥwaיž-'AخoM0 !, GAw!Awc Ĉ+#ŊuHO#D~:jCWI}) }1g6m2픸'PmB 鮧Ѡ--Z)ҖS񣗯fĈ. .|GiؑN-p"^ԥ5J\zկ]ev%$Ǹf٘;~[_BV6u郦O#L=ڠװI0Aڵa !, GAw;~1l0DA>;ۧQ:z# H~,]RD S[ˇ-$Ϧ6iּs'O")pj _UmX T'At`|j5M~N|5":MՖoct6NzZZ00`*UҀ!,:p Hp*xÅ FlŊ'#G 7~Thp ‘K$)Rʂ])sfȚ63ڼ)r'O&crL'9RfRO-2]'ƪAJ谫Ѧ[! ,uM2~ʔ 9k⚠Bcfk‰\8(ꢻ,):>d|Z3ڃ*wj҈׺k` m $%.cƺkmx#$+ hҪ,*Zh[;/\p-#l*3_'q}k-4+[o:=ǣcOy}5᡼FnҺ\Xkgps'@g;kC6NzvxGBbu>unsm8z {xj,βVmz;κyڣO{pgg˗^04:ܗo,ŏz/FuS]?SVp Pg- @|-0|g Rں`/N00!B2\ GhCЃ:\ajH( sX"PܠGD#F+"bGhEpb^Sr< #TEE IC Op<Ĕ[i]C56@*P$ iF]-DTBHc! O$xC0yX̕x ("J:$ =v1:,RK1%IL 0i)%qI:52IZfG=" &'E$sw@*'=2(FY4v#C $iOvR:u*ݢ-yԪz3לjSTrW5JUԫf*ZZյթn}kN*Wҵ+^׽β~$`7!sZc`Utsy)n-aQbzNB"RX)$Iʠe^MYS->|lX`]kq\Z;:Y0(6ֳ2Q#=EKv;dʪuM+o+[TeF򑑛/EԘ'])ƒ^MٶW /X;짴eek[ :BhkR4h J3$WM Fu`N}R+ U餪I,Fǎ? @FZN&JLm׾hkebvucSǿo3L %jYA%Yn e9Ώձh=ǰ~N"/<4'Eyˎ%IKҖ!ibܴda:Vml) :SmDKmŐ V,gYOimʤEveԲ1{Po{v1P]-iA1\NT  iG>jIRm*cڴvS ^}IVpv{ (h73VF6v@ywE?b'ewJ7qƩCAwSrklNEzAwm٩df%n2jێ癫/ǣ^v%fW\l+n1xR;/Ua#_S~&J2yp&nDՔ8'OB^%EN"w$=e, :pIe?ڀ}lMQXVI Fj:䃕^|S~&n6p1H f42\REId12UuQpmbY<'oxa1~`2VekT9m=:uEm'p2u1xp(x ^,g_2-~Wg4]7c ƒ@xGSAZuQvu2H"CJiwrO(='p9m^",xQPr>03Jt3[XP6rtbBh+UPxPCFt2gtu7|}vqhSs@xDVu}Jyt6'sB2e&e_7ZDžxԅj)wCv4OX|CK74qSe8v;ibry9}Ia܅:eYՍN&SǍHi({TwYԎhOX@{ay> 4YALUs ِ= 9ly0L5:ّ&"  9&y]T$z&D% V/Y{T3N6]QQ/بmrNB*j;R2+D)sL|N&Z'13l70)(~}n O3~%v~]l=;(;3#Myz#n :"f@A*ccףIңM:3J P)NP W=&Lu(b:dZcTfQ,Tmx\ETj(xGX٥SuK Cʣ:r@F*vڣ '{zQ?:ڔ:耨p#Bj@*$܇.qzcyﰩp5h\cMj2磈"*Z>+ѺأW+se32Hjp\TDs2 *$2/GRF'\SzqB°{l۱  ;$[&L*,۲.02;4[6{8:;)>@B;DKVHJL۲=۴PR;N{T{XATѵ^`b@˵c{hjbgöpr;m cxz|۷~;[{?и;[{۹C:;[{ /;˺.DKCt{'Nƻț{A>k}۸Q-ӫ؛뺰.P0 s>wڛ˼!oݪ4tҸw 껿&+[Nsj|["J;  "<ûLŦ0Wf.(2<4<'\zڠ0B&q*pZ\^` aq$clnp}iT-&zM' OljI->N<.)NJInF.AG.1 G^>VGBV>=^XBgNh-&r{rB.x.1&MXN<ل.釞1鱞ꧾ鸞~閞~篎ꜾBN볮^Ğm>nN蟎lht&1$1tt~.^qC@^ z. />   O1?_# 2a .6?BAO 0C <!, x\Ȱn $qnʔUbE7rT!"fhcJ$ <ٰx 6TRFG^K|L:p)StFung՟ҋΝ;J =}aC(ځ4Ӈ^(dQ]dTLe۬ +#vkΠI拸ͧL!eM({[ʹx.|I]oWgC0YcT:n~ڬK^u^M]vmy[m @Uς S`E{ / 䠅!,  H x)\H.%fP!{3Su ,$?eGr`7r[p J!ɕ2ϟm qgHR<=:yK4Ir{Z%?rH ko)Jwr纟ɂd6Z^%_he)[>UOZ^$; v+|dݹl7ixcCUeP۷(etYɘd!, HA\Ȑ 48E HpÆ&.y"ɂO@*?2<`Ҡǂ7(ҥː'l C'.DRz2L6[zvxUɚ)T 5?D֝ofx~)Xdɖi0%T w.}I.?<E&ԇp_C@:Fv#SxR+f[ed?_q 8@K nӕd[GЅ FVUohDSQ@tfQV!}vxkP]UM#C ސߍ!HE(#)F%r!XX[I8!{y-4N (Pg=`Ԓbd E% W]|u֏5' ZюQU-J})dq(L[-zZv "fkXXPG9H\ev㏓7VOgyݝDBrdTTZpEEjoGC;錜 عC%Y̎CtYU-6٬V7f_ njKP*J%Bh ]BgH]UѸ `}DNC3)MY@ٟF?uLtj=52Czi9n=XGd\t(or27a7J+:(w"-~iG[kSeT5ks:z3{[ѶS-GBE[RI+kuHNS(5F4\A]G0?Jķz0(F:ۍ7¦y>/ߚ:6T> HLhёg "H Z sƜdGH 10 QeQ-AJ\@ c*G > ~:AEr#P /'aa C]9QhH< 1ic_CG !Q)| 9BJwXPE<=ɏu㒘\@qHzR~9k@vĊ,gI?² zFU/ ɁIK .~,!9`yEZ:Sx%9I!Q$6՝~Xqpp*!^>h {b96)d&[,64э-P;ls:RYM+6#H,&96 TnZyϝLrx dpGWAzxf4G+g>W;qc)iTٍlS)y|?2p\Z!7c^@8ݱnMO%w\ _5Cwx~w5J7Y%~zV~ ~({+i6m7Pd xuZmW7yg*Kz߇hݖkpxЁa-Օk!Xsv*q)JIw]zڷ}u%4W]Wwwu#^QsPw]ؕK6w<&Wy9XXH$6kn6n]mtjx/tNw7&ugfVyy 7;8k |uUXBp^4p3V]pXXx'p'uwx824yDRw<胓(uׇ~焲GCofGpfƋnj489kvXSH(z؍C&v2Xw4Ggpxhy:;hwG'hA(u;h2?#8v(w x|y8p4pv3ٔDH828phWZ9$X(u\m玀Q)z1h.hf}׎4XwXqȌ,)1p@7xD7X@|Wy"3';okgYPXwuuؓY h=6}wIm9YYYד9y] g7ٝSo9mHY]6ҌR9Yti)Hyvwˉm9 ʖvcDGy]YgعxA8m}!Iw),j<Ɩ_Yחsp$i?i1xG&zUעF3f&z3XȓiJk̨7zYyw` Ro>Ϩ yX`y97:`~ aZNW-鋘 xg6y=93Wܹ`zcȖx֌ 㓥Q7z!A_ח[;шZ:r[jJ]hj`ywZwM**4pwꉨy ٗ}y蒀YjZ*ʎ94?Yj p)I?jkʕ TAG9+ʭY0 A UJ1k * k9w3(x)AʡIXBeڵȱ):lʬ:rYK뺨3٬j\ɯʴ"*VKWq[֪ kʯ@yru pZUs[e:Zyɡ  ˱if.˫슠)kt/{1kI9{jwۼi(V:ɾ{ : j)9@ڥ뜦 Y]YxwZtܝ ƻ?* "zgj #,ୌ" \AN Qp6' >ܗ>[7X0Usjg|d\fL[ƛ`1a)\|ie:Ɓz{̸(2\ũ<)|oj_ غkpX{b" ǁNʬwLɅ k˷؛7'PŜh˯ :K2))yPȀٛ<9|Rs'{ZϨKMLQjll=Zɔn:N,!6>l'mZ#̧< (0ű{ԦF ¼kڜ69,4 9 ًT @C+pal9-ʍԀ S!>-,v-x)-](L4 Aq 'ɃLi\o1]M} ږ]9ت=}SL< k}y$}ɧ L 7MAѢͬ1=,-{UM͍)a Y|! Q5Hʿ=θya֤ύͬX.l Nkž7!.n]]X])X_ԝܐlͰM䧘^;nMh-(!ݧ '"^٠,,V~޽ [~epY֤ >Č͞su^.~l؂7~o 6!>8ͽ}%PэHM룝m^pL}~mžŊvսv ߠ 1n~8 @NI ̻^v;ًmܴA}-l"-5}Qp7 }= o^ôνM>~'#o9˙>I}k݃|d4lߏ=t o?މdl (r "OLр˾퉝'ЏxM⠪A>S܀1_,}A!8 <0 E5nG!E$YI)Udrd0OH8C qpE\D1# ""EzѨş43DO3!~WaŎ%[YiՊ@qWXsJ0h# mt/LC3U ֜Xacȑ%O\l6zJܛY-6}wjRӧGaU>=lWǖuoF|P"ժ< z0ƿF+=@)#9b!'_yg/,Xh kòJ+&(=Tp+kH!"//GC!+ !  &tEcLRl' z!L3:@4PqJ ,rJ*=Φf*@N *<r5ń|ItM8]@Ķ*쑾8O4L\ rsQFJ%DH2H@TP9"!J? !"@GcuVfBTN5Va7"6a~J V5T\$QaX RU/; EHmbEѦWcˇh5)Hu0KXU#JzZO{y\7?fp{,vt<]O!d8Em5D`+g3Mܤ\XVN/|Eŏ_'ytJ]`F$7)RDMy#d,NҊU\#:#)Ae? 0["N|3ʔ3 Q" %b#)Xy3~Ӣ&)8YO5&XbI}*| 1%1f)q7)&S*`zUGD`𧝊bd*)/)PmXeӓgv\D1ȼXtՁQv/gDvVNi3IS;GaXOQ*Z*8hbMtmd8Gv䲲HEbwZ"HwuAvbګXEr2y=+1dqts nwD ,R[>bm1`EA{,\XUVs9ۍdv^QZvf+յ{,T%U=Uv}n0He-X/Q]n_*PPL`?灋l2wbHwnZLǦ Z* 6NHcpNpyuǫ@׫WsY!KNkE|bj0g(:9pL_aYzhC_ >cJpo_iTŝLޚC$@@fZڨ|VddKT;,qg6ӀV*>wPk`Fewۦ [+Q-k#>d6Fhݒ yjvE?{n["!A K-p"3Fsag^kqm0wGBSG Nj_Ba%Ef!v2;x;\PXF6ޑ>8]3|CG؈!)J 3Wa1>m]{V@>*`Et_c>jr,rLP( uv'{)uI9>=~Ǹ}0y{qgM-5k&G;#V8o& ~aޢQ{l[?Xo=nyA磆5m$ b0hߛW>ljyM/y #u hv(`;s  t:c=> t;X۾[8 "p[5˼=wc^9K{9[A&@@y9 <5ߣ=|4j<иs 4?`'5B p,d{ B!1LʋAX/5t;BB,Íxh@DGCCsB"64s'D1CüT@YEZE[ImYwED~FaL]FZ `[|FhFiƕ8.BԬtšs \@}bilYKZtyf<CcCJELͭs;:sxȴd͎̈DŌXLG΂KLŌA MP˺H'@kJF /|Lʔ8+?TCx T>6lȹ O8`ӒMP-P͌ PP~`5 qxP8MȔPP Pj41K[ϼܿO8E-+L{PPQ=PQQ ʴS|°KZ+_M!&T$QH1tKkP?C\O?c $8eX[| T>H!-@1`b_ W+\=Tht1!@%F%fYb)')& '((b!I0~bU$І4&b cAÌ8$hώ``-d؝S:F_OU){dQIQ0 HdM-MOMO0R.!>eTbQhI9Qe7O?kXNVN!x6*dd8s\%GE%N]fHneIfoeUvofrHUaLd)ygzg{gz&||gghXsneeEDd a&ۑTc;!N{dmgRVuFgMvUeLiod1>zMj>jNjZH]U.xET}%[~`وnQ _EԿTT#1S .Vt~iqpngR琐nl~6hQ断?<>ѽ@f?h. Y=kE,tlefnkW.gkoolq&V&xvPg~n~e]~ٌ$UNED^(m k] [~w}V^v]m<Մ~kf雞kαkL6I2Vti[eINƖn n0'kýaoQYEf^nhj&Kv&rlNio~1dk^r)Ggof lvn/s37jZCv[h]W]=f8hϽs~YەZԨq{km6"NߞGfIrfiKftJGi'tQ.?lj>3_uVg@鄅kΖsZj@\_]7uV(c5̶N0ftMvFW0NXH/i)o&rkjOjwt+grr owzw{{sz߈yŌwxx/x?x7xXfKu`%\mϭ~h+Lqno\m__t'F_wpyLt%'{\OH`YBhY^xoٵޟێnKEgFykNXqhuyp/wo_>lyneq*HFنLylX}pwqp-{UAo_BW}z/tY}gm*o*e؏pjK&rn}vqqdQ;{msE@M[߇&k|/Eo]wm?+%տl_W[g嵗6wqm؏G@bcAa FHP#q#Ȑ"G,i$ʔ*W,y#ƃWI& 93ϟJ G$Fd$REDU$= +N8oEXSٙ1^(`ͷ@}1&[4i%^ hpݽ8ڭHqY ; 83ТGL#akQgןCdK9JoOڎzTm$Z[WU3\v?߹ B{n-O|fo7xz·n323U{nh ]zKۜwaMSlop[bĚgzg6'[)OͼmL+ 1:w;ϊS+[O:2&t ? h@*p @Fp <`+X FpaVǼMJBJx,#3pxCV&Y/}sŭ$>p@AW*&ϙ+edKؓ5asf8-3aG8uI(&Psߘyp$8Jc OHLD J~X (4X2ƥ| Q(!gQ(wKboX\V8KPR)\ŪJ_=(LDl[_'17YZhȏ\h'=*oTe,I*YNa-Scj|l]d,2"QrALgTƀUQ_bl$EʪmըIIU6uA)먴Ԧ0C*[ 7rƍaQբS [v( Q-9!+LEѐT LС-a(5[!6B~PEZ*5z@[!ʶb ZH q; ?m}Z*6rs+f-k%X10P[u ^ҷ1( ڋބMA[^8y"x"ݯ痾 Nc B -mhTLU!\6A8a aL2;Q8X'-0mi+@#.o\+yZ@~2hGX+[沓cvOA[%5#R jP9^7&hy@^uFDK?'d铞 g9͎\8Am 4t=^C)XqgKYaX;2cxk,? L}r{Zъvˬ2tL(֕Ҭs {# .SOee(&u-j!k^3=lDH6}L& H!96Uֱ5 \=Xg^"#gmg$ɜWn%ɡLXc5zI$?* $Lv I#=e `WQ?&":eڮ }#XevcRf !K>fbQa&"Ye@.Ť[kfQZZZ~[2%a]Xf=f"fjZ%dqckW%i*jsf[ kbg֤letAP\cVr%D!y ZyP&ODfάgPžQ'֡yy֡fg!΍9q&v֣L~?bl!TVxN(Fggg䄾\5tJ(ZƤ#U'g'T^_?'i(Shl!gdRo!Q`%Qd|'dXfzDbMM^Nfb⨓%"(i:iL&efY"(e)eBg錆)Ud2雎Q%g)| dMT!j AgEli1e܃>(=({N9i{R&jƨN (F.z'arDdڡe^je(hhBgjݨgripJyj"LZ+«g%e*ofi6逦х`kg*' ,f%i -&NTak~cQ^q+6+x`,hh>h^F~*~~++뻢zjV)bhYz븺N%z+)^V,ׂm2-fbk&%5,~P,aeieUf8G@` (P,c KUfnQoa5fF*"+z& ,B`hrܚc᥂:f^]e&./R.ΨhmђzmQR)nnE-PҘPB'-69ҫ=oh끖i$~*/o0&B fpmc.i&{^RV0쬩 /z)>lRSfZnfn ?R k:~n-.ߡim֯b"f1kq3mmi,Nb֯>kPq{Ư"סo2#o7b&rr/8f{1/Z}-g#G3nGqBb&-?猑Aiα&Or2-Θn1{& a&"*oפ߂!5S*1B-)G.*1,n 02Go2*K5oY{ZNrJg.c3ֳǯ[n>3/,s3UK?2ƯSQ4mrogs07oSr>?K.W$4e)97t(,s/?5o !!"R`!^1q)r%$3{z5sBT{v*pkvuZoQ*cOKRoQfv<+t@2eG<'b3Fi.ò%;1"}5*&r,?/wqt2w߳b2^O13c2D+.]q Ⱦ/ rq8S5ZrVw:ɖ1)5g!kzr2;}$Gn;p>PKJߦstW5[ qsZ4"_c5(GO{sߎqur'.8w;hS/v?8eϦkj?_7 Ue3[z~9eObGpIcg77grC#x33f)B# ;u3;wv/8`Ctq73D~vv_ju4x4O37M3d/gg3kr Oo9snAGw=1ev\s9cIsĝ'I>{ܸo?rs/4SD= U3s65zW01߆xN3{fg_{ -qOkyzd9+fGnx|/[2Sv[vD/6S7||8icsD[yXǻ;A:9G33Il%kzf_w/rK6ya糍q^Io2([1&GxKg*2 94(wO1:4b!o46\F.;Gh2ˍxC/-C?AgcAl?aP?/?C>S~챿?G~?'X3ĉA~X$TEA5t2B/f2?\_* 2x QÒ#G O+*$ŊV(\4bTSVzkUL=]ʏ T` $y`a<9ڃ$7J]l˂$vސw~ ׭&Q5y(Z6e[0ɞ aʽ*rۅe1E;PF,4U4.jdnƔNfdĄm+Ԧ\g|x`[oQMkFyshi.58?{O1bS%Fk饸62l9 cVb,LL'"$Mj[jz#58aqzΒK6>Siʴ`w`&#v -~{&)f/st'|ݐ-YlS[49[m=6_v\#ݐ +s /_6Κ#/ꪥZ =ef{-ٓrY6TN >qvi7Au:>ϻ.}oFB}VZnl;Hǟ? ]v#8SǏyDʴؠHV8"=@MX8aWP:,Q6H']x8fA@F!֧⒁YtEvQfڼ6r9%E'"m٥Sڈ&:p䎈Q y`Ig!, 1# H)ԇÇJÉZHA!(1$|(-gJ/[ 3L47idO?9zS΍"<:3FtP+K*S@ C_Z06r{RX(IGa]jMT{t*} ߃C`o_bfL0rV鳬2rN̹!Mw# Ǭ.4Os*'^Q~O^:u~zt㵅p}}PS<@8w5PocV>i6)n De Ut9aA 4Rp$߈$Oo^ű@pcUW7?$@#Hvq!!, GP*\nÇ#JHŋ/ƳoYF>Iɓ%†.cʜI$܁Rϟ@krH*]@8;Ǵի2k [zҰKv"{puǗܿ^}+^r;z"k_Ƙ3[]}[LCΏ#Kxצ94?mޭY|7:}L -ڞ#nuʹv{;Uy;ū_/vRgO{CM_R坹3P߁A? z"(aMThP}7v ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰b*무j뭸뮼+k&6F+Vkfv+k̝œC+uҋ Rf+RO@!, wKȐ5< v&TfhNٳ7@l#pe׍NjCGo$IӗΞ>ugo_ѣ>[J>mFyFSX&*Xev,?me][6_LJ& 3|j N/_qEUɇo ,,CrfFN<դWwX-;c~rQZ|37€!,P֎ pnY‡[lDdŃŋ7R:z=D>\”8uY޾}rA~M)O"u'ӪR*J+ӬH" pۘ [zn3.˸ھmnƶi.զMm3-oS/^ݼnYNͭ!A,;.C~2|@De)ȯE~NyX; g= gq˗cGSM9O@tћJGUџ-ǔ>GTi3+Vt]іml>-c3:ն7jZݩW1YFdK/jDmV [QEۙ+at$[LK`>w6@}vn!,G(;C~k pU,(P_٫}鰤;}(1g,޾}\i$@IШ;Ij{$҂R3i`/R-]8mj[)=t[eKoߒnڷP_jzѮP*_T_>? ϤN.!, G ^‡E'^(16F#Ő)>*<#C}/5tJݹ|OL~k' (CzjMW(4꾩19:VtzlVgJ5-? Mo_ok8tq4l-Ut٥ǹ3ɀ*سiӅEO\[/oU<Ѻ:10 巛jߟ jN z4ݐ޾ڄ;,U>)O?m-ԉUɖP]&]nNHK/D~ api˗Uem}RV~5 |xYhy"Ab˞MoͼHɻJeV^\Ʃț;9  ^'!, HA\Ȑ‚n"kz԰F9\,·67ძ=F'۲b{>hQ}rE 7'KnE̔tX^BM^룍 %\:dqʔI~&@r @ [^:&iJS!B9%D <%KmEOφ:yV"I**[[0>QCGJ҆|2!7Wb>4Hf^ ?,N):!2m[VФ(C#N$={ p.րSE Qr ղZ2V+):YBmT*X]Sv2'*ft90eQRyLXëb}~h<7ؗ 0Y@" գIKZVu%RH `&PJP -n !3qZ27) $vkoeʋ 7)߳*{5}ifc^Snlstl0# x{TJk,e/x1KH2ԍ~![.wyzȷM.>RF+懗#>g ve/7X5=nu0[JWg:5+;2[+ lo}8jګL@,Kp{dv]QDM9[jҕVR녠ӝ^fʙn_[3-/L48;Mr6[^}7qB =?/y];zNз)pRscG"~uAs1?yܵunׯ ƕ}p>@c ;ZS:{ϴW?_ۙ퓗zۋw&Yo~8w5~Nw$p.\ \{_H#g{Yע Qɜ撖7::*2!`8 JDމT2ꤽ@ڕa|=#z~yIU(IYyrIp)6=Z|#ZwX[|*g ImJ'%j!qz'ه6SQ }4:q:qsꨌY,Wʜ*IJʫ')j)w['W* QnZأ>:C F:Vhs2@'J7 :$J銝"فڮPbo( q$ ʫ cj }wj '=Ě$ gT]|ʲ<D+7ʥښ=;e.vtSRJJ 4T[&yO*[۵z^kʲyMz酶=v}xn] )7;) <֖1}vzzJ#Xʲ%mi+!{T2*Zׁb [ +ۯ!+Yڴ pëOJի. +I˵17! 1)ۧk j+۴\+)YZ@0Bj{Nk덺ڱڸ<+'?|Jv%^˨J;'I˲9˾O\^پ*k۬A۸[Z#;euw ytgFL^ș^'[³$P˻[K_i[LOi K滿.|~kX5u\ZKBܸN,=a|\!KNjK:7kYˁɟJO٪ڶX'|l:M72˛l$'@${~ze2J}z@m*A!A((@爎@zцNKߍ}~狾UM*Ɛ>Np^ڥOzz)v~YnHp$^鐲뉭ضƿ~^Np9_z m.II>tpI->>ߩ2Z Lgo鐮tn-=v% *:J}^V茞+pJ~m)~H9Ķy~7})%'yn /TV]%jc(d/)PJ{^^%_u~_o{*PD^(PߴN{~ȿJU<^տ7>enoߏH}$P@D ~(%\pC%N"U`H- e̙5o̓dI2zc‚ Z9!_^ǯ'oю't~f-fZx^qH$('_y>v|nJQk׳i[d} /= 4@>;+cN+6B:N' _@H-$AK4D(+iA#rm;nⰡ s,EL E"4ȉL N/w+pM($sT4J[;ۤѯ*uBK$AϐTDL@43N* $N~苮%gqnΩ6#IZiPPC' T/JHc9Ӕ<CW`u)%CO#z!V٢IG:a+,!JX+=$^v\r%PD?UbdH GK](_`#]trXL=!ջm0zZ!Jԩ)K\ݭׁCȂu)GٞGfd*^g cۈNPI}4UxAՃ࠻7NA$pR)JVQ~Mk ^/{9K'R!"iR؄dst|BԨ2*Fpk#/xssWOm:]gtbi ^A#{6Ywꫯ B e1[{6qietj/uv_"LV55ܰVc+mTO [:(9E?B r$ \)=r$frD0kd#tnI&\I%Q&,f7E~ht!ȨAӄӒIns*`<2̛N"qFYLh.$:PN!e@]qJl#gG8e-2Ѹӂ4٠!)JxТzIUrG Mov2}DRu;#A4uz 7E! ^9aӳTFxGe09-yC.Gf>!"Yq2Lg9sg@'e:N$2A'g1Tn W-A*"$mON% iDSJ//M 궔(p։Y2gQ'r8O YծupT 't& /l%jSn8;b`%8qG`.a[؛\|=+ Ug+Wm'A0m H:)i=e>ѝn.nAų'fUFZ ' O8MxpGz<NQBx}s]cs~7 2;N ԭ~uC3ny]2Y?ڃyG-^?pmM0ym%RKdJՁϼZr[ϛyz%gB L_>>W $9>Kh6]2'$Չ4 +'rO9)mѹҧt#5\AlA|AAAAA|AH%D,R4. T %P% /w%KD@A-B.B/B0A )ùX!@( CZ ;([b>jK0C?C@ D1 2< ߫j'R $PB @Ft[ k;>9@3ODP EQER,ESE\ą$쿈ȶHD'>*@ZړWBlƛh?f0c.q-!lHD%3'c;'gLGțI4̺6_ @6DPG X" ($F{tBHT*JEK|5[H=B EuF$#* %_4L4 M<)q $6~EI|C`“THq>r%Jpm@/E,¤$*| CKɂǥ||\ml\ ICISȅPgr2 $Fuɲ"4"#)RyLʀtḺL LLL ̔(M V@$ B=TvF? F~(]<>^B,2Ƭ\NlN|NNNNN<˅N|*"?Y.K~ʉͰ0t4c2%),MNOO pP-P=P-PTPHP}PP }謀 ý" q4HԶ|(˄˿ʄb9tʳDQQO ѵ}Q"-R#=R$2\˂ͰJ&,I˝0& s@9ANHbMS5]SMRuS:S;S,P߫Jb$i% QlOLQ K,Jc,@=)S״L6TKTSxJ9];TP UmNlM )2=8qB$CI h$ʞ,]E%Q1^'ML-VcP79Ug}OeN, <*쪺N',efaZdy~[hiamli=VzyaefGu9=gJD%͵Ȃʙ_g iZ=9 N\Zo'fjrgGg!=|ɬ~%jji(`8O6g& V9COvBz돴ֽ=U=./Xʨ~AK 1&vXWJ,݆lonȶ^Ƨe&^q/~S(HԞs5\MϷNgsȹΚ枬s\1j} 1ln,u^a aJnmXo gr}\A+wpr͖)vUھmo̾^s9s:Os.ϛG!=鄅n5 9D靬i !JW'v)r^s4tQQLos(UG=u :uZu[sY/vGm!Ecr_I]r&Trf0 k>os/zZ\ukrMoTiXWtmm'wnd+8dfn_[_w$`N{M'w$onK#Ξg%!i+Pke_ f 'p\U%聙o!y!9Ɣ7r?7sg|?7k>z򘏁Oy=ymlz~zzzzU/t/xt^bB J`…7>!cF !H$)d˂4hG+_x`ė K.[IE2߿a%CP Ȑ#S|_ʚ7srcΐCaza%7y6CN1aII_† oe(oϗ?N# ?D@QzN+kӣ˞^wӯɶ>~O_6DXU=vcKAYf}v!نYheDk`f\kBԆAGqr(F J刑qgdqEDP4mD&1TTrEwN'@UU&{5n&~T'bNU]&8ms-WaF`5jBfVThajφ5i VĂ1"P  Ѹ"pVR`EX#P"Ǣ"HE~qyޠіQyQC&J9Def$Иysє-qnD4nsIEh&?V*?N4h!Ffj1gJ@ f@a*lV%ڋDܳ=TFQJ6<,m.\s@x`.(j^Im!ěM(X#vˆm^FcTۄo]xgK`WT[7r}H-p`"!,*ȓj1Ǖo:e j~9ab.F)Cࢥl :2Я'*l (_\<+|t⮲͋B ;G*B3һ/;Ao+Ѩad9I*3BfV [HMd.ŏ%LTL .sh@d8A0BG (L{Sa FQd1WEx=Da E (6BE@a ޭd^"' +!x?%& *, qZ+C9ұ v@)ALjΘAՔQ "E*pX%+|d !4¤ #EI 0BL Ys5$Lb#SIV搓̤!G0J:RUL5l `"#G"Tfvg Hia#R9 ,yq"1 SCAڒ! JM&2$#0xl'+gKC `9JK̛kʚJ3A9u4C(ݩ&A ;iɩF53HA= &NH33l¤,M򣥍hBȕRD&Kyԕäj:JpjUq<7S)+Nj4ƛ$$Zjg8HUPc^;RтoU6jW8U?´qͤ O7#r625 Y3G UQ,2GH.dJS3ui2Z8Za]H9WGMݨqV9,p{B/o*t1[65/>- 2uĩ ق8Z%bZJ!U{ gl(MLs{;[ۺtny:ba5m0g a GՂօ`/] ף ,nX b Cih=c َh)q]/ X&F\2R5sIG/h,)T7Us> !2y-*#mb4AHUPf%_ZaȖ*եA}<@*a q,*Tpu@;±BPQysJ07ǽrC$*/lH!/55FYAy 1z˞)GiCW0Kvy D `gȯNeM^Y6ೝ ޖ6ս|䎗f6 ri;_tn޶M{wȆ}ۧ y}fNŵݮ5a ݥ^fY .]bj_z_ϝ5 % bʩߡyL{YaQa z,\yeQa6)W YzM]ŝ 19bb ^M!`걜#I_ "9[!ZYz{c{ ,z]b]ahFa{QYXٚשf> Y:٨H>)$jQ`e߾`\{RaX 1BYGV HVM[ ]$O~>QM/WU0O%>Z`X>%fFMh Y3beԢNbܤdmAF]Z!\\"M@bIG/neM IM[IfTM)f=e*$Q\%#Hbi%VU[P-ד]%]*QQXjRQSRaLD.Yuꛦ^]f؛AQ4C}v@~JD'Ag~FFV~'?a~:rF J.'.FLNЄ>9l(>hN(d$h(hde (z]B(iƃJMed*f 'h hh'bjhb(&hF>~*A^F}'ݧܧ|6`}V4aA}}.(ehhRhbh~N9h)>ivibh'(~)jz(Q皚☒hD:6ꊖ醚(*>*ժNƖ z*>荾Ƒj8Nc'4Ω,BӶg*`*~nhkeaA¨"+"떎jRh(bN*B+Z~ުjöfiĔh4,"k ~,*QRBk骒)"BfnbbA*ZF~:kfͶҬN졢ªNFV(^"k^mFzjn.kZj.쉪)ꨓhf,Qj.i*^.l4-(i}2-}mdkfaj~Bӵ++4jbA:-(oꩶ+Ji^6↑kbl2/}*.̮nӖ㒬6/./oﺯdx/hnۮkjkjk랯j:^"'~n6-p.0ΫJ0Orƶfƹ.i.`Z&}+-B-(ob/ɪpo/ . 0 ;/R0V+~s&1"+#/*+bo*O_q~(vo"oڰWoge0ҧ +'A ӧ%wF(p'-*[4k)& g|/ +*. po(% 2 [pG,2 !1%1k k)˲),78wZf G3es +s+}Ƨ'מ.+(>r33:s?23{k)2?'0Bt3'38Wfs?*_32s226Ѫ-?s@;?o4rfs@t1rp046kHtt>g@gHugPgl]PTSVs5EgXuYgzVWcSsZkY5?uU%[5Iu^kW3䅬4'uSdY5+_g a5]-F6Yۭ_sH5]?6rebseo\Sudh^5}vhtMPa֙ضeG5gu5j3i6 no6b6[s]\5g5rGTggf6w'Q7q[vWwkfuӴ/7v]?qۭU7weW3ƴebg+wwysLmmnroF{7`Wvuwav}*85oxK7[wy{8+x[xsxe5tt8Wxjun/yd߷Z7viw8=WNb6y|9vyYg]5;xTw㸕Y_yϹ8?iK|9Wo̽bkyx۸g9s8]vZȁҹW5yuCTk8e7Gx7~9ggp/]:}﹑+zu_gyo?:xuvS+gkz]/j5zsۺ 7y7wk[{yV8c'F:\{9_7h{8zj{{ z3j3k{y+6oxxh!,~u*\ȰÇIHŋ3jȱǏ Cn)Sͤ˗0#I!͛8s%ʃ,c  QѣH^|:)n#J*?V*jHt`?}YqmխVg:tx˞](P߅m^ G!̋We2k̹Ϡ? Mti̙|V͙(弗c/4MisFͺsow_Oj+qqγp/q˳fB37^X/_z({k=>;̯zeٷhfÕvgt 'XndU\ xNOaL"\eBc8<@)Di:X#LOPF)B*Xf\:iK])d2%endl.Yki 9鐝k | ;ڣFJ c饘f馜v駠*ꨤj꩜R꫰**4뭸뮣֚+찦&l*2l엱9mvn+jj˪JնdzroKʫÑj|"l–), GpR,TY-Y} i[YrL T* -Vy̲-2̲ɼ.|ʿ=4\bjmJtWRW}f-GM5^-kLkBst =j wr2M/el4y,GsM9㝰85s \ᢣMzWlzHK7묏zƳ~pO|z?o2o5ԏlg/}۫- _`﷿1l/?wϽs2r[ 9Z8{ЀJ8 v}s`6Y`DAQvXBv-jok Bu vȻ b0U~!OX;D)7 MjI*qe_t]sCOa,C,jz\?};8mmu{c4BnlGCΑ h>JJ|_&/HK ѵP"C)SrR= Ѳ~^)=^t(90Y0$2gdҗ[3ȇq7)mм#KHBul&YG[!;g8u"c7"Js9\#m8'>Q9d=iGl:^gz)v4wB0";=Fk"]8MЋ6[LgO0.Vd-#+YL&0(*b`NyDE2Ù=,,p֕L:vvγ=Ϡ+m9t64fE3dv4',ISò47}>sӝ'Gj"Է4W:Q4g`Sֵ3w@,a^5}e3{~-MSڗ6'm?^4}q{>qnPWݤ~7 [@o Mp{8#|p35Ns8?*0GwTð0gN_r@u.?Hy;k:Dt?XϺwBa!)/_s?gu/&!To Nw%ݞt[a 0+Ɵ3]=Az_>7ok}Yr}[w=_ '^◞o>_8# q ֯/S?G_ | g~/~rw}7ׇ WX}|x ~0‚+Hx~3( 86x8(>9)X@GHȃxEFxN؃7/؃ThIxE24^xdfae0xeȄShTz-xz(K(Lwuyhx$؉x3hs(A$Њ3H8؊H/A芪##~'pXXx_(뇌($8hXT؊ĘX舎/阎ĈXH8x؎)Y ) 88 yIɑ)ؑH0PY% (ɏ-y'58/8Ix X8=hɔ%VxBh=)`91Њ**1*'q$ؖSIiI1P{}ɖnYx}`'t)nijYt9ygqy9isٗmk ~u9٨9xɖIɛYmY雩řI̙YЙͩ ęiȹiyԩ0Y)Y)ֹ99Թ9ɟ )IyYYJЗY퉡թʡ$IZ*iBP01*1`6ʣ ;:*}i6AZHڤ$>01z1>9SZ<Х}>Sʣ>Giֹ0S*e}I.ZSjhZtj5*k1W*]ju*:eڥBZq f 8JrJi:ڪکZ *81Z0*~Zʭ: Ǻ`ڦW ͪ* Z:~J] C[{ʭm3Jz#B0%Z<0q&KJZsʭꪦJ=˪`:1+ߚJʪ7[C`䊭8Z˪;jz$z1 KZZ,Kdl+3K21&˪ O!Dmr t+`k%K ʪO[pq{f'kO۴ ˲ JCUi,[; q Q Ẳi[i K6?pŻ?p?ɫЋkk ϻI{{k㋽ ܛ K=@ J=P&ѿ J|!,xf H*䷮v[`ċʺ%#ƉzȏȑO~QJ./9Ņ2Y)$́R &p!85ztcILv,hU!,v \p=#$wx-F\p]7e - B>Fn]x #٭"?r$dz'ƙ øў݀ĩLgGUyӨG<rQz3q+է= D7B!TےTe6_Y!;Ve:j@m;yGc siH.l:񳔤=jY5ɦ-b;!,t   H_u\n#B$w‡H_ĎɒU\8|'cˇq%rܹcAr^3۹p(ĕ@@4$ !Jj*ό#'@\L}d^E;;GVUuuE4>.e:7`nCb;)M;ziKhs6{6UڔڛM8Q}-_ڴ)̏kt-6?'ꦗoرͻn,p~F>\sĹ;1:~gwN@tc~ׇ|)#]bA49ه{? 璀 ]83TڐNi=f-NA=4XU٨8 =#AW!,f ( H)$Çusح!ċM$OǏE9wOEѣȗ0$f>%ڃ٭[Ϝ P ; dCw{JTNĚuÖR=r%(RWaW\ڝj2)9fkNb|䦉/ks:p3g LokmI{e#s>أ GPO־IֺwyŦ~=9Aou聯/{x-nCN[>?tS} %RzfDq |:gD$'Tj7q8u ABb{Z(r$%@c>w= ͶNIb6 xtIhc&!,_ / H)\Ç #J|HĂ+j"Í?Ta Ohʊ(KƤ]K*_6TYOwS=Q :gQ<{:4S{EԚ*}VbhWY64Y2ӧ۱OM)7m]m8:?[ XM K(:wfצϠYޔĚ7wZgLY3gǬC.) @˗4hܯ_<7piX֨t[{^|:gtlݐA;|~ٵoy:=pƏ]W3=VvIfiH@ȡ! ,^ǯp7Cwk Ă V1\Č!("ByB}*4Y"}V2Xs!=ijcXOJr41%ԡH/_ăvDN[>#D5CdгFV{#•Uީs'4e,SAw.o|0 !,^&0G*p‡6d"ĉ-j41F=~Rȅ%Dr%˖.ڛi͛1eI3g6y)(Ѣ<"řŝInӡ)ʵ9WJ׊W-ۭjD=!,j#FA G A*\ȰÇ Jŋ'NȱcF=2ȓ\ɒ%ʗ[\ &Ù3mDSΝ=[PEiTRMG>?ZŪ*?\kn֯gˊLKVmǶm^W.DWֵ_|+)^a -܍yJ<ٲ[̙sX-hG6-ԜWgƛ6mOPb}+PnN99唛;ghسkV_>}3p/!#D>?jc8dH~Z;H;V_:,r6E׹M8$:\Nyia8n݃Ѓ:<!,<cG G A*\ȰÇ#J4Hqċ3jXƏ C6QɓIVDɲ%C]l ̛'k΃=biQQD*usӗ*JUHrիXjʵW@.)Vi̲BW Zr-Ϫno<AusWan;r/_ ^܍g*fctxÈAIS6M(?ՌY'{l kUn{# 埉a[LVmr˙u`سkνË]_>}3._@=?\->`g?i z N@.  ":hψ8;!H+θ0#ߏ#y6͒ḳc!=4!,V[F G A*\ȰÇ#*4Hqċ3jXƏ CvI#+\r`J-c| SM4 y1A@(ǜF"D˦PJիXjʵׯ`ÊK6β-k=qInEq*]S^gmV?=˳U 92eu9ءL.MW 5.+lg074. d9_jw͖>]ᵫ[۵vK{חO.@=_?\ >~Ïڴ ?c РyEHBhX{!!"rX]&bb>@86F:h$;9X莃3أ!Ǣ|I·r 86w]>S玊y2C:#c@!,z64 G A*\ȰC~#{HC-jԈƏ;fI2Ȉ%SBQ ׭xPvGΪn"hWa2%HWYBtV-QgUoM^lU0AU k.Ԏf馍 Y؁"_C}Iwz}R$ʺױ9[tlݭ}7 q݉f.ʗh.ںjv^ݻkt{ghC:C_@!,). G A*\PJ"DZ1F)~|H%E]UԥU*Jj) ZU a+,Pec++и̥ }ϯ=u8;1a{w_dt9WAm1Y/h{%̔4:;e* -6ڒ ^;x8q#k]bŕm\uw/w[6swOg[/m𞵅Czt櫞qO>Cm!,t G A\/!B BpŠ 9qBrucH#KxO t2fHe4]lx'M2СBu"(R tPJ7Ѥ+BMenJ4d@!, $"ǯ*Dh| #JDt'jTX"ƍ V 1cHthdĊХĊis!Θ2$pѣF_:gPPJ;=8u*GL>%ڵkŠ]=gY/Ϣ]bz/piF8;~{ RPj&>n` NN"aOnb`DKQ[8-K+k"gt5\XѬoZhk-gmϩ:/(K; &w=O<}]^;б!,M/ǯ*\ȰÅŋ Ō Cfѣȓ(n Wcʗ'7c)%̛7RD@+ntG'ѠHUJOIJϠ6G&݈S~WjE]UXɵWiײؕ^>x{+7^t p8w}_iWw?\WUWkf͎7 .sHwy\]iAiC T:t^NoG=t-^Ǟr~F;CiVpk~ڭk)L:!Mēɺ,!˭ѕmMHm'[;mHRFwoD5G:zơkνËO^5G~z|ǟz~ g`S TB= 9M8!1wЅ߇~!f8"%t")>-b/#)5!9·#@)Didc͒Lϑݣ$T.I=PJ QdmdCL~ B0i9s:$g&4AG'?V։a^K9"}YИb|v裖΋`zi)z": zz))fH*銔B()Zڍښ>{6i&r.bP%B^fUVINvdN&!,vL=0ǯ*\ȰA{sHE@7Ǐ5nnj4r4ɲbF})#lIaF{RjX 'P9$X%Pz)%dFt򓺴jɫFūXn%kFNmۆ(хӖu \LJ9!J|lLX߷S)Wֆʲc_@NoqJÉ]P`Y}С ~wqGPr?^Pt֯#WO:ܽc3v≧O/={O{v1 xrhP!,e@tǯ*\ȰÇ#JHEwǏ C8\ɲ˗ML ͛8+ 7SeΟ@4FB*]=~ @*AhӎJϠ]ʝK$:wc5K߅vݵu }ͫp}KXp 9Lw -^mù{yBw[Z{N̥<{w,e.ƑK)S3 玬{Ki8:wξb*× 7`z_(а>zCvw~~k%E 2߃2TqVBu u$J(%>x")Rk-"1n8cw!6#@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F:)DͦnJRc*9pjjvCvC>'3ꬌz:>F)9B6lk&F\k6,vF:^7c+!v3n Q:K,.ˢvkZ+hV-v#v l+7ZZ򣱖zjPv MZC!,Z8ǯ]>ÈMh1cĉ8^p G,848A6gjl% XAm?m ݗq":w=!/Џ=*SNFu)؊O_K.|S n\sQ>N#~b>W1CIx]^ JvnƔх ;'_ ꣇=~g N<3ć#7q9Ο+:d$7c! ,R3ǯ*\ȰÇ#JHŋ pǏ CI;u,ɲ˗0ID2͛8s<J@ z𤾞ӧ"OSǥjʕIwӇٳON *YhʽAmm˷ȓܭ姍^~+؝݂ݻ儀]*pˠ-gv%?9<хӖOܱnYH-#ݾw剚va~J"WN̶xѡ38&鱻_OW[8M~;-_N2?z}߀, DPAУ=G1( $f(҅iG "&"(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj}b)dna:(ʐ}Sڐ:+zkMk>l.&Ԭ:-r:l*Tm:ۭn⎛-Ҋ꣟~l@!,Q2ǯpC~CaĊ#x0"0F6 ?Ti0;!.Wɇ)ڋM9 DIg>H GRRmNj-}Nm;XS $|҆`Dtmؕщ*U=m[tj6d85 .:tTkP-!,N)G; 64bĉ#6^X޾:NNI)%|A-pGo>~`Ϡچ|_O@3tѣR*\H/?$0pim8e}UН;d5v-|?ZlU(T0e`S;ϟ]G:zS?槺낮c6նo# oܬ{W{v!,M"GAxaB |QDTP_ƍ /EWɈUlJzrjs2Bw3IP$:9uZTQ{I.m`>X1]8mjn+p~DwlF`w5(2ئ's--O~˷Oqa~`Dz>zl41AYtA;nu֨a-윴kڶ׿!,L Gw!Bx0a8È}QDF$}DYH~"DKt\6tWp&A#>Q.#y1|"I.'S~FqІ;!}**Hb=캵Rt'(W-H5'C~/B'Yr!,L*  GA~)\ÇIn2jFljHRcGA4cIޡtr%A/a'C:s!,WgK G A*\ȰÇ#JLhŋ3j1ŏ;I!ȓJ\%H0ctQM4kܩ2gH@G(ǡ)*TϥP)D3jTzXjMկ]* ð^ͪv[XݪV.Xu. W/TbGp†EX c@KF ˕w^-ZhҥeF&e~[n[ensǓ}\om7;9˝?\Hխw[vs^ܛX:<Ͽ(># Sρ,`C> 9bl`:҆(@c .bR0aui@62 :$ŏ==!,;c G A*\ȰÇ#JHQ*jȱG1~IɆ!C\ɲŔ]ʜfL8sziPϟ/yfJ(B*tҧ4B:S(ի5ab2%ׯ`ÊKٳhӪ]˶۷p>-(WmϺgo%+rX~z ^~)^0ў7-܍ct]Ly9j&3Ơ&htjՙٔk˴{){/ݒnĻ,ur<9zW"e8}>zXӫ_Ͼ˟OϿ(h& 6Xσ;Pr!# nc6x33(#4xЃ6@#?H9dE&2P&)ZdeN86pN%$MS#i&#N!䒃٦_6j㦟4*`>z~(y`BC:#d@!,WnS G A*\ȰÇ#Jh⾉3jѢE Cȓ(Oˉ++IsaL5sҼYPϖ<*2EH7M4#ϦPaJ5bɪXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸UuL9^b(kF̛5w6\Pr͖ <}4A֡]Y6mͶoOέ[iک =Zӣ7GpOѣ@Wuٵs~Sap}0> =~Q_t|=Bٹs~7`^(S}Ѓ6 Xv(xaa a`bv@&j(vғv4ΊN8c6@baߋ5v0fG(^M8=%dw^6)>=!,  G A*4p‡6PD-2Ĩq#Ŏ9<d<~R<9#9*Uhqf̘3-yE) YqcLexiReK)6Eӣ ^U*T&ҍ%Er\vňZZ!, H*\8p1dРBe J(bdqA!E*8GbfLȐ!\iMSM'ۧS|5 >X]xtAe-ŪmO_۷6e ti+tbۺk֫Ox}I!+YH%/e5(3pF:.b.^w2dfE'#m1IS4G~\liOi烝/:p#!g/UÞ6iۿ?p>À!,{+ /*]>È'RQp/v8QȆ";N6#Mtw%͑3Y ƙjy3DtthEwA(RKz^>`JR,p16N"̪b)E\;7FUV/:ٽii&h =tQռ9&BҥMgFMj֪Y)[󾘵1n}Xe <4u+|t[n\v޿+ ?<"7_:F#!,e- /*]>È'RQp/v8QȆ";N6#Mtw%͑3Y ƙjy3DtthEwA(RKz^>`JR,p16N"̪b)E\;7FUV/:ٽi RG:zShҥEޗZjԥ_){6^\wGߺovbMGnkV.ɣWG؍\ҹw ~{gz ??f@!,`#B H`A}\Ȱ@{sHѡ;MȑE;F]W2I Uǯ60N͞9 tgo_M7(}F!LtD򓚴UPNU*֢ZRii>pY$pq72õ*;u[8ѥ21͈nVfu )cϐv,VSl~:~˛wU_,oVУKNسkν(㑬F|{˗O=[/ܺ{9O? 4[pdG_q#yp9 !?Q:BH6`(@vaMX46µ!G 4`ovs U ^|ڇ:N$1TޑWz\„zdvCnAW&9a!, ]+G H;ȰCŁ@GGBbԸG!EN#Ǔ(S[ @_K&a22=~-Mِ羌MJQ~ taS)Ho6Lzt;V5J~u jS36mݫXGnSWGFHT>iX)]C&L*"^EdUW70Ń!؍~s7:'9y")IGF^R)$A>4N;b]?T#N,vݚ>v3EoM规muI>4 .`xݗw!, ].G H˧Ç &g|3j80nG"Iؑ_!WlŔ25略97t' F(Rқ(Q%龪O;zZM*eBKնt5K/ps .6i[޼ýgYw@uyp՘XetVChal5F8_ݖ,|oCz¢ O㭺УKNسkνËO:rɭnsO.ĉ/t{t@9Z=~*BT8R)$3`+uJaP4aNY8? $L3+(ӎ9"*#(Ԋ9N&jπ*}HaZՃO$6v9x'6ݷO~1X{y U@!,,]  GD0} >\D/blĊ;~aG'C<8Q_>}#Y>]͒'$hN;bPL훪&B*BwZ)Vwj[[$ĝ$Apko^{-3/|<#q8t㫭s8wNS[^w^-Gz!,1g( GD0} >\D/blĊ;~aG'C<8RF[Z)ӥƒojdfϗ0oT/Ap'ρ@ąQk `pRvUإF6 [岭{7Rzٝ0*:w{ а;5hpbŒV~Og..|N3資v2hϧeծnt Ktɔ7:NKvq8NG:z!,6y' G !… JQbB-ĘQ#!zH C(J&]vR>I1Ğ> pL=Ӈs=tRX*V7mV 5IUjdU{jz_UwL={n\sK6{=VE/Á_uW0b3vE͔Y cхӖ}.1`f.=ᯒ`Y{ŜY[8{c0_ Q)f}С9 !,A# G aÅ J$1ć]tƂ UxH$)<$J'TL11fNJs=,tJ92Ө R)TLBU-)BUu7-ݒU@ۡ)+]Uѹ˯_O &lĊ7|Vj8tsu8wUW;ZU]+d38m^-_v:Ow;;& jY=tY!,N Gw!}sxpDhF0zdC kIݥ G#?zjD'͛>5iO@mɓJP+*]8mU[8w3)OwYjҬdW\ +ِJjZ+Tt$% .ܺJLSWG:z/!,O˧ ]C%xD(Z ;"ho_8FtPK ^ɗ1u*IO6B?iЊ6 Z&>x5JZ .|Gj +ʥ0t1$ųGG/-:'ƥyVNkݨ 2 ''4 !,P˧ ]C%xD(Z ;"ho_8FtPK ^ɗ1u*IO6B?iЊ6 Z&>x5JZ .|Gj +ʥ0t1$ųGG/-:'ƥyVNkݨ 2 ''4 !,QӗOg| #.:sW"ƌ WbF~!taHPFdi>b(tOA*%#:w&]j%Ne*|)V 'c8tO]mܽY# Vҋ?"{X%?t>w@q!p@rl>9=~PDU Rw3â=Xhί`Yz]k)Rt;f_;eƿf|;z& 'St#t8w X.`wc'>M*ZԏHn/ZJpBGFW|b>CxcCGx@!,l  G a… J1ć]lF )BhpdE CTqdJOԘO_L/pobƒÎ-zBE4$}QwNZU=~QZ5NaT`];[zUPeFݻ_p`28q*pIF:PXʚ1R%TKRhKڨ;oW>zѣ! ,x G\H0>~Lh| &t:7FxR_J%' t޾..蕥'4 !, p Hp*xÅ FlŊ'#G 7~Thp ‘K$)Rʂ])sfȚ63ڼ)r'O&crL'9RfRO-2]'ƪAJ谫Ѧ[!,{ Gw!}sxpDhF0zdC kIݥ G#?zjD'͛>5iO@mɓJP+*]8mU[8w3)OwYjҬdW\ +ِJjZ+Tt$% .ܺJLSWG:z/!,| GD0} #>\D ^XQ!?>{#;Эؒ;~0el2\Ι'|gJKϧ6A/t)# nUIKڤP׬[cW,VR3lZtjrMI@] .|nIW澞F^&Þ%L1-}ZY8byFԗ/>zxe !," GD0} #|PC/bXP!~HI$Ȇ/_j/>3.Ė]@JD#Z!iС@R~izPwjb8aPj#JPto]^JP0\{(|D3Uq8t勬sCZAj+GƚoΈ{J0b#Ȓ\!GI! ,! .*@;}GQ!B *X19.G dCz1pE{;ؓ!OIΞ!GSJ@} "ID~e= @T~r[koQ0G GǷ[DǷ[Q-I#1Ƹqc=e''ϟ5 [3h\*qCαmۯG鮯ߴ+ qB AF9 sǣ 'N͋XPB;_7N>; I'>FӃ?Q_x*`yG` q\ >^+PzG57PѠBO@!, oC ‚j͝>'hP#?tWapF^ 2|[.&Ez4%hO"g$RJ2=jsRQ,VkWéU2Im5ʻx)*uV߿m&JDx'ǐJ5Ly%K~Ѕ̙ M]!, oC ‚j͝>c'hP#?tW`8~nK~sLjjK8?E=Hɤl>}R\Y0 G֞;)[Tɝ{viZxR\nDUau=O#czʁЅ 9 K!, oC ‚j͝>c#NiѠF~pH^ 2|c.&Ez4%hO#g%RJ2=jsRS,VkWéU2Im5ʻx)*uV߿m&JDx'ǐJ5LeK~Ѕݐ-7\> !,"% o*LX!†J$1*Ld"ŊFxGC$yҠG"W|iH_t(Μ&[s'J7HR#|| U*IIhաV$qDE5+kVkv]'1X/F @@vN@0a? g'@d|raf f+V}@j8&a۫s놽o>}Sg4}K~昵n$gSGqRӫ载G7˟O?c{Iv=Px( ruy]߀F[^IᆪQ݁t(ϊ,ρ;9Xh!`8Ȓ,;;ģ :m:6dJGȏT=E"itd*LYeis14c`hYc٦k 7J=eY$ATjC(uqB`9fd9t29tWyfkqiO:ak:ٙ!HH&jh1ꪭOA0C? CgvOZm)\ꎰR $(A~kRAQ֞rZM@Kdɯ3u8BN>.=#2/g̙ݖF*|:IŘ#+PhuBK ?t28916᰺hC4tNy;.g}#t-H%m㙯N}_"AI٣@,=H:#Pڡ8R@H-ޘ#dFT8A6YM"`aX^{Fs.PO*:,;NA/-6 |w\l&hHѾϥtC1hvSF<`W٥/AڷOs *%1UalTL Bcc+P jcmG7A7s\P(CPh"jR\,JɣN$S $k꣡VTf3ٻ7R De`9AT[2 s]j qy IIPO)yPf,̱ΣJ23&+&N&j0Z@&`Q锸N*W6Vw' I/\  Y?Zlyj&a"=t!ai |#HcT3gZFSQHRts9ȧ>Ia$ɒuς8NӠUB L+A2#*DK %?yE>=Kv^0!&ENR}j.6Zd-` "Bҝ:5.=gE]%զGӧz,Qg']Zt8jfJ 47\֟R)Gդĭs ,]:w&ǂF:Ғ*U Ks^SXvbuh2YX@ټd|mlB'mi*cʹ=ZvȕIn[NyiGA[&3YneMc/ iy(Z] M/KSNm"ĪU~Su1hf1Tv.zb-uop7S^Ɛ:f+W<~8l(mQeb 9 /mɅw[XfԨ[KLβBz˽@ o=)w;I8nޗ@#ϐFCrUy-wح&Oyc^LL G#Rӣ~,%ָ^zr} }yg^mHx_w 7s =>O->#jSR-g]{_'shr$x| QyMhqH!9zو8ihqgGuؒ)[B)ix/ tl|{hW{xH>L9W8h MH˕}Xh([@]9nJG(xHkxiqyKQ!ɖ7'AyBᘋIً2i4Ytɉ=NOyOIjY#YIəx(xt!Hw9 )]`؎S)Н|X'X(Oُ f܉#m(Yuh鹠BsY(#9nE$$p$$P* ,p/@":(Gn,+(-9=sIG z.Nڟ{$cT 31:*1_$%*w#Џ)J(JG*@ !)0e 6>Zd) I++P<'H,JHz.ʢm1z. *!:V( 3*1:x'*PIꙮɥ9:! Tx]:Z8b,z-*/p2h:꺬꭯*@ ehJTzo.Z ;{ҕk )(*;zrZ+*%+!+d,J%꬙ZK2[$se:C)PC;E}*7j*)e:hoZ{`S}& t+jo;pJ(*n[. p숢+J$7 S+뭚FJ+ ; :-[z{˶ !4+e+ʮ*ЫˠE{#+g0+P[f{)ƛ*ȫ:#Pk.z/봂tJ~:?ۮ{ bZL{ [C$`绺 wJ^ﻭ~\׻Wگ/0$|׻;8$[. AL܉JGĒ{Zʮ /+NzW꿕?n Ƈ O{)H[0˴_,)qzt*|:} ?;@; \9sz#ˮV,71ʐPʨzLlKK\qʢ z Ƶ,<lq򙬔;/  L++D+J \ھнѻ00 n+p<#P;ۢ0+D\jBBͣ+=a L a N޿>~!ApHۅ~ ے/Cl}:bn*μ=<"u5Kܼ.頍4>@`۟/Ѿ`̞ЌM,`=@W*j c:;'\?^3Ҏ+$_ ̕.=E7\BDO;1`7P?a 9N[o ^K0/k7y?u+1p4U/ a.!1:[\ x@7@?YRn?@0>ީw_1~JP4 Q1:?_ *bѡ#F~D 2$H~Mć!^"ōNO+bPTD$ͤYM9uOA%ZQI.o'HSQu*uW` uHYv@NJ*[tEcImja%(K #"D줅FRi%RT:J,҆-ME1\#NH%jSI$7۰hV2&qO@)هF/+SLw@ ~h ""hӳ8E4.?#Q K:q.FFPV[uF}ܙCpILDpg1)!J#" "(4Ȳq&Y1Q=>_v[n_YF^-(vN6=e՚h#Dj(ɶ[.qZK.g ]5N8M5Qش)l*P`XFy9egNyfzYe[g~$Ofz9q.ݟfh阅:铻f:js#:lk`Kjmݮ@LZ G`b0c*XP1'qSaOf{r3|s;sC}tK7tSW}u(w@']ư=HY9Tf kNJő#r֣~z꫷z쳟yKH}·eJ5S;D8F]_b`IvuٵP$`7}/ \ :ʷ!ag],oE{ZW@P+da =QdBG mH> #$E/'pP`*2z!jK$,HՂEZZH|R1l ԣ4Uh)O6&$@4R7o-t"ttCeG@ PR~$eLyj]PT0tdKP:չ5rJ"UuRQM.e{WTݓR%Tdv,JkPHDk4iCڊAA ̈O4>R;J\Woy%ݢدM3Z uD;@W Jr,}ld'[fvlhG[æON?)zU~͑l:IXȷ_"y+MaS;Uvox ~&5>Ӭۈo<ѽca67Z9]r\3O pڵd[S0sc"r kܛ9odsUno-Wkw 3Ew#܉]v=gmWw,OxG^ww恌c`mkZ=02c Tzq/܎=Wz%|ﻞy'́_w75rȏ~sCg7}]ޟ~aP^|D[oc<Þ"Zo&'9\ϳ9|)> @ þ|ͫ@C9 @ `@Ĺ A 6=#9;';!XY3*8:(; S,5;,]99_{_ +A*Ld@9.,A/@߫+L9jC4C;,4/,5B5sM7*&Mތ-@-A%R6K7UT@bJ#a!NM6PcO&eSNQRVbSv`.^eP#Nc2e[b#T%^]ݍT ]ÑK*p%80~Xed/fB&OLZn5~8apSagq6V9VL_>gNeKtdX.8`۝r^Yu^x~esfgVz~MV%c6˞ ϻRם۵Hpf%JNh;i &IF’^`H:FS`6ecg6iVȔFh`gr݃]4i(΢FjUJ֔HcM~D։h`0f<գ,hݻ&fir:ak~&g7fZf^.lFbdjꑎtNlȮlT˚~lYNmVn?q#df@VLkBDfgm]$Vr;f87Km搦^Ӯnc5S=i;n]jgl3L&ffl.nl̎fofo&g]n,-c`mKdM,֭]^pù]lJ5HgkT6Pܵ]՞qiV^<~oNqIFqb%q56roG;MnoosH$m .k=Kt].*@5˃ז=NEVGq#hM5]Pruj82;qxuC'qt&V?L&lEwcHTK7Р qNlXle'NjV#;͹TkqvnGqA5%JVJtrE`%ä׳)Lw'{wsKe_L2p: BNOKn{=(wmx8`|w s7@nexuOt:X 0:ry Vyהhwtm2JXw}tgwՂw|Wrs' \7'n&vw+@c7nw+!{,3|;:K|={{ j7:)}'@q&{o:x 6ߦwOz'7/yJLqKW#w_{[x82J"$ytx$E,BW{n _s|=|yw|!q$2VVsVRXg,^VkRbPN3xCN-{rۜgsCѕqBY1 :_&e_-QWE[!vdSFeuERlL~d#ye8^h9KBi~ݒ㹄"M[Nl< m%p! Y\ DWgXLm!! aVnW\jilw&ezXyݕd)peZ餮Xy ڜV6w&I8]l/J}-~]-6TB4fl](kz *nhD!]FiNXe_/ m{]qC]$uCVl in=gH=.JaEY+UÐƧly$rf2=Si-󀃲ts|N%rc谣MtZd;vv9uHo[`<8XH%?xPI1<3Njڷs5lڝ VYN8uvXQ\ ۲(f~'FU3u4W{Nks'-:Qcus8wP&{^ױYJa&w. N85p!F x+~Td́)9@~6|kP"81jLts 'v(dPeÂyd["x ^ͳͽha AtH /[ r[5(?L F ~qA[/T]QQKd(q_wT $<tPwH!~D߃`E0q!gwPq=<|Yw߈%!#+A\N aF:@$IKA!%N3wC&[l;3*{`: 8 -r"Iȅe_xȁƏkʇQrCTt@RQL$/,T+G&JsyF?yd儆*U'ѓ$''8c hE(|>1y!*qN<@!Q9QI50uI"$KLGйjAͪ[xj"8FDUeZT_] ryqeY$YdS?u1l_!ɏ@6/`2}VʳWZ{`5=G;5yLJr+ܕuIuTnН,Q| ExTU[KֲC=lV}(2nj|z|~ԬGw(ua=+F6=/`r a-nY}STVU|y+NRm*Q7B%B;TCYO[Ö0b8򼊓0ZoRVdPX ]5 K6kH~r,RC-C2h EF#*Y,]0rc={[!Sּ01[£+k ?9q&؉[T6(nV!gWie /]jb:_/7Ę6[{= un lfnfU[} YUc?LXS{7Eb:3erge/.8pK %gaM n.S͠fV lgY=W7 `q毰R[͓L:đ+by۟+L_AZGPU}f歗6;3pZ쮖_a28EIr*Ƿe0Z zkNiJsS:]"5f?А6Ժٷ\t~/d_2ϖwm }3[`dnЅawu;/PŶ}}k _Oп;`_\E_A`^=>v_Q@`9eJƠ f`~_i1ȣI 6`y`  ZA ] a``! L_M A a*Π~! zeX ڠ#*m^ b m`N!I_j"Fܝ?b-֢ݹD?b,b.,--R12"?"2ڢF c B#?b2",b6c/jѢ1F/>8/65c."6.:6&:0N8f."hc?-=#>2c1"0]5R?c-Z7.c?-5>d,>z#E0F&cBc_b8,X+HjcC3JdH$3:#.^$=M eLcA##,4"8c4K¢/"P2?.3c>�cB$@d5ZdKcHbK,>4>;$<Υ:?bLCb4BL7NEe@&T"[PV#AFE._4KH&<&AcON>1Re5"frH #F:dY64Z^e1bQNb>c8J&kFcSD#l^GJ@5fR2XRZa 0b@M%YcY>#>25>%3oc,J<8$\FΤdK~hs%֦I"%<"$X '>bjMe^wFgEbeVgke]r&QW 1R(B^Pޣ,dIv*n䞒$&e֨W/'P"k+3Jf"&zr,Rh{Biv"lV)RW{ihfCf'i|&"dfkw[#Jiv9>jɾ孺dNľ'n>&+!,. H*\ȰÇ#JHŋ3j@Pɓ(S\ɲ˗0cD`͛8sɳEkx@#&ɴӧPJXK!*8Pԯ`ÊK6вpʝKeҬkr-^?Lx7&:Ð#KұUTk*̯߼SMi"S[Mϧc˞M۸s9N8\odQ6Nuɑ3# Ëש]vDO|%}V&T}W t}V 6(߀G֞{fam7RQFO(֡y@}ƙa4ʕύ8#AY^nA` C2h*cA︓Γ@JV!VPZ}u`TOC?cf [xFfg{w%~.^6P7hH~%g**N):j[q~ V1)y2ݴ2,@hac"ŚjA= 괨cϞJp~h'0ʫ0C?v,Ҳ ;6i_Zs%J'74,?@.z"OH%fξjco Э33Vu8VBN>= ?<(NjNO;҈Mk1f-A̯ɫ-k5q@>6 w RM7K+3N3Koί76DM:#t{<[C&Zy2Cz:ۤF-:c_eʟUUmnCdٳ(:C츿꾎;H1{;?H@ TX+4s9:"i3z݋Hpg@tO}틯kN,?++k82<汋WG6<] ȷ5iബ5-|Ih$B00"k p'<+e#y@BI/~3Hu{!F&>dk`]w„oWq6vՐ\9э .ƺ8z\TOU_r?x/u.䋑 rܯ~H=&*E'w,U˒* *Dʖ A:p eB`bNFӝNAF+N m!1IdJjNl&Hu&:79dR,%+MS%>GT,eJ _Eq15 $UEiM\$ٲOiʣfDG. >AsMtOկ :9E6veZK%= gp|qgw a}:uMMeZfk:mloO<¸~$o_W!U+M֪! 9ۼm O+5=vkvgR|߆7rU=~tڱrj:{T:yΚr\oDlcZ"/nz,'8?v_ݑqI {{w` _/ H(ńo8mk' ws/t^ű.ykQ{]r׎~N <՟v0Uۼ[ؽg>>jս#9}o/u~WV~r|r՗-y|oVgss~rGv(zQup+X@'^HFx}&z@8Xv'e!182&ȁ(hxX}18g?8DGgyЅD0'`dx%[uugBHgPqhxWVf%h/8gPtXvHvh(\XQh Vw耽WwDׂ9H1(eHA舏TzG9qxB _x(GtP`fHV'zȆ(A.Xx)pa!ԨOcg7(؇ט&،؅{7?阆<'rkhxyXèRFmN!08iWhly|XH`Ht9O8Ax9(I Qwz'3X'pFؒ$ufGGbSX((y> z8' K'ɒOM'fhx i֘ɨ_HhiHYYm K4| IϷ{M/'xqȔP b9Ht5h9@ؔ閮h}[9h,yN؎'I Ɉzӳ8*` fSؔɜ]p9HY,|I`x靛Ly;@h)iIyҹə9鉃ǞWƹjI34< PIg:(nSə9Yy,08$ :w(9(ɓG(I*W#@$p$@y*@S(@yG3y^J(Sa*pw\bl*fZaz'l(Mڞf7$yJ&|*yXzkN1q'` @x*j$UZWʆ'^:*_ҫY4ɦ)e pJꬼ6Yڨꪕj(p( :)2ʦ`%zꪭq/@3#PeZ)+`aj Uj{;K#p_[GA{Z. K8J(  +(F!r姮M*+KY HpJw+. R˲)۶n[2; дZ)'5зV[P [#U{%+J ۳o[:(0RSKA[!2zK+E{*WI P{{[ƫKt5 /+P˷  [J;ڛN{* (P;P軰˙6M+e-!p/`ۿz˦pz{7Я J:/9ٮ L‘[–#t;+81 D<$L6|"!{ڸ(;[ ̱ I!)xʳɭa"LW 1`*x.+GkDlg*\ʽX[;#X'xʽ.yg;A I*4lʸ/*K@@ z^ɕ9ɿ ,+ʬlƍ˸c)pGqLZK5`.Pq o*id+ ejM+Ș,ό*ņ**::`\ ܸ͊]|+۹|;Y<\Z+ oZ:eй/0-̦j7:=őY6ю[̳: WȌq\51̺| |O ֳ!S-]sM״!Bݤ_L䛬-qo]؆=w* |x:-Iׁϖ}٦Ǯ ,8 @У΁̨}ëZ ͳ|ڹ-Yٍ)}3Џ= -=Mi=-Mmݭߍ%G)]}Ԃʽ#V|^@.Ǐ/pߤ݂.79Ì|10ǭA۷^߭M\ʬ@))Ѭ-~qZI A+C1N%P \Mn aaW1n f ]kĊ(]-ld;籱x\ N;.,*>aW* _ء²\.ץ^nZ%@ (<>Ɍ!Ʒnb>l -%ߣ,Q-9]"l:n2!~[L~%#<0<N@ ]bkm+PvA//N]:),>?> "[ޯ@C{_}+Lq#=Nodǃ.ݏhA0ڭ(}}ao..0h  Ӥm*uF9#l M1p ⺌1A_wOpl*Pֽ>ً)>ޔ칫_жoN,m>yo_??ʏv_e(֭/O-!/_Jh@ `~ӱP ‡ %.HE/ !E$YI)UdK1eΤIqM9qQ'Tc+tA\DknWaŎ%Rٛ$F(PТ1 T"YxkÑ*7aĉ/fx+ڳUaOTvIZVgPMMXs5iV{mpi)~$n.<`CbAfE8%Ғ;s!g{vq#pgnqC! ]x]vs׽m}Yцʵw{ B - ÚV".~}|7`{йx_s!jПQg{hfs GEQ2c`@ 6E`2%J^  APCK|O ҋ$Bf"V=eQgxE,fQh!vȏ|}=_\b D@O*#d'%8E\Ǣ abH jQ$A7mC8lMT?Rmc'yŀ(BROWNN\"6Q*pBp,8R-ȏmB(DOJHbM~X&E)m.$EMT47չws; pS&EY~'=σ3GkUӚUS% BZedH?ٻYucʁ3sܚvzLzYKg#Us [7Tųv';y]7^+^YoMl Tno#ڪv궥*lgO ruצ57Lds[+KZREmZJ]vmW(a ]Iq:OS9;6# ZkY +UL rgSn9 \?.o'7ލlle?zet{> Uwg[Ϟ4 ]k{n4^\7[.7c>'~]V$hTʋgi/׶=_IbaRrҋLJ|5kz ѥ-x~>y_G>=W}{/S̃zCZI_?_#Ňk/>WŇOi2⁝C^$|u{y5:.C?3> sX3 1߫3 < @@ 1샽@@ ܾ |@Ci @@>5[s?' ;c1kLҿ8~)l/6+b,+ C2A3D$CS C7dC93148D?BkJ‹$8 *@̫B#˲*@/:DMDNDO;=l@P,EPDT4!%+#RBB"?h PB㫉S0 1-ӣ2.K<*S\FflFg|FhFi>t 3ңI6R-H1%̓ľ*[ ta\BKKK|˸K{K1K˴{TK˳$̔ˠ|̳ˡD$L,LδD/4 r- ,K1R]LēE-­|H%,Fk*KƴߴK쏒$NtLNN|NΓLNzKżNκTGΒ$0"JJ)H*`E|^Do̸EJ)R3Z܌ NlL$,O4ϱ<4P%K ]Q54QP-K QQ%Q}P 5΢ݬP:Ȣ0BBڬE~rD<+H%D%clТң uУS >u$&uRt,PC(KCB zI )mJEPGUTNKTD=T UGTG= -ULe4UEUݔգtUTYEVTFeϸ@O-TԡSLCBl"\DetB4 F،] 0&)c IStM/DtmPdR,9SWuxEUTJWSdt=Hvע*mxͱuװ|Xyu;WUЁׂv؄Ԅ؎X\7?HOto֭E1ici="۸8}-JHFwYWWע=ZMZ-w]Zڐڧ=Z%کثS$Ҳ<"pŌʅYX^5% EY+IMeXZ[[[ \Bc#00)ų ^ˍM&8pG 3 IٟӼEרeۃM-Eԥ] "ی["~05+7uJ%ʋ3ǯVl]eל)h Mr-x/EJO<_tߏ{%[~_@!s@B3` LUVD/ [EU`T `$U`҅OBr3"߯aX ,Hܗޮpb~p*P.*V/47ӟ8c5= */2N,3h3&02N,!pV6&b:36rcFF?fcBdbGdK%?CcA6^FcEF@d=d9S>&HAvdWIĺ2Xfe9SdRVd3F!ҟ3渠#:3-1/'b_b̽(ތp/2 S+32[8vLaCgcn4fhLgFh|gO\:cE[US5cMzh0n46s"p`2"2,+v(j,b)޲j&[%#j-bu$K8w&b.c=Rf/{dxCmʶί0vc8[m=r7mlL^miUsgɾm̞l6m[+rj֫(n^6`Db/"B1k2nJoL-.k.p6l~.ֲ~gf5'c8WkgopgpfdunrowVJzpgq&pÞg l{<1㲂+g%HknjFo/w.[Z",W/#ײ^^u1n"q G܊~s/oM 쎭n[3PƭFOsvq;AA++t7VLtG6[jo~rouOh'sLoN'u2#* +o,j2*vbf⯆ gk5@k2`5g, nk1Oׅk38Iu uIuysT8|6wr(7w7w~g#?Cr9yZtOW;xYu'/wsGqwr^y&vF0g/g.%,'(g~fqoS;Wgs?w+*`IkDWZufz7w5/zOt77?Wo!zv7xG{p{ozxMS'yg3/w룇<|{w?t/i/#0de.ik#v'.},6{6xzokwwzsz>,r5+px7{wWzO~qW7N'Nc !T !(p ‡N((N!?,`qr 2$KnD)#?5_¬i&Μ:mZ@2TTǏWLbYjdEQ'NT"թXfH"VRR*WX}5*XZBq:9J[%֫ŷնMVYc>,_rUwֺݾMcɆ!N8Te/d%ڎQ.S)O5(g"9t?m Uĉʔ]+?M7;j_W^شe-~6DEUbo5vUaSq% pX{uebRMV~ RhS1W(W'BT,[[Q5Rdy`I͖JʕTH$Rs)F!=dH[SuEw0IUx@ݙF)UT}y;'ٌnvH0UdMF[{$mEUJuwĔGY:W[E4~~%]Q˹#xI(g#Θ&"q[ybNReOXZ^t[&թNdM=?U$r GOfv*y"iH(dI$˒WpIjS)jolRbކo8q v',C)RQI^' ijz( V,'b\iztT}j ixijW,+s$mCfГ|$S!6:Z\. yTITh)IݿE.=49m+]]`; [ޫpB>Q 6UJms咚8wDo]۞n9ć3Ӽx{/.yo*51]Oqd$Fk=eH 9K ;,7oJJ4/9i߉MӡG(20ѳ9["#Ik\) h=uJGz-۹!DG% $ɓxK!bruSeJ YŅ|#E#IRR+N JsX>.BZ"I/%4avHޥ6p:V}6( Wm*LX;AwrGFr3R%4]}ⓒARȖ 2W\_&gα=?mӰnpıa&Ґ!ҴbM&$1\lc6獧IS֢',_VѬ٫SF=8L%4zju jg*{Y;~徭z\.lbGX<iFY;,7o|k/,gKJ9~t"s{:{hv'0?hl;&2f'P38fw9<5|ř v`/=7ڒtβ$g.lkRҰfi5:,/N{yMGQaU>/S36\ӈlSz_"']eku$ҭ S3K:}vBٯj"U UvaG]̄h YCI-m}UDx(/Ѐ+뿾&___qK'KkIRHU.A E_ܵ!@Un_ "oH =UOHlD U ?(E ` " Oҿ`"µ]1ia`jQ`uOiڕK%t XEA;`O )]RMU BɡU ?Ľ Ax?)& PЁ?l-&qDG 9Ab-GoJ+~b3`"1Ƣ(E\0c.z1*,8E4co|-#?5b"/n=b7w2J/#Lb,>#2"$8."2 1ʊ7:c?7P9b*I'Z)$?(6&;oxc5"-#+F;:20P .25fdP" MDoHcQ#2"=6d=ʢ,ZN#AC#AcV#ZNCb#;jE?&eU"LQ&Nc>>Vnܗ@d)CG(䀙"jJ.Xlc7Zb#+#c&DVOND/'mB $c#d5B&1%S&ca^ceCbA>V.4c=B22ccvd?~#=F&e03 DuZF#R{'R>Hw~GP gUmng_m J4tk")k&K(hj>16$EK=W#WV]8af36mP&B(uFgtDf<dy2q>@΍mG)CducY僾"&2`Rfo3"&bSdq&>2$v.#|J'7:&}iYgobqn"CX>| 'XR_.#zjE%rmjG.fe6.^e"xh,^B e9 WDz֩1,chQvZfNLۉ(hBscYvePFh1Sd~{jゆgzVdwOzQF"kĨb)YjY'S^}Z&;d'o+"^%?)4g?FB([F-BzZkvRr*Ψ;~1J*Liَ&+hIj"h,-+h&mi+rB)mʭ::6~.膮K)&(ڢb-&ˤki nښnbڎ--Fh.mF.-:&nni.)-N/)֭iޭ䞮.*~o,fh+nh./"lnfm(oLmR..0ޞ{Ү!*/zRR**j/ /Jzpk0DJjݦpoZ.d.W#l0ݢb# s1LqO*nnm pNo o3±ަ6jLrononon%W/dq7oϭj0)&/ ./G)oo 0vn0'2+o3lfhq20v'H/"'12Qp/.߶jq q粯S11p$,+s:g&w7j1vF"Oq*t1.p,[1-*?5$1p 21g.~q@qp4^14,]ouʯ3?kƁGh"*755.ht*n*.":q/*Ms2J6/NosqsvYH2c/2am`L>F.[G7 Yj*+ ?w(?"K30}ok(R$#surG.4k]6{nOO0 [%+ /WvEw7oײCr4x7#2rkS'voM7@ϲ3w2'(j3'y) G42;8ri.|7 "xuc1 K3~3*1tS9k;#5vt^68c?ޖrBx&YtC?MwtOqQ{ yC36"_* {Ī:L:? ª:˺:z{D#;:MD;ۺC{M8;ߺ{K;KM'S;zSW﷧[YA'{mkF |^g76!j7{3;|[{;[;o|;{D+„<{3;Ǻ[;焱<7{ǻDp +ȇ.5[kt@5{ɯf:W"X{^B9X<݋|Ä{;џG} =;;|C>/>߻ټ;{|';o{:Ο~uV;:2<[}/{K5׽+IOۻK;;=Ӻ~C{;̫_O{>:΋KVi.~:l&!@ ]铂M;(sC|jb. dhO: f:t#W9vםz2ŧ je>0CN>,͠Z@5ѐ蔴M#閗Ic韁@ANSIҖ4l? (z)0 Z2rj ϼ(s<ˎ&yRW"G DMJ !2@n3.ǒIЩrbCLe-wLPTjt2%}Dfz<f`ђ:Cvsk~lG-S X>Iwr--\?hsL?q6]@# s&MFPzp OZfNP"ܨJ>ȡڼ$J:]n)]NQx~@iE$ݩR҆2M**$F]Vԏ*U@zR2(RV4ՏEvtK \k[#V,tJV 'EH^تՕ eZV.̯)Ł*@XIŨZ˚6)eT({Cטhgf2IyIκv$Em$x Sc(N qKݕd%@eڔ֮Wmun ]$)]Jѓޕ y-y{3.rzR LV}Yw dT c2`t2-' -v?͔NտBۓ\RX<-e┶Fbx ץϊSKİ 1oLX<(Hʏ8EA22 /@|Bz@`GAb|f4x -Tx62n޴Zm>|<Z >Ө VxmcJ`2eA^~Y މ)1^y-i\J1qrYeRc/O-]L u eezϞz#R{ҵSΓLrlg^{+I@ywW;Sg.߹<$Ƿqw 4:| 6+[ݮ ,{tZ 򉋜#'i=gۛŮ27.#`$0q4A/.DpwYyB:K͓l^O4>oZ8{8tq~lGז!;';vkuzocwg8+#)@㟞y>Mz29Pc Kozl+2|ǨXx|FiX^ZƆln[~%|s_[s_/5+i:PwH胇oG'؀!oalsGzqA5S'%sx>G@{CRC,Gyw}@wB(OPQnuW~M]NU"w}?'mx{zX~jAyMw{7v7'@jx~DptqȆAP&&GhH[8Xd^*Ȉ~uLt !HڕSeuP{[Hh7zXs[،Ø:Gp)tkȎ^x+ceHzh['`R~0Gh8@((d|~;x!83(gX {ȑ툏Gcq Ȃ8Hs"y't8?蓗VWy")hxa$ɔr+\7("ِVɕ䕹w-qhOj8x"q)sɖxE)zٗ]5vȋh֘8Z4aؖSx- "`by~xik8iВ,9tHFX(I삚HqGI[+`~yEQyx* Qyɇx*@"jOAp))FYI(* _9[˩娜h%P)Pw6~.%q @)K|G$PH%1j 楃޹$7.iGiHy>*UWqZ*ѠkQl*BJa8x)P٧1sJb|9ʹ z ॄ ;C$.9)lʦ$:A4:' m1N{ɛFY 3d nJZ: qZTZy Zʫ ) J{קZYZ*ZP\F I%+0*+zC /~ꭲ  + 'jI/Y ꞮI :={K?b8Ī י/вD{ F.ʬ(+3K/ SU{(`֩eKjOZѶA;U8๛'Iڵ q a#. J 1)еzr !`Xj*sڹ KQ7zF0:/2Ez'' O!6)@;^ +;*P)ڠn[8ZY7$PL)P替g _;{ \;wK>Zo׉ "\ I,k5%{ = J% ɻLMOL[ ڵˬ=۳J]*Ě+PZL(-< Ys,7L *7׉Çl;.\˪jɥ[)a׉qɬ ~E#``){@гǜ 9¢|:a§̧A$Fٹ _?>A>dzi+l 'P_z? Й\RL 乼]n *M\蛫@pл\'?<)幮,l<ѕ(Z,k;I-ϓ 젳|n˪&ճiKˀν3:0і֤)X*ݶ^Kך!#ࢼ-1T=:aԎqcO;3AG ڡ 0¹ _  ͜j²7h:em7],ǍH#噵r͖ܳmIrlΕ &>}˫1P < <؟ߋKVmiA@N<Ź1I!.=>1,@QL>d؛A%x3>Y 崍UGB\<1M^~mdG9>Qy+1*֩=M(!.n]*n1ƾaѪ0 = ٯ־ NJMVmi #Nl~^͇I>ֽdNn;ݬa ?~>.Y =}HJ@3O/GXH< Qɹn̬ˋ cVFگ^b!/In8:np?/|n.qb?1n >O?X)o ?1I˅iG ,d)vi~?C 1׹t_n ֏c@؏1bY Ao„JIlXѢB5n"ÅcX$UdK1eΤYM9usO* JQ*h` *|0aC${^l 刭aŎ%[Yi6ʏ[mQ=tNr 2cC%ZwȌ'\cȑ%Onܶ?Q=@ MtŇ 1 gmܹu=n.~*wW!E(bv͸BEEoݻYB/ ՌRyN*s֎A"QwbbϹ`5rj"bJ~FI),?;C,'63* 9!rn(0P #b>#D rH0DH8@ҤR*Q:TQJ i<"s.<;I!FXεjRBj:iD3tPB 5PDUtQFuQH#tRD$.=' R0h2>*h0~h#|BHJRXcuVZkV\sMRPxaaL֢+25# #VzUWlv[nVWt!OL0T}r!xp#'&H*Ta}_x`)Ն)u87݄h0'^ꕨ8Vi05ڑL[vec#mYwF Fg%BM(%XBmޘ(i%@ek~ypasfgT&Zg/Td%'FT55n!,DkW|qƹǝ`mfy(=S UVԎppĶnHkv%3u75y/xoNRm(B}m3mr~{sw|>Ovپ]tN5!B7Q"{P0^gӃ-!KҔP .y5`E@ k^Jf P+d! #sBX,YΤ˲ҽщGԐNps% ^PyV Q^ {$lm3Z"?F  < yHD&Rdd#HHFRd%-yILfR\ G]1 qSNs01";6 >-Yz7"Ra D?%6(DA d5yMlfSf7 B1 HEC*WpTV4["[ӄ βS0ءD|3 ΞޤhE-zQfT!%G@ 8Hw2lzKzyl-%@Y+5g#6i!'EvtKejSTn )9J&K@I"[LW֗*kF$;A!e@O T:Av$WjX&*c Ig:uVGyRG1$j֫{kF屹(X;JסJh`!Tt,R)NBNTuoنNN5"X,tb P~ۢQyވRU8&1w7αQ;,JVDG],R'Y2nr]l—.,Wg~_B)PO =!(˳+0]O.cګ10ȫ^-5UÑ&1e2l'}O[ f=^umG(+9R2%;4;iNKپ{`(e$U><8iŧt5 o|_[ODL eh}n_z՟N1qI|j=P>zǦnKS6 .iw-Tb[U?60ֶdoVVYZW(/Jbk%p_0xm~{G;9y}Prqae:g={J.DIvg^t]kg{vGBk,6kumu6vKfmk7G>|-yg()^ݫ`d >%Η4?Y^ -y 7e5{_'^I@ xGHV~]yO\_|_x&Ovixpɾ{ĉ' 2@q,+hg!@CSC:c=-jSA*Z?S?ɫA{|rۣAs"B?>:B B4;)d%AzB&%,B4A$7 0stv @:xP$>'=bqיCFlDsDIDJDGl4KDMdMDLLE1J sIQsA!pA8~C} ,*P< @ZEw?x`Er͈j9iEQ$kG$m\ĻkkżFppsԿs qu,GILGn1i|FkG|FFLGF[Df xdw٘+ @>@QC^@lH*@I|Ag<*DCQ0HzHn\OjĻGzF{{TGoڸvlFo;dJjJ4+ʬŦĨ\ʩGɬK ʲIGyJETF0HV\ChyAT?E >@E,  C! l@%肾YT6LAD AV,:JLDsQfK4TCilBU\Iڔ˕LMܤM5͇۬Aú˼TdTI\l䉌Ȋ( C x 4(hC7tCMN MP5 QPPLQ}uQ|NMQ~I%>ZH&\`LPXexH Aĸ =Df%>˃|UT S-UmUZETMXT}UW]aSE!-V#dK^ =[]U^UUh]e>M(6dSV>V?fh]]%smU`V}v jVseF̸#h-'\R.&ݾޘ@E>2"L?)W؄Z%SM22}W}]W|%L3}Wf YS=P= \M΄Y՜=w U-ҠZٙ-h5ٗ]ڡV3Y=Z Ym%Uٜ;=W6ZbI|eUW!p!XPT ܀ԊҊ@T,RʔPu:q*}EЎMW%ط}ێS΅eմUu['P|IMU\\XRMUی-նXS͗m ]]\#Ub u[uۤ% etMLEd$L*C@'R\; %9@P\^\dŭd4X9lm5DHaI`aed^$}UHʭ\^FM5R\s^]at\ &bӭa$]X +%])auC#Ow9x!v؍9\ .h@muÇ%5H\[$8zz`%X`eL!dFޅ-VFvi`X\MUd1>`.G%~d6MM_Gd%MdG&?NKNMCK IOaF6@fe%=ԋdOd%Vu:*؉eR2:\5afkҌhcFE`܃/8+X FdLbbVK~%C^bv@Ig$Meze\H`Yd|e|*`Id xngci刎g[a%~`[ud.1C:TL dLnm> %xq9\L\KÑ&okh)8yd??n&A0huvjx@j@h=j nf6hƝFRaf6th-j^jgV*Anjj\@% cZT̓N@\75ưn %[DeH9@Z$g]l$[zؠŎmsmcFmg^m?lٖ%^ v&^m,j1=XٖmSngچXlnN?陼-oVծXnߦL/k6@%o~8LT*>,2ϖkf ŴcÄfFm>nmeonso&#6WE]oθv_ȮmYrqq>܎m 6نeoX&qfn:4”& 4Cs >ŔP`@kt~pi ܌+p!HFLst6Vr%0t7n!cO_TwsK㻦X/qN7o ^_'qLtjbXGu?$$rh?vinNo rh>NR؎:^7jH, L.s@ԿeilaTGR9_b6龁Ing^[m6`U%mR_ږxOHVrW&E̍=Ӟ?mnxqզ@ff+.9F%F@B燤_pjҮR&MFG_;o$Wy#vq_{cig7umznȒ/xK{¼/F'c{oH놠+C3ff pHwDchFfPF_{&Lnr/}?m ~wÍlq_y7yW\;LGؙ{/y>W|z)'w{oo++x@~TR焠3]4tR N0bGƣC'?g$(Wl%̖%רD͌jtH'~89؅hHW&tB4+ EXT,(UT\ꔠ.t)zp҂`QvOZHUjU`۰SjVpQl" *3.x[J5lA7_N@ W>Sz0㥸6[כ_r*e dۉ2xϪ!s$4kL<+˗_d @B#pgVZ_YPЅU[֙F)Vg@ [iF)6YT ds5GbpyR-X(F`MUnY֗Q_YPcva\Qj$`PiWWuOaUXr#WTlq_A``t^y'Zazyz+iwRxѷSOXAFnT`On$nHPk' FnT~}JX=Iz+OBJ䦦6(鬰2VլknēA )}&b[PrDcsg֦Ch7Hv7ˏ&qRqFPfG\FvRVŋ]wA vq^lueb!E"3V'J2el =,.l`Xr [|2Tp[3sdME)C`T{4Fꓛ5X&8:EυC#]E*0s;'ґu$*]83 N XI)X%+v:!'\nx#FE<c* =FovL:R"y, G1C4Z3p' qP^YW7P5)O {c8%7$6Ǚb쇉^"ְM'$Ψ&Rf5L f|NhKMЂ+?,Xb J7B:xO)>ԣYwլ.)SD6CEPAջU.tF {1f.y.;wM`'=E~[䶉_֣,/G?JXҽoz+mjxx`2,QDǽT30C $ra| aV\X aJ^2(_(K5D.LT~9%Ȁ+dik7Iizlls=g^ L9ytpu6,4qm9 jh,-cؕ.{_,~@0֣dr7B|Th1syȳ^wk5/ziNe5^]]MYܹS:l"g;νzBR# r& yIpj,?S Ԩt܊wzOzžUqlz>qvx. fc[@M6 [?ѭMs[3,>^}<ӷ;ssv :vu)wd57N@z`m mAZ[[}ή5(j&\f{&.~`q?ba&e~W -8Ÿ~AtzeMia,͸ k6VlvKrw\lGZũWm9)3ȵ?~*œ2-D 5(a^d?I؍P* {a" L-)O=]rْ^<"O}mĝVb`"&], M\&)ݿ-!/>N -0"#&(]5 "61*$ɢ&2!:-"2ف&£"bz9 qaa5[?`ɘ Ҙ`2#.1Nd/86Pd=b,C3+vN}$>'"Zb:b+,2*#AXZV.!86'/<",-~d>b7]mD)%~cyQ"LzQPB$N\3"'`UJ("TdHAAd4q b!6$q{1dK8WI&5JPJ]Be>¢*($/VbvD(.#(~:b;b"!Th:.69:%^&ֆE~eq9=jd3&0VK*fR,hfI(gR.`YB%rd#Sb],^#[^Z>]c.&Z],db )ڹD9]P2gF2f+&oYB'wbF$M>l>hZZc:* rFgxn,ңıbjsv_$$'f_9jd;*gsfM"4VhfQ"\ZMndF`W`֘tb1boa L>%;,.\&QLk5H ɌkķVԫ 0,k(lk8jdRWk#Ҥ\jI}*컸euB'JV0D$C# BV"Գ dNkN+.-V^-fв~" mdٶJ؆۾-m!8IHJ$TӦI$>-J6IL.FNKIJ6m)-Rm2RV>nJI6ަ"Ib6*n.om2n6/6n2&n:6oJFnۖ. (&.ߦ+)Z.n"nBdn?$M݀j.-Bjkm7I8 &….oN/ZI(.nZkڒ n. 0mF/nn:m:/0J0noKo>~C. 1/6aF+J9߮F ?mAB֨0R!+C1v1B>/ #r~q%J0.*r.'D /~1Fr*Z.2-^rӞooXb~ϯ*{q/1K1o9n%'Zso#Gg+ ooN/7s/;{pp K _rJq);n@oojr! 1>r,鶴F{L!0 `nKL*">a-;6wBcE_qq*gr@4F1Jx3-.2CsK;uGt1K1o$p)˲Q9C-W05²mҮ'/5v5Yr/ 8M;_q{ 7wu 1Mk2; o5!W3:. uDuzݿ a~Ooǐ#KNeq*tPC=e LץMkba͛-x!ȓ+o 8f^NmxË/0퟽_>y竾\^(`h V$R7d︓΅B~@ `ghMC@bΊg-x8┢;x!I 69&dI;"cAv|.iaBt @`&nXe9t2КtXvk)ړB^z=XI~wiJfoa0CN>,Ӎb@z6ю6N@ $LY1}Uvңn)B9rV"+?ۀ @ʏL50bBkҚM<,@+k 2G[vO;M:A@c.䱑~ddyYz݂#M h(IKB{Q(Ei(g)R>oia x/m `G *C0:Bɏ,+hKM,Y9H ѥ 2A֘I|5INdK<’48IɠLIE.L hyN$=4٬!D#CPzD"gM  ik*j(< ͓"_*OV>4+'΅T@M MuP⠍@Ҡ:u0$ASLm@^*>`ꞎC @rQUU ֶE6㌊F WGk*ɭƘuQLUS:6,LWjU!}}f+44ATn=laȭE"eHKjSZκ>Kw ə/_/["G؝k es ӁȲ{8_Ydmsk~o6OCX,Z}f2h(=iDT ѝsWܺ6ͬBZvLo֪6<ԣF) l?e˨<^c ͖M枮YJrTg% ׾n. iNѫV"'#|u'v{1Ʈ<ܬl M?Y\B_pA<#̇tisܱ]'C彾cLuV 4qmɓU |v:y ZE|}֌k}Pמt)/g?md-ꮚ{wt{ 5H~6ȏ:>z#nd} B_>k x;9ҟxc"5z~oA~ЯĹ _W{~~z7yr'#Pnuly(gzGWh{Q}hh!'Yol} w?H}NxILٔN)9ٗ' (W35HuG"x.hhPg](eIiipM%r%Yׄgy)JhiͨɃv I=(@FOn$@ɛ$/$ X}6Hzc9)pP%*40Ȋ9 qٝ#ɈhvcI`+Y,XTd霽y$#IęƜٛJ( y ʠ ]i7y*$ *zy-5/v 91(С=z#f#x$Gҙ/Ф0Ɯז%o;ѥ^#p)*p)ЧJij,wЖ@X+ %G %TJ"%@zHʤ* Oj)Z::/KZ2wj/Xyf꩎:Z♨H7 m:r#ʈXxJ Zry7 яϪ!a*ȚQ'c٧%azٹ*jʭV'/H((k1J,9 /۪ 1"Z;z P P. إ(Kn)OZmIX*0I;)1N;? ! #pX?Qg.JSKZE&9KۢK˨ !e[gciY)t[fk<ګIc;P Z)$ڢH ]J#0'Pw;#ʊ5pۢ+ШY1L{ۻ#m)ҹ]}jۼ&p)b)J[۽޻ϫHˈ曤 +a{+zk+'Pkʯ#Ѱŋ`̡%iTʶ۹˨˾ 쾈[r)I.+@ۏ''9I;Œ> +K=vVK*ХZ@g.l6 0-Z-Jd j< ۞ҩV|@p y|{̊`a|Q q*ȺۺnT|f\ɘ+[:@|۪ۖG9LM hȶ :xɿܨ90:[ a՜s y*TL;ʦ\1@KɀͿ@Ll$04<-s,Ʋ,mpлB͕kL\Ѯaa tI,lһWўL1\ʇL5-ܖlۡ}lG/t g%M`T}ҲѻW ]|,gVݺW;KNk`l_ `=w{˽[ 1@p:,dm֋-L.=a؛pu׹:ǓMevmڣ}ۧ s̰l‰ Aٹpwi?@+=h|ܣm+1@ɴąLA؇ݓ1ݭn[1)M:C`Ո]P0{ޣ=ਝ*M'q;,>~Gެ^D>1V'[=. a.ܝ\[r2^Jy^`a˹e^E}1q~~ɍ new;g\^nbꑎ^m؆]10Ğo>24!^ɉmnlJ0N/Jl.1ִmn^,A ɝ.Ѕ-H:aO~޳ >y>UW$վ-"Oڥ]2~:*/^ޖ~ޞ`Q=ޓ~/F$Ap">&-L?.MBO]8`MNC.p p!=v-1ՀO +>Nv~FOb;╟C^2C<:!10->܈ߺ//Sq~~6)g_ҿdbn@ Ľv̯P.0P @ dA~ 2~%NXEcL$G!E$YI)UdKͤ9*t9p B .|XbLCx\SQNZU4i'b~ %SpAg}ܫ3~vM~/֔@&*N*&ڈ#STqEh| O)Z /"DNdH$kg/J[!E< H T̨~PI6tS/@"'% 'ʈ };hĈsLF !~h)tQH?)~(IJǝ|$7+TzL0"Ԥ+b.(. #VHqg"9R9tgO3LcU~p6* Ր^0#)Wneq3 <~c-LhFB~_x` 6`Vxava=٧י4Sn< dوzEWeȹcyfkfsֹ+'\:^wUzE.i勘cL)uNzkG'ɇ؃xOZ WD %Iom|p 7Vq'('j`:NJʍ)1u裗~zk‰ɓM+hۣI"$l1lB"$ٟ۟ x"@0 t -( fP-8 T8Ѓ Aؿr0-4E`ȏPdzay=by{+Q<HZU@H"s9 =C3QSjDcE7Qf,X9i{<ч#3"RqLHC<'9H9Q8vO 5n HDUZ>2!iA< #ZdyYLS}f1)E?S4d#G?^˴$5Yk.3" PKdc(3sJ` w>m^aV-%"$?7E%4n4cr 3R%, e:Iƻ0u?~x&.$ ErNrџk'Pd敨{AWf2U"Uj7R1T]2'Rn^LdiEן_iZop"ti/Z2Ft"C}KĊ5#'O:6V-]U$)H԰5})ۣ:Thwꖶݭq\ ԭ$K~ @PF$|G!;޹nbx4Yzi.>?ֺu#+kg[ږ8F+ekW֕0/W[t4"iE$#&/ [طRFQu<۷)qk\b'fxc18Q&pCad L`.Ki9R`H.=(@479Rt+i l:Դ;bJ"t1-jU_zlƴO'ZҤ"C]im_i`w&]JRԲ;Loڵv_i[Cڴ65MRǺb'g !Lp@qj KawZ~!KSB+;A9_#Rg~֞jnrLyAf{qk^j{#8_=s-=Q\4qqnkMl49^tR|1c8tsҢ^yvAt- WK . &B_Wbg?43yk" u / ?aЯP<_ mr?Si>"A <9|KN}~@?,#+-7uo~_g>O8Ow+4*> +4¶;?,ݰ4& D0dHPJϰ<<\&\ɜI`\ɽl̔tBTH찝̔ɛt4LdLLKL ML\LlF /DCCE˫|N*{?plOϓK0K`Lh-Nφ\|Pm|KO&dP UPDl P EU^U`M< a%VcS= def=֒ ?P[ua4B!ڙ%λTR5J`-KRkExE M/8]e\4Ҁ%XcCBW{EX0}VOdXOKMU4Q\WXWMOE~>$ÇCB{AA5H+RXXիO5Z2(`WĈ<D ^Tm}זMO- ?UԲwEڰW E[| ?ʳږ]¼ڻZP[sxړZE\,ZT}Z [NR\\u\׆\Xŭ [UZE 6\EY(KRZ>RYb`ZmYUQ y5k\-e^-]^ _uNuީKڸDMA[e\ӥZ]e__x%^௽޳8 êɈ+8}ME,aSYݺ"3B{Cl^`]^U1$Fk%`%&b}V#"&bm)E->Ol-_12ו_!`?J b5nD Vb%~Y3b91f%b#>1;aŒu?TP5BSES 9dULC|*MZ c$VCn]DYvef+~fXfTO].lfTj.`PfD#HBJNڤ];Ռ PkEW<BSfFg@qA@gSڏYUg_F8O ad.ViDNӐidvefe=|i֜Th+蚖`ِ&c擖rin~bC+5iʐJ3<jRSK#h](@K%ES|>BpF.^f~ݾ.ߠgkixf\NJ*Hgjv쿖lgVgde*~)S@n#TEEM n㦾KA3@~n,$$D@!eY*^F2NZJH&kY sJ %ntfKh.pNS%SĘ ?CHx.C'%(ч>>Wsu50"UT%dtMhX<˙ uP2kxAFxɊnJ+/]4ϙu ؝و7(r=)sHtr?)7׳r\rV=d??-/-ot:t%S=S=.ZY֋pk(补݄Ï$EaS6+TpE;׳RtTsDOuurwS>e7SJR;t@rL'TwAp'st7tv1slr=HlnmVs;tV]q6a2YH҂"7Wq3E$3q*u &gv!,9m'7St<Î};nvzBCZŢk 8UYz$-ہJL-A3Q]PS{]d_Y]۫jqE\f xNqMq)0uaDT4&F=a\_*%+6[fWVrZoml_ꯨMIZ/q4 MS"dB+K4UTnw(e&N\[ҹYU3mw\9sj4(L24g3ߙ}6q|1ػ4 M;?ч61hIG3unqѼh6xiƳI}Pو # KSk<-H5 6-=^<$s]Y>Ԭ15?Gyϣ뮡ʢΙ]DGQ=3?ϙܤWTF&*[MNoQvlC߱73V{pv3?5A|63z:4ىIlMVr R=|W6 јGIӖ7x]1[ڧ.4:Sjx.mWwΨ~bJ7}xlDO{ ݳ\O^#g76nԅ#-q&Ce7I=VSWx ۊ3Ľv׭Ksgu [݆*^mE=cO&Ili?oxwJ߽P}P;̽wȻYbE 9O< yE4{.,֯G4߼gBA [ M Mo I}M׺)QS aU R`"1 &S] p(Ym]oTSA /%MQQ5鄙 [ OAƅ!8!HDBơNxaC!z!!ʡ"ra!ZO*Aء#ʡ#&%:N!a&b#*"(t[(a"x':b-O6*ٕ1Qx6@5W㙜U"0`n aRRƕA!9!WCAnB<֣I|#BG?cB~#aW!!#8.;Gf$CADfE!f\HdaaW4W̜F3cҤs9Vd4WvEca$:N4_!np8VOʲ!Pbu"$9rdGD?j$AH$?zͣ_aCDMaHT#Fy9#\!XcZR;e$%;¥;z\"AAJdceAzN0d\$A0ӲI#LT$X&]!PF$}E߲8!UO-̱_gO11QnO!C-ۗELtA(B+^Qie~cW Wd<%C$vfC$&?fdd'FvX$b:&'Q$_BUbFf@d<9&dB#z%G$ID,fB(LBIv]J?%>u(hITy&gROn¦4vI4So*PVΝ ? u_6zu}ʥ[[ feKlewdk:cvJ\(B^>b*)@f`>^lf_:Ƃ>B>'sA8f:CgnZORF$(dJhIj2gRNŁ BC!:r"2f厞*_?RWz'FR)bCe'gʑb>$;㙂g%viX%c6FB)=J&'cX"DoTRa!i+X.%Nr_O&=c3q&6o2ej٦4Fha*1vjTdErBgiªvRi>"${Rw gا2, O#zg&l闆x$f\gx͚_Vib(zrC#jR,hVjg¦r)m)km_:Al$[6l7n׎-ٖٞ-Bѯ Uƭ-֭(Z- "|-.m"  6.FN.17"^.>u> 2憮nj.s.Hv.Ʈm>D抢"la6-BhnaNA8 b*o.ڮB n/~/~cע xZjo /'BuhmC@!bZ/Ote~nfb/(g/^na.R0r*n/Z$V.n  (o08-o/jn:B" "&o?"\d #D:bujo/s /:1 g#O.1qpfo&.n环.1 ˱0{cf{/ n:wb`fp^NԮ7-*o2qppW0pGBƱF0-n" ߮r!K'qo ?s'n{!wr6h!2߲ wrWR:D#qcbC17_'f6b/3d:'N@C,rpcGcp*s4+/'&c2$nPMp[O tsdB=pC42!33SӴ@Qcq,ǁ2BCCQ+qӳ$_5%W&ns%0"_4 sLgn/4+1B38Dn/4I SudwmL?b,c&W47ovCS uN˴3`#Zٚ.*g_:6h0u>5BHM7v%W' 2fv"4G0u?Kpnsqvqc#tKNc1!ABTW /~S{.z6iK LC{po!, oC$H(DN_A0"0c6~xQl@}!GZD)]>$bsLO䈎yP$QBS gȏ+oS O+ףÒ-YꓫO=5:/_Yn Bm+v Q:U(^ 4kϠS2&pVVӡs:eiյAkޭ9# !;a@!,? H*\ȰÇ#JHŋ3jQ 8p@`ɒ `CcʜI͛8sI ٳѣH*]T'IBTeQ"phӯ`ÊKlPD,`V U Ѻf˷_n 5ZVbWre]#KLQ2.9c"k邐-^ͺa3T뺷JhB' <ڵm7uسkI$Ó* k%@3\TW`!g]|& eI߄}FU~'l- NLUWHuWr ^4hcSH,>G>*'TzxL6IUd~C5`\7[HN)AIbXՐxduPKdi:XeZ/كr~y硈i&UexY,y^ evg>^BKB 髰*V@n `fn M f`jGN:̦;d>_z&솆"+7̺COCH8UZXVUaYJϴ,P>>ft gXFepҦw1C\pB'1 APA!{r8<3:T;Ki\M+0]nsS,M;(sOAC\9tC2–jGٓt=` )$D@i^ V[w5Ao8̐yK> 9E^;>Ml0z/`UԵMs,]N .8^g98PX3Aϳ<=c:j@a: ky~ߨMcRA2߃P91pM'5mW^A$xg;]|KG 6JՕ|UjPB৑"g8st9n"9b " AQmn\[ߢ&@ -yvIbѝP>bĀf31<&1@.ҐY[&6hr&Qa򔟼&(#:QQ~!-=׳ Zh'8KBdTV4b. }.Ć6vx"9эz0e8ͦ:U/ZbCɣDF33g,I 27%7*T(%a!{CF?/k1zha!@#V%Tjj|Jtm;Ȧ3X%rղ]GUҬz뜚 F1ie*+79l^g H۳Vu*v%6qJ nc: .ݤk*SrE 0瓘}{e_h y_G]u=w|Sl7a\{=XVϜ.| _mrqЧw8]캌N0vI{P1}ȍs% u cۉ/bjrW `щQV+Lqܫ/a} pd5uY FXkL=V}< 0t4|z !4-F/gKJ-泰 Q[t G'۾ gefa10\Q/.c# ong96XZt mLZhb:۬f5'NSe~{..Z 00kR3,q|2_.ugzK[ԛx[jyx,$R]:[|yJNoz{~;7Uqw:׊Z渣G^u_D'׶mᆗۦ:AN[ne'+vpv./{/vO,;7Lϥ[\1v{8G};^_#mxWwtϏp?7}N4+?17@;_ȗ.5Dc_x|o7FkbWpWv̗x|iG0V5 (x xy?Wx&oX+j.H'$iq778gxpXayL~lwy˧(~^vhxvD~elG6rozGj(~}ZtV8vq$|ЀDŽ$8~{A~lYFGHBB|zj(8_Wf|ʷnt}s ,v,؂(&Fڅ|떇}HxX/(n`g_(DŽw%{؊`wq}(t8$XHkV.扯nOs88h芜Bz؀DŽmHW8y/nܷp&xosijяX(o"Gzn:hx|(xOF'h}hƈ4ًH~ЋV}iZ6Gtwge)3s6ɸpDPnȒ7א(ȕ;x '#YeIVLVKXɈ6x!i(ɋؘyua]W񨋖x׋tJ=)KKq~q7אV~9RY)bx7 KIKј^F~lÒ ti}W|ؕ?wȝxYйIjv(y7 8*hwxZzkt0zX :J KK 晥9uRyhtڨbʣ1{v*=!Y"JjHǺ~ksF*);c(ЫʉZ6z쪢c"ڪ*k]wVjj!0KY; ˰wV(J7گ+[ eWGiyP2{C;氵j xP zYʭ +j6ZO! @ۭ!AZrR_ʫ(< *l *6;*zb "(`p#z۬!ɳK鷥'p׺[ ,4˗xʲYeiKKV۵+e{zJ;)m/x z"{+oJW> |h[ K(лl YV\!j@ ۾{l;Lg 7yKKKH[;G[+R+.\wYLHđƼ =VîۘXl^ K{;) e?|%9tLg6ZOz*':+,_<5Ȓf㚿<ǀ[b: :pȠfb<Kiگ– ך aȷa[pi+=컩]|\˕MM̑z'^).]+pmSō|$0\~~n *P:ᛛ:nS6`;!I*=)]:>=WF͠ JDNx()@(2Q<9m#.~ A,} hP!>$J N.,Nw¾+*n[f4'~"(*-/` @ޜM.2\][N䠎w*v.7M^..͠~v^\N쩍J>}(},/ӝ2ƆY`/@x>+N﷾p)a..ۮ/4> ݘ^ ='NŞN/p!&j"ߐ./PN49;?(=nG)pߩ~O*P9?Xb#pLߩ舘Ip)01>Q \v"#P|%}]8+/7J?#Sn&~1/4*9%oO4: %@%P Q$)8Rn>:pҭA : $XL8PA%NXE5nG!E$Yd )Sz`I.=8f /R+R8?)rDCMF-HUYnWZU$扲1O@b')u!HW앻ӡԆN[8aĉ/fرƱ*guI3& pЩ3grбŊ/*kϦ]m܎#dirMB79f; YNsoܻ+pJ߉pg /^AZ[7Lտp@ 4PFMH@TX!8 Dہn 5 (;ȯ "@[tʻ%H`&$lB;.@(m.I(nd!1=JVb@r/Ӯ)tM8Ml }<-' j( 5Jj:tQH#-HƕԲTDs〒!HJ&[SRV[u*cjɥCLSҵO돟_UvYfms;}ӑ$l  jɠJW D|fUwݭT|IG| v3Q֒]VH;SPV_c|O  0~F^dSJD[oԀ"4~pp/_Ԓ9IVUyhҲ;mR.,(9 9 9hk7#sN:.?Rn`;(K&,aMl UM^d|'ݝFvBtgds깵k[wN{HNQ~ŗtnc 3buPƴ֢e'Jt3VyǍyflB@u(A>䫽O|_RGs!RPj :,n 5OB P>c/ZE+d!IRBHs_0tAxh<0.*lawa*p@g:P d:vD0a!Jtxta|Fѯ{#b 'B0摂KDC5Ƈ{F& @~YTH+v .&C"p#ȸ({GH2y3ֿqꆥ dPH)#EŁT$_;mɒAyRcPXF(Jw,f7WI'!m-9Z ׻ ~/P\(-M M|0,_\  +>D nK7z҇p(yS'dҿtS!] < U"A-s+EZ/n p@ ӄY5HvQ]T)KʬI-eܑ)(_4a_Ў\HQVJk`لQA0.9^%UR.e|ūd]%^ɏʬQcKdU{J?nkV]Gkkd"2PfQ Mk:5 1xfTxԄZ"򚉤nv^%oaTa*}j֊epKJ.:ؿ~8gbiځzblp"X~@8E)W)b4 C$/$2"V&2S G؃[^;k 8o)KG8bM\-JS׹Htp# 2;~sZ'A V2 >wȇD z6"R! k0s:s# w?>z?~=<-Ml dA{!={s*AX [*s X-3=:{9k쒾#Կ? &zxB*tA\@6! QJ;< ,+ L1EdD:sìA~Pˆ9:DA~@~)=Ah)1Cc9D֫:PDDн|P«ҁE~[>PR[:X4DS1IŁ0_T}`A}(G{8*4FT.j?H욺4F:z# bpȀt,LI3 );n@Sz B tƮDLDItCm’*$b#-H{:%Fl̮:3S$ ?<ɺS9-9Z3,J?t`@I2 ˰4@u4 "+Z f8㭥[;|?[TDTILPJ?Q4u4R{$ ydj|EG.J}A] z{‹0Ȓ»($D"Iũ,D{$bDɉEB 3 7̙IF ,%`!ʰM!ƿN$ J;<.k9rʼnIjFFLŠāXΔtO +\G?ZF42T9eƩ‰d"ψCsI P$P2 pAWK@t>| ۼ|4۶e@?#%R}<Hl!Q:3M>X8Z:҉ilPN}N5Έȓ%nߋE!P D#<,hRx҈PSHtSb)58*![8$?KlQF%&4*J5?3E"Ӆ*ȊmWoW(;(?!3%gyhii.i*&g*d:g-XYNf+۵]J6}h+ ~iƈlX-5Dncs璎jjj~jg2v[X5#? hY-U^h=_툢'5~mj8>rj6g~厶j>lNlXqsF獦┾bv$P٬}% +PNkhi~5_fێp-BNi.vllz^®&gJh4gFnrK.n,gnv.nl^NnnnXTVcB&f'XJ#f=R}ɶF޴5Nn&YMT~3m/Ne+ ghpVl_q,^fl{q{*qFo馓l pF*^o_߶qlz?rpVonp/.wg..c1V阸oژi6-]띍܆hmk kz#>s(JboJJNMb(Os,t4qZ/SXNuAOb`WuvTdt]4f17['ނ5fm>F]k?OGtf% mH Čww'燃Gx0wGx/xxyxWy?x/Oxywj+Y@ͮs%fElEwu'ixk%8YzDt+)ziuPcLk:l:5cGs7Wuq{OcW{b ݂%l?7kӇ赥fWtLEJwͅH$}|g{o?~oc_~_g?zz+W[rb=6wFm۵ݜmif2`w0yUoܻp{ݿ(z:# ,h „ 2l!Ĉ%Hh"ƌ7rHB 0D(i2Fp !T̬䦒%:XiJ:BFIO~?-)O~EZQ )֬ZVOίXheK!<I0FKkH$(o.l0yC|0L8,)t%ArʓjU2ZUiԧSҦ +TO঩!B}D vA$x|:\кjw4b-g`M'}zFMldHT<-Q[m YUY\pjp{qrWx}Sύp bA/݊/.D0*tЏ6< 6cFFя($FDX)CrYZC!NX8NHǟh[(EaPRUR*U IV`PPZ<ֆ1quHV9)Z]Zen^ZW02v*cVYHTŠ騵"N:+Vbyܖ\":`٘fk[ȓTiVNVN8V򣆷W\!(!K?81d>D &li$`Wj)]/,j\0xp \ozp/ƹ'NȀK뭷~[21{kŷ2d8q3FVvr;U| {S 1ȻIdһ/ȅ6r G\m\?lvwiOJn?|-).Hr7لݶx]x㘇Trkܨ[,dWG-r,M- 35Va;2cld>4??O{{5[kv}Rbs~}I Cbk_s׵/uW/؛?ǣ>f}_;`U?{} ^D ,~nwqzZB82s{ @={ %b2;fE^6;+@ o+-K ]p?4u%Z{ݐt v,.tc8;oqA<Ѝ4`@QmTG0%!ɨF.?ȬՆ33z2(^-!fUhbvjn5Qx"m8o\TbL%ZFiJL269pFz%9Htg:Aw^$7,E&er]83bW35`A </黉2EaDi!ӊF Ѐ0M MoQtϣfZ>5fzYpJbSn7:Ss@%jQjT2UH=INGԧn-ԛ*N#8Az:|p0Ձuv e.s̗ϐ-JNZJEX_<*]g5Qy4V׈S uQݧemꔲUT={SE%fSTUhy͚6mjO'Kۨ֩&H-3a kɀ F(VTf(zQU kCkc׻a &]]R.7^e* ٭0S#dJ7NP,c Xxu0*'Sft/p! 6nl?bpaLz]epM{8#*S˘- m qVC  ~ 8bdWZk ֐_vkG@v2o/e#K1dyϻ;C}f<5x"h@c8ECЌuU^]A{Kӧ35AA4Ԥt#MjU,90QzЍrs:64MB9}jU԰]0ֿzK9[Vwy[rPf6׵:3:էz68+n/ ߶C;^v5yp܌Ptkx<8lr|8i?3-m=ɸ /r!0<ۆ}Xn3|ڶF=֙'A4z~Yݬ]l]7t~׻w g^Rhbӟ~<v.GN!7ctK}v-O;Ӧk֯᫇9ozy^}2%VbҼ'Y@wwp} olS޳#h5,Xh]deoiY|y=}E٭`r߭Wr!d_z[y[ӹԟ>lŞft[,I4+,ʬݺ5/}ݕ׺=Eym,V`m|WB 4 _LKNEMaf]ʴN nۺ!šf]Mza \  ~jDS}aaL$ab  ba&!q%Q($*PI \ɗ1+aݭ]M06cVF0~- ׺l^2ba(!La$!9Z a"2 7n"NfLK"##fb%b_-%>6$ Hvb%;!:e0d;aX$ʬڝ0?ݝ#2›#ȁ=EV833eKCŌĎVaM6~K@r`ˠD<'f. M 8,$%^e^Yc_2d, 6$ Je cC<^ _fX$Y :"KqfC^FVjc4b|el` ͔\4BwdQ⛾26ܛT8PQHH.b^JӺx-@j!X_beg~' x"y {'7k'}df}Xlrl6R $haxBY"eB {Jt"?0$o(p[yݛYr*'ymv}|V|"|v"yfMg'6Y'lFh|6n}flgvfgbbf&7d*i֧*rgwr)g"&6uDXA opUQޱShG[/-SU`&MBu}Lhv'JЩ>:g&~'Nh! Yx ܩ-O}f]iM^WV@S&A}{b{Xu80AP"gam<* &ej. Bmm%|b,N,`ElJ5Lbg|ޤMLj(N6N,Y쀊-|,ɒl6b+B%Զ"mYL&ll)${NlZ+YJiz˾,\e{uͬA/ho(hy1"%*2v֫S>Pfcr%&vvklUҦVK.m^(j"lė*l b`lXk&.BagJV.}lAM)J6 y.ۥT..{u+J꠾oۦYV8aE0a0]"NZͦBCUtqYNNmVm d,l/6/2-S媯-W, .ѬV?VΙCo^e$_1 ٦ pN)!}_no­ۍ c/y! _.yK+0spgqTW/:b / +kO s1sY/5qVq/ Wpo//0%g-"3-ڕ C(1jpNeph6o/Sn^#EYu]%0 O.NZ5"\p #?0ϔ,mݶIٌ6_3Z3,.a7qW1 0Z]ˠ N/>_]{::{ !^ +d\0wXofMOAN!J#J!2+:L5˯pNu.1 5PӰr"CS1"*2krsIyLm51ÍTWůQc>55!U50qOR mQ7U>{٥R0M`t|tPQVvQtItVV6)Si?EllcEum߶l2ti?nci6p6wq6op$nnCN&nt uG7`tGVvi'N6owG7r׆vn`7?2nt׶t6xsv~w7qN~mrn7/owpcwp~Vw77[q_8tw{7qowuo{i8tA`Ҝjj8h66iyS(Ahj3gsk_Vuxpvcv8Vx?tz+m7xGq+8xӹyg88vzvpV`-9nk~CwxwJ6o8Txo/8֪wu6wwt7mWx/~8m}9z:7uwz|yzi_N޷<PwA6h#9cES6WyG!ycCVD9)yoyx?;7ǶsS:vk;'|pgE7;_7ug7<7i{/|[<'ȫK~;K9wmQbKyj+yCS=;k<8l86;Kvi6g+~k} O B3 .D!ą:4Ӧ ćvtP`z iPɍ 9 @=,6:-1xj>dD2P#s)2$F&1I]jePb%-l5Pg/Ii,Oϖ/i 4,ƻAX_kAH^|F?73 =V"¼ctk-QΛlo0>8H<$;t_#ª^~Z-Np n:1ŧ'<٤[?0t] <*qbKVSUP1={ձF> |~v) ́t`<8~q]0ZխXnІ> (ClQCxbL=nŘ_hY͊b3WoY7b0,4"u]%7عʂ_7OteZ4ȿ͝-T L]4Mq_:Ҩ-TaW=rX;6ƊfG w0҇AЀzHIr! a=/y1!޲DZdTSBz䢶Po&G-:O1hEtiзm @-C{'MMMLc 蛞G&CLo5T/N4tC$vn1x̲FQcj8`zD_Kh>O7e0;-搉JÖ >kb: iC4G1f"&YRF j8",5Qpb^Q0{IދjWP(K1XD 6 'U-iUrb41 B*Zc1]W# >%GZ42᳢ *&Sp}<* 0 v<؆GPfe69G6 B^=pe Cœ?_KG3sL/TOoZ(|11-%B|q  (t1E+ekS,+2I&saXKU2kb%FF,#s[R͟' Y&wڊwD;';0jY#E-3LX߶3K l8C 402g/a×$D@pc i4 %KA B/9p\焘W5 bq8sipG.W'zo^t?gy.gW9oE8|~WNvϝ9RD gk#V4x>qBvG.'znr{Y.ה<9Y^t}47KN~{Ggя_b0dNObinbn0VXH/Zro45p03h z%nTC,޾p 0,l޶@)v%` `~CV++>@ 7 oo1, )pL.(pL. pLn/N ů9  /ONo 1I/¢e*,+P]<!,_Vl"M=JnOLJ.j(">ApPp6oWO0 PoŮA s ˑv߰P1 ? +d3NjnQMȖ.Z.WlOpOD$nL(ĭ  Vd5%@4(3F5n/@ ;Dq./Oԑ+43RO+2 O.,װP u*qo#e!^L2b)ME`z_B6y02ebz)@I *'+Q~Rl(W1P!)1R! _c a-1)+1,O2G /QQ. q7S!X1'lְ EB P K~,X2!Wn)#E1XN& D#Ҿǰl%Xs50&TWouۏs?o  %QCr12 Q#Cڑq)IN$1O!1GD$9ێ/SJ\@mH81Q3dqK*t-"^B t5; @TOOO  At҄P Q'R+R/Dr55r _b1R1տ)=T[U_V7nB5+TY%rURcV=N۴5YUY5.OTW8USI쬑UuYUT2U)[]U]fN2W\sM#Z#[u SSוW>] @Z+2:]aS?5 TS+^}\/TUc]4b;VGaݕdAV[C{fAe WKedUdVc12`)ggT_ǵa\E TQhKhmv(1f[iuijhUX?"[jA5'VRQf/htjcvjGZm \]eQe6pE K?`#U_S_`(1U7d\іg`!cg'g+Vrnuc oud!6aa5[KuVXIr-mp?X}XlyfVvow)6q6T{pSUbVz6`rke6jR;]_6vCeXr)VpWu^oqu{b{km`]vruWj66` w_ vW5_W5~%PRfvwi6Osv\iU`3|Y S/W~Uw[Va!MMIgvVtk#J|Uavu=b c-2öb?vbynuawՉfm6ejٶN3 Uq=X:b7sjWuawV`#aP%oM6mO`-iYy}\5XfWUmwKe緁=oVR49/SY5䦗~o9nEY9Im@4Gi柀jvHe?Y`IԨze"&襘^磂yG\]%Uanvjb XIh(ȾV+"'r(*jVW,͘Vkר#(̥މIBJņkN:;j"''^9r\mEkCC\e!y'. c׋4D`UpV)'<:(j0LԲ|3 ,rv#z.G+#)1?wR#t׍mYUZc>U? Ah'?ڪM9t2ܳP>wODKEoٓݬϝ=y禁#H\wo8".,ԒKDk7z4n=S7? @8tλڍ~gўhb8-yC/}oAx-hU7!dt Ȫ"=R@ e0Zꇦ!pp, ?<|zátx ?1nh$Q`ژGQ] 2r7(#p9h2p_TG ֳ#P7 Ru&`\Ϝ pz$4RP+#Rndp:f96 *aV*S=0#C ѺBi{۝#!H`& T4HcIIR_J7m /QUeg6\up aKIʭ/L qMo(8Tb7Ϯ='Kci6,KMyE.fc\6p!a+R*"OT xmڶ0,:JuPMS@2 \TU m{ܶa}kU$MS #.u~VgRȂx]LNGk1 Ǿ每̷gL~7µpd246!G|#:qd-mJk\ ֙e'@\~q wjd]qԵ p߇PnZ4 X]|܆=e\\br55>t d8Ga2:6SFXO?+Wz1d~y)tAD}Rk&t(]lNz}޳rC]9{סȠMMl̠ډ5=rcG#o3-i9?ڲ%A]nz]olA 4>MgI3ۙ4;lAA3#vozt77.Mo;c=ngj_> _]@FgtAq]NtJ(+jkIښnrOm<B&{}'>3ܮwW׆q#:9i׽mb ﹣څø2Gii/:B$̳K~vKr:Cs9Ͻ[4yU_(Z4066uG؏93WjG`@u;A5?Cc?֧4-z-^'~'>~{qlXdRv'pd (uP|gx&yFO(ZEiH{z׀& H~zuR'\hz;w{>p*s.8ygQc~RESSvdig${u`8>'ՄA0Xy Wgxx"HwWv(GW"tVxxm(q6i|wq=UB_v\rv{Sp(W¶dLhj_gpg9xf 8J04-cWm9 v)i0|W¦cgFv"XzH|*8zz''FgHgw9{'hsz8GWdex k4x7'ngقz Ix~0f5ymkZf9Y| a~ouDcymIs'ۈ9ho-8: vhx  Iu59|3gB_h@Ytb.pg8gP䧑*Wo"IY 2huZ犨{ԎT8Xq)fwĒv؏5QIT)ۨħ- u>8y_cHW/s#xɖu)Z CY,A]39:lI| 9 {DŽb/Hy{ T x$i-nzؕxȘ4*>H牞8$ُNٚ99p >p' z*tͅ_9I9#I?y^jp)Hp>HكD5_xyI|[:-jw{芀h @Y:]wZ* .ACً*hh:J ICZ|JqPd3vZf yu*yZ{Aʒ9ꃠ#XUv C ꪦy)u4 jJ|'!ʖY")ʪƊ4*>( ʠy#xJت,ڭGw9I9J ꨑڥtz{:wHjʚz͊j  ؚ*uw szJzk[";" aMұ(ul!Pb׍]MmpkXƹwʦǪ\ęl- ,ߣ#ϭ٬ǒ=>5|I,(0)N|ℌ~ߥnL}:-M/ ~I]-FN3zIm}I -]N5@9؞}'iqn[s>bm:Vl.MN':J*$0ʣԣ>*Н\!>3/9^ХުN%+@^Tܦn6.>*(S$)N%p+ǂT=($ ! .`~,$L :p~,~>>/.ϞF/(э$ ݮj.W_ˎa_(n>%>ʅ](솏)/)+0]oy){L}_ؚ.*НL%_?$qվ\M_+0/OZů_ߦ^ѿѯ/_]: ( .dC%NXE5nG %T Y < qK$P@QE6S|f 5HbOG_)PS\hCnWaŎ%{$+Y< 6Q Zhϣ5nS~o%jaY &.cȑ%O|֤J/]+SOFsEKM=Oj0lʹuwG^%ၳg5Amg^_  [q0ŏ'_1fݦ/?UGK.o_Ah<TpA$Z=BkJ>;h *A[tɂ;8+v q/Cm:@J \;vP+ ZF*J %) "DZA~Nd(N N[Q;v -gl%*fՑHccx~}lօ"LE7S *`~yZ xES(rh2?uw= @AN\kL& IuʣOA -E|^mxCFlrT/yJ]*x%!aqh{zi8T< f@x:Q\6v@fQXӭQ^ح;AG qT n5k!:#/L5"aR Jw /K~պ$-7yKR% {D+I(Prdf!BdR"(DIЈ#?Yfg i@d*Q72.G)mǖgt)Y9Avrq*FdCOm{IMr@H`6AJyIQ&Kh)[TS ک(@ai+ B9Ĥ)%&6.w.IRSP7(\QAO(ȓUXJ6Mj}\Gv>J[|gNSԠ 1iX+c U3$upgM_hD!|T &Y ( WY<{.=l(X˧$kuQBr P`/ NoEZ{&xeAkO3uEte'Ƀ }8`'h Vf7#ȇd|Kj%@JyPXH'JH/-O݊m6 wC!G> saR@im $;uZ6)j5a/m_ :b FhI x[錸ΛQt_0ΚB)0bw1خש}MwZS]sb@ 1@ sܜԇ;^eӃ(1?e=HS )N';I&Az6ԾbwϣV=\);X萀mrk-6ulz)dd61X̏}85WBc F{YfL eul3c5MV.?d!mX-Q2?jWk;b/qZ t1kޜJv2@6ٮw o$8Lph2hDlO=]S;jLv*81h}$~n'kܹ.RwS4wƳ69zq LTH|n+C/zMxH֥::ӊ#ښZ“;iÿ{8  |"<>JL7B&P? SEY:ʋFiEuZ' ${>KB(%Sij@erF'AHý> QdL$HvB0āCH ڠǣǿ-AC!܋ x~)dD% ꣷM7&BA#HtȮNjH >m >s.,J6;H6-u $M;ɆJɮ&B$Z(4tR%vFaC$7x($;A|H˱ɭ}؇rʅ˺"$d9ɺC@"tT`3,ʩI܊"y6~˾lDˈ D%9?GLʻR\@ʚ083QпռFBGaʹ$* N'L\H"Rǒ"͵L$#9̚Ҫ̈|e:>SKrTVrH˵A3J\5KU8'dϤٚڴxPRTe}XVeU'(EvZ J'-ɨ'UKS>WI=ҵ\Pڴ!g @VV}(, ;IM((Hց9(XV]Oӭ I2S$yE}WVU'pq)UC%NMMUˆŹ$UNWMm*O *>~Ԇ5A'W~uT4K5XM}X#5W;JJdb;(ؠ$n0'H(7Ez4ҙZQT'HXaٕ\GLNY(=I[{U=2ŒUS'%ɈLO&~xS`Z̍һM$Ηtz MC-̑^C*-=M^۱Uޒ^^`^5  EB'X_m%[́5X\m%7P- `˛umW }*U- PD ` ` ` ```aa64'p_X0è+EA`[MZ[@ߙLYPz'0>ž%a&nb'~b(b)b*Qv_1W ZaI-c$MωT]aT܅]z&Y8Y~pݒb@dAdB.A.-\\+[.cZ]8]a%Iمculy!63UHb%`CeYeZ)eIdfaG&G cMك0МzZ\7VT.URNboe[gqgr HDAr]VkPuf ؒ\9Ź%p~&uZݭ(u˚Yf rhh~ss^) veD BG,8eg~}6蜪#gu&}DZ?G쒊NbeooNf୶ֽk@i^>&k&V^9lŴ,H-I6X%(¹.I-XFePhܿ52ٜmclh=j 64m Vm`{m>kQDֆ1i>mmt` >m>vݥ?naXJc%,ZF)Lҝ^Uf8hR.jPdžUl6#疵tom>g鬮jf?m.k瑾FmF_&vmk7pmngϦޓvZ.>!nrg%?{˂Ω'g9He.Ir8&P%wvCF ٲ@ w6F?7^T"?_va]XXv+Xx*(*0L?;=Xwe8fCrs9>uQ?7WwW?vuxsQnownPwލMt:7M_&Bpwt8t &,uB/H%guk~Ȃeǹ*@/Xh_o$3;Mv?nxWo?tvzywzw_em7zzxzoD2%kF@%ђH-0h-c,PPy[v懽=vNr(r/>7{{||}}/˿|6xkK\e_Lr+ki2P*`*~L%}'0?_+v|~OrUj|nX}hl/͏?oG}3֯|_>4%_{WML%*dI%N$%Vq ?UqĈ#G, -i$H'T|4I"!2eƒG:MРBG :ѤJ2m)ԨRRj*֬ZrU(P`3!>ndr#Jb%T j,YCKH`F1x$*ra ң!?dy =Dz*6EN*Ku3hظ> o*C?Gn;rw+wn[ɩ/٫KYBH/ omf)PAw-h4je;uJcvy \Go9egijV_SiVԟsa&fnb5۩ 9H:$ aV*`[d_ar}fBԺ=w_}wfwƯ?vO/>]M~=Wo^LꇾɏEoUlXqSA&= ,t)HA* 笈yw"G8o0~N晷(z6IV+<0|V`-?ϊ.v0^ Xyk<#4Q˟PFӰDdaAD3 YS@ !]4qȪzLf#$ğYiR#~5HK9y@YҌ|p9Z1%/)L8jb+X&Φe="VSDTB#8AGa''N<1T^yDL0CIvx,RLQ*KL{T?uL28b? Z˃+gq(@rL TȔʆ$A!:A1? }C?j`T>ceiǸp ѤҟN "g 5}r0Ԓ$I&sjh dXY-L3Y ('@3%(] h?5.ֱ8BZWu>zW"֕*©MuM)чN"ĦT(`Q2t LVmUmG S6e-[X2t&|Be;Ɇ֤c'0APH$6*VLC$ST7d![aH tXiK74#BQ断k}`тYFV8Ul\ v E:ؖRԧ~CJ u/fWi^K*6Nٴ4UEH?V [ $RF-pU@i**a&'x3RTl vUDjrڈpC=ig[R)mzLSj5m,.vif78uϝقg m>4dh>4g*泠 hDZ!i|絖޴݋=?d6fw ,$H"%fVuDq \WS#֦B\x5Mb05$SS1?][onnp6QTV)]h83:3Ye[F%Sօhʌ7yǻٛw;jM#\Ĕ֩nC8n[S "w] Ilb V#C=UY*ݢ+Z$$}@pqMm4sf>s qT)3|ot{[i1zǝiqѪcxWzxnIvv| +ٽY_;P#-5%!ؿ+S-N;m>Zү[YAzwڂҴȜ/H\ΊY W:ݙG__g>۟Y}{ѿkw.a=>LΏ ͠::U)1 A6Z)P]}EEOiyٓ}ZeaiN ۹_ݥ b[`ɠ` aa[ 1Q́(-HqU$ [ML ?U7!a=!U#xu,ގ!Nx$M9]B`N "qG&5%3NM!5JU]7 5Zc6VL47%#P6d_A~#oa[NZ$:Q$~%%*Ρ7"6S鬲$ED*橕 )+g*Ȳ鈰iF"Ʃb^lJE.ķ~+>)K ꩁQ=0)?4U9H\"iH誶L,klkk ,ƌvf֬mJ,2ꗂl:kj*j kj~jګ+A$nbi+jb,)i,ݞU^0ix.m@$,y#IRkdXeb`"9^*l2n**lrr/앞ib2BtAª*ko̡/žn*j/햮im*Ӫ2.*.monX츎no^ No+2 F)bRQ0R&a*/Inb-.n., S.|+i 0 nzoo+-)^/b0.Nڞ/1//oƭ Dpq@r "G"1#/p$j.^oVA.+Ujkb-K(`Ķ ꅧ*);>s.n7߯S^Ԓ cA꯹i%&rjsp*,q0/o#Ӱ =s: 8?*.Br2٢/<1ެ-8n&[rn3ƱFsqC<-mn1F/64.A570 -2/2K`4&5NQ4LoV HFA/ k?++/(gCj0ʯ+AS*:#ouRJ;Ia0te4(Jr\4d3]w.vJ u/2nP-c4oR2 - ^ZUWdTZ5v"UnrZ\wKWװyK3K6+.v˴Er>q:5k4GqHcpdï vF*?/r @#S5pSƴLS1/_6/3:u3w-Om 1TwqR3+P'-I^UAsnc1_-C7T+337/6P9.KU s9"*lבּfk7.A7{3m71&qas1EbQtX 1.yw>˺ۇ~;:sb|={{}Km7gsKIP=H0}H:<3f{#}2 t@2,aC2NR4r4\!X`!F23#G~3"ʂxoOC5JLϠ/=x1Ė*JpKcJpIF x֥دRvGDT[/ElN\uS ~u%ź[etH*#߾bE~ i22dTԨGi׶>7OȐx/dp)kyEUњL&lGrN+5KꈫVtR_u;(u 3G-ck n;{Z٘j܄Юh-ڬ-h +t{L. AI!̩ɫѡʬ* !H0& ʹщjk-ְ0Ng4pP7h`9 i7%p'zN([ι#OJR<b,ʸՄD)9#5?',Cnu: ' UWq*c~ো2T'K#^OГ12Z5N41OcJ%*P5YT}eǓalV./wS=d ;]S4Y͊#ht[qѤ%qzm7y J΄ Oˬ+u8}`F38c)xvUNn8tV=kj7{+ <dA[|qUuDDdZElVopf mS]v/$qkfQ Svc<ut fVg_mϱq;P'Y}w qK,=r=6Qx#=tӖb4<8K:Q.yζNi+nsIp>x+^!A ¯yWnFYpf;l-:w5y7^_ٳ!N\Գƭ\QI6l EQޫ~Mf YV:hA7voLa'ARP:\|ZnsԐBN"W>@*pfa i& .j'0 䈮kp+aD}ʣhLo; J(CqqTG={$yIцu&lƘT|nBo:/|4)F!;lA7jXy.Hs׼d(f8OL:n4:(L1H67ID-{ :a)IIICϑ! Cȵ` dȝE+"2.5ak£+AQfIU ^1bGE.z)U:_H4K(kto%\@A93;z;U ;ecHY&{F#DIOb(0D:jM?h'hyBy0-?P˓< m@-̀, b?,mVm-je.*7-uvm [ԞaesK\.ex[]*׻fmu W5mwBpl6Pw[[QϒҨ!Űgyvw]/okXooBƸ=qlc׸pmck3 lɠZa=촫,kYZ҆i d*[׼]x|_'un\\׺nxɋߴapmnm53(U.n?l`*bpEb cM.x[F)e|'XE/O|_U4p3}\*x [[~ C{?޲eAڶ=w -VG^r23Pw*PC{]l]0Wz~1\{>tz\]FZMsØyq^R'-\F|VO hId@9UL~x ᖏi/?Pfw-9cgÅ^;,\]wonklC;C2Lz9V-ܓ< L<{`\Z-2s3˖ƍ L;HQcf7~ p'7#VpsۙK_jw5r _Vնԟ2x 0k \N>j{m^W4J_S77nw\`nYf.ެu0Ӫn] s@nٚF-L" m0mlPm,opOb+ OT.`lpT N@ƔD-`nD DlӲ OT,mM ,L l `Ր@/^.@ ~M. h/ol0=uo]$KjK,lqX*plsODr CxO:Q&n^P .ʰkNr,PaQdL^Lo˼ml۶mȖ'L+jqPѴV}KNL KoWlJn8rzF /b tѺa0Ԑ0"SL/q/%Al ԤQ~ έ0ԮpP N`N鐯0֑_k Lr`~ 21˨!O -sO|0-Ø0𸀒E+bkv/zyMDPBR 40P J3s'k3u1=Q"AlMFSp Q߲q ,ɼ,'Rq;U q- LQK 3Q?> @R@ѵR+,=+A{b Bs=#nT+)mFt./3B<ҴE3ET=DB5T?Ӵ /H1q<q:R>9ϊ<Ir]C>ٱI DSAtf-۔> IGfN,DM@0L, 2gF0ۢ?n<4!s.ԳA:T˄+AI.JUHIu?ޔQSB ǴᲴvcT)u iLPP+m@@]ORՓJQUJ =?.RR Jt:n /T2 mM-IcaBCtɒR>:tL/EtMAba/iT/UEݎ] @}.uVɔUgtfTؕf4cQV;/5TmQEU^[ʺE\UWk3UWa.J Y;+@+U=M}Bwiskǎ`CdC` 7-6o`e fRT]ٴ CgLd'm>>?BCEMUcѕ+6uN rRR1'v;W>7LsrL@6}-,rBCUUE X gYItKt;Ue~۷S,. J++44mu;Q v?.SbSXpoYXk5P[WYI=`,GQV/5vѴlyChÍQ{Q>r@W`^Rwm=UPtөP KՁJ<`yT;xolktds;]>!ttU7q͓l=-SvJ}USKgs#uA 8kirLܶ RǵIӆ[Uvuc T-R-;JK5r5yM+xK^-Y#uu'W/T\.?vkRvWQd-RPuI.ɹZxmEyys zکW(~Zڬ[aڨWzs{tֺ_zFw5m ڥ`{v9 BgZ:k۵۾c{b;wzY[ڨs;Z1—۬Gۡ'W qM\z%7R2T<]-3M ٲIg ށzڹz1ر=WM\ռ}{^mzݶ'͟}:\[{Xҁt]](,]qxUeyv^Wу=׹u!^A\o|A[ƽ٣[(?my}yAܡ':Dd9IoOֱ{9q<9]?BcpB d("N4SBB :C9*QĊ Q.CM L4i1&3 2hhK_̙U)O{\ a1k s%gKe R^ɬf7l2 ֒frWjVF`p3 2[ nk[߲2%F4'e#Z YҽRdEӶhmv{nh\dx?s+U%Wv_m)l\պpbqig_cRLY6Wi a ʪUw<϶L-S.] ݖNuyLH!L v-r k h@nZocpT n˥2lf qN4hJ6R/ 6Vx N. ,7+r ԊNOc{bf̲}nU.v\KViȕ ժNZMIkX7fMa. Ƭ1r%y+|b`ٛklSۙ6Z? Af"e)yVM77>S7|ڳ,ZB쪻"eLw/w wwiO{u (oOAQ 78%|UBuzt˗ZW6{إHS8l4tƕ*~xytz'B!C,#Vk*gV(tǗyƕ~Lk Hs7}8gZ{h%tk^V ~t(}g|ygwyuerRwku qѧ~r~WxSx3^=|+Շ/iWo~^ljk]w@'z)Eo*y|DŽg\mg'YaĘswe`UbˈZfϗyfw|6xVqX؍fVHwch}k~XhsE}HFc`[ՇfNgWא7WzU:,Ȍh8 x|WHb83<#WUWL|0JǏg ؋@o%vx=G|zdsQhnj6ȕL7Xj(G0gƎ(~(~jȆpyYl8~fv~$tyH_Y1)}y6{elhWBbAi|ى٘~x藡WIp٧RpVXPXqY 9}YǓ 0`lR۳=DɕVxuȏVIʼn:GFhͩIwIolHyli g"穑HI鈅xj-ixƹ]xՇEdtYPMY- *Mv+*a ^ 6kfH-9'M)~-.jZ1hiY`D<ʆ$y9IښJL::i)eAvvYCXf,fZn۳e#t9*q9`[kyy٢jM*tZn50Y* (ڋwY k lᇥF>ڔ69"g=hG:'@ꊛ*zb:pZ{a⟅q Ěz9Z:::Uj:bJ]z$`"ЬI:JG*z]lRJj ڬʰQyHlkp*}pM9+˲b:+ERcY7J;ʪ۪2+ʴmcj)';!; [ڷc;"K!P'v+{+( {Ej3{Z֊[c+" 밶[PK {ɸ9."^ڍM%7X=[M]ǘ]/0M ܈s\Me8^-p޽k gI|"5--î0ֆ n ױ=~9,00-(P.}--P4]Yݔ[罾/4.⫾&~=(\۔ʩ Nk~ /$pL }M5<o ,lx/<(0~-P3 , ?^9\eK?"^X$P\J4]*(P(+ř-z{ :p) 4RX="pB #o)s(!R(AK BkF.$AC4J)Ž!d\?ѼR2:J,ң 1C 3+S[;(#O=~-sOrG8$);5 tMMuP5Qxā;tSNHp P lP(U4P 7KNsu׮>ݑ'| piԟ*a*Yqki#brcgQOקjt;j=ӹu[9ՋeW~|ORvmGlYoD^:Wn7F`Mw[}tGkգPI~a.^P5"8~mk"&7`cW'C)A 2"H0Z^a]#D:~qЃ;KlK < tsQ' 'vYBn@݌[KF@H'PO@Rsl-^_F:Z:b;/OIMi*a:@xFp0rCgѢ=@13\]I)I%91^o䟓*m䥶Ԃ`9s8U,0 }cVERMn"AK~3$gSӜ澘kf1f=7H2S%eh:Jt:x$ YhdH`O%-!]J#A?;N-[;幛FT_֟JUM!i5P(*'HVz^o LxDF$Suk YhCz"U(u.5=* `ՠ:-)ծ XX*_TzS΀"Akj0bLQWt[$G,ˎme jP5dV]E jBRzٕjp>.{C9rFLf[];˹2Mں,Bn[VMH8;LrJ?Z1^59e2ۉUV#^ ]ۂ7 ?[ȇ@jF:!HIA8ВZ$pX(2ۋ|Wԇ;ҋz[t ",%}!IUbjP2Ų Ro=ocݺ8Ɯ*ILI7ϬԦ`|&!hmAde^҃82} d ٥`ޗn\:u政pNQ]G,KB*П`~cK;}gȩ  u+iv ծ~z2?xzG>1k1.N熂JIQqV2U`5fI!+g$ jl{R_$7PF7dh`hK;PY}@2 bR!9y[ߺqhe( Nl0I>R:.d3w߷~rn5fHV*9W;As=g۝].=?z{u(/$2Ft+5~6l{m|ܟ4-Yb-PT=n{G.FfDB` ?~su1|p;鏽tϫ&& z K 5-qx6 ,BYӰ/GJ9rw;J=̻*AA,JقL)mB6[`=8@Y;B;>ѫ;x ;jJ(/>{0ҢTCtܻ=D$ÁQ 7r?c'4D:DD;L<9+ڪDmDL\:eP ű<8X$ꪴ76;>=|KnzEyóD00 ҢИ-"sJE|ں»6JJJ KK,K; 9%Pck' z4Qx<[g5֞cEU}-b5[ZW(Iy zGύDŽtN\Șuژ|zܖL5ɦImF$ss9-TU=׍ W۽@X'EW'^%T@%pW[ViA^x\/2^н_M-]_g5^͵T ]___. @`_ 4= Ed% Լ %p$~a6fB~xvU¥Uĕ&u: lu !֗ b_\ҕbb(`ubG,.I4x`c*b(6^]41A7!Bå>}*aڬaDfOaH=1p\!\ Vh}6c2vb [c8_5b8f-vSN4GL_=c@Ue.L\nX9~\>#t3_??a6k!s׾k{fmܞVncL8cʻPAva=%ac.l@f<쑀=*aCt&ju.!Lnnj0y CPo^6Tu)o>fp"l%,5mpvp VoxppBnR.aRJYCj[T dk&OŖd͋%U&323:!Ln$p^%o('ع&rrbfr35'>;ԑ^OkHKG6sI/;r' t4o8vI_0wooPp'<"wr7S$WN/r&u1'52u.%!5C^hṛfj^iADF>^@[ IԼdu^^߰0q1/7 +wt[7M>VptGuRt/=s|߰wGwJ97s@Os6LtJg%0r^/%slVt>kFd_:s6tg|gsқnqFpo>at|7b^` G!!}{}Gn}}!K~s_ڗ}G_yGKpO\u|f|f6tC7txW[4ffo3zVo;N;T*C "\8DB'F$ł)j1#Ǎ Yʼn K~Rኁ1)s1r3РB@AI$J$%R(E>*ҬP&}Tƒ%ٲjך lXc5uПA|yp3fa1j2>6#~Ya@H:2fh Q:OaXt Z9䙡+6S:gI 5Xuj2[$+.+-(Tu>j**VS)xd&EU皹ޙXK͗_VVmzy.[I^:v)jJ!)6"%tj~-ְ`3z+N~0F,$Sd+N6kׅVl1=^ )2zҪ"]I@']G߻gdSYn[b-PgQb5PZU.ӅB(ج2kx$7L_:aH3N^ܫdž2ݓڞX 2 z=n]͉2Wuȝv{zauSUVWVZoWǽT^5nSxiZ n>t;W뿿tg+m~o[7(l;:Ee.o;!"~/|CJ(k t}P^~!"jM_D nNl" Qv@!< z" 9g0g ;E6 >hsi{NmC qh/V:;@A)Pu矢u~tC$ nUW'h@ڐ -XV턕/Wj'8qE?924sJVs&[VS{m>co`L~Vۂ-v>["~81\xPs+Wb&3܌rA[lUz󡓻V>ٳqO+X~awp}#W*W]]_}v[0;_Ƙ5ftӛ߶vU-iK{8J#ӝotΧTS݅U|5fG{PYcΏeg9Uz}&7||P~uePo}t C"3n9~cW~/o) P:+/|{ƍg8{Rx?^W3nu6|['E_ ֱSya˱Q~ͼ^}xY]Yr➘\A׵`҅ I] ԉa_q]թ`]Քם|J- `Yyp]߯-]~ឭݍ]࿈EYaRʹ`_嵡T$:][WXYi?dfU^bY!͉ ܵ5a]ө>>da\]Z_ aҭ p,]! E9\22e!|Z^ ^*FY1y͹-ʁ^aR% uٶ1^EZH楞ˍ ^d^%Va :]BF5amYb*j@Rz_~e%f C~ER#Z iY ^#Kzm_ޕW F`ڍm%  朱)d}TETZ֗8)]^\˔%\Z_e\6@M\e~ab*^&e_~!,b!_Jg!ڥeMz^VdZ_e cfo\2&j}9ibc'lbgg\edZgvne`eTTX?X'y{e8t[&&u%l%@oRfn&jfoҦb^ް \Yv ftvJ`f a(}'t^c: 'd"~etJh~!'%e~ab.MhzfZb&J'%xb[b^w-ےV%{{{'?)y'[@"Ye\~C\%f^iu*in]'&b^c韶h"gg(\Vh^Մ"t2q2^a_*hdj(\h6g.I *eoB` 1)lN^z(eg[':iZ:A{'{'ꍧ{'?`Z+Y`k[by.{~l&cRh+^'^+奁 愒gi6jtzj%Xu(2)B'Ēf~*f[dbix*h*l'ebj'Z[bbvg:`z].|'ή|^+eZZM+z^f' Ʋb,2R*^zh>,2ն't+6Ϋ_Nlm\~b"&^B-2鱺unlkFf)w|虮'a?tiZݲg|e' lӪ-(>*h{l+*y.W얮)F-^lt[Z&bͬ[e.+Ǧe'{NkYV.}@}-+*we/*R/o"l.*츎y60Kr)bm}Fil+\bhvo&)ҬFg-2w*vg]e/Ŵg䪬B" --Zji|zgbhi lJp~J**좧i1$1>Z(ƚg%ު:p^f:g[,n)x,&ilw:]~,lJnoNzNk&+|r&+'yqnzr10?prB03..Һ14GOs/k/15n4s52nz.13o'*)Ǯy2~)'yn0kZA2²:*,SkS*'D/ 4~&wx:p33464=q3771Rs^4s8:gnt3;C0PsK5:_0r?gպ3u>4Ȳ1',C345X8E\ouonAyr;O[ysI74۴BG{u6^q?{3xz5M6z/ǧtyk@B+S'Xrv޶zG8.Ys'70wX+*kmxw~[_)_p877xo7wqCk.yGo[5M345~l/\׵Z75?4k29'@x4@o6Ⲳ&]m;xyf9@.ۥ{ywv{w'u[{sug>u 8k28B`2/38W+nkx09xl9^yH'[[/A'82w#?.EE+CriY70+eb[wSy^`k9w_9,66m}grk:gnzquW-3q.6?87:63u.{{6v[5/749Gk[G4+C.w;C+],v4ëxvwWs膹wD/,(<_kz|/x|b8jl#8MW|]:977+֧; XW2[=x^z{7r[}B㬎'{'7GvC",o4Yt׵ɓ)}v7k}m7p{|ě;/[@yw5@+|[}?_,?}w=8x <'k{?=;n>΃͞Z~_.;?{2xs88w:f{79=w;ʣtO#~V $X_B6tbD&8_,!H`%[BfI)K.!iJJ+JXY˒5MzLO%EE&͙Y%hM*zHhG*:2dЫy)іi ,y[,zlmY5SҤIߖ8œ9t[YpIQ=&*{{vU mu\ڱ϶6Oi)JجGŽVL8C {N2lOwC|Ʃ15&SeOʗ7V-wf#>}+RAǤ+[Č>VJTJB4RLPJl@):9`KĴi-4cl힫̵ɾBm1ys1>Rm@ڱ ^d( 6 vKRIɤڂJ+Lz+khcm@t''Y`1:.ѻN:hL3u32,4L4# *iB2p5CݯL;El 424|7 J#[Uȅ GVu-k8/t-,2ɨٶ>ڄ' 눰T3,'T8ŵT*1ע}1YNZJ\U0*1B51%T;*_4&=h2f2E-`݈7^Uu# 7HyF2ۘ4Hjsl^IXq5z=G TmT m,ƫƈ-".oܴNxP D&/ ,.ۆԪ P-6M). PǬ/:ōl40Əjmߢ˾ڮd .m Zp܋/|+"ԭS8  րO"_ E* ly1Ps 1./l͂0i `+GruQN؋QqQ!K1_QwqQC_}-F7 UQ"%""+ Qws{@RypW ̨\$L Y1#(R1Xqk2)Q/)&ϱ)n']!y!{'ܲ+#~ rm/!Rp#2e' M2R#o22n0ݒ庰0+ .R+O i}1 K5,4r+&7ɫ66sm9k=jq"(O.%7ܲ!j3.nm:/8&cr2>b;:#jl)e2?M Ɠ6q2A32<2";k+o6s4/c0/?r 50_rAOES6}23Y! 5_GRHxCq<œS($y3.#FwC F0esH40=cϓ-15/s>9o@3K]=--_ROrYI}> 2r9q7:) Q2?UEՌzt;8?+S(sGA?wP650F4s@MQJK2.3,W;14Fѳ938Q4w;9u7XV+TEKw@V4KZ _O_e3e92֫xo%a'W[vLxO7s4?mr3uLc!4R7||][X|tV"^mAe8H|uGyx",Z{}3Wdi-7W^3Hl=8;-q8xewo؍s8^։؋G|3RӸ͘|mZeՊmՅU8x"erhC3r[x>uؒ7yX{ٍ}XXIy϶WXݵXոX7.S#YnGYYؐ{xWw؏[SqiɚߘÛ#%yيyy=9OY5ٝx_ٔ'Y988Y1WDYyeٚ+y}ٖ8   V:!R[\g N gzwSwzeZi!:!r]}ڧ{ڦY :cZ!z{zWzwZZ皨Soͺ { :Kz;{:;ZI!zZẳ[;lU:c{c}ک::s: ¥#{#miZ{ӺZa;[ZE7;:=h5;[OZ{W:1;#%_[ڽm:<ٻ1)|-;ozcM:C|zwۥMzE[:ڷ/KA;=<9˅ۨss\ߚ|[|;șZ/[kKܯK<ȭܮ:}|?ɹ Z:<[ʧ=3}گw +{ĿŸ<{o}ү;'kг:3e͇[<ƛ;ۃ9|YZŗӓ;)]zI]ݚݰ [ [ [5}տ|9{!-\Z|+[֯|99a7>;۹۪%]w[ݝ{+ĉZޏ~"/;ϜܺgQ۩[='|k]ݽgQk[~[<ƵՋ;# |G?H؉>Ɂq^냼|ի]=ۻ}^!\{ަ[>G3>mVjs0tgv.hSw%:r z+Aʺ~H/(KѪq=ݧO;N`>+t|\Q_Sm"۫/'Cs籕wӔbTЗ3uٵ@Wg+o߹$bW3+ܶ߿:]- #!,. H*\ȰÇ#JHŋ/8q#AXǁ8RȐ9rdƛ8sɳϟ@ P%Q~.eMdIXjʵׯOrSHYTځLB ݻx뱪 hez ړIJM+X.A{#KLתRjљ L4+R N{^Hױװc˞1*ClRe[6Veߺ~У[ر`'AmjpʱXxӫ_Ͼj;LxꖩSN(ef& 6h pt$zVh`v (R~(4~(Ή)4!o6wn9эzqX9!PG6q,MXȐ.d;"y.KM fyps[#DҵXc=TvD e.d$ɜ _(R˰h3!ݤe HFМ[?*O!l@KS%9?GmKDOh^"t\(6ZըJ7Dxc9OA41\QK_ZBz$kd̢ gK.SZ56Dj ϶I9UzhMZֶլ tՊBԧIY]k9OOUO`ض⯫[h 0Di6J cJ]e*rְ-XBKr2ld+L  gkKܷo^(,vޚ-?*e+SexRfִ^%ֺIv׋rDe3 4 gq߉4tc*xf+} 32 [ؽ=d'Yqmu (K۶x qBk;$8ъm:>e-?kJ8(OsdpM҂uaC q̓*yM3K8ޕ~KX&w]^ sY(,Fy6)f+_/ς4#do6݉_i<گ.v6iǗw1GgsΖsEvwb i'7m 6we{Kƀ~xϷmqgawg}x}Ň见dŁ.y$` mtG X.xbkbspU*؄A([0t(vWyǂ)؃OCΗq#v7Xp?]WQ(zw@ZHvׂo_(ilyh|'pVhg{!ȀNY} ssiK熒8瀅swK[hw&s|@8W#Hwy(&Xy v m|8SHx?8'!กkȌe4hxgbH6{( ymH|H  ydmumi8$M0X)ݘ؎1Q&IX!,Ɍ>%s&(>iP @Qz'i|WؕaRxTXyhLJ[xٖ7ĐXY mw8@蔄`eyfyI_)M y0qHXqvٙye46gs! 9>_ɚ/ah/Y")I53 )`稕w9y˹13BI}tIw9]i۩1)K8w؎II옛ӝXGHɉYoR(&h9ʀ4 (!'"i(:h鐭XHYښqʉ(ʠOɖ+-39/Z3ʕMҜ"蹛F(IXK99y`ɓ` Xj[ ]I*%jyڢI>',pR*}"6wԇ8(P*~TgZʤ9*i$ʤKJipz!ɠv:ړ(z*$$$ $*1ZKB'ڭZJ*:"`#P(*'ךqٚ *K+lZﺭڲ(0˰QAZ02(mz,ʯz$9+K<{!Y[$ 7=x k0ۭA N4 ={rK2%u+G۩/~۩/zn+ 98+*P2[(;{[[2Aks)k{(}˹Ukf/K0[ۺ K #`| d;k{;; bK9Dz1k+;kٛ۽u +)#b+K[+ !pk뻤+),|/ˉt+< lLl:Ǖ P~ L' ps(,6A9m/[GlG; X1Y۽˻,+Lg[|j%P ĥ;\af<#PsK+0q<˷KHۼ/;XLܹKwd˭ko,ʣ!{AZ+и; ˱L\۸ɞ ʡ ɿ87֫S;d˸(и,,%̖KLa﹯2;ʾl ̻$ٕ=#Wݲ ۍ+-v}1!X}4Km@lك=s޲@`ՠ]F}!ګ^E' rm<جb8M8 @:;Z˱|'j֮ mԊTL8zȧXn =]V؎a[i[ȷ3RWق=w^Lnص^ִX]]$+}ʃ}S=ՊU a(ӍnJM#޾|<`/ܩ -Ӎ^Z-}UAЎ~}!ϓ|IS[A2W� ?>AO:_J2Ȟ.Z? _C1 ߶WBܖ<ҮXӛN81Ž#>Nj) {?+@{}e5}m~&_tέ_{_]1O;^ .WcLYAm%-s>*JXQ0Ґ "JW_5n1 VH?FK1eΤYM9uOA%Zf$N(Ui N RP~X-Nի ]'!&Odi[qΥ[]+W.5S"Bm$d5rkG#Kl``VlgСE&tDKcuZԄprcCr{kĈ Ϣ-) /gsz՞ `B7, $!C~DIŰao{WUk3tSX[;K&"vʼ"!5R#:C.5_"ȫ ~CG~|P 60D$TrI:8rXL(F(숈m(0Q2C drM6\鬃*. u1yDB=sÀxa:aQ5tQHC5BT*=Ĵ11(3Dl4RV[uӔZP=lS0u+"=0CZUfuXBVʸ5@ Ovr$UQ9MVguݚRj+#~(\4׆z3LEZ^I֦*\+GE u`}r OVFpxe#-T!!TOt [Vz7I_S=;*[86+Q!߫lӠQ=$kv8239FZe 79yg:?TO#І.h I8|tAslUxA{T_q 6 +ؾECS_ ҃^yj-oWΈQoļb1$¦/‡&}+8`%RQ8O]LU^pBTffɎkK6ԕ{`a= *׼QK゜BvA31[,B9m|t@ av샞W@emjdR=&qxE4!n&䇷/(@jX"%Kc H%¸`Eh1,H%rL+$AIЅ$f%E֨DZʉJs[Xm)&R(`Ce5.KДn&@ tݤ^Z-!R 3ÄӢZB@!EzFUˉw ڂ.c=yLmI6LHT !_B !~,<餝 RmebĒK7hQTnV J`Q)t~ၑOӱ\V$ ̈EvYEBcsU8`5;ypү/k3 Ys$R\NGFD=j6HWi<{RZ4 WH1)N WHA~!S_;LقF+4<X>Rlk{]CPfC͎ZSjِvՖ<[)6Dy 2 ĽWR+0ؿ#|X^ _vp \1/) ^0;bW 1]\ S/p8-ְ[WC Kڊ7 PPP4̑+!_Xv If8Yss|glLsUfrNjqG]SzțnDgj@VDP:3g &y&qm!IoT5=^Ugx83MkE'9@QvuUgBEpp\ O*wűk>l_΀l?O'Lo9k7#Olb}wok8 _ΏO~?݈|տg{= ~gF[:ӼYp'x@*p(=b;p9,) 73+:{-K27d[>S= $A c??&D?髾l3Ct<?k[ S8Ӌ˺SÎ>#??4>$74{6@CL8* F@;*F*i#7A9?z#d:%B5,FB4EEcdVD[d:ZAX4E]VEYEEXb$>`P}Y+$* atb+_I]&M58>(V,{rU}|N6F}$ne9c:bT^fDU@V~fnfmf]?f9[._ZCDNd%;6Gb,Ȉ||5@,j+;h2C3٤=4khp8~p5A.Ǽ;W'7Ikhλ0ihK3zf6kNi0viWihvhibv*vrh.eSiN3;-ii6Fjj4Mfj֘~7V7+p;%2xT=-ٍ882h+97flVh{hK;4osֻ~jK.kGj~ 鼋쨎inڛ8}jF%l&'dlKm&kNN菦F6ﻣlL7h;8;5,p+|VQ߿K'o~39[lo5 mqj3iV{kӘ=k5u8vlfniǻʻ qqVSp'plq˦qpq^rruV;q oq7-7q wnflhp@ ]},~%(99ŞUssBlhp3_so뷷r5k okOk7  ^0?u447uLu tawufsmcgua''Wv 7GhvVuYOu|SGAw,%x{[t/^=b5Wtf?v ooKgKǎoxlxGo@G'uK7vR4p~gK64T'y7xo=cGyxvt/coto6KxPm;.hB7|vp,F38s5s2Xl~X/B?v\\^PW^_5wwo5FglNpvu_||{_voWG_^:FGu7|w{o^l/pws"4'4jg?}.肎9wﶺ7_sׇxo|vgWl9oH~'NH@C\8a!64H C'T".ܸ#Bp#ȏ$1Ë`dQ%E%TDxE '?bǏ'5E]ʯѨRRjjU,Xj 2[8ZibDJ:dsMvn|KǾ 6dXÇ8mj 7I ֕8QeȄiˡ1T^ܑoeJi]{~d޻t+lj DSXSn 5RG,JCHqWRǧ/_@_AYv_j4I`|\~B`eh`r)!brg!(#3.!*jrQsisas$?Y$O2Uwd-Qdx5県e%P`eVzDv#Uz8&|yc[rXF<1a\n{'W(]Nak.vxd"{`X*8PVƱTuEYj8Qd8%ByaѫQIU[XVqṟeDhTdi9%.a^&gZxz^ &*_gfՉb'.Q)/b6,*Nlu+%G5%Udsk A ˲ZovܳyHo[Z0bdƻ[ܴسF0u*(BaR,Mo,s)p9mCZXa.qUR8L:wmf,Cs1y F~蝯Ѧ 3/]{.~9x>zo4;oG1 o>[2sŕ0ӮK2WLv7k]Sw|%Yk?}\AgKőJdɎ3T޷$eSt,yΚ0l)U #=f OJל u+a*Cscn%nӼrs׶-ufM)Π&1{"ζo]V_FӿRuJioӻ ֈыBw#?77װ1(oRYl6Pt8RLZrqXx;rޭ.s$ۗՌӜc9֊w+;ܺs[s(TժŏhꢙFmK"}*chժRIdrD{kQ*a=靤22xF7zo%K\ 睈b4egaP,C%ANe{F'`*mK'ډxj5u܋S1=6w=W{~W-=5{>!hi[<7*qET𴫟ѽ!`G_w _}_1ޚeu^FM-QQާ˰R^F*}U9LWaD-QY`  DT $NA8߬`Q 64!J@a:A BQ>ҁ[%!J^a^akazBvaDHE(Va^!.!N!!v!&!"2"~a":a >@ᬐ>"la Yՠ ʠ  A"?+-"!)a!bb(F""3&T\!+za"R"F2"I bvA&b0"b#`(/Zv< Bc'"%r>Z(c0Fz6F!#8/!#.#9aF"b, ?dImJb.`/`,rad0B2#1Zd£%^#2>$:("Oa3n#+6*1RLcP6$Fb"?#£3W "(!$ᰣ#"( CNa=6:Z6B;j$zY#6% "Wn"*,ޢI $KRZ/g"LEIvPF!^b:G& &(2%Yb#c "Qi#E$:d>&a"Sb#ʡTQ>dVQqf%=csJ#y6z~rj%A= dGFZX@6;dEvIezffdIf YH` =d1j%GB#aj#%£"#cm`v(uv)#^Ov^F!BR#"%Rhjfd^&FCj&PeTbSO(jh31򡌞%"a"3dRF"YJrarhGuhL "$Id 辭h ʢIΠ%nޣ"abRc*nƥ3b_*9ZaYΨ4Bc]6P4Ty$sa(#1z_B%Tnej1((@Jcj.C'm~w$b*~Vie.-.(I)iZf j&IiT䂒kJ(适iM2(Jj&Hnk.I(k`k+ "h ,bk FFŶrI&+ĪJ6 ,ƺgꢼ"g:,Z+ͶJ橾쁶JfؙiNg$V,Ӷ2-6z&V, +V+kelӊ&+hhVTPgkklfJ&.l/$lk^&rJ,[,vl.M$*m'elR-.b*.׺d+ʊ2/+R.Ž&(N`n.ȶ+ֆolf,+oBm 6贆-ҤNIb^΢IJbڎ/"܎vnfjlѲĞh̪df/LmN-n2:,~:vnzީBڊ,k'ڭnl­Jp$+lhjp6,l#foֲmmN, wb0ˊ.l,/lM3+kf-ۦn*h~䲮+&l!?>0dKrG1,`" 72k.nfqM:*rښzRqjm/S,Ѷof⪰V2KE,Rv,1g,Nob>2k{p;skrlÚN1,)fw+0i!c~¤/Kʾ,+$[f;p/NJmn4-*1 o20-&-JA4v-3"ϲ, zl@o&~+Ql>4պ"62RWrZ#-$NWEeNm&p05Z׫9c0J;1n.Jt#s( Gmr 3SmI*r>e-+,>2crkmb7,dg͆4>OqO,BCoǪ-/-o&[m/m) /ǰj {mbTG[/6׺,7kn m xz#6 k skV"|sStwpWP^)CqP3n+tV߷QrJJ2.)Vk#cks||7tj-dI0z8? ExTxx8xT8x9#9Q9?0yTy8O9yKŔ_W_y7y'y89/y[B#1ϸnHvF8yƠގm Wz_9Cv#398۹x999++BBk9U,y{z:㹲Gp5_:zGzws*ϦU[/?ܶ;ut_z'O;K˻9Ӹ›o+g9wc9'+7yC y;yi'ÛQ:8){n(8X;j;/δ:Ut;|Ο:C9z+C㼨빮o|#k3/{ {y{..|~|!,N H*\ȰÇ#JHŋ3j8:;o@R )%Isɳϟ@ JʙW*X@A QB-JիXj*#C4xd˲cGlAFʝKݻxy;L.k4-?#J=85ǐ#K޾GAMH8.ӨS^QXͤVp&,\%i߬ NIΔkcql8F&yh:gcx"| )'n G@(i(y@uzVjjd馜v駛@]FB︓έά4JzkClЃ볷CaWn%QBk;6t )'-^Jm %[&+*a L-Ro&|콚.;D,涮kxfͫpF6t2ݴ2Dt6N jO:,q:`le⻔8!_Q⋇820f*$ďQ"8Ƅqg="hCf5 ؙZ- ˃y+?mDk8*`}|,3"(R4#&V=1Rbp$~\¹+Q ƅ ?>~[n~0K8@#E9N$&}rB(lXLaی11ly&?x xSvG;*:;ra>ju }&yE3. l/` ǾҞ6I+=X`>^@{¤ORC%jČOHu*RjC)r_@ԃ @W!VmkQ:LHnzI},| XV=jlzVȪJjͨ*`DOEͭnwV͘M-1V!ūm:ΥkQ"0cKev5z+h 5}*mܻuwG~V{ S! (שMH{K` o1_TAK T7 ^ 1?+ޕ &ΰQag%N[kڛ82->e]6Nr_PLTM\>"}"2C 1"f]1۹.f3;9];2zN>g-ˀF2{BИΊ-H+@9Өʦ>szm^vԗNj3GES?-k/\޵2?r62aW^y8cd_Zo[}4l@ Mw['}GdSR;!]c׊ZЂVI{<"$OכlcŴGh=4LW,׉cᙟ9sb/^r6׸9uPNtAsP_vy^;h\)N ]WA߸]xAn}UFjq vdߤ/ݿqƸÜ/d 0cOmyk 63f9w.۞_4Rmxinwn#3AO/aVx+}{Ǿj{W>ǀ_*+&jhvfrr6tipqp7hqvrlfl hxvWovV|~&vXq9gj)HwW~!x~Ex')ׁA|Z&nvqvWvA}XCX*\(~jȆ6sn8S⧇ih th'x{Õsh肤xx#pvt^H؅xgn(r(hyƇjW(犺hh ؈XfwLj+3Xfj[|0~ (1rm0y!mhUhYQƄ(@(c|~"9v6#8s_H ,cL(Chrx9Gp>9(Hא)EaLZstH !S9GY 4aؐ!c9f)rHȐ(xV!!qiuط˘TX;o] RUqHb|Y 'T]8(4)Tx)ip\W2hibh)U(ǹ])NXY!ِ8'ЕayZx(y '@bI_;i ߹YIz{_쉍t؟ɘagɎlYy=Y'T藨i^I"jǓ wU )U~ (99@Zf 4Tj(MZBm j[V9((gWIv;XLJu*YiwzJڕ92zx,ڢʥgHI=uvI'Ъ:*@*L69(  j7Z zɤ* aǪ0ZِЗ: S9g9*uiΙ*R:ЪjJگjѩڮ {,jj$P@ $@% (;/ SH$ { )` L -طX)7HK)6K8۳A+sK#k2#y?:*p$Q4;[6[5;(%Nb;Ժر i)Z%5 *7sK9G+'([U rSkjf (+%@+PvG ;K) )z@ ۺk,;J$0+ЭN/Э;¸:G* (+@˺;+[2|%%{bmG();KQb#۪] 'ɉp|)*&ۭA&lL˱۪ !|˺+\,ˠ;$ PΊ,9H?Z9%; s6[%&ѻ9N<L|`^YU?qbvL!'\]ONŃ;-YѽyׅM +==vh>;7- |F {6;2d:Pݽ6bML z=㯎 'Œ:ђ޽ݻՠn4 sZ=/ݫMXځN"t>1.㫮j^.4 δ #C>N|NpT̵.ҩ={nnN >TNv.#ߞ. PL~-^'Oa+#L/0>mMޮ㾩fK z @׉A0^9 ԑ;3_A{~^_d>?j\qowe#v.mKJz=?ު*@S]=X._Tݞ4 ¼1%<O?U\?lo71}C(_ # $XA .dC%NXE5nDG!E$ 2#F`B.c& +t@r$ZQI.eŒQF R%.3 `3P~?N[qΥp]trS\BCB<@,HSTq"3b N u*3O qȯTbH$żb + 1\)iG C~lāHPrL2˄I& 0h?6 pK ,@ rFL@ 4t(0+DGA3TBg*+q< )6u$;Pb͜K.tjO0VbuNV/&)QG,+NJ!K4v[n3COprDВj5Hv^zܕdn @O<$K  #x%Ifa\uVhLka~xex|ܪ&R3TU섖{̗ARh6J ^UDzAKzj)_P|7EڼMx xV{킬7Nu?ֱ`Aic Y/m/Fi |DEw@Z59S/Zs8T(Rxa3j/VCW] @NL?ď%T5޸+r\C∖wk w&?\g?Iv)Z;P`).0 +hEP 2&ZRBc DCPjlC 0B "iOjfK 40#g!B0 E0`xA .q|A@f2$.d`|d&FvȴF, #% Q_1'Do}Yc#Ɉd!CIZ#ęmH?(}y?拌۟WR66q9ӊbQPu1_f[ǚ`@JS^,j<$GH92#JBTI5yO|Sg?E67%4s T "!10Ƀ` _'QT#%H <b~Q6DiAԉ@.dJzT&UKIIэ,H sh#Q1=GKJB~Lek[V~I>LiF*?ثezЁl `Q*O[oqle-{!>i+Z.8PAZԢԨZYV |(Iۃ9Wap؇8$#ۊ3E(o]ZBݘv Z5=LS:~U""!\u Tv7.W&QۖW5.\Lw!ҥ.CEJll|ȒX#\3R6A ATJ_Ur AO"q|d4ivcB1h4ѠZ\z8>ȍME"]HI$Yk a?]# [IZ6DL1t)UJd6'ZH>J\U(30!aeK?w /pBL[qq2'ۇMg{IG$Tm^k^lvn{s.F!g<6.u@Շ/Ňs೬Qxԧs)}Zy%P疮 lW!۝l_zd.U|C8+m*T׽׼j9-}_ {I?8t叱)m+<7ǺָƯ*9> _B<;?T[)ss?*÷S]ck:/+@L\)'7ٓ=,>9k%*,p%'`,+('** y*@!T*R@&A%'A*|T)Br*%ګ.#!\#{3*CDS&B %B+‹.t+`B.SA+?6|D@CC9,B%í"B~E,B5B);B pqD[\6m8RZb,TE*<,R@(C%BdB03'x+cmEoT\],]ȯM( D2BT*ÈxF2 g,D01t_4)o\# }oEst|aBwGdfth|TF H1dƚEmPHIqEtH]4sGp}vA,C'8E,ń{TxIwĂSdBdbǭT10 K,K1~5۴[XY%KɅ][lFY̭e_UmZYEKu_V_ܡ=e`Y_]KHOq!Tum'{WxQ'XlJ@dWj\#lC]Saan !>b$K >K`7RZ%a5b( zދLBА0D4%U$~c8E}%c;7~pY%'J}<݈|$QJGwDDaKlM+24lc7d`fafbdd)6@GR M[]9Q޳yX|dʣDDDF*>u|)fu^gvngw~N0ڟ݄'a?%}S>g״JdIHVcm3;=(whKbhKq P?eERMEQ@SWn=uJj렞 DEC|d@A&|mNm^mnm~m؎m3eˮF.4lnFCN0feSFFOC,ԭ]48hezNm!1i6oFmenz乪m>8^NooomeV (zZeG&nepۗVC30~0w3H3.@[ '4Ȋnz@zJ<4D)zB֬u(omn>g*r(.r*O5r360?0$s)?57r(r17_ ?rGqڢ#8kTB~n'h3H7K06t~q:<8Joq'0.@Cv*FC@eBC-7[wOަuBu4O::5Cr!itOc*^$]u#uA7cgj%Gv`dv$_eG?]\t|o^`ˁ^_qGQ~6t'dl'qtOt~ht%4u%|.`E,W1q^oyv|hu~'s*}wsCxdbwbzqu"ow'/G/`m]zu"qvD8tt:ToS7x? NN3:~wyi%qq.ߔ.''zΟ?/||7}g}xcX'wuqDGQ'yTOu$xhi79Bx !2^A::va~ 'v\z 8`^~_g!HfXu^eAƚjqhAPyTRTi%I5Q)Fcm x^uT9$v7zhAh"hBxT#g-h dxK"x@bcHFYf,G%j$b"Ո$wU!m!}NF:X_j__nץj:\z[j'YgUhʷ* ](J楫9a|JІ>zkH4*\fvJ쭺(c:l6fNl[^[N\۪͊+MҠQ1[1fFEWgF`x j[ryچ_}hafu_IX/͆29L.sdL[ sc _QacBF"&u[X ݱn} fy\vyP& 󬇕c*:kxZ}qO;-=9׭~w }ܷ/ΐɰuP!~,bf67wT2ڥl ,y>PB:MU Bz ]=0KSaveˀؕvg@" m8D h2DTwqKMZR4x(Z.&yWe/XSuR1gN/+žbtL,?ATK\ ㄔ{ܛpib^t u+SꞗeutBg{{OƱ+ n6סJ1=f 6PbLC24 .N hCD".VN? *C 89acE<% J yuv_Y˲w8RŰee4"r3A+yR1 c0pbXhlj?a\AYVcx[q C2Rny\?]-UƗt9^X>vcmP+3%/}2jE -.˴IcapY`ک x[iBR6Vn\Q;ۙxqz%tn.bAX]JA/vYDoH>ʿ=o%G17BOt|oVaA%o7\"x󝲔A%gYE;y8NYme'\#/M \:cv rEyH$Aj9p#l8 p[2u=Ѓ3nw~;M,zې;SӄWhH{xb=};G~c#1&{`|>qs$-IJ{pob =.WLك tE0t0ޙ1ig,\Ŏm~>ʫpw߷ёG|;v=~4W;wB _ᝉY2^< EYS^ٹF$8^cɰX4LviTAHh-GAhat]:a8QM]j]]-~!_՟MZYާޞ Zɝ^!i!Rq G L_]" Ä2L:(a| b^&=.F!]"α)<E]aQXUU ߇}c qv؄ݣ#7vau;֟<_#:r9";ޟy9]BcB> d9c:$ۃT_Ph_ ;MAvX1ĔAvK_ `XT$BĤ~_(HA#y[\L]١c~텘Ą17BN~W:7 [W[ u%:nAWveQ)[*"ࠉ:] =.@£~!d;CXr7J* A`erbE.\fKE "< ʄM`hE%Q`0 "]0T[<9S`T!Sv]UQ#e؅#A:6ډ77NU2X&`X df`R`.^Q "`|_څ[ c_| "7zcyX.( &bRZ"7N}VhY[ %)q&}z^6Z޷!gBX~"~c勚XZۥ $AEgyzEU~mR~MM%BU^BU*cf([c]j%h~&[(fZJM n gB茶'7@rX8)gi'z#f-FV*$: |ҁ& }gAi(g)$}BX0B R#ٔJ  `aau)urT"(·n#LyZ^eyqDBZky+yGgk6*J~d+Ö:J+ lݼb:,߻kl+Ϊz۬ZcClNe5nN#v~ER6ln,NÞi̲kl+پn,*dv,>zvkNmԎY,7b^~m6lmڎ_6VR#:.ʙmJ.,r,j#* r.m\\nrҙߘ^^عN!̯yog/,bȚݭZ ,oV".> ˬ0R&nmFoo o ðN)+!4 YBmC^ۛQ5/ m5rJR빚iV幪zҮ 'U+!2ԎޙJj#!X1 rj#Wk>m%S"Lp^r60$c:r&.',(]>m,13$g1#B0R+'nZ1' c1jr'k.[1Ϯ6.٥﴾o^I$.\TBir.X񼞱S-Rn3Ʊ_2(-O0-r+kr94ZΰZ[9rBn +r4*-t3[p( O3n $-+/E?"/G0' 7..O"k s5Cu#g.V1-[rO֮k$qA13~n^3=S's]3s)3?uܥuZ`qoq^kuE5]sdnb'6d[^v^?viu]q`A$u$bnӞirkd6? 6b{6 -ksw\kemK#+]q[b+r6H$v$8`{t<3}Bd7/sne=54Ncmw"%r߅nqh%w;wv$~^>wd;vUR>wo]qdE}[)$s7]Gm6p2_3HQwKv&Wkؑx^6Y3wv\qDZps!hXx+kbnd2'z.A>-}طE(Bw_ܑv3{xjsaO9^fOet>s߀/^8rKvu󃐋i불x{76irvo'xwzxX͏u $™[kSj!R~^71ns_ |l毷:f8o8d/>'ۻql}u=}&k::4q);zrǸonWpoy7So';y$!B30?~ƁsA VTqH&=A>*R4hPɑ$?tfL3i|cJXKCgK Sd9tPW90#Q~;u=2TS*zT+Ѡ[y5UW&,J$ϢRA1ūbJ]{gܒWvX0ϓK-X׶u#4=-k}3\RJR m?J -#@TI6THIgE4ID G\g=/ml1D57|Q9UCRDU%51YlA,ѥ#9(]DqMH%KI Sq ts&\+tG6}2KAAtPMa VVVtM$KJVZ4smduW6=RM0k}RQ"7؜$s/4X*ݍO0e4.Ua2d]?NgDQΕ=e4E6gSuSGvWLiPm5TgvUʜUQG y -e2Uks-r̡}-y+GeЪ PA%W-NX8Gu>Jo7qlm h9dzק[lƒ.5gF6[WGUh둋hmeXWdfQIܓնZY=n3G(I/fN:DYNWi^i*nū}. V5NGwv@nCH)~Rly7яva!9W? Jqhʌ+z ٴN{J֗;uk~SjU'Y*S~Z^mk\ AKKUSZ]TWsg>jVFTܫ9EZSD,eώnh^Ԩu<X7aa*ϖIfUjWF4=OU֊ZvT]N׶pEbizS:ֱWm\Ӳ[j=VpKOt| YӤ*E|VŢjpgvooP}n˽FU8𭮋*3թMZ$]ZO7-od@!,X H*\ȰÇ#JHŋ3jȱ!lP$AS\ɲ˗0cʜIsǂ7 ϟ@ JцPJJU9fչɃ=Kٳ?z5x)âKݻFjTk L]CNTذǐ#UqΞ 땱ϠC BjFظװcnĵg N\4*V號УK{w+^9l>WO^kn_),OcOu\ND_yysN_ 6@W@5Z>E8^vF!w("(8HO1vI!h<擓 x&X"H&)U;;D;d7?Az))?]#?R; d掩 -bdgKoj'?}ܞ6Q @srmޢG:Z%Ajcqig9t2PM79jW=ӧi0&ArҺ]K򈫮zP 9*.9)?j s;yOAA$ 4+0ݚ뮽@@.!6n+P8[ji&bFbgAtSLѭ|M<,@+m;O(< 89m>HS6# 2d}NA K2LkGjث%szL*x ʄ.ۄ+! 9Rwη\wH2N&+衏^Vom6=[괢v xdЍ=T޹=*c2Ư8R8#9\ 9x@DƦ:[h#;:U+py1Y@G<#Sx @z^ ٸA|9_R ~ڈJ(4 ܮe$S'<5/˛G4G!ի={tp`AX,]. dWC QI^֐! pc:Gpt{3Q`]YKƸE׭Tӗ1Fme@Eq3Q#7XY2Z5BzeDtqPLpT42Oj`cOn~g69MjO(0o3>8Kr;2Z^w3@':eO XiY3*Kȧ(U&RBa$=t)iYDٙ 7tHg!@g5'PƐr37IӢHMR8NG2TZ>K*pJ@A%TJVfU0\)v`P~ $ Rx%Yj}>VO uͫbWF˝gJC~UltǪ|\ լjGY19Uis׿ ִX@ k3mZe+ЎҶ@ʏ g?V ?\nLun3kUz["6%xm#ܿVnv1چ6|kҜT`ecpW:Xέ@5n\ xX ӪVʹn:Asg[Tׂm] @>]; xu|]23U,ʺv7`}R3nn:NgZ0W|K\Bdiۻe636Sr6ŅM FzҠH9ʿsVz$d&εK}ئrb{9:%5tˬSV:-{c<Vik"[w6UbN@•Jfe'00wA|fw:`10 E}K)}t]Mlb?y7>7zЉ6d*q+l7&Ww$Zom݃W{нn VF->p[Gzz]^[K۳[Ʊ 1!Pȣ(๡Ktf$PC[+} )@;!(+dJ; ;{R#PiXz;[{#[#h )!<(r0ʚQ; ;<!K뮨{ۧ+<& иf*IK 06rraK(f+[+c0t;ܻˑ D! ی*] XkIU p ʭJ1 Yf,M,g p˚NJ1Jk/QyʱL[L@K@<,ܶ,4<1*8;|*:Ъ1+jGz( NJȳl콞|̶ 4L < ڼ< 0JJ)ˣ%ěAƸLn4ί.@Pz0ڴGˎX+].< Тlͯ+Tzд#rL<;`̆\@Ϳk3<`Pϱ X}xc۱ƫM|i'v^MɼK -,2}j=^ZZ;<ܸͭ*@ ӈmF6ů۸P҄|؆mب B6 ּ@V=ؚڬQ'-؄:0دګۼmM ݉ |ʝզkʛ. ۳{јɝΌrƏ]@ ʹ@pnӪô-ظm] J )Mȉ Vm}ߡIqΝҦn1m޳=ܥ-!nަM8 >zⶽ:P1@.3>_=N <нI=#.1o;LljōPQ.AaLMZ , q-nsG1 :pnprd}*\lA .Nͱm'zь@a>A}.(:@l m>W)Mҽ >nV1-1m^ű KNnj<=.>Ndnʾ *}1C@ Na>9~^<^o}1 p?[ N \%&^C0ߕӫ*1.?./?1&?^=oADݛ7.@01I?-A0xa.M̐ n_Cq|m^|-dҗm>_I^\ŝ!]O?Z6nQOɢ=Ӿ?n@o nXoN\^o1JA#XA .dC%NXE5nNjD$o)O`B 1e H&<OA%ZQIC,yĉ,c AHs'A%}*%[Yiծ%ʴ$ O\" 1ٗ_X$a&\aĉ-%ԕ-WĈ!sߛÎUgСEWdQnkl&L:?կgu):9ݬzo"G6®#+= 4@Ѯ;m>8 / yBB 3Ԑ߂cP*LDSDQA"[5bbpBΦTqGcQX"DBqI&ZlAրH੫vO, sL2R_2 x& ʴN<=:S( Q& b BiCT0<#t=OR?-sSN~+QztTR#Lc2N" SkRk0[?ۤQ (rL[U63>ʄh2N Iΐ][p3MhSӿh[bՊa!oÕwއƵTbƬ C F5';L >V8 vxv *wEc3%b(2Vb0H+f7%^c(g[Va^w%yiLlbC nPBf{l=b WR~NwKz+~ {o%jOy Z 'B뻑Pc{QG9Z•`fC:,VbcHt1U[pe𔹣 ҅A{sg?KawX%V^kyߣoJp6\uqSWɝMߦ]¯L_ =}~ڗʮf(1 +Ǐ- (`UD=^i_Q'?gSeʶݱPvbew&CMf,!hV8/wmiuuDn8%\iW~uN"z#,Ti {%~ S,c]iM(;ɎQb5J28 j!`/=!1Hb[׎"AG>َ@ Y,gh܆(%-Ւ$elI w$M ^p bT~|GיԢ͍m-|a gXp=aX#&qK >XineEX CPQpBD{;ALd(GYSr|+Z.H~]b0VD-o|T #j}Z,Y{s*A6e1 f$̟y%*,\# r^(wM|}jTZիfumkčkC܀c)Pc{"fHdea.x-nu}mlg[@ѱB$̋n4 j 0#;#E~ȯع:OwovHE\icسU0e+DwJxM~r`~z \̸F"~WunA0ϖpfin'~l#Kgzӝa} ZS;dNn֜aiwo QÎ!>1 `<]m "?]s gU A'1ci3;9:g^6y[2fԯr9?OțX!JN Az{$'>zR"c'Z~WSj X_!ך*,MWO ( O??P',W~_ @@,@<@?2K1 (3P -';_ës#"[L6e>>:Bϩڒ; c 4 |@?̿$?D@'|B(\B)@#*dB"\! Aުӹs3O[6 L )^AC/ d?@? B $BCC\?@4+c&?D<0$d+BBDD?NDIDRQ?lIDXDDY,ENPDB"4 >=>~"=+A 5p#ds=ktA"+C C/\Gw|__y{0l@#KE!L0H T; ;H1w? ?0GLx,HxKldLlɖL|ʌ̼dMǿ̽TL/JJT3$*3cC\K1v tMլxM4ͦL@ =DGu[ ]]U[ܵa VV3Z:0EUTX6o=TuH܈h9 aYUs,|ۜ\M[-ݛSvW^u ß=]A֡ >4.XTeZ 6_Xm%T֌Q=ZZc^`5يQ ` \ `c-aN_^m`faaa^8G @8m޵ipB؝_n5ۭV؊\+=\HmE^%*-t`!\Dc "[c9c:c;cV] ZE^0+em:0<\݂-.^\TZa);tB5 fH7~sRZH`Wee]_nceYfbfZ^Y`WVb7eȊe^n^[ne gjffaerh.h>g?d)z&^ӞS[_ǭbݥ<3]mߍ](oTHM^%S5".5S>T>d >ԐKUCh]4Fui!bݔv^SN钖N&jTf]..j{fj5꒾j{C`3) 0}Nb%h+j&6F[]^2h~>lNlnl!}znŦľl6e6l쯦J?E _K])dbߥvVfͭ5b> [3V^nĦlfl"vviǦnnˎ<>"*: ]cb5__۾DUXjZ凾뼵Tgٝ>uݲF)"p V^Bo>c  ' np:^lƶq pþhW!/.vzgqqYޛb;t_*׍[?_V}(Z ,jVnߑ}v)1 _!6bS@s6"6⸒C/}6G.>n}T<|t/K)AMGmKt)tMp}SOGIRStZWt] t /Q_^Fm.nվ`v*vtZW_vUKar--nT.-*.`dUܫ5T:ȃhLodhC6kUg}~q_f33#@UuYguhu>p xG?uUPxÎg?OPge7ySyoyxxhW?=yXsHGx'1#v_p?xEu~mGۂ6{4 4'凳G'4%-QB;+W(oRQ\UR.GJ7_|?|ӃxWYgЏo|Ư|77~oo_}Ǫ|&c/oDsk߇|w.Tef+W.kA8{\{/g?4xBԞs~w~]<9'p „>",G„ :l( B#(!A+8"C?nK-' YNSN#t…ѝA#S5D#uJj԰L#@PX;8rm]̴ac4i:0 Ai0A N7$8zFBn.cMojt蠡VTiˊMGFU۶Q;V{)|JQEܺES9Z*Y{n)ܪutQEjg>Ь\.jOO 6Pa!`KN쥗~XfpFW[q!sD5D[jo܊m'#Q !I\zFZ)UZy<*Uz#ji- @^sX\lew{F ֘Mx^eYPfauY)$Ur.V7勢i)1X5v9j7o9[faV/2uX` y*yr!+uat߭p9W]m$mбj`v[ yО9:턙|aXfi)W ;fR֚u%bM[ۨ)*i1?U֍!M}[GEΒٖqwNTށʏ٧WDۖjVH"lF7U`{;.@tde&"g<܌b,f갤0Iq6Yjr=G7UU;8V,cc[ŚNJF=$ l~AtSKE]Ѧq;?tB@Q*HcrHjF05Nث:q*] J waUpںz߰rӦ>\6O4?f# x PZыЄԵuKԖNvxQZ< ~E  3Ca ;>T sZg6"& bE8b+n/- zzE ь+W#*]Bc*%&.EY~]P t4f]Xk-fMk",CR)b &:Bq,?^&w]?⬷ű9qGXut!Lr.D)2wLT1 )q%Eahл܅B BzyZ; y\CAAɔ~K]gP+2՘K\Q@s]9y%Qc'7Dz5)ח=o>Iň1Ji640zW8uX:ʀż C. 2\ĀD.>=$zN2'U3u^FҐ<C / Dخz)mhGK11& O^Ur X*ʼդ EKBJťn-$^jB֭:HZV<+Ԣ-g\32 k{ZЦACd&Yկ\'e3ZB:A ׽Cpmʏ6dqe8^Į2Cp_:!9zNCd,;70;^B.g[J%sWt0b`K5Cl,]te(^91AWYt%L /sO!,eEjQv2E^k !df鲙\uBWYf'XeigBZ ,fUY^Ϣ4Z7\+y#ʷBt4* -UjڜGV=єeh uZ2hPD+̐Ntk_jJ ̄}tisk9Y j.NJrHDZh0T\43lA=f]~2}`ke,p[ys-yݿ7]O-IC0|x!Q\ }shՈ tP&wsN!^ ~Ƶing 3d;9sw|N~<ɿM(1[HZ[92.C:*^T`='r?Y?俱2YW>`(ZBȿ?&ZXbU`Qs@T$c=W`v)'?@=`J.""" b^[njzBH@e*w #&QH2q.B)$IiKʐS~F*Bs9iNRhJ9bc&Ω:*iIڡi`~F+FsRkvd2'l}*$S9僐*Tj]B$e<Nin* Ԫ2i#ʛ9WBX[qRRFYYi*~¯+HbZ뤶j\0*!-fʫYf);>lrB*m&N*ђꜙ+闖_NkjgtYc* JB,#$+ݖY, Dۑ,P>Q'Ds'/[;~B}~G_gW>臾>N%>"?۟S>>_}ٻ0#?>֧~CE >?,7w=;؟>Ӿo?G?W=8ǿ%K|tB~>J0C2tX0 2,bGjqF@bHĘ'rI-Rӣ#J n|$ĜMG* AGlXcɖ5{-ƊiȶrV n4gDWFuS@JݙM g.2弒 r;r+˿H&- jl債Ɩ5/^>r޸wlkhʣ/ 1yZөW/ۻ@O jNI֎YnsU6tEpBy)cB1n8dmD2* @")ږɥ<1\SHCvCQr>d޺#!.|[=L2ΫԆ;#Ω :컸ϵR<0ď|0ۈ"M9|.X:mo7ڠ N,ƏČD%*Mؔ{O6MjYZ+p9T)*,UH-c @F ܈A(O,m2):SB5ZlCQһȧ&550QJ]piNp}i%UY~]rAZ4 (/; s,L3KSeBd*X|@{p2,Hø-Vlsyo^0 tSTڴeqt6muŮ+&S9 P2]FeΊɥ3M5dC ;+S6zm $qp|d*V=-ªjKuP= j5+~mb]BT~ O!6a cnz]V 5V AĶNmε%>)Sx7XWbţ<哹X4ܸ`KvTı%$9w볼gp0E{:;4 J|Dy`c$`S F R 3ۓP^iх&ᴙIip f@AN$#Pmfv6sF$%j"5L\2[Ϫ(<ĥ 8oĘ#M\ă4NxB =ZPGݒrXgfdI[@(2M7*3Nkn6 M:c΃,38]YdILQ;Yl':` A+#F#dctP@N;޸]֏sLz6mW=A%zw[7\Du;8=LGt⋖~/ fmr7"NE ܃ն0k*!RQ3lU7bE7g6-{Kcq'Zx @YJlq1V L% u`nY# rLWVCR9LgϲTp̏/ȥ1N3_ _Y B$=iJEƝBН>xf>4Պ9ɳB<s !Uق!mUfld/[InD cA~}팺ֻt%r/#%c8P 2Ŵ?}vd{Z w; 2e7<%`^pվ8?mV.Lr0y@副|iqah{A?yԶq:cI'>lo;\/cv l ^3 9['{MrVֿ\Ե+?/ 9ycuLn~ܮI+^}G1ssy2=z:>tOTq<:1*{9v?Z<^ @X ~Z|} L0|'{o?B$Ynxp}nx tGqxRFRgsz3w&(l }W}zY|q |.xuugyHv:؃vqgyGxHJ08{Y)r}QHGSu!7[HFɦlX(0׆IhW}17)hnP7sRyׂQD@cwouiD`H$PXHhE9x׊ԅ1Hrh>Q'~}wX:(~ow'pE(w҈ %gHэ ;ϧcy@( (8G8S}W+XF"؀G(.`vx.Oׄ$@H؍w`G[up&g8h!I?Xj@hĘ)SwXX @(efp|'@Sgh+%tR#~4y(J$TqU'ɍxYi=g"Ҕ8x$P8)vxv0+8Dh+xu9LYTv- 9"jY Njlٓ.9Sz)y)P:  fny{봑9:XFK) V9ܹV'9(Yɒ#'ne&*Б;ɓ.'Ֆ(*Iyā%ew -5`~A}Ȏݸщў6h: :)X9+0>4'X+Z1,cf֋ϹM `Vk)*J ijMiiѧo꧲!,SfɠeY ٥mȗv;_ᦙz\yi).N an iٸ(w8Jqp*Ś!P:z: 4hJI Z)_ ڮպ꫇*J*)譖*zzv1/pZkMYj8Ѥ(Z fϩ+$ ў#0(K  @ۨzqf8Ϫ:д@0QZjVkK[Z&PCK 7K`KP˶!CkINKѳ|[JٰGy!P*M*S. k>cQiw  x*Wz9[ۻb p:˴iKA{뼔6;+1 !;RZ~!*M KK{˾o'0.*`L~[G[J+Zh[ʻn$ [I10۽(,Ыˑ:1P#+{7L໰*_۵<6|u1C8SA`V|лܚ_l[cܿn;|hƷ&8o;hI:N,ڽCbUQiXǎ\I|' * "K:p{L1еiɈ{ʞs;j{X =%,CȽL,*󋷹H̒A˂, +<،œI{[\ [ Ll !lLƀz }=t1,\ я\i*#+ ;{ѐ> à$|,ZAˀ jA:mk /PF}H-;ͺ,Hp7mMSӎۤMMS-^AKZ l]|lp,6}Hxķ-Հ-m ZB0ŊՌJ֎n}$N˝KPu]\ܰ?BPѦ,Мm(ڥN#] (ܚE媏/B4C=-cMˎ}Ⱥؗ }ݦ]Pm1}ka A ߀\Nצ }&*/BPٷJ—P)ڦڝ .').]S?ͽUp;~Rl=0>?j+F& \勬ɌK9W/?ONRT!P*J?̭f=PnT`?U+~]mQ>M刮YΠRc}@ꕞx$/閍A̾MN@~w?nك Q䷎<=>K@NVI[ٜM>]F=Q^4-0P<P A)1M0 -~x!~_%+uşJPM*o\n߯>/>n7普nMDO4oОOIBoVp,-N,T`4UO[0h\!/FbV`V?,!NMV_w)ێO^|0|ۖA/E^)h&>0sfn>+aZ> > C_a? o»>POjpE0孮˿ގ/A'A/W`WJALCN NXE5nG!E$Yɋ=T bC!~ ᩤ+ l!5jP"PRQNZUY)Tٰ% &dҴSN*BJC]y7*זŒabLl9+ڥ '_[puwY{m!3@TppG=ۧA~'ni| $*0"~F\DST<}ܩip5d+0!' HXiE$T<{yV_kj-*1@z54L4=IЁ)#&,E P7LO*MB 55s}a! ;~D7/Ct#"'CK5TYe,Q1/(, $7N?ϟ0kh3XdUvYfuYhvZjZlv[nm4>mw` ~"1K^Mʆ*1!2{*!)F_x` 6`7v2Vx:' Hz "b-HmMdSVye[N\tb\%:ֽLcT5L0%!V,F~hꫫkĚk;k>;kѶzm~{妻nz{nZomFn;m bI܄$~'J 6R7@vď-G @>t7>xχOyo~}Qx^zy}{מ'^}zO{`'o ~ ЧwBW<։Gr $WKȼh^ˉP"Lvw _yC ~> bhD$&Q"x BqS|__5DG6ӝ' *1KHF%&e!ElXvQw6aC]PhaDPإ }gZ#?P38;fD9NNy-bs:%79A2^ɹ a:HrQ;Ϲ;qsD'7 9Nӟ'<-vs<;7zgCl2mh>8u9-qZ.8tOA3 )q!;%Nz-p3<z:|LhTjՄsլFIQ>>cgY Vߡ!'Ui9/Vvּ6ֲDk]U=~3zU]Wޒt&_.6#Ckxmv#EC9$Y& IZ،t49U z5O lkc[֪>6Mͫ7[ mW\FUS-nSh\^~U][BZ2x PNNsZ:N`TnD/&МR喻u*t!>WTi0eTZ O%WLEl݆<"V^J*2d&S/<f6;uoɇeX4e`VvD 72^}8oSL)7KغC9~'>p |i#0mnnS~m`|37{_ÎЋ/)z֟-%Qo={/h| ^7>yJMK:v[:"Ye] x&!|9ǿO_;mi?ӔFp<42y=4? @?+?C,? ?9@C @++??[ {`/)6xƒ{{'7;,Dé .` E 8c?-@pA-t[.C2,C3k ,E^I2!ʋIEP E ʛ{+gʉAF;J :GK>,^lʙc#gJG:| R[DŽ58I 0-[?* ~CG"!j3>|/>E,B)} )(t LGlͶđ̥lشAؔMM td,ٌGQD .RR$ OhR& S-C+}ӨR2P00MS/S'ћP@EMI5҂ /ݗ+} Hgā|>+44xAW8X'ȑՉUQ"}!E#Ռc5OHV0 3VEs 8!=NMg֐Q8ERBUlЏ hVVjIv 0flWp:"=s5V#Wl}/eM#c]Ҁ<{VNG+Txm 0 /R"}E ؎kDTt[}ՂQU̓]Y~u=P҅Vm(YRyVdTu&y]بZu0Z}ZM}%֑Zڤ|ڥfڦڃuجbMڈUR(VH%=ך"Zȁ)t,KKL?YY)F 4@YEt>׍Z[U[d׿ص[UՕ۳Mں5[֯ZXQݧm:ٗ?UQ5ۚ`滉 ӿ [ޭ^T#](%MU *`7ĥ3Yp2\- тY4ZӬ +]Չ6ň~:j(2jn_+O  Ą8Z.\-?,ZYک >^\. & ;7ѭsa8(; m:#)Rc|v>z].hhyM7vgbވeg2tU6Zt.WقcfA0kB c6Q?S\~"kU̧ƈ~Ck~T}hwg `(&leꈦfqlieiDgV Mmt4UOAPPV\F%ftcO㞈'LnN<=lVvl ]l>jnwnd..m^nnn^Fżd%VsM&fmEfNۦXm -m7E_tќmTEVE=[-^5DqkrcVwH롆]>ar7gntkT^d&ok2/U^ujeEߋn"1r,?"skkڬSm'Y @턈p ~GDEA ZUe"vrL Ac-gFe_qLdUnu%7$_sU9u~cr_hd8>iuvj_qFru#Kn(7eu/%ugvyeUD׬ Lgٴg 燵.f @g'@ކ]$ѝ}8nwb7'7tkbbZѽSs,p:ߘ_ܔ._yyy/zbS'yTߐU:pT7nywOWzQF3yzy3 8xwtTnՊ? wpNNa(Lj.D~zpȏS~7թ|'wO:pp)̸AO2wo4}uD_?_}UN??}V-uZ>~~wSg~P)` W't|)DŒ4DƉAi.D8AIŌILCq#Ȑ"G1$ q.D3Ϡc$3 ?s…I_g^LFnuтQ&-bVNj56l\d.5+ݪMu;8[N#0YN][Z̑*tf+v ԩFE8ph"?E%3o$ʐR߾ 6OA 89>vR!hns~}.WMegWIKTqNTA>uVYDXTR5Fj2SLDz^OETD ^MUYn{yddazPApdn=^}at'Ђ_^fbYo*Epy !Q_y4UeQS K.TwT%OQۆ#V-Đ-)dޏy}!C v9חTIʍ1#͹ ;nbaə~ɮX!ǑU.B\]嬣l9gԵh9ygH]ʸ!eէγhR_UC'Q~Tr ? /ri_*Fn$Hx||"eDt\28 R8APOu! Ey#Hf>wԙ KR(Agu^Y>Ŏv!ZR<ʰ~OVa#]ZP!":8cuק,x/PYB"=g%J2: 9kdN2G$JIeh?)pQޑW@5oJX9\9V*"T hh2:b2AF9&w;!ZC&6sC8Z8La% v#8A8䒊:wNم|'<)yS4E6(.b79&ȴ)kӝhZN#@bh:C PhE3j~d(>On4#%GIjQ})?pђfD )4eZӘEN- Ҏ$ h>_Szԥ-OS洢G*>_|* iHҕVDHњը9PٺӓBJ5OqRJUDH&Q@ؔD\ІVQH zЂs$r&P*,]kLSZU ii3QvE5kYڲ$|e]:jVSգƶh-lZVĩ5=ih}-Sߺҧv@HuS4mI]ԪE(`Ѥ(}}1I pHPP eِMHKXahC%JX ԰B)b1߆ĂpE1o 0aXX=+Yػըic [xehDIlf5f5ƘvkQK W_nU ctɃ] &FySp;8k8ňlCfآb#I@سY,-X.8#t3͏V,~fzFF a?l_-#u 7Տ/1jUu2vuI_ƾ6ìmj#﴿_]ɓE}or܊f4}C` w[䬮Cy+ӹ k|#ҧ.xO nKߘNga |zY+kc ;s^A!ٟ^s<#e^`^!`y `zq` z`1 l ] &q  51- m_> v_Zl%L`1!-^!!_ &} y^ Ybz_>!aDVa z bbz`$ "!ea$ƟX% "Mơ63>#4FV 3JcslZ6n#7vcC6z#Ic,#?>@>!8R AfD=&$C69B.?BC^$F2E#DfUDzH#6H:N`=#=$LdIXK$!KL"IjNeLRHFP:G:RS#=ZF$BeEl!H$B*dDE#R$K֤FpbV:2YRYVdWXa6R$PO(Uf(nqFU (uJbf(.hYh(ƨfn!'f)"(NJ)n^ֹc@!,^ H*\ȰÇ#JHŋ3jȱ<Iɓ(S\ɲC.cʜI͛8sϟ@ D*]ʴSJJիXjʵkzKٱbE۷p<@@[xQ\  ]++nD6K[PY OʘCTz~װG3Lsލfw!@Mq;l5ǣK ` 6!+9;Aý_̈́[KnO>wO]0tjuWk٧(ѳ_:C&4oY v!J퇐;Zșr\zI!"4`yM@v/);Chyp,u]C@ 9t2Ch͗{`&h=yBأ&Agv)4La%^V8̐љh4DTXdyjcXU*j[v)B@a.:CkDO8S鮓ިyzNj$㌙2b(s-:8f*C.NO;ҘMElzK -AcTX8*lZGnMeb8X5}S_V|V1Dw$i2)bIN!k>`ZV*Ʈˁ@A/p]HE۾DJ|s]}WC@(,~j@tDL,=N2d$B TkatD96Q:nL(Gё'z+G> Ai9HjeHHz26%+K1,Z$EhVnq i^VN8GX3{K`:< 4gt5fxcNkiA"rN,ry9yENl9Y =uĝ|tg@*{SPHY9s! eFRK e,E7ҳsY|d'6%jLa -ͩ{,,x(=8dPӢzeE&9Β2+5T2R)R,>զNT 4kh=hJrS)H-PDGKN"]}^W*yZsg.Z׽6#<ј9 h^KٚD͔IGj6 O.=Ǥ_EZD퐎TfV,An޶u̚pHG^Z-?tfaTG]LuvgT~HW 5j\<*wMK Rjy ѝ@vKt4")3֕2Έ0(ª#a[*De)OShȆ;ˎy0><0_-i%Pֳ(彮@n"{}TY[P>](r6}r\^+@rdӣ2 MNTldt*fߒpkLˀ-l,^B#q)yITGHKDp/>9DتBȦUMg3Iv)G[tiM`Y}$+x6( 7 4\AOg"NJ[ p6]4׷…mv9yke2c@nȹ38T+m <>>G\u/̀?f\wlH;qT'8?-]sR4_iw@ "عoFn^"׾? Y?wz`zox')-[쭽5gr]_X{чql.6X@ˋH}!|eCno;P|w+Өqi~'WHKʅc ~<(͙9)IɆ)u)`I+`a7j1]hbi8 *HRylX:ZtOꞲxVIɢYt/Zx*Ї8T:;*q!9EZ Qr'XzI≍8)+P I{GY'Q zu7o㗍4'YR*: *#0ljopꪯ:ڃ%YX2* Y8g`ꩲJhҪ?ڭ*Z=F=9܊Qy9z8Ƀɫ*PjQ_ڠG0~J(:Yk@Y*ЦiDDZAڨ*P t#Rנ*JRڜ(jQyP%) qȫE5kAnذ8uRg$/CkjUYKʱ$YAz;~&[QW M m:u/;Q}뷢n۵(TA tAمI%pʷ Q_Ѕ`9zjk@]X:^p,څu{J/ѹһ# yv{@ѹ;QPo۠{ئڻEz;"tdk:"uJu;+#\A mcۼ:Q(|M9˞.ud|;AP7"0u`iBzG %l +UJ̶l@pJd\ rXi3kQl L.m T,Ƃ|<>ş ٺF[_:—/; r̹}[ǠJS|H:`_#e^@^w-mΉg.J粽疌ێ>؛;xIPʺPnDn5~eWӃ\R>N;[2 QH)cۜJ>aNsv.!Ja֎ލjm.՞b.>`E>ʵݨ.u<^ ?&^f%N?iMk>_9/ح޹PaRn%oKd<^aَ@pO\ήn1=| nNP#~ d_fMSQa}CAYž'*;Og4[DovY: |B ;_ECn/,.-P >Ypã r /q4Zq8?r?1ն-,@ tL?яB?B"&-0p*;== Oɐ!J o+ %NXE5nG!E$YI)Us:~hnMwfTّO1ZHC!.tUYnW=s SY2s +hP1 =8yb*m&\aĉ}sfAiy &'ѹB@_z#pjbԩUfݺ`D1qKC+JsѥO' 6ܺᙩ數a`*V^}ZԦϿԒ0*pJ4 l &‚ pC;DpB ,o,8 J6l )V8xbZbukW`MUhQ(sb7[vY\k$PUN>U|gHI86]hbmi~H6juD(4u:) !2`zm'&Z"{~|'<m4+ Y1˷Gȇ/} iX|p?CPB%>^AJ-YL`=ؓNnV^U=,pBȰ}P3Rݕ!N^W5`AyaO|HC$nEpXBC3A*FėD0kXqCP>U-0WFJ8Qp(,D%H͔Y+i1ƣdf93lT JoUGƅT:ŧR5vn҂Z!}YQ# RƣH} I+\S\"IIS0қOse5NN|aSŋs"ǫƵ0Y]2M̨8?'oL+ElCelcXFVle-{YfVlg=Yvݰk4S)lckQb$9X3Dt!Rxkh}[W%nq{\U?QADZ:ζ+P2ZA)l%oy{^Wm(>kW_t!Sv :q5'';|a߻^?1a]^3 I_~x a?/([3z먯޽~z=y%hO;Y7.KG{G~##c?;??fK>>?S=ԃ>(9ߙ{.kh߫Kᣢ۫8 !"3 >׳9A; 8kB{? l@s @$B髾*4B!>C>2&B 3|B(T€kC0$ƒ{B4\B1= .0:y˃PB{@ ;-!=7qc:<0X7ĉAG:VD]Fi3lDBl}$"B4jQF\@GžhH>; ȉm  A4+qAxG, sv _1^`2^^`&/b%D7c̘5~;^c8a?_>c>0^06c`icEFd HFcdF'cMdPLeZҝꥠuԊPhbxⰘb4X#d -nZ^XS~cyGb &dE.<`ib~EfQA6䯕kfd@.fPffsd<~cSf=dr.f/["DZ]e~D+HUYVbX))4壂ޣjGm. GޡK"{FiKj=eIjU^3-{fihUVz&!iFiZ6ga ~FBAjiޓjƫ#k+Gž$bȾ_nlm-&^l輖V^^bҎF~^.imvlƖ^K2J mm6ik͆l.nmֶ .*vу^Z&^Ħ^mܖoڦ~ ^moǖ_oӾoM^o./pmVnNp~ln7~ͅbhZAJ׍`ԘbW>ޮlo_vmhHp g!'?r"˦)o+(oqQP0w;gy3o-%&Y/ BHAh"3A7EwFG(nDt$tl$q$pēXHe 4`.|ŏ0OZג[?\^eU`bab_h#^3@*ꈫM ^vt]6vɏ8v v&nbF(:wFrǮvqL{p3א~7O.'$N`b$^4@?qXhCw]}||oYk|r␇*^yψY/y/ytgyh]nj*zt_bQ=v^A/n6 lM޼Zi_z) AB>w7"zG#M7yz{Yy޴y-w3U|x#=zGգ*{+5R<{xo$ˇ?**XCgGnxU_xGhbO}^[AB|=|{sїȧޢw_{7zz7]6|7&҇:xE$zTw$eGA.E I䠓 ͠ᇦČ7r#Ȑ$1MF?Ѥ#'EPÇ]d\ؓ%$aѠDZԈϛQ7-jUPCb z°[:)YifPRQŖ՚ ڧm ,[3W) :i>41h2c"G#!8p$4( J֭[^tь3:ӯM2mΘwq@kM9΄rXq+;V:recFTNrwZI} S>%/_2DVɇ¡B^pYfrCuלsgIGy&SqM4KVFxhk?(9[KUmPT[1ߓ]TC=B[-dQɁnUf P=Ceu&;ff{2)́UwoQ'l,W5\MsrFP$Y $AGYe:fKAeO! dxɘfD~TFJFhdUeFI,H:z hB~EJGf$?KєKDvF$:ݐn g_o~xH*'ڇ'۪z$?+f-jd{SkdD7yDf֦&KMY3Jy5p H*DcT2/-'.-KԨ`^zU jH15Q5q~-4R#eӶujKJ8X2*^ ᚝A-U'jdK5GfHevPUVmO"MHDZ~|&_o(JvYUhgt&-+-]Ke+u{^2WX xiHc5F\+jX}/یQ75 ɫsS[7bB)6uCB##k+$kj$Qۙq\5t3?؂DRXs6#r1I%[gfՒ1j֙&o;NwUUF26^,U3#_KHۮc~)6s0I]&';s#8čCȥi\z5iCZ+iQgҖ'BY:ӯuBpkCҟ~D)k[E=S{iiR{ԯdO{>ukezӥ&`#[Խ&G~}nwoήMk#tvC8j[ H{U'CLԀxujMտvWkxߛ5o}+>!jc4_o&7YMl\"9K鍃;:)ʽmuL#Z7˹p|Iy%zY Lov^p'!;3s^~{ n?< )#v'єH#2p@x&.I7=j՗74~uLJwks\j7o[nݳ~7>Gm{~g5_qf~e|נgw/og52}g^b.!&]% #&" ?@EF:"rM%c\6n#8.$;b$!?*2Dr6&6cJNaYEERaJH Edr#:~?%NP YGhiChXOBd QB\NM=f;>>cA>EaOF$J~;;eX£NR$0JdG#F*Gf%LeC=FdC6"[dRBeU$7.@D"&?eg>#tRF$&kk&l^j&X#$T $Dn:onFmq'r&pFpjDo&kY CoB'vfvnh|qlr'H<yo'Mj&zgpi΄u gjngFlF̦|Hxʄj g~g}rhx(|>nnn'u:'vn…&zs>y4(~'&~G6(*(~z'uJČ^荪fm^':'}p G_%`͐.iq֦i~(lzjI>ܖBZ(?`g '&Ti~ *(Jė{')}z|R{}Nh'~R(p'hhzh'hJ)jިf)g %,#D&8i9>t Ҟ6R~騚Ji.z:'sn™Zj{2hVgzFf2'(疖ꢖi VjŠ{^'Zi(ڨRgmv*FiBq4)Z(FzixZ$*,>&lGfn2,FN,Z«R,fnk>,~,ȆȆǎɞ,ʦG\ʶ2žlB֬,vJ,,,ll&&n*C>z&"fV-yJ6-b) (نŽ-nBmۂ-Biٺ(-fٖhn&Bʩ n-fpBz^Znn.(n&.kٞ-ޭ*.஭֮Fm&n~Dj‡R.o*j冂% B(p䶮vrBn.zfnBon.n֫஭kj+V.6 nR.N︞nKz"ˮ).梯&) .&D'|oQ.n-ðD.aFnnop1.)Jq*fm F&1'f0N/B0֮i:/ p!,^ H*\ȰÇ#JHŋ3jؠ~6(p@H!;dK~490fBnJѣH*]ʴ)ѕ _Bm# 48`+; 鴬ٳhӪ]v)Ɂ] De"KP<|yA/Ƕ]̸ǐ#v!"@z`I!y"Ip+?ňOXװc˞] qHh6KKA`tZӞNOY3xt E@*^ EmR۽ux]q?dP*фJ/ʾ`f5^w{ X&HA~cGq+Iu_3 <瓉Uԇ%|DJ(ȴiG:~GBc9+Y\QFBG|V|33G%J221G&QޑfH?:RS AiECr>LBNw ;ZBf޳n*āVYr W4L% ! `EƘpx2 '#h6RҲ#H*Xq!&BT:Ӵۘcg:*@D[+6Qniz3tY{ ՛T5ndp:0zFV jնjYZC-*J萣6z@rAC"u`q!*pT2[, ,8!*@,-t EqxV`5cZVmn[ַ'kFXJh?iq*țr0,;5Lg W՟bG~QCE4Y~vc/9h}~ H俶-w+`0%peI_T"=@E~l–#C\ )NUmdu]xγu<䈸u70a: [׻cg7ޞ dI(݈mFE*(ג~N DuLQKh; ׃wkAyFGÅ4`"'-iĒ٩U+ %Q7wm`9(TUU;KG.yl&vY"]~a,4wNҭEP4:rFH'-W'oʕ^J!޲")˶Pwu{xd#j ,}\n Uz^@c{8KeffR2EӥNwct=4ʈk~d{nWt]YoyuM]_ӕEvj` Ǽw:؅R{z~\|0sQ'æ6;BfS @ܷ7ͺ_yS|i_|5zcc.ܽ| rsq ttنqڶX qqLwtPtgmwy$pڇ},HWq2tgKq5ڦ|<bH]ȃpj8uxy()H-Xq\[o`JG7H]8ږxjH( ؅HxQP}VX|xS@4xv^vh ؁؈؈^xhNP!8H X ?Ȉ(pjȃ"H7+؋yHeƈoWzuNJ:xEXEPxyTH؍~6exօ!|Xz X`8A85aXeHgW(h브H8] T$ B/ea9xAИI]8Ȅ7 &@ Dxox؅1bhgȌw`$~e]hhp~f4yjGIq$ȑٕ}a9Lwd9e׃qkGy|IhSIfؔ&Qؑ9I!He9nFJiMɌz{ H xhȍYC! u'6ʈf;x,hَ7ii|9gvŝؓ秗R 6َ0ٖM)s8Zl/(zg(9y6G 8EOh) ʌۙڙW)'Z!HI]RvqYZ)I] ɊT8 6j$H^A*$g-.Xiy`pڌ4jjPz^IP8M[f*uhzT$vyfUڙٖl*Z9sZe:gyFO,sdzɝ<ȡk :娕gxj}ȹ -z)WOٖʑ* yɣ駀H@nbAx)ȡ8uJDɭ[~UzǢ O (yu ZjBˠעk1Z)ʑ3ڐ 8j!Z[w :^, 9*7ٟ:*:*"j'|zuA*xsۉxmII/˴Ezly1|ږV(t+iD; wW;٨!h^t$~붬ɰ}{r= hڗJK Ak3yaǸpfz~_y:x @S8uJny~ړyn)}+rj@k0KsȘ窏za@ ɵy:9ڗڲ!kaF|qlt6!՛՝' Ϻ=m̗<e= r+՚h<Ĵ 'ӖLLō꙱[ؖא}̖i"-zպٟϛM]=m)GԥP]rkVM-7=.}Ҙ=l\zn n=zZmr-(@}m|ApaSޝL=]`̘㜌᛽Y"P!b^a~F)ⳌӞLѯAY|ǻ Q&j1]!p.V寍<~}~@N^eaN(3]z]6}Tr {ٰ tR栮å>!Lϛ~6Swc$gP8}NWnv~^ %؎9!7Pm|5^;n^8l;]|"ٶyN\-k\_ ߐ½M!^nm/_&.E,1k>ɯn|}C^{h&Soݾr.>]x_)m w?azW>^N1m7}!!O+o琞YA y" ۨ(5^B_7~>^߽ }/](]_@z_ήC?M_.ӯy8L!> ("C ND@ ~Q!%D1I)UdK1eΤYM9ugO$PhQ Qቁ"6<aĄ ):'b$*EK]y_x%zhҧJ=8<#;ڍvpbWBLY kرeϦ]e 6)O1H\T ;VkkMV+Lŏ'_{8qN.X\sEd-6OGjZmL:=tAm=|N82"o-N4 )!JGRmsqG{\ ([묋B3 4#IZɭK06p) B ?$Hk?B JBh䧃sQFu4'$0N (I*N4*,$#S)GcuVZ) )B`"> D)󳬊Kտ**05IFEkv[n,0\S 67lv٭Rݝnڔŷ[~5¾B]2t^HNU4l:R׺Z Xkyd}2sH*p(ZdR]03mĘCb}MRƒz&K}%N""{ET&q6QjK*PWC&k&hҐ14K2;k~kA(9۰|[{kּȄEym#:M#j˭sn gp_=А>^FQhgVbdg.NCQt~3* Y`ƥY!NA~V*pM3NW$ رu !K"$|$xNfKIWNkRZعӁlDK_=0W3]cN0ɇI"؅5wʊ J@E(iAB^B //$jpvnMRAJkb|R!Hp`5$"ATF82lTU&a̹"֮X-苋ddMPʌedGkv#j+z9yJ@߱`GD0`e-]"1JY4˲hxl0U L@?ܥ@6` 6ER|$Pc6JZS3cQYؤΓ+Ё dPYDqgMjdi@/(sޑD&1= Ale)ԋ*J84~2<'D1)58 È(WfMdCYBiQHDP*g,VůT|M RJ҆,xFc3jYHHV h$[6L@q\92hv~Kt= fe,UP԰Okg4y;Ԓ Fs kFSzʀg^^qG؎6jlmA].+VڤK [j6hfeӦ +uI[ԥw *) ZY ׯԒ*{= ^ׂ٫rYZD.va{8l:cNEl^b`]pdRK=I+ъ.uol|0=[LkC>ZnMVeWӯ|_PSGK-L2,@7T?LӛJW`%YZ7Uj2 SU,pTK>Eee^pqvIJ|gLwK#I bIf^Sȝ~I ^س"t}yzj;ݸv[~po!zvev;юvN"X֛>#G:-BNYW4/qu.zWn:MmD8,V:^%߆/ /)x];MNO޸ |WYý~^Fױ0(Xe^sD\ H `+Mܐ*D'.C B C BBD>i7e0A EI|z$4|\|BH+st-1 1cķYÏc 0z*YLF Xfl8î>q\H[)N?vګxG8fkf|ET | ؉d\4 Dz#A Bl;I˿j;< T [B3AGTrT+ EBȟHmԁ >DɍKIcJXɧtr|H$3A+ɲJLEhEx,B=뛽KKKtJ_@ Be˿cFȌLYJ;LKDIԁ˖>lL|LCCSeOTDbF Q =ϒT4ILh LӴTKM]l TOU [|RUGTC\ 4Oy}X(e˽TzbY-؂5R5] 5\rD^CsѥudFWT K$RuR(j3F\Z"nmZFLK%[Zl'H;^^g[ Md80^V`h_yR!Wz%^|PZV]cf"=h(L!8,7 >ɺUIQ#ҺMb!!恝}O_>LaIǬjp!]^!Fjz j'FM偤i k\vOg O.=Tぬj7-Ϯ.j-j^ &ul>j\>kkW&i莽ⴕ^k6dƁ$(pl뢮۸l>a;.#[aE\ni7]vl6ul$@C7g톂e.T=5i.ZN^vkffovk~&^l6}o4In~f.d[f%H`N!n]~p @Nr ?_F͝FM=k( "PWwfޤFO_MC?i6 X/gp(@${l5v677Gs; 1)= N$/!P.RF%P/gsԤ&c'71IQ.p~N~A| [m!BOo9n-r-I/t^rM'Lu:nOsQO &uYw{jhwE8'tsWF{*Xt$9yN7vcH,}: meofg7pt q{`\>7B4t(CJosx77;5~ xh?x8xwȇGpP1c.Etw7d>t&s^]uGtP{r6 }p xp~hvo'~nqd4MK!!` D98two}wW|/{YGof{f{,pogJt_wN`=t>rIy/p{`/v nnWgژ=M50_}'fU&*HM_}xwL//zs{py0!}|׆_b +b` A C$P: " %ʨ1!!C6ID/8ѢI(i&Μ:w̹B'B-j(ҤJ2m)Ԩ<@|hWtBG q@1x`ŅqZؐ!P"ɐK<)HCҜoHpN*;Z3ТG/W}6=ɚEvڂ@t/ÅGD rb$2Dl|%t.GoN\dʥgϛe/oo"J bC$ŎUSԘ3o‰zƒcq ښ (E*l6YpVPaR`(YKU! wzy h-=gЋlR$1'DƃC5F ""9*습utш(G8 G!Vƌ4lI %,$TǞPMWˌZ8E򲗥aqq&!( P"2^uMTMh?*xU\L<9=@B 9Ja̤3'@ hsEnR\;dA4G 2c^ gY;C*ң4s A/)hC=Vš bq5Y'كL2&UKZ8bE+,oR`Qâ4c|@X}1NFw' k8s3)A E0N~2(SS,&oUr(y\f,yMլe._n|e;y{6f?Ya&sf=[@;kf3D_K& ,{7)Ǽ.U_J+ (nAEb'`:;X%LPpC-}$+̏زms6-q>7M*1pp9˃MNaVN&-cĴ\| *?|d+$F62ߝN BgN7S򕳼.9̋ZP&MsV[hc*T } +8׵B a'l!P?PG;\V+),(~q̻I*g~;Wn2c18I Ǝm^ ".mmk]z4n1 8l( !]$rMϹSw4$~P, Pߚ?1/a[d3"?[+])==. 6`aYu縛ᑚh׽a݌(]XAH ܯ؛^ bALNPMM,ٳEybQIړum ^RBp XٜYv*F.Z-*15(GFcI2$mbJNb,6#Pڝ)ZENM"M)YL^[$4v$$.G$Uq6*aGn⥕ᥡR^A]AE? A ^M_`>)]"> 5v Y2!Y 8i"ݕ#TU$J~"TҙSz4Z,agRWFRg~VvNYWBchj3v%Oڜh$YjYT4fYz7ΦKR H~ْYU H&TҩYbQZ>ԩ{_^PСBZ^R\""zd{ 駏6M4\*\3ys隺)*j򩨩#;a %`: 0A aCVkAe 6cQi*RlAiaX*&V& h$!櫾+ʪeE_2y; >r[yn>|\r]E,v"B'~C&$$gmAPmҠi ,֬e>فl Z\ c%?c>xF,cDQh#`y)F%,n$6Yƭs-,5֭.}Z+l٦ڽ-+]! v `$zNx.`&2B3 EiZV&ȼҫo.ZZ&FV&f(j Zi١`]2 ꣤(_jԲ.{*m&򧧂,v]d5.j/ / kj  + 0 p0 0koް˒/ 3 +Vem\#!zj"bARÅ誮>^_~nGi~16"o֝+lvYdH: &&1G3 # %۰%CiKf2 ,nGq(+p$Oo()K%g)2'r.ƀrܨ`!}$ZHXZժĝ많{z.Ǣ~&ib ^f$ 3!j!+0Y=^?4>c"ƪ:"?-"WtjVqC/t:t"rBC4H{4Fs"^EtBgH%e 3IP  p_DL𧶱njm>)Pgj.P5quQ. 3˚J**3iٞ/Nc:=ǵ5 [\˵^!Y_^/`a^6e=^ *`sO-*2%R;A2%7(cj#ñk]奸:Q|*v坬Ydn"aǵb[6sraGstt_7uvo7sKw{^c:gcV3{-P  `8Gyn u znl~|{cuRZ5%>axgo8w#vc8b:>벊_ñ 6vv8/jd^~nB xR?kRt,AbhY]%mQ۳.yCfj\?yZ96ye r9!S﹇cv$:ޢCۢ?SטjaIsZR7]Js20h/yX6y莩 .3dž,Q'#[Lj[9a7o{瓷;cyp{s9{7z{>ճ;;'z|/zr{ć>{8ۨ_ T|{{WygFUОѡسczzvI@і]Εz zџ: 8:?ڎ_{Qz_W9ةT:/zS|3<˞6ν;A*=}ߧ#g/>{C;dz{~߯SWカ|;K=ݣ}{{~;A>Gc۞@X=/;Տú XZ?X3o?W=Ε<9'un,79?"T;8rp}(@郇Qv8S#79Lq%D5ufG"=8)J;m"]Zƌ;QdkƈK"(dC/vrOB 1N-C/@ TE1NcQcYrfdȨY 3![v g'dXI}@5YVf`אɜL_k'83n܊2V7w|ujҒ}kVS%NpoDC~ 9|I2eUXsb\yߠ\_8,z" ":i,MD OzoA@p04B5 xrϡ%" , K/@2L~;(<'m;4Jâ ӨMVBhK͵f[C֘4h̲.25Z5<[0ncR\4?#eB!]̿*hH r"Qӥ;GuQFJ:rTHz!GVPyURSi\+WWڕRGhGf;ZHn#P֪=r`.N/{ 5qrMB58ӓ`9.8Ԩ|=݁1f+H`eVU *Yvk?,ZeK&Y1<;O-ITaB$l_[ wU,xnIL^}1V۸E:Qae+`b$ӹΔ2V(GZjRMhy$$ ǰEN BÓ` )%3y'4hDёVr(H'юGb2a/{Eau"UL1j?f|Bjv4 Ӎqo\8:DFdiC}1ۙ ;Ih:6f,9 gA%ę RM-%15As t$B;9xr\*X4rB7P3 x Y\*!0Π"1c;( L>m;Z=mП҄T(5`-&/Y~RNظβъPe@x pyI@Gjn%;c'5 eLIXEteo.Z8f84N+Eҁ2r!H?FfT5!ZӁ ͩG`a&Xq5ތ>cB2C$*;+].wN~tjnZס&*tDtTN(3}zsDv20,m Q`PLhLM[ $q@Zek'ZEGsmRT!]&ї#o+%oEU/mzy+SB6rWc,7@L\}Yd*s"F1&w`d5x2M]L6#3gܫ%,,L&̠ ,EJM򡄖&),I~6rSiS Y;T4qL5,%;)̀cRAĝ:Vv<3gdH5Zۉ?jP6-#9i΁ʠ ˤX. Hj(΂48q0FϡF54n JƏbE % dO\.sOJ&IrJYJ0v02vP^4~P }&ɾ~En2 eTυȏ7 ާlL)N$( f P ,*(/r$NG$j*.8<?M43OM< JDP gJȰP]DqPf[̏.f Na Dq^JazOюYQއMoߊd>4 +J$ OHl&IN< qC GnphāD ԎoZ6U1ZMb!k#YMoN1:0'~D}X0c%UP% } hjX#+dְ :nd -H+P*G/M`"n o Ym^:#a%HQ,RQ #uS"O#S//#r1;%G#I%./g$s"e/GrVR:lN&Go . @ Fc@ɂ8oH* NKJ"0B+?LNF97)0iR4l:qMk3*gc3^LD %Ӂ҅'2_2;)q7'M!=5Q}1@5 E^>6K&5Kpc)ps%벦>i''4\Xt_b^E-3iWg ұ` Y ?*1/Pi ,֐t , p\Ck[K\AJ ΡP5'sX0:U"ߔT \mUTsOTT7e7S_PaDp#L ;C!.aSo>Tпm.6VQW77dzo"ǁ2  O]K5/&o*YIWu Π .n8 p4J8)[=ְ  {{w8w{ `||F|@ w 1ܗ~n޷ w ݗ|W}~~8~ @# 8# 8W~W}~#}3X} | X }XK817QxM ~mox#i؅7xmX~w{%{w{9| {`{ Ԙ @/4"}88@|{ A!{8{8?d{XyЗ η XW H؀qA8gهx+}!# wWC~axQ||7[;~ߗق؊Ox8y7Gחa؏Xy~X XɠQ 9؍7xf4f ZX|8A:8Y9״Kڐw|# 9zxڤSYה9ڤE:~C~WIw%1Jz{ z:9 к{Ky|Z1wU aَIY {99ک:yEڨO{z8w ` R~ " :wnº Y ys8yؑ%98Xߚ}[aXKYXMzQ9yߗzz;ù;ڼ۬A:-{yZۏ5:ڳZX{۱['{7XXK7@R{؏١AzO:ض{sX;g#ٸا[ٓ[|חQU99UZ8zۺz{ڰ9\ڸ{:M|{3Y|{zzxřF!Uڬ:< J;a۬{9{ ٦{ez)H-97[=Wz9|1}Y #*:zūݪK:UZEZ| ܡ;\;Zҥ}[۫];;\܉ZOڻ~]XU=Y|z)]ك77& ۬!^ZY=u<)H=I{3T[1XXzk}y:x{ݼz7ޡ;9^ 7|;{a}_{ڞ_XɡYYA:W @C t{x ];89W[-ws1^{|Z읺σa{͞{ Zի?K;׼|3>߽K?+9 %"O3X3NGCEisErxh`;U,v6)tV2h>~Ԑtpir}Fڕp]yHU[x+#vlK[lCr^6[jzֆUVs Yk5ZKveжwFtt&cw_Th ɗÙ7ߔQ*p+/y\Ubx]z `9t@IZitf#(uްv#˱%:d nAH}yFnn'KU*Q A("kaRueT 5TeH"U }Rf3"O*%-. 1 qC̢:ԵKHԚLhE-NPgLg/|deK6qpǿuE PLš jM~JB?>M%"ɂOHz!qbu[(1uQr\7(1nr$]7DGb|){~iqjq@ɣ`J޼ 'R :iK6KY1z7IppM;~.vC\F4Vź>6̳3hTU3ij L,e1} VPY~]9pſ)&i1!dbVNSVg(lބ'wyicyQk= #%nRKU]kR>ަbm49^OtH-N)TAP-Ӫ4)4@x8 nWi[ Ne뉅ɾFvk?,|aBD0!*l3氇M|AApH \gPqa'`{bx7uc N1<9.rqb XNb8P9|$;C1XIsGOAchrO {. CzDҦ`b1XpNf^cʹ#a %w!kArcB;U"g3\$p(D$ 8UӞfO >gr&ih2eGTFEYiP.oviNMgAߛ޸ }3:*tX47W>3dqL"[nZ˘Iqqwc8JCA$NJX4t8|*Vy4ā¶Y X }۪ s6Xnsަ ?eu{S>13XgfxQ B7KY1N nc/քBveZDMsrQ?fLfN`d'Wh szU:]YIhGZʣ1**ܹ)!h ~Ƥ sΙ避aqP ibGaxI‶ia `z< S{ɐ6Iƚ`x٤55In;wڣ)jRڱ K'b֚!ˣ!g([1Jjz s5̊b`Fڀ5 (7P٣8z=Z_ TJ:^{궊ز4 1bN;گ J)[)q+ͪ ڱ] Jp4泩hJ*#:/U+vHe۲f#k*zZf[/ L:J왭٥۲ʝʱZ۰"ػa+j׻(ZYxO{pkJV Z\\lۯH*`:˹Y^[vxJ* kK&Fm۶{MرKۜc!˪˶ \9 N@ֶLXw[[ʉSK+L{FتɵKh bMm O,vۿ[jkF|ǬY/Bڬ|b,ϻW @Hx Ya a ,z˓ڭ{ۻy5 }l ح8zŕu\5{[{=̳|lܸln@|J$͋\Eˆ|8*M,{E_* E|KۊK첅:Ō<{yz˾Ouɛ쯆眬{˷y,5ݢ|1jkġpS0 ʷzRxY FD Iv  q0ןtџ {={MH [Ϫʗ[ļ%|Mܼ{Tjܥ|ϛL{ʊףlЗMwsLMף n׼6 : XA9|VڢpLb=aJI}B|%mvmז٘[L-wmtڊP Ӽ O,;յ׺ޛ̙*4+ M٭Vs<՘w<|NJع=u\a ⨍yKK 0 YQ [i;[ۺ>~xm֭ƝL\ߥ ?ޣm^Hǃ-]${0Nږ=ᆜ-xkln#}m4}Ȍum0>^6}}"9 }PZ1 $俜ڢۍdž%|-t ^]$x - m̎^NȾث^X.ݸ}=oM =kح}ثS}jw=<..BlNܱ9 XܞԆo ǵNxܣIN 9|0幽l-n=,3~ϻ-\~"OȮ߉ݴ7xN?bעע簍Z/Z}@ Gͫ.Iܒ~݇'N~x-ؼMKӷ|mޭ^D>^YALBl//9~j ^mnQ/Wm *&kٳ/n& h q]Sy/n]B Z'ެoБNs@$H!1А>r-) 0

>fu!ÆaMɅu aߙGUΉ{E]mf|RƠei{њ>V9*qZvUjUgRԺp}sFy CaEfV3&mn^իӔ$W?C^kE&1U &9hr 2:$$̀ o#qdSReoRQŪrj8kij(9mgf %Ip;ȵ>j0MS/4"SwB}AIaq"#f ݁OJU~ MU|Funz t s;E^IiY),QEԞڵbQBBࠆ$Z6L 30mL_+]䉧e~Bd0riQ6G1Z Bܛȩ\RGb#$J~REܢ#Ū-eHvC|AٮVJ+j@(.F@j=C+tn-d{S/f4&SZ.(,\3HӴQcLySu7)p:Lc Q#Լ%ju%D:?(Z>T!ԅӒVI1i޳$Fh07'pcUqê@keFkz;&0 M@ǁFL peG.]\[b#Qbc3[S{P~Q`C8'Dypla \d Y1s\{F~|`:?e泊+x*qeg984-g:Bʍg xcxʭv5e}{֮N$ yU>2/O:ƿE_8p%i_F1_# Z#q|cӕ^uKGx>MguGvw ,Ԗk/no\'Ǚ,tdc8napƴvƥlw8&9̏@g l2~nFLd7!wLgG4ުNr| 8Pu?-mlrU^l>K=իF;=CXxk+?n-gb~.)J ֧&t u? w@{=0388K 7&;,524+6@S4C6 >0K>A[#Z{<ӕ؄ ?̵@0Qh<;US-S8 A T@@B%T4+@%|: <0-<^5Ӽ0S5)6rC CKB 3b38SA063+ö6;#{6BK>{8.4jc[1A39dC+)4K0{9QxAKM )#3B~6Y9 0Es5^l<4dSI\+0Abc )ů4XIX="˥ʷ;ˣK˽ˣ5I\Ed5\ɺ̜5dhLAECEA$`[ʣ t<šDJEFəlL L̹X|EEC̫lA|̴JT͹Mʼ,B$>JՄ*NDیΤ̰DBO K$O֌5YA,:Iúl˷|L<3MA^JDN,KMN#N mIN%N*O5ɖ 05S]N\dQN$"Rm w5U[XV OmMD NPxYSsTENS5R"kNdPms%4׾_mQQ-QuIJ{U=MEǬTMOeTMߌ5~B ԪT|ѤSc߬Kg R~M}YUKKM{]RټK{NNUMl JaN@M_L{ٳlX|sʫmNTu^-fh&pezNN{Ug]hj jYci穮_lk-\nAVg9f~fRfh{lldS(jpg8l~kq~|vz.9ec㰞4Fd5nTnkNgw6hGNkIiRVW !,0 H*\ȰÇ#JHŋ3jW`pLr 'Ȳ˗0cʜIͅɳϟ@ 2gB 4:PVJիXm254AxM ɬhӪ]˶m; n Tx7"ئ6dd-\y%Z8ߓ`VӉ%]%b)T9If^`GA9iN:; #v'aeoJ"k&JO2=Mj>v&0j*f9 Wꯈ.Hw~ ]t5]쵥 ;,lxyV#M]|b_b+oc;~[5$ئ{50t6 -L:_Pٓ ߛ=J#6nX8RqLSe3A 6F;B p\8*\\OAco8G{qLXV≮c={zu8sq7 ; CeT@hz# _' Oǰ~ IJ8tʄ@.{qr3drPF<s  _=0!A8g4hÆY 3? 0u `̷BHGB-~(!.!2:piZM'6m Ï IGIjmw Ө-Z!C_SڽܑF1ЁdEėՑ B KbKRA{C*L#BCtHrm",L*`a223ƐM4L/ǽ ]&ȏP* 0H81q.ni3Q,&0lTxHO9^Ph]ds,9IPdɽ͞ zId $ h8ZЎKa {, 9G fo '@њf—Xw=Iz  9&99J^ԦP&(O1hTZeҪfֶĢhFJֺ򅤾"XjϬ^0/M 2S/kD+Kp0G "a@0 P p֩ -V@ıurlذbRqrVMK}WN6\ ,em9CIקhYaJJT9F@a eaPmi Ne<؅eȽ`cXTs %Hmkg]V6 (kK to''F G֟ /w(ty3.u|K fp~&'.DZ,n6?rK֝ P+GF k_RN3DH[Zvxap/Ywf6AN>u^0w Mc( ϐ^3U{4c= կxH+b0o.q&62w}k^+\WV]{T\zϾ6v9!c_ c:7Ie?&Mz%O8±m:ѳÖ,/G < /wI.&&YPJrCZ_:?rz57Wˢ(?/t.zg9`:^[NoL+Pr`=[1Y ovS94^멓YdtY,>Rk,_WlZYG{ Ӌv=|1].z-oHr+wF7ѹ,q˼?Y/%G|~y|cXw9cg~0}߉Z)Ctjw|}fF|(j3M6OZwSxJZg! h{ww6bwc'x'~@}fԁ&fu18}~HL؄;h^Ktszwgb'y1X}%Kh`rw6bvw[__(@,q'GXgeJxtX^ 4xmG.uwp$xXs|Aj6xX79[T+H{3P{Wp'!]QRZPxwpw4(g"ȊwH=HiXXkш~w7ts~c%]q(bxwȆ'~ׄȍ\|ʇq2HXHɊq z|`I|((()Z'qᵌȆ2؅$/yvUh89(i8CYWjX~w~!8"PIfYve:ZȎ1،'c b$QalIVzx k7-im!wXtI!p~YhIP,@"|Ѹcވ }F8y'(0XiSvxGX({vY`yQH3_k(ة鉖'!`qgyY, م秝쩒hj\iʩf jXku y'g*,ڢI})yyS*2I~؅)JQ aLpex#;jq"q6SٔXڞKZLJ|(+ꥃBw!!PLi p:ġH7 j7jȠxW*ip%ڒ(i;9Ѻkh*Okيۦ{{3s] 9'),K;wy' X؟1Yu ={3Zikb'z+ :,ɻj CUw(؊yZ)Zz/+/~|n+:ݛk,0K;;{K̛u +|- Y [ |(lk+˿“~w$$~$7$+@ aP% I$3|~0;Lk c-9*P_=x/`Vj缭ü۬& #m΢a Nl.M|Lx^e^=m+ 1ZNW*ь~܉몼.sm徎Iح5Mz.=-:p+`Pʸ~q4< ڎ.\ĶЏ~`\^j-=];@=PAPo5Ӿ}]n?>OGzLܻ,/10pͷ?)ELdϋl PPC/e_2eϢ.^߭=?/ej>̙ɱ~.:`zA}o\0.q-o̿MˡZ .=0?Q/τ;MbP0SU<ӧ sNa/QYx^붎?xOAZŇꇿO:W0HA#C%NXE5nG!E$ #H@ *V| @tԡ=PaII.eSQGH9B%/QP)t)4@(=Tb1]yOTE dhŋ[P _̙5oyiʓ.EŊ5_]SlN{dؐʞu7^GtQx>S36+P'(a] {ws{5_Vb la3o d QqF]jp@j%h:ͦ'Ɉ5:O*C:*+0|rz.d &P/BG jG쥘jJAk#rCz rK.4"K+4'X| G (/ΆD0L 5]t1:؂,!ӏrC<#T4\JޛN>6K:,'UuUV75s?p*TXR~3ָnu8J}3Nm cyXS(xFnt^$veVyi+zDSEz_SN;(nzlzb)cogyFՉ r4i\JECfR<u{n!~.шMup;wU%_RW`Qk6gJw~};_MUp{mv(G柿q/ ~I^m7ɫ>S}O$_%>7 1lb>!  2K<\.Mw7嵏rPގHHS!Di 8|q$ A ECPU$,$x bxD0HV¿5Nhk @B TqqDH*~l!zDJ\H-Q{}8$Ga6@=E :b:Y&Ȕʘ0w$%_ yJD :J T *(vT'1;~2$&IR&S/ >P}q14i]X(]T#DR.Qf;w4$=XyJ~c$Lb 4nЖݼQ.9F[H(iCH yQÕ) Jj@Lǃ4`xnB;m =6яS)I3j LPE;B՗#1ʑ"s!bLaQ#><}43qGJ ;bU-2SަB?:V&#d4zUlEQ@Jɮuc\rt!KSHLiwXRDG"ϡN61Vɷt 8Uv-"f/=Õݧ`őE` 8 L5nD 6M6VTC8Xw-JB).M;v^|UET ]-HV_Ks$1'kd*88ŕZcvFf:k_S6|dm(Cv7y/Ytxb|1"E :q~Z rVǙ'n`:mʕM |PFu/]L1b#a4hHDғΤ%]iHZt9iЀӘ5E}jTdӗNSmT{ը68mjWO:זu+mдr&v ;9M]_%zI8zmHPa7?GsZ&w}nt[fwnx[w R5O8 ћ2gCa.^I`ؓ^)BlzU憫JkW lYx=q\#%?ԽeO Kкx {W!;&Kcp yэ~t']"wt'G]PPwM8D,lݼ3Ǐ!C'٪"]s{;~r?QՔYUqy2"vcj^g^<1OjfN)׌/)ZҼo|(t?Ы*Uy'~VIݒ)SK4s1>!P8Bv̏D^톽qm>Inc^q/ i;' 33R3 9Lz={)ʡ@Z"<; (#%#l7'skAA,7A˃AKtA#cA A $$$M)LBp>'2{a?8+44ػ t %8B!ùBc_s5 \M#:][L>XSB䓿\A?KTP#AE(DD[KAG PD J|D{DL JQFT4?^Q 9C!Љ ?!?3˂n*Fh)⪈*Cၳc-sJa>T5XӴL :U8CtMD0?uGD];GWT|X>˵vD y|5}DŇC0?,GwH4AU tG3yIY0713D*4+-0j=hC+p 8F'=`J$Ix5fIG`HNʪ}={ʐ4K> :uA_DIl˫HJvHd5G Kdɖ,1:TJ:7t244(%F>F1(Ùda6qsdL Ơ4MJMKMN=LJ ۴MCNLuNNCpy.dq} <ƐakhD4 QRɂ:O< (6S1ġ(:\=٬"S9S:S;u4P# ecռ%C5Ԝ-FȺ'!K摜i` SDUJsTYM8 HUZW]UKiIUWնK<%+UVVfUPsTU9$>P@KIT/"P%X%М/дrmW+reׅp``x:I?2T'2lTSU@Vi}XU3R$BhXPa_؇M"TVVЉcmsՋ-ٕcSU5ٗXXjek%UV!!NWt+/s%å%Ww]vWxIԂZ'`dqYQن]ۛm[U=Uu[ۇ۹[[[uX[SMX0I Mmn7î%Wt=W%Wu}vWҲ+*M*X*ZI \AضA-p[][ޝև^0[]^=۷e^^=E]j ܵ^EUMkVT\uM%HW˅W\]'_~X&WH׫p]-\^>^` U[]^^Y aimضfb^}LR-~>Ymԙ7 ؤev-W4WUe-u,2WI]t W1>\0(в_%QUk VX D\KEa M6ᶱVd%eM❭Sned,,H>VP&ܗdQUKedUeNT`dZP_aEIC( ZlKT]Z%s=cWvE*rE:TzZ3,V1\\BfOfedG~hk-[Fd-ݎPDFQhl֒剆.hl>钮~`nfV~:te\ԚZE462nvZڂ㎠=ΔTx֍ܰX0Пbn>腾fhhPim`ik-fnikQkViN[dkFlPEh ]MVW%WyV]ܬc߇ghgct}-@nZ?]2[- ݶ mq<×mmC^kk_>Vnvn e^n>nm.[&[TP%HMi,oVcrvVgtFgeoxϝoW툨-_t=cvo*Xͱf ՠ]pCnnnC > nq q Up nֲ߆PqqmnwmWmn b]ࢦlfꤎ_W3j3fec+ m.vF}=ut jfOsɱr*qqP}pBmErF/tq>Eot_q/tvpsI_pEmBwP(wuIMqU7P'tdȶ-72.ct}&ނZW64'-ވ6lrst*p0/VW}C-_OuYt:w>euf|wx|owIwvx=}wV/_/k:rVx_t'_4%xvww/xt~wwP=J+?xsVx61LW.-p6㟏ovyFg7l\%*pzשveu.SttnFS|w5k{7?谎y=rw -Zx_{ww{tPpox_yyo_w]tz`I=wC+Xouz3ooc4fz5% cOds v@_Wwy~}uW`~4T,_~l7u_|/AfWy_z7{]!<((d! H8NbB {h! G*YRr%K,YɕVf*r&ʙdlg~B-jhP2BcٴJS([Z)y*I"#X5 [ش!ذ,Fhגh\xeK֢_s㥛]-1d~ #n֯YT%ʚUPrs&)4(kGgF:gP+2Zeh%U>ouVCzp\>6ÌFn 2FY-޻=%;kxϧcsB*qfYMmQUgi86R<S`ACA%iG!7HyU" XsQs=N6wrHB=x$m9_FF#E27X5`MiA"ĀUYcژ RIt*J~NK ZTk*[QnJv'p9Y#q1ՌLyt%N&~yYRnBs' k.O)OcZָh*dޚ*6qjR>HimSoK%$rY&Y["`r8 *\ꤨrTyzS'o[m xxf*'wUM$5#q/}ჾ~w=oY>fn܎.R't O4dDw{  [*`p x=Wz`-lSPrWB󭐄k!IZ=q{F2B0{7°gՒ4+ إuyJ P4"CKI:8VQ>ɰ|_D2} AR u=5e%_S!ռjt^#&>l4 - pV7ݟpS5j\TTtصFR[0Jgʻn24f Wbq37CLݫ6 8̯33M4R#&*vMɸ0T󕉲}/ N '|h ??P^ ]J I(D9+pQ,|T XPhF0QT%MiDЋtU&zP4]JZQ*iEozԏ1 BAѧ&4@mjGPd+5)W?QZ V*T攪b%hZ Kpу UpW,aP !'N"?]5nk?0WӠsHjStGu*ԕYM*ZΒ2jM7Ӻ5miFz۪t^UY[֔_=BۺP}4 T4pB*ܫ~s}W`֩ͨH:ъuwEfMW~Eh^=DKuOBJCBy:_URkЁE+A{Ѫ)LKPR5 5/i ݲXr{ qn=,^ÊZ'1[䃊XG],3#A7/ekӒaY.F!?6Y6.kֆvy)t:TֺFF ߊ"NKH7YqH'yhY`ƭSJyXhtAQNZ Ҭ~rf5$\h®+`?TF-]0|7eea|nޫ^wmdh}(#a8I?]ެ~ukzY;|=P+_=>-stoj2ş%qes^լqMV@WltN)V&tcB =׼~۟-\Wrb<"(E;*08#I;#A"=;BBc2#B#I.3"pڑ`$K"- +Rc$"'z/$.R%@Zc;]Lʢ5B0H+>4ң4ڢHcCFeNx 4$E(N=P|]Ye?HS:J:PPadTd1&`?:e1Nf8:A2&OX/6Z#/eMSdMJJ?M梟l5ncC8N%L9#36%9zeH8֢Kn*`%?hR" &]bE7qZAC~euv$,wFcG&T.Ncp^'Y &^9c4WIb;m6NInRnhz%9 VfThAqk^ekgje4PT$#Y uRrx@=gsP-+n+wZ2 Dq.%EF#R[Pv )iavq''@dG,f~)'',"()BcEՎd#rZ*vB#ZpAҩ)sENneji<&雦iQҏve^ݓ`G奊hhvZ*|gW3bVbR"h[*vZji)jef_?be&^fuY2?>Zꀅⅲ)(Rݴe壮)LlgF%%M*ج7RH^,hVjW)cFeS^wv՞}(@Z*^rM:l+7*v"E>n6&Z'E&b*PkrѴ'? +A"(,pj$y"-vYi+^W"(ɒ,lu6>RJ:,"ҩhF"g.FV^^f&+f$"e喒llY`-6,ʬ~%hキy­.:n mNF jF.emF#֒- fnӊ-NnnnHFm-⾭r/^玲چ/ooB*R,r/-䪮occ^h"DbhZ_0W-.V/n0'"k^nZb/r.mS^2rm+rR-'.g--,m(RfŠvloVo(̲/lf-*-1r\&+.VgܢnFmjl$V`^k\Bq7'Eαm~s0ꒁzl(V-,q0rk1 ڎ(;kq?o,kn+0+gq6#]f2]):m&t* w˰ 3-v3r2181ҞnR- n0,<zq튯r%o%22ױBpB,1'hN]/6kD>퟾*NW1ius۶!uBBr./3AKn 7@2 {O21'%.fIK &4XGsu֑, E8rjJ'AsZF5 iA󐒲r/nA22 #r34_׾p1>4lu^3ogG5)CЁPPjPm Em۶novnq7pvs7rK7pApvn+7j",7?At6q6m7s[wqyy6wg7rG7}wp6mqtW7rnvyO7j+Bx77?7v78u'77vno(m7;G9w9?x+/6ksPdsD3Wvj9'g=k~>6p{|n~|w}8n~3x1L2dLAlo`Š1jLj0$~+:XpEռh1&G J+Uܨ ɕr#AE0{VhFQ3gY:azժhWY|U,?gr o^{^ncnZtj XnܱA2džL0Egآ{װW_鎭X.讚vEZvWj7+sX֙!ܷ+{춽˞9בֿ'8hj&񺑋s =Goo?۴>:-\A6 3l#p6, j<Mжr = ,ӊlM.,ZPB @2,ΰr2+ c7,4x>:$㘴9l>CҳB[i*L;Ŭ*tSDn+F²PC4/q*1D50J RE7ZuO@d26D[sRUѤHdN-BJL5bUQ:6l5S<uHr<*w "1KU, =@ssCOFZ]Z}N: Fs+Nk  XNZk5 7ոb^n-ݢNCSU͊MkoͼWW^žיcK>pnnɂe2 Nb2g ?őX ,g [LʄElCs<Ή1u.h=+{.SNeL$)v" M6yduc^,4nXIŌvw{^Za KoliZq1o@E3̜9m6~ϕC9Jik:KINN}nS߰1LE* ;կc 2&'V`8bקRSu.STb)MI@K Y0qzkaIof3+ãIg3 rBF'"Ʉ+T~6Pe+1VA'K?>pmLYHxaQ)Jκf.7;4LwAlcS MDI1|H7#(,hxIZ*1`oB}bEgmݸ6n)j8bX' e-jDtq6s|Xef5|U03#٧jn 4ۭ 5p<Mhqg&;PKZ48wunkDVLԓ!/;g}QSwPAR{HY?zW' thXٸ2XYp2I , uZdr08NvLLMMS`:M%V&k-EAݧWiR+?@ծw+]upk\W aו4v{}_׿,a*YR^ [ټְJf=X66UcJZѪ6d,`!v-DIJ f P=i+X.m,p.˽eK[v{y ~kobO -l-]u-_]ю7}0i^G@ ){,]b?rT+9H8j۽;җl=;R-bcjǢVJƲreI ŝ G# V5k}c?s=:cۗEgНmkl7Ӗkoh+'Wkexr,[G3q<8θ 0)Jâ؟M!wAVmBwt%x뭥64>k;6mv&~+/&P{.ZjXAКf;;4t_BSvl\QL7,=~!BړN4;=7&j6.mٱ$2C0CNb}g˺1lN]eJCM!] ^]k7YCqآfVQ L}2J9<=8)z}P+ޟ7CNΈj꿎$r*x ʄ~2ۄc\ 9 UQekdo~U'.{GlW3ř%e?>'d{4~LS )z*{ ă!!B, khf*4};O`dt{[<h2>2A "EbP!Tmt1b7"~j L` )Ad$! =J`4X9 p"Fъ$H 5.6o/[S",47q$m0y{A=r^O"J{42pxX0wL>54#mCXPÓ"xaNsKDox^^_LU1kWj l̙CuvN\` nr0m7!ͯatCCUIEowmqA@3x nXW/ \ٳ<JQA#XA ( $NXE5nG!E$pI)Udٲ$dPQD9s~@AIE% - Ą#NZUYnW'GT) 9#!@v1$@IīiZaĉ'eITq3 At'A"+:Կ,űeϦ]c_%O>Ο #DKPIѣXڠװmowų+sY:b(?$Azm`i 40Z&& 4@oA`VAb -)O /5V*ASTqEN鬝(tK !2 #C:~N L;t`r %\K 7C:/ qI(NRFLT!˵2㇧dKG4-"$@<3tSPzQd<›ckr̬$qC1 6K~# :9W;UaA<ʰ- ڡ1DEYV  Рv\r\OU,%2NK2 IZSs!? ڕp5`wbidӣMx(S 1kя ̡8taSmKaPn,/L/[m$ ϒsK_Vyioca$b$1PACTcAYKPSЄC$b7!Y#C|39ʅψc$ctEI?M3Ƞ1%-$e:APЎvltocFD&RTdɃ@Rv)S?KƊ"@,)@MH? HTRS"e~HdЂ^4k$d#AK3eVyLd&Sj l㟔5<8C&5,Iʵљ*yNtS7"ZK~Ԡռ'6)H,]xPMGTNN&T3Bh@9@P~`}jqKs7ohCyHPCa)PP~s8(L9h}X77A9R&l(KhՔNpD~׍9&/ ֹ%Ne3]WR2i vK?f:z9 G&tu%kZ׿o=q(zNO`DX-.[Q N8l\E|Y+v #Tx@^~ 06z1VԢU.?rtM9d4Y&0vK#u1r=[wPQWfDwD,gc Ҟ xv 4Ǫ nѭYhTWwI,a**6i~TA*εFM㹳Y[K_ƞЩfvmC_`?"dKO{K5AL׷4ڧnvj NGV5 "lT~ί1*47̉tn#lfcoA>ȷtE%߿67.t'x%.6as -W%lZj&/m~<1ȱ~ hڸA:&ǘX;2_1XFȱ۵mr I5[Yƶ{+N_(  2b7 &-rXw\7|S)oZim <%=9 w'6lDjC&x k& O|_dE5׋92"C q\9+7On+:\õ6]K?8ۂj"42+*Sm?@mb1-a3CC;K9˷/28) AA B!B",B#C?C@ DADB,DCtI>K$DKL˼þC4KIJJ|c Sb򒣞,I,BH̃$μtJJJ-3Ȕȝc#+$!ɯAİHtILGH I<Ɍ N$ÍTN,Kɓ|ITN\NDܤɿM=,κtKΐ$NHLOt,̳N NINɽ:L5 5hJJ %Q25TqM'oUJ}+Ju'ӲcQ`;U=Q$DLggJBcSQUSe>V_UBUm‚u؋eBB=Ȅ̞L9[ӼPHmʃЎlTԴTJ*x2TNT*Y~YY Z%Z$$u-#X J'xZ(ÂoLPYWDHuW,.pJ%3}]Zc?E5Z[[[BTW !Y~Z}t5ΌTX ] eY]HJsȜ5\\ ]=¤-` -/ QQ\Lƽڨ,,\ ͍ ]]^m^[t۶X|Le Y}]ݬ̩P~XtJYpe[ߍ_>I^E^X5෵*BuF` __`-^\e`H]g Tc?y^-D _2_9p5T\XCA~b(bUa)bNb-b.b/*0A&VmZŊ6\Кm"2>-|5MSA>d6'VbABc-5cI&d'ndNd1+|_MOcu_eb$\6܂]76Z] >H9. Ԧ]Zbb,ƪ:،Zj3AdJdBX8C.Ffi?lHrf'.魺s6xvgnC6i^u~QS>hX\fsxH|fn? 1?vPhgTz̻,5UNX6оɝ,ilܦήҎkՖm.c&^$<~[k}u }lv|8G)K[VZT_fԍfM2,ú\#noo۾ooeZp1$+e'>Anm$?^jHpB?uH+}_Zz'|[WO}7t{u/g{tbYwxF$}uxxX߉xI&yWO7|?OT^߈ xwU~K][{22o f\C߉17}9psfX6]:\mZyyf{vױ\Qo{gyo{˵ħO V|W̗OYWѷW{gӏ|gԗtf?q=HKe\p5(.c C}8|a'N(H+\rK.e8CƉ~d+دbŮ@P>|55Wɐѫ 58QҥC3Ꮝ@:y%f h Q g r>2g/!^ItDG={H G~l%ՏC4eUnKڐ%N*ӤD*L'X৆em?֬p壓6.߽]9W&aJ1XQ) DH17kV!DaXg]BIאk;Ivaj qDƒTc) Dpb@1]KLqvM}R_1g{g%l\teFVb9ᕕљftޚNI'cc]']hHy~z(Ebz}J (^tiFP>Z觕U:ԩ6)jʅu9gxiyƚfuhY)kY`5Xxu,^9aV + )KiAj٢[ X*NYzj1nnۨJu.m%Úbfor5A;^YbQfm$vv'êTOXtG&tZP'ҪVuOEz)`:uB0BO^lۇomXl?XeLСCԺ` W4`G@ͭQ 6'~mvL扃K HaAB虍f\t?3 Wc+5;\{@1|"-4MdT?39 9ɋwnU4bw3 p&vg=@)pL! k9@t` qAB*z ac ^`im8OD(QqJ3loZ_5SbN뢷6G=;铒$&2ES41mȌ$5L:25I)BqJ4j(\}Ҙ9[E0@VT2E~#p+X+ٱ6!t0zyOmnsBJczSߨsa)B8Tô`LJԤ&}#]X$۩Wrl VS8]@OjIԏH5) F%u!LaԢ)[?&CZ,6T,4w<{t9Of/_sG7R4N)K ΰT_KVϛ֞})I_§z5Kj g5 hgj\{BugZ1ۚ>47jO^AQIU%-6dksĆ6[5O?P)_vEOlj L{ pJ5Q\Mt H}VoEM)~Hgt`((F/~(F1r\L0J1͙h"HJ0XF=Ige#l3aMeثVi1Sl@KarW>SL`,W\,HeE_%4=͡[ݲL?=+7vMKdXsgݬVwhn꬝P>ڿ'hB9xa,h0y=MӸbD Ww#h6+vaKm7Z܋zX n{[4/% }s\}J;s9z| %]g ';,_;?\o]onwv|?-|'9c8[ry;5HeL9ֵ C̐K r6ǽ.݊:csLv]wSb}8A[ƺg2:HI`R]7}͐\N!EH}<߽3y_ e3ׂe pHJ[؎7 odo?~I+sM|2z̈́;!V?&;{I~n,[w{U:s=}X? w;뺧#;۞OhYjG0́AZHɝ|]ޕ͐XqZHIY݌uh aE !߼^"Y1FߙTy"]Vq9޵!`ځUVMOcNpp`M-Ec"eܴQޝ  _Z^!^ue]~۹֥`M^aVy9ׁס!u}>$\}띉&^a]JX虞ߩRe ɐ_JN]c錶xRVcY.PI[$ מ [9Rd#!a\̼d!#e2֣ jW>^@a\Bz[a9cDeUBUZ%TPB%TvW%XZU&W։WeUeVeV*Wf e\~]%]UVX[fVe]b^ʥXZ%X\ ^%bv[FeeJXFfTjFv* fz f:Ohnf2W[ clWCEX7V4!C$C# XPZhPsBgQ^ R $,%v!8Sn&Vbҥb%Wm^N PXZmPj^{n&XBzPzbW^Z_Nm&h2j*zB]cޥ~~%@"vdmve\Nceyd{gaԱ %!,淙3V?.h.=c,%rVcQN'QBWhgu.eBhwc6%YjN&E^fYrb(*~i~ fe.FdJjBbjf昶)if&JiihihG bazePաI|#A~h d/M))B6waG\gc4!LXejZhƪP~p&evu~ER:X~Xuuu+U:%TbgPRfz'f*UNPwLP^L\TT!T)]'v.+Y>+R'.&RfS+%U*kTn&)V%}{MҥYU+vfۛ뷆 t>B%Bc)wYEYωoF_Q&"()%zű2jJevu%Vr fSb:eQ++&fZQ:hTN%f{n+ &"bk+VVV(+uΨVefe{QLka.Lތh~krH^ cU_Aw W8BplXiZJpBR.Seҍ T>Xl.%։lv(/v*uB,jh.",,CŒQuRpv:)-o:~Ec\ڤAinJ ,CAiqc{M2%nc0Vo,>CUwҮ KͲ*6jpưj6)'sp?"pzT17 /6)2vph+ؒB(?4~ Oq?#ԉ0u]Eo"(2.'.9E. GNgs֬ I^̸[Kίw1oSoq1𶯸VovovDon,go'/132vXWYY/1462p" 3oqR&ΰq5KH_MgGrW4m ͮ-092s@Oo21*u1ñT $0o~qV* Sn2p2'o'Jp 4:3N)St-o,4M/;>t3%7zS7P [* 2/22E+[4B11_492p2ξt]o3wqo22@{׌~֪huu"呪>+SUjhK^~xtc+4^eۍNw,1DWv[umϯYSt2valҶd4I5O#W03+vAׯNtFvo24E7'[6d5K>'%F6}jjw%SS+",5{QsTwgOi.`7%iG?WgC^r>,8 ,j㮁svno++8 RWK"p{xoiw??wl6G'w$8tUﳉyxo9[9v|k^xoQ3{t}3S2&9%㷇~sv 8 $y?7,'iK>89|ozϹOkvt>i6ǸiovWuno8tZygf7yo6:S;g{%69K2|:gy[;+xw8?WSs{&?zg:~98?.#r:gf{wQQc8{'yyZs6Tw<ϸ99㸊㺜E<3wK35|'fOGu縵@W ?&#*뷄[ '$3ۼ#~G9!,G__9$#xrƃy.%PM ʥzsމ$|pzٯOo/bj/#-kz" HR8*kP\(sz-d諵 Rk1t{(r1. c2;k("<IasB /l2Db>DG-cJ^Sк BJC?i2(8xBY(8m(N(t X$=T)Bό{-#EfT.%J ʔM-ϭTKLݤ8żV kj˰!LF6 =?Q +VհHPP}ޣIJ<ЬZlVE-K;gQEкp0/d W@ЭÖ<С$^3$$XסLc,=Ω5-!v6K?zMʊ}NWϚGb8pԬ#/̂wYg5Jz)6^Ej-.4qT+xC1,KIGI_@ hpWi oC oq=g\J\q9|rԱr$q/s |ri\t%v1/p%%Q\ÓGϩ…=c~,}s?!,b H*\ȰÇ#JHŋ3jI 4H 8SL8sɳϟ@ zpͅx`S~- *Z`HGjʵׯ`>|TQIB-RZ~f\ KYT`U߿ LդMɒE)L*r˾3,̹ϠCs\ɓL (n}W۸sԓVܚ䓭]Ӽ*|УC'Hž,-/AnFMZ[ayӫ_fV+|o6B=Q2ͪwhdG 6F(6y%v(> ($h"J$mYAy(4J88,FWp>(DHHa(EF)@cXf\v8?6YQihVly%~?˜TNivX' s^砄n@}-aFj(vI~U8vꩌ?[}꫰*무 kB 6vE+D ;l:ccIff=k+=ˆ;xTw.5Lq:9+ yKkγ, 15'[do> +kI%m&_lS}u1 #PǮ$l2:ڊX.Uc *\*9t29t#ذCEX#=4أm0z@*Bٜ3>33cvۚ;&Mo]~-y`%B=7mtAWdn+1%7&791/y_T,?ϞG2Ҷِ߃8Lc2ʛ#Iă4NxBnRf>mkwܴɢ]L 1bVVLgHÊs*F7p8 ڔp, 61nlgpNXnM'rIb4%-8iXӦ @lf9"&*Qy8bCh)Cʘ:)~3(أ F .R@H1:MDA#> &H!I`b@*?"JLb$4r"ϰ ɸA#cL#)@vh , 2KPRxdr:/oF0O5>6[+&cLH$^ R:4yl@F~4#JiR [,嘑^15=Ot!:]N-1;˻}$ @+Bn $G Ѩ7 R NVzcP%O( AK P%sdYF2w Aɤ@ :f. )K{3Axh[<ɡnԃxߋ+BֱζS^RЅTDOCg2J/:Z7ԵOou[q?Ԯ#O^_W~O*>E,AȊ & dɐ԰#ˬfǗCN u,(vCtiOY{nvT&בMX*O!2L@-l K^&Z7.ˮh|K/}ϋ^T셯jR\vu'L%[l 0b"< &5#8uK" , ?*0+\Ldeڅq#Ѐ'F"[پ@ *c ر,*n_,[*9=WN|Z,k10CgmԜf6#.' ճs+yƀV+pcD࿋,"N&IQb{ 7M˼cӞ_BMkݵ/K R Sb4Y+j] qA=j1 hSrn55}bi[~6| 0ԧ{i]źJftη‰bk݄Ap[!^ƁZ7x5Gaw~-Qmǚ7}/塎L-o,]nPA-\sX(s>G z>h|׺rK0`ؑ4XJ#q܏lG7{ x E}S,<6wWG|Zwĝ#l:y#ma}ş yk^c}/~CN}.%;RMO@hBJ_ }ሽ>:`1..RBIbb Nl\=}LnklN XXn^7{W^_cz_^NZ^^\]پﰭ=$ݡ/@,/@?2?n^κ-._CO_rMڝ2RO'ZUoݷ?O_!֞۹> i]瞄\;ո>>1?|!Ԅ$ ֋ި r9+.@>AzAn79?-޾@`o'oQ2_.վO~9c.~CSbm@^R ?@)T‡%NXE5nG!E$YI!dK1eQs 'TPQ"AY(C *u$HJQNZUYJW6q㧊A£ @Sm5\ /)B2B 3԰#3ĆZ+Bj6tEa0i5Ɔ*h" s'z*TrIfn>+r";ɾ*`K0tK5! ?!L:pNKF4GqDה0NDUC< sO\qкb"rQN;F)5J( %TP +:T+>uB;*AS!!`K"i5X&mLϚH+6$W󊕟9[N0U+!V ([p7q0V8UUU7Z~wSlUxa|󝉄H3G?c[]M3aC~7tbx1H*5kp%άU^挆fgMTS6f NOf5cɴrU+UF x辈zrq<ڧxoԶmum~qWB]%8a;pܥGQAd7+}t./L]` bhrkw>&Uq`ۍ7m7k3趲څ]ꇨW2};g5=h~Lr# ]meǕgtO4 cC<\`?1LN$6JXnWA}cC(^)Aw= ")gVص B`r`@( û!VS¥jnԦ?*3cNHxGD`ERcrygdئ06lU(AQUL^vw #q"=€>` |=@`J%<~ᓻU#R`,% W6N@3K]",f^RBP%[X0 CpYH 1A5ݙ,&[Z@"lWpB~L">G'yPēgTdN('?*9AѨ\L3V" $'ЙA1 GHmrJp%ɥU-єhECY~$S-/E)OT2JPΉ~U _ R%BuTekES>Mf%, f0$S|Na%ֶ&vd V`++^2V$plCUliW(lrlcW*5Za KBfbۏd6t,? [Pm(+էͫ^g{կF 6wjL׾ XxiRO$J'TibWX]bv,+k "$kH/_Ǫf6cDJx]R nɝX_3`@/M64H]GihHiXZֳuCe\,`"d ~t7\PŴ1sX[G[Ӧvqg |mdk޾^8"Ha~ 5S!Ypcemx[WH.CXdRgvȩiX7B[xaXם7ek+jF :sN!>()c`ٍ3ym>ܔ<8`N3ԁDH&;Djl*YؗOS7zխ~Lc;yOC3 uBI*WgѾs{=\Np(ENNs c؋`$Fힺ-yXfiחVK3_$dGV>}o}\k|߀ # NP<sd 2S NE',‰}<99t vm5 WebfZHg@,@y!q㧾,oC<+>sS.=4c&r&7LA= uʾ!s\ 0" D> ?4>53p(SlB'ӻ< d>c5p-“(>(~0Jr'LC59s*(,+%h>(@ By2n4\CC<Ļ;1; C!5 J.\.r?s 0;3 D\EV60+?40,!ēh(<@k&sR&S%BlEflF&&r:BD+KŊD“F:, :3KFXFglGwtk8AClOEk('rB/êwLHt6[,}GQT >@ZH<ɯ3 {,{GB5B|t&o,E$G &DK4I̱L\r(T?,?KBKJ~F'JKa>(\@탹LM2tJ Ȭ@5X>Ļ܈ k$T2CTMlG'PPwȇPOC\'p3@#%Aė#mHQ*]m POtxPw؇32=:~P6h07uӍ8R4m2m$8~PR HB(}9)8*=T)8C-RS SS<=R~ R5E<9Ӎ668253S[" SzAX)CETZ>q)x%$FmPmX T 5US 3LuSS58TL%#56V6$ZGoqWr-Ws=WtMWu]WvmWw}WxWyWzW{v zW~;4^-u}Ї`T2S8d5S8h-SP<8R5PU#=lE@;(9vUPYUUPY YYٜYYY ZZ-Z= ڟٟ]ڥeZ٧}Z ZZٙYڮ}pٰ[UױpvSՇz8XU5%5uPuNu֋KR4SeTS%S~ t$d!ueq-ۭ}YZ ۚZ [\٤\ܢYҽ٭UYګZ٥mY]uսٟ]хYɕ\q-۱]Wpurwa%V7X~b6XT[%UP5U# 8D?dTFƽyܕ\ݯZ]m^\MQۯܰ%۝]_m ݗ f]m`ښfa`U\ v\%\5]fmafޮ]`_b( 0ctSXdu9-SS<یcMc3 UbjEU_: ^*F[ _]df^CnMbHaG_Mb'^`EdDvb#KF)O&[vW~YFPT\*dDaוDm\t}o'cPtfk2S2UUuce ߍQhkyWKǀ*Sm~'9UcTfآ戡TdU=է%HR'@j|}isj{EimmFN>l.nnkVnq=0nxW#YT''fۊ5r<3үiex:Fg-j96tu&k<-C.q?qOq_FWh>{? n XuTi5U6Hv%Dﱰ_r+r,r-OWW~ryQ%^cMgvcjT>56cVR5`m%YppWrAtB/tC7trUtV|÷ sln5FVT5M[L%RӮԦ.sx'*y5ht*fCo\\,VqHs|8q"'РNM ҤCTfL嗗S^&zN&ܗ3輨w^=Zo׆ דS&غrLڟM߆y;y< 4y-DϒMӦ͙i3yY׳*Xp5 m:fOyٔd֗fy͵ i ֙j Jhb9nF&k5GSd!Rxځ2[s*J.jFt+5Mhl7Zg0%yRV{[QdYoS0S H];66֕ѕ~"&{:(#i:9O9VOd^fO]dPl5yI?RUdW_}%?B}Pd_\I\D&P/-{fO>(-<^K-pRꦴQ[dVדuÆvNqjR1TLתUUz|gʥhꄨ>%lPbb/d?kd,t: _c-cc iU8}~ٕ}ۓ36>NjyfN6?L{@ m|PWft[!VBEHh寵s=f+}nQ?9OQ蒣=K׃ooq8vx _>v%YЕ\VZdE+jx]Xvg´?{3]Ppփ^^P+l υ4yd @,խt7nvNH-r^"(1dBk@Bֈt+avDX=]QU(@*TZkK܈E|$$/H %/yA0>#C!]p5E<+Q|JxaXG.]A %(I j<&2/8L-3'J2q<(hJM{`(`77BXKiM%IF}&fO&1FLH1TDA5o8;ZsW+4jAϔꇥ fvx @]j3ӍNH*35h׈ȥWж+p֒(^IK]NX*Rq(RT(1*`sX JVUԩ"R_+[FoZ`FRE]` ǵdmhQ ` 2'VJbDUwv m0FZA'ykM+Ӆ%?-bZSu9lpֵnl]N>5Є\au.I]fw@A$f^6qE& $i+ґB_yOjUӢ6Mcg H@r3O4 Hcm5`S!c9F6ƢcVIM .*Oʣ(π)1䖠 lqa_-A+C:֢dy8ZM]MWA`E,-1:$CQUL 4% LR*%  !\Vf%UbW|X%VWWXBX%[eYUzU%XZUYjUeZe`%[YΥ]eb]ea%Z>&\%V[>f[d~%g^&]c*&eJ&\r%XnejffhRPeg*cf%?xhVfYvcfVef Y&_%l%hV%UBT:e#4R6BV Se9RBET:A#,eSNLUgVVBa^TNlYfqid'iJgieyfrgi&jylgZ&g[kBi^f`2hh\YNBb"cF懶gz}&|qf]gi%A rxe]"XVzN%@e(t'RevZPT"eQj$t'T6iU_'f^iyRSvTvbxixhxSveWaĚh`)v):eO(e'x^(Veo){)in))UNz&v[$,l6jvez(bziyg%:Rzg[y6^~ji)W"*Ꝣ%{TJ'T W*$8h iwtjVŔ*iAeUʾkhh*Zniʲ,^'B!Dk>+Net+BZzuBe"iB>-UB֫«r- &,>,r)>lʬ&g͢-f2(߮,"ndm,B++Z.' ,nkz^!A!AYT*F%sS)t:R-jb-=%?+t>eUZ_*!mVnf/ꭖ+m"jizj~..>kl^V.hkfojޮl ,ڭU.ҥmbe/͚!/.sFoB(Hnt>i k o&iR K-tbFe*gki( 02/s^J*ª* B/vBrj/&1{)Zi[ l(eijq+q-+cO>/v-s-/T~p>[jKoU.Nk{0NT~,wf1"gj($A#xf%g*+6s ,O+ P)fgpNBkiBexp&r%+r1ñ!G*+qgp7/1r3+^s#q 27g.g%?j;sTi2309iȊnForfn*32pOtUp1{J++Cs~3#L)C XF+7/ OinwR0%/W#T%PEQC$u}ܷ57~3Sz[}'g=õ&̾7~㹽~?|÷~:z?K Yri`A'|ÅFᣄ 2|$ A"?BXǔKZ2hIȏ=:93$K6qIH=E| &3iPӒ1{~9F- (2fI.UE q#V3$u(ҋ1>tVGkiSh̢_%H#:tirqĢb9RoC'*V L~R:qK!au tSh׶}wnݻyvS~)iB֊,PbD;O:C$ݥÎEU|Ï~iB%KQkӈ>pگ+0%$.=8/M,f#1J˜-* e8Lh)CI&65ڄ+<$s)&ojH /TJ%|̪)pt,K"L=R%gvb6sZOoz-.vߝ,Zmx~jI󛅶}gw{T_ЈDm&sֲg@ mǕ"5IjՃH= OjBG>2; n7&05!{_Ԇ?fP ՇDJ @MMxbqd:^q,}˒"$"bxLa&XQgH hF=/Zě "X2|rDCGW`1iN:KurquS4kMni% |,c}@.<"K$ #Ig1&6ML6ӊH#:yz4v"\goBR0$ˇ>oTvli)D祇$% 2WQ#IK4)iDȴyfV[fVn=, ⴯l+ N*\G] 617viCؾJhukPFp6 kFY 2j׶:q(lyDIKڿ.17(Y 4Rm QJz+U@T'O:)zhx7mo'`3=h"|raǷRDm ^9x0%bx/?LqGFoܕIkhA>Y?c -"x5a*8yˆF&W5c懈\u_P6U<XxN1iCK3U69\`>WMd󖁘k?۳o5 mk{a2)}bm/96)f?y icz0{;#/|Y'mp[_xN=uaғ/5aW7Gl~NL섌@Mvf/>LϘk/)h)/zmj\ornMPέLaBHPZo:ML^ʪoR^pl",JF- g:` mN}P6ǦD . HZӚLLp@: Qbj :nҾ-а>Wnftc0 c( !,j H*\ȰÇ#JHŋ3jȱ@S r`% Ȳ˗0cʜI͛A;Р  DSʑ8*]ʴӧPP8ujCX%sІFKٳh6=ZmۅnʝKݻLxiA KÈx$KLeb'Zcd#DFzӨ'=:`6n\4۸s'˻ݶM,)_μrqF|/:\\%O:󥹫 @˟Zggg'߁WW҄ x"ivQ,hNUkaAU٘|y<&y4P:ӌ6TI+\e N:d;_ϔT9"gtٔNDO|=x>i@{# i磐hL&IZ*~騤ޤ)^餃!I5bHvzdzѩOί+,:h9l(9kZ_.t2ݴ29ts[Ti:iO:æ l: l'AO=N>T M[j8̐Ï;A6鎰l#,?SZ-;`*| k- &WB34.g3qT @nfo@h+AƼ+Q^2BN>*(< 8?ӎ4zm>8 Rx+5<[A0+lO5l:4ev CM;-sӦ7ݔL88ANؖM8Z]q8ڐw7;Oݝmܟ/:uN7 ŰKo@?̈́ nz $(QUnD/P棯=ewS32ÿ;H1N#9[?Ǐzui7}! Zpz6eAF&H|η|+GG#mU>_G6w@Rĉ A:HsK/퍌4: SZdP_-m3_4ɰ|E@8@ޖ@]AqKAK/ ?61.~M@Q)`|}.ta:r̀Vġ2y<71"֥ +^TI<-2s Rf X$ѸŃlYIFFMo`K Iu`@Ւh6~?Ï +7mj3\$L`1b&GBE]3N)D[P)S]f! ߛHT^Qt߯jX{h]; go璚})̏|qL"[9͋ ljb_Frbkmm\ p6hfp9J uNhv[~r{ R]@;0toVn~bѠKgðm|n 2jI`JykUo|Ei^Һ^@k47ÎvYjTֶNv60m`W 7kڴfޮ!ݴ.v26`67˻s߻x5Mv6Yb7jܱswp_ H8Wޒxݍyv} _wݳM^ *3qHC5p8|XHQD[Vj묛];xZKôMxojx_dlGzNxln簙'] h/ Oy])2Q x5A&_We׻w\oK9z`+w@_ 'kW{7(dWw~tvk te7~ 70$@}Uxu'$|dǀf!p7vGuمַz1(<Sy7HuHW@p$X7Wz׃MgVקxLVkvvo⧂y Y,~6voH['fxxtO_aFGE}m_`tw؃uG(*q+'pxIWPHzU(/ȋ7jB`Xx!UxLj~٨|xpŃy/'Xȍ(hU (x؎oP^8uy \THvrXq0zPsrƌ!yHvDS{x 験6j6|Wp0 g9'I_8qXs'8[p!z觖lnɒWF,@%9!Vy{jԖzq)hXs/(.ؘYl7I[ɀ5 iȘ%陠 j&T(_ip('`nI[O7 I~IzYfxi83IIfJ Q('@.hy" _8Y35h)jYx~8~5jii ejtSןiw *hQX OW HI* hRz99É(凜(VzfIjKʤŌ;瞐8I/ȸVʥi(9 yiʦE6jЉa*IIAZza=Czj(8E:3Y橦ƒ}D JZ̸tj:,0]zR89dzw**]* I٬mƌ~٨YiiiMi7}*DުWɬ Vr9!7IzziIzJ[ze#peiI!0ԩ zc9J''$K(ˁ*zZ#@  KA(>K+˲*/K[6+(p(׳>;AKJj)۳*@XZ'!I1W[+h8d[@+۷t !KNN`+1;uKGkp 1T z5b%)OoKu5*؛z(=;S뇗")ϋ/PKT h˴%++gJ˳(/`!S+ʫ<OI|ܿ\ @B]<5:L<Jѷк뻒kPb# K1" ;):-Pq=SN;f[:֋]=}r̓ @֏Ma--,{szϛ=]1ڤ!7MK)؎-۳!mۙZm]+2j3{c# %jݖ-ɬ֠m=9.0KҼ@AMM#\!ۑ-,N b#Pԙ+l@0߾}>=却{ O"؋=.ՠ)!d6]A:mHԬ -AR".#>GRV=N^ӊ=:|X~j|1{[ ej>V^Ym щ[Mj~nJ>a9ݾ]$^<>卽"=}ם ^#==iսPYӋ|1k;봮ՑR7̨̎.a:P۞6I.q~|A0k>ܿThh!ߞ->r>п 1}VMP _朾!/z%1 #>E^Voώ1 @@ξ>`[~5Xۀ/o O끮jo9/J?{|XK/m]AQ/乯/A?9 t R A~ !PC%NXE5nG!E$YI)#c˖#F8A󄊛1TĈ"@x2pA$:dSQNZU*an})W8wYv( 2l4[qΥ[.]yyIB >y BJݺ=|cȑ%Osѥݵ{,l᥇Q+QҴtկgzW͸O̽!Qdp@c{%p,.!Xc@ 3pèi&7 B /CcqƉ(w "υtRJ+ NNO<,uTR; 3ӛ<̂lL,uVZ)I yO B"dXdiT& ,0 ^ Kv[nTf5͵A^1U.nuWSLL[7we.+Ux槼#XmlWfJ%@rbKFt _C,4fY: kˏsVziݬ> Jc֖<(ۗi*^s`8SS"mv[+Lc8cFZ)m(`ʤ;cv)mf[p#ǨJ0<|Axaz ~'t$wPIp?D:G:.^Ίa 'x!2P[%hVt~~{)/ybP߉ﺂ~~emxdAW⇘cXj~ Qb0;s[R>ꍧ =/]nL_aNXG@t3lWx9捯c~CV ׹͡ot!3j6ذuUAy!8'+80)S {HWd#x/VpbƄHmcBJaÔDN<$?>FRPoTJ8HQqV (GBRr9_]rasdeUB~ EDL2L] sa(ʇ!*1-LPyUfYƃʻ~FӴ52+S>SB2 @d@,0"Xkc{i`\@XƮtciٹϱH JwY'$V*imK'ȦsstGΖ mgA+JJ8eDVUV=TprVmnwbtV ;bX vX,inۅ5 r'Qg~׷Zb W.g`\~ŊQ`<ɜ [±-?23N*Hg;-.{Kґa Ba~ ]=ֿ]V^YUdǎsCao/KX}B&'"("GΥB fz*)$8m|>F ̏CK%'rP X};]WUۋ-/:%ɝwC(<,{>6?qtGg.N0Y+ŠvB-pW"UOMbͮVW{ ٶGfmvG7=-b۬e w$V+{Գ hAW];!Nȸ?or;ywn3cȻ#kroC\f+m*Pؿ-;;bY*1yE8r^5ou6Ak˽7#t+l !.hZ@r}lKGƥ8aQnE!p>^\dPŗx"g#@DzғCHnEHΒpcbC]h3Wa׷fhJp,<W~ݑ(Pөw\_\?%'"W#yhĥ} *d I=5=~@2%)@<@L@\@l@|@@ txs??>6x>i68>=3 ȜK= AAAA B wx??>c[2>~<>ȃ =10!LC5\C6lC7|4$C}ЇSB&?A(DD0=3ף6>-|p$CKDLDMC|*=sBlD=/:p4#=ӣSLqD_E` FaD}}HF{@?' )kӓ=<ȿ<-Ծ,{<@~Ü:ۆalGw|GxG\pzf\B{'Stil3~>Ӿ.q:0H A/=S!r.PD~^G IIM\?t8IdFg|~hL:Äh.XXL AhT!q+mH\JlJtࣈ||?aI@6A3KD<Lědž D(. = 4KAȌL¼˯<4gLԫF$ă,.ETD>ELȇ@\7' }#:LKP̈́TؼĄkQM|Oʓl?<<ULP&NT\NRTNQ*R-](MR+S4,-NOγ!N =O&7U:eR٤чMmMFU0.õL.,HL|ŲtD+U]2q=KH]Q݈یM\M^N(Sޤ$[U)OeMA'[mS_5V#ՇXbik5V'aR7_El EU+%ۼOhQu uStNhcbUM4<UM: }TlP?JJ6F.ɇ-l uDdKhLK,B=K2XefT#̇KLZ׈HT\Ty\hPc54B6@THc\4@pEZF>NQbn\ngU^xNweRZeXa\zyhhۄ3Ff>[]vf\ˬlƕ d0А?V;`5ѕ3mDٙEhXbiigiiFP^+KuPJlBn؍&6&iKaG~Ud.̟jkk.kinNf@ikVn\?Epjo-]JD]ݵd0k~lȎlɞ4ngΌFf+p6Yt @$ː~Ԇul>%EY]^lȚ˦lN>nu6kfXY^=mvψ~T.:܏ǽ. >mv Ngӽm͢>^lN nƎYnc6jVge_n?f pNWٔIQpgaOqdlpf~NlN`qaѭhn f C'EK)$j>!?sWs>?uTOuU_uVou7_] s;j#sJ3®tJcBptnm.dq&lG(OmoNf3'u4=Ww.vdu&o/w3,vvQQvt_woPvrwvtwPOwn|vߢowwGxv6X?BM.2r?)PtЋU%GyN_E|/tkJ_.]dqq+r;{i_|joY֟}z_{׷z[i~/~O~}ix}hs?ώCo>3]ҁEkWtFGk&\gN҉F9K9~>s` ~ *DBСB&$ƨp M\2dEAD(%ȇ \$OM\&РB ОmPiĘ&AVDzcѦ/NEKl ZNP-ܸrt if 8i_d2n1d~C&T_k䥹Z.4 xC'meqNh[Am.qujm]@_Vݲ vtؾILx۷᫓uNx޳<9sG4sO6_p5zdi)n7W!rI'v>}gA%jr\U]h^h`6Xdjl¡쇶yJF +`kش`\@=D{Ȓ8:~0p[i!lhχ[7EPb[?oܔDGEh-K"d^+gdr1Ql'l203d2i90y0j!]8&UQ{$ѰjH?p!tkuD$ƪoZc!*~t cqj1wF4"l36G>zn|dH=0 !z [I ,^vx I!);Ikg; *J6fx :tx+, .(ԘzҪ. L2@TE I?` JwRn>ݩ J^ |PSRRzua?63g` <&z;EF#wApFFgRtZ&eUzʖԪ;$XZԜc"*/ċF%`JuBm*>XqJ mBɦY}XrtT,KY{2d(GG<1PMfW+6Zm.sX[/a'b5:#CW9gT#I+(mMsZ7roy[Ɵ7>R`;;OqG?N=w٫]gCt͓m.j^~PvB~Iߗ}W~ } \ }-X=Y_q^ؙUޓWQ=M^u`:e>߳ ސ n}`aߢ} ] _!!@ߐ^}=[|کzeCʟq[c߻ٙ#@ eF__ I!!&- m_ Y^>͠_!n| >y!6%~],:baY\* M"_'V!i!ޅA"^/!HU`E!ͮP-_!Qۙuٗ]aByߺiٜe?1 ^! 5 ucTEId 'Dd<_Ʈ^H>˘P_ f ء_hGLVMT ^YDKFRdC <^fFpP eH^$LF}DQK QjLe7]Cf\$>)Eb$L[8$%z5I|'c}ٙ|e[Mš<㛡!<{c|ٙcfB98V8_4" $i&A߅]5lyl)^kW#W_&ne%ݻ!5_BG~'V_}d/!9j"ibA6l g% NxVXA'sRAtށ|&w'v:mVi Y_Vq'`n@&fYۺ!)fbNBcٷ}Yd#Éc@$# < c((?Ш(M(:ʎ(\ xƌ KB*.i&P)hZ)ƒB<&)Z)ܨLp )铲hi )Bhkjji)N)Piϔ)Т#ąjZ訪L%h߫>%Xc[h$jO +i.ꤾŢh^j6ƍbO 顎FT6V+FhΩ^i.ik⨦.V*ZjZf樫‰%ͧꎮ#X&*$jhl,hNii̒k.)+>J2+-*ºƺH:zjl*հin)kkҩǺ뵪rNnjj-šF6̞,2+iꩶmV)۾[ClAl*mvlN£fh>#h,<* ,@ch+y-,()l,, .š*j,.WY/꺺ގ)ˏzŋzFI/Nv&o/oͪ+.o&on ALnoNrhL,ʪn튒-оnZpo*oF/ /lp0p[, S%0o/ 31+o. Wp߰ تq/C0311(;.?q0ޮoíBBn$l!(d0ɮ,M,(̖n0"2r#lc2ϱNZ.s0yp3p/4c/ n01o2+s,q#3C0; (c~.r$*>&֪hȞ'{2D3FɶhEîɞhm22~F2@sC˩C,:2N4rqI)KH[Ktc|4h>; IomN3ި" GF-ttN4;R0о,T.&{HӱI_B@?uQwjuS;AƶjtVhB_ªCrFtjd;&$X^* V{)*rUc*u_j?#,⢬nui?*4H״l׮Qnh+\GH0\ti;5?Bms*165T i:4uGcG2y_Puu,"0ϩJ5hjLCXwվjd%,6%(eW gdfM?b%_4R8?薴ttMs8#bjh0ڷI wclt]Lcv)t 1@grva'CR6h0.[.[Hn6Cko784RP{zUFqt#Z° ӵg_nC2ClB B;&r4S7xtO7ƅ/tE9 grc8*v#Pb{Srvk8]y]5Pw4x@u!Ѿܮ6kwϊByqǺ6ʆcn5O74C4{Q,)z&:~bg#shϺ;?^sxmǨFm tt;v)-f%C%Gx.yS/g6K|ihkt6og,gg{8 ˸)?3#BA(j])h0fȷ3Fоa[-r͇;^wǻ.{z4#߼ch %ЀNz}*}_llKS6; SEģCIN?O׶7|cɗy{ 7=':|#;O{^x-k|gvǿ8_by'=dz4{<:缳3}i4"<ĉG<}%oC?ܫH/4nCEWyٗ,''}O8Ecx?;=?nKxW4f?!7kXPBN VOTE Q܄CG*1A Lp`H r$A#7=<$e΍1uʬYɗ%%:(Q&m>ʯRͣ ?d)ů,Yٲd |T֒[6ֵ{o^{_[P[.+]N4T*Jq*LqȮ37O*y֘{9M>l kR,f`2-RS{~*J3}BCw=6("]Q6-UB+m!3B-5[?`mI;*t-kd*+驄(l<rf0J#qE:F D j&l3ʥ|j'`Պ0-S6Z-46˾ E&2N4ͩ0JRI6rZ(PsH<,N*E5%B!WKlAA5T d2IbRآL$5*4>K+./ޜ2۱!Җn)=+ӶNЭ2p]uH]mlvt 2=wOov~Mpˍ7_}`>_N6{5X"dy `rQ7\'f?bec _k'hޚ9j(%+&ڪ!Q2 MWOf_#|?l#l fYiN+qwtE ❷y݉f_a~Tܯ~# S޹}rpvt0^dvB)^ӕǽ]߶ ɞ N Q6뫕襟ꭿ{09,֊5m+x_~u ݴ>R Xo~kIJS(yNqA ^ ^LQ:F4+!Z> τ1 ixfSCmBa$}"Մ7 :PG5)8D'>[沣؆pL(`'A1vdFtBp#?(4ұ.i8G5xјFܑl "Øv,# )0Ƒ,IZRI=)QqkT%#St# cN$&-Q9Nw5F6~ K`ќgsIKX"$'ilb3$(iI3Tt&AYYVSd*MmJԔlhLMёҴK3 ωg=慓 FB.G&hz9*5O=zo0IMbS<*: ON3.΃\9HJAyaU0׉J|t(0կZ4jVS JP.5+3IQbTx!Gr{I&Iɓ(S\ɲ˗0cʜI͛87ɳϟ@ JѣH*]ʴӧP:QԫXjjqVKم^%Tz۷pccvACq˷>qT È#0#KBǔ3k2ϠC/ӨS$'Q5 m޹ݻo .:=3 Nv+<@ϳk/!u̷/6Ct~=y-n{k8AcO:cz{|7_}-38 ~ BN@ A!t1@ 2bJY!90A;R@#"mXҋ93Ev8Jg=P 2NʌYYӎ4En>8 Rtd4ߊ=zH BnNgFt]z2`*x 8_d9#ۄcߔ" 9M:Y_S2:NsVJEkE}lD9b7ЯA {d٣ȧ];H1ΧM+9G=I*bj:dϊbtA ,AֻT8ao߾h?!c?xC'(R%7x2 * fG~P$a! ap0lT" Ć 33|R8",AA$:6PȠ( @/bbApH.nƊ^HFX*b ( A:NF44H;1 Pc9QYAHF:)cƆ0ґL $3EfJ EĊ(JRⰓ# !,%eKс1b.{I̟be1(,jI͢lrW8 K'YnĐcar/9<wzęɞ$=Iz9#XJMI=џB'_>lF3Pt UEQnY=K9>YiR!*%MwtGFyJTXTed\ZԦTJU!C@Uwђ0uj>-Ձ'%T0!gEH\}_& hoA[`jFѿdoAK68V 2DsP&ľsC<'@VaT|V3q#GlK G2}uO$JNe(3 6kle<&%]z._!aa*Rf3%"LJ)6ks\%C !tftՋWd͒!>W-tⅠ̠G].Q!OŠ^uX|@6nwA,'6e ֽ棱"H+;ښ4kc;޳@Hox#Hq BnszȖAjwZ!􌴽I{߼Fv|>o7C=C܉&8?h=_rw\ /J*+q?[1A!IJv U+Qd ZK]ڙ<@Z6i.S+`*st~KA{jvڶXh{{4QBۮeZiwɮN4۹{WIR+dj@8Pz_[+W Ky:6W+ uk$1kѻ^K͋;+ZBJкvb*{K{7Q:9+քx? DkЊl+p񋣲IWп 1*~۹'+8|*l@,WN5qʱ O(R\V)ë>Q6L8̬ ŭk&{P<XIiX&GKĻ  \?Ly ~^G{{Uķf@||Q$ʬl]gmAj1`U<$ ̞~ǜN|̜]F%˷lܵ,̠lLμC& ʓZϹ[,˓] ]M =,& 5 m-g!,ʠ = ONPOafAfgda0pr=t]v}xz|~׀؂=؄]u-_b݀Y] tp/tAEE)Pmئ}ڨڪڬڮگ9U]YW!lєИx };R =w- $_r۷-Ə G q%0:߾z0=I<h a=N Ζ 7m={G!>/~.35%᣹UGp ݷ-m %M<)ns=ф gBj@Ϥk扂Fn>.tEp^_k^_zNu.x|x煾nDunm}鋾眎~醞zN霅HVHd&9NպNMV~-Zia*2l.쭎Zls.~H,m^VLL^N箞i..4N(tANi>j^i/J.6NEhoLNM>Sn~_q.*aV'8,DӎZ-_[N?=T4YGЄ,f.6NѴ+$R(U .ȴ,.TyYO/E]8NsO0Qd1 1hFD}fs?ORN*O+*?N_n//e c$?aGb~|Dѷl@٧/ i ◦ ? .dP!c 4AE#F dɐC\K$U9˓#mڔe•*9gJHo*eSCc"3f˫T=6$ ӧ\s”֪FK-SgXpFX7!tO'Orqra6 hB: E;hrB'NSat;v VْI =4מTaҜ:(Щ?jŪmKF52ͨq>wՔݺN ,jK7KwGkL8o^{}0bf>,''A,"|lCȏRlA QG]l, o4 Q͸O  M3#LAA'm  *1I6:]D3ԣQᒟsaPQ34#^#TvXb5XY^MPrpY pˋ=b}IM; 'Jf Ɯ 'u(i&v_~72+ LBUTW2څ-6Xp%8W^x+CxVG5[WnH%WCifd[_+lG d]vUDHK8UL!,<̎,hvm{nvb{ow=^$E=Yf "v228v@"w7O^w":3E.in^];{u]_u##IHjzT%w(!'R ?Vm<̲}=Ag=~GQ"  :eLmFZm XBj Fx<.?L˟%VcTX1qādZ@6N [ xd-ؠ#bUā ^1$@"w4 ŏ}Q<xG^0pzKZ3$f1yLc &3\M{c'9Xf3!4/J3SBacuOr,']]aEI|F4c٦8[Ҳ[%XMҊ+DBW(EюCjQ2eT轠9:=-D 7@V뤶K3JC8p蘨uRԤ4!'ӂT!J[ cZIɠf$# WlNԸ4t  )FRIqe(*ƩQ>gB^U9^>k>Xv[e[,f >~.hgU&,d/+Z6}-l7Z2aiKZӰ%kGY6XVB j j-WfΗ!"_RX6یdx| j{ko Xlksua ߯ך&rYX!س'H>Kd\P3rv=1]ǭ+!&+b 羱,zsyst^V= 0}g=Ll־q{Ǡre|X29 {ˍ}oɛ\l9Eܗ'92.!!ge/y;D7QcW>ɬ!e,(k/?’xA"RV_߈Aگ% KY9ka]vaV`+[luM>Sֲi]ik3G>/6l_ǻmƺ+|krϹF.;މ:Brmo|vC|I̔KY`2eCBA1z.%Vw |kn; wMXY\-˜;9η˫-hL'(7ϵbhy"s/XY3C˽39?j\!0@Tɴ Zꈿ; ߵ}w:|W2-g K+0v!..;"v sm񮯼8.trs /T<،l͈U 'ϩՊO>E9̰:jihCyp< ɮB>! ^|f'0 Yu#ų˾+@<4@~P=<$@tWٿtKγړwI#RSPl\x$?w?Ҵ: &̋탼:(K TB{@l9 A*dB3A%B1B[| T=@,Ē*t[7|.TK.<§Q DBB3lD&?'1`.;~8d3@pF~h@C?0EU?/%B3s<Òۋ@b e̻C>4+@LBͳ<1S#n$3?@U?IXEWlztIPGEX[Lutu4$w(M,+۾Fh0HH\4d@H |C; l\o@3m+S®YKԌ{GXGCXńǭGPIpŅE~u[$xAH?LKLKl:"C\„B?E[EYLzl}IoŢ\G~-ڄ(8??ȏVF`>̀`dK+JȄ,Cˤ?<#?(uM\EGt=|MXMv{4w|ulJS4HJNLVYQ\ܒeCWQIMd?E9cc6dBfD>a~@5FX&UKFKP*b_/b0fP2~i>aa`&`_>a1fJ)6gt.OV5eVgfivvfggncuVqg~gvgxgt^}V1VxvgF_hxg'FsggPf`ydgt~RDb{vsfH ~̰gMApftg^ffV.Ӂ{k{G(b>jA#kLk#kg)eM jMGi2.쾎Ⱦi!Iflj >B1> 8`Nnϲ*걪Km?8Q~.3N΢N>j!knj5kkv&Dp~m-o2Ji(cNqfc;ep,v2liV'_W,6ngb-f,bWr "Mq'7j֌&c&,0#WqCTp( G Ѕ"bXG歨bcepf>i՞b;Vm SFoMpP~PHLt:oi~PvM GNuD7mP/:i\PLu Os2l▶kfor26ﺶpBSgpojO6jZGWP dP!DNXE 3jQņ 8"J?bd0$E evLYJ7qL Rȍ<#n!$BgeSP "|䔟 B5'VK[-k,UV*ַ;ZܟBQUY&ƒ/mS"͞A*pϥ!2{qF’!0hlc"ԨS-lֱg.zׯ-T؄Ŷ:§6irMX0+pbjӭ-ݠS}K=5ARS%NR/2S Gz$HqpqXQH1TwM5m9_\RewVnɗ\Z?LI~!_yij:WEWGڙPRxv݀B tjiurAQ&}a(@v$q9Z|oUW]uo wWeإ%}=b[q90ep JlFƛyfNIBɕprޕZI>9u^`hڅ*PEjlU:ߍ.ڝȡʤunGi@%Xj;gz%0 ;0K<1h$]SVsfqq%#<)o2-21rɜ 8l3" V2ܪ',4I+4Ml3*tYA;}µٌG+O, }34wu<-T֕m , 7]s]w%]f Q?visMbl8ɜs>~vllv>9٢2cYR.a J ;n:EJJC9u%[@ƷMk;mq[ט=61[;Un\:(!&>k3򷻿w`Hjhy[̀3 7\3'K "ܶq2w'\gj<%*SÙ,)_)YҲģo9鲗%0)`0&1e2#DViR1yM&8)Ε2@uFR;iyγ#'>Lu֓4>Rn7GЃ*ě@yc*d(F3j*,g7AѕT4!%hHGҕ $(KѲPf"5'HjL$T Mg*υ"|M!ӏU35&=SS>}U}:TԔ@3!*ք>tKJR:tbM!*Q^+O9h-@3}z JLk7۸IkC۹ hrj='| wk]wh3s{:wǰ T=ZztGo8 Rtk/aj-ii(qj|u֐.J8tC289~I6H+hCݤS#?DϾH#PNm8tjiж9+e96E,к؆zmD,D=5*2F8Rc=T#A]mO=.=E;+Ts`,P|)ڀdHg[tR5?,9.#H XZۓ]M?LD7MNs .?Y&S@:WX0M9T'=x3QsdS-xf *`#6̗tfd8WF%z1p@ Ax@ÌUЦy:R:ַ{|ĊZֈl"dMnaj g  2nlC=o.v(Kbp};;E5g'`J &ȔYlQvS Xsv!w>Y2YhQZYiTXSُxc)i{T~Q88ƖG0 j$"'$ГG*х)ki'qA)%`xD $l(pi> ~K ~{0隲"؛*Y Iy)$cb oɚ9I٧* QYCI|Y~G$()UŚ񩘅ɠ*O x$"Zu婢w~ٝNAJ|G*P0> #ZFXzXJNZBʚ9bZ+]z_*y>Y+ k: `cHʠ(P-jj {j*kW {zzB ;9)=P )X :jXy7ꨮJujjsFX-*:H})ʬ ڬ9ѧRjHJ{A:$jJݩZ^:Ggڝz $J9%P 6ĩzYٝ۠zݪk/ IꡢkY!ɳ˞:p%Z6+5S <g [2 F{q\q**O /p/AkXZ{Iv3[Apki*ɖgZQ{ưZ/`h+j*:z{ ѷ)q[cۡuf;aɟ+;A`?Ѷ*6/@PKɺʟ;f+;۝溭 1ыu凙); Zkoj*[&lw_{,Kkl4\ÓRk"1DlIJ˖L;N3<PpA SqX,<@Ʋ;W;\,@ !tmܻ[1<>\_\7yڡdt; c콂|pLQ#`Z@; Lqlybk|/\{A<ȸ(k/1|ǥ||h<_L,2L+fɒ,˩ f !'컱 ķ|; Qoh3 -ɓ !cϋ-cL M ܸ< ZIeKL0 ۱{<%L Y~1_=\a ԼՊ"#[CֶZ}ha-@:slA{p-fUmاlŪgZLCjL_ p 1׷L1ڸ]~-ءǬ+jRT-l}֮MK+PۨmLMtڗ̰xLۙYދ֟-ɝݮM ͦ=| }ش ]mH׭ ,@Y~Cpf $a Lˬ-~x_ ܙڵ>hH.M\M=F>Pha)nx]ЬlFš\ؐ ֶ*\R.wZˠ_|ja#, %: YmDr ukE]˥<\\;+M,|aˍ 1лW<I,#^r.}Zm|E4,N1ϑꈎ-࡬韎_M=}~A~۬L>Jق,;^ܫ\-a-> .@ =$'^낎빾Ϯ,B`|C>9,O/2_$᝝*=$ݩ 4.G^I9]ڳmB@aHO^F/$IY`9?<mmgZp|!.rM3B>0<0?0O:QjO<ڟ/=JkNI2_Eo^Ϳ_դ_K )L%@>C /ao* Ms䷄_ &dC%NXE5ncE!I(ä1 '0(B†8?OA}(rd<@9J:Q@nWa!4I$S!PVUBmV'.+]y5ʯl Ly*A)Њ{%O\9o#.u69eڧW7 kgO0`hVmPMAZ= 4PSN "'ڢ-pCL9s0%.2C[$.J) i4GVtG 'KN%!r0 +H/@՜ rJ*pjB$ Z*4+)[1@)ϴNӬ$Kܤ x[2'GcH8<ut!C @=# G;4"S))oB;U1U#SXɄ*^Q ~uXtHa?ɉ+ ,Ncmt+}a0J٢ _"jMI+3ɢUeO*'jZ߇w #]#Br h-` `4\~|=a,REݭݬ=lc~"*HWQY;<@;`C!2Li6VX#vr:kaXc8b, wnH>Nԓ|-7ؑv;!VV%b*ooYzq)3첩⇙~XC5Z9s|vGnl*~έVgrv䇲w(y;_'pbxdOt޻*߫Oֱmv~>"QWqc`E"β]5lx\Ё'APpTg@E3KbkpC`'B6D|Ѽ F1T1ͱp4vFQ s|Xʼn[,dv%rmrHE?]Da0_ c6në?*c X#DzEYGȈWC ~#ćwd!O0D-YҴ1nd%!A ) Z8 옯.1@c mhLV2&e鐱es0IL6( 3cѼ4_&A@Qc73,f3N@F>8 |޸~mXfAys6dMM5b@l @B~ x 64hHg{`<JHA$E 2̚.S<@YNBjFnԦK Z@8ꐠrӟ6P2!WK UfA@3 POUΕGjTtXG7tC-hW\z]&Gu+*Wen{]>l`MP_3U-njZg7|e2a݁w MA_"3/D&,`V0A (P[a*[H v)Ld-Pa^<zd6iK%RN`I3!?nB=׾w2,F?:1.;~ԩ>08D{H`{Y=ad׸! +!8;CrjZ0iAzޓcSH }ϗ1;7TAꄘGK>[' mP:.G!ROvq&r@lo$ 3$q=d_^MDАt;r ッ>,}p!?u9}G"ß㵏8?I?= >?{>諷?[>$O`@ÿ=H3> <{,?88?AKT?lAm(z~<"s&yA0I@hFFICJº(?S?hCCB-I~24CY:„8?hC@?B~0B:C<2C4DDB|DtFxD;2lDI K7kC?B~7EBRÇRT|?H?(ADlWLIC\,^z+b$WWt,D:COd.e;B(hFWBh 9F~CPCe{G|KGGz@A{||~GHHX9HIHH~$HHHF|ǎ$~ȑD|Hևama|~^"GbmO#Ȣ*!6cx(dzBHd@$=.ޒL e1H>YO@!,tǯ*\ȰÇ#JHEwǏ C8\ɲ˗ML ͛8# 7SeΟ@4FB*]=~* ' ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0Vό15#5t#9ڴ#=#A4$Et#??&iM:L(HVm%}% yИdBtiRm&q24'u:t>yyg'ei&x(6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+VkfUxͷ;.{nBN =D18A>jA> k>lsp>[=#BP7J/9l1.?%#Z$  3Zr5L̄\ & #P`yZ_%c!,' G*\ȰÇ#JHŋ3]> CIɓ#ʗ0cʜIʕɳϟUéѣHTo(ˢJJJJ{jYׯ;Uӗ6w`Ӫ] R,ֲgKAf֝\wUί}|l̸Rױ5?eoJmkN޵Pt%6{С'r83NO ߀h& 6F(Vhfv ($h(,0(4h8<䄇3dEyI*M:$QJ9eB&yEv饘`Ge&iv&mNפApƩ\QIsuV ʉhw.ob(z$餘f馜v駠*ꨤjꩨꪬ꫰*무j뭸뮼+k&6F+Vkfv+k覫+k,l' 7G,Wlgw ,$l(,0,4l8<@-DmH'L7PG-TWmXg\w`;o>thnf6jݐW xN]u x6mwy N 䖽x$oC-6]kyݷT>{؞mN 7?9?;$HO} QKփ}E~CO.뷋1@xB;#!}`ƹ.lϳ愼=w;*6%0貝:u0m DH@!,  GwaAwc Ĉ*Z B.Af;}j[XeʘfR޾,ܘfN3aRtR^X R]8mFnq,Q-e"srǻŽ%'lszGw$ W%&^ܘ#:zujC9Jv3fu-^ȵО۸m׾M0ݿ{.!, H_1 *\>&:YHacd"EQ1cET0e[$ʙ4\B6{مЂ]Xz#6%uLzkRL~ ;IQ~K:ϧg4\3.\eG 3]%6Xǀ!, ǯ ._‡!Ą'㧏łiD~")(>v4ɐK~1W>K9gbdHoQm@xP"F!4"EwENUSp*M\ \Z!хӖo.wmʧ@~]JoJu)#3k8Voc(.H 88OXl ^Ar r[, }7uѶ6rW6!,  H } *\aB:1ňiw0nBBo>&O\cAdTȱMrYK&˩ =J8Ф;}KhsuתfjЫYV9Ԧ+AgMs'v[•NڶO5+wn]Z lL=Q w2o@;*3ZЅ﮶27~|sp b~ 2r]Y> -\xI-:tZo;pR<|'1 p:zkW_0 !,  H ?} *\aB:-BĘQă=.GdIMDYPʂ4|)w1#Τt9tɯO6bVLѝK:ItGo>~h7G~>"UڰFDNʔƨG|)1:D"5i[ js-H4>:1^ ou]|IƔl0;wRVhX~JG/1=!,')'*h!#tPŅ uŏuSFd7r-+ɲ$ʔ ׍lɲ: gҬ3Ν$DСmٍ^S2]GՕZuڔHb^U&Ǎ\ɮKڂݫ.?BԗOŽG]>}t&lfuY`e}\hmKڥi?mX3m}2:w׸;q5~|ڸsSm߶] H1Hȗ3oo;h6v^{_Ogm!ʨM_G =U& 6F(Vhfv4铏> dS"K:*hR.(cI-Sc7zԢ>:cڤH$G-C"N.iQ%RN$=i@Xf QS%?^)/e_FfCdy&q9gBuΝ{ #:hO4;*ce~Y;JFP*ꥍJhz6h贪i>y@"=CO!,>P G A*\ȰÇ#JHE3ȱǏ C6ԨQɓ(S^$IR˗0M,͛gfɳgM} *AHV4zTӧ nJԪX5ή` KٳhӪ]˶۷pʝKݻx˷߿ Ln "ntڝҔ"li9gПE2ʨAg^2kcӮmQvwq?WwrQ޾rtӋW|ԩ`'=s.o*z~m(s|3 e'8566fq& 6F>#MN>a/}$a8'Iâ.҇â6(҇Xc>d:Ev$=i$M^!: ɏKViѕ@Lz)ѕXj%f"f N8å68#JbN:}JbB*):SRZiyb.6'jB,:J# QX>=e!,$_X7 G A*\ȰÇ#4HQŋ3NXQǏ9Ɇ#9\2eG0=4fșmꌈ3Ο {J4ТH7L%ӧ#JJիXjʵׯ`ÊK؂u[6ًɱۍ[ҝk}ju` 8bƍ{<72l3͜> g¡ .m]U/\ל iw#t>ڀ[nܝ=M/\Bmѵ'fߒwt4c$u4H<|@8F\8脣M>i6?@yѕr6!Bę7@%jႭg 1!:2rφ`8퍨O>CO}l!,dx G A*gᾅKحD Xƅ11aI*,(R`NJ+]Ңɇ )e͛  f͞@Q&2%ZB״˫X W^ 6VO_[ob\ב.ۻo=\ȷ]z5%gwBBѹO1?wE 1N˘.tY2CC;FH]|S;t8tq,0; mLZdwg `Pm9+_]{6ŮhM=8Sas#Όѝ)~<|M7?4tG5=!,8cB3ǯ*\ȰB{sHE@7Ǐ5nI~ixnjTF$Œ&Ѧτ)QsQAƴSѹSʏjӫ-:S j,ڴ'Rd8o+DN[>s%p22ga)EaV|Yb+rvN[8%=aK3 GCgCk Nȓ \yC͝+]AխÞ]:ʿBG.~ݬ_yyڇN_7_\H _:~ 6~*a!,Sc:ǯ*\ȰÇ._ċ3jt7IaG K\9c8!YʜɰcI=~/UITfGw"-ʔџ@%ش*ƣ jԪWAu׳ ;sU+Wh];۸r?ϣ_]8mj[.q^]E5}1_WCxRd(jLzuCwL쌴kVrHRõ\꣇{~65ܽ>>|-O޻z;2e6?h??jW X)x |b4a^j f9ݔh"9:$T"9*fTbC3Q4hcC$F ;)Os=@ iP<"N&\I 4wOXdɏlf^CejV%)ɤ\b'ECOiQ"ꧢk2z'ih&P@!,D"%ǯ*4h| #J4t'jDX"ƍ U 1cHthŠŠi3!Θ2$ؓCz YTEw@)ڴ":wH.%jըR5ų 9]8mjش+ ꮦ}5< WDŽ$lRߴM/\\FѝpFfYhO6(>z+m:# |xǁ G>%q{>˝˖-}u޿k<<[O>K!,7Xǯ*\ȰÇ#Jxw(jȱG@ɓ(S> )ʗ0cn eI8s ś: 50]ʔbHwBmJ§FHJЪWOԶu׳BCsYhTNز]Evm[x طn>{pDN[2sȠ vZwJz2MĖɺlu,FWam۷Vr˼ םp$/F ( ) )9IYi!zybM8bx,0(4h8<@)DiH&L6PF)TVY>됣%9g%Bt#deB3fBco3=g#&?HHݼiaYezݘI垎>zvc)gۃNIM݈yJZyꁮ5P`)eziZrNhB*) V)~qi>&Bm~+%dBXn!,- Gn`‡aċ'RlpuPHDT?RDНbޜYK:yI6.lѠIXQ7N%ɐ6n}!|gOXkхӖ勇ܹ}kɆ9KеiE2Tp)튴XZ. Ɲ1u-㺉сL2|UΪ}C˷>zu{ X慟C_~qaօZq;d};!,'i G*\ȰÇ#Jt(jȱǏ-^ɓ(Acʗ0c\%I8sꌸR_͑; ޾ ]JwH^ӫX7>5*լ`.|oYm]"F{i uۻYV+nT}[_\5~,Y㪸2LЅӖhݙEl4H?]ѤMֈ92{"^fѿ;Iu VN=;mu~<]Tȫ'n~ӆE':t~(f hq )89_Jhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\ver#&9|I:ݤenO^<Ohvsfhfo ZByi6ȨYiN)dV:ٍڍșoF梡MKgjD2T ѮOJN뤯FY ҺOR^ʬp i4ZS&*)B 觃V.~}&囟 vrlOc[P@!, H!\18C).aD-AudER-o&K~fd3eOm4# ΞjSGi[ʴEtBa_B.|R}˵+Gai  K4-K/AB8>/]2{̼Y|# -|Nj8zsC՗OA}c2⺏#oq9sA:8V&M0 ! ,*MÃ{H})*D߾4N߾!5$IkR$GtX𦻙.SH_N "i^PSʏpiԟ#%N(P~ڑVjɥq`WΝ[,Ǭq+Ѩ\--f–CV8ڣhF!,bvp Hp*xÅ FlŊ'#G 7~Thp ‘K$)Rʂ])sfȚ63ڼ)r'O&crL'9RfRO-2]'ƪAJ谫Ѧ[!,9Ygy  t":zm@Ë #nWRɏ*76 Wt&)஠O)ݙr*yAP*W޾Xu7+:tE8cTzȝ][~Ѕ勇5ϼg.5g_cn$כjX[܋~u]roFϝ|IzP_;Kw@!,C9G*\Ȑ!9p5Hn,jhўǏC4ȓKDɲG*[L2̛0S&~ ڳУB)=':*hөT7JŚV]5~%Vز]v-Zm}[-tν6߿ LÈ+^̸ =Ut!w Z4pC75fՋ;D-j̔i3Oݼwv6O~Ǔ L`݈79vډUL4á -_tmù[~us|M|bis_{)W;ڨ{ aȅSb=COp!,Bm\ G*\ȰÇ ŋ1NǏ7rI$I#M\ eJ0c(q̛2mS͚4{ ˡH$4ӆM{JU!JQVuUW\~XeŞ%vִj;Uӟf& V߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӅu[:jXFuٲkV{kҽ{{8qƏNʻ&};ng_?[ËO^|]@~||>מg?i;ށ`=ic!Ň;ηA'H#hȧ~2_8脣M>'jcd8#Z8; Cz_9:eCWhhd>DRΘe}eZ>=!,Euol G A*\ȰÇ#Jh⾉3jȑECI#H(S4yR˗YVIfBmꄉΟ){JtТH7 ĞNJ)j̏Vjʵׯ`Ê'٬9V6j˶H+w.Pl̙Woʹ}L둰`y&Wb?Vt2ʖE.e##?LugѦ5$緭c˞M2^۸Hnvcwpm˝?[zCխ/[v+^3=:$@8(_ءh?,jj;8c=ic$;DIdBWB SViHbzb8脣M>Wjcg8|S9;;s:b"9":OFhsXyhg>tΤha>=H!,{AI G A*\ȰÇ JHń3ȱ#F=2ȓKNDRJ-cF|QfKmYSI>w z$ј *]ʴӧPJJիXjʵׯ`ÊKٳhӪ]0^p%n7r_ڭ۽vn +὆M-ƏmMV弜y|^֕~tvwu&is [vpw*H8)gN \ܺ߬!{F;UiH{Uď/`DүgO_GO>h`8a:hO{DNkZki;U=hWaԑhbz!yjl"cVp;#W=c^@!,:Aǯ*\Ȱ=5HBwhG3nH#p"9\>Uy=~(Eɳ FwsIMt$'=ڒeJ#:wGEUJդFwOJ]ڵիY-kVUz2.-ۋtхӖoݝxդW\QG2&82:)#W$ i ctA̧ªN(>zK= N'[|]8uWz v-j'>׳w~|Ŏz̙w 8Xs)j[MH|^H^ohXov:#o$Fhs(:"su(qWcA7]o>X%iP!,Te\ǯ*\ȰÇ._ċ3jt7IbG K\Yc8!Yʜ鰣cɳ=~/UIfGw"-Tџ@%شƣ jԪWAu׳ ;sU+WhTv,ٷreϣ_]8mj[`.q_]E5%fț;4厈Q-]՝p oF5|C꣇ڿ+_μУKNسkν"ORx͟GQzݿP| s~~Ph`8 :x}!~eaa~8!".h#‡>&J`-h8<@)CN7H&IN MBH" QiU>ߑu#%}h%q9A^'An)ߚIwBzǧy9w _q7yhxYuCf.fX2*~)}NBiN&A!,Bn!,ǯ*,h| #J,t'juG+Zo~ X0:LZԖǭ\0:-nj8DnG:zoZB֭]#[vAڵeέz7o|ximh5C7վ}̮=:.>;G^8!,0L!8ǯ*,h| #J,t'juG+Zo~ X0:LZԖǭ\0:-nj8DnG:z^ͺװc˞M閭{7޾]z8qƏ3oxqΑ3o\zDc}IoLN'ϋר^ۻ/t/ !,):ǯ*\ȰÇ#Jw(jȱǏ.#ȓ(Sl(rdɕ0c(2K3s)R͋8w  R=~6a$ʴ)E&괪UP"կU3+UhDN+]͹Xfݛr-[o\$[zF*0k -\mù92lui5W.kY36֑BkRm+iܾGd*-P>zӷow‹}啋w>mݻFϞ߇_\WU% :H Jh Z8!na bh WW !x",0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj9NrWͨCjBNC=S3*?PHݼ̊a Ɋݜήvcl*:I,"݈B6ٮ}ൗF6vVN2۫J$3Of˫~dVJe"Ԫ r\jک!,$-G*\ȰÇ#J3jȱDŽXɓ(#y1˗0?V 2_̛8s&&w6u =~4%ʴƊ!TӫXB=:j֯`+jThVȕ_Yi\n,YV}g >ٷ.?k;1ǙiVp$k8E-L:Lēˢ ZÊ"-Cmf׸wƮ6(t-jʨΜ_>6ʏ޾̓gu>z=;s Oo>㎯|_s * Ƞ~5!e~eyu$h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駕CΨ:ݤꪦ^Oĺ_<OvsjA Bz듩y>*t]*ٍ]WȚB׽$>t]7YkKːvC||nY. F$ 1p s0~+?k'xqL-[ߚb몬Jj !, * GpgC@)Z41\Fz!q"ȍ ɇ[ %ʅ*iڄ޾j{nП|Y(:w>*zӜ@2 5į m]8mj[+`p%DGXo aQk'v-`5Nt񩻠MfߋvZCzA,:hHN:$RԪ-f-5쇭 F޾ ;w "_|ΉCw0~!, GpgÂ@!ˆ)Z<1\ƊEq"HMƈŅ*gjcr!}@0":@ iQw?.%jќADw^>%s@8t[eÕDǏ&׮q%\;e%jku_ kÈ;NbJ4f>L4A{u K˞Mڵ⦭{޾m#ʼn !, G;Ȑ;5ڢj F~EsІNK:%`FnkՏu Oʺ#YY]ޝZ'gc Zh !, ǯpC@!ˆ)Z<1\Ɗ#8Èy0B}*t.e̙'SLw9'NǓϋǔO{O"]8m6hJn͊L;^aO1j+:{#wDGOGLO*=j Ws3ֱдk _-;2mخ[C6`@!, ӷ n`‡C)h0b89FqbńF lJ~3tG ?mZ?XϤBw)ЖE3Di]8m #?MW@e%jP۩JR(-ZރK*Đ1w䪙_@!, ǯpC~CaĊ#x0"A#WP}r$ȔHӆE{/mfA#RܙQ˧1|4IaS"jC՝=!}J|h/:Z/nuTٸaѣGVegəU,l+ナ~\0 !,  GAw=~6NĂUw`;Ѣ}E8cʈ{;z iÂ;{S'O M; ՌS -_SڴsW0Vw<5{*Oe]T}K pIUoAzk :`ւ-!,  ䷯*\ȰÇ#JHbn3ƫȱǏ CJ$d7r"S\R$I%QI̋0Mnɳψ9sJhPE*MӧPv[JǦQNʵCYv絬ف`JG[JǶۻII=Y.޿CFۗ-=[04Kv JZ޼rfΠAMШ;^m/뉥~Mb냱kͻ Nq:ww7w=:mt?{8չƮ;u]v__~~T6`=w?j3߁RGA >] *H}^xVГOv$΂\8脣M> j#c8Պ=W;g䳟;a·ڇ>#RX"}ψTh"Na莋/#H@xcP?r!: I@$=8!,77To G A*\ȰÇ/ŋ3"HQǏ9rI$CM,rʗ[Î5sByPυ<+:'ѣ7*mȦPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKnZv7oߺ#oܙ/^ǐ]LnN|rw,YѣADY5A֗]mY6mȶow-v9lċ e;rУKNسkνËO&w] tͧ(|6{ ށ% N|Ѓ6J|c!? fa}&nX(Z2v}Y~76Bc蔹V>Rw&xzC:Уa@!,Yg<J G A*\ȰC#{HE%^q`FC>RI$#\1eA,]yRA&mN)R'Ϝ.$)tǢH*]ʴӧPJJիXjʵׯ`ÊKم]+p6.ܹWڍ޽W ,.j#V\8/n}KdV%V@WO_>};G]SS.UrVpm&[pQqđ9C~Bmݯ;)otC 髯}GUہ'o6Ӵ́o|@7oBn8":eۆAi`>TӡpyX&>=!,w & G A*\Р} #.|PE-FXQD=~yPdBMD Q@._)#͆6Ƴg<I%zΥE,RTX%2~ZqU`؞]{*ִ< S+ԘJuoV7ϰ6wpGo6$:w_g GC6igUkfkfZpiVqmܩ/Ә?sGrʼn{t]m`]c+V^E7{9D|=|qM}=^@!,j-ǯ*\wJ8"RHǏZquS~\b8MD1ʄ|s#n ohKme~tCGD! ZtW(SZ5`MUձS"<[":kۆUH7\pS,þTknׂl X_w3pRV\gt勬u8w iwu4(]e~mɉ?^ѵthu[TMr/ß֯cXN[QqV~㭱pe aCOfGƧI 6F &7!^ajz("hP@!,Kz.0ǯ*\wJH"Rȑŋ;dh1H#SC*EZϤ61GZtG&ϜwҬ &A3O-s7_SPIbtӣYJZװb1N[ʢ-.|W .ߕpm_Ō9uxŻ :v-\Fi>FEuO X}С7۸sֽn}.\y#w|9s̑C^}!,)`10ǯ*\Ȑ=5H;Iȱ#5zbI4xQI)WhIme͞:GiNA9gPQI-ftGӣQ'^DiӧH*ʵUbfJ/Ʒ™M[$p]7;MjY}שā;Fr kٝp2Fr= rAaC^i׸sͻ}}#\xAŅ#O{9Ο&oys֡S\{(<~|bӍ5߫O+__vx!,?kǯ*\ȰÇ#Jw(jȱǏ .#ȓ(S(rdɕ0c)2K3s܉P>qJ4H{ljXS"T*ի "M `)A`FgP[תa:V~f;;e~7&۶oKX߻F*.pP -_\mù9r8muǴi5W6-Fwm-ri WҲjtGڤ*W.p>zK>ËOӫ_ϾG_cş_\ x~ : 6߄M]X!"!DA$,(h") ڈ8#>cAEI6PF)TViXf\v`)dihlCN7tINѡ9otw5וm?(0>zћMpi:[?׻w$ף'^!,+G*\ȰÇ#JHCw ȱǏ Ct1Ƒ(S\2":05I͊/Y%>Ã, x]#V{'9۫?|EV%fC䓞>=几~ fхi!G!(:d)V.Ƙnh#ax<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠i<ϧͪJNt*?J?j>"(k7>k7á>ۨ+#WBϪNZ*hH-bh7ԩxC3ꩌ3z :+- 0,(kF>> ŅUxWz )+>+ _(ɐ/d -ڊj~J !,%2 G*\HtJHÈ3j$Gt61ǐ#SC*UvϤ61b$ n4(p Îh:_Q GU[P9BE}VoLu!V:VdY z5֧JSCHz< ]zt]8mjF/&$[wZPs\A#?t^,7e_(6G}s'vq>o|Ynh[O=_!B3DOZD+X~B̺GXy!,% G[Ç#JHŋ3jxt8\Pɓ(S\ɒǏ!M,ٲ͛8sD':w& ѣH[ (ǡBJJjC~tjT`Ê>~nu۷p)t,k˷/߹fͨwÈ巯j/F՛<8-W^MZefC,QtҰccNt+Nmp>;^۷s£G]8m:k5ोN]k#g]En9'bOCOm^A.@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪬ꫰Ƣ*무j뭸뮼+k&6FINч ZKw& nfˣ.ۢK.ۺjoo/cp\pAJ< k{[m!!,% ϞA"t)Ȱ!'"D#:wCj$1\G~ C>QɆ)ENhoImULѝ>p ]MTؓ߾ڒ\J}QqȏGOJ!Wjٜ:.>ЅӖ/kPDZ( +.l,'K%O(͗_ct]}A|G!,r Gt@#2l0Ehtx#6V0![y1#}!qLeČ sd6KpgoN )] KxCPtD`U3b} ;_Vg U|w.] хӖ|*8 HXyCG_ &JAZ 7Q&C^M[;m֌Nvso!p>֗7?}(sNPyjcϮ};QW _} !,\% G"=#"t3*XƏ)H$HFZ,i2#E~FjCDz%D0#F8a)Q8[F&Dg}MgDԪJfu`WCgUӲϢ--|óCN[M(hڽ*\˶Az3k~ὖfy4ݼ-Rzaק'k1ט ܴ"Qqs!&ܝ΋͂խ_g}{7͗G/|\O0 !,R G^‡Ρ|!8E4E~ 3B$E)U&o_ImsLl'ϟj 9ɍ 훪mhQ)&WΝT^4bYTiSg[te8p :l]8mj[`{]n$ǐE\.fm'.v;,ӨS-⎪UC-]U9cވ7Hux^O$Ñ7'!,PGx!?ws"~)NA:z$>cȆ+r"C*gjsg"FzFˈ<-:!RJl1"*|g#pIƖ={ƖDj;zo~(:oB-c܎o ƥ#؈x(?ƀ KRmd;[,zW6!,N%G[80Ç6Hą+^ĘF~H%Oh˗J|fK5mڔ 3ΐ: 3#QVPݝ=`W{jC'X_wxUc7ȋKv1d};nk2aw+ϫp)> .|r6\QO8w|zU7ԮbgddF{a貧s%O=tQ!,]#u G*\ȰÇ#JD(pċ3jȱE CG(Shʗ0cқIsf̛8QܙO;kJaPE&ҧ?JU&SjM5֯!ybKV㾳hӪ-vڷi}wܻ 7޽}Vo >[0ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μsIyArӳw#gܛG:s䛣~}Ï?߽3>sxg݁& 6F(V>=O:.$@8(`ءօh?,jj;8c΅NVic$υ;DIAWBɜSViH&b"b8脣M>Wjcg8|S9;;.s:b"9":OFhsXrhg>tΤha>=H!,eiN G A*\ȰÇ#J\h⾉3j8ѢE C|ȓ(9K++I_L5sYPO<1EH%M"ϦPaJaɪXjʵׯ`ÊKٳhӪ]˶۷psnKvQ;%_& ,8cϽ;ƛ8"^č 8UƐ-'Y3ʝ-=0^Өݐe5ײ>mh6lnw3[po09G.tz9Bȩ];.6>=ݷԗOw;_ &_80g? j߃ٗ;U߅a=ic";$)bB7˜3h(r$ق脣M>7jce8Ȥ38;S`Z :/ƘfSXwhTΜuч>=(!,/+ G A*\Ȱ!B9HqaĈ3:xQDŽ1~H% Rʌ-׭x/GΦnr򋹯OAsy'N!5m*thGSVUֆ]}J0Md2L ht*9n+\>,/ Z]> uǐJvǯVR3bnl-GEI@ۍcwD!F񳷼9Y'dQa޽be{ m>pq?gȣoٹSs CHY~96\hX>bw(`aCz8!,-* G A*\Ȱ!?9H1aĈ32xQǁ!~RȌ% Ʋe S$ײf7r0i&Μ)_YSɔ0P56uTUJmV]}e2ѱ iB%wB=tlѩm.4W|l w59cȒRn8n1t[SgogmǪ>KZf-6nC 0BvgK:F'/j#d8l|$BH;8@vWpA!:d@i䅨;ڄ]y)q0YcbI=X#a@!,E+ G*4(p‡6t"ĉ-j<1ƍ=~ؐƑ K/ h|Kʌp.93ϟAܩ(pH"pCڔZ5$UAvsׯ}{9v-dzE +ٗኼj^Amv2=':wt;E R^'VL'ڊ#ICN[bsRSvWvBZ7£vCظm>]#;m zn8 rz!,}K (P:rɭGÇ#JHŋuȱc< CIR99cH˗ \u8ރɳO}I&X\I~4JhӫXj*뾓>f5WHɪ] [ԳEmT.I֮ߑO:\a/nH*%e1'hm½9i;'v z_7jT-V(ܣ>w*?meCt=*ӫ_Ͼ˟OϿgSYmF`S` 4Z/K&8HYx!FjaE*6%!Yx""VFC2=ρ9bc4$F"8& ҐH#Ґ#6>V9#^#Ccs}i2;a oА36wDCC矁9h}(BTu YCQV@CN86ΨDwN姩d+:lCʤz+:˜ϭG:{g8~[C:УT@!,[- G*\ȰC>Hņ%^ȱ#Œ=dH(S4yRˎ|If̙5sR̸Οc A2}54)ѥ?MU 5'˫U^֦]]~mVز:ǒEKR>4}rkЧt U_>}|._@gĊ;v8\ƓI&g0gY[a"\ЄGmkԦxs'oSNn$O>ѥ7<oP]8m-^a{~ay'o?ot_Ň^o x;ڔOz Bs? ~7aB~F>A!,o Hp\ȰÇ#JHŋ3jo] C*Hɓ(S#xbʌGc8sɓnd yȞH*]Z#9 <ʴիL[> Qf͛XÊ{L2?]˶-DAQYۻxvj1fͼ/SnŘ-+^#׋1eLrŚk爘 ki~1F&wuԐ7vM{cч7O-wM<^h-Μ-\JnNYQ#ֳNުS N/~ϸCmO_i˽ҴYҟ!߀Jn& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`]LGUCfj_K7&+&;Ae&9' |dfL$CuZ(t'?Io Q1@r  f > 6zjZæ2Ἲʑ+rjسC k>ӾZ-~zz,H-JT'xI#6ު[jISދ//N;.:OP@8脣M> W|10NLDR+b2FNP*#ǯDJ0(@jM,_0,5EK,L!,1("*\XP#JtXċ:TReIƏl $B=\+VVX+*efq%dbHO7JqCV^*jU%Ve*C'X`Zk^VrX=VUx\kw WxXq#rm]2X,*./вjtr2ȐqBfMj83dGY# C@=8ZN% vC/j !t~٧s=;}ݶ6:w'ܽ߾GbGO>7wN83_p$6qνw[ `F8w])p]g#`[-B" ޙbpN^UgFaAAmQ> !, !ï'CdD\+:x1ƃp`5N,Hf!F>*Klj"%b)H9@E:PpƜ" W0Ck@S~Jj&SNM{0g5W*$ "Řض''Eͭ^y8sIcW8A:t0>8ɕ/Q25EKm6)ؘ0Mҗ.|upi8pB]+¥bѹ*87 k>}~Xu3_y\_ '!$2r脣M>IH3|ȍ5%!N!q *Fp#(P : —c!rHL2„N#cAB2Cr=HA2!,.6"D!į*4H!#3ċ :ȱ`OBƉbHq@,ȏ\槆3~)'87s<OB &Bk '9)5j$(y3,WB}U+vRVym(XJoφ{6mIvNl7)?JvE0_¢M*6r۽iE%葥M0?H nTҤGc˞M۸sͻ NȓsΟmK ޾jop;y7>xzkL6t_}wǟෞ|v~]t$E:h|4aBQ~Qv83ps./`uLtvc3*! ,Cf AH@k DPABtpŠb(qc odH(Sz츲I]Z)F!i,p Hp*xÅ FlŊ'#G 7~Thp ‘K$)Rʂ])sfȚ63ڼ)r'O&crL'9RfRO-2]'ƪAJ谫Ѧ[;dtkwidget-2.1.1/doc/images/disable_resize_function.gif000066400000000000000000024363401352002233700231040ustar00rootroot00000000000000GIF89a,+,3a\5 jcL0,d1YXb3\ki:4%5<('%*+4*61-1/11335;49:695=:::99:<9<>:=:==>>7;'6MPvr5H=B-s1m5\UJ6@<@:@<@<@>@>BA>E>A=T5P9b>g-7\ *9Ep)菆ۖ=ݸa L9dJѪ*>x|8)v!eɕB4RZ/9FWPWIXSQfTfe8dڀ C1:z mdXNCt[ 4Q$F#@1*(V-E2Ғ]be9٥WfQ‡uQe\0|(RK7}Jח2,T&~tїsɘhMya&YVrj_h#u`J4)qjBes]QDJ #=ib{Iq[ @ZL:+2T^&QI陒 De UE9jx.o^*eVZ諩bvilfQH(^#&F)3 RZљ93qܮYoIfᠰPY(Pl*DŽ&|Ҍ'Z~Ջޚk"@RDK ;HV欄lM, aDJmLv*T@/v&ZRb.x 4D%012դotV-Hao3<8Vn9[%֙g _&x\g [Eye#Pa6853/|v zNF2T_Nu2ιρ 7-n%A5*٬NkYvk|zH&7:2r6$SzfғBW1U{M|bOPF"4@{P&3b  pw]S.-IG)sM3ɥ>9FrZc7"6Wd8&?CGMDv^fġB6Y%^UHgcM45|"((gLRl90FI\"8aXlDv({3pcaP?F %G% bWs׊B*}THqzƿr6\XǺ?8C\Ǭ"S; 'r!rxj﫮 HI3KpnC#2 /`/mˁ B)6V{E^Zq\xYҫÅֺpFz\ 0tUt75IW'gk_]j];ttZ  Kn[|P|e $;ʋv{± fHz)3 u[B\Ι;CENҧ~g4T^Y>y.hKTNj: ޻;^^fUkT`nu+襸N2HY-F~~潾'Kai^U>^ >3 n5T>>:AծB?;WQv40vmmO8b)g4D>y8˙qS&>!)xrNCD>~8g0 > /~]]^S휩K".ϭ*^rޙ"f\ߙ* IvyisYn Ўa>鐎  Q,U_kooЄq#?*S//!k>0]^X}RLJ- /F=9^q堾ޝ0C 1蠞Ak{;+^6|S3ʀ1hCA"LH ed #2# %b$I&ŇUvXPHiFđA\J"Ú2\.$S#JR#e 2>LpЪģ+e$ɚ %nH5D \Q]LHȐ3Ahڎrf\Y&=ԄG\NR9ˍy*VJ궸|T)9Z%]@ B sq<'}O;RDv2>b0N\ER?HbdԞ>9=e&dn:е#eqW, %e%H c@ꥰrzjd*IAtU)'R\}jcSD:A5AYJ‘_: {㣛*h%1G#6%0w )pMCXZb}D8FJxV;yDC&_rs39B: ֦i"q@xy*4T4`Mk@/< uF=MJF3HŵTFͻ7yb(I(ʧ^.;Z{t_:$~jKQK*) ct-Sq=ipІu^f㰘"3 DNR B}^SY Jgb=@X s<| A*bbZ8,RW7Ĕ=ƙ9p$*LXf9PdشQe cpꯅsRR@)vBzS"ZŦv0+ByB\)B#ϮKW1MɨiiWM5F s\+j(4u_B== H(lz fMyZ̪餋PzW|@W]WHܙfJzr Őm8McLJVPuc67J )@G1Ff{LNm5ϓW QU*8_*4X,-?kLȏc>e-ä^VDE Hi] $cr+tQ5CaP fC/\:}dPPU h?)MԤعa@9(IR7 $&yf.2Yzd&}Gyzᾓ"CD%dt'm3,E-VLJxAsqAdbR0&lyo,\#1ƒs׉<&OyU2͘Q0+{$6BHec0ORܱq,bSEʄkJ ~qs4T1{=o yM'+Cw%jHp#XMN1T$.jsRdvŀ7D(!MꆺiZΒB1zWJkg ΋iHeﮮ kRY@!0'mqZ0YȾaII۶:b~b'-B( V0&mi:QI?hpu B1_[W ic kA2숶փb3nIꓻz\+ٳؕf*R[Xv-͢h)@t#-4Y@_1'2S5I)jk7 3*qC˪)a3 K;Hp҉DsˮX1'"+#8 ead iƛ`F#xƛ@adƛx'?q$be|FnLGgdf|dDuFF1|GzTǢIwt4!H}b4~F)GcDGn;uDG`twLF*FXF}4`oDv$wl`FGwovɵGgtIǃlƔIpǤTJȵIl[GB(:PkGq<{$JLGFlH|,G`lHGƛIlpW{J7$*I$J ʨ ߑɽ8! 00Ɠ˿\a}`!`H2IƷLͳ|$iK\TGƢM"ͩwDxadLJfstBJMfDNiCsɕF$ɞtK\!ḷ$Gƻgu_$ǃƤGlǧtG$L8Lʣ

K ,5!;Kr R--Jj JʃTM"0K4JOIJaσ'ŬQ"Ne}JR$Eaa̚eMuTt }HՊ?"8iMd,MQБXTFcMDBǷTJoieT8KsLHQHSݼGIՙׄ'RttԅGjt;M DKɃKE_̿\Mc[YW5Kƴ-}V FuZ4G~MjЌKF"uZyHZ<VpzWGPL ϳNa<\ݼOaG 0,=PU۔=N$(-YȢʈڻ F\ljUS]LxYЬmˣט5˝U\Ɍde[uFaMkԵ$}\UEܔ5^=KL|F)K\ՄF4^ՀS]!4JhݨtBYNeOֱY m['ѳhi\UܞmNYt[5 C@d ;FDnBz,NL{%PmSUǠR-&ȽLEMlE4˂mJ4΋ũ)d2Vɧ%|l"M$&ֽGSGN[]sX=-mK,JKGٍіTUg]X|I-eFNR{8qVM$^G}]:l_N vc4` I~ΤRf=`*[D5G=FeDNΔb#0j)Wf=G<ƢeOgf,v/NcW\]`TVu=#f ,!Pl~YS MJq!(] "n]Ԙ<}f6GGmyUiӜkLye'LcB6F N"ڀ΅֫ ^PY]swmppn\_k(7Uۤ7.I%m OcvOv=r7nӲvw׋vĦ^ռh*IOY1}$m 5G&M]!|lbk+/xMPF9ZD6MIGe}QdȖӓ|ۗveT{CͿFLxsa՘g,N >T]HMf`VwUԩ&_$T`w/v_xQb 7^Wiw"pa@ ټ'|! eNxD7`|d{=j[Uz`pT"|n|iG^]x(۩؆}Lm^}7zv`A1ǧz jؖOzUKME GڎxxW?wQ+_f֔v^?xɉ7lev,Q@ DCCB dƒ QB\bFLȐ@C 9'[$͚7dQ ˖-?&qaٔ=Ih:%+TT7݇Pؔq$i7D3tUs,PEUHlTHC<V6q"7d3ծC.̩́ᛤ3+5DJ:1eGsp+B0ܯth,yܱط<ݙNМ7̸lL V#9FX"tHt)&YL(,2;)Ccg J1_b`KJn$/דp 9sL c=D$ElÑN:w &j[Gp%L<;LuLX-3 bʚ,d963Ycb'-c6.C B (V X@$-7"v,/&rd$O<-bd4 eQ I%7_[@`!L12zlL'NFFA҂'EcL')nj ?*"۫Kq6n=_tE51rX%( ,BjC9CFK4ڲu"\ߜݧ-KѨ95)Ճ, Udm$%:)J"Sij mc֮kg<2Wd2lCrtOdVI#5{SB@) ɐgY~w*ǚ꽘M{t|X:#=htqNZfK>8=E3HmSO*I.ۑq(5YsԖĸRV 0ZSn?SN'ٴů]?sY*08łsR[Y3rāhX_+`!@# .Rٝsa 5pc'Rf|&"5Ӹ:/g\ FOIx[ 4&kYcq"NY*Uiq*M*}ɄdRK#0GEu("N C4+1IsY,]TP:,M`B HD!,`'oiIlTjZ4啀iO_dռh24Zqm|bJd(iCwJJV'>ARQstZ-}62zh?3OKx~:壞_\ʟ!0.v&q‚yv~:l}NЌb?*Y&JHbK^Z_NFXgEHDҵɅ)b#B짽oq'%;Q),[d+ a@>⅗I5U*\ J9{]+ y5bnJޟ8z+$@`CHH]ޔQz5$d_$}>2(,uU_ըq!Mypp^ laއd;aDTDZk;X\ %ۋ !FוJiT_EhYZJzT ɡ`5T)̄ Qฌ <Af{$O]EΒD-AH|= ٪Ś9OШQI^LPR}%E1Ik򠔔%]aTIUzeI*e QI!I"`❑M6 ^]\=D؋U~O];!N"]Mi.N Z\XbhI }^jHyY% Uߨ[]L`iŊPu#`;„5.^FHmYؔ 5:N@K|(S=^2ZH"MEC܁,`sM FHjHPA"ҙK ߫Z EO LˉK~IIӽV\!F/u7FӅU[h;I2EƩ|F[5iָ]jhBh%EUY.>ܤ) 2 92#ѥC>oQޡܨPM4w#AX$>^P| ~`&OMbpHQ1brT* +IKt/:bìMP׾"W x%au%QzM#R3Z {>$%TKIWeM]fu]Xy jdTG9$ִ܅՘Iot# Yݼܹc1v%Nu`,Ԅ-Pp&@tlX A_$x=R!J &atWYt (z,)~"0afy "'x c0# ũS(AWX]{|I]*ߩf~'*Y}Dr*IdNAM #ٝRYXL,ȜL@(=O_N˼Etݏ&8vT YTMpnRxnLҠZAPAMUxM0 !I<ĦZ0,& gIM=v=lp,.,ǂEVlD =,XܜHpgnrA ,ݙV$, &m,J_&mF]ݹqU\eɂʞd5`/uH8HҲjey(a?p^J5DslJlHܪ#fZ DD5ހ1YbXV։[iLJLFlMM!atR0I% WLE*,flVZTlI^_Ć8lA* DӢ*Մ ͥMIMYo/ƆTղĞۦׂ-T,VMTUyUCێJױJrj&BDהZތPJ)& E8b`e0r`/  J;Gc:EFpJm0+#PWMY=R`3ZofM"t)O",X'w0%OqLI")t~8@)IԡT)lZ^l/z,^Ofb)vҬB,.^OVoMiHebXnn hgHz,~mi1f!Pl8fPp>,////-ۀ 6p > Υ.JPPJhcq  BM_(m8;1VtZ4fƟhH.=?vf0MYa')^ߞF}L&~Y"T_΅id'nWZt+( 2#'$?ʪn,,2l F/O!t/.lQWoϲ(p2:/.;jW ]3 .'/($IyV/X LjP]rX ]J]PGsψ %ߪ ǽf,.H8@&]\ꖇQC:HIiMT١Ϣo_fpr_I%fC(E-jLll#,,"oM N_g~76r.S,^/,Rvշ(@ 7r"|2M.7stvwF7+}aW5"*ޯ*%SoEE95!36^Ԧ8TL~2'nf _#M?+bV%^3f y;R2]_HB/K1p;w 2OYRȑȴox7bNt9iTqZv/'wo5,/͞l&ÞxRz,Ly& nm_ raywϚ7Tfks7x'qr7:Irp!?)w1v_%/;圠Bt* |?cZgrrߐ s32xҹfyE!` ʹ y;/7w49.5%+ɢ:}ws2,LSr7~l4Gwwyy 衹f1:(wr'5XotM:lcV |5>ls4o-`_*a;GƩ2񅾖Q١L:Vp,(ȍ Ơu݌Z-d\+2g3)Q,WTy_Mu~u7:%kZ\~ѫ//|z. ʞ2|+zKtD3ۮ;Ϣ玼DH ӳ U,*4K #)۬ώ F/B8TmBجsN8[,[F 9Dn?"<(1>F/7X/*4?+qAPOL֖;ނ)iμ5mK#ndv R{? /ˎg\ +KpX"^{K0 >r6q[K`'DŽ;_.Wp)."JlRqSLc#F|س|xЊ~R#*2CrZŝ Lj)Vnys-^7K?k@H 6nC5e-N!͑E4ϾF HwKj7Hh5 %sBҝ ,xP[`YՓV8my" f&Aj4#vFN1ҤwjJX+Af> Zita?à_`ƌC־8G}R$3+M8'\V[ַe'%n4PRs9Oͧz9""jqZ$ dq@*%"D~ġȖ ` TpW,۰)ffdA4׉23/6;G*=D<RV0)8tc?*T[v΄EVj)>بYi)(efgd'1$N&Ce楲UC`rPU 5TTtt BlrYق$0 AS`SeB@P6"ɧe+VF% E)Q-tL?IFQ]AS3=ʼreՠc7fATuZ(@e|QBW~Z\" [+ hvjcW7O}mX1<Տ~c(P"6ʎL#fe.vQP!'m/4yKښMƐL cޡRc*Y`f6u\62"ǰb F5[7[K!*#\'; S%+uBA9uSϊiX1l0ySɣ# ,Ria!rH/v $+[! *=|cK8@ S30I2yti˳ꨨ$gU))+ GM:ybesρ[͖C/ VH qMut&4#y={:ܗ62¶pazflM>a%%[>U we-EQAR0+^o~G7[mgH|:hF1IJ幾BC$Pe7p_ֈ:(Hj1qBhmgy( |__ OqjiML;):=^Aw)Rrw0>us#{yzm[pĢ ek^5awM_Z n[yҶp-GETnîd~"%!* ?(/l8rX+zm]#gPZk)ʪBbd|3nj|'G)gm5F{j>Gi]<͂Ug\,a+[͝'Șqcqs_˼;ݮ7گnE,ݔCuD`p*xRnpQk3ꋘ˘OphDŽoxG?N%V圦eږؾHw^^o;J%zifdHezg[:xd[̘ң֔jPQI0KFD<< 1M*BΆ` +ƪ `~$ 6Ho8C}}PמdJf ,+ "N J QaqPf" p ^R)D6р0bBPd 4l M1@l? !e2.vD=L(!J GX 06T6X$O%G\E9F!2BhzDdP)gxQ$o`7\ ac *&c͈*+ R r 2^*X"- 7|Џ,Gi rgvox~ͦfԐk.ZQJذ<?1'$%M0Z/)3%DhkF3-we$mtSmr%_q' 6?Dj\򫪯Q_hJ'b i,n|o#G[ ˸ܱ ">@SRI?K-اx}v1.ߋzC)0OxHb:CъJ2thhKZf>2?e[2hm=j EMTtó\FC^pxzG;EuEG6,F[H]g_J]dXҳfM\X8L^JEcȢtEHjIJIԊLKFߴtGCcV'ON[9:3E lRY 萋rO.B1qIO*hhO+f fTFe2DLUk5͐.5l)X =LO4' 1FPCiAVXqLLWȎtOT IeFsTN;\5K[uT[LydHeEumH XO~̂GT2J#\X#g؆_XIqy8ﰭtr8:sXoX/׉q؆X؊+Jx7zx[Gj8(iPٮU=?S Ul$jX)Ёxqx-J\2nТ㌠#ڔY8IYW䜇S u/Ɓ+qK-=ј \ AZکZڪZګÚŁCd9=#o= TmZ9$jX9R )_3Pڦ%ͼ.7 6ROŶ~@=znZMyxX0;I溑YI9a:CX1 Zc[gk۶os[i[ BD۲AG6D 7v9z,= g` 4e  ~fogϸ1;/xP%YOُs3N ٿU&@y[+ՑlڰOQ9{ezOx1x8˳\˷˻˿\ǜ\ל\:zj[ρF/~O􄐱ߺbRyͦ[<ѴۚV--&X'4;]QSƙ|]$c]gkos]s‡:Yե<ۃ15< {C6TcO˻3~|[i<6I܋ %]I:o@)8c {4"Yǽ>=~K~7M+:ƃڅ#[MA>8;>{]ݗp= ~ {:>ݺW_gYq~%{x~V[VRѝݿv/! )cCSTr@[n1h`*PB VL8Q"7b\8#E+RaBK*)Rػ3Ν<{ 4СD=4ҥL:} ui &0kJq) XdALqB*vd{0eH9 2n˒"/(–,RhŹoQ6{cĻ>XC-j+2gBTaʏ_|ͤf쨴k۾;ݼ{ ept9USRpDz;>qO\:YkOzA-NRIP<)4>3Ƶ=_{dvvVy(}P[EP[yuzQIDRrLd[~b";Ý(: TV"|B5UQb}Y`c|UY=ėyQyI \(j@$EB^gj9yh)lTQevމgzTp(PĆWtp#j۹ H^&g5fi] mj)z_ŕEp H`jPZ]~W w ᑑJ*PvEyd5grl> -n~ hP` "UE|+$ Az__jZ*eNF%wR jhNﯘ*x;ހok nqG9"LrSV`DlF4ӅV" !ViZ)hC}9x|EA\PehR.)eV.i-_єYD^Z7IE{ޱpVTS.qܶ5r =F35r@.<蘌h8k3MZ^;%Z1Up>~]􏕾f\y b t*>C59ֽz_֬%41v K;Ex8c9XNP~8$r%g1YnΥM- gJ\`%h=SJMxC`~0.LdU9>ܭ?ňMޢG)ٻ[ބoTM0`k}A 09 ݰc5`H,]\Y.X,@g?O  h@o"l߇b۪8C2yH`tVu.Pa}m9΋@%oBEyYX$.Z^UCJd+ضhd _Zz'? P7%H?!H+z x˜5gdySwj-Ę:hx$&Ibd%xk2bϩ \ ^xxUM1[]\(Jkvo;v_W2tCfCn9!qL$P`Hg'\akm0̯u&YEWHȹNm!=??gܺD˦ڃ\Yݥ*3׃?iLϊ8:^Qa;?zdcִ1w/og.ֵNPq6tD#KYcwCV~Ɩk9-߮'þ}FX5 #|owlݴzǃ!K]r\qΗqqمU9s|HkwVM%y؀r{pgwfrteor7~#H%hbV~s~ltrv2ij$rdxLLqG^|̷{ t{g6](yG<y3/͇sw|p gJ{;/ٱz>c!Z,"xkȆm~W)&?C'23Vc@8@K(ykQ{q7c#|.w5FX&Kq]!wW䅃Ӈ]MYrVvej8$CX(@uHE?jxT`R Xrq k?fkX^a" \0tиw(U5F8w1^Q}':1FVըS~5(In(l-e{Sep w'@2HUPH9}w[X98H(UHhy7F׀?+::ḉ~S]&l WY[ɕ]_ a)cIeigikɖmo kDdWwH$ i#>Ғ9w A"I-":% ٓ&ْ\"b`鍂iw+Y<"7y,)'IΨ:^3Se )Iilj)v۷6l"E.{I٘Y9p79-y|ؓ]~ǒ鈝)^5+$)W+ ]i)xݸUݵAs9ef)JjiH=-3;a+ٍJY꘢ ŘEY#I] U&>Zw)wyEyAXLɐړRpayHe.sejgi:Cw8I(@㈝=:W3)*ʢ&{z:{RZ\ؘ)89>(@b(. kh a*k*Jjk*vcbɂY}ʨKə٤c(Ii):F VꨧCL:WڑIk^2hx 95qw1@ڙSxj57J=:);i$)vZjxx铏 Sزzwzj苊G[phkGIIr2'Nh{[S5X"ٱ٨A餁 {:3ٍzI߸o;q jڱ7 4yk я 0 +rI9~Kuk\7]˨bp䪷K!; ;++Ur˱;L*I@ }ÆKk׫ +owK˨ ۍc@b0:;K[[w˨w;[v5Zv@l !,#L%l')+-HD4Tk˹l9Ü `c÷k=tK㛷 ]_ a,cLeld+;TVZ6p;8ĸ{* ä+{zpvkSMK,I<É;?gɝɟ ʡ,ʣiLxs [Ȏ=ُ m˝}{= -|;MCsWN( ϐ̠oq.\'ksɽ>ၭ{ /$ -mݢ£bؔ!>M羭ݠ>ALܣ׎}@ҽ;.}ލ]0[`N(`  Ϡˮms.Wݸ=z"=ɝI>M؝W>'ϭn \貾M>!8. W|mNO@e>%o'n (MF>܂.F O8K~5stPb@]8K_#NLV >&B]^0   }/*l C!}_-^,=݈ᆞ؇}cPZNY2垍BOߞ_9m܅.9ךQs/ /{O‚WѧUŝQCoOأ}}JN>/\^ .#p_Hp v4e FIfdpI)Dnrȁ”=Μ=y,PETRM>UTU^ŚUV]~E e͚ 3\)cI*9QB  X20ܑ wݔZذ9d|2F3߽"!wL3Kra N4Sn|ńa(f -\,3g[/o:iN΀^^thXݽ^xɣ{V=[ig~pÐ7ۧq4`vq i5:(0`Az"9 kSx.DL31>VÔ:K%\{($4 " l0Fl0 DbVɩ: 3J+2K-RS-r\$b/LK6+={ %/`CD5ì.pTD2)"*20C]KCBd(;HAR 1P":frR'(RJ2Xa%Xc0{Lss 4l/O=m1n32 t4CxXarZS2S ,K.59w7xnuW^wuʢ%dOFd-k̴"91NrNKZPfL!1{- S â eD KENatr5(NƀX\Z 0DC%;8Cה{7px1O-@FF1\D-hpF>F#90Doz3uqυ/a =+@C*,E /#mׯج.*t aӬƂE+6{͸Ap\c}n6{. g(d qBҐDQ2!Q]_,JM%>cBڥAS-V5t@ ކ8JC\Tbș-Tu /-ʱE/'ЄIDi^sAl`N%yHE}dZLI Rrfm5s`AHORb: QlR#PIVmr mM-V >Uǥ_:26׹ϵ ařeMU+F;aݗmU⩤# H ſDh4Q m9 f̤A}Ev |_j( *N@>"+!ao3 zD/N:bGx%1kKAA`! ao1_XZCȨ6phvU _3L ˞LCZEoDDMA7O d.4tw3_ 5CEv;~zh9'nBdy˟Nr5fR)piSz?TZ" fVYonFZ,ۛ;ibkyeiF?HVumT[ۡ2sM=nr7\50DqmlֳZ! t``|72hr2M9+6 Ho! xbECo{[}rUՐ̖!Upw6"/).Q4 8дcOnP5|gmW{^qS"Mg!^sHqdRҒ7վcZj1"'k|QU;APzoǠG7qi.O#h^Wܝ#^gpwm&-ޓQR֣V .3:XǸu^DtC{a/U@Y|y'O/'ө7KطUznDx+C}#6m9- <:cüû<ʣ@3 B*hҖHAR{D8 ;s?ɋ@<<L@ȽՈ@9,zm>9듺A9?[hSJ$2 p=4A$|@೼ ?>;>* H-&۱*?h\D$CHTD:hڂN3/0|4OE`/ܣ9CSD<ÚKD,"۱ңW4(>'$/\FHKDc_";MBN\mFHQT=E\@8EsK@,!:C|y GKG+A)#<#LNLn$ p r Ҽ ԽkD@vG4c>aTANj{S8dE&>E_*B4CȣHOȥ|xR!>CUs8 >w;#IV: GC:?ĿD4Ƒ\?h-30}£ĤH$L3 a?7CB3:t+:*$8 !|<IL|C@$0TMr; HLtDXԺî@GkA|M@F̤LIzL;f@lMZF&MldOS33jglι=ISLϻ0JQVR5UTn",V!}AS\/wcL6]Ww2cv=N]O40?# RjXkqD8ʻR_W!M#,<`NՌTFI( RQ}%T?eUYo:ڋm: dOtӪLVYNd8=} 9 uZiוr–CkNX,LK`m7T&=΂DIjER 5nGޒ7(3{A0`>~8AboDV VpdHve+Xcδ X>νc@CeQVSEQUnWfeIceTRԜNe}I%[b  ;f;P5fffgx'a`ff>KtGL5,2M`^b4S>g McV^vvhxygiabckTdA-5dMhVe~蕆舎gygZ+ ۩i].f=iqW->O%ff饾ih)ձLwǞq06j~̤f iy^h6fmh~ĆfiifJdG`}G.`2j. Vfl0f VlhzgchvmKӮhlÝm2NNLjp F Vmvcn1BEcdN io+AJp0ovVvvf08ܰk CdHo(F^^p68 ?&gnrO)WfV'nV_= c?B>p+ppr"7m>r$oq?˖k_,s-L/s2Or>/26k9W,tNVs>/s^p>SY6?БEuFOhndVH7l~fpwBoleuQt&qTWUgnp^pbPf'm.W]ouV_9?礤HNbgjV`J_oifoqbxJlv)knnpvnGea7kr/wtvngff]:OXP{{~ox&6Ov_xvwoY Oww}ym_avyvtuNuOeJ`?jv|xg _gWuGowwMkg)x׎S{'zc(Gwwb``kw{{ zd-Xw_o|.|vgvc(ggt쎅هȗ|gmih|' E.md}Nwfx7gSf os٧}ww}yͿ7vNld~w?|JX{̆Aym~&p@p!YϒA(q"Ŋąq#ǎ?:{&rȍ$O ˖._Œ)s&͚6o̩s'Ϟ> *t(Ѣ@!M鰦NAfL1Mbͪu+׬(e*fJhʢMv-۶iYp+wnZ]bͫ7mMȐÇ#r1(Kj||ʖ/cάy3Ξ;/ UT>Z5֭ +Itফen ;K,b%?=޿/~<7E/%:k&6kJ(Hq8pRr)BE7XW!Ha!mǝD#Xbx襧{+_kG }hmg^q㍂ JC؃6tBzWb[bR5iUX_V }XM)#],Ĺmأp)d^%`B*OFhT e\BRʓLI0`{w&%e"lߝr鸪\yr6?^)(B2&(Nh"$^:TN9zkjkc_56qZvتxr٧AIs{KRE[,iRkUc|r;[7K\>뮟M`IBVi%/.5pZ)pWy}6bmi/*{,@$(O2G,d_v5驴 # Xl%jӷnÍ[Mb\wݝ؏C9dVfU}os.l4ާ͖/ysw=dkxvK8I{5si;y~ߛrYZ >܀ㅠ*Co;DB;럇ަIEZ?lq~yi]|!QO]nto$UIG!#TB:l91'mTh#Pj O%eP`6!)a\"BMER[N0s- Pa n., H\8T xuQj"6'"T6bm*"ж\ n%C:O8mXinO2DžD(qb\W2`O!>E3I[= B^$[,YƏJoqm#]*/VD.%79)Ѱ ~\A[U\2۟ 4pf-ͻ$ZI"-sj)qDuBқ ]hP)ՐӜg`I,{M0)AbƉtIF}n@r#^ ~oPL=24:-C@G&M%*<꿶SA#.LIԩ1o,(yR MdS%kF)qj]+f&ECU鹷zjOs"CeU (]BVWËW#vj>&lQ/u*3!}6*sDCDUQke.|,d*֙FF /Ux.]dy?D0J0 WJ鈌("ɉPՊ]~z#y(aVy'/5>ah))_Hzt@ *'YС*^qK*'gSDilG)n 5fxVVŞvD ŠxTjve\%,$6gOZ^妪baa =.5H8)Dzwj"Bj®5jC)ʫ4<jݝa]^E "mΦJ,#G=c5v˗-(-QާdU面.-yhRD^mhnqv r6:d󊮰nPnMؚuj ^j..Zڅ҂.`&D2(dژh.R6FgZu )jlScQaN**ԴjD-zMD&"m%hMϙn,Y$Q1l ([[u2&֖Yp:nB@R|D҈Bc|$*O 0gr, eFC&Ӣa]몗"b~-_k7KC/2>luog}*)Ȱ7 HbǭIFk֒$6bfC6q ?r$e. 0$bɪ^P&kjgҴ,ӕgF5б*l*gٲ+rI!c]pr%8h%k亵iݖ/.y" -#9(b05W3٪6C6o!U#;3.p.Ǩ&&L/c44C3l0g;caB,&!1&'Z?ps-AS 4 +4.Rrn)kC:r.'-6:h>5*]3 D0&y(g24i in/pHmw{m3n=,^;o ^2p{RnGF^OBh2v{0Lvp"/5xkyy)$>{W3׉8nw43|wb$E1zs3>hs~{OBL>C|0LxCcL|a;g~|S}_; juWmT߀M3bLړ9's{o~R~ÿ?%>sÏ{7_O9@h &T3!F8DiZҸcǍ@9/\'qRJ$G )mjҩse+?[Ե(QnGDѥx:5Geպ*_} ;,+gѦUm[oE,ٱtջo_Z@̪ ŽvAJ*֭b,=.ʖ])/5LJ]6^eZkPe)6n[E+ةvʕ?~u S п,3(l3^[ D /K(PhH,iZ5:i|)8X򅹗 n&|٩E;nSɽB+kϽ˾+r./ SL ,Ӳ3+l5r0M4pB , 7NDۆ1QЊPTu9ƣ^ hk 骜R++;OId<'B(ʲUV 1qU]w5Ll,I,Dm gT-O=a;O dA}C%tT9Ot9K3մ+R)"=J=RݻMhwEUVJZ!(щEXGeƍќfiL1y!`TU,L/GהTb(QuR&R |%gַF#!^f6cl;AzWh zC׆mF$^ cs;äv ~NL*-Ш:Ie~&7')ZzV}V%4e7{1liU{ۏX ~@8 A6 L9h<`%Ao7_R~(V.p㹺׾`M]%nέϞnp4lz\v _ͽe%SK̇DQ'a·f;Gy+w:HGG]M}Ak,d g2OYk'Ohf&N[j//bpa $$Y4$!/3R!`Nا.|)"mҘ%t 9VQzLN vV0uH6O_`+C;T*`. !=|!"07! p [°+"! #m !2#&Xو5.n۬MkjH/&gR0Xj`"{KBnȈl M֐0 =xg j+P ! o uqy}q !p"a!=c!dA/ś- A>pqO-7B8G*&$\Zg9gXHo_9,Lը \d|=f1+,=#A2${qpQqYN.fRJd&4>3@ e{l±AdֱӉij$t<2yRDv!vO~!C%" f=T'"{'R0UH$s0 M0|N0QNpr!2%s2a&!2e,r&7S'f,r{AA6CH&ZD(b m)ѱQQ*ys1/#j6$q&C# Y k\,;PҪ<)R%Urg"H/Ӄ b# &0 3>3I21[f(?%s'A2;s@;@%P3h2%34x352Ap6e 6K7Yr0Qb\|`92Agh: -6b?8뾶S-_!SJs="j"ka>tKu>t7s??ɴ? Lu@G,2S47C&3A)A5;5'e,eD.OC -3q+!8[DBV8`jE4"h*FEguG)Cj;gg<$N+fI3tJ/K0XsCLL2L%4?34'BNZBބ5L`C%O¾+3U_)HG1kF' uT./J {5̓[5dCXI6"}$e?M=C'#MMtf3[N_AZ3Cmj$L!B]ۑQibR핼 F-20F+'u6fHֶ"RdltAb S/*b3/j=B#!XE6pd W")e]lqteʹet't3A|v4gpg[34CRLCC4)APr3/-|Q/jj srSY+ޜ+,mT5CWC1-HuC!N{31/j=j4kbuht:LL]rFl;*_\j;ԃ*yųI WWw=BoB=uGJ"KWp>)n|w4@5}@''WUY(1\M#O^CC 8QBLRݑD#!X~$eH-$t! , 7T,D_rGduhwsUJgXp'~x>KmkȈw|;Ls3|&[g[j <G].HuDEew- .} fdU|״>;F' J!KXEcIGyLzk&=&#[2Y07>o!lHqAGeMٔQ4ZWBOPuˀ8H6$v'UtAA9@8f]o8ɫn7<1q('s|2!e-5)mRBGM2'd~eoC=Ā^e1<O\MJ%ᡙ~]꥞7>덳> \~㭈grtE>G`HӾxdns%%ʞ_A,|+#sQEU!?7!εN8W . 8PAH JBI)RB!|hp!B /Z4Ǐ C(S\ɒe,_/Oz9sf8să&yXEVHҥkSLz iҫX[EmyׯXz=f֫Lq[-nmݪ]Kܮ齦Yװa‚ ;V5M˘3kY6B6 Ua‚^zu2fc˞M۸s3[Za N0ȓ+_μ9УKNzLسkϤIËD{/!D(Ja $cW&(L1TSM:EO7Qc}UQ1EUUL!ZRX(勊x/T,gŢ\n5a<F^LI6QqZwؒxXdBfZVdgXfyg5XV&&kf晾)0F1qY'1Au|yvf v]ޡb(yޣQA"}'Q(Vt $ڑ&*K >MFNy-|Շա.C"ecSc._Ėsհ5qc]ng|Y,d%͑1yzٸGQbyh&_jj,[f p%,Mrrݞ~Z f!w1$_{bQE} E=b(꠫+;YS zԷZ/SRZq]U'78.zI,Ӕ{Wu-b QigSݚu9 je oÖplq٦7CyŔ?W1wwޝ$6zɏLP)/3:P(.B8.<+ӫ*`PEyM"Xg?4XJDmTsfaܯeCeaLgI.wg򝿾[[o7&NayfcTq1 jsёK'#(lGlŽ UKPfB,StU,!yRT1E/aQ niź֎=m[5.3̖e<K62\k0c𦀱 "8~' nN;;ϢHE'< A(mdu(O^*Hج,] UR5af[=/*eJ~8Kχᚲh\C|O|5A*Vl"G&%.rDAclˍmcfi}9s8$d#b X{BIIsl2‚ f $(mנQg*a)PA5+^֒|SQܨZıjlfLr JYer}{_dӫMۤW77"8 t2N {VAN0: œDZ3)Ɏ!1Aⲅt(DQMTuHCv<]5)Ce^[*C)}bRj14l1mXI%?άZzcLsسd3vRgT}sQvn5zX"'ȮBsĨg=ӳ3dj@(a,Tɔ\{&z%ʿ*'doE|E/J^>3,l[Ұ϶{HZ2ces+-P L[R1CۥjcMTs?~pUʍ1GzBbjfB&Kdzf&ihx;C NX lPNd0z" >O\dv3:^,F5Tn75cњ(6;^fl'Y1)VD1qe,cı+cEN!J[<ȥzaxWSɪd++ky˳\~=$1*^$滆nԦ=g>K떥[6wݘIѐ.MixNrw=O縃 !HjLaM*QLUk(!TMl^;ʆ[b>Q/ӶLiЈ4vhsk^w8E+$<憐ߎ BSf?H B,r"Pu$>h[a%Φȝ ?a3-6T58Qi.uI_>xiحK 5*5Eo x`Wo~dݏ$c2EP8dC"{hUfP>آfǃ;ߛnxϻN}p~leg]C3OeuG0)BL뭶Mgj8Eѫqttz_e9dPoj5u @{w:Bf2 ;up %|7Wye|LJ|;)RvqQ'QOqgf'Zڣw}V%rlre?TwT'Fth%HyWqVP ! c`#/ez?C\ t`OOV{(#d;ru 83'C%Q'J+e/|W!?4REv1wDzQa%yWMM9.a76[P/ [VsMg\()b(tdx%F †Oʅqov9O|Hjh! ~EW3IEr*n@ z @qP"TGTQ+u~tTfwl9x/wwF[=gh඄X?7N1 [(&(v~3&U*!?p '!z] hc1Pqjuh+@!v?WhAsPiyԘaXI TH\2c\b7>{@y:IIL=e'((D̙v#}{Z{1n$ tr(~a{ya F"6ОHB  L꤈bD nZ$Y2guVAYPWG改9R ^?C|qjC)XT% %$E%y+zFYpim- F4juɣ|≩G[T/GH [8MJ Mz) C[I!(dJ:ڀyX:A9j0+eBuy{jC@[+uyلHT2Z76z//r%wOsIyR ӚڤpW p ?"? ۰*9uԈOPD9 Xs4lڬ6dD!T#0ɭ4%z#;iF&m x b: / &gyj7i*Jڵ TڪC$? 9Ɠ su Rypз W)Ȳ6T/ʕYѴ[1TgTM~!Tz?|3OfZ/:'mMUTXB2^! a;Vkh˶ۼ [V@9J!tx2W+WpJ^[;u]y[}.ڜ[%:PM(4yOy[yzcŢsGW{Ykk]P "Aw!{(+y [ ۽” ߛ{dW@a?k+4,KVHw0qav,ۭ=ahwbɨNU \jۚY(2$|xl*~ 7(T6,ȬkN9ef숧<&Xī^I 'ŘhB>QHssS[,A}W,̵r, +$9 3\ 릀k4 \b=J=5B ɽ#ɿ^(+KZy\v(ʭU|,|ٍ̻쯟 Vh#F3x(I a Mߛ̗ͬ2L ҼJ d4&1 89 lgVΣ<0ɋ kolܤФZ/TO+1yc ( ͼ5]IYBzߌk똲ݡ!4)@Қ(MkF5b~qnVw2ʻpA}ϕiH Pg(iՔuVYm;"!Nv44(H&*7Iguݿۮ= h2VشpMm,n~R Ҙ ۚʑ1 ӿMmTzdd :x3(^yF[n}u?xJf^k/!,0[cLl2.4D;+VtEcqFԎCTЃ;$8nH"HZB*hC @OK+.j3>t,z?jP.a2pOHB 3K1 =D2N@ #Dш+FL34n,CR;~h"SUQ[EIIr:OZd27[2ˠx&/ =n?JBSYS+SLYө0/@ݰUtQO2J L|$}KQ X75`xI(qGWIE U+.b#GB'ZC9 * ^cy:"ΰ~b۪VdˬRΡ:*wO+].d;:M,45|ΗX a뎱HtS3N$-H3N`2dl5߼yW VyFZNo|":3a Ϧ.igrjBH1lPA}]w';oO*.͔fE~ܐ<6fJh7W_$3.p\ݻDž5~\*K&_ š)?]ωnM PW.oKMG +O.?aMxچEt. W^CO5L ?CA\P QF^ ZJ .D@,DDWaZ\2#/,J85bn)N!w+ea.ƲGiJ$3K"Ev",LcBDQRQ%]0٫^L&4aN\<(AP2zypfD'v7V3,IȉHiqG[61ei/uK@jLfQFj^~C6!VS'Ni7!&$d%jmL[ Q$O.[EZ*Юy-2MMB̔ EkCX{Y$D8eVL8ˬ$7R(%jlKI9T:A*lyć=L("51o'Җ:1g+-#:"'DDdO.]]+V:se0~7Pc_оj33+JSfzYcwXriBPҳ\pp`϶--aH +1mL>!ym4>TF5-OުF9 S!C5֕ VYHvB3D9*o+ox+61kfhvڥ76l,S06DJ K 7_F_Y藷tL7wĨ08YW UZG[\3)!+4nl~ӞeKUhNYr]"V;c%]ڗ'gd~5_91h`({K6l(53:+:Ħ(g1 gғAbz;Z.SYҿ417doH0=;pц&8"v0i %XT||@8#x@|*Df3SONDB-G5:\CwE9s.[z[?yÛxfPz9v~fNɩ3*DYg~|ə8!ZaU&64aέ}2+NMHoX ?^؏ ‹⟒ Ә)KK7R*!6ر %q7h9k+ 6ù2 'a;+[2Hk$ߑ6j#ɰ:C3 C(ʝ(A0XNpB3CNa-˭K8;6E??4<Ĵ=HRqۃ̃pѣ[i65j" ԣ=GZ=D,,{=>R=ґM,3I'RAi:J!RJ23#B\E{%/3)>CA(-ѶY=xCLFS4Ԉ7H؄CIY t#ms3<Z¬:\LLLOdLOaAF+A @JML5p[}M?9Ď{ ۜ \J3@܂=&P6S梕TN3iDN #A!>ż/G8Ր\LoPnk̤S:m7=:8ϋȭ"|Bu =pd4\1 UITK шQ"MTCseѦ)hTpC0NEdGu8Q6 .zztNėK|A1V$f < ,RN4d~ESOOK̼QoLSS=6wx׬Wl#L<@WmQDM7XeTNmЊ ۹%ؑQEJ UY-eǮYY#3&\E'tdVZ$MαhH֠ڶ ^-"1Hh+0m 㓺"L[ͯިރL1wSS_$<4QW]\Ѝu\ݔ\ċxIT-\X`[ YF[u\25TvU>8Y5#ʱ`.#OjK[ֺh=A*=RW:E6ImIMABNa&^@W,>,I\U>Ǧ˅JPTP8Vc3fX u@X_`aaz|Ա{hY:R֣ݹ\ˢ@]bMd=Rmmn1}wE BybqSbӠ5u(^bTGD PUU>cc[3&@>TE ĕcjb\06<\ T{ESQ ? dC>YeG ݗdNU9SU=b䖛&bHe-=ݵV|t SIDUZ+XOLe[e%>b#bDfejkFf \[%UejQM$2^`pmYU5Z]XsdUd_%hc2$]E5q%K%mAWK Ө{ό9}OW iȎ[Ggtu:Qi1^fUN [8nm~mjD2v`cfV`Dݶ_ܢ`N_(Xk\"ƜG"Un:~dڗP1˘K-h6>GnUN?5t[^vȎlcƳb☦`MViVi ֎m 𢎼 oO\o6؎ mql\,m_H@&nGglV]>E{JGq"Vrq=:r$ݠ]_NOຼ+ gT6VV0s2Sz^k?xjmmȥcŽ[gcl>pFGw;J? D@X@jxwل1wU>G,Y@Tt/pJ&JZufݖ8fL '>xD{f8OlRb~ wgTA>,'O>{8JĈm&N<`P1N7,1Ȑ(#hYe)Dӧ4M\&%H/, (RH#:1MRd!+ذbI%+YD5ڶk=yԉݺvҭ۷Ӧg4՘ Xqǒ'`2挘-;8d, a \=|Ѧz`B>a mзf]0u=,IM+XҧSn:N0m]mn 4_}a§Gm\ID(u4$*$`0iJ8A>QU!ZRUbS(FMWAFu#ZjYo 9\t^w]zy2`ɘ2*f%eQegqfZrX ЗqqllY\vP&kʱ@le(mWwֹf}q^y 4}y,_PCHan%J!Q0r"T?D FÆx1آS~#_c@֐ [H{&lR%N/a5&|mB jf%w!Tƚj 'gf[| +,3ɁnJqYΡGߨ)rƹ q6ZkJ!HQk$!Q^J*Em1aOxM QW"ߊ)Q VeLk]o 0S0NdQ9&0!+#ڜFww9yg'ze_lj2++3?jȔz|I?]p[Z B-RB'ZH͠-{bIz]-NbԹpe& PbhEޞ,}+E+XRl0.$zA0 RsKbX89M3m'roT<ȼ8?aon8()R1yЫt쐋@͡hpQ@X@am}b6~rudn 2۲d V[Idk-y|FC2 Xf PJ,S#Bɽ"l2IlHںp_3M&Z:Sb\MIpPٰuZz7^45Y.S:n8iz+k掫J]..KƻћG.\f!f  `WdrGT0_k$X\ ,v22iB mM~1 ƆP } *RȕD#p (^ )SKB6`i䲒1d Z:ӻ?]EꬫImr;'|_MVB3Kyg"Cn /i'Olؾ.(i-`4䬞1Á54%'"nb`v{E!Z+"K\v"%ikABm}}c) 3ݡ3Rq[;flM$sl&yV%VKنL-cHbx4uTʡ] I `rZH+.Wm>jz%k;%D2ӲhOH#T &WIVpVidwvI+܋kSsecz'HAVFk T-hO]y//moBV#·f%9w;;]KrNITy=,OY>4*# tOB+7r#zAݬ~au҇,])V+P`6a%Wrp(fWr}w.NnYf2^:]r>#gH;)e\ʛڳ t|s>cmxeQ1Wma U869曽$Q [ @I`HLCyC=H).uJH SZPP߀ؤY .މaZ ݋1RN)c2>@(@ By(c@ҙB]@naW9[z_ޣ>#> i[b!B$1a\d%:Q L%KX"SE$VH^DhDK$-J֤Aͧd'\ kjض(N XP&E%)@D ؈P Q"=H!ΝT`4SBd0#aJq=L8*CEWF]z)c>cAtGv BaA#_?=Le%CneɐЌGܙga6_V2"<_?I Pb䕠%jPU^@KN ! ؔ|oRpMmp:L'$rvbH=g)%e'RMԘ%EuVE#AwIfxvj^;zՅr!FdCfs%[bf@r 5Y @,"*h>c`ޣ)R$'B"EYt>B @%&HHDױ()_R"14b "XM En|<{1K(GuFs%P{*0۰5s~럞ebWv!*|.ShP;_v)T tOSogX%|[D|B) _C{u)΃v {>u=gUQ l`褙9ЪuW߯bmK%ׯ;+DM(^9H˜a a[hk B?|CJ3ztJ @8A.t$ >Xi(h᠃6(? 4菛2ra×1DE;Dq̖>g򤉱%R9SPbSVU X?=Tcɚ2EkXaю.$Hk邕m(\7\w  UT7vrƤ(W|̖EuShѣ;4iӧ7vD]ٳiW PbϠ,pF(cB>|xSx6͘ys.y"哇3L>)cw~(%]}ٓ]"ZK@mD*0O 3 B&*A6! 'C[,d 5N1^s26pB"3nA()9z 'JꞤn?㐼rRK[&4pK)\.oB@p@ٞ - ȩ$tHŢ0bB +jU\5E]݌gLsU4vlG|,鐉xcRʗL?J0V?(#7rjSϘ9!?Ϩ(+:u^qFz.CQD]Q45aJ &QS%bZ=8)RQUՐ#W_ FY?Õe;yN6yǯ~ &r?d:ojߍ$ AM>> is>vi*N?z ^Nw_@6)ح!WoHK>t` ObQtd5W;Ueo]gM1S[כӍ? 8:t/ML :NS&n8ykn^Ï]aKWAZM+~\CNKqC(61D\:9F-#hV35r1AҚؙ 2]Np"{2#&{ fp]/TH #lftP ՜V;x0V8BoU6}J_ L8G Q2#\*bd"D(8yȀ@ c@Pd <A#A\&fڠ";8"؁0u"\aƉn"(\&&=zӒXQK/Rea94[{7bJOM[>+ސgO;gzKWnU՛jV*MRᖻD:x sy7W"ۂ?ͼߗ\DVBC$4xDv~dXvfg| TXh ɬLoՄƤ@OVi͸J nl@ͦXJz/O ꢌɆ<$wc&"A:GPRȶ/l)IrI/ABr> +ܰk rN*U p$'ۼ!.jkr:ؘuwp؊YjRT-&Ģ.n &h-#e"B9C{b"r/iǘ%rgvloMn}lr06Ry hג)hʎbFr%(0"Mި"vl+θ"~ҸP/ 2 n>3fD vd$|*2i JP.p1yQYP|NE:ӎ l0㐉Nv#tq%?C*q\/< {0$ nj zo.'8r(oh)LI+ ȭ6G0,'Ԑ`GAxB@ɽ2,jDEC02HtMF25Trf|E)o! $X B@ ()U/v!D$Qn3p3_M骍(QB薰1%4R25(go}87x)0p29J- r9vH T@nF/1!ע\FM-!-cƮ5U8ǭ) S/1f6(^/M@&4FqH)quc:قƜ[)y8}23[58yqzCsQ32D2m(1FCp7CTFW;1+2!|1(rgHm*F6.Qdl 7(QMoGMt G? O0/tVt*H?i&f|@(rh&2bKtږUOHo?E9kRNJ6U)mqsR3hxST5EWQOS(CI6CV?S)TW$ 3%|04PKR,ɃB(>-op. NÕ/tUM0?G] L4xP#\=$/tBQa6mDK-n V35KUQR Ug(IU5QUi(l2y5bAa;XqVGC9cWUݫn[ZV\ݴ5\d4F24W@]1r8)pTGstmʶdUT$:-nOTFTj[-\vnOT{Ǣ\PQEqinQcOPI7OJ`Te紏X,)vi%oohes 2 !1ϸuNѮuj20k=Vbk6fv&[*.<&uu9Ta9u_ATta8V3sBrW| De2|tp7673@qO6{6#6T}U~=:SssfAm˃7(unrXϱnAhWjϬ[2ӫl4Tj/jH!yfH vf1bڈD7ṗ6sQra5X9"h%8t|'7e dp#U%Vc'7d7}Ha48}X^RrY鸁WґhR8gwQSr^ lZk 0@ TfJh_OR逘&cfysQ ؕ8vro _3PـqN(YQ}߷X#ss=7 K9y&X?ٙYq?~H?²XXmM[hiNyvD(6ﱂ+ْ 0yXB}os27?ٗs9s+LYVaQ!9|2J1t#%Ңc%W14nzq+w:XmuΘ}yX(U83zP?YX/zٛq~qyL?:8GJy ^-GmeBc5n30)OO/oZ(}55zg89ՄCڤث}KWڧ%%rs'`۫{:w,Z~w9Xw&7d#٬cڗWuQ9+z"979y{zX ;WO:f@ھ}79R?Gc{ W ;)0yҒ zaDY۳):񢉙sP)AZig:{=yZdzu;o\W!Z²g{!,ٻ:"|@ăUt1{ p@wbCJ*MP;|8AYu2纛84ϠJ)ix;{j\it8k8Fw2-abڳҩ=-Ѡ^owv'!, GP C j ޳w9a" w`\> 5'#i$ ce{h2S&᛹#%XWˣ4%TP;FA|ӰRJX>Y X̢]kؗ=v-ؒyKՕ w.4{a p 4\ιb*-d7#|`gIR}<2|KRj+Vv6&À!,C %J  bĂT&"8r \>!G2p/Ȕ%J2ݫ CXGϐ4n i=Sj9N-5uM;k1WsW n>%fO끿13j2M~<@۠?bKԥ1k`dX+?l!,PG\@> K8PXD&Bd@>Xw#! o"J#8@ֱW%œ2 K80b{!2 _Ɗ Ev7dufr0֭G%N2g8|:P(L{ V\ih w @MTY ը25K Q6+EM56|+E'Z$(`@!, ٻ \BB4N{2uP^+oϭ3yGJWtyL5P%p@f>DzKB)zn8KhAJzVLj/ނ!, ٻwa>:(`8ݻ<| p=DJH7-HֱlYSeL44̹ІX*h|j,H fl( IrÎA\k>M5id0 !,ٻXguk!ཌྷ;擇oJ+ HyX i-+[3&ΙkĩQBy=P&5._izF; .ejp{D& \F(QNk \"V$+VIbQj`!,ݳw/ w`pC) cBJqx=5b)H*!\w%+&Ώ:)v3Av-@RK/)ϨRŃ[5 w.4{D 8PrkIo i"ڭ3ަ1QrI`@L!,g':{ #.9[ⴌ)QE,iJc2#ufhis::y&n!i;#<(RCG2})2Wu!RZ׽בbGJ w.4{ 86-|%06k֑7jz$oM{RJPCF$j͗5?D:m€!,ݳw/ w`pĄQt!%1{! Q+~\w%,Ϧ)vӤGvcRK/)Ϩ$>}@VMGLNcҢӪmٵ2 zՊc>Ԏ)SLKNpVL%!",ٻXgukap m4<|#KV\w% fwM{u3igΝ= *@҃ԩAjNYRb4_1R29*5xPٲ-ac[1qb!,g)2 H*\ȰÇ#JHŋ3j␎ CIɓ(S\˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵǮ`Ê+Y!Ϊ]˶۷p{0-ݻx˷ߞJJKk^̘Ɛ#K^Ld˘3k̹ϠCMу=zb[˞mԴsõMxƓ+bqC~HgP:F*Xs_JB7CÄ_սGh>hwAaтnF  VXG!PIxІؐxD`NQD,b`a%(cE)Rx'ΨB֭"R(FLAG6)$iCF)vE"e>?^ OP#`B8DU Q|ifEYTDL@ x:5WBUg j)(BEq4@T09裄Pe8-P5 seYʒX驞"$E5Yʄ{Lzꦩ2:u}Jk͡gBmDj>[dޱ0a3,D= -@CZ~Y ,En= n [DRTĴ>gϷ .JDzZzEh0y7dBDAAJĮDru9&d2ІU c*֨)@4eA e<蜌<*WOK ԱO73>/8s+bsmNt@U3M{ľv_9:-9x>tN ]Qȡ~xm9p5Jr@z8 ` 8 ۣ2N=ʬ@Xs꫷3=M[95P^9m:A{%I2wp̊dc 80(3{5ъS9kcvP gSC0E8Xt(CGڰr7uIEP6U CHgO"u&,5oC<`"%>H,ЗNJf[@)&.wc3i ~DY 6Fl!Xc0$.-"[<I2c[Aa n 5[9"Wm-!3f II2|4!/teH#`FA&Mi6.B2x".u|Kf&Ș҅27[NWvh֖,>({*t7(:؃=5(A~o}3y?؄Nu;(IqUhw}օ^xЗ,"Hȅ X~v g{mHdBYs z|k15sP~7mn8q|4QVK1jYqX엉E(6| 0 q9 x1GH H (VsJU~ a>g٨|ыB(不ǘT 狾ޘƀoG Xèx1Xΐ` Fu t11p1Y naOQ&Ϙ V+!3s:k~h@), YFYCLsO gђJAVI(F\ѕ1èa)ZDlhba޸ȏo `mx`ٗ]A)Yzqzi{Vы`;lHLT9KQ@Y טךi9 *MřWYyIiՙ}fIY=tLA ȄЇIxٞΉyɞy5Iȉ99QҘ z ?~ɏ& U!n*= Jy$z$g'Zq+?)/*͙3.z! °%>HVL)?ѣG:LzDF)9>aXZjAڠ_\|agjZRJ3zUivZ' 깦Vz {yG>1*92! ^v/ 1A*3z ,c*:H橼Z , +aNJj3AjQ' تp*PJ* Ắڮ@ #jV:hHH7 +jx` &GQ!&0kԘ * +˲p7,4 䀳8k @:+@ 1D{F{a<K˴ a8 ;F0ؐ%';XE9n;J  1 q8Aq ڠ a I; +n; P+A q ^+[[KkKp=‹KI51,;[>q H00 $vk {p0 0ke{ b9 )!pt$ ̋{ m 瀿DQ0 +{M,±[N!ܛ64^+ի5zaDlPHl&2<[3T\T&!ŻkT, P X\ZLJW,d>l0],<tL{V|{g01ȓУK\_ֳkΝEϻ[ӫ_:_IbO_=(`` h~6 1.DfvnJ])E]HJ\b>!H)8DaP@-t"L/ 5)xd02,6FVY%- "@a5gfydgf%Jz0N"VEv9'un2] L P|yfEle&brW@͉UP#UJ%I&\XdJXPV X}EuQ6RA Ňm\$j-EU@-kdEm2cGŸ Go$콋m [ Wp _}э< / W;q {RLթz"crT=r$wp ,2i1&47/2ˣ+LtOC朳 K7블 eYk1]'rT߼'ac / ־tJ\44!Pw2ʈK+ݔv }E[w^]-A,4g}{pXA$TC6ͻA ģȑ!G|l7T@K?l+@Uhw˾4+e:kHQ{;)0GQL7= .0/zqb׿lˋ$rUm.h =¨ pF—ΆS7` @r>юrDZƿAuX\Bȭp0l\PxkxWEP)1) :Mxd'x#Hdž)'U%2yU,<g,@(ƞm9"] f$eZMvyI! sHH[S0W6&0!.|@jÙ$5 k f/jf,H EIoD:tf7M|Sg> Og t&8ypJTD%HLJ9݉O/iµL<0( :QD'eLRԦ3)KAR7)P}:Ԣ=)PqjԤ6LOEU>URUUըr^)N<N-*U*֞tQz3f +J׾x` l`2kd:Va+ngA;r~i;KZV)جjWw<(.vB!c4Ԉw.EǍh!~5% #j xKMz|K/5ݺ(Е7sq4o+dM!%s{V:8#<7HHs%>&0~L911cf}^E"{]-[x[2P&;PL*[Xβ.{`L2Ųn;.rSp=L9e4&ip0hB'XGA!g{ @^B\Jm5h c:C!^ȜѼD'0{.I7hԜ.4t@LLJWN3akN}̙%jJJi#d4;Wg:6WCgFS0!,˳|fs·9CP+NAQӰz3:T| @<2j} -]l׫9w)8 Z#h5 9ϑc&HZ-2SyZ7>%n8=8x׽. G+~`IG#XR"``G,ǛW[85V@iw ^p#H;q` 4ou(hG=lְ9 /vf{ }9OGz-~|ZQЊi%ձ49%H3OO 7#GNa9=OpW7 ` y (p ` +ʠ;~p" u#p%H|G ugwwk&J>&;շ`k&f 1h<(m"h xo0pgЄ' ]H 9FhFt0 /HtaDH3Mta7ї(/FHF(pM8pPx p 0p \Wa(` \@*pc͗twpqa iRL|x}s}xuRI(ROsQ LhFxy`(h؅z͸͸FsD|qH7FkRM{勿~ g7G80h 耧x\x 0d'p!?Wt.Ȋ,xtw(g qr)fmxt`(5s7ynpsHݠPy{ zzpg@ 0fXyGCGu("Yswt'gHLNUlny7voN1ovᇬoa)1F w`yf}AuYLCfo)?7PX9 bO7vP0q^IvO$ \JE%bChoqj ц9ǃ9x\`?? Yy虞깞ٞ9Yy9ftH݉mdmP<ʓl.ٝ3dlM &Y&*ymj|1d*f'eXi?fɝuѡk γ:ڤ<ʤ fcA9ڗNUMj)Z #UYJgzBZԋ_) ~< %8(dqX*ڇq*jYD'g!Wzڪ:ZzګZRZuJA Sz] vj?6dtʬ](` i;((FjjJ}b~HFPڮ魔u w!Fju*]&GjI!  ߺ N_` +@"K)*ȹǚ-'ם2; ;ϐq8&ǩ ^pIM[l޺|i~ZxA][;]O+[kxAv zm붚*b- Qv1Ԙ{ \ V Z,\<2Zv{ceg,iS}h$]׭rh a؈׀m3w`LUfخȥɈ|6 ,w oE[ժp 0[1 يQڰ+L iBǸ۽۲O^~γ!5+ȝ܁&`=-{۲|})ݽip) ߄ҲQ}  =gpض °!-P=!0 F^!N!ٕm&~r+} 2]q!1 > .z J!a p/>Q>(.> ,0t ^>?^M~eilD+|tsNRw~ [>^Bo.B軑I> }.=n   -ڬ~ M~빮 䏑x!N`ny# QnQV.F ׾ n) #KpN]?K O. KaY!N'Q/683oB^,_AQ/HTIMq:Aq5O a,lj_nnuuo\m}tđց>E~{O?>w_+=5QO4~ o4OoE Po!A ___Aٿͅ/̏ _ ~!X$XA .dC%NXE5nAaXr3f%3K1eΤYfC E $IgTYQI.}`H"dOɂ+nW>e3,« e[:jԸ \_%85]+cȑM,HĀQg=sx9iA9fڵ_dQ.c{۷!NX7wfy -ysٵ;*^mo67Fog}L>2*Z@?O@c)pBӜ[)(Cs)6DS쪻09TqFbƃ+kǘ{HǯD T#+Ϡ'G%r"ʾв%"s̅ba^ѱL82C5Kğt9K{3N@?s|AK=7{ $2ElRN#.҅ρH|N[M1P+ҤlrU\_t줉0W`̒*"ւQ&XfgR Kτ%(e6gkzZk¦ԆA[x{ǔj6^~y7r.^i3Rs_YS9@LL2.7C826 |́2~ΛVB&Y瀏'H"qǸ!h|mpB|v>#B`vL邜ΧrVgOI|H|g.D3 ḿvp 7pW|qwq#|r+r3gܞ8n`iN$X 2yP! @`EE(Bj8saA&":GD 2iOS|CXŅGd%PsQk tx9i[+bB."E!cC\=R2G(0&͟G0 1@%-yJBq!@N!tˤO>c #?YR"q`-YǗPBqd`HDd.ɉ.*ajoG9Kjab?ɴOuJ@b Gip$ha RjèB' Ӊ15k~!$ Q;^[ЈfDŽ [D^ӇS?Q55ܚ6]W'bc DB!JlI^6M s]cc"8",6VƇ9%[ߊDMձ *AꚐ0C) N訥HeXYS&[?{ 2$Cs%OB+Dpk۲1=K2܃!V\NE뚾&!+Gt&V&wk|V ,[X&pkxe_ܸ,}7~ a qC__81xŐM VZ}^~=SV KdÿɰKcLqXTPS=5-%D"J1 &0 -idNN0SpWsPJ; DZڒ$'sA\殷8ߡ K&,6]"6c$ VC“4!:?g bgD71uMh=0K)Y"#͛dNi4FZ 磩ڱ.k"m7yYsr CvZ ?כ!"6]hcMNu=|q,2bz)>9p`b](fݓGӼ٢TJ!PcW '#7D dL kLDQHMZ#C4Z][Nv/Dپ@m 9fqFA V_]0ƇJ|噲&4A86[J{}Mom^!}ξ`a/e-{ 7a|KF |;ՖL:~}_V~G&ȱ|_V( @@ @<@L@\@,|@@H)= Ďֻ@Կ:aҩm s︌6 !,j*: H*\!D|7䠑%VHaĈ=.8$B"C.hrFDPh%AFL ٱȂ6uCJ4#$8^*1e6E֯`ÊKٳhӪ]˶۷pʝKĺx˷߿ LÈL̸ǐ#KLiʘ3k,v1ϠCMӨS^ͺׅAMmoͻRbNs`"_μfΣK/Bسkνֿ3q)ӫ~n~Ɗ))!`R AEC8(V. h EqU(IXQNQqх!m_^(c;HA, PbH`9XІ `R;xcG.!R b!2SăCY aHŃ`JXS$8$E6Y8 H~ *nVEDM$ŦM)i&N~jatRd *B:֫MJЦz+eZW{\5A%jB`wl\^šִv뭚ن%+Y+` 﫫:/F*T -;bȢK , o Ƌ0&I9hPͮMUe;' < ̩"#qroJ1#lq4/4KG )|k\c5*+"(d4RE\/ 889P1ᐯ07_5yhb),%3$~ԃ13N<.;:I,%*$jY98z - rz {y OƜ/Pf_t}u?P9}N`ᇌϭ-r̺Ne qDq¶$GZX=֪Ԁ9lo +lWn*gj +hl9P!ݣ M?lw;W&DWV&@ҽNxbD/tr)lx^wו~SW(E&*"NhtulJ\g9VNm>#;$΃J6򒨪$$o3IP $,R䓔t^AHIY +AټR )]IV H,Kr/ cr+$f2KRNr,&6U̞4iKr K* )'(Iy“|g>Ozr @yρ泠<Ѕ&4%hD Ї:tD-QsD;ҋhJzP&< Z kǸN3t@iOʀԨH*QԟTATԨZOjQZծԩPjU{Vը`RתֳLiWzTu:\Ѫ L z+W׬\'mh6'PClcAӨs!d%Yƈ# lJ$+Oj㴨MjWֺlgKͭnwmein=8T٭ɍ`\0]_B+$ Ҫӻ=+d`bBuK߼W!@({LN;'L [nBP.Ĕso}GL{&ފ=M#[f:ELXAsQQ{2d% o𜯍#!x2F1.qldAL&ul&Lrk@8tC|hTFtK}TC ȑx7>t}?g\ ]hCO`vümz|<;q mu(F;ꡌd@5v)^ >{ F^ߘ82LZww NhOFnG6"@9 mzԝh)<^O5Aow(t7) "XA:p#mN`6=QPTұ^JV!,8y8^()c8Rm⃃Hx<)q A|}]xT~Q=v$?w Fk 0p !|ا}tW  ا ا@*k8k6uӰ~VgpVL',Xf6-XВΧ}Grɀ|v }Vw}zGⷀ`sz@@8mFu%nV"gwWYvwz|Pxy׀ &Hhp 07kAG7nq '%*(-{()׶qwrnPmLHqPtx(G6Gn`fs0Ԑ~ q؁#Ȉ!~b9qes@@Jxlft{ٔ!eJwi\pc{fN!e^g!eNS_ɕQy`d]6Jjf(JvI oIhxuix&:Nɖ@4I1Øzs)%OYؗ$yu!!an9Yyșʹٜ9Yyؙu{z1^;Ę ψԈ{`iki0)L ![r)g=+  qت;˺;{K~{k˻"JKrc˰)[d;)HKKRܻg&kk Y [j CKpmK,lR j]Чe pk! "&$l¸A1,Q*|Ьuz9ѱ{s)ăQFHĨ  Ol-uL,TLp;b| !bŁag i_< oQsLv|jL{,}q`l0lᲉ ށĩ1Õl܁Ȫɞ<\ؑşʡ=  ˟˦<˫< ̿ǯQ<̵aʼ̱̯|\@]< Āllά έ 1ɩ!\!˭<I<D=оͻg L ,ͮm+ Qdѻ!+&,Ҭq"*'5ڋӳ;B= ŠG]I\|QԺ1}դQl[բ bd ;g% km yݮf]צLx)J~im}}أ_=aؘɂ]-ٔT]ђԘ=٤q|ٟq=,e׃]Qڦ. ښ۱*ymۘ۹]]ѩ=ܓ ܔq=݈qʤݡL ݜZݜ}نM-M]}ߚѯ ƝpoAnr ^ΐ$- nh">⍁ڴ,< 0 5n}Q⮱<4 A!jG^>M>J ㅱ hQ=x e^ʺ٣Ae~.Xbj=t>v~ۡu~Vo>}zD1{x~A ސQ~~Qњ@lݐ 顮M@h ^f =Q` V馑 N嫕 bU}a ҞMn.Pm qakqZn APA iFo _  /o ߖ / m!_Ԯ (*q QN징,o  k`*lbQ\VXZ\^p K/k />t_pxz|~EΥQބO3*庑Ȋ^?O Khԅ^efՆiHI%sͿHq[}[~ZFK-^) K_a)]fjk^{mrV(Fx.𰍻cjvx':yeA8H!_"JTS[VeVziz.bD9f>5mtq/9@W6i1Vivm㖛m7ި"d.kphS$}k~ ~nӆ;%<"[hjI ]h|N4ov(pg+\_]o4n܎a|wh9ԥ[=Y; >&xkv]hgv*y+8|kh[ 'ݮntIR!c2!,\(=v4D>GC 2(^2&K7Vo:S|:xD\5E [r'j~ o!"̇S\-.CڸEl i 6Bq*QS)MyHDJGLdqԱkF$odd!;䑹ŖSd~oɡ;#>$1aF sRYWSk '_6l*`1yLh2e (yMlf- H-[;&2!HFz{ F> n$SΖ1U1; |fp&D̀&T ehC?6ȄBANfTK) 鲣#׌ $eiKZ:DaH=S $:OYb! KzT&\6Aӧ~s$H5(L1TjWUUXzVUkek[d^TqeEoWV;YַV%la" &VelcX=FVle-{YfVlg% GxV%miXӦVq.p!qh$EV$!,k+> H*aCDH FxŁCr81FRZX1E?j(3G"R66tYgG?m|y͓:cƴI]d("ȧL[FʒѕiTNXȃ Y1fǝ/GbKУ\zÈ+^̸c \[Q"{y+dUyWbo,)5AEuSQnפkhY-gAj]~+xl'!וQ7 A] ?Q-+BDx'E}4Y70؉́;Yb!ςCbg=hK 5of+g2,Pv̇x2`Kg>%BV 6χ"x'πs "x [GAonb# } {Doc-r|=68?^XїiRL $^& "*ܭ4 WHP!d] )u'NeR{ޡJ)'ܙRry=9Q, Q8k=iOLs'"RJ~t%D5:Q{.˂N'* M9 Y8P)j. )SE E%󑂄C?iTg8VrdZqJt"եAM*ުYV&u.V_?EH[3$c7K&w|JUOMSǚuTk9[kbJP?q3QM΃RϚ>}*k&l3fNjU5[[w@Z,vB hV$On5 kOd 6cMHZb|qKoDvA^pk/IdeI~r[\Kqk:_gpvw< u}eM^Jyo>sbWQ&k]F/z9>:A߹;v_B-yu;!Ԯ'}mmkyZ! .{1+. k.;( 2lZ , 2˭3{):LR v{0ç;y+¹LYk[0hƳ pgilmgo n,u\t\UlLwzx} ryl|own{LȑǏȊ Ȓǚp,ȝ<Ȃ~ȘƇȌʢȨ<ʆu ɖɝLɡLȪrl`o3؇*F<T <\|؜ڼ<\|@ Q4_L[SAaLLм=]}-)|1ϥeԀL 2^, \Ke0q4M2vFmJƗZdTF}HJLNPR=T]V}XZ\[]`3&]*݄,L^npr=t]v]* 9a,i(MaDݷw؊،؎ؐԘ'2fc|KAٞ٠ڢ=ڌmId^)~l-ط-ԙ=lMڸۺۼ=0ҊF2c\@]$7 1ݦMI#Ԁgևm17- a[ 3eݿjލވAm|ǜ/e ެNd@(N0=p]ޅ\}Қ@MIEPU-nIK]0=aݖta*^iCPMn=5G$sz~Mͦ צ\<\-'iP >^~n` @pn` ^~ ꪎ|^|UU_*N) Ȟʾѭ頾@ ` ̾>}~P}ꎃ):1 =hB:ޞM.P^ѽy.>p}~Tݦ ]9d>\U, p  ^5P0+` + 1?-\/6Z0a^M ?坨x_ n` P€p 4_? ` (p ` +ʠٞ^`O@ ^*35JH'=τ]`[kP~ 0֐?ӏ`>y dx0JlXŋ`.n11|UqI*)UR/1cXM9us2 c5]>sNSe)H0N)ej \kmUBP[qΥP:LKP ރv2`ҰA)d(RŖqArUTDqa %]iulE:W>uʵװ+{vᨕ/g~ZẊz ח d(%+Jt\N.\6Ѩ˔WBq蘣bR7N Gtp.j™+ęM1x-rfSZjE pcH0yC!{FB=4@233̇ qK.I3pZ )1QL!GMܰ*,5 t3kĭ$ TtQj(G !+c2H{tB( LJ>d V\suWWf4R`t .J(TC2$0t h,[pw\r5\tUw]vu]xwp}u0M]+%fڝH5=TUVS/HDb3xc;cŵ^շ%T[!No##TNaS%6Hbېzh6Gd}-XWf! ae|Zʓ:_!K!V{mvxYЁ\.rHFUf;=)ck$=ꌥW?r3|j(Ǭ&!#l0ZyvswzݠZ_b;n.+uC9jXݳ~{wioȰۖjgt+Z}{yəOVc{]wsTfy[VgůkRg!`=AFͥbBrkHiq&i KЊ#a}C QC$bxD$&QKdbD(Fч+xNH5u{FAd 3Ŏ@/z|`zi0HHFRd%- >0dtג?R큤B"Mou| PF2jKRe/}Fo"Db%Hi q8Å= AXg0#/MpS OR6GopЅᱝ^[Ot=Cf>alf zP&!`hC˩GzRiѬMP&C#%iIP>t|PsE?55ӌN>:PT;婭PPXAI6ʅ|.AOiUz*uW-50kS}rѱF)VVD Ùs1+OYFmka kXr;]91k?+Hlg{ؕx D=Jp6sYVZe@xx$`;7Y-ݬl{&`59WV .6QRhءly cVVnA^J)L–Wñ"ͬu}BW\[_Ҟ$\w/3¨[\gX̙oheI9sZJ"aw=v7bf\Y[Ĕec Y?`EV*xf(NEؽBr/2c~G"=ܐKR|kod0R| |f/apL/gZŰ]4?¯'K=aU̺J}Fw'τ \ɪzKuek`a> zpkwv ٣?2;[ܞE4_J:_`[=nx|}Spm/! (w[UcUZ:!_@C C-ՂC¡m4H<"/~rf</A'!<ن_#9Lr'i)9{ h';K?`{6CjntFݜ[Ӈ\ '5Su;>rik޼ V$h8_ώvJl{Rs]G曞r=,Ormx[]fyix(I(]|XAz4&׍G;zKGLx~E;/|]tW}ڟ}jpM|#_F"LJt[oE|V1@?@K%㷐㾆?.>,1{@<.V@<!3;=>;DmbLA{ H!$:ݫ ޳[1·P9 ,"s +lCEYe qE"/LR1m2PH̾7"L29ףQ\-)Sh?3RB b07Z1RP,=S4uG%մR8FYTZT8SOT\0I 24UMUUu<;XY5JÜTSde];A%):|E-}V|QDT{BaXFnV_0Vk%j8WL9Cz]hϲ׃W0 }և#,w ',حW)BM(إɲђuqCQUQ@u6ѩܞ ㉀rⴔQVّMWYZiҀ=Zyc bYC }ZO a%1&~%_ag8lj+Խ`.vM/a^EN3I.8Ec;;ec[ Ze:N@0ߜch`EF㇄ .d⊘bR1lb@ +8n%ec2.]FVeXRPneF 2mD.Zd[~G~\b^naAPeEZn\._ij.Tcl6.Eelq-r`L 2)ngzgh_n ]tfX[F), Mh`uh+_|畞f䆋eiggcap[`hNag0Z|j>n|haSAg&jRaOb^{k{ ־h6]0kf괆lb;yFi빰|l m&gh۹`mӀfVd榼mJj&lQcV~m_mVjll nlV>^>obo~or)W^VNokwvesNLPlZ*~pӪLtMqwlalrfvqp*kMx߉6 !q?pr+j򝸄d6k0VZr1ש!ok;7f,Gn'gVh$a9s'":9Ulan{4r DB7.~#nmVz 874UD\ޝZwFȜKJ_Dصn\H]iL!﹄*Q^˵)`A`fL`Ͱ @ż搅텁9Tu `K0 %a̋!aFt ^!fDE!ŘSKDHߘm`ߗ Ra)\&Ya>Mx~6&V !6`ɡ-"iDFMhB&ǑU rE1ޭQB!nd6VJU"nOL`AYZ߉" UalPFHB!B ""֢$_(Y.B&b6bD]#1YKE"^$_DI4;zyLtcFdCco`fcD<t\A`Q=FD>dC"^DN$EVE^$Fă~#^0c>D3fJ*ot$*MO$ HX&dƞ45bdVe*^\fn&5%]A]dcz&-yd\qjF ET~x IE&JD)Dj&rޅnU~J|BC1 ofrbkʄskp6 t(pBl@ń'J47!,q0= H*,H$_ Ii0b!.BtHĎD H#A/r(Eeȑ3$͎=:SgE! ȍ&QBN3j_$IȋXDdĹFD08DfE0%M;T־3*^̸ǐk5 "Ro O͘5ҵ,I:9+Q(D(Nlu[ЬsP6STնuIGZV͙ZGP,IuߵA3Ə2#˟O}H[Dlyv[ZaUTxq-|!^ g@ feIPugqmvI  %m IQMFFg ^Y LXXZPBitch&TGFU܂cSMtAO+6ZB/QFキv4N|ƅ ILj<4co&I WL}y%MTOQjꩋaꪬ꫰*+JjR뮼7D> k쓚6묓J ;ydf0-ڢkRa߾+k/c۪KNFd' Gg^ G,jN5cE%P]6 r<(r*Fd24k'klTxIEMUPSM)襵Zgm\K=T{hM5Ts5tFukmQ}-v>sm6oi >uiMM6guaxaq>)MSPnK-S;=F0QT77Diz7R}аx2^ 6͓.SGTo}# ڇMKAgu~5#8 UTP{ Ž Tg}sBal3ặ5~\Xb7ɰr7|]&Iks>ʙsW{8!}R\V5l3` ]4l6r~ ae02n+[EoËMDoiom[Z bũyod"75p"R9{^6Js,uFO}g6, " n9NҖs߳ }f˥iUl;v 0S{MUPu|R!Up c˯ΒLd%Ά*fS)6S\I5AR]U`5HI~e#6TLUXu1&<ȱj}$c 7o[ O BjVJ:ƴtmM'ۋ7P6>}c.@7}U yOMpc p~ o [U>%x|y!5{o8̓rt\\,xQo~tK/żNsO|N V3x/rWXqm.G;νNwn{=ֵ#کM{q!SoOJgG8Ӟz콷gSa G{.{^3~1yR}A?y'=?"|B!Zex}mǐ 7L ֠p Pųk^ B%3|+ D, G,Sb;@`@',k*xcȊȌȎȉ|Y]|@ ` Pɐɠʢ<ʐq@ qk b:qJʾ1,ZU .¼ĭqʯuhR{k{{WX| p  L̔\0+ `+ ֠ѤALlpL0 @) \ +,~ }8} n` P€`\@ K@W (p ` +ʠlhƾtנ!M|G+*QgU6iz[}pŧ< @ Aզ]6\: y a@\-%vhX++J\Kq᫴,-Z< p[ZL 0p Aڦ` ! )`P =!0 0۳ * P &Ȟ-ۺ0(xw:$T=gW6-.}!^~bp퍱b~O0MxX] ?_)/ }n‘ */G*C 68:<>  Ci&/A\ -फYz<(Z\^`мq mH9)?-x]z|~|'n+N-MF!( ^Fi5[/s/.N*_[ZZ01 Pzm._SJ/qqQ{M ʐ ɐ؟./j{2aͥ4N? ϐo_ #/pnX^ 0`EAemc2!E$YI)UdK1eΤY;.LQpO{"T(s@.u$%ǍZUYnWaŎ%[YiծMs|?{`R p3O*[ĉ/fcȑ!94ø"iR‡%&]iԩUse d@ 0ido7̀a#&HGٵow#drt ֽA§_}.xmCۈA#pB e?R g@*DSTqE;od"BI4#{G ,B'.ڌ'D!rJ*#HkƠ+Kڼ.'yL4T\c駇dˠ1[sO>JS3.h hyZ6 XkֵJktŌj~f{oV!"{q K݋ڢjzX޶q&R=3Ws~Z 7|ߘnwMN #j;6[fu"}=vw'aYm:g|yyǗzxNX wOi Nl8 P*_zdC`}aZ@Ao#ېc]gc@uj$a KUALS `By - N?Р9$.:k_')‡DbD`ߘ:(Dua&n19 BD-*f  yTkLҕ2e+! yHLFMWH(+F1H c&]#J)r!ҡy,,aIݼR+,oܞԕXr5yMq%Af~4)jZÚdMyߌi8TzAe6NuSND!|r/!~G8:P,!E1gw` ic@יQ'iᤒPNAZ41%w\ISAsWR,mEz܌Wb 8 ShEA ?lCA^I}SNݝ$4hW&8RLjE҃_H3C `-<j#X8cZ'WY\V,mT:1hqZB-6*p=Q!9[ڊ55HnuFw$ F>IrsBW=a8T"<iAo V'nUᶛsHv/}[> C΂qCu~l|7E`XDQ9DR` Kz7!'pUa cٱu #64`)1H C"G,IWdÐD=rRyJXN7h, .{ ~˒h4ȓӬfծ-nCg;ϖճWg o|SeA:6eG ҘZJ&tOwiHwZsAyd"ٴ'< ֞uuc:o:Nk]6:eP $9 ikÔq3!ޮvcmX $weɶ6| %(oַ`{D+q|HgA,j4 =q[NGN  $yLaCUBQjb-sgU5@!ԗFOB $wTݔfCJog|qy?AXiTz-HڗaZ{/naz}i*/ WR/*|2qxgRH^gI []9y,^>G RDϗQW&;z;^EqIa!QV_ېoE=$rXA҇d=jx=2|#>Ooa.߆+˟/] ?-;@W[ ݠA[>4{$;#$2"2)A%TA3(B2B C ,Cq;?6>8<9.;lS@>+AB4DKHF+AMмEdK$G ~9`O3t1Q\04Md-XB?? WD\ܛ]̍D@DaTYd>fL =XE1BjԚkJBoFJ0XC@hXDttu^̸z{ ]؎nLǍD#˄ `3zLȣ)E3XȢH&|Ԏ bu8psS8 Qb(nU^<>HP+ekflf?~9[0G\/dq. ~d6M6&upg|N^LeZ`^ʚfnu>nj[m>hNhvPse5 `f8puyrfQee;8·Ք|\Q@F`\iuddhFϫ-iRjnU#,&7P\T&V|ud|{XpwdyNS0뒦<6 0Rm` ju\ XhG.Q>Q^˖k9U>kk.in}ꔀi [A3Xԟ܏vlێk^܎Qeɕ\Nj.V DqhX.0- i8knE^|nFo>ek6nm@Fbb" gJoYZSN l ]e֕%kp p G[JܹOW0 V^^gV6q/b(p>kap ?Ҿ /r#?r$oooNl6 H_M a|0s1H(pe 2!Wi$s;spůc޳ tojIwLtFjm⿥VfI3oP5nMH<_uVOr>7.> dTEgȘ|qEH['ulJKtNq: 7 \^BO9“Hnvovp|ȓ н\[=%WꚮyOjN0^@]'aa8M|gvаTa6?aFIE_uRwkM pn=a,C 17;dvt+Dwc]@ED@|_KGL?Gn0p,_5jюs+nxvzo1'{_#c+ny#CyA]ifxۜ)eNe4Gvaz7ى_a-Pz GV:=geD/6s ?~^\Wvg brOOohs nz S7xr(}h{r&ƤLHjo{NGMG HX|F '^d-߯$zpw<?|,Hp00Æ'#Fqŋ fʔc>Jj2HɁ"$2K$H ˕LgjF=-jV-Et  j0*i[q=ʊDfbǒ}jVcFT[4#Ebr'v$ G3iReɐ:$e|@Jzi`c'ej4Z[Nc:U#|Rc5|Jm2k>ڹ5wo)"9f*'8DS"i vx!E<=hiPbmnWBj^?MDI|ʶu5Y}TXIZhAmWPzfF^D gtxWqD~ rh@\t"HY6^UENZgw*iZA\ДAR&BÐQtbŦE_^itQ:IЀ!Y6yuٞS5yQ6V0I|XPA%@QTGdUE-D"Bяz5Iu7Dz*mEeBvo ]jlHk{={lAhdWOf:Q¨6Q\Z^izԹi`Otj.,Kve hljq뭕~Hn" /0iPNƠddPAg0G#i3>0ASVEew{jߕ#WԫApK%(K E 3eԧY>h\$?T}XвeԑWT?%c>tw9e3egodliO@m3MP핔7|Ԁu*%uSǦA\rSScD|Pk;G^ݼYbKd=G>t}U~ԛż~M3fu>޻og?OS1UZ8Mo 'A%kn,t:M-M}+|lHR&(e:a k9@pNdv<ȨBٟT7%,NLd\B"6V"4XY"xPQ`,) 0Oq#Ii7zbGSS*k2x#"G PArEG 쨦@tKGGp"\)<9JRgYcC"Ee$.s]򲗾%ea<&2e2|&4)iRּ&6mrs|nKVvA2̉6rngҡ8Q'X$>ũN$j.DS~SbAcCPs>Q #ɆLG'/J"2LhVPdQb'KUQ|"]ޘձ(Ch!,u4B H*$B)!(qĊRPcFQdC%9~HJR\H0fɗ%IBdYF4H4 2G/(q$ժ+%rL'ҩыf)6|8NQVe??rв7U9#TO^Ͼ:y&7YU`VL:EIqkL)L1V}7aαfQ .(Wy5߉xSy|]E+Gr/Wi+Wr:EWY|H&䒘Um6F>iXEXŨUnvR:DJ_}ǡuVn Ud]aVgZJء4ݓfu $@SeEaPhT9\Kv駋_A)VP7K|ɖ"r ZSY4ŖS[yY+NWcJZVԤDX#&k7U2YhYv\fhYPw"с9a =ہU":b^xkV:Z-Z)FAE 7[b>fSX񆖇x"t[S&\leEncAC !y^krnHoUX3|_ }=.%~iZfk܋_U&qeEB󹱗)T4 RWӢ!z[ꝷ?78cmqjvӵӖLuvgG-MAWz3F(NUYƈ-o{RZsՇ9kz9 n \̴հ"^jM-$W?cYrw#3+EQJ{횯N˲:)~@˲ٺkR˰Le[{LZ@PQ)խRB KxKKiKڴ?HEYU8JZ ~ *7[z+Ek:;P˱ej_ k*۹˱]˷; {9єVF˰K˴,U)P[@C 鲶 +?˳i ž J龂+ھ[˶l ]{;V;˿<&; c튪z`xk kʃ:giI^i*ۚ^r ̼{k6{kk> J, jЫ:C_{Q R y?_ ;<{Q;{GkB+TxZ`±d$Ʊx?[+'7sKDq0̦gŶ5SMfODZKn\ ="f+\7l7{S[Qg{KE`Lˆl(ƹ:oɂAV* -m (ҳlZM+M ]]#}n^=׀,z-ѣ| m}o1+M<2mҪOp:]lkdTMl} S~l Kٛɼ Z=ZLϲǽ%XÁ?Mnҁгӫ0Lܭ mޚ Z ]U\&l̬HO*C. VH}-0Dž- m|m؅=ۑM^ݷ=!"+^&gm=,Ɓ,٭=ZlL=,D.n<~p2MZ j ʽ.8`hHM2i~jkh.0qmn)xo~z{}NE=inyl~芎u~phN^p>葾怮腎t~x0>~j둞ߏR- ZaKQ@ Ȟʾ>^~؞ھ.ƨ庎CR= i2.^~.Q6ɽMJ) ^Q ?_N ()t:)[^XЊp*,.02?4_68:<>@B?y9TR>,'2k&0D-D t!>UEJJflѥKejS=`E| 0P%kYz֕JQ KMhS4g|:v-+ZW zN@"\dTdu[T Vlgh=V[SS6E. wVmmm{[Vmo}[W%nq{\&WUbX K/y]W%oy{^"Ij.Z ŧ}v 2o_XmsCp@,M|/l |a gX;ɛ.%^ u97VGaX31 poWʾ7dv~k|d$'YK9ɧ(x3k}K_G$}1e0y5ezڟhJ'NY.Yss{E/$SfY[֯ }hD'Nan"s)mMaBқt=iPs&5>-'ՅKʧ W6-g}k\Z׻OI]ћUZ;QN:fvPzNO/RP#ieC[&w'mST%ZpH 'mn|[OcDzvvYۅn{;"pG0tkTp肷{'yMbQvoYO~sp)${w|즙&B 0{:gzӝ.ji7NSJҰ [Okt]I%Wb[ϮOp/}s;\3G9*64\y }S=s  -wg^V͌x ^` h;$y^םvK>_z6"즿.{ӴG0%we_-/x^ӧv^՝Gf?޲~ USǗvhxU?~Yt}Gs*[1 +)+<{@:_{!@+K=C@|3{ Aq,-;@KPS6A ̾Nj L@B:#{;c= l-!$B+? 6:=?)ܮ*B3,4>.yCk=3=Y[ѻ+ճ?:1"A=\̻2CDKk#D:
#-=4/C=L\HOPE+> ;EK<lEy|XNEet,#-Sc>9tApDc4Fddb\Fpt:Ž D{BD`m4|Fa pǛE\[\'B4[dpkXȅG<9>{?ыFk:94`Ppɇ,IBћ?N[lr|I4I7C> CHrIqɆI47[2\I94ZLJdJ{|Jt6t)r 8>ulבṀTʛdʱK:{2T#Y%epJKƜ=#| tB^H5řK[T3AḊ2uɮۼͰMݼ4Ⳁۻ@[IHTu8)iZxN褅ݜMMd9lC̗5̇th4OLO3šJB;0d-4|`leSӇSAԏ|`(C0SRJ @TUTWaȇxȴO=%KMPTMUՈhWԇU7^U`]ևW͇aՇ`;ݵRUTeVnugԏx\KVee],~5-b/Ta ͇0\+c3K4(Դ9Mc7+7v69*FTa(dcEd:*>Oud=CoQṝe+~ggiib,gYfj}Nhg˽c@nc}6W5nnd{f "VFPQd2h旆iMco.]hhØViE"edȄ|6$ZX6e^Ķ.hZVjf5zhfxC}ij3;!舠i"#+$F &&l"l|ck}[ftliZl˖AþGɾ5D7JHm&戎ўSdӾl#Z6Nl*4ʞm+D7Wh|ƈn:km;~mm MZnM9n,iC҈lij6oVmn`![n?·Po|hۉp,dOnJlpyf+SeOmprr4 YMm$&`4?OPkw85p;+pCOt 3/_s7foftqXst5o>q\c]PuROs_hvsfkP;@n"XrJuKq[5n(U<npoa'YtcOq\tiWlCt\Ukjwr&?wtrn_ⲾoovJ=|w8nu|GJ2g󤦐4 xEl (ҤJ2m)ԨRRj*֬ZreXfL0Y1b+tP׮5.޼z/`†5&/EYt"݃ʵ2̚7sy0a #^ܸ*pزgӮm{bMVLfBMh/2f| Ǟ;)R{6ҧS;فk>\nT\u׳o}Ri}M7OѼBEk} *fRa%_>qԟ#Q6\ب !8Tץ`})~Aϋ^VFqx 6|H"=`h'X_LNpA3t u\\3@Xe] 5 %3&ey&i&mM9Y$pG0¨XMeEFU]@`!B IɡH@`JKD*V4$k>z+њ*k)jʃFXqDדPG(jFu* ;nGRDk::l/+L&:QJnF%eFi}**Y˭|{1k1{1!wL0!{򺺢+:/9{N8kdZyO"4*cS->=|5Yk%{a,d@89__ Y &AL+@e+Nw'׉+v{n0b.F첫JvMRfܣ;\Ew~~J@2~;{|F.90c蹾=󠡯N+4 )ܙ8 ݣ>)D~>5u<˟pI#}v C}PGh=|DgQ! X'd"^5cgJ$(a$$)`Z'1u{"' v 4x0؄@dnG8챎pm /" E`j @` j١(G%DdbaeXMeBDL`Z!H)aFIQ,#"lZ[CIAP6"WY8xP$@)Ybq%-t;ݴ|@+pz$%4n)3~##eII2iV$O bPAOY[*i8l'vyIr!沥nU \f Tu53U3>DR[@a8m5q$1x BiNl;JSRCRg=:h9g$F$)Н6{8С&731|KE>M՜:! &FC'ֱK)E\MiScHuPh2M I8vQa(OT{RK +Th0ц֬0ݒڶBFZڵ>HVN~-C+\rͱu,ǎ\jOiE 繰u#ELY& O#I^=$5n5q^m[qoXunvWYQ"`.'%AAt ֚Jz;+L5g&׷}1_1#"iuBk㍪6WfjZNKbs˭G yLsW29Y>r =&1RtV+|u|M| [ M3c͞^n,d:Z 0Y(cʃ@b:G.%ƒ3l1ŖfEX/Wn}"ꂭc&->5A$ @M-W(:[jCn/TNJ&1qGo^ C+3\0.Y]mLܲ=LmmMr *`zE{URQkFӅK)l5bƒ A(G؇KLg81N J]~z"uQcܺ]*eq%#VҫL cr--^jba$q:uDL'L:ĞnRLdYQyƄnuwMW;ipw*zX9HD53wN6lV{B@>+ɾoS>U1";B\sjJdӤ'I㛜^Gii QuD96JܽVM>!M؈E6uJ !Y_EE0 *=G__i^ 0D] %a> D&X%*c tqVUNAYYB ٞHL>ILZ.yXɖp&)FF 3`  j`B` f @D]ߠH]D̈́%%(^FըmiaE)zayGĚBI`]MzrH[l<hR%3XD  b!D!RD` f% rQ#0iuDxN6%ZYՠT2!A4I#41dFCE)62"敤7Rb$Eܟ%$ݬGbtv+E-sdLL`EFcB2$0UuK) D3^_eed>p$5m vqt7"a&$8^ZV&i"/g\=NMV\ԡI!E$0j 0iI _D b%q% bc$FeEGDb&1hUZ$"EP[d`Z?Oޝ#)TdR.AnSF"hNDXz&|'&8%qTJcwm~62vوB攨zAV&YH@TQFdgBdu^hDJb\\~E\g{n MGo6Gg}RF&~?gEB6g"MZ6ɃX'F$w|M^;cE<>&D`2%gklR" `C(JPnDjcCZǙF,)#%+?΢IjLR`Dɘh:wґN /fM+Bۥ[hsdėThآ飲)fPU $p*I=j*v*J %pi*\(s*evu*&D^D~2KhI*ꐆaHx1FmD5#OD*D*IHU~kX/eHĵ2ZANꫭ*⟆nڨ ETʵBD,H]D1vF_ZnDD*LLƈZ&թʨ!bNq\klc--xhDʒYikN(x) :&,n-*~NIX,fާh+6b܂DԚDJVhZ~aI\( e,HIخJnBh݊.6.6 |i銈$͖֎(E(Ik04FZnjETi瞄(:GIԬ̗,efJH<֬znHk mيQboZ0E-)'{F|si,i@^o#i)Rnb*-$t/T+mH @mI6 6EpO FS SKG n0kaI _D S. 0Gp{ kDwq_1gf1qoD9d qDn /Q0WH1I:~1u.ql: #?2$F2%W%_2&g&o2(nўy(AL0 V(lJB'`rɴ|2oB1%.xu-+* ."&SOr1D-N |J2D6&D76O4K P/_&t@7S<[q8 #oFsG)ų<,4q:w> :@frB0ASD'lt,DBDE;4I?1;EP􄐩dZ5p D|4LO:Nt=E\Hr/DGMdND@!,|=B H*DH$!PCZ1D)>lRcIR,Hʐ'N )EfK5/XF%jHf3=Zq"ʛ8RŚDHSGVW 6"F@7> kl–\y)Ӫ֥3^%LMLj4È+^̸J4JAErtyuf\MBvNx ^G,bY/D#bX˂Ex5),ъEZH'>.(QCh12R"@|\xD'ZjlT"h1.d^D8G=FD7] x=n{Y#E'^HHc [$#RW EQ$*eISN]T(8R~|b‘i1,N1cBhK48dɣ' #/E fβ&;HUъ̤%$_>s]@x-s*\ӟH .VM Ӡd9yn2NŜdl~*|@J.sM8 rT6:ߨFԤ1SvSAeP&xt-Jt֔]dMr22ri'4\Λ7T֔T-LOJX*,jSώTGehȲծ m$XVr"|bXm]FjlZǃ0ժRQF kԈݞk[ Ī4iB[zD vȤmE3O u;La =>~n[&wCIH2uYSFFi+B5 -/K޸QoԴ֞θWî+loAm~mr \6N1;UgzI+yR nWtn_Oޘʤa ׅʉ*,#r = |ge'mV62mv-1]&ms31sHaǪU J3 >q`mIC3$ȕAIl}ZG#KIV||Dyд5ssZu3o_WrvS>sg>:G13Ygӟ4V9Bu!/Dv <6V h@ƝVvKa #F&}i?'#m[TwAxf*Ri^s\?lЎ9Gk2LxFH9G㞮!eU;n8DK.Ì8=<^ۢ!k#YOucw19(c)°BI^tK5)62o~C:QOlx}ꝫG J]sH/x` QgH8N}iK/Q|rzt]6ca&v3mK߶It{dG}&V3V|'de7r{Gikjk=#t6@t1'cx7n}8Z63jjPt}/HdYd6ExIi&c| s,qHDijyDfcWCj=.(t7vkes"m)&gb4Fz/`Dfh4ax jpXyEiL'r6`GsbvgaPkX؃q(f_52${M?XRGq5jvuJHE&p<8ZiA7hiu|Do-]vV]GU`jPwUh~jzGXC8ųwqWn,'7eG{WQ{z7}`(Iz$odPOZ6kD({E:va$gKtpxzXD]XPL&X6X3{݄&;|{(i֎z\QjVW@ㆼ֊sćywIa^eEiS%jS~}*IP4FԎ~V{[:feV=gX[G^AyadPw|(\KWK~u_T!z]mYfdERmYh;œVkwAAjdzhv䑺a{J)M暣 yzYهqG՚z(` ɩOY}di˩.)`)8\@|z)!KC$ErMG )@oq36A`ey9tDITܓiG ʒ UeG:YKex\fK 5]5!jj1L9hj5ĢzaH]7%r8y@f=)1ɢ 6A*/ ij]_r Eu. 48 SVsKFDžH$lԦ}zKG 8\P+85LksF`w=8Óo)edJ(Ii:KD*ÙY&T5L@b\ڡZʪZJj*za*Y*G:y1"ݚY9XK?6iHC8dYzjʫJʯگʔګjXZ*꯭z׺ʰ!E[[8)4X6Z)T|gf2?8kf9٪ Z-纭;*ފʴ%{*!ٵ!˵Z<[N=Kyc/kqǣKSG@1Ó*I{Ɔśl+[;{W묒 @tc902ky8{1dchhueְX)D9ۼNj˼K=[۳/۽ۼ+۽拾⻯{軞kϻ*{ ˺<;K kXT۽Lz+lP(h-Ag`ٸz+kK>l= |,@F ;V^kklG|ư˲)=̿+"alZz*INh$i`0녅X˔Kܾ[ lɫ|5cl L;ʫl˙OL \jİ,\{י Jq9*Kǰܾ;<̼u?J_VIu:[;i\lbm,ϛc Uk|ʻϵLk|\{[[:)|{{n_LMp><ɓ:()j竽] =:||k\ԟ +Ԯd|͔ܿT\A]mԮ\\Ƨ? ]ΌwǯOQLLՌûiI~9`V {J ;OTg-9֌D|FM̲K,<@ ̨mUڙlSg$^&~(*,.02>4^6@ Qܚ?\3J\0\Pe~LNPR>T^O.glヸ)\>?db\^&`npr>t^&N e\{.=[?ަZFN\)+>^~阞难>^⠻E>} pH)p긞뺾.T a܂<9-䇞[|~؞ھ~I8 $`pj;^kު^~,e8fIE.F _f?_3 {챊*,N2^C^[]S]?j mM@bHJoNMKRToFo2ULOO*!汾?(I`4ݛ|~B"N/ΐOhO-45_a]\0]J\)OK@?_~.?/b@OP@p ?_/}) c Z0vNA$|ʤ-\C%NXE5nG!E$YIЭdٲ庌dΤYsblL.t */sȜ4'ipgYfEWaŎ%[,Hv3ϭ9v :]68ÅK|eЬZS̭eرDscuGsӬ= gП;mͷkM_'N4Ʈԯb,ŝ6|&^dɕ/gG=s-7^ݺu5PS{@0-L!g.av4Wd﯈eq9 4Уh g|:īlbI|;IJiV9LypplQGkeV 6SEQ1jZ L 0 yb|C.1J8cōpN Gȩ2< S^,@iQ&kAePӀSQSaetQ!p3J+SC3'j2si*2 uݩd|vXb Fe|";eY Ʃaf%Ӛ|T7RUw]vוGsr-]L<.|lW6 Gr$>ҀIGri7!k#` xoYZV8p)oR`^~E"P#$a MxBN-xWy<3uЃ5aSC QC$V=0yʻ  m;}$"fQ[bvDi(` q蛠);{=,zQscI'z^lH/pqn xHD&RˇJނL_gLhE/ kC*0q\d)MyJTg 4d !iQ&e/}K`S$f1yLd&Sdf3LhFSӤ3ƉN'Җ2(yNtSdg;Nxsh0iEa 8(NR$hA zP&T -&.G0`K,OrQT#%A{C'p[e28]t<hImzST%ZgQz6C)F'ZiSTFUt6g-/'3TZ1R%kYzVnjUXʤipjNU{9l#.|HKUlew9O>ԏea5)*AKc\Uemk]KE|V'{ψ՟lbZu4%nq{\dM{TyL@\2nw c^wqemv]WESxŋY{jqm# xo |`gm`OV וɄ+Lpֆn-8&@aXq=[Sh)ANX,vg|d$'Y] VmqGza/.r'K"kX[rZ4Hp <~!,2!;z{Ys2em.1*Z΃&kM>'hI vq.t-MCV3/ _Ŧ&ns@KZޭZ͂Ax Sh\ }ׂyy@qcZGtMkiDv7zoz=>SUf  CqnePfZm.h8) hq;2o/ 6R٠V2$ +,~qV\d04͡>߰ar[39p-;c9[E׹>6܉ cAc)·K| H6RQ5B_rN9Pf]:=3`JefR6eY8ZBed_cQ9}]TV|Me*j k&J^j`ckfk~k9g_^6nǝ|hkn-l^JFlUjl !k$ vjne}>`]}^h $nm~TFjlȆn`Nn~k\i`d1K*"H^l~nP쪦= m= Z s˼|oȆtCopoj. ?7^pQ>hLf@ ϼ G7IfmFo&WF<7 qe+Fڎ nX|E^Qq׼ q:Ƌ&nLZUq TkpwVkXr7 lh7s!_P>r_m 7&9Z;eVe=@s8]p|hJo=B6hf[Fgrs,JE/m8'1o9d>ݢIOw;uL Gɦ".n1Ipc5nI [>͆Qc) E fx]gxj]x6HywhxךayU_>(kecn #ocD&h$I!M.&>7Qb]Qngƅ%HIcSI(1h9ןoyf$}Y{i fsX^$["^IP^er&Td$Ye)YI6gQ}mfvc#Fyhbџ)&:zҔXIz"h*)h+bof4 -w…VjY ĚϬCz. Bn{J.qU(\ F+-/F֛a( Wd+;[\Rz.F#^Et"T^V,~Y5Y{-ªEIA hEl.=#9)"B8UЉxa$ 1 l!Z:*-㈖Zd_T5,q'rꢤt+#@fKHUwk,]/~k9ږnFn=B͘{}(t"FzN|\4Lt8I l[7}okpm+|sy-&E\.=Ԓ:[v4~FF)  \702Ѫz^(n*{.sow0p&9_ՒPZL~µkH@O;In|H! VJ|K34IwKC'E0o!a *&+bɰ! x#P%m|F# Qc2> )b@hD$}fjb;IB`K !bHhaD-i8k%1F>pICPX7]Ḃ0Z ;:cф>BcQ ;Vu]SZmsbhNTtK:Z8)_.t]JSf*T*AEDv;޵4Ԅ5oNR$EōCK 7 K$p@٩m=-jWu\];W=+wXŤ0,6-ųxӷZ.[O\@K.2pu%KV.x[>يyvV񩞝c+\4^,|fVsMK,k3YkOm)w#VR0Ȓ eRa:B0N:ocp4-3%FU#QYJFgl*m9\AM%!^ #X˥͎SkW/G1ZY$iz²0,2 z֓Ġ3,,h6o:e.#X* N j`v/Vb9ll>M˴f$@EgY3HzׁUJ7mG2a90~V+aHٴbN`&ZⳐzd6/JgoΈ}^$np9I4g[D>)d2ZqKҪe/P ը\5w61V so3{=p5#&4 ]I_xң^ʔ*^1 A-kL}qɅX-Op\`-dqIvWgCYkse/#Lz#^FjVzLa@ڵp*)Cvя8׼U&{XTevȒaJo+b|k ߅'~ L <#ӟOpd4Z 5"Гp=q)SIxm9fQQNW$on0Mq Mh \J^Jɛ5 ?5R9 JHFA5SIeD@1L=IդGi$))ztD>i!$XJ#/ܨ%$ $Q*4C͋p$Jh%G*IZDX(YrBzpĉNDYŠ!AMd^bB(P%af UR"IaLb6nT$I)K(=$XE)Ǿ@`6I ,2B\Dm^a:Zb6@ʤHf(fp* 9RD!DJif?"\bD\4 bE+ҍ'Jǰghz4gL>R1Rptݭr!dlwR&InIޯ_c.W*L:q 'J(mJE~~&2!GXyDi'|Bh5拦ݎ[[l'3&gn(2>#VB)ȥ_(o 5'F0fqńQ D)[7%V<%raĝv'b RQ)5夠.H+)̌'abf@'6#$)`)\h>(fN(K Ӧ>!բ*f(VҼ UjI,U'6ɳ:"|*ҩwhrm“Z(IPiLRId{rEY%Wb+*jиja SJHܦUV)*Fk"Dzn,ʲKǖTD,ŢM٬lt JiM:,l*Φjlf-m`^[6maVV(!-ֆ.&`=ئڮ-۶۾-l-֭-ޚ&-z=mFǧzIS'K n[̢jm6a,&Lj)Ľ~HC*J.Jxvn…+a..6 abDnkIԧ(Eʮ&a.JGa jFBZmBm>o,jyRXo f٢`hR6/f4њ/n7^/!*{PKVmFt/n^OJ"mn!I\6I:&6oњ,cDΜn+EH^*4/n JKqȯrcD'+ c[.d@!,01 xNȐᴃ΅ئ!Cy­;lj*@jnbi'; 9̇/;pJ \O| :#1#Z^Iy4{B%oN;7mںSR`["疭ѵҝw*ݗ*(È x%[!X1Y$k ҔF}E_3 !,C< H*,H%6p <4 Ʌ$+b(DYE&G-PF#IHJiXf1he\)Eh)Tj&oo)tBAwdc.I p'*&h JPvCA*@^TA~Z)A~V:馘Z=(BǦv*P).@JJUꬃB+˦%f*2h[)֨k>S`km6[iЖӖ2kzjX a"*j¶2,0ɦp{uv|d8X" &|Җ;Ev^i.缤Rs')\Ѓ5yESɖ &ѼҋIXӍ|5Q\6RSZwvuTUםU-lcI.f EnKʹ۽q}z]MGm6E^M 9~Stkc. ]fF8DcN!|tsN7 d-\9փx` M:S4Mntinۏ.|C;?BϋMwfhuW#q*d'3?5W=puC`:k>6Eq,_X4?ۥ''R$Wdv:kS+hhCʰkI[J1acb/z BⰬ};:Xv:/tPb>W,/' ȸEe^Р%!cx<LIT4уDW|X<>I"`ȃt@Z|^zōy4D|ĤjXY1( -D2!OeiIF5NHLSH]򗧱%4=J K.g>E!a.AJ3(hi4%6ȰZlV,IRbS'PU;_}U$XsYQQ;˝Iu3(ӑvdi^ r=sTX[ʖkӗ+etl}ʛqt'< wt1xH3?F9j+'2LlN/e%S0e-+4ϊUۍf ťOYBuq}k͑1l LND瑞zDby,Pu5K;)>b5ƶt.OPB Mu.j5]֞^c4Nܮ2*zHUnt{]vMs>לn:co@nxcIZEoNw":_GǴuW$;Gpt_̟(\%]mTe'>hvm! Jf%Ԟ6USɊb)Xg_tRcd!KsSP*/B8%e`Aj2bei:neqx)4KhG :֡.=] Z ~?GԡniV3zc\hG;O.> Ѕ=(^CΜN6ap ĉ38P T;6umIc[=hojNvMzη~8A(D )](['N[apKYK54N(OWojR2Cȹw@ЇNHOҗ;PԗqȔ.zR0{`Nd9'W \he~xϻ`T~^<LtϹ%%A|^y,)<9ﱉt[K D̞ B=vOO;ЏO;^gOIvOOٱt`G_b ႟Pn)~8XxX~~ ~w[%}1{4q`L{"~ 8'TqzazguYpUK6!"8AfFG)K (P7؄R8TxP0B* EZ{[(oNNNh ֠p 0 ְ$z"P( "76 jцos(@  ֐h@@ S ,w&Ra?@ `@0nrH8Q8Ћ*@HŋWg p  hH` p` @yh pPʰ`@px"!(.7¨iﱍ"׸z n` P€p X59 ` ` (p ` +ʠ"{xX1(Q( nQ 3gh npr9tYvyxz|n9O)mx 2y @0qo  @+i Dٓ)@Iؗ9Yyq0 1af {W lٛn %i 0p p)i+9 )0  YyoY簚 Җ號t㙘0nY閒9Y09Ù0ɟ)Ӱygw!k IX' ԰-˘ę4IT*Y Fy +9@ y"[¡@ #+c8 . 80 DyHIn90Ԑy'M꣭@m00:(aJdz*!̰zl j Jr`zlJXz"*$:Ba /ڄu" !XQJk bh^"w J(ei:gp#+ @L۴NPR;T;Wd y*9RUjl۶np Bby\`*Jk[!(D[! ~!)zF[ʷ۹ yf )zK[ '빰 I!{;p Һ4\ Jk[*IEdJ[ ,W{蛾{r[ ʻ !g+{닽qeZϫ ־kK|f[;{(%,jj,L,[wht -1z 6|:Jk?*j7l9, <\lMLzc;{Af|Y]eRBKU̺kncö dkk8jIǐ,K_`|zlɠ,"k4iʰ,q\N9_нʱJbKŸþ| ̿LG̔Êlō,_<<DɭͰӬaqͬΠ ĴLQ|  ʠ ɐ{ |D|v˛Lq <ጹ-hL !LӌLël 88+,IOzÚ+ P9=>Jl0&Ⱦ 'P =džqՐ K TMF=aAwx^1lXϚ̷t`! |mA-Sty ėGՇ<Ƭʓ]!Pj͘Íh@k}#m9*ګ,<0Z}}k<Ը_Prqݹ]]̪{Ì<ϴ=@]@|=.Hx R[֭ށ}:ԲMޝ-Ar}M4B-B1ܧa! A =BF 1 B ɪMQc,p 9^;^2p4D}{+\ [X}Ã,A*>T@ )IŬ,A !F^ 8@pQcvθ,2"Qބ~A xS\.!"!^{^NBn"WlƵ +1 ` 1r^ ^AĮ5"=0N>n ~ڞQnឯО.~N^!x^nAa.n_" o/" 3Qkn?&,_%?(b7/?N/?AO>!FN80İ"O7$;UfX?'N1L/ !. _j!q/6(S/k ِ(.p@z&R/&_ 9=m/I_~` z2*&#O@ U!:oߦ^? z+2/!/&/O/NN/'|OJm_orO!w;/#X1%T`CEXE b">E$YI)UdK1e800 s8f2 QI.e|P'T%J(VaŎ%[֬˩T)#Pa³01k\y7cZB$/\=cȑSpZΥ8dСEKesʘkرe4]` '~s*I³; s!Έ)뺖- N;2{3SM\;/rb;ߊ@$?#V "cZ@3=os0a974D8CE%S B4O Z?bfQ%M#D TR/!ѻ11\rJ*Ú![*R)!LKжtK4Ӝ츋03FK5Ӥ& +O܌('CD@0AHFLYkL `%9'v?t",/Bw^}@?ԥ/* ZPit^h$ H0(.;{5a ?gSRjcX)!0EQ =&$ũN&c UjS5T4% uъH4hSWDgQ4XGxf 9zJue >ʔ1TBVuβ[eo(dH+ή$ NXP fdͪx"f|>f%j%uL5Z#o(h[[} 3 . ^<ƶM{EEwNsx_WoZ >&p |`'& fp`GXp-|a DJ0&!I|XjG|b8)fq]`PW=oEk }|C/NN"_.GZғtLf8ft b{%~sM-Cի^u>α<߬ (ABF^I+yv3%Iޢ|+|0UueިX |x"f6AĜwܓ#sWP)v23u?%HzU@dART{qm"A@,nqH8.Y2 %Eryy F .!bj]k!Vs$9*zl,8&39El.󫟥]-H1t kAt*w]Mm%^ǺA޻_~닀\,;~7l~ǃ]r_ Sz˜VEp_−}/^ __s-X7T$HU`y,ٹ}(Wa/Tj=CӞ"/s5w[B|7r/>'T @۳ = ;<:!\q SBAyH$=@I ²#B8‘B!R;iq ,.Ò?1,;L1TYY?C?\B|?ЋC+:d+0Ĉ<\ILAhDBT?#5d[+9:ѓ9| y\i%@hQ1į K\D=B햧LPVH!sB'MVVhikO։%r-S$ÆW=қtCK 𫈍ń="-T"5`"ҿ[4ֆZ}MGP QMrXgQ@Ɩ+"#7v xFJᜈ'F'V/<, F<$umZAڈ[Jں /DCu |5 g2%4%Ւ>*̍XQۈ[=\ڦH>^m]1WLj$Y0el***S4P+%[k-ZȨcIŜs]I "+M$ 2"+ɷE72ڈUu-Z%Z[r߿L~\PZZ# CIɗٟ󈜹l(M/ ΐO"/_(읻Ż% 6nmZT&T0WQ^ aH+RHb(܎܋ R]&JѼUu=hӓ߈ #VMt?/!aVA b0 Y!ea\).Sňa?m=* >Է)ι 7JJ^dPݏKfX0HI%S^z1VW"V>`]"tc& cuL2V>flvVVQx\V$1^f:@g& e0i~5'|DM2C Qg·|T0fE c|_w~.4`g8h*(gniސi|1rYiW^S•@h iiN WjQhSjjjjjjjjjku@Nh%Z˅ KghOkpfi^k(l);C>Xlkxg ޢYn@Eh늸|k¥ !,{@< H*,8ĈA#QO EC.Vh-R(#F#:$qJ"(scIiZlOb>8MXRM9w2YtiƔ%~TρP+~IpkMT^(юO[1f͍E 9UlƑmK6$SцwÈ+^̸ʞ.?nJfہ *_)QJl.^Du 9ͻ*R录ov^k5_ͱo[jWg-|5,ޱfd+o͚z) SūySSS;^Ͼ{>?>>}QC;:>4V[lRlUe!nTL[iEmA'M{ŔIɖ^t5ru8DVǝt}VZ peސDi@TL6PF)TVdVf\v`)dihTEip)gl 'v|2&E*蠄jx袌6裐F*餔Vj饘FhvZ覞jfP*uJj뭸뮤˞k챨bI,.T$f `@ԭ@fK@Ӧ َmArk. ok/,{. |pjm{nF e< /[V1r 25n߲*D/1#ל洗:#GrB;}53ׇ,:|}t k58 u2}̋ark ,Ǎ7ƐvbAOߎ*56A7cGnz߆#zBK..kj񪻥?@ZkPxJ]H&w |#y<1׏*=>+;:IAX$D|SLJrsY}7osB@0y ?_l`A=`Uދ:$(>{,Uo_xB;7A O{^N!R-ң<vTD5/;76aȨ5PbMb,E굧;ܠZ"6Ft#DFV뉝 x4Bp#Ŕc2_HIӠ[)Mҕ]_^wGP&F$auRb}P_*L(3%6 Mc^S|&9#&s &ICdΪLR8IsnӖY)L'6թLOѨ̹M+5'N = Pv%\cy${rH({ H&= KeҁԞ&i>g ì$ iHɽQaAt*fqRiϚV0 *MjЮԪ9JŚND gIR@M[ubRYVkR jF["1_ZcX+%2vl-_u RA0rVR51)P1[͖Pzb4i2Y)O3ft~ʁ ςpmk|dbFsk\?Um j\N._^VTBt$n?]2{=jYij3B,P_==PۂUJJ5<\5ʎ3TIMYج hb[}gT'ڥ]7Cko5?r[1x-5d23͉Zvoa n[)eufU8nʷu<.*눛g\K2qn«F9y}.e_Z5/uDDiL0B r_3:ɪiU|Oz OϿ8x@ Q>*q>O~8XxHd'Sq8c M԰(*,؂.G eqdV2dC6:TK B8DXFxHJL؄NPR8TXVxXZ8`\Mbm[ݵfxhjl؆nn[@s:|<^p؇~8Ȅ<"ho''lWI\EF+^]uҶgUD88"tbH`Ѐrul2ŇH*2>6mE8\%o&-S1[Ќ8Xxؘڸ؍8XS-|7b'\`0t.Xx؏0찍8`UUА򊲈] "9$@(9x'&\P39EuȑIؓ")6d1dȐ%Ԕ )[АIÌ\'@Y 2.yf&ogPu%Ó]9ppxzy9풎RqQ) GҎ3)Аf)@#tY ֠p 0 `*s"谗 rh\g `‹ØWԕd%9y@`` zyᐗ~ѐ9$(a;鉆ZP r.I$Й qP׉Gwi%┲H3@9 p   Y0+` + 9z2nrzԐix[ iI&`PqOS`N F n` P€࡚yp Zq: `  (`p ` +̹(9p$:ﱗA GzqJJx9ЎI% F0 zګ::ధ*y n㐙py y*zŚ꺮ڮ*paZ2)5dJ9$LX Zڰj9 j񉙣 [魶* ڪ *ʠ 4[6{*i0 =kJxg*Jq !MIal 8{X3 ܚy j{$ۭʦ*[Jv{wʳ0yN)SEĸ Vkc pim pJpfڶ*q˲z 0u+r'zG:Z+DKј%:$== l m /{"J0Jn 0ԐẲ-+@m0:{`{W{ Jk$K\yy: лltw9 ̞ ^ 'U;xm!yRqX a^c201\|6| xȘ:BJ\&yeYz)C<%^P0pRM|% QGY GĎ&+l}<`"۴c &\ʦ|ʨʪʬʮʰ˲<˴\˶|˸˺˼˸zj\ e<\ͳͫlLlSJkv,_%e S%(.MD6޴!]X+@>}E^Cg>J+?\V~ hO&fv~`,\n~h@_.ung> I >s~&T;mhؼI.|r炮%.TnVNMқ~yrNਞ۬^hjPN->ꤾ1>^G䋞jMN~NN0*...n >㪮]ǀ H<.N^A #΋῞NNb *-?\d;N^&)ݔ+`n\ >m>>a P  1 -?D͞!-(@Y/ Y]o;A%> ֠B_m߈_.]P? .?]n$?Z!0W/ܼ3I`_T?oޜ/\cbol_.^W.T]/-.Y@)_M 1^ovu%q%WA_A :%N`Ċ5nxEqIϤI)UdK1eΤYM9u§$n_4T"O#1IPnWaņ3Ђn94_RO1] U$bG_& l =|KeI,:ty'-gСEF/6\aF4o KQXGo6e H1"/M'5#no| 7MQDYǖΈ鮻Q;xLxP9bc&"2?#pB yb"JM"禣(DBH8zB[t< (r b!4J_rH"=Q|9X@ނ"*1j0Ԩ K0:RI%+baE@"~.u sN:Ȃ,ȘA>1rS48'OĹ˺ rQN;щy4HېhBSXcP3҂ΘkU9evXiQHmLCvZ}T[IrZpXu"Stق^]x"a ܊,]h_j@{ݳn3s p7`#i[r2(h NF4fc%#ȣT45R<%DDtT?iIKя&r% K5R2"fEp)PƦsĩ;uL4?iQxTt*t%( ;l h9ǖb5Z&Hb}'E7V_5\H"z7Ի0vVi<UZ{Pq͏ZX_jm*ecdbVdi7KހmkdYg~,k=5oTk[l6AmrlgeIb뤭cKGaPB-[|Lwu(\Y*6ŏr 3'*1ZomBܷ߮-"i{&jn"{ InvD)"p2#BJHG ΄5+#p7O2)`}'G{/kc#6ޝn/#فP2_wJƁ|C9Iy1"0+fٻnct{tnQ O;ft'#1$)˄&X&j;Q43A:vq-i ӧA3Q'Ԧ-=#U:&sa^p^ea>w ZѵDd+;dn<D5#fI0mqs-105dwLWқqCt;?u'9o]FTo}b m Kd:W\^鸫7%u{"{OIlo oxjAwogxKo2,ttC\[x>aO}W_u@g|` O¸|Ev {^#g9|`&ب+{:_=oُe/3R?V;_|]|Ʉ>"[C?Kk= Zd8<ۍ>!ޛP=;?@@p@@>kAEܼ0A(ؿ8>iADA; Z<=܈kpA<0BX|1lB'iB8p@i7tCSXK AŠk 2ypX(B\CS8THk083γp<20 1D?uXÂACSXDGtD>; =,Z;C?D84,ȇ\ |D,GL<~k&>x0YDZ{8E1u_F1k=>X9<C>Tg|F: *9ktyDBT 1MG@F$8>tT0 u |{DyxAx<`|D Cdǿ@V`1t -$i8iuhIFQ(Ez m \ e¿K>HKK f"ST@ 9SԂ0F>S$ Q:͍ L² Չ`-a%8c4tG ӰOs%QL>U(Ub%|88VS4THUeMWg]W @ i=#eT<Ԏ֘ pQJc͏OxWx4G"j|}%)]͈슰Z۲}Վ 6͇"ʮ[ ruY5݅׼(ܮZ]\=܍]8:#˵j T:%J(5v}ݡ Kh]KK9\XSK=cMRH Oڬ i\Ɋf3ɢ0U@mYՕKsͿ效叮ٙ ˜Wd)!د]`.Xc=&`]!Xۅ@i% ]%kL_aa!vuڮuݑy~U9i ͽ"VZD#l7SXœX:c;b\4bʱ*c.AgEމPH`nhcrd TI 5cufc (dCF|hpܛ–d[&Nڀe1FeB6!!W%aHNdIHI E=l?u^8~5pe^Sb@ue\fePfU斐]VI]dף"R%.d1L% =azh cq+eɧ|Y}fX·5 }^j^F?˟DM[:mXvF8 މjfh Nh!>{1I*5$"&-="4L-ag UTThVDD~8@6jf,/S:[j=ν AZUjldj,VksbmFRQk9aboSMPEc戽N]kg0ن ~Qf9 0\ꃎlI9xaQj9!no^#NoVҊ%azmfA|pYYmyBPٔl/anHd nֈeYϦ![1%zJtzr.kRʄD_NQtX1O劃p~숏tYqS 'v23p#w n?]۔+UwXx,g:lsi0'qƉpv纉l n21p2.26h]nމ^%of$dI׈*llع_  -'6 ڻRD׊2/iI{J^: yrP"ӢX&  HlSEM/*w{vɫ#oZ` ~@%2w88WGc 3φ  ~7y* xB xBZ+6c+X3֌ueN}xx|i NS(Lˆ'JD%ENƑ"`!$$ȄRN,ҠKb,fDMt.%Р 5^GT")%')SQRj*֬Z)"L l ?J%gCN)RY+%r-޵bרA.]:uy3n,P@_KdDfN3˕vN߈?O}:m4 v|\5wngjZ-5v[_3Ama[0s6ӛy %aP^ФhPuR %|jE$R= y%7B_u^/9XB՗}RxyYsbװ`+$V{02M =tA`J.BT($B: ]#nEUD"ZB8q kPHAqnEry'y'}' z]{h8fyKb"wO ).Ԣ^B :5 ߓ:}%.T',a)v`1֡X*V:kP @p&L¨:#JbOj-zkiߊ;.{.骻.R喩"`n .URP:@GN$UpΡx$҅K*I0P s1!<2%)2-g0|393=3Q! 4E]!G+/8q,=5N٪ e V_D[OoU2)5m ]cbtGW$u|l䉐le0KKF%VB;7@]mڝޗsN+'N+DIAPԺ!,t=< H*q*jU )8L1# qqp q|+̰07 {,O 17O! q <'9e>[AV'/l2Wso& dvA("-eMa@'vm7ۂ-vh -.wĵo3xA㎋yB+.;._߇y۰-^7ߟ^ߟn꽻 4v m]gC;-BSpL9ʁw;$ɒ/ƺڛKޡ?_*WWn{˻<9p>S_LmkV}  _^B%/"$gzE *\ oB\A GB> _١6h9a0rKX$ALcvk9GGE,fWbCgeaByx'}i}R*,|H"c"D=Z@e4&7C%"R!yX?*цOt$~G`pg[Ԥ'7z𖑬a-HɄN^aBt Ra\Ob2~>@2m\r>9%2bT 5 Ils3Ϲ+ *85Y*sL 3K9jh4e+&59Iz]9c*>ˤG[Js>qsgQ&PALoUr4D%jJ)@ q.Q&BJ!]E?-f1R꘷IBǹtR]_דfդ!kMZXhQm,Oӄ|퀳DX?deL+?%gӢG@ZV9E,bXu']wKjc% umd=ZڕYZ&3mר`2y"$A:-0 |UPVa{7^L_#i߀򳼼cg@z#ok`3~eLh]kZ+iԒսjKmvjԓ2:]k͙:ehF][ͧTmIS 㫡OQ+7>V%*'ĝKVGE? -nѠLGj&GFdqdbYGCc] ߱ԪzSpāk\U҉Y舏îbm,ӀAUDn;S.c؈C-3MVn r 5ŴV*~I !vD}Uh$3] Kvgkbvmrs:Np׽u܆c)mv4V7Mb|/d/tu?#ʴ7PQULA1=ρT8U$_V7]S|zx]e;{&snY;_N޾7k>6md#uŁmXyk59K[&d#{CXLuo~V[7wC9Q[w_5; {vK xgp4g#d읲':uZC6n^ KSq>f0a 6n+YՑ~q`y pˑoto]޺Xf>NìXfo7ܷ'rwTR>fΤ<s9|h^]haBUvNGE8 Ȁ@8؀c&3 ؁8 x"88)ȁ)(2(2HȂ؂1x%D8(H8@9X?ȄIB8PJ("cTXp2`˜(x:Cd28Xx-bDbf8'˃F$l ِy&^[8O`qg 426d9-'Ua)3&I%H8.Ș]Ɇ(3^"J-(lq`В1>)3Е^`b9dYfyhjlٖnpr9tYv&C+-`PSҎ$\U@a괓cs٘9Yhk셑=uzT9'[9fhGɕ9Yyy]sPi)'zGacDg2b҉*ɛֹUyVv(yzv`2vJⓈ74{Rֹ^ڣ"0D _yccʑV\%yF̙Y0*4j@`` 7ʥKzЦ}C8Oyv]Z RْQz%ؒ>Gi~j:1:5 .@$lqPsJ};+:+yc@%iQ0J)oèJi@` r@P@p` @= Pʰ`@ʫ+c)(C*ʋjؚ|*b$qZAB: n` P€PZ; ` (p ` +h*?ڳ$>Q੟! βڧ*t7&#\۵^`b;d[f{hjP\5+1z { p@05]  @r+P #*k;[;EӐF*@}zP ѧK"UlQz1ӣ6K(pۻ\K K^Z4 0p ^ { +  [{\mzۀx+)zpYr6\2&8R8ibK{j\{~˵;[G+2+,™ڹr: zqPk%!:,DlbKӹ [ěK:! z,{ 𠽂 @ ]+*A룉QP״ ?LX6[ѱʠ 0i  {JJn༇0Ԑ˸ 뵗*s6̧[|I)D̜(NKϐ `u|u|a_̥zςq\>|qaɋΞ̠-LΩBс|9<̿^0_/O`m\Zm;}=!N((%Np7]ϗZQFMO JMa^L}.$)-0PSVxϜd_@e%k-mpz\]]Naͺ\M=*' ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸=G][يaMō'ʽ=ݰmݤ{*c_0ނ}ڍ{]|]Oݪ]}'-ڊ߈J[P-_'r ~ᔒ\ҕ sBL7\@|jQ"Nw.yE =(]փx=B>|BE.{}]Ѫj@Nf>'V~%\ NJ~rb&Pxz|絘`8^ý >^r(w>(2 >ּN)])ٕ~ꨞꪾWlaۖ} >`1ܦ>gk꼝|maMP>@gB5ҭj}_0N.>`]Ć^㵾Q:'̞qH%I!>]mAsО O%~ï>%~(=\0t' M"G^aK^.4%X~^t.̮'253'? A NFopZ Kt@m n'O^hǍ~To9LoduR{rY?_>O_}AzT~'P ?kO?f_?z̉O&?/-yzoǏ>?'Nc_O+`o|nߑ_(M|hNC%NXE%G2$YI)UdK1eΤYSb 9SHܒoO/A~ :&-y0"‡6cn,$HYnWa-B~R:LN*$ՎW?_$,ZB,HD %6 q0B^gСO9ϴczIx\rvhrfEo…yN Rƞk`f u4bymɨ"+R{{ 4𢡊w u\&jo>TpOXK {B daeDVdDS|/44HKk-HDrPH2L(2䊋C,DGH"ˮrB}Z-,l6|Q-uNVD *mn" [ҷ K-Lz-ag4JSih b(H^H9Mp֜alJ g;5]њ.#̋gWG5kֱxw>OWg+K&:PEf!*U#gFMRF*3?%bC;%: 气1nBS4%VlT&fLaCRi-zU+]&`ECp(Vxհ0YՃL "T9Xka/Vim_V995ժ,6Y^UItŚS~-|(.ɱU|RM岓2hq <c]ƌ8kwsE=`˘l@ΊqWL=3ϠfP7vLr T$:IAb2q3Ϡ7fnL_ ϚĈqcFFf&#]i1œ<$޵_ؔ,l3lnHAuݾwdzfox箈=|tEx=[GGnq7\;5݉ph;6bK7-rns嬎4+iY9yU s76tp*gxh:C]YBd]Ɣ:ac?f$%`}ļ/yjw^򹣲vv1^_{{-׹zxDz<򑷷kU07-Y|xzXߕmL$1 Q]Dz_77|M߻Pjr1Q|/ܶJFt˟a>w $B}ٿSG k+^Aߏ ~Wy&4 =CsX!=#JcL?@C; [i@;C6`@<",7?=:KQ3K, Ah+Aa?lɣ!$B1º@ړ=&RD?a@T, lXDDZ 2] E`l9kFIfD\EYA FTDޠ>꣓kO)oFd200? D|hFCxy?`Gi:QnTh HCDFeB|H۫=|X2F(DXDFDȎFH !0LFaHIȚIIU$ T l@GJ=!ʣzɦ|McɪJU^nꎾb.YѮBF*bxeˊhvgT |^c} kNă> n6޶7<. oV}nX Ljf F?qWi =hkp]spnq0f|Wڞ 4NgzP\&Nԩ4g ChWgNEp,$E{^qH^`,XY` 5Ht+W#qw`mRsnH﯈✈7)Ns foѓQR ; v Bs.t^0Kp/1 Ig6^Όn;U&/VUvovpwyB s3H h:kp2\Z׊瞈7r(뇖_wg&j~tH? nKodPNgWi0hv$;Uqͱ;mqyvʤz7wߥCX#0%3;ؓԫw>G[4Qq.6_7PpE/viu8RmІNGln4Ɖƈ+y7y${Z$^" yo2:[=> LW;~GM ^KpCfCZJʘ-5G骗dž׆δlm{m@iwPRVo*1{1/^"`6By{K=.诽§~L~~ǡ|~ʟĎ|nXKSza p"BDlw 2\8 6m'J`I$1kMְ0'W.dƒ̘1$8Lᰛ u24P@ohG%h`ЦR#ժVZժװbf*l&i˲m6Z-tRYMl-]*Iݺvk0 S"OCT !2̚7m$2$|'Z\16;FT I1'IS zœm^>| 9j8eQ Μa㠕L>5fu+<^v4%PEB} ﹳ 6ۛLu(s_J.ӉNܯm 4\ǐ=l CXRg19 *ii7f,qB`'IR7 5&,d53f6 abCqC“ 7MD35<^u-pdЌ_3N2FdQs(čOѭgpp>" waXوF'@224K%JjL9:R ֐H~%OJ!U#eCv57[ ,mY*Z꒕/WK^V+Cd!f&fRLI 2mӜ HQn.6G N265qs3$BYfnGDg=*Pgrwqû6Dv?ЉRԖZhE?ЌrmKhf@ё&=)JSҕKc*ә  Ms +.|f8p@6 ꎪӥ^S9C-%،*VSIՆ4]W.l*54*ZӪV@un}+\*׹ҵv+^׽~+`+ =,b2eY+N(ݢI*,#JO|.!+Al!ee1["î-@em%n+NWb~V.QV,^f[ G @?f&M.S!,o9= H*8$ El8bE ZĘOÌ *8$GC<:\Dʕ-LșNT2$Ó/'2NJBE6ٲƘG)鱤У+Ủp&F5s3O!?fl>"Q,S7\uä 4[rÈ+^̸ϧ[oFO_K6y!M|)6mߎڨiemuC <}8oZx,gC"պfL,k$,#9by*ݯcmet˟OF?._^%&}Zdqt]}ŶQ X&["SJ=]ф~ނo_geIUZ-^AZQ0C̵8V͆eҵHv5NAGLj2%$R`:figYyu]viZUWzؑKnڹo)g`@"quqH$IJSB)ꨤRYꩨꪬ|RE\jk^뮼듳J밣G&I!,VkغJij^+݆+*mn*.ξk/ -PAp' JkG\}I\w $l#,0LP2lD3M;{ P/n-U<5d3ƫtg}eC7QKm7A^BwN-fc]v^S8fýmOwsmzE4U8u/s]S߾us^57ڊݰw|p+-Yv;O=Ma?.9ȏ-5oȟN}Tn|EL-B83A.7=+sS^A-NX#"9Pts@8- J&(;It [k7B|X:'EN UHBMtr@ioHt׶W@ TDiV Br qkV}Mh1 \vE,jp,6@Ʊp#  wDȩnT΅D-{]'gA3GCY pضE0{,sR @BC 04URa#gL(D0wlqaH0-iIYrf4D`2gЉzj.['5Y v3U̚DNs&Ơ8s5YX@ifˆILBQx~}gG۩Oӣ h=G:3sGCL@[zF'@m&Q#)R1Lh9JԦ0 QZϑԩD>P}URCԧ5 kZcJӵfUYz 5 Ouuv:ͯUdZݩRg ZVqulUsԡr2}WX"c)R٫@惵eTKֶks;ز(- ٺV5Zq1&֮6dmmrR&e'p{܂=vR`-A[N׷-nћzV̒+kHҊ,Enw+tΤ]W~+\ 3Ww+r׼aox;bxV8}0m<Ļ5no1IXǮ+M6W(ͣj4f/qYw+^+f+i2Z^qLe\W'^E\b¹39=cS/dSmp1|&ɥcm R!Ĕvz!<&!}iӍrW=bԈQ)/[m/&Vk\T2/DŽIٶogڀ9)B hfgg <|ﶿ-dV[i{4d'RڦmMh]72͵f79й%lmvR~Hf} _B`sκvkkA&9n[C][Y-Kiـ/,_?8Of  肑WO6 +Gs鏛ٮl#DXf=oa3Ǩ.ڦ/n:Vw/؝t2ǹu>kOF81ߜV^L;Ss ]zK^@6б<|}"RXxwx:G)X$L@B9DYFyHJLٔNPR9TYV@ Q`l0xodOWYfyhjlٖnⰕ4.WS kz; {ps3PZڮ Ա󱒘" p  [ZM 0+`  + zI,ߚ0K 0ZiC4)✢sXj p (@R;K @րʀk0 *`PZ @ 3{ n_+V&e9) ۽;[{蛾꛾˺+z  н J к<:Ӱa#&b@*[0Uقv8 P4\6|пKjѺ 0p ̽ʠ @*P8\^ܽu+y{@䛍 ᜿J*|)쮷f86_|{Zl z ˽?ܿܛ,[| @ǜɞ⪷ƻkO[\Ru<^M;L)0Þ˼\ @ kGйл %{ `S @ ýK,ꪘ8 qytDq8Ik,Kq˴N M JV|VKdKn`L0Ԑ,Ṱ@mō<ƣl*<\*ϫ\x$|lz,C-}JB]|5x룬|4+J0O?!Am[g}|hM-lmO=l*e=~'[$%|Ӳh):{Ͳ{/[-.[w-z\N!ϯc$4}Y:7L@ %-F-sm=grM <,LzJأ]$bǃ  ,@R]OX!q\qLZM(!   = ~,Hm(7Z$8ha[7̻ ">$^&~(*,.02>4^6~8:^n\[ _5`';>T^V~XZ\])^IB*g^Rnpr>tpw=BANmi}0m^^q@n BQA  ~ڊ^e.n%$~$.~,歜nߚ>^޽,~-+#.-kM~>^-_An>N?_-녞_P^ ]+,.0 BBN,+D_FOA7i/~2> ~-CX_ȢgPN,Vov+ _.>]p,so@y+y~]^_>RpN8.?cA*܀{_p,_?[ǣO/h-O_Pg,ߓN?oaO1R?Ɵش,|`cc8C%NXCf4jױE!E$YI)UdK1GI8YL3nLcPI.eS1kڜ*Ü̇Ơϟ]F=9tQ|dծe[+%՜[vWt ,G/fcsbՙs^x ߷&\iԩ[ΥCY(EUo%Wq̴kӹY7O^ݺ]{Z\oWA,<ݤg=j+f99NР= 4r2c ϼ@ 30n ípE[\ûz-/ƀ$?J(rȓԎBc!4[G~LH,PI"ODܨR@t*0ڪ8p"HPMsPB d@NI':b6-RL Qn'=1,ʉv,LSUsA+ 05TpU^{Ul*WfkRN,T}uY$k0+/ҿe:L65ܤ$s"Oc}PڸU|X]~]mq Lqn}xd 븞J6G̈́"d#OIĮ8+X{x'ȇe*xykkR Y|UgOf"pџUZZLgjˉ @ Bo3p"[l9;myE%m;d. rWaX;a2BVxަc 'uU&s1\+S4Wgo؋2gg(`9"6 qkN1Q\p7!·z>>~ ȹ{gQ|+ fX+S9f^>O_0אb2C0{K#|ctZSxX$͚3k;׸so7}31\8:z ^^Вg.o0ChLMsrӻF;jsI|fUӐNv5 3Kf¹tZ]݌(f{MlP~z1'SNHlhY!5fJ8$vxN;F(K+ht"C]5c[>#bwdir_Ҙ68Cp,?nx-2KTw~țG_{զ^vnq'u> 슘<ʌ\,wXDE .tp3$ʵ;7s@~>>|*7?=[KG ?Uy;s,<=@$L!<:@[kz/@4߃)7>||@,,::PA`pAtAm꛽|AA 3”6ycA'T@‡8!+“LB*DS,dhC:-?8< 9|C:5dCs? C0C;Ի ? d&T@d(̇lP3AL̒->6ȆR4ES\)TLE"Yņm:fĸЅEADX|PYKʼn=,a Ő{eb4FS edFѾOQXSEptAbhr(lSDdv+AڛǤ8G]D|nd~\gȈ`B/0ȘFepȇԐ %  Ɖ,Ž,>F\ DȇHbɖ I&?ɔȒ8 ?lII`BJ l||0ȦtJIaȄ JG=#ʨʓd<ǯKxIa9l‹3 \QJpK¹KK+_Cʈ@H9,Lü˽6¨破M抸}> VqE.h^dsF a~i 3NTNcRgh**FF>h$a ݾl<=\i[F↋V nnykm޹ قUn 6L>opc Ǯ:]Ngnf [2fo+;v'In/6mqknjr3 "?r#g$?r&Wr#?筆d rg 3gm0[G,65h~obhq>wK _\jrB/tC?tB#w6EG. 2&fq$#,/rp]^MOlT8pUAvj>WʖN &Ft`vagr(rR(drHGv $%hس4S?x.  gzTTWU8X]Pbe &ƈawrI2dx/rB(A"8'.7kvlr5<@m,xx+noH6TsGaK`u:_:o϶`]M@ Ԇl/n})$/&GzC_rXzC7xJtxWxS77xxk?FxyDW荎m;>sOKhGp@ b{Gpm/^dZת(r'G G:ap77zzVlEo}߿So} KM(K=Lro||xuhşmJ~_ |BHP([6|{9xbz}x,X4}{M/$ „ ^BXPRh"ƌ7rH#kaFAl)QReNJLd:o̦3_h X4AfH;2c6,_ӨR4pSVW ;,Zb֮M[V!۸q=(PS>w5eȖ^ W*|x)bc!Kl٢ʑBf֌PImق6͛gSh9wDz5UP U ך+qo)EXJ1\RMEF g!X_e܆ r[dSEUW_]g%^ F*Va4"$I{cFM!`J-q6Rfفt~4OVVSI9%4ME VEI!TNxV5\Eʙ!vXAieG"h_,6h^T!jA#FC$e|Z7m)B'4v)Ͷ_kᷟeA n y\Gy!rqEteM.uxYD`5d;d QgSjYʤM#k| &gsRb `1*b嘐$<^¬iF|mGR"ᖬQ& IC᝽nz8[;b1)k׉5:Ro5s*P evmL XRgE/%\"d'7{䍏$ Y?]ە:+$OAm8#wm3r|8,EVkoUf{+N_!9wE"J[hiPmK0, )u"ľ=?R|&%4"R Q#z@Qtګ E?T#>D D}EB1AAN7&'1\8԰XO<ݏ.i_lΨQs&E"p!bhdvSÌfc%SHl]"I?F즚4fr&) ))GRVi8-APnXYzht|l(^W! mKsS"9EpjBlwԥT`oyBe*Vխr^*X*ֱf%k:dz;*׹ԏt+^׽Ki_D == ]5@'e S m%"h>&ʧ*,B8^"-,eBjijmBb˟j$bbD9ڬ >pk4ඁ_hWʠ ýcJ6H@!,k6< H*d| y8DC%%N$8DE%q@$-Fɇ"+´S' Ck2'#'3D%3*eXtiQD v0|:+ئ& 5)ę#X$-">Z('՚ ǎ}.\̸ǐ#?>FWIUk!FH1 #\'!bԘL;--˒C1W6r^?=%XћuQ̞9:5暵MU`RܦhXd[oi\%˟O}NT1M.PVSyׁF[eRCyvSIq9Yzq`Ʊ$b.ՙ[=Ry1$ڄ(5^sh]A byEeV&PݧL6)cNF)TViXf wi`)dih餈n)tI]٩'c2)矀*Rp9衈&袌6b=*餔gn~馜v%yaj|wz3u꫰Jt2٣{kj+F &lTF+VkAZv~+k6lAU@n)B>kfϥ*@]*P \0xR )TLp㫱 ŅVQ1$g/\,|'+LyJ ^\p}|2kջqAS$}1N9/s4"M4(4}9 l_] t77Lpn1C}b-'?#s j+=aݸ"L!E_盷K|j7xlc 9~vp>#-]=>nvf 2v%d[r:Ѣyo,j޺oG`O8~g3_@E퀏4x] f5l_w6em| ad%/{ۃZ-Эb aCk ` 3ޘ@''fɇj . 1!GĉZŮ$ :2*g# "F KE_po_>Vԑ#;gq/>ϒB%S  9.&3HTO'IA1rF$VBM[t多ń|ԲFU^1@ Z ӖD&Ayb Ęf0MZ> )&4yg&3TfAIezs攦ANe tl&9iJof,8)Nvޒ &;kNϤ%5z̀bR\Ed3vrE4dgHOj6ӣLg89atKUQsT=Ν*dLiM)oK(e!-uL?*y<3Ջ><Ҙ ]H;7UT;%BA:TzVYuژok>u^+Gdb-.} +, Adߪe K*YpNVe,oͼ֗-pU;f88nytV "+GxcܪS U.)3}iz>߽Y_{ =qz;O'~u/ܗ~O~{#}}?W>_Wv0~W|'Wx{)imDQ@ ؁ "8$X&x(*,؂.0$($)2uu(B8DXFxHJE(E,EVxXZ\؅!H 7(@uTpjl؆npr8tXvxxz|؇~8|()uRP)@8XxxB2D'i/XxX]:8c5GՆtԢHa.cXI[l-b'zcUKxxȲN4{#(H`x蘎긎؎8Xx؏،qzdU` ِ9萑@Cf:3ĘES*,ْ.0 4g%>1gJ儎X5ZbG1NLJrtsDi\(H@WNȍi . ᓦs[楐ؕv(pz|ٗБuB&GuEgGwY ֠p 0 ր,Йٙ" `\fizSgqtww0Y@  9З@ |AވmTu[9Õɛi.0ɩ$ɗМqP9%vh'$TDqy/gX`,&h@` r0` p` @ МPʰ`@ Z*(ɗԐi@WOɉAzN%9Dq7(yqa6K n` P€p Zc: ` (`0 *p Nry}90Iz ՙP͒J%\dz)6\)򐪪ڪ:Zz mq@0  @*Yj r)* ڭڨ p1 yE8؉OɃЩKd]ڟ;\:[՚9 :*I ꬼ* ͪ *Ь z*,۲Zꪣ0 3jOz ``4Augd_hNPl ૩ʚka:*#Q۶n퉮7Zr됳"m!!AA8@:<&vM+8UԐ[ڥ_j bJJXZ  agp 0 )(q;*9 zM`GZuخEY0 κ PP0#j@ @!;t ) 7ZʪMO9H E$j)`OK'\몿: !r FK:zaEꉒ5yCsE)A'’,'6ʫ! ÏP\Y ?+뉷1w+Jkm~AP,ŋaM:8 K >Ɔl&˙o Ǥ5I9 6[lƳ_(Ʌ|Ƞ,&a9#_MIǕQt|问_ԍe/N馞H>~<.cBZ~^.t|vy.nb끞n:dn^m׮>>?N>Ǟ߃md ԰m^'ƮWNNXE5nG!E$Yrd )nْ%K/^̤9 :tИ9paÇ{%ZQI.eReB.cΗCU`N2 1YiծevӁOneݙWL حn}6tQ`ĉ/fX#\ƌi&NZܺYB&]) ݝ_v[kfǠFo!˚r];o[o^uMUd2Xtvr=e&ϧ_?#`!Yl4dlh3h F sAz n p+'[#4D F Qi ­3ʇVKqH"d*$F\ Ɛ |6*ZhA 4K0 I$2 y9k|)QL< 2IzJ 2K=u>'9 7[ QPC=1҉"6:R7@9TIFEH-ha.MasEkXdQua5/ 0U=-Ha ;[DfUZVu+X~d%mw^zZv r丢C]0m|╷^6^/x4l[3ָ$qX_SSVy=&'~klHtesA9faK& 1StVzx~#$Pfy 7B(g!pdf޸|;t4Xն;c}=nͻm^NϮ;pƽep+Ahzrtژ 8sCw=O5NOXq_e ߓG1x j>!rjW놱>{Myp;*u}wvOVu.xcخ~ݟ<"}cibG-&lU@ 6F~A`G,ȿ p4i:)7"d!i7@n 'K p1^ޣBq:`f(@b281Ia|tA'fq(;E-$ uDbdR!j]((FDtx bxȄh" DC"RGAZ$lTn"9Iv, $IRQd:Ra!>rW3R"&e1K$1L_*"\3q]B3Ѥ&S&ȑa^[iFS,k1yM_R>l;xJ"D ={YҜO!uO?#Z LJ) /BŇ3,%H(ܨk,b!i&;@ F9ڵTh)(H)FixŃTI*c|h])ST*+rjHRF";ǟtT Rբl KY'k\9IWڵr^VuIWctܓn>vjS̶QPIKh/nQ=*̣^tAr,"6UuV.[f"{(m܍<YtH]UHݡ2MrH $)/}B\7e uS*QY@+F}QSu|U_N!_A;*X ~|2aTx(p9JH'be 1c:[xafqG%@J\dN ;Vy Ǧ_(+ϿIH122sH0M@0NK;y @{m y31Vx&M7:Rz3.ȝ;lc0#ޱL:Ѫ},oˑt{A]% #ɩ=R]Y#nu_=Q[ .h { *g1͖. ~;l׹=sER:޲@l ֙ Xnh9F*g{?v𴫍EAvo(C:W>5MA<-2)|§.oG'W%lq"NsX|4ǚm>N.d3:%"+EFhQ,ɧ_&vJf?;>cjy[_K"L{>WNG ?~^wU $].ɱZi-ol+fG_ɼ[p Dˑq`8A(/ 3a2u 4sӐAҮw^IG8_$:pq{#߿qysŸS?\k?QYip@ؾu\k Tk8&>Ls>X>SS0:?S<@Z4{8A0uS8ShA#?S4P-Ń#>10!,|A%\BƀBݛs>+BBGyuw?y!1+0M(Ch6uxF9UCU\VKCbЄOPC6hCnS9,Fc "E;3# ER`|{>;oo sPA1s¼ư8'|Ro9 |>} rE9uDQ\kH6TȰkH2ǒ8Hk>H2aH2ȫI,I,` >AɌȔDIIIIIIJ)4I0JDJ<ʪkʪ3JJs<:[h, T'j|GL˅|HtHHKKKKKˡ$K LL,LtJĬ:1r,Ǧ=s w]LHDH̯kK|ˈK MM,MӌKLM\LLؤƜ$v䈰l.LHԶLÌ:9M<Ν8LʁL|ο,tĜ?|K\ ]hZxG Z @l̪ӄ+LCCXϋ̨ P(H(?)#OӈLLcϦ!-HḪE<  EތM%dM4 ĮB\cQ[CHFjNBaL`i(dqgq&ٝS6,u'&2C;Zx[wcJbaM<Kd0Y։|]eE d.mN dlnfonibrq"Zgfg"ڗzjg(7.y6Fqkb=ݳ]n։@jM#n BR5T@k^kҀb|i!VgrɸN)>CQ誾jQc^jAjԽehg·f`ӷ6MaiM~ioֈLR&xECL:Pj>pV3^p3J;N *؂87#fv ,?BGnBrCusѶq]wgovg 2awwRmwx#w!af馈quuwl ~|wt/ge>3u\#&fa\ԣX׆` 4'oqP}iڴƀx8PA RUUdzpX3Xv}yNs QR4Uχktz8`/(}pzozcŠuW Կտa`}ryPjyoj\No o7sԢ,|7,/tP9 XqOb_MRPh\|,hl2l!Ĉ'Rh"ƌ7r1>,iZAlf˗2/isc14yυ5:1AAڤ%J,'dj5ѫZ%4Wþ̺,ZU׶$m>7j:n5-Sb?$[¯츢]zF6e el4Ϛ j֋o's;5ܺw7‡(8ʗkp$ҧSѹ)*;BV7$SiRժ dU{I)oѥy,G zTLWA!`n-%Q XYF!z!!8"%x")"-t/8#5x#9#=#%vrPAy$c+5$Q$RZ$ERyeDPAtA9e`dupfuhReb6fj Ty2@t$Vr)&P!,d0? H*<D>C"""ĉXP`C'R8"Ɠ F@%'ƴ1&A)G(L#d ŕ@GJ4Œ:XF'V-aIJoʥBy2-Rfʼn( Bj.}ڕtn -D*^̸ǐ#,רMEnDIdի t0ijO;G'3f H0_K͹[%×YO jOe ۹21ruM">Ip.ws,um%˟O}f[h,!gfUWWnQI[`6PaWEͦYQ}5Z([մVLUVKD#q僄mց5tQe vߓPF)`RT6Uñ(s^JT~9Pɍ֦kKgsY"uD a ӜOaEfE%&&(J e[UIiꩨ:]e'rr[b9aa-DjHAעgiNx#ZL5KX"|rVX_RZhfFWE\TJ{ czM놛gs ڡ~)o(Bsx%!h!XsUT[ 8Oqdᶒ0ԎܬJ-ax0p"v{blH'}ߟ+PG-T'DD+Uwo^-d-5<_mp-5xDbHy߀Ϸ5XNw-A[7&gN6ךwm砇.:/Pn^O箻>ro<`@+ bOoc^Uǜ]zTM凯a@/ od?B>/P '* tK|ЁZ"@)O $  V `' XBjtt5am|! .c 0/' Ap BXK1F t!HCG%$IL (B;ф;PюT` (BaA|D1R,x@EJZd:2a OI92d -h$r2H^<.O4`%Ho Db'M3 \'hESc>J},"K@5Q!L=?0l ;Q*ґgC#iDsRdKGG퐈$=/Ӂ%AJR?JY6ftSAiK$b3H"ߘХ"(&N ,%)uPѪwt j\V+/G9:ғ>i׽uj 7)U*611 Suz@}ўJd'))?a[KXddֆ";5bP,'G ӓ>eL3wVU-(F׎!E#̺ub+/)݁ (JŶ>M(M; U*Bј&-@Rv @SVgT"e]:]2uHKBׂp;VR6NcjE65 w\_}qd6Ӧ.FI:T:'R*`;s,gXY@7Îl6*ØlV6cИ j4"U1%CƵ!o&cA^g9 r3wR6՝6h 2.>/&M;+3 x4B1RqY'j {4 iԑH/T9x QuOڬ#`=gMZΫαikZ׮4=Sddݧ}i8浫kqDΛ+5ZumnCjPZpt}i}.w]ͺt ofZܭ~SetpWB0/Gh[~ :y]m[:y9ϧj7ͽHOjS xMr?N_zו|K~}[w~a'7}اǀ'g ᗀ|vx'%%:*gV$PfŁW>>tBˇ!u+G6(gK LID`G>83JZƃeYGHzd9(DLyăA>eITW8geVxGtDeW}|džgMh|HDg\ h}) @HI(}'8?8@֧Gڗ@䈕8O'|hHHiͧ}CX TՉX/ȉŨI}&Ԁ5('Qo؂hs.~xҗ>6~@Ә7l8ghWG؇}ȊJwI4 I}D)0h/})WAXc؄~h s8hDŽB ~Ig/ɋ(Mو/DSL0xG HUɐX}G$;)S(7T~dYs9H)ٗvٖXP XQJKOeHX]iȏ~ylAxVGȉ}XIg 8}yB wYJ ىTEz4[iy0I ؚ̙)X(IhgK7XX4p1~kv˩yh蔏֩qiyi;Ȝ針9Tyz88AY9L :ٷ|ȡwY~ F0@ii1ay?閰L]I8txlr(\$)Z(Mif\8*G(|)Sڞg:(晔$ٖI짔Y oJkIbڏb^8RZU9)ږhgiIw1*I @zJJګ ꫼ʬͺj:ʪ:ڬ: ʭʭJj㪮 ZZ J*[ꭳji%XQ@ ;[{۱ ";$[&{(+:: U?hQ*:<۳>@B˳Nqc[1?0R;T[V{XK T]#9 pf{hjl۶npr;t[v{xz|۷~x+ђ}T_7 ۸;[kU)gXa{lT:x;[{dn1]f@Ur.(ۻk8x+9O{3kV붼|;* eS>;i̫n{蛾껾v["_Yek8#x,n\)`<\| <\|\[I4Vo)*,.02< 8,L57ۺs64LNP/9\8q9ĀӴR\f|hjL7ln [!*[;~ǀȂmo֚L @D^F^-0 Knܺ͋u8K{Q%̹íG^f~=BN| ߭'-M0]9="^Nѡapҍ[*~JJ2[@UU靎 D*@`誾| ؂M؆$M]Ц٧} 0g蟬A<S{neN#ҍ&غ$ҫJ3nL]ݰP>~.>Lm@ P: B>Нaϟ0J7ޫ-\ y.?d2[jGB?D_F F9iLI0@l͔.ؼAT&̍=lQ.ϭA qM/j'.`0>m"ɡ.`UЊ̧zloQnP>/xoz/9A9`2OX8]͛@?Oܡ /褿uƺ ;o\N`Vۏʢ~r cr7L:}Y LP!Hp˖*-0_qaE3J̷EC*R Rd<1}YM9uٓL0%Z4PHdSQ1MA+1ٺGBXD\SُGM2J*].̐;&\aĉ/fcȑ%O\e̙)3Ȫّp-ce{XVܷzCfܹuow޻`XfךV]j)"mf wŏ'_~1Cv+>#{Įyp@ j##1Jˈ>.«3P@CqD}ǰ C%P# R-2+ A!rH"|lEEg= a$KQ*S5K/C0*sL24L4Ts9ʬc𽏦N G7SJcsPB 5PDU4#$SxB=`cH *Ʀ" -b ]%Ha~' ]UXcuVZD?whb 0} T'终 YhvZjZlv[n[pw\r5\tÍ^ݒ7X =Xi &uYe1tVxava#8bPH/8U_EyŨ-wH ?=`'vecyfk֖/6k繼ء? '- 'Ev:h~%N!+ڡWA+`)8@EI#TOtH>˂+da )s;τ澊Xs t•x.$b(zl9t6s5B|Q[",*i}>T3z F&+Mbxǜ|a ZJ{06qHHBRAJ}SnGh84#cJOT$È9tI:,FUcHX1g=<'*57+yEU{e2XMPmRjغvLw>WB5k 44BRչ*!cȦ@e]h W!-{Tן,i-84Zݭg+11nu3ʾ6cL+tKh:e9ڳ2%,s[To9]vt'fJ[chg1R!pЍ gf:nu-| s(HeQ JmxX(չuB< ц7pSvc(P a@Fu! fp5b^pQ&l@-u| 39,mr"+u"2KK1YKbUn Mշ=]3W$h*l#Ft?䅺,:Amq~Maug,y_L& ƙ./IR.-F[/9#.iua?fZUwm0>rޭɛ 0`oG [CJ hc$ݞ Yfx`8st`KqEh.jG[9LsE*χ2`hߴ-8y5q)='9Э& ](}pbǭhsv{ꮾz͔u/8CDаrvmV7lw{w~//˿d8 ox?0 ~3=>WW>3z#>F>6[o<썟O``4ޚG;מ_=u^ڹ{g?NtsauM?) x?ڛ?Ԉs c@\3=BA9` AC$D< ltA6a,\?- @%/4d5dBÜB;;4<\=\|@lq;,;D d0C/ABI C7tFtcNDO4D.=QĜXA)EGH\ EE8M3A[E#@6?>lZtDa$Dbt;cc@f`,vCFD6J?5Z&dSߌMcZW^cFfReFajf UJ`ab_v2a\fnHog zRJg͇rF\F>݅Ѕnnf@ƈxzcLGJc`|fwgE.Rz>\)~hZgfV|"e-jk6[hJ`r.b4XAiXiw܃!iS0qebeg6c3V_1j^wfjqTp68jTbp->jkk jS:>nd5Pꊸkvk z}VƉv ·϶ 6jplVlaMaM%lZcEiҶkVm#zJމ6·XkXi6me"m%>6m~In>c4A i ]hvloNcVQB3,p?pOp_poG9BVap 1p p `Bd<q/q?qOq_qIxq酦qމz.ֈ։ oooosp)r*opmq,r-r.r/r,q1s2/s3qqi 0@|P%gr's(*tAOp[0?tDOtE_Dq7sHt3WsqJqVse!P%s?rtTIݼctWuXuEqt[t4_5qKugѮo^=&u']TtujvksĻu[uHuhu\ :j@VdOve_vforg7vVWWlxxj'mv1W[Gpi L?~k^ ܚEW>Ӥ-8S1cH#42`v tЏY%Da>DzE`%BL4QBZB'Dߋ]zW>-8H6xԎ\ (#NA>d$)靓 z4"%^y*З1ۢ9R6RR*4U>^r wyy5hjhgN'Lf*lwiBinʣGoVTA*i^dF,EѫEֹFePJ*ګ X pBjO>]Bby[Իj/3p` 2?M%L2g2dnx;a1Ϫ*ΩkuC:|swMW<[A:1OGLԙk^g9#R/Y.0 CsֶHsAsS,ߙm'M&Kn [eQ9k{:Bϐ賯*KR~玐?SE7d" C 9)Ny#,x:yB0AV[Dz S9񱰅.]d ß1p;|]| xD GtW1e\`6*MZ !!RAp+8r^w=[H8"Ąʞ xSKCG 7!"y-1E_#F 1\"}L[d Xfq+ øqpyz++zG@j/ow>EsGɄC3#@2TU(3Qi- c*!RƏSnWY.kXHJ{;Z״Ɛ^rͅg 9bsTf4Ѕ.Qɦ6Uo5RKTԐ,Uyo$L'Ə4!0u]Wm8,D%aRO :9B6 f,v}6 T T}Mu*fUq۝gĄn](o+ 1UFoTWb4{kPE!\>q6Y'ӕU*Y9bxNB7)F|-Cm,!or UB( ̧iI#{0O.N "7,S/EQGҷu:!ׄTD}SSfs?Ek[ܥFoWԧOntv_[]$=Q@ޓpf%nvg6qw,̝+w ; /'RъD>6 cyk<\#6rc;Cح׿ #Hi}| ,mn~2XCg^ֲUĈWlH.|޶)] Bd_؟%V_  gu gHQBx |ZMS>8 BO鑛N祚nTVJ Fյ b ̠o, Q`p -Y>d6\aC G\!tћݠ}MH,!KaђV`lb ba% 7Q"%!a:_,Z[x ҟDb"@V0aD+bDbdC!/҉.#72v#HaD9b]"Wx ,&0VO#D=7&2#w^F!Ӹy/Ri]ŚO(z! mE@6A`Ki;B2\cBF[cBP$O`\1 d-dGIԚU wqx}Mm)D$FdpP!%U"CKO *NC$7NeV6B ٟQ (Qd]n$N%_bJAp P0 e(ަc>8NDe*C%=7YB@bZmI>* N^fI$c=%hB_Ii~(fcb`h&a YEDSDgf8nh8jrYVkWO|fB\s'L'lx[%y"g?Pg{'}֧}'~~''((&.(6g((VBjY^hp"$yB q"gBrh HRR%%勶S`ꊊ(H'`lIx.)ghƏF*5Ft8FVB($ lW}$l鍆SZ𨂌D4"h*RBz2 $oBe@!, HΚA( \0"2lxpbDS:41E +>("Â#!br LJbZ3raJkļfTI3@(hS)%piD:Ui-*RZl!%<ц];`[W׽Wo{[746`^vxp@fϠ5Oz.4{ 8vrT5lĨZ`eݻG | /Dl ~€!, ؎MQȐ!=ؐa'Rlx`E"H.=z@N&@zbƤR`ȎɔIf\惹s6M{t9i3wŸ.߁j]l>&s@4jT/߯/`Ǥ:2)㾏\1ʞZe|!, GA;0>y [j*Q#A GBjDi2\DSyynɂ $(Κ 1cw (UJ)|M7 r @|6u/RT;xs:0Tr-^䍘`@!," H0_t\9k#2E!ÇH.DSދHɓ„Qhq5rNL#ȅKʜω܉OڃS&Cˆy(tgH+2u2_Oa@YǵJJ{YVɂ=ӂLd{̴2ݡ ;t`J f(pJbrY <&]HIsH?/'1bV<|KW-3e67mI } lA{84@^;rbdQ^|(2Ds3=#|&9`|(P} w~t@ !A T6bA> @؊ EO@!," H0(\p`:k R`;۸Q%+K'RdHF>Fl%L+ B 1&ܨ M/ !,") )!540|'*g@D81uFO“<@wMp%sbiu8s|@PS!TRT\i4i|Gy&L,ZJaD+sO*k,D|[* QpZwJ8&yTLO6\_iX|y%M2 Ҵ祆")sh0|Aυfi>M+xnŦNaZٵ`ЂgBy,%J6$ lӜk" ! , HA*\(C|"&dXB&2HQ  v\Hi KVDɐ'Y*t9Q̋5d)͝ 3e t`&MD;(SJjҔOe|T^ժҩ-V,XĞ6ǭ?-*[s!,! )AJNC*P9Xw#ǂ#=DD[2_L t&:gִ=Hs;niPSO ΌJ|tW(NwTuA=Pס^RbFu4 DyF^J$)DҀ0s̏ϭ'IY$ %ڔRIkWJX9 7޴ -:5X)6 6`@!,ٻXg|8aDF @Ƃq4,cDyF|qݽ'%L(YiujpO|@=-(P#+j'IA$|ȹ5ܹp%g+H8S΍bK)SL2jL2E< ,'Nnڴ&a7YSA9 Ϡ1 +0uN|m٨fc!, ٻXg|8Y `!@Ȉ0{*l `]ʘ3|4#ϜY(%)SCWv<n #Urx@YVw`#&Xľ(0O„"I R,,_C`iL 9oL̙lEn}`qm0xAĈ[V a@!,ٻXguk Ĉ*Z.Ƃu41!%; utL|ZV<fNy `R>aAy$: isBjQ΅fg>(agI-@ĮE sq5x`9JS kpZ&Ei:4QڼMG%f3Т`jA{0 !,ٻXguk Ĉ*Z.b0u42!%; utL|ZV<fNySs<s U w.4{? `xTkFWH{jݻL;' WjoIT:Q2 `A+3kDZқsGS6xQ!,ٻXguk Ĉ*" 1F8H0R:yV._i,+{iΙwsÝ `P{J`|ikՂ8ؙ%ahFYaĈ8sL -x`9aE8-Da":!| 00k>* DiReaJc>AA; !,ٻXguk Ĉ*Z.b`!hdE !ộ0P:3uD&ND} `sEJipM'ԀWJ®vaX#R<{04d5e[sl)p y acOX0F$sf>:hOlP5΃!,ٻXguk Ĉ*Z.Ƃu41!%; utL|ZV<fNy91N2*|XZ0ܹpg`%:R0D Yр[i>M7QؤE!>"#[oʼ٠f|ѝ ./ !,ݳw/w` pDPxPbp pT8H.fdʈkbu,iB|B$ ΟAw5iͥF$ IÝ 7޴|;1ע E];]k蹧$,`ʝDu Νtb:`@!,ݳw/ w`]‡p`D,ň0${"I^(_ʕs9bu-i]D|jpϠ;MyTҢ`QX|KiOŌ΅foZ>h}+щU Ų\d9<@)imNhu K {sɃ! ,ݳ; C| D+/ +^Ȉ i1{*?1 ]>|}3⹛?MhtϤB)pJ)^w=at1ܹpMgm>Éq0[ 86,O&Q=@j|H+ڂh޺wZx.f4 !,GAva>|px" )/F-h@EyH^J-CҀ,=7 ͂&ЈBu0gP6d1b.wpM7-F ЭVJtҝ49GM `,FJGKL@;I1DO#1!,H|3A|‚``B+/\Fhd00{*'|x1 Xs;ɴXMBuh'Rf Dp 'rG^@ cA']j51~x'ba^=HtUyWf !,H \Hp cXC&Rtaƌh0c ._Ɍ(:\wǓ1+XKc9|4@:<dz(%6ӣp\ʴ'|Xw],sكj$Jbr옏͏cqT\ f;|Y @$`Ӿ\@a%^ϠMLl@)I0 ! ,ٻ/;^ p\`""H񢰌M ǐ" ǐ#$ĉhs#u2gјu)6T1'SNF05|L'e*Pf%w=8]b#υf0@8\׵p$|`$ܶ$4n~uZs'Ql: /c|P A!, h`) ƒ h`D|X1aČ6Vb0$$uT6diq!u)e1u"Nkss85ҠJ'=4¡R=*S:PPJQʧP&0WڣBNÝ 7͞Rx' \ǧ<~HD8I8"E&%kuBD.z@YlV)jIycV8t`@!,",0 , &L1'E DŽ#iɃ[YK֩fu7Kt % `EH.e:GIw,Z'V$"p9B00iEHF-Ɛ(+*1ڴ]nL A8 _֒ c! ,H  v: cؐC'V0`B G"Gs@p flHM\YӧE)|U)ʢ6KJ$*t)EN"VpY5`ӎIac;7MĎ+Ya0GV+`Dyܼ<ОF:7 !,H0` */B*l  R@8'" &l`0>FHQɁSYraKa8;7bM$I :+2 DLz=K>mlϮ-l}-|doJDN;lbЉyX7votO w;_0 !,sSٻ*\ȰÇ#JH"ByٳȱǏ Cv\"S\ɲeA%OIM$DyϟIә'УHO4IJIrAVj*ӦJlĪ N լ۷I[5Zp󚕻.Zc *wn]+FZ=#;2U΅fY}9Ns]k9Kl"a[s6w&_^qݴ:&uXt; |ݹs慎_Ͼ˟OϿ(h& 6F(Vhfv ($h("."+8#"x#!$H2b0Czd EKӤOXSVieS6eD:bed2dTКgmc9'yui$QJi0c>0ZP@!,vA G*\ȰÇ#JHUȱǏ 7Qcȓ(S\YʜI&A`ɳψ.ĸѣH]×sڹHJr=NdեXvKb|Nz۷]>oXx-V-[yG;oݬ ^ܓpQ{/##Ý 7͞i)_yrNO&G$zڵm#IFrZE~z+9M=ϱ&_N=M+ng ٦޻sɃ_Ͼ˟OϿ(h& 6F(T}Mae>!r!!R8b&r!Ha"?a0D5ք#9#=A@y҈H'*C:iI$V I%Y%]z$cazY%Ad!,?v H*\ȰÇʛŋ3j8Ə Cȓ(S,iR˗0lY0E̛8Gs-RIhĞH RѧP"i0Cj:*A:J6'|] np/lвpcvM*Ъ<|nݫw֮Cju'1i爚C9ǡ9z!ךM˜^Z6[N?l[C|ЋG\s]΅fOu OXg]z>a*4ŗ}#=,Z@u 0wmWLݶw-(Zܖr!o 'P&(a@!,;s`Q E‡2L2b{rP-.\w-SXgeØ39m"-܉̈́2$j&¤Bk`ӂ@)WU w.4{ X p ·^@ 1H2`U_2dى^p9%\,yAS0`s^*~e E_`l)Vsz䃲}K^leGm˘w'^"̽ut?,{6l/WdNb킷 !,8g!HT8! paDUq= \(H 'g!֕leʘPA*ԉ'D$j'ƠBg`KJQJ pMg4YN3t(`{,Rdjϟ0v |)0e *ZEe |[bˍ| b>.]41OT z3՜~ 4٨cέ{wc⭍{a.)3'|y>/c|YݴϹ |^p;! ,6bQG)Hq!A*:l@ą V 1_*(1cEyH21 `ݽW:%2|紋ϒ{сIϝ'O d"t;{Y up /"Ƥ8@*Uh A F`DL N#p 0ZMދCoaX R#A.`Lo`/smMlrゥM3.d o( n!,6bUGAUlx-)4lXJ '|[4H• 9#|*,ax%LhD̕5;PӀy0G( ⛊oZT2Hrē Saƒ#a*pf G2N Q8ҚN] -j(UWf劳N1ߺ^F"c2ϭmB䖗gU4.\a*^=.zeN 0мg]re9Ow.4{l 6-:cB9|Xn0lu{ 'dheO`; S==XzKpN'2<]}ksOQA0>3%C]2 gtČA^(| ԽC'N A!,k#$ H`Ay *\P5p$RHŌCZ Qcȉ$Jv˅ݓ Mg)Sс U4Ou6j='uҦa]j۷25ܹpY7nt#"M`ŞzcU|j:pb&?uy.( ۫+mx=ϗ&),FA=wot+aɒQCE~໲ŏ3{ڇ>?!}0 r=~=)%`{E(D >!,h (oXW|8𡽋H0ŋmx𣽈DN$9dDyDNXcubROy7ayg>[:m:?8p)Ӟ4RXFJU(SG]ΞƷ1y.pWnԺDN8׿q7^s"8Ma[}S\@#{Gݺᨮkz`fMfkzgcֽnAE', [CI? !,a Gwauc Ĉ+<u!Dy:N;W uR$u(elf4ΟlYtOJ>phNB?5`ý\iN[&ǎTklęύ ߁Te_{H\w \wRw\-eː}~>^5kWÎ`۸ &{탻 !,_ GAw:1lX!D 81㽍;6os2Wu*I|]>|yܺ8u4͜;S4hҥ@U'pF 74mn#aϩYKg qWI)=p_{"<ܻw_%i"DOsOrkֆҦ kM7up ki`VIt̸*v+]رD ;0Q^enZ8G.li6dl]u`"}.|7A6!,Zc"A0pausx"ņ]4Ƃ8mE<~D)r%uFvDy.Ysb>!NiQ½{@cihN:-:{ `ڹam ̨[kT^Y98p|M+ە=t5Z"? V#c!+,XHACdHC)DdENp=|>pou'S^\@^pD9|FwC CP`Ӄ4%JժQYEI5_ӯf;O)Yf~=xEڵWfs:p8ٷZ'K2%KIZiy0K{௼wTTm;ȓ>,߽[tCG=ؠr!,XG% 2 J !AS9{@:pu(A4)!Xw&%\f>0$]i?.pn|P*%ZR泚kԠbۈ0;{DÝ 7^փ`ͷsY]Mw`_g6ށ|> W;juUlPA|0 ! ,Xc"RP90_ 2(lXa $Rt DR i)Gd`=`ڻ7f|/S,Hs;r % ܺJтRVTfT;`wh;n=åTӜ>Mcη cy25װ Zy;9M3,wA[0 !,d09 H*<"DD"#""ĉXP`C'RH"Ɠ F@)'ƴ1&A)G(L# !e ŕ@GJ4Œ:XF'V-aIJoʥBy2-Rfʼn(Cj.}ڕtn -D*^̸ǐyMEnDIdի t0ijO;G'3f H0_K͹[%×YO jOe ۹216jv'k:p9SAZ}6˟O>W;ޮ>.{׀cVzeRq55_fXl UFW!u TlWN[hoVZ1U5{Z-USıVmOeRӝF!}L6d}(^w{hEZRFθWvT wHm)VP H#OAFTmIVJ֢dQ6x^qF"TڍOփa7B}ibIUQvljEO*1_f$šaNFGydSmh[e޽WV}uAh1ETYRhfl 2XRuѵ2^khdOE\E_ʡK NZ^;-[XEWeE\uBh}&;ڱH5%G_ot Kb wt~Dˇ"2fш~FŵF1o}WK!0ҹb*fT7յ`u[LEa&OGN-)~வjp񬎂]뤓'U7zHUYgWa(\¡O) m gGٴ`}# )gݒM!& t[0(jnpXQ{OP,F 'ƳU,UV  _coC.#}cC_]")/e\;ꮲ- 3BM=iZCVX#LܲT8 Jo_ӖA_;\ʼL)+ UqBjښ ҅DB G jp K}a~5)cEqh#+8Z3L7VBVL(xcF)Fˬw*IƔK$`(`$I̞ix>4QLya, m}+%<)Yô˜4VoV7YA:5! f@k)UGIA+Q*8Ѻf R69lwe 6jg ;i_zTqQİ"d\*KVJ $pHqj@<~)u6y$ldUyFHҙArݿ!µLڰU<뜝[91D6 JAJ%YUFS[)K>AKeEn j^8/a^6Wݭsԉݼp^K׾6q޵ê$l ĉS9 VdbJ?bǴ0 L6q)f]Y쫾ͱְjYN';ug[#̭pSwi'WaָF-% v1yo2NT тolens= )zOTe{Ƴf| wٙqЉf+G:]ubqkf Z.jmTKg QҫhIGr0kT2+Y=43<2-|i :۰`ءlrBzZ[VP,(˱Zow7f+ǾϋW:i|vxqPϗPO| gEo |K=*ĭ>bv3dy|8_c y\AxKq'$Bn}C<\lUD@;uԹNpA=+^*]on\ gpW )XK^ů F2o'=?z,</˝<}}Y<vG~|\W}-,\gt|&OAQo{y̧_~K)h!K`,ޛT=_{ MsC弇|'}qX?t.x^Vy{>ex*z xw}'׀ x|@zqgӷoGy7y7|'xzW{ږz:#x֧W}4Hy.g|!-'}~67yDLWdVt\VxuW9x4gwyzz7/GH'r(y/Hx~uxe Lwzz{yqzWUG|bxy}-7|+cwG7}7wotXhϧW H{y-ȇ5XE~|'z2q7OzWut}7q5(|owȇgo7؈AXGwMx}k}肸|HgHz'x)0yi8zs{x}|r(xMx8{[xrY{y {g~GixXTp~WΧV'85HyVxthLJy'ZnjNx ȓȎFj6}68MIz}+I@YsvȓM( y{}&7Xx}1YH_xE{ 8eI\)7MHjc}8J@jgz}jZ~2"ܗx]yt8Y:ɏ9wzቃsɔ%XeIRizwzf yrvwX xd8Ln`wmɖ'ǕɖX8n{xGX9v~6u鉅xbyyqSП$p'i6ɐ gF؄Ig& rĹ LyqOYx{y9ILY/[i~yHq/aGWqbMh"86ut*X)9|IwY~liyTzx_idN٢瘒[t)8t)xH*hZɛRx jʧg(LnT|X]IژZ zrW$|o~ٝ@ 󙖊(Fh^iQYט=E8ϹO'Uy*MZQ9|Nɗ7w 7YZr 2Yn0j㷜rf*1x'+Z^0ʡ*I:7ǫ Wsy؁'|Jعׇ *˛٨9."ngLZi>ZɓFgkǙ Nc-s]Z =j؝] '=݄ Wj}h} @G?(SjM+t3^K%+]MpME~y^^NW>] fu-\n^W䙊+N?4>(<\uP?`~亍..qם]z붎闎M.،mNjߤU}]y]}-"й~*>:%娘z*%y.;˞M.]j.^m~}[nNzU0OO]w rPP'y'!6Z4/5.=4ABoC6:KPMBOIOQ9?ZEOE\=A??9_]3Ri?_or_1k?)Z_NY/_k_Ⱥ )g~U`Zp~нpv 'F.pP$T.OUr Mpp_P{[@b` pƟ_/ |] WC%N|ТÃ[0h!*URXiwK1eΤYM9uO REBG-hP7kڐ@A2pnRl Yiծe-ڢRM1(©ԃH;T,]ecȑ%L0݆YyS,PP} +VϱeϦ]6ElțT;ӐEw0 uٵo9 ȧKqġ.ʼ9pM7`8v{j3:l6 A .0 ǹ|R?;C4ވ͸ئBQ[E 8@8G AqG{($.0:29c 8@X;*i}K0Kɢ/9;.IBH=##q q O@,#J)MHIF2"}#Ҫz3睔fOACuԳl.c#O,$մI#$Op5?יK$uXbP[AZPk.:Rp/JT;DuYC w\rB6dM7)z4I^y92DkmR@\&7dm-G7#8$JFч/W#P^i.!/d^7BЊs,.(@UG@ b0!iCMd!G:Flic 1}\Ph@BMD%M7-|d%WCFZҋi<͘# ΫG[殔4 #wJdi}9"xbHE^TT3 d\Y%ý1d|yM sV×'N|_ͱW:/ڲ 8Hu&tP4g WO x< ѩH?/M`mjTd30 >4++R|1A%CQX/!C90Va`TB¸Fmrz/t ^H'V`0̡ k>, CR:4uWBժAzu6/N N8Z!gDol(a^Үy5H]:|u_I{9 )d' lm+{0*Z NWyY a8`XL .nۣ1/["rrPvSjzO_FSm׏j{rhOMn<^wݽzx" t0x@7;z?<,X:@^k!qm?`Iy[χ_gʟDun_Vd}Iwޙ\x?Ϋ6}퓏x7XχyE0I>OKMh_} "@=wۼ ۾ǛK;r9:[س뾇H@k[?+K۶d@Ac1TAs> ´ o`:kl>?e{}3(D[+,:D\4;֋CDC$@S).alWXZ862::BCT<=FLC+Fd,39)Ȼa4BlFzsfoANhQ{Duܳ'4B6T> t*rԉYF|Cث E\ų :WDzT\5\H2J׫6:hFL>Ds cK.`oD>ʏTʆ4ƚdJrʧ|,6=E\K{AsI,˧4+C>|q˹/<=3JKJÿ,üLhl<;CWL L)#ˬK)$Bќ:JA1LM4G=j,,4ͧd+JDDΜ4N̄@Mː|Nt3Ké4L,<̈BLn NXhO{Ȯ| $OMD Ȍ%P3!c(V$nfdZ~hމabfb 2fepg@eHq&Q1sn|hQAx6X fg{.|Fgf\%e00(sgE ]hXPTJhchfh6b 燈h8i&hcxiX鑮 iRidaZXm膃 h 6jQQfi؆jyjsgoFNk@YhkpH]khhp趆 ]jƆxlŽXNlĎfZ(퐞nlQg6~klffAf읖 n@~onV9m>ٸhl>VNNz@}nk·>NnnNjlnvj·>n~lfk&?1plnhߋp 'l ofi hl&ql(6hqn.nW+qgrV~o,%/Gɐ?,ב\aX'n)o3s^|WLvP@ pDMvsf|Hu^wxpwjzO{\fwhǎ"ouaw{_xlWuM۰sxg'Wu7օ6i'M}ns 9홯v&tVel`zegzzzzzzW{{g0(R.zz{{zF ɕ_VUJV6_|U[?gRgju_y(xb'cpv|gtezgz}҇{/{Fbo/Ue}ڗ}ڟ}z}?``{`{?_V{~Fu?Qhg ɗ 7s]|kПzo?G}ןfo@_e˜(0d1kᲄ:h"ƌq#Ȑ!(G*Ol%̗()1b̗X@E-j(R:ꢕ)H]ذqj*֩ךBRlbǒL#ڴj-*-ܸrѭk.޼z}ȗߺ~-|&љd3 |aڊk'cLj9` YJ1G>9fG:3iH%1M@^m6HneTjX*ޕKdm2trSw:2[PaǓG|P!ǏB8:|fVoA,_i'ԙO< k唓lуIedS&.!6\c\q^%V60sqŇVv5x`!a 7yEz {H%Bx$g~,] y%<тT Il&TqvDaqQyp#щ+Ҙ%Y*:#:(yG^by)JդD& YC 3r^Q~_&ZOdP(lEGʉz$HrUԞ|f%"y~J;-Z{^E]0ícǤzf{5)2CjGZR>$0 34*MgJ+Nxa>^o\p.,_ *!-%?t{r]Pz{.͚ZTd }&EH[d̀ڒ. &ll χJ>X;'7]wDoq!%1"Mm]tEwW;,oHRId ∗ѫ k,mG*&G S[{u=RwEKbkeq-s۵׮rw x{߃ /%xңh&Qk1e^G/lzGw]zS:eˁ3].;;gڳ< S%!_r暨-,{^0H /bߝ.ԩn83Iqhn~.|˞^!g > 1% Sj/@D'e1wA jmkSHtlF!a 2fH} Q6Ҹ-0|#uG9x &P?D"*1r!T2`\VE 6Q.NDaG4F1#4Uj#m҈#,HYƛR]&C E:QUOCI(I`\~5I #A8f -FiNi:IT^+c)ϷѲ-?C^Ӂ+$#9d;KYa)IX\)yJrfCSpNa*y[=iϙpg?ӝ2,&|bț4j Ӟ$I(FQH **m)Xt4y < [g5L(s5$jQT] $THT  >Jތ#Z*TI u +f3֗UgZqƕO%eA7$ѽJ-)I_=Z#6]#6>rJUؘF(EZ6*_,vY~3 mNGK5 GTS95RSli[[izD oFA-ױF!4wI#sݐ*vu횵o'xwYZ$ H]i'z%招ij /~=(q^t[R_r$GBYR+\5p>$R tZm qËDi̤lTcMHmob $٬hQbX}ԓƭ\rF74g*a.GQuB=#Er4w uT^`H'TӚ%hFdQ 2a׊ynrV+6$7 QRlI0됰ұ'ijpzK%׿~p{$qH4]?eZs HrJsG\ X^Z oPEyV]R.NILQ p>ܲʉPC$%{=FTBx-֫tFɉ <鋯<ȊDOr8%vcϖ3{r2;ɹ*=i79RL0z}sAF O1s&=Vz)]ӕNQ`\GXG^|\^RlFVQś[ܞ_AQ`yD "ņ|]G,%+=^>xUSMefT"2@N2ƅ@4B$Rpy0JGPmxL.nYBUUoHb Jb"fR&cŅu4NzOE[%:LeNDG eQ(%QHBYV*avF2-:E !HR#HGQ|%o%LeRBJfMcm_ eX$lm]`m8# ,TbGňԐRR6nNGh%dfTc\#lZ$]tAs"yPq!e$0B*bm&H<8e0ZA%vچVb~kVdѥmdex'7'n&& &GZqn$W>eVN&=tn &#h3~&n]l^*(_>@Q@MXbUJVȮPQ4bhNnF夜XvHBm)Rՠ,"`i6T)UnzN=.X(QffNƥ!!iRҩ~;ٓa筝uhRP*NGpiBm (22 J^Νmͧ*f*8%E5WqVyhyB~xQ@>QHM̗:k`GlE m`gZ+8 i&ʋkR~NXͺ5̲EƼ+@`Udm*̮Tj(bVHR0m*mhB| pN]eR,*^i a{DGZzl䪥kmB P,"k&RmEe~m jR_rU,Q=l !$_~ ̭HXn,6.نز:)$pц`mv.U+n́.$މ)*~. %h6ߵQ,"FrƖ%V6Ԏ/ƯQB*(vFem& p8/2] "QՅ ^.&%_Es%XpD"⮿$կQTC5HT 1ű6܂bz[Z)pVҕ*.Z {Jz[ohF6j`.QB)1q0n4q}0DZ}l5! 7úq|1.2Eg1}Ejm$1g0!QVF'""($bPy=*+eib2ӡs娎epx11ɦ*Q*W ,+e-:1%,K- G0V~DAHHB$ | 0v9a:QDs 3GQB /%#03%3 <- DO7Sʯ5|'X^;rQl#q7aq@!,S L-*\hpC,JW0Q,NL >L"FE1# PDŜ$NyvlyrݽH<):A`q_{4m幧]}frMv{= +w.{N|(WpB&0υfo6V9\̸^g10|\`ӛE @\l{ R|޼.AXEe><}aTR~dҏ6|˧7/!,P ¢-*XpTC)*4hCRpqQ1GT$I) `@K =6q)<|(eu qg* \wT*U&L`;|hMȂIıqEOmLPI\tu"m߸r Tɞ˘ɻYpMg7@ir3MHf`nլ?_w4)pnA0ٯENvLddu{$w5iUSgq|T !,~N ¢*haA a1R,$XEPਊ>FE#Ó(Sc.) L3PI"M|(iN)t&LI@b|\tbÚO׽çuZpN!>(VU»P̗_ *db8=dq|C{5@ ٻz4 OG;du1];! R7JLB[ S0eK v^J*;xq,PM!,~M "HB*T",@ RD"a,"dA$E@&Ifʅ/_R)rƬR{?Y'u>.\jJˇo҃V++A 9V@(p\>y"d^Ȑ\i@8mA+cɐ &Up q 5F tϱܲ @`BH>,y'P!%d qo>T(U@d0-B$jU; $%t*j/!,{JQ ¢A.eРB FtE,*J,D/zdpI prbĄXlI&|OִY!̟!qh! ,{I> ¢-7*aY8/E>'pD CIr"CVbɁ)AR„c@!,NGGA\HŀQ  bD)Z81'8B, I)I*)Tdi &: NigPP C |Ƀ5)Ae}g/g ܹpR #=\G0&KzTy L9L 4{5|eBY3("6|2|4A*)b !,{I  " R*\J)YŇLHТB3r,УēV1H' j,y1&[H'ߨQ, E谊Q4}ǂiS$OniThP[f9x UB6ѫB(=|pe(};7}[];a@.Lد<|#KVh3|@y3g.+Թ=-LÍؿm˿g"玿p.Ww.4{mnW{?@w]1[ yt  JH@̽%@ {)ĄT,!,PYG\ :|80"A(V^ :E@""J+[J]>|=Lq|ngAl Չ s] A&O k ._itXU2>]3E |V=_xslz2 ^-L ;2鼅)y0WWeo}[*[o1!,{GIJ "ÄEb$fb1!pY#{ ٰ"FyRE%ubP)r Y܄A{4(:znQ|OQ(1(LbbԨ+G~zu슣i@݌)x.4{OI@"/ڕA~] #=@{ĕZ+b ƿ>t *);z*)R n}Xe T<9q[7<ũ3]u[S-a([Ogzz-rώ9y&^WG`A! ,tA L-*\Ȑ)J\hpÇ':x1bFp,A" Z$Y2E(Gɜ9&,0`L@s '͠5G(҇[Xw@"wԥVj*wN#Wpn|kQxdv¹uцkBt.XSag\c¹΅foJ(l((SMZiqǹ(C'czrN͗o|)ھE T߻OBJ!,q>\ )*WC^yHEBC(0ƍТC =8`˕[r&M,hlsTǐ0}̹ѡlT'O!,xDGHG@Ȱ! #|H" *R2VU `1G)x("TQc͖1_>Lq#GUTb@85i&2(E I'@}@ Qfɱ,dPICVL+/[=r3hV/kpnW|K C&P)YN1͒ETY9Ȟ_A /4{gĪgeLK^eKk;@ɬ?{ _2Ap>0Be"*PATgE7]PTEAAQ@!,|G!(*,8‡pB Zp"A*-b'HAE H'z1$L)H˛kfRJ͟@y4Z%P@ YhOUBW6a2eJ%WQn-*,U&ݳ[F7J޵udKp`]A0@ [a 2Tr/Nۛr8΍&m֭f<|f|I~4ợ2pnq|ϓ^ysЉa^:x۩w=pnNw.ܴ|٧ԭ#9ZwSm _j5jix}0(s `T4G<##:!,o<16 H,RȰÇDH 3JD 8ǐ('`P/IR "D"3_͙)XpdÚ)xRrQ)UtqS^=+ġ*UK^6DK*OS+w|TRL լ{Wa]@~V1\cRֲQ^\eVB㎶JAĞo,~Y%mh v촧}@E84naܻOӫ_>Ta&(݃O%8y#`>紗~ =4(R~Fބ`8쁘Gz&`>+~h= 36x:4Lsx)BW$ ԣФxOꈤ=te87v%409͚ iVc'X VS9/gAyng$Ȩ=@(yPPk \iuZu4鹳0] ҬdQٖ+s[-x`پD)o݁plAzguh !,m: H0*(Ç,T@(ЈR!"$,l"/ 9H>ZRsȐ0ClIp')!ft͍[d%LDsO)BdוdW1T8|K%.^Z=QJwþ+߲,Є+0])rp U.\U7,dAIhY7k,Dm J ۇ>ssǩG붘poϜ{!{EuË[ <#!,m: HA"!\PA"CHyH!Ã'!%D%Jb‹It8Œ+ T9e̅"eҼ9`M,Xx$bDB 9JҗTd`Ԧ;JRJԪ5Gv͚t+VFURE+ѯUdW}UޅxƜja, #v*3 ̫Sz- 2 !,d09 H*<D>C"""ĉXP`C'R8"Ɠ F@%'ƴ1&A)G(L#d ŕ@GJ4Œ:XF'V-aIJoʥBy2-Rfʼn( Bj.}ڕtn -D*^̸ǐyMEnDIdի t0ijO;G'3f H0_K͹[%×YO jOe ۹216jv'k8h9SAZ}6˟O>W;ޮ>.{׀cVzeRq55_fXl UFW!u TlWN[hoVZ1U5{Z-USıB Z?aveJMwU ^`l5xMiI9^Q5܁"=ǥT[A5 < yQ%u[)yZ JEkG٤ybPi7Lq>e[J2N߄ %%UUڵwB)ꨤ"_jG8%X摒NmyR\w֛ZqQ#V&gkfHqZhaѳB&\T`IWGDL6Vfod\oUh\R蔫 A}UVT`U!Ro!!d_Tr+lF'H"d!(g! m`k~YA4ǽ߁JoqY[_Ri2y3U?+M-XZ*sbuVO_kiE0IfVRZXҘgئ!e`yp 2[?9N{7{inҞ:eƊ/7hO_䳊QwL~7s,Һo@RN A|&l:qCb 4_tz[Ɍ6R/1!EGʙ2Ե.ԗB.O@ &T-5|0cna{*U ,8fi / :paUeb&I*{8mm͹JbA+5s)iQKNbK!@ C+Z xѬywUbUKpzzlaZ!$2//9/:gԑyi&ٗP, M L $&$2i2ա$. !#Xʂӯ5+5l`' d04Ll8HӚbB/q+4%/lj\ UJ21E]ƖViGxf|@jG,t`"gdZ4JA(4D1mV⛤ՔejEZ!?[,MAY{AgD4 X~,8Gjm[ARloI_JLW`֬V`M4/~ e JaR =Q,S)):ie&揄ktIǍp^MV@c]C1SD6Ef=<@-,gqބY+Ėm5L@:VrZJMoDmCsGђ0?)esiD^ӽ'UR֬beɇz '5&F7U{a^Vi.sA 7*%ƛ6JNJ/|QGB`R"d=>s^CoaHH֭rT\#-go+U X؍(@u^fcۨrȃo̴nV0(MQhE[<A=n:$KLS`kK/_Boi4/ZvU{S/Ep#`#X󯷖T&Iί\1ohENe^zh:Z} b[RPp\FȮgP+ib_W\cL=&l99fDm[;W\zʾcXZbY5$/k8+N*Zq_< KMp.5x=> *n2 s*mIV·HzУ}Ҕ:*xyױWyAfNu|/S,`RyE$}?ZN^{;d/THA>dO χA)p#H|C_ '+ܧ?34K_ҧ|7}7!T|7sU|ܷ|܇ܧ|s=8sg~!~~}'UPx|=|(||3.Xu~}hS } E|DPuruzcvŧ`9Cz 3[{}}HtZ[W~:X2Xw\طL,H>|xM}cG":|ۧ*t(h~s맂)('KX׈,(xv~X}h v}W8y[Eh'[U8z:7KW|LׄH3t8s} ~|舌px[x|[x}WW.X x}DȈx˨)Ȃ(uz|WxHݘڨ؂8XHnx'G#Hhr~()秀)X؃A8؇w ،邱X6s9xMȷ~Liؐ3 :XqD }7y|=!y}wAהS[4}FЍ! MǂXtIr؈cix#7|؇ׂD֧8<'ߤ"p1 wsUP'M'|-9P8=S Ȗwنd9(NY&x(;iɘ8"+ yy)l3؉r)iԘ'(Hsn$׀sHMhPљ`ٞY9=xXYٛ9m(у9SiȞxI*qy,(ـ Wx~I)0y)9؜8y(h,8=(JNɝ~4WI)*ڛG:BvjYɜ(kzڣB⹛MJ㙆wH)a9|_/i%  Ùy٠թ;ɖ砝z):sɨjiu( 89 zY! *4*J:׌Iϩ әǜڥY2): Yi)yZaXȇp/jJ̧ܹʩ إBj P8{mhJDjn{# w q(F 1Z8yz8hˢ{iyZ }JWU 8j<۔ 亩jR0w(ʭ mRqwvi5}oxjYT`hoh{He(\(~ʸH8.}o۶I G{=Ȋ,`熤ww{ʆWτet痼}ɗGt電[8 )wK`GVX٩xSwt tx}x쨽PI{9')2 lاv0<IV>u4Hugd~j~] {2<<\R,ǿț;A|: 뽿sȽ)Փ\i{|2:9M5K|Kwd^MP̆kW*:\x ƿpydXDaɪG7uܕ$j6v[ȱɧǕ̹\ɝ,˟kwvldVBv|ط:ӻˋMf̐\T,ƙv,gEɲۆz܍'ԢX؆B}3͹2{ ۭZem{'[g=,u^ %}|/|` U]Ԝg=b}eM2NԨkNԠ7۟ڃ=؀7=:HMιڪN g>N=㕮~G=x-4.qN8^TPCNՒCS o~S -Mח󝹟:ίȂH(YN>EN㬞O䕞T^N6N$O~L^ )ONr/.+.Z".gN>$.맞*yT坝[rpsKP|_N~m֢WWO٨;-~oԈ/B/Ot_.X',?}#^>iSD剏?>"o\N/F@PgJ%R`C)=loC* SdhÌ !nlHУE*-\iK1eΤY3K,%#HEEHB .tƧB>tjҋNZ5)T;^TcĈ\B-jďqE:LnXB)Iݼ^U\ fTcWab%\BpT| "[" {yF>eO9Qۤ]vٱ_*X)īpc0$&)nqD[bi6N,qE[tEcqFkQ-)B%fHcLѢTڈtI(rJ*&6+i3I6.4L4Ts͓b#h ׸6o rG"sO>=32-݂*\;QPEuQH#6-%M.a1*r(N'5TTSMEL!|mT+\IVɤTW`4|%DAuW7:OXj$N7MpM iUw]v!@WQT)TqRO sP+vxNeU7$?EVJZgϭ`+ȯz\=!nO~bBM#/Vyem2~ulvH9Hzc3YRngW\sN(ecV:zj3)b&P9]xƆaSGyfBV]QAAsᏍPhxWZoꍮMfe _)ma=Y@PA@a1YPn0PPh;!K H/6a>4UV+ngD"d!LRfс?_bĬ!i"\H݊Ļ)'$W4*"- YR,E<opcR*zndMx;1-ɐRǤ`1DSdr,^"3hlH"SIt )%ፈ1 yCMr#$  ɀ*YyLAp zWCi-*$eҌ RLp)_+)23J;2# N|͒Zֈ$*g\bOr!0)ʔM`>tJFԠ,!EOuSD&ZQRL, ;*"r"R@FY)4)hZTښTbf Sn H;KZ[$"oUoce*R eI;ꢒCeh멕|d嫰DxU"k4_"誽Dk@]]CޔMZܵs% jTJ?f@e-JH9Su㭸 ڷH/iWUvQX)fk , NBXQSLo-mcYW&4! tBE+#/VpNNsAXъ|$c6^ۤ-)UU/1&iK0| X 1 |bH`WsWѫ(\ct8W¤CFqĀb4)x&[X|58.Q)c#r ].M! cj[ YbɍY`%OpcfYh,jXOLD -_ yϓ.ϼ.?Nhj/K0SZURqf0ug awWk(~W@X(ukS]6voWL_uN#%Qy=j[[2j5`Rms}k'}YڽN #2l\;[e{uvѹ=~[+jYLc{Խ5'rGDxGj[6%m+ozI9Inrphk|[Β/x cp8KkQXT ^Co?NehߵI7ӽ$;c| ]@{ߋ\_ELl{U58 \xݽAUӲJ]J{ x ±q w:n{K3D=_|L_>J;1} K/_X{:p|6=Mrۓ{;XǮپK};_^]__o;ѐ,+>.:1+;.?p>@t?? 6xW?X/p˿1/c 4> P. :CA"0\5ɪ,84ڻAQB`&\8+=.B0T$5Y;C4p 8ls[BC`K ( |! B6| $CDԳ CxC4+,Al9C_|%k5@SCdEJë0C+]$E \E` Fa,bA\C=$E |`LG=?t@[#Af,_F2'#F^ST<1sGh,*yFS{䋴vGCG*86?|$BT~tHMACGESlDǐH~I۹s !5kڣAGkH4X©{HFD> TƝ$;r+PDH,æ<xḢ9(ɬYJg;L´ۂ9 7eɤ H`|8}=QHѝu5LYmISZuU്٘Z#Zpժ-==Mۚ}Z]X["X]Y[ۻ 7S%\R}hsйuW@IQOVa}-g+S` gM=i͜> ˹5A[\ ]4K!m] M@a\^̙]\R YEL}\]]u͇Mm߿u^%@ ^T]+ۙ4N -R+] 47/e]= 6_Y3vU^b6,$fLY< aM ң}Uta#aPb`^4ۇe'0~!fb]YAN%7Qa4^)`Gaa,: 0_ ~cTq;?_XP~nXhfz~ 뚶^kꅦ痐"iVvklRNg'n]6lkA쉶h~k vHljlml>k6Tqjfvm~,mM~ ML~·mf JmSeeVVplˆ|ȆNbæcJ@?(on5dVl` il o޶~yB>PfV/pF[· ppkl/16qeqGgot⮒pp Xk&op3qo#O`qjkNf goqp,nRNm/χ6w|V?sTo?l9q&q7Ѕ!!_8PWu]or"sWs?q]`u?M]u6Lu^u(vl_cre|u)bՄJdl/vnK7c.ouvO~i`_|wlkq~xR?ws۠jut_xGtGtx⮉۰|`xG;>?n8?Nv:d|W;u'5yGFzP4yo}zgw+x;bzχip 'xtV{{{||żqe_|ć^[ʯ|˯|޽nI|wo{_ fu=x_xy{s.|/~'f_~o~~~$|}~IHxxMp}itGx}uG~>~͖c`,h „ 2l!ć&Rh"F6RXq#Ȑ"G,YI,le˕5ih&Μ:q^تU>i]+jtRZJ2ShŧRQj@VZr+ذ] CH5"ڴjײmVθEv 6$޼'7TbL*0g+]FNkjYT3+AG{-X-ԪWN'|2^W|)7ak.8=7jʗ/s3`&m,Ǔ/o^lm} 8p(޸f -e5MG]f]gTUZx!MT#mhP|$f[J_~DSEP]$MMT"MUgTVxmA!I*V]D%b|#x"L/Qr4ڄ̀OأR9EEx94y깧A9ӟ" YihLP5 Z\`,as)ElNEiw $Aj'aB4(#wҡ~ƨ_iQJ%*;]zrNԊkzzS:*;.d*唈~ XF*fM={ 7nʩM A 3M k%cP2Sjj[~K'||hJ9_E­Lv)Kѳd9] HY2+4M;4QK=5Uc1kõUxǨgϻ,5r8AsQf|.cm=WT%m5+8Vcͤu9ZuK YeYݹqmӼFqSdk6m=8M8jʺV]"%ypZ`{i9hSzQj&Hൕ1G~P@U{>?R 4[y5;;D9ΊB7L> A83n:2p;! SgH2Up^ <@rW7<9D"'#oS?QJєQBRXؚ8UIFcL è"x )80Q(cw4+@/e`HDziI050.˹Z-1G(2|P"PO<h˜!s˩)r!e$yed51EIQX$ZQ.2VNS e>E~<':Kp0 !9{5fa3e2d7떳8V}:*ͅZD}\_I‰Sį(!vzzi UDHK~fg?ѯ #=JC TĠISdP*T5'B=*Rԋ.5S1TV̜jU4BM(#Iƌfو6|TM28NvgFTʭ,PMKL)E}c/U0-#WjB*6 ,kzP+I,pi+lmH0`Mou )D Aݲ~6Ql?!ܦIƲEsuvnu%]ĺDiKR%yŲa.=ƶnơo{Rfko/3jmlO.‘o>]hƣ0!bcd"(qN:kӒWİȊI[\^$yۋVJt2 {YL^Ջm=Vs s+8-x:*sJD\LtD'yK1zcL8slB/&82EDJ1/_O $S4p+Y"KO'&&:M\]:mO+:vγO?%EgEWFtL=0svb* -Mz"Fԉ ج>;V=+~霏Zx'/3+=d&5I`~mhȦ&fl4~spL#цL58e;=c·3#R1}VY/syZrSF3Y?zrl߱-L;iZ&+$Ռ7d\&W\┫|ݩ6s2WV ݹB%W'uQ>ˌӱ*[<'/loR'ù_T"N+K1D7?'${D{;Y[>]L>.|B0H$=N4}"z/Lrgd-rv"o~9t1"7-{(Ym _Ac(4su]Qu1X1UN`` \\1`{߾I)X] q-CA T{, nޫyؙɅy~ LF&E@DU E̟^E8a  a6\Y\@NGA!maM li b [!!*F$`aED'q6tH ⟵!4xP`K`EbE!a[q"F  *}Zy@ "&N~ԽF3nZ0+Dڹ.!K"ڄA7ܲXMl!xaE)L165]\P?)D6hq@L[>d5\ Ed7*FAN8F& M@j<'Z!Kc4$NEdbX, ,*ሙX}T ]DG&$0b>|dSJ\/RQVKB^YޜNܙ]%*dF@se#RCbXrD\!&eRSB%MZ'VcWL="@.fEȤd)K呛A¥6WQ1BBvB^b$_v_^_Nd%4.*K_]̍&£a֣1d,)Lf`[h؈fq晦eid9kv6o6!XKVcEФyMKIqcpetd]%G8"NlSr'lnw2hOMdEmdEiV-lE$l\wZVJbVۮ(`*M\-FhmҌ):&n\LC1hE,LBu,NG| ,yM׌RZ$QD[ 0+qJ-l2q>@N:'DU1o5Џmp& ӌJqlq'p!,Y Hp S\P`P@aÇυ" Rn|Nn4u*U*kڅLi7h%L8\7T`8|ɐJlJuSL W|VZk:[N޻p'٩Ӧ˻oXc]'„`JIR$ACb!$ɘ4) OJ|6 jČC"e/(Kw8Ȍ9>ңC>)Ӛ/Rx4BqJֽfD +^̸ǐcL˘3k̹ϖMz4ҨS^ͺM۵ɵsͻow N_ LKN:֧ν E7s7'-|JϿ'U~6`|=xCFHhهabm B$]&nx+(#}v_Xͨ㎝aWbT<)dgRG0䒊PdxYie>X$Z\0a bie\@b%ARZf)^p gEygu~yggSŕwyWfgX9frfZ2(FjЕ!t)(lf9t_I%jkbU۔RٙN양Y럇*VЁ|:feԖȪ ٫vF Ua^ADoAF+l>BF)TTp>oVg{5wMY76]kMsj}cn DS-kN\b3.͐F@"}ʩA*L؏=c;vt]xإ.4zm5iM fǎQ .Wmc޵h$蔵*z迓Y[)8OY|Ж1>LH4,hDPj:ԛ?F \`VuVBA[m*Mja,*j\WAB`X0Z3 5%qY\wŽ03 P HLH r)$GT,n H xE-cb3"De(Gsh>m#G2C|T $3TN3&CSJ#|b!۸QBF_,WIJ3qcSҍ|d#UK@rye%W#@dJ0-af3f,HgiLmS56ypRX}li@ZÃ.d Yz3l"A+R@ cdhF!&2|aBAfԣ3f2 jTH(g̛ʔ=usWg>8e _@X$V-h kZֵl+YZַwU\ֻu_կ-+XɺUxU\JX`[굯k-dj׷vn@,ҕyegK[f)R!K2`N~÷Z4aSXLr:ЍtKZͮvz sA(`-wê>Z}~#(4_B-GT{|ȗorKaP %=Ԃ^ ^>{#xG>aZ0gL8αw@L"HN2ő P0Nc:ʸ`Ma7EԤ@`u,~8xFl5i*0 C >/Ѭy|恜yj"23CPOm!d;XmVf nj[M*wOVT4훇Lgc"@j.)an{MrNvMzVZTсakv0.鸯 b;!X:&u16~^.s7svpJS\ n'72YFq$$ Ӕ o+IJ#3oYNĦ6+Bk͍+ i%\;'N ^0I.1pA,4ۺ "ȳIx35gLCY.xICP+NAǘcPIycԉA<*O p[f,50˰ ƒ$|7O G> kwsP A}[_}67>05y%t5y.Pg:`}vpjgRSaxarS9N!/ pr|G|` p` @ʹ— `}Pʰ`@z؁%Ih}(HxxgkqxLTjK. n` P€Pwp 0 ` | ]p  *|_k1w}7P&M+aF{aB4{iPp8Xx؋(ఇo+pyˇyGph@0p @Ǩ p  y֘lx蘎긎zqq~[h9UrsH;1L~"'7 k 0p H$yfP `@*o6?GQpXzpfKP/QA~[ƲC/xS8!'x PpƐffXّiX}/svQBfP~8Xhw mD@'((@!cpim8 pHȕ0(^!y 0cIafh鄛j֖PyNgCW{&sdgBE閁 DX!x Z  p7h@  (m`) 7 haWG/\\qM .-e 5aɎ8?I*I?#tMFa~v"&Ʋ%-UBztfɢJTWrJMy%aC%SKv^-w/1ARy{?(כyMjvHXQ WJE7y\bu^?KPALzeWB+w{_?$xw^+GQ jrm~Us@I/<1xG>v$&l zګ:ZzȚʺڬ 2GC~"Tب]zYzuX 4Ezz4EښZ9Cq. H1[  eG~&&'ZA:lPxbMb?:** E/ZJ,ۭxJ;IJ:T*ڲBK&۟4k &ě*B;/ yt4뱙H˳{:S[-KwC~\J\X8~ٚ@fKx:ur ^Ш#Z31A&`;[{0K;Q)ܪC] _KE>A*@ `˯Z;^gPU҄0țjQr: ;I(P  ZEڹ^j! a;TI_@a΀a{) $l*I[ Qò8ܤ:ܿ\ a7J|ȳJK!ùH7x{uO\H1uxzr|no˥SlƺQ%|Ȉ u tLkAɖ\\Scb\.7xc|#ƲjǶ+ڛ˻]@,)f̄ G\jzYP,dɺYͭE { 2lΐַiY:<lgй5^\1xƼ}ɢ-< ]ahH1;漴P/ / 1]ae|QA.0e%HԽKڋPmx%Yá _Pc-R?f}hMOAhQMu-eB&_{I=!QS}UؓɋM^ !t0זϘ ԚM4Y6h s]4Bdb@ҥMa۵ ݭ] չـ-Qܴw-I^ҤMt MլP5PTmO}ڄmھޫ=+Ep @č!\஝-l !ֵMإ1a~X޷MAa♍.s"4^͍㑳rԝ ~۔]ȭnČ̅m؍ n-3#P0>wd>>LM; T~q^ݼiٷ}ݹ޵a7" з !!>ٗߎ/ G=N=kN-ޖ.n= ^Ҷ"n^.nA kb܊nC>.Ǟ€-zN뜞M_݅}~qNau]ׄ=Q팡1^ s!n! O ^ %0?!#O>)O)135onp*O_^@EGƮ;OàBZo-8p،!q aQ9=ocOIM_tv/j}Q_?B?3"O%aE%mO?ܭA~L9BUN'!Q`_4;b5< O_?#Ooڏ$%#( > .dC%NXE5nG!Er V2a 2cR9H„ cOA%JdÔI-]%F?gbYP`΢YnW&O2L)˦!Zj Υ[]D>4te>xZ| 7ּ/fܘ^):e&ièY;AE&]tEUi0O:73-huݻnꆫ2]fܾ/g$p~R|]8Ūu:ݻw ĥg=%,|V׿ %>BA#)@첟 (A[b$qD/ OZp!i0Θ0K˧zʘpp4tLQʸ0CDrJ*P0ż4*+y9/sM6M%}.(kNU6_:X[+.Wc2x#{rwb)-ytĕ[/47t`c:[9dfOGqg fhpy&;IYe"YӠ>Z܇>da^,뭙3'Ֆ{ &Sd?{n /|( Rn\<2} 9v䆒ӈIxܕxi@H¼h5*lɧp0`#DFeXfݶ1cQm<+ґtvd"h(D ( z̘!}G$W<`5HdQ+H7I'=#+wB-rыtL+ ld#"1ŅXR#(' 0SjZsvl/'Enf>AN$CL$N/4@<ljO쓟_g7ݩ>o.gD (tVg(PݘAH1 nibAZ̳&MJwB.G* k6NyS *Q[f5FT ňCjll4TSe7ZկT *X+Uf"$h3GbʭnM!bȫvEJu6*_~ RD1RuAPS6:ưY=HέHh2؈eQԞk=1zrC|H^"|VvU>&Ȅ\>l.(A-QF\\.]pDoЛ^8{/% Q64AC(1* $evT C 9Ѕd^نZy*9 jWvq&[3^q>4xy-)b8&+A _ {!M@x.J)1l]9c&3Ayf4k&d0Xf8Yss|g<9PFg?FЃ&t }h.IŢGёt-}iLgZӛt)= PZԡ$\Zիn'UG\.O@\!֮anz@O[>JS]:f%I,!іHxuׅʝC(lυ9.F) Pq(kyo>[zOzcpCKw/-s!d^򕃌ag>opy4*~$|^YF}[$s,lpO(Qj\7YMh"S97s*]Ct- 'r[#97էH-/z>-yEI7rܛ!zF֒2F ))JXļlks"m)wg]"?8?W+f+ߛYu"^Y1rk4j6C\ĻA,y{2^#S:ښH‹3(!*/T@.#B4 ՛:֛8ʺČ($ƒCpč?C?CAl*Î@D% ߀ČH- 1đr® 꿻݋R61V W,Da܉;d9ʲ[48\|D]졋(}c^ TEш,KapMSF&4rxGyxtG{{G}th ՠrzf<K 30ts8m]hK ubzG HGђ!@ DHh8и\mKJFo=d ɆФɩǮPI~T(KDdI;t(K*[K UUd>nc,yH<ɬ0IMȘ8AK>a@<#5jB61$H.^D#y@4Gyj̮Jlв lKMHDLR̭8̘N!(eҦKlâ  t_N·KOAC,p# m#OT|=dt'" ⬯ݖ=yƋXO Dňt㌈ӿ⿉͇MO"|NtY Q|pҳ3&m]JpM(1MRSLe +7QmN' m7lԼS*}9 S2 mKU8CRO lSoR =RHT7O0͇R]V qԻO VV-bUe]VԏFH|k%KVfͭ)p.%\OVsM.]oZ% U r5D*Č# XtUWeDpW(XB ؁-eXYHXXRYUW|-BAM YYYYY8XMI-ZXMZ]ZmZ}ZZZ Ai Rِ֝O(j}@؋[ !,[,< H*,8 =lq E%6Đ;J8b($ˉ&NLIȓU$)dI@4q&Џ9:T2RÈ1y4G>Mn9ң\d9"XZMB 1ĉ46O EL = ѣυ LamX?A0}Z7Ƭ\gnԚ/P1u~爢jxjJ<꫰ꤥz&뮆kklhEVr6,6l`Bbfm @F;)nF aD{kTJS-lp{R(D:Пy%B r>)B'pJ 4GL2%\0 @I34~\42; 1A@h'-cL5A_*v_&6A3)0r>S'p54 :1JK 8).P},`P+* XI1<#䪈>->ǿp~\N|MoѼ?qyBX9Ά43zw'AˌSʩ{F d`i+ArA@)NBDHIэhLM ЋjŒ@σT%Q3ӒԦS%hQ O"@QӡzDPI՛êB T]_(T#U$^ uUjbX}2 )ehaOXju\uO;՞>tHgN1ѢzbKX`԰d*B*/zW͊VZըe%TESZL-syɶ6:E)RY]&wjh@K]ԡ=+CUkXIzkWT 5,XֹT+esMoR ݨ:EpUԅV^kV+ TY:SҶDuJگŪ-+0S`1 #wȐЖb^BC_g"zȨF)ߑ mO ry>/c)hE=cC| ÒA&&LF T iH9/=Kzu"Jc*2}*d@9DFSV4հ[)2՞|k}V[.5>gmlũ ԙޢk:1 (Ǖ\$K]^5SyMK}Ja/>WQӺz(AQp>nh kTm$2J O/[<ǀ8*YKek6qƭCl Fp']{q/wwD|rǡsld;R䤷 „c_FwÙ 2cq`H`Bw]I ww;uwx» Yvh~ݞ#J̶KƂj'? w?͗%HxpNa~t {+~, wr{jl1g|r1%F7m!e%np+xܶgG~FQmkjeV[ܖfE WKd|4TwCv&{(xA dX) g(2ejȆk(ohqHgsHkxnxw{xm(}8hyvH(舕8pX|he iH|R Ap(p ` XxȘʸ،8Xxؘڸܘ@ Q0[$Xu> 8 (8Xx*%uK0 ` ЏYy@ _iY_!W`p긋+p294Y6y8:<ٓ>@B9DYFyHJ:))@)5qu`t(IȔ^`b9dYfyJɁGUЖ_4cB(W)됋 րYy2dM[vI0 p9 w I袖YS2&iVi9\y5)-W{O JU)NH^Dwy.(҉-bX{yp)ZV8Hv_HPy iٞ9Yyٟ:ZٛVى'pE^8xhڡ &YX_tĖkYP <?J DZFzHJpNjp (THTT{ 3 `9d)%hʐ AmJtICUYvyhpeڧrhjakpq3p:ĉC x]c꧘)쀞*J`0|oX*&kKP a` @a` B)C Q0`S|i? xC{Ꞷꫀ@`` My0iО1ԚqwIj/K9sI2d'2 PZ㺫S":pZh6 XjRn\EBpK pr[` p` @ @Pʰ`@ 9˜+i(Ȋ!kp `=u$)JzCmVn8 }j p (@C۫K @րʀk0 +ʠ*:SR*԰JCV*%nI2H[?6v [{؛ڻ۽ۺ򀫧@0  @雫k ˹);(| ݻqY!([tlUҖr5"qFh7(*@J: 0p ԛ[+p @*0,R <L|GKUKn[0ԐP kZhJLެ3uw*%̄XVY(̬ܽQ|4=kQ3`wE:j\ %$´MFa2-*k(\4^69gW5 {=">w.@n"#,~XZ\^nILcĉgaMZ?R>|x)::d q-$ ~+p>y蔂IM! ^qW2v~"L΀!b%hЋ^(~kݭM.|r(}~%z('>M1q.cPQ2w]qzd(?_JQ^i\ `o𽞠oNN~O$2O _68Ԉx/v ?(^p?\07.2[ =u:}/; zi(v[(ѣHΥ[]y.5kʕ)ɶb,Y"fkǶoCoe̙5o<Ʉ(Wn%Ef̛1zc3+F~w`gܹu3臏mpS%Nsѥ?P]{9eŏ'_2k[bǰFX>?3%`C &Ɗi1KoB +PJN4j"BSTBjCThVqGB/= ӯG(~Ѹ pZ#3ɌzrJ4TS H-|ڣ3O?Q=d" ,vc9sRB@+G k8ד 6( "-OJ/Uu GtSN2Tð$sDV{< SX/. GsԢWju.ؑ 6˃PkMB4GM}]sv]v5hA-js!8σwRrD„9 ZT2;HᒌNGyzTtĨD萫[>DjU%T2"9jU6dLժyڂ03kOT)[Z5!rm1b$Iwe<%V tN] Vy(oMǂ5,e׃07lU7Yu?iliMkH΢Vu_-2TS%ieKمж7dN3y YDq.F!U;ݬdZ~gEUf C7msrWɍ9\39U/H#{XmWBFEajVkΜ4nyjXŮS 0x9 W)7{8}OfU~rŶ|1ٻTZM7ɔ=gu B& Ҡhaa`FnYpQ\d^: PC[eI.m0}]fHo$Ybnj 6eJ|8&YeCϊ&|bde4*' jZʍFk;L>|%3\}QNZ= -25SmYi`z!L;T~zW/c"ےʶ3WgҾglg :v<\[!KrcFAh^~m^ {^]=oU{qYhߎx+W]m; !7Gݜt5_cr'><7imt;7VzBD~g;zBb>s|?eO`_e,䲟=5e=*ܩvAգwC|ޥtOoV%eA3;{]mfU x97ʪ36RqhsX> 7 Yo}6#L48bx?v ډ?Q}aB\_+~ϼ}TH0#v;sB4˿q粭?:$3+9j@-D?h@@@3[D+|<\ASl;†x\<T>>x8K©Y (" Bv>$b7(/<,BC@.|@|H|B:;|=4D̋6DFC00Dj?[ы;b "$ADJ+EPD|5VhDHD2dg0 QEI0=DESE>,2+N E@ IEVJ>{4>E=C8ƽPFp9FvFj?lDcHml@$]+GsR@aXu\E'Cݠ|eHgGK2;l@al̀|p,)fHHjSƇot ]ȇW\Hy, 3w\G YTl5D8IILRĄ;w|GHPI$Jĸ+Gđ l(ɡJJ),k@KDɵdK(qˏ=b MͽN0JZ O<_lNݐMHPm̋Ȅ|FtmؔKIP-FN>\LMF݋LLkPl1ƃQ-4|ѺNQ "$ mŤ J)MQ EB+q(RR Ќp|2=SK1,ѥdBKΆXϨx8-фMZhTG}EHH]ί VTLTMTNTOTP P ,Ua(RMM&Vm-jUXUUUY}W-ULWU^U` VaVb-Vc=be`XVg>Qh,RtS*BbC,`߂h_B pDOI4VcdPxcRc:cU^eVn=2d,=߈pdI[(|c:^NNd3OaeDejkU$vemfnDLBbj=D^`Rp<8cSfOvfy,ՃGc_qe_YTM,twviSg{|~Q~&Ȅ(H!<[k "[x\Zca(N1h6JYG!+iZ5MV]UeT T ӊDQJ0Q)~eŧO\fh˃Їވo]Z0Q]]heHQE`6b#f5}KPv繼O/a kV~fP`=`uewg,] 5^x 4!hh@8f닐lm؎j nX̮J.f6az2OLof*6zo>o+c*;ӌ6&Eka0mvkݠv][5Q=]yvT1E&B[loq/q?o,g.0}\D~a Q\bbnun`Q ?]_Dq(r)r_q+'(+r,C(kzH2MwT؅RecD|_քK |s̀aNx~M7,rDD+ښzoF_0't3:#sOo3Gsl=sW>=|= P=mRI^s=g]ru?/l@GInE "̇Vvw E'//tztl8MZPpWC_tl ctXM8\xQ!d;ߏ醊n`Gfay w@e0tUKaLKaH-D%Tw[HbmU~LpcNj?x&uS,/ c"KCLs_LÔ'w8Pv&]z_u%s] xmXfmDCO4K3APsxWS&EdKVp@ZݍnLrozDlv.4vCsTrʥUpyup_ TV0 |{ a0|`RUHpT}n mzNh} DgKnlyW o|GVpzW ӇG˦ ~_})v|4fA 2l(X D1ŋ7*D#ǐ"nsxm$ʅڰƍ[ʔμ!'Р=-jh>"U1_D2E 6+؋%$K͗(-(g"Cfzy&5HQZ߅LH!ׅQ/]0qȑ}2K湦QZud{ TS4 fH'\гM)ԅf>YۋAoN] gI=xWւ?q̭7CC}?! Tz>'_}-DNv e_S|5`2Ran(GІzqC7(G !g!Đ0~8#]7҅-TDuȡT IR#@#T"LyhFڤRUg%Q\#acatK%2MBQY-vFъ1V)H3ڞ)WAVRя }uTIe,EH6xщ] hUVvHX*JYԫ i^>*RZVJ*ug)0r馾v" Rǖ)YƤ%msH{.h%mI%ǜ:YHe[*Tn.#[oX3}6OoVR ܿel )XQQb*pOc4@F,NMPʢCe(!jH#d0MwQlΒEEHǠX{W6?;4pW)]$֦gO]+[u}7ޑvr}7 >8~੤R0Sl"ˍ[^۾Dr(RBΑ0pTM7ݗݬ~T)CȦ{:U:; ?<(<+<;>8MDz ;-XWӬ@LT#\H4/$9D6 (S0ZI]!,Y+: H*$b`C%o1^XqE3I9ǂ&4H&ɉ&CXR!J86XhNGKٳ#F7(ɞO)T$SOViGS{BxZ 5 B2ЯJS "Ԫ +^̸ǐ#KL˘3k̹ϠC_)ӨS^}:תžM۸ͻ O{qǓ+_μУKNdֳkΚlO>3)YNϾ˟O~g5ܟPhsRwB-F(.` Vᆥ] hY|"h%,&DF(H8zD6^zDnwC d>”I~Wc>R,InD&礒?jϔ_B9 ym kCWq6$ڦ)&\)E{U)tfw^* fE088ܖ܋NIwkVJ iq*BBҙ'f:*ЖGk>%kr+{F+ٙX֮{Ѕ[ڛ؍￾H/4Vش-zK [ .;o1<-,rB1,4$+d2@+}({\;#tyD e4-zJ˹}ѝeQkpb?=̀'u3;t? x}_-3Ձ;C}6~ՉC^4Ն>2ԉ7׫z->[wr;fɷ{ڬgF{~N >뚔ϥ˖>\kꞬ$5ρm {0[:W>Y @%SIJ#gW -gW< x0:5/g{"M`{Cb弦&mwG':"n^ `)Ncc% pFF܎𪨦U Eǎ5ϴG,dLcAI3BQ cGJ c=# IKvlk6ˣBfI> ;$8Kjmt(+IY$*G`9H@v#wLSRFP*>Ie`* ,80Ml Q1R3#MԘA_ >s{;۟)ԡQBɨ *D QT3\(CwwhAdV dGǛl:yp$2 FM*RԦ*թ p*QJU&5RRԪ6ժLժWUSZjVիn-[V5_+]ջ5w V UbE&`ط|5*A#ǁ0XH5ҚMjWֺlgKͭnwުVԈx g|c-gI]W;Hru8׻4a kL 5TZ4T\|ľ:{LN;'L [G;P.~ #(͆ߴ ]fkuCȬʬˊ\Yha6/FXAydǎ{cͨɀ!c7q8we,|Y!vL tg벋#3爴'<δ7N{ӠGMRԨNWVհulM꼬 :wu .ŽuX;#gq FV*ȱýe mn7߆<=r>vAޱaKELJ3{дmlu'!*q%mX{ ,%JP^:.ٍDÊs(;(rJ  ڊ! q"~">Mm')"$ڑL2N,^ɐ=B5QF.!H~߳qݕM!Oθ@U 4J~ݷ !enm {o"XNka+|~=.Y~0\~r}l1T.^~>#霾 hۡ^Bjꓞ蝋ߋ .q?^ ->->H^0 -jLU~.C qib:g.n~ƭ틞.ʎ> Cn^nOaʱ d~~.涾lJŮ^(.0/2?PO9m1D_q ONV_Pnk_XQgPm?o?~?z;Ovl̞?c|Ow[rQkox[tQ'of/ҁ A?ȟ4?2o Ɵ|mO!π@oO $X01 .dCć/E5nG!E$Y$` V!“1CVYM9ucʕ,'~YSQNVy5_SaŎ%[lA+NmۤU~x]yzu˃E> ^ĉ/۷߁/2n0e̙5oF9wo iԧӮ R1-mw+''>ukAs-\nqѥw̰rlkahO'_F^7=vя?_ N6F Jp@邁 #(@#6Yc&CĎ3Ch0 I):EqD*&$e|H .F ¡F+Gẋ\I(s*!aj$$cbFIq2J0$iʇH-Q>1S$2L!+5Ҥ5R9#2 ө=IM@uQ*H!RR0;mk|rST, qR۶;5UZ\u W?)MښV`A5qEn1ZTd`pW+Xܘun=ӱ,mR[r֠\*^"p%(ل-^ݫOWM]-^| VLބd`C[3 a1!z1xd86VZIvy)M7 ]Z~yg:MՙgNݱԛԙgǚC "ڬknzkZ̬_QaJ$klV3oV{ =,l?aƊ jDȷo<,s/euiqu׵}vYvaew{w~x7`Q~yOy裗~z꫷dR &緇^{?G?}w}~DIێ{ 25Mfu]|xŝ":F*Xկ} P<=^} DTO+$|PzXERH\D8 )j{ =B l[PrxuA$b (цM"77Tbj!Ԛ$=uecB(tj O|AȨ?H H#H"4Q!kr1#8ghI:br!i$H#5zr YYB1$24J!YĴ>N%Gۨ" e&"I.<( W$nKG0xO$T҈3y,MozFIzJ4FFP]8$Kl6"bBKS)0kTDv8}HD7$]V!Xorj$YF&ӅW~b{[XSv{k.#i5Xms ^#1bf.C&rd#Kfr %閺 #ۄs v xKp*s\5r>D3d7%< A|g<9D.Ȝ piK걇9L(wv(.N$Kx/FP+p5Gxg%&ϲk?붺!3j !1j\5鏣ƭN~% 6Cxܼ $s#Y1IΌ Bk\:6kmo[ !ЈnjUtKYi7!k 3$nml;if\/F4;m ԌAFmk;#yFp/hO\ȿp UG8Gp_K679)j?G8)|=6?dIbh+&ak7 &KiHk?ţ໔,s>08@)+3M`@ 8?܈{ oˇK '4ËLA,p<A#Ts9ӈ3A+B,B-B.B03@/>1,ChB9Z )ԉDC9C:34*C=C>C?C@ DADBDCR(DDLDE4 T0EDIDJа+O!O0=c#䪴+cæ !,X*: H*<bH!D> 9XD!%C ;Tpœ CңK$ȲK;G MYpϕ"c4s|Mfq$ȎG,`T`ÊKPhӪ]˶۷pʝKݻx˷߿ LÈ+dǐ#K6b˘3k̹ϠC6"ӨS%װc˞MmM{4RuN\svMμ!wNc%q νwۿWӫ_˟Oz}_5b)BeIADe!T&Ђ9`> >Ha a q@xc)8P!8 H!k F ) -daR`Gv%Y!/F(`.ɥLr9ri0X2tFEk! &z$ءx&o+&D柏z U覜czv*jjqjꩆ))'{%XdDk劗$l]nVkǢ,pFE%.D-qy+빻K.RX[ok*. O{PJQLd.0ZzJ? QB+*s dNvͻo.-SގHb<7**c%< aQ.Pua}6~0ۼ&-D~s*/%#{m9NמfY)f@ t!:8H3 AظƏkep{b V"!'G\IG2nN"A2#̈MT"ť\'BD@.&щNb(+XIòE)1b\#ғ5RUb(H+"JdcO G#҆$ hƄP3>,`,H% ^eL0T:CR# Pg3@ _$xer(S*BT2dhS!%)fsԦ%~t/y:oӛkgBLDs 7 2L~@8q|࣠@2І:DZ `E7zъrԡ(EGѐf"(J!!j4+ŨJSЗF4'DWjS攥RҞ~@(R9 Xs0%`iTՠ)Rav` XJֲhMZֶp\J׺d50tx@2KðG81 "a!|2)AU|ij:aSXM`>Bu!@ϑXV p5 pKMr:ЍtKW)3 c:!w T-nU^~rm>Vu4֡ _TWF/!6^ޛk\w+zli` .L`Ip0q~*ޞrT, ȥ|jHN&;PL*[Xβ.{`S,g)6qL炰c3:3)\8HB? LaCu;IЍrqJ#d" \ vc|q): b9y!a '\F~..MM7=.S.C^5N^q0^b>jlNaqLsHAu^)N ~ 6}| ur~ixƠqqn| Nns  >b1"`!A bȮא..b~o1R^qiQ ^׮퓅1 !*!n1I| o ON?lAl #onp p-OBĀ,_{q9" 1I_J>_N.q1 1GO0yt8? A L NhjO`_@c_\߀y@ 711O 0_p ?_ <  |o|O?_ԟ O Aeaw1 !? (&TP!Ã%>XE5nQ$@$IbHJ!7 sHL|Ċ5fX7O@YJ4QI.ebSaE7¤t[Ӌj݉WaŎ%[֣Ahd÷krͧgXrFߥ-Jǻi%>cȑc^JnɹUy%+wiԩ-kphkSϦTvmܹ|b&Ą{m޺/gޔ2֔Ls:xso=sa{̔IDNo2e%Ɨ/Qz?L.xH*M T1>S&VOPd20|4pCq2b0/d:k:sp"- #{>1+H$TrI&THJ zJW8V[1+2}@/wRVkZYk/dR32y+tW'lhQ3"~!f:ftII_\4a}x_NbeFxguιǂ4!i#)_bF]uZA%wgyng,.N{q(&`m8^T#VoVj#d_]u.obF h c$|/ARShm 羵\nx¿Ls KЀ%LaYBP! #.uq3Q]P@XaĄq ch)r$L`g #ȔED#Υ,LcE'B11 ņ,P!'bw5IsM"Rܼa'Ib_svĐm\2/O.'yǂ]*C'F9t_wc>Mβ#c#j$zǔMcYbl*Mhf em'N+լ;OLnn UІ8RQya; eaT@'bͪr8jƔ,< <˺7F_Z]U{k_uȔS9aB%ȸ5JAkcrz`YYfv6լW:ь5)l/ʔlk]K0Ⳬ <Jް(i fd7EIens\Fwnu{]fW9nw^4PlR"X *^W݈$^WosW&p |`'X fp `GX_ gX^amĩ-ME^flũHl!,U(; H*4(! 8d"†PP@r8|&Llcā!RH"!F4 Ɉ 8OB/hӗPstM:iGh(e,L6 3ĭTʝKݻw(iA2M'\´SaMQ[S򬸔` 7̑ Z)Ap?& ܆l&6{#a O8/eȓ+_μУKNسkgË0DLϾ˟P jyh`rD$x }-:H]f!ymH^R(uHv,*Da5&\0hC(q#s9 d;) YHL؅MF)%~@FXfRh)`ɞYV)h j&^d*ti'A:ީXŹHyʗ )Bc%yN(wh@s)jFjy*鄆vY駎":P)*k>f(ZС謇 v+ں8+}~֘$} kmzhY:p9РJqi{nU.z/?F "-"k- ^ 쵼Z,mDPİ|2D/E/AzzjP3Ʋ2һ*#oil#J-e\֨ km>$m]' x4zFT{Fd^y9]7A*S%;ExH~5u?|rywIw~޷߾ >i0Ⱦ~E؟ ,8@/Bx&o}|.a1x&MspxAn#LHSx>Ps B*vA^ àC1np_IHB0sGA A-b(!oly(?zJT*A8yQ"B$ڕTc1 8q '@ ϊgܣ'J4!⎋]Cr.QD`(TzЂDcK {L% ϨY&dN&  Л ٦(ZRst4A 2<*iDCNrF- i47N<#Ȥdc%?MSRU0J4.q %TmN;]>ʯEO FGJSJWbJ HuZɱ<MLѶqjuLEzTcAU?WN_ҪO Pih4Ӛ?M"Q UܦݍtSv%T^z$zeB^HA`T*o_]i^Շ:Zd?=0Y~!{`@kﴜ=]6H~x˫'W]bGꑜL_h{kXh6W?*v\gH𳠼&#=Kr$o5a]לdy9L=_(vV Z Y[|XV&Bx+SFI<p\Ddx(FqFX cWh@~ /b00A.0 ?e+'0gŬ1pHrNBČN^\7vO%cߓ,:#] <8Y1Cl= #N3Pb$88N[D_T<;TbyF _1[+F-Z0@j-cheQ&O}ixG+͂nxO8hd"ݔ)r:+uAA%()Hk~:k܊>|DZ }AI{KQEim^xS'Ŗvvhqrg+n Mn|')-[ 7m>:QSg³㒾ȩ@H`*X@ {`ַ]h>(m/;20w{ޱ>aN{ox){wk*[8C b!mH5ځқOWֻgOϽw^F6bg@XSO[Ͼ{qx$LWW3TՓtaHxWJN||taXX2vǁB5Qwr8tXvxxz|؇~8XxJDlRL GUx؉8QH7WPfXDъ Qȅ~BHЌЌ8 h@ (K XX a QmdHkm'Pyy J'cMHAȅrJ[h` @sa` M**9  @TЅƘ|QX=;Jyt) )$@  ppP0~6i R ԓt;[V@`mHJ's(IȔ!9JyS9i$w[9qPdY)hH"DB)Wɗ=h@0z  SNY00+`^ + (9z9I QpZ0n@Im)ImiP n` P€ #yp 0 ` (`p ` +ʠW",9$ʒA Q)ZDyӡkmfAW>OUq)DZFzHJLڤNPRఠD*y  P䠥y4ʐi e:xz|ڧy 0*L:bъO|8 X1أWLwC꧞zJDPɥ 0@fjj Ҁq:h@*` :Zj 0 ZLu0WcQ`1)JwEڃ *jz єɐDw*gLɦt) hZ@:p 0PAt hN~9@ 9jzi *qJK@ @!'  K,K;!Kul 5/іXkFSlUPSI ` К`@*i@ QImDZɺ۹P FzYtIף„ltWwS*I"LKjKPbXByM~JHjquʹ\;'<ڄ8 E[ Qc[w!~ۊ~]S!; Şʾ1[ zX҈n/ы8GkVyDZb |G-z96,Nk8݁؈G:JLNPRlki̓;)c% |!dƼ;'<ɨ) lӡ H  <1f/܋aʧS[ S]ńf,j`o,ϑ ͰQҊS @B=D]F {/]c'<X[ա(pZ\^BMNyOdiBϖեpR ֗5- }6NG)ϦׄmbMds3-/ Wؖ=a0V֨L٨R}Mf%o}٬ѡ=<y]֙7'd+} =q19M)H4]]ݘõM=^Y+[Pϟ'm=Qݍ- oJ %Z޵\\M_A/O06߭ }MQk(n ԟg^ )t\1L.@'Ⅽ}kL<޽ء= X@B3jmwA]NP pY]>Dtyc`_q a [NuN؞æ]c`!Ǹ }>A,]]ܽmaN ꢞ @b@ >~,W-ϱy^~Q춎ea^^2>牎pm-/Ar~͞PuרNn>tmYNMO]Ӟt}w=-N ]X~/_>H~srn+/M[2MN7.4Odt*_[2^~ LO:c~U?]?ʥ}Nz.Jk/͎%1_yNi*ͨ>#?Vc Zy޼n~!N~~L.4?O_?ߍQp~jn_ .!Aȟr/@?ҏ_v~=?Z{)7h $ .dСBg&HŇ5nG!E$YI)UzLRᖁ0eB˗1LHJXqE|@.eSQN͇e 0cnūB1DsP!5zcZqΥ[nɖXrY؁.AlDzcȑ%OΘw!|}k$!ڞt]6)eԩUfҲî_"dl]KkoS@aUoB4$&mpٵoo f~kzT0jC01l=j[CC|,`' Zoj쳹8DqG"1RH&*.! ({rJ*I ƨP (#3FnJ4T3*K#j2@ĭL(=\sO>{ls! &;\#4ds! &DP4<qRRKͮRK-)̂tPwT\s]2 bׅ ~3sT]U1oWVYHdE[4hɕ6.IFɸ]xr]ڏfxw?U}{OVyUڣ[bn Z`AJ1xdȨzG׮&M>ySZy*~aYa3Z坋Wc7!/gi@i:>!V[҆y;Gvyl M_72m|n{嫛Wsopd5O9~\;'C=[˷|s:t[q;fVu܁=CcPs75;47=⏗{x}z!(`Z7IK]$c|G$Oןi^>Oi]8 PQvk[`R=|#= $H g֐"dH0H_ cU ZdVa33q9%5(C$vN( &Q!y4ȝ(NQD:4#ELͨ.qW\X31Ug)č,+&G@&cǻkw $ _8 H!KF|BA722g$'1DLb)(-Pf$ I0hRD~P1_04C1}VR,RIg^aq9dA&7+̇}D49MFRt'qG`8Hs| g?L"o5h6)̆\57dCGǁT EфC[Dt#NQzNi*db/R!24<9.Tz Ogdz>j4-ψJԡa)\ԒjFh#HkI:VUQˆ*JJ@m•:%D*FB&m!Sj>JiFK9:gBP-d';ʊq] g2?~Vq:΅Hi $VTkO[U? FjwկFϏ{\UDXm\B7q MpXVh$s;6RWdF\j0"ؾ.xx"ܴٕot^6;me[IlzQ pL|!cJ /d;3͵3J{V-/~}AG)ȉ'Yd#+| dlC!2GR /hK6\Aeb#I8/a,1Ce( K;憼y%b ] zjB2̱k^e'X[`{ەUKc<7{C4| օ׾ep';ҩbnDwd:"q_-3 3C|o~BƦ}ke{9}}{_pE\g> exWg(~d|KM>i}_g~?$p`;x}kLP Zh=[ٳ=ý@ @ @ P?@@ AA;ALAs4LbԎ~K|`@[5D8V #DBA"9-CBiSB(-JI ‚„-|AbA8k~Sܙ3'Qk;|f6LÛ >k9l4B7a@,Ad  {IIACC?fsDL@C3b886B,DÄQ.;,R܈T,>4VhD;EH <$OsD34 YD{Q#҈eXkTLr}q|DW "…x4GKEƅpxbD4Ԅû7lm;4\iGAٍ^T 2SIHZqIJʬ$ xIʙD̽|I_CXǺێC: ZʄXJ ꚾ˅UQIKTAL\Ll̥ʊHLaD"L'"ijdKlŶ| 2dԼkK\MHJ\׼wtI?"zFz+3T/TJLsN|KפGٜdɭԕ$=2Ό@͇5DN;JēK:};Mr,ll(̂" P iP|\qD:J3ẏKԸ 7OT"̇l"mQ}뛙 :9E)OϞĦϜ|Oj!"]•qMhPx-bA<AR7 RغN׬%O-OrNd -e -ăāDA4%lk:81d\R(}RK=:ոQS5(@b`EYMBMV)ӷԈDmӳ;|j#D̈l9ҌS"q"b-Vc*iIuE],I;hTU$U 4ԸB Յ@#nUaeZu c}Wxwe+yeeW{EVdzDŽ Pe^+XQjeE ԑ|Ss=-r}ObWXXX Yz=V+*Y)V_Ѡ_Q,M{S ̈́2SU.]^vI/F!f dZvEHݗYeueVao`I|fHcc]8ܿ1N-dֈtffhcqenJF mNz*L;Je^KpfQӍhdVXU}<֜nfi`pfո܆.u&BDwiFje]N mIأ2N$i.iE !b_ =fyDݪj]`oDje_Zi^0kX鳦狉9S너kԘFꧨV Whdyfmhlo^ǰ `Y06{o dfk^m-Bf%MpoצÓx9ev&n>nN=mnn~nnnne fnB%k$o^ Έ QS^CSi ۑ^gXoh4pCo@ !,wM HeA)R LÅ4Xa> 8$Ѣ4"d8Q*'P1bD'DԸdɁ*s`)mr(HY͐!ӆ?YuꔵW{J :@W=Qe 5|xTɄ'p.| EΧu RaqYR4I䝝wj]qNolڴm6ȹ-|H+'`yݻ[7&B&|7a":y衣?>]^G}wDL0ׁu` T@p's<aA\>)0p߇auL!W/1!塈O.!,U(? H*48 " Hd"†PP@r81|&Llcā!rHC#!F4 Ɉ 8OB/hӗPstM:HpH8e,L6 3ĭTʝKݻw(iA2M'\´SaMQ[S򬸔` 7̑ Z)Ap?& ܆l&6{#a O8/eȓ+_Rqp[:bKB9[uq+㫏*TՏ ﳉԘf܁&x cMdg$YxM(H 7C=RLaI!O x3mדO16OI%p-v#jc2!OAIv(ЋnX*ewl馌{݀qR t$=gbSIkwd8ܜ>[m])'k)JcG$j rpO(SY_⧼YAwy Lr72?x'ӈG'@4p~XA^>@pn(A ?M!xv SA@9#c!wBЌ  `F%-b!}#H^"-19@*J2fܤ*7K1O4ldq^1!Ԉ F.>4F [rn7Oy|%|DICP~„%1h!ĉŸJSDC ѡR qz^,f7MPJeC ωȬ!XQ 7dX(N3 2ZT?Ld J=ȳH ϘN2y֜G4ohO˴^vmg{6v"Zcva2c[w.7lEڹfd,n-;ޫh7TXS]9Elk'dۂsc<"Gby?ZGrqxw޷mKwƷ-zװn~;`jRnrt8Cr;ڥ&wP^?wozŦ9uCMfwه| x v w7y}VwwJ't?}_v{'mvu hb7fx (}h~Gu'y"@yu7ozeiA`kIu'hGGGl'fvaVXav}Zh9HrWB6R׀Mv$fvYmyM~ ivcozd{cӇ<gQBrBN{k'e5qdw[lgdlj̆urFr7ĉ$fnX'tDT3OgneF"Xais4nl1WaXSHθsxfCVrCfaRVah`$UxalȄf؉cjyM$z4LD(z&P8E?`6rc!fgni̖AΦҸ!=>)B۷T$bJ|)Xlu(a"4O8pU6*nBCȉٴ艾H;HGwN(Jr'dXNib"PH^aaďy8A|"wqHgN IიxHHRo阁W!ɕ-J ԊRْ!٘iDH6hX嚟Ԙ%eǨH[?f陌[™y)H)UBcdɚ(2D!s&WkqCv:F49f˸[>x F䚑RYIx9s9^!9bٚy YPF:꒭G1yX!9csG%xk ѐ@"{km6?5ÙJ= Iĩ#JS (Ȧ#ĊĆW5F16oKl!=of|zn)` j&*r(MIXa!@縋?a2- Xfhl#GdDC6HCLG5V[cyD56k{Z"[ ;$K2{ [{6K;;۱-k"T@KGKI۴1;˰k"@K@= ۰ @6BUa{)[+K*kk&u+k! ';.˴۶V~M+]%EU ?˴y;_{+5+uKkV;˰ ;0k{ 6l|{͕hg[]LO V4EKBk;F-M;C [b; w۵++;;6K/{K +޻ Q7&GVhaN[J볎;E+;K-[" Lk%#Ջ;,B˷1;=['{\5&Y{>+5khVsVa3k,n[ + <4}]6M2MB-JO=@  0?7$O[:j3VzllЧp Pvz|~׀؂=؄]؆}؈؊،؎ْؐ@ Qi1g|hʧoM = tmצm ڪڬڮڰ۲pٺF4 hnʇUjVn\ڧm׳]}ȝʽ̍`B3м qk[i= 0]}=]}jh=4d,m>^`z=CݼM@iݿnv}(*,.j{'hp۟M=C[ ީpJLN ˝Mq=ܦ PF.Pjl.>`02mMś@ymӰAta09KS븞뮮2w29np |GPק`yϞ`ꭎ/1붎6q>iMof`gsX؍h&ߛ!p0ꀽr۾ 3>>7*2 vq]z Hn.N5_.&>?`KpП~E0.,o`b?k bɑ<=QA 8zmYPӐ/>? 0?O,6Q|S+ ,qT9E$?mPSDQOu!@Bov[nףL;SJ=,XGrUHu%0J= T]2@[ Ul Nq'7-O 5tBhS\ ydQ$&z܏ES'S`K4i0USMէ+Sie%J]Vz/!BcwMCrp441F kTx:k'odK;"REBWG1*kɜ&ԟ1+/ {i4jsP&&xT@jpXB3`j14il)}wߙBio-9gGx1.0S[R``o{|7|W}w}tL3]'|jՔg%E1 Ic*M/RJդ l{`-xA fP`Gy~dg~+%lI x@ y;bD&`}C QC 7壄+@&+TRmrZ$zׯ(( bxF4Q3"]ȇM=* zT3QDz\R}\*l(d\c! yHD&RX(X:mIcY%.:ch1*Rde+]I.IK.|RUVy)c\ M%]3LhFm&5c9K U6Jl134L}L$VC3NxSI5iJO/ILM]0PFTʹ;}>PYM,Z^}]1 UfE]RT3iMmzST;iO}SUC%=/ Uy>:*d"U[jWUUcQ$ F*L$cbdP@VU{k_W{tPj\fole-{Yf|I -)8VT CjXemk]Z\H3u=cHlIOBʵ?\mq{\&G%}{gjIXz 57QW>k^*LZ-ꤢuBi*Pa:\&y_$Eoz^"M_Eo$.m~!г|J,8\'Es77Νt~ d a$Ditc'tZ-@)rlax~4%yMVI7zVܙw'>t hvEbW|=׵NNYw5|?.8MB(۸w}_ `նL}-OxŔ}|=&b{4Ozo^1|C_O&ے\g[ONqSֳ$!65ӝۼ? ?s9 h#`K@ <D;P?@ ˽ \ @sؒȋAK3m7.< T'(4C;*%=(3B7 0C'ļ1;LD34ӳw <@|®kqA CEÍj0@8=CC2DU(4ly D7@#ZST\E_V9ԶHhKID]_Fcʏ; .&[\\]EDFrL=DqLI$,<-D5ǜGIܖtE%iȑL=f0lJ,/wA> J'ʥJC 8% ;!Û䖬Tƹ<2`||xyrC{G& LmLq+yDL\ZLƤÃYd–y8̼5ϬMPL\̍&Y[YȣCf|J\ΗMdLUCK7/`Ǎ`tK„KνMͳy3hnT>FpNϕpNu3%S ?\QTebSU_EHXQe=T`H=ևhmfSli $YD#R W:}ѕvEb ROkUt9|`W דpWf Vw>złVg~ H-X{Fq}Vc`X.SވhG7cV$6dZFgaVeK a0faf3YeJFfkclfG!f27fkƹ`fgaf(PqdlNg8e|F/bxgf}fA\v&}~ h 褱gge%qф]-X懆hz֝he\·~%.h_Եnf/UbN<}i ii:h(7i]8&efo5enAg&h~&>ndjnd[HjiX۰.9] نjNc if:/붾fmf>g뼆 G>5~N] ǖgg*ꝾlވNވjkfveF^gmCSfmI {f n8kbPnhm %f&V@B&fnxk`iPont3bmVo%|`pg4OnQq2o5 ?B ·~ o7m|@il/PfgkqlPe"7>d}pNn$kٮ [fNjaf('_ Zkr3w+hp2an0߈Vt1s;7/]n}kg%Ɔ&|tB73FNpGo]tAt^m=?uoƆkxJWuVGC,tl>χX'W>uXq v3co\?]ti;5fk/mχ? f lvZq76O\E7낡gvwtqwRW}w~wxw\h'x?nVqx"owStBG >FQoovoxu0χ'e~uYo&[xq4?jxayoIIIuzz17ythgZQXG 9OJ8xkop%zP{{{{||/|?|O|_|oçȯxnz9v{s||}}/}_|||ns'es]Pӯ}ۿ}}}7/sHE'MagWvxs~~~j~$Gk_Wqٿگ~?Oq؈|_8~`u|,h „ 2l!Ĉ'Rh"ƌ724W-/1bJL$̘2gҬif>n5uyZ>]?I'ɞJ2mt2eR,֬Zrװ[cvWɞm-ܧ:.H"K&=dn,PK[-LVk2̚7stI8C<)d>ѩe<̒0_'̣+m7Mɔ'_I8ʗ7MyhQޓLfʤfnܰ=C2|<:ҟt5_$}m݄[N'PX+RXp~U&L|zTL$IQRM"'91=SY t]V|=W$HƸ$H1ASkyI$S≗6'QbDRdIy'y'vNFܝ`wj'>%"^q]>45 峍x`)[j49ӎ+_@bv+r>%eDUg+&iq j,hb*~8 لi:Vʔ*~kA .갏E eSZ}-jl0A;IzS9}mL--;ny!T6t(>)PPNc\1Zֳ<R{`ҩN5I$-է$`}h3$xfs2T VtDhWQIh}_+IT+MJ0aŊjZKUU+A i$_Nf*%'>!DQ::,O]3`|lIMJ8b01 hDf>i =kD,$q5uD(>= yiQgtI^Qu[qRYq Dnd"Ks<3];q]2NKv|fQ}R lL*mir_ծo>[ vI ܓc@62IJnde4< 4&dBx^8DSyq(3[Ŷ'N2\ g5#$ Ld(G&ɔYeVk2L KQ"h;IɼnKLJ&,l5 ׳_΁5Yg31rmBgO)^2A0 TR!)cڝLOZQ *-L9­g@ܙ94L۴\7N,ugoɴ|m{ꦰ2͜]=gXָ&wn{⛉Ti0D̦w\fl|.uCQߤL6ڄ2̌*%$ϸsO\݁9F6JΰQ*˶or3+p3\41[11z\4GbMfMm橣˵֓~J^2lY`{ź8;-ǝ@?1m,M131LMr뻡)7RX_{{ۦesl {QܓL{<0:לzȞԤ}Od5WxB&r1[̼Re<]D>`CF_LM q|q^`|ޘ[} N!xLԸ[EunM`m!ٰ[DmFj !M[^  |n}!x̚y!~R~јԄX ݡgX!59_=]r"a !L|Ji#BHS"\bu)EYp"a'jmkJS6izE6Nde%ZL-!dpb>4`nJL\cn#0DQݙL L(#3jb,;46|#Gz 6c R6FD1S|Z楛%ZK Nfe[(T6D „W6L0G[$_%@B\edNR6l"d4fNjuFNQe&k&kƦ|tl*i6jڄen֦fЦopbR\}%"^ao't"pBҳY` H*HH> CHJQ`Ç+N"Ɇ&AXq%F)]Xʌ/cRH"C"#6HRD!8ZqQRzz4oF>Kv,JՎ}vL%Ŭ ٓ-ҥ({}֢RA&eyI0 Â%F$ޅ#KLUmRڕfĦ d&ÒgAtjsS_47ΒJ]Yqq_kV}zֶSR5rϠ/+-Gך-;6X 5]5TCNC5Eτ_ΏqzerZ!Z9ٖh}hWmTtS% FEGVN`ghPY{6SMAC`wuֱ~PF)tH_FA&_HLUeܕ;F㎻c}-G]U]\lQ$G* W#QSX&hAuf"U8_>rv$VVínugf)*B]T`KMO7} #Ovfgt]vwlm7Yo&U-g^% ֳ?a(Z}ѢaUsLIQhƈh Q(+l @C[WlSp>g}_},$lrd s|)0,̩62&<3Dm1kLG-T [V\w 1z-bIewzlGm[txvޒ߀,t$'ǟ޵Ox;xgnyߚ.RKA`dDzFdHTA@FĞ)HOtv{˦T`AE/)(w@w (<O;T<O{>ЯnI5w)vkRH [=u{!Mz]t;/m  ?T* dGn~0^LAfak]: /Ԋv-}c 8%OaH':.vŋ0sD?І]Ih?7![0v1H 5876 ! YC5ъvG52x JVCdaD"2#2H=t_i2>,OLDEeC]1 Et`~p$"E9*X32K%<"P~cIA.2! -WFX*+>$xtܞ倘MZ4d Q;`;iX:.tzg 9lj3LHg~3&2LEPy!l#g!񄸳a){HA %&M@3AOP+e 󩿃h^ՠȾ>rx-`QIS"&HQYA&/[E*R Dfؤ҅~t]ak:v~OLUgW?I m&G 3F'MHS*AٕJ h(1*m[0f!T\o)S'\v2$܋#b[Mx^xb[{=V‰汸Hkex"l8+`Uc e;%wl%yS<4*pWU@b\T<ʒ^N ?e4fэm]-GҒ&nq‚ q1X!VI1d29^!y -d(y̓y\c<@ Te9ǽ$rX6L/6{y r4U<7cLRENv :An[~4>˜iٖ6VQ_Fz2laKi2B&[M&/F| Njs}M6?dYM { ڙd}|lyƀF+I:كNw3{kyW2yҟkk uU~a/h95MMVn' w[n+s=~9ymOS՜nWW;#0oHpP%wknr{޶tơy8IMXJ×^暳Ё4ŧ7dw}-ނ&ܓjǜ\5ނ{B2;5u?ES?)?yJF>k?w~YB*c *$]=}YxK7=Hz|ro<9tWAŷ~wBPv'4'jNEyBDmd[Kt S_(4>UF}ZHQ\TO۔S؁Ȃ4 )E555&kUSӅbBX:6;)R^AgRT`aAY؅7((T؅W؀NVx=`o؄nH\ML(QhPNZMRwxxi:p.rx]؆`Q(kEux>rRu^XSFt'#C؀0X9BThKZYFȂiPHxXԇv}X؈WcHXr8?\[hc8[XHx(m8BX\H8ฏ(%6ueXIY?LڈwctH膒84'uxԘ% EhGh?)[P'vLPL8'F_;L@ ߘ[[ h*IHxet4ÄbE;C踐xiŐI5 IXؗ(Whى]_%Gy$Q9 8U}y\5YePdMu?偒NAS?mX{@9"Q舘XL;H눔ehC YӜ؝بgɌiَlhNMS}]{tEK`XQx&H`+^t^(f:;@=١)zR$1(ʎأXxj؉$=1:뙢7:8J .ًAVShJ1.^` )D;&ڋ/J@;y[ɤ$@RT@P' ,@ nb QaiMJ`zQZ* iz#Z&zvhR4l*)٩H:]zpʤڦlZjʩO &ʫ ; ڬ-ʢwǺ*ͪR`ϚкQSx62JiA8 ͩ=jOJ*:uzj[(ODz ˩ 믝z#JJE걼ʱ h:zFj&Z' j*JT:*5m[*G:[NHڪ[:!ɚ:z*Ί붜$ )ʋˋ![[=jKsˈ={.ZX`)pL۸ĺ=; ?qi[)ണ𴣐9CJ:*Z뫤z{jk*{»{ k˹W{&;2KJ#;ɪ;k뫜E0 0\K{sEokJTO ) **Ll< < \l l* L'Z, 6\5 (<+'<L!3L0N, 0 S\9,l|>!;]jp ` p t\v|xz|~ǀȂ<Ȅ\Ȇ|ȈȊȌy,F*UPƔ=T]V}Xe%ݐ3L:lɻ Jl N O-Y]v}x"A}1IKEYi^)` ة@Ǒ p͘5ٜٞ ] jsKTȣǩp @ӀtӰP7=1sܝ΍ !ѹؓCiFԹ}mM@@ّڝ Ͻν=gݓ`Cԕ|0'ƻ prM=ߛ"! z !Q FڧsQ}{|=\=?AA&q!.ΝMq^e݃4E*|ƗmY m<ޡ5pr^HTb!p| Vn00L1+h6q]Pٕ>=m` @sn` ִ~-}xTNq^,ޭK4.Ԟm؞nꨮA@`` $@ qQ ڹ zeM3N*= cNޕ?C.@A|.o1~`խ-*`a[D-6鎝BF? p  n^O@0+` + KG_v&)t脇nT mXg>;M]wn p (@TO @րʀo0 *ָNzO0.Ӆ"*[`<[Ӛg=yOV&s86'鬤8vPyUx2gDΈ3exQfhGM~Q\;r.GƍaiHΐ;+QTGH=|b|&_Hg>jIZ 3b"QV4;jW*r4TТ:Buh5TuԧD%M M&:Sj{k_OV|5RN1.h(u'CoRSFԦke-{ٛ&,a&PD4 C0ƪ^1ZZV,h>! nldOTZfe,󛧺]odltA(Оs+Gɾ]X~ީF6 _/k+y>.8{G֊F ck.v;/'uO*.C\[9v2?6t6Bs?<@ߛ:\;@ t9C9? 4@D#Zk.@@g;Aܱt$~ \¿`ӊC>,B@#tdB/l°z'̇s;,T;B8ÞC1ϊ8?l8ĜpB:̇1$Clzo+<77#DJ CCgJD7B(J,: C(ɂKJ- ̟$DS|0DD|B`Zˇ"@|CZ,FDL0]TħXM@Il=c,EdC[#< @RFBFLahaƱŘxS#Fq4ErB|HGEjAd $Ea-HGTC~.G4ȃ.%\H&Gț@ު*@IlHITǗ~THAtTJ.MS5tutnQt\/ƴf K!}}c9أXЁmZ(yU؅Ն}XTӜXPnX X͉X5-r;Yt al]]YUW7 ؛UY,gP_ ٛ bYU%M UΧŠQK"-N=5ӔZa׷ [B٧Z]hMV5Yڡ=eg ǼXQը؄\`-[ui)ͫZͰ<-|\uRSܫEE\2[ܿت\-0[;}ؽAڭs™HI[^KRq*e^&[í ]i ][1\ ^1^p]_x_ 5_[_Uh_*\_CMEύ ^%`CNY-· eEUN^ &K3[蝉 ``va͵U[(C("FuQ` vb͇bY`yai8%b.,b~޳X|_ Fc͈560ac0NQ_ɍL >/td df]xݘހ|H.aEDJYbC~Znax&h RYDMn\fiH>e[XeN>cjb62R6] Mg_Zl|`jHle nfgΉl8jmlԍ0gzv ] gg8c mJ~~\aUL㜐|d~ geii`膶?~\5Bcqh钖#dlx|ivh7U)hVj.js#"fIgpjj6QfDbzik>~۳^njc v:.hrk\ vaΉh@VP~b}Ǧv llF.[lО :lMFԎ ;Mka}mن lq~ Jh#ffbȄLlvhl(n.k(hNnbg^i.lgli6oB No9foo/q.:玉Mnn*kjrpgppٲ$2qk+԰npqp߫o_qo^r9U: !N$w ז ri_+rjn-7[=|r ]MPs=s>s?s@tAtB/tC?tDOtE_tFoCgȍm0Ѕk*WGtPuQuR/uS?uTOts`sV`prwafLoHu\u]u^u_ugukXg`tstt`vivjvkq6 g8우pok_wvowwwT7jqnp&muie eHp0ǐ^]xwxx@Oc%Ne`ya8pVvm Wy btf  dyYw (Pz.yH{ug.s~yyT _ky77zPW{wV|hoƆzT]֎]V˳O{ /|OzO{ljmvDm&h`T՞˙PUIG'X|'Ç|ʇnzoMnoZ?loIwg|ß}w{Vo{6ms F~p?uOzG|zI7 „)QJȰ!CM,xI!ƌ7nű 7ܸm66>&L[LH`r'РB-j(ҤEk2m)Ԩ R=Hժu+U >̔!EMŲmdo0&|2o6)o¿?ܩ0Ċ#ͧ`0'S5rϯ[ vY*ڂEl-|Ou>O$L6ܺw^7U}vZ`ذFX:ԹMcTdJ4_swMl|i<Co_(UR>xvMؗu&BUUnYsiIhyjO٦B:Ғ&0QZ41)L2Ө5 qxes.t߉PahRxtyĨF32UfMLz)^( 朩J괨QΊWNQ2uF+64\,޻Yy%*GOK&vb ZnQ*1[* S*$5[S&Kəޛ/FRJ޿5|393=sZ3Dc3c|B +C RyP!#KƆ}6+|#CiA@=7uۭc=v &aM5YV:ZzHRLd5l (sݥ~άQb˴$B;NW:_h7>ijuUze44TlT+t=ᣮ$bK;M;;__SƮo07Qz6B1vcƿ ( 'ɨ*Ծ }Y8AqҟW6=zP`X@$^6t>!CL`3Іf%*1h9OE>L'ۉy-rP\kmUyQ^PȚ˩-zSneq5@= BuDM!6{. NBX40<6%>ՠ83")hͱc.#R)̰->IF<0tɡȎ2 @fy*IbN$%Y~;s2AHTXh=yKZa$L{V *e~9d*-c 1yM$q_` 1$s* S&2MVvd&g>9Oh!KO?cȥ.KH!(P|(s&4+C'g:ՄJB% W{.Q&5BPsn KUR )qi>3'S(9թoS؎-@%_Tu2KGC:š,%jheʘ<֑m#%TXZO0e\z]ڵN}`ضGi*],ֶ(gd2Q$. ShkwQrkRXж-[(4Mcy*BS"b,FݚبcBOO)+I~W ]{VM-d y˽w#mwJJŶ,pF1/ި\B f6"ˑI?\խa Ja)VRl k /11:qr5p1f=\zdd- Sn W͈9 _JQ UUʐVJ \weN0a Lc΄m%'Wf-e,[UY,%HIR D)t9K8_3ӤMhWlE,AlkP7%BhJӘX4>ʑj5v[ ;zBo;8#tRԓ!SFMbz 5ךkҚm96k tdhW8Sn n/)%^IS8tO.™v͚ )!9ADnQM9+-H~z&6Ty/5f Vbq$!}ٍ:ThOuRqfgG3Gem;#mw;*_1<ݓ(*v_'Ȩ[ϓ)mdמ7c.xr&̗EeR%CEt&]Ʒ܋-s#r=kd OJf(GG_gܪ dcΓ|a'dݯB~?M:Gz#){ksmiDDoS@hxIUJO)i)`["`%em Dr_ɴ X챆X̜u FS$!K\`v GtMP T Gv$$^ܸ5Mt IA<D8a{(T!,]!UX "ba(GA^> AHB(#>b(NlXhYMF'",(| K%n[,F@! )|,-"GpeAB#bJ#5V5^#6fcA#h7~#88c/F#9#::#;;#<ƣ<΋#=֣=#>b2d$cM|‘C1LU>~?*Xr=2 @(pB:6DH9~D &d?:$ AlDdY$0 "H HjH\KMƤN*IFN5D&DQ(n&!Y!,`3A H*UYv=*Ze5ی2STj`U-$yCXt#(VG㐛zo-d֭n7wo5 Zj)JeeX~Qiԛfͼt7;Vu]e}/ܨaꩰ$!Q&Kg*ˤ@H@GQx>2Y0(EGG~nJHPҐK >Q(oLo%._#H*˓D,t1URp$-JRƑj9= c*Eўd8ofJH"S༥!X!gOpyd΁F\3|(a@4GM($dDC"UL?PR.THI+TL%R@Q*`o(gST,e)w)sl(SH3XKJ^`͈>қhY ʊQM5AP]NZb>TVK1yPDf)XR}kGS*աݜ98UR^fRAt*zaY_+ӱԛh:3;yՒs%e6:Pq/J4Ԧyup*UTh؎T (u[R? &Z@Uyzܸug^0Gӡ$BkL~t|- W t(V9˙8UW o k2U%P 6ӷXٷd{+˪bF8&YBKgK@X[ѓBZԧmӹGetG60*Q}Mf$edYrU+֓5ͅe*VK֖,F%hWX"xBo(ۛG2U}$[WbUg.'ׂl]j'<㢿\_`F$^jX ,&$PW  G vbUI'wƟå]]ij_<*ƖK6bv_}|ow.&vwLLh%sk!1a׊XVLwRn%/׃˰Н`<*y@V)WvyW<30هTmk '7<~؃ >ͩUG!->\0^khzmcFDY5SPG\ `Zu}$VuZ}SMeX%EhVtuox\f} fŁ 5d$5Fy'~&DA4w$D%XFGE 8hXe}8`w>_S0Q1Vjw:nX@([YuGօsWk+vhiotDCoUrxYxLT0W[C[ h0$?m[}HŀQF%uLr3QUrbXy4xi9]ald uZeteYޕaiWG~9:u;DgXdm(fZʼnk苪8F҇dd'JXl xy't v؄ EȄIOZ =UZsc8C~'WR_WT0ᨅ`fq^NxmvU\9Pj6h IDžFVe|\&y5Zȑ:/m0YGVV_DT~ŀ AyT$9'g")GYsXHȎaYif`6Xa+م*鈬%D[ȀuYEh7WC"XHGxfxTuW95(\6 N/9$(Ibd&8#YɛbyI\YIUpTȄ>A ɐg*2P y=i\ɜYYIv`j heOEUY(ȸA'syP)bm"*J/J"4TPڢढ+ ?9|4(RIipt(ʒF[*f%od&ĢHɟƢʡ) t+*ڡDZEʠrT=ᄤ`F :JdʞYk`C(xi-ù/:}*Q ;j}1z-lP'}Rښ*ڥ6JV bJ1*pe/vJEM7:z1ʥIsY*]fA'v:yB*}{@jDڪQ`D%DILpF*Ce C#IY:ꩧ*j JICꬩJZ" kuڰ ڑ9u2gEMɅUjC$ N,ʲٲ{::;0K<+隳@kr$+K9˳)kLKTNCղV뺲1v)SXQk.:*xєy@SSUh /],ˡڬ''z*bʰ;kjSڲK+Szʰaj*j:_Z{ 멐+ԪDW,{G"*D ^۳1[`0Z?ڶה)# 4KTji +͚[%k'kI ꯆ+ }:+˩ ;[ l{z6ڮ[ZX{*"0˥ ̾-˶ÈUBui*;+ K K–\ʸ;z;κ6L,^\[_ *[r,,1꺔 }Z|Ą{OL&RiEpGbŋbԮ㇝uv U8Q5/ǃ ^kŸ ƼkyfLZ\Tg +̣Jy,ǰĴ [ EZŝ*Ǚ ԜLʛXΆJ$2%U-~ijwC[>9[]6Iƍ ZΔ+|U\Yе,ˌXZ\ѝ{LKT͐ǵ_ =ѽ<̈|FX+|l|KE,+Z~)wy7E̽Uu+T@У`M-q<γ.m뵁S̭<%a K׈֎[Flb4^6~8:<>@B>D^F.@ Q È(ܙm a ` p^`b>d^f~B.KtM/_T9 Ba `h~>N DrmN*iJMwjkP~阞难>^~ꨞꪾꮾIN~~DQ.2cr~^ =q{.GC^~}ù޶W=wvCEU.oɊ / "?$ oUNK9p8o5?9@ JXwpwK:=$A{~X[7X_7h Amnc)\MbdnA\%\ihpAm1v`,5MT@ !?_gOHϝի - ؟ڿ@a\//r0}$XA .dC%NXE;qǎ!ϱ[I)Ud20lْ*/sK-Thޤ"JL"MSQ4ʚ:VE47TaKnPXЁVZKreNyOY7̏@hѢAt)R%OXj֭ "g\+k)&]Z⺓+9 \ 1&\,V'k)pArpZ9eQ6 8ee0%VVHG'432kSSTR(٘Lʱ2@> ?+L.,1uXb5Xt#C%ͧSl6uby*7'CMrYvuWs>wy7JV^c#1vMn I$xb+܍E[4J;6M`UN1[o- w#iU|VlPA\syguiw wߏUڎhwNX-`8_MZPx{vyo=wqvo,@\r|n3Ƙl?v#K=ǼC"9i'MZPꇥJuʝ돭C{6٦i#JD|$^j҅Z$ Z`j*4i A$Z!O&Sdf3g+cnCp͍$`e+l`';NxSz:dt&vT6ֵD N//'s+m"'8!˞ f<ɘgG=QsDmEdΕ~d,GINo: lF.ӟn#jQzT&`jS29wtB5$8 P*TUkek[VUsk]zWU{k_W}#UV!z,oڟ+ @GElg=YІV%miM[Z&|4zV慙*,FzZW%nq{\ 縚"Kjm>vkVghnw]7\JzHZ,z{Wo}] )^댖MIuuW fp<ה ;jGjs'Zf{^#&qM,/zmL/j*է,gO|cXǝ)Z1Rc8K05nd(GY2G~m2nDFꒅ:e4Ykfs~lxIs%%fhg@ZoC.05&Xɂt-}iv)}uP1&b B#M3cZիfu7 +UMd/t=*j`[i4TLg/S$/Ix-8_OzӦvW媯˿jWLfj2}nt^ep^ٸFsn|[yaee+:k, zgw~29,7S@Kz!5uc=nͦ#'y#NdY+&lk ]r'Ni}E&Ng3=9yӝN鈯HQA ;K:Kz]&rjG,N"{ԓ7FC.fzZ'|ۥgذ-FTpk­g4hu _7^i_{< ^xoɞGCOzX6>}[տ˻Yo3'ÌD,it.޷o ?~.+>O:m::8{Ӌ={@cH?=؛Y@% ?@$ˇ +);F˼s;,; @0#>s¿A'\7D1D0DEY<&/K; <׃9VDDEb40SC$p2>؋L4WÐsb`:CC:/ <$4<`T:XFl\UæpkTtCij?vKEC;`pü.DH΋b`TXG4,}ÔI5ö Go:Y).G aJ\3M Nk &x4$tʑIHuJ4B JC-x8-غ#<>_K4˓LK4l˶tJE310 <>TB|HLVLL$̶,ӸocʔЪ I<Đ۬`lML,/ M##ADD}dtMlM4,<ȭ;Cj vߌNMda0TNhL]\M=M,ω|N`Ot:D<9vOOAO ap|*^OO3KOʹ @@LXO|Pb Pt&;r{R̆)S*=4^.Pp S:5* S`SЇA0epSBdS5u2?mQg@B;S#Rj7]iT:=9LK]ԕSˬ O1e3PSe ҧϠWU)UR=(-\GrО_=ƏMTT5*U]U\M\Vf҈L4JOcVM3ӮmQQl'kԤ{/TV`vwmorѾWwugZYQRM@5}3ׅeT71DO(`pH 2>'̏LndV,086dQ&aSnTnĬWXQNda`MV6OĶ anA]ecgZ68MiY.g~2ʇp~K֙ꕈa)j>fumjV ·e^\oUfX鼀f_6k ٬VkunFjg(`b7f >f˻>$jh~] iV fdi=RnU~kvǖ.6n>Mi֮b.;mľ2v|6kQn`ho&ܽ&0ЄۏmFglvgхXl^oY^wn]nln2o?pMpL.^p nymiب5fJN3]nlGqymq?i=·Ϧ?lqV ;vl_†x/χ1UqiPM+rl>6*0s(߈lPWM6Oo^~G.qloCGl{:h!i$G{y5H9TJ8!tSaSwсyYia)"rt@ύx |lY4MSKB8L2OBXy%Yj%]z%Y2y]0if>¸&YACAV際:,,:jm6i׶zPw' B.ĶB--){jvjLyЭ:c"4VU;Kqz1!<2%|rL*W۲^벫3 I4*aK Rv)Gb l>NF% Q.1|5Yk+g 0.*Ϧj ]r Jl3UĒ>.Bn%eqCRһ&׉+8^waK.}"jTi6DngCGhߥ4 ^8F 8N2:>O|=T sH&k:^RISu>k}ك|KǻwJ hA#B>7 >BH";|8=T @y/dS -!/{Nr<=p5 4?P# &ű7-.lhk'BO+Mra@W tSW xĖ0JY.|"?ÔNSr>ތraCC+B$$K2/t ąT+l]glrκ=wbD8HFO9R(A$1Y/{!cCdcJ}ODp0Xy:A&F]͇81Ф$FKZrtw2Q\BrGITL7=N8m|/kbN02~ ܆̙q&'D"ɼ9|&_ 9Y6QΓ!bNUF QS0i /'љC4r}'"ɘK4)gr!ASJ =JP{nba7٦.n:Y›ZKJ02H! (Jf*Jfpɼ[XR_J~ E< q:*^z׼N+!謪Nk/͈S̈\HTב( ih,29ijU[SK&uX_Ua>+O6SS+\v!DVŰFCY?R ݛ"Ĵj]jûZ)vvme5\O}OzRVnDa;*0e0 AA!֭lYېVx5Ȃ5>yus M (uJ8 ؐ0i|$ t_K Xֈw]t})bYտѥC\Y%"s<[ zIkT@6vblj&C>)b[I !3n|X[xǙli!Mq>2ӼqqFQqWQ]Xu)o~2HR}=+0M]' J/\gHj)95ەuvK>.O!"wH kNo݁KЪ%IgCB\bc U8;WheZ=ϔ./ͫɮJꐮ!7Q;GozC9 *3euwR2sMMF6 >]ۅ~Tg! 'Ilϗ$e_~ӫd4jS;\\/Ymû١0R\^qĄD=q]eM@Q11\1LDaK B@dAD`bi$ C  J$9EGlqKpD_`>V!hDޚ5 3 .DB`TM1C@ oX%%.%=5 "0Y[zB !Du D$X\MNC0 Z] !D _ֵ_C| D#ιS\MP0uD`JtbCS!Bf_fYL؎, 0ء= ?N!2D&LI"8cK04ې%iJ0ݭI߈0Fb)*ٲPL# a cT@@\  8úDF$ W\VݚX^E;N2I#Cp_ɁH>0$="L BEN"D_\D۽Uu c%#X5ST-CdiJY`1e9.D: evId=%i\/ޥJ1e]ֈ필QDC]BMEm8L]UI"DڞDI$.RE:.WBˑ)>D.LnCnrn.DS.fCJ`D-NҦY*D0BoJXRoDf(hL^/ HVJ///fo0/0'0گ7|kW4&kP0 ax0HV'O@ck/$HpJ. XCpTo$ul0ZpT1 Kq}R{>$S:qT@- P9&p1NpK 3/C&ApD CoGڰIGH8n!" #72}ZGD$7D'r' D%Q(kL!,g;: H*HH>"!:,(E bƂNbG) :HrcG!J4WbφG*SrPmHtiχCTț$:F\];W7iW}vhڻe LÈ+^̸ǐ#KL˘3kVxϠCMҨALͺװcV"6նsͻ N|7ȓ+_<УKNu׳kNËO߽_Ͼ{Q#"Ͽ(n& _F(VhfvTPAY#qx%h,H!ʨYԨ((P?# )D@h$'8"v!#јQxXREYBbEZ IEBȘP"!s=hYQiFbX⋌ꡖ]'#XP)Hu IꪬFj` Ad+=2F k 볁 `l`%kUЯb -J޻ʮki:ĥF/.Od&/eӊoVl{'41ByGw>AW{-l[Zm;D>eūJ;-4:|<u)rY|}/F>psL;s@׿yM/+TX2%0HK-&7%.7.SsA!Tf@A:bLÁ0G4*#""& X@E*o܋6*t-KS䄸7Qwd[|EMvvĉ^hQ{#G/ F#z7pc|1mcȘ-F Q)#ȅR,9Ȳ>r FAYv)b.(\-L0_Ґs4f1LSl&3æLb:3sb6Hifr/9mRA&:(`"f/ӹM_R &1H~R'tW\dЈ>aѩWz܈ [7 >DCY;+R?1!*xd* 爵emeBsk~GB֡RxBV:1N6d[zǏ1|jPx mptF7"‡C)X `7[>wp͎œcl^+aא|/{CP+NAR+ӰF} uAT>t VamwW!.eqk-ȑsO-Ss0;6H ^u;*3qzp9 6ZAb}B0Vu=%uhsF;ъA>/{=S8L@vc:aPP a XO|evEOS7 2Zj8= 2x1);ЏnV!ٰ8 pp}jX|? r(#@ݡ h2`pb *tw8}$Z v Y 8uPwG{pq|Uw6"Xt(*@(w q,@07{'}"~)ЃCXw//gN^rħL P|"C7 qȖ %;؃c}& < Eȅ<@* rrrMWwgR%iU8bXhg…g30yЂ}V}g>}B~th(~ggdLXw1Z(uQoUW"B53Sb}Y}_~PB쇊 c'{hp 0]h脿uG8Z!(btxD ` x {xxGGn"7z0ԐBX  Pڥ)iw8hz[ʦ榄8sJujhʥxJ_z8٤Jd*b>ZYh aAaa^Ч:q`::ZUzYz qѫ!zYº!Xa!ZDДʩ鬾>)B>MiﺟzJXSq:y;:L0bК* ۯ [Ϛ:Dj4 ++#!+KAZ3 5%H6^g10 ۩D{1=8A8NE6Z|䊳U[9zX{/Z Z(C;ҳ2D*l۶r۴2[v;b!sQ_;{˷RsySص*eYJJK´йR kf٬ jẻ*=8@ZkRàK "[h+) [ԁkh ({+'[ 1\a ápݛ:'J<ΐL!i%l ,.!=A5!:2<[GA<+LO RShzX]țB]=}% M+>P10Ё@y!^A[A.N^a Na~Qn/ߎ P0p!\ o)/ e 共n ]@B?D_FH@?#O!A V/mʐ ^`b?d_fh^jKr?C@QmQ=~NO5/Rv׿O; T~q凁!럱 AQ !_N?/ K?RNoO _oan/>O&MW`A .dC )EDbB5nǏ$YI)UxKY\Hi"Mp^6m%-Z e8H*ͷSQN]ZNY: pa&P֕6^[F)7.P JeW j)Uڔٛcɚuxv1ȗO~iPfWQfmثF˭Afpl=ukT&㱋I{f=V'uѦM{leU 9>=GtM|v3? <HP ,/:8T #CLC{# E2<-,-D rH"2ǓSɍdΡjM2ɝz܈:}"Kˋ SIp'R1Mپ$s%/M*+u!BwPYEwW0cCٰK7a]8Zr8!lٚp_$ ~1֖9C8Vt!1yF^N.$jS#b*{wafSŤmNm3ckT,~z5SG Ju#l*</h/ҽ7"f|(GlnY*l2G#;rOu9vO{g o?!H}!K֋oUN rWʶ|[Jo΍? &Iz?_!|5u$vsHL溽n Q`A\DK"28/"Ys=-ZY`BJ*da ]BJBCq 'Ƞ]o! E>1!S[ַCLnIaCV-?l)1q#G9"}4az=Y5dAQ#b$;H$d!5tѐ8Gď1!EHƂL3i#:71e| rM""I\i"iyK!$$.kYPR$wTF3\:lKɴʤf5ykR!|f7hK?&3$g91Mh$5`'3D 9CyҲ#ĶrR4 !,h<: H*,H$"Á=̘ǎvbC 3B(ĎK A$ȉ%'ɏ*A޴qPF[ĈfP*=DH4'H"W>QzeY&R:j ʥF63Փ^$ǘ-i]HÈ+VYQ1-@.ʸ"8c.Ģ@'x#WY$(&9wDx8)hj$cYgB.jn)F„vmQߦʛZZ+a+AZ*ԫ@ϰ"T6, *ӹ*_B֪ub[|N,"F8,nn'x,BYʯAvt j2e lAW|ذ{o/: 9%LXl!#6pr"3cVj=_hXe̙G} :M0)֗Iyd9#Mg@lmut=}u}7ݦfw>p#~8[؍Pzt&xo dߋ%ks4ܓ6TdwLA[k;Ő:G#fBf@\(l<'ъ,7?=^o|C1zڕ}͵k=:kXs?Mz>+`$AhF#ڣ^KaJ|ۃ%< ROt =/LĞ&5lH;_6EMoRײf7rR P 놿\;mBZZf UH - a7 md@7Fbqkc8/4G*#҉qIg|`!F{ (:Nmr\# BQq}chE|,2 ul$ h$"v"8^r<0)IAld1d&$4La>әlf5LNR2t9!:~g}3c'=;N}-Ʌ99PhBC0dͥqi+'nlUXC8=,f^OôlSC 2큜@H_ Ikf֖^ n Nݵ=z`[!7-ȑsFPCFDK&3πAvgyWUt>xk` ;88\@g!yMs>}dVD b(LSZ8eъȡ8=|%w80S^e2V F1{o2vw5dn2v rw ߒLGy'O[< 7#GNaQwV4ȡXv2Pzb)C*8;_̎>q3z65d>sj#Dמs| A7|~5m'<_ƗGOS?@0Y @kg G{){@w3j}wh_G9~~)L *lll̖  z (ʐ .7xs0 [r׆#hu'h)xixx( Nh l 7zGDn ؄OPv؈8ox.ׅV6~i(dlBP-9y@ Gzz@hz|wl (Q|w @ a}&o}Y}5 P)&iщqsѸ-tKtn@oHpt0w puPv?hZeg@ tUhFͨ"|W8niskxFcǘjfsE_,/1e]pi,6Nʐ Yc!H% 1cs n ϐI 8 1oHt%kHڨ_sCq# IL:^ؓaђQfٔhIc׶`n0e*\4ryqqY]8Yyٙ9Yy( ?v]d qwy_4i[ YePdYYUIқ}AQI YɹA`dYvɝ靇-3&y艛ɚטi ?I㩝j)0ŞQڠy 9Z9$Z&z(*,ڢ.02:4Z6z8:7ڜ!~,!J壇ўډ IZhKu_yQJԙGzUj$X]:_a:Ny v7~k\:mzo )9k* }q:iѨeD]ye:~1w!sQ zGs*3j IZ`꫽J~QZbʊM*j jX̊jZ*̪6Z*hj_⪪LyA0PҚQ] J+ ]k8[_ !Zzۮ ۫`r !K&(+ر8[3] ~ƭ[Z-cp<BTk=Z{?\@Z,QKaR%;Aа:6Dp sK\S:znF ZA[앥 A~G۸Uw۰J[ kr[qj*D{2kQDй,*|k+uV٪ qk + w[8Ӻ˻+5h0Kh5˥k;Sf-k럌ڛ* z+{< Pf |+ۆM۵}aΞٱ1aےMkڡ ܹ}܋s)ݼM]$ݭ]Mx|]-}z-A̬ӱ߿}پe;kڏqߩ!z- ֽm౯ p}s R|& ȑ+1>gMA >~Q;AȭD~ J^Kξ  I^UξOlX>e_={ckpMk.en/q:s> G!}.?>]tNx.ΐ⎞G>`.痞Z^ڈN =ܦ T.ᴞ =‘qT.;!aN!Ȟꢑє.aNNqlӁPAK "aܒ a",̎~oU3  }??I^QʇAɠ"fM ɁN3o<Np(6Qŋq  0uiH.?ِP_NU_u0!A&?Y`f/[ylWOl7.q woivшA?0 0oǁ Pm٠!_O`@Ù ;onN/ďn/ o_/p ?/[O > $XA .dxCn]EU5nG!E$YI)SwKM*?FI&Bl*Һ(OA%Zс,v0VƇ 弖RYnիIE3ٮ25ZΥ[] fӂ9R[aĉWtmݵ ZUř5o|x/ +_]i??{qјSϦ]/M7Yǯi&s_ 90S̡o]|󅧄=qr {'к^d]Z3YDj':~Sܻjm`|{ϸ/HpD&SRAuq?|SPF ;Y!> \%8;rVqQ%I.:9ӭBVB|T;B.O+T^{u`'>hGz/t/^#;cBe\Ў]$A|@Hl>P$PF G|;ʇңm|\C@=y2AԨ|`rԾ//5|_> ' ӣT/Vke 2$x)!Rhq$(Yf^;90+BdJ>"(v44K5+c#8U+caoD)[2AmeAdRYaG6&D[ h86Œci@̈~"7B"2#L+ΨE*j 򱨂*b"K)2DHU19 3 N~AX,[_.C LRT$,Q,Hd*hKS${*T桜L~Lf1(#a_>HqY9XC xo"jȾ8*x3(0LJ\R*yxҍ1?̄9#4}ꨡ$#):mQ"aI- t9i8L&iYjSU8i3aS& 6-\$N_IkHY@|y)ש*d+YyτU4bV@5h"PF+uagcCZd3XK`DkrKp2V&GcXH, MN1Ut4]u⨾K#!QW(],{kَ(xR^5!Q|[c AEW&(7BHAnbA잆\1A2abh".pjad+>J}g#ҟ eE^K!?R( $''Y(F>`& 2نlX^pd \a|ޔ9#j.7)DDX4-rGbCFz)hsObZ>z$ArO"|BZ>̢ulhOQ66RC3vmp[&w}ntN̫{2oJEbou[woBEx ~pg: gxpG\x-~qg\>(I G{}!saMDQ !,d/ )*\ȰC^XHq"3j$((1nMǏ )BT|i%N:uʚO|y޽:w\j-hӍQgOXGpՌ'Y\źT+^ZdA6ƭ~m-Svݟf;m*C*8-jv] X0'GX'dTLEik&;ܺ";eK,LFΞ[q~/vaСM.o[/.{ |Swq]]unu{gs3>iN\9rYzE_,hWxNyjv4n]EF98CG_>L/n4@$P@!,i* G ޳w/AJ<(:{AQ:axɎII?[9a|.41̐5 tGyfNhТ>ӨСDwJEҠŠwyZ۲?[ڥmߒ)wڴk uRܺvk ܻo;nZB8xoF3pZ+ٱc \`!o+-ީ=ryدgǾdmPyP#|̖`@!,be& S \ȰÇ#JHQQ3b4Ǐ C6"c>'7*ɲ|$Q6Ȣ˛8!4p,,bA%ѣ%1IiSA7=JQK2I@UÊL*pK([@kȉmv.CLeWn>v ldTP8[k2&|1i޼8kLhўB|TRX5Ѣ9{gֳ;5\7]5Eó :yoU lgvSGNػyyL5nvʚ[K:9CYhEp9Nt}X .(QBXAH}泠NND\0U]&W5xϊHKP4~77Qc$H$HAvWEN9W"zO;lMC%ab5xiieɣ'{%sYxP9g>|Ih)z=Tji8@Y48:ͨjJ+ jj`:CHejdTzvks;:t:j@9*:& Z+;lg!,r! Gp‡6t‰-FPcE=>R$B%M^D ʆ- iP͊6syp݁s"̷3u~}XMHehA.EX*T*MQe6`YyXwO-[ kPv|{;|mKhcb z+yʗ={nʖUIz@c[-Rnsٻ:m+x]w !,| G [(/Ä &|`D8GEG"Gr|(cHTIpϔFZW䘥S&gVS::dZa :6 h;"9x JM%j㢀B64@,h]*ޠzO$Af+4݆#'&=IX>@!,`4 H0T *\ȰÇ#JHa*U."M^]:!v෎H @>xΊKfҖ3="bi;~y_gpϗ ݕgJo4PFވ RhXNV>=)zh@!, ~G [80Ễ.D Jhp!nHNjG< ɐ'$K U22>PƔ9{?)PB>.5իosTu Yf]tثw=w6\[^5{6=['Xlsc;UYs p|bzSv ·@,KGg];`칿箛_}s-X޺uJNsi{W!,!Gp‡6t‰-F0⻏9v|wr$ $ʇ"*<IE&KQ&%4(BvNAMATTfm_doOɝZl Ҭ]m j\~*^O[† ܺȠ#\\iN[9ѝ{&M:{6H)&D<4B-WckU#;`e] ,<ߺi5|ޝ;> !,': G*4‚>HM(Dž`ԸcǏ(  2cIR̷2\K9{61KhO+9ЃEwrݽsêJje萫ׅU[;-9\=iX|m\]оQkpi9XjnϠ+ w.4{y Zќm4:{W.8ZdVMx7"U^ y8׻C=>.zi{}7 >zh" Ϸnp8kl<={.@!,R( G*'p‡6t‰-|1"ƌ8"Ǔ'5\`亇(c<幗 c MuHO S % @>n:"u:#Ւ:h:xR7X|ol˷_|YK0/| ]*[Q`{53;rs;tuFdgce׭2D-ij~=,ݘ4=FSy{ZsF:B{{[7y8޳=߽wߵ!,k G{Å 8AX"wl|Fvth/4[W͕u"Ð×'|Kpii; FH!TX}ǕjT||:=pJ%iN;-:RNs:{wlL{R-䣨ށbǮ{NCGg1iz5x^|@{w; !,n Gໃ*<)Ȱau JXbs2Fh| ÉH;Tj%yTNe>eI Z4!|A{4}IpN=.5aLF:MiP[ +v# vv Y|ߚڶo%9"K_J*f\΅fo9ۗe˳[gosY6Vho%\>KfeSm{nM;-[sA{[nۧݳ\!,! G\/B 8bA-\`bE3Z<#E!iG2ɏ S\HK e4HR>N"ԩ!u~ ѝ,󩔩A eҔiKv ٲ9RW43(7-E +wٳծ57i~ ^^QE\wcss;su.G ͥ':b|K]q;0^\։7N waE+ԳO./ޭ '=߽wν+!, G0߻*<)Ȱ:%N,X9#n$p!5R,ʌK@>D.d ߽r$sMB24h2ߺwN 3_ԫDIpu^5"T|]:s[ mTp@m%;.=[gmp(^n_= ^A=$g:mİlOl0FNJWi+={?{|!,# H`w֭{gC0mË8@uH]G|?>|ǒ!I'S&%ɘ)*Y͋1sZB>Yb\sʍ'V̗TèPÇWD?VZp݁1q݊-sc\Q#׻6|2r1SF[RJP9{M&oɈ:p3E=:Qx׮M{yirޝ;?#qУCϽ.r}{s~PGmۮcV=-}}vMD+]qvN}u=7=<ï= !,i+. H [Æ =H]Ċ^Q!Î 7(r$ƒ&)Lp%K_Nt) ͚#ɳϟ@)gģ%ӝLJ uUU"E*5թ^> +)ٟ[v]XٶT+wJZ=x& .pK%āh|XZp0(涌4>< _sJsNm7v\Ѝouv,u|q1ﹶOyI= w/X~N9{Gzݴ劣ʓ;|=NG_N8UN;F=ނܓ:#b@!, wแ&,H‡ ; #F5w#Ȑ;Nw5XqZu0L9i̷L8fц,rxq">Iy VĒJ]{O6׮󨖩=֑qܙݛ6Muf{Nǐpeea-РS 3=cˎy]ہͻ7oym!, wแ*,H‡ 6HQPb8|(#|í{Dz"Ð(\ٲd`ڹu+m$xܴF{<'Ok>|os4NNaW:D^>,iA^ܬ̹Ř}[9[ͺ걉;ʳd[߾W<ȓ'G< !, wแ",H;tQVhi2jX0s&É|bIPɲfKr3s:{̉sN2(QFMRi}yn]ӂӾfɶNVdVDj-k y.\\"['5ϟڦm.^0ڛ3Û"g>vėۦw fȆ릅9:sl:wpf~ ~ݹs' !, (A"4xPÁ >TQD-^̗QD#n,H!AgB)%;F1 \9$adzϠB+ gfǧ<1iiG1VӪR\nw@jӳ` 6՝Υ[mFz/`j ^7wHNm¥MGxp.e4j:\ړ-g@=9ﹺyK.eO sK t4?d޻s%w!,$ H *\x‡ :H1ĉ^ėF6(1dMIɒS$E1iVhP'ď@ٻwFyi:-tSR ֩':|zkR+ |*/iJ::o䘓umKTw k9xȄC:~X7[p)> w.4{rW~.nPÎ7Tٹ-6|N==^^=w9ޝ;{ŀ!,% H *\x‡ :H1ĉ^ėF6(1dMIɒS$E1iVhP'ď@;x޽C/;ϤpSINjk|Sqzjԩ2%!O;i٨5'N]w._pɝ Q{ Vɩ/n|#u' 9`7gӨ}\iBOne\8:qS-*Tg>q`ZypVcvzE{=\E+{w;!, (A"4xPÁ >TQb{-ϡhq:Ή,xb“(Ulp1E${8AɓIypN IupdͧHXJbŧN dēe7mYЮ [p,Whf5QҾw\i 8̗vSnb Lvf(Mm@JM 22ʭp;y>(޻; !, Hp *Tx‡ :HQD -^XPFHٻQbHXg!̑78p&Û(uSA: IPcS:)G:S:ӫucuQPӺ@W8n4fNyn]:仮߷V]ͷ=3Y^΅fqL@_}yŘt<|sxKR9oo{x]=-Ҷ/hOuz3 R{Ν{7c@!, H0*,x‡:PD -^8PF JLx޽#-w`=#Es/Δ9M:wW3Ϝ&YіH5FXS^>\.溓XЫի#wM֝'wZdw.`k˻/;˘Ý<9ܹpF:ܺ;[sZuZ!VM} My.ɻwIy'Ι|w8KBn;!,}" H0*,x‡:PD -^8PF J1EG IRʏ Ot Q̐݋i%>yS: eXTQJ6x4ԥ7 dK,Tj `ݻs aåxłwBϠ]VX\iO[nf@|:M+V>';T3iᔦFZ9D{<_9 {w;!,l & H@| *\aB:"-FĘQD:̇1‰$Q82e˕.)T̗!m@=9 qPF9޳w/hҁg1iuѪLYv*k\?뽳R||gMI뺦y- `]6izȋMR^╔+sМX:hfυfi,ʉ+{wĵ-s7|OO i{7iu^4wν1 !,f 4!:PA-Øq={FPށuBܸ:ΥlIrK2[\h@8t|y|A3|)/i(y,r]ȧV9Bi>Ri}yn]ӂӾfɶNVdVDj-k y.\\"['5ϟڦm.^0ڛ3Û"g>vėۦw fȆ릅9:sl:wpf~ ~ݹs' !,Z)ٻw`=!pÈ Nh1#Ɖ8^p⽐ G48Q^<8qA6gjK1 ά49WN<(R+4(ɥL}{;a9~|⫟ni=w}? }B&z-A !,?#ٻ;^‡8p!D'VPb89x#Ð"%qZC%#r&L+YpIwyQu9 YQALhhRR;:}jׯᮎ\iN[npo]cMLKnӎ"wvs!#w74P{Ν{Gp拮 6 qصqp6| ὏7w΅C==fI!,?$ٻXguk Ĉ+#Ňu\ Dy:NcrA.B\2%-Xഛ178G'М43_R5 =X\iNnǎC!N#jța%9]9M 71lěrkߺiz-'|.p?6(tЧ1}gթaM۸_횷lۻ[v{t!,?iA H*\ȰÂ"JHŋjȱGCɓG\˗0 ޛI͛8s֌ɳG@IBH3ʴ@Pu:J4UTƼu֯'Kٳhɂ]1۷n]{s67޿ . p^|aŌ lXdʀ-?q`MӨSW׮YMUyq͝U:wة;{݁s3Nӛ_{xD˟/Ͽ;~0gz{x'>N_(AsX8 m}L$d(#4!^"G/xC4ވَCЏA ؎<bJdg%^sN84d3z ոΛׂ!]rld W5b^&ʖ=OxcscχOw;r VFQd\_3D*KRkl! HNRM-ˬQV,SZD!,?G8s2tXb8 )BwqaƇ8m"uF( u,0ߺw2M[y99w4gЕytZREE pMo崯V J~Up~-ۓ >Jk”ms)[Ξu3ĕߥ}9ϠC,(39-2ukӪv/ !,?HN\ :<."p+ZEa{"ԸP^+j7M幅ֹ|YL4U ,s'O @pC 7-_iX pth^|ީkכ>  n֞Y* [>|뮆{o={( NÍ/c>L0 !,?"H壆axZ9t(ʼn-jXPF*#IMe0]NIL5e"n͆?{8 -ngsW)sI% f{Z"G,u:mfˢ]wo- x:-X`ߤN;!Z+3ςVp2}g"D\i2O.AZ9FtYލ=cfsv"D;0riA{<\SY;!,j=I H*DH)>(!"A( |AVذbG!4@)4yqŚa)0cO9QF"!BY3Ŕ3 >L 1eϣHi$dS?!ƤRƖ0 $X/zURnyr[e LÈ{FyTrL/BV[vz%Žy,qzG^Տ-5+RM)̭VحOYR'Iә jg,K3hB3D{8hӫ_ޠQNnh`^Etlss|vMehɤ{fB-ZF5fK3i|d~\ovr̈́`sEQi8@مR|1nXK iw$=7s!eE]\&muerfJ}ZfQQdBdđa޸⁵6`lf&t~bv`ɧ|WJQfr_vu7de ua֛`x oVag=jTR*+VY3N#\նZrkUs$6v j}U@Ttݪob( GU T|&g%A9HiO )Ss>8C\DUn9#=i?+/|>ɼf}1Fm9],ى bEKrԩ%fDGQ$U\-,`G.D;}  u~7B4N{c.܄|Ҝ͐64)O.{.{߾>aq-Cnmҗ7>C%#N1M>גgnZ9LtaTGҍgF@n!\B29 oÞ@MTVUp*3lR΄9 0q)]7Xt:Sy#jxq ህXL23xAz1k0}jYM&~}mZs]/[émxڲHwz?fWo؇Xryk lɨr*eWJ3›qƙjQNbW0Nٷi|βV]uΧosjNl Xq9/iw3Ia;v6oW82/`VKރ#c_7⏎݃y6_ENl.^AﰇGʍ~Z AucT5cY~;}U>'vKa ~ztAgo\RWu2G@q2wy=6Y^gouu@cL|{MwFr5vx}˶8:G:Շrѧ7?'tOoJx%7MO~upLJ|av\oVuY}HF?xHwAarĂWD|vnezyL}՗·pVF39cx\9CsjFMY6Oj؊8?jft1XcK5tEQpfG׉Fjnvoθ[AuH]goGJu\uFrI}vzXTCrڧf3x&uXaau[Y}GXu ZX{5ybwzFq'nqyܵY%s|lI8,9o;r{XqH~p~7Xyc5Zu4a8r88田gz~#ה1HqA@T{E(}$UYGt"9bXs7m&i0j{8CUo394]l [ok(#wLxz}w@LuAe2Iq!GZgXHMCi9xX@b?``rFtaQoAnvaZE(GAQgg^~4X'ptRDi*\Yuyu4CTWvGG7xt3yu zf8ZiHrg}fW7p:lw)X9#靿)E7F~Z疉Wٕ@rEx{5=ue6(v)ЀY|Tf) 9ٟx5&o-cA zZח çaɏ]—}٥N:`X{|UʒYբgu2Iأ+~UW؊vJqxYgz|x*vhCY*cx-ʠ1*bZ9SBʂli M#I6UApMivI2Yf\*ʫIq~:zTڔH9Y͚n:xy[ZQ z}zƺʭ*)ZȦ zZ ?MÊWY UMZzLF]5E88)YglGy*{ʠҚ~Z8zZ[jjiJzk+ 6/K2j?Ij ׊ؚيwGUR&`r'xؚV[ײZڶGjY95LK<[Kqzilڬ#;j 7+\(@B۱گ;ȥ+kdTϩŊX0ʮ۔XP$?y*Ez& gyfʸkkH+ʦڴ"+pz+Ɋ^znK۲˥Rjjɺ}k~J$8sjZ[Ǹlmɫk5ۓbHczz շ1l'i)Z|+;쳮۹Z&%ڼl9'kYjj઺c[[aR8PjꙄ'Rxln l'5*[ۧљhȍ룊۹ھ9s:ÑڢY)c)ә(XRHf['S{ t1z諿۷;zyeJ*j*,[<,9LutT " n 09)b\xWR]e'qjYj#KqF6Ͳ|p\ɿ*k}{ȿWۼ C[js:, Ԁf U0"`S\܋8SƤKFvEʫVʧՋja`|વ:ތOaMJ}r]rÇ]T#ר_Ԓ-zۑ]0 zƱTJيb] _ʨ-1׺x|)}t̫`0آ\ײʢ}ВE}] ؕ=ÂΈm١ކ *;r-߹ugl3l(5 =}u|/߰,tL4 ͟xtQ'{ q뿞7.)>."SmާY}=ت=# m~-Ʈ %>==3}ޣ .km'f\@-v۠*Cczy“(^l` }8=l`~ޯމvơWNHm]L~켎 DŽz]ؖmlL͉k]]L`ࢎYʕ~}h_K`Y [ 邋x L.->.?fm[벻Z^8mm~n ^^^}U- 7~8 FʡIi|{^h݋PQ˗YC^#o:&dƃn~m$g.@O>5j?₮n;yN!} /_ɾ>^QʠN~nWNNLpb ʇـֿ[oK>U.C%NXQb1Az)ɓTRPab-+tɲe -AT3M2_ITfK2ϙHg֔ʣQyڄi(N.A)vVOdhЬ:f ӤJgڰ=b•ۯXBq\) MaANlgי fLOCUf Gh .`p69 \p1uߑGKV1+609Xի,Llb „ ,OYT5c2gulu?]EK .>$(/,Z v/؊r/s :ɺ# %rj?0.4N>0#.DL ZȼR)i*CZ25:-$5, 5#^ 1J$q:{$s'`B?" R0"撊|odl"{;:Id'ՊEPջ|O)Rϱ 3Ub‹h ++%n1:|sC[SFRI7)%rn<y2(*t(t2Kv%z/4/A 7d0$>r'{`!5:u*u- T]%:XՉSpb'F69'@W-uK$4'tip̓9c&'CT\ʉU1_}+;>k=8(ERSɲpS .z-Tnn'zt#*gn8r{6xگSYock(K*dUHB7P}8hqibfvkVhY{tӁ0yd`P,o\ 30:†\п6z >sw3lwX3Ղ K&@3p-˨D;uƲ^Hp1ose{[I`;aL?wITOt턡 iP+da ]BPP u+($CYzca(,P)VU"r{D : fh>2Dad2;ց@cPrDȋL _)bE#c -9lF!B8:|&uM}jTZw~G] uɆfFeH;Ĩ\'@a5&}ld'[ˎ_u!u$=9H as +BlQ3&w}n;;60iڌڒ^H{k!` En\8;qp'\ 4"̥އbɝFFDw7Mp:Xq z,ӰF !:~sCDNA";"oע)ou\pyӫ<m/{o2M#W{ӭpTم|w?|6rj-8f oah8Z9\R`)AP2 vC+ȆrЋg~mx3^pn#"d]|nV!ٰ8 ppX=Op/Aek@se@3SeSVXtPp:1@3)9j %9Z08#c{dAAAA B!B",B#,Bp@4@ ;ctXpq8vAp`rpBs?kx8@L.$$#\C6lC7|C8lC;i9 B,2/A4?8lDG|DHlC2A,D?($39KqPS-BC.T3eBuP0DZE[|;iŅӹ<{š8+ħ,AFEhFiE)LSpdhB,Q+0S3BJi|GxGŃK;48=H̼aS:fX@mU` 7 %a=VdM1}89e 4UPH_ UeVnRr@TVqc] Vu5I>pۼl%WzE֍|T}:pz X`:WQW;4Q7]j։V)XiÌiX3tu/HSXxW^Mm Ye|Xu8psXYE!R1B10:4@YI[؇͇X}١6͇)͇Ei[؟ZW{@ZLOD4ZEj۪]ͻ[ͼs9XEpȇؾM\]|8 xVhmZXںZd\\,;]Mݧr\Ehu[ME[X[dP]]y-]]^8'V>/4:ͥݗ[޾]Y{XpwYy0s^-_5:YdW<ڨ_]ޅsu__]]%EX[zݸܾm`^lN u` VFߚRW؍XNe .aݎZ^a5a ``\vue\aV {Xż>b:~]~̵ۻa$⇠CY,:rs8٦UX4uW\0::.;{c=n P_/\kXURc0eaG{PdI.^sl[Uec7fd`RdS>eTV 㵾%XMdmQ&RNe]eTVbEL/\}٥٥[d̈́X\ei/9]&T$f]de%f~fhj>gts*#--d4Qvfrfa`tgu%ʡL\b.fve_8Kgfa@|gh5`־m.D4VXmWZ>gpWkh~i ( Lv߸uޑ_P;i|lWni>jasJ #V`~gUcHYdAXphXp qNj.$6|@xbBL3x~ZZ[e^DjgjWl&t 4iEDdkl8'^?^cd˥kekr6j~mvkFט穆XCNe8^o؉mUn|x `x>jTsixYnlejb&2Jex^f\\&pבo%H6~Z4n\n'Ypp>`7\;4`~NDF o oq`p= EA4H)+񇀀Un_q/}7̰V`**YpHt!'r#sF$9BkYs@o,gq.]$qnSEAEGfLeP7r9?S/p F[uB/t GtMdEa9@>UԞUqL7Mj6's$,(3g5ZȇVrX/v,$|FGpNT7Ka0vmadaPيT?`Vlvw/nus^ow!qMoXagvwxw~_wvxnu,)h\ņ/tmxrTwLxxO],a]eyuZyewlx/yx}SvOxua0gb8zHԅUzz[wsz Nd{/({ՔwzOXx{{ײ`MX0u[WMk||Ώrz;׷_v˯GlD.Av0\/}8JDP7MZ`w}cɯs}M},Yew>az:~yw?@s'b'~o~GN_7ad&Z k!Ĉ'Rh"ƌ7r#Ȑ"G,i"*W e>a2a;yg:uK AeJ&ҤJ2m)ԨYRMҥ̬R=l5Ν=}.Ԩmm-ܸr&Je`3 H/1߆)',VѦF1Ȓ'Si%̼z:VS{'+Ӫ5ز^^Kax WMLmi3o\v햚|7~;FO9#fνoXլ{moXq 8 wzdb N ZZxVކVEYpA@ax")ty|5ֈH89#J!D5"E#>s#<*d"(SI6#FF"i"Yj9Y"[yx]e9ۘd9'ͩEEX>Tngu :>nh\d&C(ufО/B &l&))>E)unꦦB&RD9:+mf)LZ5$䢬RR~b{G^_} &ꚕ"{-9~n_h:h`h٪}r _kզ.n0;-Ou5Bx*L}-`jUl. N0ʱq0-GJ6+e`0Fhb,Ay /q?+4[6\4{F̪C~5KN]7 tm86Rz[1p,Qors4]wg7߉_ml^8\8Bf"9uG)w괢au>=o>ܦj{mH[4 >|x0cmKICNwkĪn% 5ߧCl%źJ/RDOk"O?=`R]s}d7mdg#LL-/RRb1[ d|S$Ă rֽKB f'V)a.w$ AFt'fi#"H7B4:h$~iSJ":e X|2vgfD!-kl!SH‚0,MG.(F2BQ H6Crr#\,1BGB"GnL${kNR#C2ˆ!))pxxFkLwt.J249Әʳȿm.){ H䉴x'n&lWt¢Q"DA1"h0zn\aC+l0TgDّiNҚ͇h޴!9Xx{UR` ɞqu)?cC Rot9E&O3UԪM97շp4`b7j-ϤYJրa4T!ӆДkYvӧeXJQiX@lT8Jɻ:f42CED."e_%m>q FثeYɪJ\ ф?I[R}] B6PW+\CwhAt21]f#%vW Gk^Ju/v\h鋔٨T#}G_ AQPiEX)>Dp{ qË\p2{& G{ ?&Fb *,=jȈn} WC.pa_JF!bCk+,XY>36-2f1Usrb+m==9Gv>Dې=SZ;~',:DѩG'&nR=cCδ~uKcNnu/M Xڸ^2E V>6lFdu͇ 7ynϜilVo5jk)6p &` u5`8E  J]1XJ\ ֠  \DlIp`5]D.!6DԘ-50a:~!aUߌVRDC *ߘmBU!X)_\6!*\>"$F$%h}UCpb;]Ľ-bU]ս$"*$n^Y+>\%)b'WEܝ!TL0#1:PiY&j+b>Pa>EI0#7v7e3>#҅M67#<c"x@! "ReIDT:ȣA$B9#!ZFHIDI6$Fn$BVC8"$>B$^RiBDAr$K$11.%FmUD(BCdMFtG\c>hJQG UMD_H6DTEEDLVNte%V6D+D+=PBGCeCn[%\%\[CL^楝$\4FSmߣAґk$ %aX>&IL&eVdzAffB氭[CX&hZgi&%j\rPe^ޥkƦl&m֦mk%DE$ST_RBHB >:c4&oUD UJ^rd%gWXvW>DeehQuNwuChn'efij'{"H&|'||f|=p\HpAIr\ȓD+H'x>fAe~&y&wVgg>ubxjgy'z'[H{hjBĀ9G}h}ҧ|Nk&rDK=''pFpFHZ6D"F4jJZ~vn&fR)aZf([H|'nKhnՊR}Č~D`c~hTMJ"s8sZD2)uFNij(fynx~z2ǀ%Kf0'e=ĚV~9CL叮s|Gt'nx.jDDΪUU(ri[Jj{>D[jjmn|$m*"l*RQ.CF !D0f**jF+B\iiv)Jj[:L`FJľl:+mn^Vk Un&pn `$aRbHBN&DxtfVBFf'f>c2)V&jVqkhi]+gDDVr+l\!ڜCJĻ)mk+"pzB)ebID*FTgjfZ*-,ylάVʄNhv+l\F*\$%&ղnEh1$hYjZjLgr^DIb GlN'W+˶ZW.fzEe&_v> &NFBo2Z)>DH",]@rV.ʞk./NC^nj0&%((9.:`)mCJo>2/Sf{,Jbʆo=즭,0b'f&G0 ÕC/z"U)G0/mpB(Vpn,)DMXdmeojeZI 1/p0ϱw*^>q*1*zj)5pF %#7j01͚Sq2)'2jhnFhq|*2 Kr mID-./qn 'O㠲3)?3~zo5Gn,voDh%...q9߮pVf^20,l|=3H3??֊*hN* 0r 8Er:8= ? fG>hni>f3I43J @tGd3}Ec 3tE() _ q.O4EsBs$j0+1\4TGuV4Ugj&#h6?r3Dc"0O7rߞq_P 5:DW^xRHC%RfNiVkp >K26(Wu?Iq2 r+su tXkx"t;BtNmPJt%Gܮkj_k#ʦ]"mfq cK4v.+zkeKDFx6]/4bnv;p[shNVu3(nm*v3_UIn6*GcKjt[W5x4UfA~'rvCsZnW4jND{譢%ZB>X_CEkkw{Eاx PE(LJ7%*kNe(L`,\dZsH8s8 tFFGCĐUz4.VDyPpU-cCd@cl>oXrSMOÌt8X"5Yv&t+REyCD;C guK^k|FD8oa#EՆvn7e4 c9|?g#Ef7)2wny]_(~ysn{n8n"'#guzu#9Dx.kKDl7}LU?Eҥ[.aú=Z6=ku*t~uVxsȞkBg烾xK﹯z;uC9$XEq&F((#OT(9Jz]vīaK/Y\[Z%T1&Z1z=HBICDf7պ77')7rc{LDC=F$-7~mAŸ3sFWF[4Q.r.1${DC}h(JB }w Ǫ.37ӺdzXGG|Ld()$N"78&I@,s+Ɩ.Y?3OĻ:ATʧo)(O#r8Hxoē64,H`B 6t0_PD*E1P|"lH)%+WBL8 Ldy%J.A3Ϡ6U(ãArj@6RM>plXcɖ*4ٶu6a+OBfeHjDQ/1bOK Ic '']`Wxx ia rkU.ݺ+MTF j<şV,ٷ'T>r}q5pn|rH/?dK(( )LP>$ALZ-L\+D4k?2L e6,; 0:Ts%.=&t>໒˲xCv4t%mm6H"ɍ@鰠q **'04, =1j<@l" c:ℾ+=[aUOB6^KN8%r҄ać.qVS?cvm1J[ C+\eOƆ=wD137&DC O@O%P?7e|]}R9M4 UT!r|Hͭgfa$^+꯮2MĮ s{"Z!xdNv1u>e_m$ 0.q IԺ|ZF46j.KtR1w TP4O;4﫛z24N3oO1t :ne/K/ֹoo2lKꤓ0!+y(>;-;GXv}]7Hә+3Z]: c^d=y*!sHU *|Si@q%yp8)D}]/!S@vS"@0!ilP Yu>6Hq\fx"B @>(vTbh.!K YIK^a_ImM-]&GIS!K'QJW be— ; YX.藕e#+[~%'`R*l"G(mPAIK saD.1XM=/q`57Heb46K{&ď f1eJ*ؖWё] 3<"XJ,K6sJ2E1E2y&thHsO(5ȥ7 *% d$fHQT#m'ZUǩBdJ PB#".gROmԪW5Qe\zJ'. &gVM dIO@Ƒ!Il\rǮJ[YZYǵVUcS[Q^nfEf'Jd35_9Mx%a:IX\b7Vl6Lv$z5:̤V\}5nF1dReAbX1]N{ՠvV~O9{%VvҺCxSze$C .^hB!A Z κ6 npە-!(4p3b'JjdBlKj_-r[FFڅq|%hu}| -stDd/A%!,wMB H*DXea@tp@Jq(A4pŒ"TE#n1#Ɋ)W~He>1uRMC_x2%ҧPJJS@7݉R]ozJccIR'MW-\O{eTo)\%+C6ʸǐlo^#UeRFVnx-gRRYc fC*e$ 4iEŽLq8KϦ;)b"a#~^O6g/'W?e"j~΍`aQzo9)u/vZlj)l<譎ɢ}ҁZ(ucٺ۞z@ڪbjt|*Ლֈ^z -. lpc o*G,1Ml{j1ڶ1 ,W$,?z-,4S*' \<,2aD=qlL;E!PWm2z$Tl@^o1Sb{uBi'6AmMBg vAmv>sEc|݈ .xv#7X䓅$6nK@9p8r;~wݦn6Ts:9멃~ qCݻ{ٹ_t<3+wݑw>{{k7[{tO~߃xy.a/q~AYpT7,P W9!Y;&Ara2> uϫGщ}`'rt,_ | Rƅp C :7a6xA}^t.LCvlhzP2(-z\]!Cr.)" LJ)Nșv.dbD&.uaEcX={G,1D(I}`a(hKq N+ ya“eIDlقrJ5(SjfU|Hߊeid+WE9خIMe [Gvy^ӛ;NDZ3Nu #YI-/y0n|40̞7RRR)V$ MRBd3Y}&,)?Rp&ܝ\M}gdLECW)TyMTp2ATLVA U U|&8уe|ҥ&2gU{{3EuK}wUaY՚B)`mjlԐlXG֜T1]7ZLST X:ֳ5l*D3s;+݁Fv}5Ko9Jh~e!5TQꤊ<؂34EIi@⣐Djs(.x-TxםAIpZY+]jy8jnbx;?v{E(&R~u^h]<%(GKF2HC.lFβ<* GnK<^]w[ҿXf`h`{N-p,XreO~ΏK1*hA4Ά 1rOCH;Ѕn$M͵gDA&7WNe@XҢίucN *r];j/F"dRUQ\nznГ=jwqpMz'Y]މ 30zrw%`-f9a+rGp'wq|x.uv=~MXP߮`fi+Grq#m;3EoHϕZHDrZisǓ{]bY T\%_c]Sg{$jL|J5Wz+YywC|7S5]&d"Pd|g;G9uzz9|s^{^b{^#NM&1\Swc%y\\ ^Su^BpnU3qGn`8ehD7=Z]'fhZ~NthaAĀR$8m(Hs5'WUՇWQQDYs9%~qks@4&DtYO8a&ba+׀O5aas}OLD)d[LRVRZC&w~gՄQ[]HntD2cPsRszUGYX*;T{d@r|N6'x/Ug^#zcDX2)dvI^㋄XX\x}p]K-#xE6b84p^JYz`І㔚(JxSDOPAeLj97Oli)eɖpICGsؒs75uy|jdr܄UL8UuDw$@czcAy6 EPg64%SbP6#6F9#ՁhUuS1R%.+xf%x`T|քX MmHDs|Op6n(QqYe@ (HA 1 9 yyA@y)r)K\{Ys[P5RC[X}Z6S<8^xZ0},&Dw:WDHP4/cҤ?q@U{CuvF$tZ9Dž(b46g#Z0YUFTOqG1Ҁ)ٝ)wyEy0gDO^c%Q])8^7ƥe|*c[Z{ SAHt"hef5!D${Z ZPUY*O30EԨ!d7hB4ca6ti:)N@0q@  M00 NOYsTjs g^Ou)z^HY5]*1i)9)`)p|Syjp6{*Dbj 01s#56ʘ\88{*t߉@q ;[{ ˰N@̚ʣz|M 蓅mp,.02>4^6~8:<>@B>D^>.K:0JkNPR>T^V~VsC X`b>d^f~)ngnpr.I.6^\n1M>|~.{F1芾;c!难>^~2b  aAc2^ȎPa>^~؞ھ^Ⱦ륄N>0.>^~NnȞɾNy1 .9D2q$O$nZ><0 _o` @n` 6PF_C?&_(OL?x4FL13Z8p >@ ` [q&>p?I1TY~O]`enO@wJ*@gGw~0o} p  e_Op` eѦP+`p + B_0R #$ߛ ?n p (@O ``@3ʚ;e(3pj2±ZNpѳG!E$YITdҥG1,MRB82bSI|AK5i GMN1eQNlrZ$嬡U&PTW hCYTvIQ AGsB'( +Q![|/RTfw` .P>FqmҎ r))^)/Иz5c3KN3dS6a}ba !ڽ^44JC(UzhK6ۡVE~VצB5LY[ ^I{d^쁭1hv{\)F]ܝy5mKU{m.|qY۞Y'EOҢUOoBM5+'qԧ<qOu݃1|Ɛ'x d1xW~ywy裗~z꫗~u֭~{{{js5#S4B밃~׿{~P$v-- Ԝ '~RJfPlX4qP#$! RN}ZnB ~e+a m8>r.3 G8nC QzQ]PS1Pks 7C QSL9׆:E03ʤv5mw bH/s☬qGc>,$hD2g}{`?6  yIjdW/bRdäI5fk_$ AoN_IyqQ%}\/|L#$(Wbhkz6Mo%yMPc7abS`Z9m̪mj+_(IR6Mz XcC}iQ7dY:RUSAO(eMpK' +,QU7H ܪRUS$LZ 7ߍ(+Y U4XFb-ú Oַ=Ӎ+Ym"emW!Lq)Lmmm%pl_H2_> e#em s0P,9{]dvv4b#w~͕!=#U-vݛ{8u|EW2l9kk:c#E+)# z׹Pd-,{HXÎѮw1GG| V/#aX]Uv!cz`>0ظeɊlXKfr>YX_:W 6d0Y19!tQa!+Fח|gjBOH* uP/5Lm>Zիn)n%M;?د2-PC Ph_O׬&v[ c9Pܘ#X}M Yd;۴0v7:l3 , wuNm|;E ,;9# 9ѹ{^r7aom[/'72YS$ic*|7NR}g+gW2@@U35|)"NRqk\-'zѡgo.{G7Rntg= a/.lkAOyN&oAҜoڝ 탟8n+ aDMhX:x;۳݃^ά =A?ޘ]m+0[<_{V^u~*g}Fw&qroLՙzχ/~39ܲ=pźO}a ]{k>+{ +|(JǛ,@|/ L<8@8At.2?  | ڪL+ B',?ϣ r`'BH{ B/\C20ï;0Cǀ-&dC=t)7Ұ?T!= .I0PҨTT]PORNm)YTQ˩S^]P;P]5V!TXPxT]5U"u )JE6VLcHdAڭcFvd*V)b>dSa ;nv nXl':b?ΆR6eCV ]W YeZ·[Ne_:ܪ0TbNde.cV0^㯙uX.af׍fnff[V6%rϾ}tfO^p|ZvbgX{7s6Yt^g nhfe6hN,anXlp~F=gf9TF߰P䒶n{(B.Thba >k6`Kc ~ Mf8jNjf[b$ eF Fii>.ʼn+\捓 ZFkk^ko~uFdzjk[UFd(lPQk]aF>.dJ`al摾賮eo T]6jώmن:MN~Gȇ^ƅn 0օcmЎGicfOj\FykodnX ;6jhfoU^u Sjnٸưh&ip^V p=gJ(l0iqg i /p|hVccY>kg /qGڎYp獾.k6|0Zn qGmpGom7qꣾ !6kk؆flj&q,3MrUV\Srs(cF 2643.YVn|0t7Y島 kH"t1lnhDwrj9뛰sH1hFϮtLinsgXbht0)Gi*_V)tj &P?tI& va[pnRȇdsÎvi1jG(H(YHXwv/n \ R K^sw~wwxx/x?xOx_xosGmew_wGnWozߊzvxyy/y?yO vGnsfpmIY~16Z[.ukz/z?zOu7Y_pG f _Xݺhn}Wzz{{OYG܎wyX 1犻&{{{Ww*&Fs{O|_|w~ Rxz8(y'Gs mh||_7{F[YƉr}ٟ}گ7{9G`{շh2Gi}O~_~jugPnH t(/_ |r &7 B+3fTWem|B$ A.`C'Rh"7ضmcaŋVlefҬiś0wdzDB(j@JR2mIRR*V'E՚+Ŭ[B-`ӂjpڶgh.T!+nVRoIPЉC0dvR@~ )P0)Kp+$T=QQ${3F*}A6n ߗ$=|+anԿo2 Ү|0ʆeun"J8zsH63A sd>eoӓZ'>"}3NȐ@#IzC [SA7 R7#1yY0:n(!\M!ɔl# e" =)1ac  Y:ᡲdY2TKs$9](a 5m|Ȏqe3gIGϘ`Y>PXu[y¸9mG֜rQ*/U*_ҁ<.M}.'?LJ)Db#E*݃B+^)IV!t %R3P&X5;N0 @P|<4/BL^AN4SQUҢ\Z$ qRvf_}Ցr~+(<֑-%ҌYMO4y]jv)XSB'ѱ˚ "c6iC V8YY]*ق)PbZ>S9ũ@ӟ:r{SV[N3 Y!z۲\j[$7h)#h"mnJ8ηk:a>*a|ME5eļ%} UvbV߻x 5FIu$f"]~S (*ZU"AYUDL~4F>ef?ϣ G%MXFa6Y}OvJcGɆ>3˘]D /ttIoɔ.[ 79% w1\&yn᪏V,k17t5K3% Z{L9Ԧ j) QuD[Z7{&GJ!v04]}Z?sN2lNț(]n ،4W Ă["fd #0֌s@0iu*f &g{~o4Wx_^C|:䄺Հڟv6]l.b&(ET+IH4ivR1/D˚a\o٦Y{W-)ڦt%&:!K˱7KD'I\i.euZKPB\yW[tޫ`dMz|.hILJ~Խ"@ 'y$QTI$4YU%D@8` )}Bx@tEC'tLz]5@VAMLX_މ k q@lDH1_mN 2&!GKB`A~& 襠Imgs9QU)\ !EU̽л8`֖%Q_BBv`>efGס EIý E]hN]D?`@^>"ZaI!rd6D|# &z[2nSm =Ϭ } bS-zX EH@ V3jݏ]#be`6Z-e];dĞ<2q i^z-3r$pG$5&KT<#͖bYC7dFR7npQ̌]Hݠ=!yL FCd'`dN: D X&BYQ e9YEL :FєT$"*je%Nrō%EPKeDb^DɟRcʇ,`EgR_F$%ThaPAeRE \cfpQZ ]fDj@'hW$nD-Sf,#4_~&^lEDZ*N=u9>oJ`WjTBf *yt%:ALgRbIiuUoxrFf{Vg |0}VcORaWgXRB>d>6%_"p qBAhr= vD4"̀Ȋ^()jm]BڟeNUL|{ݡ)(֑Vr:œi7gz]4Z(:b z\#n闊mXh*XaC6ŀOqVB[fzLNYN%SDL!S<$}RƐ2P6WVD6W ʨ*ZVRD*=(j+Y+^.+BV% ôRVakn+vk&z+Ak+6+jkk]Ϋ$ kg&Kg:Ĭ?.MY,S%9 l|Fp>l>+Ǯ$$3>*S&% >I6ˆ셖)]7&DDæk>;)VȡE(m-nlĬe:-4Z#\Dl:vZD8ZF"irɼ k( !Ϧ-ޞeb@>",NNm&Yߚ7>YfEm)I!,~VB H*,Xe! 2|(PBJ8ТE;FiȍEnlX%H-OfXrdE)i3dD4Mm!59圏.T?yW>@Ky;;;nGv;/;]N^\.'gʘ[.޻ėz꺧;B9C4x3t;wߋf;q-;1P^Gބ|"CW9]}; X%wl =®raG[2׼Ë^Ϸ$s@*tK"W@nPQ!mx?foͨ> ݳw%cn M B0ca )IG&'=fx3"8Us<<)9d c / =qtqx9FH:zN<)yrNCI~R""sBs*43IPU ӢG&$/Mci,8Q̵՘kM qb.DRz4tQ^Wﮞk^ZL "ϔMd9.+ _Z1to|X J׼ֵqbD=EwUMRmhwK`Ǝ&eӺT-{MBd ФN,-cCԭu֗%W\bULNVvEZ yXö5{}HY)JFsĕ2s{^*Zy2L"3  q[^c"aw7@"=ᘅQ-V ƽ_*ñ/\p2a ;$uW6ƞ]Feb2Śe7$#6B<Ʊ{YnsRKK-o#AX@Dam%=h9bD@ 7o}mɅ*Q f#0V"&';r<~<:a;>WsẖB ĝ @ZGJ|D [ +[ ܾ ";OM^!Kmal5=lM jBo p\v|xzp `PȂ`ƒ|Ȉ<ȅȌ,SIhN`pɘɚɜɞɠʢ<ʤ\ʦ|ʨʪʬʮʰ<@ h^0i<\|Ȝ,hPza \|؜ڼ͠L ^Ymy_0C3Фp<\|=,` I =]]Ge < 4|$]&}(*,y;4" 4]6}8&֙[]3,#F}HJX=J5K=T]V}eh|ab=dmPh-gel=n `!o]fi( >31=\aׄ]؆mPSؠQhMZ AB|ؠڢ=ڤ]ڦ}ڨڪڬڮm ٲ}<xX0C!=]}-ڐ=ۑa2؝ڽ ݈tP}߽֕-PQ}PQmcB ֠0 P ^.l-p-FԶ@3,*p N@ ` +qLpq,-1sT>-0^5^^>NPߧGSI9JM!:Jv~ p  5~/N` 5p` @-n Pʰ`@y}~^cN C~~ѹLN) hm p (@N  @ր-ʀn0 *^nᩍpؓMX' .~ N0-֐ڞ%! p}0 Q@_k)ƹl4М0Ϯ @#_'_)$ .@ cށp<ᩞArՄ O]=hpLɰ?_Po\P5/_.n ipͮ~0w qΌP[N 1$_/R ` ؾ W~ O@ $(A .dСu$J/^r4`M9uOҤ){XQI.e\+*r)CASNZ15r0En+7TYӪj)KUrU aĉ'Fwqs'>Yr ȓ_dӋM_4iJ *bرeφMfSRJoG\C)@*/r>1)U9营ݥP '_޼trIe-y7n#;wŋ>nԞ/px2|(pC O[N$y.$c bM;c([Cs,*jLSR6;Jl R 2)JepH.7K0D*uu2< $c$P̳m*Ӧ,qML@[0PB U,6L@WBcqYs)NTwBuTRK5TTSUuUV[uUXUMXkV\suW^kuiCQN"S&CRLQfd`VZVe^v[nknw\rM,`7ΚfiZsRM ` 6`kI'SZi:^gBbNڃ;8WQxdKv59.Ϲu&ތ &d`5gC 6`F NbW7"d9ge'ziv>zl6lI`S ̓(Ω!6jp_ITfaDscsBgoC5Ӧ!StS$W~;@4Rpz`!9$o?Fua]'͋p:xg=X7;%;/iw9o|7|g}A7Xk;(ob!/?8P$` x@}Is0KM5=AP#̇m̀T@x mxCP1/\F~(q;I$^KGm=pSbx2p?҃WuP2kb ||C'bF8b/Lm&'lQ0W3_ yHD&2$sD$}fHLܦ?'dH1ȿ)R$%H*'FƜt%x(VJ\R<`D&vh2'EhRӤz-#)sA0jSLM$!@ʁh#Oюh#@֨7uk]&W<4M1ZcUb`sHwN|vmC 5$}mw$x.1J̆ƲLIxmxs+a7j pm5la.V]" WXěacyad >a#1^8 7!I0]l@X`!Cmw$\!GEru+Pr/gc CrP<6sH;55-@*f@W(^1l;OqK?Zm,,~AhPNZԔVQ&:}։?PbԳ&gqӌY _7h~5ԹIy4=-VcgɾykߨEPA)j[V6 0|GHfP[S,qs˳&u6Ӱq m3<g&>s; gxC8"_0ljG5V7e^V4V Myѱ(fG7«Ugѭ>@WκFt7NL_z[iS%wSf;N9'+f5gy{1GGwo!kŒ^S|._ZF><&fU^'7^V뭹tL/柁z¯^ݹ;]sMZ =3{䣦60ۯ[08C ? ?=c+C @e@7Իk=⿾ӡ@D)%3̽=={>@?Af`T ,?9Z@B@8ЄRBd[s 2=tA>BBJ8Û(?1\B2<'-K:-L*<7@@B>,Cn5D!BC>:3CUCH,KܼD E-K4uyJDF c%ISrʓH7ʮD;K#JdF5 l+DlJ\d$T ˣl.o$$GDQLEȝLɜgW JW= dMG>E&`'d NJ[hiT&Z\Vfe`dd[6潆)+B%`^ede^fg*N>Cbf扁d MJnno6^ f&%j6g0O]f}gG Vz 1ggP=擈H]~c3D6 af 6~+hsޓ`~!h&vIohaHYg&( +蛐\oK c~ciri aia҉jvijأ6+>^knk~kkkkkkkk Fw5ަ.!^lnl~lȎlɞlvklmph؝lmm.mmZwflfgM8m۾mmmȾ Q·lv 5emnn~n>mPmvhhY:nnָԞ]\mo~ooFnbm>^inookۥ omP_po%fhf(dOpqbj qL<6 䙼k:tCEv\&q r= ! w͉('*?ؓ%> )rr.sr,n00I1ls86 9s9;߉:`t6.iFN!D'%ω4p}c(rJw-OZ2sJ1M/ G/5s<^=w=8jdZ@ BauL1rub^M".tONtQu2?vOߓb.RW`c @pumosJ`uY#[wr[j hu_'2t*/jr,WM,4(aPWRrWƉS'TvWmvq'\/tx^1_έxy*?u|'gd.rOfχTߝ53Rumx[7tjtGxw?f/y._)O'h԰zOxqbk?7'XuDf]q'_߉!;}tpn{zjq~jQ0OڥrtMmχO|w|ȇ|GDO_s{l |(9D1"|+Zx"G,idƔENj9I%̘2gҬiD*s棠6@(ҤJk()ԨZQ}Jj+S:+د)8*,ڴg K\7F.z &d跡C9Ҝ;W#G'3FisdK'S31/V)rMG|hQu(Ԫr kʏUWqMP2gN)/nxǑ sw SI].̂ajNh xo>̏]aMCXkhqmednT5qT^ixsDGFYw"Qa]w-$1(7O6by_|*ȍEYFW`Zluւ VjՄ^a١SוEńbn`x''~GbQqeD"i~::ف Vi[Y)9߃2V)YJn ^Qr`!FJ 5&mPu 'Ln`Ÿg|^-Zlp, zӳgR0.*"9_z;-NG FgeSR)%lpb]ꪧ*}`&jfvQ{61_zQ##z.:ߺ\ztjFNvk]);7TqE׾^/1,f:T,bū;z{&$Ɠ+ewkh$g$ڞ(ov|u̟jڔպRI1+"ma k)4~Cf뉹ڽ#Oq)gqY+2`(FA9,̄3Ջ3PbEsn[P/QpbZ0>&\Lbu5‚ Iޢo y~.L'OX$lJeEN{KRZ#! ښ7gMk2 FG?oߧ(u@5Ox{RDB.7M!v4=_LTe ^.HR)*s,ZQ}WŮDh(7cj?bJ%"lC҉}sQ3N}.9O-Ԫ)dJ) O%YvP&$BD0iR#BTq&ˌ@ďq[[~'H "æQF{JHUI=#u50~#R1&8hJfDLGiE|\-8;NVc/Go5!0̚|cE/=T_q"rP*ubߝ"u/FT~Pf43ySPm+&xi> 0Zr)i܅o ٝ'qL*v8o\a@[A8.l>yn) 8SԔy #z=&14ԏ?}>>L"=~7߭EQVyZJVL{UFMFM@EXuiӅa! ahYSM a~˅Xė܁F|%MM,N5~Haun=V![hJ> Ra*nݮ#.uZ-^c͔Fu:'t 'vԠ)'Db*fR+`eݛ$KecQ.j/ #qD΃EFGLԜ5VX*&Lb&aJL|WM['RBVEh$$"EGr`'ⱍ=c*J&4>^LOGd%fDՑFPJLy?.My˼}U.Udd%M0WR$FKY&%yidmyVNIR]WfrFVr%FP]Z%}x%MPDFX% bSbvX$^BJJXMPL$#X iPK%5&k&?LA&Rx&Qlo"Eaf>΄l&rޜmfaEBMcppq&v\ƭdj'tޜXa&*LAvn'{\N3&R"z~ ~vLlVg}(&.(6>(F]cN"(z^nBry4S]QF d^FeͥO~FčDbĎ膂#hXƽg 01&lfEzLFܷ)NZCiBIV{) *Er^F`2P'z)⎎PDMCONu)BZhtSvg~sBfI.*i}Kä:ĩF:sZc!*L(A %M^G%z Rj\_Y):ǫF0)j&%%(}Q(+V&FX6!EQFHFP+j!,PgN5uNWZV1t82N<Нց2.a;y(10p#S`\F,Kw@2bN pT:knNf-1tCN:e(u"N#@S77U2ۜPGs35\|yU 85oaSj5>z s)z]kMME{i|Gwպ7N\sN$ go]8y"[~QeU6m|ܽ?o(#fn7_M?|ǝ#N[wsb35ǩhUh#w߇Sx$h!,{WA H*HTJb-j#F+ÐONȒ`ʓ&[T"J q!ėIXsD{S(ȗLF]zͪL2ׯ`ÊK6,PA)򼘵ё1ݪyƪkΕTل"e۴eʸj-ynW<uWpVIF kw-KӨi暙ǭ֜Sia=ʆ`m2] kiEmKRoC7nJԃO|yS~wJO>p`8[^m&s_hSL!vq)NwrMvyv!aUWYAƜ'tVHRhmYwȉn_[[)Wc>^͔NF&b".TNk~kKe6Xk7_pczUumNҸZיF.5&L>[ IQ墌ecnu7*Lc5 gu٧^U5&M*ߜd wZʅddiqzA(_Ն }fk,JcZeQ\jw +QKUE>Z+y:'^uj0Wl0 ,2XS ˊ,|p2481@-o&H'TPG-uxNmX Yw7Mdmvg2wlD[s)B Ŝ7m2wAtܷu D s}Swɏ\mxuKxy3yCηޯ?ꖷx-t,늗NkNਿvݘw#Dyc̢+TaXrS]xL`*m4 XDMZsދ&7N_D\(G*pA&l P8*f aF}-Ɔ lV14?+8bO_ |Byy=."#-9N3b fEB2k6GU ~\ R"ɿ^sԹ1WEjL7ZҧSe>N?0*: \fT2OZUl \'7UvH=OVW4VL$CohIMp q'?kJxb0q1>7-HoqíӍ-i70nYȌ&S߲3&5\` \`m;AӝW`e;-.s`/;ոo }g`;_o`ǚυ| l{U4's&.f#<39y' vlC-vSItffY#jWG]fY}V,=Ȋ,y+]|<$%JqA~LG(=U k@}h{1qpL9qd1 m4O -H:uO|, v] k$S !d+ VW]Cf2hEЊNk#&x ^sRKM3Kې&oϦucILo 01 qB*O̊n>=V*`a=;WR;#-TIeiѻިn;MV6y$׌y@Xjw ߐga;P='ঐ">HntxzwwO>p{˰yj[-~q3,"p'= Gc],rkON@-֊ i_wvKnӫ&|$ E]oX|-j~\Um{9M4-x'= [B||TMLE!YMǒDn|Ct@B:DZFzHJLڤNPJ*I_P^Pq9#^`b:dZfzf=#'4hpr:tZv:Q -s~:r !Zꦄڨ~5fꙨ} ک}dX*4pڪ:Zzګ^S5]c"ڬzؚںzPNx%"20p@گ*;wcamJz(p:   [`芇X +c3"`2۳>$[&iwħ-Kj1?z@0 \۵b;d{YbF# ^pRk@ @j` rۭzP P+*Jm J xз+@ ` ܺd{0*'몧JFWڮY2۪N4+`0~K^.@{0;@b[dTݫK00+`` ` + l@` ѸdKd*E4d˧2"|+:<:0J >m ^}A, ~;-Z7Y|-|e!&~DD~؉*.d}z ,cFILEQOnd*0 |ӭh^>?NLaGllh>|\ޮ >^~븞뺾>jn ^~Ȟʾ~)mYJӍߦ~h>^AYDŽ}b>Þ _Н66ǧn.©.jN_&Y:嘚6:Nn"$D_!7~ߧϠ؞9oV_m Z^+?7N4>SUpr?'?nn.tt>W/{{\Oj_/‰w!NNZ/,ϰ :?cO >m%|a![//فn~ dGOk{L[[ǸPzb 09C>>.mC2B@% SHF'agF*PKdEx?o|(_1z'}!HE0R  L+  ac(frؤ8lu$' q{40,Gw[G Bfr_tyOw$%+iILjRdtz8=0"T_PUr{ aŠOL*`.K]&ucD#YZ~)>nj21ϙ,i$Qs$܊w?_2SH7?NQe5yOEK'7Z!oTTS^<3"|\&b&teW69 qAIKQY<'̇db+-"T[C)YBDLzp|!8NN:h? P$|(c-|pJK (}jY5!R?e*"ac:ˇ5CӬ{m$֖d'`ʐj>Fk %U:d")X*!a4HdliL^V@ܟ@3Y%Y%[lSM{[6ѓla!h -n" ye72LU6"W$ꨪZ2{^xle{;(fOrX/n|oS.uV2__KKb|7} dH#vf}PGؼ$1j{a v!)i+DJqg\c$Gj:bÊSnSEd$/(L)^YRv3b|e,XeLqfPU| xm{_!{2+ =y32fGչЇ6taFLtMHF]=!xFt XXyǢ~2!Z@d>6=(@ >@X+;,VH@ 5:@хfȇ>Tr@"ܫ;,Ի@Tc8k>#>(ç#C)3C)k7Mu@{lƻCd@oB`ÉB9?B9$C[@B4D2C%aDؚ DBDD2BlAE|nNDP#QD,DCEi|WE˫/ED#E+D[vC5>4dCD[dFUDE|AƅA1Ejl"k;\Bd9m^_\|)WiP2r,%TBg\HA_F``Ԛ`G}!@€<@VdExkȇ`Hei$†ԥȉ\|ǨFɅn)qb,Ie:)Kvdɉ|pVDF,gLdISba5B^(!D *~[H.b5 #c^]Uc[T]މHL<Hc>،(]_ᆼmXJ;&Ab>c 3>7meH`T^Uc BF9Tb·bCHES,.]et^cWnXeYec^7VOՆgfAia OfNWf8ee\4MRpf5/fkvb'yYeoH}N\fmggjtxN]V86^+N Hl~i5=i<Ίiiiij.!Nj^jnꦞI@$jJj+LjjdkKNg$c剐`vQ ~N,>韾k̺kklk.j>vj^짮j~lȎlɞl~H,&kCfem%ONLf+keQGil>M¾mmiFlFln.n>lj=mVfV懰4Z޶m>.onm6oFnonnoUN⯞pn$Xמ~h&ݾһFo llDp~ojpqj.qop_`6,鼦pXCOai pv6q)CNqp0fifo eirk$IPr& l|)tjVe06tG2W3Gp 679 _!¾s$s=>ltB'DWJEW*2]T eÇ 4i50Gѽ>jCkIȇogVg |w0w mv?%nU!s`4 6D{w|L錧T{P6{+z6! Cj1, 1 @_9Lf$J]g͠B O=*MZIHCB S~Qa^5V,[6#N*VĔ^DqfGy/Ȓ&(F'5\a2!>A$X{bJ=մNF"Q%fcVA^}klZQZɹѮ/~+$װ OuԨ6!Bأn$ZK zi99eyR R["fWH,oMm|Y_)xF( jdFv'*1ʰrBq7}6>1Pe9r۔qe.\v-3] ͬyBlj4;QG'  xIDj$ʐ!5$dhezeh׽z0'|7YԾ{ZE7sPZb{*QJ?MS4h%_G][PB;ݯ.{BI<❅g 2h$ Xw=_ ${=2)9Qp&CXEyMt۪@ƼKz_F^'펆 cfr얒fҖ ˆ,{&|0zu^m%` .k(afl&< gh" DtL(Em&::315w8;i۴hтy8h2sǢzBZjt'Bpqeqed8<3}VX?R^59\VTT{FbWؤ@:9s'drPi7'pI"ȁ L{6K%T2{&)Fmj&)'nwHGAM{#HdYqV̈7Dm"SHD&h LBA,jPZ@s JL\:!ٺ K':1aIN*xH]h/$v JJxiғ"ei>C <@I"uX',sԱJ\VDdT2RG* <> _W:ؙ6 Ek'K;6H*m*/2$dKQ(wUd%+t9j5O$C59ٌXJ1I4٧fZ{1>WoE;¶&U-k[ȘU%sΜٓ^JL^2a04 4Mx[f+U^⎒`jmk7dv&o<5 Fq oH6\*>#M5XmDVYPPmoǐvfd}pV$y@r Px᥁Y_.(j{,6@l;Qo.=[ ti][1v }t {*<&GM̞Xy[ꌌwUӎ B@|g >&LDL׌$^W'2JM:^ XY;H}#o@Zwj(5;򰇺L ^t/h|]# SS!wH[f{8P[(_{C;m|䑌~W=&=$ssßy_y S8YLkO;IOT&fe]g8i9^ԜxQx=)PT񞲉Y)4m㕘eY E&̟f|`3-љU%FB`X ųu/P\ eƖMqWPؙ˻dWOɰZTkMEq"G)̈́#𠺄<%)$aRJ ΠզbF|`x `NRa{=M\FV"QS'Dnv]iO]*Pf8SeuuYvA!>IA)`͠ B&VkHIcbXM6"GHٕ|_Nߐ)#:>i.TTHH%*ja3ґ,IіwMLXc>$YF 7 ѩ"DՄ8:fgxW5#[kq;X<3"k)d'N]' C>dbT]D=f)HO+:\^E;>^FH^>Lx$k)E'FKFԤMqexH$EP̤Aʁ˝aT T69W\4"TWJEi#H(XRd|c9fU£@bI2fW%qe>b2fQXbYy_l&qU66dXCi&pd0J'G ʍ +%F"~tZn of[N]cfjtGC`e'yXRH0M8idgUyR'uHUFI (fM$hM'|gwKĆjVNm`r6Vvg 5.蘨hL{ΨJ@'Bi&fiVh٨ɥrVt&)Wh>o~bFVI DZ)X'b'oZ)iyoD DLj)0鄎dGhMꑶaF V^*fn*v~**ϝ*j©gtjjfDĭjDʪ& Z~f6efg|jMj טD+x~bd% ķ*:Pd\+!rsnHjk]UejGfة_S^fud+2pn8nN/"+TkQAo' ĦN\Neb s6g'kQ),S)&9yZr&y&̎Dj`zFJYŽ,К)`NGS,-~`S7Fea_Ze݀fxX "םiJ$18uixW؇W`\uIQ*^lN٦hUsoѶ֩f= \:avI" _[We}ś{凥G=(X"(5 F'B9bۥD_uc$x.EedI ɐkrĢQ|wӹ( VXk4ry(g{EnF"QWہH#mX+S6~靖+qk&C-,/>+VkA5{+.eUd[薊.Aھ;mrke=<`9_q' m6, Gsx[om l[$rk01l΢i$<ki^tp}2L7 5I uS'tZ=PKm6؆Bl3Ftsb*q=wcgMmE]7W)εUwyk@= xDG_DV~^~T^V6։SB[ n>xJwv[a{^t R?W|I-M=}g?wr)={G<̋Wٯ˞juk3$?v ׿ Z}WC6@Y\COjBg>ym 8l3qêAO  Lw9ЅmbX$s*!g#v(ՏXD!HÅPwXK (yu "ݨ>.1mTWρ#avOb B >d槺E(e#^;9"tCb*̲-햯.YBF |-iˤ ӗD&75|d]b"J5w`βe`]:|L+qI-E#/ PC]AREsE{pCˊRVp юf u*Cٕ/wpeG#B=a:yL q"(AצWop &9ˍq:=Gb^ɄRALѦi-=8[-kzT4J/nH1 .-''Ӯ1!`(IHȅoτL d-i[Zάn$aRd9,2ZʑyGiW)mL:A5,0͊X2zMVFO+̙6 ƶ[{0K ͋­<&4$Xi51PQJorE!EiKa/H%Od5gCUѹ{ Z7RmK&Y4yƛ( Ǭ>׳ZeDjj/2qX5xB^|'af[" M) :F 'Lr܌|熅!_8P~XJ+RLf w9fW)oZ5gUDFfV̤ i>c8S9.]!/)fXvS|LLtLhVY9-ZѬ_'TC*hƼ)Tm]hZjK|>s<^^̾SH%~{ZmMղ$n`O*?wd[BiZq\+Y|2x &4w g+RnKvdfU2=8Yڪiwciȱv:@^qUfxh)ϱ;Z C6janVSiVZ=G%uݢg:P`'YЈ㏾ m(I;PBy5++¸Q]dv^S@1 -N8ɯMI1B@~KUyq.߇ZQRn!'&RnNlUSpa!1)Q)'lF}wMBFML#k%u\Q1brdHVwxf8q !ܢ 8P(2')vqN 8[`"l7ka r6o8cuj|&Mx<Є97gwؕugƋdihSm|-u}wf-8zjb9Ȇza#q\Ƒve.b6Fg"Xfڧ}Ysrd֛.hS u`vwR8uUFwbzh h͢},SkQqyP91`pVt膪)V("]`ٚ31|gyyyًs{kc FExR4a8.&2\:axh(S(*(z@ꈎpx2陞8  `(LڤNPR:T꤃SjtU^Ø'me@ lڦnpr:tZvzxz|ڧ~:Zx*ԀՌl$eRhZzک qf'9kT@ ڪ:ZWJ[p:ZzȚʺڬ:Zzؚ*aĨ 1"iWWap PMQںڮ::2a`W[#2lZ{ eW("aWk#`Aڰ۱ 9."*,۲"k|X,2H<۳>@+F-@L۴NPR;T[V{XZ\۵^`b;dGQd¶TQpr;t[v{xV~Yg $*_,5:z۸;u{~p):C;[{`۷`*|[ [{t˺Uy7+ ۸p琼;Wp؛{;( vGh ! {e; k@Zk` 苷뛿؋;|,I^@B]plj<@ ` |w{԰Ћ+@m-`, 0p L  -P \jll+| ۛ1ΤZ  <ք]؆MB|0 F (`X}сa=֖Mȕ}ئ}ڨ ٫R< wݹW| 7#بۼӬP ΰЧ ` \-Lḩ` } 0Cۇk]Ҫ}| @=vͤ\]};l ] ;PGdpNP Ȓע\7{8!`qj؎m` D~^⊞daw.Ӄ؄w_^bϪ<`a >mnq|hl|V7|\ _:h֢WqϲN볎~I@͊65=^쉋N!T_V;oo X^`,?kf8^t _Ң t_vp~2lfoƻ,nOp,r?AO7@/2N|fo_ ^hmo>.ZkSOyo /}?_OI +t@/,>4Oֿ^ _?O$XA .dC%NXE5nǏ[DIcx%_˗dɇ&hҜSOA%Z(dI%4SQNZժLWnWPAI/OKhpnدH_&\aĉ/fcȑ%O\X2͊%J4^B)N42S۝׫ޤeϦ]mܹu֍f&Q\˒q9qVxO^uٵb$'W'qϧ_}SrI,35'$\rmD@D4bmYr5\:Az.L˳$ѻi9(뒫J6\qC_((kм9@RuR~5v`38`D3(4 P@ U |d 7m.xfkn7Vura lbIt,i|y G>)[BS.4i _(#Q(I`$J:OI;J%t##a~ә :w( +$MgEMvbq&P@{)9҃T~KJ1zhQp:ѝ&v=TSjUmTR.>|,95V%ưӃ1'4SLY vS-S uw%,BY^4, È7 ؂* u%CCX\>>+QV;/(rů_i-Q PV:O j^Ex|lQ;F״nq;XnwtXspfP;uC.t^Rڄg5ZFA)@{c _ꢤO/ɭ.`p `R|'nWnPk]YFX`9W gX4M^?Xs/bQzdg%(*5M@f2TLwc:Z5fW&gDB&AK/KejkY^f f*f<괷l}e \syK m, 3&,p=L~2 )*:hM-( cPV(gdQJm=Qg6kMZ4q贩fuH(G9گ~5b}`?٦k9csR)Ʊmxb\ퟔUɦuӝ;wS䍬l/޳5yl>׹=pncNθvn .Otr/I-wTѝ"P}7^iEs׍vԹvv=3$"Uz<*kwrBtMO߉x/OyyO&9P!oѷ77}ks?_ا)DK_&~0Wu=լ|)gQ7eԟ^&#d>P6{ӜY._U[WsI),S>~<95aS=+qsj{@A< .19+pA#K @œ9:<> 0AD!"#DB@ \l{B)©:B,+ . /4>& C,C8C C6lCJԓT.x Ch;C³&@t<*+?A@E7.ט):@ E|Cp1DĻ P\EİcEZWbЄLȄq9Ÿ=̋PtLÑ%Dd.e$<<]$^̇npt*|jk<ĝKDbAn|tDǮȮq$|PCjLGAwEMDp$ l ^ DdBHKM^)<ġ |H5B\>)Qg|4XȢ(G$&2ɓļ+bXrcI04UɓHB,DDF8 a DGL*̋ȦlA,E8Vh| T9ʬ,D_>{KhB8ǟI';KL˓Z;dI]KGn˦J"KE,ȟ\-ǓEI)˟|Hl5`5tLsŷʰIl@ŠM>aߋJsL̆٬MlL)MތE8TͯqG}t40D̥$%}}}XQ_aΡEWlY%Y2Y,S }Lp3eWXWGYب٠Ѕ ڑ-ZmUԬS2 TٟSm m t՟p٘ڙZLӓ5UYumϢ ˩U[d[zz۹- Ys X0 WJ=\[SIuV׵u\\M2u<} IȇuԠ Q]7э\V̕ IX]͇k}[u [VM8\T[x]R-ZeE^W=^Za%}jQuسX^5K`e^^WTR=M$5uߟ]ט^xԾNmU]]_Ԝ^:ߠFSl\>g ԬIN܆mZ=`MVwya'MOeDQaat|MaWMa .\TզΨ ھ-b#f=&vb (.^[l,g`&K`<5ݝ5'ފ ZTce6cPU 4)V\O_d)dTMNdE·<& R=թPeOAGdOM dQpTVDaMIdPSNH& TeB~eF]Oݦf튪eJۧǘafje'Md `k~m·iPJqfLOEgt`%&؍ԧ{E|֜q(ghN^V F*f i(VNS~i~i6iiinV8>43V%.j>jNj^jnƼIjlL&lll6bqj˾ll˞jllB mIkj^BGxmnmD(_V]O~v Mwhi]a5nM GVliV~nǞlln&m6mjNvG kH FkYFlN`.i6n&pnp pоC 'of]oj뮖o~kFm}=vXaaR[pfnv_l?pgpwp&o˶p(l *, Psfvq:Q]O]"r4s:'$O%wrAt.툞rrqGtrRV fSY'KTi>>su#i??@'t]Ά"C6pEa;tdoOgLsvk@D'iR!s>&l<_iXWii~lʾ]wu a?vdeff; tmg4O]lTs >n5l<쟀|ꟈf"B(C>|HxhqIfkOIez RPn/vitoGvoG,=3C2o3祪mږȡ0I71`ʦz;4K2?ul ,zsimzow_p{{X/8z#}}&xn>t-Lud5|ifG銙nFCO{/܇}O(?xxJߧ0yG^~χ>w|,h |),Ȑ|&RȊUD1f1ǐ"G,$ʔ*S 12QH&Μ7mY'РB3'М4ШR3^j㴐h °b h,Zǎ6&Lnx1Ǡ'mʽQƤ4S u.e1ɝ?|2#7PT$/%~dvgHENLQ(%Ade!D5%cbjmHiه[e7c+~3 JFŒP%Ǡbi`c؉ȗ#]gvVA$ .YUuT8fG(FRlﵙߙ8cdycBnLŠ mGaF*ܖ5QMe^8HF)pc剢_rXx[yz(Dwӯౌ."dJE%K]ueHAOVe1vޭ)fjvТG)58v\0yү,Р"b?-xٲ:,JkouU>֝"qK5Q&V$Vg܁=3h,ĉle9䃚 G/4P՗)Ҽ\Ex);W<|`HGч N; eUx>fI8䀟X&$imT4cE e^+5rښЊ:y߄pA*8xU*FTExc5$wjc6/2.k)@{{7MI"S&dQ&}dUfmDϿDVyhyR=C{ի^ 3(mp@"M]gb_&Rf}JQ~I!a oqT$e^]q@-|1 "b(xEbk_/v S FEn%x hB(q$ez2G1Cr ֬TT=(75b%&BhLjj³TI1^71"n|#_(K$w#:2KQ2ݻ'aFGE"R&BB^ )Y'r̤'=) Ł2(I_R&;,~P~J6FeC"xdh+< /y")0!RF~SF̰J9 TeN5BķA^)Pqkn2#z6SJu>X4T[]P1SC OST/Skzbf+QiQ h1jK``zK~p,vNiEW!E@z-r9֯g\$ a|W?W *UT+YI( _RhŐTw)!XVJ"ؘe$%yM0Yڑ:Gw2vv\ee,wZVh #z#^Y*mr1]8g6HF~) OxB5Pj7Հ'[!ګZ*NfֲlCd.nN/ yT|tqns=8+DC31I֓̇%*GWR wq{w8<иxhV4eMoql.'=Bli[tW E;!N@;U^)W:#-Z[RwϯΚy5l~km&E|xK?-i/C(R=K?ѵ8m}Tb'Hj#7yWֹ;ꎠ= {i}><ѳo,C!5՛ ='8)H+tOGrD??|}]u$sw *6={.4#=l|Tp|ml$JS޿vIz$;JwȶO~>$!o8O> O4YG۸mYdF ZۑyDeZUUG_AYGΥ.1$m )^5` FPeHMU0h Q4Pxd ΙG̃턋UH\MN ݇YM %H_IE4aM]!IxBx]U d4ZE aFߒ囒 D bj`!_5!"ri<BX1zf) P5gV0b#:%n)fIW ^`FUݚUZ,#6iTxi韴ubU (a_ĝ-M!cKY|1Q_iTdUE9%d(IOLN[YK mŝ eDqdtXB?gş$HB#;bŀ=cP,4^d:edF$PPTqTnUG@!$*rąPe>"`F>ZZ1B'! H_\N%Z%U}ey(` )n䧄c*YW~]\RkrdT%E`I|P%) T Rac6)mn&i6gq&1yN IfCM mN nJUcd?dGb]I&tbn:fDdq'O'crޡda0x,g&xi6&S>($}"Ut"phvN&"(P C臮(V.FDhPh@d(H)&.h>8)Fg L^i\Bb)v1:#@uK^tP"uvNn:sE j &LDiTmBWn$h#C>LaVhG *2M*Uӕ6*I'1bGliM gļ&Yjl4M~K Ue f`b \©.+tvLNDT= 0몾jDB$g|. |kQk`zĤb!,hEC H*LH%F"3j\`GD$N0Ɋ~,xŃ+Dʕ! >|P`̋sdrfO u zD= '"JH%z}ٳhӪ]VmΔP5J_[1nBe.=j0Awsƴto]r"#OG^6aL* WcMr ܶװc$sOc=XqCƦnlf鸛Ṟ 6+Fx} #<_ӫ_9ɬw(~mG k~pE迵vF5$T}G'\8X>u@!}5uX$CtY7{ (chtRyeh9_m`^u^ȟVn Q{AC|HވPF)evD$E2ERGѕTiDb Vr=XCfuY`G]٦ZJL;YCVUf%d7墌֖Eɧ"LyLxe>i{u9lkk)謴jc6ky>몦Z)uҨ)wݦUV cpzDz(];`jr"j.*,p Y&\]{knZ f/vx2֬rf5qZ$: 4lΟ@}s: 3F'L7;-TWmu%_\w5sdٿwhpbmG-7u} vǒ/g3.R K9 ZyY5z>)AAyYEt~#(.<.#|B3/o~gAߛe7VkOtϯ߽sor u!Qw;aA$r +B{>C{Y=ήh_m5sb%>>"&" B}"H?sc6*S1!Ql#h()ѐ+/; svH#(9'z҇f<a7HqueAR!d](Pf)0tOL/8-n_d-IHb ѨP4YYC*@!w88nB\)Nlj!'ֵgw2xJRL#]S#&ARhHh9ikf;sFUd2=w1e(B"mreSa)7}f;0&)TQLmiYZ8n‘E cjO\7 gzc @Esl{h/\.TSW%]N*eow9#<91wUQU.Ug k؈#R:ws mz@O! J}2@;kruC-`{ɠKGu*DŽ0njFt;T5KTQAu\ Mrqg]8w>%"tQ}6U}*% =̤JW d)ZdAe3嵫ݧwfWZsrCL*L" PiTrmc6-땎VFv)ٻZϸq扑d*Ǩǎ[9:-<^OrtJr/-.sY3WE֪=g( Ы1k+F{hR\<"Wb!]~ޱS¦*VA ZdFXZכr>t^٩>Řln9{3āj64zq+?$4!6BltjNFfJʆv.t-[>O>;6l6(_WXnv{}1m|m`7jϻn[^׻f[/8~-i9xa|}'Eiw%>Vٝ7eQ֐x eN_?wնk-<6v7G->y7gy_zw\ʍxȜ+HO%ut ]xS`Sڪ%<ȟiǨy~mKuǴGó},* sV8 *oщ-τW}6 M37z~-Qdpwesun7$bw-fum^qZB$7Spz6N'6$V]O~z‚G[?7߅NEcWpă%%ϓ2WgRE{y3zGj1:7A脻z0y§{R4AhbNBXl;?XxV5] y@؃I(XRBx|XRO2P:|QbVvH54LNe7LR~BXaAx6C{axd`(|h7%8R5$UF(E=H9XT6:h†ĸN7<}؅fPt{/H\ȍZH}Otc{)6dvX%HxH;fȌ&ȅ{6WD8˶sEXSi{}؉l[x>XUXk$yj?hȍѸXw)`|3G[fVRVm9b7N(JQ\*^ Zg;My@Wthf$v/X;h]HqV$ _[YW/ؖgt2pPJŊ/qɄbu )F(QCݗZ@څ{?x?9BVx uy9b=Xgx_蒯Ϩ􈃱ȋ䈚>yȑjaJXĈQh򸆙(n9j똚oy WI':=O ?c"=يfi<33S2yZz: ?  ZjJ ʡ@0@)Z~hcs:ݹQ@ 8:<ڣ>@B:DZFzHJLڤNPD*5v|CTQpR`b:dZfzh*`V50:KefԐvzxz|ڧAJ se6%sj}L ڨ:Zzک;I3df#:Zzzto:3YfI afzȚʺڬJ٦T3cf UںڭJ>lѫe@f֪ڮຫ0H4 M|7i;3U$.wP)`;[{۱ ";$[&{(*&yyj [3*bP\@ò@B;D[F{HN T+AJw u<;]1d[f{hj[n[*(abZa⸶;[{'۴oбEuKxX3\_Xn;D˸ۃɪ[f:ժ(@ۻ0[{R2V+ѻ\9cK p 0 нH ۾۽;ċGت ۵YךKA[ @`` l`@ ۸:C0#3P+.%@ #K . :<ĥk{`"Ы "˿\]+P(p! DL p   \o 0+` + kg\+FJ|耿3˿t:a]9pclɐ" n` P€@p n\< ` (p ` +ʠ5{쾰AԠK<G1 "^@3k;`@f7@ ]} =,{ Œ0P @͜) }8:<{@ M(<ύbe G Z\9 -Pҵ 0p }),MҀ (@*^؂=؄]И0 }P:IML="}= agY]؞٠ fɐ]%MpҺ\-|3a ֡۾{CŽɵϑ(L]Aƭ };]˷ ԰˽b ` < <| y@ ܾ< Ļǝ^R^Pٯ˿5KI-^_%lA^\ gqFN!nԻ.%ԍC-дPMQ* =ͮ]=!RjQ=^ ʨ㾙r*s<%>?_ C-&(*,&],,Lfr^I=c@  "B?D_&O`JLNonm9r.Ob?Ԟdjd⮙,,qcq<2A?)ogQn 0 ]of//ƞ~/=l_ƿo/r~];_ǿLO1 _/opT_ _9;"؟ C;W|.|C%NXE5nlj)D9p˖|'S._|I3_/s~/NA%Zt3gF"Lִ)HQNZUYnݚoW$ Er.\xNs]-)>&\aĉ/fcȑ%O\e̙)%dٵ'v͟A릶ѤMmܹuoߜE>1x]mMЅΑ]:3owٵ֬ɜ& W}߽4h!oAs?#pB #O8>; 9;p Ѡ#(DS *tEcL* cHPT1EkqI&t?0C9DN D"H${rL24Ӷ I8iB'K0LL>jTIC~"42tRJ+Ji%di&/xr' KRȠ:1 [UXcuVZk36ET, 5 S-W$uYfuYhVt̬rdky%Kov[S Vlы{cGa#Q 85tTJt8c]YN0>fRc'I >" HϝvJ#+MRCd- <7$MJT]+a9KdƲJzh证Rd0|^2e!0BL:Tj$FAIB)d0M|r109r @`(3CnS'B Ѐ 7:e(SDM}â`E1f':`[Gٕ zf=iOQZс\gS`6T] NGS/+? ұ(JHѧFUjPϻ./\ŕWʴUwe=0 cH(L[Vfo\ [:.G9ZTi1Y=TjץCj](*ǯweϪkz~CYk}kĞ5S9 -mZpc{&7̥LfPlmxcStm,26)یh~l $sh+C.l:ZwIl6ݱϛvtei%zIgSavM]j9h[Di\;=sQm4]~x]K]Xf[vܴd:Gem6[3zܚ汹}|P"Z^^rBR*P(HߙߕmR8|ۻ$g/,2 zf*RFےuF9^ݘ1^ 7޹ϼriyQur;=Ή5zM\qlBR's8aD~\IȿCtYFy3J 7JA{ڻvw7ݧR4WXzNw h>ȳv+R /+6[,<ōwbtDQ~>8}}_#>6kZ ϽY_',>o@R}^#KP׻~yn||?k|0#>ۼ|B;4\ $O@O# r@=&4ABSA@*:?.Ծw}C=b:Jd d[0)l A>MXB&l>=>-PYȿB 3Xyd B;?hC5$9=./t ;󾻘xBAI\h 4KDFNHBE8XIEU4El4B CXŠ;|ECIC3YXJD9K@eAf<,g>`4Bc4 mLCqFr_$14?bt qZGv(>F*\j̋s,z| 0|ħ}x,4@W~LȄGIȡP9+I;IJIN콋$Ihȡ@J H8mHNIoɟȋJc$HIl Gr,VɁЫ?2ȯTIa;;?[<1F5KʁhZ`JċZK$tl~|ΌD0Ḣna6DɬʹxIuхTˁkR]FOŕ@|VVEB1mW"zWy,}VS|šWLk TZ`W%,=X9tdYJE؉%TX؄{mVi9KɒדMYuu{mHu R05}EדXٽY_mRDڤ]Z͛wL?f ҡ V֬ ح]w}QXMصʶ5O٨]TTLkڽ%wSMBR # Y ֑4\M\Z-yɝH}M=\DUTM7UȵWVeݦq][%U]űE%`]]͙O]հYmޛa͔^޼\ՈMWޑK%}XVUҢh_ MJ8_ `HymߠiV]^01`X߁ߑtM`aY v 6 UOAMRõ\\`F_ T8aa$n0 6\~U(.aZq$ ' EW#.$a\ݾ KbVb]ʹ[AIu0b5vs` 0VJm`3cm=ޛjxWc@d8 *[\d-X.Tb\I`eHc1䤵|ONP6qhQVba8ed@ \4\]HfiQZhfXSifhvflfmffoSgn #k;gtNgu`H)xgygzg{g|e:"*e>hhLHbSa]桸S8_WK6^]=ckflfiF!f.ifNi^i9>}~iiii*ii%i>Ӟj i+gE^ՄK8hM`^6|HjL;iqnL>h˕^k˚~kke`jkj6lVj.l }LFneK.TܳhNkV鿼lFipHm.mNNvm4hÞQFlEJ^U.< llfk>mni?bm.؎mo+jf\9jThllVfkVnopT&ogU͇c؆3^ߥHKfnf6]kn&q6_q#/p&K7hƆFIp R!o ?q qWfpFq\#r^zl'zGl5/s?wR{ F6pw.uyχ{9So.m&涧'(Vaj3(c>Q*cV(H.-TQzuJШV7U)ڴV.j.n|&[ǧS?#%';Flɓ+4YgeЎrl%u^$c%aQ*(I٘z:iP)tTiZ6JU;MJ(؛mkYx堃NB$_^ ݭ&]` "DiG]fnX#3j~GP*V]3kCtʨ09L>RܰD̔eBL&:AP$DGSc=I|G.NW%5zk`輳10<Bk 1I I;o Q;}ne?KPpaPwqCݗTҘIr]&zerc&f:Oۘt)wmJq^wO(ΈH#)ɂ݈ *vT\"rDZ`10!̇CF|]2#.FY3ts,!qh@2s#R49icg0"ψf+ .M.$lb13Sl2͚˶MicJwxQ$}-_IKE"xȷ\PҔ{5%j ۫rQNH*1bV tIc.eYŎ,N T'}ۋc}L:"*#0 2`N <s7<[&D&a&Lgev˰%a^n~`Kغ$ΨASƐ(M5#FmՒ V˕,{mi:M!&HYQLVSv}bL+ߖ C % soR`)d;\ԧ)3ZbS"|^CDq(4ñ6bU}M'B:ZҢ!.=eLWFd%EWO/ֽ rD0 J:ąݷyxb nl0ڃ|\AfjmM *IzE_iQjUZ'5_)XtZ c"a "p%4mb/~d$8q^w]D^{B$>liy=a.wZ1_7n+KXA5EH]wKc5fg\y stŢrq.ʙܛ-\I`)׾hKqe|ߘ,;'}x"?gQ_cͤ׍{&ٳ%h[G'wN|S3ŠY!+!Ώyq@n4ڱDܱ qӗEVGE&Oݥ}Jw`yD^ZhB1@ UZdRGৈJuN>E ۡA@D Ơ qa]VH,M !yܧĝ_'Ĝ-u>K[߅!At@! `0EQJ#JEVNJ[ -CZ,"%!cbB,ya="CƘQ(]๢Q !3ZQ-aAD7zZÝ8>'0ID5T]):;=UFh]BQYY䝉E@c4 VZ0bC#5V@bA꽜(xHa>|]))n8e^=aLBq4,D+R}읇F-.fb(ZOŤn@9x %N*UON$|6͢S5Z#&V 녤z"JE6ZȊTD.@MWGEz 0] aZn _DrIZ `#Eg~aUnlL%W *ea.bp0%&cbN\M憸!%Eck8yUDMRc\BfDĢf&ōa%+ѤRG'fA8sbU&QyFtxAehJ{f5d[ 灦ňahy%Wze{j D(z iHyfen)v)fLF#bFz)&&kq٣fRiy5gR].Qf˜͜BzpzrL`Ċ)fiHrbF{"j%r*d9jj&Ƽ[eZ̥Ѝ3ěj_'*3VPBhiFyIjZ\jAH+V^ku)n+vz+kL+ j-I_VjO%EFȻE閚n&iL+yФfL`&kNZ24lELl&[*Ŗ!LP(.fa+]lAfά|Bq0EHRlwZ -*m¢Yu6BlxBm!vk`z v-lZjq%j⃂h:к{VnF9,.A$na u9\ڪA4k .&,`D'z.-҆mD(C.0N@m~.!,5 | P T Sv9U*slEucPIpJSO^ʃ45KѤɥKnV6\Zoz5ZK8k;iÈ\@oӞwuK|5sέ}}뢛?@}xw>zN|g=0`83=Ma87j%߀WЄS% c3wxύ3 `{x=$8͎=(;{UaaAt}M{U݈$*F X Dt8܉ @)rF"UݒQO )bwQdUb$MYjiҔOyHJ]I%`dU!)H%RӗbfT}#l *'X:ԙZ7KrfV*b"CyWSW*st*cnhJf&J] +BX`_Z쳔k]|F'n^nVi eBU+&D\.*jBkonuI,&M:Jf el y~:mE) jp)ltqZoc1rA.nƛ.F/ 3Y9{K: B.T;lP8/4A#}Q<,Q7{Ԭ)՟́XO6tAF fڿ2 l!k'L%#"~8Yl}ͭ蓗yW 9Ϯٲ"FKyyG}?8.g_헃&9s?0ϼޟ7{˘W_ @2>H~{|";-/uo|^aossG t&Ps (PCȡw@ H"HL&:P(jD1Q.%⸢BN6P^Lc_A e p;0qx̣> IBL"F:L868e "βhnd9І:A *]2*V\14&u'mg  p"rAb` p+(Iա P a jeXJs\Z@(KŢ]2A$s N p %;kG>`pbP z@ZRhv8@f ܰdzciKH+z xKMz׫^pKrw֐G ?8DXFxHxP I؄NPRBUXSA Z؅^6ؐ0-8@נ lP o@ 0 {88}x؇x  ؉8x؊8XX0  0 0x(،( c~8!]SS(ۈҕ( a(pСx(9)`H$\xwo qf1cbSI)!Y_12saPDbx*&.B2~8a}yy@HّvwWoє}:P)YSY[)PN3YR)TD)M])c$i`k yi֖L~t w{yG Yp ؖ`r909'YM( QرxQ`p ay/9 qfK)ٗ٘ a/iYIwҡ 9yI)Iܱ ɩg^͙)K a d 2a^Q9cWٝqٛ)I@}x I :Qq :1 Ӹ tay$*$鞷ڡ؍.y!AzP7:01ڤ2ڣ::)laJI3*:_19 >ʦUڣnE:\aPҸz ceiJqXjsj-A 1u]e(h_J٠Z ш ʩKI*8Iqy'Z1Ji4ʘjZʩث zj@Ð˺Ϛ qZP`Q*K):5šJðj :: pj:ʯ@ Z:K [BҚ׊ؐݪ0\!产 ѫ*oȊ -K۰1+ њ B I@{ JFyq zPsZq`Q xjq0[5+Q M?-!GY*  eHg8$Ac9kk+L(IIP뷝'ascAvṯKYBۭzbr' +ËKKۼZ a Q ذ[sii4z3;G˹QoaѢѾs# eѫ[` K cizzlѴ+gvH';++)l[K/|1,[ zv1€ᒅqk vq |+%LJ*A<:Y~B#B$|n|lpŬ!Ţa_ U\"gحq - qvڬd A-͡LuB!! },5GȾ Ǹrqʨ|˸|,\PËO{; fɜͳ lͲG]͝I<\Ͼ\7/k\\j =, ϐ,|ё!,@JDP… >QD /Rq#Îe8@k޽8@ɐ*c" ŔYPe>n3>| z`P M*_iNⓊ{V ~jiuUzTN[ۂie5P{y\zZx]>{6#'p9@ȹ6:Ռ¤79>Gu2i|tN>;-w;~]w!,7+I 57N*HÇTXTȱc>k7c:(8%aHk'Srl/@kdF9J kp5+N=ڐT6ʵSQ%HGv]ʳZ3fUkpKG7Ipom׷+xE[xa{Geh&Z6+;Еb}jgԔE,gի7 t&;v|b;[w q63oNjm֊S' x|Γ/P}zW>@H>~_|z- `B~]h 8`ah(,0(sO=,9ʓxHe&b)Ty#X34are>h&myfcfo‰g|{=jh8}Rw9LcOD:t8MXL@YyN&%@jzN)iLj8vWcs9!,S8@ G*\P@#J<ċ Vcč=D2ȓm<ɒ`E/[Rǘ0SX3ɝ {t"H8.,T)D%*T*EDNu+׮ K*؂:f=˶۷pʝKݻx˷߿ n{޽wu8d*K^fś:/Ŝ;lz5]Hp\ N:suk \62?nᜳu\iOIn]q̙ |j94՟}?qMӝ=79e{3 Wa9C\@!,5h H^\ȰÇ#J(њSVJeŏ CH(k&l)#cʜɐFS)[n8 Zѣۜ:VH0N@HjhM9G\v8n]kZ*OW|nZ*cT\ ۩v #SLK,YQw1gع4Ax(CG miRU,1stKǞ}y۹;V-,w[:"wǑnDIHoLٻfWт vFE(GUag\!r݉,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tixϞZ'~ieRIhR(~C>h:>iMr钇idH(Fꫤ(.t=Xk&{4Fi5ԓU^͘V]BTFeV̩UEVʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞]Xcp)QBp}sҙWNX;buN|z_[83= ɂ5 pp5 `MX߆6Aa䖏❘)`P@!,5> HО*\ȰÇ#JHŋҫUSHɓ(Sl)z P *_VɳOl貝|%]3V<(T:=Q0VYuNu 6|cGtg6ԥf}smOτ4+ݤ:j @N y7 >OG)B>)pyL9B(@uF!H,93( 'CG,txA&R 9F4d/M %JÛ8pPs䩰eǍ;uLٲg˕)L Ӥ .|gI#կ7u0 !,dL  4 D|Dܫh XDlHT0"Wp;|8)ipsb9g6q19B>M{ 6)_sil|º᤮h_pK { ߁?1J{e⽔-Hxe$僜=_.fЗ ~Z|buEy$jvmc D|Cq£SNiwpQc/޻!,fDGA\@B{ {B _ƊHqaȎ$5"\i% [Lgtif`P*`sٻi``fB²jUJi*LO ` Uk'pk`y[4aCxᦌ/nJ0lXJ)l-W-g>b!,f=GA\@B{ {B _ƊHqaȎ$5\i% [Lgti3fs3kT =HL*\inj0D3} =a:4 |KԄ eq flXݩgpa 6xbƅ 7~bȕ+lӢ%`ނdVԫ`@!,f9G\ { {!F/cu:RdH׽rHJe+gքd˗ppMӀIMa`8`OX-d9` t|W l֗puzP^q [0ay4aVl`@!,f3ٻXg!uk Ĉ+#Eu41yF\w/%סt ;|8txN&N|:kygЃz̹s(цF\i h@ϗvhO`a N5ش& 5\vѢe6^z -0†  !,f2ٻXg!uk`ĉ H⽍ ;"o+ dFyXt i-[3&ΙkpgO9)|I 7-_UXn` >wazNC_,7ڤz= e>!,e1ٻXgus"Ň]<`u!WpF<׽#8 @˝[3_ѣ mf>e7-TKǗsjW3(RIjRMi4鴱-P\b!,b3ٻGAyk0:MW"|7v`:pɔeu k<`|:|GpI1їImR3⛖R|1%sN=j`RA{ }k׹IMAǪk!,a4DPBٻbA2X-Qp0dJY$B(\qL)m|pZЕ,Ƥi2ҟ0h5=`*6ܹpiJ,JGx =abr;ɀՑ7L6%¶&51!+,a7 GA*$h ƒ>$D*J\x/Ňyx^ 1jT>V*W0ǂ-_”i0@|}G(T\i 5``8UTxU{\Zу0= UaՂ:qU!,a9G\PB 4C%Pb"AyH4^J Cdu霖fs3u@C95`P;7tWL"\iI5Tl4-e{uҤ紲U,XlId vPX̀!,hD9 H*\8P@)EbC 3X#F9& YQ$AM>aĕ,TٰA/x1ĝ4encPE)Ğ xhԓ?jʵW)FshԱK٧^ fFmδ ҤU 쌻v՟&}V)kaQ LŠdK8KyMtdmׯ̀kf)ڟڶ;s`iG^)ܷٿ1y:DNT ťMaZ<9,C56ͽw1c%ؼH{9xVe9%7] U@q)yFȝxֵ]z}a%{.h{& jeyC qAڡhYUVSwSyXy$Dz"oqFxfJqbP3#MZ QeM,%.A Xt"e@Sg`{Ow$a>iq~!]iG}jh TH c]wT(luj&jNe柂R(kC %L꺡s6Z-bU-b)$VW!P4m]{MX"9ӵ[䕮jzZjjk}blV褏i6&#f,!^o 3Lkq$'j|Աj[!N2+| rX«7:*]~UqIA9,)J\V|Zuʫx: #w]l"Now]ZwE;^ ˷7q61:si,#Xƴdьĥ&y'V608(1tti¤=|WL6wexIxa|V4NQsIBrp)-rX ;ia Š5ay%g߻Z!"RR2 Vb{ҹ;q~F*g#3y5hE:] ts=!IρZ澝YT(]?+΃.T+kpɾժZRRa9ڢI|e*V yN*D-r^1amR[ =^:V猸+O’%x c|ׄI\36ڷTm|MNB'7uWsog2ܠIU뢍vl d#D;A ^tG]5;| K*m>Ǩ2U{j?@N%~F>E)GW׭(YDytXYunLEYe/M79 {-goYTIyyGqc}\rUz~I7>~I;V~(u9b' SseJNoW]ex,X2&Sַf<n(QKVZpZvu"Ym xQv9PH>l=VqIc4(}#q:#q F `N8&^fQ@U,BC&IgO,bRsd|/(kx|'ebzp(6_&|xeIUZ7XsX~AMņ\P}Tp~`F(Y~ڪXnXn`Diz@o%[:9ʟu'u4 SEٙa:*lZLjrZj4":FlMrh9_4ʉTzzکJʥ.wT6YS+W}Xɥ=Z]2Yz4}-Y6ziX\_w8/T'fØmc"x؂R3k~t%\@%FiDʙNzd E&ͅ2}%v-(u4~ :3et'fE M\ QD$K߇b}shz0v9ə6}t*cd?[jHyw)ev[QӅ`gw*~ҷ5tW|;lhỾTi_,JKc7'z[KêێF7Fe^糊ǒX9l9~cK?#^l]IbiP`v 1{?aA >!ZAij=lG|LäDOC>ZQ\l@ŮxwDUn8t\ǿQHdK2 72||jlDŽ\Ȇ<Jlȡ g9Xx<ɔ\ɪi|J\Рl.ܠ<ʤ\Q_&(ʛM,llʴ\˶=ʳǪɛi\\kk(ˬ,aD0Q9|Lvl-<˞g:œ|΄\d+}\'ͳ|iž *Lu%̰ =$Nu"{ [ ܷnmxH ˠ<4l&'Ҽ.2m,H%=zӻ,65}0}H̱8ԫBB*]в]ʜ^գ?ɱ@]8mpY`]v gcf aBApF Uw،=ײlg=1t-~-gmlӲa]ڦmac~z)M$ .ҠFЀS77\`0<.U.$^ G쓣ޠ]=U"![`.xnҗUm\>,qNC_琮l<3^l^mY+vN˓6l>wE~nMn_cN$^緞nvᱬ<:և^"9>+t̛rnT.rћQf\_0.nk?e[}S7^$/),GdNf>}'+O=@7.}!~?R1 @1S_~.3~@s?box,>y^nh0c0.sPqD>yB/Wn^(_*O߁y^;o]aح!&}_?/3&s/_Uo^ o?>t ՟.hat/9$XA .dC%NXE5nG_D$9 (pdyK-eΤYM9u|bb@BhQ'QHʦVBf̪Ynכ[B6%$)ԂSr]ykO^|rɒh[X*}e̙5L!cDJbkرe q˘"\{tҥ*Wlɕ/߉vn*]䦐=wV@b'>X.}S|6-oD⛏oAkxN$N&AC1+M(/`@{akF~Dk@ :ɩ"0/qTrI& M HKiCJI.$$k÷B-tMjb+Bބ<13It"NĘϳ\5L0PB+4>3C^$٤RTS 0[B SRSRuW^ 昮!RMJ^LX|94p>-Ov\rejBDjD*sYʵ^+Ѽ9# WW|V} ўbA]ɬskZPc"`J)9C[NM^d@falN/C&E;fe k5Ii3ͭXEŚklH!D05 7Xj^[%"#WqUU<X%XH*b+6՗m*W!ԚduҪ3O8ΦMe*CC9>Tdek/v^,*NZTޕr%XbX@ 0q`ZAA+BW֭AŐfnk6jO̊vh([Y|0jgVMmSl*u<,kN˽pe֙Fb*]ks됁HrIU_+KG dK؂ͫT ޵8)FF[wݭ/1_sZ$ 0k>>&'Ka* m%ss ƫJ M7EUC_p%k\9fsQ{B`w 'ߗAf](r a U!<8j3[h3TI+]&d7/j.SgAY(A_І6bX/- (miysB:m*ER9iHV0HOݚHﲷ s+=hDC&>frr,ƬgP2Ʈlegz\sBV\ʾvϬnw%H)B[yv/Do˄6Fj%xki8#ltW\ x3.]Aǽ]#%OcdCZyqNb&?>".hMA#FFt==[f3DQz7Xuc.cD.b@Hɸn3'@nk=!_7! ׷_')<+x?>!"qy>#E 8^]GK/y&V75Hѿr}v!I՞<]5f'F xݷjW< W_5˾?&^$/ɫ|_ ҇}7ϸs? ?0Ѕ$?S?!!@7Cp:|@; 9@ۿH@69+:kTLAoH£ۉS@ l(B1:%,@ n=ákȆB+,?I¯9#CAe04L5B;A/:ÁP2C56 8lc0l=BD@ITEVT6_||p? RdblDd\6d6bFD;S$b mTn`B GsDG[dA\\GWM@@ʫE{$klA}nWEAHi$kdTH_G,H;ໂ̼Ŀ6GGlB|IX8$I{E|D<=q܌ťDʴHʂ<JJGdI?\'ڄI8R N^΁ΜΝ̇DOTQO۬TpO$ELO$l Թۺmzk,ԈuɄ:pʃԿ}I,ɋAڤ΅@M$QIlʉ(?eKu|TыȻ+G5D!Ҍ΁Hb܆m0$uQЄxҙPE+˃4MS4}MI4=7iCh&A=ePi?PATB-TC=TD%CFeTX|hFJ,LJ-L-.N0MͅH+5ELU|TS;5VxW5?UUU::X|U^m==E>&f*b-Vc5Ja Ae9ThSVSiVh5T࣪p Wq]C!2I=WtJ]Wv]H͇JBv%wH5uRR}t>ATσL5u]UYU[KUXZkS?eJc-Y7eMY}ΡVkYan5 qq I-tYye5ׂhע{T}~W O4R-L8S|<4ShfrSXUXBXU= Vh-%gP]ەfUQٻ)Թ|YٞڟmM1ǥTJTeuOGDmP@TZ5MSE[ [+ #'@\=zcFu\KT܁\\,NQդӂpSL]SKS6uUإU[mU]TA!Eٺ%^&޾]VVٛT=_ṗbO>aMfffnORM9k>GnmZUb".b^`>YudwC"-z"yiyViW~2~+cs%.hekGkGP~肸I@ O=SlkVXMiز5jXAt]Wiba`.`v,{^e^{63 +h&7C.L]8WJW>dс ͼ{4}m^벵A渖vkU׼krg5"nrT>7XK^EH6a`hM\lKc6 X.hΙRo~>Vd懝dm?im-fdR~nv ëezpnK}œiH?kLg?nډ^R&j?fAFHt0*M;m6!6[pMmU.噝p-.B ߳ >h^_sOKg9c>O· )=QSR+ri6 m؋Tr=kpdh& ) r-g/l1_uIVsXoX;scuφWqshA CG5FbG7rHtmtpfiNO=&v2:ur_/gUoHWWnIq'Nh{J>VZ`'6R np;6tdnt9ftnHp֭t}] ׁmgw wp'wT϶0񃐄ҁTM>S=z4=K?զƬWAzf$׆S=TNx'On?e0{N{jߵ}{7-vw}Gf_~G^׋#O/ӯ=c|A|Ч_?}SNki{{v +h „c!Ĉh"ƌ7j1b"},i*U\2e&M.d&Η)qL*$E2m)ԨMm[>۶njuk>lbKjiivqbvmhNwM.شe l] k,cal2d6sfiAs.h@\5زgW,YQd1'w ӣ%K4}YgΗȗ -:QIR5V֟Wjvno˚K5pؼu}olv->Q6eŌ4ҐY ك-TP>#P0fZk#m!hInĭp)GJ%w& ExF vHx% WȜM:NGݧ^:jw%Yjw@9 OcuMTzMYSyaןiVR4XZCY4:)P"T(F!*O*zG)⣽E:M3d?ԮbT].KV\_^{b]q Qg&{TBB&4 |n+A8Ü3 PEd$41=MtKYDұ!H!.1N=f)]TT/%PE&QōWjYj_?-?kMSfSؾ0QATTL7}h%-џv:nXO:.r7/uL]jRdm&E ${rUwÁ?kń7y)L_{&7|s8P TO2IS09،CR<5:Q-/G:tX+NQ^ Tbvbth.w< |Z |؍:k!\1[ Òy<4}-+s ᷎Q~{ >t1ASغ|*rNE ބW>(HA=T$ZW`:B:\LW@8(TI=TeTr:M]f" TfSQ*pM*|WV(qc-axMmIԱ_ѷ*`W Rᮯ1q`w>3b Ō>UVh'0wHݬW1CyoFj3wu۵)0a *O捏%g3+3]a]}NRX9zlЀwݱrhDjo5>!-n{QW2py@ MErrZ*6eEV,VY֩wo| H -7h6%Ӭ=$Z?St>QTInyۺI8IX9yFUQɂ #l 0݆Gnn< 9Pic1 sYSuXtBKY~yTp{Y/Y|nsL;ŷ*⣢-ڿ6/J/ObG>xnۃG>p8½|[Ǚ"uӨ|1] -}ͫMײE">{S897|Z_Ŝ?Q yT!#TQiVI`.ŻR,b#J"*%qu`"-" J'\=W\-NSH0(:0c.MbItP'0E{1#1Z&T,`"ۧИ)Ң]Ie)\Ż=R3BE+& bq"T[>#:J:cUͣqR dS"1066BC q]D!-rBH-d]=d#%pLƞ7'LO!L  QuwmV?6QL>X;&_FV%Q$Tx|1"UrYvYy$neR:W'%XS]D%_XZ-Sl_) #e"TY^>__Nfa`HoGZ\$Q8)KTNa%eEaeS 2f]n@U&VGBj6Hn4'(vkfؠ)NtgZi9h䩔[ʥTIXrg&Oe>p(~h,ngVM|tZf P`d(Q\.ih&_ #h.V1!,\9( dFY*LXd*|haą9zd& A:z,Ip0†9d2 ̘a<]3hQL͗TbR:} SS:*̮\g Vci XPO[JVLCKW`Ì _c g8Xb@̗<|)WfÚc7 $ʢ/π ϭK_|<[lA@x;n h1c s2 ;ׁ/m K֑= 0JɷTQp% ԟD! ,\?k dF$x!Ȑņb8LX|Œ c6Ǐ i %J-]4vRfJSl &ϟ9oPa@Y,_R=hSSqL8f@!,ZEb (l3p)c 64P!É!3u@$z8ȍ%MG*'lc55MM;6Μ󢰙1 *PNqltd@!,a;&K&*l†BXp"|)faDž. )2I'/ဖ  (Ofp6/9<|<)4Cy\N i SxnҤP'9l4Ub;{i`|kn[8T8`;`Ok{.]( :͞cJ,~xL%0[pX !,YC 8p fj)SӄL|(@a8TDŽ GRIBpF'K& ͒9Pu|4ul ÃƂT#D 3؈uέ/D5׶b'-Zx' |JlںF*,_:;nPԘlp,|^si#}M M?7@zOPES``bߎ}(s({TNM~>#CobEA!,`?%G ;0_0 |qDU( =J gʆ*K|yP;|8d:t43߻|88 s>! R> W3 7͞!5ƞ\{mU2F`;0ߊL(KT1蝻TdSH.vi| mYXSѦ b<`]/ !,W> H0Y2*4‡`,>/Da53&̔|<0%cŒ&OçҤKLN3q=i3f!j`(AF N im4VԌ)])cKNz4dV uTaǒ z)iҎ=p򘩵 qZ>&MIJKƌ8l>$;?,-4A(Xbw=`ϝ7 b~w&L4{3"\yhBKADw 2ؠEƤM"Q!,V> H0`*, :D1| Xq1aL廗q)a;Ni <| 35Dc"1cp=gLSΝzЁN-N i8uJbpGS:-jk`EkX Kw=g߂05k`cM;W36X1j GV ZΝ ڜf`ͦMh"&)AC[8^nnHզrB"w^@C2!|17EIaoEEj8St!QAG ! ,_9H,%` X‡0t p B Ɔ9bBȕ 5Di8%> g\WO(r&*Ƴ=v\!(,]6ٻXgÂJ(a2*"@Pcy`օr;IDy.<ιi0AoVG ˇ2cid'`aÚ&dOS`F9>r*Wئw`R736,c!,\6Yh^$a>S#:L1"U cFuLd.NLf Ȕ*%L̂f̃93% ,2<|J T{P-tӬi4 V9fhݷe㢕 t۷_9۹naMˎv`l eLɞ  /~[0'lu),ڃÂh1!!,Y6% G4ad#:lLXS 6Q0S1iǑO$IqH.%<ʒ]T3NS6W%ŸEA"S'Μ.ʜ'IfҴ) 밬 }@ذh ۳h6mpruxܷf.߳ƌM\w\0׽3(7qs N7 sX703hv:=ssL ܹp60n^')o6;.njmM{{>;G>h@!,Y9# ̗)a%ȰBf̄ILFaC) qńCjXǎG4iQaCt(ȚkD%a'lXȜ:%P̆A.ІS2QR =|LOZvҷkۮ=5@m\nණSX^oz-|c *Xl+|Ɔ]ԫNlڪزLm@|M˷j .\I%g/_>Bw.:69_p;=||x<3O:mi ~@p~gPP@!,YA dFД|*\`Aa2dpDŒ1ؐA6N$IN*LIS]4k*I1'|~68 (Ϡ  Z15r1I zLUXdi5`Juim[w`߻iOg.s+OXF 'l@ePMwpMG'i[wдJ>GJ.~R)f#ȫ/)0 !,ZCf d,0S H AtD.flG41Hņ;yҘɅNx*_͑1ęS(I'b 9 g1FO>]: !,s] H*LX@>Ë JcĊ74p#EON2%ȌKd̓.3Ӧʈ-9Λ$UpMG5HT/V5ٴׯ`ÊEXKPf8sNp]+m\HJnOS\V9a"VzWm(I%ZZzrϠC=:oߎ\~:Ӷi=X+`$w.qPA>+7Qn³1w`uͽh03Ux1NFg*\+M,\=jd]-7>oٕf5zub]Uh_9Yzaz%-NgH)TryZa`[ϋ"ާkqu\H!Ї\ t^ƩcVaMb5^s|&AsQRe|_Ua"i0%@Ojju}V&*T_V{%'˕EU Jg2Ğ6!CwAeٔSiM񜢼maKhbeb]Ӵc`~2G|*'kbq`nWԞ ~pfi!#]E{BYfj uaPZm摪ow1&RQ&*\fzd)ɸL UDZ$4qͪz[l[X@QK5T]@]}I-U{]syE[-VMQ`w]ovjM6p X"Nv܌-G^|g7׋-8~IbKMޚ=q.栃~u"4h:kC~:֩H8'9L.no|נSQ%Ne͝^إ?u쏳xp>w̦7a vK ֔.h!iSԠPik2\ְAQ/l&;́} !.ywABȶG[aGԏx˞-mt@m"tR7 ol3-PM Y[X `Z"A!{ BhE%yɧ2q*a89noѢIYx Mlw|c69ϒB&IU[XmohN@ Fߒհ'1"g:G\@hUpnZJ Gv, Ƈ[Mv+U):Ȓo 򢪭og3\hR@GNth{d*… mՉ~@5Teh@l24aYPmc<"3xb~:2XRN=ɡpLyHix=)zfCAPzˬ@$:F^<ۜضCeF G\HKiTeCHI&ek} +R6>lN9%5zWMAlB}_9L {fG~&ը;[GSUf:t#e ؄ $[U9Y$-75) \5XЅW}/zޏ\GTu^Adp.Ud --ly!k+ǙT*luy,kD*}QMN<[pk$oC'[nZhhC܂hlX! -'N9 Y/?Ӷ-*d |cKެQMN~};&瑿 r) &*S, lE[U)ٴGVJN^/{\"<\5Vځt (Az:FƩ"},R:bD֔hvp_f"٨v^u9aO::.hL #d2G5IdQn3'Wʑpa]b:6[R -\]H{ $ƶhWRDyNlܼ17;)Y0y6s'{_4d;cxgTÚdθp!~33fɂ׌=2wP -5~wG3i=0,`J5Oz嗁?wX}z5VYmtWYԇ<7iHv|o]I} r}ji?Bh. (|Qvۄ09i˻< ~ǭ_es` NfNi~j Pmep_ >>ހ.>^PbcP]=>W >=>ґ;Y`ܳ^뿌 No>aͭ /4=p5O8_ ;oap>WMOLC=Cݿ-X] IM_ޢq;"l$Z{^O/zhO#VOis; =am.>m(__ gpb70_v;N _xe 1 ep#`hh0HE1' )ƍ!;8K>NO9 %ZѢҔ.eSQNZUY"׮Ď%[Yi>K& [F 9# KS3!D/"xMU.nxPe{礀'-4xRci$E'Λ7ΦmuU[ςܹ[ݺ"R1Pt0Z{82ʈ\W-L[l83NjI6j3mAt#L9 +DN9.l "z[-H ˥ /+)kH2ұ|@&mprJ*zʰ,r˵ڂK.3b 3!d4ͼ)3JȦO/#:$: 23;KM/`#&JH#7,+5KL3K9PxX XJ)2b4(2IS/VĘoРhV5f=IvZ+-TSl*V` 0 ɥ^"b'O1ҍ]yͫ9 %ԛHU![26؜mIjvxZkv-'//YK%"̲:S?qΓ'hK'UP ThR9l( 9dƧ!Pթο }r8F36& UURfJ0=LJS}i֦ۘVԩ:E֧@lPŞ;RZuXj_!K}Udi!0Q ꊂHm;{Ʊ>gG/ ׋ d&eا@կ KvSCq MTG}e3ьIQVRF%nS*v(rWtmP5أ5 ].6%)^RW[ {b`j[/IMujQԏV)mW۰m=oOҫ^Һ} xfxcN'yا9v6xWZ{ \ m*TͰ˸&/sudۂ4PjQISnp>|c˿K{e 9e0Wy>>51H+n NiNf<+ZGEp.6WSШok}nvqq/ q\)!es׏n.750CKuQ7N(`OUJqd; oݨR9Ė釋u4u"\+GxVCrgؤĕ-KxƥQ۱fw,":GWERXts_|8?63=D383n]PrqsV^ԓ J8Q]ڮPNpʠ<% x]޹0ڀK36G\;ә ;rְ! e=Tz'llkR:Qv3>eA>8ӇteC}{a{0LMK1_Ok ml0#+@ޛӼ2pӻU;Y@)ҵ S3@[$P7r#$bT{\!h> @64s0$4?\9Pds3-SAI5BpK+2뿕tpB݋Bl+W‡BA0<C$:4? жsC-4@,&$BC" F@P|HK:MĽy|@8e(MD;< EeR|>cƩHEt?,fAGV7w[1 nH3-ldPuXHZJ$ZqH IjɦXRʿyhh#52 {ɉY6r`DI`8=ӫ<LsMZ(JKj0wtG yt{AzҜ{."ñ3 !=|عZsȇl%}SX'uP %$R. 鼱3Og:"opTZ6}SUϥ|RkR\ M RQQ.MB=T2-Ԟѝ[RWXUFS[ULT_` !b5Td%S3]s|V%UmTKVVlAS0=q РtUHeWj}RyLz%|T.|ЛgX}-q5V UQvUwׄBl%(iX XmDkՁXX5?xU9Y ΣT©@Edmڍ ] YeQSVu< V0]LTc }کMЪڎSKڭ lѮQF%[-[ XYm[ԫ}ۿr:[n[nB#Cس4 ȇ(\ZYY GU,!>=UC57]]QZK4 HX SY?[T\pٍ]]Q'N: ^h8<{m̚\’Px!E^ET\\ @SF֍]fK Mʼnd wۄݨ[}|SLf#A5[.Sp^rXe`u_^ k-ޕ|X`PҘ -ӛ۵]MX(E\΍P&Za`= e^EG<F`T$ V8^B"Ec-.E2 26[6n ~c4TCȉaj0vGJnM?㫐ΩddDQ]^DPRN>eG>8pXDKސNs0n\F6C9 ~*6ZlާuZlGKdY%>!-ĜbCNcPu-W͉9ݜXl8tU@ͤTfCf~l\ գ5P._DfG4e:S9eHd(cyuedjUQVV hcBTiEQtO@3^Ph_NXAp ;4xleMv@v`a =VՍi# iT# ~ghtCcUDlMjFK-nd磠;eP pس6i{lh55C.bܞkpȻ<>Rch<]ѩj`-C5~`^jF˖?cco!pG]n)#mmT@FqF^qPݐ?Z/XqrD^u覻Ҏ@qa` 'TJ!S&&Em)=7*&>^r$lPQg FohjvL>9sYfMWB7RW :GbHG)J?tu)- ^gre^ކr0Gu0Ytg&_J[BjK%L-_&if2wYOg@ -j(ҤJ2m'ԝ̦Rj*֬%y4򠱂`)RDH٨j9\2&\oEΌҮhhĩ>J)Ċ'곬'_H k-Р;v/ܹWط/`Ҳ6nijNl2.K g’~Q_lm:vqaǓ?߿/Yu|9Y7;ƵM,A%mDidTDe G|iD_h5N' שVH$ FEIWՄN^UlV}2!IV$cu1t`)xb\z=R6%z5؍LxHǙِC$Zp*%*wTJٖNԥ6S5ŤQ}9c*$9AM1Bj(VɩD 9u'ri4(z請ʊ=$3:)fiܐԧp> Jם:IJQ+Y2Ehz:^+jn)~%_R:[*kuͥVWkP먹@zVἢLVFi !A ,ЇDPGk1ksLe3~[dF8V|2 sWd1v'V3JOmP 'EDku&*3wX IM5_*݌Z\s؅;wjcv"=0 #]0DlԠԳuܖ>pW2whc$U!g/тD7y1u׬cYڴKv |swBc~M|ڌ;9V/&|洈l!c5ehy+(i:b##-%Նƴ-j&Z7}O{~m~|R?qPM➆@8CA!ZqnR⼪naؑӄ rʡRԛpR fzB"livC"*-d Yج"[ 3/~`+QalS8br ]ΒIoob,zD`RphT0j@2`Q|d*,:S7a<10lj8A,*ӆaVIBIX%Y*s$R9$T0bj{ 1Jә9d4i&WJm'Z2*a%)KrJ7yɘ,2dp̖̑O ['͓ґ7P҄TCtVdmְQ= #IwHdHFZva"N) է$ 6JxJШD4ϦrҦ*՘C3#YT˅d#[VJQu+6BY'CTJͧ>rTYL`>^B_S+O&?` X;VB*5![ue7K ˪WGЄ2ʸF7RW_dKRĶYavR m 1Ro-q*وt!liIZ3fzW<Xx+W8ao7ĝdga5{WkȢ.mg_ ݃y˥] ߄hªP"e0=16|E6z|c 50613[1G11jjə9(U\%;W$.1,eX0Uzr'.Ve3 pęѼYfAoJy)blWx=l)qnNG\) s+z5nrǍ-ő^|y: CHuaufg}*:WԆ)SH9cٌ1#ynYO’k5=~oB`]!< /w(_yoOL\(bьCZo3^>,{;g#*y{06RY>oawF% eh|s[I~k] \}To4ە_ݵWj\ 95Q-Leʙ9 @`FmdEI_1ᝰıŞaXsphᔒ1C 7xC5t6`HV`@ƗSAefY_Dퟺ|}B`q*GUM꠵__$yIš!qEY$afa `ʹ-8@"ŒlAR&VaZQEMrO5\)" J]u*,Jɟ-Ny .%Z"iaE D4cDA) 2[!2 X6-7 oca"ō&f&:de\~bD Dd9D3#a=Λ/QeC]c?~?ʢ $x[SmA"dBa)AMbXEΞh9-#GF<_qPR~$d^$KƤL$dM))Cڤ&Eh`haB(%QQG/`>SB%wITYA zLX%%bcM)ụ })Pb3~_\~fI N4!d#_FVTL]0"1f=c1!<2Wf%6geh id7!BkedM 8 V ġY1PBY)fcMR&)ԵeR*'r*Qs6/qze6%?*uk&WLw%XҚI&{*{ |fgf}iY8QB5"58F)*]N)}vie7Z e7ɘWf_{YB:"zcG=v!uR.D)=ʥ=R6|6F6dUnS%.hafݍjyeMϩRDD) '9)hr5Nzjãn)zKZ0ޒhݝgb2)YBl|ff:&5*Z`^eD뼚bf%o)C`(=&ˆ Z+E~frFJ ZŦvfTV~lA1Ԇ쮙nlʶ~lB̢h9)"^~p>/i va>/NDdtp`]TjA.f.njhˢE!Y.HNa.f~pr&Q­~-.4\FE1cZDPE>$Үpä80.z>./,h q>޻hz_!3.D%'Β2Gt qD`R3ı Ô1qc%ݿT!3Nf/{_~TNamuqo^freKr4w2D(CpEpD*ñh3+Gղ$ \-q.cY 6dFZv7gJ{r5_s_5%ܢ0%'SBC2(/*3DJJI%G(f>kC]B*/74E2j$v+CW+ K3%lF''FG)R'+ C>t8t=DK7;E C4g>BYO#g@Ck)RCBDO&2ryX%F fWm6V7g{7Bܒ6M0BuZk5kG>u v@}Ac^bW27p/ϩw*Of.wbvClCG#+GDSrwguzwD64h#Bw0i G{÷*wP:ܳ}m[Y>E޵$ 8XfiR/CDyD\%Õ+bZofEЈ^"h⇇x8m܎p7KCBt&shxk%[~QYC\ZC׮%k`+T21;q%HBDl6lcWvt/2dgvxf76`ۮF'yOTHԼ7JqK$\K(燡:8 ,u^# ma9BP9Bq=87Zzfs(|9:3CFz8h&vGz E9B͍VɳY<(MuSLY-TBfQ,с%9 X6R{52/sEb3D3pRB7l:c!Z5k+j05XkԳu WsJN(.هG;=6;ą6Dkyޫ=!˾˽~ihTv4%~dc#~sv4UEksByhBsW??Gͳͱ3M?̳Mٻ~CQ3pdBr~'D>4xa‚qS bÇ^uQBl8v$DmU6 -V%jY`ǃ6Yڵ|( 3PX/&cKiҞ"dF*3[Nի@ccz6Xjيek Abs+vn>bg5R(8FU,YN "6Au<+tǐܼ&$KSd nj<_j*ѣwGvzPZdSvaö{.\|+zz-f{`B|q㷷K"Ɨ3H 1HtYrQ]QȆMRw\r;.2rg=_t̡i{N)*^ N-D(2$FòE HTK4ړ4G"Q]KcK.YFTW!_̌כBu@ 7CFhჄ-NhڏqjKOFHZ<ÄL}ub]h{jz~|K,غO󨳟nMqu7aJQ@N>Ț2yۡc "܌~1F6$081pBݐJ/=.4e)1v2 rkT cstxHH~s_@"&(0 !DXM ҹL`۹ӛ'! /!)ZBD-;`< i|eR1y bI Mv QBNl^Q b"SȆ)} BHed-1d`&EF8EPzAވO63I篮}Lc>H8}R"yJG %e~i'B @{R !fYrH:u×1(3Bjď QvfYʤ<(-w0@: ^51x2=uNzR d{d>)i bP!},Vt=YBY@n7:-A&/)JM1Ie wwT2))(Sqf mXY51t~eMH Y_rԄ̳ %˛vX47›3?W5iA6 qL| 9ՅKaCCDKwz6*ьJT RX @bһ46ʟ-l; 6sKJ7Ƽiu5_.EV.SG'|ԅK-nCޗV|aW'[Fbfh_#Db.z|!,K6؝_ |Bg:%VlbތGuM$NQ /8idc%ODVRs Ap\* Ual-o\칡t8. |1< kMh5uL5*<̞ejUWc/`6bٜ]X81#cC kBOɧH1Tl6H(W4wdk_Ƅ4Ӊ/7:#[ӭEH-ga8P2LJ dnO}J;y;4EOhy-2X-+b-ZξQya$] OϙI4nզm_"I\5n{[/Y n%p4hG v1ڨ|' [\o)eY%{s?Ȉ/l1{Fu106 vWݒ,ѝO.^qcL.NiUg>x>a^Iz>uB~黚\Mw9 98#{֥dmK<E3wjj=!,s] H*LH@>Ë JcĊ74p#EON2%ȌKd̓.3Ӧʈ-9Λ$UpMG5HT/V5ٴׯ`ÊEXKPf8sNp]+m\HJnOS\V9a"VzWm(I%ZYzrϠC=:oߎ\~:Ӷi=X+`$w.qPA>+7Qn³1w`ͽ-3Ux1NFg*\+M,\=jdf_-7>oٕf5zub]Uh_9Yzaz%-NgH)TryZa`[ϋ"ާkqu\!ЇVWqTEXdbM\n4_"~fWTXla%-m'(ZnF_ml6b~^re͙i}٤ W}Mgr4YZgPgqJazFR`讴gjrvؔt'{XXx($s1Hv}`ڠ\i  x|jg^f[J 6:%DIg#q!#۩EšzڛpBXV*MqazܑkNae ,oRF5ےtIcFZ* U'r,iq 2AUTQ ytRG-uUK Rv2y5E\]3!ͶCU}6Itokcvrw+="-6Ԉu[U? utCxh/zvv) k/nPڱ-64/뙵ة.l_Ä7 Z܇=tCz[F9)8>Q !]M#O=Nܠ^76DQBh!_gő Ux%*Gq\ۈ8Mk8d{ƻذe0~cHg>ӭ'yͶ7Y{<t )KׇZqIת9 L۴NPB{ {c.Q۵^`۫ i[{s*npR;'6Vh1r۷~ yʱJ۸y[ !뚯Km۹FʞG۰"ۺ+y{+j(ۻ6k6kۼgzNW{* ˽T";^pY{盽K {f軽 (ڇh)K*{""<$|lk:{1%2<îf[0L{KB& N,nl>n2Nlp(N7. 3V'BL>~KRjm=0\jmbR+fNjۭK.|n.jinޘVo~ cx~~^% έ!܁] qmt>֎;}]V=4>J^0f'1~5ľM\>Aބk3PO^%.^N. .nRN^=ٮ`;>2콞k⯞nO@k  .qF@?n?!oU%0+/.L ~9܁}mRM.=o;?KSL!? NkT `KX^o`/aA |ٝna- '9Quwa C?l_foq/6lT ܋(*_=Jo۞XT=k?۪K״pz_ܭ+Ǐ<_%?oiٯ_-܏? |Moo]PM ?M$XA .dCMF,E5j̸gE$YD)UdK1eΤYӦDb3v3_ΒALvQI.eKas%sUEnWacFXrUʰ'[qeITVH_'qTzn%O\]> gСE/-sέkK+ml#6"8Ad6:}-v/psihq  B̮1 EቇKah1 (NC-ɠbxE,fQ[bE0QU FxF4QkdcݘFCQscxJ #zcG?R~| 6C gg`xO&M{rby"[Ldbuľpl:\֯Ls]/uDE.c34F=!CيLTejw#UY˩ [9|dC,J#UZS!j-X]R%Sa `Y##0~L̆-0O$("q'^Cļr(ԼƘzFUM@l(4Tuk4%4uErpA=jd|J*T&al0̙%sjn.Ie#!cdژ!vX- Z o,*زo[[r7(5+}#|-F8i(rfZQ:շ..fpm\{D?G·<V9fKģhHlhk_)mu•Yd[q_V^K0y9ruNV"25du1=Yʙ5,ȈE-Iaø|$e44E5Y><9S_Lg7=sr9ww*nK^z-Gb KbdUAg_*D>:SS.W[1$ 1"FBtM:_:ܰP-Kpq?4=R2 c8> <>cf`> 3 >>!j;Z̾>J/f[ ! ܈?iի#sqO!79pkC BS +w1 Hȣ9AhAٔ ԼfÒНz6L] qHS6^dK(  >N1đ!ȵ"'yI\4=!m4V), p 1\̡:,J6TZ:dH?]H@ VTetE$c$ƍXKˠ8&I[Ӳ =0{8L|@X<-1 #XʄT_4|C֢H˧뀙ҹjF68k8 MԈv, ̖<|ͫ6+L(θ9RV2HNy@X, wN\ tH?K? #ϯLhZt$$)wB=۴ϥOM  ¬\{P4>{ Y q̧UL˔F/B{bѮ @OsQ$:M†ج#=G+'kͻ<+PD33{漎T\VɔNjAȒLmƒ`FABDH?G$S4D;Նl9½Sn#쌥Kˆ& ,3{E{\wi^TL [IJU) 40UxDUGluM=ʡ@v 5Y#9BFѡU}I5ԑ*=343{]nGm5\M^z=dP^ MdlbP0 cfnFrH[\}܃gD_|{থ08vcQ&>jS9SÊ΃P8j_6A6UZ`]Ztϓ^j#[ h&rײU j)a9eydߒȽbnǔ.QkB(b+Ƌݱ~ k\1fk FӾ "F%cne>fZ(l!|PjH훚bbV/i| Б9R%)0`V$香 !,T$6 ({*\OށuJLs'NhFu"{",)|"Ad9:1oWw{O42Aa0B5Pz NN#))X٥N1lH1LSL1ˆ՜y;C0ŀHb2W H)HC!gT18xs0,1QOhQVgL5M t%XND1t9ЗXfIPwP)gXuLnWvM%vD!,\ٻXguk Ĉ+#Ňu\ Dy:NcqݽV|̇%sjy М:PJ:]!W+\i kG@c˷Ȉ1MhObў .iӀw@K|'nŷnH;IC6(|KL :!,\g;^‡8p!D'VxPb8'G!@^$ `A6K1 ܙo;|)p's=S)MGR͹)Ty+.V{Ҫ )pstp뜆T44!NuUlE;;7W1Z%Hvw 7:ojumi[w€!,^ٻXgukaĉH1㽍 ;:o4+ $tY]A|ZDxn]L9i"y3N=;{ pM˷u׭ nг`u( Fjoځ|U{+s:YM6b˃ŷkw \)ݹsʍ|s܂!,T@ H*xÅ F!DfFYcHn<)pd| Y(sf̚ S9И<ӧ4cA }TOfL"uԧ`XZLT]kn%5ɲ ˚Zj^&,[tM!,^ G$x=.w`= %˷s1(G"IdȈpeŗc /_ia.Y纇97\QFH j\ `ݻ:#sn̺UԎ`bzt$I%HJi7خ|NGvpki`YTlS+/g9Xz`H%J]7-HKp=6.| {]Ԁ!,e& GA :<qd+JL@>` 3$̤F+ٰ0c&N#YOF7ѣJ6-wstuRM0)Ѥb*Y羆2Z{͋0p50p˜;Ӯc)aL) ;1-풭|,@'(:ۆ!,c;,0a0 640\Ăݳ8cCy8 6qݽKD0wbNKܺfN"y|1sӦ<2Dy;n Li0E6#.%{6̘AF=7Ԙ]ѭm{]5q y+ !,`/!ٻXgÂ8)Z41\Ɗ#Èy0$uW|q]JXD;|@0a2l'Ud&TӃ=%)`E "jٳa w.4{B p pF$ Z '+Tf=Z F43fcser2v}/#}ѫc.(vmsm7إmamcȑa5Q !,^!$ٻXgÂ8)Z41\Ɗ#Èy0$uW|q]JXDXi9g^pϠ;!]ND,i犾p7; 7^ihíSҜE׵ \f'+mԠ<7-߁IN GѬDOM wY3#ܹ ^:CfYNlհs6ؚW῍#G^p9nf.}AyJ]9%mDY.(a}ysϨ\p5kOmٶcN {iܻ{y!,\ٻXg|8)Z,1\Ɗ#$ˆy0$uT`I˔2i\i3axnN|@urPOAk-zΩ<غ5< 7޴҆[6Gزęf'4߁L߂i3+12tbܹw{ʺְU {6mֶv;w! ,[ ٻXg|8)Z,1\Ɗ#$ˆy0$uT`I˔2i\i3axnN|@urp.߻|>I/%2MWs͘ϭg|BwsBu4=XC\iNn]p-(tKn6hc՞iB; i ss[Yy;:MzҨK ҮM[u!,VٻXguk Ĉ+#Ňu\ Dy:NcrA.B\2%-ഛ1h΂C+๡4u5\pMGup `͡XUwߕ~k(_ˎ-ڶ!,W \'8G!u6tX )VDu|G{(i>'cά/u NM s3Q % hs .w.(pӶN[;-:> P&u+r(޴,ꍘEFofx` im{Ξ߈v%G0mt{6K԰c%-ک↭{wľG-!,Y! o3u{9'V4x1\F]Q"Ȋ8M#Jd‹:;<⹜; 9џIUFLUYH@u_u<nMϬGGi;׎i5K(>#{qZ hn n^{ lu<9ɨٓډK!ݛ!M|ď#=|9p:7{zBῥS`@!,^{" 'XG!uk Ĉ+Z#Eu Dy:NX{),Y%ʘ:ti2<'>9 (R.%zgШM]`11ܹp!V6}#Vi%4C5^6 +&Ge?B9!^gLn 6XVw堄EI\ x4嗏RJe&zIEijvzV$^Bfz!jkJ}_%j 3 flV8dsEk4E#kntW;ֺ-e5kNAUaʩr "0:{ר}KXZ+pknnҵ|*n^<(7*ߪ̄ۦrlz)Q0k<1²<F+%.4wi(zsO'gR2&(w 6e[oVQq=!zSfG L3۔/:˜ڌQׄthɔ &'g%q؄5]c9rOj*fxp$=Ar?n&m,9x>hٍ.5x|2߹Ku sE ڤ"Ar݊L)lt?=ps_G<*.`{IXh{^ CJyxDžxT&7f l/ "f!e# uM{ݪv=rAqzҢ'ŸQM gH6lswӝaQc!Dw(C0jdʥ<}+t6)Qbt! 8rcD7:Y.'Qt &]:RH3! QJb78SrK$!QB8J2lֵ 9i>0YFm黡+@pu˚r湧ƳdcrL3 fߴ H^Ě)LzꋀЋAmXqO)،ڹ*411)JNSV?gblJĨ O@TtyG R`hP"jM`S>}_%KR*S456݌L'GJU]UڧrVjDTt A-9Y4+4&2VbVJHʜDMoSVFv*ɐh5GYKT?o\r>4"3\[I9JUSqXַu-eHV)T[KޱU,Gd1ݦD1(زbXeSQ z:wܭ,p[U^|g\يDءmj9U}^05c"XqYk׊70P S`iuZ+R9 Y=W"#vtU|{UAR]+Ao~1Ⱥ^Ze_]jSqzWnfDqܾ~zLwrW_XyfCu\GfF/^{:i%BZfvg{>&i+enhWSPqu5i'iRkZw?}7~c4oRft>fzD}.uYR=eOleSP{G'G'yNXEc[H]GWhQ?XYN8X$ȋVwbMU͘p'EiQShPIU葄,yKCwY+#) rAiZQIk-]fɅIsы&n_W"[ m|U=51IJ^XNmE3qy%u:իse^*9JZTtZodaj\do(]ʧk֠B8z ] yzZuZb ɫ%ʨZT̥x&Wc{cZ_iekcWSaڮù6Kd*9*{ ;[_9`j+ʨ*9հ;)Т=_HU S]Ic9w[֞IA?6h,Yb*ױ&i[: ;+yZN;ֹj,Y*!k:f*3;kŪӚjV ˹ձm [\ycr$GVp1cW;u]A6a k%ۿ`!m\ ` oѿ D7 P,KCrWUDTоcvx0x\e787<(@B\"ž_CNĿTo]²(ovKP^f}ӇhŘWyln5&X[U&';o|8[%flo}Ȏ${flWL^q껚+Xɞkـ>SlɄra'ɟʮ|tQh+Xu"ȅʾ&~sVlv}W ;D˩|̃é\<0>\΃wT\ ÌͮAߊ|q:ٌɾR[ ,ksw U=鑻m\h},X@}( f"} A-"}(<ܼ0} -<$+Z薞꽖"_1bQꓮ䪾0+T=-cR.h Lб&RN~>ގIՖ߳~X^!56Ma{.^m;}⡞]0^/?3 ->? cQ^O(_b\ϐ-ي^O$&oJ?"8/-o?"GK;N?{>X`?[Pog)lIt?^]Sܳni1_]o_MjPA?@?^C?.'֏?1/5O?p֣߭j̝PΟV8_O;҉c ۯD5hSo8,h0h#XA .d,Ç %NXE5nG!E$ɐ)Tȧr˗^dΔK/9 'BLQI.eӃ'S̷e-4ؔ9`q uPfծe[$STxrU^jz,د9U6"aĉ/fآJ)w/^~)gA u\iԩoe}N>Co}$X*41]۳¥O^] (_w =ihgcPbkr,<p@c%櫌%QN:;?*B 3t.t;?l0ĢpE[%jI/fQw<_E/l7}:]zEOl2+c$YOs<[>NiJ]yS-ըD9jI1Aeғ.2җ>3L8iHش,ހOtmIRaH弈T SUQ`MMO ՅL#GeFÊҞJHHUejGzbO72տ"ajXUǐula ?b$v, Zְ'(b<+fVJT0l۾6MlYےֶɬP R6$o80]{\ , nh؝00ܮRM"p{bn+_W lA2-~ ֿ怟K_Zmw%`hioa#nW"3@Rz~yQw$&;߲">pC gx8^[\ I2I SD.Q `RRLxpK-S  Bq #z3' 9!iVDܑ(~4M ObftPּJ3EjDPGRW[p[OB_=@˺Gx]V#DPƞ}k;XHC"ODPHlhOAje3٢T$9BZjlD \=1S1GEoұXG0B =Zd;nJ hCXkr u>r( JȋwDNvwݍ 7in8(sΑz Fó G[~u$+zbZ!r/ʵq\Pƺv[sH=f{WM ȻwNJw,v+wr ~78~`^kNva~'NpݟzOn;be{ppxq[{o(x_Bߓ?ˡ8 ?(;?=]x#1@aЄ8@t?@@J|(9S|p?# @÷@̷ |A8c@L !#<B:`&t'(L?1-lk.|x{4E6N$ , t6ǎXE,@S<`LŃtmAܽ HHP)HæIJ4ōFt(HLf\el>I]IDZ5nƅJ^0$ʄȌ@SW\4@sNJC^JsOHȂxK6dt#D˝T;yH˃H6G^K_DKDʃKmLKŴ(LU4B숻\=Zi3J7$M\Md A m3M[ M͊T#CǃHND@ɹE ƞԅ]KCCQ O4M8lؔ Q|NߜOOO4OOOP-<|8N5F0lh |L1NHKS|DxLΥ̇DOL;lQ@tO|>OQQBS -Ћ R"5[,_8HȈPPT DyǜTeEUR!{Q4Q@Q8S9X"tS=m#=%䜄xRx mCJRCҶ`I\V[0m4M6TSQU8-Wc;CUS͈=%mPTN&U]E\Te`̄xD޳V8\M4TjրMVdmmXe$,hW#IZexbv@w 5ʹ6IֵmÝ+ImJԄ+OYLeS4yXuX諞5PS+PEXBWِ$XCCȅ4ؙ2,[Q0q ZSS-(Z)K( 3;ڰTP yZ8Y`= ˕5V\VW׳0YpSQ([-)v-\<%M}KZÅ`FkXYhY-M܊(X ^,[|OQҍ[QiC5ĝ]eُݸȷGj\u^[^1\ ~ѭO`.=>ےڪ]}L\]H`_^NJ05M͇] G Ĝ\]VmV{;`".Hԝ5umeuB`A5\ZJZa]Evb]Xc|ƍCͰ^4]#ƈ-bhkn P"95)0hhsj,&Mdub&g96ři&\Ů.;a.rfjhӖ8&iHl}6}ҕ. e$k鱛Sn,$TllPRp6h1mN(lv&z͇۶m>L>Ʀ&V VVClN [C~躕.pv搖ޝmj°JLT~;ɕ섣FCɎG̫lxɃNkLjqNa^pnpE0C|Ų&q5;kfo?::^ήN$So1qf12rL r>`Ecd>]rIf3Gt>;nlIΈ~j/߻;h1ĂxM ٳ^GcP3ꉬ-a!ʭ;73ZFu .uF@>Od#gpd6tE(?ގX=vﱶH45L;C8 nɈjB c$; uˇ;?bRǪFwnRPՅ炰`CQ4t7f2.Kn0su;^tƛ7,uh[P$$/yϽ~yPDsWאƤtpD L&IP v8>t{qtnop=ĺO<"v%PՄ\ȕSbYk~'EPk ,&YDTAuRL.9?5|{EgF)o>g+gAO u~W9{Y{fcvP$Lt|aL-6&E\WbfwD/IxEPj^Ϸ^xD$pWUS94G{ jL4+hР Tx!.=RD)AҨ#GH" Rć=l%̗bU̖8<8V+܉`l׎ӥ6|Z*~-Uc|i4ۃˆ$fAuݼ+2̷pa&]bl9fわ;fH1T|#WT0Т_^egřEQ?5R*uZjS]ZVd ~Д .W9ײ['Q8/.? `-"6+VM<D*T(+gBUA}%k,5I]㚂MCoPaSTR4X!MARs,(tYvҌsK#xwiԞ{-v~ZFF`$gOEҕJj)bCY(j8ӇK6S[kȕW[Vt\SAɕLe7<,aAl>V h]Xധ@ǧq$bAh+ᱏ_Yx,4 s QW΂ X 3TYSN u]b%6T(1'ޕs0ACв(b%ڽ:gl!!ޘw)NEШ1CFMOSb~+HCSУfl&O bb[#݋]qΚS 9R;άč }ARѮ UaX U}<9lutKKB>7;Ig<2%jBIz0c L^s<T3QZGN밻KZM+t=nnCKš-1,\ӕ&[8"׃.xCJ\lXNL"UabZ2!+Q6ӽo&Nu+҉w URE!r`SHqXfI<~#ȅ+bpp+ g H RWeU\W,dh&'bI+[GIJȁZU{2yؔl1i쵤ZOY! /wR!$:Ț h6qL֖tn,{cRKjpD8MFЎ~E}?I1.Lk>HW$T͞МQq:#沗'dV6C`[2EBTLSaY ų8 >}{Z۬}Ѐ!,\j L-*XpQJ0@CnaA!Y4X@8%Z93U{/JeM&Mk6{Tυ?[wo(6!isPS؎wN0MBr4mز[U]o&ZywŒ+N,1ܹp7ruýs/IVs@e,Uw뵮8Dި:㻿Ms.@yi[jmkpڝK^`@!,kA< H*$D 12d|^(F r$ptcG5Nh$#dž,8#N@1HRȑo~4r`E%E$)J-A0%W:3C= 4)ėZ\b6:Vؒ9}wÈ+^x1TIkj4xЌEicSNi?} sϝ)1eιoe;S׊T(෩7uUAԝxhqdb)hfӫ_>=Q*z~*tX~06A4aF~Ș`> ^B@TG| ^$a>df Š8<@)DiH&L6PF)TViXf\v`)dihlp)tix'矀9"~:`&蘃.|:*\Bf馜v駏" ꨤj*cꪬ꫰무Z뭸fPpX 䫯 [;l {;P4;вZ+PVAn+P݊k-Ԋ5~[~FkzbY.BK[l&6pײ.*,m;m(ܰwk2G+B+{ +lPҋ{< n5^K t +1Ls\ޜrNÜ5K8Fbi|o-!O駶)-b#L)^h * B.9埏y1䬃(}~:#Thj鴳nK2Pj{B׮UsšWSCL>yxų"X:ѭ0,T0ع>/"  Py201Ja_A4VHHưow,F0~]"%~nz.EThx;C!-V<%ATy1@(%Qe(Y'JYg-/KLvE(i;#;4 g=)T ԢdI@1\9tfi;IOs3Gl+Ny&&j4H]lLBDo!L:L ET(B4^4U A+*w=(J7j, FfA,@,L^jR$R]E?-TuՒ,gn'@,!rN/UaQYd^vIa )4 9џ[?Kn>+f_ՠ,d\ZpZJd5__i>s#R%-Xir/+O s6WŦ; [Jгvd)ۄДnvU2?U  TkhyNwClyWl'J[;B f p|/f /XtݼW=th-Xڗђ,OjUmpKǮHVDi2{d-<Ѻr(iz/vf:bs1kmaW4_`-Fe!ӘL,={}Fn};WǸé 'B0\1@;K8Ƃb^oRFskym >KUp`,:8z_jÆ+Ʉ*xroWD k?Y~ceYS9Fo>eQˁF5mh]K l 2ps$9N:+˺ZKϜS;%>b{ޜ P "VXD14nY.6velcWֺᕫR/~,vBڼ^sXw2, "PɄ6f)n)[an;?5ϠUe؅5|9u`i=X h.ro_{>>v1kR{~{u|=[sޑ?7{-' x/>auCpc+ϙuǖw֛])N,?Gê L`8@B8DXFxHJL؄@h0TXZ\؅^[( 2[0%ghUl؆nppY`Qu|؇~C`Bp] ~` m0 RhDxAu\]2}ϓs8%` y$!cHAAI‹bUP9KPQ8$!Pa8wPb# gs]$U"2! B.dx蘎긎؎8XxȎ؏xF4T\$#:ِi8yَБ@+Yx\sƌT9.0X2Y6:ّ0YZ0$ 9TbJX%3ȑ;TkH1GrGi+CKY$;I;9KZ$*R4i_VxVA^7[i#k6ч8 ֠p 0 ր&uX`"耗y E76QB`U tp٘@`` xKVxЛRHf)=X1ɘ. 1ț9pqi#,ΈDœC\ø p  i` p` @Q ` + `yk^ԐYUCG9$8gpbsh p (!p YK: ` ʀAj0 *`"&Y;@ )S8 43#친#9 xڨ:*P f*y @0 Uũ) S YګZ9t~:ШZ і@ /hsؚں `<u p:ʀ2 ʭQ0 `Ѩ|.Y[{J*J ʀj خ*GZ;4K)9މ#\ ^`gOP ɣ>  DjIJ*Y !*ХQU@ p"v%7T@7# )~ȩɟn0z *zJJn0!j@ !mݙVE\2Kyʀkyv*TrK%5 '%hʺ{x4~)%[ҋ狻ۯf+A+\Ж{Ҁ{< 1[MҀx:+,%l$꿍$ "<$\&|(*,.02<4\6|8<<,,$<9@B=D]F}HJLNPR=TPm|X]Ű^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚL ْڢ] m(ڬڮڰ۲]Ț0vR۶ۮLں'}٫=܀ &-ܚܸ&=͹rR ] B @ s A Ӡ ;P q wr @ ]}߭ M  >>^~ ">$^&~(  = .=4^6p:< g" q ~ P>Qn䭀)Z\^`/>b>f~hj.83k=>=y|M>N a~芾] fNnp>n^t3( +*@~MA8 *- N豒0 ⻎>a$ͽ'`p.>n~MӾ p^B>%ϭ%֝γQ#n1@A@.@y^.#}o: _N\1QO'> o@~ @#`$0}9bR>?X@&*_/;؞$LnW/>)?X_'.~OhoR6!:bo/C4o~_oOo?7#x%}-Ϟ1AfOȳ!/BO?'% a ?^/AAw" S4$X0ߴk-dpA!r8D0nת#G!E$YI,(,JJ(QZR`M3c3$I/I (m۸[a§^lH'ţӬ(2|`%[l>k]̳%wƅ4"*y.mjV &LxaajȮ,be5GLAAowS낋CF-\۶B٬#jE䁕]dgЪesO-Um *) $o{%軠} N$Qy$Ak( H2O 2|3$"OJ5s29NXdQ ,EK($@и䨳024|Dф°$]K#OI2l*#:2q!G[گOXܓdla$&-muQE_wQ"ҡVKG[TPRᛏSIfkIH#u)Oa\5vMwI/4f_b 7b)h\!ɬeU*قVNj 7l#vd}ss#]cYݕ|9כ9^c5H灈1&`FZ nibd(R}6͉;/M0JdJimFRn;Nr}w5fwq|^\`\i3|s3$`΄LFF/:!ne4fcc J,m~ ֠2jւYE g<{}f~ϼr%bJ7W}IvTX3g=w (V]c1Ul ^Bmn@*8 yqB4E/g HL{#*Gm}.4 ;>}a::.?\p,I0kD) y 9@Be naC$j F62텖+ O9CHt]>|YG |t]Ű#&Q  ow+d3}2$pp`'f$Z|q$ËłddCaM88ю dG\ H#TK"kga^퐑f;U%k*'UpnْXg ̌ln~Jb#&]:C*e GR Ĝ@TYdfZ;hANlZ(G R04)Q3vS$ɔ5B%Dy˖XcIАHL) zi(J̈ FT d`8?U9˫0M",N<$#Y_KCF?eE7!&A2Jl8mf3XrU31%X]J!rd)jhXUy_8 F*FJ($F>tdk OլO*H>dƘ͌1/ߺDU~ UYNƲ|oIXb6"/._O Sv#H( ,ĠG8(TJԩwE.\Cbn˷G9\|نO#FXsYvVko}_rذzZ֛e*F[r2ŋx*^LO-\H ǐ P! r[YXHz##4 &LCiZ,bnM"?ڦ2D~$(9{pvV!g1Fg<)wur*R8@r/5f)*D$h667.3eo Q즿B2pNdR t$-'8>G͉"/͋c"@z-7wPwi@jbo!)J(Tm#}LK[{U_VpfƜcgA-2=O9ݵT d'y A}!W)2Hx6{d<[ gxlZk&xhqg\;o\/du\+I].W-hH\꺙8]Խ#}(^u%ig{v]W~w]ZIꤋtQSQNE ~ D]fN3:}!NI5zԧ^W}]z^am{^}}{_'>Y.q_B7tO{|I? x_36=H<5^O~IW['/ήuO;?fRA/1C$ ӍC$@|1S@y$+A !,h?; H*$8$%!4B1+ZP ~dEqŗ9 %GJr:葡̂AҌ(eLJEuɖK:!ЕSykLJO2j5ՎT[1dט?u4ۧQK +aԧVW&]HÈ+^,Ì ĘѢ]ԻW)ϘFJ8ŦEݺ5!0/j95^{JR%gEL.SĎoG;%Z9CB,BHR&ZeW3^Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8$R|>($H&L6 TViXf\vi^)`Yhlxfo6B YМi@Uйy駝x*@"JAgg>'B:УYڧ*j"H㠧6꧐*PKl>2zh."鰥筩J)&[XJ;N*+*2F*n믩."6/ F\ Q)L&ܰw {,ZyRl2a'\F\P sb6s;3GӼs-0 d6xE|[57;Ha']y_B{{b>0Qz/)0CFxlGUCH g |[H AA~LB (&Fp/`ٳA%JP@8q|࣌+d@ \l#?HE v`|EBA$H WD5ucRq4# ŽPs\4*b[Ir612Xi̸Z1KQL*[(#Al=ջZɽh" M|ꆁ(Np f9xq։@t2N\@ӝ;\cY;aw4 ;H#= 4uvY\bLMPs_9B87);ǚVTRPJ9`G*7걢D1ZQS|w$yQY$y4SwZԞQv*U9 i;=Ǣs!"՜* #>auC<˪l`Iq6zP{X*pTc Ø]܌Zs^eFRՠ\=.Uӏs-VkڞnE( iL]Gx:YwvioZ6wk{W IJq6'%OW;:f# o6}hagξW%,pPr4YQ!"u,iDE@ 6}rFQm޶$fR{)J^Q SjAsg8&AmF;ISҏt 4M3ӝtm5jJ{ҒN8QҐ.?p#ȵuK0[ZԿtOMYú>Me (TmcZt@0t S$C RvMz>>~8)O .j<u/ϸ7Nz Mqs(O-(@_Aȇ5RLJOjspP8'qPԧN[XϺַ{`z;AmH5 n!e)8z'h Q = ^ <)/SLP}G}gO{KO:AD^&orzӧO{XZK=;ЏO[Ͼ{Oj *叿OϿώu}βVh5 Ug< 8@hxR 8HebWÁgǁ|bw|48 "h[׊Xᜱg Q 25:1ȏ@ )99 逐䀒i ` 0רy p@ (f!F HL9€.h{T cy phpp`h@ gzeHA `ɔ9)raz)(d"IjsF٤wB ?I:ؗ6@LHئCBaQai*+y^P Fz prRD ̰GaxJ[zzGک:Zzڪ j푧R1:Zz*ڬЊ!{¬ 1њ b[ZB B溮;rzگ'$;[;끮. ;[{ˮk#";$[&y*,۲.0;"4{8:<۳>@B;D[F{HJL۴NPR;T[V{XZ\۵^`b;d[f{hjl۶npr;t[v{xz|۷~;[{۸;[{Y" ۹;[{ۺb [{ۻ;[{țʻۼ;[{؛ڻ۽;[{蛾:" ۾;[{ ܠ0ҿ<\| L |!Pr, 5b⻢3 [ B `@  P /@ؠ2Bh*j"S^a @k-݉rA ם^D!eNH:IIJ0+ W^^r]cL̆[ƈn2"k02S^^"雾^~مN.g'ޏ"Mй"|N:m =M؀ y-܇(!o0. !U>* P"9N~  O}׈Q~ .瘮ٮ ܰ nQ-% nL < a +N!K";=*o.~2==_zXP5. %tߞҩ äĤZrL(\x G]ҥ6[S-;+*B:N%,Ғ)P<Iכr)DɣTJKά * 5F,_-' IMҧx5W6i7QB('uoeR5=*\!< ԬWQP;Z\rbդ'\TbS]|l&V%k*kLTVZ._K<7]e-#y㭳5JcqC5|P69Bxjw6(c\ygbg עnPz~TnH(ne^d .PWW heQ٨Dq/C:]WgɊՠ PVPwq.Ìdʉ'AfAWl|7э(ajvvJv2WH466/j#v o7Ǣ4:R$d! yHD&Rdd#HHFRd%-yILfRd'=IPR$e)MyQ!BPؐih/YhVZ (IOdJc6䗚Ce \-fWK]!nn3 !,h=; H*8`ÃFlQC(٘OIG =cɋ<,I"|p5frA0 L92F'3~P%JKzTj2˕7rhGwD)ɡ8qn=[)ڔ" IÑdٴkڬS=T*rŚU*^̸ǐ#娒Ċ#HsJςu:4]49nii^N=cAF׸?b<*Ϩaf 7i"vL,>ZkiƋhQ҇R[c#˟OϿ(R h& 6F(MhfvX($h(,W`0(4h8<@)DiRL6PF)eJ*9X(ŋYde`)di&_U&i)ti)x矀*h|f(E X mϖrYRY.視^e9С§/F(A評.h 6Z롧j*^jiګ6jAfKlz>V&n;)[Ĩ@-AUnk/<Λ0 0 *ïP_L0Ԯ rBZ0[/ּJl a*17H?qKb@c''m-r[5\ o85AcWVuB|6Bc?g׭@jPxt ]A)IwqO8َ-._ԓ[P{θ yzhssh =wݠ^ݩZW^9n;5cv۠~n<'|l=L:O3}O+w90 :H萆]E1~a 5i|-h 5| 1ta18Fv#8Ijђ#&rDLc'Itl+*MH9(G$ZnrL\¡F` "=Q1|%B@>1fƺu)uT`]6fiMCu})X{#xLp|>s6=pRsc:*MӓcXKw #MSiTT?Z阔d ٘mbF;zUkVʠД Bit2r8G>3&)RR5STN:},$qєbrdI?Y.P_p54m_%YP R-i12-G$ )ҳ,=hSt!u[L>um)G Jlllk) V^B.ЯskdAyQMvYLnxDB%shH4( -|th(K%L!FCyS9ȀâhK\ԾEjovmn_∋l}n܍ͭqfnv3V7lҞntɀ+!l!3?j0gN8Ϲw@ЅHOo.jdeW.ϛO1 gO^%%Y/ 9"@׭LoA.o|'S9}u=B<}ȕ$?~߂c e 9a8Xx ؀8XJb 7mu[)p"8$X&x(*0 X~0$\"$:mR@!Dg0'ƁBug=AXDH1XTq~(psThf X aT%N q9N86=0exzh b~A%%6(ig` @a` Qe΃"9Q7 Hs84tg@f舐(@ g` )6@ q@\1<!q89C~.0|Q2'"B%PxXQTfsHN1Wc@` rP0|0P;+@` + Iюx84 Ҹ{M4 n` P€Ѝp YS9 ` @ (p ` +ʠ#eQh49@ 29873(s(maY9Yyٙ]YYaٖ0 `YP  [ɛbI9Yyș{ɗ]T94^h "4K9ɛCy )e 0p iHY)@ @*䙠 !0T!, ։MD(0pǕiY YYaI ZN (֎"*ѡHZi(v7E ԐKٔO9RIri ЍoPI@ t`"H2b)8xaApEeynP@B;D[F{HJL۴NPR;T[V[@Y7"; +˲W[f{hjl۶nF3[# J/ҵRz[ ·~ xk ~[Ѹ; ˁ%²Y۹K~J"+{{{!!뺸rqv[{țʻ6ǻ q!›{؛ڻ{"[w[1ᮊQ24)+  +{ۿO 4K l;ŊQK }+b&L(l,,!;0; ^5<"B<a+*hptSLDq˾^ċA&l!+ƺ[G<%#"tl*:9 B:Ǻȋ1"<nj|zhAɕܹ_ϋ%a2ɟ ʭlO<,!~\˦/FQ !˽! ̜kj̐+WN˧l_<c\L/H!K.;?1s`imHɜJ_#l# ˷\}]<|.%[m-:|#z( <]24m,:m a 5BFMHWL#<O Q ؜"PYՏQ-К =dPAC}!+A1 3x ~zaMg@)-"NU8;#@@ؔ |ِQٛ w|-X}ڒm-ۉCQ! 2rk۳mAč5-ٰ=m}mۭ"9 }M6ܱvCm3=}|-$ރ۞;(PB'$x"".v> 5#Hs:MIc᙭W#<nߊA.#'#&*fq,2.(4~#"6>!7l$~$)nA ` ? R~D1~Y:[WB6)b>';bwMn^'-,R=r4z&|h3$Nd;r.&#x捎$Ԟˋ1 %` 靎%n"~Sv>%#^NU#N=w 쨎."~^.>#^O^#~ОT&05"#^ryPbNwNN$^A.$#@b/#>"?R#/#N>2" &"`NB"2o#4/O~#),Al@?#%  ?)b."O'&O/#W%A2 E"B_o":O  l!npo#0~ $}@#no  #/9"#KϺ :"# ao!4_cO#9Q_#O B !!ِ O#@/"א_M "r#? ? +" 9? $XA)DC%NH_E5nG!E$YIUdҥGe_ΤYM9u9ό2%ZQI!RTLZ>ZUVF<80S֑S%[ي[#ժbΥ[׮Q[[л&l2ޖ-+*B%O<0iVʡE{X3At2.x 2iرe+5m!nq?iZi@Hs󦖘x{ĵs^|lJކh,ϧ_sGkp@@T04Ľb pA +6c&CKj2-@ qE] ξ:sEs\j=f"$QG"Đ ?h"dg+I*h(a{ !mjc/JcLr22BNV9M<'LJ ́jlePB mDUtQF5QHeJ+ d2tSN;SPCuTRQ)R3=uUV[uUXcuVZkZ'US)usXbbUvYfHmtZE =ZlZB%R\w\r5\tӍUWXUWxw^z7^c}Y~(NP!ƆНH[PnQՕxbX[ %^yX^-y Rx 2_`3Rk+8+e~Hq(g 肠v6H`JN2&r Hj..2:CڪS) Fz鿵in+ ;r':slj[E򷩈om3B&Kt]2Nɵq>jW.gvʮ7Fʴz#2xxJ!"ZkOz*%S\0Ҷ7S#r̙#[ gѥF F^BFMpnIIh5C`.I@Y^?ݬHc.e wWN8͙#Iah ρE'O|B̉o>@,!)vZ@Dr7`Y&yM0R3hDBɎygV1`%1)BϑF%HI)*#+m3A>$aƦuBd<) {Ntl6CCH 0r"!iS# SEjT(4x #UFVU3ea5%g3يp6"x1HҚ#lI^Xڊk$OuR#h DRסBmjU}l>ZZ_@>v -yEYӪ!Gzށ }mk{_KF#d6y+0J)dAKb`hK!_- ld#PnH]\*X ^ᄌ21ik n5k^6K~}Lۆ3m%i6PNDŽQ$VmvBok`p! kJLfdl>6.,.6NXӍ$.X;wQo= r(4|oZtE}< W Nn[P4Im e%Sõ&i` #qjDW0kD<.ix fnAϚ>(qiUkcltWۙm WLnϸ:] rr5="f;"pGÖ$zsvs:3=$m{o,Ю!Fɷ#*L[M?zp' kh"+Hrf%PNgfK[!è9P(MЌw[Z݀cu!op]:6 HDe[g_,<i9C:ENw#VKhy'.9lOw/=سQw|| bGL,pG 5g>+2bt~I1Z!@3 ܞ"*]/qW8kg$:}H}ψ >.ĸ#N_>'<>N쀢`?C${ ?Hc6ȾdC%8cP ȫ37C*K͛ y0[t0 <)!4|B1BH@ \8`H Zs‚@C'=>%#/t<=@C&+|ì碑P$\D1zDK (K|sLlPB@?(NTU\EW|S|EYE",+Rt źq829E[l?PF`Dh$aANj\ YʣFHDn(r\GvlGw|GxGyGzGpD{ e#ۈc G ~đ{:ZH$HH`AzHHHHH II,IA"B-ȱŃ 'x2dUnTb!E[H6ɔ"}fC*/BII$cR%`Wj qlNL[„HsĶC$)AmG6%tN1#.LÈ+.ZS,ry5*NęfcUʝvDZ jkUlE^v,#֣CR=+,Gtf6iE!"XbOrlN\~ ԬIQy~siĞY`vweDVn^fY-UxZI\Jy6Lyaf=QTH~ UcX14PIs Vu\y#+9ߑH&^q5_l)N'5M)$cI>յ[vۊYQXNyIQjaVFq57uzpGZ`rB)DC&f`BReNEb:9䦜vzMHt9"^C ~Ed4_G Yn]aFv)tq\ұz[T~ۅFx]tzil5͸Z$WAB!5"C^AzbYွj~AoQyh]Y`eqxkrjf\SեVVLR r)hmZA!Xh "T_A3B̲NGVmbi=-Xzu>N &t2MV5F(d'XmNmfaRjܲ4fZԠK4+CjQјg^Z? mPG;=RKunቕO$R| 5^~z _-QCDZriL~W40c;ZD}G7nm#cTHL`X8:`a#A̠ zuNGHw&p0a{4&Ʌ.wå1u=l 2 HLA&:])Z"-z` H2R_ 5o2RHA2)(G4⑅yd H<xLH5J d@ޘIѓwc,yA $ e>$4 hLc%Ud )!iGY1w!K;2 .L[RcM13]_"I76 t*-S̑+yJ)Td6v@4겕l#sӖ ;IUƲ,!I82Ԥ*IN8 ݤ@ 8/JD*y΄r򑠤%0 K_~ԧ8 +e1MzL436JAae'8̆󙙄$EwJʢ*13FFdTOyTj/q%Si:Vd&bTjD2UeTЃc9zS}<#-5!ո|rҤWk(T&tޮ ejҵX)g|̖:EWY*+]^7!U3]+Kֺo9S5:PϘy'y;FhH1U)ڳ|mNo2Λtr!_'EH4z3mnla=tح"rm-<=X]-"V6W:¤};t&[ "2^3$hGO>ugvt_ ^wԑn]G-Z]◢$kHL?1eXAδ \Lw^e@ѻ樚Vg߈I˹ n1 6zD$AHMVtC ;bހj(Z+;VgSˬ燐~)Zז oXݦliGby^7x|b;؄yu s!KG/D\2nyjB$ mtv;:_s^җH!To_{'FO܁"}l"wv_T[ЏW MD(K; #tE\,L4aNߵ. |=|BJ)(*_9Yޙ?9[R9IɀLP`\TXrO1Hzu}tnJcPs^)Iy?𩧣XO8(2Je)uɚ?ڢ˙@z&ʀj *uIʜJ. ~ɩY_YF9YzȸJxԷODXԠWƙ馜:IZ: Jɕ2V!i:J=jʗ`º ib'Yy/zKɃCK at}sz9DVT9i ʭ(˥rٲzJ]W:@iN{)E9%zn_J[}KJ 'IjٞSɩ/~ }lbA@8'@IA+{+븍kV빘˸KKi+; ۹+{˻K˺˹˻ɻ+ۚyK@w ;[{ۿpp <@ Q xxyzQ "<[q$*,|0AxdEQ:<&\Ӏ=<͉d@ ` P5}0yЊ7G Eۢ璠Gf>M$pAxZ[1xKdU\Oc$$ p  #]M00P+ ` + ֐GK^Eݮ⯍/nvũ[@h98[0͚mt$ n` P€ p L^> ` (p ` +ʠ]B׽$~԰,}xȷGO7wi)>^~~0~.}  뱞o "-qft#<>= ם -.  / b?d_n~Ӡ{.;x&jx84l<^Wl i_G?ߧn Q^_B?O&~Li'9MN}d)?Ŀ@ ^N? ^~ Z@ oՍ/?_{}t_]zU(p|0E &{b>y5nG!E$YɓZ8`VܐN r X@v`MnƩVSS2`hWaŎ% ݹC+P-["' \bQ`D&5߂b&`""q>صhAY̙5ogСE\׶ [pw6,P څ #<\B)oLhɕ/g^ۖ|?.ػnyf{#u(4L@`K!#tA#pB4° #:C CqDK /@6.L/.jLF`"A.D"4/d,6lC'ADrJ*PwAG Y\RƫRGH*/s*-J43IôI: {4RѾ+J+RL3tSN;SPCuTRK5TTSUuUV[E1dJ4N~MpW`vXb5XduP1Gˇn2@Ad[pw\r?}(Mlĭ &5 j\|w_~7UD/pNzjEda#x~ t`l, H ^ZXfI&fN·b[veKկA316࿺ _ XU^9f6`TiNOqPjl˙Rnak]9]fj& '$ ZhJՕ{nnVTV 7pW|qwq#|r+r3|s;\Xo|u[wuc}vgAtzڃ~x7xx'yP낒z~{o98t/lOzW}w_{z}+w:MH_`  d`Ƚ}/TCƐ7.}`=Ρ nG"M` ]B0(Xn#!P !4x?PC$bH!=0bGDpGbxE/<ùI1X$cxF#iq0]pF0)#xG<8μCuAgGD&RTT ;(V:"-yILڭo)MAb&MyJTViCػA )J\R y5-!Fl9]&SLxXr*1WLlf#T_ vBJ P%yNt16,H C0Ns2g:y+N$;;2|A|gyM|&TE\eNT/-9SυfTw9FրQtn x/Ђ\p(xRTN4l'(әo3RMfRTK57go%=ERU!LjW!4 0|jջԫkes9qVuZzW6!^`HЮx%W/!jA*VJuk DNV)"XmahGڅj1 jPꥳV [&T00Q cWL/v-s NW%N/m.;^fs-HzIWJȻyo|L}ԀΪr^"7koS)Bv~-jI*:XÙ. ƂN{a+rK]&6itS|c< 0!f@A12c$19 s}lt$gK.0tс8౲ܰe4A%1GrJ^lf<q!͹Jgs_g0eΆt͗a("+i]dzn,M /].Qc.꓾Zr5Q vn]^ d6`}D19Ǧlf d͖sp=jH^k}n%;@&̳Tp[!R mfMoi#)o ܥiPm|t-Nug Uܚ+~qf8(4x< q,^9iqĮyE~sLeL9}D̏kc' ʟ>K]fynH=]?fwϺ">wqgq9ޑt'~?w=%bjwx9Vg Okv $E:+j3 TuzAcS*]zǽFw:CzY|A{_Oľ7v[7t|;dž"=?}!o? 0C1Q̛̾{;E ll0uAA ={=&@##zTBDBB${3~-<+*&0:14A2$(5B ?X=8t0D[?c;;"#dTr+ES.TԋCVAhsWCDZ\X PDF`HZAy#GLƻBYdFgEFjdatF EfFHDJDnEa IAܟY񚄂|`b'^b%fb(%F-T#|.6X9) ؀dK@Aѩ 7|xc86a2Q.F/,3N{AiS5]۳ZcHd9c^-a+|?dhR̀ RSxc:d`d,.]~N=ZQ& -QC&d fcAf]8攝fjfkfkVMV^2[cJn4dl,^ dncn-dc(fyOhDlh.h檛͇VF >D c8~e#M>]ufCm~UfB.id6ec/S~iiEh_^H䜞hi+-s._n7Vzgg 钎jvjfd2jjxæTTFk^Pdp֋W>k,6gAu.jigѤӥהZdj&{ni.lf뱆\h°ho~ (Q]iXzl}ĝÎm.YjUŖ"졾Pc(%lm~n^m$پnhwm]lffhхXkOZgvnvnb p&E$nȞ!oV-g"i݈o~XkXa9 %KRX>Kfk7

|vdE,zzxIlgLH}g};bAMLB ߫{h2s0^|`yy|/tOV/|g|lX|Gq|G?EĶ>QDEL䔁DՀ/R TMŖUV%Q2_aWc}xV^Yd0Ub[w1^aA!^>ED CAI א~%?JYG>5M_pl%6To;UTn\ T%xtrEPrC]52^uc^;edz#^oxDyMתv(!vnնEHc YGe壃% A@(0f4K!d(n0aǾz#ѡ~wė,w_EǚduaSǢa2OX;NPl$^Aa o%lexe[Իϵ2)$D@si5V R6]F1U foZdqǯp+pce:v$eMKz [cV@MD#CPeZT_`iÌ 3rpFx&21v EJx2t e> ԑOE$t-= "tҋiLW(lc#U( 4(Q9[45 x)v$~ki⇊UT `?2T(uT@v$ U,PLj5Erĩ이K.V~rJWSI{6T}Cb18 PӶqHIS|M :7BZ"1nzۦ9D md $2 oyޞW_.E'LѮI3c^»P Ux$fC*p8\wI+ag|uS$7iK |#|G63oR#%K2l[$%1iH YҫkqZ(1۵O]SRxƥ;oi dO}{̬j܉l.URGQ^-ԲUNr~k#cG,\DN98  LV?xlgdπIŵ>>N7%FV4G'{tOI)i>Gו3^0*Yl^U#5\%u, lb֌ qĮWEhwuL,6}䤾#Ƭ;v>KwVnGWF>j6Ulo.E FN V^ f_ ~ V'xG Z$p H̙` ]r r rXYEƽ`~֓ӠG$fX'(!WVvDRuQ)չFx(dai@!JAZ&[Q¡\ r^'()l A Օ'd!V2 ]5("%HLbD)]_aItk镆(båT*0/"Gl"AGUmO! ,e3; H*B! Ha>ӈqC!RQELTQË)H'SΜ ǜY(PG5_Vp&L45iQ9ei搮'':(J. 5*sc[UBI+օ* mRXwiSٳ +^̸ǎ iQ^ۢ䛗$LJba#Q~M=hZX1ؔeRwHZ`!&:EVgp6"xƨ7=$# R Ͽ(h& d-F(:BxSv (∊uF(,a0(G8<>)Hd@L6PFR8UfXn)d9hlf)Y tex|矀* IyT袌hF*餔VJ(J`>)h*EϧDꨩ *Aʪ j+Vٚꦚ*]kAjSŧzꪭFjJ--ÖJ.jㆻk﷖BI۲ m[lm,kml-ik[>a$گ?S.+:1Dm5BL tPW0r 4l?RL0WuǦ6ϳ ̯6Jr%܁f콂'>d` J9A T@i1"}6gTf>>";f^槳+T$:׮ yx݋)'dha:Oa_=[_@COj_~Ǚ=_K/?؛{(= Co^+p/kT,NrƻO3N%<繃P!/$H Wp 7@fp1ԡ ! @̡H!氇>! CN>|bxEJ+|aE#VQ$,y7#Ch 0?̢hF(BqGdb F)jAL#)g$$HHqTT"I(0y39Fd$0:ҏxH09B!J/1p(CfFx `f3fŸek2_vM5Ӛ: 6)MNK ψLgz 8;nsӄ=ISt!/>\*je #ޠ9f6YxLC9Ћp_(6;:j(9 D hJSИ C_ȂU 1Mު!M:T DPkxRԇ.=QqA4ԣU g7HPt!Ġ7AbE' HPq*GS $X۸Hկ5b |JY1i|;#|%X)1V@,[5ugTD%RT5lk^6ԭgŹW\!Jq,AX0Q|*i5f /+̞d*rHyGEn2w4nyF4bִ|pwGr&-Qlac`Dd3l'~ @hTa[MUP I1욂 d\٣G;V4/iM[Ҝu3iIszҙ:'RsҬƴ[ZcՐuC-iUӤn5Tؾ5}lYZשF5=}izӠu{lRKͶU&\g{ȖuXSѽ'<jη~NOxqL 'N[<A $ GNhOGT:EːvstBTEC1⸇җ;PԧN[XϺַt`N9w•pܹx{E/(Ѧ/U;i@M!cN?L= O%Ur3oWBjBg-V֫?18o/{ϽwOo ;w~Qk{OX:֏uxa)Vx+ht #;CM5 ~PMcas[!:i3X 2x сU;>)R&@Bx-Vǣ"7&E~4A!M>(G"]N ,^n"=]^}XrB 1L.J"xz(>$T{GR膞'}a#t(|N$#(/a {~N > ,narꨞ(^r떞'>$jRDNx :2N&.>ھu9'~m>$3^&t${a:Ǯ^ kbΎ.[蝮?!ЮJN! x$!)_p-%n0#5A 4Q!#o>b M<2; j"zk ? mMx鴪1q.Y&f*őOW9Cjo+wmy~SFկZ8[ g_߾RRu.m;4?At40)pC9K.-+ҒK2'A3]\|L˗ʴ3@JJ.Lh;}ͩᒳ!TPFAϣiF+uP%r,J-/RPD;tU( %&QaɓHhӳhgVϪS%Yh3Gegh˜j aiUwZmx7^^e~_x~;KF1aNa#xb+ 8cA9;6dSVye[ve]df'fjgdg{Yg}z29`"tuy^A`8fk{lŮl3F{mv{m޹gqiJWAMҷcp:wp/GY(r68m<g|M7]$ [/)vor)Gp璛|$%~2)j8xwJߣߦXL-IؘȏǺyև!݄w*t(ux }d4AU%pB6 f$@J(o$J?$eYY>fK:!C ~ eħ%QKdb(1dE B fACdEM{bxF4.qFRL# "?#C5Y6F? d @4dBw/K"NJ"! .q""ȇ}G0d%yUÆ5C~Ydi "BX_h0#D'rEB,Q&\69b-)%ux+T&Dթ&2a k51+qrF9͙ȍA\Yg[jjΥ(DXOZ NT$%E\x/.bODTqB*C4.0Ca@2$:}KPK5&JCVHUsk]zW浮*]W|` %"$5;II#,e"֖n_eR4ћ H3L{JiZ6BZ׈֪0(b 7쾊d1fYb#SʴZ$8m>Vr״ 1lB伄ml+[6ÐB{_ /}[/1K"SR{w$V-D&IT!pB7dw|͌w{b`XazX |'$ `C&aܛ4 izC*쫄u Q"Z~UFDb\w#;nP]dU#sUo7wpmp+gX%)d$9HVJd#/Y!O5BmVx,ޓ(s6ڵH70jD"b: i9=MJ{Z%d8BZم@5F5o+#`@ze[H Gh/4vYZ%E02M7q lDHUwފ4/M)Rqh=i}|{N]vjgɭK!OWB ֋ȑ|̤/b ˻}|L ϗeAOi["Icbzh"vI[Zl I=lڏD>B?Ww{+]ϔ(_yWUO@{MdKRxs;Iۑ΢|泷ؘ18`y(ZϰJ@躟[>ћ.{ g>ӉhMOk@?S >ꣿ= 8 #D( HABp*Bإ Oډ/$?0$ LC8KȆ7C<0C< @|-:@W?/<~œtxw d;@e^t,$Ȱ!QYBbaÁG9x1)iPb X)2˃'1j dʚ,W,&N@a>&HLNLi WTʰJL M'̰![+WT$g-xk]{ oL,Z:{ߛL{+\gʜLe t*9{eGL^]j*U_ O5Y5t1 !,RR) 8 , Ȱ Bdᖈ)hdBB!ɑJ (lbÖ)b2ih#BGf 3&EkeNTra>&3TPoތzU ԟ,v%E]3dX5| k[r%m\tٳ޽YXװR ط 5LZ֬[9 MP19ҥO;Tþ򅋍Z{n?7n+W9$|v.tn +]wO:8 ݻ)urϭ>]寯Uc@8 n3 ġ|JcJ6xg)<,JU0px@,7(`]`9:Nx@># TX<#"5 te\ !,W_ٻXguk Ĉ+#Ňuѡ<|1ԸJ*KZ<2wrNu4휆O90egP* ;j@>X{W0ܹp 7mZuT]#V#e{,C`@f;D/ r]f ك)Sƀ:aT -hy4qVk]\+m6(|!,W_Xg/p\:0ćݳ#Dy,N#qݽFzD(/J7-%IֵtYsd̃4SZKs'OA|gS/\iNۊuAry6<0-٭a =KJ;']- Kwig8S!,RR 8P #H!ȰT@L11Æ!^L hOHIr`D**Z$1&ƙ!=dS`͝ |@D! 8ː>Z*PUV:6_٦eC{,Pj%(vι UΞ_{I{gOqvd@!,RW LA&d1` x XdŖC^ThaIr,F/[ThfTp*U͈6o滧@Ok)6a$g{NZgo|eR 7 ٮ[Vl۷q]{lܹu=np9r GT*J ܹ|^{ʞ}gc>"&\'\i68:|Í,w;5si+/ӌeY@K}ಽׯOO wN<Î-PYyMmxہw{ #Bwt֛{v!,QT LA"4b 6d@((‚7*d1rTp"#.4 Hd)PHTM0yGR|?I:T;md\s":'B|V>+vbպ@{-׉.|±'7\pF8܈(`Uu=7M{#F&*L*ށGUuDq#!,PP ¢-* Â >1_É f"# 3nhP ,cJ'[F0\̄T$Zx怄)$F'ÅAWIFhS2.>|nJ\U` ̐!EvE6܄_hVL[W/uX@8xne7b8j>gv|{+80-,iKcGm֧+N Z^|/4콴9߫hOב6{pQS.л€! ,PO; ¢`1* !:t"bXqǏ C0d &%=ȐH/SN !,PO "E T \P`A RiȰANxЈF)F bQL$)<#JTdIQ&%d)s#Õ)%ELRd.M R ^՜X{FM*כY-c2u]|g͗t;|M+sv  u88_ɏ[. 4B>=JQS996-\{ uBOiy`]uGy<fIk!,NM* Ȣ&LaA:,8B'Z$aE ;z,PH?8J%Ŋ0[4RcJktR&ˑsL91A !D'!ҡԟS0arf튯lلfBLV [ǶnZ{߿p_Lpb k|qd& 8`y&O[g0:װ/5l{{gvk]wpyo-Upe}y|kzsN>|8MF>xڹ!09k{0wﱶ3swʌ6;44DP@!,FKC HP`"RaA* G)La 8p E 7V<` *). JŏP"Sa,)L'eBΡR9ӈM["%3fʓ)QX+R4TMD&V+z*Xˢו@gߦ,uČfezݣEYVڣHO6똮ځx+s~,sԜEwM-AX"Fȗ9#gn؎ok / [zt_PvkwҫWO>~>}??}|s(cԴS2+d րc)()W5#9ʤ@<(4h"8P'BCv:ӣ@CxG I4$yK%;.)>QNs:-=\eeg'f>3 kI'wK~ gsN&u}:\`hlP4:ͦ>gd8QirifAJGn3z璂rgjAN4ᜓޜrZ43r=#!,FIF H`-)R)Ȱ!A#J\aā ^H |)H"RJ *)AXG!MJA9SJo+)&υ-IHFkM'6 &F'er|:3VeZmHL+Z4'H)qęXTL;*&' +Ferص T#Ȅ+֍.ʝ犀OzlSPv&>pSw.ԡ2 Ǭ|hI'['8_vɉϧ\k/RV_8N}(:'> Ns΅ݓO()އ">M9W@=xN>Aҷu3 -b>` 4D)4ӄCy f{hrcIdp9?{xx`:ecOY*){)dwh>;!,?y' OA4xPC >LQā-^|DZ#Nj=OG&OnreʎO|pI#g*dzϟ; t(Q#h' l4:IGUZ:j8jP*/iQI^].߹յ ҉{i Vëdl1Ȋ7>r+wӨÁ&h\i(OnBg/_y]p *I7F:dyZ8>G=[MC.¤;w]w!,'I=n HJY0Ç. b!UDѠذI 5˂$U:,eˈ StIbG;7Jr̠G]4b .6}HE)OS2jrkVDk2au%Eі-eUku97.6Hn߽Ǟ ֿNS .O1ǭzg1C ۼ!Ι59CҤMoװc˞M۸sͻ Nȓ+_μУKN:`K;ow򶵣=zF/_uC~}YF >{ Y7=<cop9$@8([ء(O>,NZ>:76;MsdJpM>l!NdH֖E dXJ=f8ab83=cNcg8&R8͔XG9"ehO=xlL=tx9fO%f i8[ֆas9[@!,.& H)DȰ >HQ`D3"QG}Hq}ugĽ>^k߸i- Nwi!, G Å J,1ć]F U@: 䭗7~\7ͳ=ѵ_+h/vN ^Rw)!, G*\ȰÇ#.8Pŋ3jHƏ C<ȓ(SN,O˗(YIfDJs@=HУ0U){94jԩUװjի` pW8 ~ ku,Yhe2e{ulgʕI7{w5e_c;m-N*$!KNbyӱRͦO8yukJ ǖM[9=ލt9ڞ N|H.yvυfo]Nlhs<;ܞgk]>}u׋)M*H]UUY'<ڻþ+8 nٺO5un+X\ 8߉9B,Ċ/Y9^Nh w.4{u؝ru}sJW Uyp'X2 oJԫnm{Gl>\e#wNɕ=!, G C :gC=w`%"\C4Hɔ3&$%J5)H_5[4W_٤) wnlY]t8nV{ 'ooS΅fƷ%QǮ8yƨ9RݫXpyZb{?O;G{E{=f:ִ!z]w!, G0={ *\(p Ay[HuHŁ3nH@Drh㽔W*l&yRNrI ʐfMp3GE}4DKZ$:yU]mhuTÎ%j2*s^z$>po8;.[g`o1NN]ָ2|=iӢw@;ykUWuݴޙxn{s/ !, g^OށuJds%""F V 1D|h2!GyHNx_ubiХH`&w ĹQ`>&]ړӨM%\TyZ*Ɏ 5\iF7:‘ugu9ioE-{niSEkŪ"Wآ_9r!9!, {*$(:{ Hp F7@3nbhI)%gQ^iqB>vH:7D8$ўNSTSJ|RC87KW~\=x7Smsك;pu3i ,4&R`) X.զ<{4{0z9[^d{M3,Zu;w!, H{*\(:{ #*\9i\HŌM#F!7xÓSHQ^)&uqMS%u6oȉp`|2}7pҡSBMIҪWjݪ:`I6s^ 4jV|]pf\iN[nϕ7K8뺇ECSz`ib'3{`sWXki{,]=NJCkZ7<ؑEf曦TGϭ'Rhڵ*جZ&wȝpyƷ-p'^u_JfTUm.;^pbTz3I{ v9;R w]w®0 !, w޽ w`=I̷s!JX"F+F|lXRɊdHeiE|w0uA}*e%H.iTSjٳ'w.4{S M6r"·8]T{`ڱ[WiT_g':8ޓmQi{6M=0 !, ="w@aB| `!ANhQ ƌq1{"+:, q<|)W̑1 `˛*/li8=9ϣI?\ϩQӟ SjVX6X0g;n=Nrp:wf>k '|kzВˑlYuN;V+KI.!,G <`‡aˆh `mth#yFvoݽ/ F:0 HT8wMkcOnɤ@9,Ӥ8i(sPHpM7-$ 76iE]iJ8=ad;N{Ys-;pфz%3g;v !," G\@> K80b{!2 _Ɗ u}vP;|QdJd ˂2c3M]ΞCB;n='U0M>=`OXҖpR`XYPct-6_@!,G  u СA)Vb9vp/\>9B#ʐƋ2Y|y u fsst#rQ$NC*Y!njقXz<n= \ tGQםL/,'kڂJ:0TKii F=6[PH!-,ٻXausb>)>F "DyHflqݽWl2JֽWpZ̊έa4sDυ$Z@aQCS΅fhArUOj;<`OUYVfȈ}pZ"gAH|!,& HP\ȰC#*tH"Ĉ+RǑ Əil NIY.,L L2[r VfĜipBL2_0jn3QJ%IRMaRL>G(W|U&!yھwu oU6hW5Q4!W&s-p߁ hg z1˓)w ;nv90dYL2Y5~*p5 *SSI.eJ)iQ hs.:WplS8H+v$Yqц[W|US8 F`A@f̆e4MC"㰓' LPdKHӈ4!aJ9f͔ä;sH1fDL|LbDJ44WVZ1^M}9ւh OҪe8Cwōj1Sm |2 / 1)G΋9_@!,;j ȢQ \YaX`>!!Á b(0bbFdx4SV.SL5mdS':Ut1+M$r@ΣHX5̥L}{i3 !,< o( x,hCHhńmױcC\X)[ٲdBaݛ)fb"93߀Ć!i=;t sCz@ԯƬbm$_ Sgцe51ܹpA50޴Ch#.@I0ȑl[&6,X1O%Ht`X끓 <#Ba!,7f@a@R(DB :Y5J`i" !ҙ8J hc tBJ,Y)xe̗$k̨ScQa.Y )@Šd) PM=STal*VJ]wjfL))Xwlhwdk ιe4vmX~-}4Xm`έ qdɒ- ̼q΃A=fΨ)-fufؽڊÝ 7czӧU#kNl늵'-@O&O, .pX0ŧkр!,.! H@GB ÇRPHBN(bC7B YAC@KPň|-s~Y2),а"Kt@3eJ` -Y@cŞXj}h 0_ k؁ÚHliՊ%-aӘ+콺]c*7+Yy7,.adKlR…AFFLƘ3cie3+s8C=I5k=_+mzvګ]֫9زgjŏz̝nll4pM_^7W=\]ܪnl}P"SN7Bcȇ+ RA4lETli wN39'Gr7dс]:tbQQiuoa1tᤁX+/ɛ' Id@z40@=-<#d`2B+!,GA;Ȑ:640_ĉ(q{/z _ȎgcC%d>\Rpn]|9/ss͂9'Ṧ?X8iw\i@|Z{hVkMMvh-صMpuCO ƃ!,7 H t*\H4hDÐᜃV$(bFN0B/&I 9G #<fL:3fs|ä\pذ !=Ѧ#> TB5@C~튴@0S0l2 Nw?{[ ]F7ѷ$!,ٻ|*L(:{JDsM\X"`7R#Ȑ++y$J π˔Wɉ3&ǜ 'ȣ*eeŨI65|C6+s_›*;n=Rn|Qkr2{ 6kq4LXJ~Jy\{&5޺P9@E& !, H*\ȰÇ IHŋ3&8QǏ C>Qɓ(/,˗WIH6s1`ٻQ>%(:{FDOR8UזT^ͪ׳&WV@]ͨV|Yuw_2*/iO*vXpuDC^LyJ6 1ʠ6vݻ:O zXmΗ3ʮf}Ϸn{.lڿ /lHT׾w.4{Vܞ { ;^kg[οMw]V=l3 wg{ 2X=ufahBw;ŽSᇋ!,% H*\ȰÇ#GQŋ3j܈bE CI2Ǐ%S\$J0cʄ̛8oִϑMIơ.*]pРLJ)ϩX}&5מ]JVgذeӖV۵lk޳wݣq];ݿ\97̸ ѦG?&UZСjQe>@{gpZV\)v)s35ö` fK٭ve[r ,xp޽|L9\b3\iNnfIlmip=mp޸vf۫'}o;ށ'nZ8sÎ{:>dw ><\㿓޻sq©{,f@!,H H*‡#J${3jXBm)ŃIeB' Hҥ͂0c&˛6+3iB *(At)Ɏ \q*W# `]TbXʾ8-W%žuYv}cžV;pΜ}Xq㗏aFNlog/̬9ܹpU::IqZ){'ҴU=ZǸ)YGK,(МK+ˇ(p;ninXEd]N |b2h]Dh"*e+ܘ=nM zݹsfR5O!,GA;s tQbp#J1ƃaP{"P^+#oʓϭsfL3iIP'Ϟ7Y|gSs._iNۊuAt]G6ìgۨ=w`\qxrZ8i4X:#(pq{Ν{-M !,GA;s Ă*Fx/c8MuF(9:*Y2||+Q<͜-L<iTuQ@8fo|ӴӚO<יy`eׇl<0s_˓‡-!ҖjK7ܻʽK hf!,ٻYXg`k +#Ŋu\!y:NcqݽVt%L49-Kj:Y\P<}t]ËX+\i kGAc˷Ȉ1Mhobў nhAA; %| ړ 79l\7Wd{̂CC>(aЦG>]| !,GA;s Ă*Fx/c8MuF(9:*Y2||+Q<͜-L<iTuQ@8fo|ӴӚO<יy`eׇl<0s_˓‡-!ҖjK7ܻʽK hf!,GA;s DU(ƄçqB`ru#W|i,S<&>3 |'PWfNCQG1#pM34 O<.ȒC{>j|9ށ*&!Z\7mn8N;}jޜfg=K0 !#,g/ p`‡8aˆ&Vx9@Dr`ݽR#$L[×ߴ.8WO3i(ΎwiPCړ(e8XÝ 7iM 3lơb]'Ol4Kўݿ,' ]=Pŗ kh6|^>o;y&{]wEW50B=Y?t!, H`AD0!p Gp]D vqłq u4|JsReCc^|?P4{)n?ϭ0Mup`%|Qu@0m2{HR=wfdc- @ޥ}76!*, ';ȐU>-dX+%Rh@&sxG4UKey3g0:̂ɒ8n'=%]4ЧF N=TUY2}gCM w.4{M;-ܺ>Ri>k 7=|>< w×H2fz큈8`k._2'uݴ1$8;p2z`@!, 'l \ȐY#א0%N8cF +^Q54y)*1L(Q#GaYgd$[j3Dr6DN)Vfպ뻱Jw/X4nlݻm>'w׬LNy# w.4{inଛw:^/N V8[6s|N k@sSU.pK'l!^Ȭwst;p!,s# H@f¦25-_`XgEi 3q"E ah`+CZ$Y ʔ* cYQlj ̧TIsϛ%J2F@[ 'KpoКW泉t<|SYYdK[C .7vx01ǿK9ٗ@@]k Tec+V$AW3,S!,a/ HpcN;Vag!&Kb>iLi8ME#NL@iSn1ȑJ̨24._iX͚ +|s'+ihqhј utB @*ULj5ׂUbu8T$٘:'XSAٶemTy,iźݚ{ FiUZHa6^8d*&RwRO $B&,@8Ʒ5m&^zwĝj eU~\wjR3g7gw.4{Y[o۠p.\# u|&zq~$ؘptDE؟#d'xIXP0R`KϘ'a@!,] |fliƞ \ϙg2(mIcaD )bqcÎ=BhiPTИKdMt~ $Z(RSAQd ӟQ;N% գ7sJ <|p S)|C `Hc,]9:2;|ә `('j^(yʗ3o(y0ww PC 7͞bV'ͺ|7g ',s0ĝo֐@o6L`R}a0! ,Xg gli9[p@fLIo4 N"F7:F 4YHTVl2i4E9QL:UfIT@6G8R`!,U شӎ1ȰagLI(Q3 MԴmPⴋ#J8Д0((c$gJm]V5v.>| vﹾ+fY Dž#'^<ә3xxsϡ׽d;.ĀK2v`[g ȶ' @Ӯ }5t LG| X9  >0 !,^ H*‡4HQ p U|F@> {' Ip%˅.MLŸ́.: @>q[_ѣ}T`СNF* 蹥MB:́UړVi̜-x\i 7Y>ʝ6ƪd8mڱ#n@=a yņ|jع4CKҜ2װ: f| +N:FK>xr!,S* OiFÇfŊӌEܸQŏ=Hr ŊC,bϜ9{61_Hјc2=fF2d>BŸR`PK7JC9-Wgӊ2x5R=gkTMzϬNc :#R3ӽQ {nxqPyIz5*u Al-;kJ6ڵkZ[qmZan-[馎2~F@ nLf5o6,{.4{Y۟ڇ*T8f哛dH"=TRc0$D &-A M#q]e@03dXGI83@Ȋ3̏c=)Џ!,p=G8! :ÈN, E n$G5R@URKRd˛9Hp 0߹u?% ОO *=UYY\5䳉 ; 7^RVcƓgGaLF۾NfOV47칶)G5!s6a0DH8a@!,Q7 HP 3f *\ȰÁ҄M3EԴcjܸPiƤ1#Ǔ̙˗.M Xajy|>)\RkYCS}i4F6KMQ^u=X%h̛]h780u7-h|/ suw\]ֵ<6eZǑˡXj-sl=R{@2l05dfB4h<|"+BJT*d˘+iˇ42%8WOd~$Ϥ %*`ϧ2Ҭ OV1ơ`LFWbFa cõSk )3QTp2gςřP%`b..€!,Q= HP*\Ȱ!Ã#:sHbE!Z1_ą;СƑ( x2eǖWr|V3_@5ihŞ>*$JӑPJ}^UWEuy&sgThA8joں݈wV[< @Yx95~qrL[^VysΞFnxX忌|F[kWJ\i6ZY` +jy J5 D0$v趹 f3btٙ`B P>=s_2=gG^0T2 | VOR45P@!,=3,>@0|1,P!p +dF% NJ"g2ÑkwMP3s1si0%PBy*̤ cz^Bdr w.4{;\k8@ Ú0b`XV!ߑ_]*43X4Y0jX1 !, g ={ @A .!Ĉ &!Ɓhg#uVzL:2K"<͟)QHNc(Nޫ9ʫ\i40mZud;3Uu\H _+{E@`s9\7xd pnhF% aƐC3`g C_/ !, l=3 !Bpx"BcF:NhQH>I*K- Z\.>|L)⹚> %j4zTS|QޣӞYw.\>{ANnpz.ߺu6%=ay-:Sb`r-8@d;8f•A&7``C}!@, 8=&<Ξ‡8g Hhƈ6VL#AB2IdPa/Xwp&τ8o\S& MJw9p):53Wi>Aʪ@H]Tw4NGf w.4{p)+X!պM;pđh1kӈqC!RQELQË)H'SΜǜY(PG5_Vp&45iQ9ei&'':(J. 5*sc[UBI+օ* mRXwiSٳ +^̸Ǎ iQ^ۢ䛗$LJba#Q~M=hZX1ؔeRwHZ`!&:EVgp6"xƨ7=ft̑ dwL] [)-%$^hh%TxDNW[q1-8IęDF !xbjYza(0Gu v8YDuJ ]A*!]:(9ߒL6t+0VDN[]\ROUVZQGi֞A 6dr=act U]!sŷۅYDEgu f]lU!dđ^'lJ*IiUqN* Vrb`q\qgVG/A"7wZh niw\\Fp$ZV>vE9|̶hz#@S{eMZfVikvJ*ɲZbwa]$z&u)yRڊnh!:cuwxf[IaAA5Vugz@3>T)"%{E}ZfLݖ9W򡗲<nxP-ybH(-!%9%MohfϱlЌ7سXf#K\˴jĚ]ieHYg~CWs5&uԦj(\lv'+'{E@Ht)s*Gq_&a* v|IZ >ZaJl!KF"MbD;JH6@GN@MԴO?4~[ɴ|heR<=aMOZ¼ fEWoe0S$uamxw JD=vONH<(Vz ŔAos(._fNFiw3i+ 0}3kIL؈$o1ZԂGPlC/Yen9ʌfɱ3.!E TQ8rEa.)PHKQaɊ{pؾց,#{ )tD6"*=|f2 ҚIb `&fnkQu%E_5y+PϳPTq!)]s$" WEfmNWq2jiGW1|b2UIRExth lFH`5SIDmP{wD(`8Y*Hu " NOzAN?˨Nhh"st ^氐'/nsUV9"tǎ<<mmCij畿IEGzS XLT`kݼ̤n~ V)rItSz 0`O}O6ЫTS4^Ue4!2)I0'C}GpmvdFlY[Ҳ9pbխ$&(DiZkt+vjmEY֪:eatE63H5B5-f A!1Mb8Ȝ+{.F=]*xѱJlyέ`*>.r)\a"Ya8N c{;'QY! gLVg4Oٙ'Ƴ:9;l83F2Jm[=78ݭCL)X\]"ϣq5 $N?cr \Bd Z0Ȥ*dZz{#j9Os==ڽ3.D?c>֮q0"WHZ줚͘7Mf:BN~wsꃏȺkd Nxc񆇹3x&τ5kѽ"v^w s+ T8Ω GtG E'Ht 5BSs)7]BJK }Tz_o82y*d_O;aTe*yB9cw8#9ssC_ҽ>k<)|;4gy]nvO5w#ڳhKOz5z{]t9>}ϳSIO;ůl>< LEtI Y 5wemtsUsSpR0SpuGN<~WsGx1}#f X .9zX}jvTuuXswgws d'tX0yk[xϗ?toWdsg'x=!Gh{=1E&Y,~|'|GyubwUdWG8lFbXd pƀG`G{['u|x|DdR@q:&~5sgǃ!(tP~idhbh|}ƅF{Gtwm8{R}qb8WJxLzBfpj|ozGetxH}W}p'y۷uwZd(y~|u}1v<(erZ=lkFz$xGhjzdOXuuf#&{WzywJ`gXw~XWȐȋOfFwh׌ELj95HIb͈uHlgv)Haj6t3z'tLbeWxsw9fcw'yvr4NVCI~(FilXth{h7}>wxy(8娀kyxX~*&{ƅ5Cv!xdhw0xXrTvgtǃBY]c+pgvg(~jJ7y.}w)|gŽ?MpIvփWHbZmVFWg YaH[g)朕{ɜCgX%}7hy|8EY;Y!8ZZXwSp֖&2({1WGU8x"GifGfIeL>x z*}8×Ay| nʌǎFvLG#*5voØgxtxv(i~uާkQv 9ҘTГRvfGSux9xY8wT}Jȡqz~hFHU JjSm§q_woF yٛdTw؟i礰SʩrG ov}ix㸂3Ep"lx9}YPIFØp wzڧrN؉+91RZ}ѨXigo}I9ǡ} (MVy錵GwΈx[}8$yvghVqt9wDzWd4CXWhtf Z@懃 w亝 ى*p=nѝ<NŒ=ލpM˽͘0~Hٵ]ӐoA q͎FLlX=M΍>nAM3 |fZY?ݷ ,G9]9+ѺU=ٽ>=.ƭ6~(ٞ ^쑾眝\v;nv-mGMzŞsZLL՞an c8HJqݖ m>dڮH ӕLM鞎?׎5b?/n[VIQ >N@\dlKM4~>.&^U?B^?!kl>bnN\ ߎܛm}ѿe'OZ{j.ί/  ilTlB`UnIB 4`C*6p"č?*$)qH'.#Ƅ!72aFSZ$)2"ʁ7ghP*H'Ϙ7yUSGZaTD1E]XP'P8h E|dSK>ĉuѢcȑ%Oc|3R0iR&ɆQ\Mڊ=$r6ϋj9>iۊr!뮻se5#21keF->9Y:,r>&R~%MMt^vb/$j1i ;M'* 8ݪT))߶kE.62sl<E!iFZ3; As); (κbZRJ -Dḅ2i=1] Ow$ۈҌ{BR%^M`e,-,Y^h#CE asDh,=àj bzxb8F{nj'MNp^I)aC3Z LJ^2?l( )2R9ج~R-4jˌ?PX,;4< "M[˿1,xZ}>x5-Ը;`z+25:$s.,TN Ö.Ė53(1sCӨCKM,Tk7)xBʧJ$'|5Q$; 42J;3KL4仯.PB;2;=4: ) 4C*%3`,2d08%b6/Aw2Ҡ|/SȐ# JRǖAB+IlNdŇXBW SďE%ԍIkC$cV<10FI0ZHu.`''KVdEGƾ۬@1MbgFð a,/ \,3̷N,>.J>35/'C+<3yZ!E˂|-x|& Lx\L\L'hLƌD0pGFTZB#D@j8.qN;B+JմkN\GK_H;Q@|'EP}88PihP}PPahPE6 P  'Ō- dA'O\%, `,Jl)qN>Z|9$EV@kMVl$+>%LJ.QXuSF,AT;Iz1>J!<1 BӌLKѢͭKERü2 6,4eGuTeITJTKTLTMTexTOP 30ш&%>W\3,"jT7%[S EMK Ґ3;1%Z.d8,Q|;d:%4ҀJ8bU j|'?ր1[TV%-˸T-(( 6FM}XXXTOm PxL0 }W0M|ֈK/øe-:$:،xuȨS1h^s%{ԷCQ9L _N}Ԍ%X.@D D.'pG15ƾWB5n7Nc*\a55ެ7&I^RkN6c@n:^*cJ6aqd,,66C0DldÝyTyL/R]eXUbZe['e]f((f-G 24Q4(ϲlMe9f@9|Qkd58(B,C^2QQ7^@l9& |Őp&@ͺV]@a`+%zVeK}[hN]hnbi؍kK |d/ gwc|uN^k`Kf2Dݢ^ǘ8Zdh ^{V y>aKZ5^ix@FkmCSQ("6KbI>kۋ^k6܌.OL0G32'.@`4j2BB]1@iD^Fvi`,Μ3a~aVK8find.zd ^6 ͆c0 Ԩ 9P"FX='Nkmkf_HP^mD_Cfl~x^nV5E bena/I`cu.|8ZjiTddl]098peJ%_>p^ThdeXlljn2DjAdig WJ/\VBun;,^ M {WC O 8eM_Mp&ogp(bgpwp Cuc,g5n O0?qzB,FQ~q@^^gN.Ƨw 51Նc8'TfLX(wk't(rgrRr&k-/grpnDkvi.om`sbh]nmp.Vo.CgjLjv}396 9-^ KTOwbN_Oww/RR?ua4u,-k0G,-˝FāzRmD݂aaK/lp'+:\K#ލoχ/@|VÐyϪ1/̇r?$wugwmOwyo'd '(3H-bC-F݉6xngVv`;s*?yfN>y5>yhT ^610/4'|Lwzzԍ(؂'Eւs'cV/q'0D]znVe{G}GCDNE'6/?挧xOח|?q|ŘG l|Wh |IU 'p/}g:{fYVxp/^%.cLȅcƎ_|IA$3nE 1btI!"ŜtIclj!~2eǏ`ڜ1ED. (I/i5ߗjײm6X`򉑘K]8Q+l4,l0Ċ Kk1Ȓ'Sl2̚7sv3П .mɄXɖ0eB(f(nDG^=ْd0_j쒳vȩ',ԨW2_h]D=Mh3{.|E;,|[U6h~x ^& fPB 9)hhJHX'V^4 D]x]YaP[u!pss'UK}QmwݘX'_}WW͑V`V` y&iI&I&=S! [z*ŘNۥ'F́%%GGXcШOM$T#uq@&DKJ*bo[)!=Zb{1`nźVy+Y>'q>L0ی+X=gDi)Ph` 5QE`hl1#AVnǜٕ̙wVq|+h <0|a*,ᰬg1L`TlbŠ&4Z0&"T9ng #Et-I's'G7FIstbK=P0 a={FV(@Z-xi3/nkN(BPsLj-}oK3]VF5*yYkp0C\E[AE,hS 3=g/@kHBgxhAN\lp@糑UY6*Y~= VsکfdV@UBתs&M+Sypj.LJЃӨQڞA5l!13h!5ٖ/emaQ HW@71U`:\%g:4%vJBy>0b(E`A"Ő'AC, bT$Ō$h(Ldk]N.3R*ʘ@k};oCL ^r\,)tf*<‚ѡ}SE\vp6!$USJǕ%\-#cHވ()ɕ2X1qgUH Z7iȕ7WAr\&%_XoYrRJ#c,Dz9͖NSݬ麂\tN̛A d5>UzwutTN>jKr,0.Zc5'_g7SE\gvhĶl}ONγ.Tp+0#/&.Fe ,RM4?@ZFC7܇uñ~Z-x]]6CnW m/PG9iC}{;4+S!A\~o51ۈܰ}z]mpmo9guw^|9NK=: Ú-܁wS urO}8r<=51s;lw3,cZlH-3p?"9tY?wsidzЋ~4 ?iz6ϱ۾LoyEA~҅qa|{*Ol.r_^mb?7E!۝18U_ݧ%9\`е 1 ]=LAq}U~ۮ j`<848=dhѹ`aIRPJ^ *Չ  ]>FBᏅE^Y &̲Չ_Q 9 a!9!Z`c!i^aba _aԕ  ۉ Z=Z !$"!ZMS/T(Zi\)3$D㏭%;V=F\ѣ%Sj3hYډZd:dBRZCJCDN#>]&cGGz363Nzcqc[@S~%< N~NZ10nPjZw 3(%@?A"NU\>e}᯵!Ϲ.S9*a`&X:R<%e0dJQjaęIBa =b8_JhN&89&9X5f52ebFY*`bhd$9dRd.CH硈ť5 "^ ~Fjk&ln'w¦0miҌf/"Fe*ch%Ri6aeq!$~مa<9@C-T.5L+Zÿ:h>RP4DZk~+!S]Qҭm&AZi>2C;|7.ʂ-$.+lNR.S2h#yTj-3(.`N]6 e9:=.V nb)b"VJiT/ꮅcҨr(߮ .n>p/vmJQ/*/B&h(i[0`|$Fo;܃,@/WbpVn[oIajhm p>Hfk pu>:0Suc:]*q֠- C īg@8d`#&;C1(WpGQ>!&G/'Jޱ K K1E*6Z=8НC;ܰ+2q# Kq#]OBv&sr'Kbn(2) 5D2,;#/s=k>)*m>t64+4:PC?4D3/SpE: s#3FvGRHrr t@>44@0,ktCϴ"C47rw>2ZtxNedP>dN4ZR:4>Kvc2puh dH#MS4XfL3iִygN2ERK0+5ziңΘ6ujTSVzRϘulXck%Ac unB(/*7#9{U;IWZϡ3'4|qb7Q֦ϰV|sUP7;,lhb[~laAf,c)'\xp|9S7w>"U̢>WduxeN,8©7wKg~@#4: jbiCh†5\̼{ƥˆzƾL<1&bl1?p" <=KP9 [;0!$1\!<|C*k*q&kIFl P0uLǢ4R 4R혜3\Jf@*.. ]NDsLˢ[R'$H:-.U8HdQPQ>t:PEUmn9TtM7R&5!J7wpa=Pcsf}Rrb>%uE# ';oAԱ;7-mk} Wt@.&z& ;)LnA sj9з/d+^tSP}/E"Ga ;(a-|BxzF"[ݺUgw9RDf+'k3g1HjZb,wҬ8jy N2sR5v>MOG /V8<F>nJɉupOdAI僁*OX(3}mՇd71[ uc!6H7:=8T =[s9 CIFyU|ܐ^C< \FE\X3q" 2ZhȤF0EuA9bנyM᜻ +߸疼%.C+X}5ɉIKO:p:m!SO#CaBx, K5G].;;ڜa޽q= x7LxHtpt벟 "ɴ<Ǐ$R =5 $S)tЬ!~v>^wv2H!-, Btt0/,䏬&0DOՔDϭs|o "ZfKx !4pS)ahޤaIf/s! b:]s1qfԆe(;ӥ@+¦GUAP 3)T*)5&!l :+y5K,Gfyr;%3Z4\TU>켏 8}j=KјdH4I3:iTJCJoSSJ [4@$P?#LGTGrM2MPC5TC/O=?m+z1U7%8' G3(ME^ 5S-BT>MUOTDGtUYUV'n.5ゲ[IK WmAWQR+o q3Mu!M-5Y 4 YG>I5UuU`6#[j*Q- ."]'-BSڵXM5 !!N__`{P`у`a_;MVm)pa2%oѓ -X!cUY9c*4Ccn!z0_dOSkuDfÖM\QߞP4 D &/hQ4rGE36^ui5o941!3!jeyPk!1 lrgEV tseMBb-^ δn3Uo39*VSbHM+M0pqOTU!ZUUr 64w+.(^,H@6 MΏtO lbG7BRUY44ASTp w!zqQ6eua:e[xwEVyAKwVht Ayn,S5vW^%|ט 7}շ0}}7Z~#=~ wj䶀߳{-4o7voH6C xX_S!$0V5!vDWKLRRh-Xcn_w^Wv_r/RI5.8aZ~a`[eQԉ5t=|T]l3oR+ 3!+8NR:9rr88but33{BXL]^1UsYW,yw9ٓ?XEy~V)XAY W=g8m:VQS!m&AW'kUee @4>)30N4XV4/4No_;Sh9wX[n QZM1ti>5,!&YYJi eƲ0[F$WQ@v];1c!uu!n.:TwY}{ZŸFۮnI; ֡sٌZ! 7T>0mY{;ݻn2zm˂4:۳X+u|ڴ kMd_wp5w0u;:ך "B;vċ<׫ GeitZPǙdC"; };Y0&f?&SG =Mщ}nȯ7GƒYTGS=[{c"TF3$6)_ ғoٺzǙd́&M0YCNԯvTG3<ۉ~sF.qSH ڤ̤RgMi܉thܼy^yU%]v u+WM_U*5+a]b70--ŋ%wOyʘ f5-pgHZE H`H.Z JK=mDnNS!se}H}u uǢ^؜wMz fbUcv4_wYX(jhDZNRH NISVJ8Ӆfe !qzxUX!Nwfjyun%cXq=Wz1vyUfx#c`ЋYЏ S$DI> E!IWO^ZS.xe:i *o^ZSOm8XMU\d%kzV^j Vxx}@36cd6!XDgQU2'X%KZM`L_yje5*F]5X# m\kWAl`2XFN َ?%L2>C#o+Zֹ Ol264ќLaNW}J ըVT>5ROumujxgd 3_f}ލKvq>gl&L>"\).f):.>`XHSXaIJejWWOvbvɫc 3,jC]|vjqva*g2`u0$X%xX9Oiѣ[ItWUֿ [f.5]zcX ٮ0AW;mx#^G7]+ 3 6``>7C,PUBuDL_:x.(Ҏ2'/< ذ貐v dA;`ͧc;`x2jDMJ*up6tLBf)"VL-dñАDG˘9_Tg<,y?$KujQs?ݲ(m4+EyX@lI PyPXB\ʰ9+ r\rp\ sH>X`8 K>Ǎ9R'ÈEf1Iv_YPeRZ^]g+eYr:g,O#MT 0ΈVtf^k]Bu,*n $:#O.:N̔MR1XXLbB9fU_hةj,hvQ.t{t80@(2V /ʎ >iS,qN%-C*m Sg4lwRٳXOhTK-ϛZeZm! C܈W:Ԥn#V8ƛO4nq|KsKR!U 5ŠX pdςwfIx+íD51ݛK,386,`o/8i?ͺ,$ V']M2ӽYKx]9gF-q9>ԼcXZ*뙢lflcNgIo{d#"Y-r}K 惯}ŲeL:6 <{37jR5crĦ6 wCp$No{_մHL{fmcߺ=R6hLِ4֚moF͸.498R*uZ-*/{KD|xsWY{"A-r8\ a?7#'מO7moX:'su@)DM ZcһU*Xtmx->[{48Kɕ4|՞ڧte4 >s#j݈_&&9R{}|b|;Vr_uNzdH@4\Cy7YRۙ% /nOﰈ6t{H}<[9< Љ/P|K{*61E9?[.G%Z|T{?`=|>mGGc?x8j|hAyG5+#ӡgCޑ}VCuR[ 2DHӦh2x'f{gqPw|lւpjG&,=(ؐ '\ AI E7{eCl2wRvJh+0@39aOkj8hCG";%lՁ_Cb,'www`V\T%Zkqg26XFjxrayxRC0krU {X*~hxGoxwx@e`XZXpg{Wqkqx6PV5"H+\EXw׉~NH"\(Q8 k;Rfk'ujT#c@ eθ`щ`͘"}gƍD' J7hW4jOK6T&zV& cA &w,xUCH6vh9P cmԡkjzFCU(jQdɑÒH0 {X+xjKO yb>eThq jQh|b8y>X"? ϡEoՏvh\]9>ywq\Y%T;*@ Y"wYa9HB;ZcH InYȨ&z&8#u(X{[Iwi؎rb8kaғ7r8IȁW&R&w醫xq#TC Whq9+Ιifig,iQӱɁlsPČtwݹ&P"q,`g!ƑЖٹ@ (ա % ؟؀k K)rwyQ{g z jk _%zo^ח! j"Xi"@#iKyjьj Yɚ7)9SxvTLԡُI '磢b11Ţk7G։!+շ&Oڦ>1Yf`*T>xPnHY |=:CSS#0sاɦ)wyf a'} C)g 9K*Q|pjȞk1s:؜$tg踎_qJ+ ,h 1H^'jk|Z=ګY5j" NZk,sj^n9XVYe*Q5! iJuhk Kk+{h:`dA泤M!,X39 H*\X!C: |/N!?b$qD$cĊ/U A[zBK[)PIɉmZzH7̈ɚ[+ĝXM)ȇBEQhвf>|[qJ+y.ڳ4҄ٷ.Y+^̸{jՉ3D%cMnّ&ZNYQf{ j8nјag$Ν*]|ygٺB ˕"K_IHUwkYyJ1;E9U*!㖝#:)ӣ뗌]+i[B&{|edVVuVFo}WN\/4VdFQJ&6L Wa UtBvwJ|wW+lLmras>?$jsEGHgb\h!sȫwݎa(Y;}pb,ȓ F'qTm`TdS)ɗqID[@G`ޯD7vҹOd@F@{~l2yO/6S(, ~F]d'ĭ4{[Pˊb1Ů<*I9Vz;_'$ rǚƅ~!>8 _BH"TNĵ$_J(ܰuD|HHX-H[b򕅈q!wN. nt74Ai3üo{FvFnnPTJ uְnyc~T]oV]ok-UCmێ?Mj1Gi*{1J7{4^r-nմF4WrkޞWC3.Dh<yvAZ|py*H 첼 7B4ɳᚿ˖[]y_O;~m?{Akϐ}=_ !yGy|w{7Tw~gR??}xRGjzzgyG}7^}ͷyx xx }G{/xj'e|󗀟~跃|7y>hzǃgշCS@ X<nu7qq:G|y7UxhxxGX"x73'~ HeSx}~x|jXzG'!zGp}xXy9X~h{y |[gHx؉֧|%xy'8)P؉n8zF"f熋h8heyykU臂((8 e|ɗQpc9'sPX}x{|YƆG!䗊fȁGupxw|gzw8{Wp޷W=h'u1xfȂƇhuf|~ˆqe3xgv[9y#Hgꒈ眾ՙz ȝ+)(wgdقH|Ɨ?ȎE-(ܸy퉃 ({؄(:xvx|Z{/ vHO7=Y頲'\Gy1Y~)l7(Hu7uס{-h~$(^}y~!:w|虙dy~5|2Ƀ'נηX8?ip9BxHOZz*zW~bZZ|Xi%M xțئɒj9ڑiu9*Igʟ'&|Xixeb9(Q |e|IYLPig9zmW9Hzws_I䇆fx~*ujd|U ʣ6~֗^%n ʡڂ]yXnت)Y# \: (9sɟ^ə;1hvvz$z٘ل:jYy>؃I{鷒Zǖ),:V ٚi* (D똿ɘ) Lʢ9阌ڛ ɷj$}4jyUN hx]8fɨXKxX+hKqX>GˉtxshKwX 9kkz+~;(9kދ+K)˺k8kqxz[sKAGۿU y{@ī۽Rھ+ċxׁYׄQ++{ʵ9 eL؄v))( 1̦H{|]xy6/…%*{#6 ٦+ iZ.SF:uQ 50 ƿh+\FD5,f_sI,~'*| m.<QڗLLmhDDkɊƌ LH'nLyɤȦgDvʜs ʑlɔ,~nlQȳ7^DɾLȵ\? ʨl[7_ ɱl\jʵx ɩl֌-׬̸LAȸ̟ɼF`μʣ̞7lȘZ̭観ܧ7rM y Κi Ɏ)˔,];ɘm'Leጪ<|,2'Ȝ< ͙#\y\άѦ 0.(͸]?̧IϴǼj\vCZ}k9{` JҔ2#̥`}̹H{ ՜/MZry1w̬Չ|۪PYO}̇=E,͜5 ە\n>߭=䡎NXnҸO53mx}ӯKzRTf8Yr^ܩ=\n-/nl"l]S^}N9ȌGѾ}^lܻ~^ʿMԲܼl/ FnG̴N}^F. ;u~lэu[sZ۝-8ӾO\Nd欎O"/MJC=U8_۞o.XaY]g朾kE@Zl=_oCy,,:m.N~~MْO&_tj>bxMԣ] پ#ԤXFӢ]/EYΧn^)Yh;kqv֢}䅿ɩXnSN1)Ld *\!A TXaTRPIH!A +FBERdE.r-pg܁O#;`ݩeÆ}pp+LqxpU>j>tEkaw{JlyQ{ϧ_}p@ 40?qy*촪b"p³έ(;CCqDK4DE' 6NBkЭy·brH"4H$ +BlR4GR24L4TsM6tM8sN:NSI62+)T4 ѭOJ+RL3tSN;+@Ƕ.KGUCS%O*OkV\suW^ߜ D" cݱ[uT:WjZlH#P>- Ŷ5 V|qw񖣎{uFElp, J\ ň|u[w%r1(-$| +KC_ Jwlu'}yw~yvΑ~z?j1:^tTO9wZI7UQS9ٜiqi#!=v3Tζ@(~+|3 ʕ)m}Q@O~A rF ABz A},%BzG: ;]5݄ 0dbD8 .Ha4R/4PzrAB %"NaA< 6ȈhEsF;ъ!O$a=S8Lo":aXA6 q}c)36m^:q#f̝Xvlw SwŔ04+lX8E8r~ˤF8Zq ? 2` t@2 py(+Ve h03?|h H /~ # h,˲0.pzWChG=QT#%iIMzR8)B.M:qЯ-9}LiSTFUO-9iPK.xEFiܸ*9Jqj]zWBը(vZL_ơSp?P5* *POՑ `ylg=ٍri[ՂvDKd$oiWYcsH́V%nHY5#<;Rv],PYMOW"Xy-fŨZ9l,)pZU1E7 0`&p]yLpPc|f4tP,jy]k4)]x L\~O-+=pz)-[˵kDeCm)YAb(GY+醟Zn<>@$9,I7v4棻nڰY)Y -z':5H"5lÄ-5EGf4hYӛt=]Wu#Q ;.ڶ2n2EYKG`y~Z׻u}PWƂH1^h\`-UڳRm-[uȓmp[ =R`4!ZA[yn<5r(_=#Q]Jq\'S=꒢eʑᛷ&Y-WSp\GԨGw-} IO[xO ;}}s}wq@ӮP5-9Wg][z׽u]c'{~v]kg{vǝ+ԏA,~oP 2 w'^g|xG +*[2,\8֩'}Mzԧ^;ҝ#\߂5DA+a +Χ^Q7(`}|'_O D/{Jt ?41'~+5W/p:,2/c>0HT i<4 @dȇ;@L@\S 7y /ؾ = L/'x.|˜D|(VdxAAA\󸪫9 /ȸ<0 ‚b'h|PBA+B,B[?ޙ4S4 ,!̇2\3.i- '@Bex)B>C?í‚;@4\2B'p(< g =L$DP EQER$AAH!EG|ޓ'pDO,E_E` Fa$St>#@cB!lD+#|4DaFnFoF(ƈз#((64Æ4M,x fp=G|G}RAԠ =g3,/`G yt\HhH*HLI\IGs <ǰƄTHBI oGUdĚIH\ĝ\NJJE<ɍ |IW;t//på{FKMҜJBU T^mVҤ_%E4x[%QS aVgV$VJ(j3e4],V1STpWqu>4SSQ%VZSQTDUz=س AE}PivU %KEXJWN3@[ Z \}mY, ,a}b}P,ր%w֍uYEIYYʹtUZX]֞Y}H|E5ÚRmTYy}ZZ9YY+%>M[\^Z}Hʋ@ Nlumwزַ mM2a5YPU[\GmERdX}\E[ /W=Y?\[I\Gk%ֳE ݶ]EsILuTԽ][ Pl$-Ye]|\^M# a"f|ހ,}b wX A__! n@r;9ӎLF_ ^_ 6`],@L9ɇY- \ n N`|< B-@9@[.Ed]\ ^Va b.нVDe !cXvW}b 1i(i0l< }])b7+|bAp _iSdAiH5 ~cE֏8dGaN/V[+AdA.d5_*̇E.eFnGI6:c>ecdOiH8dzBV0e_FI fc8Jŕe0ZV& ]Q_fUdh3d޴UZ0g䰔GQ~AVflg|f,d;J.-stNgSvNwgygI~afIwdst6hDUhxf_`hPA^ Vgf|Xhf.Ia·U l {pi@btL|`e6nifhVAy>gCw^d{hqu3vgNl뷶긆0iV^&kO&˴uglE.ligŞ6c4KNkClj{FUs`PkTվl֦b60n mоܖke ^ vfln j햞|JionNa6iN  if oFkԞ.I\`o>\viVPpfpގ=p zpcFj{&q6jNqm&!n`mDOk(r 8r 'kl\(O rq1q or'd/rN`08_:sUo|oojA_Fm~hVNlV,7^R~t 'fe{fEL/xTRmtiJucjFsd4Ugu V.ZG6uFt"S_\c\d`hvfCvtJ,vmYntpaW]-ǝJfkOIdww\xbIvzlwsGv{5wwYWxhn~/خMc'wiFxXz.鴀'\DoyWlSEom~pݓyfyW 4ߚjypU'xWRWWzgwiu$wo֏v!_ ,zn{x/0zW`y'EPvgO y|nVe7.vWDw74N{Tm.|gc|8go/ gWbzٺu}_|zL{Rggx W~[O؍y7~_&-vao}zx||,hd 1d!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʑAaC@6wB,j(ҤJ2mʖ/e$*֬Z+ذbǒ-kVc0,Yn-ܞ@:SټzWlک/.l'޿3nد'S.1̚7sU0ʢGTrԪW ZrV63~VЅ^[wXzI3_{WЀ3^V uv3M!8gJe!UmX[1S0G"5ڈOTV2wAC7y~SERMw+$AT!ai͈$]Nhf{Rd@@'daiy&`Ln񘜙ifm'j6KI`i\eB0)(EhOǣf)Az*Y^ӝv灴VzR *e,ie+\CШ/T+:kL>yv@h>yϊ;.Gګih 5|l{D*p)my[Ћ{0g[rbK -b,"O"sm*\R)kSǓ<"%a TA;p|tK' %AZaCdCt2F#u:grQ$5Zki=7b3=ۯjnn{%݅{iMlahr2~y`)e#Ì4M0 qvcu Ur:$ΩaQjAjq?}'@'oAS^1+ ?xsO6> c> s->BV ?aկy oQ{ u! Ā?۞$]'8ax&D&|0SzrBJp`!Yô6 \N wdN<&)vƅMc嬁y>*13Ip.zq':'e#cx?imI"cNFȿ&g$2gn hH"R^rL6 @օJX2 4MrY1R!l KkD$.)]҆X/E` s ט1m:EC#mٓhICf&tXi<)AX: dw/fK_U}MC,0[ۚW]:oY71FnØ*1,!c׻N1;8y*7^Wb%8_{wk8~5,19U+LL.,,43.$;m<ܿ[v^І>t~k"چWo~4,^h+xL=Zs AS%F4SjͲmsm&ҋMJk)\Y,MPkPe3s+ XzڴubL{jQA'BjMOQE l&;٦v6jhsmvk7O[uwYkpc'@=׿O;;@Li[]Roĵwf{2L#䢾ng567\:sskygX.D8ҥq ~eU>gsy{NTf?;څtD+ gm kp's2|)Xs J3/KR?INwž/ -M6|z3jӾh]+C"]M_7unw{A<ϸ^j^u7e]z\>!~] E[Q6;WnV߸U%&PY}ᝋ5mڸKiK}ՠ<_aTֱ MC( 6UB  iɥL?KW]>]T6MNa \!] F `LaHWPAX=qڞ` >q9ᱵF^RV _ce` D@ ^CS:&PjUV3dbٝF2p"`[aJ =SxaU D?A5%"Pb#&6 2Pd1#2&2.#36c2vi c1Jc'NcChb5nYXE8(b raɟM<+2 nÝaa RIb/ơC0MdA@8#C6C:$C']s$^ C^GC0|gѮ!=k0&0ab"aL ,٣߽#i]+AjB.CN%U*DȆpd0 VW~%WǨXr1GGAMp%1dI[ QWy($VӔ僱 CQ`b>!ڄ`O.<[TgVmFYfY iXXQe&MR#YLIAX:M-""RbU#J&-Yl fnfE.d>,Ug~g3bEDNiWyhFkrmJhdH i3i%L} ; NTpZqO\L- !Q.Ϟ@*6LQ$`u.JudvvD"cVegz'Wjhi&{'VlH M}g_⏶dO&6pC,‹%dZ,:iXQn҄j!m6tʡJUIz(4…1劎HȴlG x. ~zNPgdaHB> jD!DQ?ᐕV9ISMO!}iAxBbPe*eA8FADi~JI .jɨQڧ9 %ܝ* Ao:.DAN <ObB4,M#6x꧆jr) @8#<%Ajyz䊢YELĝ< *^r[񭢲:d)Szz !c>N Є"`bNkꬖGGkN@-VA H6kABBlO8U<7eN ˤb>li~ȖėNM i<(jkikl{lU-"쏆A#_D$I%HVpR?)"!aA't?MC0Dq&n!m+ʖxh,i-i,k0dz69.A4R!+"kj.+XVL+^ɺdNت /l$D6cΜ܊Dejkgκ(RFʭBjGd.fDFv01oa!-Pi9f{'ٸ/Ad@+ `vVZuG/߾iyDVFo o9r B.VZGA\ӝqbKa-nߘ  ˯ KPA0AoVHk DDө"(0^"W/V@5nqpKr)/ՐndҥZF'JeUx-#Ϊ,pA g.jo\44T]&i!uOر,-% /@ns3OP!QqV&γi6hgAs5_?]Vh), 0JoYMΰMUh[S k͚ !L}.#A?ntNaȂ .A%AA5zd%XkJ̝l3n*#іhL[W04 f5atkU5m_{i˲`3_nb`.]26sDvډf_)\0*.\l$taPI60` feaı~,3g9o6 vEL:e[}(V`%/uEhcDdC vP6aF;z6{OBa@ҷ}'wUcŀ!i8NjE5cѓ>5 |o6xAh|6nKf8[raes,e.riltblF6+c9VHΡ wz) 2ya/mnn749tV9h8VLZ6!oHaHB-\Nz-R5v, @a*HɚX" D3q|XWB¨ē:"yOw1 y帤OƇ)|;sd$zF3q{Ah79O[iS8z?Vl;iĹ)ĭwGX5K+yStONP@7b0{eW S[485V\k1`JB( h96{g@|\w@`za@,;CF3'約ɁoE aW뻿_o(An\#*ZZ_=kyUĹO=j8=o)(oL>O}>x~㾴B}vVc4ׯg Dob |K{ߐOOUg>ٰ{?ȶ,-Sc d=yywG(?B|D̷o*F3KĴ|48pZ[-tCNxcƇ4qGA4yIJVeL3iĘaC-"$3M=qAa$Cd–FVzkV% u 2$IVJ3>n\st[7]e=݃S[Ne Q6vrd J)Jk2EÖI6}UsibquF|J,m[9\-掟+kOn#t+c-W9MP2rKϻ^Rg]ZxIJk7*>:`5$өrP -ø(9GµshDh k0#) I`T!,R hli:[̦Hq cF)02|(DDgI*'ǁ)U0`&ʘIh8\yhR(]w*PC`ժNS`wNjJԶnϙon0 _=+_G6hw.4{sY pG4d ̞|3'9Z1|5H3H60Nu~@k+!,Q ϙ\P!Ç.$(Qg+2pQ|=ȑJ@DXw%tD38 @[3_ѣ u.:)FJ1JU紾 !T΅f(`}%3қr@=a&,knVz c$Ũ3j`X &!,KU gLشiŒ l1c"ĉZ8ƍ-hb5B!B,!&ӔB;3:`1hЂF!,I شӎ1Ȱ!Ca"J(C̦Mhj‹5Ft(qEMH$3+IȘ2M(Jyxsˠ{2 hiBӋ6 ՝aNyd(*WV+E`=^ȑ뺶x^L;|1ӄ81>Ōc:lw,cy2ewV}upMUhks5Wj 0{^oӴ `}3h `_!,T G45PÇ6HѠĉ)^4,Fœy(q3g"G*d8J T4%K |x͛9uBI4!pB-z=;.eZ<|HY){XhE5%B뮆kluɝ |nK+]_n_uS T^sK=3SIpet2"W# ̞0QwY;؜@hQQȝ/l 3y@!,GA' i FÇ#Jthl/N36Ǐeq3(SxbI0'l3g*(,φ0vhў921PijRhFj"ë*g3*NjSljlѓծm*UrA6kn^-Gd5ĬVjMrǠ-5GEzQgB7 vL'ώN%( I2cOEQ0 eUM߾ ( &Th]=0*{ډs'#yC_v"u`^ۓG/>{c41}>9(x 6:8!^` ~e(Љ܌ ZhX]dHPv3=̐ԗe݆%㤑GQv072u75ڇۗ}%i@v CkBpMƉczdC!,E_4 HP 3f*\ȰÇ26͔ESӄIȱǏUfLAiFnɲ%c1sF&͉ɓ0Sl i,fϣ=TZNPA2T Ӣ+j}QBӦmpR mNJm>6ڜӭ[qktekFiV!2xki/f{9kkMB.]P){v͛,HjuhQ*ei±&NϢvXϺZKO-cɓ)19w1jt[~{ۻ_yvkoX|c xCs8B= >MBCa =#~ .$Ea8'~"A+TG2ΘOц4(u:  +.S : 4MS*I%h~fKY&^I'縹@gGuiΟb9LcOaM:(|n8$v9i=ꢉ9h.inj)CXᤥ~ ꇽΝ>;r!,Ek: HP3g*\ȰÇ#&C;/4n|o~P@&`|;M} .hΝ}IHy 9r'">j=c8.sN84H^x+:7"C=7еwBCΉ]g&4BcS'AT)ݜb V=N!,Eq@ H3i \ȰÇ#JHq!3aӄ 3fLc*IdcӤ9Ѥ˗0%N3&ش1s,9E8w ڰHfӈ*UzHcǖJՙgЩXG SYRZԬ`+V596Y_=֢Ǹ1sJsjn޹i]60Yٖ%81ح&:nۘl72bH;]+|ڼz,JY~mFAҞl Nȓ+_μУKwխ_W]vݽ^͟/=_{G7]|~#:( "w (8 9=7!CxΑ4Jd%xe ဨ@xN>س4pߙ!yCbvpngyy$ !葋s@\Bz4覠{f =}4 =\N!, ̗{*L(p-P:IȰE9b8)zp$Ĕ + @".ߺ{7DSu6-w ٱsHN%JӊRvpkRa-T"oÝ ܹpN;-ܺN'뺈foZƔ] FԪ1N:ށ\=k1¡JD\qwU :]wD!, Gٻwa>|sxDhF0zdH kqɓ֥ Gcwj<'͛>5)OiJP+*\iuZus+uYI[IУ[dm.X%/iO%,1θ^qT޻s޽ !, w޽|*D(P-:IE92lx1ȍIg"J 'iS M8TϠCwX4=;Ƀ+wl]7;/y0^JjD΅f/Uh(ޛJ2NsFm#oHn9[sݴkDI޻s !, G C >X0D-^ĨP#ݣ0ń71I8pC' ʜYfI0 &œ/yJ&e(S^>VzR溑XHv)uV:"Yf׽+8mXo]<ݶy/k.۩e 囖ᯁ%.kE(@s3`KYֽ+8m.۟U[7__?0x/_4[f|xpaÐ7 nlOg.;z.4{N3訌NEB+M` yZ8sf~^Lޝ;y@!,! G | >H0D-^ĨP#> B@% )2%ˏWD%H5޳wFXgoǣ8W4QI2u4bpR|Z0=C|X5_u==X۳hYpOown;8[7)<0_7vldnīMxp<b׭<[^KV.xK/c)k̥ciQ .wν!,% G  :Q"B-ĘQB5 IQ$ ?Dc’'YN s&M9rsMsYoiԩ*5'CNmEudD:-IN[ \qҵwՕ+uz k_ K4|8wRk,#z.4{n2p[{x[ZE ,nT>7i;53iᢢ֍yC{<`A3{wܻ!,- G a… J1ć]lF )BhpdE CTqdJOPL1mϜ>ur *#QDyM2)N83"(իX%޳w/Ay-Xe.Xښ @>tݻ*uvεi}I8p⍋v bƁ"1e,E΅fX>Ͷm䲥Md;=at+@ 8+Kl` !,&0 G*[C=0D-^PF =~iPHLreƖ(!tq&̈́rɓ#ϟ;}IrhΘ&C QGEzp*իXj$ , ح@Z{k&Fm^XU8f++f|)u'LȄRF 9;{jShEpQnE0n^<-o Z6(]zu˯y®V8o}0 !,@>=G>[ 1{Hċ3K ƇBLѡH%jdJ+c `̛'LΛ;5l׮M[shڢj˖MR:KJjZbۚmkXʚMɵ6nվMy\sw7ᴾ LÈ+^̸ǐ#Kn*? 9,J7@` ٟw~ʔt[w) _>//@zpM5w1|S瞏GP@!,j9\j*\ȐJH10J2VQaƋ(uE()N[Qdʗ WfA>gːyiBQRZi*)SV& QRn,Lu)R)]+6_HC7nE -j7.WmZ3jPǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻO4XN.clj̓Fy0 !Q,Eo HЙ*xÅ .1)&1#ǂ:n RdD MN$Qǔ.#ZDc˚3olΘ<{2 I'ˢ.?"UtiǛ?+z)U5d!P;dtkwidget-2.1.1/doc/images/dtk_and_system_window.jpeg000066400000000000000000001766051352002233700227750ustar00rootroot00000000000000        b" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?6}da;;I"!㌷')YƂD-qQցԞD  V :s۽Ix\DIʼnG *Z}ťӘĦBXgs{m>#q1*[=m\,>\m:BeD%E)]wF杕[X#&P9-}q@),n$𤞛r1߽-10cȅG c#>l*Ȧ9gQ1JqryRԜܯo_?뭌}Fx63m%Cv" 8;C2ЙK.DTl=Mh5,c.Tg,U[_qjDNBb9=oXaaEpI9=J+tC.9az XB  p>2%_IiB|bU|Q$qWE&.da 13ڒOk`mApqרL聰y\.Csk8ij*ԧRIA[_nRȐnbC׍qD8'LWGxʣ]۔2s֗SP&20sx>h]ҪTvOhvR1os*選~UBoJyU1#YѬahZЅ+}vZ[3!1]F$PvIOA*m Eʪ[Wd0p"nK`NOC"ߧ+`t 2ĥ/1 fb7=-"A ul$#<֢5,;jKw#0 ꧨouKH )#\.B8.3ζq+epv#2Jct8z`s]4B-JR[S(WYs c{TlkKv F gs1ݞ-[s.dĞ|dxTG=+_%d\o+B 7aNz9TjUGihw.yl|3BsR]jOe ԥMX*W"%Ki^vIy`4Ē kN.ID"XchԳ1%tjm.Gy$pf$l>j!)^j:(ڐɒzdl^4w'{m )3s^sCj LH^f DCvpZEjˬ$h侙BJ31\~0 :+ P 2`4I]*x8Qk-Yohlo5e]q-I TwE)C~/;sk5FhdpՌd!?0@\k{Yb;tyC.Pʀ $b/ᾚu:})6iݍ=U# NjxKNq Sy m2 utldM[Vh<8it98BѴntW7-n\*O# 3@;3xB+a!1̑:%+H f Pnmsg;ͭIYQU$7CMH 0.S#hh$c@0"Ե^gfeYdI@!#Bq޴uk-ƚ#Ɇ"% Y@ӊHp uD~,+1R> Z$3,q#xp1~ْF_} x~/X?[V8#< :RE#F1I~_{Ic_"'`|TgZi5O(b#1v1UD4QU mLDQ?/(O~w[#%V'x:sDHuC _ A~u_78+ߓ~wZ"~2|Ҡc999K5yaP~)(.2# }?ȉd3տ1V8'i /Zlc n#no/%;^o9Ia܇.gTK|RO$s}uF_YuQUy9?i&l/P1q~nu'=E,uO~zI '4pYPKgIimY!2y,s>8zW7RXi~ y6JΝoX?ڙ ?<g9oj'_&5☒T>Q"ge>*_3XpI&??`f?J-Z!J /u_ynu?b?_eZ-mQB o8o֪KhoFd#]1WߛI+ d9l]-}eg_J'Ep66Oz2 N)e|'q}957R{[+ .ZςZDbKvj@?!V ]5Y197D?NN7SXB_{+ ]?Ąڤnx U{%i4@C+xtڃu1_wnu]~KrUKOKςm?f≖6rʇAlsvIZO̼o1)݅]s&7Ru79W7yQ_|Ik׸1$P{}M )q:9{XbN=+ nuYL%:υZH"[#5m w1zT_M+9l8@ dpo czu~Wm& -n! 1it2o$=Fx_8i77P|FKndFU#N9wu:4Gj (B*jpJ翯ȿCm|BHQH_lz}ՋgZ˰3KOKH]W3hC1Y H!!j U;}%C3 o'UH*U涠KDZJkw?G?LֻHQï>E?Y{[ksA+{g LnY 6As._{VƆMȪ39H"Fa:?3`go,Ϗ!iB;9e@\d?ek&[afpg۴E}]՛P[G|/9[ũJ]cP-:'| 'ƒŷ&oZu}^5J d|']:1*6HGT᳎g0^\@mB ҈UY sׁ}kԾKKG$2BI6S`۝Jtp ۀh減dp|qg9+nxJfMl|<ʉ0F%NFAc_M=تI<ާ_[nu/_̯i>Q|ubYC8=F=%5q',o:/_~.8~7Rx,;?)V!C D{&A?j}>=n,ĜI98ӊu}G2"ٟC{iB8Fѳҭ'슛vاwS^TK9 'Y%+) Gb|AKpo\R>9SF'Nj-ۮn9Sf%;^_WůXi[iũ(#|9<N+KR"˓nX0P9$3ύϏH#@?/%~^ʄ.]$ {`z:b OR*ge8IwiA\;dy$ r?5Z`nIH289?@?¬.H~>ʙ9Jp:=:q7gsꩽneLd>H)`~B hX"Ln2}zQ[o7S;`%.',}QMlbVs G쎰3+ QA}z0FrKr1o' #~#_N5hc/?zFݯvc2gl?BBl~z7k^?>ɣ&ȣ"hL2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L2j<2(L?l|kTaeWU,G,9$:e G$~ܨ_a=jKI;-iSFM>TNХio> WKMoA֥0xoV &F!ĄJKI4JG5CU𦽬6𦦺&gkKi'ݡ,,2DVٕ48n]so| ;J2fܖg3)Q|@w8v^{+Oinz__fKMox=J[MK@o21[dYЇ#̍p09JtXXxZΣ۝yvbkm)$ ǚCz֬5-6HxzKMFkckp0L/ß]xš׍_EcNM%WDHy&(L %imO巕՜rM5~Fh=|cxJ=@qYg]@YI5aP6$!s { [6B:anL((0o!'T=k~~˦Okw7nA[KF`yMcwQi! 9|7# S#bFZ6^oۮD{9^>#mW^cPt%=^uZNs#<*Nź^ ~~T#3_a )U#Vz-oiz)u-jo}sksn$q#qFk.j)|K]kYD:y3]*\ *ۺĮ@AȵS;[nW7uJ[}Os. +k%ԍ$k/5Y$b6+G *w ~'?.q.̫! 9D Gw!>nC^jKuSk{vM:]--Q3`YT2|^(}+㏉ W\ ݴ&r-hLJT2s/h)KmbV%a5ڟI;xEmnfnk4ɔsB9bBR[|>}7I%LwuC3ZݓkʹOqO%L: vڄ6IMڲgEsJDZt?~,s9c{hYczvLL %yCO[Đ B2-K?\x{]mt\1p=m ႌ|2m<iKwiAbY-*3'8Q!@||;~t]3U,um0O*hBJHo)+|IٷUo͘O9?QxcGEͯlM2ֲ f]c@m+i?{߃YEwXY|{? >hqо _ t[6-jT_&Y\hd3HUHX'|K7o%_~  _B.;6n tnە{uTmde]R_~Ѿ4j. ;;O%ӈb&@2͇T8Oz %6e 3[bI[mE$$8\ |DMMȼWjV-ϩA +$2,9\lCaMǿ2LO/y<;wi+W1e{UNFN3տ鲿%{M5E#$ɣ&ȣ"$ɣ&ȣ"$ɣ&ȣ"$ɣ&ȣ"0~ ~"|)7 ~edUvv/*ǭ&X\QҗwmƖv9UpI6@#{aծt;-;TmMΡfp'7n%+ :yc_wJ|2j<2(Lt hYhU:PH s](2 wdPG'(-?z&MGFEIFMGFEs?gyO RNVN64WکyDrU3$#.1\g~$|N'uSXhv.iZ8ci :`SH+Lv:MwͩdC$)᳚c>֪c}}OpAj@GTu2;x˫yQ%iz{֜*T8=-Aee Čy_ӳL;䤵dGvѪbr3۟'x)xHU+0 l-b%JS~xWO1~ԇLnz^d_>)b%/uoQ?JwQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowQcowS]VE*OcV>G([dD3IO?J>@O6E_;\J9' sԧ|zӻD1dd9>8IK2,c T&Fdcy@p>¬E8LOC^-ϤOߑEՃ8[YV|S), X3ʲM25鲲]Ѯ1L!Uf;c~*'KKb!N+ OT,u"U:uҿfY24#F;cP?#__Mد_3MS}Ϧ-*Ғ]?S(p((((((((((((((((((((((((((((((((((((I޿0mA`>zg>$ww˄'Pk?+֍YGyRP9sڳ,VVS6{CZ1x֏-QeD$zFfg+y%;T`I[d",~궏~Ro( $~=?ZܒԼUqֿrid)Rld2~XX+ |>O/{5kF̤LQȅw0̥F\oIրKk2<'gdO~ϥ袊Š((((((((((((((((((((((((((((((((((((7G ~[~G?οR~3 ~^$8瞵ٚ}YXh 75_i852 m cךkv-xƗ?~te/}io2o("Du}~q+cY;ӁW $6 v`9 jnnǎ+FHNVz^ˋX 3 I؉;ԓܐ+ 1߀ pu _Vw7NR)J(.9k %3!sW>j)[(~^h.(>((((((((((((((((((((((((((((((((((((~3 z-A?H1I2+]+BvŎ㧶:}Mrtl gewǖ\z[jqG0U 3S_BK?14n+ۘ!hJ2縯'loIp1s_W7{M򝿻X$dve?j9TX:ڝ9nMyr&i9vQQ_2}QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEh;!wHԹf.I޿P4n4`2.9q>*d[VXTB=ɧ j"g¢y]0*9gB$p݃ o4 FCl~ts[Z!B><3[Csi$z4;=I8*_QUQ_0}QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|eA +=޿.+CUa݅W;[$#G}85Iy+}?޿.  9O+_NCnٽs#b1&̖ yO[bVS0Ycr͏}}dW) )Q#!L}k)tdPr3_=?I`y/١[+T?WN=w(aFoe,G@U8ѦccwmU!Oj]&;x̖p k dwuq\ב;^=|<]G(`((((((((((((((((((((((((((((((((((((voK~ZW~|fQ(>|}m޿4-1}%$*V v} _=q=̺RED,6}^튳iN ~#`|=Gn=xIttrdx3ؗӎ{ 3xmCd}゠ ך%MknIy\ Jp4|OІٔA#t,)ش'jiXPGg=R(!$-w:߼CǍ2]r;_#slF@,I5  1q _Yv,E\9{ }(Oj'?3֊~=L\_揢(((((((((((((((((((((((((((((((((((((K5%9?W潥E K;3"HY#x3ׁ_?7©񧖆I?ov| ێI ܑQ"Nzp )Oּm9NQaj('sB'i"MĈľYfj[pgQ-#o UY4w0:!O\twf\ߛ*X%$qxe+<4D*yN<,=xi?MW,V9f 4gk9Y4 $pF@s{4o 0r(qP3)w]>*lTFH/#<\oҞՓAHdI>c9?! QX 'o+ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9o %ƏxT(ϐ <7/xWmP1%pN dq@>'\_\HbE]&.H8mǩ űK(I֌ʬ$$:kVi=YӇ,EXOjWJYEzdϭe|T6y: a0$Α5@QB53nv~FiB+D1d WY}x}+5q䓎koߙ^G1\ + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9eMd%xSKKd;yk!$cc6| _? jBH/~AտpW^q"ie !QH'2"T9敮z8irA9E6v$`  .[.dr@QƵG%Ʊ=I#b}T ) ` r+i_)V6GE)B^DF#'SHJO/³rnO9۽hFC 9է؅a9 53,΃\GnOzcsWѱTq~x͋oN꿸~E~jj6\8G4[eA=F7/'{jqw f5r=n00ݐFNW:A\N7aWCj7R$!@F3NA=*06rƊOȞ5f$&/ENT.n1:fr(p }Fz%䁂@yo"I+H‶>o -.[FDn@oď_;pr_Ջ<kvT{coAk O1˱}5 _Lf(Ͽ9f~0e'QzF漼KgGQE|EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP pY+zwW''aʏcsXVv %-ݱ1'ٵmC9=ԧ]DQWm"Sfp3FG '_i?%rĞBș*y*A Σ$yd H9sW77| ;hU! 3;jFzIߪ>+ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (9 /XcC9^ҿ4gydhxeVf߸w d2WwG_#C*~i)ʋг8$q^&a}UԇT7>Ԟ$㓌sq O#`xL:pO98crg88grh9Ty4UIP^lU;ϐb`%W"5.B܎j4Jd 1Q($mI~In'a$G*@b+uV|h*s v~]P9aqֿc?[ᐼQ~qp+B+]Re*NO1~{{+ I<2\Iй1w32*J$x*(>((((((((((((((((((((((((((((((((((((~/>؄/~Sq-0I$sz9J38 _̊υJMHURZXVВB 1{'JC\Ͳ¤J8slp*ud0ʠ6އ''yx~'HME Cwy_N0TByoVW]tFQ )@p#U"$1F)<8ޱMe]X:4 H $ܫԟ~%MF_R\~c܎AU*LsgȣzB D*̹,lz{~9Jޟ1Ӎy'I6t|Q_>}HQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEdC'P+G~+.$ED"W{7ˑ$Ў9gnApAЯܪF.ĔH!8 zLz׃|Q>&M~-^ )9^2R})'%܊28l*729wlHve#~tn^@ѸyQcٟ!@Ĉ  Ķ&u18)]d&8V5w(,q,*@8Uۓ_B^_ݝ)Gn&(d`vĀ|9NrIگ'd-o?F\ƫ)mlwqHЖ5>o&w;N!¢öX~<= BlY[_ўRsFQEׅQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@0Я; % 0{V),C ;˻uh_,QB1^eG^Qb آ79xbH)k̻}5\F # & *.4;L>4hl|mċ8ơM>aH $]J#RAH8mhbEõ"gq*I='˺STy2G˧oH@ Nֿn1d?Π=B%Dˑڸ~??docb5c3겊ܿ>+>((((((((((((((((((((((Mn@Fmn@Fmn@Fmn@Fmn@Fmn@Fmn@@9ӗq$x~Hc~۶wo~\:yY[B%ݒ3ϮR~0 v;qڿ-l0De7J# ",p>{4}A96vIe |qHpjA)#ƥPBQoOjdVLRrGU_8AJ漧͑߼wS#1zg޵` Q'g{Qge]:H  :R6 WcN{8i;6K#_OmB+3Ȍ}W(R2mmPA~x?i\x3]մ[=U l^HBbee|Hp@+QuʟSʱ+ sqjtzW=Ijڌ6^9ng *Ņ,Ť0`$p ?20;is|sy+Q[^Gռ v~_:̱?P Bp Ox>vs4̣/Z+LDh)rdi:n6{S~ІEKh?xҏT _gMӧ~ߟ3e#O8$y[[qc㉧Қ.Jpc_N~K?ߙ'E~*(nR*iۘz>*bdOls,=Pnxdigq|~i,QvbXd1q'6??_ yϵ7hadg䟷ǘib4B=:"#& K/(/ixYUtPט*2|Ej2v_~Q_~p!7 *?S/oOsw.4H ㌰T~>AwCpxYeQ;#q?.Ř?G?onof@NbN->*Jび;6zCHV[F_rz+>ۻu^uώ ;VX,HO6Okv<贻 A# ?O 5s /1PպZ/qMk ? HAEXS+v.~Q_~_WI2F!IH HZHlc ݿ &N˥@ k|d+e$@l/RgE~^OGYI:ķCM"0f,` mV [~ٟ.ue,xƏe$q -JrbvtI?E12󣉋%u22 9]/&?Ź`!y 3Xr84+*~tNURTO;xsxk2>m.`>Փ]:=?Hhk 5.K[lk?*=gLrٯҊ+ik;xacYk$>0hͳqҚ̨3e%>_sK"D?/KTr ZMCDI q+OIm|Osx7`r0BqjY[9+@:Nx=Fzs^>7DUeU} ti#?t|'ЏOʋQ6yL[ s0GQ2Yd*,m$09?J1i<ۤUyӸWs-wؖew1틀w8PϿ1d.OmE 7̄(zqצ&(5;YcX?Uk;(@= ݫ)5?pPzȣkY", *{ح^,opv`*I 4h өl1NӰ'?of<|C=G,mX-I!`035].5%^t_9Y ꯟ3s4׽3nu2"wÑ^/-ǂVP7 _NQ;@heX9?i%_K$mO;[X4er6sˮ/3+$Fṃ'z77|h]GApO{;ΗqR)0EMbϟ$1TM9>r3[*xuhC4q,>5 bm'[ йS_I[;~>Eo"7åƜHa+㟔)Ϗ[TxĈ I?hۏjA̾굒qRj1[DhOzsXU.֪=w{q{|$$~XGjj\OM>?[DD5 xT0eK-cQA bi6.]%OWո&P>/0GI`1_I( #ִTw3}wqeQDNpr N>{8^_s<73ބ (S!9z+?`Gn\k:'PE~ewfcI&9b)m̌-uI/fҢB-~s@41F>kh?6sվ5o jL _V}󛎞qa_E0f5Hs5~ޅ̌'ǭ#J_sQJd8q;2Ledw![G8-Ʊ`q:ync'p`bN*eRތajy?uv4.WU:% OWu_o I_A[0oWxm,̭+`rO沼W^t_ӆ͹ZA8hŲ`(`w*qXE%YփUxZ)v~#$v*yۻGp zw5ƹu{;K>1l ݸ26UaB94݁ w\m8%Oy'FJzzxvEʳ@G?{fγEY$O8{})Akds'KFJܮeg(ZMY}5la{fߔ_6 KIą0*9'}T/[mó88'{vEɽ>g?:D]0 2+'Z%G-(_O)m[¯Gpp\S71} F;L Z9{f?ag俀BٍV_1R_miin3x29qkO?>~k+wjPj)%[i6g, bԛb#RwDžHNHgϾ+C #e,^}xJm%΍|Q6VX~"~9O^z*\詁MK4r3JZIwF|ݗ$gT͝ 47+t@ǧ5?\pkة^~\S7Y๢H,Iߟ>ե7Z5z_ 7Zg ҵ[Ux涹ܓ2 A=9bv}[SSTVN59YH2FFx.O'lZ}ՕO5"<@vJfsV!}LB|sm{;QNݖ u;F+ΫP5.۸Eq{?MF8ݚ)8xb@#i^4g\_wb_۳DCm,X|VWC+:y"I;{sm-crY2p';N~Əj"VH1/năUP>P0Hs(=ήt5-epr>>fwaŒ}OaNM7f u6 OT_7k5sy HpcFc6Է6 ׎H0_1L&#?0nt썔s1d)̻Q@`jHe3-q$ڤ8N~g>lE#I̱@>o'&-<mYkM*|hhv$sR5dlu|s[U O8*h{ڹSm)O^mjIG$’Q.+[[{]뇎3.wrNNpq^1 ˍzjGFyЖ\հ8y2[v'<LUiŶf0qhCnf' e@pv)$GOP km1ddIJ d JeIdS簶,PGo"vCo;?38;n~oEw N뽵8V9g 6R|: Rr.֦}<bJ惐@;B)su-OO,O1,ZO0Dl9n3I\ȲIkeevI'FBlNN}qӛZm?cҭdU+s6pVc1H͎Y\,ƛ9>dd=ե-s3]W'$d`gU}:rL6#O kH?ᶳR Ӛ-FY]e+4Lr%Sɴpx'q 5kx%\ |< S[gy-֖󅢾d̩zz MNE>!M)n&Y*c vV@=ruOKA<#MFg<4b\pwCm3Aap.M28Zaed% ؤ A WJ&]I8ڝƐ5 Y+3nA*tg)2m(6xoC~*lwD[S6Xc[{I)ÌOwRs,[Jh )<@ʒ?' Mc'릵+n#G΍#G C15 en FJ:81BHyp>8͘Ovdy<`0xyh); \ WB9=ɨkŸ띻ျw(xO!;p9 1?9xʑgڅYI`}:{ןs+6AUû 'r 95,.m~ΠFBqOaOhgQ;X>'HW˅}00N܂Fs4GEY `H#J6pS2jҷd!2tҠe;>`zR=xHbO" a'/dp1#o9\NYf ;zB7pC28tA[xdFVpv[|zt)qo?_]?`K{x@hA,GO:8xf J%y ghʅ1_jqL{V!z8oW//'Ѽ_ps ?J1{?[?Oϴ`(5?v}dgY҅v0Pv3@]?m-mQhTKv F2B;U&n*[+qtɋa]5smDZhzm/nDh>^rژ-=57SwϦ%ĖEcVE{"⶛i_^me;xs)bUN :@,.%Hm- c<.ׇf j.p_q*Dom,[;Q+ *ͅn' >GuErΆNկ^S ib`þ*+ݥ7Vڲ]bu$dpyK}lmQE# ( ( +7^"&I,v$Qf$cV8ՙ;\/s [X#ifo jH3|$Ҁ;z( ( *kv1I¦$8^0v8#&^ep-e9%RP)8<x  t`vL0]rB3_)rKAI^zV'~ow[%٤&BO8*Č㑎ZeZ޼Av\H#(3.y?*ӌqU4rh2\Q 69#T.i$q$ y??p:S Bױi3ڠ[J,q08PےGxZ v\a<a  ^z:;+qD$3yًTqIW ˲F:'oBNxeh{PV,K$HʱdVq?6qӫ$crR57opVYv!UANqq/ot{(^eL$pVN@n{+kTո,-FŤC_0I0[IxSgRZXbx/p8(#<ӢUsb7gK f+2rG.)$`wObI g'3zC}#?6+״jZ[9Z 1'^ #yO[~şllՙxjPTaˆhxSE; -pTp>gI?ImP~|3=~LVAr>xTc#E|Q /{_OQE{8vG wO[+{=]n\q]WwÄ_Qo-N88#q#)b-vTco_a3x 0PC[ h/R?}0[$G*;#?7_`Wۡ>!!䜟x\c?=>vQʻçφo 4[ar~|8Qz ފ9WaX)zx )/LO|0Tp=]rq_!N@:=~ cmρ|4v O]rǰq׀ >P1o`P7؞H?%v4Qvqkg$H''w?<z)+${]8Pxoh?-?OSE -쨣'ݜw)"kE /̉QKò+g έa=+CI[H`m/$]3P{0M9Y7鑜wjϋ;|Wk fqmt׋ 1iWVN2mZ-Dn?LCCNu)3,x$L#G uaoTr -1Y<0=1'Ls}O!S[KԚ_A@Gҗ$ϹHBlx@ z1pHǨ"*3%N{~+iv+4$!VXNN܎IR² w6/[ "c=sTf巶4"CCaIHY?q^sak{ln+E*B@A$VCEIHU@Uvmo/:N}M.@b~wa^1 rNkn-ZL Z7+'e9V~P7.AM{8VxЉCHnU=TڡklL1-G/zO k2ke--C|67ejtuMJ{-m[x|PXSӜWiL!9.֑UmBk 9E BqRMtWghב Ou曻IMā'vO֮xfVgA{YpD@NMziqm T5Nu Vٰ 3F:d;S~}Clo7m.s"$t³L}>`uQ|S kvCw_ 26zg Οk=$h F::w65d dF^1+Qq>(X}QA:߇oZ;Io$mgE=+(CIEszSZ#)d"DR =9VȦ$kWzZsKg_[D0) &Z*c{–^GԦ.oq8zxp1EQE|M "2WPjZuaxHo`@FUao߈UOhA֥\䉑KvHaO ( (8O^]k{klL1G?>YHU<ƀ4`$s^jrIe%iS-k0YIe1a cOdz@'3JLqm8mu[&[2oW-ppyOig[rRpW*88QVc;$c]}ܯCmvw.X0|c(By''1SElohE9=1Ҵ-\Ek brW;H 27yR̶QA2gΜ@X( J,w+# [C3|"kT6~+bf_I7;Bp:s^VGEQL(((((((((((((+_76ᳯcI~9"Vo+H1tּl^>"v?CK\2 `~*A9vQ8F'SYQC@Fsp1ʯEc+8+`u|Zs 2e_@N :Y1]8?'ѨWsK1#e7f{YWt1+5x) #!JGrzDMgvP7E8 E~SGt<*Sauo6F*DJ!=F܁lW|38W9 E~MJ(@pLXŷ*$%Ig0,@=\rO]}EW}QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW?hmcU,|1m˸Ew}X_],'m]ON{WNڡ|B^hO]Vɰܻ@s۟IМd ;Nюk11c1$uѨ\9BI*`*GPO~f}b) 9,*N0=2H>JN۟BV؂yomaI%IrX{F$cymL.i. [KH%E, 8=N;ިhF(i=Eeq ~F Wֽn `9y"aj{dz ZQM_C$w02l,zt8玿M6 XfdE p두FX:ZMԊs~;u_-(% fЉe>,21;吒z`rN3>bT8.MKѩ,R[vr$ၔ{{lv*<9.S$2 GP@LUf2V+xQ:w[o& C11 %>揱=Wz~v>_ܫ4\+rc+DmFʮDd.>\ٽ2  ak+s]9#Y^7!<؎J[I ?.ql>~{8WVL3Z2O[}}\^ZǏp9C漬li<*dLV(ࢊ((((((((((((((((_)x_Z<<9lfg1*)ƭ^ _ G4eqpH8|g`ꏓE% ɚ;x<ϛ3> ėRY~cnڌ#@~Q9$IG]1A&mQr#|uNmn5 ooX[]eCNN\R+- Ls#`9xW2>akx-'H\3]*AJ㞳ҵXbrۄ Y#jʼn `[h8 d3@ECq~`JuF۽Nim{auxU\@;}O{7w+T3PC  Ol^IcT+D؈&DB*{ Lcj u+}IU@RL򑑷8ɯ>rB'a[)Q2T}QT$-aisl`lB[ @c9'i#$4^2xb~k4BYh]jcQF!rAd7=G }NFUeb*\^0po'9z*تٗ ;8ɔ帼r{^]QDQEQQEQEb>6/m{L.t6$8ʫ0$gғinkNJdmQ\D ?d{I׆`Lq9/bd.c m㞔T{?kyEb34 ^Rb#_G͒H Fa\ǿKqs&oo$_jJdoi9nͨJ }E٧GY:th"آo1q6q\Ɵ_xC$Ӡխ=i$|"rzuv̯}O:tܒW7C`ς.yu+v=hT|d<Ѹyᩉ3)nwhA$Ryn %8dyv64~C~nWkwtW-u;:f=hpKVi$2ǟHZÓ֚ja쪑3%`~aB^ef{#o$llFU8'pkMk]ck_cIo }7]F#nӱ q{?ULI'R׋[+mNffRm+uC!v]~H=+ş| ॿ]S\W# w-ۉ^⧗c+MSFNOdo/(g|!h(k͆O_G,GSX '::ۂO=?euwvTVnM#V&El0?X\$Wr228*p98MYp( (+_/ kW'{ɏL~S_?x?%xS+3"dDP=cjҚN#!ecs8Voߘ=3Uݥ8='ǽ|S e-_<-zbF*kWeU'i} X\gʺM#`lvby #Yj"ydGiq :{faΊϘT6HAE4435¤'?}?a&~gYvb 6Bӟ%[|2UW Bɴ&,fcInG0q 1οQO\⫍X\tJgqk3(x,((((((((((((((((+ l~Z;] qֿN; Y |~B,~uӿOƺ(|gg )%Zq`gU3"  6FD]`\aW'ZI} c2P7$C$`@tfH ΋~hUinYe!ʅ;ttSǤ4nlE5Ӥ["{){^~?毹 0k9^1M+ꛝݒi=ckr\ߝu éxvkMNmm4Rۈ2}iڊ'E< u\>-ź<=s5Ͷasmt!%K` 8溄uiqj{wG%*hUGW9c83;KjE_CjY&(Q/OSޭB^^g #GTwu 9]mˣVw<MvSB{U_2sLb@c21l]7MZSoX 9P\q\_Ź |I֧ѯ i,uL\M)c<06༹c0WQ٣g$G\ V8~.`Ao Xm$.b2ixWXp0SRO<sF)TWS.k⋵8> ]^& ytmmkdmb5ã#77 7y!D0$ zm._wݭA,ѩ'>|$Zy-Ͳnm#J"pZF8Z?m+Mզ'hE rO ʋע*ӔTt9cN}Qn+oT6r~Đx#ED_OQ?u wxz=6[mwՙTf(< a/-֧_*qͫ=[k*4(+.eׯhʿT+9㿼w0G8&|eӑψO6Czjh qS_(~4wp1_3?3)먭xA#c}ϻX)7'7Iw,L6)AaVK f3UGN8dAu=w>lh!X_;lUc?>kr%YhT OB0~9?snUø11_J{rH(1ݜW$7K rDU'uzk a#ER MSZzu c3lg+ϲhŠ((((((((((((((((4?,G޾&A}y¿Kk ?KED1cJ Gҵvm.5f+bMJ&8Ө p?>.R#n^FDFYFxRxcۊibM C3<$xV>2v2Ҕ9EkBb]|;P:|1ZNEu+7f0Vu?*αy{c:g} NRԒ+_>Ei/"䑸JW>xӎGQZvW>TOi r,+̷P*lTHX=H{K{kFQeCmorJp]$rFj4+GiL_,"2r@؀!'zsN NZZ(>Z(ʦs@A]c?Lc8xD]};UֽC*?f_LA Kv?vcֽ=X|((Š(((((((((((((+~0Z^~<M~**9#I$q;~W]V'IOM$c9W8;H@1`k9Kkwmob1Z`#"0^sUϗ7_)=;J)qQ/˜E&j|i#Eyq XIy& ķ-ҮG*qk ` RS"3÷i^ZB^B^8,Zo4H?0Zoulin7wPrq~0$?')i_1\vr)W_fC#Cxr߱q\3(#(((((((((((((((()uܶtI xn*78o]9{W}~oGeK?9*U[}F\獛l+^hHT1D*EQNOZm^jldB N8k7M]ȍ,j$mgI߷ctmLJXy"HΈQ|k:ZV8;;M>E,CHºSbv 1=Hú?J?cĿ|'i4=?[ spA硙d"%'dx(%'?V?;f>`TV"2W$(ܒl^D:༆)Ww3گ=5Fnp2ĂG$d]ky!rE+7,NX'8_1Q}f 4I)a\)k$ o;m,@FP+9ngQ Ke턯c2͞aX^NI:W׈rO215Y-?潺DZ(aEPEPEPEPEPEPEPEPEPEPEPEPEP_v>-s$*5@yAjyIRr7*+4dz M*7 DIt VB|ۉFWDX9KXtQpcQ+wX_٘巊Wn-GP2q ۥ' -U2(! 9*XHy'p+ǧ~)xC⫂ la=ABQSAi ˱0'nk1Mb4Rp߾,Nx86*dy%+I$(lqx"{tD0xm((hV$Y ` )-eiiȲab^I\j@o$gwss!r=bdY J*YH) &-N)w[`4m-m"]T/99-Vo囟/ʸDH1)`/ {⤷;.ma $1<G#!Ges܌}¨|eY% W2( &AckYCmԴIM?:W׋~߳oܯ]7'zW} (QEQEQEQEQEQEQEQEQEQEQEQEQEW:ScOٲ29bCNFpyA?|gLIĠશOCp0G"`Ssv8U^X%rO yB8(!Wq8xF/V8O0n. _ys'})89m+Ie[P>S=;\XjF5Uc úD"ܕc(y28lepWv;F3gR9a\rib]LX^,I,v8rљSN+K]?.Wsq*qq15A4Nrqw =>;`ؑFֲq pI 0}{ji퍮yg Gumpo;*A+; d 8$W&CTCż3}D,4^*W9Kby+I,30Bw1gIcueh֞\y \r -jrXmȎyʠGE8l \1$Pg[PͻE)ڊ2d}yQDmn;9= в ry v`\[YO%$_3*f  pyK,hy]J&mel 0rWH̤~hjUQxۑ^^+?o<)sx$H2dGst^_eGQG3(AEPEPEPEPEPEPEPEPEPEPEPEPEP_6Ya~L1 '#Q+⼻0x0Uܿb(v7$aI&6P3 [y~yҎ23'bDQI}8>Jy8bv*q޸ oYWGv4&ټ`;ޘǡizts Kmdm918';1Si 0<׸%b1W`7u 㚵XAey9bTVÁv-QV3lu >[y0Ep-T<3r(ԯ'מqNgHuY 5Y,KlbJQ2nR9n ':WW:eu|n[Q#OS#$vʹ[h##>V'nIA]9ޭGzg /ّݶnvڣ?*G#9HzvpD(#  yC/ >=Nx{p^>H=Q`c9b+Smke1uX "8@w>ݪջO[M C:6* T`'&eЧ1Ogvq؞G vKyTg! 3ㆭh%< "$'O潮c:k_up.fc{bڇ#[+bB(((((((((((((1+0B|C"w8'vzW~d|NC7ømvm$g{H@npM/? K淩W?*z[>Q]!\mOn3Tu]ZyVW͑$R2)ђd`ݸ,Nq=MhГ!3+I93ֿgzjO_^L9h\nEcǩ_]~? Dx2?uIU/(W|sX4q&VvR*^E4,c?$,O+o o^tkA~Lqy ,FI]>}ZOԥcSlMw|()9 L%NUAT # RMy;_5U1*ܨ#qY}yVv;ATԶ_YmK/EG ¤NNjUiUdVH~Ey"mY B*|vW#B6+y;4mIsc< )֫ I|K&y:#k+;\RF$- 'N~u[Yay%P#@ (Sk_I]̯5Ț#r9Icg$SgqS :(;|?uzo?sIૢ9Q_zc"}o+ʙ lF8~S J#I l@.s'Uj/aG➾#ȿભ4%8#> 89 p~NO*x  T,m:b`f,`6I ՛K F쁐sSh2c/~# cMi}q'´sk! +tRl \y$p?LJ]3d2dc|W:^}ouq#Z*4I;vTw;rMZy_\٤.CR[̛B@5Z+Fu TyGn-,}nY!iZF!wxv\ZxN꥾$gou㲳~VJ4i[~em= Իu!(6ohyݟ)}Rc:0}TH o?׽S #``.Ak6{BOiI =N;ƵR i]ͫ>~Y#p§* qvQ 9>pnUK-;o*?bI?Z9/}?׿.+ͯ=+RNåYn|и?^KE܆ ̬o";x7M-ON2Z9 4f =q=}xRCH[N~v$0xTaYE(q- u`J*""yVxZ4¶w1U<_}SFoh*N$e|3SM|DN]F=Ia4xb8gs_G~ O%pBu?> N4?P؎{u_"5v.M[q<0|Sea$n,@lJyj#7%̥CoJIcJ߂>Ѵ]Io69uVmrx)lpS |W\\B.]]s)/${ԚA5ws=[r8$IlO7;!Y>Ʊțt 889JRr|:Vyƻ=:TZ)p09d8}myI۞s62]#hTHLV/(nA?ń8$ſ# O=lD6|vQyig'ך$ol>n~n&g|\u1ujY=o&K$iD#2`3L·m^K{v'q03;"Ht*;r}Z-~Vdr *Cn"_ +sOiukpI_*b+ps s|4Tn=H9M"@Vd7FoL('=88s[Ag?m_:ݔ[ͧ4o8w0xݗ ߻oj gKʦ'UR|uR<V&-Rpd [ 4ABdvYR E4B2c{SՄTSMg Ӎg$*0# =j+?([:7`!yv2yNr A ]J;"T&Xԁ|H@Xݑ㎅!k$ l]G!Xf9#wt,eVf?Ca|6 ő]Ien1>:*?PHtF25U"s7Z(JQK$,%n8F9=8Τ]브|X\!bC`9Z}jq$Ћ(;8CxE$ߏBAu'ዕFRq&+O XZ5R8Eu\p )$ې0L!PɜڣvWqRI *jbS)TG~4ӝ?(9:h*;~~%1CtY*8ǯX7 ?1Aq9%GnⲎ6lE7Qo=Gz-FGU SdXeG~w K3mSCn6PFs!Mqnexmha /?|WVN_)G$ y+HνWAX s:wǡ!# H)`ickٴt9?ࣿ ^7c6vO?ߵ\_(7éVc |Fmt M #ؤL47H ŁSS(Oo:g~nOӉ-,(:9:T m~dAr=L}L^BBIWN9?MO(wG_Gωmo'$+ힼR] ^PXxv?B'} vkO7x P<('![1Ij Mc ؞t(%??Pi>'L Kr[_}apq^ǧ Zi#9#)~~BnYeE=hMcw|XKY%yTq:}*|ג0g-̣' `?_j׊[&(Jz1} KINDFʃOZIJJM^ߙ̈onVIwbd0{1Jr^jVvH"ݫ% ,&vaLǞ1]΋ ײ`ךD bCs#mPېy,RvmpOKJRs7Qj8˚.yc6}B?"hG\&.F0]x'lf,HyJ*t)"(vqurdZ:ϦX*bs!;@8D$T:Gi gh[WO8tм7 +QI'sLD %w]ts[ٞ;;s,كKdrw*95Dple]{L*lSsEj}9Pqq'$daKy <[ %Gz`9S-z_ֆ-W2\CmE۟¶e yP1;BW팁6Q0C֦ǪX}Yg0y`>OfRz~4kߩ^R巺/\\LOJg}z]G09镡?g :%K)b:UFyq AlPw^\0tma;f=[Z"hlf8H9Qu5_K,駱b8e#1Sz.02zZjK+/I3RZ܉$a3(Vc t:{5t}>(p7cPr=:M;r#6Ua;u9`+rL-~U,rg}gג ;"'{Rqqъ5c;+CMAVN )c[1+2& >HϡqjkyK13c**+Ǟ7A4X5pB=ꢚLSqm$}SO$4 }H=KVݖEI"ଛ O99\u[5XH٤ڪ]ب }pkd-OPy Hz=˴MRNxs^kTe|܃ϧ(d8R>a~ǞƕޕyߴJo*Z9 ߠ4kwNYؓN3OT}O6>֚~Z5~C 4ۻ YM8 3&́8\d&)^bK҈[X>[bAbvʧh v0B&;|}x8+{~h  qn1`}x;WwLPºu)ϯdssZ;Uj حg; ޸*#ڧ#2[%DVa$ Vi,l(.O#8#LMo`/$Yq!?QV㲲dcA% Q\fcu%-4F#N7nPr@VG]K}H~p9'E>v$=y㎵3vr;S"p1+rqÊKYo3FT;L&D kW<~oR F%OŒ`{秽y%gcN&DX䷑mrKgps'!gqӑ{rEZ ۡi 'FsRbwHC 9+Ʃ/x 4mEf&f$n=fFHZ`66'>t<.z}eCl#bfb `p2quciTy4 j0r-(TX43.X>uX-]?(qL{kuh-PI{:DH07E4΍O.9"K*nd&"8 ~](q;M^me,c-xf]UY 09%©q$vvن>YP3ہ-> ub5>LMCLn$umFQm\Оnq^Rh&,E,!͎s@$dYܫD˶rc@ "C2ztX!' )q y˲  wdV4lt.VK+.A+A`L <m1hr4v-ZYтNX^ He4*˄pN08ں[ drg,E㐰|ı8+ wJp"GRrq׎M7+ t#ڹEemfN$,"$F>~$ܹ6py9JBS[XF1!N9z`e%8=Wͯ;^:Ub2Klȃ{+!R=Nқ{]*kƊ(ᑎ8FÞFO$~Χ5 1=5G- [1T0a¬A#؝#6$,2?^CcN)$lip 4V.7 m$(n$ gsKx\W2S(#@Zm'ϔ'pK<c3,dX(~pOUMyg297},Ī^Iy0Z,aɕ&U! F+a>ヰc%khYM9k}(FU+VL2 J-QHHm)žI#קҺV(` ( 36n"4݆8~O9;'davrNܺg*L:d(YXaG[٤wq#h0ڥDO NA שSGG^@#zWCI2uq`M9-O%5t9ԮH2pr߀ϥ6%85]VE!Ls`H [}u^$A(Fbrc(\^+QaKL !:9*f*ё[w08=sg8=JsU'1A nFTo[sYF &4nbIn8;#  Kp a秱϶:U6N7#b!x~y v?Ȭܮtt ZIX)OhIӽP Jv=iF*dzJ2=+$br|Rm^>rux;ſ\dd]ޟk>12 Lm גQAHI>m]]ou i%'NM2Uq)x^ݭ`1+f`3a4<m#kXc#Sj好΢Yu{ izVPO?tN4ifQ#RXEUj=lr2ouz㲰V8觡_ӭ7LĤ jN8Zפp“.ɓ0=-m#6Ž{VXZ_]{.&[nw3 dmiCsNM2i"s#1,TE-zOAQ_KR}g‡oCV5 EDK䳩2kufa*y%k|~&~q"h-vNY]7gaH!JTtExшf3eZy4;=H;s D(op{88 6еJ .2@9:IFGN!iA얋'1js ]@ǵhZ2q32P7o|:sYܰ.GWA'lt3qk:}ظ=TG| N.,PHajQkC.Ud6Sϙ[FNxT]kr$4qaLgo<=;E} Td{”]޿yRMsmfFcxdE#i'+\PN`.Eh"!"lqx_X8W~bQeuYJ ǒsz*Ƶ)Tgk_ֆ]鶺=A.Ht$B8(8=OA4tx<J\opKgtخ@@PƱ!f)Hy;Cq%҅EOu֍'m-kwgOҮ/g1f%l2|S^T$2K ;r9Lm}q%ػX,2`Ag~3XX}vO'ÊmrBrew˿˚_$؄?PdM_kֽމ\36GFaivXqxo/meNĐ[cw#/ͯ}-S*7V)wwvKἕlXz` ~C#D1x v =#HS\յk/&K Z50UI y“׌g掫ScGUv_9!bUBq=9%=zR}D$!CpK3@䕀PNNqp2>_FP}nJm$elK/~FH&urݑ U`Y ޠ;>Y[CҥVQΣV63B%̥ċ#~ՋitO *-B #s*楡5ڭ1;*Q$.:ebq8';Mn#i=2+fU0$g!*p$0%zNN^N9ΖKB>ܔQ?I>O28GnhcX["Fɐ؍p +4kg 9x'^GU5[P7F ~j:%$ŘHMp}~pYiַ *lz?TgZY5vDѥ^zsgֽH-`<-1v@)9(|'X21L?ּS0Dco"KUe!TG28;Ux\]RO:?;MH"e}ezj%֒w+yZ;Ux:`۬*²6q2s==9([:7Mor$0Vnp2I<ח:ċshI#l8x9y=kf1m#LZ6K$+=gm}57/& XD#6TuTКhOKpSʛ́$@A sg uM4J)α( 8.~C#yn_-c;sH$ v3y{ nO0ܯ .rOFZHmVdd,*A p>\A5z(m&3]OnyO!HFmكLA MbxgCymPyr%nVKD^[Dߺ5%Iy189jORXO!ӭ)q, .kU4oq$5>wA&Djsĭ36e`ie|<:Mgm3y|Lc

x0 <!"~ C؀ 2| ā0M (&F"Sd kP `@`!}|q_"* @G) \\@0[F- Y8$ )reaYh@tE" Y6F򍃄#@!V+,c9Xr̥.mYr9q6@K )$@AY%2=X6IjRS`:lH6G"Ɋ+jX 2'B} 2Di @$/Qf "Oȳ'E4(rZ$,H4 rĉl#U nPF6mIA}S*4HHB"H)rRzc)C(Ig(FO@_#@$S@щ0U#N5HpaS$^CZ$ꤪn "m.#2zd3kA;WFřxJ r΂,*"҂}C'f-0UH9!lEpځ#p= BuBn󺏅2AM!yH&\"A K0eȌlF(Y `uk !]kC[D.yA6M"#eGۺ.Q4Qr;XP ВXP"BX70œ_a&a֋Z w"=ne8+Ķ6c<`U<(j,D{`ArT]h0YY6xƌyKw!>Lb9")xkɑ$w-n~w\oĩoɃDqM`[|e(٘$̏qy)}i)*{S &jT2 qH|>D0V,hFЁvq|V+|2hruP]Y; ]w-ϕY$v&fOSĭM-A2Ts_SĶeDX=C&& &wk\|6F9$'9(ȃ 0*svOFDH>Eܐf*akyLת;#B Q bn\]ےӵIIYp Ǫ%B}Yd"RK!2})%LcYئ)=P  S.plzDD2w@:y_u}j…_qrI2"Zx#At02AVgRu d0τHFx"AY& i0Z r +;ZvO#Y'c^H; ߈AzGz:z6AufM;eg(Smx\wDVX141>1~ Aaa`5<'E`v`: v%}N uW=Ww:7~ ~}*w7OjGSo_[~y6xxjԆz {Jk{HlTE'E6l*Ʀq,1qq}`FRSvd~w#V<$LvxCY? ZK n%og>pzxM7WHCPǨ?pD VM8X"kdg;M9$hQ Es%IBzkzzLJgFUć EV@XxVv('a {eXWQGu-^uw6G|ȉYh|[`N|3<ci%va8pAbX͈Cf2@5 8sCETPDr؜a`9EqHd]IEQ]Jn QQt9t!-`y7h֟h'}'a:VOvcw7 AT7vOFœkhy 4We2$ ykI5E"dqֆmSIHUѩuHo\Y`aYR{[ugV8cj%EAuy|eoS9mw:ixZ?JjO@mz[Y=0^=0ب1Xa nE7{z nfzY% a.k яWVTpLd|TZYiNYDw8~w AEڙ!4vL2BGwѩ jcB5D[nD@ʔ٤ k?L:_"(NWHO(a  !DZ.7K!+j` 1! &g:s?XRa Ӵ=P^%8x tۋŶ GDAXnkQs`IF湍t)?;s\p'aXҶ޺ɥ91X9aK&P!w fif@L'[b1 Ax[k _Jogw[µ:Vy&)y4_T}zJ*pq ;*+0VS,)e]7|}0:q|,8ģYDSe:<BjOVO5A tۼ tkg,ITI_Jg0˲̹7LnƇl{(ŐTSA|ȇ` OgW8p+89*)R fFDa~;K+|88 qq A[\:,w @L˿ , ]pWa@vk,j{Pܚ|ϵ,H@% :CH;]HC%MLcpbP.Z,ӎs̿1@kGhLQ+!c{fP 85 hqβƆ^gޮMH\X1qOm9Н4!an_n%RM aa@ y 2:yq֬ Ҁ[q6C A']񼞛Lm ۯJ]=Ne  ޺6 ALnx7݊59.5/̺1C`?Ԓh] &%^djE)B/ڇ$dC~!7Λı# !KMJv[.Gpu\mJ:1 Dx~zV(|vd AafP.? 9EmO'?m# / 1!Ll=~" ޒ~8A] $X.w3c AxA/nG!EYI)UdK1eΤYM9u0NA%ZQIDQLJ;K0f,飠W,rYQvbp˾( To/a9%FK@ըܘ(} O\e̙5dgСE&]iV`B ;^(dO ! "3s j]7ȼp] )h QEwobFeoq# : @mAtA#pZ ~h,0: Z+КPD 0 #jc;eۧ p Tl4<"pI&tI(rJ*rK.K0sL2˼DL6tM8T*`: .`PDB@,(Է}\H8SBS.NL? 싋8-S3H!x*Ƀ~\u#U_o5 5S\suW^{짋#d؇::r# YEi zvl !Bo.+/BO,@=8u_~_x` 6`Vxa>#xb+b3xc;căK6dSVy嗴dec*hR}@Âx)ǁF(&hwf(i]¤F}2Z.zG앱#Rq!D- !,q LARd%A2lĔd#jȱ AI\R'h +i:c&1!,q U՛fl髧 BDˇoD5sǏ ;y(M0yr_.^cA4gĩ8WB!ΣG!,d Hp_ *Tƴ[PfӚhbA}@Ą,7i(Sl$̔*$YeL3y_hڄwφ{(4*Dm(YK6e19AH}[L)bR6/ ܚZXH\ubS/ `ILXlQB]9jMih+RDFcb"8~9jEHN\Tseͼc6|lm" g}{vsWkz܋)G֬s!,dS HP *\ȰÇ"ŋ'RȱGAzIR'K\OF0;ř)mṙ/E{В  ͞F:!# _ŠC v4gR}RV 1V]lYvUtZT]5_\sKVnT bo_\cM ֵ ڼyPZU06?$Lnlr蹱c} Bp AtёȔiб!m61Ĉ!F ࿋PQ|!i)g>)]DCֹw/1H6vG47^st1q|w C `ET *4S~.~֢Uy_C#ApHD=PC.4EGbIQ6eV[= .~:V(P ؠe99elBœ!,ip H*\Ȱ|9,ЬIȱljhDZ[(Svҡ-j@dI4Ƙ@ s&M 6t}(>hVB'Ua[̧U$ׂ:1 kig[e9>F4y.]VhLmC.pc=c\uOܰՎ 4&zd_ܛ)뉝su8s6hGd>

zmFXLpD2p,ٴfuAڰ=#b#^V-\:o*{cL PMHH <"M(DŽQ!ǎS )ɓT ٬eɃ0Qʜ2_M7!EP)U Bp*Ҥ:lY+h,}VʥAC.\i ^Ķ.ҥp}4ܫ-GKX1| ʓ-Өhͦ53Vaՠ"=YMƜ+G-ܲ"eP<.ʡyKouk~V͂RvI̚cg6hu΀POV%َ +u`xg Tc3!,xd  7 &4|gE!Bl` tQȱپ9ਭWFɆ8bM˘ M9&} yiGG2>ܗ/)UV_9KZ̧3[xV]%p߿q.7=8Ӯǐ!L0ØSMB~I8aGѨQוFic#5ϵE.r킆oWȘ۷[œL3k*d~K2dԬ]:Bֱsbf_׹k}.ůϾة! wq|fxm'Px Fq8v™vqth!Va"Nءv'P%O@!,xd ܧO,!+ 2,8 ‡W29P1ƴ囨F.(%NR$f  `AmDLi,̏.e!iIS5Mt˂]MXKs˗vmM_?N4axӨjf!OS\$}2kN TmzFn㣐V  r۸q{]<ۊ$3ϷI;svAka_)On!,{f"& ܧO*LX!+#CfņxK3-"t`+(;YFƌ%O8˗$3H捜8 /%E2k~X ӎEtdW_34cL=! ],H4s}'W"7G!f1>mDX.X޶xjpY ݈#_q (r! ,v ܧf׬ ƒ pa!5dL4⾈M$Ѣ‚D6\Pa5 Mky-&ONSc=C索NAg@C\ /Vv^٧Rvh6zPX,DL6^̙fHD8k6Y2yZ8A}'MKuMm3]ՠA䙃NJ =ڱÇO6x !,vGk\x5\ipbD3 QYD5A GjP|mVBԖ% oM* -A}n%84m=}&Z0ħFN⾧Qf_6wpYͦ53V/iA]MlSm7Q9.ADi+4N`eNU.AK7ҳƹM6Bɱ+..-ȕ [>mg8|hzEѪ͌3Y]9ڌfOmOa'O83#2Hq^s+x tqEMT\$'GxQv26qcڃr"&<!,i HP*xÅ FlqŊ'ꫨ#G 7~Thp ‘K$)Rʂ]IL4tĠq3! 1b$3Ё?B(ϥOUOЧwPK> ٱbIZp~1 !,wٷ qQ`‡P'DdH4}j4b͛7u.5qRB O˒!ԖϦĊvV' x O>chsiD>&NPW1uW9CNZ T+-V,>̩ٴ"ҠAK9u6sIW[T3]ȈԃB4W V5Փfm\\Yc'6I砜rc 3x^ jҎt!,w fȸM FCH1E4M!5bMɂod8u>-_Mjı'͟4ԹO mI5F:NvTU=\`kT3@ӶvM J=x4-kFӚ}]e+reYmhis;mD@12kʾđG@.!9zqqE+lTm5rDw 2xsP@%}`@!',xi%$ 7 *\c!l Ëj8i6Qf rz,906"S Q#mИIS i8|ϠC,2FN "ujU( h}TCJ܇Yf뙯.ݺw+{X+ gLYcgi̹3V=iR^5Ⱥvz_.IȨ׼}Μ+7~w }$hB c|p ״F8q+\8|gNwwQއ}7q|a ǂGsa!A|w"qAxtaځl!uhh1"݁c6!>v1~ y dǏ|d@v TI%!7,wd 7 3|ÇJBl` - laCpV+i#Ѥp1Ц%}ܧO} wtqGE LgӧIU>sj#X|LV}I|cO[Wmݖ4֬oiw_vpi2\{eH BK315ƹs畖`H׊ZSׯ}:Fm}|Y@itMSi(BF@З[NJ.dv ν؛(wdȬ_ױ1Þ_w!,r gcD (bH-Z8$rH) !,ln H0BE)S)pCS*(Cr#D&q+s90ȉ6i\ImHBAl*Hri̚NA)A-mT&+˄!,wd ܧO&,!C}W|P +%6H.]>o>1c=B#Ƈ.sdHc@l>2 i#`ھG+7괣Wr FXMQKk}u;a}t՗o_|RkcL}Ce|Zim_:!IfQ[@/+ :ά!2z+W~JDEA8%()lj*(#\,Iǫo<)$Y>28HzUdpI6$S>XOf%FQֳ6QC6P@%pP$6u.fHF4rj>QНzsExev=siS0p5P901O}$MO6+xܫ4Snj{s1gs45Dk≮0 ;'ɤ<\@^|)4Mm]qף(qL7#пo ۚjs:ܞts}w(CC4L@<cx+B>)vSW9*c{DZV6J!YLz,w6xٰƌ*dn,4FH gHC/0ސ-%/wbf`z"Ѯ7앫2H.>j1#!b˽Oer|d,uX%-c#F7WY35)@ uB81r`udXBD#GnoTV)@Cn{Tdy89jL++¯QψTtU6( 7dCBT#*Vƭ` 202%5bz#t {5 gAC \;y>1;9[%FxV֬Al :$4qvX5Pr*щ\ǰ, Z^!\İ5,\ <1-.fXMFNcx :ٍ 9uA2ͽ1 1kG@&MH7fw3c! `)(" ֋kyn1E,4Zj` QS֎,v :ZURdU`9N!=-r)j )Jr ;Lc:Z51)CPka 9!Uf#pЬSN5ShK0;_vj,b6C cV xma0`tuI6[էۙAl̺zAgx`v']sUT$am"_ի1am ٨&u-44͠@F6 KSjfdDWm;ɊEa6bh95k0L /[gfD"Qscqp'Ph8_.hd#s!%O~CqA8q%bCiTgd\t+dhlwۄk,2< ]fV߰}ݘ]3od=:14Cg39Cӽܾ^+ jFXdn'! ZE|w"!ojOaTn_If0vH]+?;zG a pDAB`(68yEb_7X%Z3㹎˨[b}7b9A` eC\h/ $s:} X@U!ib=)0AP l:эYG9Qu#9=G\zpceq{ |o{ @>;EG+8sy?}91s]i Q-|HWb Hʁ~='{S&s }8瑀6%amomTH"&&8r#~R2Q'Ȁ+:ȃHGaApAIx1"maXX1!3Ehv"\sobxG"Pd{mҁa ȇyȉhH~"ȇmZ8(h\|W2d(x؆ȂA8|1!7{s]XDh8ZoB(-xK7Xqhю8q%XِVюvf*x(Tqx ),?X-Ygb$R 6]qQ~4@yLAdmGs68R)$YZ&()C8Z{q"! [Y3Aqy%Rhn.m 0zi X!s {Y+! mq9ቃ*& !7B Ј4&ࣃyq9Apsٛ#WЊeA(5d*ƨԩ☋Yonpٕ6ik F I鹐Y {eg] 8 i)ʞX/ Ɂ'Ȗh9Eؑ!Nɠjʢ™Q J9 qXɣ)w/&3Jɚ9LZzZ)! :4j Jʥ!bZ鸦! 2(UZU! :;*ɜj#@ҧ !zyX4)M TJ](ƌjJ{)Aڞ:aYGjXyq"[ʛITa,Jڤ♈ګ*]I0QTyiF?~Q4oB IImꚚ:V!x*ZگƚyyȑڰەQáu@r0[B9fP[ jɲ| )J(At`-IʛrD됍ڮɯV۴ ]еZ\ ra[c[xʡ& iˋK0~up;3WɁn´!|Bf:[$eAs+}ە$넚Yxʹ]h`#QQ  aY8]81K W*q` 剼f8a*o+rGֻ۵a 0vȵ^K [T2'HJk{f; [X(OK Hh_ꋲVZ`&lHA!2(q;بa99e8rһ 褸xE9\ǚf3clh,c H;Dz{X Qz|l+7,5Pȝg) tK )xQ{l#|Yk A L\;EP4\{ɽ[CQۅtl&4Iv1Ì,@圄|kǻ)Tܑ2,܊\=ϳlA Ħ ͳ,y,a-0ԊPy\ݕر=.}"y#pÉ ט}@8(\!qHZ)lA}B8Wæ[@,ċ@\W(b5yLAr*!xP|}='+=ELAى ~迋Ha 6Ëhrp,ΠV=~}^P ъq-ۆOXіmԾ* )t@- #-'!{ |<xt 4\=ޓ W;- ߅k ^Xܽ –)M×Zm }{qVK$;Iy0 >N+1ԭ hcH0M} ;^=]P1P~`0\K{Ikm>}#rYt t$m! ~$hx--N0!vܟMᳬ釢 Lܫ{'c>ΧԼ* ?㎎YB(g]NC%,᷾ Q >#y#N^x#Os) `oJ1N%~V\q xw .!څ?>~ w:"&r݀MgнY8_) !zp0>]x&f .(5/YCR|P# 4oQߵkAb!r/D8(@EROq*vaZK $ !rǾQy!OuN(5o!tj|}_.9*t@eBm "/7vtءtOqbO #X0OA.dC%NXE5nG!E$YI)U:ԧ 5,8;8*)G=+%ZQI.eӇ-_.ysM:9PWaŎ%[٥R\s3fA:t لѾ_rژk~Z%u‘%O\e ݗjA=4BZUf-ɐ͟r)-q/l'^|l׬sioyqٵoTvg/s #*{ê-H*7rwfH*>:E> 4 Cȭ!:9C6[h? 2%#YCCL*-;9!IRDqFkJAز*:n!)(@H$T)ٺb,R}sÂ6+ԖK0GAڢR ML6tͨg5̀!=N@t82{UqPH#2x)6blODH&uTRc ;4 !7:: {r"?Da! FJ=ưf$}r4+2ۻ;|?c:}"C 8Yc 3#>CROud"-oVJʂ FޅTVN!U('ˏ&%&ճRl%.m ('->V _&qu;;';@+m\ neLjn=yvTf3vGw[lpnqLHHǻw}_Z]];{ZZ-؃gm`!Mpo ~qv!KaTdVmW_U%eX)X5Ύ$ c^$a?۽  Q` 80@Pi ~VၝJt_W4M'N G(T0A8BpKPB7--pK;I}?1# C6/; { i2B"\YetQAߙ '>\y<474=מP8KԽ/4=&7Nֲ~ZID9$EWT4EA Ok>n!Ij>z t> _-MPY줐t>@?Q6-UALŔR)[d3Y`>8)QATKpiy-4b e^[xqX![e$4x %fCfg ACPl!d3A`iP 2  1<'^AٜuaШ!jz[EBXx@`jw}8 }-KQLQԅтfhqdKP,őǸKQtFb90&A OݘNJdQP>u` +>LuOظP]lU1>3f`BUfLkJK#螘J:=CӖŀcц :׺9tIp5dWy40t&fBgjqi* Omu8B]lCjz\pZO:X.0%HЁ]Aƺ]i$sD҅r3r}4#.D;yPOT>bL`^_*MF~\T|Ph=hּ8 Kjʙ^2&@g`j ЉK@H 䒣1AHc>OnRD !ZlEK6 gT@Tr\HA\agI9pKƓd!qNNHL 1 Щ qʃW B}>'sZzXA@xDٱ fH<̡1B>챒 Bw #BZ#a%jH@/ҤQNPI92!  a@nv &AT& \KBd2=/Y_N) Dx&q:  B9$P:j{cH VFAcŹ-3Uxli> O-i.u"H d)]h aBxXɇ,->}a< (0="$EBe$e;9AD%F H&`Nb/e<rL )[4-dRt:bJ f)hrA4BN υj!A=6$'A~H3~K)3UiQIw }(uNV\*> ц[4)B x%ǧ>d[Y(y"tpڵ5ȡ?o8ȃүmX-%G I(0,XTIY) , H%Nt8D-4[8;i#n,AMeMHj"$DT `Tz۟{}pb~Tl 5˙mYҧJng;HAӋp-QL/H^h aLPN0(s "{)uh:!Gxjx K0ȕ>Ĩ~ᎩA&Ԇ\ rp@9 0A8rI/t>Ngm7NpB2iW1!:Ђ: .Y+yvJSa5DwPb C="!)d\!#2S=!؊H}#EK>!W8B  >>:7iL &k(5z 4GOjsB 1INp6GZ+OLŹ̡fTr1cE=Ԁ#Z(f ;K;q 7A#}a_X` CȗCDYLO+IT@ƬHHApݥRLlg탔e̸Eɔ^2AYo QfGcEeL >DWr` ц9aBN 4_tylK\=T  u,NXXhxA`9AD!d_EQ`eAEЇ|`u]0L1X $$HᎻ `CpU]HO @_+\R`[]ȏBXOĻy4\5 B8b0mEIMyB YMjlğVrJm9Dv A!ZDB$}d'pAHTAze?*|pQ MyeO=H%zHU&$A_% U *Z+KH`C8T OlO]BUHһmK,1FNVLݙi1DTډVu<ǛC4K|W:: e5yHB$dL|!mePC$d}1a_TBAO}RRyHˬu$frfF\H*G"AJ$!8D)dzpa1mPŐP$U] m&ĔЦĐe Pu^e VJeLb`C^YgpƠ _ Y >&p&4rHfm#Y5:ʥ!CCe A5w0Mf&G!*4ćKE[IҎpfJb$L5R1j"DAUŁ lAl&zLlY&EYA'FgEyG4v~gȀhL8!D.d6CSK Q!ќME|%T!n8DZ5$-".DbZhEhyx*i&f(DG(BLH0(.J؁#1ijuUն&PL"AÄOLn$Kv)ֳZƩYBPƱDv%%id}xAht\q.>zM芒*(B(AA2&2DBNJr(C*lĭ&(NWt`),mಆCLLC BY8)zh͸Ā:b GͣPFB|J)Vן+iuP zm ќ~mB4NBȗJ)'OMbdHP(&dK&⭨NCA.*#mB[n۱f`W `iY!D,K>yIu6w ^ Fc%qiz:*d Cp py##ҲZyY:&ګ&$rA ^XRA8 BB6DuB&LK2:G$KADdAkۑDlv z\*&HD9.S/]^z .B0ě!oՠ:^&[ޖDZD3DfʨcGv#hkKXRB`Z""2^/ E1kD&D (S}sfEI*DN,@ߒAD0A](.KtiFNC\) .Df<.p^0)D-*:!'/z2oLȲ%02lg&!"dX"/BB8n)f8iL,^06vjG5٘N+fx;dxP\i:W5֣Bƫ`KK|Cȯ}(@ c6Dl0j!h'.l1+pCA03O(L`rClP24/D4%EM'5Fq4K5(B`=%ABrqiWYq% >1A0xBJ&DANOOqܚl\+g&:lKttGA)*-Ƅ|C@6T*4 Q0K̛KS2\tB41Du]0,T/WԐ8Zu9WQG3ܥQj f\>x5B+zA$F2pf`'24b{l$/8r{~@Ƅm3w '4K   CkL7#qC&]2TXD/A?k|ĸ7D7D+g PdM3ώ+D}xIm$ǜi_>-K8JoaC\pcaF-6D++İsuBrĆ[{`/."Lv{<<<kU{l =L驪{ؔ-g+)C9C.5K-zLPHTBqqg$0LC` >jK@3'C4v-KB<}CP}53'T>o|AB)[9ݯ߽>闾>#=|~`W4 MG%xξ硇w'/jEeG-?Y*qLdWS|\@'{ػj.0}ftCܨ+ݣV  vJ ?N} h`B)6tHÆ1HhQL i샑dÍ!%R$)SB1*0徘%}9Cfd.A!*Ԩá&)R%~HhDs̾zM5蛣kٶu.Hzh hOFN@J%b-J8LɆHr ӵē<ZBV 2"j(^)25!j $`z $ pMW#qքigllUm "MWxڇ~=V0![' ށM_妍߇VM~%J(5޸?8E-I>UW~emY}h(q>餕vȐ~ꑇꪭXZ&)/cIt*hGw㠈&RD F*)Bơ9馜2(>]驉2J@G*Ϭ鞏ŗ ֳ>K6ԣtAFd+|a-Bz̊Cj-B:+k@)۶J܁.Y<XcO&4o1,V7R=HcL2[ JgS4P3̼23E@#CS2-3s=0Cc@(SM=L6m>4_1rAMc OD3L2x r=2E7Za 88/M̓Vޮ8oQ5 4% mvC]6Gkm֘3\0(dq>08"T~;4z vkw=PO(Eރ*3x1op>&.j} qޱୃ+쇿5C40[4 5yqC =at`)Mtِ gXs:4 3ݵ.glxUD$Jcdp4Dc;sə]ЉubacHޛw&>sa@\BcHX6vC:k< :*q49nعOqGT@x6/fZ3.;fX!X@%@wlA8SxD0iL!m܋FL".ܣ[ݮ+b8΍ʸ.m^cb{AO_G8i8g`Dݐ>`ɁՀ\FaQ:߳ 1!ZzcHQx#f^Q9o@];౺nX\uH]̊dbcP׎Ynl]w9n)JSPF#Ku5aߏWq(p3,>L<ܡ~r>f "}0iAO:McF?hCb;0`%5#Cy #!`x[5uO4 a=!2\_&`6}]f"gvNI0-i4mj Xi1<^ *cC\\mz1ky+n592Csh d5f|-2-9jLvҰ^zwɰ4°µlS4,9c̆ gp5!l nnjp!Z{u8 ƈ4-b$="n Zf,}#ͦc*W|]/!8Ycb.j dpmE`oo] ~!V KǓ*g+1OfF3ސ"nZlV,JwtFyIPϻLpƦ*c\& !%K8.x9$̼5'A$uT (Au<݇EL4Irƌ^@8a ClUG0 cogvg C4K G aJB3$6 okkS{ :s 5 cm &ZH?`g/_̥ 2hGS"pݓEUpyp-.'wxsN @SXcq[+Nx wswgWwB~~ ~Lц됆l؆w7bk]҈`| p FB$-C-q-z(~X7R F" .jxኰ!Ԓ|j18Qh,]ER!M.XqRX-'hXژdЋx1')qPp%㘎#>A-ai"x&R yȍވ>R8Rb,ɒG'a*ђ.i$3&$"i&"I:ᐉ|w(V)k‘^!qp!i>QWYmI2TH ('-fYg&7TCD)T}@Hti9xȗ*76y xS (Hd` x'Gy)&z1q fbMrh-*D9Ǜyhiwr89縜YYwq)9xp!I'pPy !YTQ96&zjJko+R&bwβ*C)ڡ*W'hq82+z*&=w,h3DjMyoE.q 7Q>B)ZʢVj b x f*T,щʁ!zt F/J*шPZu!ә)kb1Й}:j;zXYaPʩkB1*&j*u@Gϙ&q6zjj.W—YBZzsy ҪǛ1@R׀P Ϗ)aʫ>v.-ثay-.rr@mA.C.r)E!TchazF^t!LЊQ-ajhّ guӗLo0sF$j t!^B=T;ݳܪ=Ћ b׬2)=}ܨ߱y-g~P^|]Y- |>߷NM$'\NފQ ~2悙Z-NӤ@i|~ و` ҘLԾ{-1r 1~?-Dڞl}n1>'m@i!݃-멮@y>,`.ڛ@m%#tu aH.A^Z(OO?ҋN1`pWMu_O/?f>m(/v ӥ r[O8M>uom~_+9'/pPxOyl2]p9|?) ZM \ }W>*M/nѿ7*q٪?섐ڴFߘ kִ!8h!BH"G-XEKeG!E$YI)UdK1eΤY͏t\㥧@!0!AHQ<(HUYnWaŎ%q'OCD=rϑSDNhUƲ&\aĉ<.k۲m!q-2jũUfk^{6t'mKgER=:qɕ/gl mtH O2yկ vŠ1ӱJTR/nbP6 3̰H#I+B 3L1@* > STqE[LÅg-"ڃm!%rqH$Tr>n!℔<[3-K0LFr-tM86 H>۔O@t1 |rFBvq(DA+RLcPD ="h2UuUV[h6;᳑Q `T 4%\W`- No6GYEB]D5˒ ZlU骢Ci%L[vu?ntFUVRI,t+wx`ǂn/x϶bM}H; b krD2E"DHWB2VyeQpmC(rPvhĖ{g`2RCH}*i6`VkM){챛ٶ#Lܣd[`m ͡fO[b`X>ھhK=ep+IÇ^+fhCم@75򦝶t[ ļKNvI2b⠃ZsW~v0}Ñ< a§De^;w}ahfD98}##OLOb%[!<} -xAo U@<|(8z>+dβȴSlɟְ9䰄zPVhW -$bqR8Ѩ <̟6e0+EнPh0btymr}Ӄeo!lrx#(-dA4ò5`6OAqXC MVilKE.QnT Da9>?ξeC-м5 5,1[$$jUQpFCSѪ6RZ[)c:!ZU3G٠5Axli]EMt$Zk_vAQ4jKNAUFVj5F`pTWɆid(CeX¶>j-AH dE{[Qjh(ov?d[&wnG/v>=4b$r뮚> ;-9<[ml]((@ _ a`J'Z}CDi%--.(j%"đ|/|v6FjJ[*U(*`X=L$CAFCE%c:fr'}F ] ıM\Da1HU)-?ie8 gJ7D qu[R y8΃_$ F_n<_AV<͂ }:(P`͞]+bjL:@%PfF7H^|OE@ջehDYS~t`.NWF?[s.V=5\͋ԝNxmt#a_+SENwno8DI̘%\w B޵qCAFQ_QxKp!z #ػ\S\GxV绬*B"QǼF=a-bpJx|C)i[C77yTJmqp ?mࠁ'ԽҎ1D1CG]$((HUe(x!KZ@pcPWj6E+ xȓ:n]W8E'#y07H!#}CpoPA3Sw}/Xnx˧Ip^ό} 09%~uo`/AJ)~gPz1=(Mؑ؈?gc?9? (@y@?=2(3P;仈\h|}#!3Q0?|K4+C+ 8 AW}6;X @BzcB-\L7A0[q-^NS975\CۿM#9د50"$ ,CCy ;$ 3D<$E1 գDQBIN)sq7AH(;ſ oQ*M*\pERBtAZ>[<żۇE07;FjT?ٛ=6YT. E(DjBW1H(Gxᝣь1q|F`GQ|{> GXH#I5쨴XšЏH #1 X_)+[H-|MhҠKEH3$q$FrTI.J(YD")4JU"p[lJl/}`G@xYJ6 ˘A E}GJt@$r.8! GFpTi4?r>U*dKpDc`CHyAXHD 2X$ S6`Ld>`j;ȃBI,ܤ3j2<=ڴ"H1љ$1*iG(ܓOČ$YM˓gFHE{3=c7W˯a;fC|,2X$<`ԳP&,2@4JܸaO};nهiO $]xه+'pdk3 R= 2r./ 1j'<'eC( 5+3R.݉P5wJDS$ h)1ӑ+D֡2Z O  cI_ ⛬JI](_0p1T+4Չ|+A2+NUU֩ U&͹K $։k Ph-ba='݉xybtMrWk(]HW#>3ͲWW8Is:V2=9S/; C 1F鬀i}Xtl,ҋkAO]Ƹ/0)Vr וRLo9@ ɻ[ٹR=+!#vBڧ8Te)be( Z+VM4s*:r\%[^3[DZRAp[ً@-[QTj5j A[Lkم 炲):PCe\Us\1ZM_lk:S(V-oa݅ )PZOFVԭʩSr!sX@E-ԯC}PKB,ʦʈ-&]M>9Pz݅^݉+(]m:$5BدtU^o9*ͦ\3VF `=+OD{]Pz45֨[֡؇J\ϔ6TDIa@J~BPlیܜɃ'DFa*n&H"'b[i&,&4n:.FNĝ}3f6+RT:k]`>cSP_*+8d4> ۸08c=dd҉+ucdP|/{(KV)x# V,W&00mȇ$؅xqVdab>cNh}1Rpe7բE:"fh}0fdVfg+m`7p76aG\y%}m {>pfcg}@l<u~g x袂ihc6֎ֆzD`:`Si҇r6Q8Lfd`jnJpW0Vni{hhUT"NfjW)qRjgrhk+<hcaナ {k ҉|gcφm؇pkHl 8n7f5;($9ƫqelgch.΁0]fm^7b.Xƈnnnnnnnnoo.o>oNo^oniom>"05Z`Ƭ0})nnppp p p p gp)#γ*2Қd0 H((} H.dq׵~rG@ 0"/!q505s9sq9}xsx==s?`q@߇qq0tKK؇N/}PH؇8uOR_UgUN_XuR/X߇}pXvvf߇f!i߇X `v^v^߇ioLjg_vgw6wHevzswV|w Ȃzvw wsngxt,@wu_u} ׁ X+y_w}yz'?ow`wh q񙷦7&9م Gkhr{t0p苰{{{@PvqgLJ|p˧_P "pП wwwy_})x}E?5}8{X}`z}2^OGq_韀&7{8~h0Y[g|'V|@| !({x 8@tp >4h𠋋1\L|#Ȋ!?v䠍*'T!c2ϊF Ȕ g_}qzs%T,0(8c֏<88vس 5p@ڷϪU>T w G0$,xAcaك<<6^l2f3CmIeϛ9PA" '[9"Mq6n~BhQk0)ݎ$}A-ۅV`nFѰ),?~(hA czH= HQ ~Fu`)j)ȐkIOdZLdӈx")PgS1GR|>s.W Pu\uܡE@]3AAGCa8 HGl24ڀ%'i\TÜo2 ~tYF@MRlTCQL6i 9C,3jST_MuЮuMs]1d%wKj\IX;0$bk,bexf{7|%)}A=6P iG.pHpgfHsI.oMJ lFW|E [GaSHcQ0oYx @vc\z^g!\LZukv!! Y .A a}ɻк"{@:P5Ji?11 ya*HQ1L.} }[@'wyqroRqg\b R8խfZw^T*;K9y=9_`]tQ>Jz>= )ƶLwk2X i/q߂Y6*̀Sbh$"4DK r!"E=r\@.! ]Hw9Eqr<2eXJ+b og1tl&툷*ρA)v˺ ]b=DYsخ1## µ\# &k$y,R'=D# H`n`2vh!c\DFHq?VܤdӜ2A/XbehCB27}HJ\`$v>*&/b$^ vA2@Wb- LhI&Ѡʹ G]j*ـʖq@0%% VT׬ڱ B ++Z +XZװ j c5vkbev %i0 v؁`]# aTX>IXTIh/Ro?XÚ d6#>mWن.b.dHj4v1eQ ."|d#]-Xב !@223]H6Nr2C/RP^3 jPzrYaE|]z%\mi>>:ɝu, :VВ &L`gb3!IYvWmn>J(!n0a To(-ĥ0'H8!㋁<75w)Q54 dAؙ΁\/Y"  艦 BL]Vo Q[^5A }YՍuT~epe\8 b.m݁ \@4,O9:gú.dB_݃=.$0cva5q b37S>zw;-BFL$MYx`L!iv* D%7<-zIFeZ7Z y@\ ©0ʕ 4"4&W`  tɄ2@-搾z.Xҗއ(;T?43Q0;0yXAIAEYxGJłKA1G@T䊈yAL~ S$ Q[xޙ ^ㅄ̇`ĺL-D9eALAtd>= 2TcO @*FLCۚ%MAޘ!@[T@H(̵,GDs)Ą 홇w)HDF(A'0t}B\_'yXAAWеR !G KW-ՒX]$@Cxc0撴<PX3C4Y %1{@|Q 6jc<e9A7 @c8#a hHF.YAN)=PwA#>ODpbd&B'l\US)ASL聎> -F@.C`@X @03Z D-90/~4J[tqG` ˰ 06FDXx](9 `:f _ ,mQ\HF$U h %BwꙄOԢeA&>)LDDl~>@W>LeN'~'^_#BXWHD<hUZ\ZyAbqe]Y>Re," -jV ͮ.)4N\.I0=&Xˈ)B -M$vM`GKؕhb H 㡞@(D qu>ig0d\V_H^<@Tp!d~zEDL-!oyzH~BtVpAL0WIYgʜH@gLdJ)BلH@<u$"L{}DTªJHܤYU"V)"U0UWWl>ȁq{P bHP@N@AW*:ZL \A^WL@c8aFif CL@ `El}X] @@g-פ,AA.aA8 d=jK\$F>K-L\䨖v5quLΣ^xB, * jmY KfW bjba}ȫhHpAL ~k-^UW(eA@px) 0lCXZzkAx`64Z.kUeZy^ΈB\,a>:"l]H@ />>D LB/yuAnfn $&4=}%1DNힰ/YLd/xJDYT!A\.ɉB|jHmB_)2TLB8AT-'T_kq WR)pASM|fbLX̮JX RX >۽ݺ q]Stݬ.FHF٣8^O9E06?FLA Zc DAj/A,ɾo pzB!~H$a>He],ڢaseR-2ArR@ܦHt>|>)s޾vRɌAQ)*{>xS0O _2.ļ2 -RGΈ4&;`~> K edBI6A&aTG=C8"J-^v wowȢET8lƒN4SRSRV0*jp*2N{_F!ɔE>xMUUٰ0W.5{"E>$JPG.օ.\˰`E\ZZc C tRq%OHB,rscpV8HUՊx-\CuªDnHhr8U,KliHH3m"_≇ĊA:Hl9K@٢MHprJ24Rjd*xDq"MW9Q4F $;HyKQoCA;Ct)HsQ3]Z@/{pwTxy.Y\%~H#C < dK> #s2$/Aޞ|*&;Bs-=lkHq_;CWG> u޲x>_1}/ڋby@S\ځCP:H0s5Z33O 3s4VWhG3eoK@Ga/ CVio"%9CC*T4nҙsuKL?DAړ>=3\_ؽ+BPtC |D>ٹS`B>6tbD%Lo@B @ń6+9р"vR:H9!SO!>"(tb} oC$PW}e_ٲ5▄qq[ ]Ep\|'mDTaFP>0 $f_epr~8f 2=K}o&>bbTTUhMh2uhyl"9W,,Ľ.vQiȘ5b2NsqFGp 1 ~茄F#n34d7Jtۧ'b˒'̈́\""M 2,)3-x L4o#ez(О苐~hP ȼJH;K!&բdף k}K(XHz'GVle{OvLl V Tv {[I}b32 /27F"\81&v3 Z򵆤Î> !Mx愄&''! '鏏mOɩzK|<]e0u~]y _RaaAz !_Xdy++J`VA M̹ A~B "KSAX Hl6O"N01&cˍ'Ⱦ=ă E&#DR5 )Aב~P,H`mֺ6?aQ`JJT"9Ć ]KYR!{2cb:d]s&SE-YTC430 BZ9/Z ,$FdNuA֠9d AG$:#v Ig"'bM{ ΠPNd3H,rĜ*r8$$+eeB>[}@)A>vA % br'B5|N$Dg5Q Brb1wJSH2>d zL\dе!4G!׆\t''U@QuSs)^K!mLV?ļK3)ٯ!є5?AHj/q0x4cg*Dv'cgI$D\ 6 Ryʉ suK۶йxȅC;-^!WjY!mDTj8 jLf}!S0>K (! bVxv#\IհX B<JQIF-a>f-=q|b}Z,~C˂zbԜH'DNM*#ViX:7IiqN54p4\g%ЫJ. ?$9)CViȢ ǤsNHUI"G[P>u&x){Zm'217db>:d_ ,0|,90"\tNi.і]mk_;CX.Jh7 eDp"Lo[og>觏BiY/K A.᫝H!R(kh;j[pn~) @9(b;n,n ܱ V/O G쐆sEwjDy9EH> 'fYyVp{0^viW{~ ?!هu?eHm" cb'V+F)]Ƣ4f*AReBD*M &(jk";7LQ!@5Aӯ!#czV嗿۶AVJdfopFBn\P.d!-&G'P;Y4 8W?HjR 3R["3*#~7KE8/E7 e457.!eP%7 p=Ćo(g$(.|(,R'B!'l%D'."0S诎d|K,~(y|v7K"7Bp|$"䂭!`"t,r  P cbPp/ Qcp5"b #p#Q * ;"a%, XN2 " .l9#E.L !f!ps1YrA4%*+'@5G,bF!(;!fX$.'Vb1!Bhu1rI"(N& Ō f+b!f(QK|"0">k'eVM#5RE"drJrA/NNb L!b&-ܭ("-!$ BV<(X)YbKoA0xȘ," G%Ad"&7!R,ǒ,R+R-ג--.R.../-ca2/0S0Br0S1S.c&2#S22 0s23S37.3CS4G 4O5S#b A'6)|C/7%7inb$!BArԜ+.B/R!<s"Tp=P@!0I nKJK"ZsTjS"xbnml88$|$2p:(%Wp"!v!':Q#ΪN5Ĉ&Db0 !, H*\ȰÇ#JHŋ3jȱǏ C ɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJAVjʵׯ`ÊKٳhӪ]˶۷pʝKݻx}u߿ L0 ^̸ǐ#KuMC93kX1ϠCMӨS^]2װcum۸sϴ]w|#ȓ+_7s[vu}ڹν.ӫms1@j`k߀VeX J>(y5hC=@b;=( h"N,hSW4d4Q6<dD)QdTJDPb!(PQfi$>P)ѓqY6D 5lSOC\RAo@u\sКWy%H瞌O :(>Aa)B6Z>|3=% IPay(#1jI2fc4̳O=̼P+3E@3[O6@@v.dJB+$k.Ab =$3ϬC,StnֈXϙM36 I 4U&Ec 8 @QVLB$N6)KcE26O1N0p5P901O}$MO6+x4Snj {s1gs45Pk≮0 ;'ɤ<\@^|)4Mm]q׃DC4D4#F=s{q])7 FL017Mx<_MABQx3 dֶQZ}b ` А[Ny5Ċ+l;"D&R\o*нL}kXŢ0L8)`bIwH3 q IB#Zc78^nm0`FcIE5A+i pcc^4%q#*3J!nt"e1l@]Ml 0[tx<'7/gGӺ1Әxf2revooL]LsoCڑ4իAc*2RƍZHc H` m"cbFYiEA%c]\d ۂ;<Ԕc aCLJX Cd69ZDf*;Lc:Z5V)CGOqUbM9TfcpЬ1SO5ShL0;_j,b6KaV 8_0atI6YiAkޒ%emYx+H9/E.O յ]Pg{تMSj dlX0&8jfh ^XaHFĂ)01PfV;Hz6ScϯpZW /d#{Jw #>$#;  8~L)-AȝXMkJ<%\.:'&C|6Fo=&x^hJnaa"4C65a6~Et,PpH%4Fj=a;.H›!'"'X)r3jf4 PR4`l!?gPuSkD U4`U3]%9q+Nd1KdL)jԽ> 2HI}=zOo@,`v3zv_d0F@/#> ,^e 4nAxV >ƌ0̸j+y~v_LuןfvPF&t7G'}tONa,fC؎lZ嶉Apx#F7*gd@GA֡|ɴuMTHc$Mayogb}\P@ઁO~cp2//@WSrhCF9z*9|ѿ g')G9$9K(7gv) !'#G%r0$H]xBxDe C$2 ~Q}a3؃v 6Kр>? HoPJ8T{ 'V!1|Zȅh8(chrtHra&Wp^yXE8uxw(HH{g؈BVD/hHxr'Q818^  ᇯLq8bXXX(^마QMm 8uJ)Es(lkƦ}z(AEؤ0$ x|r &o*-ک戒2fr~I19}9#ot@:)2ZZUĤH$* q#ʺ!L"{z6YјyYWzqʈ{ x'z#ؑJz҂&* b٬ z:꡴WYt`KZk^:i;Zm0Xʲ腝(+1˜&Kz @;;f@G~A{hCsx {w Xt H+fr91+:;{ v|:뵠zKXasB `|~[rhй>ȋ7k|1+{ k2:Xj0Z +{k؉Jax[αqk;"8ی7=k(h. 98 H 83ʗ aSI"*J=h6{ PQ 6k%)A㫱|,o av 1(({i0۵7\h1VA}Y\0qQ'܋)1 OLƵTNjoXkOr`0OA Ƅ %z61+rv,<Ŗ|n>jPGR;bʴ,;һJKʼœ<6EjO̹L<,W3Xj ΢e^@Mr0Ąd)kJ= !,}Ap{)| aͱ^'̄0) l ȌrŒ;qH!~ [W-sk]V}`֌rƺ$m暽;pPp"=ijw?a l){mA؍ kjV’lPM&c-( ףm#~);׭x˧{ *M{V{|ۘNl=&`јEM},ܫ,FbRK\' aLZ1kͩ>_9;:> @lah;kѳM^7n&n>: c\cs#lR@t$XzMŸ~!HiėڨͿ^`h&a@ô과zm>Jp7 "cmA3BXs Vdm`0 >nX3j~!~n!Cq9OG{h>O_~3I$_Bע[ .A(A}޵Qkj[>p J˶N3; *9<q X/ȁ:hp_I 1Cr[q/U޳+&虿𹭛0gLy~P@?ʶ;sΖYBqkM[/'į,bbz1 ˅NشA; o"K 9CGR.dC%NXE5nG!E$YI)U^ԧA3c&N/&\OA%ZQINl@6b.I}.ZWaŎ%[֬Ѧ 죃 9 uy_TfjA ttC%O\ee ?-PۜX3&]iԩ"S5qG+L1j'^!am֬q YjMPqٵo^9}|>D{up@kc<eMS+B l9[0>k#=#1CSTqE6$ OXqG{<*3m=TrI&G{69#DrK.IJ=(A:/t\h)k4QRN> [0<H6DE =OH#@7ѢR`RPC'r63} F`uVZkJ /CzV`6"\=sNU֣auY*0e6Dc!f/Bh7T0a 9萵M!jw\xH3O *!;BR^L3=Q9*#b OJT'xZ ~9@SUr \SVY[]yflc.V}ޭg3)q"d)5HZ#hgJX ,-f txv N$e"مz9!pE7e3I* xrˆΙیwzT%kyEvMt%dem[!e:٧u~K\RF`>Zø9 M1ϷQh3-qUYNa7t,mH]$TNKW\xl;`7$frH=yzTtR+"UZExFWNU**E4jY㿥6dl"jVjȠr&DqqY#Y0iqp^3W^3z8&V"04 ̫['ٽ!3UЦ4llЦU bQH˩Ni[@uiM*TDen^w*wbYnsKNTMaXEx 礭l2ˑWfq>@ ] '3I_W3 uCF:`gt=Zo=<]JeCaēDZ@C/)G [Q1}F\.nas`X?fI*+Vsm\@2@نcVEQ/A'q@2CfӒYcv 񎓒9%fH݇\8Ћ: PFDhL+ļ\7{#&q~YA'mN5lRZӢ.8ayȫe=g֜ݲkZ٦ok:HgqCa=X1qtt8c[ܳ&;mQzջ5nl L{m^r['DN<kRZC\%]`'f[H~x?<-c9AUoMhFvWmv[ߑ! byCG=ۿtȔNkk.v!=x<:'o \7ޯL(7De'}1` m]=N˯ jry :G,y܇4{|_wWd\ =p 4}3~O}h7z;ds󛫏|h{J6Paoxk?cS:?,iCk >@;@HHZRj >@.t4

{A=}rAsS; )X $ˇ.m@B%ԁGӻBG=3fx7(%,0'L?[=@ DADB,DC(()RP0FŃHT,0S~% ݇5UӎIϐ0ӥӓ0PȄL"؋&܇;9)4:>\  ݃Q&K?s >^t2;ӏ4APue|8%_`5pVz\]ue݇]Z$>$__fTU=QbTQ@v҅QK!`憰,ҌD L]DA>=`"}7vK1JFe}ȵ܇0XڃOUaXNO0^S^~ߊt֏)Nd.|fv|Q}`f=5痽fJ܇n} ܝgt^ ^8s-UX?v`jg΃ָ-˳ \kd^M^]}stDdxTOV/Up b[fl0Y@]>ub}ۏ8j}ٖF懰]K%f5nmnj3jV5Rs5j`ozULx~j|=L~2`3X3<}P[ UƧ}( T^ƅ޵@uָ^o~\޵F^0=새ɔ IJlhIXW=ɕڇI(탰p\ఝh*-m<4KlRqU8~̈/@qtng.,Dͣ }~b= 0>eannk X 1ŵ.S债nVor3pյ5U]8EASGp܇tl}pɛf^JφΣDnI^_පQtsmfgzL̸TJ[t溅LX Wxӌcq[wf̵E egV~[ ?(Ra^-Wl^ȋ 0^o;w<8sp%ֈlݔnxYWNm}px^q>q.]L]?o`wLޤ䐈v(dX祊 ({8`-)#a\hc<r}LOG^/Ŧ>Ӆ8l/I?}}H_'tGp|g{^wȁ?Q;Mm ?[>q.nN`,r VoMͬeoJoN؇WNWL=}`}fy' wU|.c=P2*_ F\P>?^`g<r_Ot؋xX9Jfo]EϊV`}a-U%tDw=O,8PA p!Ac@h`}2( CD<^4H%FnJiC![E)&Ns>?hYA 5}ꍘ_Y&V7U ISJBVBG)qV,)DWX]WP6c !Y>ieAUT;ִv -^{s&YghI5>w 0Dt+ԟV%YEAY@`Ta, dVh1ūVjZ0"Zϫl@D>f+AoXdD3AdsEQYckPY`m&ɚE.4ڙg5A ;1; HѰhAIgcG&orYPN>vg%u"u9IUNȅuVWՅl5,2_׏6Lu < {XTuAYIuFP]z AɮMٶ(}EZ`䭹2kP}u3wDHɄEYѤԡ]ٗT"BTeMoT  eHXA VBUH:EE&ʮ lej`lj!8H`;1 )Q;L,yaӎׁ}\y!*%p!sHaig*ԟþ`S EMMCpDs;aˈσUJ?w!TM*sQ@,E) \Ax+("tPh΍a ]AF5 QMFv%ѻ2 wEpA͙!ep`,筓.SV:֕;i ".u+/D[RӠN".Ĉ6Ayv˜MĚ B%}.ItͯA~.s'G"; #%s.r8C3'S)$z]2 R+KS 4AmNPjn1X/t9 7]yI@{jSwo}E}tP90DJ Vs@ }Kn"JGE* EY,UATh>Q EhLTU׹PE F,  !D]a\I-%DFA]Ds1Wač05EHK UD* ϡUtXyRޘA`_LX8D{EZ-xUUD#UAD_A,XAFbK]uQ_(פ< R0CtLʈ^E[2۪"A| DymBL|@i1^I cEľ"N#5V5^#6 D N)I8f#99#:R ĽBA`:qQ`MdK@aL*UU33#FfFn$Gݑ\A]dGI$J#`EZI0 ]!eBϙ$FO^&:e˙DQ%ALĕ'LXaA@et!X8TE`eEd@~ >p.eA!TU6]EtJA'tr`tVu^'vf ]v~'x'ucIt'zzgq^AոZ5gg,XDL&.BUfE B0z.=9`J*2S%A#R 6y6&(hFcA@S*dLJ Y(TEPLj|a߬ fA逘UM.ĄF̈́¨n)v~))))ƩΩ)ƛ))*VB-TB%*&#->*B#@^*2hNdD&W* ڟTI8誐\> ZmV)3/DP(ש|AtoZq.b@!, H*\ȰÇ#J(}/jȱǏ CT艠V&f`۴73&&q'̟@ JaƏL"&-t1PB.=U% škZ,E:@{r]㔶pE8w=ˋGM ida $}[%6v sقl^̹"Cs>Ť/?Kq3ۧУOjE*jl2ꐪyQHUWnG"T@Fv)AÎ: O%@@]P[(E($BST@-$@9>8(Tay+Ż@PD4@m2>?PmUO hvЮ;-7NDA2=rCjtzђTG D@|z02>GBGM@UmU92G?Tp.$Xd}=P 4oC#,F0AMtAdC[q,)Akd$Xc1'k&ЦɜsoZ3LE#T-(^ա_9G4״ @/g;v AO `OR݅}zTo Tlk?P潷@CODDs*>cޣǔ\6>(^,q5[G2- VrA! :9iTHi 9'Il1A # zQ@֖fzY a$#AG"b "CL(N ԤqD&%yLX+ e,H2G? ?p 12M'*j'rghr7 0+!Ra'@$@[Hd:&Z% f `P.~!˞@@]U a0%mD{0R, 2"+S- 1>**Vgbu80 &w'A2x Lpsݳr!$B3Q MH'R„\YIENm5K-}:xh/(|ȴ¥OKЮP-Rd3Ò^ x0+ ĕ-5c\]Qj}<)R^X"/e[ T.!ebҥശ́ z Dp=;Sm91(W 1X0]Pђ,\s`5ifmj7Geh%fmwV3moFNK2,|)&BqI*xVPI6COA~F/HA)T3aWE`u-xbpBAO`S Y;AUwk /~!k UQSlO6C+|cN| j-D7C9 +<{+j DTAE?@E\~W1IGuDA`Du>!r![e_TV!+sV 8G^l܆nfGj0_IFwi DgtgH)!wֲ3WD532P---!tT-K_OS,s3p25;pBHW5a&w<${ 2WcY%#+Iq%D6LeX#LuFeT_s%LpQ~?|Q&O|V4<ı8=C8~XAE#'Քdd1)!D)^g- gr]'G0cGB)Hf0fj0fG3fG&H3UV^^=w2}ˆ҂Ƙy'cO3A: Ph`R,ITX3s153GA9Xe5H44GPYHbV{K70+r Q82){7D#=3uj(SC`8dSV!Ι D\8u&! 1~!$#:!- p!l)8 R`-!'d`mq^zDc2c@fAy܆P9Hh%X fPnGe_i1,>r6Bܸ,AAoTz)iq7pOpOܲ@5SQN-bܒ4iPHBsY-=j=H/Cs9:$#Y3/|zS1f(ua †`\?~Q"ZCZ$uGFNElRLuzq32lt8rbd b0n $@iV6_d@V|)h0oQgk)h O@t:4>.wpc:●7*v٭"a9%twO5%d5P34z!Iq؎ SL {3Wgb7+b|aH5{5k!c8KWbvrC7*8G6Zq#DGE>ZEdՙl aY1[Yf]=̖fEm٦mc`BImstf;Gߖ  Jַ6@f|$o)΁wwx0n"d޸Af.&H4.Ep400Z52H5Y2UBw ,qU:%%u:51RL0&G}x(!h.!& y3(wQ|r&BҲK4)u(kl6$/sN +a3&7H;! ~I C0!+D0S@RlFUOVl-ea+4Yem ZQIY禕tfqǷ Z@IrtHq';.X4*X_F:DO;3,ܸ3`&P93. FJxK`i<*Q:,AHrB#x1_(HjN 0W=Q9 `%W1.+-!a-%Pga\BFH8lb8R/=f+K ;U "DK0SqcD#6lS!,EV~7~ - "1+ d\&\M33Q'cW@c jHifca@ldCɷ՝ ͷ;\n?GQ ,2.GPTIQshy 6[ԯP.JU3C#$yGӟg ~5^<4PfPyKNTљY*,. K.t-%2TK Q=c{jҐ;Խ,`{04D&9BtA18-N0f H1 \1` ӵl.1;Ye D ϫj@GxKVz ^K)HqNb@'3ѢV3Pzh>,ƸgAP3ߪRAip3 Bs3,0`-n G0.YOSX@A5u1Ia7c#w /0r,2RRbDf~"o#a"B^*q5}MR>H0S!/S6pT);S!'  C+>`pE_@B2pm02(lK ,;ڀqwԽFo0V1#N5@" (wz"D#:sn-E=zk{f|.K1o!{42} Fd! ,l#"&O,cߐ}Oxd!=pظؾ.?r!Gf"!YHܒH,|ܗu _ &L`|}]fߦ6J.st"F1eƌ1SkȬAC jȘ1CƳh@>ԨA kS{7FM0D'^ܸ@ %T@8T}%$@A ^=s}L@P`&pP@<&@kx)  8= ܧ=\; ag)( \"}}ȁ2q)` *d$]L  ++.ʄN 0-0i, 6` .6D22e5y Ĉ/#C 2l350[n8h#i3ڈ-i֐66rMt#Ȏ}~;k>% "` ๶1$B C.(0`:(m."4&:8o WO`ς:AπJK@Q u[LA} K8[iHdDh°KP7AN+xB LaN" 4y[RWN\UheB1 n:Zeal1ȸ8? Idn$~##\V9V1nx)Z*pɫ]sc 2 _H&E_ԤU`ÄTP}a"`h1K(9' m6<0l0>X!/3а2L1iT|b+^8Xiu͍0m3k1mM"'8B" nL'u9q?sy.K:ly1ۅ I/qݡC(xzû9:BR Nnrq2]nG@ǀ zPMUn[2 T$ P-)H"(&:YcȬ[qcs"*6d`($:%ؓ jSL:LYj`⫋,R٬{۟Y r+Zrzҫh`HIDy-$Jfy`qB=J,rL cË3ZB#9:way! rOC9Gڤ/.|IFtЯS%;%:ak ˺Ȱ۰I5`ېEHiZ0]t1)l5ј QACQQ (i4  1?,IQZR* +iY;I\ӵP :b,@".dp2 1jJK²K ".b,͊R.!{,xqi,"uc-aI@1Be5dK&J&" (#+}9b !z7b9!p!Lc M*=C@,|ٗF$FtDT/F:!HDE!%D,N 8183E 2x0; p\;1l"ݐkFDr3j32moD3*ka=͓ < ('YEBع4%2>ҡ aqAۙ); 5RQӏ(!5 8S?*10 5,ۂ*&ۚ+*t"bLL̬tcs+Mqc(G)[-B-AAAq++Y'ହL-'5$}â[7" @\yK"#b$jJ^S!R.TC4z",̄X7Ls#y>YV— !GrML(NleL -̈́0Rl%L69 .Ќ%p W|EeϸN XϢY8 bËOGO"c xFi|B2y) ہꠎ==y2{{<{y)Y)X`~3-(󠒈4Q*ќיЀP˪ڒǪ* (Tc(zܔQ@+ᒡ:!iHuꔋ-ٲ ,zNAqs6u -T'Bϒ}@i*R7'H{C6I"NM$H1D9'bȁ0)hJ\I7VU"]A1L"9:#Ut4.92$ D0 iM$H|įN_o c[aE3hצ50`2  W  98&ӌF08X1԰detXsXa=Po=k<2ػA#'` 11>H H+3c [*dd[ aj[(%y,+]-)`KdB6Le dk Z86\M.T|@)@p΅c KȔkq*+J!Ӫ%ZR. b!)T1I^ƽ!%bV Ί4zC_m9t9Lw e(_gjկ*n:JlD3`D:Y6`.:Dh{3 1p5&h"(c1x #X{&;0 M:aq@cQ ' b-@س 9HMx(ʛyH;(P- !>(ɧR͎dR+,Қ|,\Ry[!Jujr\Uv+"z9\)n 6I+OK)XT&. -r@(̪κbuc f;݈5e!^'e"s0;-!JKmi 'b!L@ wp+S!k.nmį}AhhItV:O$a:F.x%CM`61V85%[[ 딻[q+H ܰHejf<F%޲X'Fr"F Hxwdiقֹ+ hXл~ҲQ &)YHRKZGHq4*yFd I/*dY+]u]*)U`bĭ!d8Mo{':)f GGYn,!$j4yciL@"8TE eT&!OnBf`ςqBei/ ՝9r7% Hv8pLXBiqGFD@4È7}јMȂ8sh1:3pŃ%1Hr& [ `[N ` O^N`D# -so{>@sp ؇BիFƷs_$s1Xcȳ"P(ɇŐ0u1^(QObĖ(0#=e)M̾x<èaQ垇RP P# d?5YC?*5N18KH%!fTTŬJ*1N&^&M)(L{Ǔ>qBщO4!{1":4& E8da  9$:1ǔORr1#r(y0ǒ8DD#K$䏰=ˣ?r=͔vH&wrL~;$p_ęd%qbL eK-gTo@\& Ԩ۬F .f6l6j#ʘ+V/^ oĬyG4ՠAfMث#Gү;'/͚8w٭7őg}T? 8 p@H@@pPAHphؠxh@@pP0@ P  0x*@ 0 4$ 8]zPAYdh&L&,9APP@&`LpGف 0GX@Lq4N01R&\B-2q90 &TC@CԓD8h&C C@Az* P 1 ,Z  DA,IDat2*ü CRD o :B1 Km;00R_}1XaZi1\huW^C'd& ~-di!'}a"dAIhAu_taEjl^\ZWf]kvqGwȑdrmG]vܙxsb~yArnWy˱_~ǁ Vp:H;`#;8bވ"Sa?Y<9frR@-J\ A.~ed:f^ρvx B KCr<'B9j tәDЁ5!` "A XUdjZ`@"`SdLPeSSx Z0*P S a8XCÚ"I('JPXp,+x´% LH Nm1 ,ֵ" %':Ux 2ĿDLrtL\eUp#IJ2'SvC" HTJ+/ KZ|3{^"˽4A[A8 b4- 00e41Z LLM35@m& jօ6 lHq Y);Mv0숁;t|M>#P'>Q⣟(F }l?ҫ·#QD)*P+Ve!S9T& v`F* pRLYjS.eS𰇝2rPUA@Ai ,@!BH6b &@%JRZXyµXPZf}vZa ",&b1WHBk9!^&HH|E#\]FiҔTMd$I* Ģ2׆,\&3YLfB ,a`~1$fNSf,\5[960t!!N/5mCP9 Np~ c`8x';gguPǡqz64V\~$-gI~:;kPSBkB).QEЄ܇&$@{wMHH`EI 0%5ɨaUGs$~_t.MR:tx)t`ִz]ףԡ0v*v.Tk2"PFJVU*f+?noDs2Ytk,dWPXnE.yVt5)O/(7`Qpܞȋ$&{U^^Ib+96)VIǟ0qK#( "\A{ץ.cLf1͇ 9.…uU@Chf0@ '`xMmjC NmWh q:fxS T>c82 <Ow'oMۃ60Dz1־ (W(h1C3! MҵE̒ d!eE1 2Y`R-_xX]e|vbAxAx|kT]qSr%w,)?brLG.Gu$\NBUǕiq HG5cdϞ@ΒԗHZ\TAqGuHXLQ1BTeTZ:Z(LA5$Av$JLH7VPM`5J0Vxܚ @ga@h E-A<n-KQ& QfT.AMA,a\EQCJvW E @CdBJ$qaL@zEz)RʒDE Ȍp&&Ȍ.udB#&$S93 aXcD"،(nkh|؇*p*C&p|1bۤF-s,qTuFvG0x rTGtY|h{ƇTAΔY}tԧ}Ȃ("=5v$T˺ȄO:? P ?Nɞ&i4 QɏLxτ$턚ؔ$PT@h ]!iU4@PfJ^ɕI  L2[1Aʪ pVD*E `CDPe ۶ 1AQ K颋5WsqZ1D" hID e)v] :U%Jz՗CRp*\ @0^ rfiC *'2PM3Iq%>ЌF T]_ƆEb}Bo]MɄ\ۘA$>tؑ6kYxjuP$zscGgE'~l,H~, <<HH@II@ ϔHHtHЉ`T˪aI:J:-Lx|pc0dDJ홠ښqxFZI)|Y_QZ}rQJ-Jߢ JfP@@R:QViaezL!NWk`$D`FD\KneCDo0GD)\: ˵[&a2ğ҄X X̗* e"+^+E (0L\@r&g_ fpXM[xt D,X_'`LMic$FB* p2M[]84'uo Xg p$wF 'G?0!v8u\ǕEyYHǂl}ȔpPHH=U#У@͙,c  F:m}0IvDx ?⚟ G֚5 d ZJn`ڊXT^͊b-a˴fkmޮE``BĮlF |ejKXM%=Axۛ|%D@I a\1sMDK dNDH9H>Gv>uHXIT@P^HPM OZi-U`gJ_m^I4W򙛠YjwISid\ %ڮ@C_$|ʦ4ij隨ʩƘ0ɑƦL'@@Op0Q*J$EO@#&KR0d%OJ01D )J&`DʤCk22ŒR+LȈ#aēLC'V$Jc#ofjV1d7%&*T0U+{?H?z$1!Bă2˚'k yHhC2q !drS֟d"Kd%-l,\<s|/`~aLOZv08e% 'ctbOK5kڴ14b3c1Aп@?4c-Bl 4x78>c א8ceюcquܑ=@F( $8 䀀8 , ,Ȳ88 @%) "+ :< ( @`M 5 `H%= ( R ,4RK5` PC 6T .4<(.H.hh#H B.8B-)#l i5pm{b"ض'\- r`Z /(%.ʨN$D#z)Ri k &`⨂..cTi$&V@bf%"L') r)5z˜N*, &jFJTbA`~0;A Z1| |҆1QM&L4.Rо-m>ᄆ}!ۢij5 pᶠqj`qրOFbtupԤ XJj4')pNQ"@ !:  (\B\pSB@ UU‚)I%@}2D*RJB")Gd"k1=QTjԓ eTp0a 1z.XLrׅ @(,x fB#.qTZQ2J`ddi l A VN: " E#5GFҒD*Y{QbH$%XB0T$hJop (^Snr_( *(AR2@.` ͑!s6Q@`9qff7ӠͣB6+$n ͚!Flᰇ *<'L'DJٓb|p; 9-ꁎS VY ݆ԠzPJ W8AGý}`@&I~*pA)]J̆b%9IMJ@P& RDW^O:T3efUxR% o5p!Eh [WEW嶭dE*cj 耺W WSZ#@E@θ"]?>L>`x+@ALUweBHz 4E`7cK!)b= v$i>X I ct F"!iP|3GىU]aS>w%M ̴$i9P̤͝g cĉה2<ncƥ:o|хhp/@B` `P 0p Z7Ց'`.8V~ڻ w1Pta@47"1B&шXjFħֶ`F pxG*G$dLbKd JQĀLJN RPOtP%eP*.ZTjSe<vh ĂTDKhVEHZjN VE:(@S~k Yr%n+RŌ NNZPp W"" b L%%"$^Dh$"f(B’ V:`)b'Pb!F`+aJ` ( $>+@4aHZ hX"4%BjF "҂.nH _11. lH<ʎLmV#X#q^/5 5zǠ C c0ؠ zO!j0:P5 &=̀M_@̠@@ @,('2jҧt*CrC>dE DEj{j F jtM+wgD~aIr@K dLfKXLZ. LIĤVP%RNPS4ܪdSbe feVD%Tj%DeUVST2@ߐOB ZYpZ&0Cn3@7"`5Bl$$&` "&BJ,l$1#dB$&$"bh  >"FV.&\anreVF.",1#",Q=A",0t-*"#X0f)/~ b 1$c4ʶq5 4LmM#5lc ȉBhXW^SM F cKbQQf(Jf("^;na$Co?̚ҎJ4~jccp@1l:o4mI02J#nrCoCGog &JwpIeH{ 2* :! Att*L.P0+EXTZ%Ld"+RFEKpEZH ,@p>e@uZ%{ Q /X!0= "p@ݫ.b^0&L)'3d$'(]¿R*iϕxd0b&,@*$ɿfpf i24hB, dž fD1 1 xlF#9̉`mm;o564 xo7ΊpԸUp;2r]# HcL]< VGdjƠ (*y2;yx4wZx,gC{|/ {$DVj*edR@}rׇ+ĝr+w~jK*U$`PZ26I&KLKm>GPeݲUOEM>Y ? +&:VDnU>IR\SVt(V4Vd 7Hvh6A.XV0HrO:hZ|<[s^[ޥ!rx$n ` 1Ǧ%%j R"fa+(Fh'"vqV@daW)Q&&6)a& 0g)+Pc@ tri Oa +chhdYRL33(Lclct`26N8@~/J;7(B5ֺúLuhgFv@J ` @#v wBB'{NujAnjCʩu*W=E cd e  1QmHo5X2'4ʩmWOm(,o-Y,h%… ta˗_HЊĊ[3H&c"E~41S 0fڰi.kȘIfั"&b=*T(ѤDψqT(4cLfoyc'8rȱs8aۆ/l쫋Nܽw / G  `$P@ŋB{x9b $px„H *Ta(C /@ nAp' `a(P`8  r $B<K=E'p AG$pDSGL-XBL![Sh0EN0µ-4Laƒ.2aŒS8ESW%K %UN f.\٥O@tb1RNzYIJIL *4 *+>?d28ګ &< B ű ɲ@\[\{mYlAAvFaQFid {D_l#DIxҽw!p]a jFBQG5FPgl hAWjqQIX}ȁtsmFr%s]} ^Wb!>x @hzGp0EP0$@i}e% mSf[pyg@uIhf x$z[z wAy@MQuMe XvM>pXt@`ANBB+!0Q"( &.8q A)Z&VNO/]^ җœs0$SP@-KD@'cLL*` M8Gg2@KP*p@/} Ԥ$HU8A ToJ3|H0?x ^ >xLHq@(- Z<BUE lk ` k]lLT`@68$`F H5 N!Q↡,ebK"/AdW)YV80B-g)Ї-oY\ ie_p%{Ōg H5جvkMeL`J 7ӜZv&6םr쩀"\C@(~)%IMVZMxpeB (LUyzR'IS)XJ%ɂ4& OO@2'Jjʁ>LMJ<ϨE22%,eS,U)>aR4Ff5>qT”ChmR8h}!-rALeÞְ& TNx6 $4`$M p\d%_#p#$3 u77$yAtB@c Ę=Ё$^r)3)($ $2Ԃfu.e& U;RUAr 4T(DMgTĦ%4KZ(6 Er饥4$&`31X(m|KXԇM LW"_8)9 XIfը@LH)2_A% K:lb}"N|H N[Y=ckx Z܂Uzk]s䭻u/< C[ _'iPH2'cH𰇍X&iw(ˤ:v 8e}gf<+X2`Wx/aዂ~%⡰. c915ѻF'ьf\C9  Gp8cm2szL{(p( (35zg?]Cgv?€#b@w4dh@oS IE(s P^z6꒫"&IJaz( lUJ|GA@j_rW jœ .}:ԕ]$61ʯvTB%Q$#!}2TVY¦+lB+ED>n"E2fZN,bE> 5,Ђ \0oTtER[ 4-[%4F]p. P.mPFl]\ej26a]bpdDGI ^Kr$qIW!WI.JUy2wJaqsn_Bo3=s@ tqtK89LQA:FtQpqaaN10DE7!wPwPq:a@c1b39@";x:'HsNw9T#Qw:x!ȑQx&!1!G`go;&&R(2 "mV=;.b ",SS@KRA"(=WdiAT'(|%B'@)'<*N$T,` +j+ S{.~'͗>ĶhO$leAh)Y)#1}]i%RCOu(S 8mm++mF$+6ZZReE.obZ+%B[ 2{G2̀a0fqe`2wإat9FJ!IIS#32kr0.Gtp9sJh3o`3k(`SDid i(IB(jfi@8AKLA;AXG@N%@a@dX&W)Va@FehWT3IV @^ EjAW>_"U;i*8;m<=DDiD+&OHZQ ,C6UDoWDZ$FF21V@Hl Ar aob :p 00WpWqs]ypgTqHrsn 2nt02Cz4t0t4esoH`&q4qwEPa1Nw5t1A6Uud_777HfN9A@y$瑭L4 凓 95G9y7` P;:2!P"C!;!a"qf-1?u=ѳ?%GA?$Fe%惤E%T>UR5V$$,0iJKY9%~@$Ul >?5C#4?%&(҇iO% +O@+D)+U->BD`-sZ`Vd[5d|9z*HFdpA.mo\@\`(c]d &S*1*2 Zq3s5h2zfKκOw'LE`k59f5LQ4PAvS@LS0OaQxQxȜ5FDU\'%ʳ2ʹR+CDRt,\EN9VTbق { ߂[B/q[9Lmpl YA` ׬ " pŝ 0Ac`b e:ᛔπHQqJ0mo@3lQs~s7Aiw@yƜ1!,GnNSWc$e8ٔ6RDba1fQH5 b!L9S0<ܡWP X"u= B,Ș;"IJ#"65l2l3S9&SG# Qh\:O FJ+F2Tx=^U*o-?]=%$'^$~%QVR)_w)&49)#QZX}~&g"+=pN$+ nu⸦F(2aT+(Fŧ̬:.n ao[ `F p k0]wAqIYr9^NE2 -ms3us9wљDs@1OqPOLAt$v7kЮM:!55_Spiq!5#e@bAB6h#ýh910 N8e":EQx e";.e{1eg@9?$'Amy~NR&%z&&Kb(_$SP}>%Q%}#$Bj#;B&A@ @%D'D<>N;A2YB:IU 񃇓L-lHi-15 *。(  ..`+8خ ` ;\> |;ϟcPV1! π)@= o#CZFk!HD`"'r %[c&X~&dSi=է%`H 1PRԝb&L:V8[p. LqR4(LLO1>,HAV),!NP`NOT81Kl26X?İ`,@QWT~Ptkp"<&uuD$DB/l ?QPf/DщOzlb_DR0 РaȂ'b(Ǵ++d)Z,b6a j@@f{Yf3.{L]X kE.$CyL&;\&i景b; qF3kmD}8W~^z 8Hp 9nc` (Nm` t@(z%E?;%>@V<Bs*EHF(y1"G<7P# EG^}AB@@U" &h ͐It?/! ,(޴%jӱg3)VZ2զQ,:'(@!Sb) b `&1Lm -%!i1@~b8i vof({jq\Ʌ1RGt a#BHB|a$5 K azQ.l .6`r%`H}LA)r0bX! 1— ye2̟.ux< o5;T >q3=Fh*6lhH 7'ܚCAgJ pР"9Ix0p UxJXNx(;:C<ޙ:@[ xA. 5: œz" 1ڪV`t@-"M8rʀo~(La&xBrpl X* PYM锂ٞIITD;a:c@Tr56(U}N JXzhYA%jYxUbw,zdLI9h7ijmʝ>6 r'&ւtcn[CBB LpAcwp-|Đ#/zY0k&KIKœEf(k#0ė'>Nl$X'6Ʊ1*J@4< ,>bgK Ll4115ƲeӇDUKNA&LӚҐ~ HMoeyk'?+ /{O0o@oTn S4AI-I'(7OnHg%@=C!P c r(D!t>>rvdF_ 1Hi$6&H+xc(hQi 601 ``!A-]"Z%*LX?]!Sٟ`yv+1&"T:P"Ks6%a.Dqqs9 C:8HVpi!l9k6@¹sA죢+: ؈3$j-(ȗZ DH,؄`PGLUQ6PXR45 +; ^0;_E+pcFy`9xx ˣ1ۇЈ<3  8؀ x p(X͹ hxR(! '˩9չ2ڡ3Y"*h*h|Jٍ9B[)5Ec Z  `dZ@+i$tv&Xh-Ai6YgybȠc: 6A 3-j -o e(&S9G0I h"QU`9T"!(سDIÛ3 惐 XYI"xINC)թ)N[1z)\ؑ )04 _i0! &@M zb#)Z RA:i7B=)7ړ̬J+!7">j%)GQ HHܘPI4ݎE3*L]A؞`YJ JP6Ce­, &acE2 VMQE3rCI89<ٸoK;))".a(xEd#I--sf & /P6rJ-FP::qHgxi!492n}4:b#q}#:9u!: -O{QdDbNL„/ep{Ģ6d.EO6+ CP4@YY ^% e <&/3p7H 0Ǩ<Q+5AA ᝸5>س\ +DS E p;DRHɔ4J 559YJSb) (Ԑ,B%13 0(7` ,cUr+Z8,^:'a%`_&XTQU>MVw*:XQLb 6'96ɁE#I0yV"j =P-)Ão-5rdtM<ڈy[x񉑰Kj:zLj  jDW#H亥XOU 0WX k1 PEӋd|c, 7Ϙ5xʃiFjrp ͚lciZ}԰$@|LQBPA!4E;06PN𐘴@R;)(!dQf("@ ޡDI i5ɛ K1@ *!  ic@0)+!`A\^07D8^%٠%"F0%RM]LLI"Q[ 4Z7YeLA*%jfK lv3B?<h0Ԅ^a2;$l! p '` M?jO9.ଗ0/{  킀Lr؁9CQ|O L8$T @ 00Y 8\% k` c-e lcY10gRFu mc9<A( '33ّϹ2'yK./M!Qۍ=64nϛS4鹑]94Н< V* `57-_b TV 8:-212:"Fy T)80FBW-_OI)%bVhs%BW6w@C6&P"&u+x+`Q>i?Q_ `kuL`ʗi 9# |':` @Ja !0 ANίFKQ`HQȺ!vQh& NNF5% °% 001Zߥ` lp{&9em14|UpuD;AN@0ZT UT@@x@@L;G\<`^!`@P:1J<x!K>Ҙ|&AyB0{R!h ; *B j+8 VTuM! 4BP"_p؆F m'(W `' epP2n0 %6. ZJֳ;rZnpi17 d 8<22׸*ɮv_&;DD!*i"!@Vl'Ɓ+FiTI))"e41@FF[z`'̬ W8 !{ T4D3`H@P*5wdnb<`hz[RP 3viG pZ0Syh 7 0 A䎠B6O䗃xsSAmF0!$= ڏÂ0ypd(AsPuJĄi >Jx# GaA{О؝x=;#3u&B+ݍ r`ް4Dy†S?B~@aHJ"ŽRP@R%%AiGr'h"fy O OC?\P_Ԥ$*#^ Y.bY^ʼnM|=@ˤDDpEJ\ aJЄWpW` @1r4Yp֔R]@Id(XtULKSR5E[ >-M P(ESc@f8fM#@Brk(fidYYOHy]n-y4o OUvlC2<mQ ~ȁ=TFF@贕C k ZJ`ڳFw]yGG|LɎe i  H  Ib fPמɜqA',e r]Ù H`H0l]&`'pB&*\3&\ 2b!: ]" gq⸬A,@|bbR&׼K\eugwb'hDyAx++|gKLXǨؔ%,Y9B( P @JX7Yŋ"-ST@dMŶ7E[S5aSblEE]h=qdGBN6ΎIL@vK5_m,yry@ PUiJKtH|lDx=X+I+;ChH-4=( cX9j)- 7]h-a X2J5=lOMR@S?A;M?pSN$]?eFIӍNtM E]h-H]qC kFlZEZRRih@@o XLUZDMR}xFqLe2An>Iv~x]AnhDχNF-V1=AxxX0 q\Y6A֚@e& I i AkJn9\B&CѩQ'p @ WP0ykykY &2 @"B,L %y0~l(Z] wV ם'A<+@C*2@Z BdU#4)YP8(V96ZMEK\/y͂* hItaLF5ǀ]SZERDEiGLhh1Lᴀ9:*㄀ln(Hή[=Z ̔| X|2`{iz,th莩!Gt@-78e4mU^%2|H[~n`儔0&Ǔȶm[1 Cf%ae&`XБ^ 8ɪf'enУ }A*t2\!4FgaDe \pA˅ʵ! xWpƗg zQ|9p K/ȂH'%KPQߋ݁vrg%$Rk)9+ySnj(uS,jF ] ''[VlD{&ӣP\6QE\̅ZtOWL=u Ǭ4hNTģq\ղ[2eŐ_;pI^GlێN.rphr|qvwF+yԔ*GL@B@u ]X$|ht${ 8 CE_O GȢF[^:7x@ o4 W eeBɚl[p ᮞj*m izJ|oek/hbtfU,4t}sAgv0kKӫPp×|-+Au4~E]~a]DpwH$).uDyH CWAU>CDŠD)EY[Nl'B8 KAd;v-M #TtOz-W,7=ʀVGE2:6W:Ԏ(hEĴLY@D M2APJŭl[@H$p| tXԞnz@@( Ƙ4f OBi(@%0b )9T08 nD "eS򤅊O&0a &! Bp qظbW)x؏Ȕ!pʹǐ!</<)#Sz 4\.Cd-p .]˗M|i gϤnK0mڀԥ߼qnSDSXmDGsMt֭D] wg`nGcLv_f͛dSo /:8ǎ}ap8"0 1PC 9 "Lp "D181('` b@%28  @ (H'/0`(0F(Kwx `(:q &H `  K j|(6/6 ` .''s. 87 x37'`Is H#4V ,4)| $` Dr:ٜZhaWjքrh)jRmbB' 'X("Rx"&zJ%XX&&phu}`F X_&J*!*AT&&X0ɪ(<ls(r`' )&ma`j  nRL| rZz0RˮZ0 K >$!0ႋ-P[,6,MTVkcRo+@8>L#6/ǭˆиZި?O;∃%po @1E <V$ ]|. *P7s-4J@rR6("V֛(0'XM .5'~Mqr /P:թ VԬ0)P`SNUX%dX@&BE*7d-8/fZ`i%3IF0D%O(AO(X.B\d#%G4R&^K h]iH H`! !'3H@B  %*1ZP,jb ƕ e/ABrЯl+a%AO0 4DP&C 8a#[7 (&`&b(mlhXCӴ!B ޾3^ oQئnM"g6c9DHf׊+Ts1{^dg=NxiG n\3g>k|;8@ rЄQB*^~J3@: Wnd2}HBؤ>``p&Q)jk7APOz".FP(*8VB"@z[@8VxD(NHp)*!8Y G~`NNKXеI( Vdt XS#Ï` `KXoM4/:I@\'ƈ*6<OVc|)43XbiV ABg+4i-!8CchD "%<Bk0{Fo`AHQFunp5O(#Ahr20xa ֩K萲tШ3Izt;B;֡avbx#P ō í tNo  UhA a :щi!2qIС3iHRǤI]7?q]~ا*:AB6jV Jz* *dvHGI ddFHJ E'*:CK$K{l*MPh*ЁKDލ`݊QgP`ȱ2h8O:2AhRhS脵eVY,`nˉKv %n6ED Z Vn˜Ez' `%L$l`e҅\EH,&2 k_%!EbR`$!.I*q`& c` "1be |~bej"^Z``b N%T`.!4!A(i+8I*" i10lɖg,z&$l ` F@I3Ra@b64bplpp# 7#@5&: "M;.r:ʣ;أs #FMA|AJ&&gvDC@d 0zrH(@*ؤ I(%m)I*Q ̅dMvNP*BHPM$IRBĆ$%SXXeV V1sʼnJ YIߦ` Y/ g)dJnL*X(F^ *i&/F҅ HcR b^T`cJ |[ Rq\NUf&|Zl 圢lc.+Nq`!@gSh&&= |& , !s1/ffz &-b$x@6!n 6^#7*5T> g  6Dw BAa/:G3`$YтB=ր *TrR\RBdA(DNMnC\-C@ ^ѣ hn[8ɍI]S9SNnɏtsD"sS`N` a%~;q!%%):/&ujx7$N¨!ly__B#"?"nExb6‰ .,ҩf+o i&`!$~ j6dcppH H6JDq v#8|8"€  2G:a::c#AT8y:/܀:(m>TJ]%B` 7$LL[' q-tKtm{MDPĸ"L0}e`XKSx5rb)2h}Ifb[(%愢b bf5qb $$+h B%!ubht"^H,H6b%L0%LZh !S&:rpf%Zڮ],gc!g!Ŗ`iB"b[+'T$lFfʏ' kCi G ` iuP[9:! P!`  :g?Rt/S u XsFLA+b"t03gм#q⛋ ٩ƎNjԩc;oWe}0c|)͛8k /L H@T  xJF& JCD+ PHͤ;Lyʅ <y Cӷe ZtgϬ w}'|1EC&ZANÇ -@Τ&!xDE'ST`|%X(Oy&8#(` %@ yAP% @ dȄ)ąÄK@1&s1y!P`!29` 8a 9(b 8" @f_D|  Ĝ8D 8 1D&ffC𐉖D g&ShL2s1DF`E`l!kZklJGlêZ\a,^QCcе!BbDA$VLnaDUH$GH 1RGu1HuHw095 8u@`ŁTeuH TKXS$pe p`}5AX]H0$`L]pP @l _ _?͔ 5tآf[gMqutfuiqx v^JЂ \ւtMׂ^QB \י:P7ǂD_נLB  Ȃ 0BAVje++|Y-pB 'u- ^0CPk+[JC2.p!d q#n hȣ.+\u#r$#qIK0đM0/CZXUDnXLFM, c3xA#[h&0S(1iKgMdܲg҆nvLlf؜Ɨ4K DLE.Nv&)EoA4O&,NrR҇H,{裢RZP{ԣN@P~D$㩈 K& =z1JiR@Q(?/J!{ N + ЛAS0r<HEjBpg!i M,JD#QG f?1l` uʄ[ACO6 *NZB*uKU* <5UBvD[j dUhY- jc0Z2v T B 3!reGl!D A B6"b ؘgJJ "{0Ą5a$q}@] P(Q±H Ӯ4`(MI&0zqZ`r ]9H-hVL0 aL-5r&=44[c`i3X8p~sknvW͓nY,ն:"hSIOP[TЎ l*Orqx4}A,RLz V="О ?yM zTXH#8އȫ}<5CfBd  $b5ADL:8B;)OLjZ4 EUVSuذ^ʇJ|ml5ղ*m0$PXDp6ZrWrCnFx7\%4P nvyZyH$՗HD>Z,C.Y1J<@,b&,(]rf L\v/QPs ,@l@X=.ą/6[9WCM7|o XR4w~;0ho "X)N<-0AgT <ϧ| TLXJaĞO{B) &@ìXCy,H!D!K F)4` $96Q;")f TT3?v<ԓ#0 qxSfI33gD#P*:!<ƒQ, B<==]5"ő!<+'%<(<W$D͐%9U90UGgOThaQU *Pj":;#E&U`9mPmr6Ba71e]Fgf6>fڡs>wWZ$UEU2<1)EE=rԣ<!;<Ñ&"! Sch0R2<]PQ@B>O9AgA2F9&PWlhB&%-@P@Ҷ?ˆ#9VB'X<`&!"d=eXB(X )s) EC_D] @ZDels@+*k `P[a ,aFZ ^0\r+jG,G]R*s('.r1]esJs"yh#G^~Gu/Rx/x_9_*+Dk**ep+kN %,5[`$Em@zyuG%^*..Gcن7G˕Gj`A^rs}0v/20*AH+PtEX1XOqagA2OIi3ECBvE`A1Vc Ɖp43|p1M LAuƔ|1=v^dTeqQ!40ӱRz78ezcfձ$?*U`+h1Rh%pTB6!"%^rT2R*R#; ;}6hRGöZ@S` >@>*B>##:2#6m@p0ma!)  nbl@!X7(w(d(o+B?`<0)0C*ItIG*5*KT*bN2 ^Pʐ ^ @`+hkd@] r37:.A.],'G%gL^E^sd*^H-!_tv@I5Tz&CV3xf9|`W!4SXvbcfw!HkqAy[3M_qb7|qU6NV ʴO2wԎX5 0̱7!zvAc7a8gP@$'sN;@2; SP i7!3~A=́޽RZM*#08p::Y0~>,$COfɰ1LNb:A" Ӽӆ@p@Z&@%ثB4+AyuBRn2D f))E+DApKDL*)Ih+ ǫєGh*Nm'\^0 `ELʠ ` p>mW@ePi]q\.FrܒiqpiHv@1LHStcH9:Bt$4%v$un Y4Tu 5YQEס,C4t1w!w8u z3xpAe<۸e3ډsǝ^vK<7)4r"풳gCv8zA. ~F|>WI,FrQU‡PG!$ @tc@)(jbVoAq%''#+(A8W'&A1ȗ!y)E0 " r*{B+Z+RD*YG]!3p`qӺ[* 2LFd-_]H].w4oh5ߢ$]B^JT} 00X_C2h_S2pÕHS!e)3naĵIQ8AA3xJp vy VJ@w`)s| ټD9%c23 d7:O>7qq$9xsd˵!8L6 G lɄ9Z018aL ȤEO&J,BY0BE)Gd|R 2@dXD )$ HcV0y'u6`%ULD6+WcS pS.HpJSںeWc#TPd1T!&%Ra jN8jD~xh?2|ȐLCz ) ;6ͥ !bƊI{aę,oy5ϡ1e5d̴awοwaC͚]tɥ,P0p>t66Q 3c1҈ 1` 4ΐpB7B11 403Ҙ1Њ Q -t7ހ1F1bsQ#:G;#8:%rJ*r *@$0} 8 @ ( 8Г 0/'`EptK   O>/ :  *M5tM;XOO?EV`: uu &0vUuȃe--<j=p-_CSjc At Z0w>@t[ZrhJ]c2L"c AF&6ߜ"[Vl &x,,KA'(Bb)Zri i,&T0 \sbH.cHjk)fnY dNf'lmb]IO^18ر:S@4h` a8AS mȿ1M؂ϴ p\Ns 9n)א&68m6@O 1av8:I3G=fȜuZB(CP'TFBšK츔xc&4}1XA 6L?TT} Ǔi@QC5|T7(o`u}|uX $ x;هx 6 0 p6"p>A?1+H. JH + (?19)Y"Z!&b(•w;q,[,Uy ]ImM"_Q NA1BkYj!b~4R#t ci@(0* @  C2: 1([Z>܈`N $8T0 F%9%002. #0(x($9ߐÌl*'('(蛦PlX2h̄(0-;81C7ɓH-H;crTR/V(z-bm-BH08kAeeq 8o2DsL)( `&P: H & M hxEʌ ȹIHOd [T"Ű` sswQtk:'ZOpH  la xs$kYʫ/|(rQE):N>B>LH7HER?<Tf}0aDR`{@ @@ @EEA`#]CՔ=FS1)dƪr=:U(ڬTL"`EM,@]eU+B0 @`ԁ`BUeLe_76bi_qq8&0 ̉p(8h95 ax|(z)]2n F&A1%Ż55#Hø0d ðH];P HrVZ`c):*{@ڴ՘c`kd?'܈eC= @Hv{/U -@[C]Y+020viN); ae) 2 7PfW&''}i\=Ե'8P+T63=ɓZ6 H]n\ #/9X E@3g ?J˂J >A]G]UM `Q(L)% gq)^Phߓn_0$./( `4x-Rl#@@b9 .n\ E)ŔP0u5%XPp09舢`ܤ4n cIyl ( ~>cȋsdP# 0# pXy&G D8|1fȄYYcYdHОYS' vrz "~0ڃlj }3ӜrlQ +Bpd|+@ 6PC5e4~  A4y7?RCX?ٞ dRb֪:5+߇<8'A*ٟ C\R -+p[dS6D]ҶhG6c#R*T1*JT1<9MϪ!RՁpY)B25\k“K/w "N`L&#xw.U#ڊr͈8&U2Q]/A qH 1Wj@ aq:JM}vc Ӽ}+ ssI;[u2Ba&E&HFO)= O2#L18HIOx2ĘLC!2$L%S>qc1e; $0m\gmtaOf书MY]\ŋc^(^vu*U /)PPRbވf 4nq#o^4gqsćшi츱`Ə'no^5-}㹎gϕ*)mtiŷO @NjS8PE8P0xgG%@A|M\}]`|z0EEP`w@yypAX!&fGL @Ay0lGAY"G(.&٢hP!S AĘL0&`B kB9BY aB B%* PLO!=)"c- ń XJ\.-IV+& [}TS]qi,h}`UQBF08񒷊|{@#]SrGF6?H!$$'G*V1$ ,ey '2 / J|2,';y̎raBPA/횀 " @nCZ֠l^;`a gbSzl`tR-/m{ &Yh$aɍpso=>g*\#N9;M@ =Hq6,"}R>t$zz\imCJ,$U ;{i`/k' -B^] lOS ҋXD IQ ]M<5/;8qn :Ѕj! d,N\(@E6MU05D U2F\AX\*sZВpKK8ۥp2 L,0%xM9`Ushj :yB'X% <"$'i+h#'CDVXFz!`L@M]( fy)6[M,:S8`do.$,AF|fedY27ے̘MgF3#V5tmBݜ>ToCm*Z=CuQۈ6؇Lgr\c)T1e]q=Ku R4" eǞ|n@:iO_@6YP|UΌt[Y^4U_AU(IT[$I @Uˠ䜻 IEJiPPMLhi L4P)\ʤQvTJ ɩ,J@(Vve! @!|pE L Jy%Iv0 "ddG@I ɕ !Dd8@I]I@#=R%p@ t`@XAd!5H4LAxNS ȌL2 )T\*`VAhy#[\c$ !x9q!ff|u뱍iD^iAЁ%,_m$CPN< FRzu L=XGz(q$KγG|$yl} y~UI 8NdHO{$@^8[p|USRNd۳π[m b5pϷ LATH ɷ1HThIxRwȊ ʰ|IjAg@hI! ] xʙ0uI}P  AAؕJRPL"df 朙PQ  I @ i=W 08Ad @U%AH&({nG( RP  3.=PXAX*(p(PE*x4qT`*Y Q;f==91gT(ՁTXTDF\EFDJ$GEZ؆-tGtZy"RqqP$IJϳȕNq嬔HNS%]V*-πXȌ$aO[$Q`!^m[eTEU蚤fGt[ϖRK U Prb aj\ jYʥ Q@l ʙjy D`"l[a~ V b X 0szQe@"HQrf 0ѭL "@_JB E&HAHDLKbA@E@IILXJH cMlH'EQL(Ol1!/! BEl&0 (dQXT6)@ Tղ#NF?͒yQ͙AMYhYix>mC͑pFL=)r,NPiH҈TT@Gsǥ@{$V @ {|)fdL5nܟP[INtO jZ]ćT6[V[ُ*T &DI|@P(rd] 䉜 \З I`4ʗLJdUn!Q Ɋ$ \-0, V}旤dIدeG`)@J!} 1ȍI X): tE,,,A'eܭʚRH@/C4% >c5uL(d5.dA\ YZ(8[r #vޓ 셙#āxAl2n,)(1FrI}Lzt0|~dxGz@}GztZzNTU풛5gUn|U[>(@fT]Y\@>HO_leɖ RPif|1o @ jdP EJiI`oI–Q؝0 !QJ lΫjJoBfHa =+сo w%а @{q W_\\B0DؗC x'=H@X)K|..MDIxXH'$PR 0L0,REZ\AZP.(M1VX]A!(ٜM>$xƚeܖFƒAmd>A+-Gm,NL)TAd$l9K̈SȭE[qHWYude)\γDHєwgim\96kj%,ZxSg[`)IN9]F`=ϵ ut/ ` >tqPH5PY PSِủ`JL  u)pImI4u EC 0@rIR1@H(ĹdDWٰv2A ܑ1,R8x%^Al(=ā.RXJ|-v0Dd1HtBSx,#SX(T0h5ZAYA5P'xUdZc҄V#=9cXeL^u- `A%ȁʁpll6B$*|Zmp%d-s|$dUqHOIUisqUWP$Qe| tZ5$o}d`=+3I:Sϋd%p…\  ^0Bզ^)6iTINL92e,tP;<,aē)Xxƍ |Z!D#>PڄLxΑLX0.@X`Τq#!:q&@a1IOx/QdpORmK(BFMLH/pn' &!= & ka8wk3&Pa8cN0F|t` qH!|QG~x$l(,"0yK0$08<Ƙ :$:袋60+ӌB Œ.06.@8D-T +"]P 09 /#SNO1dY[iuW4rXYѰuX1@dEÍ7uhj߰Y;v[9:#h Bd[Cew! Hh g-8(j'p` zRX"@’b(* c 8-6|*)l)R,8:H.. *<**(l *2ڳ&K(31ࢌ Ӡx{xC+a{mːrPA%kP%#܊CB󛸺@qu8(p`r&FcA!A&X` XPa7 p| +`D=mKDl-¦hm[0ydx(~J`'|I0Hl@'l@s1 fėx05)h Hc9xh0 eh5|PlPT(DEQ^7TA ԤP/ 4.v0 S`JWbUD#j C5EdA z.JkZ%pa\õ? $\؃"D@!pD%0)9c-!>XB-I9ARK. &MR\H&0X< (%1O(--&YLx.O(T`Yg&t@2ыZiĬ1`sD4n&f2x,3@3QiL&dÛps-'zS7(oCNEj 'D xV: Arp%Tg(HrgH<,0L0E,x@Ą'm&Pnn7 z01QxL`ˁ۸S`8Og HSa `>?Xx`0mWnԌU`@A! lH s`TP\A &)2T`lT0ܰ m (>W(++*W}"pw50 X|!V%umAߥV $iA3{CE A>BP_0"ْl&2!JvBp`+#861@@Zs c$\Bb l'U1p^ SKTfҔP&/ \pΦSi+fah5\ d9&P h 36]oPn+Oq# AyP@ qf:AQy<7%@?0t&@$$8 @GxZi?LO< z*DP]&`CO!Ni}xk >I#P49#t@BW+ m ~ '-Qa엉Od" ad|ZCgYGU ԣRՅSBB @ Sx W8թjk[/\Հ rZa ],7@D$y F B r$}bdGRIR rHv}d|2AB (zM҄ LzPk RLl+րm @P  PO QvQP%P`R0BAT A= JWj% b䒅 TXH ?Z(e躅 Ȩ[ h˿Ў#8`d,(tf%(f.`d&$(3 dZ`bi i2(>f%DVb`):%CQ/Lk)v 1l3N)P)`*:l,G64i bCEx'֤j?l ކ{ 9Fmcvv#Cٖ8̡"=|j8gB9H0L`X8 Ͼc8l;~8&w0zL7iCzD0Z0gyħ #'A$$GRGDtDD t~$$~ l p Mb~zఀ0$t0dC"$ߴ6: + Q FO% R3vA\ 8! 7@ khHW`YXWqYY+( %  : ASE!`&"]*b#T*a_D)<@_@. &( '"?q)E"@iTb3 B3 idpQ)L&0fiT*"k63h)bP).Ifj1:,p3^I1Ihil*x46I-"@8g*C ?Cr09s#:pҀ<7f/ T@tc ;r9-}Dr9t4-ƧnBEtCJ&@76 pCDz $T`@dFG'JI $2HM/GG.0谈0Mb$17G¤8aLS6O (S$ ȐOr! X ?@_dH6H dnVƀSEYvn3ZEH+ͫ`;:!6b!s<B#!D=iE%bc0N,8+z}Ђtg)zBV"iL",/Bֱ8@ǬJbDBD,k0IfD5kF4 ^I1C@x/^~ 附F0,4"z B 4ms6I9,LrP >ֆ90=8 n48V>C;gt = >|$$w9! "vj7 =&Ik)yZ`pDt T"y E*}t:r~ӊFL,GBvĮx'~G$/c0yGN@T@mYP P@ἐO vU`3=TvYq CT@T6gNVVPXWnΈY@8HYKZZS$[b:): :b*֏"pq!b%,*6aVF%vr"if2$Ic83.Cfc$ v,^dAS(v)bnj jl0ї3,,4G4Toc #Vo.4 DF|DBppt#М?z4p>JRrx/7O*(T:<6ǧ.ס>s@7djz ҆Me2CΆADrC)x\m͘yH {N8Jo{U.fGDG 맦Uc(L@~p0 (LK e1dN$( :! `X !O% 2`'$5T! hȅTRTnk 785ۀ@UX^Y7[xV.~N[!! `abv#N!Ldb `jijeE&'bQs+Ң$̎B)mY(&p"(-6L)4i)4("&>7ɏ;¢+p/6A"jfh5dd2 bH/C2^ 1^j"HpC#[v㪀C4riGvMs9rͧr͈n7J'"r`ϊc$$HHM,7'd::$dܸHLWS(N!N ʠnKZ I "O> % p  Fa"TBGRjz<S] 1W8 Q(v`Ha?bȅsaE$^n!v+l'($ +' f1baHbe,8p⡂ 4:P(a, ` .0$HAV Hႅ z0wLY`#=X0#t8C N'$8SL=@r$#,iN50a@ LLh|`߷'J@bʓLIE*(sqxdbB|/?2M( @%A[aI)Mx61n&ZX>x`"׳oEb1c9vVO=c&e*Ñ# 81O~Dăa= =dCC&C&=@")b&z4'mFktmtfclBEVXe`p2J ^D2 '`J^bf`ѣcbnX!Fvމghq|gho:*qLjvbjzxǩv*ApJ+jȭ<ڈ"l{@P |NHBT@E @,TEE{E@40d@JHyЁI[LGUP7ŔTJ4AlEԁdQFyE OP@V0p%ODA@Y! !![l^̹ey1 v}ƄgL Y 0A_U h%|8_,cPe8@qkk[1 ǍbU/q*XC]^uw(`]yV@WyO{,G 2BpPG2i.%v`8obCD#DQ16a 3lBe>hF6ɤRұW^x2\-i !UMhR$2Nyԧ?P` u A kPԢFMj*BQɡ1C\>"p+ bc V0Z:+Z/@ZG.0"tr/paȁ" %WV`VxSXQRRyePXH%$IMRt%%,@$*"PѠyftRH5L $ؔ1Ҍ[nc;EjRCon5ִn l`#,MqL g [b0@rт(k\0` 835#B C?0LL Em݊GG32k઀r tVq! - aj"M`- (dCdbL#=BĕRD%M`iA*e |', Q5WҒISƕ k&MXnVfl^ T9O('[3SP͐U311&(*TR6` Ԍ`io:D`uǡC0@T9RD Зf8uьT#)Qg4̈́1~ʽJil(zsBD$C|3F3q.4+WԅAmRw5BKvX] Tu lkb6`t) BT[Cuu*>zHX{h- QHįA܊)ū[b#o"(tE+CYzH DТr9B캋Zk]3,*zx]1HB% L®"+[y'ty3L "t`'ΐz儗jqjF ,-xV,M^ؒNJ%g0.GH@t4U N3[ lC]ƛN_c0f#ǰ r:g\nc|dF:`ۙu& ps#@ $-M3Gt9Qi hPt9 909 J` 2)  8{#:RUDej1&"?1'SC<==*= "2UƐ k WC$H?/Um@WW0$Q2%spV`?]@@ #߆ p Z$h#VAW{nnp'#X!'nUoRYb`}Y.pZ6CU+gZGD‡Dr"G,#P ,r*SPVGF,0.Rsdt-Fbs0H. _`Hӕbr10]0J%t=1T_:1$Ec2qL007caIPxpV_wSf(LL1!0XI(%a3b~{Y5,Oe5tMyqc?4W_csPOz3+p;#0|UkQ0Rcp9(-`ggLrg֡@Q|g` ShR f:&<:wS!!“ j@1S65Ձ<=:Tf3>'kDV%Cb%B#>#]m@tpdSB%WW0m @g#A[ @WSWXxy(6)j@E"dhq@,Z CpZC@ti*Cxh+ DBD"' Dr+,-01‰-2H^4F"]^EG\B-FCgG1t+!2QG 2 0cPuJ`QE7ad3QG1wd_X`SLf03áyK>8aK6K6cI G` ]pw!+B3-4]zbȁ{{Z{af|q|y3R*5{bOe| c8; g NOuRA0QAf7ٷ-{VƠJPph+U5gnifB#R^>_#f$$fP;t=bC% n@$V@l@^@P \ hR$\%v"oyf(J''WyҘ酏U(uP+T)bCupe k-C *^E+rbqB [E1y+M] Ass?G-E/1s5R27C.G4.+Eς-RG:GG(qh;@YE ֍a72"jbRLf/ IE,%s3EAjIr?@awPR:l06 xNoq7Y{e zmxzQOp[#XKp| !A7#Cde :Uӽ;}-p9138h-0g.o!S3pɐrA %O%l`$]B m&2|f9< $A#W׭XשY-'X)((rp)q0BZy-C=’+ خ+ۻD¢y,/,\$aE-\A-ٵ/R1y-S\-+G50JtPt2a|wTa%awaE%ӴAђ>Ga/)fa_PQx7C4FzM3y181chv%Pc36xcBYvt^7/eėW8NqS7Pk7$S*LQ1-Pᒈӓ)QOU8S5'6 ;";;,%<"" bjN!1еZ:spjNUTM=Pu ap.8lUBrL%"$ @f,k k]%ª.mZyҚ?W(vuYx(XNoqp)W<.)I")aR<)r}=lO־R!˵ \|x@}$ 0a (*< H ; V 8$(ppQX |5SBNd,:+ѫ<) $`…|=@Mr)(H{CTR )w[a˗=Oa6߮>S ܃g,C&r`<& A0q?" \&(Ѽ ޿ф'cs݌F'OP%Jq &, ΞԃODAiCSB# ,cC0( Zԣ*38jUkvxU f@3hp6T]ê()/R^@6 ,] r%gYK hPUkq[.t!`#U.| 3:H!P /QT@r$XVf+y'K AOX[C0 ]kF= k@]Xa5TQSrwHXR""@RWhĮG_!qd㳢hA n-?jZvxC%% ]}`$"HBAuW qE(C:@dH)&2RdDaD2ʇR$ DZ`+ JN|LR8K8- ?Qbbi4Ig/RI$K:)Q[I m/)Q 4lA=CtoX0i!xr=ݴ vo~<ةO ^'`i{3 ng:-pp#4PVJ!7@!8L`̄0Ȃ, ?+#2Q!9U*90EX#P M#\Yꕡ)ҕfIg!3;*j9WXEoA˃o<FEbud|ChJGXM ۇk|9S*QrkF0 [<Ùj IGH~ ɉĨ Hc(`d*2i)Ǘ08_ xJ (¨ b ( I ʈ:# Z AeʍȨ61(J`P@RpJ؜)(")) 2\(J[TVUe+iAӿ XB616B+ * 4&P, x9M2i,!7ڼLړ69I!,c7D?Ʉ;׺;C>B6PS.PM++ #BJOl2F4\aE8jE8#5Ϝk:dЧsppaCFHFh;9 GhGxi$݃}SQMQ{(a# 83G" 6hӓA Rh&9؋d`1֛ 0{( iг 2>1P ɨ8C:[?*˘ E Am{mE9LIx`QcVОֱ@Q=)B&xZp!ُ⸏ y6 ho  )`PY(2adA )!,6-ʷʒ Cf'{3N9q> ;a8>a27:9ʂ.ȂE-Db6"s$N!:X; B.)X%]]!ٟe)"fb:1918ZtyZ;@Ifr: eG7:@-RHۃqiLE8UZ U܋tH\t,/- 9\2ݫ"p 'dGíp1XyAܫbJ>SH -c XSr ا" {=S' Tp Xj͋č<ː2CbT;?(qIq+ߠٞ6 8XYKr44ZK`,dxc`xus6b :Va &' (F˞QaM͔Z-B(: x'H-AԒx۬M̊z[N2ф:N> L1AzNF+,I1R!F$N%9`AYh.2P"&2@O:Y>n52dk:7zFvdP^n;؃=dC }XYH`0g|  &83(^=˨. P{ 9( "qCk^A?V<)*؏!@"@ura8a))zYX11YK\p  *l41z"d@ D1 ʮ (r*"J%II7gySl/,:7{CX̊Ȭ3XH&cdJhL̈AӦM]c]\LW0Z23VƔ!s$S^f!ysК5Wv#NB*3bDjT4oЀuf5d%kN%;t̩Λv0CGG*#Y N"BڷdY'Kdʥ8:g $,DH0< ` @08) &Pp \`B (xHC&0=@@Hf7M;#pAt@Tw xNQ@!at0uLxpGxS]Gt0Glz@1vw.ZB !tANLD 1$9`BMFi`%'N1(0P ,d 9L* 0 W WN90bY@OW%P@Au60 &9E&ܷdJBfp$(N0,D")@ -2O31 (h -? 8OC ƀCڐ?$4DB8 1D  0DCh!RY\ VqImdEmXl\dE,b,`LF"WEQ,M6FQ=,MSAGE4@VgUMKnPGfUVrFq׆Ag%!k3H,)5Vv@- ń؉O|bA47jTp%J*hJ8 Wj$3" L9ΛP3i &'O@ H` O%`%` H`2n)+OPeIt!Z8HeΕ_?`` e$ p _F&6$$XHp!%)Ƥ/ 3rbRС G) t[swgU4L b E-vhY <.y6;m#H6G/h" R|pEGhDHzI@$wȁ&5i wp@#lS:q}`p0T w8ЮڞH=a=]vMP @St`hʻ@c+Wy?S@dģ 8E$- 0:Ҏs@zQz k/D & `K8g+W`8'VMJ`@a Ȃa(h( ­ ,&F@V% 1 jeHWU-(T-VNBQ:S]7Odp: L#qCo$lV(UlY %f"%%UWf)$󗿠Yf" )̏y$BI.b K3[tDg03͙`Ӝ@ )ڀMBd&G Ԡ7y*LkZҜϦP-TJ@rȃ`%x Ɩ9bo()>b B3kihrR Hҫ]hĊjq @tC/ ব @F2HzρV @@0Eh pt=B0vfmLS0= i:3c QBPT")CEfB%Q7>0V-@A )Tw` 0է)\ (bT&qd LO L%nL0>j*X)<ᰄSA΄3AO*wUX~ .Zv1G%׏UAt;..Q,=*,0[ UlHeկԄ<q(TTULtqGGنxgOw5wL Q|HpDH|sBP[|P a!L\,یdx8  @DXY- wi} ݜލPApIlV9lMA!J1 LA@ Xn˓dv$ʩ@&@Wxc>TTjĆpFjtPCqdtNm\M=S?$Zd@$$#,^,T(8^ȍ-`$ $B)a@",gHF.>TSIRuGQ}N\NkZ~ RFM9kVm|vV(u L|LA_ftEvgƛp@x zNZŏx|ǐwaaNJ[MAmIgYw8w|0iavoHqT}k]\ } W@'1Q@  ѩIckʆWܩ nuWXq E0UP (H1Jf n1ҭ8 ޳@A2&.$vi( ع@dp蹀)gB <X ȣq REEɰ4r, N:nDG8S89nQ\VqjNiYAJBE1!ʁx&"lN>B%i9"0Td 4h B).>D*h Δ{P`Z.N{| RӕptD Hݑ&@TGahsha :hHQV 7ȼJ`,f'^ ̝Iחw!Itv&+b,tqt%@L1ւ)L r -"D4D*$KP&8R H9hxH"4w|BƎ洡3ӓ=D6%GѦ=D$SWcCfBd׮O…6_tVr˘1m3&+fI+WD̘8<^4bX-tiҡE.uknܜsoM7u꼉c8JSQ8r)RQG UzDJDTRÇ}wѢu'@ $$%H ` 8 & *`)  8Pр ,) ` <#=, 'H`He,Z\#9)F!;H"c9, fDȄG #Lh `#;hԂG@ p& 8`M/BHT&8 QMLHb&J h)VZQ`WT0Vp5ƤLhҊ*(Bz"Qs v  2PA)&0!*ja &(S" u"{/jV~p`WZGxFzhziRirI')DHf *ʪ'z3 czAL!j 0".hj؋ P X԰436"8 11p{3+@C+ژ \3-4U57T 4 7`S 5| 8?F6w9FEmGaByDt+JbadRO}D ^y .8 `=$B  %EtB<>%(B@FnD E)5@K-tR:PS0R֤&0~[MV nl,qzSi8CEaa#!J;xD#` Ă,@oxÃ(z v(΃*Т\AÐe@OeНԢ]U*@xj0{\=H"$IpIEdd& C1Z#< %ӡ% E_ F"ߠD #@;aDz--&/}u X ` P@݄^dAV[7{ U DZ&&$iH,Y}MA"$c=`e q*@ Dd`*TB2fRTHT@ A)I80 4ˑd)P`^Ve(4 l !;5q@Lmh` кJWt N0 XS./dPTFg+؁ sd|. u(D&8A hMnV47oCH]9x`#sRF\:t8)禕@D,St:PAXnF)T(ϻܧ"酵z:z @)a]=&@| Eҡ.PZeL>*moH``D -bA!M+< D'y`.2QE4m Bԥ:[^$J %{+UȂ'$ 2#u_PI2,:h{_(8^Vp!|P& `ˤ= &Ptˋ`p/7` ք-2K` 5I lB2_ e$/_Kp`9e'\щ12 FX3"jr|[66l/21g枙=#5}~#}9nkM% 54jFt7G8t9ǁbRJTD=T|iz ,oQp` ,̙h^g, z+B   F.@mL̺`kL/ک k 61C/ im75  0*q24v"G8Cs.tJh!tai:jz*J-aw#@CNBЩ($@$y@$jPA1MKPjBȰ8 F&{6H' ~dFL"(M2}.BgGd'Q0A84{dn S:5NdERCLPf(R,:HdLdP!xh>^(P!k@Nk Y‹ XN`Jp@B_!V,ӎe#."(Be"v"O %]1!DN"0BK Rb! Vb.veJbƄ"8ϖhlBI$l`!B$@+fb>!i>F.).LW )lf @)3Z#0֌N@"24RNV,j)oz`8$ (ba;acS#K!<*aC6avaCSgGg'׈gj-s.A@c:W$x z'J*3BHx4dBA"B.( .΃D:@K$5G&d{Lk~TdErD45}'G9O~ _D8`4QPOB@pdP,LR:` Bhe>S,R"!"tP8h2T<QTYZ`%!t] KL"U$®!bFT^@Y`ge#,.#0.T,`k V 'B2Gyp)J/HfIgPf|xR/- `",Bi l˺ k؉ b &ߠm `t{mda' `247P'6h6MQ}c *y*H!tX؃L=!~eA._5xʩEDc@@P4xDD2UK0_A@>DGxyH.J8Xn L}JHڀ`PFO$X_CKV^SNG*Sۦ@Td * J(Ű8JQhHB }ˇ(R,"r@> Q􋍺zlV^>TX^%_r\$I>Q \n@" @Eq `r`^nTT"6!X #d cJ,$:& R cJr i(rl",*B-bJc t ,$&4r it >j̴ "kC:#2F̔ R3 4/3`nnЀO#C MNMcPxRp6)o8bh,ASpS5BU|:,p#}_u"0}icVg/j/q>@@gJE2N4 sH$_GY$' 瀉OHGr"wXBxE2GK^PL^sH$=QfQv[@4I8i!@ 8b #VkbGo%8crBb"p*>)!fb~)xFhbhA,Y,",X!#s͉.iAnv1dn&3 ufx5mâ$z"87 z|WYJ:0IX5_7>^Ua~J> "[zmuG(B~2$B@AZKEحE. pJLH,Ānp*`@ZPEӮBHd[車}dD_$I0n< J6Rg9eS:J>Y߄; -ŐbhZfVYdȊfeWSP[8[%"L>bvb e"t.nYq F@!b_BPe[r@K2g/b!;Z"|E܅U`jh>Eٛ't'*lB+Y)8マ ,b+4 |, ""L o"M&3R dmb4l2JA#6pү'*e5fz 7*8`z7@SR:cSg!7ua~ʦ'>cVzxB>>X@(~I J~2$nzߵpx҇: F,KK8 K5(`*L  ; W ;8O=H Sh("$S)VH .;4`8,!!P<-LXjFJX庨 P(1)S(0 &h1`@-P8F& S"! ,JȄ<10&@hQ0ˆZDʤaHc'h0 9r(jua֋ s<"G Ȑ\ 8fn t7'OAĆῙ07Sy! F!1L<Ld"+^ڴ»nft!C| q3kȌQce͚8VHCʛ+ѱKn2󼱂FLw1w?o%=׻oᄒ}gqoGaoA(BʄNɄ8a,2˅r!-h8"yh>ϋ/4¸K/J0> @D)A0@<$\Y H0ypcV`TT@ 0@q9TDAA"' @x@\pARPD4L0 @X`*XR:@XkGPGtl"0AzN~PG\5 y[VZOVAd L UGLG.z(ڂ `FK%ZPSL *{Vi1%P8P +4#0 ]CP LpW-Ԭ@U=3aOXM9dt7)#`5)p^wx)eO 6X_81Y[0D D|Z`DC'p`xoƆ GFrdtqEobTB:kHvߩHF'{nt׻yg ~q(}D"TᄎT)a! 8r}T"%/JH x8O&$ ZT+U[N*Ҩ$)*6Q.`&UH(PP@BQңA0I8@"&*0xULeLNZU+ ̺B(ˋ@E-klĚ \*VB&쏦JИy \1JP/<'R0D`(/)UmaP 0#`cA4I&ĕ aDy0&D@2+ikHzbhy @ ŖV@ݬ ℾĥ0me0a&jLd"#CxBz`1=Л у6p 6/ fGR޴ NtAv`8!:;GxOO!/?ppCS H "DO,f=q(J.D}lB{#he>LF5" aQ9>ըPC:R t)HhAjH8`' )P"d i@a4 \Lʹp` E@ȧ#J`SŁ &FYɩ"M`U!E,q"u#q–׈-Wu pby;0)rѲ@zd#Gc'7MbP8W)4 U$DG`efd(7( R2M"-b! Fڲ$%ɥH"H)$W2"}(UAfLcg!4h0hڣYQ6A7Y刣h;)ڠ:G:chZx3TMԞ·wҐ:n8toCM D6a Z"PzMBt[ʢmB } F,( ~ԁ&RQJiD).]ĂAT&W-lȁ 遠RXUB&VJX(& H.,Bo4)>ʸki LAXMֳ]<Wflt)SW=zd̒LHKGx DEUBe L|P k2s S@r0#@ Fhq%")< ԖKdUnd&ά ZɼʑRDi*XJ^%Ha5,e&YƁ+iN-d9 lQa`⠡}[&s&>QOX&h pcA W0 :4b رvpi:qj SV@T @E<;cTn<<;E p0qU|y0UR5UdE""mmʶ 2H!!## oE>"S#v?:#`Z/B$o#%D$*o:aQ2wɅ'VhoTBb)E3'*+t@AqZW&\2%"'u[BSCS'Dt)@ť(M'Xr*ƅ*D4B^'5-EztR^Su"^#%-W^G_u.|c!b|$H,G vq~t0*!!`OPI&0ct.8M010Qdc0S4 .0Д34uM31N8@/gx11Lpebg5m|!pa#$ewOO2fק7Dgrv1*<58[Q_9 W':fP }R2%p W >j h^yjs<S}`P hE>{P!+8VC!@t 3*>׳ !p?nF#C#>n6'y&X\vZ`8YObY^+V,6"$|d-%,WDBrR重rZ%ob%,)BCr(-G*(-Dpp~R-E2t,>,p+u+U*_TĞ:)%+R-i^GE3`GpdQ0X1.hH.( h0 12 1~ 33G 0336)1wV!|q@Kɨ73zu0G53 4 70"JD5%F1O 5e Ë #`|7cC!I6!fD@PpP`3D*7#QQA9~CR* @V :btȀjAqVˣwp qf=slyY]E!{@ b>Uc"ee>fW+?4#n8W3#Kn#'t%:%PR%W%_$P''|t&UoP**$$t5$**)'F$t*'pWt(Eq***)xCwDX'Q4F+\++tF-,G_Rş22-s_pRG'XzI j1SK6GD&7WQa3yD37d3/$J7uO3~E+F+  ¨ l[5$\BZV {%0jF'Jn_RH*O'։u(MsREC-PP2Z̅_bA!a ,rƴ_rFfGJ_l^u;F3GIvTd9I&GDaHaVq0I˨K*.D0Xce_101S 501w&0I 3 FcLSyE#҈w\dy hw #b I8{5W)ZN1a5a 4OeqCj7s 6P:7,ٻC#4h{hQ;RAv kW:2e:!h* X{j[fTqps )=!Ыt >" d% t ( P=xP %B>r"xW{"ИT/2o;K"a&",ˆ$'W(pRH%6(j"$r(Y ''c",p$@3tBVB+]yb^,G,+&(fGCTt5B+rE2Bh uђ,L'+hFZ u=+֢*9]!F{vdDӏK6 dFahZ˥y4 a0\ KIF#ޔ'S J%*`0c,G 19`4MyΘ2.v0͍5S6NP07138 ~aZȧ|g _ f!e7ѷ 67ѧC83~}껂u{k]0]p:#W v@!bp; & <(]<o !xq =pUۓ+F!@ l y)"L {>"nmt8 /Z/4"K0oP ¼5:n0A@ZP@F|"5Z[hCW{ʼn-/a'gBCTo׷D},|ʢB*GBpnuf4- ^5upd^MgFE-7+FMr"t -q-S.\JV0- .zC/9yA1D/ !1R)V`|,Mus}Fs;a5TAdGJM.104NW[| S5ey@beo&46?P4NzzC}a^@ [ hh&^`FN+j`Jr@  ءdi;'-þgT;on3t^"6zm2mB6! @"m#;H#q#NG$:"z@"h%j$_vr$:*\͢CpCE%ʂ\u(`X( 8  $0Ô,P@ z(p:XP -c¼0%P &bf#G$HʠQZp !` E&ZpUEhYm!& X0iQ &;)ąXmS>D*$O.X(D S FZum~sF2bp׮erx2vybYE *T`{p '9pd41ϟ0 .8" 0,cE0b.XF3 2̸Š+ !ɸ"94 +y_ֈ !x2 ..04L1 13@3ܰ <;6CEH)tRHYBH٤YLQS%RbԑX8-TGCSG2e?g}UX%VZaX+`(huX@.08`HH@Z68ؑ$`\ .P(@v߭]*^{՝X@<@ 0` h' X\!: ,8 '(8b)( 8邱v ,P VN椂B@(D$+6A, 2ZXz-2!93 K/J֚ 4V; :Mkr``R9J@cYF 2:n-y7fL꘨{ lONoFP/Po#=0 $†L 0Lz=y.d!D #OLBTh eF6p4F2Ԉc+ ]ZqIId@԰5 ^:ӘtA ILeRS<'; ur;T&@ZRR$QMTN=8rD%:=dJ{(?C)AX W[Z+ `?>&pj]`ʖH]@N|Q@W" 4Wpy]zJt5.D"耮5-P$`IP(CrxS8dW'Y1x$ʠKT:'QNdJ, $NvF|$@YbFHm8S *pi&0q!dj82L]4ׂ`m!'FA 2/&(n!M7NM" 30qAZ$c}Nq'_  s>1صt:#wVwZO}Fp"?AL< bU1׃ P0paCBV.h B #ݵ vQ_sdo 5 dX1 k!H9Tₛl1yPoӜt'<šCb=T3$$ R0SNTJTA$Z VV>LA}@Vmn*Y}qc`r.$Hh  2wbY[)p/{%df|w֐gr*$,y˓,PEF1Ih,'H:(B;1K┘IS-/@F`bh! S3#e8RV`8[] &&ap._&sA <&8( ZИ8%mF  A*赘iƐ 35Df7- DS`JmGij\2!w#XJgA9JADUAiQ  !Ac1VC\7W .닶Wpdb}ԅ.ɡ!h@+Af3X曂d h|C$:Tɍ(@a)E,BCLQ)&qJ թL%jy #$.qʫVQw5v[J%\f`.I*PLZoC `0]EDּ.=.2,X[B,缜.^=SDBD]W4I"cXA=f˔/S)p2%B "3|9L4M9rӁtv /ZK7vsr|#9[cJ~/;8i)D@}YsY$ n/= i!;d)d$0{9j=8;銃# pnjH{É3C^l1TZHPbyE<(28hXf0&~Z`'xК`3 `)8A ( jP%ȾؘH ('p߀ .jXX? x(8Щ'8h3ԑB|)J''P@5_@@chAfѐNHN b,5M2x+6&j8Ʋ;x*6ٷ{7+/aBBjL2T8CCظ;RxKI<*9RM"$!MЃ}ȃV\A\/XE{BF$1jq#j#di$:UXD0C" d)D!ÉM ["[ Qc\ gZOktбx p h"XB# @12`2i hhpdH{Ȝ(#(ljѾ'? XGωS8 ȋ8;&R|b ɔ'1)Щڍ9j Qa۹@JH[kx"ȁ|`j`bQ0N pBV+lّv# .\  R5;0 4 :~÷,ܬв:Bь8x>9C0NQXEDMDAN-#RCBM!"N&"GVaRSB-ZXSؓJ <( Kq0ItI:`$D9k%|0dA:dA)@c\;ZB@(8%Y21G$ @kZ0 Xxజ /9(1oHKёXѡH3?@S:S9xZjdpi萋0ᎢL@Rk*4\G2TB`e+QճAh+LWё ,10r{,Ⱥ1`*_B7D̼B|V V;-;N9R@JY0K!KMZCK(B?}EVYa+G(\1X\مXA$CTVo>P12#SK4zDji/2q #NJTE8irQ"XϚFY(g28^2 ;$8{ 2&c;&nDcg"`ҌpbЀр Ц'tBӁ 10tҚJٽ/2)P/šP, | &ؼ`iD ZF13J{?25+H8ɐT`dgchJY+H]ae |ԧY|t=6.Hy+06+7ʟU2 1` 4J) >`, * B^`y9=F`F"!zYz.Cy.9 W9 N[Mnޢa.2X:Xoi/nɖ16#~Do1ny:fs w1$c#::";Eb8OY$)X Cr%) 0f:‰%9P `Y;
egS軋:)vSZykٙj#ЦP4LKɜaU rHW'6召]3884R?|-4@d8e| 4o605sY8t^0'T!(qM f;Uqcx0`0+%,3(6HVɪbŌ,4&>56irs;?`Y0"Y!2N NYךR  :,!=Hs%`샰#vVS;PXJXj pLܨکw0 1 pByR 0˅>'xR &5)X}؍TH1u0ڭP(q § @} c(3Ҍr'hSۍX`@?=!^ُb  aѪq6 P_UN/50/ȟvB.(!\^m8P6B/q,Lr.4 s7L >MX`2 nB 8|F`NGQS81GLd}z1C< ȉ} @`YT^F`ll|f؅dQFd"Wb\bhhgaV$VPѤKBbTYjgƗ@Y}БG  $@" -"(Br0H,()hG%}yK"h)!zz)撋rPO Zkxpp0J@@z kxā@$R. m\`IELSyp P@xU{E,4COAATK 0HH4]JDCC"dKHIAPu0*u\Q+u@Da5UT , |T(XVXs96E `֙QnV}`&% yDkLÅhe^t[t0El0g]Dd#8VV#TXpLsɭA1p7jAWup w=]| xqÀ_ C&a&a&AF&@pg'`amq"'hl/kHdjA(eiJHzRd*PZz%1*Q FT"#*Fv# 'C%LR QADa)CJ)Hu%zU84*U05 XڕE ƸKJ@A$-jɱv̖ zp ^b%!Y=b\#J80%@JP p,XC)1 $jf#c9EPI!$- 0C2fqJ^$)@yOD@ P9ZTZ9@VrQ%-X҂a `5, zcsi J*bd`0uE`gĒ`.cf+^0c8.cp07ԙw#G;Pw>N{'>׉Ctg@O Aj UB81>0| +D"H +*Ë#O@Un@×4@.ЀM @ J`SX CTEH >B0&HXĐP,=1bО] A@^0p!vvcNhCp+! '+P"|~}C#]!IgR%@+śJM++EHD`({ !<0BCARlXaMlâC!*<ň}jSh.SDc Qt hj;ougQVuƋ@$0^\Vhƪ=^@^U%D/H)OJt ͸ DQKԒ` c[j`%&b̟',ry,]gFJ e'$$ #-oc &΅X&BAsia9Fn`Pb_2EgE·ZR|SBϵSx" |qOV@BE֘HI言BTp\NuV.>삦s=s1ѪHT'i!LhcxRw 2 Q]YXqK|t K]DS\ )yYDIL &uØK lҀ19DYM\Xo88h pj)0$Vqܿ6 u"$&>i #djl @P)J EQQ@ˮ6j| CQe Ü)UxXPGًċEIX!B8 Iрɋ Tݥ]QC$ͤ^KA&LLnPP8NgޙfVdhTܘAu @:Ɩ F:ue,(bx eM{i,'-7!e@Ld̰ I D !$ mPXRnjXHxyiҽpvRN|LD|)R'_Hl#rXD%)#j2DD4D˓Eh@8"ڤ!Ma<ӟS^ Cf\ZM|IiV|_?Afl_B@ Q$W '&͙`-&@r8/1ޚnZPZϞ>S{mBmX2LZ=aV~KZi|{'ǁ c`aRN)<[ܞP!#>~dub@c` #"?"xq0200t >G$,2q,Z 5zQ5P+Đ+t +Π4K] D3Y VrG)iMoC: #aN1 VQsIa{.H'GJ)DE \bw!QBb( (K a  u.6Yβ8p<%,yY!%@HU !0@x^XhT998lWD^rdH"rd(/Md&C)#Xb21-sId$yIH@*܂0A1A `܆e ,Ѝ`k}5%7|Q67qf4 JPƝg i yɗ @ :ڌr𜫱<-ؔ<qxp` `?yScx4>uOu>W; ?CMD e"'D6/kނ2 .`ˆТ.EYэׅ G<"02a cXVaJlJ`XW.JtR^9Lg$& ֩{bq)6 E G(<z( =!@%*B.T; 8-Z%UiʉxժDQ l[f@g+2"T -p\@H{kXro'= \Fg&%&_PWD"d W,"̟1`3JNկW,O9YZKcZA0S ~1-&3r&kuً\L_r1 NӰuZO+ph<AgCL!?N' S@=TD&Z `_W IGWX2o+0yɮ` ^lMTS%dJO{Cb';EPl%LH& Xܢ}aCa M*lQ M*U2Jh~ZH@Ϙ+/!bAE ].B.`0D[OJҁL {Ex@[ 3$`(VWr.[eYW425,X -)N7d"}9e` w'T0/J "<έLL=h9yKIXjw揵)./?K^8r7Hnge@Qfmh{>SOhNg0OYpaG=wL& w Msj6F ZlBgIH(B1p!d=@u" e0( XM zJE ֶ* Hv$H}M @JDJڢB*KDMMޠ(O*!fS@hP.fp̈́*% m d`Q! FENPEh!i-8b`5 . hl-Tn›1FnZqf2Z#:,RnR@o^c86432:r F C#3FA8roJ`97TF  Q;ccCCc#@Ј# =o@8=fBxvp#AD>`j@@ HubHA>NAP-  42dPWz8{v{ (Hxd Gz S Ҡ U HMK򯰭]`bNbP8%POȭ~ fJHVp RZ!JZՈ0@S(@T2T4Źbb /bWfEb]>YX5@e?5Z#8vYfs E~iI#"B\ dB g} ,fB'L"0|+g* cAM)-b`a4b"D`+B@%ʜ,O1J/-*--T4#DԜS9`C4j\S@:Colrlpo'$r&AN xetJP zRxeEQ5 E{tMR H@$*  : RK芀7}U+TM*!d !0N%mXa(GEHES*TDAhUB\E7f"ꈏˆ$WXWtYWp \kZऎ!H`܅`_lœ>YkbzhV(1X%J$ XF$Bn( l#Jk(c0#E(c*AS{,l`:@4*&B:o- nb#Hk޳W0 / nnUy9ʮ[G2nyD <3G˛ 2=6 v-$RVg%KGA@ =N7Ap~gW&mB x2d w|gD8{ `  p|‡) }̠ `zD * z`ƠM}QGTՀD$XcA0PRF`!6RR9hOZ*`2[{ GŷWN8YZ`Wf%^c6 _u86_X[7VXVnnJ32֏%>(,#%+6-]6i+])ÎP1$ b{"iH"s_vviw*nf")ZZ`@)-" b5b/x㙬8#fEpR.0ÜnbYPޡ5҆΃2!C<*tۃ{u/tjE`y< PwJC"H%?tR5~" AD>`D2.Ù{"G @ րM` ` <:- IW d&(ͤQH GSxT:XV Q"EAO/oH2GE4Ꮊ[CO%5ePZ,Xb R >̖JBEr VLn%"k[6c4NLD!kbyc/cDN K;dw-cCF%` F("8h=ĸ;$ao+  9"4h>CS1L0L"C(E- Q…9:|P YH8h\F␸GOT(L"k4~i(P?{PǐJ 1JAdHC#lYcaf s 0s|)X.`2 ,ۀL_Ye6X6C&35hАr 7hX"Mj1[AٴkF=6l׹]vM:pnOvG9v'ϟ<}Q>|gJyAwT}#%뢵q@PO pD0 0B ta (J0@@\rPD $P  8Xt` 8ALP`xpT9LpAL1EPUNYk&JIt@ 8b tPovpOZiBdk`Aj(y tpPvGZ-LЂ &[@L{ѶD00AL@`A CC.H"H+DR "]P"9aH>988DQJ Q--TVDtTV@VV]V$gY]6Wcu%W]t d':pIYEEaXua]Fbh6b\hoV[nڼZQ UxaG؁z8H%MG~ܡwxxK%gyz],)~zG>88!  PgS$3xH yn{6>8px Tj*N9AL>^}x=FsN٦p䫒tGѩS>$32URMV0L*Y ӌN&WJj+(M1<Ԅ $S Bj:VA"@X2AU'A.u_Dܥ.8DrM|_# JD%OXK2D&8QvUl)EJ ǒD<#Of"d"=DZ\f0t%/dX c& % LSERNjqc$ӆ5h-kkLfF4 jƠ'nl۞fnp8TvXrx;LN09>x9ӵn,՝@>7!)>GU z)0)xP%@ED QPJfG"`@$>IG)$@wegvyPCЧL2s)ABͳ@>GB9{*0ЏG'Hf>*?IJ3^j ` S4':=ipjMd'Yaw(=r&R(@>dt*r?R+%cCNB'(*j* S H'UdY,Dv,\-Y,&UEXZ2\Z&FRY0ed$@Ɛ 0pȵ/U 1q15q2/Or>1d?Np/GV=H'C^{Xd 82eo1@ 843;C49CJ```@45ZgKAjfPL16ogWVwrgx"s7o7۴748h77 s wpN OO1PA zz!!1; h@r"v{p%&#*p)eTb;}|JU?g=E23$#&h#i@4jB6@;Y(3>O)fj&PBf~rC)*. *ҁ$*WXU+ULPm-RmQD5,[e,̒Dy).Znvo5*0` #@o G-ǥp!`ҥ0i1FrD!J1zhH-1fȚ#(_'C2p20_D3D3tC3ea<Dau|a`t` >5X5fKQ]#v5haybkLY,67o'[3878 ~#ݤ8Qt ezA P 0z]: :z z5;k&?h6gb;4',r"1"A7Rz#sR'#SQEEiAr = ',i* W-jARi2?C'R(E#E~}NBi @"*N2g,@(p(#2)Btei2`%TX!44j6Xk"v%@4,zbn`n OtZ(P-%a©iEV{.DL@#0 Z;B.+ G8,/[CH O1}$]4rȚ?  sH<bAr@^~hߪ4C@Ps z1a4oAYAZ@u1K!5`]u!e` uvqq&7qgk7D\b%[Mv7T @y(d*0y# %e' 0z J;TbŴb+j#+=F":"20Rʃ=#@O ShG%f?2fo'F>f# 3~#<6r3jpwQ8N|y@yQr0d v@T׍EPj {!!f">\8'm!$;vW)CtBSsrIu~f!"WgJ̈́%X HU+!߇l}eX(?PE$OY0rJ,SZ,OCSP)BnO`Zw oe[.E. S qҫp\3G nTū"]hџ LJrWQkH{(XQbK H|2ȮFwC:`a\_!J Y4O,|Kd`Qj566khGvj6lw'bb%k}3'[Kfw'+hr@ ! t09@ :jk fAڭP? :=5f[2~Vi$Iz;'#!*5#ff*g}=N5>{xBW~uj"tK6˵SK$>Ry֑l $V&' xjR) AU.2Vi*WR(¹t@BX=7KC^'am~Y&[-rkTTq*DԂ.E:ƀQ ]-5K00ZXFp$%05ݙ?ndt=8?nHksch,7< ]囔'JC E7Z0t@Ԧ~AY͙ ʀ`445F]@5j銢v9l`w'B m-MvbH X%K(;)ydPG PSg$Rpf"n;;ck@”dE8L90 0p Sp8` x0 xp!AI/LI@$ d&rJ$N ,x⡃#,ZTA*t@ ]aj)>LcLN "X4pTٴ]ZUC`!o`][L1Ą^MD`¤E9(hb)L ȡY-4hݢlڴUnq# JN; )J8byt+>*Jfr͟7 >29=8Çb q"xd2 D 1"L"!D3B E XlQ hD0bG0Ȃ 02 N0G0I+X5X#5 .0c 4 58s 817D ;ŀ7N?@ < T@5ԍ=}#7pIĖJ6t<GX*aC QDWcUGH?iG!eXdeR!vG'}v)YZv hhV VF"i BzhH $(bz`[Di2Z &N+8H@:7& :H$M2P =+ &(*.@ + 股,&h&0#,k=X k"J)1K+Ŭ>p; B5Z8⃮T `*2 3&&L`m߮ bcLMߎmA; nV@ROC=ۃs"8{?A?#!H1p0Ey>Ez7İ@Ͼ!;SG1|dQ0lQ}d,C)u W25i 05P c.h7< ma Z 0f/ x @ƭ `*h2m%`aA)B5nu$ @F R")CGҖ <%وD*`MZ$ERm@YR‘@%'[˙x25|+IY^ĥ2pF,M SЬ|Rҁ 82]ٚ2)@/]dNɴ/i`~kLnQmh҆v`'0avyoT)vK]sHG hrcQ<m7D43A }CAHD a˄xLG\ E,H B8Q-5Xz]0C-!K04 W¦d&5Ng CEʲ+D!fB1puCi>дEGvtD,*C{pOaa.z,aʢEkˍoܗ- %K|$)@ @ cv`4B$&D K'$DNRne[d Ȓ9CQpB*)MI%E+@I 3rc P1_)X+, \"2{Q’Wq[&3ɰ@p0'e@4\f*I68l҆5A3agőnc^=h@AYǢ(4''8AxzSD;,Ӥf/E J0L F\eQX!}*W!q j@kQ چ.K[ÖPAVPC 7T o(u7qۃbe՝?1 n !%b!j1E!FV>ߤ⨎Ya"!Uk=Yu\>d Y 'OVL$+^,^>9EP9\# рVI2D X!~-of9)YJ*S1в%0VW"Lp0 UͮjtX9j@[DARtmiXLiL,7uPbOwa .s9@r ? NxBm9ߑs,:v2'>RPOnN ~āܡ3*QԏFK45p)0' QC!H5UÐY Nha2"+UP+?!т"MHT?JZ"+J j.+x 1P1q8h q+(7JBZBԫ7Iy!DMKD-D]QBR}X^#+D.bILb kh#8…1l9Qm1J(9Ë/2d mC2<9ȮcM%1%B\yM /m O[" XOfșk/ ! !dZ `t1؊ H'βFf=p T `x&C2QG̙'c2.dpp(QrQPǥ=hBHEޡ Rɩؾ "!  L@Uc?1ۻق?q0I ]+N6`5ȫ,1ƒjZ+9P6 >7"A4JDMmGAIJJС|]LLF)O'"#r< ZE(/L+\UafI}(Cb%C a`ÈUW*/8!D+8VIP։ ؊לDH Epy%̫0 c{q ͋ q c΋AEhN  `iL'x" 2׋3 e0=Q;Qp0ec 4b>UHPCKᑐ [ش>G۞UE=Ҫ U+p5O4fd@ZJ+1R g㒤 m[h43J5!JfaȒ!;;|]탷=P-ݚBcY=cYBآU%^9+Ԣ+[-^yΖC@/9M>wqWy iA@

Q7EJHIŔM]G` 2"#"#:Sq^I#/^ha^h}HLZMCki8Җ/9yh$w%Vs [ b0z41| 4 84 z֕u _B J"%q\n=sŽCX  T #B$q=h\a,ۍlٰp(Ԉ/֧^*ji2@DsQ̏6@YbucQP)p죏F9b?T֟_5bv0 H- T6d+j6r/z585pn80RυJ D:I7G=!:TeڡoJ "G(gdXMh8"bq` DBb1lI5Zf!a.)qI"CVJBQ$i2Ot_n=0q YzXx V$&!Q<C y):Qt/< =8C$Ɋ&A)S;ؚ#i&r<x $ a> @!pa $@`` PX 2fLbɡL@@,ܦ`S)0as6S þPa)hsXn`h~߿iW(R ɏ 1 Sp )zt`AGL0`S Wl w\8oM\9o  x'6\G@A!H#-x &c ,0$O-B  O< L@ 9%]Bbv8ifo©rCoy8Ч22g>𐨢0 088蜌`< :Ct:DIrD l+\d`|bZ +,Yd `D[,'Yl2-&hq-  @]Bd1cqKK.aM.dL |M$FJ,N&}TGvPLPHaTTQ9R#F]AUIJGXV屇[_,W[U>q퓋[6c`~I0YYq wmF^t\S7s \Pv]^'Qa@qj]w)Vd0yE֞>{aX| Zzs֜} AJ@Pp!p6`/nsޜs&`{-BGx c=PAcX 9/ Se*&]B)MNxa JN~Ss@UBUQAENu*Sʔ@HO"U 2թU<jE*VAVCLVeD0kZa TQD0pBZҚV lQ+ ȹڠ3 !% QpX {4`,AǕ INfȊQLa8%*}pd%B?!+`!U2:죑؇"bYEflE[h30 P &1,%@PQ`dk $0 d8rn?@ØԦ5zpPL/sm;c8`M\Ij90C {$ې& GAI]&ͤ.wř& t &7 M?"8ьW9$[bP9)Hd%1tP/) &6 w 990pT'&** 5O*1`oWT*QBDu)R:VH+LP2raWhL X*⭐(+(B+ Ԣ 0 ^06|amBr.v]ʕJ 8 vИ:!^*9l>nWaq7 JQr1HrcŬ EZ/"Y|)hKX2-rmH8?B L(p Q"`&#z ՠ945.`@;5yC2OJ3CDZi8)^ܟ0 G-u4`iz=Q &9{HQ$-=GTƀ@Tq>)1'(&bטj&' r`\  T}TxPE V2lr,GB2!-0p6ާ*mY mՖ[8q@H Dp.* .2"]!`9cc q;Q gHk=Q5ykn8bs/R`TS#<("_I#A8MA̪" ,9pĴ3m>` L.pLprr@n{B)Cv+Ņ+EE[҄d- Fہ L,FB׀GcAQX=Ok 6~c>t>Af^T(xl3MӖ/yio eH@2b0d{dF6:aMَٰT^NOY8GluڎHR@LďIU ZOI @ `PPQ"]>۟UW>URR%^aY`c!Ja Z A\ZJ Ȋֻd`ɖ*lV`QB|'Ytс !QDjKKITA,đhD%l~mØnR\A,o^TQH#}"# ]˴ ~U#)jgvbþHLlpt[pYS}M6Ed9N~@G4mLX;M(Nq(8F؎9Ɔ,Ƅ2Nf>a wEvS n^ଓnHLIh#pTs$EmBN#G a$FJmAiNKIZ Xp@r_|iRm ɗϖɛ_ɗ)< jI"U.P>\Hj@ZUeE m dealde$ A lfpjlM ^ (Z`rouA*B0&@&f :MDhZAt\,AKxݡm\x5Dy+k%BS0)uf p:U$b%TU@'(#hR p***\$F[D\Hld2ړF0b\@pf\b_H1L,cOܨMsǃώ-ζPޜ\^2#;n^HqG~$lu`,f{\TDǤ%ϏNLĞDT}$^@^LA@Cl G6ߠQTDɑ`))$ P$Z Z^Pb` y ca 91, -o;> ʰd=3nlqQ(VN!yd.*u \\AA0Aļȉa APL"-o$k#Y&XT&dE*RAuTyj[.gz MvHߔ9FԝN0et11LAGmlPq~8=? ζ(fً-qp06nmxȈ^L h FG>GC]D-G ]󙔋HF|^XOH.K $+2Z }0ni.0AQƉz# 4/[ 3c\5Se ,*Z[_}`56kj J 9x =aa[ f VlQNf+\n[ f x'Ap1d*KxAtWWotQPR"v],\;XL'W0,[<[k[$FJG[ؘ`}RyT8BbF ӌ--Rbb5$E_Ƙ7%S ss{ǘ݇?cLb7v v,x8MFllq`Fiu8EmN!6bȀM>|(ޞdh.I~@sD|貭Џ.cϝɐP T %МP|I};j ` (V/Jg&|eи xЩ ШγJP&4K&lMKeA4Bd7\*2(+3[ 0 C{!/ zAUࡹF,yJkMAN+"8"S!0U"l{}'&E9'u \dg )̰\0 0ǟˌ0az]8b.`~@=o1_FS/ra_01CN@Nƙłc~i j(SyS}"Ԭㄘټriv2gBRd$0FkFEm'wNYH.0 ls@L01P &LrP" &,XxRDOFL#,6.aE'7:鸒eˎ>`K5WCHO5RHP5x$U:NBb ىiHUVXeʣ*׮L3 ˪j0Vhʅm[\ -ufn]0鯗.jéKSip\y'cҘ}RuELx)u.d`ic"9v֠CM7b>xqoޠq&4A.=r 0nQyFW>}CG9RDjGP}d9@ZDp} G'Xp  ) ,ࠈ 8 * .0  $)2$ $` 8& !)<(.I & &):@ )=).X2 C @H Ҁ@L/)开@ @/҃ƜMBTA ӂ>t5P4 5\Հ@ C&(`J0;`WQW@B3r&Z(lZLvUjR2a!%"!p)49I$|^I%dIW!zJ~ . vJ* X0!L`. f~j,v / BzhT Qh ɺ0.-QkNVּ-t 2~p 4C 16N+x-|{Í7֨Cߐ#qoFq$DĐ*O?c$=Ñ!eX!@JeR}\$ < x 89HP<I E p\-HQE" wRA5% JSRdII}T (hVճ*@A PvjQ!ⓨ<#|2J5LZ PL KÒ!eSp!HUD !!@Z j[5jy[ߵZ0a! ȺP"W X dD,X@^S#ưd&ā:`B(CJQ(f1I6E'J| !L+;WL,b KXвLe2 jjqRK.`gD_r2Lv PFiqB` ".Tgv k 88uPNpV7gdCr7su8;I#aG<\z6Lj?= uE uR)(w3)* XhIDqHp(G PRX u P [*FN}2@/q QCXY%%*EAL< &gG`ntG;@$])R1 N  Yiԫ*`Dr: %DPfޤ5 )Xpҩ䪩"`/,d%@߀Օ*ŀOI hSdLExz2EJ.DkLnKjJ M/NJlD*r~k, P*MXfD^LJ5rEGMV('Z@`'% R Z .B! U``"bx#p $$`$B^`L O$f%6b;B )bb|b k5k`**bFe@ ΕbF-҂fn-.F/h9!,Eq3 Rj6! `v2h@j) C.2Nl;!^/P n Ā H!` 7Fo鞬3:: j= !Σ t a<,Q@JdQw$xHG!E2 N$OlNM zP$z8!%EE2@ G$&?H6E$1hD܏fWDVdKGx-DU0 @~Oj JgFV%I,KL$SQMR-=KgpUN&OdCĈ HYeYE/I R/B]%00 v^b(!!x+1W๦JJ҈(`ޅ#FK4g4cv00b| 6{b.ԌWTBvO*xrJhSjDoRJ C rRI-HNH+Ŋ0MID2LeHTzDD4K}KeLڇԐCK>}|H zMQR/@KDJWf+XF pH hReEOpRPZYD`H&@:@Vh.U(4@Q/[ ]Z@\&![0 R1^40`ȏH 2hHNYŐHS‹&NS'мcБxBpdHF+4"`^eeΕmS0fb:!, ^C`9x0 | 6 Nm6a&iI r `@ ,48Ix97@ 'x9g @i)6tq bbaNqBJEq@dGA BOψR*A(Jŧ̪֬LY$C}0hIrDS$fy}HM+PEG:d֖C0-K/D:%K4NJ)sSN.S$k&Vmj 0Kq bвEVJ!Fb̈́W\+ Ld-hzMRW%/ZzU !L@ bWs! b "Ja$Ęi-6%uU (LR%MeD0eWrXUNEG0UWVZEQD<ՉZ@$܊U'(UpUm he PDe B!J #x+_!@`}W%`f4 )1zc^3[nb563cDi :U-5LB 4g0$ mI¶:ialOl$#0ȩ0<@ ^ m79C?;\8(7f3{t+d[x#qz *!DMjv@2 AϪH1Ȫ,MzLdh H *%OdTKxHkK\KD"o~gEPZH*eMԏ`M WGTfȜt-yVhKVQHVVX'jdu%yoEFYe? ȑZZ0Oš"̥@!X\0 P"H"R\ڜ#<4qz&LStz4s~ڧ%i506-(y *R,tJ5," js]" ֬#jxFkgh0) ` t//xXqSAƞix1d%؃6Z>yc >_fyl*s`it ! %jT Q9=K#RGER+WʢǏ%PG¾%/8Ia%DJH0pP6) Dz4҃ V\׮\ x`@:X庶$@@+ 3beS:t2&LaB &H <`”"u, Lp#N7p@ȺFp3&ks;"p&`:!y էW#`b"B&ZP$G*CX&SL`~9d \RDO0@, ! \350 i?q!Osӝ:]Y bp"؇ G^%2(YQ0lc>Ld1m+ `BN$W. ˝ͬ+W%1 U:CY%5%hԦ `9(E[}s҃@}PF3 O(v"%hL * !&8D&p>uE'U'#X;DV*%>Xk /HL $Ix$jNA{!t˄.d"AXt'<VMS ߝ' 2-Io(:Ak1(N*<'RARm؅1K lȕ,fmWc(haZkUExȃ! ]D.X!Ez>bE Q' I>\B}t8JIL%|O0C $3JgSl`3m@d{[:Đ*F1,SրmeQި٘(u,4F41UZ2fX @ΟWNb̒t19s`"4"xsQȽ D;x^ <,H{Dҍ^TGAtL!#]JT/o ˃"j(r=/B=S#3֓US*R"U:Vs&Vf$Dlm1Vզ$C?Rr%_&<T?&?$ovL@vAjnfX `o nY t\ Z`^',)p|p: lkp_ 6C^bj0V0j+j+qR,),a-rf1'B@ ";G.6>F:BCBVؖn)$V$<?x.H%x$&&0On?M(nvn9o~Y5''&A4V.TXu'bB)pwm%)()k[`hd`W wh,YTE`E,btosk mG@.0Gm]|^tٵ{T | ,[QHqH awAmCewbW7Vd@v 8c`Ƞƍc8<NnN N@z_\DG].V^7Mgsq3dS!P{ԥ!1 @NQٱ1Q˱P :S0!ARR28 T3 R) <* ƀjb!AɩKuUs> "U4">VU1">h>`E$#Vgu$%yx%mx9̰%D`W-(%ain&v@YٺXf'\Bk1&IH' vX` BxYB)Yq6C:k7^p``p`[NDepq˅+"'2r,F͂k0" *@.@A9/ #t  RHr74 $AIaOIqv#S6iz|c11q1҈#`sa50eK4k(l$ m&U8Y{'pY`1)m@Z[ y):4%)o@²\b0rY+\R ʥf @ ʰ {t]/tHPGb/AHBq,0rU@!I"0I0%a/qAr!`Z:SG+4Q(4GVTi C!Í?J[}6? Y6zcǡ3OOec6O|A$12fD9!9!`KQ%g%Y:&P[aR Ǔ6GйiKS)@T`S`!Dջ 3} #(X< ;ݪ'U>;?&%6 W?9mY?a0@-X t& ;h'zB(&I|no P' ֐ a@vaQB}C'f8٬ɚlx)l`pD2)s ٴ2MbJ\D\ƒ$,=-uq(r tٹ 0 @ ) ^/GaT5R1`!y 2ōCuq1bWNu6Pݘ5ʈqaWaSL  M(vobWsˁ3u D?E4;Fd[XEK0A'ڤdcKv8c80P933a-¡sZ}r1 ~9;S ԛiij<"!Dj2?pkғ#ª h"2 ?R>UFkF_>=b$3=n^?%@%C = wnT l o&pMX'ЊXoZB Pfop' @`pzn^`)u*†?]pVqpd Eyx,|H V,ȩrB\R g0+p줠 t rmCjS,RbAh!RJ!$ᾄXԾ 9$YҤ @K *L` &0p E.\8',RdB.5|8<|-„&&0QT0AxT?U(F('ppR 3q`%C SL!E[b1bkF!|xF}bI!(\RJ!j*B-bI "&L"'~'8sL>-E4PLBK t,*͂L ONBPUXQ% B4LHmc@Uې/d]c.X.W/du / 2C+@4ư 1pC lŠ6[n=Z+Zlp4Ҁce@:nmBrɅ]Lc=נM6ebF(6} #=:b9J`zZj3  *'d+1@ @  /z) ࠃ ,8"   t 'ĊOxBK;%M(Vh%^ Wk6KXi&P3XpL5- hE8Ȟ1ZPZ?$Uvp` lL? # @$& G,ft%.mK@fFN8kG&Ltz4eKiPmd!V졠lF"8"r*`P\ |BZp\RU*X +Uo+qfBXl+gou-nm [\!W h$6 CA <8"y#Da`>`$$txbR>r9Q_(")HDL%amPe X2IJUq@vO\ii hP q|C" g mYsH@5?I'9oI#l/tk<-ȌBSSY  ȁh @d؝zyPI9ccȐYJgp6 q6o++oÁfcbc+Y }k,',|ˬz'Ѭ-ɬ~ %ɺ 0? B3RBÓ٢-.Z.N.BNP.Nءc;.N@A `9U<B:KT/a3j:@#8/51`l9$:A4/?@SpI/wy7(cRȃ>G;FpXX1D E%} 輖ixِ&wl&رl: 轧hի&HKЌܨ1+ Ѝ (@=}*?( +(|\A˜pH4雂hbIp QY 8@ٱ(5۝( 0Xdpp)h5Y*`c`rZY)hK`ѐ,n6 '8A@`( ,Ȋ'7z|-ˢBH b32ɔr!AC1 3 캔8C* -9NSE| ecNDA,8:_3P8:8ºnEV#;ny?:8@;3Z5Zؤ=;J0D că8ػPfІpۇ=Fpt %=x 𼽈Gئ$C j ڍ%x(d8GC 0' '2 u ҍ@Ơ Q!T9Mΐډ pX3Ds+C5RihpGՀFm؀" &׉@16& K鱐' 86yp˶l+  Ѭ#}CMܑ%I,Δ(%ق, MnB: B-6:AC+Ti!. 1-Bۂ.,H !A;exO$LHX3A6.X9:0X/2C–@p鯯slٳC3#̺Ci_ذ>`PFH<;ȃgdD@;XJ EF)ё%\B}}P&(+ `ojAxؘ &9dB)] !zZ4$k;mIp И ӌ2 IG/ :) X3K (` 4KI`i h ;Kѩ?#RS#h\a*fAUKVcV^}Mq#L&2Z|#&4'iB+ ~ۂ(/d ЄӒMDҪNT13 b5C#!+¡kaCj.M2.(ӂ!UPLMRلDM&΢YMX#601EUY;jC#+783҅Y$-%Eg?>@A8GEg|hFX yE(ZG- # \z}xњH&%N σG H="H%^Z4z!Ќ茯x\(Hp 烎 ' Țx ψ(8I[P`IhII=Ѐ+cX{YWgG]]^KhaecZeUZel3l˄ppkAaM$6$ĬzK+QB!0g   FV%+*,HV.a3Ⓤ[7d<5QnWJ C슡F׬ KIX-ȔR@ܸL`%ڔ$NHNh.NbX0.R4b]bb.vEX,ͺ/,nYe0fY\D$@Ė7@5 PlX;`:<@=?<FFk; =Y"EPBX<m䑘 8}Փ8[PQ?m(Pً" %o:. 4É|za P)f8 6Ќf:nҡ` pFQ`s& ψӐpIX:逤WôJ9 hp\Uā1Ka+U I7UaE %٬(.v, ~0VmN-5 ;9:J8aDAW|!K8-BI.!NЂI f krN (ҔFƄTaE-:%:fO3(#rllZoٖ3;$5#5h](=HZ?<؃XE`5Mhƥ<Ȱkknq߇Qț ѥİ)p2Yɞ +%o)Hz:"h@ 4 {ް @ # PU/k{ YɦQ̘Ѝ Ɏ .-c؀}q,yKi)%Ub L Ir8yAκz!yͻM$!`1`r,ys͌,(a|r+1d0i! 1-ڔM :,CIAWtBߡK9S9--0c90H}l"]/:bɮXn/tppkQ>+he<b9:xbYxcG>9l߈=}d ,( X(}` $$  4&ȁ 6JJV@aś L0B XĀ<s 8$0C)/9զ =R`Xa.x6N*X"<!;C-tpq_K`# ր"B0aBSBn1@) ];vPO9D >0iт׭Pa: &%T7QŊ8R( '8g$R>=C|8' H"@(/H5l C!d&BC:ԐA-ԔNpZU%%p hSM@IoLxIpRPg$[XUPEW1RW0qXdYRQEp@Z֯<UDW0Z iܦeCSVS6eM-h\F] \eXO"=!q ߵwL9A ,KO8<1 ҷW!;iCȡ Xb<?3ō`I&$5 &Q" V2G$LE@b Y@%&mQ&Yp?ڴ7'0! \Ȅ2Q>.8k.vT4M؄(%BH fh̐*1!UcBXѐg᭬PZ zhh7kDЇ<4 tE,i9G!YyHb6qo )ҸHDhȾD$ % Ê0a@TP`BiKp+)q`3."R)'cWW.P+)T&4AY:`ЅcGX.5iԥ_+e2ȭ4l*#03iMlnonM |ScB'%HO{ړ,a=Ae 'tOpB'gu{hWyw>]2G} ^VHL!  KJ`)DI$UA/ف+ Jv\*I9p,sK^@`J Z.p,rJӚ( P5#9:dAu5Y@=n.csXnwZF1OXP'=+ R"uIDg5u8L`8d7 EFIg@X qF]L7#ѠyC)z TGuB +8:9*~)N]^(0 dp.;FUeMC; n e<ġK"v[ =_hoyKbẫ>&8cQ_5 r%A Fb\0z+ݖ\&(ǦRD"pm#.Kj%Y"^sk^ {El1V̀M:ӳ$@7Y D0JR4"ۇoa6mol>~'wS&S >!`@)ApP>-~LΡ5H?P<=<D}gg+Q'#C'DQOk,Dz?'J\A>%}}At?4i!up')H'v%}Q]fG(`B5۝`uA\Jg[ eeufa A[%ȁi1 Jn큺Qm1]jIKp@A<DCXX>\>T@Lk@M܄ ~UTOlw)]%EKMp{qD!QFօ]tɒAW )N,LH `j_Ņ X8̌Y@Q$F]XDy Ed"eF@Ө @77M F Y|;%uN 4E'UW% [([HF I[u Q Rr JЭfm t8Vh ҁjC,,<aDAqaAM4 EKtOD~Qgm`H܄ѡ"c\b}D M$F':'6MRp(]!DEPM#zFY@AάfcD.I"jKhE4Ӽn"heTM-rTsq]tݥs.b y~@ 2jY2 d~(i E5Ι4@谞]8;١9Y>#?HdpPmM 莐 R%i'IDaYe-J`I" 'xdHa°eA dAtܤpώ'B8h[_y|$[v0Vʷ1%AԊee[eAe]VgiSAgQ#8P с"%D $@J@TFgaDI(F!iG "FLı`#!qKKTa%ԍTEd&z%jxVyhG'.Sf}++0!SԘMecHLsPnPq0.]e\gYop"r7u'/ L H|z|\ٕa~9t"d ٗ34G=ڔًO )i:@$ɐ`OCɉT x$ UB*I5MUۂ*2]idbIAt'4'x*IߖɤXWaEa % e`AV-%gʩ( -pkE۴ %"/" Zj !N@L@DĀ@(JXxt텼(RGaLN\FQ|L~"9rE~%X#6+Gԥm4/ b`\x KPb⍄k.)!@REj"shNG jߥ,I,wg y ?VCřA6:@N&NUEQ3읥Ȇ^>h΅LaJqh>MhI7K ~Xɞ POAr&pBtdfU8ipV5)8DNIՔuB UnrW$ dX驰dQ%\Ɋ.g) gفj`-3$V~ Z }A7#o.%R> *W@!RPpT"YEgjLbL\/WLLE[ M3 q6L m̅Wԅ[Lpa<]֬]KLH ,Fj`8 @ehP"vg(i4q0,sȝ1A it,lIw1BƦ.~qvY~hh%񙩎N҇ǀ9z]hJ!TߋOl-"66L^- IT_C6R%UϘ `HfdVdH$$gr`U BH6$4 CU&C&('nO@h`U%wpE\!FDA aءJA@J4\NTsXe.`ʄ'URCDq|EAPCT>L&MAj•t!OXg @f]pEH]"Rل+br XWqKw/d'FW"Nr gDq]1)T]d2=HfvO(r Uˈ$ɧ9] +liVVVaU`Ugdgy䥴63H1(C']?{ 1.'GIpɬɲU2cƠ#c<Ç9F„96*H(2e $H  !>LaR kaT0L0AJ0axbR &pp Itq$RذD> cJ0'@F~RHy|b|IBj+,kJ-ܒKxK !Ф3:.-܂,!  L =4.bLFT-63N= 0PI,P@Xcb08ɂMjt .b05 N$F?Ę0fO6UVYhc60c.w 4 B!5ư!(h 1(c^18RC]}-茐DX4h X J<#(h> R:HeOY˦rl`bp3T YYIg37խ/pt5$`  p`.`ywz6 X}n L, n .Ԯ$pYn `p x ;09 ,ru Gx\B#NmP&H6i >w-@ApfA&ȁ~X  xmE!R '@} R~ EDhT"HHC*R&&LdȤYXViKx@*K\!&(rK,T4c- T+p^ ê>Յ, !P(+P*x8ˆ[l&b(DP1O|BRK6`o`.a\e B؋anGH4k!9Ⱥΐz)ĎAP4kXL^RJcۉ !dzI#7}!e䀙,K.p,hLrFn^@TBfFSSxa\,s|M &xNv^'pwyl]RaXl<736c@3Pƞ?c5ڜT@{X o:r3~ܙ P&d<OB%i |ʣD22 =# chBHUj 4"VїNjT%5Y JD+Ъ%Tz[_~0 jpӲ0L)'7QRtGBpeQYtT,! i(Dߺ0Xֱ2\ VeF2,(1 Cj6 ebt͈݋, iHA\,Čxȡ[Gy kPJֆX-EOQߠ0by#ƀ|lN>J2TRp09>h6"s/w^bd)SBv;1s@ϱ2g͜7@)Ёũ:r0#mցS=Sr0#Epy P`n )~4 |ޏ~t>،.8~P  )H'H^~(tRSe/BڞG]=yzưri"Hz%6IMS:J'`Op&ϯʀO$ "(PR@RD"EX2A TS`VJ :+V-T6 L[@㍴Tڀj%DeRbmt < T j`f\ ]k^!"E]8 Р b!("b] 젏h!b^ɾ  'kn)a")N,@, "/,hRC61VL5bf b,vI:i6vC.,&9&k&q F/:r#t"O/6:j#Io0G(e:r 6"'ȪCr&5uj#$Fr`= >&*f}@z'Φ -P AИ/JV D@zpDHD @GBFԼg{/H2*`dDPDv &_%oLLנNH& L D+jd҄Oh hR2QT@SpNkUF0ZEU +3eHE^0TPDl2A n+>A<RAe ΅ k ̀"^3H_K 8 $B"&$H`T ĠV pA' '@b65)b)`d1etf* 'X 1Ò~.&@Ƽi.<oV#7Q qF:h&8@:Ni3ct/2b3`igp Ht0$rs127,@,=n4=JJuPA>،=L?xMAN` p HJCxzDG}$G| b`,ddGJDJSĪd /Idm%$N4&ЪOބ$jkJ|^KLپD/QORtY2UdSth-+ 8 (V(287f,b쉖# 韾)+*.tc;<v#+ nfs#FrgiF1fe` */"x6j9:V!=?c@r?h /x&4n NX rH}& d$g"2E*VRNmjd/Ԭj`m''w'JPϬDK&s'WT$`Dwu-X(f݄JEPQ!JQ@UxK*RUflU&}Y4Wl%  3 ^ E_"#hZ# ] @` Ƞ ba jA.XPbb))qExf)G*T8 ./C:U=1 <.88jl:U2چӆɍ#Fl*Cj^FXl. :^Ɇ#9Juɞu @ mL6lsf9V8h6&fwϢvPUJEEKQTKTjpT%%QQURT6ˢ#.@1 ^">⻬]FXXB`+^f$H2.$wE ` p&8z"``6'9)z*Մul+bHO;SV*p,9Ƃ8bg#).80pjh/ń/H7,o c9csN- n-"oX4)&/2Ork,qR"b#t l%A"J?&?`5J*rY@s@Tyg RngD -Ӝ'}>2F4AF~A$?2EԧJH|$MJLT+w;^j m tJOH%yP6Q&ܱ)e* mx9kUf%T=3[.k[n諈cew5I {%:GWU"0 yB8ꗌ#<9B ]zeZ h%%8&c"f`(xٜ`,.*|#_s+&Ccʢp30:ls;v fmf9l*Cc #lh#7ȃ l7: ٗLJcp  p58jء꩜v C?,2Ќt/wL82D*\H ,X`cI'LpXH2FeJ)c!Od&'Dx2ӏ3WcL !@XQêV@ ZHdݲuԨH+*֬ZF dL\tH& \Tp-؂y [tes6]㥋.dq:K/lJe*&N7 ͜T8\Q)\2a~݌3fXa3&2Ř/?VΜI/}xgq_zYFb kakG䁇zaGr؁w1~Gx豉tc2ˆȌ6#:& \0H0L t@x@RN@:N@LATفRFIA$P& S$@r^`@k0`)LdSx0Et%p k~菐NA 1qT T@zvvYGP  [@"tЩ-@PA{QE@"H2+NM>LDӿ4RDQ?J1SPY51\UUc5U A]Z5UQiejcG>w詸@c(P=9CޠAr#՝nu.CaFyIw#O,-INJԥ1E LJ@蔤 |)JD8=K`@D2j5,|qњ@tL{x5a-C6'?BlD%*P($Sbr>϶$?@UmA&YMVp=2d'1C%h-t* l- !DGoL`I9*L`E %0G)q"10N0 \؅rŅD@0:G?{4/<NC!.82:11qaI3&c2iuJ^IdGv46S?5PP8S5`c'a8LR#Q35k!55e!w` `5x P@`oӋ(Mݡ3d0]pdeazcNN7iPe8eXu8yUCeqPkp:fh  t`zpQz0|;`#'#|6$%&S<%2X%`+p)SlJ%rir~SVg  ~#kr*K">e2@?W?rUP+V1A'恌&D 4'O=4,+"@)5dDe-YJZA-59 Jo,,%0T. 1G:ABɅ2? f\h80#0ŅgC!N!1>1XuHU3J9^ 32(NaH9$`Jd`Cha\h3`6!5smWaVvQL16$ a7LaDZu!A]@dPNtOAa93eYedfn 'c"v!x ~ {PR12#2/Bt;|0"#<##C@$B}+i;e>q$XǦi>U %0)\UViXb@STaBX?UJS&V")+D" )rp5j?8+m\*V2)aځAcU=nB)q钌@2t"Pv~+<ԗzZ,,>E-fC(P7EqE p2q+r8{@>06AlGE1]i]+g]~sUD8S$-1LG>Hr0OQtJIYW23~y$`!AGZwѡ cxcY5vbFiL5D6b3b txycMɉa~td&$g9bNz NyMF `ofPof@Q`:@;|0"%H:gt "H*#0R#YtiYI E< fDU/#`*3uZAAxv36V5Y8wo9#K$KD64fD"f>Lv4Z7ֱag6~]@Nf?K7Phdj9hꨎh09Ng bf\ v5P|s@;u;x@ #ur{2?zS|sV($sBerc&3&fb+0&Pd = `#|R\)(|B@]RBX'VE@7'Г$xU%2vB3k%^%0tBA듸W^A 1i"BSp~wYE,z- ZCIoaLEVdq'!NP.hF%0e\0/6\,0!|^XavJH|!@b0!L_N  =` 2>4ЙIk ]gAu?M@6u5Qb'l'aƔL$PwO =b+ 5ز'MM8l0c]diظOdHe gef`n O=O,*f]{fv !rPx!x3~@;#~st󐡬R3'2rjIbi˃+j[5<:r>#%iR{69ESIW qU36>A> PXjE`@̯Ne3VRXrR+T>@ Akr@4+$LyY6) ~!X".ʦD& p,q A- ZߢO(!fE,O]riC0>[B0 3Fj/cz;FK] 2s254 Xԅ[03w!2O=2=21\R]HA zab84FJb=M$a1dCٱAFa9ML4`Vu p/wGI3e@k @ )DobCJ,I,kDZpb.!%+Ѭ](m[H1D0!ǥF/ysH1`[YgJ[ 4\MN@•·`@u MD8u[GxOgcc{'5!)wq5/veRK>dk3\ ؜ d5|eD-XqPMiPybPU6财U9d_jpfuP6 }p:|*Qqϝ9̹O >b(L`%)x *Xh҂ xPAB H铂 PpÔ)EpT@ $I8r  VmP` &\9^,azJ <QlA;x{3Z`b 80q \ώu&9Z iΑ<5)&Xn'$:/& .@` 8ਐ"8$DꂾB& ؂)$ x#آ,3 2l'ZP,84Rc`k\37Vv 3PcJx'A~· ZτĻoԉDc>RA'~Fi_4rD?B.B$WDq0aG\o,s.ܷ/,-h@0Q)qI_ԥ iJt*B͉Qš@'<5Jw&GUQr 5m U<-8+da3t!Uf `ZJ r8_1Vi⭖,d* C`3XaV@Cue Wր8v>A|> " 62!Ƀ14l->bɥ$0>& 'vdP2*a K`fL,-Z!Zh& d+* Վ2ɞ N(8)3hLZ* ilk57F5 N B`SPM؆6)sPD6 jc0TTL(\=v8p}G#@yG8]&`=A~xP;@o4ގw C:Ģ|-hh&z(HL +IJ+0!6KS*$ a DT';NVPTH NB`BcK8?i`, )XAqpl^%DZyVZel:5+ bE-jqWd֠7 kCՇ;o#`6WH HEv!`B8,+>(t $W˘.E$\Jl&H8f3yEKK$P^)$ψߊD`9P2Pb%xHPT:Qʆ 1G  c "cq&5!O}s9h9Գ9i L0 29@2ayܑ2X\JS9guwzS-rP'#V JٛZ]"BE> uzkVߏ-D%*@-IS@KjѕkMELmB Pu n…ӢAbڔBtL9*K%,yU]AVJZWJWGTCiZdv֪mz"q!x /;ʭ:T1$A^ wF ?!G>Ihdy5Y'e:f AhAH2.,0 |9t!BƁb8Y07c$$LIJRd14JhV[x1rafOrmIm3##p&q{|@9 QVԬMsMz0t` 'wnOxc ?>,'I~(AYi6jHTctNwz= XJo TV[AIIA*QtR5m!:)+(¢D٠d91;FA@qJGgCJ/T3PVt[72pv"_l"] 3Jiq(hlj0"#32.7P58%l[;u7rr#{#$†@kÇÖ 8 H 09d  YڙI809(D+ ` 0 ûYɱiZ耧ΰHLYL[\#Ҿ&Y! iyLLȄIs&I$GK))ٵ(.Ȅ#ɐÐLI < EjFZ*"hJ"0ĺ68Kr79rS"!6t7YAgAW #+⢖.rK+@-iA50s)#9h8ȃ<?:)=;:XƔDC h I h94 7|( Ȍ d)h) N:Ī WR h  S;WdDiozE @ HIЀc Ӏ]|`9 0$ՠ ȁ*OԸ$KR)/*IUO r/b,J8Eܡ?I"HqA@k{!gA\:5 "72FH#0$-W94-Q+R jY޶:7(<88yQDxL;} Ly!dE_H $c>D19D)͠ % P"2Ό pPZ H9 X,% \қjBh/؋Nһ9όpn'gX8́ 0(3(,cm=??[#RQLKHy4* Q YR) /M+OHIU[}}8u, jjb `:]Hq*P!Jz;QfRWfoncT\ٕ1 K(klq^A$tgDU48.GB5^z}L )0$ބ $L a`XO?\j .ͤޤXDdXYK<1XT @]̍A K XPkO((0@H2Y2N3))dch)EUG:vdc>n繝*&H)nQՎL0RM;5&YL5(ô3Io*̒H)F6=ywJ1fI8,6HT@/`Jl]:!b6Jt_+""nI"eZ"8j "lI_UdY}FJxB煳vKLKAwhumm ֈۇ)؇D" 0(` @֮؉8axK%k o;DO yEXjכXw2 T@@_2PPb @}.pPNO{hIvn4PZYlc@f3'3>݃)ɑ[/Q BRSOUm~HTS5O& L [j iK04 nE\Tq4X N`L/.[~RL0+crʜmf(1ݤMP'ofq3'S\3/fؔiC +WЌ!1nX;F3bXa#-5jM3&͙3c [{ƊahθA͛8j(WN;rcg4<

d>>ѫFDmQ5d!5,ZD+D 9kmB 񫡽r'~ikn"&_XQdB"t.Հ  B4l* ˞o K/dSWFuQTXiL]dAN(J9J'aUSSf _3YlEdUFeX!X^FXdhP-5d_OFqG|pfkfjwq[yp `m>U_Xg @sqP~G$RPAH0 ~`L6H!z]0A1^PcMh0;!N;(v%"1H#v B2 dF&E2a]ϥ CR4i+`әd5)K%1; 9S p%S L@Z|0`B 31! T4d W@?B=*WJ앰jIZúVp-sYae.cmW&z%^=W<B 0nAXZ g u< GfaqY1[AX yYO ˲Idl'4XCB&a!ľ2| VPx0l%/Ud 2&bXzլ miZZF a+kT# 3]3 c`a1q"C68m6rhs5j!O Co838]`7⒣16@x  ~"trφ(8q h;^drkP*GRwţV)x`p6D (D>& 9JD 1|(F#t|hAZI&ߒ&%(I IZk L`,ɵ~Xk*AѤ)0B|U`X@2$rSN&6QT1@DŃL9Dp*A8,h5D] U,{qb~)n!Vx܂q4XE-`!V$(L\zIIr_HC.ad K.p)XKBD(D&` % QL0p"SSb6| ;X3,hAK sl>-e(C]p4.sq"MP K1i5#oHon<npxu$ HPQ@ULHWv@8X- Hܚ dqI [ _ `[I ``=Aۭ P̤P :Jg& kY&|9ՊX k r  aqnqD 'st]|!2QxQQ Q@ dlA&dAi10CHCÅ"A A(ۭ]A%2om@@ysN OGx0$@҇G1Ȗ`ZL><|pY$IU*XeOGrHDeYUX[]*PI ,^ 84``[ Idʴ:&~ʦXd4Jq @栬 Q\lyPl Q&PƱqQu\ ˫˙dнN65ΝkrAs^KѿWݝ{APl&xB*dL'uRPbp*}RpBDܭDTg+LCt{&-DY\qwl&lD^ϤXӾaDSc]0F9`4vM\8F_xP; mg>DT&j,DwnMA ,*#8z\>GqM.%{) QN2MnU@Y$켇| LrxBQ-O3PȩvjdG<XPVϊYUd?O?o [I@>28Vcɹ9d "J`+`֛T J&àh jH!tf+qիHq xȵ 3J1 ?! Wru}Y5 ~1$YAXQx5(GIl{RX2ZȨR)ڭ(E}OdIbIC&1(0t&b[8F]A8kZ$-+ME: MՈAvՐHew3 %6tnl? ݰw;dolmZ@%F$&GHPZ_-){L~ڤG=r@Dp ȜpTNPzLnTPZWV`}OUZUS%8Xo[U}(]鉲 oɓ ,@J_ & ܫ ֭ 4 uė1륬VVJ Ч4d&Gsat ޿j:pk  S %zܴ0+P˼ t. ս C!l#KKE5,R&:_l>v^h1(D gT (ʬRg7Ct'P({ϔZ<4@6Ʌ5FqbaX#@QF 1bМqMCh 6|3>>+`e_;uT2JcOv.igN?I(4.&@G9PA(@8T`(PmEvJAHk@BS. h1pV`ׯ$\h6 &HF|A_'t AF3췃% btK[˿[.7P~D9ME,LdϮ"; JIy(0LJ(Qu*pgG8bj@Lbh0!jBcpbBjd$2!@d~xD'`bpa! w-b !  (pJ*4 ܲ$Phr)-p +jȂ*MLI ی36,< Ö́N NsP$M$Q"Lۈs0袍+hMT6HOW/fdT"F?R/4bReJU 31%18\8Ê=(3pM#p=[2 (_z_5&z,20F}I$+Ԩ$8%>.rÏ;C}cz.2`~Rk< p Fjt3p ҙ ZK ,0 :zi&l  k `J1^:; 9&Ko<8"c8Nێ85 ̓,rƅ-ko9CA;.;cJ[%+܃ H } 4! caeB!$!‰Lllq1y^|L~}p~oK&*-HYrx@Uiѕ qHeb&T%B[&lyC ;D+@R58A'LkD!+Lh h:+ Zp.XRLADTb^*_W +QP0+dc(Lp"ZD> R d04"Bup+ 1׼5vqKCʵL!bX' d480},#!*TqhI?Xd'/r <1E 8@pf8&85'pLTvm4Ф "`*kCԚrOA\&n pea V0;&` Â%`A G4  '1PL8 +ь9 cX5>/2#!܈GᓠT& AIgHJ 0 D%eAS&40)NOĄ$"tr'%)Um`J YV#%f!Vz"lU*]!YŲD[깛B*vцM,qVB֧Ƙ[0HR!L+ ^V3 ^W";+HR\} 4 B5Q i4)L!oJ`h*D ,Ct29xuCl!'#+/}y `<2eZ*8+\f6-OCLM jU6 p.G@ٞ%j03Ma曮5!KфƢayLSDjp(@R lt9sStkvN: MWM`vO sE-vf6Vc\.R 6XWywKm`'8hC{p 0ŮC]dukV'GmaBq{c(] 1xdb#{11o Xd*y̕}`>ByEnMFKZ"iʥ3y^T j[֢8h8Z.57w~Wƙ &4t9<c Mюw3i۴q8Ә2mVvCc \-?Nc @K r?T=RLG@` &DBDB0ԍJ p~ 4Ax'FL>~hPGl -HG" .K ȱM-JB.:dM2ejXh`KDP 8냤Jhh D@~ `.Nze RV< DAt%W%> \ź4Y RD! n ̀ hk\Ie Fb)!ee B `Xa!F PcfbcfB2/sBe2c eNVF( @I(8` `l)(x. Fnj/ &-f  :1g#&@z4jC4/,lJs>~C98J&`BBj\#& ӖtotZ=c=X"vV #J`e? 0*>T@x< $-z, J @{NHj@x`j4adƧDwn}~^lD q2mHK߀JkKM& F氆|KFhm"eBT˺- 88>KH,RoAQ!R 20?ZuG#y'@$C $/a` DBBFBG4 DzMZ~xv~ Gh0FG3YA K H pHĆ02MΤ6UMؐ lsM<\hą.*{E::SWlT6`a.Y˷FP. -2 keŷ+d˥Ѕn[Z\Z%%>)q|gC_O& nlN"cl'0fE-"XF"iB-*F0`l&O)4 ʪ.fF*/Ee13t"R3Ouv4c@7&HjqƏnN'srMm" 5@P-9nm)Q<Ӣ:Ԍ r@v2 *oJQaNwTT R9X@9v-cvV'pʨp`Jx9<80?zWA~g@h00'MA@ꕪ@' rynd|d@qd|2s~2[M+I ([PHL$K]ưK$JF0PeV:+W S:QW sV3 Z>AM:" ?+\ ]ſ%_qBb 8`Ua a*Θx"DT`f/BE6'q6)-)*ʦ>#6qye(:z,p_2t2 3<`kƒ ijk0#rFjq4X'T9(ٯqJ@Ѐ;'#'7|%TCJ;LmU+Kvi>pvRMӃ [w@@xj آ7z9M*b {;UGX 'CbVqD2$} fo$FpD~퇠yZMHDhI KDL02 G+N36Ä\6x< \;\^lZ:onnXV|@aEQ_s^%]?]`d%K@%""  F4dPDA( &"6o.Be {h l,q/* 4H20un 3v & PiBmJI1.oPCJƯN;8l0t%}OA=u[ ;=̛ *R~9'p?`Ry`xCq`GyGA|0;dBybЇܹFzDDH$DwWyd| GGsPB6<ę--#\/P%]1+E|Ȕ8DrfɔB|Cϟg[$nY3СB@r@x-(* n;FA5)mРei/Yhdɂ/xd/](^4X16lZҥqŠ5wܹ̏WV N:}RƅKL>S&0fĸAF5V?\sc>}1d?WN81j O܍5լY8uȱCi߯?+fQ}A>2F(R0@@$@l>&`LAHA0 #x C!CzPD8X0Ҩ%3j9x@e~8`ZbLypNBmi9ABNjh &0e SsL LdD ,P %<+rì%K#@ > <NRO2W˚5Q&4B&B`&E&C`D>& dL&̄RI$tMDCոR{TUkS@4Q&,Z@RWa"cąkPYta X|=6b$Eb{aglb ^p@$5r8>N1;Z`+xt P6 Ak[}XAtࡅS9otpsI-HT9 L"T.p0 X(>PTJR*>0fcJ} SO1Bc P, $rT+5A2` &@<XCI|@̄Y׸|Б`*Qr*_ T蓫HeRB&Be)A*\D%04;LeXF2hf5Y >4,.I ,qfAL.64L2a N |][07M:bPvcjnԜݜao9ގ p0\T> W%-yvys Ԡ4>´:"Hu* h^ pI/PF'ЦYSx&5q` :0$ܫQ.0 lSӇׁt4Z!~(G'EQ4TL@ S:섂NP,8 <Ȃ 0FZ` 0^ŐO0>x 1E2'Z1<Et( qs` b%bK. AK[蚣E?qDFE ET VBH.xB(QVm 1Pe)dxPdaR$ Pj3S.fD4g=%gJUFiɌ)v +p"B-128х )5'Ǜw涷 ΃N4иo``: >/5n NSC8aw|,g}A} AUDTY(/iO-J>8TRMaD@Pa P$P D0QiR LEZ>5ѩ"`OIBN R3m5QnTu)L`m @o OPc,@ etU+(VUOm Mʅ,,kkaXַLKbطh:aHve Ym&p',KxnX Ocǡ sڣQB0` a ^ifVS.KY_]28o0<)t}*CaL9JF5`%H(Dڀ7aZ13xnySڶMk:2:4'j3oq|TUc|C;ԓUL]AT/tD "D)Ԕz)=I>7:E6p)9L1P`2-d,EYfp9 e.@.RBG2 qt\IQI]q&xI #0oI4 AId{%!1V^IG4uvH4*Ct%6J!t`4>u_T_KKK]Lcv`̔a6TVf͑M6ځw7hhpNԄzpNjHppxWOP 8yPF9xPx@z:~yw ~@!Sz:4: :Gb&W${%w$_&$& #ShEU#GsS&&_:0!mS؃%'&4r>ʃ~&~>gW(v'^~kd-Vm(V22AmVwl'0?YkD*** mr+K*8bY EfpD˲(Z,Po'nR3 R*0G

+1l^Awic0EAg:}!MvidNF;ࡎw$#]LxAFё42ȍB1Ug=f Ƙ2zgdh<FM jXSˆg[bC#E*>yt~v /3ئs Ecy64c 'Mv Wl$9g$pn#ս*)=htxvhc6v6[|n >4:o6 <1+. *)q$%Xda ;|& =RfQ5GimX;uv=Wض@k x;>:5}ф&7'v^RtF#:ھy"N{urkť5k 2Ѐ۱Jc,BEDbSyS$c( FFf=I@SWS Fmbzh ` XBo&We74%e8|7 cPuGwT3m* D(/3}Q} zgBq ghTI0J `r CJCb% RiWe`y4th(;E4aEchb\tD–\CEF$H{{HW<4<`vd |oP%Ϸ$WA9?(Q}` ` Aw  SZ60ftA V{q7 NРx`> a@\Մȳ ctW }ޔ 1pC{yp x+"*d,$f4F<W &臭HZ,z4,D{ae]4#`f0[{h\)\( ;a0S\dƝ;O!YJ K0k@+k7kś˚3x)*WLKlm v$S@+!ʗ ˯b`/2\+c*]YnQ1AeL  .M՛$A_wPܻc0Q(-a|0r{Ϝƌv|x3=%Ҹ ° +fP&Upۉʱ#jX[W(ݹj 5c,|ӎ"kZXF *YB,'=5kh*㱚f%M{ bXc`޹3{%<8c#$|HC1r)t1 ~:aɪP3ֲX# ّw8F*a =%R]ţ sZP؈Օ4{JԻ<3%RME-FIZ˰yB A-T'+q0-M Aɇ E Yzް#1R%p {Ӓ$< -^< Z۵[1y@,-]ڟ r {,z{P G3N5R fr0qߋ-L.LcRyCsݏt1_>a~ta &(- k1 q.+Po`m@1k.{.P:ZzN`؞PP鄾T: .%^菍и`z阮nحM]3>.*:R%~ПnǞj:Nw"`1>^e.>2.W]@un`}&&N1 |%',m3KMQߡc:gE\~:T:hw,MQ8^ѝLE:J.#  67?9*_uNbd#u~;1No[a(A/~nI~U2VNN*yS"t@oaLR3  @iwC7E]^o򖫵9.MCoqfώX1QlO|I;؃Оݔ>/:tOqf.nJ$РAY.xT}NXE5nG!E$YI)UdːdΜ劗}ktlӳ'!9C}tB *P3HUYnWaŎ%;ٛ^SMEԋB,[aĉ/f1ֳ4ovYmtTZ(E"`fkرe<3ΞkiSs.BWꎠf/gs[זY n==+\nLkBկgŞ]6#=hރ B3@Tp)'N?B:"ġ}AK4Dsuo3 O=ЯRqG{-k d3BHِRrH~rJ*r#*> !iRH)eJJ4TsԒKzkAmPtPB M>; M.Jq8C+RLC7E۸kDIDOPH!ϐr(LcuVZ54QC0Po0ܯVdU[9=.Be:<(enu1@x.Z:# 3ă\zw,<}yRNϋ`waM d9v)B}L1v';!K6 ~S0+I%3m(nkO8l>;ޔ8|rʗ39tQWZ3%z!DtQ<7 i hBS}z}s5RzA*tޛw>\֨,75_$KI:@VyMuM4i Rtit1hy ) ]rwO Ԧ<"QK^F3cc`=8%7hem Qŗj}oUVA=Y:P('{w)HbJ/aPm++&r!Oj"$xE,ʆjypڰ -.9FE41IƤ(]aQ{X7B(fݏRc#.17oɌ&$9jG(쑣$JظDrZeQBT -te- #/mieoAP ^9)BPR˼|rrCuhZ"9BLpS Uv!"U\LqӖN[x \@Ac"D%hF.ksYC"BlN<)2˂fZO~ $IhNTmB1ʤL3P)P͛!S;%=.L.sH_"wEyT2Û"Dќ\@1cmGπBTCxӜꔬs="9PhӆIjȀHW*w0xj2Dr;*.JLlgg.ҕC!lVDNlkQGCNEWrRd~H@+UVZK$9pq )6=,nuG.| l.*B{o{^a mX*adJRBXWKu̠q3m"δA8U"@d~l$&> #:6o>X믆t๷BJPg@a7bS 3NT~~>R(vq{z Q!tb#Pr̰7*bIQ 5E|f kf"!s'RBsD3 m^n$ aXeH8gHJltvܛ0YHBiPL>k&u۠q͋sPWU!_ u'덆 DeKPdfsg['Mj^e̛99y $22vg ɛe VĈnGNrBIPUHH!TYQ.Gܯ,5тxq}%!#&J An#zxG!ɧs@!j1`:;ْr9\a"deEA yc54ІbH HtGR/=CY*jGr9j<%/3c4wL\ns3sS)uXlg A]ܱ RJ`[X)  H9"R"x5߇Y04NaeP^W>Ւm͇Y{u_#u%{_yKhs_)ho yrhگ_ )!xH@H>8[-9G)>Z6@r ϨًO#nR2@||젘);(Ҫ{A ^[Eksq5<\>D+ҎQKu:Θ<A ꜧ`E&Œ HxJ (4OÚƲcHڈOlu|+hӺkʈ*Nh*QA R7©ʃYdP#\aNxCiB =sƈL:ߒ3%p>pO)-9Q+xM\]<2pMR#O8 Anܫ2@ O+==һl =2%mN\L, Q'9%}+$cqɍ@@ & qGEE+A6TLJ72s;lR2%U\E 'ڛ G՝BT҂3@ց.ˡ@PdSdָ?ER'0lE8 QVA-җ1O=AșiCW;BJ-0ӌצ35PЋʡ(!X3lYxI;S*؂лB㮨Sӌ8SA Eh䗞%%Ͱ4ɶn#5qΌ} Zk4j/̎83:@,顮fl#f2 lɞHl?kR#7S!ʦ<@0kH'f3kRSm[%/1}aߎ4.450ʎh9@HinH{n] ڦ !i+/2nN5A$K"1ĎEְ.5~4:.2`8Ѝ70d&plme$\k- /ɱ򶰢3Qp^q / l|K͉g'$Z{;KR: Ekp;G`P@O tT+4E9X.0􁷃w.p_sǂ?CP=}ŧۯ~ݟfiRPyɏ`{7|\ ~~hmzht1cfMđONxH"ECRԃ#Ȑ"G<@$ʔ*Wl%̘2gҬi&Μ:w'Гi#`>ckORm^Yc5!ÈZN;]C}'ON -M-ܸrҭk.޼zoiO.u*+mɺ5b|Z"{nRYn.m4ԪWnRrlM6aTۘi8k}Z#郱/ycGn:ڷs ;`ˍ X́'k1y}slzw 8 xMŶmO9 TmVspu,G]vEH("-"18#5x#9#=#A 9$Ey$418 >&f\iEʷO$HxIy&i&m&qyf3K5sH X7pQ4YZ>IGsJ:)Zz)jiLN)QnEL1EU7EzEcbh\`A++IQ{,z* mp\rE!Hyd6Sg'MϷ(GL骻.nu1kL:2ԪVƁ|dZI\L@.F `HltL@E 0 psݜ#Xc$C 07E5#E08E<4E;`OPtgr9E6D 1ytD : ;벏;F4;F E~|S^|5OYĞ쯃QC!}CCZ@h>WcE[AC>.?<  x?-"{"h?ta]`/ d_ש,5aKCCPxZfragH0pM@ 14a E8@- YYH)*Z`Z"%Z$#F1$ha26Qt)@;^n#!!ǠR$Ib7aD' D% >/d8J恄 $E`%uȣHx:UhEK×;#/H5e4Xͦд100 @Ï$ daJu4]-JOLHƁ^DoǐlX"E(} i>05-n#hK@uu1Kr%,$ gґ^L)ȗ$diLP7:MrEE)@bD *EuO}K])ReʻoaVᗻDqe+g˳vSLJ0)RbTjl(Ԫ.2-T$ 8n!@:sbhIg{ Ns\8hCP!>3mXvO7 cXր>Vob@o @"bEBFQiI֨ۓml#J?bǝb P?mP+eo#FΑ2zKԑu(.S߁a|\(0> V2B,\խ>/!Q+( W&O+bN0kX|os7 !>4'leTc ؒÏ0(pTm$p0K[1"s)P-vjsq3 ǓRԢqt#uwetފb'#U;=qAN :'w=IG*:ؠpQSrj ,٤JV}Z> FXpTY[w'0޾ l"c+Z[ٽ3kݴawR+0!(u7hAҝ|d7up3U‘|9?/LI&A6p"Z2>?2|f-c9?< + o#rѡeh=)/ ݕp}[g,rs4$J8-`*R^IW Ik6-a}% AA>)če5~. R0OVRhݡw0E.3" I@иM1`N#'iHqQL{ЍScED jdK(PA3-s nqT8I4 R_$' hSTJaG,]~ ݝ ܐ Φx")~]T ZשD&(+@N'tRhX5䠈RH|Ď%ޯ9^I^i]!.eE^]my鵛cPDDȅͣ@QLlSU]ĔYšYi܌Lb8AEX8MVmE0Q(ƍ BFD͟)l"FQq~-NՀP,H8NєQĀ"ŀJݰW ~M| ~c|ڡSiU ^P>4 Ŏ-НWm5F[IaC&4cc& ERe[@R^+/P~D]~^\GvJVێ9S" LJ @ .\htFg\KA1'>Mtl LLeٜI"H@%IWim*bD _Jr5r NH(PŀP8@NLNbϭ7A7bS u7z RЀ@EO4p0C]DDWeWOl6E=tpbXGl$$] ( P`tHQWLL;%ٷa RULhLf݌mQMhLh(!U^( J+̜eeˍ,>W^΍%bi N`Oe}U{9cK@ P | A-8jf:Ω NI hhVR H<H.dA O%'DrOuNZ[KہĊ]wv'}wz%1A|ɪ3=DzX'ETEK4J4(PQiU@ɴ?-Ma,"$McEѕ%֓ M<Ƒnm@sAu1G Iڴ\ќ+֜qbtC `͹q輑8xUΖVΎP9ibcNdb W߼4ARXQZRi9)O7.Тl*W[Bƥq%jҨu T2M:?5`_Va  M @>E5*!"|mW9Zκ; i:f2 O<~*tf$ţ {t\p]TO!^hc.quXqaE.G*0DBAy^}Xj%tK"* XL6(T_ \|9V-Fo+󦀽eQb\f\Y#]&uQЍ8!є0TљȎ(N3lQUZԯ8NzH`)F(#.iN B04pЂ)lri NcfOv.IU`k)J'W҂dB'Bm)f20Fx4Fjg^ED`dDFWDLjŶM f8VT,u2"4 PLh^XV<]2ĔkX 2k+lbs@@Q D)pB͡1 ȢRokߴ[~E Hr  s!)6p Nb8րdO8޸N_8N_]&F77N2̢:@1sC17vf8ƎȖXfA&@&wOtm'fB Pۖ9 skEE>z'S3dO&i4ު.qtw+-Jة$KdAdj1āAJHd F4FXEhgT1Epم>g@i]jA |EnLj%Fѷt}^@ϰ5. ] WX)+>M0`*,@ Fk>oc_D %ELÌ`OэU&U `G`, V`<`P p7 Uizl7O)8"WΘ161>^i>JRMN l7~h`~=JOq*3BO)00!p`ƭa>4۠X-B ,dwOx ]=_W<!PƗ[OJ4I ŁG'PDzrXF*RI5N1/8:Jl/2V{l2w3k:kBmH{X*|( ꢾp'm0ou O\A 1dB'8-} ba} 2(@ 2Xq"+lJ"ɐ)LJ2kVTcF͚qhҬ#g}qᣓN̹iRKv@!TRM > &0    ` 8$l RQpCb =0e Zo :x`쁂 ;"0Ä}X B#L&z߈}%J({ջu U{ !.`)J^=8c8s'}y2>F  ʟO@0xxH!d8@c8<0?}jXqkq j0@h]ËAVb  @[FY1Q1 0,Bi" tPKB$s-?-,,K2#+@>?6; C 0*pF,τ4衅<hӃDm(P@h$F* VVZ#%Zոu5ڈ#]m&p xcH ?zځ*(R$(*0[ (j0 %ڷ (tJ y- ^ Xl:@`.a a ; |ʹ1AFm\-d+وSs',n:KxƐ~.Aʇ}.$ȼb`oW|I P@QƂB`Df:<8gIM$oQGWQK7WH1nO0$}XɤЁ|!ʁ2)N.΁/BtdLv`v.lM -C/sO=iKNT cQ=;# GԂ0c H@">}OߡL]uU" IJ} ILb8 4C:܁'9A P2h}0)S/ * A@H@4 s_\/e^U< ]   p0k"vѤ&H jTe({o89Ρ̘- )YB$m)/{g@38F2A~%$IpRSȄv>\A!A=؎!3" Gj?΅sYȑ58$ _NF4\$9!7 RIeQ%QMg"!ûO覩NS䔧,HУ$O y0tbB* *P>0T[UDST,q%W+1!$T͐+J mp`MĦvCN҇h zQ@XԤX)EP^هnhB"Y!0\0 dҕÅJX,0.Hz Ɗ;0A 80$5sl>TIƁj6ZnԢ ɨEJX]dJ6CU8uةSft)~QAT֫*& 9 80S~ U:qV XlDB~@x2@j P P}' .@#:%gƬHE 6"`e b x&ʴ0E(p Z B-e ).*x/ b ޅ])4^҅b^ (ʊؐ T&3FL FTBLñrO!jCLqzX/@p=H=HB` أ#>d`A/w ) ?t?N; $+ԍ p 0DD!B(d ƙ,GjrKU$GIa b#8!{ x6N"K'g 2L^. D#Gz> t NRR%iP % UHjg=E h hG:$.V@&.`lj˄bPa*)T L_.+BH`6or  \x.e-,Ga&0-.QRqT d hbF8A3I"gh;lkI|7-LwA@&2!; )Db= nfd ۼkcTz",|)dRa!'GLpb#;#iƚ f搧spF B P > )$F*$#Т@":j#FRF]F'$^%`Rr ڠ p "ޠ(YBrb*KWHN zH!B+2,-b8`J2%#2J!LZa ",3T).4QmbOԨ39^/X` N`Xot56ӃF5SKCTc"gBd)0!Dd$ܔ65AH < dh$m;uN)K!֩Z)&HU* Χ\ j)F ! ,#!! #=tNIPcsN` p ڠ dt#Ơ r Vb-v~2~2 = vE6"Hr xf&4 #H̐'PJ.KV)0Bnh+B2jlb,o Bк0Z@ aBj )ªZD#`V Qif8u `mjcdRdFgo8Zna4e)VhTl/<^U)8G!@l5nF$jNUQ!U|TY(AmT$mLW!<}ՑK N*>FS?!@ldypGx帀 zz7LN0BğBld>@.N"ORgE et ` |PFuDeQve$'(L븮$hL LTAĆt &x% /'.(,th^Fh0)*`[T-keZ0% .3yb//11Pk/4T*ˆ3_ TboOP "LӉCCh&@:F=1qk1:7q]pUE>0w/thGIxqqD3l~>.d܍m(߀V_hד G}wS s\9 ). !>'}X.{U\KpO6zD,KP uTAub$^g$DeI Nd +v9 (O*(Ivc` x E xb  3h BK)J!ʮDTKb-ϪV7 -K O /AMV!8ՉGf{e,k)Z SKz)h&g`qZF<~r]U@⊫?¦dErQd c DVQ!jKll($?;dADdb+AewZdm|}&\SB$"I]Yʕ{}d :/)2ee bc=e~y H[d=W ΀e$ȁgihrJ+,)a N +J]Z)$* ; ;m  S֖4()R`ڳ b Mkٖ Q5? d6IƐ Bӏ\X ;dJTv y.AedYPh\U:.,W 0w8azzCF"D=NK|w`P8}||W~;~wc7֙@B }YC{˷|E]Bf Prv'0nj 4YŞZ`8;)*͐[!P )10Zť4!s3aQ4V`p[3sWrcˏ Oy::Z0žA;yt pddV3I)| J|Yaܔ"!Cz3a ȗaBA \}g ʵ < XRnRj| 25(K[frO~ %L;Derp W% gr k'JuC؄ -])"ㄟ <`0xB/vӣkE3D 8nAmԫnIfK)R]S78& eP 9jbDIth1݃] #BsX\iA$D4)$̚)M0mQ-G"*HȐ !>cC}?QO^;B+7yP,=bv`% #;-o#C BH$e!&DrmK H@ I+H5%15P"A9JO) >mi9^k yPmD laRjKdD@X@NV5, hZA7Rdѽ!9_C! Rt8ل'htKLy'dt*L.å-DR,@&d ]0{"1ȎBď/ ^ J'_O oBT"\-d;̡|fVulKp$]I++B Lc #ɓ@4R$e}d& TBit"D2A:qkўf򃨠PCR; vRo"j5aXۗ/ CR&%7" FcQ\ٖnZ.r 5,t1\ACkiMߋVKtl>f#64s<ӭ}!ۏQe|]Kn5!+( xj,:S"c ,Q6)vhY0,KIpB^&x#%?FR6p&HUK? ZKu((EV]F rL jFNn05"SgєᥲT#. RT+Iu`hpUɁyP!RЃ6"̈ñ[M|<@b>JFF>Lg*ֱ-%yQlΖ\!mKP3TW ,8i~j`Bb:eM!rep{FF~ϟZ仭gHNFryg3isfdOeC{Vg1jw6Bri`"uTu a"l}Kl}x#*~r%;c0#P> ~De53ee3'-(>5rq)#zv;gr<B@yVzѱ~3$9=s!532_ P%Aji("h0I-!U#h|u U"<l,0#=qKh=U؂:x'޶#~w6cun-ABQu6M=;&~QD'7$@ (yW}!Cq0$rָO%Yh9Gj2Œs1i6 _7us8~HYt-Qqj$ueZ;]7R=P=#v~J3ቺD>,=(2Hf%| QW, %@N<9$~>QQf"$2]aBF\f 38<$y<0)#PxCy,~3+Yd)kHi١{qCG.TH-!0RUaHEbuO0d%i=}vxđ}V3#5>%=bP$>vio?24VWZ]iBO9$Ϫ;brp;▲#X,[jU8y9kia1pZtlP#o8 ˰ -*@Ȃpj+>+?X4F2(%V3@H?4:Si@n,#PNwy; - {t7[b| )WMR+WaJWawian&@!>n݄-1ZK*z6q%]96rlr}CirČ9|#Wp"SjB!>[Uu=ҫ%U۹"[$i+3cW(;B5UAFCbpk =2Xx/7z7#B3Et”>!4/[PA"ChIt`*BQ|ř1#wc7\A lsDҔ <>5 <>HL; /۸ILpP@PJy a>}W,˳<$?@8> 'pZylǔSCriqi#h4L\0֬,):5` c<}BG+y))#O;6g܌ -M=,ȿ N*Mm= {rJ-+-U/-3M5 k;=|;c ! ,  H*\ȰÇ#JHŋ3jȱǏ C1ɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJՆjjʵׯ` KٳhFu۷pʝKݻx˷߿ È+^̸ckKL2P–3k&ΠC$ӨS5װc˞M휬og{ N2GS$ES]J)SE#oA'> ϟv(hldځ 6HY}CVHS6 D6Ѕb0 8H#C,a<>%*t"*סD*А #rktx$Xf҈MB~ ji&e*\CMP!gayQ=A 4 4h3MAtBtzF`=~D)Fڌ 3>DW ^AxJhNZ)A~HIZ|QQ;c}P=]fl1&.C.yki@.斪K3nzG,׹Eq.p6 ʰ>kAsH4'仏 oEWywٰW>dl>y03SaAP )Pl3H6BfEm}:h8 Aj@K8}ӽun%<VrS}K'@`|A>AN읾sɞڸ_9#{NE; {&/uzȥ3d^ݗ>3?  q{G`cG7qRKHVޠaЄ0\ ,{1ah8>tN@ {8џ>PD5D4?@Pi`RCȩaA ł` E\3݉at#9+LHe,.>~- = 3ya$7EV;H&9Iʰ@9;QQ /B#.eP&I7w.^"$9%AAf䔦jN#9kz֫k`Fl,W5Qf:yb OLR|1CCG29X# 4's&(G;j@yP-ܔ'@҉ؓ pD@Pʈ88}4껍4-@UH{\iPZuJզ.$$\A'TMՃ<`ͩ=HR4pm$c}3ы^ O2w{ lSe F6͋b*cR3ddAd;Fq` tΟn6/ h[ٞӆe(W'(ZMv%#rbΆ .q?::w |]O+> @M^eS9ځض .=I:(g~Q>pPwb^I$f޷$gbfԱM!][S n` aԬ+>"6\ >@nZ$^oB!#11;;꘩ 6?'cbLpN 4"Y霤hecum紟~.X<ȑURdf.nKqrȶ;yvfs'r@?Z]2PIFDOܲ|i D9*DזFhQԭ)KcHuKNX/0_8&-Bľ6C|F 4 {33u?f!`>`C8M!7VF%~{!)YyV .3spNW6H#x/"㠋\!.[Ԧ4_qs yσFSCG 9JG@l?PtS\ :O0gbbS7G7p!3N >w.]ᅏATn $w5v >8w~c>t}7ʑ ;|A=DB~{m]!gkp$7ю/[?F~}-{!hO3`~:O%^u {t'oT'Ƀ~7Q<]d2qcn/k  |' *jad+:ftq589U[7x0زl.XS)jD+/rur}MhȅLX2 A\'3t*`h e54hXjo)7`y=z@b@ l؇~ g#Vj+ᆌ$d_;KbW3KVQ8mHX҃Wcቬ(1GP8Vf`$;6#03MXcsĘdrj3$qI(sNTvCHXAt0G B Xy-G"cvzMsNQ ) ]Qw 1 Y|f4csn' $Ne9t ,;_J(;IE++ǑHيpEVfN0Oi \.Z{H}b.ƕjHzw)02҂R)vi&4Iyq A}f=f}^tS%lbpc8٘!{Uv6u 0?s(xh?T.7z0p[8s)JY'i~ Qwy h~FjˉrHli Y-׀y m9X?=mXfw A[v%瓪Gő{G b Y-a|Iiт~GY/Bw(z>'. j'Aٛ6j^t$p<ڣI[jrM'ʩ7jlvX'2]?FY̹6iҩ:#ta)>nmG u'EA_:m*@7e"61x*il 驪܉ñqx6i?dѪ*v V) hUš)1j~dڭ7jnzsYwJ y gʮ> oJ<ؙj1J'i+99z:\z@ K u;繢srNo m騂qj;Ħ 0# 7ۨ0qz"+YQ*1 :J+zʓ O[~a{6{;xPn2gZPW궨A9_kasr~qܸGI[2fv帯vqƁEVhEjPqvйᅧ2+K@h6׻[<u277a6׷ؔKG#Nǫf\tuvHqv qѯJ%!㫽Eŧ(75{ "K7\l,;%{=Yq !hſփ AAI"eLжpA%m9 .lwOtu:Ĺ3ValĦ$1]JNPb=s0\T\E&1B^̽R{Ra@\dRsQlf!YuGusכMњ$k^ZzQwjsaO;ȎL3>vѸ]D eVړH5He20fldO}4RE4M:TqaUMV:W*:B-Muv^̼]!uY!Tl_S̀BP"\klQ !Y mtI[ɜRQǑYcbK!cJ m‘>_;BtVR !J ;$Ҡ7g?ԋ4ʤQ ,!"]d?HD-b*\ϊKk`@%*!S-yI|]QHE,15 4@lXPQPq--m^{lp}@S>JP31vE1#k P {=ݜ#QX%`0ھ=]}ȝʽ=]}؝ڽMM!ٜS0  0 @PAPp P-P@@P0P1`0  ~P>2>3-0WA>A>0%PJ Q#!)@)8p?1,_!>12 g.k^qNq.1p20COT>?6~T^吾4tN50nQvN1 @0諾.n.>t>[.YY04P칾`a0죾V:@AAa@@@îVp>!4`~5NC@#s Q_AAV: a [.xA! 5a q AQa}Z]## QLK/LWOTop>`YbT!/W0@w_yaF~P1a - ! A#[*c_\/N?N!-YQ Q"I\ 3&I=+aDH?F<0L[!)p 5sӠ7 PLXJZK!(9?$;oEQ  z!'."#cKOSl()"cU21c 5b̍}H@t hPa)h`3}Tʀ:2`e3ѫB"HOzhq'U 4H1!eHGtP,=ԃK.x4w \ʢS"S"X,R*w3V2C5`C 66+V# :@h6W+h@6` k ]V7H7Cakѝ(_ !GI)wnAN:⁜(IX1.-+Bmac$1XdS#:*U` 3B6zV9=gp ׂGhݞF(" 6~PC}tO杫Rang^A|* 9nFP"K ŭ}q4A&[G4ծ1> '΂Ir9d 3HW,Vk؇ఆӭf1D.ք 6(x2Z R4nkTt yjVnX3!7t9KAA7+")XCxT7h<%Dm}{"z 6Q W}FbQR!Lj&aIwr/ďb>VJx]HQ>*&a B2-00 *XU+HCABEFŏ 4Ɠl Ц NAe\+Jd!hEC` >-Q bD? 5+o}<Ρ~p!(Aiщo * !N ذuĕLi{hpl(@1WI(1eNe͝ 'C>VVeohY p d@9NʊtGs4ud}+@O>hRmR$2icI)|t bْ46'>NɜGmH&SK)#Y;-AeKwQ(V>b֍ *qXx(A+I%Hr%2b!@Cn?rX,5H D2 ӛ*ìVBb[/W΂b"̝zN"{՘7 (0JT1!Wpy/VzU\U rDH4C|"{]Eঞ>H}Ȟ~hx MσH`_<@E>Xs>OpI42 Iz#)p9fC(siGRAy9 `n a7 ]yVp//D=N>5!8<@܇+gQ'{Z8| 4s5b}9#)=' ±s A*@J$,8۽!C)\AR!68+! gӛ#"aB=誾 *("S3p;?3qr ;"eQ ;<܇2EDFIDBp=pc 1ZĆA0[㽆9T* x†붙pB*)X2Rj3g}@?`6#e< eT7h4,379{#6tw~#++4@:AB+ G#ǂ@A2$Ɉ,EXXcYQEh:$-؂*ĩ*,I -_Ҡ^2Q1@蒮ITQti&23Á`!2{x6$/$, XGaQ}3xDx4/8@{d\|tn19Ћ4,\J9HH>:1>B{)HEq0-ܒc+ B 2<.+17l\4<)qm傰f&7ۤ@ & uf6ZDMg09@e ֯89#or'r(eC0-r +Ir.WvH% b׿BkVbuNk6+-Hvb72^H00OtE_tFotrt>@wtMtN06n;S/N 8`iFj&HӉ n˂L%HH(>G cvUvgsRP2n.F2M߁0weMr<&H}HKtwx/?xlMyxK㎠Z._ ߇lNnn6vp]0`la`w} <(xzz/zԾmOz_0mzzzP9zzzz#ub%z81Bziyu"ĂH >X/LWh^2L/_PV7w4(VqXCr/x{˿|̷|R|bkD-1lH'4pSLbs%9o6|~~/~?~O~_~o~~g>~~~~# !,e H00BȔm d8Ç%J|8%F'RpJFC$p%ˑ.h"05>4%J.TE%H{-0P¢"4I!,v 8 3|e 0 G].k6R߾ +i#dp2Ԧ.FsMc{s_rl<O*(}ZeU+W){@}HG6Sfw{}'wpO#t @i66}EZ+5i' 'h4AVxaa-rǓ\Bxȓ4mV /RijTԮ}!,} (p a\"Skð"APq_ƍQ`D Ee`D3 + MRƈ5; &hLXQ$Ҥ]ְD4jz̛8?`ܧʕ.f5Q1t13 [5k|Q/v3l. w6l\Nϯ}׬aKɗÀFǣ$q3NiLٸqmav !,o 7 `L[> $l`Xl_ƇpV.ha8hF}͜V>:yXn F.'}Oܗ)ե5}pr^Zէ/Ni3o羥llƷ$Qcaˋss^ǣטemEc !'1/۰!D;-kezv 5iltРN{JiͮHe`ݒiמO.d¯UQs=/F3fZ4ek7"i_xdFH`sQWYt h!@Wdq>Sޅ!,i, H.*g^.pPzi{@iDЦ$ lQ[-_4hRM8]^}i[gPI'Yi0|`O_},AM㴷p߲,kl>$/.iXO*S=^9X`>"G,Y"*43 &hcgE ,[$"{$}ݘuuqnxЯ!lQ|%K60־=Ya|OȚ`vb0 wCgtWPu%kaj~u vT7 61SgaY$3Vr,`}Gar Flm~b=VN~8Ey1ͷSN$AZ<`f`S&AYhI&I9~L4AkZ |Ji'pH@;^"lae& u%ʆv'GBAqȣ!nJIB7]E#Qԅz!>f71dEƲE;A:I!,\! H. 3V/@@p_=ƴ94V(,1cu@CdA0j reˊ$X%|⫧-徝=oȔ61v1իVT^i`Â}*0.^ ֳ6eiT-4Ʒo՘DZԶ4KĚ&>q@DSnVGdߴp<޼o1A@z|uA rv.Wt!cfqnƌ5ȣ\N'C v˻B{ܹwic>mfo[kg<BFE 7\]4GqyFm=!,U@ H.&g^.pzi{@iDЦ $ lQ[-_ƔF.aV̇(zV TgEcF&fSyǕ>^㴳h OcXKc>}v^*U@4~̘K$"xRM[x\-@X^Bm\G6yZcΘpE {Ǹb+k*\Բ.]@O|.dhnѺh]l:.zS^K&| (h&`LŇheGܩak򅦐m!IqNmđB Ɔ V5ؘ/=#pp8L#Aa]qLjawA$~OyTTXGE$qy%g1ơk |٘Fj(oLϜ!,M Hp_>c t 3#MpEbr aԦ/lfr$MvI)64,`>|@sΝ2 kȔE},/cXUL2NKv,Iy~XYu9uR6#wݵn<8o|,]UKpۍӚsAcqRYuH#5 r3n$cW̜N&i݅aC+]nvw+4P _>fbfѫy>mܻ{0 };ĂNs5kkΧ{Q##]a^{CAP@!,A H01\b ‡2@iʖݓe5,5 ;>טa7},͘Φ@Ɠ+7æMgf٦m=i v^tt?}r:'ϧX_y} T_&gفl)\u!,>$ H6.\Ȱ!A 8 )ԧkF9v2dHLR G/853C$JP%LtqqŌN+!YU'P4@e>@nD$5!,2! "0PD1ls 4hCiAɉ@#0SΤA'm 5@R'NӦSQXTSWb+Jiq W(d:=3NkfQ:z!ņ,YifAt\};6Z"v$ׯ+:bDWQķmq6 Sf\YA:\bڳ_:8";op9c־&5r=F=}zdǶ? )d_ r Ee#uA]!,%" Hr(Ãh"()VL6"#"F$(R)EԖ%J @K:Pn-94G%]ѨIO!ӬQ2 b*@i͌KJC+o Z4W]N) j&"ۑm LDp%f("\עA]ԛQ\Bo2T6nj#02U^qP!'HσA(PwEis^Q%*%K.$ G4QGdOH!ηR|s-F8ЁB @B6m@HJyF"nm޽V,!\pFvbq`xg="H!, P‡J`A(ZH@1 m4BX|')P.MaMG4m: JMP %Zn7iTwӧM Rn X:9U(of  Zd/@5E+dy%1oSόei`X4Vo {RY\hmק6_R-SϡK_~77})ޝkyAj)tMI&U'BEmʪࢄ핲}!, WjK(a(.Bjx( "'-#FuAAYh˧Bs%3eM`ejp Siod iҪ04Tj9EU!]] R3Vo) :)Efjc*)LJ v% \Y& EsK|(R4e}4@x0!POibQZz]*xRb^Fh}s(:RLe/% ^`켟"~dG B!,+%K@.@9Dĉd ‰J#P$>N!\O[h<68u"X,[j R  K5RhBVf J)DZ )- 6)+z9Ek.i͌0 b٬cXJ}aGבd7m,<= Pq{z.(^m#禂N<+.t-Rh"EH(K}VYS< #N0 !,OCp ƒ r*a31@QX08" U"+ (HԱa}#,bɳf7bt_Pxsb R|`}͌۩l/ 6 >J=@;B-ZNe^.*@쾌ix!+6ѨY (ZhBG+ 'SUSePSbFH}!,+%b:P 2|iD tQ` ;ӗFS# @) c`pki4m2g ΜCC NYh1 Ux)l_3cӡʕ}Z)0PR`f&,VYhI i=K!`R1`)PoBG{Һ 4JhE!,*cDp \k qq $<}iʨ-J42vӧNO,JɃCiA*p 6S+mL`> "uP+ŷ+WNpޯ\h EąB(W)-lXBrYBGEc\(T_N!%]OY-WZ!, KHR1B\HB pHUā4sb!6&4BbQ[h@b 60u->}a`i :|.e>HM9P-~DD&z KHf Aw\6ۘU@B/0r*.]XjɒƹvB !q@*JH4,Fu LP(-.ta|c߶KKp2ݛ+ :!, A((!$ 64ȰYĉY cAx6:Q[h* ӧ i7&+TBwiS CA"e5VϦWtj}:*T"]*+.d1;>Zm]di }.%ЩS{m-t_BlOBG\ٲfС\Ste !, IH}. \HP r $*o` 8m :hRH:J u2}"6ɝlj,gσZOyɵhfԡ0NYt6:8"T*,fQh(W\ՒeߴiE -8 hx  TRhYLSW\ oR%-!, Ap‡. ASsQȡň5@PE7$*cI2I 9ӷ~$`NE/TSmBfNW܊R`\6X=:^y[mW6 u*]V5 s@]hօ,Mԩh-Rh@ N] )-lYjWAT ^vPR¥j\< !, G]gBDT#J$d"}4IT#kF!Z<"$.K|7e2B:>mQ羈j SX8MR}U@WSU٧f~U ۱oA/x6X:t\Rlf,jۧ#P(Pr2>aS+P}]hw_N K*lM!\vlC}W\( D(VR!,  ,%A.ڐ:ua.-lhN(f\2EKEJ\ =ӧRzԖ&rbXpL: Ymg'R(Uve5ԯYFbpWhCjkY| z 4Ա Rܪg Pz0EtCZ)TBȢzC*Bri`c P:GJh+.ty\ Q&HK`@! , h`E *\@ ATB)E 6lBJb|$c"U)SN >4eʔ.Z;]Ж'3WE5RNI#- G>9Sز4mXT)Zjs*v,Y+'@|,8eNTz`_ƌ^i͌3KC+Ks$Ib)Y yhR% /W$w%UǹBtx !{xY2%`lB, /J!  Uۥ,!, hCh 0pQ‡tl#!…)h |]"UBx2hBmR1PSنT—46r GT $ zSZUTYn O"B/haX=4t컂6}$X*-@2$@a ^!kߣ a \x!8.O ]@VHg_AZ/ ! , hCgHR„mlChÃ- 4TcDx4Ҡ|) TKT"dS[8}ɤC aip橏<(J\PK 4(+P;5>ʕqZ3caK)YID* MM^URO&"܍۸ 2IǓ:NHh@*z0 !!, ۸hͦ}*L>:ZH@6t$R\El, _}10*q x1}k_Ǿ (P-^ѱ+@IrJ j-61D >۔ @W\z{_(:!, kCG]i@.QɡA)hq f ! | cGxR!DhQC@ Hℹ$@ N}xy4mD1ūMjAT)auؾ+h wd!cZcAf\0DXC(@0꠻2.qŁW\0l2C$0 !", GAm\HŚ6 hC'A-l&8N>1oG $̃#h @++SD:$TJtߴ}9+-53VO>hTmFp64=+"eizVJ6sqEmM(G^qAC-ƒW!, hf6S!|n""<}! -J4𢶓2$Te8}AAn'T B&yP9SZB$5uٴf qK PbݗF1%"/cXźR@\'ow 2><14]AQ!, hp}ml Âk4[؆Φmx x6XÌ@CPXB4F3* jD>MN۷*+Jiă^HqZ3cСc_@5aeXH\k!<{Etjrr\tEؠن2ue.!*8u@!",  (0 \ ‡pp fdYr ix@>=lF'i8L 648f>|@Μ4-\Ԥ>G9zw1իVieigJx+֩>c&$1c1{ Sm:)eIiu7b+Raڜ~8nii9SȐƕm49%.7K82M.hdsZ8 iChu4t\oB&L!BRr+ɽkD9x ɂT);͇;$HrAHuw݀)$X9 Ea!ȂVhOjC~$RMVuЁ!, (01/] e f\ir ixY6};zD&QXp%Hm.gƜFe>|isL9-xr}'Sw1J}]Fi+& +c`!b̧O+J^Sɧ[9i bU '4ii-;pq(•@2ŲJ '_9 LqH,T 5^ǟqsH' !&, H|^\H0z}khd(c"l 5$İEЦdJm8lQ[v1g˙x$Fma w fp >V @MfGv1_@vʸnmhGv\CPߓ)djQ>vssPY/ V`sG6rkL&`kđ$x&pHac"`ejBt(v]DƧdh؃NGajAe#무JL)I+tO4m#f K2qI[q2ktq@t|DP۶+ڷF6bĮf(p꘩#&ٿr0ݑ` gݪQ"(ơ@f(ű0B%,s_lk ,["82(2Zl4>l 5LS6tf_,\;54-6ڈC5Zj\G ]׭h#c-ޡF<\5t=vτ{ݴxV>ڑ D7GľO=>XrH@<5 3S4n dC1n?|7dK2٠Q~[/6c =$3ON,StCHŒ/s)a9p TDAW"4xFo Ha (cQ g<2>఼Ya _!C ad0q FvL$B')_WO0D <&Q@W5e5@QxkT$F)2D BzzJA i hҠBycG|! 6B2\0i0v3>=^b %,6H"1]5gy0#7Uv\C2~X=f@ G WjhcRj,uC؇ i#j#dT:'ݫ  WA|4oXGn.ϒ9 ehF0 h"1 ?<&&C ,"͠UE cdp4Dc|tggz| om=9 4: 1#Q3'ѡ\t@I>8#rG<$ 3@'> @~FzRIPxa`Fgro跏)0c)H2!N#& Ȱ2ViWܤ(x=0` иd[SN ckA܊2$԰@ӽ>$As:ZI pHR~{>F`+ r zH# 'q2մF])]KSq O ԇ",e4nEN8D \Q.7xڱUy!"^ģz r EW_4LFdoH=xs:@X''d&7)vP3<8dPp7Bٿ/D?0_a"]iL#-4;c `)(vGFRad6?{3GTp"TqhN)J UonչU*( }hthxfbic^Y5>1"ό 5Y/fh~|ۦeFZ&||zs|{EWPf|,Ph)#Hq8RXReۗ p]_ %HjVY)IG@GDi o .9d0"O  qMXDV0p#d;ѰDDaEg]T\ol~=OoidLhYr@l|GT #<;(<Ѓku#28X>,'։yv ad:fm2v;IhU@@:ߧM٠ \2p 5gTCrm<ѣ 'PR,9an7,x"_Bgaoϑ* !0@ &)(i+`p 6/ْ1181B9 7C9#%5X;3"182.IjGZI)䐜ӕ3W)4bY%HAo=#0 )mA[9! i|`IveٔkfE}}0 t"4ϥ P{)W +%6"&/sY61d 9Hy3&m@U':y,Qd %jc#vN" I!Eg}Yٜީٛ蚡Y,ṛI5'"p"3 ٟәfjfx@ 2ѝ*_A_([c":$$#Pr}W 4$zp]fAaٹZHj8Zҹ@x)#{/H,"雋qkf CrYp:hik q-VrЙ.jlڦekBs9S"*"ʦ:ɑ%'aUI2)4: *d`é6Ũ6"IJ\)j59}8FPW*I&j18l*_ªyA릩92 jYZbAfT:lZdYq A#qp rY"!u*.A꯸ ]*zkiAy 밉 :1ZE"#˱sW`cXd{5,;ZZ(hd#s9ʳzYr2Ө KM;(9c"AY۞*j&yz s$BRgۜ}:'vr-۴⥎*(|{c2 y^ kCP9y0ʳY"}"#$tKcPᚊZP[yc*Jcç 1[;;*|[ªakkj|[#pj5"{k7*'Y2J"s˽ R}:'h]RZ2:mP)!9ÛjjfA1{ fФfYVg;t le Z8CNb#ki]㱾Yz\:aP$b%vĜj03(uZo$ RMCd0?:+XKap[{0;ac+.*W)~3R1cB:%;#sү]\da+x3D{qP."t°,cb5U[8,zvG̏LNn`#DHМ[s:\Pu+,\£2zE"1c+`<ͱ_L+yq:F%{ ;?k# )3̻l@ʀ2-uK)X* ZźnhW.Q 9̳"]#r tAJ԰Boz@+km3t 7W_?^ՁLF4)+֛O:Hq:"uՙƌ0~.`]U:rX*]bE(-1ۉHn h%!H!0e*o Lz?JhW@ )*֨u{}X@ +20 }Q,J_-@Dv M =΢f-t@ Bma )ĺۘmׄH>+(`}"2K8 ׮,4.⦍و䇅e,D!+B%ޝ`AW^[KAmڙk{]g( M۶ !DB ]ݴK)H'.4}j܆%y+yߐ N`嗾 (S,F 'H`Tn꧎dmX`2 m-fB&c2^rZnۊFjVfҾ#yjgmPatp`#^u}@.A?^p'}N1z>-UNPޮ)M2MC>1O]p~ߵ-.F#oqy> ].NU^+K(P _# @ X+i._]/ ? -. jw?pkOy~X A/`}OJB OP , =JL _NYϦN7qoK3 N 0Rm'"H`. m۱^RZzKO߃ѭP  $Xp)Q%dC%NXE5nG!E>WI/^֬d6t Ih" rXj!R#%ZQI.eS})[ P6 ̩`}`mZYiծe.*Ytiu_E<Է`PJ$aĉ/NdJuaґ3y&6o+DE&]iJZ5KB%m?o_ M+j'Qꖮ_#}+A䐃 'HDK4D o.fjc/Hm@ދHRrDqG{D>BRl󭺰 "HI(d HTrMR*kPAeƍ5 [.O(1-jOH#-[)ES!觜 $51!@0@ C0!%7QW b@HJ1$t0RvZjT($Pk PN//ZtN5VmUV1c} %IBr"z].mmP6mv{=2`#&MX^ǥV,P O s DbS]w і<=rYz}hs-)^`F ԝvZ(aCnM|iÞ(me0[cQ-׋{n5Y7Y6r7iW;ZV4:fDRq3ψq׀BlO^ #55:J#x"^ \L2Ԑ/U\1P0 AV a,U}3P*!f S+GJU[xUfckH AncHh !ҫ\ KVl t&@AbAf(4g/Y&JOh=Dnlkˮ\2&9+Uè*Bb![VFjiX&ۡ\Q,$)EXf#)M-}̌de/#UX?m #!깨^]QYנq,,(Dha2"6l-ov!.PL &A «p EoU.syVH-tq;rA=.fN{ f>f;a #hEPPt&8|1 Wz" ZXXo5+H&PR@ -.^אVz> 7VBSX&n/.v$LS!iϪ9isELXyV,3_-\JEԐw&Oq8j .nS )cܰl`3Mk0@mmd{Չ$yjxA#.0谟"S@+)*;B= n*ʑ,R/ۇ8/D& !ᔌҝSD(Cz2: t*ZYhDRr(9` ıw :JC՘B`@4_2(" ų=={LaZ+<;ªcE ɛ ytZB+60X=a clp5 ABRA&^H:zc6fȳѤcR=M Fu<؇r()}B)C:S#\G0HyXȆ|ȈA`]sӉDtJHi,ȃԆfItHh0xH)ه:}xP*|ćzIɝ ћEQو?paT cƁPˑԇcUzE<\yL4ɸ@E 6ˈ89xiLL, c@̅8٤~r3ʴLLwLΜ|pK\H}؃MaǴDNytȷ)K sM!LmcN ̛ 4pБAۗtNTzڄ,Nyނ# OF "O az`u!FUH ZȅDXM8H""ipP(9r>Q9u0f/0Fm i0EQ$RO/P6H5&q:qDWN.՜i+ &qĦ\8]sQP?JB9bƌJi DgA A3)Y!<]APrչΙlڇ=Rcu'}($qDg,rVձDUd˦2]@Ut*$ =?ax"6 ׃eG KŒs%X|5XڥݱHrD0XM/@o<ء0Xi t&R\A܉ŇY\A%biA~:R=M'b&ɡ%&b ~ }r )EQ :e41Vc #R؊ ,kecjۈY X>&u } ž?4㊏}кNiq .IEY (_ލA.l3#JZ| kxk9AHl)666/ Yfyi6  cD$H3Xkpd ӰcăyʉfVnf|)0l (?~B펔h#5`F}Ȕ ߠ &Yotio|b]*`V"qn^Nl0Den9Onp>.c& ؋?fp瓺6Xm ظngF:cDĠ9h?h)n hDgϠψ(;rIfV8 FZVq-g R8ƒ`.)?gYpА6l:G^Jr۰m?t4q//)6eFGOqVrĆvs Mw42(7? F?u'yv7_=ƍQ02Xvp1 )shdgqqVwn 9lFa)G+k._io.q؞j)r >#20 j6AFh|.gqj_CxM1.{?6f/ϐrt}_}_o-9(E,-R\vjRcqLweG 9 .y߇{ƉK?+qS v郞u \鱎O`vB =&?:'yqW/|UM×$_Vo8|L'MwfjD6bmSO:{*Ȕ`G7+޼zoԭ/4 MqyӓMs}r3ТG(%j֐xMP gB.7‡g<͒p֬Y,ǐ~IJw%;pM=>n+2ӻv?Lkz tDGB Zx^fj4šY`ɑ>=!-Hm!b%G\Ô#x$IkarPta>s(A**9&e7yf嚇%O aCu'}&cY :T"vq>;EB(9)Z%#3ڇ;FRSuvaGr"X*4 Ćǔب@b)+*KQyĔ+bq GD)C.-Ljj+baя.>BvC mx't ;bʬAjOkjGs1eP|hVTtA,Stʌ\4F;SBb>ti2I[ELLsE0[ sW1\jd>6j թ|*6#=ME=wW}uZ\n47lt6 aq;TxG {[!Sh ~d'hz 97Ԛc9L&gƦGu ؍/d>|oD4t+[~86#)dI^Qp v;A"-*'*Tt!ˈӜt~Ĥ8n=;eYmNT1QCUU>.5JYV*u*HD1qS DҮ:6.T!d(D ,aU)17BOW4 a3'J5%Ht-P C:V$uGvي,[7ݶA%&3kD:7Ѷ-2WV#[D!o-F =qEyىӹb0וq;F(9=q'Y6Uo86 jɛ]'xrQ,UGo1l (G9Kcx;0E;{R-cZ~'%dU<^C";pٲ-Ȥ}g=~grIk@O̴̺1տ2WdXr"^'5|C*1`j!ìp\6v/aj%ΪbAS7z EY,/f+-7"9%QVk)zԶ&]d^cCe{nLCߺ[YuY-p8/3)xUpxDps#P\tl8slPQ~S ?z>Fɏ^j,N *BʊuOzS+~^?_򯓽)̣HD]#&Q^W3b7MH`=Y΢ 33ix#K3Ogg!,* H*\ȰÇ#JHŋ3jȱGlHɓ(S\ɲ˗0cʜI͛8sɳϟ@ J4朢H*]ʴSqJJիXjʵׯ`ÊKٳhӞU۷pʝKF<˷Y7~  `ˆ+wǐi8˂Dτt`eШSP U˞>ĦͻwӾ ;μZ@ynk70\νkހX'am4}ߏLxP~% LEn VhD~ !$wWPu|De A/D4H(S@ƑuhC8:>1;Z'%TVP atm(^q1$hRϚkJ &DJtZ7G{t@ tfx>5#vFJb>R* }"VV}JiRjeC h¡>N@ )'+rBjl[ioȱ^{i)V>b qP6{P Dƕ-l5R6(t.>&ykQo`CPj/Blf m6lKt1*A1-=̳=>KF2T0u8wA /4V-1#%ɠt=443/L -ǘ4PM>RW$MWؠm$3ss5wO/t*ӕ7f!ǣ;Uk#Mhn=E0> C`=ugX1ؿ'@:MO!P2(?N3g !)IJel3 )=1˃ tMof(Bh(}@1cӦ㛡5r)ϊ4G}L!vL30;aP 8MmSLFNhPm NKxnmg6;=N΀h;?H!Ѐ3;͈@R!U B ;)FFfThʳ1jbUs3 (5ڵvi7ZQudjBhO-T!&ql Th#l<Oxorx\E66ky͛z@GȘ@$ P#c|5#<: iхG7`MFnP|X Ӣ`^;x x+q ^D_ f2A3Iz6f:lF KwxGSe+ AhC;066;4f.ͪ=Zx б8xpzj(O1! @bX`Q )OhƀG-x b`cO_9W~UeJ\3j 68ȷ4Eӕ,_j]O z;гְCSߣh dkՂ9jSyG+)`M3F:t F #Dc]U lt100Ylik7"؎X }]y 7kH:ҡ\3.y(G)o~ky!!+Dvcj0 [oIDc׾Z`ry )Tt؋ UU_tw^lg(!@D/!FPl_ N>߅N: @;Xy 6?IٝP,wB2fF3ސ7^ P{6i4CW-S_ #`YGh@i]Y`EGs#LTfK.hCG~ͰeSضxUgC6t^3*1zQ&QZu ` A0  600f^g\euj7sF$ 7 aEELX65 mf'e̠{Wfb $`" RmoifMgxjVc Y٠JhAw@dtAm,p"0hu0,h# XC( Hh@8hefwga#%$A +D8Ex%q(Stxq0a%XBwUP a^81z"\&en{-"' NQ鑷' )((__ȑ*y 狿W\Rn8ɒ-%#Ys@u%08#2|9Lђ0o񅍾{x 1JB]Еd O aj-)&!!q&҂|Аdo&$0b1BQ֗i/9gAx_3e2y3q*Bntҍ'y,q(c_0 y#$q(^{Wb:&Y cPeٝ^IbpPgSi`yIf0 "i"iQ9S_ Xn1QXr0' 1,ɡ(_dkDZaAܙ:j:'$N7ձĸF=:nZPb$:C+#*GI/xѤ斘8#6ZdZ#in1.iYr9ah gXA9:JzwcU)z)Y B8#|q19P"{Jy?t%Ӎ(W%uMO,4)ʪw/jn %gQA 1{Yz'WtԈ3Qj2Jy6tQB暫ڋ*W:¥)(!Q& y9vQ! (Z>M@B8cݩX8#'Ս;/;YjH¥ 1ɳ&]qP%37jʉX1 r&{P1T۳H o,g0yc`M ,z'I;0)A'xi)&!R{p[q;nc@ٮP:y; g!A$P!:c@;$Qɺ|] uK eIJ 91*0}Y muYC䱳̫֫,u )+ٲ盔؛lQ{&QlK;9K*9IۻZ_JQ +# H>Hn`RxjJ¶} ۩9X%Z™# %t!BQ6ڕN\"-Q1#G0$G9+;L0r&JYz~ )E!1UL g[Y*u2*#$厂t@ÈgPp Ǐ<]m0gA!Kc<(1,-B($b\Y˄R ,z|ٌ쯜}W۲^\rڑTWDP0IۣMmmt`Gr0q&I݈݉lmuݲѻݯPؤ2@ bѹdo-)bʧ PQr=|ۜұ'H-DA p &4 %MP.I1p.~!Z߉H<F>p2XW A-?N"H bM `Q:Qz-$L 0I:NsR PN->RnYAIQ pbQh%œmmmuδp)n'ȃ.1.A^ym@ 4>Q՟n-P3oNLUٴ^unB@m>Q}Qܥ-.QƮ2nm^(>GՃ  ~>̡" E;ju깮o] >< RR ~~_^_쩋)uo]<2?ێ%H!Hn5^ s>CQ/@R>X/RM:ܲhO_ߙ^m 3J>q!o?i "qq m2r7*O q?M oS-ưnA^o'wU?ћV\o6 bM6<>N / u\` P oZO͈5*P @M%d]NXE5nG!E$YI)?c5m 4H`6$BxjċhQI.eSP[sLxS`)H24raTiծe["nB8rUAE&\aĉMέzu&M3*aB2SgСE&U5 $p2`C,[VD>; .o ]3f@Vn=rYB7-uٵjܮޫ^vEUHfKϧqY)O,ˊ}YSpAlrl9+RN+393qDKd4dh r0CSrsqGk[m*@R"C3QH#5'Zc9P}rqBIK5T LHBBUJ#SpAuW^{rUd"?"2Zs2!8Whs.`JEKTL[o[på%54$=hp뵗_Cu;Sh9'{Vqū Ax"eRBx۔,Yz/ZC76%:ظ%ݟlyfƲDN!B` 䚋6ĩ52e]PCV=j'Z{Wz'ŬV7ƪ*3^ӯBװ}xE /0@6MB,DӞG+~{ǽUf[ϸWۧBeE-+GgSep͘ =c`6t*/"J ]aE@.1\q5eXİ#a\mAy ī2Cd6BIbwC$j\#TWf;̈́"X'dsI䢯4st M4yN5z(.qWԪVq|I+񊓎8Q#򥮐b ! 'E RjXUpa";Pspڛd)THI',E!ºIэ.̗ZXɗZo!d{ߤ}a‹f0 27>P}{,qE8$L5C ` s%WN$_bR 8%ٯZu*"IXY)wgFU'n;f265$B*hXW#hr-"_+z=^f3E/sv6d9HއĂ9nsOJ@'uGwyއR}@(BRx͎I|1E iP?$&;ŕGT&S_蜽P9tTAa q3[Ȣ}|:tJ8P<G` J3L:p/w'K eJmF"x(5VcTa<3!wt[,r[)Lꕤ\.{,I?roN fE B\,ɇ1 "t/CH⊁FsD2?/Kchk@3++SeI9xnlP12}T +[}4ɘN)p`Jde_Px7Ȯ )Y,]򅥹@z _5EJZ}'-K]9/6y'MwUoH>>69}xp!Ә6_AovC4B# [6+ i9<综 PLcH∜*rckc>Կ)XQؓ18@}m=0c} ?c 3}i<PԽTc9=鈾;Œb p<ܛ)l;S<2Z a$0$9"0IH:C4ipp;0ʐ5BC$;}Xcp/p:1#̠D@TA ̈-DTBGĹ$4 &Q0Ki4Y4|=.@"s#$b =J Fl  帊" VEsܩRG!J#=)M{l3/QP 0ȃd8Q$9˴S@Sp\@/35NPok㻒Ȥ;d*t™ #s18G?ʥ *( Xpt\"i6pL҉oaYH/JI ?PY ȘtR5RƄF`A$1؄Hu{ <(jMB H ' x֪x6jl/MҬr Ҭ JJ11̍LL"!ኖ Qt NA*2Mq̞N$5u-*"*n@MIʚ\DqR0Q\OI3 ʐ Kx8Ol4 )gM@˭4 A-1K~لLPK 7n3Q|# *M Ub/D11ҫKQrُER(#eS%u,ASmތ`-0;J 7'X ф(U.JA#~86 s 8= $EX%T.5tAy40ʴZY 0|Z!iUuϋRTW7c`Ex D tAXHXG  |EPVyh$hGp(;V )hjVjEdMu5зE(VhD!W|W]Q!y =@tUՈ;}Ub9O +!ۼ_b%mUE͓ѩ#'1#ۈٛ=і KYaeZe^ZhZՊH}) 9Dр}ڽ>J\Dj LŅI%݇k:A 6ؑea9#3[8Þ h [n 9Y9"!v@ԾǃE)_P﹊ &#,Ua0^W]}я%XX"n~ \P)A0X ]b?#5'0 RGz$%aWOe elF鯄U}#O^Vc}!KK }V)ez\Ksٔar5h`&:^d~5f.g fkV:"U`.cwFrݽ(v֫\yΚ!t EL[˘\Ƙg_uceTfgPfV:"׉D :ghiAA-^:xfeiۡ2in+%_ =ar6CHR!U6jlYad7^hnXa*G Vxذ%!`>T4^CN,{}k eel" F^6ffRFC~Ɔtr\:pni 6lvZNa3@m&9:Pq%nnֆnF&fh6m7m0ʃZ nofaVk9p G,YM eV!l)졃 In67mq=9VDr&rz 89`}rIq }1-Rq3x8W=i 57@Ǟ,; EGcDOhWi+ ;oq8O8a57o9@="|uXn3PƖ8`I}rV7r[gj;<=\5~3`ppotx`~q e ֮gt'nwyΞhX֎ǃe/xr>G؃4hP69,ioqq:Xn;Pjw@ข+؇Gg/{zvc_G8w/.m=%?hJ(w  +؇{+gQWw7pWq6og;{Рoo*֦x2:z7t<}zڧ2|+ѧO|@}V5@o8{gwvݯgV(~}7}'_6o}z}ɷg߇zwF)+W ,8˾. !p5yoߛ84ONj",i$ʔ*Wl%̘2gҬi&Μ:w'P/*r!C3f[fcEo䈔cU9}JatU$bǒ-k,ڴjײifQ ^2#aũx~'WZ'Sl2̚W58wy@dg_ qͲgӮm6˝=ϽakodӆE9i>8H+n:v4_oCdzx{:MRn>{?0x SUdUuQt4hRc(ͱZx!o_&!h FzdF|l`8#5X/u] xiĥWu>7:$Qb^p )d8FUT!]TJdi&f'$r>ERmz(D%d^J>-5R I؋)}(]@U%F^hd$+r'ƣ(VTSQHdƶj-&kjVJmATXY4j%|(k{o[qI&bHu*0eKiI_D)RTF&"7jK$q0!|)1 &r!1:9UJZꡗ:ݍ-X~qLU!Ol+|uTi>&蠦;k/V~tKn>7H=}tZrDD'dTsVֿG#(A Iܭ& }d=p{[yJt.|Lc>6H#$j_,v"A+(ho+v7sx#@vbdePA&>ؘ !?1Y6D 5lSOCLf]T6i.fd>iSLfКn6iV$p r>|3=ܩS P  %Q= $R=4 5S3/L 1J1 *j7L6k\aA^! *L2jj=2E7a P5sCLMBIҫj#MvAkTp&,0n6pЊSjï@ɨ XLS Lǣʸғ0Lpv[.<*<)}orpZ1( 3R>cnp5P(0 m0LO6 +444 _2@]L0L5Z33.`s7߱F23>.žWc6\4MJ+I4D#,K@N{ c:a]7 FL0 7 4<ݢ_Ύ>OqN13Db:VQQ9`UL6ԙ bh3fT!`1@d8Cx1v;fwV yx5‹ffi Z_eFkb @VՁtc[^n*Bƅ" $6n caf7k-S̅0,L[cҒ  Ȱ2`ݘۨ qSGpp/ӗvgV]Q ڭj_Zga?H!X9f͒q1n1+*hb%Ƒ.. k F`u5e}h~j QFyJ, iW8V8Gh# {%ӈniA=PlR Bw  BQfD!BQxaMD=u(kYQ1n'9ASPFpU?,33**.,u"0WhdH<Ѱbk'E԰T<@bɰ<f5#)KX;La:J4)vCMMWZm9QԺfˬG5SY~E07=j` `%_V ,^0XUre[ĥȻ6Wc%X4wBlA[RA6xlCi2!^yN,p/pn4)xvŖOK "ig5)Tv$4(GC2+0NAd"0Ak3uw5Fϲio|=X*OD!l06 i Er-,猦wiUt0`F9c& $4JoE dzTP<pe'AWvDedmyo56|6 I8 d0F #7 *^lxve 2n Av8V ƌ0جi i^)pQ,q?&hJJQN"d7d"Yq X, h}N2g  ַ! AR!؂vlcfAс.d brfE#|}: f|8z0S*X,ZL(f8aDq[xw=lqYXhlbP{ Aux@ !8)؈ W@Jde6 1dGfh`#0H~Q'RQ'8NB#'=wX`c&gdl[8ldJ؊t$̘wAqY HYAAb(HAfPшa،8(츏Z茄HYJw!sɏ 8fh/S8אQȑ)fH$%Y(Yw!Io'83r; ((hIhؒ|fX7$VLyWV(hڨ؉HҨ/g﷍ra_^'|؉Hy<$'8]@uَ@ُ <"ak.] k-2^J!efqmPnBX Ĩ%m[aE΄C~ias֎|Pp-0ٕm}Z=Pu~yR^fıa {à@ԆKu~Mg& Qw؞1Ʃ[qnLd&$AZNA^7׼íL,>~ α-͢{_><|rݽp?!+jϲ/;q۹PC @쐪 ^㬦}aOtPk!]?};񞝶MoAhVna^ ?,f^3gfPa1L)|{ aޜ_|*/N4eFr5 X,wƜK \Q[*إ< =DQ RѺ^!؟@Eʠ@L?_,a#~_$XP`, .dC%NXE5nljye_WH YM9uO""M2"SQNTIWORaH!ӪiծeۊBIDIHঁNT _)4>Zې D()I%\e̙$u]B<䄳4fkB2vx(0a7l^mrky ysѥ/ oxcB'#2ŏ'Q܁vI3,myK :,R`mPa}轈xpB +H5PAYpR*jDSl_G)HF*QqGQ,S&lQ#zTrS䔋S *JI.N6h@LP[HM/t21PF :-O8$ e"eqPH#L.V &4 ړ/,-rDICU88, ,UXw҇MbnSW`s§ l 4U 3Xhm*k\т(Ki7"h1h0 Mxw^z"A ts/6u^~xW@I`^|LAۆrxc4::ydqPV0"zd#_T^D!P7%fyxg`y cei;6yۮJaz&btT%FdbkK܂5ЊWe;n ځ cR.2FYv|GxhHl ;i .Uss֗< zu_shG dk܃w^>'0BF3WTy~U ڳѻҚ]{(73cN~$?E+)kL!`r< XB?JɐVQ NJi`=U$+)J}P z,u Dey m(ZAvּ2:@uwh J9'f*+dh(N 8ZBpE4քHWcD]#XLc)R.mh7jH)hG@>ѐXƸ26|d$Oc*?o )n5RVISqA:ITyc]ДIQRjaVsKD&੡FN9KY(&T5CT`#E@z<قVMH7;EiQgΐ:JJSŝρhr n#?60Ν tnLL ,IR4ћq䡏2$; sNJ垧nҖ2<=_299Q\VzH/ Ha& 2SH=c]D V`4vvRM2w%ӌV5%"}<Y_͆," Ȃ,ֱ%bBGcnV9,lN,QM5UF(mR{[M6$ohٲץJkWb\v(r]W0k]:߫wQhEZpȋAvPB쪆F^e0e[!» )~W8WfE$A_^5HvAJ4 ,+3w "B\ ^0KYD'v[nؿ΅"y_?v"MuNP7@nd&B[>6ۻI\XO3IJ]Ub>n)scWDnE}Hg 9Uq]1~x oД[v$qnZAvw eĨ4ZE\lK v/A Ą֍td "ȡu+=@~Da׺K:etmfJzmlݭSYkɤ=_2EPVCoe f[gsw,CD Vf3wB[ZݶsIt8rIW|L,Ls0$A\Dd9=2i!>tW|CqUtQk] _ ;Vf@mCҙ==} bBDe|WP+5HrM KӯS'H!>G>%99_^L.}{|>Y񑥶0*}P0{z!kd|ޓ$fmx ? |hf&?}7vA6}݃x]5ƻ&{(%ҳWq˻23?@F@ } à=@:y==+ף?(<$03j;78@@##DL@Q@(4@"c3P }B۳;<@2?=B0Ę =C4DzBsĒ>đ/BNs@TT@`DVSA7'Dck[D;#]46PCOj? F;ԇh(E.l7Ȋ'܇kt@BfPKCl|G[XhhŬ= l;>?Du;gT50 CR|4;} +($M낀376\=,Y,n\HxȁдLA5HCōBqIq!+4(D(ă8TI +0 }P1 5x7J0B< WI@ʀ#8lB䳃e$:ʀH4,Hrl>LMS K!ʒdKK8LJHKKlLP6?(e}T\L%˄8ʩ#F4dɊ8;HP>TMXE Aȁ9@TT̄PH،,=| ǁ QKL=;}dh]tK6̐5BD́MINt]DFCD L8b|˧FZ̄@LHζT_\}NN̉ łPC5ʅ Ё u+LCưlC}%)Q l, X9kt75݇>P ݑPd:{6BL$mdžh>KR.Q8`6Ҹ,S`l$ECdST$S8ES7NČ:=SXKrHD "Q`S@F #58Ĭ7 THN}CqÅpS7pU5 IG(UWmPEYBE,R[8`R`L=֍=Y5Ve`gct /#|h6  kh[22r+R%_l`fM7 *xYCNִWN#N㈑gիFܘrҨM%hlc>$4Z4G0_7)!cS$iNN{̒u8aC-%+t6Vk! , H*\ȰÇ#JHŋ3jqc CIɓ(S\򠜖0cʜI͛8sɳϟ@ JѣH*]ʴӧ@Jիʵׯ`ÊKY/Ϫ]˶۷p%fݻxAFy lO­+^L0ǐ#qܐr˘3;|Cn8#ѨS}DztT˞MGδs67b[u-жoMXN;'=cOT :.*1y_;GHG'7{6CkD{>h飡4HAs`(" #(bt#4shcp2t($v="A8DȇC6)Z@mԗ$\>q6tibA(șp&>l>604g퓤qrg!q&՜'54ПkcK~ۑ%Jy'BМ`fsC7YcAP Y@q$XK4DEHcL2Z Jdc4̳O=̼,3E@3Px--X+J;DK2٠Jsų%{@6KPX$C3̣ \52T44tq=kpfvIj4U<'0 cf 8 mVLa:B$N6EKcE2RO1N<ɶ ,5K3˲BSP + _[3B8Kщ}\x1IL64lma`& zM 0=D#Eh*l@n r,scT{6Yw4A3uK< 6a7"t2BNŊEǹZ3:nf4 Δ5` mAg6wlM-[V4ޜ 3]H&9,sgMX)fw# ܾ$]Gߤ? ^ǩ3dipDAܪ`6z|7H- ^3 K/gR-+ZlT/ d|ņ!?'X[-fg7s~#ĹKV%8_uäY7Q?#(: u| HԷ\[pkU*8QXG(]p&Cq.j83Aշ? Q!+*ҕ%v~t]A6Xڰv ]`]Ђad$wLX'uׂzGK؄X尅W%(XB]f[XE؁3dR2 gX(k8n}q}}hq$ vX]jlj}qhXi(‚XXU pU%,?%QUc8Պ(jWUb+ e؋̨x8FHVG $͸ Q"pb bP)qqqȍhj!@8؏፲8zD8H@Q"]ȂA?+hWe˨^p*TUpي%"EȁW5X.'I)!/ȑ5IǨx d(IC1NAq~T!xE8n؆ȕ-ۨ ǁj](Zu@jY')*IaWri*Wk!“Ɨ#""fi`) {QŘr.ɐQ&(Hh(dQ_9Iq%Iɛ$(X !r9؅3ɌI#ѹI@(OL]hawrh Ichj"Xq$p)|  A١)k‰eo)ɑC0:IH6> Iعܱ}zWCzkUE(Af)\)颵 -HGbg(j-2km8ǐP"*VYU[ ! '`pY8qЉ@r *59auɡJڂ񂓪txHʉA(r`@($JNby,9 J,)v!@" :ʬ]"zi1A~)ڊZX)t Glp%q821NGژk&yb+",qBH⁩+;WZ(J'[y8rx$CiZ+8/hAW8BK%RA:a HV\ zY2qr~1Kj_Kzr0pL^ydb+$ jm@딷Y;W@[j+:r]k (:|ˑ%j'Z!]Eh{{۷DB PKC{ 1] ۹+CGJ72+q $%ki  1K"ዿ%̏PG[BL*LbP!Z,p{  B´HN7NJpPe!<,)@l(@+U|qkk2yp1P[ ʯ'%, ˽<@ƈ LA+ < `( $[ ܗsA`a,le,ѺlP$ˣ Uy=}%lҬ\*ȌҌ1y*|1Ǽ5%q8\1rPk<IH@ ]+Rl{p}7=mmփqrmv !p mKR<,YЭ`= nqQ&0*LqVxנP \ ߁磌m`ޢ=Q  .ݼ̝ h-e !mdj[F܋Q< J̡MG8]]BemWI BZ Ae%ں=*=g}Q [a,!׃)& !xlûߍqlM@K [۽~u.mU @>0K)\!1 ~^UN"M .dq&K>c}uʥHmT^ L eX +~ma }] , QNB[> %ͭyV3c M.;Ж|^ǜNI^N]/l[/Yܼᆴ<aiYk^n^/\ }]T}/Ls ⑟%@ _5] 0UQW_OCS-,Z`Bb(\EnWar_)+Tʠ}p4(K]y7#}P$ TP",)Y\e̗ (p@P!-/Bkرew|PʨuSMHTkg'^qd=5@uٵܙ3Z)!)kΜկgfS* I:ȿyp@:Z)PJ ! /+7[-⍠"gCpE[$bMPQ*HbsQF$m^ODB %ÌFC9R B| ŅfuTZku(0LlU˱I2I$EюXd|*Pr?꒵Z#R^%#X:HQbUw]Ԩ+ӹJSv7dMH!ċRH*N'"su኎ &DU!$ސr[)a% c+dc^HÒ9IÖZJf{,>0ƕk\PD1]|}vIZc/E]+!5jeVvKSڇF@U1Qz֕g G Mź Nf*[Q P^*<r>~)sLYw Ӥ'.9Y@dZZA<ӒV :cb}#\O6T@x& 쁄3̎IJĖΘe&D-ZD4$q6 H DN⾃E`%0BZEzU$z45eIoHҲޔQC}D)4}B2s$epq*єBF80F=q._,F-n!E'IT(1qI|I{vrjRte>m7(BD!)yͻSF2LLa Z t0f;Mm4c&)Nc<))H;wT+GAQm|hf2)Nq.P v=pP}IIMByO|$7S(v2Dir}4#;N"OT9x4X!bM5}CӠjUJ}R-'D*B0Ƨ>(R5B:K]ghD4֚ %l3iRrSJ!Ehl`IxC>PҒ}(Se]V*!pֳė$)kۛ49@Xf0k^KRs׸&`dx (e' e/Gi]fPxٵW9:1pԤg0o#ZpDV$:A w1^+{:(&E(b @ӒRˀJ[^({8O1i (*Uo%# $NhKzJ)Bcb 5Yfms2T*e;Z):{G)@ې5czjR/k5.7fLuԈ~^ 9Νe")ܐ6$'kH#} U L7ّ9jF֝"3mq̕w]I\S n0)v3dhrD8gɅG+ً\1~ BMS !s80v$g(5a7z Iٕ婎4q\~@P$# 3'"4ikCx]*I^~ E%uIҭmڛTCd`!`NdoNIAbwXdS8tF'1 lށHZ tL aF8nxKp\YA-f3-,~Dϐ{ܛ}[vK75='҆ݶ[gMo/9)0!$%^}*>~Bv;qOa  N% P@E Mڿ_!;Jx?(Kݢ̃%o}OU#}Ń^-ZR^Z9hT:]ZV5_=9 eY7UہЃ>RKUm26C4\-WM=)A_eX\T`0\:Z}ZU `츂aaY3 aP^R<`^Zr⠁@Pb+(YPaXه:=_<@}b" # 'F(5݇;e NV310 %ƈ<^=>+ぐ+PM8h!~;0cJD*uM^>8> &ZHnbai AS:WRJ:S I @dhw݇]-܌eX9v^e AbadK3(6WD𵃱a ^Ef4Yl+X`M6ި?\6veQVg >dh݇ܭEM\J8~|g_n2.c`.>]+8s^>Ph~vh ˓u`eޱaד&eafdF:}:hpnށ瞶v. Y\L ;8j,~j=!T~g2MSr:_}vj)j6LkNfMdZg66cr^ncĦZFC.F9mZkH8_&k6aiFN>@Ֆ Vv<.jd4jGn㓮hnXl4f])m0m Ўvp;75=߭mf~C>dyVn&o҃>p*^ $5n]&eF˖pظmܤv5p 8PqZpnoq*:G9iPUiXqq&o `}.Zk^/ Ynjf3GsAxs8:9rFv/;8?o.W7B RmEwE?G؈n3?}8tJG IOueRgGTouNwu*guuLu u]Ttu`GSg0bgCb_vgw qdivkS!, H*\ȰÇ#JHŋ3jȱc CIɓ(S\ɲ˗0cʜI͛8sɳϟ?JѣH*]ʴӧPJJjS9VjU㚮`ÊKٳhӪ]˶۷pʝKݻx ߿ LÈ}ǐ:L2Y3k>y7xLH?;^ͺv,T ۸s[qi{ Nq~/?\D7u)ks{q}ѸW|f}̫ϝO_K|_ WT0Wt&x-ǘPc O~eaXԳ6Q68@Y#B&>dX7r]H]ZسN=6BAHJHcL2aZ Jdc4̳O=̼@&3E@3Pؙ&-Ǹ)u9ݤK2٠Jsřy@6@JPX$C3#lZ52S$ClP=WaA]vIrj#MgAjQTq&,@j6pԙSf@ɨ XLSO-͖Kd)ق oғ,uKl{\C ~LƠ,uNKL̩~1HCS;8À+i:/=4 SLcLA,%S tĂ\350604Lk$<-u5#|LcK4.fB`TMC1s̠|G*%;ػ;d1"m3pj4n3Р+Oɯ ljzJNT'zT tٵ Ȍ.q VSȩ:[0\ װ!4 1Q2;&8c7T1h<DQ 0z /t"[9Gkz41iu#2Rw*ftLK[2g(xYV;)UPARoښR`V!2u)4K@? 2Z[BZS:0Љl|1;{5)ĉBu ӿCxP*Y l\4 a>( '@N)kרz`1JzmRn,5Hd-Ⱉ6頦xx(G !Ag06 j&=7X:rHi dܱN-r7jЍ\*jsC2 Nd"/cVg{hgm5F.a,dUJRN߼ڗٹw)Dg-+Bk{UG>Y~kN~f[I5iJKj򒡍FUnlaJOXp XcRS[Dk)7_o%i"4CBkS3bajtd@Yь7d¤ͲڻT!tO rF0nkL@n2dt䐆hDq ԁu$H3Djcmܷut1bL x#^2h#S65{d2ܠAP *bFJqS9[&k*:6l( c&!]vUو ɚʰIVʲA! F>DˑucY7Q<#(: u &:TCXĹ@Aq|HAP͇>/d:9r r21:B >9/DPKRX5h{N58![)Nr\! i2x>&5َ6I"ز "A ˑoO ="lЧH8e1 GN}cW@@ۆZ OC~Z_#{P3D Y.!}Z8 H~w7~qq ؀7d`؁ }t(_~"Hx~(ygeq1}x9׃>2!H]ւq+vJ}(vA$7ZUy3xw+8j@v?fxǂ х1|mwax DBaw!x8l~a(vaHx4Xs爛Xw艆Wc@yMw Qz;Xu{G$؋-ܡ+]|ƨ# h'x"3$2cZ7zǍ8muO~]p-kXY(t]} uH q H8!xu"BRّCw Q&p*H-)H!Q 5 !XhO7$E98PvyH$(X@  U WY ~^Ÿ`2Z,}n #WY1Xֈ`muWI${ ѐyq}i9yGQ!ٙ575؎rW]kwٚXIA  u 9}I1ɜ@y @7 qm G)?'YY$7 9)[fۇg9 ڠaAZz#Xѡ J q, yq!3ju:٣?zJSr0 PG 9Aa ZJ^ $C:0 ^*l hCaQ_y`*xJ.JC`|O* XJ wZH*P::*>j:꧲z!z1RJڨ yUZڪ ʟdڥi0ֺuA"j~\$JzAjju1ZJn}e( GKqيk1~kѯʲ@ڞ* کgu0;6{2+J#mq]"ZU>zJviJ UK)՗P۵yZQ fW%[GsYj]n+q AK\: j{I$I}R=KCګ k;V 0 [KA};KTqV 1ŋyᰠ~\ һK'w{+ cɵ N+ɾU)!\}۱ڗP {lX yP P JQ08(|iZ{l7\i}/ȵNLX{fqk=7 ^ۋgܰķml1,\M|o}ZR]Fā;Lj췭yB\5VQiE DY>ǛȧaxˉSqZȶLȻ a |ˎ liIJ W0X0 aHqѫ.+̑z|ΡLynK<r+4\I|Y~,ZV}|\0IMH;`  =%MY$m!-W p, M=]>ˢu`j@ V<1G)Z!SȸK0]}I`R]|h},9<$xm'-weԗ;J]؆[ i5q[W1Ӗ=;1 Q٣-۱ ᕫ3x+iuLӵ3X{k*[{,qib|myȽ+Z9 ѭ`}> _UlG*-m a zmMA- M~ N-q!Iw 7Qn2A*nq14}%-~<j)>)Ai|H9;fQK}ɾ1 @4 ͙{ QRml}G.-wK xh( |.ݽjm1 ߑ~Ÿ0 XʠwN{ Ҝl)qǂWN2\}}_9>޽蝚vN>3بRJnf`y +'|>$QL{\NᳮN*}Q.7]m]E _^t. pѯNW*wb~nݝab op|6o^Zۓ+C:~E/ȓ nHT+ oWLl[O)_֭=M]oCqh* NnP~}J$Z %W?Xyޙh3?1WM^j r2~Mk`@%oBq,ok:Y]v[NͭOY~ @5O7L7oݩ_:_g%I .1.uD $8pQA7%dC%NXE5nG!Eo5\R}$YM9uO& TCI1\ SQNZզ.CULjWaŎ%Ӥ})l̉MΥ[]>l Q^& vo–0iP6>m8ÜèvPy%B+!#P@J(ALmb/"VArW"N@8X Q˸32䌒#`~Űpbic}G.3KYg!w,fAJYot %o8sYZE@ KH 79L@\AG&$tHr{)_>?c1xK ۇ,Kb5‘l!&אlSydH:ՉHv ;gF8SyeEI}v!T U8;Po('i͊fT#gG0џ5"|>?M+e:R`iWS&9@yATC%jQzT&'AUjST~eQSM廀!, H|3V/>DseMBfb9MEQ>.IȜƛ-zp,SNc s_С>"4jӡ>NK8uF-d56 H>ʬ5aUiV$Dv i4MKpp4]3}A|qnNcJ߄댁 ^D#K&$Z>4t\#`у]i벯d!, H*\ȰÇ#JHŋ3jȱ:CIɓ(S\ɲ˗0cʜI͛Aɳϟ@SѣH*]ʴӧPJJիXʵׯkٳho%۷pʝKۭv˷߿O L၃%vF!Ð#K'aɘ3kXtrtf('NBSk!;W˞2D9Q۬߸ nӻqp У'%:zsسm^GfNq''._D5>sg5ƇAq@xЁV$!"Xw1(aIa(8sm%4r(2m1Ge8c@N qH"Etȣ@G.)ҴAGi@6嗼Qژ ƭbs{>igfk\AnBCo)hdbFtHǠA&uAI6i`J `AչljYl 5R6#+> u z-*otZO#*,WJMAڈ3+ =Zr<ܜ'BmR66^ =̃=Ț=ȻmOݲ"d+0GzA24$S48\IL3MASO=̼03E@@ \O6 M DM7'L6l\!A=`>?$ L20,1=LэEX32AP8mc 1,nAq )u6T1AU_==]P ,#u6pS,ܯ$OɨXLSv?rwNם.o<"ƀ[NPȝ.P~cM<|BSAf)mfK1zRT{9c4TX99}d#2.41Cw!.1mhC 0 l>1f`6@҆?&}kH7YAp!#a5c@e>@'9cx$( ؈ %NCC$)'9rյ=(cX| A eРjhF00 hNr"e/t)Xec1 >#⸜fp?ysɈު -!]2A># $H3!}"0ư1Fۼ8z s=ElHBSH1LTFc͡|%Ր {1 Ar!`oS9ZK# ɨB^)h[q# 6 g4<100lȋ^w)}RHDDm2RS#wڱI*zأ=q!#1oCo2<\us 5Bj \;a?VEH;A>P Cl.j zMW05\nZ 0 $I1;=a(mp cmHBA={Bƽ,7[D޲\?tčf!f hv3 zYwdG 5#рĒAB+ %k^NYcMȃCӈ> >kɰ1ջ [㧂CHX t#`#60CF} 6Fvcvf 7D> 7Ѷ Ԁ/C 9UTE :s ) #m44h y8 7~dA=>'3*ݣ/F pf'fUH0ш8|臀X!~ +Vn)A fRxx)QE*gL ~IZ8)rvp9PXS"lښWJ0'+`w cڝ)D:*!qJyIed8!)()`ibʡh.Ac 󉉲)[[p'QŸúJa96ϪZz(fSzpMsrۺrJ ?(PqhUگ:E6s(x˹ {4d0Q Q阱ibc!ɬ&{$X~ ).1z&6yJTP DNG˳CIB~{%@0Q:]p65>kq+d6*TS9RKq+qمt[D٧hۈVۡEyP1>d}!A/:=^hj)PK5:'wɺ>TK p[ W3.1[h[}Gt0GZq0;,ak68곉8&ټ! - +w~q1#$<[m@`.Z i <,BZ??r" )!z:la%%bO(+<(( Gy7 ;5h9(y.8I|'9N%r%Y!縈W)zSpwjAE`l^z \zƌ^08ljͺu0a xlz%#YӈA! J(njkДM'd( yv~ K8ð,,9OoK@ ,E,(Y~P]Ըͼ$Τ` X>$$~ከG xi]t.C)N[ ރδZvӳJxC2M 2} e L橁ۣVm.d}WAT}隡i!~!P @uyꙁ|~>lM} \] 쟑NpcnP-M ܡ -}!NPn>'>ζ̮gȌޡP-1=n1Z9,ʨү|/}7 p](oϮn]@ ͮ-qzn!Ҝ 2 TN $gn,Eo&\xnݽsO}7P/~~p ٦~ nO}Y^l1 @>>A"-v~~/o~͌] ҿpД m m >m߯h'ʸf A .dC%NXE5nGxiS2P B"}@2]qOA%ZԨ5^֜TKB sMHb뺒a@Bp&Z:o YB 3h@"dnj% E6BOC[tQ6j̺6kB*&TLjRyqH"D˴n+3rJ* My q}PiRx}%tM8{b cLRi/]h9%204MPDŨY@f̙2́dP~EQPCrm$%+,JTZk,"D&Vj>Z*4MtKmUvp- 6EVfՖHRu /k)PmuWnKz%q=p tfΓQ*]]#xiDIA HrɅZ@1ec3*ybSH8QK)KMphd{nH]P*C.Ď/J< vi+Y+ LL9;y!{lL SEnG׊լ#b!{n dෞh,,n H9Kz%l4&Hއ6rB-N %3acBṦ@#h[GE:\aDiswNM*DMb+d;H\}xIzg6@:G]j%~7;Pv%*%uɡo;Fh%bD2ً7?sO?ѣ@RpLX~|T>-PbHQ%X鋺»d Y]h<%RP n`2Pt+T!BLE3"U;A.e}Bba \߬pXէL=bĨ/R Jd#1h!Ri %*ٞQ~7;&##H3XF?AyID 1] Db'+X ACnITN xc ;ْ&* |J\^q57&LJKd I @9U/:!*RT"*E:6ǻ }/!@$7 F{z`T' 3!% ;4z%Q]Pq3ϻ}8CG5SjYN>f6-st# ,.̈́fw9۸A")Im ֨.tryKGyS eFmKK5yAdA )$ K-UMq!ή @D7.RS5#mIN%h|d3)z؎sLNEU^4K۹P@{ٲoKHJ"FR.aE`RbV2IBvr._(m gkBUXHOVE%Hh*-h<#r8JvrYI! T&*2& 6\QʹMjִ+=/*2ckP .-W0ܤG2 3b*-nR`gˆ64 GD_HHmiҾ9ih}&YL)<m}DKK#Xñ嚾GB1PVCyE?]8)^N )sf|RQ"ϛyW>-dNd>N+iq_z7'Β-̇1ꑏ 6-ѝ^R>VuSech@3smC~+ F0eiQ)B#y>mSHFקP0k,22F;wԿ:f\֧d} aDkWH/܎ʩk#9>}ܝ֑FP}LJOf>y|Cu_. Cc2:Hر5RzAJ9Ɋ8/9(#ǟTK;" x)cˑ1 h(A$xǙ "79 "dC#;M:Q Hh>Z |MEJ8г .JMѤ6<i @Ȥq(&#S+нԟj<˚M<g霡qHyĵ ӏI ?&QЮQ"a΄,PIѕ$cShy+N ش̸>-좯:X}$ QKC5Rǀ $ k!Y@-,AՈ fH2'e!R,p3qG^Hg$3" a+YPS*R `$7BJҡ*-mH# H/a upG:NEQIR"UM$D"<) U\UU!ӯcm`3ӫuGHȱ:%eY Yaf9䈉aSq 9 9HAbF)nd]HIF0X>vc_#Q-jLDJJZTYpFD|ee$fApY| se`4b If0b|fY%20cxmd栅 PQC1pdD Mtfwhe2X7^ V]}feqLN Et^e֖ߋ~ܖ倾6V]R nƸ(9ਖ਼atN׸Hii^T^[ f4jwd5؀ؐCh-"˔V%|~jnjfg$E6 MaDpkI颳Ꞇ9Ha v!Y%pn`: dH@lVx>E"^&eoˆVJ&.&~VY!k!d,&fP*qcޮd-سN6n6hǨdl٦ NnPYkmɖ&&,&oR&50Nopb~d}o#nU9.2yp+pp8(pUɖj3m,ppؾp:hC@<}`Gq81n/F8w5 ol~d <8j "p o3h>q-"<؃v7y/אh(6vWon>t胃xzSE~?{ Q#vH}voz  {(}xh-3 v;s W>{u|e06o5(xAx<";Qlx'~oyY|7J6; yЃ:?0}+hW_𿂊K(_9}?9>iy~},hp p`!cF}q!gs G;($Ø2gҬi&Μ:w'РBy:YtQW08Q7yF7ġ3Cǒ-k,ڴjײm+0)OrE85eZN] v<m1Ȓ'S.QnS1b^^hN%ĄēʲgӮmN^( px1}$'X#m:ڷLi5ya _xU9n>+_&ӥ"^z|%GG^%w6P%IgK|IJj!eeGvbr>@4ԇ#=S  p酜VmXalXUZy%5Au("^QUi^xb41@!e9'u^yjFxWU!rQu(4FJ:8aڑV1Ǩ4L~P*@fjƗd}H*9ؑA**R>3U)*>(ˊ;.λ!dC#2_, B\x-V_q=jyT (FqN(&hT#)1vL5$ޱ~# 5t7!! H:!rD+FGRd"yMj'5$(C)%*Sr_)YҲ%NZٖ!,, H*\ȰÇ#JHŋ3jȱGpHɓ(S\ɲ˗0MމI͛8sɳg> JѣHLʴӧPJMXgիXjʵׯ`ÊKٳhӪ]˶ۂnU}Kݻx7⚠v L8ˆ+nǐ# ,˘3 CٲϠ &BϡS~9QM;u\kCpn%/д:+_쁲KqWOlݘq9 rϾԿkB,O:ߟvch R)swtBm(FkY5X(bMlsv$g_ a߈0|$ؐQ /D)τGxoQ7>wlHs4@Ar.if`9z nmdG{6:xAj(rؑV >ZP,q骄FqGxqLihJ2r*ۭaAB,t*-rhe¸gjPe"~޺ #+/u꾶>Y+wj4f/Btq0:G(( 3)\!o0U6Pc35S><Bf4.R1']877-6Adwa'_拰)jƩ*-v^57msAHͳAUƅv@PG7ku=>Je}PjtaAsv O\IcL2Y"P=4O35 S4:.:dC1^3>t.dJ / O6d $ L2;=L>[@P}ꋫM' di)e YVVf mH O3@A_D1 ZP  /pa600> up ҰB2r8qģlL 2!<}(C- Ӌ+;B x~_| vʜgKXB$^Ya 'Np]0a. h$dCNq42 g<`2\0i0Pw0KLA6VE0K5gy0#7 F%WAZa]1 Jx"Cv]c@MhCD8AAms UZc.04mxv2c ۊhuq숝!HFʠь`p\d<8at-iY) `MIuC`>y+ӚF$i DR4]6XLΔa1@d8Cx1"MuU A'qJk )"uq)OYq7FsQD,P0c48iL2Ě%b1 >Q(e7:.-},4 B`3@C, 0&fOg7}ca#ͯ1!kv%F5UnM$\Aw Dpԅ 9 j%}^OC}(f#)EZVfP Xv%  Fp p&e)>;PHcLܟ"Td*La8EZ])VV㜫Ez:hn7"j1l^d@C]ᶏFJ`؁E*lT@ZXh"Oa7|Qxt: Fv؇  G`a;HB-:F Ds9$Hc @> R5n3Z=3Ϸ!r{Sσ;hh᳡-/*#֎4V ǃ}jzMvM.uKZx)0P@ǩk ? 4}BH91ib g'!R8gxj ;! gi+`8Lalʼn f#}3v0^`w]m`4j |[kɽxs4i`ful 3 ?4qLPnaљ2OIf*qKpA@DY=`M>W0p AzTpfw͠ 60ErӦmye|,H.xmG|eeW0HWdP5a'q(فg"h1 /0_I7wC{(Im̰wC p o v"ZCCpab ΰiEmH;f#>цr g PL ]0@wyA6ClxSo[xP{\W?:u: =(U|s6myp"s`-XN ` A03h HpPo+ wyK / Pk{Gn :P k<dys'(n i٠ /Hm 3hjWq%oS#5B@B{ _n ް>1/Q萓V698)<):y0ViR9#G_7OB*- /a8ȔfyNَq5R9'WVck12Y!Ai9gYkblI8)a1#C. 񄀙CQ5?԰PKY]bub0qh#1 *]@bQ!t4aQ)ӄ$v̩Aub}!.⁄a.MҜy])G32),i7$R_[|t$4B-bt}B 69I!p%ocW$+Y% Iz)khbx@OA-!lw*Z՚o#z'"I2r>e69qD8GcWay0E?:7q]%7"a~%mvTz8]`fpTO5ZC/|jJɦ !M%9H5ڧW`*fb*-%y00baj IFZ5I21QaQ5rŠnAg.ڬ*AhOo5D~5_/ **mjqT0Y42Oh%v*:1IZaW!.*I)*dpn1Gp)ч1xDzVzAhjYsj'aAԙq {aiGA,2* F3[&f7=۴u)t2bG9=)) Jfa gǩ-۱W`ca7|j A"[s"j+)xZO(۷ZK1;a9"5#|AA69L+k5B)٘1CJ)Kdk0sƊ1) k,kjB[k9Әt*}2{Zjmh{z& 4:;:G[4s1 +'9=Z9ejEXunV*a ܬ; ɫAfR#I(Q<,;,qc9,B @r/ܧy[5pPꚵ1¬*ļJj2˯ V#)#ũ"\F:t1bLk5E+q,Ĺ9 ,bqCG\kl*\0$; v9{[:gJ]0e0$HzP7z̧?bO<4]K|ʖLY1}u1VLA«̰ɼfaͷZ׼ʦcdYQ Ĺ0k\JAXsGXMb1k//*ڱz"|5Jq~"r= L0["{1hbzǦO۲F &4:+\)ti@ikqxr-L -fPȇ{!z0R͜Tr %W@0)rcmΖ<yCb7vm\hOp\׶I{mBlQ e@ZOq+8,ʸK, ֙}ؤl9^1$B+YAڀy,f v'=f;2Mͩjm0!5y@,r}1y׍ݷ9-uI#OMt*-d"G :7Čڲ,߹Y9"Ă1 6=n꫉(;,:ĩ d9QXc?ar@•7,R JS!ֲ2, 6$ 0D ܿ\z&h1r W1J+2< 6 C~` gn W!BBQ01h% } w1r@=' @ 1_@Q N՗^i11V.gIl='O.;bPN$~B  bj窾9~^1t릺Q bG^-+V/P^ NNIGkVN  34j5I䅾ًa3?B0p[ /3 3G ӁC-uٟOZrC ._ #RgG ?t0 !Clzk'^~@|TmB&.B//.  Ӡ (O g/O^ 4GnJݲ`/G?֕ p{?`W?r9n0>omk6 p"ڵA .dC%NXE5nG!E|إ˚.^iethf)R+eg.ZBm,HQI.eSNUZKtʴ i>B;KG+d.fe[qEhrUtbj9RȞb(+#at/fc#MJ2E (H ,]j#fkJSV2fB`!ɂS`}hƢ/gꩴ6I2kBܕyկϨ 5mݧYQ)HMӀ = 4@#rﮪli+:[d|}FɬCCjX pzr1EqFk|ۇ™c܆'4H$Tj29lkD !DB "sL2kRhBl*B8/"sO>#ñAeZBH!7Zl>u<10t.R2 CHCuԏf􊰐$:4>Rsu׆4()QSӂ3-ZYhC}򂉐EI$[ݎTrSP)%hUQj6<4]w˓N!,܋xbCɗG:F:P_Эd %4δRyg$zWiLT:,"sq$yj[ĕܥi 2% !HV;/4¢Mڧh!y"]ofAzNRJNo+*_m/.E}*%g:no*|uC8ǎ qyf3vPo}wZ6(<(!%B洰;:7#]ޫ^"rl>$'B~ڷ-uWwm尬DTW鈨f#`L@$g~FS)$_b wdJq M}E,:%,I f}xf(vQdλ 2~\h}E,E9 \"/'%c\+8u@ nyW5q!fa^-@L xt<,C1p,&8A]p5uk=Nݺv: 1Ljᤘ%N!h홅wrZVr)mcOZ Z4h1XIf8 Eb;ŗ6%Yj־]rbG*j)X9UbHpV/y$a>fπEiz %ŕET)gD$>C`MaE m8ћnIr3 ZzۍypBfQcN#fֻ9P:A&f4e}쉀9, I 𙑷aLf-m"Fv ޗ\THp}@,Rj]koǻ!m0q};LoN}p(%iDpZBmcW {@xce)q)Bqх-8}‰r}xc"X$aOhUyb`4'5iA)rq{6hV@1 Zzʋ"Y6KaױtSMeq[ a9tY!.'*_#𾔥41n?׺LJj(W|1Ev:={9)m]D$R *sxxd>טPxʁҞ)$vB֫hBM#{CU4÷wS ~GY=")cE&$5! CAQ9D_c_2Oz>e RF?d ?3!RHYx W;J@Lê Z; 0'TP5 Tzs4kTI 9UJ}h@JM0ob58-RP‰#;8BNB0 [Ѕ!.ת'H(!ڭ} s7ÖZ ٤B(-H908Ӄ@4!=ˡڅ<L24X4 ;U\2*0.んhj/=|2ED?GT8h3@ ,#|*Q1(46j0(c:GĴ[tLͺJ z6ñ S(KK))15IxTS1fS/!ztZ _rڼDX':˔=k&14L$̢l( aNfZK[MG|P8ȫȎlÛ"$GP 5zȇ "|}8}A+?H[ mKOzchixRmQ$AX =!#erx%͇um%dS; 5  ! pRsq΂#M*ZfPRm8Sc;) YHgb&\<MD5ՆE]G)IMWԤx":X2K!B<*|HV|mxUS}pUXWTc.O$  Q Ht!M35V+2MtS}h}xXWXC0C5ɇ'P5X*])yV{Uν"x9 갇ՆJmxxiY )%VyU+-ɒ)H̅׎5Y(͇vVUze2(.=#R/j!ݩtUtm)u}ה֡]I3 @X}pC-|PUc[}}XT]خW5`!rq5շ f(EWV0͉CAQĝG}\EYɭYu28R0 =Ck[C\?ZSfS%=]YU2T()jJ.ՐX6F#ߟh>#܈&&<'N! Q\Ѕ_aJ:H6{L 2 eQ勢ASz%rօIȁD@Sa$W{D1%( eɋ?B[~?Τ#I "}`/!\ҴxȲ؛cX(Nx.g!1PȒ&Fvfu4*Mbk3BxU)2;$dQaJzq ǑH-f;&134*";1jJp4xr`e:-UąJaՙ<0K ΃xꆀ^ y}s( fGkIܢVТ 'Rzn?b_76nH&oql PY&@XFSP.Bf>c6FPX=ܠn|g"Qƥb> ƨ5qjx4/%$J(: @Y`܇.rG ^F" w߱V*HkArU [Y1_p+LY "@_:$O[=Aqx]Y@_A 5ift PC2H >Ȫ%ȣsS^9ȢLyI\O6 $(N]7:eŒjmRȪRBUmjQWQZC ~^F?QJ@1ݙ\)(ʖBxQwDs*PE9Kޖ $b/w yx-4\\y Aes)9ފܐxY Y¼Qoo/x)WK͔HCzq@quѪ>nwwzyDu>G{{ tG辊7 IoqE w 8Ʀ|/t{* ''DB5yF>XGJ} 66xltYxYC2 6(DE v",zZc{z? D3`nl9mEdRo Zk!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*=vi6l\CB: -y0Ѣ e-LYW2m)ԨRRjŖ]^ƤISAtt.sѾj-ܸrҭkIkUΝT-}*j4.'Sl2z_XB9ۢC5زgӾs66 ͓l)%81}>j\9ҧCjKsgZ!e[ b׳ov0k}QUD[x "ViF> B <,5b(8"%Z|e`yhuAAdP"*w"=#Tzu_aFA =fP@Zy%YRWvDd J2P TZPZ&=Zחv!O O,q :($9~H}b.ah-:W(jjYd jW$&xg$ X*X]^,#z,ڗ_khSZ&ylfʊ;.1HgІ r'>lT)IyY. _EScPiO";&ZqM;1ůn.L:mhTz=bi),(QߑwzջcBᮼ3pjlqd))`Yy[3Qw?8tq"r B"h $5ix1ж7cu"-rj뽷{T[qD؝cy׉wOvC"/"("(*h_q;Da:|H=cq?,$*#e\pȮQ!x 5Nr2<:#ie8eJp e'E |[%nط>v?zaxE$p52l+i@?C"^* )ЊAY'3zS@`䊀\(HSL3 s/b$}|8HPΓHBp Ӑt\fL74BvC.9ӞRb?j"ah 鐇[vcD VLg!=Ag bdm2YCaH>?wnO4C],Ke9(tC3{<0u!z., ua5Vȍ!rW:D,^;45A*AC{ 1Qb\#]x̠`vU:$Տ$;!" B = [ #興Yn>>asP9,}i$|E \ˤH[$ ,Qzy}7Wd>.Qkd 1>=/}q!W:A~C ;5/%eW uQWCK}ô<8&a3@Ys/BnhK`,@jw!~S| ᱍw}a ^n ;hw;֕mye}WSIVV]2W[,pOy݇aqNWɲ2xJ"j tXv|3'x&`⧳]$9sWm/fƺW>ؚ1ܶq= kzGY,JZwd0qJ\5^/w?wxNᡷOU} h@z|Y7҇=ABxju@ԹNL z+>m,l_!q<-ݗDA!YBmqCV\X5Z-- 6` Zi] ֊ԇoAITS!]9Y `AALD *D A̠ySҗVaE D!DW}C%Wv Z!*d!KID^&JJA!!B^kp!`rAԁX!nB .\I[ ôI"}!'"EaD8WyU)B݁w"AXDX0V'6#)ZV06 #c1c[d1vy)*5%v#Qؐ;DBc& %|"ED>;bY4~SeE)BV!ED\R:b!%*F@HR!EYYBJ_qt?T$EB$9Z?N%"$a)F c?:}b%`T۽AIU:)_V^XQHƜV&2E8PJF_ڥ]eB`[&u !]Fn/2&mQM|e~Õv9g&heJi}DkB_.jb;BeFfm?^nVa!E#pfpbCxd&5s)nBgvn'w c%EEvg!Js'&['z_IG\g{|g( %~^|.${+V&RbZF@!, H*\ȰÇ#JHŋ3jȑa}Hɓ(S\ɲ˗)3fM8sɳϟ@;±MH*]ʴӞ6?!իXj]Ju_׭`ÊK,¯fӪ]˶7o΢uKݻx˷߿ LÈ3e3 5/TLk \cf`ˠC,d lͺkrJ ۸qƁcȸ.ܛ! (1)Gѳk7;}7}|'ǵcimjJ4.q;Ğ~dq7_z(T{F(!R'w|a> ^h"IkTcAU^4pIWL6)dIzPFrJ co>| hLj (RY!sM:XT]^'ed&|r|[S1;iGv@} }Vdhц!GH4erY&{T}wPj}8GGG׉YI JJu&PgjdQgQGyG|>x$*䞧lrjwTźO}P[ dCFposG%}pKPV^4ʴnͪ yJ1&l aEq3i0\"Bt tG#)Gvȑe欇tԁ92X atc)# Ga2ppF.*\I,6q!8BWmhsg:p 혌'L#^⌋Juxa 9xc;iӠ<Ȍ$(4G8B٠1DBF7dd$!+$lJ;XH=y1"X㕄܁+2J*dL2qQ:s3̌v;)IHðpF-pEAاB&CҨ9H3z T$! Xsـ>a}Prx> ut ҰB2":qUG6n3D;NYZҒW'<тs,f`dN|5I@x֐81PʦTMFHo*"R5p Ac]Zr(ˈ 985A*e0jOy#ΰ$=aNe` 0g#a *AYdh6JJk` F`r~l2溆d䵝um>ju3 &g0Ӄ F2p68..d98 5*#gҐXGIA5kmJ 2C[ʣk[K^:p>2 E3$(QC|G%ZxZß@f{*dB 1@d8Cx1 \g 2d"Q. aDHft.>o.M!"7c@\f̀%~'CiSXDdIJ}e+4Ϙ"ԧ[iξZÞKC+ϘbVv+Rw&C K(Cw5ȹF! (LLuAL̃ 5Ln.IV&TCL!Cδ<L[^Eti+LT<`KC3IUj}"!Qz#. k|E5}|оDD)KR8-3) Nh[LKs ;>@ Y֍|-mz?eˏT87Qaa'3?LLt:nnC"Ea4U4nKv:C;؇: UXwA2o2 m%˵UP)7,iw\l83hcLA 6)odؗolߙ " _j0gUux ]?ܛ$?HQc(S 셎l/pDDJC# DYĜw! tseUqL"աs C~,aXxXW? ĥPj` OW *nRVX Vzp0YVR٠KAz6gH7z'{W{r{akE`L |'tEt6dtHst*<45P50&R^aN Dvw~,whg~dGQugiq H/0aSP @QtdNPZjy# c( a UH{6WqOEcG$[ AzSy5Ղ+u0H{Bf{78dsL 8{WPeV8n!FJAK]U }aNbzbU_ ,{5Q:vXkGU0~,{bb 8YP~ذKo8o.m v v %-fGX͠ 6Ve'3w{8<7ds~sϕ! 8]<#Qets1҆UӖ=aNSP~_Nqyl rv o ,hNlO$Co% @_ΠwP4Q5D{GѠRt nFYvDaxiEY}H~'SHQmY ~hL:8 -dɴ/y2tx*P*YQN35fa}QH/ ` A0v *ِ}iGxrDGc pI g8[:P d5eKY̰`GW8i'y_ __(YT@|F$!&H&"v0R5֗4F>3C  - 3*将g.j>J9B,ѠBN@|KuQ@aAjysm1,^hJLL*PWȃ]91>F:,:tG;330c:$f$WtAT93 CA18.PzzBt<^< Cn>t6£66ӯT5pn1A*2ב*x$C1TC {qie3^$r"7p{>\UFU( 3_a&ْ'P{&!B[ !ꮒz44;=: ͈`VA38Hx/YMrUU|[]Ћl$nob4Xո]AUٷ|sp.] ]d'B8Aa3M:$1F {@f^21uѶBr0;Et7e9z3{лiFh]sMr|o*p;Y$zq+#UK qཧ#<(k1Y೿ 0Cʶ#F:^rJt /]]!a=X ܷۺPE1q;3F2(۶*%q=S&Jd{!8|rC;Xb@+517[p%M졧F)RH,˗Cd{@;cFT;ʡz軲90q!*+6Z jCj5 *c% ۋL1!n&[ r%qÌ2.qU Έˑ\KnI"-Q$*C>1#˾9<\m!1! mLм14w*K 8%ҿ* :48|{Ȩy9a*U(}Q,h̒,D;;ݽѳ+9X%OFݯ4 CuR&m a[KE4_ $u0r0=9U,֚Ifpf1ly=,K4*Ct0Mp-=7!ZlFg]$(ٜ=l/fPKE,BZ!;LU@q@1z =R0p=؄;˱:TVKBZpM}EF_M06C% ; ȝ1Ca(Lڋ>' B,tj̆,RЍ;Sõ~P BN =fM4C w5̈CSI2n!S:4uDu "`3u5-q nڇ;wP2Q5 J1d.h1}Cr&`C q`{0z dTM-̇;*g;+ .߽\-)CSa%|U =Dj3Mn8NUcҪ~;~ ^ݺ]2#j*4-1n}|a3HCm 3=]/,@.>ȩE*C*l8"{aBt Elpv'$Y%29 /)`GH9!E'K|0*O@ ,.el3uҌ8J/M6هIEE !1StTRK5 P1iFX6!EX[ Z"I$1L@j3uYfU,h짟<V[:&Ou]xsKOUrд̓?G@H\O.^v13ң|ЎG:أ?$e69g6]([vR5#Ь /_:cNuQ!HTf\vi&{2mq gG5MBNOMHjۆhcB#-V8}.nDvvp 1 6"52Q[V9ʼnrI|tҗ]K#|7k]3!JQt{/7鶘ug:nRcOk3dwhzWd,вf|_:yYA*^)CGN[,:-$Tc`mC5$-Jfo\4$ YMx@3 M8B|ZMҒD!xH QC zP2 ^B:!棰CZ(T h bxx{_jYB( #X*!}{>"ZGEQ3)?KT-Jdd-.x 7\@omydFKƲ$ Y%4(j )] RTR˜_&i)18+0BFε@Z葙㌟3W7 5WcG@OL7sMЁ$xNhbl :TR, .1$gE}ANƧ3à"}PEMw >Y,R)iQ>͜dO_A)>Q ݉ )J HT/ #4ѝjJIjt;LԧTTOZp uEOC㪉L*Ѱ浜d Z:P!)$>1i!8IE9) _ ۾b3}H<@(> s=Pby?$#SE눗8, 9 (MӝN#O1RQC&{9<6#JQx/$k/ OBT}: 7j)A9鴤ɅS;_ !1C:כ;4wkC 9Sp,ГqCH#1H)"2>A\(D>J%Ȋ 0H/CiEX"ؐ=Mێ Eb۽}ťaK $/[D &]>,"&*9sB:b9=TKQjCB@.Rx)n"+$)@Y_)HhE$Cم_/Y06xƚ#4PFD#\n#T-1H:[ԣ;WL"*{d+ HzIj)G4I𫹔4P09OюRȚ\=jG |K;\B:O6C ,v G4L[=0Hȉ. 99 ;A[|'J#>Q "[ESЅ-J`T ߋCKMˤHQ(%2D,Q ' ˣwc=6 JK"[\:]?ё%>TH0:N̈[M1֩X $Rs(=4G5bm/}_^m3x5 xEW4@H_=,DbU!$3:RT P0!a䊘5" 8bLD&ࡅ:eἚ.b6ȉ9P8X&)XH%=S~8]+ʈ9 U;Z5|2Fy;8֫ #Ob= Ք#)n*[)EFYS\Z:Ό-#;Z,@ó'l]EScS)3X >XYR0HyISC`HZʄ==+~+Tgrȋᘃf?X+L*Iڋ+1b`66WM]yj]%Ol,ًE^?؇;ihnE;֥= ν;?S0VF̌╅Xbf:hd5ѩ5Q"He^RM)wf_N~aa.t:( ) 1]?Y8ն:8[Շ\<l Ky}.EKkBCɼ\P}\lVkML5G?PHRCZH^jĜPZIr g>PN5ql'q _nEhd$ aa=C^~q!RW0Ek)JH;o&Sa!qO-U_}R𥒌gaB)4'[ߏq╠UK4R DP8`#GrdM  HEjѥZ:>rf6{t,`%B1jrrfՔ /R\)#ppjƤmI#jٗM?kOYn]T{#9ʈQIKJJa^CcOER+ba'2q> r(#Y3S#ɴ:2>ij$M%: EVa%AýBѝ3 ga'^"%BuJp*=G#]uFS,!\9?"M:'1Oo7 fD՞t>y/⫸\7%Z6K%W\u܄+MV|z$峃a*O,U9G|0z "|ЇYl#t!e:-ڵǞzchi|mMGJ2[ _Aijm lTKdsXo|)|XІ}i1lO>D\ |^b粖}ߡf|m}c}SV :GB`+7}aEEW%~}m~|l7>:$H R-\SN*} eqHC6 9kVȐRl%̘2gҬi&Μ:w'РḂ(zh 1N˚5m*] !DM{%*HNE*:oQJI*宔(;Lk}m1Ȓ'SlqT73t6}U%k^9H5APm"pQ)I5e*ސ>Yʗ3o91h: = Mժi\۰nݕThi!"Bٷ8KZO>ttx *xg>yj!V)"! *u)W\_8o=#A i>4p'Tvцi[yڇ|H{))$s)Ȃ *gW`_HIJ>zģy'}TOfiLS6ZUWlء]!Gmt( )gh"R)RW.w &*`>4c VSD0OiIٕVX՚Qbmlb)u.>fJ$KmHɽ:. RFN4FuaWAG!]:,B.ԊϨ.Uނ'H;1[RvSDTiYuB_f^Bt|UJ,#DA _ qq1I+Mn9y<n8OVTNGh)8!aH%bB^,e8l<_Q( s"HOFv#7/BTd/͇Rq[B4!L{K7=gIȗS ;Ҵ1[,!)԰ZeIF9j=!("v6ɱ?/ 悆*:Ლ\tA^q$Z(5btS 8>a:z5)OF^JzhR=en沢5lU^̳eN)RQ*5NNUji~*Ǘ1a!CҕRF$f/:qiY@AQ;+wbFIDbO VڃP8.2,3jJj! ^bT3#T%AIOៗHb@=W5 R `JD[lgJL#q8O>S}W><䩄(đј57RS)Gg%s+-kAipК>[,YhCބtH6Ypy&^I٭ݿ8,gً VIu/-z{V~KSRH|O҅SBئз^U8.MO5l"PLg+9.ipXWfsDY19ҕM?k2KSɆ]w],N~ xIz:5TGxo.ٷGi`җ.*vnؘG6֒J3Y!\n\pS#׫%iǓ\0=1y?s2 vL#9IsIW!V⎶ٻHX:-k)RLmZ&6.iBְ`ilWC87ɯ!-dm$FRHAafJ8FtD,&MPa$C>@` ) 2~#M4-!>CTD%]6$ a48cM\ұA @#̼|l BNHpb˜7#DDR&e ˣyMa c^EIUءjF [l 6ZNDJzx@AHD"TlʊDG'{vF棸+R|!㿰#~GF_j2Jld>J엄DZg*"xA,F&iI{ !Y݅cfޤ,,/&01ur!P&faeJ.gm $Bɇ0c90Vi꩚-dF&rkYF"0Gvfgcײ.mqz%ly0%5^”=hWW%ՂKA2/ޅJronAQjefJ;*TG/ z'@F>J#<`;DvʉR.Vy./koamfIClXvC,b ^V-ǒod0mY߱0I]DEqyF& A.kA#t lVz/$g&od:ּhl>(CDK|p;RmFAJAA<1B,s%K:#ALw" p-,jti(p4'15.A؁!tl '2TFuHPN] ?p^Ӱ8/R:>ȁ!4C=#0u\CU2]>p9G3-461k#u%իLwL>THt]]?00ra7/zRQρK8#t0# cr Whud#:qA(BA%tdTӦ1Ù]A3AnTJ;q&0 46>q+7FtGW9z,A(WBALwJIUrdS{WOX&k2!w%;6r#zSVo|>n_wMI As(Eܨx9g.y&l^6A(/.v%7c7 >АoӶŸ|uRׁ{x(>&t c9+x{Ԣgu:wHAv(A3H H8%a-.gFX:~:SMظBDasdrZ7~2z!TR4xKdy:l:o7w(koˆD*;aEsW68XAme: :(M?;4SMGH:xH;1zHD%Ԓn3Ҿ˚2R H.?-:Wxȳ5x;y/|JrZ4pelz~{A%rUSbE2!ZA^XegcKIۻ3=`uL>jfɤ{dfy%{<9c=H$4 c ?X\K4>4o|^:k|k/'>x=H~|[<~䃄O_~* o~7s|W=H8#TD;~D(&-_{d@۸A%;Л>U?_-:{ևt~D%ǧ>aQÁ.xcF9vdH#I4yeJ+Ydie2^ib:$L5CiS4NRw$N|Fh+:c'DC}RDKkٶun\sIsM{vIPF>U):wJaXU3!##thѣI,N&5D(}Nby\%/O%<c óW~;,ٹ_܋Q'ցט!8Y~;<]ca <4Xni<؆m0m= lJ*;GJ2]|Fk14V}zM5ROC*>,G@.ܓ> ̼27ʊCF> 몄?X4N=ԐP.* [J8UHxtKCݕ^}e ¾\3c*tVUUVx5c9H0׃8p=!rMI&06('$LÜz3], ;5܂ >x@#LuTR0<6|6R jQW# Afh(h5xCU]eo1o}Ƞe"9餕I$1E2zy6|l#1҄/ňo^mG A9yЈȼ5  ju+p?6mƗvZBސ6E4LHw7H~E<_ָ$ռ:B4?*{+{oC)nRC C|1Wj88̵ 1D;R2YT\u_.ȉF}gJs5D|&}h >>@{H҆ m!8yX3z=k F4A@;A%ņ3nd*Hu!.; ITu(4~EnxfIrKDy ga>ZĘYjDj G? iF*ufsh R X0NԤKhD!9FHo UдYg lQ7YK[rTHGNYd臨Djc\y i-I("npF6FuND`[{@1=z@a'!5Q\Ї}b nhےB:8rzvড়S&%zТ5!=Fnob %g"t2$}DZSơ$CwґQH&?P:%YӦQaɇ<>6=EjCR4#ZoiV&-e Xڳ;T! CVV [Cch!}&)n cd "yC䴏rt]iJYӒNqt|4O[[%~,MX=>T+mA\xȉVU+]^W$2--v"Qq!Ad#Z_TL[_FSE,)!"QZiJ_qR0EVL/)\iʸiiW#4q'T]Ng2MYݎ_h/y̸A ֙o$0'XQ'x6|!h\e#`&ꤳd/`9FGeq\Y7#I ff>YKS%!, H*\ȰÇ#JHŋ3j1a>CIɓ(S\ɲd0cʜI͛8/)'ϟ@ J4fH*]ʴ)̝NJJT;VjʵkJ^ÊKV˲hӪ]KtlʝKݻxټ fÈ+6Ő#K8ɘ3k(g5 lM4 5ͺˮc. f}k` \=﮺ 7A<%μyҽ|aس+5C o{ yq_5?4|8lt߀TA7/=1h}eVc-T XA|}NXo2[m<_-$݋<@?P=&Z =F͇\Z@Nێ]9j+f։]4@z~v]4mwTF!裲P6}aQx駦ECdYYU6T@ffqNr1P*YoL %}}י"벚u!pVAH dGfWmVw*X2tEFi@ >ؖkZ]ZuIq@x{Bճ64L6ԃPl"q8Ci#NBgƑKrlи$l'7\6,OlH[KE7CO<=dm*AD]Pm/}RFL=X2w=4|DpӀE1`讄1! *V8qΘ==e` a }l+aAj\֘3\0u8#5$_hnF0c@p -Jj" iA!ˁ\a H[5~E{@%Bu{:,vdRf(F3f<(tarTtp).r{c1H>ˁ@g?TP X_K$9-` ||IԤ3cMsqAx(z S'LN_F } gFVe߈~U2k8pB5}X_K# :ޗ5rl{ mafmF?Zm+-O75妡sX5Ό+GQ0p :fn~6AdHäof-!8ll&_S]}6,0bo.7+L@0c7P  bxe6|'Nr W{CVfa"F] B"= ?_E` idm_7}Z4m 9hdḚE i7ns`0 L [68W88f#p;=r S7Iϕ ]`Y䠃G=}?hɰ7:kߗc P8vg~ q`P~dj+3" PQD!8s=/Qɀ S`;Du`Sky kWupV7c IQt@94$۰pi&} :P&dM$u:WElfO(gB Q6i`NWw$q4]-".JL,1c۰! ݀(Q 8ᘍ䨎(˜CXWP"J֊#/*>dB`쪒jdpÒEBD8%%gY2T3p!G1 ۪1\/u"1vyn.o )"kCG*P1,(niY6۪q 'n! Q:PZ]KI&HI%yCZr_IC7鰊p=*trd+=ԭ'&\ ^)CJ:sݪic(\1u|IqX돍nµ2KK>x[#U"D!I'kI k6.I! HB 6%+bi3GwM;I !+(uK:Jm&4%K%q+˭6MtR[wLKD岞ߪbo⽎(n` I)Wۯj(TҴNk&j2Rfi*mM3=$ۧy)*%d`邗m"s R-&8b4}I`H{3/:uҠS3DiڒHj ƍabuk\bzj{ƪs)+[R#\bDqWyO * G+0wql 2,(l&" }/Q+uPV,L׌ *3hSSҸ`ٴI*WΠHq6, lŒ)& *yDΛ.2z)ּ+M!^z0y+=ѐ&LxO+9I"҂BnŹ#v))Ӡ򬳅4n˯N9M@(9b@(5c)ec)P2՚F/T"V|jXDFdP]o-ցҠC/|Ķ)ג<Ոo=r%(k*֛i L;3r,ra]IR7[W!e/֙ٝbݛ邖n.xxٛӰm&MT?/-ўB؛-"ۙm5 b!]]ҡ+4L3"~(@̮- r7Lۛ.x͖ y-"Bâ˹5n:.~mD *{A"ʛ L"mt-*~*6+b({#J)4കJD*!$~naN׿/A#4ܞm(nȉ%r|#N.j-Tb1<~~. <>z[ y-  r`+/mp1?^P;l86t)y C_^`,5"?8O]! WFaL. L9tpX~. Qi?kϣG .\y` E}O(1.!P׎`o﮽Uiٖqd>bOr@_ [/-3b3Oւ!/є0@yQ͟brґC4jI,!B mzm;0Wqŏ'8roԷVHA٤.&%w'{w/0rD,;fè'%P B 30+Q[͋Xՠ"LNEc$g AIGBV(Xĭ*~qI&XF1q#(2L * 4L4KB6j s2,jX0M@,:q "GL\h:tEJY例d2SPeb3J9hD YD!*DjBBuW^p7A 9ĐD!yG*Di^VV6c48B!R{Imwn%T:"JY.#M[v^ 8om$T !IZjJHL3֘^ KR^t"7ve3+8p3p#Y*;ͥ`6Nج5E{U*ōRzdSkGikM~"e%kK;z*[8h5L\v2WjЭZ{qC63/QU5G(Ӧ(:SqSGFo5qsQbeIh{}Buj](GTIZ%Ul%O߫~:EBK苛(ۥJ/z[9~%V{s_hPuk( l/SQ,pīN*l7[F\D Pw^`oZ"HH~Aư 9!Rp5hJ},rtA"RHC$ YM<,>eh"RlbD$ebҥ}TrB(*)"w,F1`QaQ7CfGte8=)zH!/AEZ#~HPjTZH$q.䈡%:GG>GiJ R$:؁츏YReH'2cb2Ud.Sga,DȁÕ50 bF@1N| `)ul)Yt4 LjRzd(2C;(H7b&IRφ@yK#y{+[WuhI(Rb $V*ckpD2iAXjTWF)ɟW f`xhN{{S02}li_DYl i\ag=DFrה´NFe&q5EQYWZDu}lFLaV[!`9ix@pY+(Y@%{޿xM5L+0˘'ra)Ғ ~MYxRRL)XEv*i45Q#1^=d&qMnio DgI"fчB!]t3rx&]` h3̡ s!AQU!]~Gc(_0f Ed9aCe/E$BHhQ2(yuj'@m97#1~jc5"m2t!Qv0|RD7}i0)<\9ءvbBQ煀)$}tMȚq!>Ru ZY 9-N%HeM Ewag{!kXop 5lr@=y)w*@ką3!F n:idx[D6Awmyf pp{lͻ?Gy'q#O]8 E9'f6`}pzŅ:8,~MrabQw㤆r.p@Žz!AE,Zc@=d}o0@KCs+\T8rm:8 <Öw B{o\yLW4ٰyб %&y4m`M;UpY,lM,{$#/I}ljem~9[ aĩ}9[Z: p[h'pے0;07C{+p[4;ȵ2*y4#> ۉ+OSc GĚ/t2376P4)/VR? #CrvX!숷B,6  7#3 3?ߓr[[ ppۄX>:p=8PG*0=5H>b@S TrX 4\SH5 *?hrBKYsDӦR$S4hI b#,R@2Ey6}r Lȫ>F:B*{S3"6JΈX >s|Ic\B(*X)1+rGȢ+,T(۰CP =%Ԇu݇P u}[ˈ٘x Ɗ.<|R|mhMeBsSX`80M@( Q$2.}O}}xO}dh)(У͊D`DʝDTLAu|CM$=S4 =3#^EXei>ށQUQS}pN}PT3E)`t**z: ?KJLOUP5R,TDMEe՞$᪪$ۄ7!|..mS2=V4Ǚ Rzh0`Kj|0QcWz n]S?!*( Ew}W!`{|e  #3k)G@;P"#9ՠAb-SuQ4a1;BS؃n E LؓmM`-҉U h +u[4ϡ$` pcO5]+B3FBpLڭu0 |،ͅ0T}T;Rʀ#W,܍+[aX|yVԇ_L90@{Ԡ$;s\R|pͅm(Ğ3 &: օq"~*H:Pt1č:;,Ը\ ќ<5ރHRt0gIv);\Eꅟ Ljg߾*)){RƦRXÿແHa&t H}} ` 2(ҕQ#Rbp y#z<И]A(Fx=O`x _#nA8'v+uԩ!O\] в+6,<\-vL*e:=(+4#cTo=n(!DyA *[ cJpL(&Mޠ9TVI(g)G\ɤJe 70`bUP SnD%eaC+y-vIgn$ (qI8喠(o5 (eG|q% `Ʒze !gyJ'@G[It *)YU"QtFVz=iLI7 iB $痮%,׈9b؇X AE0piNCD`ےOV.{Z=$*k%;Id!6dj@9Q>L1b\8fOn6\Z A&݇ >I^FBi BiAm" ;4-Y+P^׵BS( g/d$YWDFÞ2Vf< Ainԁ[ڛV LDtfVo\RCKNF#eDX!Ęo!H5͒>X bMH Yo'D1O[1a.Ӱ-:u *sDY2ڒe(LI,;Vrm/kڎNƵ،e0!fdiށf7HOv(: Up.ϖ̤!Ray2x'L Odr5W̼O'2+ͯ=si.Vl䚣.Eh$f/GG2$UJ/ Okp>f0bLXQ6w.!H? T~Ɗ T1ư$-ő67VܲjW:/ argSװ}p#۪v9]Ee9}2@WX!QwwmCn[c<2EH-fK.%@R!r;< ;pَxo͈[Ǐ7z/CGwQKw5YC'ڷC::2 *@xl0ϵߘ5!#5 {2-Hfd7h7Ӳ.ٻ=x:tɑqH:@ >&Wl%̘2gҬi&Μ:w'РBu٥I6lD< cē1+c9)ʒEǒ-k,ڴjײm[RI8tpNPٷ'Ǒ9BtrEb2n1Ȓ'e 2cWo=IҎɑV"ZL5زgӮm.f3}Fb8R1J< jhҧSned2Q3zMcDo=p Dt0v/D -)^| * 5P\jp&GxO5Gq(z-! !8d*uP}Yud"5z=#pHr(day%YyTfܭ}MrzvH<6bJZ9'DbCG2ad*YY':Q(.fO1hGG!j$9裥zY&vgW $ʈ!H+C=nSgR ّBH7{-Jr$^wajf>i.rIg12 m\hflt9E Ek+g{ezTFV5#|2 FJ,FRTޑњ1# 3IޖC1_x Ru>q4a2!Vu}`lҢ&6yC:jmvRoEuQ<߁uzK>y[:̓Qs|!,+)#CGN9 k>x#G(is}*Լ*9C[hǾKy- |zʙR%Co=c9f`"1 kU@!Mo%wFBցe& (yP h}08)b7ĚDgXD.`BV;P\ڇw?|0vTnvs6AEpCL",jY-fX$Ȥ=yJWdt<&lR)рS2.[~)E ^$Rg$T%FmsݒBxy$ JO"Ô"7Ap/ͩ}˧Iω2 expȁ/KjD)R,Ii}#L~+qwJ gLcuR:>ep1CͩP}:kt~dJ}*UE J>6s1H+vO+$S=+| 0$L7Y-,%(wB_bNu6WxInfdʔ @gHxRjK0+h%W_7ac; ˬVtNI !^QC̲Ӳ%Kg7;o%%-d$qΫuID֖D'o+]vW>>((-Kٙsy&CAJ8v- fs 6m` P\WD7{]Ƀbk.(΍Ѧ7ݙI5*9neFmZN%25ijs$ffV,gP&sZ1aV.>kjJ{:2Xʁɝ  N噈yv {t)3q9E6kј'ue%R ;3z;3r#wmn_å$unCY$^P2uɧ,Y;]vݎCJCe:ֳ[r扝tiPBQ jl:Tɞ #d 7V G_⵹XD{&UKx}V LsW[7Oogj-q殹uHtC%(p~ʻ*ExM"$-(WTdM/`/(# AM>$CrdA^w3Wpkn4_ser'`u*qlDk ȿp BM\cL|Td.>JN1|+kpg 3ҪKѬ흻K򓾜Y4,0uoJ(7)1>DgrB0e|&rm 1(&c$q]ī^mnN 8YpD,IһUƐ╌pr#+sn:htst>~F6>؏q)(WSX^ilZ,e=YJ`__N,ku RD-p=RK߸ԁXҜ]'R L>̖pt LĈ\R N,A%ޖ[K ֽSēe)xLI>UQ ݓK!ŚPV>h"!LM%O!"ڙ=_rEW%O$J]q!nb O[}ږ!)nbtKa+FY'ʄ!ɄB,ĂNA"/ޙ́,#.&#RDi4:Y 2^#N%졬y##;b7c+#=#>>#?4c?@J4VG@!, H*\ȰÇ#JHŋ3jȱF<CIɓ(S\ɲ8q qI͛8sɳϟ@ J7F*]ʴӢ1F}JիXʵׯ`"76ٳhӪ]˶۷pʝK.˲v[@8˷;#^̸kM(̹~5lAŸS^1慨Y˞M;ڸspY536ǣKwmb3wQFyy >Ͼ_"o0Hz&xy1VD>!_xfFfuXbdQ!R0|$ ĝ4J7@h<ɡr3cDL+1ArqEV] Nt QiE̎;@kp$pf ia)f|Fw&h䦔X>{(psvo h%f[|Rj*jw~IR i)ZjAo*믵zrIVw&,fm:Av$췆uAGުAnK}nZl 5R6tAmArkݾV+15h#ԅr,L,i-YJu ԼK6[klh"YoJXy[=#Pt#.dJ-hM6t $ L2w=2E7 n 1CmG]6q.A9RKbvBrzh#M[3tAE>|D m7r~6VLaɼr>$S!)#BnPOD箷 q`Wq3 7o Zw>O.wjÅ¿Vb+4I|$:d~18>^ibr >aTX?Л #S 0 l8aw)hҿlP5 (0§AQ12]ܞg}tooF0'c@> xш#\ # KmДZ865HK-0Witx{:6vԭO e |hF0hPԛGp6pztJOm1g0{979E=NS>pZ5=So`26  i")A7n}J bʇwͰP}58WOva}ja:rϒK3* aP#81΁b 1x)3](R4w&Z@Tz:D<@,tC1PV s̼\SF`zYA}[,F7pHEp\Cd@7Q{"aV , mt(`RuxBJȽ#J"i9c6-\*g/$ܷnǰi ;kvI'6,L >tPO< }H1Sh<؍s&dn2tvCT "3пv`}+Eqxxˋ6m00}s+;flM?uobG5&wP1<]@E/FG-|}Dۢ7iՊa\!e] n 0i>FYhC;0g86j|5f|Auě!;xUzQ? ͱ4 Nb.B502nF( .x bfg7)"iG$1li͆j/ɧ?Tb̄x)Ի&·"v b.bFȂh[ks ՘Fa Lƌ_0aH)wt1@cdl 4Adc100߉xYO"/݆SLbVq!H@=1B:o^4ѡn<$y}Xlmd:mcp|d`3KێxZ̄Wprq=vUf? Z ~΋ ei9m8>]lX aLcP1 w /0_TFfrpvwE˶hrqW@ Xk o 9r&VC@]$ Ͱ V&m'xmV0h t6P?D t\S 䰃L=yT=}$t&kO%c R(s7~p@KwZ4b<5-l$]cQaR"4'CwCQɀ S:=`uP} hLvm7tDQ t9 atpHh p&J rkL'yk9It@nGz˷iHOJwmo٠ h |Qww~b0%k'-(`"d ;XXq㨎QЎ옎hW(/CIZ#9J%0x؁(vc.Pb.4=Y3s:)%qҒ`o &*Ƒ4w93K1!6$g)"T.YJ0/c/堓x]P#>b-!l8 s3b9UK$-I%`c97A3Gbir+N&e!q#a(Hc&"cĖ3yQYBq5y'1iHQqq2.2,7)D4FDb"#^pX[ )$(Ûi& ()ɕ7>"Qu0ȒBTAeI-JR(i3=Òo@)eY*h2Q2 bLYifƒBY鍡-%S$;Bbl$%qS&dPΩ$\Y,kɝ:'z 1g/ iH'28z bКZ) aH:]e'="{PT:Y;: jI)aITj"-%Ym'S1 dZ͹1-ږ2oPT~Vh"L1٦ԝF1RBzks%w. ؉9+TW)i:LJZ5x!%D)'ӍZƊɗE'k8b.C +֒|0`9 ˳s|–,Jv&NR$U[$9N8#:TI;I3skB pcXK100}T۷by0Rؒ-Q*۸[$"%qa"ϚbK y+֚  nh-`3>usp@e i _y)ɼ9$Q*Zm@_3n6c[)uʻ˛1[sNZ+*R˩v|@ڲZs {~ʳbEۭڸqbx[q[",,$QZ&dQ+"#\ )+|+G)aI7C:y@e(uٰD:SI- $zd˴_o)f̑,ܜy!\0:R;ǢRN0!|OlD$q KZi.<˓pp0$Cɥ-N"'+q2^ɠa:5Jk124+\ūo%"Ǽ,+C2_R+jqF)ʿ&ĹĪE\!̻˔BY;#rba+E'ŔQ,ً,Trm+Ab+e;vR2`0, 0_&ȳ'L%,\K0BL]20~+1-(!Gْ1 B|ɕ](08A,;j*F3ԸY "y2lJ͵lֱR; Cq[@+,qZ"yMؙ;Zȕk۩e,yDeٱ$ ("ƾ-ArM٤)zډKÄZP@َ@۷(4}´RWz@@ ca_0ry ɽ/}WѽЈbq.=*@}(`0 =N|RѬIȣǤ)RvA=McrfآƗ} B=(^*?–-$^9':|Z۫yBN.ٽyP{@ kG^% @N O^V.r]^# BB>E栝V|o{b<tjm.UBQ²JA̽^~N4Rv":M2 rpNnq^Y3) N@帾!:5qRBqP$ۢdR՟Y%$~dSq  N˨ry}j@0!sz$P3p蘞^ 1V)9])L09F>Q ! orz9)/#ߝy`` +|,JQ}).)<=q egOjN>Q2 qoqƂ>0b/ҡa}羞[%Z_q/AoqVTޢi/#`̎ "Ɖ"/yk(ӁQ"o 3ota|& {#g!CrTg}Il)}0nc}<$YI)UdK1eΤYM9uK5A!JNA 7hEy屓$0WaŎ%[ٜ?ZoFl$hߖ&\aĉҘmPnʝKw;ʓ*GHaTIS/fkرe I1VTpDVV5”5sѥOs퍺1Ux/"HgQ0uկgmJfGt!r"HTpA<'2 #9ͩك<:0sDST"n6hB p!p 1vu腸:#GR@5QTE9qyܞ5giM#F 6HLfr#B6mpiS)tU؃h, %Sd-ؘΨ )@=lb JWj#WJrhKh'GocIѢyNMavnr)#hkqNݵSmÈ>ף#ۜjO6ot @aO*{67+d$hI1PZ9 b!h$D2[ PT(*YzM١dDtSW'3ZzpLdSRIrEUښ/t5)iJ|rdy&a-;,^K0&tpC_I" ?z7e洠t!Jmq6Q=|emk{6m80*8 Q_PZ ^ qj:r6WD<5 BtN`*Wd! &K$}e 6|7źk C`#՝L L:()+dzt# qɷRYSZqȌ\qȑ#)$6f2tˏ!cj3406%7Y q.;!`h6PaU. 2hqvV:#rMeb;'5``頻 @-s]H =iPi5Cʄp-Y}hutgh SӹePP`ZÈ|Ii]L WE[!yȨ6RyJ.hlp'X}4KZ:rCp@\ W1Jo[6ٜP-v/hч دge[]yx*45oG`J '~roǪB8dxCT;0bPq +g gFPЇ<:"SHe1"X] 9v;JۆW<9^G}%B:9 5F9asC$9i{辉.1Ƕ{ڽ h?IcasDz`wU2J-ӦzTx I??6h ۋRQ1#Fl:c "t"<`{̫m2klj:C9B<1 3H;{ 遣pḚ9Z^Vb0؈V4ܜ5dT<{/\!+t;5I+TV; "V(A>Ač# G àf3ȫ\1ӑrya2N9YK+a"lDC*p:9FAԃ#;Y9(SZ*Hqk3B-)\y? "J,͋VYj۸h:l1X0Ǡ((d2W 3yxN謱~,(F䤃RqJX*M*(O98@Rs*SJȓ(!QO4>d x.@IlB6G@zD?C6KBRڇ 32G|M?- C%Ѩ'!hc|} "|VY 7(D2ۓ"1O܄R0mR|؇fhmLܱ85+R0zD+,|X}SdH)"(O[9CPM`%ThfSmKՇLN}ޜ#5SCx$#C_tUTmU;}TNTU9ҳA+ YZUV|XW|m?u֍ih-Ȗ43N0!JhUt$cRS}h\ň)۳n"d{$dу|R}hXՆ}Xj)Xh ,= S!pS,Y>]چmY}S[։k-PK Uk4ڈBZcXZ|xXxZ\N K)RE++}/kD[~]XxmZN 9325;=SP# ʇf5 ]U"ĥXc/ ِQ5R-UE .Ry+\X0='w5[eX5ZzX8C- PĈ۞܅pS-5TY^e)y'5YhHh**IiYm[]Չ Q* ۪.bCՎ ZlߵT"(pi^cNqL3s s1;{\Yux,S/N`9\=`(ީ -R&,,z He*1,{Ҝ7G ɋpE@d6X9T#'Fj^+7C CYNib&3QbU&``^dyrFo !}&6'l)CXHѽƉV+\aι*@#X1DYdDer8j(Rh ވDY鵒Ȍ! '^qM eExBN!'%\D82F frybF'S6#^59DPPj>žMMHRh&g)QDSΤkF&ߐ i!I*#"nm_b%;LYH~2[mM ̙k❝FG6TanMz3$-ьXMۇ)pFhݦ^:r.ix^q8#$U/ݱ.5q%v8Fo#'/` i ␲>ogi!>AGdRp פ+ k"AGyڝϤ_F[!q',^-}:q0Μ8t̡<C}{ Tɔ*Wl%̘2gҬi&Μ:w'РBuZ1؅m[(g9R#'!>D>DL-k,ڴjײm-ܣm"UzUN8R散>=zn.Ċ3n1WR>m洑y>.J$Fn5زg b9:G[\TzӞC" IҧSnFYԈsH*ba<--:(ҺkWBQH GB-V : :]хTwotaU*!G)jE"-x݄kRKxw1X % )4"M:db1WPaw TPy&i4AdpTSR)- Vw")&fy!x5ODx\zɕ!䡡:*lN~Q 󣏎Qe}zB'+JgvknƱBYJ^㈵Z{-M&שmd6,x̡T.`!Pٺ.CjɁ,}aGTQ*uA{(/ ;\ѥ_z#ƣ.0%Ҷu,kGBcSAB` 3n]tw< CvzJ3Q,r;JiZR=)OIЗx%u<vH}7,NfQ)#iJ%O"5xޑKN߄GAVوkSjrG_y<ȓ:m1 tvRovB"d;}/q`'B^%};c &З8{^QRmǔ:ዏ},0Cyu "c?>]7R7eRcWg]{ kR>T-}l`AASF&}gh}*`} K' qS# /Vp q`CwA~X0qB3EbCD7P` >fXђGn(LˍӅo)NDZDHh6hƴ i50߫zD-գuX$8YBHT[}뻨I_5p r+#>jIT 5}ԯK|y' &;\xYR k gIhJÄ8A+Ga7+[3v iu>ȭLX`vu%Zu8i*yqjTX^R+pIdIIWMmµmګ4r5cB gH|@҉M<KRFRy)|Aj& su+c e dҟN%jTJ82>rlQjŲozRRy^~M4ц.qlڗNeIP,g\&]@}B Ͼl;;@sI\ɬ$xo5J%%C2CC"9d&񰖒>cၼ)5&^aBd鲩MG#d)qu+X)fFN׷)At3P:$ƳG!>ʈTG4ղY!A0aT$Վ7K ndڶY (۴:4mqƶM}z(;vb)h5e-=gZ3ᒉ=7rWs3PGp sIॲ?S9ܔ:XL(:Nx~g<-VA򒑯 :ғ6UY O=:JTp4ɮ:{)܇@Nvӭh~h]vܙ ?e]6\T}_fŇ~ %2ݍ,}C$6-ÿ=}Qs%EeS^3D~GO@1}JTUҗlܝ WUb/ͶM Z~4RL:6wה1 d?h@f8E_0DBT^aQډeBS$QIګ->!D_aOjlM B`I_fTɞ1eV}AIBԀ dMo&j} BСa~FaD h1O"y(Z5"䡁孠Je ) )Z!)$K>"**m1Y h"b"BALTHT0SW1#9cKPHU#ԕ⻱7>%U12m#~U$8cIcS'VJ͐"],"4B"M8DU 1 =CdQ4%"O&#aAA7"e-^KeVJb%R@zdJlaTR'`![%Z"6 "cau"͓J]:& $aa &-(aʥ1朑cEDM."9,%eޟ!QC#gf}&ݜ DC%jki(fEK,&;V,n朇>^eq_,mrzftb%lopVun'w{8DY~y'pz{,&|v>ĂlΧ΅,'~ g&F@!,  H*\ȰÇ#JHŋ3jȱc8CIɓ(S\ɲC.cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`Ês ٳhӪ]˶۷3״Kݻxݫ ivÈIAXĐ#K(ɘ33W L5ݵ1/^ͺ\+M)2M3=vN86Í+_t1ɢ6'(e#Ծ7G O p.=a{'l o0 ߀ kY 6 L VY]ط vȆYhh~҉,G!F% t߂4xW=hC 5iM=P#]orPd3Aڈ$CL"(#Fu`i&WB6_*t5VF7COr̨ ͧQM=L6+\ѩA бIE20G2Aܪ+=[ ,m6pS*$OɨXLS>pvLř <༒-[L,Pn<Ԙ5/d šU3ʪNKmp5Pa1< 3ғʸ04z>:zL@ۘٸL5c≮0 @;܃'ɴ]aln^h G384BN[q  nЛ@ ĝB-:j`:(C4 @<7a?)3T3H`WSu,j&ubF25# $H3!lV +"\3l;P+5-fy: 3fc>&Mktx*w Y֍gWܬLfWh` #H2@aPF*UhS`)@kd#V*ѱp.E&5W)Wu*cXj#05 RU#8UL`$88Ums~.r^;N_r2Gk xV)0G0|DFΑ_A8yyaAYL 6O BڻRC^F,]2౽Sh<6 b @.Qui4(dgc0[,[&EYK1n@&43SPq $$3)cqX横;it fiV"Wx/  )zPx*mtAU"F51txtTVlc-HQ)lT6C ff5 f2+ƆVp©9e  GmZ uw[-Bɂ$Ӳ;7A )iV/Ԛn׫h.KIXLzCƨ5YT43ZN٦(fARԁï4 { S@X"&>F60e/jl-v-j0L tGw!A:CFNv} =QQA!LUjm}E ;3}̄z"-)%xk8Ax6(f886eD;2l X.6!+.s1Z-ڳ8JĮbς$Yw?m0s!y]A' d1{|O 01FӋw_fs!Vg#-3LdT^;:0`O03jZ]áAk/LEbJf..z9 qbf D}:N.vskBSq0G4)`F`)8"uFC@$C/w[ tm}`v# ]6Qς\AԌ? Oomԍ*cFF5!NH0k s@վmC$)c0@aXQy!X Ҩ}0092 "ʛ+rF1 Rp(/H7ΛᓐS]?)xG mc i=npā1>OGm!;ߕ>V@Ogur8O ! >!eB)~W=.rRmQ5ouxKyr!w^q!Eڇ&(oJ!q Q'+'6"x~2؃< ؁!ؗv>-.'zl0zG%Lx*]f11mAfWrIG;xv[ȁwAe'uxx^ 38!z(/~xRv0+xm0kS E0 ~i11:YI9r鞱i'pg$9؟L2(ejI}#< z)Q)50jCڡwhyQ%dI"Y-/ r53ZWi:H/șFjGRHf٤=zab$?z}~ `z|#QxduI)}du(Vz!g}ښ uj{|*~XѦEبz iq>iHZ f5_ tj5qhzWbi5tje*~ #*A}Sjy@ɪpLR%:!S =v"H!W=Bpح*}`z3B #oHHz&㺯|/Y :&y옕۫לI%xak"[-§7HTF3z4Ȇ kXŪ℆ʯ8aF"5ȩ!!R;'BqZ{ڈ!K9˵ qW9|+Xf;#خ Kȡk2wukڲaKjC趋x" ؆B˂b{Wu)ea +H!H0 k»Ask'k'z`1K9 ѷZ!b! Q ؾQ<˿y}"<;`[\}8<Ap /b A&UK=A 1bG :»#PHL (P;K{ 0<GQ؊ź\\QVAv0;#,; ,%ǓV|gp#ϓQ |X,`0[<q,i<2Z  ˴\[\h1Al A  |Qae yhy@ \ĄǏL*eD,ʌȯ< `P, L }lx, MyDrϏP#|g| /;QQ]6-,=]̩I<`ЈC{qXM< ъpċPf}Y-m(ȋ0,tZW,r:b.صM!v<_ ˎ@=uGK[,mJ ڢ>۲+-s}o!m1`y==sWmm»[\ύ@x+ڭ. xk 9k ݭ߈!)}Le} -ι, Է] !7ر,!ҝ׭p[  &>mrs#VM =5`af-2.E_"am@Q`@b^׭ _݅! tp" ^n20z^8CwQ3}̎n|RKN~t ``71s@ԺMnԱ.0[;¡:>z{Ȟvٝzط pM优n,'C݇^x0r {ao+ھ~>wpkm8;;;#Y O#ny$  Aw!p -,[zUCxȭjZ*YQ nd){,XAj֌Kñifa>wx#q jCOzxnTV yfY i}wL t;z Z<ӊO<~pj!!j q| ?`Ϛ9ˠ'|W͑z|܈9 XrpoZ5{@]?m8f._]ȬY6đcξ9xQE5jG!E$YI)UdK1e΄i` !Ξ+aDQI.eSQ$1aBS[ 5YiծeۖfU<8w_%_+cG&\asƞw~k"5og^o={]z@Ϧ]Ĉ'Cz!rnɕ/gԋGc}66:RvsŏoF4ƹsA_5pߛ| ( 4@2oZ@D 2dAi3pB.ۉ`3h\pE[$o4HC(. 5*E j̮AzC(;HrJ* ˮ0m PF0*eǓL4kl# RqXԴN*c65ji ]W}b Kh #ki=.[xuuYj-65+"R?a;&xlfpOY[6W}؞%"<;+RDYrsoGiceq<+}x;sW6]ާf v.]u~q쳷ux5U{|Y xQ~Q&i/Zay7%oh1}RlҦ8|C_-U$񑠓PfURV-Ml_3¼ jXP]g^4U0exhp;H@*h!rXME$QSb4$.$=y'Ud\rEL/agCd+?"dBQQ* HG(+}i'X?3EHA Qe3EU oQ2 UN1E/M!u rFY#-9E*N ya A0!g#HI'O]I.sgT}Tjt5q"y~.Tgj%%"%%AhFQG5hM*-38S ehSt1˓0Y88P" S#v%EЧfEЄcAQ#FxoZ%k˹5#3VU tFAbXW@A !} [ XA>PD<d=;yK><#i}Ȃv0g]KhG_К9\4G="%g9PkqF3ˆ Rd5Mc]G<2†eapx l<;f{.\a={0D B|A8]WJ ME.hEW$&LY*ҡ'YO9%V#=-qWQzf$]|pmcMHڃN, 2m1"U#~rAPÑaۜH}xoQO)!=y dB'12yw_G4@c Dw9hv}qoۆII"v1wxtp8B>NZ'ϰָC_]Iy×s-B nxA/; kA}KKھc"C.sG>0;ֈYև:S{<4nO3'zD5S Jx?6y=+8h{CKH"?8 ?-9 (袼4>Qz;@$.4ډˋĸl<>(}X!,d5Pb{׊B 0 *< =+<ۇ2ŸP`B4> ͻ&7qXC="d;ǻBC,$Ĺ945ȒȱA\ tč" 02`DBN̪ۈ+`3St 3 #X?K6x0%E(^ˈcˈ;Eb$3[?d<+tg̪Brel1ܾ:lDE289[Fk\DXĈ>rI8@ƌxyt&20s5'~ S:<; Ht`vdHydAA'q2HJH}HHp't$5P}<ɩBH|'$5(7:Ȏ@Ix:ZË}}ot$GrdVbIE7k\F|bMʗ4ƊƩ;? RIxCn BK">H­˔X*80 4LQI@HI$I4Dddzo2l8&e 6?pH\T͞Xd |=Z\ԿԤ:3`)ɪPG*e#5O[䔴SC=k2 224ň< =G?:kfKIf SWӍ8@ P%ӊxQSFHLf M}N84UD(=JՆSS*ŨƠh҈0 yLV`$Z$VQ2kdȌhe]N}Ԋs `X=>UEH՜zEEW M5 W,N̔Wd8yW4Xr1 S*=C]XWVLq3XDVB k =1lX[`֏ٗYijEwVlYjX5Y MAmQ5ZfيbM6|%=sZٗ0%BMJ QYM1-[#[U;(̊u[ٍ|H՝3٬Ծ ?, ۃ`yD݈}܅I5=ɥR˝ڌp e =ݡAVe]С?b"]]ˤ m]hՐ]D!mjʝKWۺxڦ޿eC>4ǐ##]cpe>MUϠ[^GY e Cpd緡c˞ 2}wͻ#M8ȐLK01/Kc&PPO>/[4h9g(͚B}]}j悻'VW1D6 Ul@A]kk@7~>I9^~jpH⋵M4bzjA}c5#0)NhFavxCF)A% XfksFiVgn@9QRY7R%A!XZjF_oph&|iЄUy`demȡ] BQ~z) T>"$)R*@6Xq]@{j}-'9WfA&y0bPYdIZleyGYnT+>(Aʙ\ƱơgYr_A6j2,%^"n-XAFتҲHe$G"1ʘlp neXL\4]I6,-鮖25L%ۯE-x],\eW>SMrv(~JʲpCdc0]y͵@]]l{"5jHcڱT~cW >D;]EI+c:`ճ6N6ԓ>~kh8ei鰮78G6y}E=,֮nT.t=!6!~% %ÓC2z|cG<}+BȾ}gyfrâ5FGQKVadCp@A}v4viPc4d Qf8 XlRME2-jцJo802! 2#`)tFɸ4\6zHBNc`"뱻wEͺD)d\P11ڐF@I"ʠ*ь`sx<>9P E"SN)gX!9`'.f2<*Hl6sӅ*m0NUDGk, ΐ(^` U'@$D4`{  vD !O cz.eQMRQQ)38&vQyLSd*$Wc=f*RhXaTgOKZ*,0sZul)0L3cbPMS\E^1*@<)@#0SZ}'!;lbX.xI{ÑD1J(FJCE20&@@Yc Jq )#lFyjxxlfRu{ \$Q)[ÜNY)תGG0hTf}nuAy 3l?~>R `J:>&hHG vC@1\:WǤRB.@&RRf-kX皔ߥA1eT)EM<2C-Va%Gy[w|l>s \н̈́P g'?cra;l`>H{lYuE`!j訹<+?xŏяFȝNE'cִ9Dx\~ $БGxƨu*}] `m4bP`˩PXf(`1yv=e9D0 >`˝uoc̽O B|RX@LwCp"&wbbL)Qse 0jk7z50 C Zt7Dޤd/bSkl d @ -4JuBVRg a0`PxG}]pb7v}h_nE~<w5tg?FP;w,b>? 9;39]C977A w69].I95:QcEPzƞc`oﱛv`o9*X2HQǘ;4>Gz1؅qYɟI*PZG;Ɬ`jy#RҤ'DIQfڧ/~ɚUJ2h`ɥ5RP *qPH駘J触F3s1\*xEzʨ:#8zq?"c,ꨬqqz- X54J2IQڨRaGiڭ)q쉦 =C2 "AJSz|J z`u.q.EQnjZZڰ! Zo4',x@HLjr $᪯ B0?s0M)%q79+(%DF{/[vtڸ<;7)|+~y*Fk}`5Jl+'Y3Zj*"L@rQv@Iٶ oXFoʫ'Ig{N*ܚJd D"vPnѹ˶ vZbZuP胹*Iɛ*Sj$ JzHiPzʼcph0z8P ڢrjA;>{ʬW h  j0zEj٪#S c[ic a ܰ ЫXq?F>)P+R[L̞o`?y,}`{G:(lQ|/lV@ˬvP]p' ckF|{&bp:Y5 DzdZa!^1 T9kX*PǞ;#Z{2l?r=c8$okovz a˷|?k05W[QI T'ɖAz:#ɔ<ܭ Q+޼:v`[-īΕƳ z # MP!'M{{:,՘z=x,Ũ{f}`Lkɣkƺyu}gmVB]2 ġ|wpKNJ}I=kquͪ%*ӝ<{$%L:Iwp(i;+;͘-{)8}ܱ ƪ){Vd YS߫-Mɰҙ,dm!q zQ։ ?=;? ш`ݛ]>y@SkD_-C\OJ{==T\%|0ߔ(d}*;=4| '#A8>Y2wz:HpI =8#˺Q]LY7hM~oJO4.1i.>Fcܺ~},I\ZBJ+3n1[`w;aޡەZ+3#tϸ;ߎ+E΋ύ I \ޮ\E-㧚.K,6SZ ٫Y5dMϾ:N ڻܬc.͈ﻥL:bE.5)Y[ p>2^竺< 9 b0:ްs ~_hMגm,_.,1 Zmj}2ӡ##NO8^gջm݀U]-?_;Nquu>:y.<\iԩU81c4LYdr\ҨM2|qɕ/,̗hШQr%S^|ξ>D{v2&5ҫMZD<<p?r!=ڛA#pBk&6()TqE[d͵1º1jitSHGZ(<ک#TrI&o1lpCvʼJJlK0s#+\2J)mȃ8p1q ѼsO>\ҹbQʜpIv<".AHqDOL3Խ'a9L3Ͳ-=h=tVZk=͵.f\C5̎t;U2`UH/9S4H}dHZ[ZCPˆlS݌.HW2Ku]x+ĕOv;.CA0d`CqʐGdRHgx+[<*KFLqP"*^%=iQA6rN0Aabњ"72G$()5эd"Bz֚jPjg*=d;#10ioS3S|d&QM6Pan!H1}#vpRT x|VԠ-nXo2n&Z㴉=ڤH;ts: ]6r$ֶa&"E@>ޯ!}|z}Avr%bZ;xa_E;\qPلl.&ب]0+>ltQ &#;'TlX^{yb;+"֏@w#AkӘ?P0;+9;. K9  4E[)33ʰ$C_T34ISA+gM $ںSڇiaK(IF8|y:rɓ;::,à ;&ڬqAM|4D'&BPAEp Y( # h:Ӄ.#D.`n,pZ 6 MAe@R؃Mk6ȈŃNBH/@5Cp44q,<3;4k#>E5[.h5NJ =\RAq1ˋ )XA,'hItikOPIE#BANy!GJPeʟ>dS{H/ @hΞ=ʐ<Ӽ#R=-݌\)\Hɍ>&P H8=d9˃`X>@шqS }ȷ:} EHA(8@=м=X;hX5!,<} [Ȼy%L$D-D YU88?#:X (LQ/hd9zT k֝?Y=(<yZ\5^4B/`$CXA8X;8ل;;`]Fn=uXЈX^]W=^<}]Z]=31BԭJ60:]']<^X5D` 9L8r :X1=?M <?Xh}S`E4b>wt7q^>$_H #B jDDXM1.X?0\gR9܍ؙB^X)Kbl%CsbS8΁Z{>4ە(ىE"ɲj؜;h88Pc ЈXh\i!*hR"Ҭ-Ug}ؤ` a͋]a-i3;5  1b>(%8X 6]<a}Pf>2|ݨ.kS+cU<uWZ`Z~H\X1(1x؏8E8dXݘ ^چ‡ Q[~ 0`8%֟=Wބ8xdX.JX.Lj 1j}km’1 E|7kqa~Y`n[]^mH.14:dա<ܵ>( F\PLk21>  Q-ԎI[?<^GJS-i _0) S!<0-^i5Rse]^?)39=#G>؞(XX0vfmkC qn#s0:H܅, img:s P8s$5X}_<<8&+1 }2Kvtzt)[a.CH?ߨM7UuZo6 D:4ƃV!Cnm#8*L8PoQwsJ);"2&4Gm{o/ώh+2˨kpGևQl^ 47@(AJRX8J"ѐKiK9[eS{w 9L>0"ͩ: ! 6EpgxZZ-zH*'!S"2s iRCϳ-Ih{_.n3oR` 0CJWU0Ϟ*"%}XQܺw7p;%ٸcaP+UyUZJ}q(RLEKňcӯo>|㫧qq%whePW BamU]UCKl!"K,wHa)~-"1ʘ1F%a9LL>iO>P xTo TyHr,Ya%Kʁ\&$mB G%my)j& {/%l>2g  $ej`YuxngE9)őѰ'B'K=504L5<'e?FUÊ$h<YvZ ˢ'GT=8ۧfqm>>-ǂSuy1U[PHߠ ,>{n;4}awgWtOvAa  –'>iڃgECۡĢdm)Il➎6a|[[Y,hA2H&li3<):ga F bREve-#Q!886D.Q FTCL3r0`7 "0$#(E22W$$v:v`AD`*F-, D8"Xꋷqe#c)K{ pxe%*qaV\Cb7D,)Mz і\B27 bJ/i zCV4$E!mO#&>9&!vfa<җ U'"1)%`=xэΈ]ְnuV\T9N0Q=tL## :b"h$& Hʓ#')t\KADE3)VjvFČ.3J[8}aRu5(m')#_bȃ4SrĤH&nr A Wv :tAp2JW'r]ͰbG, =R<9r+bPC=5"DkGHT깮½ˠnG0Q%g4#&2j`.a0jIqAl\A.ÖbjzBd,!:yVAbGo#BԜgT_ʅÊF (؉`U^ܞj+ _ΟjT@H^,vofudDsxD:%,ipkF-j/:QQvōΑbm 0葦 W!$VuAW ցf`|X/.d#S4w}EAHE`u %zթ^l BmA" ̶|ūV/,܁j-X R QFNHhhp$^+[/.kP, tJ(V5(0>\l\ o:y`naUTAkS+"F"%~of m_*G(;J^2c܆qJ)3ہc6j.3r,pQ!HxE8iUdвH4*5W3c-+Rҁ%lF+2 Ad?t:ZAS Qvf*W-3"3: 06VG@%AohS e AsM?0\&F'/p3Ap.=tA JׁKϓhFt;1 ִ6hST$(K>Jt43#5)_;aoQX/Tu"5p).suR/b]ؐ)@Tp,3P/s\(gF5On+~%^L+C 315:G3FwD36V*dmdq^UF2"o?>h[sՕ6XWف0stJ33wlV29Hm\p0v ?J/sUvs&]2GBe`ogsU7F$7rye)oqSA|$әT@1CEP?[F㲯~/~^+tʀ83G`tGF35#z?1C? 5K3V5bs7&I6$20HNgTBx:>r{ xy'F4#Bb fywqWPgx7s0)sFxg12kr$]kGKq07VuHF\"2 eSs|y;3w7[t%܁|rRzHZ5S:8:qw{ׁD9 wĤ 2+Y XZc1vuXG1F0gį{":͂ͨ/`G{ mk)#fI.z3wyx(w;Wѡk[q1lA4}s@{#^2$|pq{耳+g2 $:̼-%UUKvb3czuv˻||{W5< O{Ώp"GmHHAGA*_1G1l[ !+2.uk]Ssu0vdȐD4yeJ+YtfL3iִygN;ovO3]̠Ys9mˆ(T&c>(94{mZkٶuL+skw+tB2EɨIrcT;qđOD<|R"&$ujիYͻtr `݆ 9wx玟vDkh|xɳkb^v ңNPѠoUDg>4;:|%Фл0f/rt#)#8.#CǺ꣏?N("<-У-C m22cD2 O>#?.gG>`A8@r% Ck *yM722QQ?Ͱ[J-0mI.TOIRM0ONQEYtlM6)ݔ^}&<< E%SC z#/RVG>6rpUXF@(8xײ50j쪺m}4qwB- sM/l]4 SYx#Q/N>x?EY\M xe7Fı6Ruޙ8JD1r +{c7;PL.'gD"{ޚY/M H9e5ШihU</#ݑ?Vk#MNy 7nv3fM;4wq߾Q+tH\3X 7܀6bC lT:[κ;p5$CQGxQO>5vc ߅JfVZ͛{Ϻͯ OJ}zhK+<l#Hw><3TB%$> İš!q);ZALD< (>Q dkY$t?S Gta6谔u]Iq1TfVhB'>R3m% R0qcz8pvVW>ԍF(E>p.oub"Ľ! GŶ7jal.4ScXIKS| q=ГhkYe70jM4*ѝk,edr"!H^gA:jqhӠ7Ã~֬x}f B7DK.C2G$Ά`~AY@q5أYO{'"fCs_!GYʉHg|#oD)}- E""sv3(GYn9*R %)C7X}"idʎqfbK[ bR>#f0/̏!}CEd'Rbg"DݺFȚmZeMppzLB䈾cd`[ɏ4%sff r>fW[X>5dEQ"̛J"u2A2ơVXAYf9M|T%ZN i@&tze2?8h"DϦ4Uoˮ|>|ÇȜ`#K]"0mݐ8 eH@5XfVB(3UUpȪhNĩd?"$aik a~%x!D\74K\HFI|zD\cl$8 ȳW#d,؄Bdnd}|LvvKF62dBjiI8YQA)m$Jf;1ͳY*VDޛZ̷y.4sd'+Q늇+X>j'ڏL8YHtz% ʄ{mZkV3FБOdU#V9rt#I"k}ܺ Qr]^R/+7#Yr0Rd"sU5Mȹ:F*Rg~ w!Tg)^q][m9εj$ױ;^r9E$pER&9Lc)WWV\t<,`χ708ƻF5љ>2üQ]^qaY],nuJ@{őC !, H*\ȰÇ#JHŋ3jxQǏ CIɓ(S\ɲ˗0cʜIӥ8sɳϟ@ JѣH*]ʴӧPJ]ԫXj%FVK5k5˶۷K۵v˷߿Q4# +^̸k ˘3k̹i~M:E^jfnA=pmָs=L[!%cvpȓ$NYHnO毡k߾p@2h{(jq+ ?O5j G vChdw]]a` f\4ʬ!FU7vBohhhѬ!adZ'2dgF < 5!$y؇=&@qZaXJVXj9dmah嗎E(J WJev@ A%tōb֖9Rb$y(|sNl 5R6ࣩ Jh7Л*8RJ6l)BL^1EFNi3MAڸy69ẟ)=̃= =X+HVPtEWDWbaHIcL2Hc (e3AS>̼@/3E@@O6@C/AtSO6$ *g|4Wk6$2A` =$3ݰ\5'o6Bct+YeB dGH'4UX}i=pHKD0^TUKМ ggc T+l@2=4V$SorMsՀ7Xq=8yT0stN`N:]P# Q)[4C< ,E͠1HCE}0{ DLO6U+Tt^0_26m8B{g95+5060C_2dHkeۛV0Vx;4"68!lt':Bhu 14"4@qy:ʏDdqe{:"v+b+> 8f(7F3f@cp<7(!bt`)l b1 >cƱit&0%y?M`̨B&79cdp4Dc0opuۇ40h̒a#D 4RHɤ]ᔠB b$D ^a ǁ _k2@aӟw-K` gۇr[0\0@@k{42ov +5HsU# p#t@ihsY V|r $BK])rʾJ bR {g<ͭ[7XI.Хɀ:@ uA2QS1 {kGF.NȘ7"fwZ `)(ƐRd\fd(6,Bta"TcpG18Ȏ?"^䭼@g U oAXBI ~.jw t6tp 7tPֹ-@cn62 )s+< ,sp'< c JܲfǓ.X` oZSN-bwFn>FuĀc+%z#B&60\egeթ~5bVF0LܬF6R=tMģ%҂;1n}Ds8>K# Z9^+1cdc^Y2ĐC `veyLL {usѦDY+uu`mM=7#"lwA=5{ȧ%FoJڸ`N[Ffv藺kDNW`1"4C6vAg`CeZ6yPPN^?DBC'zB6[Eմ7͍RAP}_e6V^[ _x`Y8(QHPv?b3YHc%0cis Д zyqyx9(z(m Q)|sY"șٙ~4Ao (r4Im!هIٗ9rYձ9ΩYCjI9tyG̙YɉnQ iB#fnP :2 ќ(f` ɟJ}РYa>seIe!*ljXz9uP|X䩄ri͢z@Ht0Y;ڣwMÚs)EjFI H(gxQ%k\-TʛyEgʂyz SڈAB z?ZI EmoxZtJiqP :9 5rƙ 橨vnJJª mSSp説2=_vਲr#%2f &doJd$jq&J35@hڈE)ᑭwʯ_¡IcvТ  幉`:Xa  Ōg±ZQ`oiN*'rg0grR"0KZ0HR #=?ZGVIk"iJaiz}05ˇHUلuJQZ[ : 2X xm/ыSVsliS +b۸ЁBzo`ފqᚠ(H%( AdsaQ Bڃ?(!ۉK!n*<ʁ.khK_kmk:ˉ$#jˋ}*=Xx} m[W,iVQS"/ሖ {+K<[ڊ) #<\'UrI*)q1F‡ K$-5 ެ\W ҃\lwl(\̈q-B iޅ[kyA %+}f A eO(LmY<HKS!Mr.^*P>B~.Dy|_mS~ع\>Dm k\, ,q0ޑ͕! y~)'tHK*m݌^^R&~>\ܱp~ί(!꘾~f_1 -dzORQ¾{-->.M1ĸ3Hhݔ^@{P=. >|V=Y~nPQ_qq 1Q{޴q o,? WMB!x=s@(v(?;2 ݞJqfЛWAM^$nh{݁[s/$YB㉝. _68/ ,OLc`!Șm@y@9LQ ^H@blBߊ _U)/zLYخ~Fz]`.OCU "0a?8&9tSg@XE5nG!E$YI)Udiʕ.1TCpߛ8r$" H4d%-.eSQN%.fHGW{(*%Д@F+Ȗ[qΥ[7իfذ)f 9r zU`O+cecȑ^JfLi3ў.],iԩU;|eP1tYV'^񑭻\fP;w3iA܍w[z6m:CY$=cZ篔r22ï7`O:: jB注:B 3bZc@#$#lE+E! >mCkf"#=63p'z9Tr:$/3Ko7bi4&˦ 3IMfd bL>3#123,=ܲOH#+t/RS P@Yh8"Hy4ёtUV 4䩾$j"E[vIaP})ZU⍔`+R%v[n3 Yא7 >ܰ)=:=^ȌIDADtڧS܄JSX"hha|#4rPPHAfǡxhލ xe5QA I!,R4""rN9rH喓VcƴnyEdgU[*l*"G3Gjè=2o+'ť2;[PA2FN#PJ,wuXCKzDvBRfsbmKu}y˿}ɂD:vGDGxD(/7t@N<#Me31T˫C qhN !µ}0 "p;PY]HJs-gSC װP2P:; I#b: zhr 8٦> >n'$XLroC=9TϤeC5 !9P0F[EjT)hjk M" $:$sSOOǠ:6ic> 6w@%z(,j[c1, KNp>Pd}sTGVľb+7 kN@AtT&bAV2uLIyh5 5!]QR%moSR^5 ePj}mDzCJHnT+:M=x> ;=%!j}a܇,RUBxاDrRߐLWViI8$vC>3y[8b;&p4vqX0QAyvbDZ̑(qSjS;n^wΗw\)ЏKnElB5&>&UR"b|-d0ռu"X0zqx݈ x͘įkDЄ&iֹzv057)0igDQp^Ac؇>0"a @8ԁT|jjyf8\؇6l)LA aиcGl8DҮuFףrmDosogC:y*JvgG=Qw}4cƀݳx8 1Dr$MsX=>@h5VQlC$޳o/:=*uݒ|gǔ3c`4""{}=Бn!릿BͲ# 8?̡zp=zf<ۣ:/<@;tS ʇ3!;k|냈0(6{7;j ZIb6?Ar<:"<[BAJ3>P"$kb;Ƀ ¶6l 7"ԩix$)%6"\PѢRJE9+uDZ&;ŬGx4m&+O72_`:$Q?]j$A%T7]R6) iʐHGݤ8C5} ]+P 3.+2\piUIxU\}"v}$E50UR*ɠ<4}VRiBU-B/#)WU@},Pc!YM_) WyzOTH؅ TѨXS͈ .b[%$Pi*; vb"`ňGh,jN\-|Ybm}/W4['4&ⷽT\tc_ZA]ՠ y4WL.$T`PZyeZ=Ve` 7XI/`3Qdg^hT׊?f3m*ڒ4t u_@>`ʈy{籝jr#.e+ō][gT"T7ʘq7#Dx݌Q@3@)>zٛ]iMX h@qEQIVTgw £a Fjf^Hb>QgfYڰ]4k6;I  htd$:j/M[Hjk N4t<ة~kNMe|evjԌJj'ʮlӕM R3bn/Y`ZH.ؖm5YDY6?&m(FU18\H] asE)R5n5Vj ; H:񶗍?͞┚+ֶVJޞ{U;[FQ}o7> ;R A0PY/<&{??{KQ ~맟!~jpc(nоm'JUi 0lz~|e06J2 *˃ }Yvԩ' yy5R2`N}Md ڪˉΎ;j϶WKA\'J.Z|ÐC;t_ 8 ^L)h|QoY@xg za%PDoS@}Uxq!5x#т%H"hYv߁HQJ9% O>&bE)RƑrSU&O]%|r=d٘/ևxT& ZY]v%gXGzZz)_yh@zj"IZFeTՁ!Hif*HҏcyIֺ*zיe l|4\ >qhv -UQ-ꬬ&i$n\{FvmګD:-ZQ6|>Et\1Dm"~1 kޏ Es#+hjc~dGn2ZlR#?ii;!!GMj1}a5od$"=5^{MIrDZHEÿvr8?^)rX E*} , 2H*@l,! ?@lr)|rBҰ@Hgj{L-!7F G+,"-e 1ND )'R@fXbMht\"x&"X4n|#9F !, " H*\ȰÇ#JHq3jȱǏ CVT#ɓ(S\ɲ˗0cʜIMfnɳgƜ> JѣH*]"ӧPR$)U@Rʵ+ց[:JlͰbͪ]R cʝ[t-SF߿ f* I"1n#$#儔A|3[3wLk4ekdF踴kRUM׸{*#ftDȹnjveMX“ZsW}N&sW:6/S|ɏM5jm_C-AmscSGw{% ]q)h@ 2} ]!FaxL3C!D@PգZ`CQIhPX##BLR q  DI aҍM#є' Ԍ WHXvWI3fgYtNs'P@`âKAb4ꎇϡRD@0}TXJ >.JlFV 1SAjz>"~mi P*$|*Ю$(Af~nmkIЬs26"d>[ R8xLZRb9+6l' t}(Pd/GK:L:)kk\N1urO6qBVi FPz14[E+:(BsQ>kU m df6AWgҘvMIZG%5ڔ6CjlP{'WIj]08v뻝WxκpAz㥻9~mAG}fvK>P<:}bv;k^X@CIP(;1"sl$]i7=J/xTaƐWdCFPzE))J \%+9ɲ,lcyK"x@KdR",S~B P#8Bj 4"JlFn!fPG$ED * -2QiA"9(jE'>1IKkv$|1CrπDAw rbr=B4)?uY2DsddA;jQ$5@-94.ɤF&̜nBV!yh=yz~S^JԔTxQTz hӪD N 2R$c:լ8"JFt 5o&zyIC W):䭁E2Ņ=6F6";F{ُ,]^gIoh9Yjv8eW[&Lli~%0e@9mp65-0BWlcF(UN¿`XD:D饈o3 o! C4a,RͯJ&=CgM(I V0;S.+1+ޑۆ[A14 gmhd3E9u1Җ+]uf; AM!r0E W"')w{u2Fsk@SŹt1H¼ '֎ނl,>L 1, |Xr[^CaZSc;Ȉ iNXzrBrr:n3ނӭCQB4# )_'W;qm/a\WbGD&(=!hCP)ም-c%R?x[5by8dN7%{@ e&Wq%n[!lMR(bX}51b 6j#qPwM^FD7Gq1"Rlt8s?}ϼ "@8Nov8YBW-B #a76~4lb- q |Ͷ9Z<c$W_==v)b Y,w $ RC0w605bqIwy |ԅfMqZ kxO cD[Eݽyy|>OTݝ/:̡{#'2 [] HH}7a;zpuдwߗ)5Ec6sη}gEJV;xmt#25ufP>C0d+nkf~ Q (| tADm/Hz~7\/BU{U :(a XUde74GkvwW*wCŗ$([e`V9@o8-q(`jc;Y1<,F}H_hȂ]Xi'tu}1NgQ~Ugtd&)-X  :fpCS =AX}  H޳f@yT>=f(yx7s`&;P1{(amDE@hV7)ɨ#dh}%5\ts6t0) `l6i3W>@y)ոA mqG `w3 A!G`r0$GG Tu*GLKbd+?R?WHS~0ozrЭr0 #{^2{M gP$!'T6UB((iTKs /h)A P0D#D $uA:Uˢ )%C 0M17m$T#F,Ӑ ` E@4A~^F$5 uu S00X`u$|0RzV<ư ^u0Yk0y|˷a:vpOgpv;YPQ` 1aeUB߹qUe 9Ob2еK}[%ay":v%; s+ E=3}SB Ck" $Y{{[4ye2 [uNZU˻O F ˺+O>JL[PиP& sL|% ɗ´b$g{Y˿Ӡ#)++:ҽd@u$[=\w;@l"T{&ZtW D,۵}KS]&Bz|zp:v[< Ptz;`bbgv)gh?W` [+#[rTsѕSJUԉY9[|l*}!,[)+'. xjetT7gÊ^s8*<ˋ34ȎZq.Jڳ}qvf},v! doq`8G|Ι&n[j^SμL[B&\c7H EQS;>5:pO i`зi'EgRR.RV'ov#yw7N,izkژK隇Pt%I(swC2 QsCY qKژ 9#h1VʭQG%4}PfU0i^$ӢUM?hWf"6ΫAEDCTqFCMw2^{Y'9Z1vY|x@jЮQ>fnzHN<llNTqhَC4SF 4Iv(aj`"z̖#"c"6 ɹ/ ')]i5C38f,LRSVڳEu*n{C7aOYn^yeU&prOaV ?G~ki3W4jlGe^֙d "lXq]ޣaSl[T`:7֙9=FuOSP\M|u؊n[oe#uOv0vdz3R?w62-o΅ ^c <40# GفAV#]/|e| q sgA C%NXE5n0.V^9Hf8 |&@ vYM9uh`ox%ZQE>$KB3&QPdMWFEi•^s []bVA4T93aĉ.ӄY ux<TR3^CS|隴S$.̟eϦ1b[%u.r}8K'*whz_2ubw=}>{r݃xV{c?雥Cȼ}ĐjqCoAM ˾5;(ApCLt "84D:k 𤓮ń: Es|謁ƸB #C5fĈGC'2, #!ŠLŲ/E <-4̉ \IaO@!85M?ЇXxa}GV(cegzhVWVziF1_+ !, H*\ȰÇ#JHŋ3j# CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊK0`ʪ]˶6nʝKݻx˷ߟ{ Lxcˆ+xxǎ#P2˘1wa˙C*ӨǚhƴAj\M瘃ʮͻ7S2-]0w^|%hbqto0M,p-V5R=AC)rcl8@a(_ќ6Hm^ܔyi7D->\[s}@D d9B7D!PԥGx@6B {A9۴۞{A/w޽w8Du俆h}+/"X bDq1]{`\Nsc/ACMIUgȵ3b8;  ݇K 0;Ѡ9%M70*)fuURNnZޅ9rn'{ *ze>];ϋZe-}_lm5Yh:y6j.=*_ Xkr NFHkُ){-g6Q]wҽܔ2evaT5Cxsmes`A6hO9]w)u:;ֳlU-TTO5K;϶vO[Mr+Ysv*H h,~qe\FM 7%g3t/x:Y Oj=A]z>gZ{oipygby:BiOiм:}ig Vu搖4=ʵ(p}y)>}4;Bl^3Xw{W|j S|ŮI:,_@@:яibҧ-Nνk"ޏ$,|?Ѧ^r0˺1|}n8Ne_S6:{=nsEkΣ? T+8fhe#X5RQ>iFm q"4syq%4Pjbk>؁!xVz6lx&qxr`<_e'u5hwR$u6vGx4B!,hOsfR?d&ZхdoSq>8i|7M)C>`TbL>l GCxaϤng0mP4HuH^cpT@%M4R`EkLs2,vhNtvs:ȵcHLRs,Gru}X&f>dg11x(%8AB:iPX 8CT]5c5Tu*||X!M A$V#G\'cHg8$AJ6~snYGՍ gG\T2C_3|`_tXؑy}A3H|."Ug8`Hxs/g-v1)iGX@UTisST0yu5EQV%b!vbS[obYr6%G'l-iZ@p{SїA<5#fU:,~^X<'ɅA**2K(B'ui͑yɆJZܨ:2l$CDZ|eSjipSC}ҜR6BUilVUYQYoP}Vq YzYላ^HU^wYQy\W:Ԟ9` vJE*LixїGB❤YW \V&z:V-&iRI^G`IJjW5,_2&xdXhcXs  [1CAA%["_V^x|Zy@%8*yaG)&+ÞMlqjH8z*djE .3,6܄XڨYA3CzL3QjdP)i"vvB?◘"!\~f@`J~&|=r/)q ҡTEZq:`xA]ѢLի@F窮T%}(9'UelޤP &٭#}wTaJqQE/ş*QeiWP#(+ : aޤx `5{8ڤњ:K (MGZ 9tpnc8X-9 3QƂXx˵r:AIH]9u:m s[%j?W0j5+ +qAtE1X[9Zt}}` {ddz'\d 9+ -ZZY^ Z^JB|!&:^ jU| )݂!nҺc&eRPѰ[e,?,ɵ uiW(_u{a)*UY6rqp[^yXm`ȟ49}h\ kcH /:XtPФ@BRĂ)9 AUJc((3Y}x}Z ` @e|Ri&j0v@X)Qy@ ! yXy:4㇦^rE` `ʦLɟJzzEk~v`m$yu:  Ȭ\w- 7,i{\\\lDkH6\^՜L{<݌n="6E)Z*@ QgA P SԔ!q\dռ{Qʶ abJ3f6w,؜ (-!̸Jfxš%y aե\\9XCcd ^`üի|*`v[}n^8xeStܴ{ cI-Qqwd%J'&ZJr*lk AЊ,cp\5,M,rPt{$DPabu/%V ظM]!jB[__Yܹ]Q5L2OٰM q-<-ŝm-a[cV܀ {1 }ip&j^W-`ʹ{ 1G!V_- j ^%܄@=Ƚ 1K(>mC]ͬpk][M_*`aA@B.ہl =<vZN`~B+Xq~j.F ^ʹ_b^xF0P P >lz?3!dnN>0 <ߜR,=y.N17@7@ ͽ{X5f1N {p[_ ==!Q 1@XU @t/*Ohn#К7N,En]`};.UG1}-DŽ`J_k 1}ܛ4Uj-ܾ tPL0 =Po>F@ؙ^-¢j`mv }Ͳ0@۲@yаI[*sh]|,P   ̳/}dNXE5nG!E$YI)Uvbʕh$f 4r}riݳJUYnW[se5olYg yկgrhԨ1ƭ9 JGV;M̤>`oAtA 9ϚS؇:aDDs$@RfJ:M}pFkF ƈ #9ȟH9SJ#F,rrl)>πtX82CHRSѠ0r;N<4)G34#=*'GHC#?dbR=+RL,?BcⰃRq$G#,UF l4!;2S\sյә7*qYXb -E*#u[n=_@ߐCK>)9"Xw_~ 1o 7ՐZyQd4X̣ꃱ~;c, TT9U]Iuj>mXɣ8:-yg{fHdN`JVmOCaSfDC^z>K}裵acz.O8{kUd7ԨÎ:[.TCwԁ)tH[|< a#CBՄʭ")W}u-% w`3/k+RհS0; -|Y7 7`}?z9mF n3QOG~|/:o vc9ŌkbXnՖ1s|?/G_K +c4 dcv X1Ȭ?eP* B@7`Ae'X!+` mX]y"C f;UHS] ukamnW:ၐ3tR%)˟ -勆Odcl:l` mz F17&R?"H,Ȩ?yNGzjIDbŬEҍpΠ15O"n$H;xPP"qD NdVUe/Q{C(P1 2@@/?8~Ta?UAIM 5݉l`1'C* Y6}SlY2, eQFc퀘i@h"C3`m52_׼Q|C @m aʿ݁|Cigx)fX06|-)T9-L 9Xktbm>mS؁1ΕvRiI yx&)7tA[h$n/}S0 `rWeNa  a.v ^8]R^v0ğ fzڠ}@}XX ;&A)T.)m!ig`G7ưl]}4cݲ%L~ 8? py|)rB)8m^:f!9$W~lq=mZ9G24,m+᳄g0-e6Qeyr!bE-iXCƸ4ޗ^§Scje``khwT2Ҍj]-`$Hk\{H[R"1kY`pVG[[q{o/ pk0gXhgd!E D L5wų2ZOc˷ &nO% Q9lDy 7w$Izp90;Pwfol#r*T!qfQ5:W{Yc$#ح`ɤCW+ѥ9B[*B̼s't@pXsF5LZfrAfADڅEY#Ӥ{Uc6Ge- ,/L@x' v ٳ|EI}A 5aKΐ#ł CJ< "Ȣseg_#/Gd' mX:7jB9C <}Dܮ}Ã$(# ڇ*XI0cW? 8.05s9?%㈦ } lA?@N9=Q5:J9dQ DP;-hPsA%# 5ACRϑCH\ZB1k'ĉ5e17z*pXC>܇& N )@'CA>|ĉ((Psԙg/lEDHDĵ`L99X+pG$E+ Ii c6AАl㑌 R1H:*ABPD O3R?689`5h0< B "3؇6eh5܄Ë =N5(83H}P}TR FXh M\R9PR (l}؅:dE S1 ""8,4 h<:)%+UI%( =ăKT;/)%9N9 O\.>\Rc3117#y7ՅHqU ZMI9}j<*hhM|֪ +\Uh>)i](= 3ك1}.QFee[UGKkulUy<`" ՞X̑R "fqQ4]ӆՆH$c gC.}WDΪO)5A2jY(@&&m6U $S#VRW=*3QgjEUԖXP8wY;;SZjMy;Zǧ[[V?SٰM XTY+n\\Z"9-J\܇-2[n \qDu\]]ݗU5EЁH6P֣rV]PKQۨW(eP\8m=h#Έްm,JIuSNϭ5* [9MŗHY_0|ZWPM%C]6beԑYQ Zٜ9hcځF=M6U 5TeH8It߉OͪeR+!- (h=aDU)dIX !՛348V|Wbl:+#b)byC5FS%Ґ5 2n_<%8SUr_rc*n_d]Y?QԐJCEP555^ P&L3}_/&z3:eOOP5^-SB8Q10宪@ <FVe=UQҫBZDfQ&X4uZ,A68Tn^, U3dV1cv-/ Lpf QZEXQœbW?׽L7wF2[hwX0QrMIO!E<U[.,bH5*eM Xff UheA|npĤ^ix Ջڰؤ"dKN"_twi9S*E8NՐw,U&8)ՂPhNlx-EᨅVAIih~ GWl)NC^mw򭃪US:(Wf&VbNmZx.hb.1HÜA`evȗW+.p~_ ٛ´YþtliFSi.e9]*\='(L[(aLg%^hއ}E&o=VΠʎb+mѳ2ңm%=P<~^R͈, HbT .8Ar ۇ>V1(8؜R m*DgL>(lT:+$/)>P[sĜ 䥣a<`( r r=_$#=Kr@{eg2FsItJ_a詃#at3tztNjԑh>V_FEU%)y.&"3>Dd]G/Z%20?%7%`3Ȣew_/ ?8=!P<;ngC\Lslj vAxwϭ@7wtAtՖXV!N4?COh 3,Jvx^?pwh ԛX׆r)y G%ɲ;g SB.V":v.zE1q)wmxRzˌFd)@a[<00ch,}\BQ}c}Z2F2H4w6<:9a>F㧜h0Za4o{ i}ȁnIc>Q,2̚7s칣Mwҭkc+5C<-#(‡/nqͦ5sΒ]#8SXrx89׳oyt? T1s}`nm3W|AtA 7!Zx!IZNl65I$QѠchzD&Z"އ&_bD:)lnIP YTěppA5zfjHV +&XSfZ{gYJ>Jb1TɩQU-kF^Qd*)gP:out *0# 5EQjudKVz kFݭn0-$jQڪۯ aY2Inj*~&yK&FYQ*keͰŪQbF> [/˵$"";HFGi^7ϧۏѕ+?>9|p3IXD2G$9fheQ >¼P4hcHڕᯂTǑ NjCAsfYTF2 rQ7amFWo 0BֹFl7@ ik'kj^d=l-k L7f` /ұ*5r)U5>ޜvv<$"U3V[K 20y]|K$&[HDo#](Jmd~݉c&SN[ãiBKNk^T<+U(Hid!|8e~d| KBX2p#{ 2,&8' i_H !,^80N|H7?B6y"GxHuӒ [?jA # wJA 1 Frd@/*Rpk^7:ҕ LG'ҙ1hwV$O4G$a>Կ7 iNҥRuad17աTU2rޭ#Ë#OCy *G̴ǭvEϻl0+<2 FO taRZ%`+P]%L 6B.#iVK}m Ҷ-n'vBXݭp!, H*\ȰÇ#JHŋ3jq&:Iɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJ*T9Vjʵׯ`Ê]uٳhӪ]˶۷pʝKݻxݛ ߿\# ^̸ǐY8˘3k0Ϡ MtU5+^aݺmQۦMlą+%l/L&CwË/kI>0w[A2+/?k1ܑ{62kB&(cѬރPvv2c@quE~j'#42bF@IWv(<"k@&yd )`))e^W8@i8p19ƕF d$~f8eiT=hC͜hM=Bl@C'5i#{&"~D 4Vjt" 1ɤk?I*s*٤@ 3SL4 i]!D{jҊүF[P+ Qϴ ; Iێ!)qD\;6 Tb2t.' \4 G4cCAkކ@:!Ao1LY qKCvav lrF(3ŮAEKtgIJ@OK$@`l͕!#$tC>jC=PR<h 9 *6 QvFz}+32c1Sk7,P%d}DOv)5[,vCMYu(ࣷDPK4~4U.ᾣ}ٻFs˺kN_a>ނ;<;wno[c{\ϲG-HtK`ưvm@?Up cH `Bu&џAB@ xȵ(`9t:t3YeP #ˡ'nkACHŅ4zD ;ء`?*taLA>c:HG6f.~#;Ls| EŏqM F7* "BA$Hmp rM*m] !HĔjl$uI$aAYT3$&2E^ycif\@pLNф~Y2DTӚVLuGT *ə]s{Hykvgq'=O\&A93"dA{I< BO"2PDMVыHt"xYK2 [B}RJ_&foA M LX 3"#FwJ&>ӧzc!ZpbQ%PRSPuFJ~4 $ZUB3dm*U&DEZ,~lsZ]WեyMRmFjQn>ۇ G4@`.*5' Zu"o+C0[Z)mͬe-UbFW-,<# VQN(RiAָ"QML Q=F4ThSͮцwG@+ATo{;tPB$򝯇nGhoK2$0z4 ko' jm3p"ܰ|nWB3gkT_X"j8Њ_Y/ @QqBcq 6J)!E3xU846kRw`ٽ]%IWjӑnbჄrCst?O sw:?fzpTժ7ρ<+p>KDƫ쫐-a6iA;UyiKB6Vg $I=dV?iCk[y FV_ SʱLåQоiQFBtn@toa&us@-qf*Mċ43QE)9%oLa w$v|5+F7X<_N=,[[uxIx9gm~A#M}/dsyAf<~,xJsL8UđXE9DXyyE*l<lICLΟ~UxzK`tHN "cۍH4B2Hfv}wA6*D-BkF1\I4x|gMrVNb9v=Bp/>u^kq6Cp8F(/5.%ءd~kP_&f jaIU!LP4\ 1pGw t`wW'zDw7rAg5$H&&R2{}&{7Geht!52:*H=StfxdsG"D%(jQ|%cn!48tHiwa1ruuQ QTXca{Kn@%xf_3Ix$B"'}'oCy!efh] UrEhQnKf.F7`j`fw.6u'c5=px%t07epfVupA xFYtvpA 0g8FISqHUz!ldztWyxws\xsoԀ(HIxMJ3aB2! \w~16sXyxɇqAu@ fUk҅ z_t vxŒ-Y1A ~PP? tBxoE l$3kPoEo{XA}ш\9=*(_x|ov$](@l} he!kgg%tǐM r5 闢uWbb8puz [VS5[`Oab@.)gl~zٕ26^}ryzK!maMFjliL[Ü)W!iIOm(r/h2eT%pl9mH;rb~{:/)&c_HX{9ZSarV0j%L g8s~02x |yE1Xs(p~x@i>)8ɤB1X48UE:I/*ė\ 2Hp~Ye_bFlPxwg;UgCoc5z˙zx`YۨP9HɜQD(٢  >!&WX ᙛ/Z (*5!jov*.lrXBڌ:! o7Da ڭ@)Pi'c{P YU"jcp IxѩJ$Lph{y  9FwV@x8"Q"k/4$&qfqy`}UꔆБ01fvCU rHCHEzrP2"W+JKU`1}vek[*YuaXQQ d[/=jivIʖNCaSa|Ha-Y&YTuE~ W(+Jd8j0SzK  !IA5Y$ZnQ ˋ6@zyuĜ`ȌQJkٽ17!{O)u0OZE {xi <n|Џ_x٘ K@*VmqRwq+,Xa9{s7|&ֵ, F!\N,;l 5D|[`l1d;˕\8\_|$ v K̽]fA D {}ռΫ˕0,|̝۹,lEL[ 1.aS aTAYob|WqkRF!$ ZXlq}lzSŌ!%'S!#Љ 16AK| PkS z}J-& }mW)A xqzmqB%6=6=hE@Rx9t GԽAUM!W|-3r:E֘ɪqӸCN1rqϩa\=l\ FmnRmTh§|; Ίtϑ$~S ˝=m$y;\h>qsٗh֧喞jb%a<ѶL!E=yw-cI8Qqwg-DH,#tmd C+Gq) ȍVa<2CF$vzs(17!}m4t!7Gy|T%6ˋ MkTJ1rЇ> T" EGNqK͆|QFC$[Dvp#lcsaT?b n!iG?+oT?ih߾vlv]F.T.uG5q"Aoeek I:LLbTc` ^=&iXf.)iL8ܬ9]`E4]w$H+U2PQotAj \ AGk/:avISE>j>1oUFǮJ U4bM94 DTQ`d56.ݵlWܮ/FLu"Sܲn`Xy\T_DkY?Cb@Yg_8lQA!.& $XA .dC%NXE5ncD+!Bʕ1Ĩ\yfKkXM9uO"G,Iʢ+jh92 8TtQ?*h HSꮁr,(́%}VdSP3 H2]I zJ,Cuշ 015ȥ;auX*J,L$8xUv٫3XI#274fv+`;+h S w[tӅ1$ #X W,T]|QM;w`ip%d1y!J`#K:C1jNb9R,h+3\xW=Hʥ YyK %H+e QVyo6O;ʣ7遖giLXjƐڠ*ZktvUdL.m%L2v/4ZR}xn$ѩBS{/5(7 |.YhCå Brw$Ǝ9V}uG82ȰcUWmsNꞺRH'4!TwzZ3$^op󳙣Hz~_+<;;ɷ5TEr#4{XBFQKP\^3[B A^&Iߡ1aM)wa %c<8LG} ?hC$%c ])ǜ! @SeҰS 9bXhX^h|}P$DQC4=~cBD;3F cڈ-G4B91B >3A, EI&$ ȴHn) bJPt@FK_.$Dt÷6Ae3gk$جI&uxCwȆə_f4|EB04܍sA@P91 X1C̠+Y +<_TS)a|=AK<Tm"b h6!.H MRt}XxsR?t":)h N|:W|W)xg{VbN$r*FOcv_W>:1X)IT u #t c͠&(rdt^InNMգ\dqAv)0"Ȅ9W-xPo !,Z H+*hZdEL1BapE,^04}\yyCID*PTl1m33΁Цo]BViB(! q^b6aWrE{N1l4WJ^>]eJ^CW1ܗ4V3W5쾪vȃ%TpY F68x*A僗yMQI/Ҡ\(syMՊ`3$K͉!6 |8|ހ !U,Z HЊA+**tE(Qa>cmĸϠH*Dsa%zis@i(ZWN|hŒ2j ȗ*cjr`>|1Woe||hEx%TOͫ0S&lي53V0j̈o&v iwIf`_GG4l<-ܾ4)^pE 1 Pi+!,D$ H!\PCZ°"=HbE 9zrđ KJ<2J!O×ˌMRGD>7 i?|(TdQH.ͨs_fP j|X{jSa5`هWNVs-]ojKۚ@K 7И߻)UrRt‡}y1a2 `c gv%ƖXͺNkfhci}@3s-ؾkF㽕<06k^QеkԶrW2tϏZ->h6*rZ3c36"U:׫6E!4 M0tә<).ibCkv1`kQ1"'Plpe>!,!O 얬nB304 >$!ES2Vd8ƍɦ8ȑ#DYRe}94^ r_d\pN5 *0 !,\ -*gÃ64pāUx"ō)r%:Lp%ː_yeH)LIf";fLYƚSlfLjsN!, hZPd Q"Ċ6Ԉq };nhH m<#W _>}"~tm(s>mL7ocѣD)ԨΜF솴c (S䔔 b2tg)ZOV|\tE!,  Zup<;m}^xp!Ì%&o^DЬ͛g Zdd8O͛1&s r`@c8rAyR&P@]ljě86Eͥ[6U6%N#u@hOцOD%ojkhɝ=Է7HM8EɆ6,`3^)/9 !, Hp_7kֺ\d#Bf‡Am_Ďɒc82|'cˇqe2sX!4:}Ʌ1[bLU 3}SCb5yˬTM><֭(!,[,ڝj4ث`rM&hނl)߁ƴJ4̐[V,֤6M9-rnIn ,:5nql\! ,u Hp *\Å JDQC 1RxƊ?Z<2"ɑ'K(R%ʗ. LsA5of̹r'O-kR)4Ο,Lj4Ǡ k ӥ1m&:A] ;plɀ!,& ۇ/߾6| # 4NPbƅkĐth2FxH{xrmbi0uiS[}mIq6xH.hT86u NT,(}Ӛg1cʹmlFӝi{8q>)GoN%bٰs"܋[Y_kjMV羀!,(  " G8PÇ >h0D-^ĨPF.H%)2e,?rDIfJ1Xqe>|(zJm2O"Ӓ:\ӨS4U*tQ=t oWcHê%T[зvCdn R"_~4&8˦]ܘpJSds.Y[8|Rnci͌mv3m4٩1 6>jviCn.y=P-6,₧iY/Tmƈp|M+g9 !,9'+ G*8PÇ 6Hѡĉ3QcE=>dȏ$MIĕ[ Ӡʙ!aĩ͝;uPEr,)ӦKBT)M/J1h|mu6|cj@dڴײu fs]Ycۇٽ-8Zm 0,vpMn,u4ș7WfYДzEWfkޝXƂ7F@3>OpllLmn6'rtc#vtlcܼzj3F`G 7mZ!,Q+= G aÅ J$1ć]tƂ UxH$)<$J'TL11fǎ)t'Ǣ=?"MtKJWfLrjʫXjʵׯ`ÊKٳh×+<"y4\֝֕n}Vg+]mm 78Ŏh wistEh5iI@dj]{i͌3}MQ^&}ai) 'j3>?_-nK\Vb@!,_ROZ G*\Ȱ!CJHA-jܨ> C6(I\9r#}XٷMTyœ;gzePDrE&Ӥ>2 ԩWTrT[Yv UkXR1{Xmb i\$Ud{dޠ}ݾ$o+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸s;2.1]@pqS:y3oH'<{Nym;mǗ >Dc{N> {997M} ifrPfMӌ1GÆ*ق<Ǡ6 fV!kr.44~vqWȑyv ]A؀{r OW@NvAv>!,2.UG*\h; #JXN3j,h>}6hG;uFLbWWNG|\yMwnsOɗF! XR%c\iіk*ʰIOregˊ{"Ѵ@]nek0+?|lzn[9gLVSQZl%dEReQ~(%}> ۸sͻ юpw~,q;x/hm_b#%}k>ca ,iVd68U&TZ+Q":1ژQA`e!;q9~15o#˵s^?~sEf3jƼo^t1&9UǙ >&`n5?zɁX䀜AJp8Îqb_ sׁ(pЧ#`X]/g@y H/ԥ-~sl\^/=溆|iTܥP჊Tf3 =bL6h%mNL'$}ARu /LѰG NՏÎ|amSvWͪ߬qM6˜ 9Q{q/L˰U3`'E+XP3+ ,N@ V-N޲-P*WO2fc707sm 4xv1ђa@s06F+xYU?7[v0؁UWaT0 DN0vQK̿}X[DMV=moi3p6CiFm mӉͳ0EjAmZ MVN%' ]zWҪ~u!KWԻ*}fcQ[m`LKf`~48mit7l<" ,LuqPiF/Ѽ\*jrX:{jb8߰|LЃj[Ԑ7'ըr1R9 QG.x7lJ-()S~BwJ'ﭽM!@̕tYVglvPJ3FE!.b&I2-Sm0+LzƖzXg'`Z/1;Ж]FK{SJ y@^ѯD7/Yc.T1r0Ba '%vR}7 s Ļd&}+Y` .h0tzy#wSQ5U cX6 -Ffޛ-,MBJ}nsS_+B*;Sa4_9;^͘I~T.j^VmoG鞴,7,Y)F1]p5N--@S1Źc5)fAlZdjb7^@@| MwdyM[y&>,.)z?xn?x@'sɞSS:ⅺdXr@JV&^#ئ 5Zy*&hwlfPol ,QwO BIiڻZ.[+A9 *PaE<+un[3X={)kuI!օ^+X#rys[VOKriR2{gR&cv2cAr~xvc<)Lǜ[jbkY%sS87BgZ q(֏6u6)ϺӃO5Cȶ3Gf2 TeY#9[ͯf 3sBIe03*VYMHX+9M(fhRȽW{+٩c9[ȬeuCKZ!j96Wwgs؊mksEEr;{u$]{:lȬp=_Upkw۱hUmL/?׫66e){pH)eY%'q6!Ud7BPoXHz0lB!>^8ux>Gy;.?h.M%il͖:.HdjX6Ny8֘HVaN]gQ-5,ɻ{(Ăש-+B4r0D8~3MTrTq B{1#VO`B6H䡚2h*==R_næ̝5zńȌ>[ZdTwWFGow4xӳ.z{ ۴Ols܎' ?e ]tJǛBxݴ`^fv}([E:znzM$xőᒮUA*cMK#w%+eЬoMKdCnF!GѥOG}1Cs+ W[n3 =cN3>^:Hi}CmӵEr[nnE`P_j$jmR{ǥo8@UU ZH_Pc]]l_!: "x{I*?'ulKCI<*ReɖN+ \تNԞjE+6 Pi&̀H~ 2k*H"Dt 63jta#N4<`c@=@p(ct \w9DVV`yvR7޽JԧQm2N`Q> >AVfW{@jӽOmxvD]4*b\f .m3`ƗGg-NV~j&þ״:<< \'9mяn(RsqۯAS2R  PMW.3mlu-=Kz껬+^*/9"l-4zMk+%I/"e ٘yLzVB" 5I>cf:aޠ=X"`WJeThRA^*g>(zc^%|1_CpQ`ȹ8O2 'I|~;a!*x36(Ut*q HI>*v=f? aleK:ؗa>9K"Goų G):/<ԟ:̛}??˫C WQX9>)g& j=O6U]%*KLuH-Rigv^bIegySj{bI@$\[g/D!'ٹ˰3SޔMG7@FUja2C>U "ó*ʥ2$Up ם.kC&TK?ó_z/48,[jzH'}N#@`U2@_eVEN?W`“ š@8'e//;ؕ'e5Ș04y0 wyo<Ay7j|7c/Yi:Z1o0ڴ {mp&=RC}о9iuYڕ'6fDPz1wa}kPPp"`|T Dǫo vINk.F"5Gx#0õ_+o0#OQt%k!d?yEY`̟e3CZrd(w[C6=wF1ˎK-T46tIX ^At~k:."8 rߵHѰ ` ,,!HݩZ_wz×sUKfzY]dvn)L,6m?L &7񑖝)[y:`X$k29!-َFIֻof1t -ItwM#d0%㏍ڬ5 k/Ute?4 n:y|NH|9󋽎m$CRQ2/z)"a/}H/xd+<=B7zqlLM4U=i8=^ui4o4ynfxb%);VʛMm=0Tmh Ή.4Ds9q/A=4qi_DJ(`*N2}?^҇M2S'wDfY Awnyo䜛[P?5J#vK) 8evVi>Ӌkd0H'ŎnfMPL(n:vr l7\U[ //n`eVl$[8^#jbElfƫgdtzH3,^1VQ稌Z]45$3N2,>k#~hkȹ!dYبIׯ jr2,yo/zahk9N2Z$SE{%w~tS`EV`:BP T%.ފ3i=zK~ H6SJVk^g8^yVŎ-dfRHOnVӼ!f{f(KYHΊq.o7U{2l$#J2\ =Q,+e3]h'H4?;7D jck_DZ&cV]iN3c 8$H>=23k0(8C8aדKZ'Pj1ðy$e-pefDX)H6ѩd|mvs)J[ V ܂`fi/M $=wy_#E+i1`c3c3dQ'3CH@XL$Jd$Y(04K0Tj+3NySrqgi+m<sZL9 ~GT#0Td+L.dҏL;ŌKfY,E7=vpA`gWulo:}YZlU'Q+%?-jz T%\bV; "t8=V G^!r;dի3YP@Ww^gTrܛYSkVJ 4vXNSFyi(=Z/n15&Dx,btNBw2g.|) &-a'wpIx_ҷA[vjd}$uCєo`N}q.$<*a7,x3൘5 Qg3EyOUSNH62Z|= pwrs ^ùm9Tc-iJ]޷hg倨H)~մT0(lHT,F:T:txUR*V-z֐Pf?HMڢţc͙Y|]'G_LvQ ~U%u#(  )Ӡ" xO~ڛi!+zߍ!gWth=:l.I=Pr-ŮZJƎڭP񂵟 I2@' mˍjx}mպwG_*W^@V2A@;\/jZ@(gge̚ʲ>5 +!ppmD:Fz C\WdS7IY@FS.:`a v\74ՏvuJM$5 DZƱnUTC5JBuoE3ZMF&u]SsFl>26&hS<)8RT`gE#H%0Ӏƌ Q+lj n}L=šhs ~`1V膄,en^v[@d-+7>;ڞEiWEnW'Ѯo@rN-8LVr]֨6m$T |xCcinY I gO:PEqN T,O]޸ lƿ$;IJSvKI4 k)|Y ˸LE9*Ov P^$G׍N~Uf~6+@;ڢM3Ź VpI?!鞢d66fvdNC΁Hl,qg_]{3$|!bgT<^[U--K\^Y3UVf[ɁmۂW+1eWtȐ~d-dOO\JF⻞1ZkO,YQ8api*I@0:{)ڵ~EuBN*ʚV7!Ǩg٘.ѯ/Y*KZ' =8|3n6:fpu zR.*S:- .˥vxUboBbVfbƤiPS *-UhbO=gr,S3MMMtNbnj(,it]ܱ.q У*VPv\ 47":i-8K뒬<>seu܅)L-IENDB`dtkwidget-2.1.1/doc/images/edge1.png000066400000000000000000000065371352002233700172160ustar00rootroot00000000000000PNG  IHDRiVsBIT|d pHYs++tEXtSoftwarewww.inkscape.org< IDATxyUynYM,&`$"ZĢ SXHaҁdԠ#$X e$ h[I}s{vTuսy}{{QV|i+ wN7@&!,0 aIK$LBX"a HD$%&!,0 aIK$LBX"a HD$%&!,0 aIK$LBX"a HD$%&!,0 aIK$LBX"a HD$%&!,0 aIK$LBX"a HD$%&!,v&ȢwGmMy%u 45q+/Dͼ}vdpReoixZw/Zl."~`tm$LtEnZfb(wFv[f۶ctMu:(C75=dM7ײn{1HjDH0hd Jch(.I7 'Ewuj |;9l=KoE;qrGwY ;ù61arY 3ٝl>}*TAYdt rUm>SUe?}{!΄9ݖN1u:gb&! :v sν%.gc')J)BcxKgٯC(ހ.ưEl5TNL.&Y!#'I{`Ql wP;Q1Nۓ{+nOginfN}Q0~e⍿[| %?xӫe+p}>\[0GJO uxXik<at*%.ڮ9V_w_~tm5ڶPS1ע6nr84 ^,๨q o0 Xkq+7ul~m4F3ttomG<5uztWA=h^Ju;ki${BL^Ԩ)80M1}_'ZgLqFnb_!/~x?gLP ]m=;/C!L̅7^N73eu|=6rO@%O9)+n>  &{L6zƚ8]'fCqfԙFs3Q .t+y'qcqqU/7l'_I+kuϠ$}oJz]vGAJI}YZR&|ιgĄq՘ZTU5Ýq^I@I k<*Q)ӏ{ hz]pU&b[)0;t^> itxR\ WܛUŭT|Jdr/gQ$gvt[6u]iq0-GW @L[q~BK^?Rv 3t4jFMUIKU\ʏ VcK0I2U<cS1;~~~[KPJ2η'e/kIx\HXw=[p%\~N:RO_7$p 9ު((rop8l7jVs4!a'˨{,k}e9c2_&ǘ׺~gQ{][cy ½SͪOy[{-IT1l«Q Wp[ɏS^gYäzu0CL!Ԑh8#'YinP#Z +FVmw1)MTⰱ^[4ùNgcIRgs{&prc$/2/\ExtwOT1yU)L6卸%=d1|8*OAW@8Յ~+ i_D i<> F8CqhD3E%YgׄƐ,cV{h 'ͯ2z}e[ F{=!_3hcdnji=EP|󻸵N-dx9nӾBoy',1ќy930HЏar~5j Cז.Fv/ µN^uF}޶ŸBw,v3Vp_O[7+{Ҿh}P84[ҐS$7yw>hv5V|eጛEgC73v6j(Ta(`r-ě?uz9wL%GL_,8*2OWwQGũD}Vt>P Z1aU1X4ߣnlz{Bsq3bbXkwL}"7$8Mve x>j&>15+ã\oPI0hab~51M3Fy :GA!ɝMċq3G A_wTP]:`avG +oIVGl~? ,_W{3n%cym/>>?crXֹ$EC%gG3Jacp&+G9˗?t f~ͺEkWݶݿt{tycGcɯQ˃C,1\ a {w|+w qDͅǝ˽6;<ݝ*i_C4a/]y#,Ϫ; ք3MUy<[D A 3q.9W FsBIT|d pHYs++tEXtSoftwarewww.inkscape.org< IDATxkp}9\, ߅eY`` 8&8pIb2$[ }LL)%B4Ŵj35e m/ɒ%粻˲$1sY=TE|^@aME#>X!a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"ahwvw`w1;6AG51DwLq6OZ3u1*ޏc.l=tjd-U8`=k ݷүL} ܜkp?51y)u):Q<[xݧ=z[ D-fa,s!u8*a>-Jpd\Ryes]zzܓBgk~T R7<7ew_c-~D+~BQ[Rq-2r0r\LM\3[mygtFYk56 UD&r 7ydܓ\qJeĝ~x,Yϕ!gcopTtivm.cn:ztl(O?'~y g'̈́8$v&2!yCswta{ wׯ fkl=xެ fVmua+>3uzJ埚c.D5[q=K~-*hR? sK߷0[Zԍ%u _%ENrK6T)nwʎov};^o'T(ҋ_QEz/^7hrIH'P-6bAv'.nbՈ)e~'ΰ8 \Upj"c˚}t#Q;,K7yYkym^hW+}G!W[LXbKfȏ\y3vb~8*ls10Oǝ<wX{oK1xi!TI.l gϦ'3b&WeDs.zxM{ő3mz?zLsM*Ux~[m0['Yn =>Q[A'Ls^qٵ?P/Pa2U 1j;:pvJÆ8EG,t#c GlS0c<{ 5j4w_^h3XqUqAj;ʐj,m 6&g3C%x)xлt Ԙz01Gz=z$. 76㪱 am;,Wh4X~@S>Vc~/XP|'Δ=;G&73[ccNOa_^⻷i1lsg}uTDOFf9věע'Y[Zh;{ܿ-Y6]SN'^LrTXt(f^}79D4Jklg+ĨTuno?\پ}WcwRXC9nr +_*M^/\uj;#9Q|W:lZᕸ=6bNQgDGs4y)&y^wNpN;4$ *(]5}4^5<' ",-6&"4{mĜVvXG`r2 Q]} k'O{{@Bݿz'IY[5[}G^'5\iYwǐ'䟺x݋z WGvEwAM>ߑ%)~B3^la}逧S \m6[mFw%3UqxϨڳ6r i.1(([V$lޔA) -;+|.f ǘzԳϹ KյSH?~"޾y3Qcf?.[N؎Xku'SfgTb;p} v#!4&X| L-6O͓B1U\Uq_Wt~^^K(NQ .k W&Qnv V+]:8aHPûG/ T4] NpNH؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄pD&#6! ሄMG$lB8"a H؄p IENDB`dtkwidget-2.1.1/doc/images/edge3.png000066400000000000000000000074161352002233700172150ustar00rootroot00000000000000PNG  IHDR[|sBIT|d pHYs++tEXtSoftwarewww.inkscape.org<IDATxy{u7s32Qd=Tl4d="uw5^qhjdm8fF ^c+!n픑L{8c'xKyG^/%)tkO5yW"'Ag+~Bp=&_ٱfuޡǐ>g Cؿ>d*,p\C&8%y;m6&I0[%yYlGOLtcvе{/EIL[:N {  w%ӯT`:Z-]@y!&N>ya! Ms/ꙝ3IB<߳~Œ^^.N.@#ifI{+dpNxL#w'/$}=!8UcI_r/á:Z+מ s}Ngq]#O$}K#TҘ1?oeG0[ցuoz'/}/|Q|8%=sh6ęLk;IWo{4'ZGSҘi.Kl~~gNL[3N8LmOYGUL!.pj {ra{98s!ͥ#۶hOv-J0:+W0ܩ``:|ɳHZ95\{Lb>s`4z鿻 ~q f@Nwl7N3ml$|>9S $[t&A}stZcKe&O>5>/=>p 31m[1ב4qHp>:Ow]cK3 IZ/N0vmNO=P9f̥?Y7M<ػkq&[OYcr?%:,\A^7h+Tcm{ogX+^XAa5Ɇջ?v2OmW7c?Rx ȇTțrb'&ix uNU-Θk m؞me]n8ΰ~ \~F܃S_tRꏀ#FL3'N$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%IĿ _㐡=ڙ; 1Ɣ{ 2z"rCk&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"-MzAnq^i21vq'Dm<Bgh\.IqYPGS1>|fp۠gBNɾQoȮwi1QIǫK^%fPy0 UrMpyPr^ci|w5G0=Ͳh;,_4Bi?h"> ?3Yoq{j\`WL:0!Lu|0ǯX]&V~n fL~5]|=ѸG>W@&{k2/t3{I4.N ocWlfq+8#a /ʤ/e7Ĩz*;gZǛ&~ ǹԻLq:LQܞĝa+'9*8ïCcѮ2#ŌbKXYݖ5&!WpMj<פY~?s,syn3+Guo疰7M/3l&A!YnYnFNns5$!? [kzSBy^Հ!,7щ Wv[:?LOUIz5fR(ǵ>19MSmIVߟb ๸ >8qS5IW,Uҷ{?tq췦'q@qTt'L-6kEu{IZybX5%cmQn+? [^j<cJ~L$k 9wB Ifv=ҳ3bHMN-~x` ޑ4=/xO}IQ~o| ZnJO+$èt\9>-&Mh76t66Su8˭%pO2DmDf[)=5 ~Zl(? qY>nKݐ@1XNrP<IHw+L7~q'0:)\g8uڲBHc#=y}7ɰ2\Ա$lư.⦩eɳ6`cq'TbZy(jsUjy;' V'YY^zU0laӵ9^%SŸ)^YUq7r_ z6O݀s{7;WCtFB .5LU g rWʤ>ʤY, 7 (&n񉆱L EA-VD;XX&a3 +^%Zx43_FmtFDLrrSUslgnKOfaPǪ&8>81M {acFxA){_X={p]!C%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%I$bbD1XD,QL"(&K%IĒNTl7IENDB`dtkwidget-2.1.1/doc/images/edges_anchors.png000066400000000000000000000523431352002233700210310ustar00rootroot00000000000000PNG  IHDR"~L&sBIT|d pHYs++tEXtSoftwarewww.inkscape.org< IDATxgрߺ)g!  r9'&  ؖd1 &dc2 "Y$@Btaѽ7}Mwڻy湞٩jkRI~U!Ny#"*m8X *{\bq HU@OSREԖ8 SUEϓl Ql<\O.:7Ny #T-!\o+,K^DNDn^&B ^$U)"(aeHV&"Cpfb+F0k:$d!8Yfz`]D6ę9$ܡF9WunD۝bT՜L  || <\DÍ<*"U(`6U:G=kp,D38X:P{ ់SBT"S l lkK <*pxdUvSgy`yZo "[f)~uK ړ~ UNDݪ02) ΅Zlk*6yQ`*[z oSVdSó9=LkrsFvS,`<׆6 Ϋnf8+`"[9Y.T T2sԊـe/zR桌ݏ z%8o29fFŸ9[}3o5_#]^3Vd {{%9{MNۻhǽ;0{!+.8.8xc?,G]aOm{02(u ;=Rў]A}sҿ5S`B)muF4(8¿l/!Y };$G]\{'G+3 TJ 7i9|)_/5ZPhg.%_|2G*5j(s~,O|JmXF[W+ܟH6);18kD,e.ϐuRn&G6)5`׃[?OٱAyP暌\^dme]~Ȃ~_L-+f)vQ5G*UUL"UEdlev9.\o1YէΩWA"ҧw9kdRPG# μ w2h+g\EIOL:<+P|6Kr_pJO_/*SK08#OJ c6HwQwsMk߮+Ϋl͘3_ a @,78^t4oD!BR(|7@ٻU5tnA"? -'at5Bq||Gg9F{U,fC/YfMeя# ճ5`e^x,O)*t #c(_<"B%Wڌwߟw~vpf8p8T"2g]դ-"NfI (W—"LtMi"iT"k"7ii!~x(g1m ݃v!" .-l inHc6>]EqU! /^M)"KJOZЋP{>iDQJml~bhڵH7A@1&X0YxPΞ9K9:}CDY87oqLa,`>QoMFER[xgߗnDR0Y " *"6E hMGaTUiyXY'RhgkF4"\HUEMqsЄ m_ k{c$l8`͌nIc? O*v"2(0g]qj(稜Z|cGDzݷU2k)}DTU]">Zy+2;y3Vj0Xa~=t!}p1ҼXZQr_}?\̹E߭u \8z)WҖqU>n^WVWH'N\ x AfH8m:g)@UtFJ }gEDVv*,+ 8>s̓AHd~/"t6چ8~"siἮߊƹgCDedB㴝M[=A|QaFJ$9 ]D[R38 Kfgm+`~,"{f+of{ B-[U@D6.li&{0XR,\t=ED:cNZE-*8 )6H{FS15U],"YcEJ\>.R"n8kEN\Y8`\]qqZnAZ\Ddδ!΁bY\ p pc^xV6ǀ~3_DEŁ^D~0|C}z-at8pS &OLo2O=)&yb?^Ι2- %sk9GVKh߄y]TM3#qe2/ŭϺt(!`unAetݛQzZ-=Sij*<'O]qXbS6gxd,=S6m+U5ni4 ׫YWU:u 2$8s>Nl'swz:.}8%3Ę8檅{D_G 'q?z\-Uu'ݨOzҺݙp}Xt8]6`Z;1vlܚe7.=-k"_UեԕUp镯/i"2gr\gxM;A_ %6L/Un鼫g7{<.K:t`j[^ZpZ؞X4B+50 ,:haq`J0 H 0`J-IX 0Ԓfm49'[d0aJ-l,|081\UM 0NĔZod=,a)d2 \N[0 #NL%.M0NĔZ2"H0n)d~~26) 0:Sj CDY#aFcJ-y$1 dL%Pa1`J-yR3 bJ-yR3 bJ-A\4 VRKk:#6I 0bZ0ӣaSj”aSj”aSj AD70 #.L%6[U?K00Bf40%Ԓ1L1D?0.2aSj`-@|z!aaĆ)dz~OUSIb#ԒAގM 01 BVlRaČ)2GDX-ȲaSj@`ߔaSjOhz3c0 #fL?$b1Va*n&, N@6w5 XO k̏tkkkűZypܮ +n犕Dd+`%{ΊS0GJMDӝxqT%G &M)qBR32$vS(?;"#pLïvE2PDPDDd~֡]eo È:O_7|;-|:eg07y8btpy)aJTjD 0 r;gUj"2 0X34 tWr Ƣ[3mO9'0*(6S|Tuv[.$"{Œ~-"c8vzQD6ܦ穿)1!0x AUO)O3Eʾ"p8w,c-=~89X]3>BDvR"U]X,aCwUj*/&Ej)p%df!0KDny eܞD=.@όrÂ>U@v`C@k(Dr&^X8\DŃ,2 袔R_19Jo W/x4Rz>H QկY:v~ӳp k& X4"27lϚ< [K<NΈ_4hO8yZ407u2a] Uu})P{`vpNMvqr={)SO^HekF:w41Y얣˃2S9_3U^ȐsEr'zAq.lͶmeQďsHȕ"Rݙu_;IK_ 쫪<ć:.Ty\{B NqTˁAާa ,̏"2x᳦^~EÙ#9\TggB؊֦q_q ;i n)p.(\(^W{KPQ8):#O+qs䯪A7< (sBX Um /"/_?ԯ/_3D$GUvQ>}OUۢXJEQ/pg SޖGp+? cPaeF7?`)n|1[YU8~v(T9%'T$:9x #r2 J ؇hzU>_a܀zu:LΧPO-<\SՓVj),mn֞v@,M9(h H&mgqЎK+5WUU5*gϘZ]m=0ʀrp \ռ2=  z0YFo3"UXFDD/A-S E (3‹!>;0E&S pvfdr9.18G'Dd'"ᢺ.8/Ih>"rl}:I0I9(|zp_9/"R#"KkF MR,ydN +Aڊ. Hv6/;߉ nq]q+ΐ0T5| R9XMDN^ {)"RLŭ^BI"҄3OTUQ*2{jPRd-+99'BH0NJq=8ԅr-r:R0M99]U'pkǍ$5a]r%"'v .­6EkE}Y+>Id#6""=+dX9#"E_KU')aC9Pq"=qfpv m.o`7"Z|ǂ\P&ߝ 4 XS[(6{ l  9LgT5*".1*Ù4^-Z.v "+d[G-8 p?, p&)(aLJh4^,mED>476^f 2_귝-aKw1MZ{-_B3 ͘¥E,U3Σ4WPꯁ5TN0`G8OAY/a)50 #10 H 0`J0 H 0`J0 H 0`J0 H 0`J0 H Rj"y[D㖧TȮ"򖈼#"YQ-WDdy^Q$-JXk - n$Q a$DԺ v 0r"90dU8fJ,[ :V'cH`Gr4)U7f (c 0 0Đ(GwW┧Tj~w^[U-Rn$hqP|YeenGE7p:Bk?/[ OZ3:.$YڬxPDN(>$&"?W㔧Th;[U')O)8q_qS*DpZ{^Z9WGF8J>`߁}z`]U]b@J܊}>[SŶ0IS8ȧD(5\|z<z K[!")4~eTSכa28RDܺKÈ 3?F }BK 8dDdL>r["uDdBFW%i=gqK1RJn+k,Ƶ-k_Ҽ;e Toc8˄[9FU]9"X5VQRF]JMD6ę?>R՛}~oഠx(7STv?8>]&Dʷf~ ,ӕADcRMznpd` 1zfUNؤ7 iT,ڼvzjϦ 5uM;8-]W-M UeŰ^}pHwT,ܪw uM/s٧z>KpcI5 @3bYj\aٕm5 5M?< @zoǂ{/NWo}goh#@w O@J[sާycC߰ *cKzc?}Q IDATo|R3>`Rf]#TUo%|Vp&h`Ͽ[U[[wTnY9ZUq A"N{ !R+FA\5Q6o8Ã|^ OʸAoۃt~޿]}O=}GAw5xt뺪jZ娮'յ̊ uՒ_.-5u̵-'~f뺮XʛEu릞zqן r|pS7}joS SdGd?8@p|">(p{ ޹ t^q7纞h^'~~fo0}*+Wxʕ6<ٻ_5>P`YDR>u9K-YFJ}~3_䃛c>I^p+AB Ezڜ^)U 9 jݝy.rBŘhO*ǭҒO~ǰxAK4փߵԛFoK&j=_;P;kU#,5pĒu )RCUZ9k蘨eմKjzFVۊUX1.|FH} Xg1;V°bz$mڵ8UUڣ9jFzKO7^|QI7}<EXcTNĴe_jޕ\w/SS3ԎVի wp߽ZUW0*Is韏%8ڣ:j/7 Ы?R.JŨ׫d;bX݌}lzr8HW,j#.G͊ bQߦA Z.zrN՛w߳piic9v橯'mDdk TØ/yn Ό;J3V5˩-|Ni0=I-Az ZgǫLu*Ǯ}O~(c5nQDkqQp9d]VDFY7g*,,")4IR|+UљTxTvG.>Q9s3D(>=/I]%Kժ8Е(a%"icj-H!C(ʪMnF#Q=5.U{Z%* pHM=$fJTq~am&QJ ?(3>|@ٲAΤ񿹝}Ԩ82ȹ0fFHR3 q?n881$iJtbǹC=2`8;k*ə#e08HTDIO]X9aOj 5zZo0&ޏaF#QGY PC*'lDA}O~qJ6^JV"ȧaD)5P go}fKX ?]NU o6O $s0̏aFbHZOm-(AjNu˓ωgiS0~4bż (%f~4 0)50 #1$J$7l)͟zAq|o"fQ$Qkx)A+( 4y|PMҟg0N$Q=5 zRiT9J-lT>F lU| \G+,OIcyPQ "q )c02&QJMU&=] rĸH4~0JAbLtaО h ҍRԞtS"D7v~@a'RjEAH}e) 陛)}} ȁaFbHZOY@sJLY }Q1!R8/b02b (%7 0'2? @EYG]ɏAUHȶ"8'UuVQ$("eVH%!5Sb~!51JT:q&0gmO(aeL> 0M̏؁ҫe)U2QOds|zaQ$bޏy?QJoat_f~4 "3qϾR1qS ";IU~%fo|!QJMDN.?b4ǍouLW%*9SDdOoO*"XTE#ʅJڸ k=Ty2U 4q˓S-)䬦X! Ɩ){!1eqk]W.>C;G’? HTO ;С(ʸ%htۍIٚ(DDDb#8/oqem݁8),r iJFE͏:8&ViJJeoE=.\ ,(_6DdWAS9rπÁ_wݗD)5oP7cdHE%22 s7N6;$$JFW@DǪZTSDzWT5k6z:}U:ioTu_ X /RP82K7u6Žc69ޟR7 ? gwLVw P$'|kB -DU(TNDF;)_dU}@:\U}9 zn/[D驪zG"2Ʒg`00=hϛS lwUշ}`ǾRj" p@ y#1KTt\rX~ @j{(Qɹ~[U:AD597r} +4wdz ?252!i`!K?9-Jg/pM}|nYDr;j "7H 2U0"`r8N#:#G53"r4pc!EdoU\u6'͠,y/)P֑%?zD{LpGh9D)5`@?Y4@XRj[zW)H0 "TShj>RJR4\ofeZr"K=r~w^A,u5H/n`C6 %F=[B)0k?RCDV~Rkxx[DvW狨,<| #XxUDg(py\f~뮎sdPDvUW ?.Yt9eV[Wi3/?^ 8:VU7UA83TE\w[U.QKT?pbp٪?"5D D_USUu,PBD'}Uun߮}!d =eiz}x/"<TՍUuEb \MX 8wWU3yx.J_ UI+5UunqN|8p7ycBP#UAzjgTFDefsꥁY{))H 7!º,WAYXユ9^ R3QgEd"+xp@/q 6uo9oq >{ppd3_z_Jgr\U_mtqv+ !`L~|{ b 0X#Tx[DlUms; gV=3 ɚ8k;e}U4WSSWUUz-O^~z&=\oWLiAA,}ܔMם *N }m1dShA\{b``.;M4N97= __x◹~M' ]3̗ŴL&QJ07郳NFF&;n!Uh.ê::K6Mo:dv[qIK!-[u??E7]"EdESmqfc 9xty"*\e~T1p)Knkٯx/&Sٲs?*MV3yŬ"9&l)f"cG2G">-=`i݇LFZ (HO-x`rrӼ99ᴓE\3II?Uar3T5O+5 o߄6,@gM&獭ͭuSº0 ¡ԕm]>FsQy3#~ϏWSTs[>wFPWԕ\s2å}V/˺j̱sp#~ ٢Dd@pl2 Y@m\;ww!_Df:\yi_k.e]! KJ}|&Hhں6UT@j0U?ʎWq.IkCܱ!qeNnq=E]SpcPU_L,UىHMl$"c{0B*"2P[%k NIW݋s_Yqӄ'MZ ] r ]?Ϩ+p/lXg63匈]CnK~vGRvQ18U.zTWUejO'T-5;ODA^V*ǮRWYMsT^O'srڌPQ]?ZdPԖ=F;5bŖ5 mݺޑUB+8k=t=x44Jص=h\%th= +qPWz@6"r ƹzDUS"5B |iM8o޳LN!}hH~wb2H 5lʝ5ZMz F~Rsg#ΉIPTյ|NADM>7.xRsA,U-_yD+BqwD+_8Vs&WS6+"hL>A>|n̾DVIY\-{ٗʌ+"wTu|勨o(ч3E'}lKx,,Uy<@z˪A[R"#ƶ/""R'"uwfٗڰ_.G?DzH/SDtCU'vZ+"K8dpw>l°Ry_h獥_zB|?>iF& S3BDȟ3#RBI\D4 *O[_D8Z(~Z|[R ,8 C;'d T=I̲t7C榅!rqQn7?+/"X\.yD&ޝECL8|&<ܼۂU U?'PN %>:L^Dd?=*(0y]U:c./"dmISj<c=P6qx_Du}D"2@s—|8ʧ)(.58ƥe8ss# 7O0> ] L |4fz8YQE)er?^=N@Uq u}\޴TQ\{& .шUqQ8튈J>n#0o^Dpc&W8/N("qwp״z(.W{pٛ{ekOZ$&h%?1v7=KʔUR[7P]"甌D)5]EŸa&HAS8&*/|bpS' `D)5ܘvyn(+Dh~hEYjǭ n00 ]$Q$B5N/Ғ&>ϤaNzj/?\gm4HE5^4Dc1 IR2$D-%0R`0 #1$&n9l ,Qh5-骍Bze+kvz9OjѽHRMR+@%VO([t*'M p%gF̏aFbHZOm&>]ŠQ(O]z'Hə_hFcX؏a3?a!QJ/8\DfO<$5kRsg;mn[R3 }D$Q0%QJ Wv~q SJ7GfQI}7n 00v4fatcLa!i.jS:z];Ҟ=!.OHIDAT+LٛȥaQ$:WUJ qSJҫ**,H7UM}3 sIR3 072?f2r~.Dcozj+,QIDD+__U0ʖD)5rN̲`n1KSrLQ$jIJr nU*\y6(iϤaHzjqKP^+NqğPT ]>^aJϟKq bFy(Ӂ&=rҔM[I hlF)0SaSd6[W Lf?bE*%;0G֓jQ$J+4ؼe))o;&U$K l?L.ha$fˌ_X3fyJFB"Dz[RPs8fY (cDArFݤ.qa'5w = (f~4 0CԊ;㖧ԌI}LCDd "0%QJ  |p-L)Yt,irFbIRSouN>rUֈQQq!fM{\U 7nY;"/`})P~w*{^֑F1$? FntWu_r- wCϠ|0&Q=5ww97:AzSRB:Kf?b%ZzR_~X wN=|STbQ$J_w ϳjP+o>rIJWj6;8T,BQ$M-A_9vݝGKw.k q `"0P%Um "2;z__S-)޺2 ,Wv$"}`~l 0F$M} ڣ:j/$[Jݩe 4KG꫏4c:+Tn Rlȁp/0,U:)pb"sDJBU]q߸j[1_UπLߊo\ UGkn[.*E"r3pr<]m@ 6!p p>lPU p:p Ne_T/r]躈&ym?:pI#Irv߾,߽ˠHK~h85WLLӸ?%@L6NϨ#RF>%M~ PU_VqR 3]`S\v'y6QՏ1 ~ Yݙ4xϑQeakBkNVj^'\\@kG`X՟< "Sz:oy[pkkCicq&Hp^HT)gq=qJ \'iG?CHTOMDz+ݔq\z|yUs-+kjc~1K6R_W;`?N-󘈌ƹ|_utCFO ܘNl{>G@~TFh6j[R[mmc1*RZEC5ZZ5-E Q캎"V21s}c.;s;sg{=\1=nn)Uեg \>Zz0zZ 6sKU@> xè{pDdεnv _CxU/ qJ7jnfgm ۮȿԵ gͤ3=a7QX0W s_<̇H?t;luw7t`omfʓ ~7]˞˩hռ_0`x)54ک^'~M;4Izڟl>Ck/ba㜝oݥT_POfכ i{'ǞBM螝Pww2l釮"*gi <黟 /xjݺ*5͸#J֗}VU#h[s/ܬ/U7|gk^DߐAg%C`jݖ)wz `4.e"7_\`gj6NQU_ 6 .p{qΦZ",7Vkqb~=N[鈭p^?6lRVur1J׾}Ejuc+W`r/ȗ{>5[흸Wܳ=rzV:MUFޛg&R6 iK shw n;,Vѹ}9 =}C5uxѶb&]El'FL}NE[/ߥ1(ck5[Z# x|31_+cEF|Ygyoz^ى1Ұz]ؾQuˢ"Ľw'DE?"|("?},Dd$6'酞]pJ56` HƚO<KEj Jcq!y|&t.gG"RE"mKϑ¹lF-RR*.[Ju2-Y_U"8-DE!&UE<(Z2[7p3+s6{R FT_̐LN~܅ ƉbRܣVTV=߰dӘ{=X6mc#21}"_p Q\ܗf9PC~=Y@s}("CO[ V?"'ji)w{kӇO^P| vws-/ ~8XX@P`! |(P>.ٲ 2Y``d9THLBj Guzr!(UZuziV0 =='ia$YNeDޗc],o͓(U8$MW} "oϱ1'zt|<{Y1jw/6ګb}8R r&<_q,折$tP  븃TL=xc G}cA{ce9 _lK%qffʗ, |6Wo.O$6;kƳFw2LEC8ŕ^;YD:08C`\Jb""'(Wއ|"L$R>U:Q+ڽKeAW֫$|+8Wrs 뛗k90{tyLrbzޭ5$=IN똦Adwsb>W_3F\PJ$E3bų 2]룧fL*wrwC%U ,d;WV(jjV~b=I<]L b<}vhv?y9%(b睞fKs6US{T+e㳆RyrQ5b>(pQb.0 ߼w="P0Sj}R&i"'ytwog۫d=wZ,EumM̭'Pt# *TsF(XՎǸG/.~eo4>ntG,iyֶfq [szm6s qlcmNr|mE入}v?22{{ ISF-DU!`mqq~nFy4vqZ_m{8atڎ }LD0c1 q=M7eEM&8B0(Tx)Ec_'8Afb:œ?9qѪKӑ,Mث$pBJs4AA8  HRAž0 h80_- pt7 A`Xf2\vjmUJ >)C$[.ݣc <͓iOs<2 {GGeؖWņ:'gPg8 !E]ڥet>|x<7pUry`hDRM\jR'k+s ;G/O'2s|=(gSsϷ: H1LK8C 1Ϗ/F p6-Ji2<퍎XzmFiza9z֕ڽ?O_~|ƋBB՗~GQoS_.'d$+eD4NBᄤZ?$쟷CE[WB*^,}{}pؙHi7;o\]ڣ[+N"݋^[X2l7rT:;z}VW zg֖2yE>}h"i G0&cqUNCMK7"^V4s= E' N`J1I#80,p0,,Ci#iǁ_2uf$jb%sE0#Y IPQ D(9~ >q@tJ ^ N b<0p /OU}(BvsrmlZmlhgHA0rJ/$ِՙR͈3Ó(DDw$eypX>յBJ"PS`ڼTeTM4,̗n޸N2FF^%<IyAԳkacb>i&>o~dP[ϾּXne(J)_*g~wi:C34,8&i4B_t=?|zzR"!KaL)P$E7NqGDaqy GqIm <Ǯe3hd.OD L1hLCR4E+ʴR.q,'yEQMC`D㙦N&DƵOj =/'}O<" UXUM̖r,E,G}vQec|o4L? ,k  þdRHaR$aYg+%BZǟ{[L ӄBxj`0BJ76DzwbiL.+ᅭ3Y©Obpzzs|ey#Yն%C?= 2R:H?9hʕR;EIt]fxl:j/әXNgm1Q v8L Ujꥹ?|/y2LٕչL%Ր3qhwHZ/ۮvD85Zl:VaGl fA[ INTuXprmmyLEaR|ǝJRS]yΛuuwN͞R1.pL51&;=܌Gggnc8rQg˥ya1@˽!c1 |Q%}8)93RM 젚V fI//rЩl9+NTO AB?r dJjG4 IC鼇"AThu`Yv.A8aNk9%Il Nl/O Ce9F>!8DResiee|0*>9i>?L4NXP"[(^ 43UT\GȊ{8Hzڕf3t~;ㅑi5߂X򂨐O Z|On"W 7eSujiNLܻs΍FXN%7gﮯ|xd K8 Jmlw_i6m\-EhY'LߺX"}nOUWgu?>i'2+_<ܓMW σ^Qyq&NTI3נ6KI}<Բ n"ʂ@dsm/_ʥFzQ1+|:@h$|*sl;t:A+f3)~#/vBӹڕVEaIa*yMFôMWiLg4U1C.vsC0 CT(&$rt4Ii,I"a1$6Uo<~ p2fR3f4 R$3jVAڮE `G1\ԆF\7u>dڐCaM'@4x8> F(."}{&1cp }f,)JB%II*rM#b"Yek^~ah"p44w}u1rX0bmSEC|1 U@5/=%1 ) } ę+?HLI.8=jeI?T-},0X\( uu-IM*@`}֟'@>kI1d`) A^ѬO|rgd:w];W>mzɄ)PW+4ۣ|t1[מ}d5!TyCahY Qb&BО0i @)A0S&KJ;!#I~_eE/"O}z4EQrUs}mj! L"afE&!.rw=;Yjh8'@H <ݽR,USJ:!G;33(@ó`Բ'[/i:n}t{߼S)掛 ISXV|K1t F _5eDpo^9|Fvf{(+xb&^UV?vM=n ݡcU/%bcyIqL49u=u= zQ) ( }Q. 7fkf [Z jF*:M? AUKSIbYviZ',kXC|l۸hl.H;6B#( Ac0 !` dJBa`R0Ca(0l2!H2 @BQdzA*I:(u|ӶCv>\chv%U˅f8 A-(61̴ D!x|j⸩]t4ө8;+L%4bh~ˏG=1Ϧ88N,êE{9. 7z)E8Nl6IcM" Cfsb )tB hu] NZ-PL( F%m#A~V˳\L&, ;ݱL KFu2`XEspVݭs q {rz^Hl܉00zqzwHH-ۍյptMԑjG;Uաno.k%EAfݾn@ M~0M4Akw7 |{ʼnX˚zyACdg4JRKs4ZN9! E/|:*CÉ,(Nu`޹yVh*ko|>w&gZvq_j. LwS/wC4c|>'>}rr4_WJJ6D6!諯J_ZDX!G늉⼦h,C0L aN 82)Qxfy~,0R8pjp<<Ҵ( R!PLt2v\ob0Dh,!X8MZz0[ pџeED Y[R͈#ϏB P@@Hġ@ *  Me@Rt DA,P'!س]OV`0!l,xaA AEc @y4rqF2UGQ9.ޠL3GL IDATÓX+: EG0ҕd Z4A8+Ѳ._jWW-۠ip,49}M61T0ҊiVYG $ȎZ-p8eIVb:U!|93by:Q_[QtڥoܻUŖg+lJjg_4S'gZup0SI8}EQ7L"(丶cՠ1,Nm]t%9@a7G ü}l/a,ʥD'auR=lG$S4//U枝U KQ A~cC,Uy2s@3(A)t`ێG#IJW+͉4W.Э2fVgE^a1+DOӋϟl.ڛ/TMA:s|%w޺1W$y Iϝ+0x}}!›s;&3)qh_W8$I;>퍦gw[v;䓭'UJzOay'"l!0ɜv)>k)qB6ݥJF}'{=y9[> 4*eT 6 W_?<8|%ڣ'x[XVwWp/3b^;/dTmu\]ZϿG h lsەL̳RFqcqaYB7? wo*zzo,2X`g*3$>Uh1L70;<+t"P~>謔cU-ŕ$U '{ܼuSwn|"A A 3z//"hTIgJD{a8LX.$0 Ɠi7pjb)Ehj$FFp8nka!"$RAr"45SE5; jDœ<<cP"$Ipײ}C"w_a>= .|A$0H)p=E Ba9t!%(vNzC(d+e@)(fx =(jO1BOjK̋v7˲).> M$3N}ۜIb<21&[wR ЗnǃB͵UpwϏ[͑ϿJ:}|>?ifSp֙j PeWKk+KsR&FSuNP4 #ǍN߁8EƵX7Fr-r\P/ .=Ac|g6 pS1ܽZR4GT2vFEP\ ȏ[, :A $IZ$8e_6v}i~Z.ړmat"t f>~I&1׷zqk8bZ5b%ͳjxﭳ765t:6(*+'O#(:87O/dIe38j53iE`>?;Q,l2LꊤzY1Z` !8\tCH;{G^R> ]"\ϩp04MRq߲)2u3%}ChGGo[(%ӱ* ;͡p$Xf"\YA"?s,3WH-81~vfBLKR1TlTYs3i,ϕ~ɓӦjdDau6ƣ_|D+XD82|pRR1PJt"`y޷K /͗{>0 sjI!$ K!$`j-âaX'qa\:uibecu9!\5#@mEjXN0[.xuALóg'_?|<[)~{r*OųBG/‹$F@-eR,yl6UKqv@N9 Gs/CI'&D!_ڽӓc-2n^Y9>3Gst X3Z1ӕCEyڦЇ)Llz(k.^^\k7بH򵫋lRܕZ?~WT='8n |OQx}2I&Q=iuR >ĸ4#p77zrMgb;sѭՅ퓋n^_oDr1/~TW>YdGP$%1az"/R;w; xcoNQΦ_͟$$}cag=Axgc{6t89p8c:v/_nC~bw LgEXXHt2O%|=M<]' #0eYLP (J1Fe:a*K,M$yd 26bOw_Ȇ11ƫi|%_H3,,OT"AC,H ]M(dSӜ|#N(y!H@aa8GO3stن 3 wu" PR( \ Nz/j3qyCjcL(O]0z>S~_O7v9?_|>{`Ջm(4.z?xp-Wn\^w#1 Ӱ$D%Qh,b8l0Q_,6JfXHWSsumxuF R$-"H%-]\\[]dѩ,4MJ5_X_~w$rY]1\w_#Ybk4G4D 7L+_H[`= SA,WwhtnGeETPS+-獺sWj(Nav%M)bw2T~=?7 O>~嫽^Mtn޿99W'wn۾i:9i;kvIo]q}?ɒZ^($Brt'ӂ$?=xFa$]yn*+|obQppt׻L|:Z(ڥ썦Mmǚ)*7(u k%n\[rXm6W sn7v<˚~{H7m^Uz ;'ぶ1 O O&WG,SKlkîw 8p8:;oW߼re{w{Wg!Օ@7n~dU!N"xǷ.o{KW/ɱq] *OSe 1A|$GāE ǂ(4۴^G8_$qAZJq4g. 1g>~䣺eڶw.eE6B{ 3V)Nxq (!4`X`8J8̓8 b`Z@@L 81IgD0\Pe/1pH04JeW/_Ey߾uh4tSЋH,Q# wt8'D>jS I!cw(OeR>yb gsȋxToOS/o<pi$ fs[cyr$:?w\ox8\\ZG/z+=;JYۏy}Z+N73Wzup2Чo߼x0FIc(s~#1anjwvֽP&1bl+4m L~}2Skt.߿}G Y EpjI!hQʥtSϵ p=;$ _=zzgux^`֛<0lj؃)f&'W2n' AtouW)Iy x{sj& A/8 ŋ,#; Q◫C\-2"g_os\zxV(*i˓B)]V%|}RgPd.+ @??m? ޝt)XX5۽nw$|ݿn.w'S}jٶׯ\op_Ϧ)^pKՑ>^̙AOKTWI*߿syq8.04#^OU7NNY}hjlv뫆O q!3?hAl:;զrqQ,J p)"$r}FX1IK+ d;J5N_%I "C<7đIJr?\T}yBMxaÄ@06Ez %8ADD z 2+6 (A   8$Džn8c ;TmG ` tfC'*@8P< !hl),XdLE.eRBΏ\M^^b{{o:otxJqm)J|`~(ڧ IDATc%0LB*(9)gBwwNE=m\^)W_(,Ot$R(^iu|?P}uy*oZcEx~n.L>:-^Lߺ{vѤ7T1'BZӭ#Qp5LR!S+3utYݵa$HDoe闏h͎L <ƣ{jr>U.f)ܾvYTo<ˉ$Ӯ(ˆ°LJLRb_=!Ph\.\6mY/~7lW"o_[}|2}L?~~E!ccH^'1m?ܭcYg7?zl0L"D^}Nv >脆1Hk4:w\-W $/vg9ݞP8/2p& 4.ZuE+")޽[v)9EdApM9%- p2Fb`[&C4~f5 Ӳ<0x4W.mj8 64.b!( {uE/_ZL,wo]q-8meS$@ 'cR ÁT(T==? Aa t"@Db"00I@Q!,$^xh!Iw%~`z!@}\Gq,M {ш$wh|o٧A۝hfdg-0suunciz Ir"ƣI3nuƑsA\o?X\ak7 { ۃNpztJ.f3WuÑ!0~"|pG/aTI",j4F#c4M ' =?`('=M&Ma |:<^3PlkH=?s3L&Y i> x;oxvzxׄK(inQ4՝j;GM;kOv۶R<`o>|( / (; ?\TMEwG×lzmgeDc4. ~ 2ST(hYv%*++-.*Y \9Ŀ)OR"!(:P 3Ecxb\[_'8cލ~ Aˋ3˿qI@dݵ7VwcӪ@v_?boAYZ3UG7֪ol^*fRiCLDQ}?.ql$Yh\ogZNTs2Q{j'Y8޴mbC? b?$(̲m۲$2ip^:>ƥF`Ic?D!$ Fq3I,CukK"C|AJg [x:% w]i%۽iMVD=m^\,@ x<[9; wN깴|qiz?!04'jI>Ru}smRB r&pTG筮u&EĢ@+0$UJ̧I{0B"̲]Ͳ/=]5o.~d&֚Q*9l- 嫗sO [K LGD{L E0J֕㧉Q{V+yɰmI".Tgb*J@DKD3~JЅJw~_~qm}9|/ooLl_U6זfZc-±mgV>q$qBt/Nxuz XPn/_B>gy]7/0A $7=;:`tVvä4fʟ>ߞ)g XһWV懾,2z?~}xxr\E0kpuiML10cXڲ:)re?ΥDE1 @4?= T%%*9{g/EQD뻮{a:+QtkcTGJq>%$N`ekp\SmsU&aQbH`I!@ HP8x@HQ : 8@ ,c 5 $I@%1s6@IECM( $`4(9. 8Th B$hڮ.Ȝ"n,;= Mǖ똦Fѥ߼ "/N)> MҾz2))#Ëܠ?IRIWoGĉ NXP0|4۽K,%P$Q@T]t*q%a$1!3D}sN׊{9~z8=ٜB95F\Y۸-C7J.SL߿h໚kIiqa0;ExnDcӴLge:4޸WJt4=_4K vڭ{?U*d2}sk[ΩuiV.@X)i$'Ͽَ\lYLm&D5;nw;]ͺR4a@D\/`Y&hsuiε_{yecg;l$KLa/ '< _] ; #F73]{[\s丶(Hi&BպPJEӟ>oi۾eXz{Q!#[OQ㝓jFbV:8oܻ[>APNFWIwwO.fR_]YOZ*1,j5©릡Vv\E"3 q,IQzABt{n&xd8:ivWGSM-k20F}mL" &! )1 4 `9%@h\$I AU} 4*R !" y(P8#'X$aq(m1xYNcI*CvV޾pL<}lw_6Uژj^((ˎَ7L9Fã:N*4 5a,aD]\%)r3\$f7V(V;݁YZKq9jN̫fYv?У \0p :W6đsM~IZ^v(&:U •tbݼ\(*壋F5lIdϳ^;m<}~YIT} B0;|zJI+FJ",%@?$)p1t~;l ݉^^] Ip, WG@Nᯞ^XeDT]~C&譙yo6zZ)|.2@띻K$emq9_jWolzQQ\+yWh"7on.I5[lwS-0I=LY[\ȾzAoB+ w:a.`xg~7bmQ<]]}Mt-Dת3IUM\ُ=>OrF֭˚>x꭛7U]/q$\uJ|.F \,kqtzz|r"f؃p]WSiiYIq/T$8q$NWSbհP 7Ī EЫ ^=W  ?N"ߧq y 7-C(vw_1h{Pג (z`I8lNĶ  0q0,4Mq]>n&i#X01JDw- !Z6WD E]׫Uí Bf.cT*"DjxFkk}>QrZ5'o߿S+yj88W1+"o{n.#Pę.Io%)ʹSCFf,F5iciRN{Bvb<ޡ(ҳ]/..J9CSh꺎dR!8JL&1 π(Ih0 {]zU/λ=1,Of9I`ƪn49$ "Q˧;FrG_7L6 bd814D+@,^  p缵TdrV fkurguf1/qe2<C)dp, Y`۟BbbW_=7/8ioe:vSu\O>Mo~~||qZ;)TeZDr:QFArVcppfir?wwZ)eT6B0$zQo @B%DxN`'atWVPL&(☥R)_ʧ!DxulYġFa+feB! 2- p9v:&H4CQv58p`8I+AqɰpPNNϡo]^ ( &9V(]ݬ(i(Q7p"1@aRPZ=!I 8J% ?0Q0@p)W CaTj$ Q,DP IٱxqٽZr6Uf H"G3̧Nsбu톎cz9: ^^g: IEAL>>KP,E>ҦcY7o] P r>DeAx[w*ZC`ʥ7o^.eTJvmCstLL^0EZ誾_SRYYrg Iyڕ0 qŪf젞X71 \_3 øqVǦucmGBa_?ߍhӟh0 $K_~P53 ךsBAYA +lFTJ>òKe2BOST7aX7-צS'VEukF90  !$0L1\Is2 2 VR172L #n̠tx"/s͙zsеwﮫ=mbXqS>{~TT$pV(ȝzR d4Q]-$qQXUG_B@xkcחkkN[=ǵ7 8B?)p {ztO~ HiC$mۚVL:VdIDu=AMB1T%Y;`8P3-IP Mı,@ӴyA4-Z08(I$ GzD.-8fY"%%F://ئα|RJs!D>|@E["'1 0pD!@~h*h'A Zzذ? |0m)@t$qB`2- (DA9Lb0M9]2 psfL&I T(, Tɧ3:"E$Q4Mdɏ!KOz2pV ګw'VgLA`R.5͝Wftqp?|yXe٢Wf A jj{8x% I[*dҲP-I\}Mo6_ZyI#S8jj[k oU׮;=g By/};om-U0( ϊ{ s ?ShGw^=ɠDr;{f5ypVVܛdQeض^~-KAJd̍&:04tݓ.h@rI)"Ib8"r1:#훣#C].gn9l%p]UspjYn{>=i 017~Qo]rR IDATgQ2]+ׯs<55ZQO$ ]XJK\)-6B8;u{BAik^I%}H`hji7N j1Mc񧿸sZzn}lڍ͍KbyQouy톪ja('!n2g EӍVz@4 b%9.cٞ{AHDqȒ%JhGS``8>`ܺp<َ&El DR>˦d )LDD70BwݽL8 t`nttF@ASSh0TK ߇ >9qHŮcKE16 $&J|~޴a0v=) }l߸ĆOZ-| z/i 3ya)diDf~9?wkq^[[1X.-V=|r(rdnh^SbjVGb%xxЙTK9Ua͚ɳ@0st?w֗g'OT9pcL{zAXo\s#6K5+t1}{PʤZyLqv$'GH{JwN*o"GH>Zӯ  i4ƯV?|c]ð8jWN Ms ' y>pŀ`(8. EaKfřYOѸE@44hx2  wiNyʴSU[e p-Se0Z\s<'qqpl,ͮh,I%R`.U})BkaF( ׮ :c '1@cah^VL.)2)3D#C1C+tөaB,JTK?1~DWAtg 4-yQhsLGc4sxLIx,x#Ke$HW $ֿ r@;M#eI<% k@C̠/ΆolDQȲi#rdhqЃq[a=,G7EukyS)he敽JҳSGWggӖD=U2ȑ4Kn`#$~85x m5~ck1wGdIQ^.W5͊h:W/E\ngsʟ79jE FGXuR3;, $ਚM/zՉa Y @/FBU# $ ;"Dy&7Na,7IaHH}:aI܏RIr2K/̴JX}rT!C7Ϧq{8|U;!fL"I` ,&A6y1 Z`{Q:^ x02Q4iuC[770Xyqr2_(w_P0FS=o\g`DޤK/.>|VIy{mI!9[g/"345̕rkՔ s[7jA:C-8 XZp^chiRI2O`0#`3H㵹x9&cER΋5|͓ycjx AV2a<[)b 0 pRf rYޅfDڝRLΥ7n.d%,d#bQ7L.sueqe%I!~;w+ˇmsN:ZE%-,AtGn_(6T٢,Zo\ux/h;l[ ٙ:\;ٯ~ur=|j;tՙJ0[m Fc;ov;8;}϶|;Ycn 0 ٙRب7Y*\nFk?x=㡚xp֤ڃ̴uH4   n\$.0T DIC$ XcC0!U`Z@!~G!p\ Ek*$jJZD!,zn1FDAD~8Pn!H;c}uxE1òL:,,C Ӵ2~(woB$#V-M4gǣdi8[A2噖A;$Ljon9'Ғah&Je ,a Z-'}?XddcrXo^H!  3jk " 6W=ێHOlFI{x>/n<_- [ˋ7W0Kϗ ȏrzpP;;k5 {HrWK>ޛ)Wey s:9\7խ]"D&ENF,@@ /)z 6F%DYlf箪 ޓ98#"9r}{??kdzt0>8ϳplx|.IՊ璐PeiJ4i<4S&*t F{'ѬUJ35cA߼{ti_ܼaNsYFOwݷJ[HAG§cG rC5@-FrCY a&$`)h*0 -@LpƄ&ƠPUPT FC4*qhnYBPf)Z,WDŽ|&(Q',|t3ׯCMh$ul㻻ȈlKifb(Mk,+bV% ҍ=TȽ7QZ+I0KF)!.'~w8 'ng8GQ:rsnm G qS8mM DZ)I$ijXi4쒌3UV0iV6q[34{MiDo;ڍ; "o9i$޺'1xtIrx"bkdfsNekNҍ.sÁѠh˭cpŭ8ɞ}"!(J.ʸDb9kݝe Nw"~nj/ѨizVrg^< {i[iqL Ud\qA,!74BH+_}硩{R-z+Xz~W7-U+SֿF{/?1蕛^}o`N'~xZr/z݃Ͼ?Tp`T+\=Mv^՝l=/|hF,߾rJ%z^VGvmOd:=ݞO[YxsG'եz7߹riZ~O SՒ4 Gt0Jܥ,uӹ[j4XE< kZ:Iu󌎆C3d,10"g,MR B.B?ĐsmQ5aԅ$NHxSXL +2h08Ggq1 I`Tނ?JDT-C71vaxR0 !@9=uN Bó^qf45 \7ᴒWVC !/ FJFC&2QmVWkӹK)iGT0BA ZMSv)~&!7HIo?Y.4i6KҝGjf:AƓYQ&Ef`8Of" lHBC ;EM=8:˛zNvW'gF %Ei,UfaS ?ϟrl{OZuo3uz>F8 j0}xx-CłR \ ,jٮVhV* &/*l{r@Fj$q&^/M$%|yo8ڋN-UeIhVʽ0,#/Z^f5y- j 2"IUuU % =SeESe pz3/?7Y3dKr|6Ht{fvNSז*_:5{B.YX"TQmHDObe*l4g@`0|޼}hT/.כ6_pug;982O|K(ȇ?sEؒ ePJ[a1B(Y$o=MFJdE~S,c M=M+mڧ>cۯdZQg<\8I{d^ol.&j ',5 TT$ >$ 2<*d dʂqa q=_ f4EHĩ6u]tW1ՕAgI(R+YZϗn7SϦm<.ܹG9zp[kԋ+v"pJ +ƊFd Y~w>NAKp< PUԌVq,L֛,eXl/ן}RMRXŲi,Ud f{[0E8Q5ղhrTs Y$Nb;gq1s+6=7ٖSw0v( ;rÇz7o=lo߾̵?~u%W6 Ngv՗ol6޺9/XNNR%E/0s:xSWUI W/a c0O}/aJ'eD>>,Ywʤ?[P CΠ`{9]̋Ҕ| 3)[x6z@CVkF)u +:-sr%gLt\p}eY |]e*Y-EѿoG~0soo|;~:yi{sV4aqkRfܝ~2Jd芪*,Z^{''K\[9y^f$+GvC]я[cw;tqa{>}ipzZd-2(c 1 dx3*lػ2 "b2$( P*!o ur۷4y/8erDct{zۆT\YoQ3$N%.jz8F/\X2Lt~d:O^,5 $okۆ~~{2aݬ 9^˄r'Fk TvoGTGa\7 huzL\-}n/: ׮~Ηr6B ]M&ǯ^|'w;7gm"t4,K?3a*@lK)b IDATӍv7", Cqe39Y6W+mZQ[׿rYWDc0H"` 4L$Je,IH&p`I *I$t8P@EGhL"4!*ST(J@2 a,B!џ8 IҨ 4BBL! ;h 2: ZY[Rdotq(f(=糙̅!k6rrXݶRěU||^(Q!ֽ;!Φk?{u5+o:gSY ͸?:v z>.`0Rj~mZd7K6LWgөPӪBhP.Yiͯs;to{4g$g0Q1[.KoQ~f`^.hqs8i ɐ+U{oy|ǣkhꅥ4j4wM"&z*;ت~z:?ƛdD:Mc/AL8T]YUEyGIǏ%Y(h{QY-uӜ͢G^ǪxI|6}׽{^.:`_ /om[XV%CM$HI ჳg\nȪBtF/VWZx;[ŷ~g_y^5&j"zͥH7$ H(V*[ñ3MpXtT~۷nqܙ4Zoq^ۚ YGQg;Pݽ{(Mm Fv}C7ss⮪Kl8:m 0@7m̄aL,Ì[ɤ\)몢ɢhi[M.lgm5LS7rr&@\ @U$c8RC)}qr90,#O*CD`<*d 83lxLjSAPYd IIQX(Sˎ8`idB2!WW{Qr,C_hQl!H7ǃk>94UM<7gsQˎY*;՜BY.\ ? gQ:lIq۟Z)q\i 1N K{֍;+fxO9C9۸nJbz?_4m[5$kbs Pe%+چp5"!?L֚~knHH7^n<>-ÓTm/fďWoZэܛQN3zaTãd^ZmVJDpX7j -Zv2+|y ޹j1HF RV2vlMQzARzԓI|n0%B0{'J$}F$KOn-+kB|C.v[gcFjQ0vq׏ҵR5[!n}p. usTrj›O<7x÷no v+-]B ZG6^zOCW.o,kK}?qWFy1gWNDWe{3/`NR9VkԍȳϤi칮)|.6y;7>d9c@ر$I\ו/<8< 8|0bJ;7Ry|J1&T%L8I(麺~q])Wݿ\` {H ۲ &>osQxb\7NhۃlyE@87ViYa*jq~x0tzTdt MX_^Zxa%zӕeiq;qN݅aN'S * V>./Me,vKS/߹{zu0Kd"  asQ ,$M+B ǁ883aȲ*!P,r& J#9Lp,2tP4$xUW4@KHos￾38G-R =MW)s!ƘאjA#BDÝP)$T!`$(oA!1 ceg _CF@c(|& Ƒ 2iBS켓lx_|Ga\[[Q˗w-DM-vˤifcM.˔gsx(L]m֖j"kL'͂e)ҫ}VFSE!1F))BSO!),BHBR2 1RuN3"A AR}N 1Pd $|&@D1q_xaG~T_} xރp6 ,D,#'1@.%6ox;t~s'J⯽rsVq,#J,jf40!,ˈu߷>"W1$pRJEH)$1& T Mڲ7 I4D`( ,o4b9kUPp#әM; <#X,xH \[$Y(@qaT, \j|%>zӼгώ@/Ja6 Uƽ?-U *)&+'+s!Vh YEF cr _UiZ]qPHʑN$Mg$%S?˥ IADY7GRȗ/H{ky@$yQtzgydw48}ED#n:'`E!b6FH 0hw| + w ʼniÅ"θSM=,ʨ QY3 K{G~qRTjKM;n63.a-Qy!&X tpt- EPuvPkC9g-#n(G,.kDAF3.GNj" G8@9)lQ UC%|q A ]p"S^_Y"̱1,AAՑ.g` Ed#?7Bh0!mkhY"iV+;Ն`T@va{-ovgjeoVoZ['wnizS"$% XpBB Q"@?Gs MGH' +2A9BQC>>q'10.bD@΀ 8TMd*C?Enwsܷ_}lxeقKiڵJegs]Q0\/A VllqAAX=<;wK`Ţ|YQ%@W%I%TP !2H:d4ЈH)T 8"eqR 1L ":toj^E2% |!|JA0+8h - K <#GJbDrs8֠?M˱8 YRjl덝rA? $tٿ&?P1!`,2Hd PB쁄@AP0(*ŐBDd@tMHvBRs$R' )MЦBh[Rf ^@d2*Q 1]<BYF,bnQf)W+\U9[p:;5-6xRotxwAXgLr?DloVFNI,GH!iI B2 a0e#"C,R 8<$E q iA*(C!yhV41BV)VzA7% c<5U4ͦ.VA 6<e0Ӕr{Gޜ) ,߻$(2nƺNH5{GRYHӎ*jZ{\ΒC`dh1j >'$EU*Aʹ1&$T,ph{24Ǟ}Vr44HF_(c0  K0XcP@1,4&"b(|,4P H Uy[C@E@yӤ᰿Wes´)l5X.tf4q/,\rVt' D=еjTZOcz|v׿JގY쬓wLY"K"QKQlnͽEQ )DS 8I"HU HL%TH`$B,"PTh~ 4Uir9+Yb 1 mL,ShF̲q0 ijr߷h<t7BS:xOŒd"oݻTn_I(sD֚ ]ZgSߝͽr>?Lꖥ{eU:~o8* W kq_eB3.kM30c<\WeFD QuI>"Th2Tr2ajH0!cF%!l Q@P`/JcFXB R3dDS8G0fe}?||_-a}sԧ>u…p.* ? B/<>9%D^i4|NHY/ i|dΝGHRZL's/OGRtgVi$dYጒDB'*K(KNs҂R'T/T >*8#OAFB A"5]g<@Zv 4b9a+`4G"M9G_a߆4O~~իg>C)/沪*oOe$5UwqA6WY oܸ{AaP_w~~$ 3ڶurtd&"ILV "^AEp!3I M`d qAS2  eEGԋT+&Arij8`"H; RF0 <#/^?}֭[~~M^̔bIrxp2?MCQ_^P(b^ݥQ瞪k+K+UYQ_;}E6+kD xUh\s|0M]S%Y%I&]-ΑBqBkOBaæ 7nAB $VtQCa"$,0Igs.//۶(#wgA+ƍF%I׿uô/|wq˯RirZu> =H%4] &Ɍ\TOa!AiC,I 8Qj^-ՆJ G$ r"3'RJUAᘎX `|O}6(MgGg︶kJd:ڤgYVej5(sR#Xl2ѐ,mOMC4e;L8M'0tX5!XUe VZ,fYTԄa$Tq{, t~v2QDi\]k --Ng'U]QUwt_ 4ʯ*QQʊRϒFM2$X:ZTĶ>Q-6NHS$ H3XH,t<3&f!nP&`lȑ g2FkXƶMMY+߿Be=Pc:p1#Vlye^Kjx~6 GQQ5Og ܡz2l >80;k= ]ltLk6VXYRs]׊4ݹuiwȱ YteHIL`F-.aLA)b$RQ+U,-6\oIf!'%dB^Ya/ ]4MeW%>ܳe͠/ݺ7[̅7޵͍b)4)HxWWkq:[g )IPY2(si,LӄfBшLX.aI8.ـt- RTu kh)@AFuxºʚAƄFZ`Ő dЌ?玈 C-LF K}EYOkkώAWeY;ώ:tum]L&~`q5:miE2J0u*\!%6:htpNpF#!ICEˀl : i*"ׅ$CeA1% !+ ZfտoN_UK74 ô(2*,[76eTVJHp]W^$?=;VReLSW8VY\׵Y,iz,N$e2$[&Y65`Bhkc:6gs(Ug8,u 9QU'( 2L&̑%(k AyUc~El]iȽS۲=ϳ k8"+z:gwrT+NfХR 2HFۏ>wU¶Y@MPu]BIw} 1OKZdb)%K*dhplL1c2L1obA$TKT*fEiIYΪ$Cm w?yA]]]_Y4:zҐ'OtAH eTBhniDd>K̵,ڭ8j޻?g >V< s=Z3jUP "ˣ4˨RRRud҈- YG h\u#M:( K\CH檢@i RAj[sN>o)"FW~XÏ˴gв-H Ǖ y`͝xjHA,gmKV6,\3դnԕ3 9nT% lx4ɖ 64b@ MnPf*,E'iޟb'ض w?۞_鵔RVu5||r~lt,Y,Cv,$T%KP,Up~@cef.Q0?iFTi\(sRa1'9IBǹtY\Yyot:UUQ><Ín#( 65kzhm0x*fv0 )ϮLZo<=:;=|t_u:ylEV4|8+3˱t\Xu/],컔%GU"JIP !CeR^a9E TD#2B^`,`PҜ+4.ʧ؎;W{m< /e}gO'Pʳ*b]\XSE (4;Np- .X̠)LmY(RJB8dGϰل "Q89tDGX̠*(EkPT Usa~*/*p]*{2(/g'gY'Y˷޸ǷnnVǶǓի:zr|li VYguh>HEy|9W0@TWO^MMAʊw;4IP´Q8V >v}8MhZ]Vy&.J-L(uUuPYgT'7nu:۷/k`g[t:mڗWC)j w , ˵Nubw?*˒eYcZv8ʼQ]]Nʬ5xE]UDy;tlx'Zw{M% PCIjB1MhU5Et#.2&|-{o`{|qRc2*8 ׆)CA1K%,,sB<Y }ɯ|Y;ﺎ=-ogY;^u-8*prr*;ͦPp1vvw5M۟ys>^]uUI6S6, n% KhBM.`hdTVhPmZ#q&}eP@=TOaI 67px$i#h߀ /)ι&*J.,敕Lt5|c,-6ݢN/N.f]㳓;n<}|+>l'}_[kZ!KwnxI c gl3t`> 9\R.s&9i*ݠy(rd\`̈́=M2$߿+@ Lj%=ϽWV>u7wȾ77OnL'$>Ac~q5/ǓiۚF3lXgDYJYwZU+Y3~gP̬ dɶ L.WLnIABrS(N.Y(h[1T<#U0b:,cS:Ofe/t|txoA4F]oڣGGt]g'#keI6>>(JSA|f]1leIEYV]DԳd`?M,UNRCDPMĒ[)@Dty D#Quna E2̕]^qҍ냵nU͆'$|,4MËGE)~p3(Q8}hJ]?q^;{;;;>  !0 8s"cswf ZeR]Q`fC6s U!\⒊Ξ4AUBqv:%4A[tquΆGCYVcWWV'Lˢw޻{tdg4"ӥM7o蚚g{;P}~~LwԲXj̚x[mw$A!$j6,ԲH') v9ӂӒo7:QP k}*+|t3 ',$t*JBw&T.Džd0-ثj++q9lm5YQ6'GLHO~?40,s zf77$)~#qeF0nEHzRUỎ<"FY VPQB2`HsKT׵2HJ pzfMMW #t{t:l압:ٛ/XVeUwnV[nc^$G<8?7t3L"4-Uir|>[Lfxevk6E)PU%Xӄ"uzP)N1` [[lȘ!݀e* k_'oSU1 IN!`$ۥ8E$$`9++f: )D$Nf467{( ?;yX,"Kulr^!GY8yEiBD`5 9 IDATr a4Yc<*'\QD)t J|pń%jE\C`, d)*Ŷ-LY |Ӯm_}ᯬ|y{vt*]t]0(<9 ZM.ARUn7ImEQ4FO>Mwggi?y8/ h4] &O򒼦0t~vW'pl:`I ut25X7HHʒ< 4CAtgYu׮ 7j){_Y4zW~uloonnؖqeU۾yZ:ԬեZw,G 8zżIQܹwvqo.e:FKj(hx& fF(XT3ⅈKyg,Sb1 g3$Hӡ4bh8<:__m_YA7p+_'Ɲ?9<8Zf0xos_~?S?rÇO0궚~ٳAuy9HR״Ӌݭ{L<6 QVl5Tq dҐD5Y+,FW(kjc}lddBs'O`+@LJZMU[YyIUZ$/~l\?(faxRk/~3qntۭn'ѩ*kwnN(&E;-y~zYUm.㺦- p&Q(3HI{w~>:c e2,Q D ]3~I뚅@k@C(%J@5W++< ǿz#+AQ(z:fw>ˊ|v|1/;`YV]*(tRtuS xQ.4m'͊*$~MJc1 Uc1ѐIA`ESö uht Åa"ˡ zi0D*QX,LdHc4[Hs4 Z5߀ <"& :<97~4ϼNefTJb8Ugի^ɏ|3`zGeȆk&l#{s=q$Uq4aoRY־^Gݿj6˲+k?9QY1"LH,БgDLQ,WD QC  0thEw6~ls+=E%ËgfGW~oWV>u~{~Uպ7 j4o^^]^ڦy~~]\`׶;{+/x|x2ZgLfpʺnl6'fsd* fx,k7i-`[Ki Ki5F\\HBim2j% @Dh_tꁋªzeyQ/tBdٲ,?~ 8 [o>~v鵽~8}ɜdV{b>եYsv>\puu|~%^(J#X6Ǥ4xHS lHD QK@e݆SUCb|ygZ,YBQA?׿z&ieFQض绁燋pwkJ5~]e\6`{߹u3J퍵Ó3fքw(b:_,8}'<=8z(ͦfh 9-irņƖA6,t% iN㫻5(FׇY( CbAJ fF4dZxy9gqUնM=M4=zrnYVe}z6LӝVM.z{e ˫W VL?|JMؖl%|\ww[YyB$_q_qV`k_^`x lZӀfP W d,ٰo( Q 'e *@"˨,^t++:3ߋ²$LӜJէ/>ɝk ݺ{aXĵ6,CngnhGN_}m8]NdYdTFf|ۦ$eYhx]d9uP5 t e$abz. 6;NmGEƋ)y,c V@ 8*E <"9 Mj ZZӥpGKS76,G~po{ϼ&5|ec.b./~mӱ IUToASBEd8`^NDi`` rJ͖Q&- | >`QPR13e 3`(-*Z]1k:>ǚFy$z]IDRpxQ kgJUQWV>⴬B7DUnmvvzũj[˫qӺkkEI"<[_봦p: i\F?X#s<\j4 M. eh8&:huE`@@sEo-snGVR ќ "B ,&ؕ04#ݭ8Rj{ 7xuۭ2DfBu4FFgWنhɳV3X,묭Օrl'YV-CL/}eByq~Bfnզx:IUCR9DM"gQcw .0!(s,MܾSg0%xCV'++?w$Ϧ^G[㣳hlmj7t:YUq3$ycǃ^^ēpIJhMyF,uhui@M|~re ˇ$L)Xeml(`ب qN6ٔsqb\ Gg M3B1GًN~e{446kܹn8KKiV+\,uC&= ֲ,;OSI֥̒*J+Š< 㨘/iZ^wcb4j6[eQH!5`7Z4dwضI,NHbȘ 4P׬<$na MuC+@ea4$js\\]e7XVW$KH44M֠(bU>ΤfC`,Ke4_\Rd;l>}[(D7Z=Y.ݬUiv%Hs}anb>EVP%t jM^ajX.1bT\sY(IûPz\8z^˲4?kckeFdF.DP Р'HJVtWEFFfk_O$y̶KO>gDݣ~{1Ā}l6t |rʹ{@^cMIiT5GQ]/xYl  }1 juFQd#NI:#mH2GG9m]at׶FdҶ}9}=mGle)&u9H)i^\4BZ8O>ncy#!=RnE!WhI08r-5{ E$BtpX)b.rq}=9By?dY5t>ٶC;lwߞ/moc/~QU&)?;;ܬ7uYGgYLUUt(FU=LGu}л?nl+)}eEу x2uL)uR߃ LF1_WDC9e \ Oj,u\pɧ' i8v:ży{IE9`O^Fo #C ͏eYesLQiYøϧ _|o~xۇO?y{uSC_ n03wïO͎FS|,Oh6 ```-k@~DJTl7?`qsn׼~M"90$|GI9'GG2xWyg{;(7}vu]Swmr|yv2K!xq$qv߽xuv2vK|Jف"E"Qp>}ZaELH 9b2gߣu|J) |U5XUVl,#(>b>:zLPR a6iIm?d D% '|K %oɤqUI)??|qTЇ; B n"+GUVUm-D9CL({hS0sMnBjX+VGE|onCGIglv@.GGb4YfN1}8Uuo.&)gϟ>Xk%51ez|q!򪬲g|:z+?X RT`gqL$VuUwO>*/oO6jpΦ`dn2)[)&]508==G-Cmdal F˟}r{v\^) t][by+̧2b&]CmV:l,"2?>Ղ~MO.NVƱ˵F0_Xnvۢȟ>?HM٣/..uZ6jS׵{BYE{`74AI縹/9:=4pvJfr,xzB)78EnvM6[ǐv߰6YgGj6{収>D~YFu5onnϥlw7+dTz=}lwmom?: C]7dabkcr\żlU*gtX,n`3-~xBج8%*jv !2tB^_'<_i ȷP{1, ;z{ #?.t!zzhZMO8TuJYCgOsA"%x÷/@Hh97iW >&!}޽w|ԴHerR ŔS`H >4`JO3F50]O` IŝAtȳ|4su"v GG^ ,iiur^=x2=lw)˛r9 cTϞm7;M)UgOO9Ŕ|͛yἪjqYݭs- Sso7hyYHB]`G_4ҴӏNoNKe",pvn֧(yV"/ogUf"8x62흀|Hizvp70 C7nA [KZجe08 9gB"b|hh[HAZ}&úCH3)|q}ww⧟XI\NP$kZ)cjcʴzrq~߷x2/.o_TUO0t>LF2LK7q0cq՘sE8:4hd J@h?=h@L\ag`oeegijho/]CLC> Ak= C^O5Z{N};ĀFH:O7)ޮfvͿ|3L믮oR`8nG_pחS̰8G5e$ F%{Q ""V`p}G "GJ%$TA1BfTqE95C䔐Iuc (2M2Er!Ϟi-n\B}Y}?uU:{Fia^Uv6=NhAx}Co^5H %D vGAh0#칮1!QG =ABPDl;5B?Q,Coc׵Ӹ*rX@E/We^s Z!TDѨ|2eҏB !Zj&W-1=\4)): ba x@ j{jM1CJT9$d)5ݏh1d-㮣}\ϙxptyn ۡ*JHUyb'Bbn~T':3%s%J TVjNNϟ>]ݯ'1"<4Jc8A$'Gu:K#'~ඁ8XEJ3\dBOmm!JA;|;ENhB IBFCH)?C6QMFPJs|΋?]׿sC`]JeYe mo8\Dd1hzPF.MuWL)8b:h]%`au #E691#7$V(kH}?:=lૼ !j3%b]Z+$F L <1dU]3x_Oʳd^eU~\-]3GJYepsÁTvt_HLTZ؞ -fH"۬$OzBPP @ĐoCCY)b.|hܐ82K!u, {'JmߎJg,ڻCdZ#u8W!1BXðW\,hqO|; SGSb{({M Oc}K}Cī$ +@ObײR|CH^#@bcމBH\8g!C\g'98w6JkiRط}YTY !ۮrbW˺RǐzebeVn"jD1]'0?1'8ʐv>p}/''~;4ܠl 's1|J_#FzA.$Ol.tqvtR>8THxΦB63z:-!/*uH.-BFs?dlC=?YBӼhk2o^#F"͙Гkx:EaY9iXq{"E9x:h}Uq6拥+JLoxRkRs$X=gЪ*]CԶA TBk.NIe(B D \^Pb6k^(~ !HI׏=r1yg'|γp0J )8@!+ #oqzF_eA h, q  &|''C+lG)wHQܬ:gLm}aXJ&#@d$I03@{LgB h>gHD;'ZhRJH]Ȍ)dn4J]w:|ʮCܐQx$,ϓ1IzEpy]OYNZsQE9NX }?:E.I)ٷCnrD6F1'd"ˌI>U`Rʀᔆ |\-F,/9,CgR 6JJ ؑw( -0[֤5CQb.hd9 =$#1aHxvCö-''8xl}p1LbRJ0`aK1C/I b;ULQjB(9-Ji$(98Ac`M:!/ h3;v֢Vh!b4e$a؅>3S.pq;p)@޳1pLH9ӺT*HbR4$}LI+)eFvЪ7P)%e֧\HRH"Ga:g?EaX o$h<4"h?B>$*vFIǞ䛫k=rˑw$b JY!3m ") A %3%0Rt!0PHF))EXY>Z뛕v6Mv׊ZӊU<~̷x\ /EI,Nx1G;PtZeKBΊRStU[K\EI= ;hBYն(].y-VB(` k%SBb&"! )%RB 搗f}Qfir҂3 13:T e!0YߒPe 00h 7t\pv7We_ .œ6|80}?:% 9L{D26J$1 C"Ę'!v4GӱPBkm6! Oѝ*MZ&Fr1 Q ={4[_`Ƥ3揨c  >/i݀C`=`i4!bɗ__`GEvQj amp幪zx/+RRH.t!u2RdTR )!ЍJ2䲜|$8CiNZ1fht̬3fKI=+- ON8DZ!EMC/C9I8nK>r$#b0)M[xzmE+v6!Rb!y1୷κbJ*! R )FN,m>fA \TEhaדE=c)eQ8lOA],w+LYJ8Rdr6=cwryf34=DYEra(Y/Ii`RZ0>Z( Kb)1dZ%R‡S^DgH7HF*dxPdZ((cYt՘RBtpфCQHdѿֳT'i6IuŇޡ:NU;:z;8TUծ"IG3m넔UI%!BeчL))%'rK)$I|HU6df"b)kG~5]%J Ō5 uN<):CF#\_odۤ]CD$HRáZ#"8X YuKC" "B1ϵ"HJO8E&y}>$\T І&dS ` j6Y7߳1hVg(Wc:FU`ca+`̴.HK0AUsbHD!F-eAIHDcVZ(cITp`kk=<'0?o(+ug8q](-Ogths#lj!PQH:?|Ak]tGTч(xR5Jgm""A Y&@JZ1vVjOP(///`2S晠y۠k~ pu#L)rPMh2ɔ M?]_t=s_^j޾|a-yТ.t!Xp$cJ%f21'!sRJz?9s:,HD(AS1 !V10(@2Q"PeGn77 EŶ!Q !͎ ,tBs@ۉjw,"*^q߲3䖥zHe/~>n=:zCv= ؾ)fvnФ묳Bʐ®n7;!t9+kRJIsJ{gLf .3Kt#1鷗7DC=nabx_~܀98Rǯ\O/x2q)g?w_#y5**"-Fh,%s3~F4.t!"Bw}V\b8olsp΅6ZL%v6[RC78;kb?@b6xWe~Xͧcfl M`(hIcLחX|[ ~|M?Ҙ,*y&c_?`t9+ħ!_DkwuݨNRԂ@DPJGD <ϳDft)devn<1h g0Ίeye\;6f:^(Xgŏߢc4)F#lXdt}|hnz=ixR };*J(L<=YJ!瓢*fH7{'N0 SSR79fOX.c* fOB G @[ CΩlv}vU!m}aY)8z}GT]u8 ,ahY=x}%9s$~0 z<~@a;|1X\_Qy'W,5NO-UQ;`7O2*o:#$HNQ)E$(a`C ϋ<1uEX*-s6WCU_03'tɳ'n4tZgOu>ыo'Egحy(+ɄS qb-u{9]_TřGyy@s@J9Q5,ޯqw3@trt1pQjTR đ`{m2(̽LMƣNRm]ĔK)iQdb6[;N]ow`~/SW2w$$eͧ8[bpuag_Z=~'6;z(,ج)F y&ƣj:ur޾Î29n|Ya`_l}@^G8@+BR$(HIL뾷aSx7f;o~hk̳ۘq]o6rřN_8lGce7?BPװ?--ĸA]c:-BYOyTWhum8@QYpl-Wpt_ǯפּPBD)FzdrCL1!HkLv"1i~FjE*ˋJ)C*| ]7˻jy!_6+ @KhnX=6[SJᒾ=+0_^\YB{Hg $ hc]bTrH!+Ǐ~}l|oeOGEYdFI%B)Q1Zȴs#!EVŴʇB .!DQSD6F*Lǡse]FLII)1.HDrL݀b9W`PYA0mt޾7~1 )lw OՈr99NLѡ`37[jCo^vYxy]8??׷m.p >1J)TB/3p IDAT`rw.!N* JwQ] )C `8\Lڮ#=I ւS"YzdX,-2Q/.@8O$,(A+rϦb6KIbuF9J$N۷߾'Z@\TyiE?2~ٯ7Њ|9n$f%h>^_V0?bk)/GB,z|b9~kg '[ʳN:#)rR%؎:ɚ6/bQREVLӧ./o 'i+F64I%Irt7s!+k@ h4@ƆP(lk܀KniD5 @U;df+\qs;c>99/zhY~('~j^R~qrO 6E2||6M1|R4M_͖v``N;s+:$QU`DTuMrG&ddG9j>!hP"2SM1]]_1̱W"BRqHhc$Dbf%C&@tՀ̌m?m&}{\.Hwd6IU٥,fVu, = @R EQ#1 5iP41'UѾIDYplC0x?݀MSדn9X`Ok4E4!>ɤ.zb4f =8&P_/~1;q͢/ 5 e!9Yf yw!> %>7FBI #,pD #p`RpZcCWWk`!P$ rrw};<zc(pUkAly7>НL~o9-(ơzd^}Gg~[T- - Bdnx\CV\:'CY6ǝd{usEɰ8b`JM4͂#~>XBQ;PCw`Yc; zSdw}ؼ{]oqh7՛S~V7~d)"_~oo{]o8~ϷӧWfo\0ՠHmYԓP&Cr*,eEE3)kRќd XZAPD8fvC3IsRS,2cES͚bGDS9k$&0$b$ BJ"jMaRzՓ {5PQ8IALٱ1ŘR1l}`b"`p!8cc&r8q1#," ʢƨxuzqL`u]qUes ΃n}I!m{vt{sY?HL9edV?"Ap~UWCB@.]9kf 0"L*'߅>%S,kvPVy jԐF;0~O٢Đ@sgn`CO`eZ^@塍O;d3CQli]"g@̄˺{Z}nGOz? z<<]}r}ߴ(`D`U5 C78eX(f!:6yt9: &" Ɖ/?9?I?8[}q{EWul9T 'S099=EA޶(c,ÐTTd:?t!1EO^~ۿ8Y=?[_?4e7ӢQQr!~v}dzY~Wޝ\$./޾#@FZ<Ӣ57u!h`P4#c""$Df25&r!$RUB P `AUT5KR9Ř;SU 2C༪s.""! gR"y(<$:4e(Eggy"r~z5ѱjnZI"c ׯv{hG?~?o{ݟov,o%U#|/l_ߣFi{'o={)5"8Ɯ1u0)">fɤ1(2UUBE i.TԳ"޹G9VDB4$ !h.i&RL)4%  Twd )?"PsD9ɩ*Lg!U? g|c?דfVC4@32(FAsL\-q# SJ)3QMU""!VEL'8blq2mfIn4^]-Ӿm/NVeA QMsEQ\v}ё#DGV81˘8FD#XUɤ/NO}18_H۫ߣ-N~'Khx;߆7@[8a%8/u& >%_3x΅ak࠮=J4֞wK^~ۊN ƘDz&@ ̳'f0?T ,KD.g)Cb D%f]O$+!8BffU49'U$d;%3{$8N֛a`uUM&&뙽]׉dHDeݔn-SB8ZUm{᮪#!"3]xrUErF1 53 NM777j}IwW_ڛ`L$>as,33hKlh9%jy<}wpܽy{d{hWUqv `RHbqۏG` 5C•ק>*vLY2Yc]VR*̢M?'*i`y& U3$*EzWu 1ņK}?~ru6r>{8nMZ6Ӻ!OW~ZʚΧnëaׇV-{EY;z\!v6;zE@ ^B\wo+Mj|򋯿f}jߺXfӺZv9j{8)o={1xYmw)Ң.2(M'"80sn79v⛙( &bF{,Aͳ3D/KDpDEuL9˲ QD&:PTcFD!BUWwC)@YxG*f##5&KfrJi9=\Z!`Hfk;U-29mۏ=Las(껾 =(/3gwIn2%~wMU `>x3`E 0spl%&SS3Mтy`9 SKvq~z=̈Їr?l//N?xvU_>[Q*;:\ t5^_d-4 ˋC'{Â;no@R +8YDd+ʅ"J߀"-1<;0]~}N& S}0ɤRb" :dRHb@cJԞ';M rJ0̛b2Cc;tY/Of7w7;F)<i8˳%cdEM}Q-69"#2lgq%'f>[,W.7vf/p8ĘD/GIM߷?_̧»wͤ`:^}{v~폞_^L!6e3L涏H?WX3 l*Lc qG;S3A0D #V@'$'SC@ ާ"1?Ie1Q)RM  Q9x9f0@@S&dbDw+iSޓg"l&G2luUQ͈ IHJ̌DLDeUb1"y8*?q/cmw,IN}Tg_|e]'ms UUs,`bu^ڶGG"4ιqs (av'߬wc1|1lװރd] 89e4/_/ .a^⤱fSMIApsPvW:_|n[-)t=TZX7,ó<_i={vCL׳S:1br/&uJiwYt\0<&>0H}2eg\2#$3%IQn}صۘʅ_nvsX4 1Qb$IiyJTeYc1 c8UQĔ2|^.w>?lAg+TU ./onn~CN]7ՏjߣBQq>N&u4n|s{;*wwI,xjJg&@fD̳d98;I)VuÌd:߿-YtMcgRUh54sʪ̛fy0?;i>-ѻa}kՄS{ǔ0!qgek- H&BՌI"")'$<۶?[n؍D>6PEC<"XGEf AKwUQ|SuޡwYWɶٔwq̱@ CJ)| b"!%yE|x}n'RzOcJcP8rV/޽Evݏ><gWׯׯ>_,Gv~iT'ג싷ǿ{yZ̻}o2#ӷ3'zO7:Gc njfE39WAN#iQ#1wu#!"!+wBL|tNwN T8Č%#s2c"Y%GrA9S;{瘘HM("@@}PUfcL nǑ"0bF1","hYh>㡕ˢ49IYI9$]fIuv2'~ݮaaaٓkP,cSU8s/rޔU~`p~ Յ]]ՅV?-`LnnO[@ [l&Փ+. wu vCwԱO>f )Bt)e{lp8Jq Ϟ^,{X+d~I3Et?JJ)$jLgMus^,Eb:w;sDdTM@L(î#$ F$*1Iy1i)͋r<-!xoyCnmiS{ Үxє]Qq\c IDAT|TaZUhZeo~v{\u?7FB<#!ǜ1mLELqN%JU7QlbfBP1w@MGbBD !a׷D"YD՘ 1,dghhjL"_CU`1L @FL)eiL1UUVff9gS ERuǡ,* 9O0qFB8^NgiCQRڬ7 ڳsuUUgMU }ƜRĎq? EUq,Ӝ5&AP^³_/a6G`? V+x3x~ _ 9ZF2U%rv~0Qp7?89~PEa&ɤ)I(8cœ~4 p4W_;tٓkE@B=۔gr5( 8>lj/#! AeF&42b 1' OQ; 0a֜rjq1  sR s&ꘂs~_8^4\V/cN/Rpuyޏ>z:9/a<]-7oV'S>-~p}޼>?/pu:t移ͻ[F ͚Iұ Ua;PW)|thT*Jfjw9y0QT &tDl9d"13?C3c"ܣ|@rhL̦VeY&btޫ$fDzOD!@ p'202"cDcՊK9QTP22ӦCnc\5HEX,}˨i&á:Hzٞ1Ů.=_2k3h&C,f;zSr}bf\)2e`>F$B`V"84c*-%vacO؏p TEq `u&=w{ 8;.Υhn۽ZỳӳURd{VE v޽.Tf}S,t~Ywm7a01 q^wC|8鬩[/Fѯk0!L}ѧ 1y991*8M]nb)f5%pTNզeQqԪ,WEna5_&7o~HY~w$ey/OUS6ӓ~Qa[?כ'eQ bٕeW_LBe`n.W׻=j;`4"`9rc$SK9>r9D@̔ʲp>1;&4@|dc*@@D8NN;dDGι/>G%OUQdS0PLU1L LDw. 5cq>6-1*1%#&].58D. U|`0%T dUT:6iuu'铫^>}Uۻ;& n6hj&"b]{ YEQ12">ƺ*;veL(ƘG?vwf3Nq},!l5xۿE`@@zsdol8r5vw77=݀=wwIxt: HJU&<[.Y]ƘlvL* ;,1{fbªC{t%Y 1`]Ude읣*RV"l9Z.8v1}WShǻ["w{pww7ϟ\6DR?ZT9? SR&( hɂAR\L@U1"}pF ,0{#xp8nmc 7nj7sV{@L`13Xca,f|R1}|y.2QK9aJIr>|o?^ͦ}Pr;%a>V:uM]{c@dKeZa's&PxdElQ  YopFrNI}7䔋ԛhy{v!qvww/!r:ǒcb 0LR]ߡwL XTEF)EM?&ȀcNfR ,@s Tyw ![f| Hed*ʌHLlf@s)E3c`h`̬hb=t="E05Q#1 4#;"Mq|@PWg.9tcsvLp<)hq22TUab1 O.O˒n8v]NRV4.fɤonͬھmmHټ r+bD6'TEw(@UFM% JL2*pO9t XVP0 t#45 z`)Q^~(Cwt}n O.10*-bM.n߿{;c,06Xk;j!ɷ/{?޷~{'O~Y2!j1}Z'QbJ&O?oݼ~6bIyc_4i-ۜ$:_.f&&0DdӦCPSL@̾9gyǡڇ P$q,@lrVeyl[1/?-+|qv}]VȆkwۦ|MjQj㳋(\w~cϖt]{5ffr6͚v|A!DP=rJ9'5 Uj̬bDȏA"G'"@|AxҎDd>GD={-ˎ4Xncϛ *&963hZAA$}5A =jU ,YY{n}898{Ŋy^a@1ƐB;"PjWXƺ].S [a Ra%cA) ޏ(EC vjq!QlQDeYi"M, J|r¤1.AKC !Ve=Yvެ-Ys6"CIgRS֊RTVE]pLY뜦((bSSfF+fdb s(rJTL%"TW8/O_.l<\("YAUi$.8B "RÇ!~ Uwy|Q`U^i km s Ӫ:lf^^mJp61f|GKEiڎ&e>Vwֆbز(PA(N+af`Qs,Ҥ=G'VLX 8zZUb:Gpʢ`1po.EO'1'Z_}uW/z.f֊՟OVU'}yNu<*W=m&C?z䜈GCHFjEȣ8RH1 ,HFH@d=)vq& wȔ1V5$c"V,2(ۄ"ow1c-)ER 9jZ1&ŨֆTDuQֺ"kCrlƑHmڍNkg̈́%!QZ)giCn3̗󋋫<n&4 RnۖQk]]CQwCǙ3g9UH1䜔њT,@!"hiw`RA): ޿7 Daѕn֠4J  <!8W/aLw0ݵwތJ0dW%Y^dfYWYWwicE}]JeNz۶mg3j;#;X.1gh}wh;CZ6wח|ysGvuʺzɯ~|^7?߫F|s~*O^]Qۏ/KT׫^{7ktSV_ maZk_Q !&EJ)rPDDPE!YX4)v1]7ZSJY"ƚ3!:[60+$3Yro݇ЈZ"$18icR9%\T1m[X̶U13!h B,u8WւJS$=aafiyY0e]wێHGR,4"̆HSDvlH)!}TFWPYk6[<49gi뜵UUYWXgaDI]O/.@"X@?F5[RTnko(w79)Kh ͋)+>JMӲ٧ CIQP jA^QGHPR-t;9rT|Z|q3w]̗_|;{ʪٳo^~/wVom֛tɣ1woo;?߼~{˿vcXZC_wViefuSzkfF4킲D" b 3 vM9jc JV$Z*]? 1E""RJ$5(5QEm6` ! * A$B)KQi7"1:HꪶZ5,L!f"1ҪqbJHB9$VuC  dV7VuYֳ*KgcXYaTdR @HSRJYk1s+ghkLfN1nnH cq4#UvUihN"d-)פb1IY-)$Ͷmk\>iZsEn=+Y3a cv<ʙR @@@j*AKS!:m> '7ʩฮݶdpEdVdJA-bN;;N  =M pnBbt5VE]iYtWG{fsô,bDAt24nU~5ȦSrNZI !Z#IHxtx >@ȜBi+Ce%N9Z6{p~}i[cjFăˋ|{) wqq!j" .@W7}M_8_|7OC|2"PbOE" 6HY@D"LDV)'1ڙBib@$g- aRU5:T ԄUUIf68猍+ Ҋs!ܻwryy5͆2sV2'Z(s̩rE]Uιc.Fs7uc4 W~8:<@dN9m]7~N^εfަ̀T6մnb¼CE p4ucF@ͧHB*Rk(9S:ks]JS(U8]W0]?tCI[}hQd>Ĝcfl: >Rt7p⺞($d", ,1S×He@ '@-j{u׷Z1u/s,8WhR1%e˒yaI_\ݙ"u{TnZo@r0ʜ3~!E?1q9luӲhCNMռl!qiY'YG̙>zWu}*"M؍CaM~^kU(%((0fnw09/Ihc!}o'?5o^>=9~YiՀrq~q=Lq$M_NGOng?/]߮t\=;}}\NuprtX/d3/fUQsC(bw Nv&$@wEsFPZk!l9 sL^dSTZ1gKe@SrE1:c5v>N)e AcE.- |Gkd~dQXL a)&MhяPnSfw|t}}s/v25z:Yk, # u]M0̜yJQc 8<{I.|FvQ@YҕfR DQ%Ŕ)KCĜw9g"DR)gg>>?.`²(J@+l&7kjjYm )Dk4M}o:PJYU}wóחWY=+Ac< X<9<)|o1?7dR}6r;z.ɦ@)EtSd2h>[<8ojB ݶRwX/Ťk7ӢB!F2∬6O{sjQ{?~3eS:f۞V?믞?}U5v;><9]]ߖb۵W71U=fZW/>_|G{oy~ѧ{GGww{1Ł3 :;!L*zD.+STERJ1ZQR+33;lQpeYkE9eBּ(]*ʜ! # 5"}:#)$2FŘvEgma'V gs!v$N`.\9R9 ZV <?-UU\_ی8m7ۜ3J)AkWʪjmYV P.slP+M$"U]]ۮiBY~7v9%#hͤLx6E8&d,K;Lh8d~( )@T0SҤց%xs}La!)2E ws. IDATӄD"ƘYcG֤n0zݟZ | Ra'H LQZ!0`@Bi=s۷·NWW|~wsݛy],־ϜYkɣŲ֑鳗Y]j2h·F@n܌yzE(m٧N@x׍19=*I=Y.EIe%E{ڧq#K"$]TEx\@DY$l֥a=Hk;_̟=y}ԏ]n#*fo>>~dӮ?Mԕmju1_?g?9l_|7=ßD?ͩrnJc O<.}?6vtc!,$>D 8") iFUu9 Wzg/"`N qA,D[9: %BdF0h5iDNCG6>)w (!t, " )de(sDEea3~􉙔a@ڌ~¢PƏ~cQ2BPUt;O1{IEH9!'8UU-jRSI]Zwc]9gDԎ~ 'FsQ,b6ʘlIlՓ*ɖV8ZC4gTJ#"#jI~7kotCVH+`ۏ]~w˟c@GۇW0A.pw ƀV"XWQ'Gx<.b]>hl~,bVloz4泣RƜ)g%p8;?*Y~?]uci̼t(jѭYPqpZݮ۔*(̳*funQUQSqhQӺگ}?ca YHztd ^]_)7߼bƺ,1usuyBE71YRUݮV>x1m=wӧݿ?~ueQ|?яpyZ_ܭIS.=wff[:&4x )G1TEb Z8Xm63 rƸD"RʀVJ;N"_ ,B2 3] @ b`Ni>Y3g&Nj4i[Vlӊ2hT"pEEumQI]gN9Mwzhٝ.ºBd:T]v;]X#"jX䘴Q 03I+% P1 !rN,Ǩ+lH+- "@H&DcTSW}e1@gf1t ?0`7+鷰!m݂@9} e I#%=~4k:m;$TӯϮ$ ǔ\^\A6Y18E>?n142gUQ>>? J_\ǃ>nG+'ƍ)mqiB 9G1ډH6f84e2g:0xtx4!YPv7m!ư^PggTY-SH>aRnfv,6mf~~wo9;ҙ˻ۦlݶ./zu{wBv>yߵ}? Q׏ncΰ5A>)`gtUMIJpfݎQ(XvSV9圓F!DvF!!)L)pQ9 6ȜQ,9t.ae "2w]rҊrLj@,ʲB%HD!haneY㠵"R#Y-HҪi&)dLILnnI)SHY08_̇~pXՍ"f Gg&hݮ7hgGVJVFrLZ"j; RZBcJ9sLZPmj2ٶ-*}[8T6 F7ĈCprg`t `o~Z!LKTV |R;ݻpqB=Sb̓{ax)![Søek ǛN&] 7cν{yq9e{ xiomS{#iس6tՍI)YeqF_Һ!DErz?)M]9]Ubܭ7V)FtZ1 إ {󷗗z"·u%J{4biݺr̒sjՍѓoqmq/Wdov.g]ݭ~w~w{{3F.2/,ӓݭQH>Db:sֶmR[pa H1pJ шXX Xc?.+IDHP0 J(e8!P3(chkD8j)"8΄sj8c ZEYAi1!#BJZLNi9#t:{oaFkbHZu`NꔒҦ+i#Pa3Q,v5Z.ݶݜכѺ(뒁-Q{ "6ZRyl3E|@J!`? 12 pZkgn@)i3˴ۡ1&HN(;Bn u wfSacY n6X1n;xg3ȂSD+ΦnWtw ݠ ~tt4o?{JZu{{|{mOAC7~4{_~ÓOq|{O{?~$}|;t9}߿x8w89{#BJٟ ?&eorj֓(0NH)M4!p@2g2YD; ViJi ')!aL$HkHQ ~WsA569#!ݬʲPJ[n6V`ܮ;=?>Ť35NvB[v5g&*,>mM]UOgH8кB)neCĦ*Ә;!p'E*K! ~Q +Rښ-R8(gdziCt sb~Qa#j)]1"q)1 sր 43) )hK)cTLN d7/8gRYZ9rU0tm?zQ3Χ"{1*!3f  &{_f ~ t(͝tWv9^M5 ;ўo7gG>|Y7>ίWFYq؅ F㓽ú~]sP8^jczwҨdE˺y?/C0*'!jΠS{GKM8?sV[0ޏqC*~솁+RfspxÇ0/6?>4;_<~_W릮nnG}n{M_z}ttj_|yai~g1ժtV87q4ŬZ̴K"šHk%9 &2R̲#miAkIYcSfMs! VB D9&Da沪Q x||m71d)StBZd2no>720}jჽks!ƃJrVbeƜuSfg笴FgR 4s""`dTDJ&WTc`am\դjF)?ֺ臘16G_uQkefP9 XCeiSN^Z|@Q!FBL1h ,2Z$ %M]"Bmʊr΄!ai3VjTL7MM1¢ n72KjXat-ߋ5pF4zi ǏN v~ճ%yQQ7pX^ah?w/_xNYM@7~@ 9kj}w\MuzHHe'Oo}r1w9{Z- wMAtݪ6YQ:@򓣣06 pxݴKc7ŵHڴj腹m{G{O̥1ˢF~ݖUyt|Wo޼ !7Dcypql8_xhÃW/._qBW!"9MðlJpu FkLFDd~9#&Ç$b\51TX)$پ4֏#b@!" JreN)YGPJKb"~ŀu6M"9>9>Ƽ}FW7uJsQ8mKW7h[vLJ?ݬn PcYkC ,s9t0ƌX 2Ӹ)1"M'vsrg,ƜR( k 2˪9gȬ2 ,,J[RB9E2de>$D5q|I8#FP1p9Yv},0$}7`B_ >ʘ ` 04 `3IЍX5}UvWK}^tCKix63e÷Vw?/B07ah 7fo]1n8wݻM>}ᣓ_J$]IE__Z/7wQ vfRw/fVARN8Fj{qJWWN+u~u3B[ &Q:Zhzsy!߼"!t:E"jN|~} 9R[B-\>8]W)0D(eQZ#[j4uUN `5!Hve/NecJA20*BȐ0UY)V @ǘ֥3,)Ѡڦ6* Rl ڭHf(1gWI!,L٧b^9,"O)jƔ& pYQgfbJ,1C3 9JNI,go}ꃄO\\]};ώO<:4F_\܄C͚M,l~o1M'8|vZǘ]a8X5B\e5Db1Ɯ@%(TZB1 BhKhH!SDP"&PJ%];^NŘr6c!EnД0RAԵxz KYBHF"gPm'n6~}ғ *69so8]2w!Go,*N{{wk;~{ws*VI>ٯ'_ݬZi7GeՆ8xIf1ҋ ?vCr>l& ծċܶmQ$ЍO}+؟V''?=9}Y:j:!Ǒ...$8;?_W P+SڢreZ}Y/JW7?wo>~˗oNON2Ŧm gprGM֛m7g)VմJSt0hcE9hBd`-ҹB0'V ؼi&4PVUQ"[c֛&w"br9mCJZ)$SFq@ISR0qݎF)SDHi=ޝ_\om[k]Ut:QD9g P3sVR!e"m13"(mw,M*!}yy_~lmr`n[c]noo7+ۮ[߭7EiY|ޓ~ۮ`Z"fmMJ9dInU1g&¼sۦ&fiSE9ivYS"ǨO"hhHK@Cΐ#8 T um!f[(쫪vXogurr{}C'@HD.0iJ7?wПTkqf]ٙ]m4{Gd$T%)UY. }0 4|o؀ ]T)-$O]EPsŚk'y_W^]u1&$(+^^,7rȻ'M}|x 9{-PB<o_dzu]`z̞5'2l\ϧ N+}OO/֮ძ"-ݺ7r_m)Fj*)ơRt )?^="~N拧_(.2֣g/_V$HVڶ>yɸُ]ʫKteH̜DeD]o.ipaX8({Q!+D)mbRB'!D@62/TeyJ23iD)]dR pnwTUfefvMQ>ƨ<3J)De0bp^*iM&YBDJBKbL'WWe^I!b6,pZ5Jj7h2 }GDZ hDwpˋ̅@LB*)0RƔ`1ZݹsrzvzR*3;nX,PJNc5SRl۔Ǐ Q&e.on?y2M7+c,$"蜗VkQrf3wYz5 X)ErtCzbVy{gŮ+Bg | Z!z;b"Ayn:?mĐHA!Nzi 8o֛,˭֘f IDAT*%?N@)|m HFQn2kiWMִ#G*7m?Ľ?zuTӬ, #BUD*S7MB`27Zã)H_=šm#c?lU$)&IemR<{#R Ž;'׷יU{I]%o?M߼x nK mvy~t/~s8;WJӇwxqtO~^9'^Lo.C ~p>x)eg̔,bR*%) V*Ř(@; ^nݣi')2ΎX] %$*) L1I!bLXHA˅ )2Jh)XxPJ-0mBj\z֪ܶ*J@wi?GmC C6滆`u PI5P(m:_^^Lw;Tfdʧ$:H"'iZ=8zYgf^P7oxdLdSr~2}GF5w٥aUŝ=y[J1_{G?'Y"ǟ %bfuڅxp]}yew1᛫s:+|řTbmRF}=XUR)4ڔ2bH hwtJbJA+b7FZ)!6FL@w \1i!h >ZYk AR(p۵xGfWXLժHtot{s\f@/~!dc@ŐR)% .RJ+)"S]h)RiGG|vvcB nb R1LXm1Fl4&|uU,3&(2J)e eFm[h\fִuʹ6 al5E!%f")8THQ:灈 ȇyIg(p<fl{J(@Zn Lzso@BK(*2R";u0iFx4[M|uX2hSBH#E>_mfY>v뇐 &Yq́8)"0}prh}į7ۓ2L+,"%xsH)Q]$ZQ2PrA ~غwׂz`6m#;1#%Nz7 CO -xuzX,~Or./hvmUO/naޓ']|g/OϮF t\DLh:9d IQP !'QJ+Y+A*EVY(&F V8_^ZD( @)$HÉRX2UE0',JJ,r@㺪sa aP @[Be)L1vSJJ*Td!rr2=_z=tb899JumˢTR&JI\ȳJc 06M]W>m={6N9&`0Z/;G/^>H)f{{;bzc! ɹD s~hz1vaHH)PD,')% DiژHg?@Q2uص%(ɉ@\bB JG%H$'8xGE-aZfb=jF~zv"RgxLYdEu{}Yo<3Bq;(u߶ͦw[Oܹӏ?RJ>ƃyY?Z/.niߜ˗ggu3 ܨ(no>d]mxAcHyǔb D( MF<# !QVX9S&%3KX27 LI3EԈfZF;sB"b(V͢BD&JKN&21DDR %Z#M&c4m] !hc@pҪ(+f*%"+\?XT!C JbyT+]Ճ{wnjL0uf>_֋*C.n @bJe(Q51FۛdvB Cj>S\B$Y aUY(-AZJ)e$H~ B DbDZÎL'959AU()@Xߠh+PRxٲ;JZNcQQsjۮ{(up49#>__ټz8fY{'izݻi^upTPbOQ]Diu㢸6ccNr)|%2<{g1{GgɄөRdwO~/~7ynz[}j=X.zu{Zιݿp~|8{sz;?qY=I}ҵd:-cZGJ8 ):Pd@,B))SRJ'%N|Lw/1] @D(fYVfFKD13j8&ȼS ")v*m~|ZX@ BJcQSȌiV"J)Yn1D(ڶ)"J0F;QH!`bcC/f@}yf˪hڍQ:kksmۦNټ!O)/"ϭ6d:F/P@b!1㺪CQdL} Q6uU-V7 )<"ϫBFem^zTeg`: By!EZ9!Y1/Rβ5d08yYVo7Dm@iT |?/})jfp@ᠮnD CW7J}dA& X~b͢93__-vw_.CL ۮ@,̨.>?m}J!JB2!:[pe!4gL?z|Mzz t?Ou]߷DqUUR`VU{󽲪$| npM~wozlTyɓ닇YCLu}YmXyby]?l6z>9}}?f%f)f|gREՎ"v]$J)-r >6V3 ge~|tŶ00ia Z? v;[J Y`1zbBt}H>()vwl:bL&W9m }vNH!8 IYKvyZgK6Zc#JUdv 22rlvTm!xR h3ۛTE޵j24fj)FݟƓ7-z82HCY.rBbU.x%% #')% ym߶2}pq MSܛo!9 M .ÜyViI_aDWgr+n͖mQ{M;x8e!&-Uathӻ_~PV{$b޺fB PFE"ϒ\cnͧ7/)D|l.|xwȳd<-nVC&7 2C]gQMsiN#h\ZɸȰY]=yr^i)~󛫫ml+!jxrtxtڷbZ,WN|}͛3hX,~FluwWY,~*ïȁwgS(0bdDJ}]f#1*@)(b>{Enr%@ FSQd22kQRJB E^"R (/b[RJifh}\(ӨVfqb[JZ627@ RR$NZIC<0QV0(!1B!1]?xS,m,QxݶUUl68q4UY2%`@x<2<{f7SB*u=QZ"T;e !qBfZeD0.Lۦ뭶Ĕ"%3xGeUapR<$*k<ς?z}@k&jw mwJC/D!ꢚVQuݾ8;YSbN&~7ZwO:Jc?:I]}6:k27C `^{8tTfٻBɱ)8$unfɺNo˦W[fT*^Z6bރ{M; .JQ[=W(ёfft7f7WWCl{Wq2Ge7-ɝ{G_}\àxD|ͫM;>|ֵ积/ p\^,ܨכuLI+A1j%BpB#R23FI5ԶMptX]q$@"A5L./4ʴ]RCCD R *%J[O2%J@dL*ChcD q7DHܩ\qG `B̬z d>SJn֛؃پo,3{GG"% b%QȌ6m6[H?>JL7Ų( !7lvw]VbtCDuF5'Mmkl:uf>H>DDCyY;,7MgF#6ҹ])q>`yYnbRH$D!Pr(Pbk[F;b| 2v,kP*E\&7{|Ԃ79*$ 9$ &k> IUZI,Xu>p'u_օ٨V _]lZI#3湞UUކظVdNF|RInVU4H)9-w?Z7ͺw}+7\ȴ]ۿ|}vRUIyfh7f?OƓf[VR>w/`VF Ddys|4/Nϥ׋w<{rol6wg{mG~_7;^bCa?&x?߿]>xコȾq],J^GG-wYyQ aCh4t(s]@ ZfSꚮm(q!EB][AJR(%X !)S`ֲmTHiF! BI 0tCI 9g%C@L<%BJ^JɂRRI뚆DB 釾.ѴN9&MFoBY1SuZ+t\4>{''UeVOc6J)c@12Ante@D{@*`*Ddc9g1HRapl 2c@Y^ٷ(PȌ|`bbL̉G)Ě$ޞw#Q"fLGBD`yP!!77nPb4uwa2ˌ-tL1dBH!k$Aˮ'@;V C'%RLU{Nctvjo=<2<<=1Ejy[)Fmq=zrqs{syuX-OOpJRtY3(+"כ2VJb J*cv#c"dJP{m=>>>hFJ@,T)[Sף08g.,C8sČ77U^`}j\'Z뽽̈6V4jjoonWuQdwf>y64 "'ӦGE~08}s{tnɭ+)Eܹ"yRBcB`fRdbf@h&C7MKxB1YkvjLN$w ,C0FDй a` CVQlyPכ>MVoDSm6}&Rp{P*58I1M? %Ả$@n28M 3 {Q1)XJ}ђGw0WdzifrylI^,3)_޸|:\ Хޙ_,Bm6I)!j/ןGb(d~t,ߜ集?<<:>s7{ᓇPUU1Ço.^6fq ~gkNu}LٶWJ鳗/նi&Q7Q+l]lV A t{sJ10jDF+U ^"E-R$%j!BJ,@ !wWBJ1 v;)$0,Q)eReDj|2+*Ƹ÷ )PF"qR BN( B pRJ uzTyY D*lHSwu4*&γ<+rEqv"ZQm_]]Mvd6!v Χs= )nVD27MmlVe(y8Ͷ onNt,@`B"D'LYFS"+$4lZygbbY!wNB DJJ)% A/ E^F0ZՕĠLHґ@kًo__]]12o>?jm9>8+r޴;7Ws mIDAT{%zuv:zyw}s=*/{Al7)UfruK1ͶHFI&6 CWוdS V\[]?02(@B*JiYK ,t}!PJD$PJDĹCLe=jNk]"9 +$ 2R 32` 2J}׍FZ7tUQĸ;]DqL@A.n蓣!%٢,5JsXC })<˔ۦ]5ǐerm=bJ"4?|h{xoGY}U(W^g{ѻ{w'R_};Zt<Teaj]z D D& A,o7R?8! TEY"Zcw,1C00@>FR !܂޹j LCLF)FCJ)j^ƹx4L`XDvfRL^b UUB PU'gyv"ans4UӺܶoWQ3gQ3t{L4 B:iMM23_>?9˰6 SrISeKLj.[wJ;X-'T7uUgݙ{{_,.B~i\|Mۢh_ɷუ/_8;;# GGM_}yW_v4l[WfMal{Q]_\^!5{&pZ d$%s2JRRLQH)'$Q @Rh;u!gdB P&E'%R \(i3cG]?ژ< p@̣9,RHݔR5BKB(ydE ۡ ̄H RaԤ(1(`m|EmrL޴\Ak)mf{uqmL˛ʖŦn٫u__/v5zk`"-TPD6 3mr%`%bJLDRfk"(SJQL;#HC$B(@i9" G,Q^3!\郲!ad6]KG(@%d rzNYa_C3M rāH ).V3V@Qi3_^^ϋJ#GKI9.k)@)H@@3x1(ه>ϫ H~7_ն[6@EZ,AW7}-~r GeYqm0_b'oUWUv?˿T,C-޺{L+}l6O>oN#7fhT+)tոഔ@X%ݹv|:EĦm3S׷dfVk]2`B(-RK"+b)h1Y(mw}g"`Rpi;Pd$%h( J BI(!ˊR h5R+f@D)y7~Oo(}UBT"D) ڪ|N߼~38~qFe(2QZͅRd@)1&!`:]RL}?)q5R  Ī,0{썦-{sqٷ U1)7xTh /Q]ZG~j߮Zɸ7ZM&#-ls1Ő[c؛NS U]Fp$"P(P iJD;^}جVF]^S,Őlg%b |J^fBF@p3) a7q'7vGGϮκThUȔ8,kS(CJ1npH ,df&BźiS6{6Cww>VJ^w=D(,W ) )ʻQVMRde*R{?g}*9Jl݆a,T_&bjl6+`-8_|^/???_"9.x0~}(/bm}9TYn,toYtZl^K))%"RJz7Glj8wVBpb%ZIQ ZȄ(Q3@)wֲ,R܅HF3:>ƪ(SJDc)eZ00֫ӳȠޅ]pBf rqRf}Φ%3JY!ۮB#C% 2%{[?@1 c<~DJ2c{[Wb.˗/Qu|xFsl?#m'Ogn,mc8|sU.iCd"@B>z()&JUIFHCyƉCBVRQfx5IENDB`dtkwidget-2.1.1/doc/images/frame_margins.png000066400000000000000000016113111352002233700210340ustar00rootroot00000000000000PNG  IHDRy pHYs+ IDATx<Ǯe˖>fL?.wfSײ(ZP!P:j TKgPI%KUu4,3| 1|LcXXve˜m1D@)$wnR2N!m7PB}pE9gAb&I EI5yy92"Ft~MҬ"-n@8~`K)!J$-cVeWGnI]8M|:=<psw U?5!0FC)j&bR:MSwXƸrRJ)4cG@#u&//aZ(izZqBqz<"\kYޘ %i!Rʲew<֛Z~~J8b;ohXwBfl۶뜳($I^^_,{xIk31{7jY3O?|AUR_sD.hlΌeV X?]6_7w?ռ%i1{8ێF"HSZTOry8\noohE-?0BE?YX.uÁSEQ?Ք~#YsT"D}xkm!$8鴪(>KUrB(l{vBr~3~9irۺ~|Ovۀ!Q71)8IzNN1,8M#|>_)5hij:}< $"E^qt^έq[kw]a޺<Ϛ暤qs޾}ob?~ (MzD.MBa0Ntnnn<q&q1,}~? 꺉Edǟ޾{7MF[wp{O9j6ks(.`Y۵y^dB }߯V+B;/$;IE50e\n(ˏ?rZEn*u*ݾ2>}m^T]{9|]omHcr:8ItceZ̔vE|eV:zo}c?4|To~_c3jkǷBۦF?>ܝA*gz~״4_8 "Fhk$¢,__!.Ҿ(RI)NFDqrvp;O}z>4GiDycq1 FMW,I(cs !(0郵 2hx>H@$e1 > cЬx ݶMd$ɔEqy @b9r\^a?UJ)fWK(ecZZ˜u)?/="@^/csZ-އQ4M8B@i^81(IR_2ndEXK.bg|hvc6r777ϟ#Ty^Hm.q "Àp󕳁s~o@qAUm.Ƭ $ SZqY·Ik̨qr}+?}j3NGQ ?}pﭳ9mb߿",ٌGQ!`R?9{„RBAJE4MI!qBHJhQ@H(RfiI(5i6]1cc`f{%q쵑JM`p(zﭵ7&D@Ht]G)bq?4Mއl!iL).x`K<c 8L*IH9:#qѱ$}z%sER*9RJQzwo;eF(1K '< ؍Hn\,i"km5MB6yeyu{O+ք/B)'C'8a)e_`8qhm%ZBp 5i,}?>>>ZRq rDZOLK3M<O$XD\kݴ- !(tqgY L|<&Ir ]E!J#λ~YBf8`,"1# c8N|޺ßWlEZʲi2f8sDz!9 8ME}80a.z󼮯:|+M"J5 _~Y*kL]׌(qJIz:*Isis2󴮯#"JXIr6YZ~_n0VXeyT",7oivQ4|)f3et:QJ۶#u.?==y| 'q1R+{3Σ(Pj:0i:R:cU5u۾.6iY|qe1{ݾV"/c^ιju8ql6sxov+gE,DuUU}wo߼|nR2p4nQ8cnnoR)ʘ6n!j3WͪRc֚,?[1|9J QmxDy{/x%ưo[hZAAZac%{ғR*2B7Nn9B(Uyӵ"K $)9K!@Xn֪420^6׺IҜ@-$QF|MQuBul^k6y(xoVq'i}><V4 CG8fHr.P6:}yzZV|Q7f:t1FG)cɲ"IϊQz9Y[ZJHpPϟ?PFonMjk8Q4Mey{ԞN4)S}߿wGR4Ne9#M<{8쫪 YE?qY̥M isFu} 3Άizx9Bp!0<%|A#"N0ekGS$U5s9D">|\-R9IBתl04+8],.™ nhE}pFj~-0h5!>z?}\_t>YcrY`zJ,K @`j}/1fc ^\̛9yi<͜RMzݴx|]ia\"]~$jBi9Z0B?[Bfq]EBC뺮{\Ij.6U+5ge)TDQ}>Uy^Δa`c#aL)M(>i,KX!DHaA Ͳ̹0>2h} h>_`V!8NH` WJkc {|VmF)ʫJ3ISRRJ!(]hmҼ5]O :N8vyQ`@tU͵0P~-wi4u"24$2<(|>"p<0FR4M,_!1v\.Lj  _`L0_w[o}FZNE9x<ϳt׫M ^㤝Ҿ,18+1r$)4"~;DHpv%$DNHII.ײrJC7Bm[GmFEwED:ee^K`uM^oU9e>EE8\.KZOJkc,~D:1F LT`~\je:*S2McAU-I)7ڶ朕r99OOw=e p67kJp.唤q$k\-<\ΉH0i C?-Te]_ՂQ&-RqawAY% B5ᤴzy}T%xZedUV+jAc8G"c0dEa1ϳaD1wn9nVʲ+%bȲlz1L(hH"C_w]=Wp9AmXSZa,ɷ/LN&EQ]eQxiZNaqR'5*880?~^/WϟwJ6M3BQؿ}ZM8xZT%eiZ):6M颌I eY$&t8zzyeA1jۦ:9cƓao|Qks<~][t\߽}Y߷yQ g}zoι$Iu\,V\DƘ,|:u]djv!4uu^.wUsQ?~]V>OzZVeŹs&J&I PJD-D,JAY-4zcH,Zi\NB0kޅcB LRrPZa  aF)~qc401!,Ir|㣱!98,3)eu"]"7X9%|ݾjc1hCɨj`6 H!I5%pbD8`D$Ti%O?`ri%#mto"3ZZm䕼q b]{e^O<1ST,LVqB(yOAdyVY mX|>iB1cxۛlIs a ap{8l(@$r1ƜNGςD)O.j} (JitVm{{EC(j\MجsfKn.|:"wiʲ\z|Urק$I0{BBŪHQmZJ~v@Iyd L˿}/W7΢ 5o<}}٦ifȪ7չPfMsI8S!kW˵0J4M0疋0N+z!ɪ?Βx΄p~63xZ *r6_z޽/F*N6YUSxxp9?}ZS׷+ADaeitԕeRgg|:u=_ݘe__1]7gd6բ-(fT/iÛ7wk b޾"D~\,VށaG7C'/k/[% hHxTlXӄpww7 vG kc0R5&NbG˲ _~~m]Us46gt^zF),PeZUwE^RJCHD?}Lb\.ŇyxBS,rZidM0|!B^B# '8&&/[7 `qꆩ蝛:B80cVI @.˦7MISE|:il6quXo 3\ϳj&Y!Nr=]GRIi@8⡛`SvB%жm,.mR((Nr,4IwLk=McfMS嫯" wxo)4M?7o8È1[OgQ۵B!+hwؗe9+$1la svw0Q"4M1`>I8$Il>ϒ|9IE:Ehpw˶o>|zbpƆC" rjZoT(cc㸪n{wƆqhۺ[T8CùRSOb CdSGM""Ex3ƸﺶY漞:MXs$1B ;UU14MˉRSi}O0rȈGZ霤)e4MS0Q"mVO?XU4Ik=DxmUM}/ǯ1|<BHN4˭9OAkV97rΛT2"%^*%x4Iyi(8f4eY∋a fZa|Ӡ)/#,o^Bq!4լ\6ZYk]#><[̷ÛǶۮ[,y<1bEQui/ 5!~I.iy^m7J0 !-f}d]oCrł$ !,iSJyԷ7w?7o|W~6<|4RwnlQtsaByQ*MR1K/J:Ͳ4Mr1r躮3 B8Mr6PFw GR0*q6n31Y'9eij)'cLsfib"ZkBB&bgw@)zC!6IIZxu$IR5Xdfiz:nV4N9V4M}y Rh.\?, #Fhv4V6KD(rL hҬRS<}}}*˔1.wIjwBIyg0&aJ(K5_E3XknnnO$!(Ibι,K)s>sB02 `< B)xAv]z^/'H\nn:=&H$bT4iD#2f3cAq8'9}Rvm;^Cyo_>fsc,Xul6#Ngrq(J$@obSʺaHt,͸H/rTU\Nj 1 y^k8,M㼸^餦clYmn&ǃ WaZ JUaP2R(~FP8 J,O !!b5p8ݛp)m]7(CEZ! ,竿Oo=((ٌs7|WB)BX熱jy(K4:|%DYR9ayhgw91:13*yfi _ B`Y$q409jnݾ<ũ brMݎӧwGcm$D$$Iikꈱ1HÇz}:~X/W~EĔ2MQ?}?*1 3J #^C< ]]דSзcx(E.e"=>oVJ|ݖUQy Bc"XU%񐖳TDmۀ෯"JYEaA};!l~h=iT78軮,KpӶffB`?kWevs-l6 $$8FF@+/ͱ" G~ %v^NuJn_wo}+B#px)nTxn~L粮8UU}uuEcaonn i*?===pq6~/FsTizuIGI =/C] A༵G&ahz~{ʲ*R/zVJӜ4M8fi f A{|&Y650IA;"5QEHt](](,ˬ6iZ~4M/DTg族 گ_r1(J!Dֺi|i8Iʲ/iK!]{ @ &,1J2`05*K77֌ϟe(xoQS! 0SʄLbI0g]zU#a)@eQa]nw9`#OH;!!9﫪ZE9 c4K)%vҲ,nnyv2B”GMr:Y^Jb)y><~"H(b,o@9b.Ai2<<=Q 8cER2u/op, !ժ*5<<EQhn3 n}zzT2BTeaLX燮 !<>>7a 0ϳ1nNY;Z(cms^x8}%rF"z\v]}x TR1&(LD4:=`_zyoЏSR(%UU*%`DO7ݹe1hzeʼnR۷o! MS_^/6_~)8gB9iZ]맧Ǯo!e}fm;k̳f_gvz< mL^z]We9BelO>m[aNRb0.i$yLYC>:yYVnZu](HuYEu^,nҺjon﻾o[%{r9 cuS )(%Ol6sŋBr_^^0bɗ/VLkhBPq~wӴ 䩈1uUQT0uVt<ϻKtE/eYa|}7΀ F9pK>;w-!XJ!muu>GJBJEU}}z~~>hd QH)N(NK{l6<8 ӺfXE$®n޾~C0?jIȨm;m-],nׯ\p.ⶭ6Efkpwm0 e.|_>|~GeBH/I!0B> q:/6s,+`T)P4bݴ=DS駟,Kl&a<*I\LJG%eDi>.0sRzVJu]4'Dn2zaLiƄ4OcZ0p-f\`WWc?|%dDD*/GgQ F)9,cl؏Y"E#!Ŵ]T B8][ø3QUP2;NBg=?}3ڬYۦ(]bx)"eYzViL0qY]+kׇ$z<.840}|.we"DZg)qBju4` lĪm+L1Gh=k%3zzQLU^)N e+!39 |h\AJ]]L╌C*Nq6Fh*MDE0} _~p{yN$o.b%O3 4KyΧs>Ii6 L/:_%!X~{UWMF9A@g>^et.onhiS[7MTU9*SU g a|}fkGñ>qaz9@CX-&e>x 0ӹէOI{aP*&\qëWo})[e:kpT&q$ɱP\nS}z D ?j{u}C[ۻB(8iΧoO$0A]aBν{H z=2_~/?0µ2c;cmp]l=. ϑ0<!2']gM]'Yӗ=&|<Yt{{6ӣR< dm=CB8;#Y3Ln,6屼-*c,m[4kLH-$%vmm7ОHFߌ](Z[@h"v#=.i}K$9"6cb@Xe74ݕr dA QQ~L^ApSBM8zy||_<eu[ !@qcyxXo &$Yˠ/'!8iSBu ):WBJN(^mn6ׯ_bC)H'.DSׯ˗/""Yy<//a|?qՁ1@3:ٺXQgbt(PMsR>BIZk\p<01Ƹ8Iv]f _V)/6y'}?fYl' 9*mw|^$LCpGyh ,@T7Z>M$R".>{PY^*]˹3F0&unXMh8W_1[|MY1UUf%geݦYeyu{!$IeH%"Hkm ]۬&u7Brg窪4'^*&h=O(,4aj(~||ӟ9_o|6M޿__MPUggiUahF%)8 ˜祯<~heY^~=×iws[Һzm12 ,Z/4= 3kUYJɍ,$޾:_ƹ9Zke082mBOO߽"H!s&kJ/I04M$ !g]۝Vk<.Ie,,?(=Uf]H!1.DG{(h=.O,Q3][y!8ҶYaBU(>F)YUy@ cqPy8!Y0cw4 ^/|ODZFri۶U!u!Wκ1DRLH Aa¤ы+EFP"e0x(b(P8e<ͳa;\pyպm* a͎RzOϏy !!JTfm.⤵R)U!lti.,O>y˲P8:!0׫\aD[.F,[!秛Wac#RVUIdɳ34"ϲ\eɒ1"{D|xxdvZP]sI0{>TmGWDpcŰ{@1Ii}x!Nǣ=x<8ku՚Pf9gYOBplYwLзz$tFǑkwΥ`C)Ǜۛaͳ,sB(y22MSUUJoVURyYem8R4MBD8EY1OԶ-$K|춇|"$a݆.Dc he<_3Rq0x>X(ƍӘD^l*$1mvJ XTQC22P@[+!B23q)_}?B@\0:?!@!B 46 D1Y10AMyV*9"6tbvm) 19eU]K!83} %qeb\j0ƗCZݻ8>x!Qk\mO*]m!B Ͽt{_I874M`\Z_4|\'P*4SUNVW9t\o8v޷M.R3/4}_|.I;q`OӂXeo~pyZ!;DYjK`ƨ nqEѷoߔR p>>~ЧYL0c$ >xkb6xHQ0>۶0"1 ˴E<32ׄ*˾gQ VuW8<zB7M _ #DQq$y?29o(|gvܘ1@*]4!B)n%Եszn}'E:kqU`1YeUfiDp|\DN`n珌q(8:O3(<gp%l6YuŘpBOv:*K.`&Ek)g&&㗯{L4<8g#.qƱT2 ,nnOOB.xO y\U"?#!4 Mmnl7k|>zu \|9MU^`?~vӲYַʙ~wu|ʉsz"Rsѵ=unEyqOtu !j]l_ݿ^]9z[Bמ/_U:}[Uxvu KZ3&R~_[c@Ov}x|t k=a䵱<*t1Iv/0#!vÓ|ӗO$vfsMa(BC܇9."L1F%@joCRg $7Ls<[Y84FyFs)8Ƙy8&%q=|kJ.T-a4T: ㅄ)#QJ1«j(MRF9.KbgRͼdY<#Bg\x!9ƴq \g9Wzsc|U*R^E~^B)^LRGFq cFMSeIlPQ$tf]Z$=!ɟwJ)yy:`-,GD![[i}.qz~zcGJ_7W,MR*! nG99 A0t:f87Mc1tޝOǩ׷RNk$5m1!!\MهP~_e#qUB@Qu<ۭs:gig Pl 8wwwk1Fa4/ke]#T B94.wwoڶ0DQtr.sBz}8>cRX\!kƄfY^5!T7Z0[BUILӄ1VQ,xӱy6 X/savF5{Ƙևx:Pb_WUumd]V%WAi:xĸ\XmB<),آBA?~RmwaCo޾ aQԷ1KA2qBHy!>4A RqU:L8v]Ǯ߿nSΙuusss:h^GӤC-b6wk:kVbY cb%,](V/*sECHEMaLeDtx>dY+o< JJn`C )a?woKtmas!6ˬ$I.d09I,ME]__OV*>I"c3r"E6ƴR"h$BJ)Win}qıÇ7q 魗BtmaJ9YQh1u۽1>ӾNӬm퍔r&'ko$͏Cnonamwm7NӲ,I))}=,ھ<^/*xwQBeYWg&q2#e4x<ϒ$6mۺ>_M>==]]]}^M$fwcYF9hMqaɿshx\Ry^ Bxn6 .qERv}O,sKIɴ8NxswcTdkcs6 Ƙ2>NsveUJ84˲4 qFt=͓҇p:};b6y(1R-i\bC-XX1t:YQrk;j1I"0R\ ˼]ڦaEy(v ]=O="6uzz|Equu}e9/5 xHQι$M| w}%sB;ӌ0=9RkL]582Rv>8hljt:#DTcԫy^ڶmw><^֔R~ں9ˇ&Zꪪ$g1kBIZ㔥){BȲ].ƹZ9!)Ƒa$Q#]w"y1 c$ª'q(884/͒Ԏ}GnBc Ym7r$!dz`1Iib|F;c\ĹufڍD i%ujU}ITv/_@,if$f)ϧu͵xbQBLB8u.rxy3Ƙӥz|&BH[C0͇^_^t #OB2Pj!v.ϏBȶm !,/ e$"Iy^$Z .i~:)efιy>q1i9F!DMӦIZ Srm4NDZ-ˢ(JBrrF~x<a8NOoVߴ֢Jop8\W BiB0cv{w{/iB6S B9Al0lw7AB ۷ q EJ]S_zPJ,1VI!Zo6JKs3p4/)Vuubr9_8riC(q/7VX 3\U&iQFͳZWQ۵>|TeUU@vvzیc'f3D@9FCU.v)R*k|ͳy굲$QyV;2R /+S) gh[@YG,,4BKp6)OOo00<1VyZePe9#-iD_^6#']A % 4 &yvw{r}=LR ʓ4)_/~[E}m$U(!$Pubβx|0v$Jea8 L5ˇκ"O~NYͷޏWTs0iM}'U>*E~_o|kFQ1C+F  fFF4j[1`A xgMp6a\L3b1)҈g(B<8ڞG11 S^n,Ubk&0veYh6eBDQ©9K97g  FcibB(5B8͂/ T󛝭*eF1n Uh=83f8M ouQ_!fZ(cj7O !8fZe 4gJ}r`k"8<8N"Jg\J ?2Ehn͝9?QJ3@B(jCq[I5qV?M#' A !ˋ\9*4Ɍ:N5Ss&I"*YOS:-':Ҙ!v5Y,+6Pfb" @Isc"ďQT07[s>1'f>U9A:0ފzƔ׻U|EJ&P(KZ\wcw+iVY2qugy㿹E{ _dP 6#o!~IM1:yq `a?N/V4Ϊm&fQJn Qnv}׬n8eon74nr)~o|8NuRqx)~//u]S~\&Q6BUa5>!B6IK#osa1^cYAR< PGY^l:/+4 AhZJܵ/*z44M&p{ ϓ&̤Zc1ax; !qL3d8=s̓Mbs?9g{?CY愢y E^ 9gY$#c1wo(FӉ"((l6aTRBMYps@)BZ$YdRJ42Br7DZ6_|Bml_}ws/ʍTbI@Q|Vk##T+'IP̳:Iy1fh2Wg˲& h0ᜋy0jU5urFW #NBL1V`Ҥ$7֦((bT2KSTק8N|By [keXUyRtqZ 1GIGtDQ//,]zQC۝ooiͺ,kI4"h0!nϏ$A x,Oι|ۢ%K$My%YY*meUE1sV7Mģ(&+ 1 0A:8;}eQu,}8FQ?E$l&(ő:N4wE0@&$,Vx8FQu]U!F",q,4(Pκ*hiSB!"\<-yÃrJCF2r1)dV0H)Z>h1bU^aYy!d2fe18~(Z )懇Yz3JjCȶ,+XCBJz)bg%A(I0!vZk8jS؈Y(.rYFiwޜNǯ}u,qz>>LJ4MTx!Dqm hGez A 2i`91 F*5 g!8F^'1 Iě;[d4b)LqB(ao$Κ60j'9CY#c,C:cM^eYBBdE}(e()gw=!?w$KVz'KcxYk37~N%jʱvY̧8!o}8~y y4AW~[.y쇡G.3tÛ ?ۿjO_?wO_n !tCyFz Uo߼?>EޏC6z77e;Lo߼O?5~IooBFq!ZgrHHM}!FKo0Yk9K)5`D(I:M#Bx1: ߶m(Br6xa^]]䙷GgƘR*c !ʷMUժnZd{g2D4MQA jfȵ5s3fYKQT׋nYxjIџnQChl*caNǼN+ϧʢ([L PgFfbS~֍E {Hvfn>_TEu\NqĵIh}yUL/ݨ2Y}?!0JI'I|nEm+d3aۿ{iěm%5VOX6)P U=b\B,r8?y^_?kI8}kYO -;tfzrj0VI ao2E(<OVp 9xWm$s cG0 MjϧWJq?5?pyyqVJ yNrzϳч|xza^ʲQZWSw1vn=t㥹;< hXKlo\ic~|,)ϲl==}jSJ.wui̗b$O#c6/m]slN~귻  |_x}RkE)P}0`BӔ-<=f|%4DH+H ^` ń@(( c{5Ahv!8Mlen`?QQPF1FX$R,I xiB60c A"㸐4aiݼ~ G8SD<^UUN"xxzd~%if!HU1BH)9ڢ(aXE G9ˍ&( ~.1V1F(ArGsi:QU9`!k!HJf!(RJcTi-n6q DF,Ce曛C$1fs84ee@Hrij@b 1_thRJ(pq "ZoӲc$1/ b$z<B|>b _>U£˗ilcj@BJ)R*BYu]hx!t]'Ƽ(sqB {)x9o .ֈpiV[c|(]`ӳ&jiQŘx~PֺۭﺅIU%B4 #BPbYyk-iz #޴y9'(ڶ8+vnxu <D 7?c !I7oHIRns΍So~y#B À1PmYK[ȋ"_euE4MsziYY=~rIef_i=6;Yںj Ir?//_L}Ӯ23Vq^u(~$IS2|q\FiI#0nbYB8 CuQ5M "$۷քKw1fik|'x.bTUM{A$Y&`A !N#eR&iE0 OOR噋k 9ZkQHmW,ZkE?8L#_}8=6m&o޿c?O׺ݷO&Ң,?J9!FQnn!}W/ bz]Z1&}& 4MbZ1s?wƹyaR.~8lbVeg1͇NPs7_4w #b¢^6$I$4J@rXJ>$9'ZrQϣk#&@kenorR4M,h}kFiVydr6F 1|`g8 Gkm-7wEY0gyk; y}Xb˲P 81(~ZHQG(MXcO]וe~|,Ĥ}ɲՂvHrB,[&Msm붭7{9YZF뺩)$M!ax~y&Ir^s"Kӓ~vrqBa8o޾Y|.^^^۝xfFs޵]qB B(Y,KYEMןVQkyeYEQXcVRJSZeYe8 NN4~!R A3us|>c fC4]Vz/ è^V$I8C&H(֦[Fzt"Qά YTR*0Z87B\Ƙ$Hh\A ր4)$q΅~~.PQA)c]y|nJRΪk*i*ZRo0˵k$i4<6 (IBιe(j)C( B:Ii:J~h},On^!p&!(8Ł5x$X Ik]׵r6 ȳbf@_H.cB\+@!N8MwSJ!hvXkQYka )J)]`$<3Ɵ檕B`f?|ASju HT)96n$LJ-4Dp3IB,TアçϿ^o|e !,cW ovKD!$򬤔D3F !~_9ժ(wJڦRlRbxӬVJi{@*a@ٺ dS,+vW̓@,p#Zb{>Wm7>f%tjoo8.iOr0iL$KNcӼQ2K( BZ/Mn=Ǘʣ(ʛmUY m0(!<ϛFks:q^^^0o߾Mhgˣb61)Rw`Iv\4IXw6N<%i6J):R!H)qZǘn9BDQei۶<[msESLQ}ߦY|aA L!kkyx0 j>}]ˑzA%y1罒s>fYK/㒃:ǗEr1J@ΫR A&I?4i}<4feY0`UURh%Жֺ1% }=\!^cH u_'Q DO8f JOk `w^KgPZew}G a֫HI,.Vqy;BRu噱fcOBHZo@!)vy8Euj59G$f(m#am޹y!^,x,Ey0B(R!(KZz}(9ICVe9=#/"+@ P˵ !2Mb5`SGQ:OYUrΫBZCbkFh$EZ<8NiqY'_+Vfqϳz93Ni: Ĕq,,1 “ ^+Y7.8}aDIĻP;ģ>}۷vyԷ4aE%"FH(櫶m4*SʢiR=eY].Jn֥H ! byAu]Gk,|OtW1Oy0%q}.]>"O1]?(!\;;¹خV]6W_pEwu חw_o7}_SUUF۷om^ΧSc@ [UUJrps{vMYVF08fn┄;k9cQ-%hn.R(ͧeSm@ROeYiAHd&/ EQS_[-\ĒzƼnhtlRgu͝%;o{ 8rB!w"럑rʑ?F AtWUW-ogqk`?'oex>H !9`Z. 4 UU4|/CD1aBf!f%} ~a(Bx<"DiNL0@x~i, @L#4٥Y6MpPJ=K!sUYKiv8~*m4z~=%n}r4ϋ4,2 a,IsB((0dMt\Gey|1cfmCp׎"lKRA@U!q(-DR Bmk@܋fa7'ڶsIOӴqΗJ̥jzz*˪e+_g΢8\n-TIiBiL0#m*7H)GϯRz= v{4觹UjVZ`!t8 uQʝs}߷m0;iv]}qn8Wa-:cF>2r๟a37Z{gӧbv^%$ORNBLZk=Y$0.̂Xc0v=c`1k}^Va6ιz}^FØ"h@bD?@)Fŏ ĸ@i|iy~}vXo1e _f ^(ӟ R[m@(]xmsJmgBzGmyEq~@UU~4u]tJ)Ry. Bs_JiH1< '1Yu]SJa,f)2؏>~0 8S tJE rZiB>MSc.~V)G(!a|q\8XiJ9,sr !B^Yk4Y)iQ ۶q`LFBDa$Kϟ !o޾YwwwRJ 1C?q !8RNӴκj;c h"1QUs[M\ %XiUU4L~f3M8MLJqI!@CAUWqw]U +!pY8J!ѥۭ$4MEQkR䬵 oR=2ϳyء-fpAAh*_8c8}_Wuy?(q޽[<J9b1?l@IA),w c!Du鴐Jʟ?|mwwCm|Y)ia@L 0,F1B8N}MHZ%sc BK@V# j2y0gyyޒ 1xgs}xmT2Q !eRJ,Jϗ֚0ӤYv]0Z4I9 ڶyAi6Bq €qnI+_/Oq-h˫yE1Z#J̢Ki8C_nnZ(BzM(9 y1AZmsyn0 )Bji~;K(~6:^i|TV(񇡱,g8N(:#_e.4UYQ'Ť IDATVuER 1Uz$󢲬꺴V3FaBȧEg8犢, 69VB$F$I4ŘQJ۶neA ЌyTsF^q/TsUW\кn,]RJBRj _͚{OP2f,|[$YqЪXM~Y_F1rz8ɵInJ)a9 Ό@LWeݎRJʲl{<\yCi.oREŹXoUUyn+۶ aQi&V (]&}9\NIR9봖lK)%B< <^/u۶oc\FZm<ƾY B%Zr@?0Ƽ,h0 8--`qfSozRVA(bA@";tP zιklvRy(IqߧYqP$u+$KES<꧟8Za8jÃ[cؗj  ANW@rΌLyl0',pVNA?~2!!tU Q?8;ֺY�~n:<yn/VypD ǐ^ocsm °,k)ܻo~Տz_j;J (V1!`^1fz؏BA{/5i\_|9aΏP1W#y~|JkJgu^>S0b 02vh릡|Ɣ=~QBq.E$ȳ#x\@/a 0ZY}Ro^s;RF˲}X C[YcyCg9\)χ]gƘENoi ~Acj:TJ?}@M3TH|>~a{ثǣ%v]o p<vϟ7MM~z~QQ5M5}_1Bۿ_KeIm[ϟ,u|a*4igk-BpۅaX 8]/8?6(V9'f! X)5nQTo9H^q<9oyx_7RJX6jg`r9A7on02_e>|obA<,PJ]vr4C9 VJkc6ReRJsVJ!J~Ì `ZYYq5~ SvG((c4OJY&PA lvcӏH+GmF4F?eiz:!`/2q<_DQ [jE6{ʳz%yz2 AUU1rC}ww_>C%жM]RJƩ}?%jyAUMcr.R*,Mor4vjeZS۪l*71ד S!g8Map}'˜_./)CJIc0b Lt{^4! P=&;eY.JƹзCY޲,{xxZMY mfٍʲ>Fb<,/T!B0`BÇUiz}}WfpT\E0pΗXŹ>N~H)8"" ]1? =n!}?r1ƞ Rli~ u~ði|~ƘRFⲬ4MTH綾Q bDBC<}؜"W) B$ iZ;),KXYVq\g!&/&8uKAfy1c]U|lk1.ϟ8Aj3t'JH^u Dy^u@90<bWEַlە8i焆8B7-grYy4*(h&׫~RJ|y9b4)/YQA1r)EfR E J-y??7[m0O]v{!d]EjĹ'h:0 ,o~4p\EcxZ `s-ܽPL3`Zd!Bǽba<_u{~]׎C~$YNX^_  8fA ?)SQ6M16 1Q%i,,' 873b,JMr=1nւ89&9E41(N-p}786z:tZ=BFs/(Ĝ$1m,FA9͓nt B(uU?~a XViVřz}8 8H)Sw}_%( RJie1c`ݔ &zsϰ3Ea @H)0Z0ybf-矏w 18 S<X!a$5Ʀi4 N PYY*es(xDBt>$DIW@|?}lyU*8Z#it}׷j3ҏRH=g4j)[luެ[JJӸiq}EI耻\Eꇾvyacv@j=iNg;OP#}N1Pks$I$ }il"7ӜZk$y}~NkUvm}yV^_4_ou^]_^:=J7yw|E"(B=@~A"!=r"3oBLH[78J,ta8AhÐq ewaLb4Fi# pYѬ稔& áP .V,_eɦo4N6C7Bm~_iV[)8 ^ 1e8Yq^  < )9Щy0~9 0̯fhK51 t +I˖w:qṅK]I3/Yg4 rv@@fQٷBw~A0 Y$~l OE?q0hݴ7u@T,3yAzBLIcd"Dg^xz>?=>aDy; y39Y rRQop=FnUYMg0g9*#bƛw0J>04 ya"ʗyUUfUi1 v=;q1g5ǧGZMm~m.RӮ1CSUU%hЩ~jBfju$9ggBOs %iecq.R B.g1V c>}kǍu2 TNZГzb5orܽ%^`,e[;Ѩ46q*jvHKXSUUU7$.oXbKh6ajmA7*{|F3L)DLj-QF[ 0CS:|ʨkyCq?2R? z$iB8Ts8;f4#* 469/RL?5i-VEJ\zI1F[kĬeO_~Xw{z3Βm5zrXy/P]U]t[l3F,Bfd!fL a[1$jhMUWשSްߝVObNlO^u^al7~}͞yh<B^N~?B xzzXݮ2Mj=Moo "D u5` 8߾yaKojYUs!4ssk#&xZMEw}X,}3&97iv=^K`e֚*"8 Bm;EVEYm 1Zg0Z YQ߾"/"/m#=)QuzBb U]?fY,lhvh+brs{SU'2Ç ~?wۿ}i tDx0”,_zUU5$Ib*r:"OQFq X7eהjh9Z(D:R|<!4u6M;O~g뛫}׵ju}œ?'?Aui:C7ME !̹&UJ.Z-r4M{uuf}}//+gmdYWF:)=B$uЗ1^P5nw{>_2s @)5@el9rƁDqbĕ꫶NK)Ik 8 M]CieڬQI}I0<+5Ci]m]B4M6ȳ /2|X-Wuhm a%:ϛ,~Hi]q4v6mQe؟NGcjqy~ J`5RV a!L|=:|߻drҳF γ󹮊0 :9BXJeMߏc,bX*m! S=i;&&A|_"6mN)Mc !"ݰ\~@Vrs;>?Je^9ipHKK҅rH.%q;g0 d&5Jj1唤+k2(N!BeqwBֺ꺑(2˲nG @]]mqcpiBxo%cke UUWW")B`V+NEWgEɗ˅c,}l{}uβ00Y/mSe\.4Qj^_!̴0J~Ra4mB8mke'$BZ7t!xv;c5,he5@Cct!!ң2a-t6 ޷mV @FsAMpNJ!PQBQT0tAf{Wa*jq.0&3Mz~nڳqzq|GBvKg~eZj=:?UřV?ŵr];i28sZ]wW~+㌵Qo$c_FoJa1$V8Nڮ\.3*w]v1Vb1hyK)0\(#ZOYvNt8k>X5aAC?hǓj1r9y,v]9GiLj2gc1T!!xa5ƨȢ$9ڢ)'\]]ׯ_/ˢ(lL6m2d7];jۼכv'IaX{uk:4MΗSTACKxzy999=a (~/מ۶Pz bZzIŖso&D}Gm[E""g1`iV$Qu~I/sx(pqiBEG4MC7`EqBUӵ~?g08ӧOCפI(B(sqmA{).u»nKn8ۦ}zzvJ_ !tss3kW.~&S]YV0kz¤m[|>E1#Ǧ-Gl֚a軶b9Ƙw7][ ?~r`Hy菂E @Mw Axw* ē`J D3`9`i`Ӟ=~(P)-C`D3Bc80Yu΁ UUJ)q6^6m%Qr~THDZ vw<]QEYH>ξ/'[o2tBXJ,OFksuu5?Vj)ZV"N@UdQ?a+BXDJܴrh1 VQUWez"5qR G5QB~0BxǮ8zZUn4]TU4USw]KAK+&y:h,㪮0\"Ptyab[gYVbL/&բ.Va\YiUm]xYaD$ <[bx9[#/#O CJ %nT}-$};[ete9i8QF4 ^^(}Hd$~?ij]c>|I\QN\&;N\vL*]9+&8 B Z7 a 3Bp~9?~^bmqXqZUyjVJ p8k=MuQ]pF{o6p.RRz˩kW7ojb4PZ|ϯ2 AM˿_}y4M0|b]w: _ɂ"cś5|D r IDƑRN19!F%P4B(H2 `=?f'h1!O+0^qN)6z4J2.'FJOG4Z+Ƅ61Ri9zeYu]FVZE1su '8˲0aN)e#2;(ibTA<ړV"I=yxޟ'5Mb>P| ߗޛ֟u zf%NW]NjC/j] cj(/r4MgLieΘp o08OZŅq90rfSP^\0Q]եN!2L!F1¹7kVq_3>NS=!d{Cp'ҟ·w}B<ҫ#|ssG(9ZfgmrA?_{/8:_.m˪}l%IB1My9B noIIR7ev:}wsr4MQ6u=CԳq!qz彻>W_8 zg,ˮ0k{@'|Z^40I$6cK97WU5 zy9& ڶ:4SFq!F'd-1#`dĹUwo?IHu (?nۢb)FBKӥRϛVҋz:?xێ` ¨n(?SE2M@GaZus$Mr/^J>K,(E՝t"~m8JiUU8D.V*>mKQnT`XS9sOO1>3ܿy0>߼e]x\3m!B?ϵv,_oal"/$I/7 c_|u)+X=rz6I+IOp1p081z|x~|^,}j(2-J$Ym6b |_~M)=Zv1͛/c|B4?%aq0J" -DXT.qG"k Km /v 0?3L۾B49;Ĝ  D`bA0.BRh?9E4iFRS4cs6x6(MU}?Iu02NR#V]4qr8RJn;N#ƹB8ҾiqڮyVuYkgmyu:82~`>ιn[M. tZ N3FpJaB0~zztt]ċ,:PUUC1"*eF4.⇑q-8UߋeL~: &BDQ6_z!\<Ϫ`!C(m)bR=b$^ݿ)`>4ڌƁBdRʺ~X+X!e][{`!Vq] oooE|7՗x>~~;LaQʬuuS- R B41LEqax}g 9|> OY%-/xKu;%Xx4Xv}$R0F9KIt ,ϙ`L ;1YE`I+ i =s^aO<_B жMI)ˊJQ0A1Q2"sΤWEk0hmsŏCR0tmS-+,@(<>>RB30L2;gUU!:LXr@VU&&(LEQ0& Sqғ2Q[K97fUѶuðY5p? k fi2:zE)ڶCXXӔi5٪CSIo3ĈIathTur'E'ev\]<!DZ;,H_J,c&8Akiҳjl٬]_y^0>Y$v=4Zg$NaGA8N(9JY^[BmWeU^.qj!DZ-B ?~_ZOHI(k.IR!r>'Q M&b^^^c~ha}ͳKU5W7 ! LƸpww'S;B߿y뺺8/y`&=/Ba軾%}V6e[՜Xs{{?_y=wUf~P.a۶q\y/Aec0eZ6\BOgv>g/R A_ ɒ$Uʦ豭 yAe"=9,ڑ zٶMy:_;//ʢ@?N7o` 4ۻi.M4sU8coDs5Z5 wf B\.ggA>Q%Dmw?Uo>*sn3)='ö.giqU!xͺ*$ ?0"].?~\]׷_#²\Uu9g?\_Rv$IƄa`s'?}dׯ_m9.ʶkK.mUc 8Z{onu]%Q<NBb<>|Uj. 0NvBklZ~N)߼x|QxAAg덢p8-WBٟjcb14ʺ4Z3bAAE0B~p!FOJ0"zA @#k&q!fM 0!0Ɯs8tL Cs,\lŕUUe,@S$YOL"l8y~~[uݪɆAx<9yRm^ѹIoJ}?͔KheYľ2,ˌ1"ot{{Ǹ]W_\Χt$n)Ѳk,Dfeqn* fdU3RB0h0)VM8_CDpi g,*+p^g2^ ʬn\_Nj^^̕zu]iz<}~}Dx"8B!XqR(d?~ " V[BqU!޼Z Iri֣pp>Im׵Ӿv^V~4 Z.4A0L .E/Ш2+|__C]_FU>W|sx|!WwjrRyV !0RIej;D@Bg4hå̩jJpQ#!SBˆR~YvG<)~z 5ت$ʺBt0fZ='o~5Γ̹8 rة2/Սi(0uqHdVۻp$_r!ƾW[,V)%< Y-f{̅ DTs>yvR]]yEV<~q cʋr.''`MgԗAZ7I*0i3ׯ0?'Z5R)qDk!}MQ5cE[b}x.?ӿc b^]_>=o8\$QSMQ'ab/c p~*Q^BLgRJO &?B$ $%g_z<ϛH @1 ~޴ `mY}YH S >b`gX k=%@etC%az~𼪪m۩ӪP+5*CONG5b 8a8'Ij=!YgiR2*,cCıRY1Ij(rƻ}WZknϗs"mUQkjuq̄,K`S7]lw;OUY]__k!#`AB6e+5ALV屮f\ OSWGf_ t~5 ލj:/mz}),?k{|~j&?î JYAӴ\ti @eKfsxybRJzc4VJk&=7 ~9X!mFaHY? R:[RS-^zUe~u]kYW}q.nnn!D-qU]%#Tm12[au5M _re! ~hzR"M]y>MŞ8cBu]K)E/<_"߬^ORx8N9v>|!],a.8j&NE^^VJy}}GJa8MjNȹbq.6uc۴2ϋvGDbqζu(fK\W[pYqNaL OZW yշ~8!r[kl]E>]B5M)~]oMI 4nc﾿35uݽz6\0ۯAbv}Ǐiz4Mj1)!t:])^'!=O~[xϯ_-(@cmsuxz=!tA/~~LJw-˶m9ֺofZ ӓu q=>J+?CO~~z]]߿Wg?<"ŎJy/H)1Ajm~ jTAAiD) Bc,ǎ@9e!2qJ0Qj2=߷"1Aਸ਼@$imfe3zZ5Zl?iz۶kc{=A`A!@H$^C^y# ƀ#BLb_e;7׾{WծU9书JUk_vK9!n"8˜R![,Y{uyi-m8Zk-(pΩ#BBpu>,mAqn׍cS5iNJ(LwIi|Q8g +Fd0wVYJ^߿A%dBdytR]S3 1FC!_|=/ b9҇ay<2L2S8qqHyia\o(еr|zGa0 9P(j A&0 ͥ؏RA@i{]$A R]_6mGG=q$ubTZR1BEQ$ǦIwo^"lV3F}q)r P].<_P/Qi?<-z <a t}ٴܸ& @U]wMgq<cB n.}!s0s x:=V 9۵}ac 0 v4s)(rgUiۛ,K1J<7m( nW^M? %𦩆ɷ PFj4M*oRKh0חcaqӵ(Zciyz.۫ݕw_A$9^AuZIMMZpoo^咦)aqL6&˳mM۶yGq4rX kTTxz01p.N2T]y L)2B~>WMm j@vX\]\N'J)c,anq]qq"H9APZN6c$ Ax4i1/Sf9Wf醶b&q89@(&uwwEq88vWIjڔeszx~bt 8EM'V|z{UU= G餦~;m?TcI^bX?rT Zܻڮ/S1cwww^}2Zcy컺k4c6uSZcl9Da{_Uem2J1'1󸵦.Ёni*<m \nn UYYRUs)J}\Dǹch],i2$[!jǼZ8'}g Ð1y@:<BYi)BVQ M Àuc$ZI˾:M[*˼i~w>ܼ j"Fc&;qYINRq<2IѶyI!&)1gQĈYUeX8CTd2J¡47S8W_kObLBL]>_x)̲B 0ƍRLRapmtQ}/'y@0zSއq Ea3V#aEX_(gqZp/Ƅry<_rR?_nN+!틶4(mvxmw][Ƒf>a^)iQ,vuT%a苢X.U$qZc,Tkq 0\jnq~8g4 b99g;E<˯1Sc$ AO4;A0t]EQ&}߽# s]ץi:6R,[SG1ViyfY')jtm8BHcQU #scmjEbibq$˜ "q7e}<)͆1j! 3&11Z# A@ uM{T/Q:R{Pw: 77WӁ1bُB rqw=Rz:|_-HIӤI)Oϛ5S]a*kY8jWϲൔnn5)e!D/?'~PוY7{P! ]y/ Ar_,ֹ -JOqWU,|N)tJȹhQgˉs#Y`x컾m+A<H|ROBBqTsl$~(D$л{Rs6U0z 84yzl ѪlX >>u^#ǡKi83B0Fƹ4Nc 0Jui?%O uӜ/eJ J)F$ q0=R]֚0 0 BCZq(svJb9bSWCQ,9jFJcLU5SD4<.Goڮ;c8A&w<&qzB78y7+m,R".6n$Ҍ{J8͔Rk'1vNr^La ىQ|ԏNIii0V2"?腉!/bm(M C|%q01QUU+"Au<BXc$1k mS r:suYOģyCk}Bϧ,$ڬ7(9. Tg(XNps4F);) !z6ͫ'F8ۺ@qp87"Pi!I"H(t@[-2q4i&c  SuEl"F9g4F F]@"YJњr,c'0CFC!9/Ȕ2iq޿0 (Rso,ˌUUΒa|ϳt(`Lp8l[cLI gU<6tUJyΨF ER. vq0'g< nwr)"].ڶhB3~/ @Fw} |4M#m4}?K ?ͲDu9rn[t<{ */zͮ:D Yf i߿Wq˹d`!zv!W]VBQvOObn۶QI)$qb Px[33)A|W?$JMŜqPUUeYyX, !esX0zBjm0hkz%1bd٢뺢(m߅a{ӌ0uF~@9C~<-*tk4IfV1 &9ey>&l6֓VJk%c~jF$7s89?(xaiws@2JΧcedgiv:']oOZY ,n vyy>};^^Oa9kpx^9!vvwݻ$rlۖ3p0˪TR# S!t IJ( ]SJpmRwᄊvah۪}G%fong02դY[WMZu]8 C(N(bR^֫c'IZy>Si:.J7oWF/H)ԶmQeYH*/J)k]^U]1}/k'ߚ I鶮eŸ\aiR;瀳m΃4~@/~885( 91~ֻ տÇaRƾCwW/'UYUDg}ia<сoBBLbuV!az1f&݅aX}c,8v][Mhy9/q)„qRiksF}6п(u͛O-A}%%͛O}[u~X( FM|9j=.ֆlZ1*M3΃kŜyXM^bkLic6qj aZk}ߟB<)]/8QIth)ItkGq84MӴʪ<B j#R: yRnjqwvVUeRNyUuMlj֋tK#k۶(3jk Sr>/(LQ1ńqaOq`o&B͕R,/F[kDRB,QFsUU^ܾD ?:)4¦mqp\bsi( Xuä0˦ fÑ1y;Y]m!1B}Gr<Z(:U`qԌ4ͻnB}7?6!JO]_R?Wwnx} Xkz\Jr:cX}ۆA0RsA?f[!hYt>34A꺙&ÙG)LOZGIl7OXn=OAEQ4{(e]=>>|rؾ_E^Q^V 81DZ_|/V@!d]Ӆ-ActQm]-xx2δ!H!pͷ>=/n^} 8.^!I lRR~/ ê,vAj@8]I! BPa]צi繒p|?xtֺ͋WOg5iT QF)?"ie4iM{aӴQef"sBi\qY ).狳#4qnQ׵Ya0I-KZz{p8pƆauƈ8,D !|>6 lwu=/_>AO/8Hzuy\kOŌQ󤔳-c퀅(-^I^힞88[SgcSy^ BLyRom:-!NiRZcf>uAϗNi)'Q^.vanHҍ|AVu{scfŘ0^$9qQJ taRqVw]$0TMEq'g?cΗKtXF/sP2)Bv#1&mAaGad#c~!BYĄ_.e޿}AF]#@%贋*/QMYuw!DAe5M*ϋ(S]I9.huaOOOʘI9JQ~(6BDσQL<3$M4+~lfR*;|`U۟o1M֛T}C TcUW]?1A*+t 1YVm-dzpS,vKf\kWxqRQL(JτԈxbp5Y0}{e~9j*|g4|fg5M^ƾ!ȼˡqζM=$^\Ijc5ia)dB}Ӕ'Fiuϵ1_|QÜ(RB kc-OOτ~{4G19p>Wmic]Y]Ϙ kRURZrN >)eZov|;hno^/\~P׍R.Kcy?M !ܶr\I ! . W-#&D1pB4mUBH~$fYAFɾkQm[_]%^4tV=pz?ao|._|9O~t9a0!Wo$&_ƾ's0 G9DB?08Z B:Maqa 1m,/_F)iJHerqNjes !R(p;iӝ !QX'̐`1b=_*Jb$}?h- tBjtxӣ34gGiyi0R`B$cbDZ%t0r)wkBY; B!g&U 1n#QY rQ% 2ZAfmSi i z"_Ώ)!f qm}%Z;/D(+(aUY6Á,Q #eZғtXݵUWUڀBi?ӉRڬ5(ΥiڽpM~<엫u/f/<|_)5a1~4m5Mt/#5v^.gUUo7[m4i6u-4cB0As@ r{_$qQMY 3q*mAOJr9mg =jZ,_(5)bp$n5b1,RvBrg|ϓR3s6oKE0O=v&NB CMF  øj)Ji4u{RJ+9}$=ga0Hi-b SI>ꄐ\NǺF1xÈ~!)Y-իYE]]3 e??= !eYqy^wwwJiaJ/csFOB|ܯVry8BQ}W_ϲ,ܟQ EPJu]e٫WR@apk&$fuØűOPB(&Nv$)8=)Rnn^@U?QYwzuo?=xy)BYwm!QX@UU8"_7e`X}o9v 7-naꗬt"B oxٯ>>ߣ/c~|K_Ov'_/uG8J{>/\e˿_^z@)$TGdڦUX_o~5%/\?~xD:9$ y\ş`?5|~'k׿~㫝V?/~]4{{"=VBU(R&0 kW0bJt4X'R\Ƕ+ &u׶X5cȣ><<,x |ŢFc!JV B'Dw9?c]VsP;e}`݌qZ3N)%r~~>Fq=?lwC_k-7$IGg gl2(&˗BL8a, RzD?|Mu]c}ϟEdn0ƞ,DQtu} wju>/˧=pv\(%q3JF1H+]].m\\cf@߷A$ dyz'q Ca蚦i$].^E<%ir}}#[qx棯K&@l4 byVA2V: R5v93Q!B/2:(c@12)1ØaLc1> "u`!91iss?q{/ƑR95ZaM@œsYΙq,V3ZjL&]qMdY"qG{9 5"1<yNm,ˤhBDQt\(RJ)I9% 8iUETB/U9K J=߿\.Y5u(7N9wo f0acZU!$q{=OCa0Lx>CD= ðX,ʲ@x!\qMӄaH)e}K^Q(aJIk vijm Ţm9=Pu]ׯ,P$/8"Ai~3Bi{}M)tV3"3F#$wRӴ䨍+mΧ#$8 iBhX5Mjh^{XĹG0^-WZi@Fƚ0(r,- JO8Xk!QP, ,ֶ-}ڽvwιVl8'Ihl! !(B@JBdd.WJu;gz=ڰ޶-9Ja !S/B/,[m$)ic1CF1ueB*c$YӔM[9 _"k)J0_2 өhQ }GQ|UUj=DCUYAD8Řٌڴ6f>[kڶjĿOX6O6?/Z.,RM:h)bz@FYq,8"(-W/a_W?wFoo~UȆ\=7~#} _[?}m){y,>_M?qy~=Zu7x>__eo=޳ߪ"__c@~ù,˶7g7{EA7-v?Yտɡ}7sWG_wߚZ'O?8ۣeκoNf^ػߜQ3g2{\(9cALgJtBжfPo|<~)Z0:a8b\׌ VSaFcE: Cϙ>K0^|(DN(oymYZ=?8˛,MógʲlM+ ð0 tج,F1ﴱJP87{Q#D8f4Fq5je,D2fQx@ϖpg |p@,Goi82:|031!SXcuBS%cA1VZ;0Bӥ4;iv$'~uj1j{QtןNMS m7P(2x # 2zM^fy270ƻ3 '̤(qٌjZ;a89AƘ^f%hu<)rH)ri'$Ĕ16Qx<燫Y^NLxcl0 0B]?y0tQk=6i]siDZ1f~hO2Kg>I0D~r J|aLA2&-c\RX,ڮuTr\77> ê,EwF),822!85ɷާ,|14:un]W6'灏?b; MUŭyq=}z6AuD[KPPl#a9禴FNRb^˲TJ]__Omw]ӴRl>`}_׵sh!̲RiwwRl7ԧzu!dq0ZS%Yf:ۜOn_|d~β|/tP=?~l|oAOEā Oq#|6c 'aMuQܾQM(8B̧Wlw5)}G>yMno6Θ~Ԑ_ׯnV7Tn`/<{Bޜ;H{*ʚcgR;٧^r$π)!8|=)ӷ_ au鷻$>>8^\/?~ 6$nAû}g?wx"|k߻ ]o~how_x7Uuw 81[O׎f7?wouwc&5NuSV҂`9:5}PdY64Ǧi&|NQ<btNCi&û[g)8^]6u'*c kJ;織rhY%uyNGkv{1LtLK 9Onk>Z;~(v8>zt}ss8ݫ/n<֗7"/.ٲmp8PJWB8q|1!/^>J%$jVWՔpTE{*J|_e۶I0 b<0R !l/ꦑ㨄l\ǓfX^]\6US|IWSƶ=';o8N‹,{xx}D$rF[#UsHJ3FLRF0B1fGy۾-^  '6s.!X(eh:b#@ev0r@!!$X1R(2 NTJm q@VOQB lrƾFV8fAb۶6jg/ƑFb(N)(v+s7As~fuc(%`QÈ@7(Nk,&y/" Vg0 CI;c( ]<[B0C{@D#17/?bz'D m_#b8Cnǀ{0b mw,b>(=D%giky3Qg8J6AV'>J㴮kb껚2J9j҄QAFi}3 =pm۶)ݖ1ᰏӀ0r(u[>}J0Djj `76z6˛eY.!}ql0z~y:Aq!CS'7/>jlʓ5!t}<5Q&Le)g~ϧ<0e$I<,x cV?-~a?=u0Ba~Yf: p1~8[_ l%sA@`\ zV5!D::;RڱmQ*0JZ Uo0a :# 2=,β^ۛⰛS*匳.Z;B|{#oq]Ʌޙ;M{@B*mȶiC1C^1u7geRoRC^ò4q[_{,x 8xsL9ͩ<zy7گP|6 p1D0qGY2>-Xدk0ݗ/{LZ4:͡`u> Ìz`~K~U"GUZqo# ȡq0 X4]0s:v]"9 ү=bY,>A'I<~}Zt,ӝ!08=Dh6? h!4t @ ++a(a{XgQ⠮bl ICK8[V3v{c>ٶma,˲, Oe!$gy6?$KҌ!ʪo|Y|G)#'io۝! :;[Yg1!DqCc셨10NeQUrյëW8%h1_Aǩ۫kQqz33y"9 bw2 JHYՇ?W3N.Ol?z A*fl틲C;[̏TJL9aFD r8av]-DD3ym]cƮaED: a۷S%d?qht" 0"==F8RbTH)r1D0؞8уգխr|Uﺮ#'eo0aѪk,M%QJ1a#Է pn 8R֫ժƮ뜃q+=w; MBa?t]7P ø,<AhX k}RI&raPJ2^/70m:ցm3~<йU!|JyR UYfXZ (Mp77/4(0JPdiWW ^Fa&YƱQ ^) ǡl#"N>p0bh= =`98w<?Z_\^ 84tϗ͙1&M3󭵜복8igu]Y [9FTcQ}1J b ˜NáU뱨|ȳZk-xꍅaf֦ھz, nw^K8M 'I8͵ 1A4q%h\g3q' #NS@Zν<} ({ʜ'!9$YߏggF./Nw?O3i6A!a‹RC?ʌ p`:N H R !vB9c|5SĹ,0V<sJI{*xsc5`m0Q)uU7X 0<_1ICcDpAG y08fٔ9(ՔUqO)8뺦i7O|8LrX:[a׏R(XgUbBPm#! @Ę N[3﫺gRJ=LXIoF!Ahm&4]Xkrj`q<ݾsJ=/&I |?ڎ10 o_(u*e=/|t:k۶,-xhO0d t1<B)1X&$C8x?ۮw}眣M)ia$\IK{CQT8 1R1B8[[^>]K?H#BHw;~fZ}NVlx/|1ʩ<42`/K(w}t~>9@WsDkD4i-D |v]]g_x =tygTYtq@,(8f 4gj%o@OˆmbF_\qXI)4$IfL4lhAk]x2! }dyc9_VxdMú4].eUcePzLHJq<on۫G~,Vg՚ROR҆1&v#)kSRNI\_UpBLJ$I p2PJ81i'f{#-!D3*ŠjE9B0MxRµB0N(L* %8(fP%3xZ !8DyV8<ϧkUT4M ihOvZ{m;=\__u=iP4zvP]G8Ԅ0H mZa>Sa1> ߃iӱrt:IgiZq(\aC'81E %M[;IY T(RRn@)5-'$ACsÝ6B)7&YFc8Vu1'^[4qB"|ߛV^Gt:f)J UUi^U9g8ct*2 0'L~t 0sGTBxvv@I ND*ywG 9e9jz~s걫aYQa/cR75lkG0% Xͮf 6\ SvkO^s'R*ũ+%1b1K3n`6M6*)qFsHinZUi*-1Ι:j5ڣ9uYx='U۵0i2BmeqSJ,08(FƘΒ| 8mjlla?R Q JSYt]RW_#g_>\oz7o{ U~; _z)S`y]?|vk aEC?{6hSn;9γW7"sJ;T~;g7oWO!8;E0:0dd@]M^k/v׿ . $Ba0b){aur! ֫ǐ}(X1GQ $(98Rڌ5~yc~U7n"]_][oۺ9-gQ8걫+00Ɍ FeH%aH4"sgk16$ɺaXeyĈ8^*|<Ţ:5pIǡihes}}*8Fѥiן>=u=1?jfSّt(L趫&Q "x?Ga8-$1&! O!p=~er~h(0wZRm[G=mYtQiIIZ;Ta9ӿVJ >nj9Lno:8s1" (aDJ93 "cD sEb $i;CX(91쬣 ME/^jVơmR!|<`Y D4S(ν bq׶ӕw#i|1BY|@'ꆞ{|CQia Q<1x웾(ńxJ+k&E689Z 5P>܏iưm+dȽ[(aڦʓ"|:Z[@?~h,UJcgn0MUB̻6V- ./#a}>MsH6!S[qc$A <߫*^ ?A1K)(֘8C?~"֝sI_cepJ2 4!̚uXcQn.iZI!eX Ҍ8ZEasi 3B4ɥԘQ)nzX#a=/p!;tRB?_\̖kLgB){W)1:Tͳ(N3iĄ{8-֒Ҵu7lY?Q+'xe!v=BQ UyPr@q?I}yq(uN{JCx@)Sj|,(ŒbZV8mWePFxܧ);cn}$JyM^!B /H0 w~S{?:)e_5#?~0ԅ?ۣ_t6BSx< FM)|{#tK?t2 | 㶮VD& I tOz@, S!8S?]NpY~29=A.[_>oh}wBfƣN, DX J ,@ls-SpVkFkcZA-Fe~X/t,al1@cܾ8Y0v]_>w]]i9/ VY ka c^v9m8Ml "O4%FI B `;z8:ܿz͢fEGse,3-vl:;~{M, S19"gq:|sWR#R}:|Xic _^So!kgfupw?ta[to96ϟ=ï臮֛CS&mkcж}_REaD~@n6KJ#`1P4Sh{Zg j[TIɔA!줕`7MGL;o6[I-7X fA)T(BbPkZu]M[eyN J 9%u2n4~__΢Kh j)e` gOvM&{AfiZvB:*S^m=O `oۺ9\}to|w>O_zk |^rK3u&\7e?t:PAK5no7Mq,8ՋlQ+Lx*<εmo6iG1cd̤a}qngl,s6IDpG(L6 :M7AGqhxx,I +T]AEUFMZ'鼮c\<x*A8m׺l8(1MAuaj?IBњP}_}yc(/ʲD=y>zt=߽|aV3Θz Hg. B%=GMjm/<8/:SO-06gBz )"8͏c1J !p臮m<7 ! BJ)-eb)/0 cXĈ%O 2R9@)O0򍑜1j*#!` irvv6E6qy ǘr*p<ϛzSd˪fYO|wAm?FWr꺎뛺91N'P48B1f1_G(' !((JӤ-uqpΜ0vAF}OUS1un8"Q7 Ly'9!C!zTwB @;"!%t !zO(e9Műu]s(C*100 !$Nja۵97քAT!BͲE EBvh1!ņIQg9o'(7B B6s 'O%Uw/j'nʺjȸZ,w8;phOx` 8 eg A@0'#ۮ{)Z)u6}!qq~Yc؞qABrrFtMiR<96xk-qw0JYnw!N}0(H?z (Q뺮mۇ9L&t۶C`D(Ji?B4˲4<<ʨzVuUt ˪Z.^]@HBp6mb|>PB'PvB/WsXZ rxf72J}M/lp>CG$pnL+j Jq7Ry:? ,˲֙,;_^<3yy 2l֘$80-4M3xw-i&eVWU5SNK[U~s&ܬo.=11r߯K4Ƹ̒tE`f @0jjB]cL!_at<6Rg}1FͺAm(ei$1fʊ4K׫ 0AH<۲ !D$i8 \ȀNjRJ5m3$,BrC'"LP.QgRJ!GY0 MIMcf^<ޫ*wA4^!"e\f7 ֺi4M+͕yꜣrƕRZkuo>ϳ$Co/ˢhf U!䜻\.B$·vֹZjٍR*Mskr\N*뫫YK8wH0#$6I!xZb vRj_|9 #Fm2le(:˫ Riyբ=Ǡo"!'΄iߏKZo3FYݞOFMZtQ^_c]wa0eY!3&vޅ9RzMH<䢈 B]oKsq6K BfoY*>#k-B(rnn)e4EQR 4?kkU*tj.jX.kΩ?E^@pߧi}77Nc^mQMR3Wqb{oB4D Co!u؞8(3F2D3W2 11s;,B4 aXQJ)F%BAeg"ORe;gj2F3}X3赒V $*`gRCPZE#4J=!}軮i.Ֆ:J4I5M"Iє2ܵ,b/quO<ϲ`r< eӞrAZk5nX:֛V& RxLPqᜏc| SqHm`b;֚R cdUEy :k˲H̹" A ex F^_뺂Z뫢tιB \"`OZw"f{&"dY!AO~hĸX,(f;gE`1z)_?c_Wuϟj#iIbF1ΧYR?C("J#„pz{$sdZ3k!$GE r&0R 8vi J(^ޞ aH&Y?]p4.WqӬ$0M#BDNuOrTJ5㇏_$ !fi~IZtNfjv@aa{sGzG1sJۦݬ7sۀfb$B,KIkiFta iYV; B9Kc&p]j"<:?e]ٿɳX}<.͙2vݝ1:cTu<9g?|/>>$"k aH?7jx{I"!9- Vj81зW-hfrUUd Hy&F񶽜˼tdY.ǀ0n6K,+qryӝ&y1BHmN[WY!sΘ3:k^(X,. nnn,9 "ono1o/LZkUUZ{b!z֟OȭZm6R j(]3 vv}}Z2sٹeVd~NӤ>|A14?|X/ͪm"IpΆ"IQF5`v- e@@[gQYxOCHH V#x5y#@!Ƅ1N1[TYU"DHm^A!G L0E!Q#1QID&Ѯm#>Bi!DCFk%In!'֚Ry?ɡDvoBp^d RUq ,Fw,Rq#giNRJW%!mfVǢ(9O›;mgZ4d7UӜiC?b&1Il!qh pJIʸHs.n<oy*c/8BI|X(!rs0F>-W1om:M$IiˋzI)8J`1&Dg%p\V4M(bjF)tuZn\^C QjY0Cߌp<4Υr쇾0F͚3Zd!<ˌ$^_p?5Bc?/X| er;)8p)g<7~Һ*qEQ$t:P`w؁׫URj>>=y~8ZYcru#2Km\]-,/RѓF \o]/󴺹66M}/N}$e۵//YZy(ǘhmre5!IEEUYoEyOc^ᢵ!Z)w@91ŇOHھRBV WsstGF >|osVp)Y;cbRjR,]sN3FFɲDNvDZ^n b= 4E"tF>}G>e=j{.h>F9#_N4/5|кZpiOx8BR۳*Vi(,"gI4BhTDTSrs͓gO$Ov^-q:gV(98D5I JpJi\g4)M6[p]/Mq~i,+ UU:$u\o5oCoȲLpg8EĈ1J9Fp1s`o3FQe/'k9NǢ,bҔb\fEC?~9j}|yB`ǾxRe>:D*9II,6ԶE}}}:wϧówj=FgYQimQm;M1f[,IMNTt<}N7]gu5~wl. jik/iZo?z}}:sQlTd9Gkl3ɡQ HBDF;ol3LLA(X)\$Y^$B$i 0-XN4I)8go3|:AWW!y1'"1tNjLL (FitZV0PBQU!EQE9;wR#ɼģ蘋 5aiZcݽcӞ(ey !(%C?y0o컶Tוt:.,/02"f1x۶ۛhN/us6MN)I`(Ȋ|⟩);֫I"3m5#M췿')WmWЦ;NØfi÷j*K8@1&f"8JM21> i)Ozx޴Hy?Ijݜ/I !Ms^o|Dfw>& ?/^Oe]57׷0EEu=4XTc]-d 1Z eYqPJԸXm1K1‡nZzQCԜ cuQB9ujq'}^/ҿw%@Z#@Pd5 C ]NcDd0ȾE:'^ʱ(q$I1,'\7n#JxeYv;D0М0!HH,˲IM`jRiփ/_^][q"hnXY޵ #Xkitj?bono,_l!-'q)뛾Q2"C'~!(GYL˳*`fy|Ȳc,ډsZ^º˲4%!` f2}Y`kTw>&FAx~:P̋"X])x\V%](40"IGq!0b%9svμ1Bx]^3IʼgSe"IQryQP*Y^IiwD,L I\iYF)ߘc<7u.Ӕe{l8MoiIMvڨ #(^yM!]n4keX)&9!}bʏǝsp8,rQդI[k)@BVqwo׷j4ϿyEQ9!ĂW[Q^"ӣ16s)8M,EQƃ~}d>|-طFn˺Sr5MxXkgT?-6"KcNY]ߝFk֚`e9RT+"ҡo' 0"Ң^H 0 ySHqk%H1J#yq^gX뤔1FH4J!Ii3NhF э8{.(k])JN=' P1ńҦi)]_mn;(aEQ%4F\kRLa}4B(x?;aIJy9#qA iRFO!8hdSΙ֓`b&= RJ!ٲ*MӶc*r=RGyaLREo)ۛko,/așJC.*k|H滐aR/j,3ƖeZ/<ƀ(eWWהR!!Zc~z_<blqU"/Q)ƪiT8$(1qk4ͦi*iEE~:쭝tyV'B4L"^_A@j'E\PχC>XD"i 2wSJDMnrƄ!H&MU!}xh3T)2)Go4MX{>o樂=n7b]w]KBLrT(n罟&|Xm4ԫ%"[T/;T?I?^-K(:By'zƘZk(1a ()֔^OdSQkeO4i*Ʃ>y1)i)cq΍JMe;E;]ץyZPp֜YB`Fx|?;o~H[+(ɟ t }Z(r}x~|Tϻ=|(IQV t>b&c \f9pvƯtഔUYޞ_<{~CUEQQXՋ;!놮mCJ,+>~qqiZ0ͯ!F+S2Jwm2Ɠ$=~L0Rέ?'!N秗^6|w1t{zYWkLpiH`(f(jƄ1hpf'̯snf r#&! 136`ƹ$MӤ>x笵!YZifv0O-@&.P*L6D7qPDXZ;, l 1&ʲ9ZMYt( ,_]7v6rQ䥱Z.z !tf˜UmD@5ƮVkalT0# xC]-8B)rr$=O1ƺJPiM\'km\Z(KZxQkNZ$_D)$X,9ENQwi.M IDATac(RY٤&9fҢ`<< cY!x]Or4F @MnVzG'eY4eYeynh{nΫf,/1Fm9OgSP|^,yVidF)˕f&j4M${A'Ǻ:E)DH(sop&,EZ^粬yU*NӤtpabgNp\`Np=)iLk˄hS]^:k}^ "Zy1J ( ]Qק.x[׋~2z/6\+M(Uֈ,eBJ,o$ey^imZ^/Fu"+;ƐGxGJg"Re1R&s @<zX&֘\]_kke˱ˋ^_.ZJ?UM9`0P&"4!g8*N,O\Nwwz}fm۬(bBd oOB0J봒 iZB$.@)丽>Mq~@xsp. $Y?|!^,vO޴ӤTv/Y*0b{>_s3q\ qRIy۴\PSY77_e1B zbb/~# 1IRy&$EahOycL(eY^Xo;^.쓔 c߽ F˵1J)>Ϸww0N'`Q>:5JJH4bo~QȲhSU$HR\,Jk90!P */>X+G >`,/j1/^VRy;j%D"?Ǐ?^-6NӔ)w=LcߵSPU.M3U5p:y9M x?@(+9;늼 O;RMFۇ$~R+q77{>D6>2Jf mN}HzN AO^mkKߝ5yQb,@^ڶ^Ԅ[J?oW}Ub{%@r.8 8"%CBG!Pk_R64q9vL$!@B%D@<brŒ湝<!`"DWjPhWN>")!bTsX#"D$@HbD!x#BBDeY1Jq4] &85(M,+~{Θ&/ Ƙ~^̀,\.cn,+O}?4VIg<[Z,-@+ŀ]Ĉi& NYq)Ord:(6@|~"L;]/bkmއb{B(Q"W(BY'BxxxxyyY.EQ^y!$7}Bʲ6ňq"4ms8YHŤ1&6E/n>2Rk"Jj!MR9vr(on֛Iߍ1 %eyPM^,O$% m7m&YG0'I:Mz1+Hfz)GL,˪(dc4_]jʲe}yyy 'nn>8 ΧK^ii!C<>O`QheIFl ,VèZǾ^zg#H+˙p0BS!qY1m󡮗y:5ʔl]zt~/kERQ)I0⌦A B{btS୳"2Kc@zi霋1ΣM9J8$KsB1S:h54"$8c`""H( |x@# 1"$E!@@o,A&_B@4cM`4m[V&ISl/\N2 V ]"/! "X,!Ϸ)XDIlKz}v{Kب\=āeCG`s1 LɪbU{>W(2VF|>Bk}\7FWQ6Kdw:(zQV @ߟBZ+jy72 跩ӦͪtO jTR;alCD*ep!9kk= Bi[ӗeQPNZyA)g\mڶ_.Vy1Bjk )p<OqEaZ}{i/i\ZG 9vFK|^Ti|5s5OqnK"NҢ)IKgCr}:Vfo!A&"`C`1Fa@LqQi1$Wq;pƢ,sZϧ+Bp b\msuVqܷbgE~>_FjuQy/ý30>a,ӦU<H&r=cQu^oyy~aE^˧Ųg4բۋ&3s,+A@;*~wD\Uh˹"ryqPorM(ި9Ny[Gqt# Χf)!i4ENCqFR';!κȻ#%uD鰝\VC ƽm]^F;$@Pt4M1F,uy<8>z"L4q>q(XeYw}{Zճ2yQNKE^[H0;m ia*TWU;f,eQYUmTޡy_.'BX?~:I?pwK)1:8:On3Qh_0֚8Na2!x8l,ƙ2ZV5b9˹;J)SvO?cQJeUq!z}G%Y}@ĸ(aX<_I3k-g1!{hEvw>=ZeYUROO_(1!Ҽy"ӄG I$@\Y{ Bx:r cz>msK$BX~mI p֝M\ϳLҔ Yo/$Iyk]B$bfE؇벪.|:]n]$i:tYq@LwwwB(m &`X]=}{I2M(^qE0ZBv[0&Q3a$,e$;YE[k!4R#!" AXM$qQd4i[9\hm;j$͋EWiQ{Di䫷C?Rm37(JʪbeE0I81J}?2 &%zB\Ei1ʻ~siϧSsm・4kfis(_}'4L;|^D,pMA[8rfxqum(ө8ΔԬ1B\zYeYD:Xn8if<5mH$yR9Rͫo DkkGПsQV2cHeEYv S48eŢR B0zy>!t\b,J H+ϲmi֓D@<Ҽ0ƌ|0@FVRKu|2LÛ7ﺶ/bV{.4)Ir&~0Fmi8giDq|,/5o\$΅q b\UGk8u]NǶib|xx夵✭7뾛({p$էO&ō`eRY$"8r!vIBi8x(7u5o_?#UOOyQ޶m Ϋ {] , %Eo"8Gs^,)")*YGcLnno$kھGe#"08I1i޽?(޼}ݝ/$2!`EE.| ^Chyu!xg_IIirF!˜R a샷_4Me< @JJ,0E8 ZYD5j!0FEل(~zCx1SbBEIZ0BC9Xg4M ,8W" 8;wg&j<9!0uqE9q b0 8Jr5x:q~%iImnoǡ߽<;gqH5nUk=l{4Lr."c4-8]<#"-ҾiYV8 &8ǘ)y1`&ƙY9J+G0P&x:U̒ldg@0ɞ bCJÐee oseBV*U Ͳn? ֊2Re?>y6cu"I)YQ⬷y` e1'EY-E EΚ0e4xjrX/WiK;õr3λ_o6YU:3ݽSVkߴ Xfi[ l4@䃛xª(.IrgC\8w98MӼ1jkcjBi{s^\0?('n[d共*Stu,<ϲ<EI)C c߶ӼC8r,Uƈ8fL3%1em˒ D)UZov)7O(P zEQD/?s`VN=YrJM @ ]׷N{]FۮVtb]o1!|Q/V3߽zEqi@I6sYկ8V;i*tj4U/U].ﻶ{@yV(MӶwY"ƙQZdo)4lUVy꽷eQ|,r w9&i*Dt<$[:+UIZXmM8/4J2XۛWyEVdqect?wC}e8n0\T ,g%Ȅ~՗/߲4 +ʮ8ƴm[/7T!-%97鬍}Ͳ,;ixLY#8"F| B5뽿ϯ4 1Z{wsӟ/yA]x4{iQ)%L')eYFRJG]ߏ΂4BeTʍ^,73!BH,˦igQ,(JΙ&6tʲm8EQta*JB1|&yt]`Zh"=aFq$jwwQJB*eWt9ry8eYh/'J) !a!Gkݵﭳ!147dՖrA@FB<ɻ.geħ^)Rj;]BDt{sɚ 2VQR/yVH)Zkd~ 0m$)8#(1Z:$z:=eݜJj4i|<.@}PZ]˖PK77ٟeQh-7w^)N3c|\UUoZPVXΙRm%U Y]5c|s{wȫ<_P_?i=G?S9뺮+2a0Ƙbű5!&)X%a<8==EQtw{s<Ŭ`4VC@jW{OQ$xܼΓ|CtulGqJD07J'EY*Y(N ^r:Njն1z7Kh蛪,q\$a,˴1Fj8(O>iLvw:k<+o߾1Yo|0meV(=C9!̹eo_ ӼW9FMQۧo9}~zY{i~l6ҫ=AyU{vm6w;^e9t5_>O"^ZN9oۛEYRJO8 :a7fx<^ Bpvi荒CB qjvs0aҼQr% \RN(1b!IYkX `UR΄k{i.~_%!l؏CY݌JTi'Rj(Jڦx8!I2Ji&]ם48q0C|,|uRJB>! unrp/Euzz4M7yxww6q`|z po%U`YCV%xeOAsby}(eQzƘqB) @f)8q.iZ5$!tQ2geb*MҮ,0OǪq^i~9l";eU7~_8E]kUUo;B,'lH-e];9 EN)(iRpiZ/7$-m"/SSZʸr(ˬTC,F tbA`LsW3ıg6a轷D_Gew&˲QV1Qʮw,)jIYVU,8N(F4M0cts9SRh\4eYVUDŽD;2y1-!/_Jߞ0F zy5c  >Muc%UsB8Se})t:fYy<; $ ~^,ϴ10|}]I;B|w1Çr.bF0BGq0447Z}E.KcZGYΧHSml^QM4FcL^_Pfs ˱EQ> Y]ߠc8x<(1FƄjYI^^^VBHi1FZArcw׳_7wJaxy^q!ZsnׯE l] ,`y4.YMt⌲$`jH)A(xk<#IʬiR)caֈ$"FL iG]Z'HXbswU}AWԯVs!0b1&Iy:0ڶu޶,UZMsV)BK9?>>nR墘iLx:Qw=to:彯r9[_.㶽\.!T Aϳ 3V]JBEgL1WZ#i3i+qiz>„8F,CQB5|:Yp`u7eY(-ngŒ 5Xb,#v@)vbL◿f @)M2J$cl*X™VJI^]wes^kӛܒYo}ikbm- Xb 9PraQ{fs}"V`W1)Zzy0hf !yzum4y_gyf;.>Y 8a摐@k e;`0!!H\oF5!^07.Z)"tǾ,0Ϛs^뫚Bhd!\iY?~A0FO (1$ۗ$Kq@"jzzzZ_]È0nrU3Qw/@sέV kA%Ωv BȲJHٴo_޼"f 'I @.꺖RMûjXWWM[h]1F}4LSURh/,Hat6:IE1UCX 6R!#k$I(UuJ4˲aۺy`U^m]_%k,Q¦4IxTx,b`xF(;7 c z09XG<Ro& !s^k&IXgɲ|4n\>Lj ` :_Ws;ͺ:ˢtu혐!#??_0ΣyuGqrW= S.bkpȳR$IT)_$ևq:L04KTME"I|TbQBΙu{7Y#L{yyyWEnfQn7wMH.W+Q.Y4MjmȲ_};kz`b ϧ_۾<˛QݴeY"8j9g>]oVy8f<&TbbDAYAҢ ݤ~}VpF,~KP1Mϟ?Af=sUg!B0~Ǐ>9%DH~Y߿}x:yR9xկ "SNH(1liRyqբd$!3cF)wjr3&Ie?fl2f=Gd(`LuE4MRK,y uqTBJH3 9*ŅiuV}рH"0cUD`'DbIdm\Y=i$Au֘iZ׳0k<1ν8^xBkxqγb %r!\v/.V$լ|F4u]eifmljH8NfxG/$[-~һ-4ճf,N۠,pEIRxQC7oX Կ#wTQ$+$m ʲDt~1*֛,W·~?;FYu?-$_85IsEp.L6v!д7o! C{:o~qC)O?pF}Wy*!u$q|: !~mۋ2E;fVm@ŲIs\/_(eY"H&Eڏ;/fD~L7K.r~Xo6Ӥ1a*@ZW|o%y(o Ƹn:]^dUv:śo2zmVnt?]^ jnn<"kZXbADVUSj$k51BQW77jw?qEBN>=My"y˿_}QL \i\!w9Ӭ%IŹm!(K=wa% 6Q$s)YnB.Ikw;CS!,ЎҘ@(vs1a"2J'5 24`;R S #d!8ka\L|\Jmisxwm=΂q?@`>eyZWM4Z{v4j(̴(BbbFQh˲t:8$ϗMV u}ڬG50Aq"f3΍64'IV.]?t@=:0,/|W"GrZ+5'vk !vg@5 jy9I0Y[kUE1,/ʾGwNOR8g{=_i^.WIšmnN4O_dYq{6Nb!\3)bq7^sU;i:B$I Zk[e ׷WW7޺b9Dm׶\5uIhǷo-W>sU²8kO_H@B8Q :G'΅z3a>E9]vZ!o4}#ܶÅ[ݽNzQd]92Dj?(0 QKkm@ ciFYU?~RsY 2a6*ϋR,Vxa\BUއ~UGXWaPjb5r6s0~[=(!o9甒yo]qZaLƧsY Krf<_py-+r\lnIxaչ H}y}FcDxx4NǏhmNs'QmkmS}bBz냌yy.q0|}}yw.t]?Oa^?|dQHp:0mW4uN2Ew_~+"(W|^}t"G2d n8IgoQ+$$p>}G)g̦,OC}jdY8a݀p.@49=ᘧ2v8mq1(MX |}z}񴣌J)ιzekbd((ͬQ%z^Sh.FQ58͝ @mx:uRcLc{oB19{ (.~sŰ֌2PBXD&q!Wqa) !B^,eH!@J9¨#sB\{cu> .f8RISʫN4Q)B|j*Ά4-ՊR2*HpQT'e<747Z+)夦i/50|<컮Nt7b^\ORljR#\Y@4!!Aж5&PFszRF#H0^j)f(z\m.>??ʢ\y^q\m9C?!̭1ҷu@XDToWmb440('5y﻾c*DvP.ֻ!/>"ˋqNJac/EGE9iqTWչj:B7o\Usj8C[VB&?kZ__74u0Z-6IR<=?2N4$bt;,sADɤy "Ta,| !fm1~i<0JҴ3AO*IJC?YALp=$Nv<6:J0ַ×/_<|߽{{x&Vqf^_ iEs`#7Myo="^J%p:퍻˿ FX@:_n-ESr}uC(ziQJyEƮk߾i9۽LUU77iλ۴(2?}WnaLVP(Т((J !Qn__>_Tǝ6 4IΧ3 zֺ\}{ZFj6i77F#| 뇢(2>Κ$4I)gwEq,D  bI4 e௵L`N0xHsp jLOwR 9=9(%l}z}y2vRjp!ئXhw( D2ס9Eh駦,g$~z~vZRF)ӬWnwi)a4ʦɴ%q7tY>NIk)e1ֆ[EiUu}EV s.8(&kr^.WIik4vZ ,\_P„F4+ڮX7S!4M ӹ(!-<X-t8Eu6m-( Bv[E1Dxg)c!Yk1&t۫iI4x`\\BYp<<7Y0-ʕ1R,|j9\!i=>>uԔe%TyӬ'vvzfa~<Ęi]&pjc/_nw> ."󹊢_~K)]7bŅlێ:*?m7P&eRcQ,iIiXϦ,\FBH1e1~m|mGgIq⼮<+WMgcc-(jsMPӼ^.a4m7kS׵-e\Eq\7~=y z|zz~z>i-EuܶաT)%%8:N2b1<skzTID\/UmwϿO8|JWc,"vS?XrdHwûQ\Nz˜LF" ؉s~i!b9FOB##I(iTǗclh,> y.as:k<[(2.+2JCufZAVzSFkkUuئk4 ޅ(Iq{=XG(&B\Jι,M)'Tr&z $I)+qDЮ&X0*Iq2Eߵc JeCG 1hw2[g&=j;E"[ɣIH&(8 л08e ah(B$Yگք`tL!"ىHC!O$@t|j gL0JCyczߴ$e&(Q H0F7&bΈ=ۻZ;hC$i޴g1|-], bv>,eL2 IDAT "_?C1L 1C)[Z^eyy:""ϑ`77jQ!dxItsw?(b euc `Vx}s]+mR@¹ha,7u՗ikF;z2r 9 c^-ȎrͻoVUm)+ʅȩ>X(gL}뽵։dyvKa&=x- BcUk,˓b c Db(IB vA].(ɳlu}ԫ蜵֝f}}8oޜNg!TI(jc8Jv胳@_7#Baź=wH+%\k+L҄h4 j!rd.Rˣ$ʊxg=H 1uK/k^i! &ll_ 0 8!G"_8笷岮*[og{")J8Np>Wb1Y7t:$7Jyxy}NQ:QFI*h_7_?mi!$NXX?uTʓ_޿{=wUa.燻w;RZpcD F(ſgXχƁ,,f\m6i'ˌX8)esi- C{BHcΘhead!!\:8fB!k#@9J޳(ʸ ;wdk!؛@( 0yV!"=OD'睌Bh{%0F !@wFTX SD@uge1k btP#$`RZ@(pjCDR&| <B0?MCfV=@[=OsAsRjҜ8y>i\t݈fm۵u>x 6e9s9᥼t8% 5kPa@BLhs$%g!1ƔOqL95mݶ48bYo(&E(>)0ƻݎ1v}}I)eY4+]?w[!wQqs{4zcLJٴc !CĜEJۻ맟#\HWuFm1%y9㨶mW7oM@`B/׾4!JF5M,F59BgB0(.RbL$Y3ӨcyBH&1 A$8:7tSXJ9~!$8I6jTc۶|c1$gbE%q6Mza4{t~~~̋jjm4Iʅu]?W8'RHYY Đh׷&ij2zyyƘdy% &Q ݤzni(1&]ziUvc?B6Me) &ٗ~oC]p€P=X__{g꺉d400PJgZX.ʋ:s'//8QA ΅(g߾}GAJMqS!^}(9a O;&@ Bmw}{92xeyQjTc: U4( cm;JȤ@Li^9e]}0Bγ===0Gcm^JE$4ɒ4xoOj Ƹ,a,?wM߯7WY{ǃR=Y5 ~Ub}nA (ʄ㡮z]_ߴ]ws}(3r8l|LJeiݾDql=h~XR4F-lzDΧ7o} D!r@^m1k}o4- |: !c{"AvR]UWP&)8Zci3&x4Z>>RYC|>oq*jqq>J{=!tZ7X~ \4yʲ٘4N:1g r21|cRfcYWS[)c߽;e+eG!yҔdℂuLr,cbR-5D#:Lv,>Zgono?}J!n7Ͽ7Q٢?eK9)ΛY cI,CŪ 1R4MgOOnɪ<]{βV鴿^$ZSLV)ApXjc߬7LZy]s u^3!g*m,BLB >q!?0)11z:X168*$'5,@zQH~lƘ@SVew}Y7<+)$z|~| #Z#]g=kr4<@L\0 pxE=@jv\HMxT^4mo6o2ڲf55Bfv.`C K05$hgDΣBs׾z*Fγ~V0a)sL<0,N vu11L}Gtjw~믇 ٵc, O? Lf1T|M}10aYb2ctgBd2 :ˢ0&2RSJd{:ܹ`??^]{#_}"fm4e9g}:O۫7Eh(YV9bZng;3I !K6s%_T5UL%@ B!DpX.W 3c-% A<vCRbJ)5ik"4rH1}0&d" D86E*(MH0Ƅ$Hʢx|z2Qvxz:e;gI)wl[&İY]Qqc )\fJ;X/BB iw%~wb/P{rSJ0!r1E="QVŀ3:BsZXV (b$Xy:O9 ,D(~Frq:Uj,+o^ ij2Ƙ(h+YQ4^4.$xe%$aLSƘiŦjXa✧y#6cXy^ !EE Uٵ3RK)fYvs{{n Y1q,|\ʲ)i6· 煔r>O!,w6 \MS׍j!wP&tF[w}B}cyvłjכ` ^n0i?{n?6y S4PnZ! .&EY1.چuEtCBYo0Ƈj)Y;#¤Y,yz|<=/˪ÇP7_@!273b%%BZOZ.k텙.Y,4,Zc!1!egY(yyROz&[x\p&auie8?=WA1Θǩ(ˏ>VeŘ"ifBR8LE^P|y^9Χlg֫FsazxQ4#2B|aGf΁"~`YkĴ&6`!pAL޹!b*6Yv{f" BR.S%@`C"L(fEDìQӺr~"CG&! YV(3 !.Ę3yWk `u(RD(秧I,+J뺮몁LP2jH1en|ܶ}4)=)¸:1zcvj`j?ٻ Rq8V|V0ƦQcBؽr.4YkU@Eun`.hK!" -WW "m.a.䅬MM)a8k='b yQ3]!ܺ0Nc{naXm6E^^n߼9TÛw:Ι6CL Y":m{sS*r,`Lp,Bx:i߮b>ECbY|s.>}z:GBX[TU/qܭuo1ND YD &g׫ԏz !J})777ئѧáLx<~Czaf!ǩꢬڶ YRfz~KD힟 Q"_FϳRIAH\>|p"Tza"sX=ϻ!40uY5.$g|QJt}{]|}ys4ϯ,˚ݺ4EJOmD9gb]-럿#&|9_@3=si0@aR:ϊRz6\N/yZuEQQdVXc8 ΙF!R0!P @tC0" 'w3d^H)Ŕ"r4\Rǣ4@VS&>EV4lc"cL0)%,I 2ڦ "ShBˢ9GWqTbkDy c4`DŽhKM `8z3n_-!$oFr{4ጐ!RHs.ˊYhтY5VҌ Y6΅N49p޶b VcӬ9- 2F)s@.Нrw=†9;ǣrtv7o_鮯RJ PtvzssRfdu]Y:}/t^rp!I( p}{ۇ2%2Ār )~\mvzsR< !)Bc,g|$SKR863km 8%GF%<D8á2xQN-4kR!>y;O %%汮 18R@eU`-l!䲔Rhm5(jgUfbH>8*~8yQ;;WB]-}LoE+Bjg0K_Oӄ1~||\0ly(e B?tWw8m:/FFD@ ގhPLL6Bp6Wι"ظ,RVp9CH]UfYr~:QJUS >oyjղYWWqZ 8բ톩?B`5n8όKk\;1&YPBPEլs)vV=|,81-˺DfY9c7fCCB$ 0mMIY(5`H&!$!^,1<ϗ%TY_5p!yfAHӄ㬂-/ۿwn?Wݿutk5_ζg[K?\olx_G_WWݽY?a2(p}sܩZwusGd!< U?4M`ywbv5zH)M0fL! !`rN1LJP2,$N# x*VΈB"JR @;R ZaDŽaL DAtEgغ1& ;yQJ糵t<3cx.l ҥ~@(!y!J?~I[Xc`.c ~Vc0c!L3؍:}! ;g@aH9']5g9lj!eAn|R\J6fZQ7Zmq!M8g E1'?eYvO\ҡkOX,ooo}Ses1~YkRҘ"YQT1梩}wҳ4E) #|>֘ G^,.d flVs\Fi˖)Ag8cfޗeyAu@jzs21HT@*KTOʩ2 s9O!BBHgԖU>]tj55>9c1}}}Ak?'/F_?߁?/Wzzŗ?7&|ޥj\%s;ͪ* miVz;L)"D!8M,)ʲ !t1\ 9"W.^2: t޳ÜII3#(+t,Ȇa0t0v@UH)!B&;58eFq3ZY"~&1zo4!$&::'Cp}咥#2cE@֚?=dLVYQcBΧ=j)s3YO0{7xK(X2XT IUWB5M9/$" BkU"Ad]@1Pp,5 Cqx杂-d=sS/0cǡE`M]||(|싟]=hcuWc&2{yy}}BN&qnƇsRDw烐&܀L &eDU VϧX[s)(L0g  AC2^ח]^?tI?'Kjsso*nv<|~i}}ݟЍ0MQX.}?h%H$AℱDQ6F.AXI;NJSv^2.GHg JagsS0!G\H c A~;J8ayb@s#-$!1Vj2c @ cA4'H SDWQ"l&@G1"yT0v\WyAL;gFa򐳒#68aJXڀt\cL~8!9$wY.1F)EF(iyEYrƭ];An70DRVa.$:Ƙs7MÅ3 >yY&1FKqVT٢i)30 iQ"FqI(NW AHJi|莇:QOEP!$c]]A*9*!4e轗BpCkϧr91&8Δr&h4!Rʪ117/w> u1at֮~OIhuk=<hm`ҟZ}+"D{>k+ ,(JJ9!Ȩ@@HH /{u%` 0.es.47#HH([;LS<8콿D (.F7$ <J+1c,ƈ r&/ P)$d_$#F挿RjO[<::h^  D]̅)%oǖJy/ޔ/MVuU I A; -hLfb6-%wb."n_;n;KƸ SV/6B0Fsnd `C bY(Uw- QUGL_1gr8}dB~B`H߯KANQr)XRJYB261rXR PLH3L.'HbH޿lkZ+ru0PJք}OϧnLBH[SJ{_Jͷu6?0ϣಮc0ϟ vqUմ+<}Y/ j*]mJw9]3EUzrʄiKr)J8NK8hӶ)FJiDEW|~>`&Gu 3`CAJEL\*DMb@+PL(&2rNB9"TWMU(#gܒ"\(1[P Tf,s.PRp<>l$+Ks^UTj\1޴|KݰePut0YՀ)`\Rry !B\.!۬{Uc!L93RqdL|9pN9ǔ4q v@7x]L9yVR˗/?-4͋RjIBcc|x=ϜKJ9&͇ IDAT|x$yM3>Lb/x ܼB[.حd N+fs˪m &qt]l6JH߯: vlҊQ24MS{c9mz]u]'0 !+lylw"c|f!dSPrk^0|HL|Ycz r>%o޿TVzZ9kS%+4Fj#HRmJ%ㄲ8bC`L.3Ɛ#RvB77 %CR)R#2Nz!xSm }9g9msƗKQJSJιSL|ĔTm4q!ug !p΄&9ms.'f@1WUUHUU%IWU)eٹ.5Bp! ]U9[cN㕔kZ2ŜS%}2s4EUl*^߾z_W 3JA+'tuf,On7Z4Lӕ{o92X7+ᡮ: (7r%r8Uc &nS0qmEWJ+pQ/z8 ʳ4e>a,}^77&4ĄSΘ!t{No빮nBRB!TNˆ }Jt)hi#<'84:wIOZ3`DQ(we8?? E~ }.Ē3.R /wB@e<87K-?֔rFJ^MĂ 悗R&cJ!u%hy3c33~*Dofm.P@sd˪BVR**JZdKq  H5iPLC@!8#p-0ʘ~\nay"ֹ&eCdVQ4 VMFaN Q P*TND0JeLr-%4 CRTJ*PRj cNRZFMW6הh7ZQ(P%f//RKLB$Xk1ժE8;ԇ҇i2K)P=~ƷmLc:k۽wBzc!Lk5V~.o޼aG5:mB}_]IRK!0z- f:o1z}K &MC 9Yk(#Ju^Ǘ##uy&(*$笔Pc2χ/%\4Bb6TUpĄ\ỻקe6wauJ)._^xȹhw۝͛wP+. WXVFjE83TJ.JЪꦶ& Q1*朗RP0J Kə@8PJRnK)F&禘&)brAꦧ:h*Ņd|>B1RaD`B(cyL1R(k@%"1A Ƙc3kxrss 1sN9Fݪ5 taq!"Y SJ!Nu[$oc)!z6f Fs9%{sTJcJ)B#@PʦiȜ3Z6q vuӴ+J|Y[1 g|ZkjݞN'GpnoKbQD?ÉD\.0@uY\(nۛg" 9Nڥq8J1o?|(1rJivvv.^P2f !ȇH3bb;Sєr۶ac)X]הf8>no_6Zi%8жݫKݻkzv.hu?Buه`f7Z/ O?zu2g Fۛmvn <%R)MM̌3: ~.իW$o-)rMW)% 2cb%z7O('Ru]7<"J)*[wZCΣ9Q( 1'(%sQJ v7O͐DZ:BKIY H #KMuO !!B QB(.eTU!$4@! )e"!DJ!g9 %H!’e`)&JM 9` !u,?K Ƙs.J蒰Bs!9p\ ,6KzUJj%yN7/_,mzݭ^)u{{vfӟQ%r}aT7M۶a\U 0MRngUFTr)g|>UUUUcҵǔ<#"秧qgiֺtmu>(U9JAՍM]md|90v/\i0ovZU4 8bF-V /_tl76e@ %uj{En@L%ccFl 17`!%B(Z33G;31%q*9 Fqɜ0C !%et?R}c(9T 3;?LRR I1 a B2Tu] LAYEH)0&1:m vB9S5aҕJ)TyBvPt(HC.8814 !dq {90B\4[¨0,8w}Co_yp8gS.L*<|m_SݪȒsEHZjZ?nn߬v1|O=#sJ`4o{R<+S)eclʁ_;7™H)kɺk)8hTr<Ppsp3)@2Vө뛻7da嚁J#1WB{7&sXuu yq&O8ݪ!CtPHuߴ8wvl1V۪ d޾}O)7s"F ^xOMN(bw:Y@X]ikm(  %P0ek "DQh̵rd307ON, .SVMB&(%(HJsH(@0)"(9xO캍-(J!F0%*1cTR,$ה*%zMu&q.v 3Ey I]LV[ěB~N R" g.'Լo %]O^ 2)TEԪa9MR %CB9rB0]19}Jil1aqyL)Sy=AsJy1\k(NNAscC@Ro^^{;G16u1뺛e \q&.K۶V1> f/YmED׷;BiGc])!S>.jZ"ޭuj24ZR*z|GkW6ł9U/fvƘv^ۮ\RƷ}]l_s~z>Ĕ=plS0_})0Mt5JJ?}¹hVjs.Ri 1V /_!t< ffDS[ƕw޸iW0cBBhXL5yO gzjƹжk!E)EHvgUovմ} a}f'BHI1fB cFJ)EB٪#`RvV>XR5@l"@)V ;ik^7MJ9' (Fu. 'EQFcTIiNl,9c2łUos!sAk1! 5"u]UͲhUR1Fg-BsFB< B{1aiY.XAI))e(:_jq &u]ky~~SJzyGB1R=1:R0W1!+kM]79guUUZ%s~80Ӄf&X۶0\t.^xᅿKP_< [D4{UI8Rz&) #[sƸ:wޗRVY;T{/nccVJa<-JEG8i)C q 4(/$ucs&CH .R"d\=1e 0F!R{%c,@J)8$fUk"* 6W)ͤ0-LjB"qe Hm"!R,!Zs&aCU*#4)y疣.^Jb3FAq>ٌ@׽Xi5!ӧxHpPJCDwU'1Z82wwo.SG4<aij=]/G'﬋\(JxlL)A$T<\F! 󜿞`c)ϧRC7c:Ϯ@~|r/SLnDp>~T}Ie/pb·/ ex<||=/$W|foOeQfgc 1bMjS  q<㜇@Dzx.av{?NV Ybq ˦Ō6]0.H JJi|L'%9=;J&]B }^g=}3V[c!ANB`LNVeO\rJLqP2Jg0Vkn(f(ATLJrRR0]WN֝V& a$C{B4%Ȁu8Fg5SL5^:G=)RqF<]J",f$u'+Ep.`@$4eGf:1!6RU]7fr6t>\0V#PnB)"!F%A}tJ){_׍a&ݕL֫.Ѯ묱f2λ~6i}/$gjYk˄O>wa1l=RVr޲{Jdw_MFWd›7Bscl9 1.J)jV:;NWz=8nvTVj u'$BvifM~h%Ew+뭔 L\ hnu*U]) ϗkURO|uvUz^ݻo7뽵3bL T'|saLMK(@)CH0zo)ٿ~cՉf%X[k%{b"\bۦk-EH!u*ĆDV1Mgxd6ye`JB5׫D]RDq~`!x"gJEMضd RsJKA c9w-%s@!if9Oz5KI)LTU :cFeuC@3FH&撚1v. kI8< s> ??cBjۖ+-LQv֥ufŵc#(@n9~s4͒=$Vժ{z_| !||ۯ۶:"\3 w7(xLA^ZիW11nBJ ^r!1LJOzT ^Ga~s]SM7u'r^cChbBWmkybY61tʥL\L ^yG(c\txΧ/^xi2>&IL+xBrF JD iIus[7䪪a:z۶z Ȫ*cUL':q\¢c I%d<\F.4N9)* xJ'飯q|=ιR|>/]5jb4%@wwOOxgs~<=$OcRbyzӯ:7!xի}?߄iɧ_>RV0\xm1凜ō;^.'c&\ Z7[BmW߿~n^OӴcW(R.*!D9u0^0mi*<>ރixBJcLR*c]Lnsl4m4`_lvscIB8ϦWnnOCu~1U4to_xj(ScualRTq,@.QBh.`)-%SJaL1WIzzE%߿Ҝ@ vorٖ9MTuD.@YBKN0L98[XTUU ׳P5"+*ڬvv#ڣjeJY$R>@Ca:%3 99篹8D2&JVI:*je1^װIJ1,81p.s_ p'9XH5RwvFLHH)Ig-"K<L $c0Q׻f#z~4 @"Iܷ7>\/֏X 9v?/ !$ ݛߵzL)h]rFVT-$G3Bb IDAT1uUL>?5}'պjor">L[@b\P!Uܘ0 ';ME4> 2ޥRu#\v))۷RU$GfT&!A27&aB9Äi''3 Bj[T|14 >f*(YD(@)RH\.@Q9EU1қ0B:\/'9z<rW,x%0 ٻsĘ „A! dj,Ժa8!'a };NMXk|֮T2Abur1^oK1FZm.fAeo|q,z]Oܬ6MP"nSW~7fj-9)̚]$8gi:^&#yc&8͗f{oWw)a&Xv>B;^u}y:ڐw0ӗӓdiU7oTEW}|3SޚTv#<\/f%aDΛfMyGe(o_n<p¥TBZkiՖ1><`v{n٧Àf䘪j߿ZoL *8¸Uu_q! .a< 3΂USV!nӏf,^7bާ8yT /]X1&PΥV-!!1p?dUL%$$9a:WB8=IpTrVSB ;UтS I6Qk@uH L"9髪aVիW/9$Bl6c" RnnvyQN7۷s:\C}tz8X7`VuJ)n_ \)vԍ5ιs'\!:?\uWΞ*jo_x 34CBq!Of\hz83v=PQʤf#:i8'])O91ځD!eMz$I,M"Y6lX2*ti.3f*+3"7ºzy\JӊA܊12/Hi:)s&}0֌1ژR1V)E!/<#1u)_.s A@^O @}~{)ڶcic &ŨJ.r6J!G#%*&fX y)Q`wN0-40D9sΗޯJeW7}ow[ŭo>|9痗RJm ctֶVV9cP ZrkSJT):~|?M2ۦ^|A)şiLK~^v.qF+claswKNLD?in^9Ĵ 4_ͦ?OJvS㛐U4FP n׿0m !B@D}}-,*1ΥP˥mͮ7%AJ5 1ڇwcF9#J>9+pmu†6 Ĝw,Z]ߛ~;cbB@1["ﺡ%yZJ]9?41@ȥ2M?G R)-9 JVc fiV)צAT2ZmϯDi7D-[MT3jx\ƨM}߮[J1*i,&-1qY%(.pC"z߶8MKXR*C]f^SG;e  b*9+mi.dQ0޴ʜjeRTS+8~[KO9:^\nIJ)D?RbB:֚[7rJ!.ӑ0fL1u~o1%會%ۯm6ӪѶ)騲ߖ\K)1ϧ{#|YD%snk-<_ncGOӿeOZ"laweY?b6cC?H>}y!mwⰿvئT^^zw}Q+hV )rRk 1L)liϜJ{wWr\ΜqM Vp>mv0/jZc̯s@6m4urΚSk珻->V۶\NJ)%!d:4mͦh-8RO׶R6]wyw "K pt뚣ot8OWy.i㥔jr/~qaR5 [λgjR .c)E+Xs>+cA]'lO)fvN+[ 9 k B^)%­7><<*cV5%)jB D9O%tKJ*xVB!Ns^^bL2X9ǘbLR.8"XT)=g TkPpwhCRLI,n0QHKT(ƨJ*ڮ'"!2zPDD8 !ՅXԊ3PJIn%www1hdKKι4MyW_ގͰWf`L}VJ-3C*[k{~~@\\e^i?0 úf8//ZyqsWդRJ)5/Wc ocLӶV!t:}yym7ݴHhÅ Ãt:݊W*|z|X#4"a0/?u]0ӴKޔT dѻJaQ!cmئuyN# l69Ւ߭y%1B9D_k_orwH),XBXn!AI%Gκv[ DyQxXZR(I}YHYr*3(%1ZRqL>HBA͉a'oNJ)BLi]VKmD[EJjZfk@%pFZ1!x$% 19SɡXr+Ǣ%9HJZiYa~^)ge s@,=8!!TIU9R)gDTJJ9gf\\B,\jeM$_j&1Dq-5֞Nm9BTkխkf/a 9h֦i9ewRcHΚÇݶiз<1z]RJkPwww'@y~yyޏ׫*Xc8Z})W7vι쵎kJiN1fvi6v=c2tYǟ~qcLƘq*cmͰYeʸf^ss"w7Xy\CKa؜ϗ2"?8"CNwݗ#Ep5/Ī.;.I9#cs&\|fLY(2iP[PC.|{0嬻pV)m@n԰a>UKB |,J0c5"9T Pp&)Jrho7"_n^DF ˙Z*uj<JHPjRM>݊$GÚS)B-V%di[ 4VMJ)Qb19$,PL(dR+}{<$K!uξ\ Vct g3)ĀPZrRӰ턔ʥ9<> uNr u^qb Z&Xzkze^.kئBoPRn^\m |/_^i><~t>2X2O =>}',dR\qvK8,naE)S+Lx<|h~~(ncLnߍ8Η# 26MC?tM珶iiJM˨i^.ƎӅ3TsNnYas+՜+*-eMrݶҚNt~inߟyo}w}Q+5CB +TZwF UƸ\Yjiuub pnǫ:+mU;\\vhM\M(BKJPr73C!VvYP[@anG@Bלs ȕ)| i6gS@T90^D(OQ8Zj59Ve[ݴ!8WrNލLJQXI4/7OouKa $Jb Vr4RK+V(U!j֔"BŚ-@JakgTs!"ȥkZvݠJnDu8} Pk͕H 1M3꧟)2έ< J]~3l1;&Vju~8)%$T*,j˅5d!~Y)S>lwic ]NĹBn6'(c|9 !#cضR/u_UrF)_ }?N׷W+c =?RIJe__PdQJfLӴ}JqGe "#eۦYwmәq]"쇭ڻR5m.wy BXray~%!q99}N9.wkQ C!pFb(DZ)aL\Ηi;)J4?;i "K>y3Պk;*%ΗRC J 0,)a  m93$oTb R6D IDAT%fpcJ ~5)9"":RL]1.r!d\*=M4^m\(bL RHm)jRpT  s1rX+,KNm%v @rDPQ e)/XJ+kvYf,p8ܺ(GL1w[Dcd|kQi,|BFȅ6ιo)?oVn\B)?pr%"nBy¼cNSt:圕J/Ƙ4ϟ! A Æ3lu}>|hr>g/˪ѹus\1Ǯk57uus> -VΘHї~wTk_/Gĺ׷>՘dZu^!Ow;;*">%B*64z~giy/2Mp看R(% 5Wu!G4M)t| kBm/2ɹ#˚>t;J΀$PrܴLh %p΅Pƚ URBcjJDĹ@B *km99T0239mЧ2$RJ.@DJ)" l_>~jntT RD,JY[#gJJe )&*TR)c8g3JtB` %ƨ蛡眽5޲7eYmu]K)P!iלi:mmsR*ݴ)1fogs۶9!IJ4mw,V({)9"vmgzu]/M9qO{uq0XBVp8cih['Iq9ގssOS4ndT#ZAƶMs omoCm)\b)B-?}i{ȸ7M˸1m;z)ua\Q&}w}Q (3șǹ;(lY\) 5(Ș CdJ [i^fe)FQ)) 1f뇜K )Fb(Qv AXJRnʄ<^Z J3.l Pk !0%T,H-a]z^iD@TW䧰L%S1&5흲l mM!^KT$g7jCeB__\\k.4J4E!x1?ͧ]S L48v Pd\J!8TQ V1͗SJti3lCRʰm/_x>7Z2/o22x6\L5Mr Bq׷0lKą1M _ww{t/)l,xico/xZ %mk2LLTukvB*9l08b&&!p<4I/Trӵ$чROsݮi_>c,ԍVFzv]vKZVRtq\ r=J@N/ 3cblg>t|{!"zF!DJdɉT)w;**U@5=r)+ BH8GKݶ1Mp:^s!.6EBYF08lR)rK@hSsՂJ%%Ι %7V##dP.0!K~8U. XMs޴1rJdR Mc_\흹ֺ+csQRJ]SKIr!e\B(,8Jm9nYr JNy; *c\0Sc-QVZ[8rΥva KDEL t9ȅ(gy&BL7-AΉ!gMcCJ˲,O><<>t}b~8>OvSJqywʚiwvm޻5`R0OsNt(ns:}XB2ǸRkR!\NMN6үr}=~dJ唇~ӵMa/)~u|VRjR9 TwO}?r5M)<_Ǐ wNk6($BJ8ҘjVJ`Jn9S *1Zn, g2EM㸸j-9Qj URr19DyYfpN)RI)T+U޹+sRIe*9ev NR. #B!Q)DI1%K ۮ KqN ). Mt9j%jE<\i0\r:ƘԔs LJe m:juk+%seKPVJk+Rv{>p#rW|)ŨBBDŜhkO uݒWvG)孑36#4cMI*v+[- \xoV|۶Rڮ3zw12+rZ⎧o鶛xp8 20 Fކs>JyCJqܲ)Xp gpغiX{?j,Tes3r~z|];.\R=`V[m, [JI{*)g4&8<̅cTTdL(i4rǛGuVۘ%H)RNZk)<7֮rBh^_b\kmR(quڈnWkmFRBqabIAkYs.9!csM5K!VJ18QKɅ\*hZv>GR7۵۽rb6DsΕRn w"ZoW4> s7 ҺPB1oj+r!\ڶ;< c9Z+c *T8Cb7cr8N9W0VzYcͩ=x.ۮRT[\r9u6?+~ Y׵zǿW6/_Λ/\ *fgoNi>mnAWei_>dtc1|z{Oim.y]BZu|>))my0΄LDou2ZR4_T1~B\,ӲfgmSJ!4.>>~\޹xw~BX,L2eBA%T Dc*@M%]_k ; mx8By9Z#U#g|G.DxD$1mƑ!s].)%吣8LhK>!D #Z (kMB )!SHdA-TK\rc:-rY)Ӷi:!ʦDmj[PTJk8´nF"J~N~sJ9ԑhs!" .ޭ) ;d»5:C-XfS OLq1|vq!m7{q2!6M.iPk9} 1yxӶm7MCRʇoתK<ڶ6C86v3P1K!]wom_JDk\xo*yk.7L7lmsΗό*$,R*m?Is\UU:_gV:;;ºL}}*:Wt\sU*Nئ{z~^|:^%姏,e;4\1M)PkmFJ[b1e1[)Y3CɀB*AM9U(Bd yVJ3. =pR/R]ZG(ܢ%/9*" ^JJqdPIi 7ƴmRsPJciX 3u)9K)(9xg+uc q[28V.S&\F3)ڶAQͩ f3e/W*S,@4I^-r(b9u _f,fBpq][<;Q &yZQ cP TPYIQj!IpmrR, zY] غ̂Zrn)R\Ti6JJS΅!wK)SC/]?5-nB4k5;nB .,%e^ڦ!MN !3O5@ ?ujT ĸ.n=h:mJ!y!OBF(jʙ>mחaϹ1^wڜcvR0RJ:Nr~ǿbE*=͂cl8^_uYfw]c6vw3df߿;@ĔS TD%ABI[ r301:窐R J~VeZj9”1|H+r ג+Ṱ׶7V莡䓟Q@"SL *`UJ"uZj9emClכUJs&JIBqj R)K+Epu^Z! riH)AŚs-D9'BsDq%u(d2*ՖX) U@tRWZ 9BJ jZ+ r1d1c5 WRqer!%$']c$!cr΅&qKΜa w=<|c}{{ČS_?QrPBeNQ`%GkaZ8MBs97Ms49g!:ה|Nk矧iJ)ԚeYnC\oC.чC<>=ϧ8MܼLcjZu]ܲ^szMU MD]55<uƮyI}uƘarJ0gavr]Wc[c$xs #-U;wy?CK'@\`$GLk "E~Pa d&*9g\ٮ2[[LкxB\b򷑺ebZbZ29(J, epr^k-$XX = R 4v˄)!nS f 6 L ÚSZ8GsE@DfƁ $^!} J c6(zFV)e C&6H%V`a['ָu/לRNise$#PJ[#'-{n9X۶)s6.˸0Aʔ qG#nvPPjçO_OO N]cUJie#:ua}ӧO9էİNǗ[LaKD dUr~iZ.$gq|ڷkz^r{:aLSrmt3T\9於nLOe!"}@>/ye9NRʶmཏS8B; Ƹ e@p+(TƜ瀢V9͡7F*%*DRI)!V8WKfDƶR1v;1To$ovG:z3BFSNHnxRJ)1BX+R&@.TƅȥM1t-:_W& 5yWR*{0ie!.{RLTfЍaBŔQ((6' 6;7YUr.9-Fmc.>DƅT d3s΅Ĝs9X y)!x*osx< }SE ))-$86V{@8/#ՒbRR\~7ʴʚ|ߎ#U%ky挵]r="i+Y41i?am7(e>zVs.y%q@Bjc+ 2ŀr,X u9\27u!VY-t!%5WKJ)^6r!",1MӬTHhwbEu[*vnw<^Ւ")^)˹.)aivCYT nKΈ y29 "Q0 j5g(!Bu>*TιҽRFk9O'+@uַχ JjT[yIx1OtmN޻9qi8'0)Ի0 ˩[vy,M[S?isMpZm6~Smͪmv@if/ 2c:[ %N)1)Eq{q1/K]w4t9/[eDyk:8cv'ir-ёB@0Lp6-cͩ !!n>Qf~K)s.Ybz(mZ+{2b*S6ېƒC)rAϊx82QʶsP6 сj}A(A+k\aZeuB䦭9.n<@%PLpJ#p AaxE2Jy fȞa 9(.%ni`Q`IbK.%22ڴW)qC o޷r)#yic[,9Xۺ2B%(x'9g yZ#0t08|)BdNb S9 aaHJWHZIIR !1FNaYm5@8}d i*~ߟ]o #jycl@Qw_>7ijZQJw]!4M9KKT85M,sM7Na8=DonnZm1Zx}t@pO/nVJ=?=o[+-;jm&M'ݏ]זR>!×m֫5cwosOS)FWFtØsjYgnoRJy}sikkkeJVZeNW^yoHO),RR!-ĜC.2F1J)sHO!8Hm)pAFτ!ɓg޹yQJR#PrpB >YScpRZAyeUBO/%&"d,䜽\II!8fx3 R3":!f$T a<B==qmUYkB=%>BhR08$Jqn_p%J+%{?]]&45n)YPgjm)fr 08F>^ò^%ea À:8N#"Vu^_\\^/u]WUxG)cLu8/S1xyy, cTv;Z;Os)1?^^^^WR*9M}ʁ Zc_K' IDATq)t]_Ju[7J91]4\aww/iG,84)PH {;W^y P% %QA 㜃RiBgQKAR%DJ !PrɹJ _XKR L "9),gC^q/}܇sFs>sV*PJY BR%fEij@sΘ4&1&J<9I?|K; ~X0Tjڮ 8ZRe2:+L)E*9PJ)JRJLXhɴd Q"njЂV^քi@ۺnWQ(1F0)q%MT0/CAThmCqVc-t2l6[c,_ Iѿ}Tյy}Ja6 S:ӱnjˋz}:g }ǟHFf, t<ϪCc PXMv/ݺι<=NVUUJii1}$%nOO\puӴ4nff^Y(@)PCviqJԟRoۋ~wnn+CxIJ ޻qH)P`VJB-k rR~X5/eKQzG0 ^i8JS9 D+5}*inZJ)Cк% crJ;S¶ƶ֚Q)~ _"BӴ՚RkBHp0(]\r!RzIɌ ~i)).TY6z\t8o >5QJÇeq֭xFR˥Jse·e|8WҤ@y۴hNhmյ+`۷ y]7|_S_yW~\} .IJ%IrQR(#.LL2S\ji-LUU9w@8ʨ1/}K"\خB)"ɔ7ZK)@2ֺsc)%4MD9[k)1):yƸmڳ '?" RNdZ炅)%i8BDmM)R 9Rʜ<BJ9c4e ] e(0 IJ !0Iҟ^Rv98 Ra)EiEʀb%HIJɔR)y8Me ut@Civ]Ji]Sכl[ϼoqYx?Oa&elלӔMSo MUUW9yٖeNko~O9c΄1ιR?zXI9K g0.B[]cRl޾vt~ӷ_;vA)G2/!W߼_o6w4^^?y7u.ĐRڮ.eR2[$Pr:<JO?y6+DBHɄR\x8uy>Ǻm6ͼ,%/ZW^y081kil) PV!.s.缏Z.xYJf ㎤Y(/8σ-c @)("j- !)x24RSu|,8_1#Ɂb* b dEW5a+\B@2Da!$R1d3b)J[ e9}=uH]Dv_CNI)BB3RSJ ˨0L)3.x8I%d¸3$Α0pƥReSiv[(Ŝy. `RzY\u^inxB\_]9ki:)j\__NO?<~`f^%Ĉ$y?>??1J !m1>{H99M9ǘJzzUmmsUK+%)cιnյMw<)R~]U8N~_ r!B BȮBժںxW1ɹB|*hΙISJ!kDƨB@)J9 =b*B$1fD4FD5"2{cRĐ H·@#9gsJqc80SJZBؽ䔎C%')E.eq>CƮ6ʘVz$K)eUX\^ѺrP5!$99TP(1pV!%`LH²,8R\*t>X,hBq<PJ9OH&炇ùP "BJ(H$ܵzca1B־2RRRx:PJ(Ī悫S ҇H~ h$8Θ:Csiwx(1VuRZU Xqn`-m.m40rw9kttӛPKݻyn9/].YIaTTZN ŧB^xކeM]՛@ M._|zy|ҵjnn޿y\ |ዩ.4r: %Q _2$J\ 'I 9ݗO@@2eRJمȵiUۮ^;W^yoD0nai-!)^ *9ϥTZzeB)#bsɉ9`X"BPl"ɞ$(CH2,n_V@TuBD硠eKP0!$EFHԕƸ`n S ~Τp3PRư0}х 뛯$cL*%K%Hv!O(+4yb P;ms#DP`ѵ5`I>1$ jRU+sNZHg @Zr%6u[m!H2vq3W ˈcL>=} #OV)=MSNʘ:2U{S+BFZkSX%服1qYc944礵 ~0xs_cGJ),cii11ƶm}ߟEo߾~yql/.n 7wTOiZ q$?SݭᇾSL[yJM9 ,oR/O)E%R >>>yKs)`Fݪ )0 !ax||rTh<ΧFUSKō51:[Y[Uҡg0훯Vx8{ibCyY1ݬa8N{W^ Rr]SRD+ PP1R AR c܇r&d Srtڽi/ڭv' xvnLi03R"A)B 4ιHUӮz[UUt~!|> bZ(c4~izi`۵R !b!1JUURJt^ !RJ{yJUUsR9?*S9;UMHH)*1EZ!4MJ׫2P!R.vOt4RppB0&7O 292yfXZWS8vWWJ$:;QB1ZonBRr">>=}7k4Mg57oǣ~绻;άѵz?P@WJ977nܾQJ4k6}ߟ%-OOOmӜ)4#" H_")S777?_./5SUK07؊Hr,KyZ!өf!𪮶Jy>| b>nu9g(=>,, !8H%gRrEqB)[C4L D/\ZT}TU}yum۵Tr{8>\m6OOHNm8(=cTU rN/Ϙ$#)oU,wo7])EB.ZU\X1\sRqrSaޏB㤄{\̕\]]M1s8m+7B1fIYims Mb+#!{̣RtTR(9&SU~;($/)w4-i+n> -%vqSS>_ &f ו0SKӶ%tz{3Vu9N1jC[Mvy <Bwp)WCN+?Ou=_ }%˓,s>{>n/߿}ŻKo6Fw{a~rn 1Su="~c3UC9jnRge"*Ron^ݬ/ 1xSB MJp8|h}yqxΤsӚ?uawoYRF@ ΋梪mni:s)f-3NFYƨR$%寃@+XPRȥ燔=b~q!$@ cnYwBu"3B(]#ҩP*R,!0vET1ҹN9qOc[WJ+Jpq. qN_KFLs!9l住Wϓ] [[o/);G!QW*޶k)x ʌP"PC 8Uuns.2؇/b?+0s\RWz{/p·a\ϓgu$OgotN9Qʹ0o~-mxxx~~ᜧ//Y?>ME'Ax(Hfr~V5N@OOOR*DT<^^&tJx<bm>}hj{qs. !nY{.ނj򥐪!?Or7mӄжiIx<C(c׿+\2P5PjMmkIJ,!%]Ja1'-e.),C0u+Jir{aŮ.В$> IDAT!Sy&n>9RJΓ qYf۴1#JJB`]xY:tS)9sFK)?'R elkT *4v&JiUYT UuI!`QHcL QυshyB-SU/JJDSB`8u-RN1e&dJ9c .B}sNb@iJͻoOU"0&eZl)t!fc\r_J c2N0N1SOsOR\Dc9p۬Oǡ[mޅKen>׷JX2墻LF9ݬy(vuwyqu{~)VGJջ$FrwCFzyU+TmFDJݗxb ԟ292ƈ%+AQ*s4?}a(m}A@ت{W^y啿 /%})@FcΙŅR"b&HVw*,4B!M' irsĨ*Mfp yԍG)ڹ}#T\ִh/!CL4p؝!g'qF+ĤǣRʚ*W(qlsUc5渜K jV_l)9K)pBHчe8J)RJ<c PrIMH);8XJ NOǔmrs___/}t"Hs1s)ݷZ1޵mkI1V}-esB)R*2q4=PڮLʗ!8/ !웱^߽{wӰ !vnwdy~DYƩkD,ݻw`?==NS\&9f}49tM8ij[0r8~iw8(_oN=RJ)iqum-r}}_Wff=dɕm۳OgNY"? Z %ʛy8{[~3O%8qÏ͖U9]-b\5;/'^ݢ^y啿JrI2r%T@JKC) %(BaHbORpZqx;_NK+ea b'3BXte9(k!eJR|6$ZUE(e!֔!D]4yj !ֿ,fHLZU]7(X5t[CHcH )El5%pN<|<޼/@ Wzw<fc Q?>.GY+RJf3]=5q&3Y07߿g>=}!DzERs߿M},77~mp9Ar_oXp߽Jc!B|S]wwJpd֌v Thhw# z>$KF7[^ sz:Z#h RRKtZ|&XM¡LRMf! M%֔%%dc&jvP!/v DJA"2Po0 '4Z; -dP;3CTP"xK)s3)cXR RJ$hN+nQdvRs"8Nkst`ڰL8g'\Hlq0åzeo[.xUUƘeYٌÄHϗk͇+cȜW]{q>OmYܺ,~^cxU&øL=1.Zۏc?c%|z"k_6ۍ~]IO?炯bI) 0#E*8'|euMSwsNeٽ˥?^7oi\+&1.4A.ubL!2gfFq[% %ba^T*M<#{3Kr!W4쏼ٵm˙ !y !f1 "rRBTjB9;k]JJ)'69j]L)b5EBh.H*ifY})d,JUA %! dJuzN΃]tݤUrP.5c279wg5*)x %#B.ј'E-%2d$TJUJRW!㈒Bxczs;u]smWc:?+U T !~}>yכ0*3WJo7[xw}Lx:RJsBHY#Ba읷byu9Z D,AF/Gt2F)H2p&aGHx# R \)Ri])%3\z{䌚饤9ڙޖ2H%]{XKQ %Fs}!Ѽ //_~DB0yOC,RɻrW?޿umYIkݶwR:/c|t sƧyYu3QguZTU[zRv;)sp8n Ji]Z}x(%iywwUșsn9Ǐ9v֘7ynk"~}uF{zΦR "{.n~1FuUI!mUmeq֮ݔynf^i,6^kz|*5_W^3H1q1eE4! \4E,).c%hJ1*9'_UmA*&gDL)QJC09cRQIFJ(9"AƚMWRVU圛C)EBVïOB @JqK)c_{H9i^cV@J)ZXkMŘ]֛Vp^#F %DKavqj0X ! \ 1U\B#q $̜dD1[;R 3$l<-'Ƴ1#`ުJD=2t~<~?s)H%q2/E޿pOF9S(R %:WRֿ(%OBRE#~`q'nER|JE۟λtkO$u0WZR?N6hO]W`4 /182Ru LZ몔{(*Gr*%YkRJB(>}dyvzo޺ E7v7<<><~}ahh\`aδ|R)|4t%eX̘!4 R?߆e vR`<5թW^ f cBH @RZJ~!"*W%5r)rKD-ɹf$4ːdUj*S(Pi &1BB Qmi'XUժ $BS4bR5P) !-ao QT|_yKØe#Lq@贜s4gKBID N-@ )ƒUES@U"TBGos|ӹ@L)-dji b@4hD2C X)#f~%QJr=0-ۻ g Mӿx8BJgzTTl_17m !9;"9_NU{_UUBtWT#wǻz\qzxx5yLXέCyxxX+e-\u]>}z[߯*Jj(['\K) R#㞟^NnolEHyчaIԫgYUx̄q )it(]ђJt,BqJsz2+ʟE~aJKRJBDBq^1\P\.' >/k )`R \a#JF$p^)R,Bp ,-2Ng R9WUBPJ@1xNCX3 22ΐvQT(o۶nZʸ)FrbT\H!GSJ x]wwKXh¢R6RJ$qD\Cp#R1cm{0&9o3sL%gϥ˂vnn6s>*4-(eZ44M)eqi|4>خkRr{:owc41ƺc~b>eR Qk=M8BhF)N.˲,1Ʈq՗9lI8LYBR cZ:H)~84^Yk;S!'7WJnf=zw8j%7fO_>U䜞/C]9 e^(c\TeneeH9 Yp 1&n!xDl3G+EIBr]U<!%+Y!;oSKm#!ZxuDH>P.I1U %{CJ43RiS 2Nr/eY"JpIqI HfιR~]m۶i4MƼyvYӗfy||g̒sv)e bUU1RJ˅RnyE)YflyU&&_rn9ANhvO!ehuRYm790qN|o4M(rM2?=\U[5ep9*8M) )hmH )H (r1uo|;Q\ Y&7NTU0QDҶa|~K!|e+gCĘc )p.YA4r R%cNHP|I EQ$u# IdBD29E%)dY20gʫ}BI'%s].ϷRHƒ#B5$2w!C.:o9!BG?)0dم8792eqy 3t*C 6:iAI$!i2ݒ}*uCB$l$m=6L1A fKr<3P0B@\&S6OVpVz= IDATK%%+LVnuιi1WB~-9JôfB?|!4CBKdH8M9=N'e͊J q5MJ)r$Z 1cs2FkEJu4x˧iz+nbri/{8 S۶mi "_ %)kGLp3TJ*4N ݴ>L J&aL1fY޿,s49i鶶R2MҪ{@vH14u4_W^sB rc|yo sDNsQ83fHx8g)HFUt%xXS.c8BցB u PzcUnmRŜ(+P Ȱn\0,1->w{!MU] Q!DkB,EdV"jҔ_w.rΜr*fY1%%唼k{;NFRҺPcl6BJ,HJY%ݼ,&k'@+%3VgfR rr)~ J)QkaGYLĶmڶk]kZklrRv߽}OL!/VH?*߾g(ӏ1z!XJ O*6ks)H4/֘U+Ĺ|<عm/H%!C>HW^y?\@iLP)%sZ Є LW5c䬔!@v!J H3 LJis׀b1H^e> r"9DOc!UcFt x3j]ߗ1HoLiNz<{PJKU fC"% 9; DJ:as!D2ks.%.-TJQZ`rLa9^ByWW *D|y3?}1 )WE/iRֱ"Ruv s!@r%UcGΔ0ñl~ 4MUU*cumNY߆Y+P8zqc.a_c41έX5-WP|93Z{&4O6un0P)Z0!q_?/Rns(E]8 c~i!s ]fvqv]>>O9ҵ!x>|eB}?Fc77UU9k~p?#9 s_װ<RL9猱W^+@SbB~iw5]KO95 }=b̤+tn]|9 9ϳbGv[;d3rkM/|xO۶}zgn]rQ6S[8>S~z\`yl'ZXgcMUѺ:~c9mycR83.FrB4+uZ1ƔR)&Fnm$C(@4 ")cHi>l ! !.]oUBiםCDROPyk X݃w)wWlrf^D1ug~sXWJIɂR$@ȷuu@ђ riR!7cr͜y >CV\$}%`)))RƑ B0;Ι.@2 J q!H"iR11!&ٶU NTzQ2Iֱ5)*UO?Xn8/%>}RJ@9uMoOuJ).!b|Qq6eCHAks\JVPz?OWo neԵ2t=*.=w3_B"lp9)}w˩+)G˓n@XJ9TyNo?2Byokp.Ι꺮|.9ż#%e2yy^{ 痩0R*q2$cLĘd k+URJ)昣;)GRNvkK,na@ʸ87O~W 9 ҿJD_yW@BbJk!!S $!oo)cGk "*8ʜ.DQHKI@8%vY)8Tikmκ ƚrjBH)Y&(F$*BUUqW׎0c66szZ뺡rd b0["\mT-L :Υ`H sAJs! +%8 HsiZ̠&0qRZ+s*@cz7yfu10xo)*O9O]B?/ϧiYηMBO燇ŊTu0 Wguþx@N|:SF|Rcl6K*hUT,!ers_J.:MgDM)xLe=MUwûB1#bs~G㼬vs>ħ!a;}ڷ7.[.nvz%?6f4tu)c!:J(==1ip<kaTJmk}/x||uvCMr"R"!s!bl)2k]{.8S6{`z?1p>|}W}`x8奿}8+)[?g\ 1 f9CsfSUˋsժa_7o~n]ki;O)mc~Z7KƐe3"8(ŝsMkCJC8v;~1քV3%_W^@ds)&y !s ٛYH )] ,(ݴ] 1| !uc蜫vݖK,3)8f.Go )` B`YlbƘ(9Zv[cmRD7tۦH)eN9ʊK91R)zkC(#@0Ɯ3yK)1KFbιBJB9)JJUo7ײޯ-oP ŴjdVPJUR-.K$""_W'8$8SNH%)K)4ϥR< X[Oo߾}jޙr~xx1.r凜0Bv[5e9 @H2~tzvJ\۶9,liN)9kSJm9EJśQR.x/BAe1Bֺ".na쁔yΗp|O O߾C߼ b qι~]]!u%Q{[Q۲̻`5PRp7Kyn=ADl꺮kIiz9yoRJeY(o1+W^ye()"`)%ќS)!Ep=W덐 P9&B9 g"xI!ZeUs1./@חfZK){g!t1'&U.)1kk{^!lɑ1fA.L9D*ٍs v]T(DZם*ܴ1Bi;AuZh#26:1U1qYV>bH1P !D efLL( Òc//.RΛs&54MT `)eByh6ݝ4吢G!l>N/ "m:y>Nf[X-c4K1Bu[7"4\o7gf)DNv>QJ1%~|9_C*>$чsk>R^wEMOluUMHhz:KdrrTZ1)w9RJ 10uV<RC3|қ,oۍs8eaM,K; wȈ̬* 2u?^@k=2B/gвi$)oL>kqhofq{wsֳvp.AH_-0BơEz)!zy||<Gq 3|>Sry{xW,1#@c@ŘWr."h*\_qTTzb/ݬm\0s1D b 80KLJ.ǗaQ A RbJ9Ŝ|i\Yc QHTsVq0L~1u]Dk uB1F @N%gpc,вH)aF1ep1!}?UMTMUChs1f;wN K)"c\.3 R XLJc R LZP =%@(Ϗ۶-N~ *\00T7.FB %ŽPUUCw<>hwT.RP[M{><(!7O7_MceH+?e|A(ZUJa$\64rw/mbmTƜxss)g;{7]dH .)z3xq5?ի&eݧ` axӌ%XvUuK-vfSq8(6;F Bh\NRIr0ɺfm F+^yWS&3)f@$'r6|0?ǧP2#r1E>:[X `9f+LrLdJP ˜(%?ox[Ƣ޼cŜ>$H/wcU+f ObƊyӄ 7!ɚLz/ÐJ`0Z !tUg,PQ)"q1bUĺRkqI)$Du&x?C͙ 2r+&O)H)n ojsS 0 a.@)oQGĨ)DŽcьpqb'%0}L1ܬ7P4ǂ Ϲ83%7P 6bBHHR9MιnXTލ9R}?gmήYP7o_֫-߯7PR)u9vO"Ntʹxg(xʇIW˪)%~_),T(8\m;ߧz|nv3cPU ˆRTŨ >દ" 0"D0B>]ߧnooD$rq|xR@9BUB?<|t/!)riM? 1FttnZ 㹿\e)|nnn1PBG|loR1cL4X?+"P )K9Ƅs R2LI &a-9+)ϩ$4]s!b& L`wJe?J/()q@$\uFsƥ@UUJ -e<ęȩTUr%IeNf@ISZcRJM2\ e+%)Pd/!JR8ʀYQd9iB)异Rrq-RGO)uΕREt c;YJ8Om\^U<s:u1xQIfB"\L@zw9O)GGX2Pc>$u4MPZJݿc\_hb?|`??={J)ֺr"SJܼٿ<; |K9|a`jn=nCZah0YB0WW0|zyyYVVHy{{;MS]הjia{uuS9qmreCO'4} IDAT*ƌ4mpC)ewy/"o6A e01m+ʿa",(ŘqJ%eK1\z j%9A3U׋JQJ1]1c@H18 B{a~AWs>b!fY-)UEdi RnVB <cB򾺮K)uӤ1cs(%K֎[7/D91iRsAΆ-Ɛ3JɄqR*.%<([3pRYy1)e)UAc@% 0O.O]i@Ϳs֘$UÙD LN wBwΩ>.jrY.R |^.ZjM޼Ǥv//xzD8(B`N;C8PZmId),i\ XP]ҋ` Ǝn޷m;tD=bzY7_Rʥ8ks !Kb?}W_3N7U`jxs}7t \8o߾u==0ݻwZ맧't>Rqڦ%Rcyʟ%FPRh(3.RrAbs!QY3\. c<@)9gϖyX"ˆOf+9m۬\tvt^R1b1k A>6+sJ0 !!Z!l9s*p.:\ FD(9ERyz|9Teb圛z6kʻs! J)!x; %8c Ҫ*i8*9fFhfmS.Wb,B-)G BS 7 SeBNAn)9^W/Un?|7V3j\O>O]4ӧZi۟\^Onsus)54$L0l?FVuAiu80837x 8 ]b!ǁxr芟N{@yUUhUS ]UeSσK9]D߹not1sw^,w`4M8)@EeJ\Ĺ!\,]?1$uUs}\5BJܘ\ܫW^$ 9o # N>%0P(&AEqq1'F ,Bܿ<4AB~<<+u][$%pF:d$AH#`I  GqNG#:N y(9TUc!:#r83*h zF@KL;fV&rs0%4Y;e:N] OLrR(%Ec&DPRI9@J)L&r'E-@M>Bօ2" dK"~ϖ „H.K#A%C s J Φ1F@h 88q?c9' x2#N1 Rr}v>BzΘzD`7Mw8RΗ.4 ~o6T10t 7Zu]wgGfH֬i 4h^a60Ɔa!D)׭o! Tq(޻V .TT\7a\`V \bz~zdL DRRT|sFiuwQ~z/\(UUu}:|CJ&)a)S~{ιkT+KB8NM0 !@)rbǘril1.3 JV+Rj>zw由fXL9_J9MXb)` V׌wccTJ} ]5\p)e2 cWբnuAa5M1N?j! (L)3Z 0BU FpF[H@1fb&1z2ќ~pcirzW)f&"*ۥZo>Xr(J)1)"0JD&rLPV pggJYɪJ7pxdM۾B777t9.);)ɚE{:RZ78Bt`Zq8>asW [YcJvk!7kp8Ǫ&41΍19rI)=&F)e!9S4BkB4\BRZkCx}}}8~_τ_4cYo!7?k-k*LcB~K+pԕj=> zMxbonޥ#!Z\nւsBz#uSItmOZzB&B!Oy/`/޽b)~\#c!e]׋~ѮAwOK۫zk#|}p\,6ф77|KB1M؇?ɰW^wRr.`B(EJH)撬͒(%WUM(r{2RCg0N9ޔR2FAb1qnyk ƄeHb ,8P$29GRrI(Mx9!8&3˿=0Oq²:R1PB"j i 4E5&ػs:N9*E!9!= r\ JrIџ/f)'IHΤ!bF`.1u#!$\aDcRi1/ݶc k p`1W7oDn/nO=ƙ&Bkݥ;b31u\tLi B Gnn+%@1%cm۶]7'ߞ==u~9w}nqL.uUr^mքq~?Z*cv~90z3 #q]7nLw߽}1v:9J0Od7Mqn\˺~qgnxZө~:3񳿤X(b-?|vi^Ir\> f|q=~?.۫w+ )6u}<E~0RȺiYKvK(z5Nu)e!]aj8:gﻶz|z"T䔪f+ׅQJ)8XKF2BBJJYG/ۮ;K)W2j!B(9:꺎1q*(އdy\H)MS0xL)HiI1QQaB=}o~JBhFy_rIRRJLSzq yƸx+ULTQ.ctRPwl#0xa)XuM9Op8dBT1W~v;`!u]7MO1vp>Bt/hsN8)Տ*ˆRǏmۖR!=`\7 o#Ä%m6]Wfix.]M~0/&U~?}qp:TBueZh=﫪f([3eBBFɅbHZc߿yRRmֻ]lR*Lk+gI1ƈ/1L !BƔR2(eS(!q0Ѭ'SJ0F!J %$ƠB䜤Q@ɥuK(yP0МTRJAAbgRJJ~EGPRfFF,ƠkP UUCH!![\1} !b0'4bL!!:mJ%^C!$Ec>%2i_UY(d{Na:KI0Z L0/1tǂ~O~rs}-6;g眽seJֺ+TJR itC eS2<۷o쑭>NJ)BPUݴөu)RjX!yTJ`BSLZUUs\?L? $چ9_su't]߯WU,Tjn6T4z_=3Άa9xM[K%ueM j;7uc,v_.0Å18k<<<֙ClSzmzW\)RՇ\i8!b"#SDqa -Jr%4וb2RДP1u'qP)T-6 B 8g. q͹|nVS7HEbᴗTb!E(c4Mj2f*#@({@IiCF8,i$9vJH{/6t]'TJygB)eJY)>,PJRU)%!8J S DNP/cUI]m`..Lby"s@.;$FJ~Çr.DDZk7 !MR麮!#3SP0>n7_^zBM^__>QJN焁JjQ8fJ yrVo&7˥JW\wonjc.si)'顪sp_J`xi[޾~Z,RDpr0M0Ojc"ӧ_C({lVZCϿWwrۛ/UD1\(3'f&b!S*vu:KJM+~|9VoKgP h1DΰTQ` ZK 3٬B} %^ 26=NSLb#TPKc\AU y.RR7}RSDT]n $DI̹hN)Z`Few9WZ" Xq`(YBHfˆPF/D\2c4Z@ 炆f@NSUUnpƄsS#4C'(-ɘs1*9'(EJ%SmK8SBc3!l1sL>Xcs\(!Rt{BZ*2KWu )1dE#Jh*ƄB \R1c 1:creVJ!8MU09brZQJFO0>?ཡLCj6LUs21%J> (@1Hl%B FsNQL3 ꌡmJqꃱv#CfP=} r9+},OR/ HPzRtZVJ x~ O7v b!Rjy*veT'CN i|lI͛719jZUUuq9+ݶͪn~_)۷6_KA C"nl*pv޼jHlr;^JIsw\<=?}G AT5ŒsXv1)^)'+nyZ'(%mLb)1?f9(ֹdJt#!f0 #Z,s2&oAsFPL9"|r%qZ8 r>O1rcJsvYiaR?シSQWRZYOP?]8u|+L,5%RZ;c0ɔRpAy&c0 Wr]Uep~׺YTPBBUR7nBJiJisdC `R8r"U.9Snt_]]M,c`;7C?1%JQoۦOK"$Ǝ! ɸi۾_Xz'\iUmyyy%DQJL1ΛbDiu`\cX7oPe@9e\qN%۫t]%0{F*դX9;DW?*DtR_.fs#$#'5BVsI_p:uO9fAĘ/Kr<\ R5 ۪jcޕ1?W^y bB8¹H(Tr9% %XJRss뜷s1Cqܮ!GQ)%)C A!1Jl7zI )9 sN 5r\]]`\.BDRy!J1Z}2ą {%R%XTܠ@J&;B0c3P-dDqcLPY3sc IDAT&H 9T5s@!4wCpBHF.JJMݶ֍wEr|&H!R4`*&}^эF׭67rZ?d)އ$&)O\rj:ML0Lx9!6c ~ot1S+ȉ<+!k]:R|!q'LK($,VA=\h>zsB}0O&z3͡U[5,,fB\K>9j}x|0ƜD%+i1W^$Ƅ1\P3*4].XRNc1yg䝁K1n&a]'o0}7]+k/RS 8fT756z8ovНGH)dqqœ JDZeb BuEESL~Va1D;t8' uV(gPJ!z%sodFcG!#cƘc%ːc@Nqb()zc&s~X-|qux8Q1Pi !GR\0JbqJȪPVB a4#>ƻ{t|~z2r.8)Ŧ]/mNjwk8g0]B0dSj n?皦Quf>׻j%s{{ur RJ!J91g5͔S~yyI)ơl1R"r>ք]ɦ0Sjƙ1c}k^w}2"U_.ݹ_O)fJJ4sLYp}.`*^O>}M9yKF!zmQRs]wJ;7"T7WWZb87s+g*qC )&09i)rFs9GjJWҺk\ĔѼ[^ !@dx%D* z jS-JFFIc1ƾ)D{pbJ8DcwZp&SB?&KN;D(b D Z) c)0 %1Se2 0.0W2Yk%%3p(x%WsLQʐ3cMSֺ\HS=!̹C YҔBXi)ń4H)ZP*s}0/c*1fݞOgz+q^Mօ\Fm\~ŗ9|P\)5Mc1p< 6M@1bR]Y;]]ݤgn! @ۿG(/g!t 7]NZyZosmբRJBTk] cr6V{8~Zٯ]v5f?۬nUWv 'qHL uFqP.PPH, \ P.tb22Cඪ\}nVUP*ؿ%XsO ryҸjaX51sn5.iQjcsN@ĖU.ERXF_ ]*O'x\bB whM%1JKL9,1NTҵ JX%UfRr&e2 q~d C=yB $?O}J99V c<$ v[Wr>ʐPV)H`<WMR1躩W@a8{_J9J%T)ul s>Jad<޶,#BsjE4GZ9ł){X.sS"HqRqxDtyq}|X9v8or'4Vq!OJȦjv#>ۇQJ!؏Pu_ovǜcN])8MRz|HksǩLJw#VfLŇ 9^^\DV[Y  HI!wl\ެ7V&ԶuUd.9cI771R&m{x=vd\r`Xu,wCʉ LTd5y6š.rmen4aJ)i{CEOs`Dʴus rl9+\)g+e]Fs!" =RՌK"1+asѮ6J ; 1 Ʀib&Nqm}fBMV-923D=M> !79gι22X3qpfLM0.IpAu׹Ps!90.ܴ3PBjevqʘ)`g׌!놾 ~ )K1lq 8r]?jgܼV+W_]_\anj{SXv}״aһZ^o !|wLH5tkզ;>.тn,EIu8t?{=ztjraXmNq(?izONNyb ː}ktnooWj1UfsZ (cn(% }|7o4mw*9>{wiX|7Rvm/Þ|wwR|Sy> >hcbHU5SJyv'ݡw!,44vAoi 9!*n⅔RZ[wx'8cZDWZDTb \ies 087;Y_3Eh)5ODRJQ]Z+"bߨWJƔ(\H 2 9XN9(RVsUNȥ,)2jy)'3!mŘL)IJ )4 8 lFR)l6~xmRWwޝ-}4SJ)cI)̀/g֛G`ݝRds:inGD0Եc][=U ukn? q!Aģ g?mjC٬.<߽j^|WϵַF0ֺwoû_}AʇqZ2& s:w7VXȹsny浩 !p'o>{LJm{༪+yyѦ]KI jmv{0F!|~~mQUZ3S[1%ftEp)~5U RpS,ڸ9$ M)i),no.g{Ͽ}LӰ;TO<9%!  q8_,Z"ƌanSvѦ1LŗX;s)3 VJ$!g4 bY(R!ǜ~i[`.TiZ6Vy~_"ufҥLZK*ICFffƅu2_rH2r+#r"c)`iJ \HRRJ@xWuCPB"3m%=܁r k0fFf"YRV3bZs+XRb1 `eJm[DJdU)1&l6777SUUggAJyL eg >D$z^VU5sUW}ї?"MR׎si1k siU:0Ӌ2K%A7}|q`myڸӫKmtI^]///{]כKdŘrZr.߾{SٳJ_կ WU}{qr1Ëϭu(E)8#qvuyS.${7owEp2%q틫WZJ7Z0<桟;SO<9!ԵB"c}Wںr)JRQgZۍOy6/5Cu\{-I~O8,?G^ɟg ??"O#KyqTb@2@m5!6M#U~isamV1eBc*  @)9΁l]$9CBk,0R9~Q\HQR_{)bVRNԕkcxbժaŊa@9X7 *3V2\BH12N,R׭pɏ9gF(c@T@p.Lhɵrs>M8 C]j\. (켿?; PbLJ\kڜ7o> qvAiVWM]8wONO./}\L[ǥq^nΎ_ͪrfJ)<cRBka?MunCr%laK !@)xyq{s%UJ\chK,ڋ0M~'"Bw\e)1ǡM>"ĘJ)ۿiQ!L.kh'9B۶9?hs DmJHY"şϗgk2RJ*?e'+«s?3gC? RFc8;:|ZRjgˀs&4iNO٭VZ4EE RL dPXBRƺJH RJW8c1gϞT Cx<9YnVg+`r:,0㔃i\3js)FLK8v,ϏorwŢA*޽SJ1KNh` P}ߗ@˩\W9~\]( liOCju\np]7U;tJ0Rd qBdts'3l1FW/Rݼ9;;?]a'E\ǻ/lfSP S `XtCߍuu0zqO<ķJ "M~mcRFKƀ1ZK)vLn Cj8}|Ϲ(e/cƘfcE`Cw[bY}{kյ7S+>wk%(Ki6'g#q-8;9 IDAT#R>t{ƅ.pu}91>t1:^͓_.ׄ300YLe?!||PBPAD:݃4BZs\-iX:.N^J9۾~{s=99 q$zx'[B bZ;vV eaL zi<IZ0}"߂7Mb-D$YQE;%%PTu˔NcN>ŤMR&B-59(e|JKИo!CȌ4XU dC&8aFDm! qH%89e,Q<\,c1s1BSɄy}UIǬM [0emҺJL(ƹǂ\sM QQ+)K&feL:[ `wJK 3cιvKDEkCcygu)y榤OK חEs8l]- 8t9v8{;B|/cqdRt%C\U?ɩr.d͛3%Ry0C)iaB,6gYpzsI*)E]-ݽrQJ׍a ),Jjb8s)t}Fݡ99R?G?1@b^Y=McöleriT003X?O|dTkS8R 51Ek5JfUu<3E.P@ /?m~jgf8BaĊ4K)a(QHIDGcDJygDLXkp{K>WzDq&̥๔|Lk)ҜKi!b䫪],Ϟ}?TUea 0''x.b H RHENII!i9F/Ҳ(јUkD'b_?qo͌qtcm @0Ή(<*v8?/VRʔR 2k 7ucL(!#~{ Q#.N>U\iD$BrL%5H9w+a8D!;%U)*@JiVj枈 R&D\R's~bR . &1,% | b:=?I %m8q.`?in izX.Ϟ>a`~Hm#l]f?ǔŒs5n=k08hWmmQj?!ǘScqr99/98RqN6k8<-SBk*4ucܼF*)n2vb̛/_Viwelina\HRIƸb9!Ī2X~cI: %\O<I)H 9q lUW5;< 1 i 0:{h_k˟CFk[-Ji;9gY_oJ.X0ϳ\]Wu%ֈ1T5 cBRSqU0.@Kޞb4v]3ny2Hy`%Z m5Bʇc6"9'u&.6gi%9T33Gψ֌#gL%(Kg,%q@ D*4CI(ޏԜXɘLsZJu)ZS >Áp3Lpvz_t]?b{!M \fooo6X-S~kB|H%.+Kc*IJ\V~?>N0W" ZNLbfB*6"&/>7팶4K-w%Nƕ4dƨv AFSPJx]4նыayd^R듋yڪY/7)w>Dv)CAy))t YJYRBc,Hm'x:v%EƋ1cڂ@0SbTR Α"(ı` "jm_O7/_8o 8qZ $`Ēc20I'?~1&_r@smUӮl]{m*%RVPb]U7TXH mgBR8I׫۴Đ 4PfWr)vrJ8/@Z0Bƈqq2R*(%(H90q]璼R5f'cq{';uoK:) Ϟ=㜟 9$v95r=P .Nϧ"pN4 2tyXԴn/txƎpyq~SzRV6sZ.sT={֏π1!DUUCիWq'?qzS>㫫g9aZƘ/) k6on>sVJleq={zB)l6Q+c热ׄP(A*VrJrn9{|Ξoӫ\O|wڌTU$8sRi.\+ HR c,Q/YIhjGaǿο2u*v?U Kͫ3&yVdJ)|̼`.)ELMjTLr]CcD]js2v@ i" # cֵOч0FڔvR44v)FݜCL88QkXP%e?.K$1䜌 T84 Dd !rΌ`sIS5߇c$"Shk20Bp!֚[ksq4o!<յw!u54!"8J6K))eiL RA9cK,Wb"o^^~GfsuuB ._,sJ7on[QPy#!۷o/z?nRps{{rr/ʘںf~߽|j1.V뷯_K.+)$&_nym.*;Oc3vww1%禮OO΂_~v:G29kv#DPGSO|svuuLFH@z==J!>@HJCqK)a-KuSF};;_~!bƚca&`XBDx-YۺK1JFypw텭*χ`%e Hcc$B?1# @ YYGҖL19'BT\ɀ8Ͻښ(J87Z\.K)> 1=cRoIi"B"(GB*H%SΥD 2PMӌ( !mq8Nv0s  +l)A1nDIĹ߽ a QyR2jONcחg-#_)vWW^RR+!!zƤf٪mǂ~ iV!aY=n9痯v+ll:t͛kߩ'vXq.4AL AR+ oƹV D%ASI\>{~U8+ܢ!~4Dd9]D9N;)la)}U ȓ%g1z$tmCbk9&Jp"Is 䜓,I!cۇӨ Â+4,ǪLqNuLw+čq9g4`yU.<EڔH}{cP\rNB$Xu{)tVzm7=fd6 |>?&Wn۾}?ZU)u VIw(z !ErtNB.8b倫w\,= Ϟ)7Brm~2m^|{!9Bo<&I!'ӯ̺A \sr&%!dEi&xhۜs~#!.kqu]!jFEN(DL^wllt.#NQR#猂O0& h'D9 m?83!LH9=X) 㨚)cbZ#d񉸳R>N)iYœAe-'8R7&:W/pB!q"PR2"QΔY3Du!@aB֣"(JpL2'e-BQ&SF! $SF}[c!!&O);qEApY.NoѣyUUZwr2zuUb|EJik1!9ؗ}~>]>ི*1M(''tvwwg9S!]wx|E9e !^*9^|1@U67w㧫+˺ qn!i? N'?M~y}[?U.y^%-]}YƔ2@a}}X H [kLRcL]jjuLvzlI]EmBk-ξ PuBM"xૉqJi 6 &BA#4P,ecTFĀ0@9;@FR*c" &r6go9!,a>i q)PTQ&+&Q I"Dl&hoI˜`)}šN=f` 8!&}\hchv@ ܅XTk@ȹ Ø:o0#n{O)>&0AH@`LQʪ !aB*AA00Z3m5N!uiX0!  pC(k7H"8zOYQs5e Bc*\{wl6[j0ƫj۵mQ^8|9Lf3gc%8]-sJ]w` z",'f ݶ;{tы+Q(Lq]zsn4m{Ź۬)NM[cu=M.B!CLksFpfWT3o3o~ЮRd#@C7[/?xN3u=ߚ7^l#\hmn6@ )8c$-]NSB`vg].O(k%Y#r7M3dޘq VbF#gRuY/K !{;bJnܦq^4xflb¼%gh >'- 9e8Ũ%;ݚ`#ND2!nRqrA_ 2w1F( :c#d}&j!nd:ywٱXDŽb. a%[1\!B>s!Rys?Qx,縹x4 B(&o>طFC)J-%`!_]]ŔbGE۶1Ʋ,weYd7e8Zc^#sN)Dup{wooƿA{\O+QIk9Fgo/+c֖,;6zJ1gӧ}iD79.aCWϫVUBltg$DћԬfL(J%mBz9kŒ#g«E]noV!ZLIƄ N9K!З gX.2Ę,BQjc:K9\%` )a?Bl c<==%,˘AZUUsE^ &<+r6˲ĜyY`m8Z[YuRdEH̄LcAI! FB @RB>xHNLY11ðY_UJ D5=L{yIxC !PYPrTEݶp|eVO!qxj#!j)~>8Gr].//v4Ƥz`BFcu)cn^]7fsBOή^]{y0 Zj[lΡPu6/.$ޭVZ9ೳB~#$!Fnw7gg/8O/@j/Ww}s.T0Ď7W{₠}ObBM0Uڸh|˲Jx+QQMY۔#&99Me aCΎc, ?53OZW($bې]s4X*C>ՠ;- 0 F0LON8zuߕ$d}ecA"3BM.ZH5|Le( Q3!윙ϗB`[K1؏{^,1YΨ}jzX/)3yQa1HY';>OubG@~?psF1Zn|Q`';tc'^1Az[~YC}TuɓjBH1yw/NNNӹ~#`'A)mה;,&&4C׶B=Bɀ2eUql #y<M)0!)Kt G?ulC{pcqB2@餔Ը8':ĈuD8BRcjLK!K.TA\HJy)L%JEU!)cRc2N>cDǡM!>DИ$FpE,\b^{tʚ,K($nf8ʲ/Ve1%lvIR2ړ+YFq< RJ@֧wu,3dC̐E0 !Κ.cAR>{,R/Mb6g֘!T!cu9BF!a =RjtQT9pvRJ飲h^<ﻮ;z^_w)YyJ29WJyoowӳ8!c1X뽯qo:/?6N~Vi<{tBׯ~e/NagDF'wyS{KbJǗW7A|Cc:Y]^^:0qpCʡ( !\fDכuH1%PR|?Q(ˣxL⼏F#䄀2C RJ6Bq.rBA 1Ri)^kr* R I"B!ƌ1l(WQD,BQ@)JE9Nx)TY)mGwF{:B1䜫B%X"(go#*+jis$9?tN]ʪ(kJhLaLR@YURc̈́ IkKeBpRJ\ 2!!#Ę6B8QY,368Y5(<#BUY5Dtw1T!F3J eszǧ0yeYu=id2ywq2Oo{ (buιi,psJ|^_Ɠn}pϔR_N|?8>Onoo/..RJ"bd'oXkB#c듓e]-B⫫׌1өP r{^o~ Bg?Wokfz #x7 \VEQwK߰-R)5jVc, sge93 Ra˲@\A7|d꺙lxv_u<$c9[rb#J`lD!y@~k~BWwwg5-Sߊ6zoqoVJ0wow߾?B[sϼ_7KFʒo*ϟtooT89my )8P,'n_V` c$p h#+r!. x%u/JH~ha餩&ՐRZK)y۵)yt1v4'vQg۾%#;(uȲ${M}pS0BIF;U6a D0ؾVPRm۽* )ADE ;ݾgɤ KRjۖs^TLvvUu:%8!㴔j.D*}p)GRZƬ'%իvmiը?nRխ }y0,UYqȤ.WU97>!a8oB MSm6noaB F?\|ø9fh衽u5)&zX=]2$A WB2&U1 tr0JyF$=_8.ʺMS%<!af~!Hn< D>i9EM=7͹п'_ӯ/t-|~W!i}.? O|[VڏaOwu7c?"|sKn/~.8bDuZO ܅0f@.,CLU3)FJ)lԦ朴v* RdLrϖ1z0xWHF(R36); ()۝;)I1>  S*[a! hI7eSLCLcQ&)x""]gMW4(6e9: ޳O~҇`-f "4w!| Z[c58&DY*ubB9 8L.'Oc8ՋRJi~X,NBI)꺡{V/νm]7ǨRqn7mێX*'ͫpJY)n]Ӝ,m1~80! y%RQeUhicV.K EUCB)OT:=]p:n4L'sBJL&6g#7W,ʄ?d3~k}+ERՐO1M AS99Ɣu9g`t1X_qE1NVd?JhFc9?1FĐU\0I)Uc6x4/G!$Jk۪l( alR&AQ1c$.SbHAz( cJfeC@(K&{@)NFV{QQ'?O/?ZIm8:i%mǽ?\(I0j˺FPTYl6y4w2._z45cc5T8Yt]gu!(.ǘsBiqZ^߾||1wS[me.9Wd)z}Q,"59Ri]W1FFX;LK!䝗%VRNwu]OGf뛛Fp8eŊiy3!̇ĹĘGnj3f8993nx0%1>UUyc ݷ]jB`U8G7gItfN~#k "%ِcP ŵا0?[ѡǡJY:0ι8Vk%e4G86!k2S0v`3i[tW60;sXk ƌ \,˺i&cbQ !QP @e1E@WTp3"!c,ƙ!BQbb2Wqs9E;z1$@Y*eSEyT6{ 1c19&xZz}ݜҳgώ?FZ{8Ö1fna7MJ)9xt{ݮo Jf:I9f(P (W~1R^\\L&q*~qE%<=={QqL}{/{׶sVJ)=5F_<>_o7cvXH!IYeU뜳w1a B$&)].]<~c}3/lezrwR!E?8ČɸxRA*T8{uUV>Z0f>@-˲|pl>_1&!%ք0&LH0S;mcl F >3Uյ@9BA޿_)lk$ ! N 1 6d ( ]?'G!`R:9uRmAq΅W_>"DRط>x,!|f1`11-B9s9O)ǐB3!իA8yB;js6v1!R0sJ )1e,S4x@@Uf D }OHZcQYQLq)9'A>z<WO!IYՓbUE=[,o'ui0ƛjWk&*+84Yx8lѦZLΖ6N%bt(FM*@[nhy!f n߶x.?vJC8t_~kzSY'R6];Rfԣ,f&Q~|0R4BUu=As7x9]Ocw{O\`5m#Y10q1٢(ʺlf&aB&S`0R뇬x૒M΅`uLXd x "&uN1C  !C,$/=|ME)KsKqM!fk_GE&O."̚"P $7(Uxcz3(Ft2i)qӀi&}O%Ǥ CPJp IQ" C]b`SƔVaFL͘ :aǤVf7Qu碔yb"#B!m1hu9E0j#'RB>vԄ)cR3(g!eUM\ˆ섮(TQܼc|$1盻;|>9`熻WEQeiGp\oe \v.1sc9)epw{:;d~ux||C:{L0Z{]f"T6 %c"ÏUUPF&ʹ6օIZK)KK ֎X(QtO+BHڷmFk-]g>g_B:(F;8ϦuaGxQR|>o&~ U!0!cc 7^oWG `N۞4x !秔3@XIAA5 (&)|BLd@z(IU ůќɏc!1 9%!KaFj#?]o9g߁%ևxm3+9E];=\L9RB/g9ql@R%%[1R)(eG\AkRv jC=mTy}dRJt:G/</Wՙw^]q6QJf:öm7o_SUE!ct)2`ţMO-כgo^b1ލ0lw 1Fr:| ~}BIbJZHuQ5Q.ӳ7v|.99"eP;.x:2%c1ΐQ8[kd.DNS dȑK!Ccw;}:\"$c܇ 9# cb„LB)o?|;t_?އO!:Rl?}|,Řcc-RPE &C2CJCbL`̎ _1dž#&,K` (9oq`ݬF8Lr VPŤFP JÈD !1 ^QQ&8)mN)xG )2ƐsL1 7tuB`'O&IPvBً/fdN'o5clYLjV~{wzutWWWoᰫl>d{j1n=p'l6_no^mnRuڃd8s\~www(P3)ƈ(nw#L7PcT0ӣ)x)EDB/^e%Uqs6T붨~}|a뽃'9MiZcxt9[>t:Zvb"yyXo6O|*F-xJRYIJ),‚g2$F DB Uar8 Bq UdROvD)&H/]  Bw_X Rp@HL3aBqS,hM ?[e1CaOhDL3! #Rrnf2S;!{ ey{ӄ!5&dO)F)B)L'>9c 0r1JJ)Ydr{f>4""뱷܄T30 BȐ2d{gcJ)%#Q~1 B2ajsQ44arYcluظ A RRBJqEyhweE9%JBйm }UeUKUL5e!vSFQER}=]i1/_z8t-y Aw{;ߚ<:H^ =fJN]%'vݸ~y/V\rƛO&5Uu5Y$wfcG_ aTL@J]43W ^c\$*'׵tV5aӶ[㴪Da軔*ĩdm?U1|$Fn1_eQ~<PF(a1|bc`9 #3c&ydL 9|B|ƈ A 8/dHY),`N2ǀ0NhbmJ0B aٷL " cǑsN)Y a}?\&ژc3v>=T xf!SEiӕe%)wVSC!&d޻ (Q )b/&!F<㢬Kȣ{3]N" BKuဣIntebmm穹a{|t7_7n4!$n(@8Dq$+HH(ƑEI|I&rb !n@Mg{k\( Q-źX[VZUo=*U0Dq=t 䘢WR2.SF@znv;2Z_xDĪqz9HhNgSvк$9⤚eX,)Elj)c9ǯ_>{hZ .sMsLf몬{JgR3Ƙ p)<&9Wp{E!5VuG"֛}L{rҌ/}կ 9+"~|4i2DgQr|  t9U]cB}G)>.j2gHeP9EsxlIm݋HК1 9 ʪ 1 -]r-_  K}!ǘs>CH( fQ04^Ҭa Fx8.(%\JXUCN (cL)8y6-#@o2&D 0*]xuLWZc1Nr`fF)"pΞzSJ.YJٛvA!)eR)S&TUBj,4:;RtI퐲'B0{ιΧNb"TDRtu t)dvq|"`d3HQchLWBvQHA '(ld~lf2h)!~ e1N v݋Ka}u]{yg9R8\]?n$ܻwxd뚐g cJ>)>|H'|> >ƾ-DZ-gXE`s iROg;>vcгE5YX.;o9ޯ |^cR`[[nB9a!Ɣ9(Cy 2@!8r3%\#b뺡h b{8$J" f$?@sJ%:稫zjZkD컎Rb%o>6Z)cd!I@sݫ8FJiJ |֍ I>Ls'EsGcΙ19B0ɋjuݛ'$L0 ~r. 3Zԑp:U՜12F8cRcL(K8}L!sf9R1F({_ !mQE ;gsJIwΌcuYv콧l(yoz>k"Gحo.//cdYN a'I1#ed(Ҥzn7wq (_Sco^l7(n71G8;a<Pj#&7js&?|q;uzv-W"E]{dY.r7r0:0Qh&YZ\۶_7ݣ}?Tr9/JDo[1" -*9cHD,VL#r ɇS9#!Zk)EUS)%R2I&s^0^Ϧ~h!.s&!xcId֖e)@D3CLZpB-9`HE5Uե _JBwbQP!zB) @OJ) ̔R ReHs >D$ 9|ߦ^( j211& >];G&eguRι{/ RJ!!LOϔrD3T'Sxa\Mgg/>T,88Wg֙0aRϣŴ:t3mHI1mvG)s&Y<{d猌c|.?zjm c8I]sEi9yF2>lx%RQ5 nYπL>xޣ 5NbTnlRs>rJ5 n+ ϟy3R̫Kx6#ڡ.t;7_N N L8Wr9M Q=>s$q4[nL@JLB *19D D易06;ȊBuֺ0̐8Lo5k¹=u7t9gjdάS3Xb=|[S$zɥ*8;3|.99`A>ƹWyB!ԅKY]Ⱦ0}JSa e 0x '$!jZEb"2cCt)c)ARBM; .b0 9 .64|`zCTЌ+p.Xt Hc;;t&AKId'Зk9m{dcon . SjYzۦ.sm΄uΌnZUKq4ex9?/BH'?)wp~RΥϟbwC3?j]]\!&5JV9lyFG}Z^r˗%+ާʂ ɳIя(sTP.!C)!KA3S;b>=1F㨸ETBmeQΧ$OJ=6TӓksXCHS*vh|0BΌRzR8E_ԽB~YpKL)IU~:)Y0!68*q+d9J!N& T@ yREoR&ƥ}(FDZK.#qkeIɣPkk\W1oǜ2@LB>xȸҪf}`'MyqqynLb>BJWe97ϟGkЌdkSm{ZKU\^<,YQlޔeylڢ(bXvsmLm1RU@DZ( $u]~ YJIkﺎQL'3_=Eq<?~;g haD΅[^oޙk}g{|㍛dϰ. '?u?בg`#rj۾3= w??+>,Wm۷MNaRVJOޝڶmWR)]EY%@л)" !JuRʜַ9r˗%9] .8{RJ1|"% K )a\29E?R`1')"r)M93RJ[ecRq)2# H[}(d8P<ry&J 8dk.˂QyǢ,9)RX;!Ӑ!ڢz pUU zZ͖0g%!8H)O-ZƘRJ)\@Y1IяZ˄& z.4BZU%$#1S|YY7O`)u)#cUUNSjbIB)%%@㨵^߬)URZ;c˘@dn@)'$a<{9gL KB(Ks1rDRQjUxWsQu]3dHMsth-ry珓ʜxpDB;?t~?u>8)qX{~ '~住.?n{|ow~ͳ?{[5|:%|~YeTk}QzRum]B}L)rRl6IB}V-rhs )RBH[ FB )A$B%#iחRvmG!3yΨ*sg0RN >$ \y)eaNozC mq@RzJ%_^=o\0Br&1@HʙPƨ]OLsΙ1뺓"xjpH) .+Cd >ڑs)doTcCv>841z!*. RdH1zFi!,e9f55&yB ULR .$5e:bRr[o ׳npFeDWWW?Q `lfv_S!8+?L]k.ءiK`Y8|泟^ߴ1fC)1ly\[WФ2 0?eyj4O}ӆ>;'cyq{6m7mp|e&!;&zA)2a+v|߸f_gg2K1d}PH LG9:?QpNiѕ!% Sm[tm5Pms0alB8!@R,"lH)庴cPb.3pJJ1wud8fe1f#2"0kDzQ6%(a.'f=XS#Th!4ZיhYhG5c%2}șW RLGЂ"ʜbtL3/_ !4ETҘ330h}Qi@笕|pcB)O(*Ob 5/^k% ]Vg|Ź 1ru}nx8wŜ1*4ccܫ*|:;gF`EY%R@^^^\UscqRvb9{ZN^o^0Δz5QtaL₪BW㤮?dMZu] _MH~woҩ+9t?CLb~{3:ٗ˻HwCuݱ;_]JȣGnnrJBnt!Pm{pss3}޻~Z/1PJbHey-:1Q0I)!JdDo#&QT٢eq10XK)rs !D3!%󐓱'OUJ*w`L!Zιtk۷-T˕PRQO21dXVeY)%9'J E0c('׊q9~l=zC"FēRNqG""Ǜݤ9,R$DHQʁ`o(*Xpc(*Bs;w Ā-<'4IE0H)ON֌aۢ)'8b.&ϋ3M 9#NxlV2y2"7/#Yv-cT&ޝ„1ɓ'avZ몪Rr&[2e1 @ xԺbTnnn\jX%":禓 dlRɗeI9MM $n8Z~p_lb > 1=snl7ϞǏcs~qER( SԪr_ʧWqxmQ*}@777}ksu]凜w]U.}4 ]sA)s{gq8p:aRJBN'(RճټL˓൬*^I|=~B/Or2[, 9컶E`9Dg Na*,X1|w7>W1Rk]\HȈ` r:|Yw?^Jι"9vm`zmf1ey=(K^Z=r˗)c9\>xK0J9&%y )BD粷EQH*ca9(Ŝ,R1}}!}75;Sf)di"fcC1S,ŹVNJRĶm'sEu pc!:9eD{@@x!iYk(],ݱ^( C@)cJ &Ӛ2ǁQQ]1Kc\0*1 C"* qt9A3r*X7f9& (aBT\Egwtb&z+x>mގqz⓻/.wǀ͚)<.K!KRt̶F2>|nq ag̀Rr;*)[󢊉bUVCͱO><".[?`ce\Lu?5~x?}D$״"7|]IzOKcr_}?O/S"-eUPcrj:[΍ b>gu=J.שׁz| Cݞ[n$0Ź>,bBJ30Nٙfc !r)d![OɎF"Ռ#Ħ͐40eWrʸ$9؞FcX֌R);G8\iSrz[cRw`z$>9L! Ő8dAƔ"<! !Hd ]4xQwMCĬ!$S3aT’, TNdsIun H"a09b<.˲iV/^1"qٙwg1y`B;v>{; 1Cg`MG|{۽[LHѵs! 8,gUU}crNk6lgLճh!IJ,_ oju?d2oCۼ*/zȅtBж}ÿ1B<}[?sw/W8=qf\ԏ޸?A6'r$vlNKYVuc"RFιb"E>(|M5Z%[r- %ZN)2koV:9G8A= 0:g'Fĕ+><|W} { W)eG?7Cg~y<$>}?Y|k7q>7˿_['NsEF0ٌ H2"J)1}?R"!өsVS:"@hDXcHUU&"&XCJtrfDc(.х18K L>qC\JTչ;]NPt;2(Z  c߻$1EU8A("4 "gOI>u==eY[,c`Z[L*y]WfGh mwB2@1}sݽ{kOԳ2DpC 4]|{}_;FC0C+J= C6˳rqwcIRuݶ:kc/}dqVO&|>cQmo6ВsVgtym޽WWZ?L˦ݯVRl cHМфR5v9JO]Bab (L&<t^MR(30)\UU]\n[DB!gB2dB C>p.rLigW3GZ<&u(5Oo~`[~^?)D{cݍ?g?sSki~k㊤XݏEU qC?8K#}7s?䐜 )Up(BrvI)gEl2&(Bt)Rd!qʔNsN\pRwDP歳VuM)%B(s)8(eRREYO$ed:$LT0UPU%9@JZS|mmJΔv݁昂KA79e`ɑXl^e딽#cna1ժ'7/g~kmơ $e5)Ŝa^߿xۅ3Efi]Njw<,W5f4ߒ5w~pכS]9iܢ(U5/fl=(-b9s+ULJ^1s1 {uu]\]2q,N*o}BcsBVC{lք#DJM"I)m瓪k[sw9e޿L&P׳Q<8Nc?QgJ-^2J9cb(Bvф M80 S16"Z)!1F!<og1wQnLDR")Ȝ:DkB7]ugIZ3g_o^9c{X11 l 1+S-_CkÚc:SJ&ھӘ;E8?RVN?H~ ¤]cN\t~4cN1ۗU]4у*)9&LPҌͱy1g17AvfͺhMD*7/wOvھRɹN'Z)ccJU's$D)3K|. ᰭڇ[r-IC#Go!ޏ=C!Ҳh\ `]t6 ueŌpp3)@L( 42uW@i IY2dș9ePH X%r2K."#K*Y}6Y'O"MyJW%r ({C1dr? =Ѫlء9ĀI Oy$382UBΐF#!ޖ*)H|:\[HͦͮOѹF BJ)HIJacE *"BPn#Pz4P( )@)=;;K)bq1ƈL AL)ew>R&fзٗ_L !k]Jy4v63v?vwB|1ެ޹S!$'uUէ\әD.g޾ؔRqN7.tݵ1D)/ =/Ng[o}xl,˥^H~<&j2, cm4J|9מϮb\R/^$nka; q1 c'OH!` 9s.a t]7N@*8JW9)ca[n)>g&.R.5Z 1JI16h1ιԀ)F)g@SN3=$gӿM f!rHi͇O7ɷmS@BBR L(A)MBJ֔ˋ2Bc!s.|zNՇAi z9!N);w.OS`){O(R*%(d!Lr n1Ęq! 8?}WO9ލPI nPZsSyG sJhJ1`lk-*!er`QJ}ߟʉ Xmf!眛9?;S\#s<UYїl39RkERUuD2;[Ņ՝g+ٙs0m7bQ*B\."ȩQuzuyGB)+)88!1cj;w.Oa]^>е1.uc5Z:t8f鋗W6Dh=[H.˲r6ybև,tՅBw.8dRBcYI) ^¹8-HYX뭵立˫y…Yr-<2 dC 83x3dT)EI9Q$2P"=2ZtU$$u'-^cJSp9{!'Is?`a7h$F9C謍1r )[p8j]*J8 m!kis= " dBB,~pǜ_91cEQhɉJŜ8xۃ1FPRBHA}LPbOyXaՔ"eer朣Ɍ#()%c)r#EURJc93!Bx<kFf Bw=˧?V)UEJ|͗/_NӲ,}q1{wSJMӬkDџ_8͚Q{|>!Z)KŁ9_~}wW珄{PUrB\_Sw.ݿ(vq~wNx{p-|y"1;=ECƞ r΃cc2@ľ(H锰b)A Ԏ]ChUO|&X{! Q@Z<%/\ɷo {"ƱK))%U3"B9G5[P);.h~+usUu?N:Ƙ:Ss.gK1ByUק 4wO)SFDO(aRV"]B>$BB.9UӪ2R7#u9xg2BHA)'g]7aN}9Br>eȢ^%LYq1EL?`Fq1vCuJIv=Aq<ߍpѣj9o!ƣ`ٻ+gwy.WgOjR6}7?ogKgFNP@Pu]7WضG],Go׶-71쵻Ϲ6UuUp젴&`(2($4J,%"!%d$@QA a)2Dr#E!QAlP Uֽ쳻fcJ\c57vq SzͷLe-iݼd]Bwݳo3!Pøn(ޥf|,ڮٍ/IW/H>0 !c0'6ڣۻj:;zwfyxzpӵ>F}tt䩨f{KH> 'ʹԣutMEO$o,BJR2>NL 8kc%CN)粹o%;yD7Y#l)̏_ |?!)(!dlY/ѿl ~@Hp1 T7_iTڮ>$;8M}\V()rHvy$*emU6L>{*9N.xʉ^OI`$|%8N7Y(h}`+frH&G)$CdIjq2.Dʙ qX7e%g-Qq}(^ -%CF1@ hAAJWJp΍8'8NQJ1#RzZ~뛯./YJ`WX&f/ ^>o}<7~6'Sn{\!s8"ˮiE7Կ'3MJ>|lZurŅTVE!~:7յ:??j*||ӟn.vi.ˣi?fl8{l>B`Cjo_+_=9>JǫR=z7Y{6jjBF~0vZYkV#|p!bBB2bkV9Ĭ1ɏ@ZgFk&W|0;]~cˣ'O` 䘿OO" JǾ?'V\4lKwzw_D@Q{%+d=&-rJ$R1ZqDL{~u(Z_n]E AfBH!8ﭖ5'"{KPJKASրH(KUU!!fBȴf(2RBJzob>Gk S)%B bYʎRcZ0q_w8#1c EZr2K 7WחH TJziߛfY.ZkF9_'r'Ov]ޭ\KZ&~JFcg5e6[T㰾|m9srrf<&Y!4M09gţG};)ˣXv30'Oq22j10|oT ֳlq= 9O}SZb!)=~PJqska$$<ח!l29f Oxڴs}[g7G._W=yK)e[^_Za_C>2`JNCcRʪ)EN9Xc R߇ !8 J+͵t]۶mR)!dLMx%BTLO߿RW<{οu*cUkŚ+,0C].\fu5[dF atʔX7A*u F)ř(FR}a.%LSΆTkb0`w[M)Axv!jc1LMљQ JPkTvdwNjRJ1bJp@Z`Gk}w1|2D)[8R]UMm1l]譝[[5l#R:J.%q~(`ѣwb /^<1VVt" IDAT5LA4ژ aJS)uwtlvh: 9'd2YTKoi$0T2OcHqc¹իd]Gϼgo;J0 Jq*f)%JjVU۶s%u@ kWG+c,eEi؏OxG'o< )Yrծo>[hr\|ч8V>dM>x 2NbL^ $H J)r@mYqЕ8;ǫa}e)@qתֹΌPg[MT*F>{Z/Gu \pZ,7٬3vJVT"IHH)%8M1oֳvFD L=0@A}J)l*1ahR0a8cȘ9tܗPHI";6f=M}BrΥd zkc9ggBBbO| !j]TT0pRj꺤C '\s*@ IM˷wxlb2u!JlӋn&J11r{nt:9 ϟ}ofj搨?a+\붝\rT7m;FHInWU5sAK*m///G7>~i{8L1:nqΎۯh . Q K8VB{ 6h\<{[vB׷I(Aի?o<glPyx$eHwї]0So69v.&:]jjd%LɍXJArpQp p( LT:; E(uSp"v>ycskӠ$V9Wev$gߛʟ?{_ ttUJfH.1g u]b̪\V34TX3M9&$TP̺9@HJ2/!(S,ކAmvL4)vqƘwPK)RPT̸@ <`1:0(cc H,9JbP8]231&)[r3[]7^UN-v(v5& ƂurII2(\ 9r}df]=Jꋋawf0FW ;ϻٌs~ӧO.?Z>|KBTu}zv6}TՕ)g@Z|ru|$9c|y7J)ș8,̿ ӟT QJ٪i )*c&]S"RS^|4 c,pzzBԛͦ닋"h4)EFq>RxƩL)9{i:u)$INR GUL5]7OOφaX-s1Ji轳b:9YM1ƤOx T1SziRJ`C  z3~+*k&Ή 8? @XFBҪN!5bf24\ccTJ sUնm״q)`<Ƙs>Rs.q\,oO)X $QBcJSBQBĤ<::ZK)2?;!X)UٚnVMcc:t!Q&r)ؒMrn )ecBYb.7BNSO{ .@)>*uP<(%8ƌqVĪQ*U2D]~>N9xqgi3MPJι{BȌ;zQ)26|>LƱ?^qVM׶-!xf KIvry\.9iQ4}W0M~}{=NҢzs\{]7/D6踫{{o9)%0UB|t~.CQ8Ruu)GUL c/^}8Uݛ !~]:w7WZ}LiXj%J\h%ufg1kmUUcS~i0NCL:^ N(!P)%Q.8,SʏSSDsRi/\f"G,R0նQ5 's.RURj 󔒳VJ)$];ǡGrJG˥"s&˓rRJ gm=% q~`JB@I FbΜ1ň(\r2FW9 ư`~+b *j*$0t醡$;!YUEg}pTr"daLw]=kJ H /K)UU!ur 1E֢mfmq$vbяb朑%lHzm]Ra(O<1xٓӷ/ߏ1F]a.*լ77.>;۪H #Λl6l6l!DɌ']3Pnf[zO|kN ӯw~#U=S-۹|g?ŝ({GO'jg曦-?O,~G{xx}Y;/0}GOoTcaw`,2FѬhM%u{3Wו.f2R>\prpU@)@ NS(sFΨe+8 D%s!n/ː@!SH9[;IU13B qR zCs.`1~ri>nOO˽@ .T ч DRrDTL(poRW]ߧT!CIdp=Jgǧ%(R њe(qڣԭ\$ML~Va`B\ =Gۙ!LS%GRR.BU$,@,%WU[rvnbK)>Bi*n?쇺]~xu]M%$'țvُ0%1ں  0e}Wy\_~ۭ֚$_#"csVH#ߏBhۛ[!yR}rR;Ww~u%EU@ŷrK_cO“+Ǐ\%_5o;?WuլxO927UWሄ]٫=եfZoc5;9/Vq+ŠTWrqdRv>Xߙi=@)EjͤR\TjBRjΨ3u@)Z3M="ra!bg2TXR'jjR"sL9$+vu7fqͫVGqBn!%Rl(T3"Ys攖c7X1<@bcJ΅B0%pc"!)DZ;|6@!)B1&ԫGYg\@HL2B1N#$-ֺqRĘEIc T[B@rT31Ͳmf13C, 0fm[T)]9^Kz}Gȹ<::귛%!S(z~;KKT+bSozxB~z7sʈDi$Y-fqR-18:ZW5W/3Ff1u]{wտoo=q:~7n^ϲӯ~=;Y"|壋Eggn?ͱ}^3P㊓ !%REb~\fnW R)ټzZ]_UR7t͖֖n{O$h)%4 Cᜦ!0IIﲈk*;r% VTm1sV p1Bb!$!sD2Fu#gU][睏iu)9Bs~PB+oǶi (YII!YΌ -X1H'`Zc nj7q!|J1nnϏ!ct2ƬƘT*@ڎj$Á MMFrNUx7U;3ĮzBH0[DIRe8ֺcyJX@{CPJ .|t6u}34ѣ8lwtc|QftﶁZwmR Fo+ӐJ"xj櫓,U.lm 2ͷ-)kcLUU0u] 8}aŃ>JDD$5e RDp&ABH1r1̵bR)SNsJ`b09` XRC%4u\)R6Κ3"6M9GB8g) hI12Y1.S 4/vwR ֊ !$mSNXJ2`!z3_,CȈtZ{YMBw̚1RB$)gg}AB!SJc,Bpr4K@C謵\BnuSs*qRD4TUE)SJ(1FcőFcMʚϗ p)1dk!мYNHͺn{`ThUB9qUmonWsΔJiUUNjŢ?W Ţ+1$05 >GO rL.#!5hyVWvw=!p(T]u  kD^i'?~O. (c̈_{~ëc)9}!IY QŜ@aw&CJ?~Sp8R)4! -`O[YՆ॒4YcrQ+1]τRdB ] RJRJ.B)b,JJD*tÂQrn(8^xUQB /뷛MT=Y#4DUsRU-U]QwdU8o$3=tmXBԋ?fˆ0ѿ|iZ3(׵>ƛO8 L5Be={^^xf[k&( .K98T)dUɻgw>{oZRds ߽OVʶj\{k#Eu7N8:IÇ1%eͷ>)Rv8BFry䜿uAȰ?F(yþJ0&Vd{kk9<Ja8rFi< 0Ep)A˺!/J0ٰ~f Rty˅U(A!&C`ni/>%XT:Ѕ98̙e3=D*@ MBZ8ph%JKAàT[!gQ Ѻϗ0B)iΚ|uggYG4MGVJnVGXZۻ˗\_KamSଝ)'1B.`#)un! a !>h6#--ONxbOz4Lp>N#XOB {->LEnqԯ7I vMޯg}Xc]@\P;2ڳk/RDKhFJ u -Һև`w.pέ5/_R RJJ;73R朧~-9ǘ)>Պ!(ETUĸ"D$n/R " !7|Z7MB~no1q֛ f3J MP}v>zif8X8 aǔroq~ww}s{XvEWJ5iP瀢C\9o]ELP`vޘa 9ͅS)ǘ'C`.9i3H*[+ƻՊ aRT:rscCfTUU#ECX<`JŒeSu]Rfx{g?~slfep8t]W7"yJsk%͡W5!c)q:ܭ׌prrZJq6m<^\ZsNa1 y8UUf~7d[qPŴiX_;3PձRJɺnnojut^=,?ٴ1cԫo)A_9Zwk?\uCzQr_6}/p_IF$?o~trF7ǟ';%Y3ǏVHfܺ @rJBrʵ?(Kf}3 wd?xoSBbB AdQBAR7jʡ_ bLΞq6Ls,"ޗ)HJ 3RT1c]|@9Hm%C$9!87MR48P4)dn:("P%EPθ. BWP輷ΑDDob1B҂jm=!8ї TȦ?;0bt!ΩB7RHA!2NQhdJ5Toɘr6֌1dQ IDATm70 k8 RT%qR& "T*sRBٙjq ! b֘pwzs1,VwVK\C0771%i8~BR: GG'ۻԶu{R 5TU7wU7kxՓ;ooStƙnqt|(#.J_q<\__W7[?U4eg(afT~"]S>(X9n.%lwmXSaZ7nSt#z6˯_I*4I!4Uv}ٮ %N)ǘkQU|>az8RH;7')aX m$+fƐ\L)3IIRj>,qƄQ0 XkڦMp#E!3>ATm&K0΃(Ra(f$8TZWJs4e9}`H(K1s ` Z7SJ l4㄄lw/!g]7pش]bu]1JP]ܗXڶCBo} t}7d:QnsuRM?U]]LvkrU.l&cio6۳G](oC:KEI%uLՔQ P2䦩r2,8WMwVJ ‡L)S'3`9daJ !TsSՄRո_7Wr@I1s{rww-8 `>~Y7X)5< Ҕ &JKUI gZ]>>9N1fY3"J c?q4p凝|"1%3*XBRLf#RƤ\PFi!ds4rw,'hZBrj'yk)99ʸQĹ<"8S1!Q)QF 0URE*RG7@-btE1J 2%Js.)'&l !CI!8*+*k-R]EZ*,"(ZNBIB9 i! %iڒ"!D9.V+;1 &sFfѹXPk?ztҚP1#c1^ 3KF%a!I>mSJc&!K7[f.sxc=veͱm9߄[n:pA j PK@;1yۭT#2K]I%BkE#ccqcRx|t8>Qz-@~agv<>~:L(KIz{_cm|<{VJy>cCnZKbZP*Wu~5c ?/rqqn[- _?wZJc󇟿 a?>qA֫Ur4o_Z ̋-!x?RMw7;kveZt>7-#صzYG׫ 1Ji$jC6_l"a_~Z;==~1nֻe6# /_A-үzs!rJ*gJ BIe8 r^qHJ$?nv]yx\2&PZJޖJcu93ʧB)u~eJ tiL#T!kd"r)K\fsψԄ)b^H(vN"=ZkyK)%U*²]N$:^r*E(CdZKT$i.U I7 #RZsgW,Dw\hlm)v1R^PJ1q2K9T)$C>!RT6+)0WZ+ξ}PƇ`st:J%ۮ5FsD?Ykc\JCȜr !R҄7~^S V}K*q΅(P ûW1yW]'XݭhFan7wk2\q)%/t:}/nvy*Xʡz;Ϗ$?[Uט|xѹ%'x|>S. 媂xR~KvTJ#8_q0))*LޭW+;qۛw?|?[ΦSUFv2\o+c//)ץ䒹D&b-PC1]j@ 䊀(cLfȵѦ1·\4MJBk RR"HOK ~]ZRy<2Eb>$P-eB F(0BY9Q2S̐cJ Vr"@jPJ(0Ĥqg@j)pD%k nvL]$cBJҒcpeO>,TkQJ6ib) g  ՜fBj \H!U*ť MktJB-vKNd(Yjrx:>Rv7wXKz)`fֵZk߭i~aeln~t\T뷛=ak]Wfs&M9 Tv;#!$p<]'kク9i4|>87`(fMA<~%7oߙF_ nnv#ZժLR/)f lnw0,]J1DJ޴bRst'лvKmZnd3O- ˗ͺ7)9ֺ6U /Q*Z~YR>$J2Vkb.R*b8%&7=#sҤbJJ79W MS+J-}.͝2&Rs.s*vYӆ Pst}QpP\PJRV+rSLBJ"Wkqb1[rb$@Z~9z.eG$@eΤV1Ү[ʲ3ETb.4MEpAyn8ea\* c2Ag])Un " ??眀",)d2xRKC!,@Pn=8g9-e4t:A*txۛҘF[m/?S&ijm^8!X_| !Lt ֪m9߷ٞasYrΥT!XBfe9;BR)en])~}+0|p E*y}?C7߮-eM3Z|vUJEUK1RAJŸ`)K8?(}.]9_m:8cLJA`bmukݴ%p4_vsHc!cNPkawsW+P"zYS)J^xᯠ\rVZ\njIRho 0ITW9y9-Q@SQMRJ^{}al4pل3R(@btCM É1dc LB˜Si."H!I 3Ccby4,bpS5kgX+_r(-ii֫q|ye8׈MJ4Γ2 ErQ2Ph-8􄆔JRJhAp] Lж`Ʉsg 1- "NSBcٻh씼{Dat\kM5 !saS%7mV( buTn9[B9d9hi۶:}߯ќBtx/c_JshN ic|xx9?>>.m&8ok 5 p:~NT t8ɔc̷~B\揜f5 .u\SNRJkOaG7_="a `KMx:Rya=UV/Qr>S^s.9_y6.^oR/ % ', 5yqH F\*AtnfXs!?}$9nMRaJJ9V ~g JIg8!duLF5i JBxia!.эMdMV &P2 @%}ǿ(#(5WȄJ"q>ĜnRJJBGHX ,s$*0Rk !Fq1,Ђ@b !^E1\KJRsΈ2%Ux)qצI)Ÿ,3b39폧Ug n;m;iR(!TZZBֹۻ7o>??YJ޴fZ&x!7M?^#ap3ԲL<8c0 c߷yeJO_Ri޾}״}P3N~?3O7|>sƔT˼BroPB/&gO9!D5"zS^npxVJ_ i隶i\.֧|9brڈe8TFKLSRNc.&睅F֘|ALӤQЗ^x$ 5%W1Rk@PrMkb>glV7fU)"@LJVR00E@v),lk/.,Hhc"\pK c *Ҕ ERRe:}%@ZX?6,1$ ٚ\yNՄ3JA%XN80h:ns^QH!ሬ+x i8y9Zyqvj))ccXj r.K1/VB*`C7[ +M!2!xbL)9"!Ps挦Z1\9'֊3LnfsKuNm;0\Rt9E: ZCJ\H@"r>H](՛w'8!B?V()Nǽ)=OCyH΄ǣPj?=~L7wj5/2҆anΣ!k!S?vRz8<#mgE)v]?< 583Ӥ%O1M^w~^BiVӇ+Y].l/V\67Jr)Q+A^s-@K׶`)=}*;OTʨR2mV /@9̥D@!j)eJ%I9 %&)sBNVHSteB(1F]H5?CήTLՈ֜\PsNbJikIP BA"T2I`\!Po/W.P AnJnU 9yTX )ڴ.%Wr@9R"ҵ]LȦqȾoĚBSՒRRLP)%Ik9 2*9B9G29Z-E /%eƔs,(會)_BOPJw pB){'9!1MaRN3UHVk%i_Cm)˲{niyٵmDkڕ4F@Hd̹x|zz<}9^OSך<r@)E?e7R)kwJJӧj"E* BB@zW1._?1^?i%Bʶms9Yow]%~|\O?۷8S)gn&fTJi` V(]I k9ף^xᅿ3*s!!JNXh%wTJJ4 "Z,dq· !\)D$S&)dQި[2-'P"rsN9DQ)/c 6扛.ɩ聲PRjZ2R9#R!4"d;͌#RJ2νu @itY*)u1s.J)˲Ls4ODL)b\$gJJc+"I)8R.&d BB4Bk0)4/ҵ|8]Bp)^R!y)qk|~z|RFi\iY|J&BJ,2Ï?j7j#>{mlV ׻k{?O˹Pkv׌[k9ieB)DeZ;xJ!7AĦmV{>~k=ERS黦 ?wV ӘeijZnvhnw_|wC˾_J-r9_]n]yFĚsnIGos}^RDF#ԜSL@-!5W,XxOJ90sI.H׺ADj3FCH!f.uȥ v Do=. &?2ѯ6J,>cӭXk nwpm@"L9[\yJTS !\cũZV2@1҂ :OJ6&9%۶s 1Ɣ s# J4R !uབྷR^>bX!TJ)xl@`R% YA!:\MrVJCcV$ Y0!kyRMn67ۛ[L(׻t b-e4|:ϗsLqG[BȶmR )FBXIJݮ9Yưp>?3ryx!X렒yZWm2H1sz]a^kqZK9/ |zvu{>M9q:3.p:/ ,9ROp<2M?~os{{4{W+RϗzYt_}emh뜡mZ+!2^v7_~4]Rqd-a`]Hǂ1v)Rk5<ͣ2XeVF_t/%1F"zPTPR,1R5睭;jJ!J4]\4,@p aMʧXk t\I&ڶ[m UP2ZBXy4nݲpFcJ@S M9ퟟr4Z7 EV!Rڶ1 J29Eke0!LJȤTR4_?}\ld,:Lk)!yT 1̣2֒Wq IDATQU4MbεzgH8_tJ9Zao}ob0fB>ئil()w7of=?4~?xp/>қ%D7OOݶ%hvEL1J!Vm;?=bK4Zktm2&[U /_C9uӮPr))hiuǸb-@IpE "mN(QBS R"(f5ĔЍQ jKU! .<01 v< RRe.B`I3)>E G@(r$Rw\TUHzcZR$X)T%̗32Vۖ!+a*e<,rNj*TժM)Xt֖\KN:BHMbJMP4/gJ2Ied1J*(%9#T.>rr t!@ -Prw74t:jABXRhx qVU)%p:~Պ1wolRɧ0sJ)ƈ5m5{ZkM)M)FoQJnmfYRk͵k<͛wj=?N>}/JIvn6J2sat>MZ~vd;ZʚfN8zqC4Zkݵ1fYlf? !R o=|r֮Fa8ג>}xRf?B|PRݼ*@ۚRyTt52ΒɜKUIRT /]e%Z qΕ.BZks*, fRj@Jo25iP͜SB)c1Ƙs9V!9Z[r1䂇(r:'%ŘޒvΗF(1`Sp^NG>jJ )p󐭥hUrsqW8!$xՃǙ2Iju9 VZT98O-1UkE@!8SGcp8VpB(mZss^R֜iH)zRbs!iwM!R|uQ!=c/4MPkE!rʔM %wwwT}G !޼}[JQOc1r"|t ww~Kn6MtZE)%B0Ơ/4e޾}}߇TcѺ<CN޻e/5mJ)t:GJz9]. ˔æj= לU>oor% R֮V2jCA?|1„]B8MY+p92M^xᯄ3F)#s)EB4 $q&(LBV6FJA(Rb<7#d$yĒe%kg!%PbBcJ{#!)cʞs(Taߧilt#8M(@ Zcڦ~}J Qʁs(Tko?= /?#;˟x⛮bRU0Fjp#`)qơԜ4`EHZ2K@μ HT Wr3Fk%cJH9hjSiυƤ9cdRʐPsș+cBDZ GAh o8>!UZ!%E QP#4]w(\q%bMjL.'ȉ]j( (ZKJrL QoYOi% vMr%U Jm9OBK1 %TJR3 )T fK)> R!5yͲL4C™i0O.2qw*8{|zR:o!ᚧ.4|M4W̮rwwu֘f3N ߼c9x2p&9猱v;Mb=_plRқ8'RfR͛ RvDD5HmjxQ٥䄵AA􋫥f%0SAQr.a1\HNja2q݌-1 /RMITwCSFR jTƄCE&lOpxvq<=>rxkP1\NpJͪڻJ6B?@)=Ӯkvng]r.~x_ fck2_ofcԼ)__Sв?rC1pIq8;gk%R<-۶1L>RrΏocL/@-9Q.c io8orH~mu]޽}~2SۛͧO>}]>̹XRc 2~sR>c)\jo47ww(7Bp3_x L)J%g3Y.)Ĥ@Rrɉ2Uy0]3geeJ*mz(+P99)5|"0QT0(N(scJiY5+JRV tp>Rb2ogTEB(CJB)BsJ{/_C1#_f 8PT5T\8c0jG>XΩJJC%PpUJI)sR2ӗ\sN<<&ÿSIr9丢H1c]g[RBx~q__cBMhuΙ|isjO'dr}MӬVc)fY PU\Ykiv}4ׯ_sURN]۷o~'HkBϟň͚":OiۮV|yxxBZk{B !И )3.CG8 P&nZu4W㇟SJڮ)5sNCpֲصw]BB,zZ1k̀%p3UiA)I)5<< ^jqCgmO)\;5~(JQ;D`ŝBHwe4O9g!grv]ovBPQ1FI ^ͪcB3C(W%D|گn$O犪SRƹ6qFa;kݬ[Ѻ֘<ԚBi<ZB)&9g\kRw6v $Sż+H!\2\iKcwSȶъFH}i_B^r)ǐs6RbJM߾vs\qA*%^;C5Vv>_23,nxJΏ0)"֨˼\>~گ_3*?>0|yF?[2U4|Dvn1L|?A6^_<\V]w:%7 u⭵xKNwMۇq;pͦi>jB4R7Wt{JBV -LPTm֫j%ӟכ/_mlכ]n8=_r<~yL CXL>9bYؙfFQD7C6~y? /'?rAKaH(Ap)'"T@sT\pZhG*'#!*1%i()B"}FL 6!.)X H0Uhb qs1.Sⲏ$91 )|Li%*cPTcûo+sMox!P4#(*G93} Rڴ #"]93pjqq%I#sauiB] iԵ%iqɊhݼSo/ޥDzeI~##"sKW -b` #  ?IKjVGddD{tw3c"OhԢ'xN"2Zg}fVU˲\o6󋜤=vS/܋˳ڻ!]ۭWusa EQ}UWW 8d3"iqҗ7/ww~oӔR%35jߟ_8"JO!돷?9WnͻU*zBi*WʏEՋ)9Ǿ޽.===SJ9z^޼l F~ج7Ez<ǢetTOfycJp8 ,I.ًDzOj2DZ;ո}yĘ1><< S(>!_<{ybau:~c?!xyrҁLS6Mi*!$9BDjnc ˔Py{B1M]ɔHqduЍm6Bއ`EYǝgLS7݂54:Lj046G!tUYu]W5|-mSiDrZm,b?6e]EVօ'"4)N\ES.V B(~͐3sX6HNU a"+&rvss}GMOg//RJǢi8>bѴC,UYo R$U}Zv'v?o?Ƴ;qw,˦i6LΕ8N8hiS/&vS? (w1٢YC g/j^ǺZՋ9۶9ӫbha` vb4j&,ϯ^~ of}yJD[zu]e_uٜN=d^\ E麪tݣhZ6O6zժ>g볮x؛fnO9ꇪ }|/_\.XOC?Go_ǯ/26?#S(hfHq&&r 1pRVi=9_}lV4:~_ RTrYYTbSٻjl"bjf)8Ď!K>fͪu CbG!835cΙ0`jiCզ\&,}@D9nW8 k "Bng:%f>uu 9ٴY.?R滿swv{!"]~GUAqw8EZ.Wc囶mSt:1ի7ma1$Icopڕj>>~~Oؤf3:,K\KJ򬜷IՎ.p? 86 ⦮V_?9/./}pjql S_>Cq2-۸?\}} 抃'TE+Ba98*+9O.*KBQK.9gIзmثP,UdP7LFaP?BrTdp,o67k蘼kУD~USvcx4˫eS]>]jr!Ǯ;7 3bsNRn]מ Ym8>N(,|bq)|f tز/BY4Mn>sn6MQ?Xw!n?8frūW7?m7o^v=~"OS)?LJ9Ͽ_ݼ].?nNCLO8 uX~߽)epC\W8aY.@*thrv۳zyKp}|Q5Er~?zq~1dqj,bq.ZD\aHnȄ(UE ]0Qb᪌ $$K)!2:DTtNcUciXDy"̄ddY:lf3N9!sd&F$"&ٜE22ATq" !;RN 1PIcTveY/3㘙I$FVͧR63$&&yh8 f1gABB40"TY%C*Y"'Wª:bg&sB"s/TUq16oa.!|o?[Fr6]@`&ɹ9f33$f0P׳I?o:cglf@H_m*6r ٺ Wblfܼwf*.*{630 ;lqngs@U }14?Tffsfײ/d V= Lx^X +f aH8r6 GFU11#* A(E`ؑ!P}!tղ\,\^ /)*19G޻XVj0C̨o ˺^ m®] DD!t.WKM)=35b1#pY, M|e?ERD|hr겈8ai9h\ m[\!嘴r#13!L(9c8s* Iw)]w+DGΥCŢR (:4~UC4RդoGDF c_ДxP$!L@08nJOwp[ma\-7UU笟?,ʢWw_nOOerޜdjR5}s1s2ׯ_a{^z\.?}tvqQ1ш~$rHطɐ)p:7sE\UU@ =c~||z^$o6۔r$(^ݔ}`4?u1N(e}w0T]1csC(RJ &T>d}(-IQ8elZD'B(0w"s`)Gr΄H͌avgK` %"&f00fD"d4S#3!DQSE47'ybf2qDlL9R㞉L P6O.Q L$gbF|}_ R 1! 6cG*P%6͈٘a "#!1 l+ DD9%"@@8s5g_Oh6e,Ac !6PIfh/ Dߐ@3fuA$*shHh3C45CF4_)`&/(9Βl.GDj&ȌfJhF3P5eFhf4Sa&$Be$ c#294v'qJf`x-IΩ.i{/\JqbUe8)"n.ww"SEd<33s&f< 5iP"Ks #.ŧrl8TU!)"/J@D}1֍ǧjSe2vr^2MØFDf`^`~Y6SJ9黮*؞1ƹ8)7K vwg |X0T5+qQ뺞C|_49h]-pG2v%zrLĨ`"dUbE©5N'rnu"82cQñ(BΙbd v#8fQ~ 兙};;??LҫWOUU=>>n.~?~|qvr#- bFQbS[iZmc,nx };Y./_:0 Ӌ?fຜVsiЏ;74S9X,޿}1Pl.NfrV [o.+lIl"l =Pm.$QM|INPfG1wtRNSm'f UUvX4"fSeT!K* FcY53uYdDO Hi3c]Q9jU:S9;Ĭf11}J )O EQfQ9sT ";H59FYT&s 3sSF03@t X-L)sFDUU̾UT3)!/EIlh J6B0be4>*,ٹDDs~6L6;ՈϞ.0xKo.}|ovw?݈9DPn&9TU_"oXI̷"1!8V#U#$UqI2)C&34${lX/HBq9js̘ cofUA"_<2PDgj&  .!  f0JQBu< @D*b4GMg@4;7G̐LLMg {8?*33gg)߄@UfÀW5)焄TʃAF5C>d*2#!:3sLjDUb.d/|Aj$A9nj&q9Xd&@r%*_mϹ ec[DBACߗM%Y,@jS*8=yDD@9"R71)OHɥ jLžqF v(=vM ÐDDr~-ZWila|rUUNt89mKDqt\UUvmGh:˲SJ9q h jbj}ZlV@ٷ#B)DUUۮs웺̚tj6L,S_E,aX)=.%2<LZ&|ޗu#g98==}nj\E51dwnƸX^.a]2ax4fF*=< @ "Γfr+9HTc _c5%30TdP(d94 qT3=4""$QEB$AY2/"(1y73Lffޑg5Ρ92UsL1BQ 3P&;U04 \ۇ`SU,""3g4Yf`]UUZ8'-DqWUD2|؏m"*!3q4hR5dBhVC]vSʆ<8=%+R$؍˳kt4OOۋ%>srT"J=yoȅ#z$iآԝsy8E_/SۇL{_8f7O^}w>wп{m/b1ھ/^w}]r{{\X-*뺦9?;6ugǪlNS1,!_NE]/RY,vO" g*+9zi}-^fP,a>"U"N#XB`0MRVf%4UItD8FBvӔ'BC"stTz 9DE4Es\ 0JVˈٱ!s6:̀L&,B@d$g*Ǥ7qdwMP8ҏIl4 !xŝJ~vs3:gL`IUhι,BqV΀QETkg1Li6rsXz>fHfh{>ɟ~wom}?6?w|l^gOLauދ(UPyrpL svr)xTCE<+g "!e0e7 [1 DL@98gd3Y)1гb=>UgAY83#3HfQT!geUsY IjJf8xPA0&6HyfLvTL,́9A>*n!DD@M0%CPL2)=#";20#ٻ$d=qǮ,+"%f*!D8JQО `=e5UKܜGϙ>L)Μ#,^ ɳBaؗeEH5&)b{,Oxrwwsݻwq,z~zx>,r4tqvX~=LlVPr:uϷ7/a/Ե0e@bpOy>?9Be}:<}_CUUŢmOUUrtjvs31XV i)ܼ|u-~h*$qMU7l\)VU軖Ϧp:>q!"Bu/.6޾~k\Nju9[ʙ ,ISU"9F$M)!H !qѢ( 1uuBDABjYI\M=&\^j(*8(lXv12z3kiޙv`vm]DV"ڜas*)*4);eG=(cSQTs,eA#̐%?{s(C.D$3!bS<29]@!9$șQyv4geߤOoϯ[?(Vq̲03TT#;@@sb tJȉs6G ԔDYԯ:?C$SBrLhJÔ= 5 0AvL&;DCTvnBfB"g3f@Fd@`x @RUCUD$01H!dL eT[ yB$ADBC EDd45"V@05$5SJT C"$s&$gvn2! 3H DMdpyD63Yts˼sl=N͘ U7T;3PƌJ.,̊@!8<8 AY0)$dFBťJ y Aq dy2SЀCEݷT{N)(+*mBpHX5Jξ(!kJIUwĬ*XKBaL1Ub4`Џq^Ji9Ҭ( C9 r|:LCD.`l@DMC_3sAtj)8}w@ӎx<: ci IDAT@:>B{֜r1i?u4gŇB UL_>~1zp!b].[vaLCR[VM]4Ns&vs*4EGj_TDrF=/vߌ9NE8UU=M4 puuo~/_Dm~?#~ujv" "r7b> }U5n.΄Lf9'xڷ9MW9(jes%KqnC?@E4f}>͑nwssxaٴmYٵ]Nm9Slsv;LczިϷ{<q4N^Q2GuQ )/ϯƜ>~ڞm! E B///޾.g. Sf$'U-K:Kb& ~J;VqRL$H>GoB? H˲軮Y8΍g$wM "٪bzD Jb(*b?j0McYEUB(rbU9eYz@<X%2IOqJ"V 8!x"13E ƦS(g՞YZ9%"8d#A( TY-3"0s1e˳k6SD]TfdD` geȑ3G~G#Wv?__o=#WH9ͦd~NŽ#S)!!x0&s %, QUb3Qs! !0e9jfRD$531lΌ:`*57Q5Bqf1ͬ*9H$瘔hNDhj}#q<<>}әDOMfRIS>MC `~ iSӴoK|nկpx+_ǧ~usbow5G6 q7/?vPÇw߆Uͣu8?}pssz|_< 0FIjZEx]v\JhC5D1Ӧe$B4]]9Z~q^=|KjWC>?])Owz?Njvp8w|x9_Rx?|+\zsקeӤe DSL!%!Űc'L)E$XZ31\ܴa*L"HZƔ45Bhޮ$3jLs dL=rX׶\6S ^rj"ƈHͽ.ͮ 9EVAP"jX&0{p9ES ФIrvK>v]L$"QXȃ 33W AFeK4!D"hΉlY@10"#P Qx t&raXI @DJdB !2 $X @LP}տ^Pȗ@hBhB`@,NP Xa<&a #a !FBL2 28DƤ^c#L^b`a`6 ‘r<;1*"z|9FXCDd!fer([Va`"Cˬ.&!d Bc'Tf! I$ HBu9;SI B.DhAPU8 3&A D.#)! 3#hq+1Ѣ B`DsbDC A CXxh@X1)ITRJ'UL m3|Q]-7 BFlv.Z:y,yP-}גݧth NRP&& ȑl.m9as)$a0Ej{EDPkuԉ% iN˪i=CL!t9~_@ſSMVYMHZH tM`+uIZq8O1Ƙ %WW(DVghR'r\u@nvbfZp!퟾>o^}5p}}våx>bv]0R4ݧOKV_v-bam "!εN4C۴bءZ9绻8[RUѻ<^iL!l(DTÜg@ mh6Mfpi`Dp)晑6Ԝ@i/v}}pVẄPII0 mCmOEԤn 4M̘sten֛HLѬ ;~vX8zeF'p,NhA H,aqa~fjf!Q)nddlN+7wtx^_ﺯsJ# "l j!k6ͪ.I4\?s;XpX5WI7̥ůATy#e1a8,ĬX*{jB$bXE ǐWrƄJ(dFD`uv υ% Ɉ`A_D!A-AeYآi Q"xpwbs3׶!JhZ  *2>3 ,!:baF ܋p3 d4i$јB"\řJ`N9P ;"s 3NSӋW9`ClchA j^;eN k-ml}zޚj-e^w]w86r)ufUeI \s9]o6x:{Z|瓻WIb%`J0 <nX0sN*9d\QK1clTRN-9h~͋[U]RW?W۫秧i.."٤Zb A՟74޾}/!t0U}zzl6<Os_B7 ܈0o,V1Z޼@<ϥZm[קi rm٦i6۴|C(qF B%Z Y )rkU.6]>]n!:4W!S^R$R13 P-'B\wk9PUgN%\b j DQoVYV@d@tq55VWc#"JJUD xffF-yN13s_Q1wsw#8sYz<0!ZBwtAC!*$a1:JU S칐MfNf\I8#(0:@E7 J.( ]JHhȜXRu9U0, "ZLL$ZRl5jP+%T57#vB?K$R 90Ԝ -XRŋKBj"@Չ "#DYg243-5ƨD fok&Ykϙ"j˺a9"e4'Q`jnU35ىjlTff(.\qbOL2V@I4E/&cJA07^%c5I~ c ^&گ:"m C1 :U0 7AbAiI%<2(i25f"4M]t%bGD\ ?ydygJەPr.Mt f0@kfmN(<R)zZӁQbha߫j6̴X"gF@ZCٮk b*A|\p/PV}B}-M!4/41ÓY!Jt,n9VXU7vFtrwS P`584M1FWH k`*̧_Z1Y-%`U/ xD6X1U8; 8*OAب?|/~p?}!qĀ@9^PPks4NbmlڵK׫nNU"TTWcR&T2 Kū5mZ]U}B*?S)+JA1sd`u&UH~$tZ`jD%23:HՑLUKѶMĴVe"L<eZQ0$Y+$|LP؊7 7js@(|%DvWW%XKg VʔBHBe]]LC jfXke7[DC,:PXUDS*UcjiyiV'4Hi)9"iv7tg4HB:H!y_}ׯEu{e.K5nxTduLo^JYêNKRH믿:کv\.ܽ-wLbiuC4k$zΧn%3nO xIC&fn<^b$$@Pm^"Tf.4$z.;Cݪ7SusjϧvRd9ʼY^ki.c<^eW1M !&M4O:;uLAa|2#kQg]wqb, |шMІFrƳ"\vkV(vGhJm41q̗IEKOq)#B>>ns D^gg<<{sT]sq}:."Y$'S N8Rӭ4B$FV 5O LC#Zelզ]r]fykc{mVyjiRRUU Fx.H~E1yݟ14]\xzpxz zwscd}m;7Ҭf wv.aID>~,j@B)%ƸZjsE:ŰgHX13P;>񬪫2io>!xnVf6ݺ?y/^~7}n7uçO_|fdFĶm^\3xxn&X/ty7WBaޗ?|[MU^=aنVCV) IDAT_ݩ0׷35?!ms:==Xۄo<4u-527ڔ'm㋻7j8 ۤj,V^'m`vF/]>>?ilWVU&fwCusֵQujO1z=ND6Ocm!uyBjuDEBJ4ٻKaL3|nb]SjzbCD5&u\gnVZ#{1S9F )@ 1.=3Pw\5,E,yL,DASő,%UERjVZ ]WmBpẆ;?[gj:>^'ؽh@d(`4,!T$kP2!V"LԴV @Vo8TkYXLBr Y5&FR$:!Z ŔUW$`qQ<jE&=ǧq[׿~N߽;غaHU/~yUkc \p9>}zmXy>l6+UE8Ӵ86罗7 1zѼ?wL8/xz+$}SYǏ_NM !?pnzb/Ty6?>ݾX"׮;6%ԮUw2!"K$G9NݙMBDXĈVh́&ƨc.M,@Kݕ$xNs6@4\ HݺRtt0VB`fD-P$(^KA9p-3pY]*7%8NQtY*lĬBFB` Zk檺V h1YXFsVʈ3fhQ5wMLəIj׺D% 1 B'f"@ʌm },%G$DlH1L%SD%, ܫCmRP)8!zLB (S B ]PP#2]Bt \Jbl+ڤn<֐9"".Y|9cͳ"\H"`ZpgЮ6BSۯڶ-&i)j$03B\5M T(1.Ճ CBH){p9h吚cA͆˼٬11330浖 :p w0^ezʐҎ٧陈۶]6 }y $5M-e$lj!IT A^۷__~?Nm}m^W8Me<Η>~<ˎzw!mW4iގӴ]j}g?/vtIxpZu[$7w)JDjA2WffPa"ɒ\ՁeѦ}aC1) qEbPr߁L-'&1BA1bPFT *ǂ%Һ#+2r_v@kۘ1-B* F6r,\Mgn4!<IhxAsc*h8Bj]'5S3Ѣ]r_VkS &bӔ -) s) cTf#*YDCqfG)"Q"EjgUh@"Q-Į 3rϴS3@M˂@TTgbt QX)0\&F%l#a)XCXMǮKS׀fG>w4صt>] )DjڕV(is$je4ÅQZSbZ2v7iev`h֦ x>Mjy5j%")0]ݤkf @7¡q$fJy/"8vM44O}! mqDm6]le/D<ͦ/yu8? UAPo8Q\v8}fr%<#J a/MֺEfUtMuMms9#qAs ۛwrf⮃ǏvU֪O \]zW/_JٽxٮVART螮֯>< } x߬f—|R$p\[wW׀yc|~>4MS5Gmi㧏R(no_{㻯^~jw#Av>@ܿ5v:kՕ<>ūR咟~tBZz{}Gjz>xO囷c1+{m۹;02Z׭><4͙ _~ŭ|!otbi.inw30 8@x]ݾ޹O e9^|}el;X=<|Zb>m/ \_pc_m<X(1?- 1͛QZŪbU)o_l/s&8x&ni~ۭk"b{v7VYvMc0’mY 2AL@bPFBH.UGI*;۞s}4_z GBV}9v\%m?a<(֚j[85⒗Ĝ朷V0>\^n!皦q6JuJ&Ԧ-"B KIQ 9es \Ӳga[Ry XΩ6 3DTiHy6e^LchF=~* Ntn>?ZL+%DgZZTY j (Vl TS R^P˲Ę ӨN1a  s$$Nɤ%"xc,`k+lCV (F XKBʶb>1SXPA%eJ[il;ϳ(mtS \ERnhY,-!pz|D6ZsP"9nw/~ PKyӳyrEBշ'p{{3h|W|Ce=deOBӓyDǙP˷cU~}qQboq؜4cZBߺ[?u?F;6np{ð'J2/RiӸ??~cկ5nX?;rss7ϟqqL)1pkajnKHo|՟k..?+shnmڛv^bwĐV?ΉVyqtN4NS1c:M8MCv5Vk7>_u줽a2Z2pe-ED%qɑ30Nں,/;?G#(mӈU%9ej8L?[_?nޟ<]*L5!dAIb da4V#0̦kKH9Vs+:[ ԜXZHjF.BEk4fTdh !II2aٷֲ8CLK*C WV!G()h.rʩJXQA0dbJ T&ۛkhR JfߝHQr2% s+1fc]h&1)Q"dhSZR,0 3X[B.X+(+%2JUY(PAΥ(S%P&)ZRF1061zj4iQ:sD)z413!@N):+ 2VS-b.FaL=}k(+iHdzw\ØOse\ #4j8`Ujbv~fJS)mg3DQP+q)EeU,J^ݶiJ)EOZr(9pw]+̻VҮ"33] k.KL)*:K.tF)5)Dl]Sɹ\BFUR眰@BhW=s|l1{QJkCTZns%3*~3K-@%V>rp@(5EJU-MUƦiP4MĬEbj5Әsn&ƨU߯ا`r}w>:nՓk& 1䘋!VVn޽\oWJ:@J_|~xv9Q]u+-(e\TR>==<>:}SJt/x5ø mߗRzv/n7\ ߸n2~ ͛6j?G>y?0Q)A0lyUZ M '1Zp PgggO4t^MhNp|tmvM71au4U'Gt~7m\8xYaw =P}M)vk gg}4yth-\Gֺϟq۫tx\{~>!%Yi\۰m]t`"%W4x}Fe7n7/kuPE^5YuxsR6M`FRbxƾva>uF9}s|tF1X@ sls&U 1Ӕِe E@tC]4j)ħ65Ús]~?/vkCfˏۯ`V|[w~ӿ_-@ ʶ"aN䔔 SH4:̂Tu# kqaQکkMͪsU/ H#& ETjKajy&Ŭif&3M{Xq^@)9j%f(ZSNS6V+QJUΕ[)EHjA)rTc LI 1d"!)dTQ ,%JTB5J 4Z$B 'g]˪lYJS.ԮbdX3(ɵS!8PS)e5*%V'}Dm CTK ZgU^DZeIZB2)RD\Kαp¹ƵZ,֖(*a)ւ(EF%B8]\J&Wk!m8Y@U]Eڴ%RS PqΈP & "$Tr$BAV'bcl%&exxTb\NX1Zs{tn2Rr\戶V1}I!䢔F@L8ZsXJ&TI9?<<1m;M#$<#5f 1i\lL!A 8.JKH| iaժeff0McQkLpI"V< ~@TN)LDB+B)4OֺX7ϳm<l-9h}>$~uY~pv>8_ټlYywoy(a_|:m·(=UTqyՕ{z3 @tp~~xww]EtzOX IDATY7j)IP*)$/m 2MY_U7!׊̐PSyZ%Ɉ)(DDVF۪yZ@rZ h}Cd80# dE)NA"D1Ȕ*  AAYVhdZ@bXL(}B)gBmӖ2TSPkPJ%1l,p c[\01ǜb3"B۵), HbB̨&%9Ӕ`vm벌9?s1 )k~Y&(6LfcTNNN~uqڒs^fXǚt\Qvm 9v;c33RR"D\01)|Z72AUHqH[)Mw)޹TV4=s qOOey`nⳏ<CXb⺜e9::jvQ5Ͱ_~> a/듦]K\J.%B~U[do4^?xrH7-۴ L9sǻwEׯD)`\MX-oj1B7n|~rp`FO9ezI+뺜%qQsI칌Nj8]RT Yhh~ǧwTk_sCW.  9iľs1L[14L]gD;0Qazyռӣqő=C߹q]SJjYXN⣣q{|:8v !0'-jl Dh"ofF!#ic"IYe80iVs!# b)59M, ֨ iC9Y+kR?Oo~}^[E%Aan'? 5%Na)>Yi1FjܚQ!)J# a I(M'Yzj-BҲkFI)B{_G!iAUwNLk#RʂqV UKmD0k*s6 ՗4)L%q5"AaV+Jb94NV,FDkJ@c]r\jVY% 1tP&eQ\7ZZB hTyY)ήQu/F%,ZQJΞ&(`Dg(נVƉ,JPE1`L(9ېIjB*"5!kD)*%iE9#Ed`)j @<arFcj!uHRsVF)U ZWT*)0碀¨9Iki{"m-ivU=C^j+%{IJZwBwfRMۄ5q363I)VԴP.@)rXsPH)?ŘtcA3+BUe׮$K հ+R-"Z*"#c-V% D̵֜2')b f&NaRX0ήXPe뾋!,eܛΐr-<ߖmz} ꝑRzsA׮[QkB29'$ŠD!zbψQlM hA.(~()T@9GQ?8o6Dŋ+lr߭W}ٶiZD,) Em1믿lخ6Z)94bZ|ӯP_4גS4jX0 *R0ck?j<>>~w"ލ7|^z>>܈fb&~{Ϟ]8+rӵO{ecFaX5ZQyg C-TBTIA\JHưyߴUaRJRG=$J@+/G0kWO>?;gy='uVڸVRl¢2 ,$Jk]JrUVqZRĄPBuPZfT)Z&КR%(uV@O_7 Rmc A *'X d1i=VBL5PpՊm-SMa$@v#EDYd5Y(Y+N?IXHP J!QՊDaγ"O+%go ;k i4XP!Z6\bPrkSI7(q>hͦ1FYմ0զ՘Q-mh%Jq`R\V@%!b&4Fz%3&puFF̜3d\E0ƪ=%p)9-֐f%u(]s1Pm0Ǹ30%*%R:ٵ4(e5MkR"sHj~qeX=a4(J `e 2>8Jh'fs1bQ₵\ӸZ+1Q.')m2qRƘa{#"FQY "bVƄe4Ms +%~^AɇBa~+ы!\RJifa-5KB)D1PߟnD4 眘qZYRRM5k6DiViȒs"1_>Y-vij'qYB$b@\1krP2tݦ$`VPhYi!n\ڦ9hA$,>xe+z?4+S >,w7(9~?>ivj^k,|{w]!^^cL|mmG_'c뺗{؎އ=ʂ"$"wĕm7__>;9{o޼~iC9 奱Ңq<Z+P}9=oK]2¢8%\k; R&c֚S*ITrJ9U:1bN@5MC. WJ*[5TƒN UK+[R ~ Ȱ_֥V1ZcHէ,GJXv0ZZjZ5SUKȪP*Z #EU˂`Ӹ"ap\+9Eb`beT\f1@Q:C(,qvZBJi%B`t!Juj]!VHX`\6ΊfR6ĩtYbE""V̰E4a6@DJ/bD@DD2sygcRJlka B Bs?vOoPٚ&+RɞƘ$2姨q Eu1yǘgJgj̕a&m 1uNZjJ0[f{rc],oOŬqzoR>ޏ@Nݽ`JƑaIZ۷_js!jkcCLHZ֛nS_~٫WNBH]-՗_~J_\$_yFkq!~뇳U{}8 qn뷇noZ&im)4ZuVkwoSծgg}szV+a՛axoݽ}Ӕ_^[|{z61> .z?gfzꋯεni]J!ﻫa?SgJ?wW/S&c;(,8G r龅 )9z5? krn2.㞴f :QJF 9Ztbkye?<7b՘{_Ѫp} BJg87@pᜣ1DkeXI4\@gmPc+A `ʨVD*)MɞkEZrfVB@ZM\B!~B~JA1)%s 1%_GPҶM a&2V5AI$ѓP61Zs״PRM kk @Vd3fp5)OeBFtG1a6*66L#AuFS.}kK%VJIka0!b V@E(sp {*<:c6 N<:9swuADP0eatcA\HαBU)gk'!BQXkV"'mR)@)Rb(jM1S _0*z#S1IȪW̊8REҖMLΉRm ו5%rt2,hI},9imSZ%< SӺmr's dҶkOp@F#RX<:i tbCbOiRJdFZAk[kv<ĂJ ߺkR& \2eI)A]OXs}*U!T5wwKGuWWTr5 rKŗ[s-Zی=f,LsXu}ι> rB0eZ5ѹdb9U"v-9>{cTi_~uyۯ>'LIάoފv] !&xB*"V_ گ2?_}aۻgW4-c~&b%߼dqi{sa7\un?쯞?ʚ_|q*y8{էg'xׯL×/~t41TcVwg+aI,BMJ͵LJo1gbYF4$2En+ ./Xl9jtM>?oVm?43(_W4cO(Pы~bх%lyZHyvy1/SN az{X(ui݆0U k6ǫ3R*q"JMۧ}2ю070.K<᤹[!|u>%k3PQQj\TkleAz^okM aO<vN &$B(A@I8/A HHADmwuWUWz{`8I>_Y}uc*!甪'W?Q47?~s;@X5@%gS jՇq4U:Q1Tʨ]3ͣ b}%1@N#1[VD2Ciշ1gVg4**BW){t))_\[gQ*P5ѫv-s UJ!8qf j] A-Q 昍@q)3 (%̐KmPPJd\;b :9ׂUF,b2,%ϩWFK%b TS+%luӢx71QQ!nse"ջrIQf?cj Fbbt"kvڦY JH2"Cj VJ~ iJŔZ(IeT8anͨ IDAT] @q3EC F~s,O]c׮r"ViR )nfhjaS@($G?\q:䜧,\k1"ͅ5mӮsYa}ߪU*Nvsr ӴX \x޵vew16w]-ꜧL`q8̣: TD9E4cUkKU$$>q^uMWVq?ke4#?8>>z?Ѻ"=y¼;웾+ *Wɓ'v[ XNޭV'RɓggƘr Tlz9N[kF/.KDnv̀Xֵ]!/>{G#Tf?~iR99ec׹rÃ4K4,Yril5]ưuzr +p\M_sжj`DY)8~[tI2Z*ޏE9A$5YTJ@vvZk12֩, 2 `ql?DA5扑;?ReCfbb>k"22U+DŽ@-&THS0&^6D XKamɹ9cb-H5*,;P*D2 c} QNE1גjR,نqU#YJ>Ŵ\v9Es۶], k-D5B U(smQgֵ0R6E4.Ť Lh2KZSx_CJ)4cVrhk%ƚYӀ2 ) s3 P*yLCyOORb<[BZ6Ly.Q9%?jMcT@ĘE(S*%ʢ)'cTJU Cj%ZkFSIAh+e+$(p!DڦBЭؾ# ` )RR5Wq%QTEDT+Sa&L2Sb)NS,54-r$MH\j1z"ML&عxSwi> I5A5B8/%i(mSZhݵG1Z4ժ )p*2`Ѫ8 ԑҬ֚ϩ) \ 8 32)ۦmO5a8v^Xr,o0 ڵDH>BYhnq7vNJHxFkↈX) U2ϳs-sJʔRbJk}qѷY 1U"1Pj4JxȉӨ,2+0śO>pU;{`*%?(g89>zN!}krF"T-Eob*/_ [_^\tM[KviBQZZf<_l7?8^#+=:jm[#׀\wmײ~wRsm֥n><acȟfnnnr΋PƐf-Asn ) ]ۻ"<|{:Υkns~l _~?ǏNN3w۫wHgKΡiDkno7a7ẅ"S$zZ޾}蛶5ĩVҚc Ϟ>C Ak1ZՒ}WVɛ7oV~Z0xشvV"MEM?=xx6Zg|a 8f?Z5WW׏?Zu6mqwrvk;f|ˣaiYAiPkRF*dsJXD!0gc*ƙl0h)5+P9YmDJY./z7?>cguü^՟Wo~t1"ט&.:s5i P5.PbH\jV"( ѵq(,sMc3DJ+hKI\cI+@EL1I; SJscuy>'m⤔_͏>?8nr0"BML-ČZKɾkR< {g1RMS xF( 53ZR5J1+N[]g&uBo}8b9 3+K1IьiEӈ @s 1a%̩i<00j1MȄJE0րXs"XE!@x4cO8)Am}_.kt0F4yD(1Ē*\4֔})¿gB*ƺ۫raDxwhqm&i^?a8;{:iaѓaJ%@8E8"!Q͛gϞ4k㞩F?䏏}P&X,qߏ^)]r=>"5mJaN޽/]fasBe흵OHFq7!z܏y|NJ\]}Gs(C-uR\ۻ9cY-zmb640Vwov']wlo\\QN?CGxb=8Gy9v#eamjR>|lsO15pGXi'@7K߷'kѨݻwO=Oa}Z/wW@xvv: jr6FmM]x?+܃'as tg>gg'9bq{sv6MylCj9AZnQkr@PZH(AR!#sIblF ~w8e!hELhN`yfJLqs`3cן^LO7~W=iv.h`-fuJE5RLcQP2b5YP>ʈ0B?Oj`.ӂP*$-"J)яIZX[cW+JUg?(Ek4O;ʟIDֺTkB,ZS:[JEHUjIZlZuFI(sDL4j H0 QDPK"BĒ7K"|?J (PP,J9Q8Z2aQB, q_6Bq1pN^`X3 VABFt TbE(ڈ1*96m{L B8CbJ(XRJR``aҮ)9?Zgl2k%@PS ќ⨵"I*@b*>y*az/qsE0i,1̂h}O?a)'ZJF33E('sƹʘhs 9BjU FkҬDyd농yT0mrΥdIkC$KI~ ZkkιR'Hº>,&?61;bSj&jIEɥydu"j 9ƒsFZa 8r0*2"V2zc@_q9}D$03L]wU BhfR8Xrr10Ggt Df)+cs)8H"m$)R0"XyiL~!ƐNbȈ|}.Ok*x8=z-CnPy'_w~Ǐyj[wW]~ѯif[+۾ B}4N=WR Z9 >Mk4\_ook,{c1k~sW'Ǐ^ncB@®u篾lmfqyȀ^|i5[<,GnEߒkΎT?^hwm'.R>xwӜT?#kʼ^[ӵtxmxz|37ZO1D7wk|rr>xwr|tvv:ۯNO>PbuX˷x"ui^jﮎVzS>yJuZ?Gd(tuu/cΎ/.~?/U\Wo{۸'SgD(C kX*P SUNӭVȌ%I[- jbe,+ŵ?SMV[s0nrMk,f¾˞v_w?Y~__ ?z<*"mqN3J(%CJsĊaur񐓷Dm5 4!ӊ"ToB6ƸnAQM"6m[b-!Nj1R3uf f`ޗRLLJN91vݚ58Zdb"6mc$׊v[knÖ4a9M1 u񽦿 ⚉JQ9g"fEQAb0~.s`(w׻٩;{3Z QJ1iZc\vyP"?[Yd?YH)ZJ-o|aSh\3"OR6H]1]-b1Ujcq!4~=}zs{[kJ)+B'|RYk.//_`^{v}0Ji{ss7o^>Gǫnu0gҩυDe @O>],0c ֺ?ǡrwws_.{aJ?ps~u-WxŢ_kebö,̻[,Cq,HhgO.(~>oeչf^nك i>hݡO2ׯb/..r8R>~U2nsg\-7}Z_蛟TKM1ι_}j=GqnŽ^RڦQJnn/W˕sl]NӰZD?>>*]1iZ&Y3뚾_5'OF ִ^/C۶)PrZwɓp~zߞ=XܽwַHYE5(tF 5+Ƙ' lO[4FQZ)BL>XmjLIV$4.EoRi HD!ضg`(˛_;/o/%O?R}k?y݊~4z0XQ #jP r%@ Jjcf<ڮƽhS":CrVh&Q湖V0S QJd"tnރDV$ 1s@d]a7+? C**1S߷(kaZq׵檴`% YRkL@F"!YDU>q.(ru2G`c,UjEy>i{SjFZ9_n( Zq)ZSLHHkc-il@EBs$(nqHE+aN1TJl%T쮌Jq܏!H{n۶އҴk7>}: @}xqjٳwMv46Wfv8lGvjiz}4gaKӣ~\m𱔔Kc6ƽzJ1g<~r*iMXaMm~σkkNZ_ybyu~ѷ)XáGyn> qʘfnq]zۻ+:~>ûa^x>c!PG߷}յl7vϞ>>>^}9|gow)ǏqJ1I4Mc\_<xc3tZUL壇g}߽{\֫vw7^۟2/^.W0τMccD)@Xyd2!kHYb,PiT\1GX}ΩETk*)U+5ÿ柀/^ۿ}NS)8+6.92hRJ<DE7NXp`cň9,qhcKNblcI#Ưm;Vc-Paf~=bV#f:sjUkYtN>[? 2BK?O5J @F\a)j2Ɣy`F֨٢n IDATn01"ajR kJNZ('D8iJD$BBK"RA7N)ƽ-P,a[g`v\*1vG,i[%RဘS ¤ZRR7SD8m[,)\|<6 F5=Ceʢ*J`a6Y< DvѪ $0iZkT*!̘K)x?ONXRMU ]YP6XsUL¶~ѵjaABgeðߺ!甋0MS۷9k5B(yb%()OsNK!zf֧51y_hmD&!J þmF~cו\͵nYbP|LŴèPM㔢7Fv()9f@5"s)Zmk-df#!A͵bu8RX/ ]b:jBPT~EP˜k,f F.%RڮjY4E?mn&Hېzsts%bP+ rP1aʏsEma4F8qc+p)i[Һ4 @?S)ƨo^(ҵɫW?vssS%Z~V!ichZvFgmctC4W~$B^_?}ç_.Rj-A5ZɃ/lo;{Scze1=dֶos,Wvm?ξXs 9̍3P< ĕ0&ʤE @*CVAҶqw~7 ~_t-`Ja<05M,PD+J%M㠄tc@ ǡk[VkfF)+gX5 0=!krDi^)qF[\CfFa:~P;Pr(9#iR]<]C@~Bbk`B 6Iy rID1RX";{-ZD+d-1B9 S:Vl#bF$ޗkKð޿{%@2X\ գ %a]^^Vko}_J>ݪV=7>Z%nfԺkv\^=}iag)uw:NCL C.ֶd=> ~ӟ4ʵMܝ_mNN6w6O"K9M-(ۭNa2.~C(>>z$U$Q!&dbNM^^lݱOW*^]~wRDTJX}YO\\^TenUKT/_2֙޽~~cm#(WɺYKL)ŶiZ-۫A+*1X˻5'i|ɸ{G )>pMO<8lS)1șo;XmU~"Ԋ[-WmO_^\|oJ>wM\hYZ#Vh\'" 6Qee¬2!践mks =y3e\j%}us?'o.s>%EqfkO?LNi]ۧR tvYw]g;c16&!&34t@UTmEjZRJۨL@&`l 5||wY=^aӪ?Z}u}dEŕűAt"gτ0uOgE9aB&(k!(\P} 8t:c(Ɛ1 eu)9FUt1Iy&@HmZJC?1uJ.u_31]z; \0HC߸䊢brwqC"k+`Z@hW;]JygUi*͋o=j?s6YB#%' Ú(1$( 3#qܔ4Ȑ E6B4K-M t+!gЂ1104"007wsʎ2F hZ7ʔ0d@~8%eH1YJNB)x\,DO3HP gwCYUģ22:&L 9{'R(혗:%KɌs)&HHn^~[ͤ1q)ֹP0"aUBrV  : .D΀ R]s]c7yi26:/B8?c= Cƭ&`ڔd pc6 ?:.(y` h3ߘ~`ǃRӭ9rg{+hjA*vxx1MʲXmZc(`2olmM9b{ĺf;7V1j{ل7Zr 0RʓBeYEF@rk{1g AJtɳ\ 8kmSey^՛ji);/o߾.Pl6uj/֭[]qκގض7vvv`ܾ}f_ݻjyRl ?H3+X}=Xr-}E9ƣAHs:~E⴮jm"l\qD!%$!eRʲ UC8 ɌD]FsZ8C$sv0H;$ rᜆf-̦5A I|UYERJf4ڎͅBRJrF@8.u^P EY" )Pp.vKeP}p!P/fskg'?ӏ?w)Jr|9cyP)-j6 "2H$컶дD1B<>Un;onizh/)fKbh,R~2]B$'qD׊KL!\;~@B䨄FƈR@gB(º٬ȧS@(`! eQP <Stط֍i|`hXk)l 9f:K'3LRzAi wBhJS۞+LfRFb az&2 }iTRF?4)@%eZRp!g?<c3 _Wez.*EUUu?@˫̘Lj]l)-),_4+D*7*ښ?z@kqŅ.B(Byri64͛7&|lVHX5Eabͣ<*' 6E6tݦkgE6lˣzk6 @}bk\˛Mszzxzz~`h7gt||^E=/V(ܨ G"ABb"3 hHuU%&9gufuɼO1*}t.UObY.zڷ3Zi?H?W ؿoxu*15v}e`:i3a$E%T9 UU2b$d9i&0D!KxBb1T/2/ $*Γ 8yV1,ӌq9w~J]7fy>-!R @];h'9[v Å $3/0"H0RcR3 ,Eb 'a2froTdYfC6A&(BӆLa\dzT1L:zoLpd*˂ ȅL&0teYRR!^/MG㣽[(dR7fuqzrzꪷbΐ1ƜVUmۭŶdbXgrZfڜ_D0}.HJd\-11V b k"Ͳ*8AQF{<9?;iЍy~΄3!E1.!4t]SM&u #޾{sczY1SZqyf ϿH@@.jܚOfӶݧ2&u1BU]3H,P˜,x~z4\k(-ft|Rdk{ȫz2sΪZօ1CfUvb>(>pvzlR))%EW艳;CZ\j5 Vᣧ}6ȕ "_oݺi*gR=E}ߴ&/1}4[; nݼqVդdLCnák0S<\(9sL6. )"g KΔR[ۗE zξ_nТw\w؝YM^9;v (x8\k3!~hbZf !9IJ"z'ޛ<)TJgȽ6O"CAIE)a!xgf8QBII (2$wQj\ )" 56+ "!mP1ͳ{Ї>m@0D8uL+D,@E(_>_ﷷoGb'>='kU,b{>~s~udo{6<?:ȟLl[pR}[?ۓ-cSG !X)F]a+TtxaG~3[?夞udRr0Y5>?yZ=yPO&.rejyq:f]ׅ0T~iV 2ϓCLyn..N./{֍}ص>?Y}N_?b z~ʟT<;oߣW%_xo{q?}]x,?o_>Hq?o}rfw}z_yRgn[_nbsR UoEMvRQۯo6߬?~ɾ5˯,~I {_ G_*~ ȿuoGv~o~<]{pЩooH߄xW=|?zz[?*wwF\LV,4Z K䝳B)Z w cju} . [%ЭLruf}]U>&`PJi%Co5rR!REL2 i7!̎ e!r-L^4mBHRI)ͅaHDy1OL !2.PB6b>UziɅ,Bb\,SQ.:J R8nlseJgfML{ivuښ/GO| 7:KDI<=;Lj!xJt_眏v϶ڶC{{}{2D["ϞY-Çd!l.:f^܎V͛g;;;|nqp8&ceQ?xFkeu 7m:?;sbn~r0 )L۬LbtRGOڻeڍ;O8{{{Fg=x̭18&8rkk셷UhM!VuY1Z4FI)ׁʟ~٬L~mN1(FS*G)r}^V5"UuĢT]\l0Mt!EfLhR?@ a[v])gW?.#k;r!elɤJm!I8 V+ 1#nJ#!21y9" ˋ !%cs-W&1)j1K6m Zq#8[9Oʦȸ 1Ƙ28) $ !hGiG(s= ybPd v) Db@!EPJuW xS˟S}&{?҉/5_o?=|v'3Y!;(?[I,eӿɇ{V|vӻQ}7;?xj}WcAnZ/~_˴n~bwscWg_<ﻑR`_7旫Ia ?f ~Son~{"ql4?{pmGs`?~Vٟ:߶P|4O?bU?.cY#?cى)o|7jK'>.V\0qX5+O&YY29}'BDRf$W!Br8D1sc7KTkA+RG;[M&֎ wNJ&8ɒc0 Z,VWWRzȲRpDE8J4:R)k.D߬b`\fz) bhBQU!" $[^ȧh7ֶU5GyNJ"C )ɓ9*T;),ϣǺѺ_JIbb0h-Ji7Le4~`H'RY57(D`6*r͵s9΅m[ph{}X'[Bǵ̔*:+ r&$&&p:McQ"JY۷Q 6t.bu سG{[yd2ٿZ^Zs^GAZL\+t|a3&Dt΅Rgg·|;1)B2BJ,JxqyB@NJy== %;9=ٹZںVEQfY,3_???yc7uZ\n֫央aM>KqчCG`ޓf2[gLUW'byaLߺsϺ( d]cC :7q>**ZK~bi:yusC?4'E߼uSfwi\WB08o8yr-)^L~˫'o޻">]bDԴK!u_wٶdJ Nzxۯ)^{Ѷ|bQEi#BZPprx$!,C%j(űWd.YY\J@ΌQR; :EF;8 E^cJ,GЭ0R} b DY(r.fZ@J1C(`sI.,h$'EJ( 2䀈6EFSd뇪(v&>z!xޏɳ흐BKRd<)U %")SpRkհu#1H!m 9Cg0"hU@^i8gBȥL9Mǘȳ6c#fe X` B` =3ϞC }y18~zB`Q`1x>/ 4؆vj4]L% ɳ, i*c$ J8](Eat> %taKQ$D78T:Vz|j-"L] x'b`B҄p,LJWV\*N Ypjr=4S=bRDE*]Φzٟ>SprI߿Wo/>Pl&rHDaB+g=*˕DB8CeB 8 C)jc'`26=7v I9q:["\ LJ>ȤCFd)1.q2k$J 1HD)ކَRɼLS"cr)5PJD1d>kB۶ Bn`!wdVc~c?G1RE9U傛j{w;9dRsbEU !yg" E@JF>:((5;#H5! !hUHbbUuwnѧD)! Cb)&6S\881u+"Oݕ(Zisr(b%;F$POʶ RjuvzE rl 7;D8^,`MySJLf}~rv)'\eYջ{'GG)Q^8n`o#G8˦Z'Ӻ4 qKb$8?99߿\1F[1hSLވApY'v2'g'[b1|kƁĎnk:l%41ZȀquޝ>9>FE^߾lffR'fެCMEYNVWVhPrtq{~y%Z_ЖF=wˋf3N&ǏuVvJ݃M^leG/GFjbZ=xxo}j8888!(y]ym7zctb$]NE2#7vBkl2pK.( !B Ctab #}UynLpIE3@T!8!7nsf5O߷49uNQ( &b!H DP#Jp' cS! DQ*4@U@(()CE9V3Ż_Zsg9MKcAB@(RCh-v;%صM.!fR 1*)Ikyl6&A) PrBm6vTrJy2DFЋj!9abY  WR;T{ci88TSJ5fd!pl'0(~@ 9 fZQb:S_maj[gV<HSߦ귗 Oy5C@T)3k3OWxݘCzRv PSPM$D)a&$@\>pv}rvR/A)Ay1ȐH4K`Sv% /8ջ=aa׮6tMc j)r@nn{= [tk_GBKw7̬?X\7`:wJeXHq!0XKJ&luhհӒԬ4R~]b1 jyӲoVs e$u7AEP VA`jqRiRT> ;m9qܴU[BqZ+`"VAs*ư}4 D^)DRJi$zHNu] D?um$i$Hr䔊|=(ÝRPB!SNBK>mwO 5G?5"< VZ1a9EH8חRV#]%簽(Q;FQ`(RZm9E545N)X)@"C2(ͤh{ʋp !)X"֯_zwuuED{_I):/߿| +"O~jkƔrrr"vznK"Uk dW/ Mq}3>q7j(@ڐno^~Xvo"wϞ}ᇇa{xb<ﷂZnݣG!rHbq~xz!YVwoǩH999%"IDg "}i4oc?cyopwsߝiq6w1ja2'\{_r"R]c[hxOgN֭6_h9_V~{4n֒/.Yҷmravѩz5X/?4<ˍ1֚@Pi8?gV?>x쇾q IDATtȇ\k[ݾk;m*ls} b9ys~`LX]cDDR"9WR)'fm yV)J*+`IckȊBB) b8UHD j&E*6JjkPq r%mw :1gBDZr[@\֒֒k(X1 Cк!k`ʤ9ߑfqN`}JlS8nK %ڭӠ!9i,1=)5H1YȢockj9 D, j%f"KThYHb4M۸\uRqZdsU~O~UtS~o ?..OG͟yQ~ /~!C}ß;/_swH7y?~lէ 5Bsx`H) r@LH%yJ[ 5=!}5qG;+ )(%kK+UX)'Ϸ}g}[jNRry*mIRr6m+#0/oK~xQ ضmjʣ'UL׼0+!ke)"U˓01 Rj`ksL 0kŵ)JjњON6&P RXM׵T@XD_ J-XѦ_iǮ^%L*m۱X%QE/4|btۜZDz$.qV$R*>4McJdu aN9NbFs6Rr/ XcH%!(Dn^hE!aD@jNF"i3KQjA7 )!<:<#Qȱ_-sͳu)}Q<`8RJ~򖕵(Dr٥rI5iJ"1%)Xq !qo~>쫔C_qGzI0B#Gmb0i6&'77/zuq])9Rr ink0 %ۻ~uR y)kyZmB(~լCmv]Dx<2s۶ιn)χK4Ri))KxZ"?CzwRk9wZsa웦98lwWoE(vw׾9a3(ֺNc5W/o(gg0nooJfnK)Yk>}\j7Wϟ?{cDq}vyr8}yyu~ŋg7/Rj!߾׍b s"s*0W/.W1)yfg9O<}_iZ; >ݳ>'ggk¶9=tݢ .Vgr)\bJ9es1IJUj& %K BO!8+ð*6vdOÝb%R){\c3Oc4Z< v)x caCMףn֗sƚXj"\Rb˶s%XJq)"Q Ir8Ji݃ 1{b$VJH1!xĔ҄?T"هlR5J $  cB̦]sioV7]5V )εZ[6!gj4aWX!% 9~Ȓ5Z1X M6O? 4\_u^|Ou;n@ݟ^5vo޻?Wfsg>/ockD@fc4Z**U i~?$hQ*+B4֮W/qߊWE6ap݊@HjE ߪ_?O_tW8]׷ZKjv-9 @W3?|km9>E F2Igo'l"`9n:6Y*P 5<(@DyhV0N9fqPM|dmDqSJZx_bZOt;I$%9JQa<8WN@-wor u*TKMs{L)5M\l,RJZ!P$g"qQkZ!@DXι4 Jm]UڕR !άizEZRN~ow1{C)bZ+!E\m9)s{OD %.O1ZZ )h@9IJP3hj6ru,VQ~PJ"k$=KYT`(]hT eOO>}ǟ?{藇Hzr7bᚖ~^.qWӧ>l^=f7v}:v p{{k[D!@FI~zi:i۶֪Fm.<{擧 ҇,6C b4}߿nu;<<ݽIU?~3OSjźəBD*)hAvnw7 GXW\0o_|sc93>/Ebzs}577ab3ggg}wtvwov~[ 2GD|t2Ǧϟf8w}J)y,ruyynr>7/ou^>35gԄ|5gƮbsmD*R$U X^vRhb3ITT(ـuR2i'g6~ic~C֒%GgM)s`?0;v"{ YCvP2ۍ@U5!dD2\wˎrO;RV",ߺ~'R!v4DTk-֥u00ie;BxPvӓr47FJ)XZa TLS(H)e.UiiX!`C@" քw˜gÜw[Q12YZjdZJιԢefjGgZpJJ\bR._)EŇRn-@8Nl)Lups)ERavfݛCi9AA&Qpd*gGݠ?W翎U=Awu Q4jGnEwE DP RZ~+tm?qD:\ %urU=P˵ƭY+QX\ݠlm s ź:[%~)N|L).W~4u T%k9jJ)C}kuq(e?y8)X_SD_|SVi\BDPi\DnQbJ5x\zb&w7w!ӴLym֫矎RpH9Zg֛ժɧp_Jnf:}ߟ,ia{{f\ip Lh7^Zͳgvq5a:la}_W/>??`L|s{ḋ% ~~˻׻mnSro~[i\y8/q<)Lcc׿}}?׿e@y`$О\RcijBbĮ9T,WjٚN 9.mMARՉ F)%bTvqM ,Iւ,D9c{A!-1WF#AOnZ"RkB.e9"朌kT)*R. +`eI0Z42j hYcH @V k@(l!DmBTi*dr}\K- Xβ6dZk9ъj6ZXASbڬV' (ֺeXnPsPiXgVXA# 5\J\Q \MXx(b(IjEI(Rj)%?{4L`i-Zjl@D2m-895nU;W뜢قT&D"@ĚYw~˗/;~{9e_~^~hMc-&删NOς)&k crR=N{n8]uεM~s}&>ae]\b8@)9׫[Tg? c60[yGFumJ!Ѷ9?=ZilNlsq̊฻~xw7U߭"d~ѰkW4m{zvv< Oa3JirE`? ~|Aemcl֛~q9^={rBz#"9~:>O&Ew{?>Lgo=9n/7i:s}}tZ)?z^K'_7oQ3FTJ779Go}0;Ofct~ǏW*x Uc D9 T))dX#!A)[(L(jf+%A1L KPq]B<{&Ѯ3Z=Lu{@5mWJZk h%90TR(E_唭5Rs׻"b%"c[cq+mѬe*鋟DX )~ @ Tepp֖*b{0=B1ƶM^jet%%%EkƚRAJB%DRB:ϊ.%3s5O` [ۥ۶%J_ǟnVwv\+ " %(ZfB P@`y۶"j;"R4RDB QiXzxGKdi]D4*)gf\%i8hfKTD))F ҸhJ!)F1)xRѐ)YkRJٱ $K1M} (Țr!IA-<"k]JFkPJq̵A{Pr8iVIRP^@)O~}15J1*@{ d>?61fVVM+ض4 T"ΔAkH2L /UmֵTfvMc2b:;7 G"B-HqN$Pr69ZRZJk=l]sYkcaBc?OmcE]SR󨕤4K)mPĆTQlBH9Z"1iZlJEĹC*nZֺ"1֜lKZcm*EO)E^_]isZ|ֵm ?_fE(RjY)(Z\i)q2@ULVP8D\xPǹƔr#) ֚8Db`LdJ.h9k%Li&dSA2u *ιR"I0jw<"Pd8<{y׵ne\'^![i~^N$#)}}uyYbqqTIͦ:Ų[~yUn+5m{zz:zFkǁY#f)/kZۭs.L7/i|94z߻ƴ۬q~ٶx<z1OWϧ9]}\yK>}_)n~V9l?f )EEtvv d3_0eL0[_~>>{ے78C.zyyqvvc@T<^aEB{_~j,_]tԶ15XKBJHn[׵˓ )l#d? 6gZCofnka&"6mf!RJ,N.RMf?FĜt<ܥ0E+EHL KIZ+T$ +9IJ3B9>) Q „5* *au}kFEs)!RbD *TL`1+;K-S3TLGN3<8S"VTj1ƬK֪i5zx'MsR2δ\J(%\ Xb$c*9+sX"2Z] >x?+&B]ni 0beM5t1VPS;ݮJ!01mZ֌ $Pq\Aks *B Q_Ar1m{R~ˏ߿_JԶʚV!GEݣB,3ḯ>FUAhv k͈cPBmt)N.Oڦơ!ǜcPiӴ?wHGb" B6!@ZCMӴB!Q [EAjC`gIYk*I"e&fMLZiRI"a^жBNqli5M ^ɱ\ksQ EHRdffIr.1R$ıԘsZkJYrvd1ךaOh81h%G2REDZ)%0Rvj.%&)E*b , IDATiIuZcbe_\.D\zsRy=zb.Oϟ&R+@:nN@As(Mca躮rss٧Wa<ާ֫6ƹ/DDJMUsĺY:5d[^()ϓ% 8Pk RK-l R4?}D9fbm5 J!%z] :g/LUƘKRfTk15 Q>դ{,YZE*ʩPJQf86Ca?c4ѵfhյf99#A/:"UBy51RkZXA3V̊4GWPR(Rҙ@Ō%+EM0Z͸߂IDQ ~iFCAM2:[jH>$4N$4גqoj"*8ӵA1aK)썶V[KD2k%)"5H05(PE #UŨPkV`hKH%'b7ZŒVfe)Ek )Pkk)Dj<@$R3iI!Ux:(IIvߡg/%'?k&g6i7yg}Xl!4 4A-V(EUθV $ s֠ <$EUQ)%Xkk-Oq=+s~\iTFskA!Ts!U0!`[RJ)?M~&@) kZFoOoyFVLv}R+kSqm.UEUBc4H̵\b%zhP@!hmj-A :ij*Xse۸#>dRJAӒu%q-*J8"}.!GτZAdcJC|2(V4"i?|y[jYX4r\\܌) n{+E|9i֫e 1U}@lyョqN;9qg!엫Fw{[KZ?9כq.֯n)֧!qI{BIq>,>#4햍i쓔\@+5Y˻n?wAds8c&)FQ~yX_?:{F (=.U퇣x<Go 8U-n>2\u6nsc|vw٬ k~{)w}ln\Kzt3 ;O^zq{f\*w}iX$Ÿ^4~}}Fo|^yۏE˦uݼI!=yi~7t\IA|# 7/RmȚ皽5N-q/GSrH`%j9yph U@*f 2HŜ YmwwW嗵T֬[uiaaY"Y~X.뜳0mGT/%Hm%V,uB@Fag }'徿81HJ2M۶dIU妩xxN(yc*>8;yƐ廛~{v !]__ݣ\k`]E~sgE'wחTϞ}r|}֝T9 #9lb )^}OUJ}\z<}~nszzZ,<뻪0ɣ˫s39s8x~Jo?8{Cvqvy3':E;3|A|請͇~xz8W~[k-䒬 ʇBTE˴ƲpkZmə9.2_1jX nw+<jkl0CʵB\c J !L ^ďncϠ[t>k;^Ib| esfBYUÈ!%g.͢r~s \L)m|8$m:\ ufPJj@sh yJiVJ)P||zJ]*tY|srIJIȒgni5Yҹ,o9H9g]#PuJ %1B"i& <p2#("\ƈ@@0RibMB))b:#Cn+u )20'TԨ]hЪpSR?zdfC"ڮbL9eTYr@$c="kD8=ER`QgJuĹ2#i'aUm]|b()9sD0(W9gE^8i0FRJ ZqXt/< ic-2})]Ӵu*4NIӞXVLU EwV+Vk;y(!pDN)0+asn Wfnd1es:XUBE1Dc8̱ kcfOC JFP4FTc1"砵NRrIbuu%9dk8!ĒsHM-9ˁ"*S38Z뒋6R*TUs@N>D0zEVy5,Jak-0ް0\45Bh꺎qtLShnfck*muU^/Prtt]!y8VUuPXGGG8DdeBʢз #9=>Yԭ4bmø==9bno?MpwC|J8G)7*Wm^75y cO bq !IUii<==S9U킌Dd::Z+R˓mV4i"cLuY[r~˫E|qK۴9瘢vf?9>rWb_ՋjDBq 4lW˦rzٴO󼻻my񦤱T9JGŪkg');SYN{_oދ/CL!&_7]yqzu8vro֓'+muBrʉiG6eb}]{s EH9>~ c)ŘԓcX_o+X4{7Vrn.?^=+ޚkΟk;1ޔ~{C2KkuW??0_;ӿ_>?8sK."Zj>F3}/Gv *N)/?'o ~98K _O~]@=QBcJv.nnJ e\Wjy|>#ڛifszz: %??}sAHb}w1CWֺw?VjRMSM,LMnZuPoo..N(!jX,>EQ TU圻.eۦ===}}X4{ciC*VqΥRꦾ}ɋO>~Gxf !{+Cj滻 *c)yV7u5~Ma|b-ˋS)x}Q ?xЏKPE˵ubyj{jq~0ni/+?O?ϧ,rOm`ݶE etCԈZyЖK4ڱ:N?Gw{Kϗ*CfZt ҡ0@)(2'?O$+yyPɹܼwk>_.v;wWV[=E`Cw5R ?U:BO~DNnWL_7ڟ?/,y;^чs>TGv_J6y<v3B}UU^%R'"i_if@9). {mzOַ&ҚJ)G':q}9\ pߤ80pUᥧc1DRHT8Bb!U۵9'9Ȭvy`&`Zj%azܾƕF"%RS9r@Ȗr+dc *X_tSgtw<"B[IAZk_U2~!` +TqDthݫ +T v 2ZiǬ8e8O}IS%'PDdO (U;Wv]bMBZ;c3LmVh+k4\$̩jZB]׍t`qlʙK0ֈ)a'R9GcuJiy7114J]NIk휷dN! (ڀa2sBM;^,OHP2 chcrmw}k]C hKvBH],ǂF(EVa*f)' iHt]7KDÜs d%R1M]UUUHq rJaBD)@8.{(XH4rv[v4rъQcytWCY!y ՜a$$RԴ,ղUZ ^rhlϡw "oM8Om8fNy6s)Jh[iXZq瘴mi<(R"0gE %)ʃ!C*R]J˗qBƘSWa?zQDf\I)/uUǂ6]]UnwӴa-" (cÇO#~l?;Wͦ=h;WXt1SۮMi黙5n}jؿxbuTnrUu۽fQOqyy5OONW/^]ГMU~ޮ]Osf}qrDď?%i8܇i%_oWbnsӓj5嫋8^^xt~}O@_b.k_wҚ5qا</wۻ)zm[!xyuusw*MӾ_Rk듣rnb;/|/_/?y󍳋GX4BSo`F@ 5UGD yvwseW/-^BFSD" HhZ-@?S>wS??{-<Rfm<=7jߛqyN_&o%}C3'Ycʴn_?Əf~VDj/??}~'Lzu7ؗʟ!_п=yWlSgݶ&yF5-0[۶ߌEvw֛o~W5sJ%%khs5M;RXRwanbw<ψͷ8,xVqм;S{_iCxxN1ri;(Mծ4cv|[?OQ_^<~Ztuoy.Ue^nsr^c4W5a_~p~s~~|F, GGGUS__.\zqa\vHS8>Z?@]s/_z\ sGKQF[z(<> U) }d֮;80Mq.9߅4uơB~s?^~(w_Yu~ֈ  (<(mw||R&f ^%zo8$Q* H҄TR,9j$o5 hߣ8 8\R:LcJs̜#;Si3%yք9{ I&XXn`gSɚF[.CavaqUG 4BmJ Z` y ̼\ Ks.S9$QhI))JM "fq8Oͭސ!a&Lr;fRs.1uu;9I)f\RH@[6JW(cmSVaHI1^b&8 .DdrukS c0M1QkVaN u5(RR!p.d*9JRcQ9T) jả" bJ%ܵmt׹DB @cEb4gTZDjQb=>>^]M]Ҡ8.OªLY..1cu]73ZJL3,[UC 6T*ZPNriqv7͂c,,\"I4uG(mXk Q; bR)4hRiT9gm4Nq-"(mu9G(sK&ǹdE!_j7iM).*H0C9>Yf߲W1̜j8kַ pUl7rprY25Kt6ƴmBggwwW'''߫"Ă[W{uh^^^o?~$|j24]2c}#tttK7Tƾ pURR//_*G'kQXk}Ϟ6輽rcqZ~_*2i?1VHW/_VǛ7|IMS]]1.6WwW|IONȿofJq /Yt M󮮪\r zuNL&}<"BmP uWM%R2P \iyM| HoQW֨(M_z~k_8%g6xr4z 5!("cȢRD\ҲJ@81ZD4hWw^A%mf{¤ ˟gпh瞦/~iy K1FkT ۺaw[떶nB;%FrzfB]k86]5"lmV,~s]%BR"HN8ۛw)[1뭯vIR錷1)QR\R4ZC_bPD)elU5VUFE9sN"5cMqo'qRJ"nKSVchF)8jd jm 4#a.U1ڄrNZk&yic[IT3)gPZPYk11ED"J(.VK RrQE+۴͂!ua "1gAB MyTSp1iP6i_770F4s0'M)(B sNԕvfUuؕ|nX )9' J$Ia $<2mnXNkh\R(\n:O單;֋x%㨐2k\8AT̜R,XB"\Jƹ\DN..>\Rdm}8}7i*1t~@lwq=yTkwT|^zۊZ7͜,\ݾ:{,j1f۵mZ-_zi6`^W йj:)ywwôom{lLWJD=|vw1ZD\HzzFeJ)UU]]]9g q۟Ycnnqh[ᄈ:>!2~97mon_Wuуo~mWnXD~+9Rtq+fťV[{!(EUՇZ:WUѰC'pjX6):gUR nU5-jA)ibӞV@{ bJ)QP o^Et$j-O?]_[Rc77^G긶j| „hC吁f1?|KYXߔsd٦3Mۇ8})J8)@ky0R yPDT#m()9-y. M49ƐRȱnJVg)X6r$rʚ8$_u|]DrNNFNrLZO]{ի9gYJi#)cF;ϩںXB*)i2~\2!WWJj"ƘEe.M̤݅}.9_/E1:@.44"[)sHHWnXWDZz2ZΘ߄ḁM,u"D+J*9~L!;|]HӴWUJbmeW@h\H%4[CJ)߇q(PfQ\A<{88J&”n !0 BC$`V9MތF qcbLXJ@5Hn@)8lBJa]7%fnR2 Hqtr) qsrsI!# 8MS/4ֺsja4O%α]v*A9>:U9MX,YVDQQ@d}J9tG.L#FWڢrddT"je浵jWB;z4Ӱ3r:9,ۦ N*9{ߐƒ;)YWZV:)})iݔ"*4O|h7a"9K)בkq#sZk]JI)(ݵj!\\ ;~~89>}흷~4840Ї07u+ȗW~5}hP5OC̯._COHUխg_3u*5urvq;J@ϛvs2Vfii}sk4N41踪aiz񋻛ۺǧՉ06{$clu'uVuݎӈ81d)\._=}ɣ'4cvz\rVqatkmG'8av/vK9>^wUS7.}I*yX|sc-8>^}:McU#cgW}/ð|5"@ִMS j@ŒLjW 0Ehio`>L#=M 7^~j_eCyM? < iRU+VDG3ȂK1(e)>>9o$O|(߼/>1P "CQ㴍P謉' ooA_g_ZoWJaQCa(ͷCORyπ@ݭќc]7kk @k |۴˪ruUk$ )e9'mUAy~{y5&V#~S \r9:9;;`I(0n7uvX,aaCMuyIaSw GӛZ]cv_Uv> blP ЅD% C"$: p=W\XL@ >9ާj7UkZlFܹWCs ?g*CqAZR(ViR^oŒRR cڜ9gR~1NْЮ%R(@fѡs0J+֜SdF]c@([,I`av+0RkZkL)y(5x4v݂bR4P"Sͩ !bs5Z!4Jm5%{a!9EKqrj%<XsE.$8Mc@S41DU+R&69sZu֘EI)3JlRJJgrj}۵R1Cen>M!JD:Omנ'D(cRBmV ՌjevVUyB D׵(uvRt8bi1@E ᜯ9ShnZ.1QZbá摁ѹjeB !P a*̐<\K[>|ڇ f ,wڨBY(i¶kݭmJJ )%@x fihcjLK M۲\JRSa>Ex^crJZTƶ]%)&9i ǬVr}9SWZU*Q036T<9kZ]B.1/k%QE!wOc( 1ce\^r1\RwKD-%Jo})H+Q3\!ٟ_Aoo?p?~櫔gk y~A?/1Sj̒J*8=N5Yt,R5il"ŕVWJ)<}7F)E !os0 x<m(͛ǭw vǦkDruOw~nW׿xi޼yX.}ba\"8 )ǔ/_XZ~fMvn7q\w_mRۻ݋_hk޼}}闾g4Thg竓S>;9Mpw??ORvZy-|J(`,)ϟLJ!|y}߽z J3vR2wm=@iTbQ2#3VݪJLDNŵC)qV z?4'}ۛ˗{ZJIe$EoK*9Yy cќ,ZJ>,J PY %V( +VtI~"B +~'?Vߪ=Z}'ڼ5ieg4Zf5sELӘJ1$鰻څp#)srjb.j >7'rNmYb>=? H/^|LۮO["5sAca\./Q%ycכua(Fe+  !0S.ոVIbJjHF)]˕P+YF0X"D^JRrۺFisc:GX X.6]w 0Bi6(Jr-DdѢֈ#XӴkzXwΞ^#5Is(kr B1Q^)-,s@a8쭟iܜ\5˕Ic DffRjkZ4 " **,T)9 RSt'2nIBV9JMpZQRD8NCd\Zcd"o(jQug)%0cN<(jvq]*3͹_pZҙ&n~ j81591̡4I*!mpbC9YK R?}? p)urqsvY޼>U3I1 IDATlJ97Ms޼}3ٳpX}c2tslwj{w'|Z;?B29g"珻Ӎ1rZ4MRn“'O8?vsJ7_{ aWBoq{_Ϯ=??{ųam!Xv1oo^?yrմr>XIKTb䣏^3G{;rFTPJ$.N{&^\J/Y@*Sƣ\k,Y_]q)G3bp}9_nRK'gն/)R>N~|?n2Ff3b*R.~=.Sx o}iQ _>{$(]8 fHWomևa}u[clRvqkmV`"d3Ck8>n>{KQJcδi05*cUMz*ӪMu]zqƽG@JQ1"%73tXtO>{ҟ^l 1笍CAٮi:T8=0srUAZI-MS*ʜPJ]miY{l !) T}n)o4 c?j8VRi PcZL!6 `+(58ORkFRfMeam0>.%sZk8l./TZt ZBS|p.kfN16P(EZk3oRf*BQJ1qZ+Ԧ]k \K䔩\}[բBjTt)Z4<[ X399G$)kq )JRXP-sR} 2;fzǠB &Tl4lr5 ;35E#11*)9ΝC1D攴 ix -2 )3 o6mcB޼?;?z2ַ0#ڻeJByAYeJ!Y2c>1X-SGbe%ASƦ*pT8Iۂ1HTJtEURԧBi1V*J\rV'ZRy@b9F%e7jT(&hk);%Q+)A2YζjfMIQJ!KRZCJ 1K)5!Z TB P){/^C?쳓:$rm~ZnF_]][S d=~nim~>8;|{s୽~8,Wӳ?|O۶iiVNi իO6~11͛_BT^}BˋO?qon^xzzVKeӞԪlSX7 Qm6Cv]%7mo>}ZnD`>~9׶r\,l䤵8v77͙jZmamw''':kf/ 8NO?yxhnҖoB|W?>¼JJ͗_~?'|s$*uwQJ ð9B Mni*e}FDPk+Y)5,[䬵.rJ\9L\Rxs:3s*,L9ƙ7q؇p,MLжM)<r$4 U[>ZS9DBݢdt9Zˑ [sL H!cIB+gm="]_ݚLuJQRK@!~?Ӳۄ8.SdRVyj-hSlP>0yqOi:5. @!=nP(%sZC|DG$DZ,Bx,hx(iR11g*k.ΥdmcryZS-4UgLbi9siJVa˵Q})eX(-7wF{^Z#iojIYx @-ڶ^`p"S[3<Ӵh5;oQsZs!.;)-ITVXD-E5RbJ"Ԛ]J%ðyr$=BbS"MS 4W%OðCUJMi(%+%5ڮ^k@a/0V@q5,R,oZR4Eka/MlBiZJb(#6wM hQRqPRcBJ}^#ugXݽRP)m+^))8Rc6ZՌ!}[_|Xku;߄D.澤i{)%3RD|juMP@Uke#T<(TJ"`&W{ 8ke53ݍ7D@!A!*ڳ0(m:QhmoRT1Ds]6P͇}bcY1Ɣ(1ISJkb&!*҈"XkZHk/>i5ҭNƩ_m!O>xJZP*631]ܼ4MmĔR).6J墭Limo|\[uU.%\\Sλo^_^BwMYCLɻ{)]_H[_I eJA[gkcuQH{rgK% R*\ C.b<q CZЭq>(48aǟ~U{tv()&e'mvsj~'B~R8٬iޜ\is`]t+޷hgL. a Rӗ>9K૧Ogŋuh>prg/^CW>9xRQ5 oQJY 5 V9G5*sF$@ %F%k xi;poJD@ux*86e]8ws$,mUi-H9=g- yRRj]+H)$a{5Q)ڴ}C\u~:H.Zk:cFZb!XD%0sHdNh4v}ĹeV#rDPCffT·+,D|+2)Z4-*R+e@C)9h%rI(Ia.15@)Q* KuC.)ξY] K0E:Z\8&Kmrc0k[!U i]_\Jy(Pß~W)JHHkVR)VkxU Y {TK$Z\l4FK()JXhd1{ =3-'Y%R]׶[qȌZa'XXCE RVJ+P+F qiN)igJ% %ay&BC$%'ceAkemˌ+,*yNcoEJ4Y RR9 ZtO(L䜑Ub%Q\%1 L;JJZ/RVlJ)$73-RkMS8t&bF9mKΙB*! 0KFQNPY~˒Xs \8hdFu췺YH$"}[-1j)TǞ@CLi+@ƜR V4&H% ʈR pNKLsJ1?<6B $um{ HkYdbf`*e3eM[r>.SR%RQ&i9K9mk, ɘ^@DBYkzD$ey{|WrZNڦeoƬ׈h9[kJ KM)019y Tk*5JeZ¾/\*"TRHUZ;V(sQ8Rj B)[*I* K%;x^-9_~Nnoo6ۦ>>x~~FTnnnڦVz??txQ2)eooޝs}v,ۜݻӓݮ?9߽]L)51LRaaRYObjeW E vŔ*=t~u_'(4M)>v?q1]%#9ӓRz183k)LJyܼVM;wm(gm4ϟXVCz.C׵+ŷBUTʼ{w\no*-//E_ϥ'W/NP~%c:WWW4ݝl6gzOccR! 'gZ)_.[-D<>nRm(ltdU \3i-kam\NL㤕<+8oa2ƣP)u ߸Rj)`}7JM(jcJ!c5WBR8E+A*i*Qji 14R2ض-sr8K9`uZJdJm*Fӄ(Qr-B{!@fBh%PJ-yfRƔf &%Q)Ùat9ܿyGD].11T"nJ)qR.բ,PRFT&Vk%E9K%_9[$f- I)c%J)5Հj~?7woRJJeTRRK ZK.E>wBhVMK% &gZsJBv)m[%%ݷ]kdQjo:Z+ P@?gcFáwFMcZk?ԬVF#b VDQAh"SASΪZkMB5+)!L!jUA #YF)RFTVuDR09g 0ƚVk\f *T@ $*8gҷTu8s.\SKmB )u(Tp)I@FiomKJ1sãN4KRZ Za' bҴJʒcYLKR0T)gc,3hsOm!2!Įq/W?vc8Ly~{||ODsB%={i:hk~Cӭ?gWww6͍JHurzZC짾4^__{wX4!o0͋!ho֒qp(*@i8l6aZ]^<篞gO7Tir攅8B/>Z.>}$N/A)y))|}?ܾÏ2_~yÃMdd@`>v%a\Rjca#Pb)J"\k9Woc,Sɹ'BjD)8듔K- pض-A(S ^i[Fig<gq\R1WB2MÞQhmVbm¬1 鬲](P7+*33hc4$%Ddmi&(9K  JtypZHUͅRJ327F6 )aPF ekZ uaJ(WǹV^Νs)0]ƖRjۇG(:Qi<]m$ Xi>ܵLqr P)??'{o{g^"B K)ИQp*k~` hQ)N)Ya^,Wkn/ZɺYho)!⛯^^\Iqm!Rc/P#U*$:.4GmHmVۦ%ZJ"g%aϐn¤iJSL5vZ94CRJy*ӌH"1c *!<)̳^h}xX.)XK)*RRimQR\@%UԴD9DmQzAN s R;$0JqsA;SNmRGbͳR6YRA43$hϥPNq}24 #@[HUk LVP*%,Zƹ891;"j+e>x IDAT9)P*.TvAk]rInίr,RlG3皛!iRͨ 8s"LV&w!k8N4 ƙIQ !'0`q1خ) ׮S!R+HrZitMw7(AXBShVZIHy !BZ*C\ѢLJkfHXIյ-q- $]R/a "%CH|]&vZ>ωK۴>>6R1FkuJqggg8*NN6_s[^gO^c5RK/z͛\6n6q:Jt]s~v×^qrqwu/_z}<>n7֪i}A .rwS:&irwi{wqqu^bW^=nno?iyG<==ho}{!J6/>\-74_vmu]wWN7!T^0Ĺ6'5Lh%`D9njci[48!Ze|eV6PRegE.ĪfqyDF65RUF.e4Xk]W(%`@ژ\ P5VZi))`4cHq~ mYkEΥ" m "^aa8E|~.wupSv'Ru]#`)58K%Z$97r Qjk3%³gP\- ς(%p,)pwy9A(8$Zwח`| {J)eIs wF՚z{Q<~h%u}z|||zq-!:g67~f JZs 4J)K9O%NuQZiz-;ʥ"xTJ Cx|xdf3!r1<~vZ? )c0jw$hq~^JR akBb'\_#P&u2%'jZV׼N4 3\dJN۝0^nPf1r9<9kwZ&DVOO9-G~1f*!-Ėr4zfOK\_춻a>ͧ ɏ5b=lͮ3 qNø|z|x*^z˛o<u-_?m/..7-)x5~Ϯonǫ닋o_"潒驵@/^(Xjq/_=O ū7R{D.!-޿8nnP>?/X>~dvC*ONjpÇ;.]_9@0v)ƨ?}5H'>?Vj;7oB8-<{u{quqRO_>8./[3\|xP>ܽ}~gϟK!u\OJf[kSr?Cھn{6]? bkmgnǃ6j>n1&奒wno_^_y?= ahےҺ)g|o޼͹Vr-[ϾND*ƢC,vs5o?+9#snYAMazƠ7ؕ97?4yCLJ[!vXʌՎ#/1 ʱXg[)9g!Z qڔ8 mdZֻRcL̲:=`9a*%9%$ Jk%ZVHPSDyi '3l i]]!kZivTprGš"ԕ㺎fMXR5sroMjo4HZbVyJ>/ s'òye $>qz#AtЂ4r+BKZSJ ^Jǽ563Ԃf! 1~ {"bbR+6D\y3( ("`"T:EXH4`I3?co~o>V"KZ+FZBgmZ%x}N2N!z6xյ"Z{mDF,󡔪% x<͆REg {+v-`̭$z|RR`hBD!a)UZ 1 Kj Zborwnj!Ʃ~3-3[oƏwwF["SE̎S-lZ0 "Ѫ t^P\@8s)scm[J0$xt{sz ͇'$IښEףlLgeY:OH&T;(#R)!H;줔H$(uMAY#1r:3@Rع37uo]J!zka9jsΈFgtexd2P?\j#Hk9Bo;s)lRnkK)n>j[)$$ȌR e[|,ktf_gz SJqk6&`\s^gU!a2*Q$v3{E$͸i5p~P~IqD"`!;R ej1=.c4~lRH"^h7;dɍ#r\qC ')0Nw71a9ͽհOrӋZ0<>>i/v9)ՇgAkUkq৻-0 AݝN_x] /ޤ_~]25n6RB/|zxBc%0ޭu?=.7itκW)޽+ bson7<[c]\KeZL/_||x~@߿8<RDw_|%dCkW)%Z7o;wo^ݾ4\:0N֗/_񸻼bo9c2{[ ֊$(2s7ZFd`iͤi9<f묒XKI\O{FyWʽ+55) 3t.˲fE"4,F ITrR^KXO1%RT"IAkJIƔ61jte NG kv_oG75'~bZZ2Bd!=aӃW $-ԺF]*S .oYV`?mv;栄,q-iI9pR@lTJô32R"֚O BkR $@ ku;CRr\wQƊ3#pošKTc8.nwER|j=j7 %KR0J)[npk`mH%B]k}:8.{"Da]zo 8I\RK:A";#WMpQ+TKQt1P[^cKa&i[UkK)5ssB. uR"bIY:kr֔6< !Eİ̈6W68R p;Ǐpֈ3GKJ޻;|x 3 ݻ]̭{-U >>=HZclΙ6-/ZbJRKTY-KJivBX11TʹMD1̭U7$z9z='I[#Ӳn7#"8g҄J Dk1xq+|߼^z7_w?C+c:eJTJzj>j?wݴ٬몵Z_]]ަ}a?JmNsUJvVkmYWO?ɟgXi|.3ԥ1#K:?Mu\k}]ׇ!D-sz5@\j`&{@X~G)2?|~\ݸa载;m4HJyl}㙖1 $BqF{9SIK Vsk*\ְ n@Ti)4^9 Е5Gmͺ֚R۩r30ZZBPo%c.'-+sLZy9O:R !Q){!ќ'{kZ9,(&ބVk|\x<ROzUZyhD䬔_ǼbXJ #Vkޥ\r[ P .eRjGR77]r%u%,H@?M̼sΥ1Sku]W%\^^Za@Rqfe]Rd72Xʜ5p_RncmNkIZkk]HγeL\kU !6779gع#[)JKɤHJYk[a]S*d n !xy=}L5ܹr:Qk,gٸCnv$2Jz), n A8>ojg;΂ feE aJghJ)_C~v+iC$(ek"Bu]sέ AZv]\2N̹f:Ii|JI)uyqa 1!eYZ͋φ)J)D$,s<.yz2s(ܛRJJJ6)%D913s%AcUJs.cLQ**!/܍5K)#B&)J)9EnEP5ɹܻҤF!P//7R Q.K뱕ĩ0-g+(fuZ@i?IJ2 !E>=t&)jUH ҂ZTY-z{nHKD"pxߴ81bIaiJ]2.zo-U*o7S"rM10XS RBRTr={7ozO1/ i9aX֨I$,"P& B"ZP.z|9 ZLʖQj1 v'RB4TzMz]+k1<5MOkmknmEZד%<tq|R7ӵ> IDAT$+lk1qie=d?@ڎSɁuF;_{RFKdROBPH;Lcos 厄9JJBi%$k^0>97j4-DBVS 4# !H@/[hgGFJ+=HaHO0\rˡs,KGBSo7ʏ2dHzq##st)M$gnDȵVҦx (wzM;K>7\b/Z˭;#(I n5s@4AJjY[FuA$ܕG %rVVJ :J3fBy9a*ƽWBn9YIJi%lBoƐJd5$xn.N$Rz y!$C w6ڪzvH)[eb2R!ւ;h9-2fn>L*3 6f=Xa II иQIHZ21| 1D0N`JeJ' d(2E+B#r:*Z{T+!F^ )B 02 =NA)c hbZȽTjZU Ԙ{5$5B2Ҵ\N)cQZKoI 낭!W!)$+5RZf]\_xwg7N9`n=zz,n?!2J_x?s;H "U ~7/_ܦv߿,޾0ne.a AҲΝ?oz\Ne9zOOo޼9?N+=티DW_}eDŽbx0Z4qH뛛ݷ߼~$˺ſRƱ~?-!3ޮ!zQ^ 'Wo?z? 6!4)i̧ӏ_=RH|?i˥j.yAB$<YJq HHt\U)itj)Z_aPEuɩR;ge%AR.z ! n9_׈vܪHs4{l% 1|Rժ1֪F$!30-Em *cRj]Wk'B6FzH!Óޥ$D\g@I :K⺠@{喤Ӆ< ɍ;&!ZQZR~i^HyC%.jJ5V(gں.]Jjc>p3vcÜ˺mQtmXf)UʧK*=Kˌ% JmR@R?.\]JڊJ(R֚J^JI7$hDjd&ҵv$dcZRhDxLk Jk}*U]JPrICQYkJYyV#it:Jiܰ#1r!,Yj!)B$ڙI2#*j܋L%^t\X/9di :qZ.B(NJ%4Z83FB5K)ĺk-T@BP箔7~ Ԃ6) SZt ;òhKD6)")RZ#0!kq< !7hZR9({S"3jt.ZFp~#Iİth~C +@V ZkdMlRXZECB*-̀ hȵdத(P9r-ЁPB(imXWsZZ[oRI(UsQJ1!s\J!^Zl6L)mp~9-y wx1lEZ˖l..Ãֶ5i2y7HHĘNM)%(AJ/޾Eqs?.^Pr/77:am3km7_xqkܐ1| i[0 _@dZ7g 3vruujEg7/Q_O.wi|f[uq*;kzӇgϮxqsהOwCK8aq ._.//ԧwhc C(m[~y\i9F/><>!, [_Di?C)zRH0ޅЄkɵ3J+u۫^Jd(H eEGzi5JdfVzKB4֕0,`!J[; bvޯbf(kcjg8O BJkF)% Rx咕13c@ZJ꼟g(K)RJ:)5Hq!!= 0 .G뷭R3jY[kӎ2"U@$1XYRbZyKa7m!#!@Tsj BZ͸M{5mno뚸c,BsB!@J6Zns$@B!y\Jg5C@(C;|~+%k-;7ρ `QKɵe1ZRR.yAA3 RC!UkŌR*뺆9w\DB[.1Il:-V$nZܵsȵq)KaZcZrkóXȔB9 C;6xh)(0% 7 f ([q2p)Gڸ3AY +%JJm9XR]\5żZْ[f%;Hblb֦ǁ[N2\_ %Z˸Ag6M-%(rdBϝٍҦ0ƄTj(.'蜗a]9pZ7^J;Ҥ\[u@*4wp/7"c`BBnC)GTEQRi9'0,t:I"!)eTgέՊ[@DA 䒵VaM9 JrBgqΈr.HR.J3{u m'ʺν h$TrݶFBJmS*qIFa$bpجkdŹAk۹T5RZkiK ؙHh;V5@T $HjeΣ٭uD?{k6Z+0Lְ6:nvT9pyqŝZ?{p8?{wuyc<'k~apwww)5o1K۰<GWy]\ tnƜRÃֺ_{.W}j͛74yǘ?=_~!ow_[aa\C:OOsOS0 ϟ4__|qnwoɻ]\v kvuuܝ3J R]߾޽6)4M켹!w}{bj&ލRh XA490ۛd.A4f3y+C Q`KH'Jy|zds owX)V:\\.c <+N9瓷Z?M9u]uF!ُ㲜r!\Ys1Rc1Z)%s֠sxjŚڍg$fq5J9)1o6B!B!Bei+fu;GR^"i彛r)Ujs8'k$D$)P! )fʺ! IT2G)VL8/RZ 2Á\c|ڟq5״H턜6DB R8e)3񾔴.Ǽ謅 2֎l9?5![H!~Gg1f bY;ޟWJ1zxYk_,xM r?~pa aϧ;epٜB"B2u]*wFfhtZ(j !\ !ʺ5 ޛܚeg^k۷9}{ͬtmȢ$`cF0G`HBe KVe:Ȉqޯ;~m'\H0/8::={y4CEC :R)%)ZsYRnEIeRHfl69״B<֕"ޫ$ LZﻮC! PPbq>(!0'\Wn$J"BZK]e<͵Vq#ʩߎRU@c VK,?|69_l*uNkmBp><楔'A^):ÜDii<[ksJfurnfj-jRvRe>DQ*Rsֺ\N^4 `k!F"-P挡n5J)ǻ7 E4nZ[k5f,/E fLH\!ʵ!t'pEOY*+`1{׹ 6vY\Sl Vbw-%h@$e)ÐK 4$k$"ҍ ~ソtDIH㰩֐gII7o%nJcmu0Mϟc\UZx֫hMRF}JկS+ʼ\wsx=if퀊4p2]8%TgmtZm1ֆ(=NRO^/tU`ۯlݵROpoT0Jʪo?{̍?O]r _g$UB Zd?#pJ,d;â[uHs.r"‘4E("%AsZIq(~ƚs%òt]eTɥ<))K$6n5kiy^晄h%~BPM Rw %rRX R-̕k)Gvg[O TJR08j&֧eٓTTPy=1W6NHKVIZ*!}շ˧:L-scN>ЏҤPHdQKyJq64JPB0pMU*R 쫐Ӛ6>e-ե걔 nhRNw]ʭsv]jB+-$J%WINXCX#йjJ!_W-3V(e6ΥrmP5*J(rn}7o+vaRR"3B!xe,1v/T@Jp+1n}*òR}׸u*9'n%.y=2 c꬞|hEv! N0ƔRqdnBV(Њ(D kesHZi*̠fh @)Rz?RJOL)}J7ߞn qzPԄݒ$h鸞DknkbZIZBkIF&h("sd̥y:j}aRr3%tJ4|TTMؔDh,ɸaZQH5V*Z8Je\-%F!pUdhB6ɵ36H)E"9nweYJ-s"y:.yNšHBSw_}O?ڮ뺋]Hk\W_|:it~q<"ow??Xg_ۻO6o}ٓj-X72ByxğMԭqӟW|v=Fw}Lw>`v3ø9w:bC?2Dt:p-ڋOԶs3><Bl_7Z$6ZK-)؊0ƆX/֋/Á&גʵj= HTJTFsM\J͹H?2)(M>cqDR 54Ҹt(9qɵd7ֺ鬵n94/1 !s; 5vR7;t:jc2kI!emc1cj$ek<󳗯p%|$ck-!Dc]Eq]K`PRi-5֑29&BH(R[ \$H)`J$BB(,s&s7{0nH\$Rr 0]@>PqlS]惱S+Qk)XPZkؔH2Zؤ66p qUC*C6J+ Zv|Ѫƀ3AAdJ#/O^\]cmt7֤ZsF[)θ?ZN|+Ԃ\gK[CRj15L*AџGk;۹i9wa ~]'h`q=JiZRPHHJXJZB`$)(BH%QId)ؠ()JXHwe Dk]J) ):g9Aq9Ը)r.$dv~/]9) $E>l7ϳ1&Z ]G(u1W kcOЩ 1u$ v?KaO>&hf2 e CkBIHesFJr)Dq1c5H1$kD`~$)Ũ ~TC Z_9_9 HW N ArEke*95hJښeY. 2]knU:/T١(J) :ךk%{Hj?2ݧZQI %y׮sLBI2v1F)ED~=kg@H4!204έrbad56w-Hk F#^r@%Z/\2֕R\Z%jF@6ORBj-YvizĖUgO7'ϻaV~hfmGR/ HOqꇍzm11FMJݻozΛtJ(T(q;ҫ/?t<>~w>\x:gϞJ:)y>~\6vAFi/WOvûos7^7o>VJv;: ~wsDku}eUusP9[k?~OD}ӧ!_J)?u |lvFrJXUi}xq q:$?ռ5cRu10\?SvH$ ɐ/}ߟ/)Vv www9QuJa]No~3n|/>II77$}mKcGo|~d8e;nۻoq}}ͷo> 1eyx|@x]?߿1~3޽a={sRXb A/yDx~x8~xn^ wn7/Ӧ߼>=IkJ t'O|9lGg- ^|y8?>M8=}<-Wmɵs}x:/ "z<W\ey0mG~v{#6qĵ1VI2Jƹ3kgf-5Nӡ2\fg%ugwJJZ[݅p.))rѯ&Ժ4f1eJi#XdkmR !q` ְ -uYq;OseuY1,$㔲DJ䗳$y|=ܪ])Y**)jl6)mZ2ff&P5v! ljB(H2PK<_B\cu$6ه""Tdɉ["jJ.ˈupL$pFK,d`].;!7ҢR$,XDnse=k @Xp^ no~dBztx<<wᄏ??{f.̨hF9_Kٓ'b%uKj$r 5hj#jGnEiۄZJBB)G\-AN Tg;Ōve>)k ~RJ.A-;֧X:;*a'JTj]ߧPo- @RBcGmz-HR׷R# Bl9&ou$@OV0nL !R+7FwUVRRE($U!)UbA !Ɗ(ED`Kp.qY }9Ѐ+M)Eìҍ#q_W PcR-\ʹ~1H(GAX4HHDCG/qC@]RN1 d,An*׾/J`]K9n)!LJk0c͊puzv۔4 I~j(D)d ޚa~ͫ@$)4Z!ԀƭΗ Zքkabf5"i55TxЦؘ׮Ѵ(((r:c:Z$.12CMb=z>oooh5cQ͓ofvSZ:MWƔi=>3pmn7cwx|m6Hp nwnR9?>o!(Tt,˺yc>Y3h:ۘ<JH)?\_s/?^p ~Fmv,Cs}}qۮ}?ݍ9'Iˏ?ow_ ^zswwKD:)iO>'|bf;4ϵt7sg\ׯ?SAjmL zRFY;"!`PJ%~B 8O]?xx54@K:#DŽҍJFR pbGs{DCls1L롵%sz)k)1@ %n ]=MpZ 1sJAk%lS@2xj^b)ԏR uGVNH]J$aPJXr撴$lvZ4ݖt'Z Q1 t꺎[)%pkAlYÎ5J4tJ"@\jiP%RI)hm1}M;Ɩ"b&RqYk@4f@1?n1!2ZclJJrDF!NR:~H1ikyzҚjqqn5"Te)%p I5D\_ "PJ hxbJZʰ%n=/Xydc44Z_~Y$PbR%_\NV(8g,xF؍֯KXθ!E rq#k)B$'ITv*76FRDJ̥tkI)Nքȵ?8D,ԒZ-%')2ov5q >-(Y RG!T6V$Pwva%Yp\[.1j%BhR֑\J*(9$:O@"6ƴzTr)66m;f38gsMTάӉK6E H~>@`]7R-7Ͳ,9E(ܼzM}0nw?zx8+Ӳ6f(//޼z:y*W;-ꩥUc|?z"8z7]6f۟'_n-Që7oZ߿MzC߭òkg̢727na yI {{g/$^LJZS|b6'JѿI%i%Q1Ib6r+A#HZJHDrښ=B 7(J*%I",^i;9R^=uBkTk떿̽(m9E.$>)U?>V/Hrn*S/ukGRrI12)!s?֎- 5 W.@RrJ(̆J ٴV`kkFSkEwC`H1ǥ9@ ȢEѨe<",)"'~jSdEcX'3 SqR*VjR6 f4I̼Y"5DR¢Y-2@ִI2XAo^8s j RJYKMdZUJH0[T+µB&)ѵԒOܟrN{j+'|FvVR2'!1A$%їA$j-lZ\R.O-fUn6>q#*@/+ͥJҼ D @E!Zu@Y@ӛՏ[l JR6(*-@ dEԌ!ƚ%s%̙[N!,EJ,V"֊JBH'd+ȥXKN7Kk(5 9ŅqKmN!Ijkijɟh %iI+ MDHS$d t<\B$ fkIr!H siPBL)HBQf롁sbRni~ȹ7PM\۹v[FIhZ "<9%0BTItCDI)tja#k5Z U!ZM</I bX@MJR^GPH\tBkkʜ ժO7MnV. *@(K-98g1K*a[9VĖCJˤIr1RZ*H\>BȆjZBuҸ.؊YJZ_p)Lr@؜6[5Xs!^/@ o?ovVog_LӴnKD[;yz8_7o7A|;ɋKex<$I;R9/˲o|ן~ᆴqq_BRu՗_|jFĻgO?7~ԏQ?GJg!i-6r&NR^rZk!(&p M4kmr~|5Y")ERR#kUΕ%I%GORHjP't+glke@hxxDZFz(" 8 }XW`ʒ(t?>ŘY[w8GճG>s>}o{52ײ/<u@z^\BDja1f@ z#??>oU>=L+6X8|ku6FḄtvy|G~ԏE%Ⱥ̕\S~:\o Taei^|iZiZSC7fIJRq4*ZTJ`\f$ACѬ%A0CK/yڼռ(D$P+BNI)ԕG`+"\}|Oblf{ӻ*n׻eGfWZ*5xˋm͇COé5,2 Wxѝ3Ӝ0 0{N%rfMwA)Z.q%p{f?=Pl +%W]Ck!tZoWޥRW7u<\jͯ;u4MO>,h?MDnlxIRÞYZ0ZQLRL֍}\˰٥\zR\]3~uI7F2gl[E,Mum9nSDҢ”jy9"iuDs쬱k ~$e3%yjwF&m%q.Wϡ֜ ;?5ߔ-Y=pι!ߐjjVIC!CZ,d )G<9.it@tKVk}w<Ĵ[)@@2$FVɚbPIG"47αV-Li)sk h>`@h*mNqkވ9C?T䡡('|a0BDRU0$]Y `~֬!|jf3ri^sTjfONa`Yݓ@rNm#7`SZ\VEcr ,gمACfD)Bt#"mc˶9qdu+tz:!望'Ls@9fF
kNFa֐iIU=1KަaBJru^Cf:s"mZR}uY,δY[Zjr.5ġb(u IDATiDM5U8:U˼CZ#R!: 3u9XJU+n nC\RrW8OqTrܚH2B7.h`&LYx@jʹc@Z"C&1S 7bV׼ #0i9WPw{RC#^OwɈNՒslڪ!:lF`Z6[k֬YKqqY }Hy6S\HZsVVkUyyouF#iiιUϨ.mC͡Ruv{'wCZΠő R9zkZsw,ۆH ܴFdZrj KJOj'i{J;he>y:\ُmPi5t,[g_SZ}78 ӼiZzDp9bO[%MfZן4/yN~ `x|8~M~]ӇDū2~O.Zs߿sw{{^|N%2ﯮ_o~?wͯṼ/X~<\\={L?]^]}pR:UuM,1V\))ڲlw,k+ښHk؞3.(/ko{ÓxMLR:nwQcjΓ~ouqwF(<\Ysu=Fw㷯_}78xQٿU0,"8ֆ5 S+,gZ`u[DXh y}Z8VP>䜰m\JHČZSg}Cח5kyeq|ڶ5ͻŴ@>oZF SΌ/:x3#w[=+ G,j$̆i^*؋DfnpE-D#\TXs<fk>|tBr~1V+Z(iMAPLsնm+(zFRBKBiTW#{#圍|o-+zvC#YgXA3C_BΡc\tw9'8|3}n癙2US~WMUӛWe5=|o._}αi^࣫hS',|Kl6^>ombq7CmP{BkÇVt777h3돈>}z;ιjߓϿ{Sp= M!59;u9Rcx>jr5c1jE |B:Qȅc\Ȃ'M9e>:nV8D\콟嫻c7N8͠4؏ ԠnĂAu~}xik0]?Y=2dDbFd`D$ "Բ.;= xN|$pI~$(/#0aw jS;$j8vJ#w<޲`c5t<~Ohm:S;DZwwj}׭ع`5\<#Y}7˖Ԛ ѓ:8*̻qdR As @SϞH$P"mVFîi}1#sj чR)c6EN#ħYĒa$"6Vk1  }cufeVD<>m]]@ A[so@Ր yjՉ+-mK"0S}'ZifO6q]Ze0ۺ5F0f&Y}\S8,˂Br(֔  c]iݖW^w<^~2ơ>] bL'a:vȠ$nkt4;a_Sכi^?:]__{k]̭-~y.:OR3C_kqkbWS_}񻯾i8Na=㎭~8 Ώ}rBݶ5Ӝ4a:o?4-W/ouiD?GfZ!i_=gx2x.i%Mi=95/Bt_we .-8Χe^e׋w1v궭@o|$C~jN@ ֥{4mVv1cIɻHΏDXfLLՍ2" fFnL(̅@HTGVmZf>:Bk1"jL zfC/W 4ƔW!v|Mq3 !ӄH]7TQ j.(siKn߿2'sVf1N"R|4j-W3a6m pt>u}8Q3e[}uCDPSZBҊ YaO.;iFTBrttݘ+ikI2zmyN \UBT!\!!6 ҂Qz9kp藇{DFB"-w2?܉'\%j̘sX'~D:naGw1sy[۳k*HպLGl*v}nYLi:m_vʿ[oze竰aci}1լy՜a< e1 ѥB'cC$Ry~^i~ՕEXZ\+ ԍR368=<4=x͖C7K- BCtC$ƒ7f"3rk*)!|pBx`r1tsl5-1\8b2ɹoYc6Ӎsiii%%%E+Rk|(@ΥYhZZC\rm}d"Fv>WǎъJȣ9e?5g!Rд-k],1BD,OT\k!1by1SyiÓv٥0Ӎ#7KK7 `% Z Rr*%b21/9po %-Z | yY|/snw(U@ьۯ^nҶٺpzڶW_}?<]\\7Ubm"rz..n_zut"qD]xm]///Nf7Ce[tq8Rn^xajx{Oo[a 5sJivWWqts곗7_eNavee9=zn囯v8f޿/| xq)o !|{ߋ1cݧO<{T-|sۛ#v}//TQc?-"U-iWhnXje# 6' Ӻm]V""E51kx<%rnVJXysY5Àt[N"<ڍ{k-85s۴fdj釡Ეu0Os314Fe= ZVAMG)03K9.˒jZG- ARjS 1RTke]PV ZC;'BMCW,LuL놈J3E^*Ztq sڒjkeQU)=)xqqZK97h1トZJ:C@LeƆ~fZ3pݠ570 -6&KjfښXx]ck9m^cyqcLhM5snde~TM`DF"A|>缎Pry"Xe]N"&2xDV5rC([byfBQ>Ԓ؉ `E,I7{t ݚJV1v5qH@H,΀Ddۖ!!Xm$IciOɎҚZKZ3}ɉI~)__~+W_<ӿ/ÿGf\ߣ* +y 1Ҭ!Z1w@cZM+Aɠl3Rլ'Zci I ֠ߏL6=0lV {RxYFpݶn!fH;\uKiweY;?|E׿~q{Z1wM /_ZUk|>{⧛tno^?>C7yE.e<n"bv_⽮Ϯjn˲|[S=.n.!|W_S.?ڬ0A|8`]~v}Hy΀Āt9/_Z?]__?q|ÃRJi]m6'U~?O޾vn۶$rTR#lHL$vb ?>>㬊@H]'Tj醝 1RJ.OLRJ=2ko|ExuF-oi[ P00謶VsN,>DNv]n* ;CB7tp:{ L,Lsŋc }'U'mњ$% kJ0k !s=;ZkހЙV$$3 !237aY\Z'0%&ؖHڪVecPs[HbM8 w*v@}[=lYk\t)XcQ_o~%g_Lȟ-?-w%H艤iqU pN؛5" 3Dnl$$t~Y>ƧuAw;ĖcN!՜sۺR0dvQVkDD*ǮgqP͠l鬩#`k9fqmu<ٝ'kߏHRrM%s>vy6qZCmM _SffmwRUYsyE5j+%螎5oMnO}j)w+Pt֦H,U"] amPK~d8'J, ̞s,`Ώ!DO|] Cyyr^< 0UK-D֔ S]5'(ŷfj@ D&4cmFHUǬ̬,BqSZ͚)~S%yxĬuݍ*?/o~}g^ (. a:|ӹ^^^gv?.?>~M<Ӄsp8Χ>^.b`MnDZX7?~ yO{{88qH%vЍ[onW/^b߃9]^7o çY3]Gd2#BkZkމw߽״>߽x&7y7Xn|[c؏Cf~_|q8s<0g?.= `P?͏3]|ZfyfDe9nh6>vIWs >Jyj[v]Dtu)mVK@D1v] Y$]kB!!wi5XU˹ J-Vuf TB[sNeߏLJ]x%N8F1D/RkeCֲ\k&z:QxQպ\Qċn [vGmK0YJ{\lZCe39\%v;v>vPfbĨK,k֦H$Ě3KZ#$.xF׊K@ ޚyYqJ]kVx$ZcT8a!ߣفd.mKYzPlg4caNjs[_])1Um{)DobHU)yR=Ijm݆q8Zk rYs9Wk=^>_~{GW/_w+h(N1⼯2a-6s˵VUBbfff*.mKdvZ[/KŲL聀s) l )fۺZKxvc4  ۖMKb¢Cr)\!չj|W"X0ϛaxbe Bʦn/1B*T2$v'S㸝Ś}mЅ`H$YȦyf8*2#9g,^bZ GPUu>N X2q$7j:Y%ռn|'"!H'{)]/)RAS^5Yl[Υt'z{aGysJ2$Ds]NJmK) }?/S#r&߇7H4ڶv}7BNH漯V6%t~lZr"x'ωZN'D;a:߱! nUC -b& 95')9DfM}?*: h ] Q5W.I5kȎ1T&DF(dMa],-=R)hϦHK1զ>x3I~G$T!9\\dF0v"RBp0r*P{"@twp{)Hpw)Bn޽s_}3~-dַ_˥m_{o>c BZ'}#x"bs1^xn_]=-Ϸ7N|uD\]8OxG$\^ZVw]_ox:??~ OzqqADt:O5̵~bZ.77нy?'?W;ߍ|g/߼|f7o8箯o>|էۛ??яH9FWen ŢX lzA|%,ر@jȀe]rUS1<}2_ #32zw1†kT!Di Ru֭ 9mDgW3{?@ab?kO㽉uTp*snߗRTAT*`s[z 8vfV2YԢ!mYA;.1u]a`fD<]Ғ 1FDZY86 R:Kۺ"^!NL:U=p+9WJI[Rq$Ӵkc7l١W,y&^{ 9gyqΉ[k޺jEl\*1} . Lj3Lsa"<Z4!,f;眫a{~iYJR!IUZkUUkBqaZ[?1W /6C+6V!(BWUe6T@C`g-9#sЍCZ!SK2ֶE "c΢Z >E03[Z[)>N +06TEE 0RVikifr~I.LYSϥ<3*ô[RfmZ|"uϟon٘ޚ>M;^K*!R2V X޹(%.FEg[9%r(RBҶm}aX轣~9u|{!^楦ĒZ-Dm+ӕbfRbZW@MD;B`¶.rRuݶ8oou!|nl =cJ P/ZoĦBhb39wo_?n=<~|xwQJǏ˻E?яN~ZJrv**ƐB擵&OO=Zu^߾}qqmۂOm&ݸ}Ō$YUkVNKU*f-CX\8Oi=aP|Zг qɲ˱卐s9RRL56l|u).0@ (ayA.zGc}lzZO~aSAsZTUPvZBF֊.jmXD2a70䵵~N{Z }n5[y^cCO>0\]]_\Jɇ.bXY_={pwEiLĿ5"/^⋯8`4^\4z|Î٧|:✓ښ9׺.RոTX#uK۽hjĮ!>;ZkƘZK.sf><֒!Ho-asaHˢ"ZHXJ] Ħ ZzfeȐqTٍ^ADu^.3&N㴻\%7D aܶһuaiqr2 h\hI 9mލM F։N:*ˆPQ8lr/Ll CιZ V*@_!:1&!rjR=5Fj.XR΀"@DTK]ŻZXD47`19y=HIzO' ڪw.(7B bAtZî)0j-][k6fi YZ[B-oveEuͽ1DkQ T,ޅ@]z[[u%XޖHp2`Ho yjM] xJCМ6\ޘATjJim a9o#p0k*(SZ+4uD!8de">.Yo'w}?H۶ԒUk\ol]V3!X&iM+1ֽ1]j`Ðr!1 Zk!9.znmeiГؐ0e~e%[̖Pv:(a8z]*r2\Gi[ʩn~k' 1kn 0Z[q.\AAD$lqb ZɧOwӅGbkJ:wlC~T}&$mUUs.nlHԙ8cZ.%e381ak:{gBT%c69 HnZ; uވi9A#ao $)h)J"tzTlnZ-#:6@*pz[=U AE+T}| D7/d?!`1wYr&էONLJkq2!Kyˇwp_^^?|涬k*u_?/ɟǿ{{ݛw_}:[sx=7ƚ5盛7|yytx$?W_}ן>}^|/xulNj!fE4Tmw׹䴝֊nƵEzRI`Ƹ~(uCmZ6&h%&$늄~5Trͧ9Qar]V13aO` YصSz8|L,!/Uix8[Ƌ.wWOV݉ZfC9iW;YȰ"9I}g~v]Z"60r.Zgѻ07i}xw@DM VDmdul]MmI*v[i-t!;2>.S qlDKih xKnrj&0'G$Ʃ;CRk˽DeA˽TB,Zk)Q^3I3h.zwȴR1ӺDYAt-me~ 2qEP:ku$`7R:׻\W$0^xqmu=BT}Mǐ[5!m9!bpay6(7Ec{l&vړ}YQQq!qIKͧf,5vl` qDjN tmWf52#"0UQ S蒎,2a{6V/B$\s5ѐ>L䧺m/ (<篷[//@8V Oֹm~ =UDja[gf%m3YUg9sC:?(†De)q\ڼ1y[Jʌ@ECzz-hv(k~ykں5kE!Z fp+:jomoNbSvғhh* P瓖M   ǣf 9okjdaUJ>܌2ZT m9cqpu]lvaO;GZ#tU紻;ǫV;"!3B |^R1t PT8Ȳ,nKZKk.4/PkS$8>yny{__)˫Vhǒg_e/m>.ۖ5'f7]^_,v)u///o޼bwyq>|_9sL On^9e޾旗Wzwׯcp<֋㧇?|ʳ'Țx|o}p/_Y_xxxxɏt:Ӵ3Ƽ{ruum+ݏ~;0N0 l`?[k1E>9w_իSw]i];QK1̈Z(֙:Sr3VKGT*m[V.*f[7Ny ^dl-y1AUZ,e@VkYj{-)Ve3sy}uT`k/miaWr.ry(u%Bgh!\1i8ce104Tv!KMl> vdٻmY[-%g1!$[fץ0ZW'mؒu> HjMai^C+)@Pk>};[kzOu !"-~쥮TrgG<3m3j^wBNy9wĄmVTcB IDAT (V|6|֬ʄ4mY%@zrZӒ1dHzޚeYݮRP `)eJQDl\tlo! 4MWPWc.LuLPhZ$꽛!}8̖DunZHĄJߺA>h+)h_ck)nχy[oۙa|~[Smk5O s7T9 MHԠeV-("11V{[]ņvR@ LEZo s46(q&qY۶U:D 994vw|̥덳dΘ BmMƹpy[ q]bՊ 7\tqn2l4\Jy-mF 9Ć!߶bMڹŘD`{kdPz%rΪւ1P{kۺ;at[U90l1 Ω*8终1&26X%-퟾4q\֥;5Ƹ""t{ceYJgX~n,x}}xT;timYs(]XU( &/?]]2>- ҫ/0i~:/8zC!򢋨H2;ODGk_xgwZmqȻݠТ޼ɓ޵K?绞>}SZ'2g?}dy}xxK}|xiZ&Nu[ׯqw{/.˚o֫n?ZrJx<˧Ox:<}_ɳy><>,yw{<<0N޾WWnݸa{m@x" GPE;YMZҳCJku>>01jm65bҲ4Z>֚~[+]Y{7Ls!ZT*ˋ+$JV88$ueO)5YrNWO{ӜV\i60kFdi`{58¼3:H`ZgsJ֚vrl;RND9gGJ݅H1+HZ*[krlOO^hm׶,Gbb2vbTaT޵} 6*]zmZٶ-D2nS><-d !)awqqc$\5wꆘr9{ϽUT"8L!!k:ZKޱ"YP@OG JHTs5QklK^[=^,iJ +#a^'kmJiec55/%o T9ےryek)ۺwQʶ .9m4Z]؜l˥È[ 6"4 9LJ{fokAAx/ ʵDKcNR@Dra\۴!!t:5=̙R'8ފJ7!p-3>2A3!pΥD Z[-[Wp>qUn9"ԪAю[ыHuε..!Z 1R\6]Jjɭ$荬î#H1N6[w>(p6䫞DG=\s˲//8sNaH [38HKvFƖr"6TdՔi{Z!:'J^Ee_ce1x@Ӻ9wy&gތaXcܶͰ%@J)"/!c18j ⼵X`(D6sIdB$6tZZ*>$ iZJO?\/snJZ~[J\b5lZƚC< Եq Л~{[xWȾ5}n]*MUe~պ,CaDHS6,NjaYTU;?~)_|Cp Ʌ0ϳ5*>|~xxwՏz~?yͶbs۶l[y|_zm,n7n>m9ߌnKuf߼yn^w:_ߋq10o~77_لaPهy_[.yu.v@1B䝃>)Sk5yoHZ-݅1UXc4ZTΆzi&`u6)o PضηZҶ"h0RD( 1ٰwi^1957;DۤN!)nc"dZBd1ak]Υ+XkS:)/eͫ짝nZj6ƴز SBP"u 6vu1~wyz>Z**h=ƨДDomiKUPuRo|9\J9ޮ.]`'U]% q# ޴KGDk-um9zy}uOҶu!"V{.5{Or|l8";Vq"5뙼VI$Gg]괛rZֱJSLk[5w*k2qyT^35VJJFlTںRn1ĸ{jشt9ތ5BlZ 6Kapv D;Zkms9`03 Rך·`eKݺa'HdP8kfJvчaWj8 Cpxqdks1FY@,;s_| p)|w& 2%4PƢP&uHɽVfkIDR%$ca/e9n6 s^ZZn[w"RJ~ث ~܇ؘ.:rj-;c̦w14p)U{Pb`&Bi5_'?^=}'O=}1y?>Ϫ]唆蜳ovOw|}ʲ8nMLJ{iхt<it|z{ymx'?<˗_[9bN5aƫof ӛ3}%_!,*\~?gO?{7C-4<{u<~{?"cwOnoJMl/;x}~՞[<3Vzk1DK\{unjcrqh:1[;wW9z,랷fȆjN-+Y""JY֣*b\@ trYu,O׷^y Ӆu8 ;fk;rZ0uū cH$/'Z:m߼RM֡sɊj^pxpSTYwkW3\}_@%@"םn@RfJqrW,2(I2fR`ŐiuDvQ4*0-'kkF6m @Zr}^"àCk9a1L"saݴsjU˺%0Ek,4Tý.F8W{gkaF"dqÇ_uqH>t%?6^O 1u6 e9dR2PIGUMh>w붜ӸUt$Rpqؑ;sIxR,Xäjo>Nwl0֦-vWOuaM',w>WHKaFd;LeeM3ܥJJ9wQ 4h-rN:K=/d8RS  `;]BLJi0~$%!h͖Jwd U$k]-[2#TǙ ]%sv4ß!_褊A^ S'M L76KrVSWvFK) ."JHKU*0 hl" è*=X+rT~Ջ6no LحNr/Ij.l]VeÜKN5/ƛuI[NUqݲ &(뭵sC+ٷ^Һ TVj-t_}L7aO>{7<y?y~Tnw<3r<qmbu{xw}_8kǧO~_/=Vk[eG?!2*iy7ot0ƏKےݛn߾A8w~w^~H>&Hf|II2ѹ@duThYpWh|\jC湔E>/mKL2MtQ jxdžDZkY7tl @luvV 1Rr8Nv涮kpxxm뒶sLlO1ֹam*% NPb!յH.ڋQ) tKDH[%Z~؝; z?!Hԥ[v QJMqDZ[kn9yg<""D[ xou[S"c/OΩw@8Eia7jM)׎ZqTJ)ti9D[|IFԼk<"yW%5#qAUτ"ck-CR.8O*{ CЋ!0Nλ)!6v] reT眉9:MhIYbZfKȨn\k,3wTf6 mLdo%!d"Ke9qfM~e˲{]ˮja`%6 P6`Dxd{$@mPHXˬ|/5{9n^D"^>캁Yhu˼n4V~(".n>g8>*z>]=ҿ)/F+|xMCHR5pqME$ؚXkʺ4,y.49U;8ݠoΐBa]ל20̪Ï B[Nc{cxYgU0Del" "H$i6.nDq< !gV6gmXSDJ6 dyLjZgBgZngfc,ɺ4ࣱ^609CJ3PզݰզTc.r&I*0oQ}es&7qHTb촁HE-֜s-qqaC|n]P$%7nY'x844˛aorHrA@&V\%xҚkZt],*MGB)hDp[iOrww~#:=8l/iFu9'}]]\\1cbx:O/~O>Feig?]-2; y&ָ`}j[RjRդ"6Ƈ*kH Qjs$q3MH8).O!h+9YCqw}M%Y-3!nc}GgAmZEyqtyqܙy*䌯i`\kR}i"kJ9O4NƠMK-FvQ>Ƴ y)ErBbwIVny]|a68TtDlL` ukPM)w Rr9tFr"uX:U Pt^H)躎JkS!*Ĩyպ.cI&UfBb,[q|(Z&R5a캮!3 *8gg36Z'J[,,PƮ3ֶ.[rݰWDfm)a|i>tuuM~GDi:0ayST?ӧV]?gDָ&p:Ԣ0Cwj]6mDlM6E퇭R+sddRZ@UyVJ6ZBv V7\gnIu\r~Wg]]RZYnD:.V 147&FhZ!^_iZ-ֶiaظ4QTz`m)}R<> [h**dCGp˧<GcCZ AK҂!s)Ykcv.|{iЪ5s~묝)$$$=: IDAT0D]_EIJ-MXA3TB9Heв1gr] 5|T/ƚha|_`3|cK.2"v>"έө)@tklŘYkEDCxhId]fGBz*ZSE@ 0Z^rj['xaIyIeeLpƾբM #(!uETCP4c\\k6hl)WⲬ@ !hc([{ @U2![hja)Zy& Xjqly{TӈU)ڰsԫRTkM 2}}+3ak _^7[hոp{> _C4/lKtԜk)뺖Rqt򺴚[T. ۸JD>4v䝵xkΎ&뻳m8!'DPhXYns2[l4ATRKec[kZk{hM,%˵dE_K~0Xk>2;`$nΛ*rJ{mXF"BL&)cfeUGP%evuOzAw5J7ĒfDIi =|.: h%"[,ۚrIQ1uX॔C+PDi{q RJgXJ.cRʭf}:c0jel%%Chx+]&”]ݮ>u5_\lS^uk%!R`);Uc+ eT6U@JOVg0~ "YɺPEUa{n뻏>ݛ?kFӚz`3߿=~{|'wwt}t[A,/^r1U ~a|yO۷Wnmջ~'v~Zգg_ bJa}Xn=_w;ZuS=ܾş$ 矿ۿMD~ -XA1WĶ6pn0]܆eas!Fe~0c:h}wmD*@bYGDO{µaZs^rNj1شi[kXJb0(n/njk!t:n{%h۰;֚uگ6inu2i#ѰiǪ|DB#u^\'iRj*.^66LiM9s]/YmՙpBfq;c,"ʪTb}ez||Gc7| r*̌Eb9ompxغT%4O\RAs\M5qPTH*İo!<5;5WPUE:O sJغ`.t6ШwF[)|i)eZǒaw5elhՐ&) ;@ }lf˚kՓhk6qht9okP() C[CE]Ԥ5{1y:QlhHdLRlckycU) ʆ0v~~ @{ߣotr.օFݫE۴g~gOyZEݰulTvw.-cZyOX4˼elh-2.1C&r< \d<7ill@ijkB%7Z꺌0ޕyOjutx"8},֢[uͨd PC#cDZmQkr9z̥ԥ~K2>%LUvCU-z<{;'h2g̽Kiǃs KBLө d\lMCxlJu A4nsErwu":+%ep]wjrZ㜟SsISaB<1!5֤ɈZ׵Jav;ֺڪ=?ǟ|mjWo6۷n}v^m7ǟgniiӧ?}՚j-O<}x?zx|{aZj}O.//rۿ}svu6Yد>ӏ>xzd=~r˫+Xs2.\]?Nv]qdn?^?뺞~\p8]]^]4= j?8/o}ߺw޺~^F-YDka?l.x*y.yc0M(~pԼGkb%e@&jiJFZr1ZIi+Y ۜr.) yv;'֋g6)me+s_]\^λ).֒ gYmq"+cЀ*U]¦̌ Id[@k-T vnNiY 6D$B4ȑs9ι~~'xv%%F]rag[h" chUn/F>tMU!wm.46@6ϓ\)톞ۭuNjM-Om"BiJ)1Fdmj3'ebo/aF Vqv1XWO^?}kcB[穖CG/߾3k2OĞi"!f#31jS5lq,%:q^@2} i)t1t4Nm\ Q[ Z֪\?=6dPU0xjRglIkZ75͹0IJd skP ҈ViM4<ٔKJmHrVu :)n2u5wΏS<645~Zڅ@DYk3u] *y]Φ~ͬKmtRJN!aw}Djk58Ɛ/nյ*kXZdkYk ﻾[imvhMl6;&]UD:#4e41_X*xowǩTݦeY'ۯ}{?p}uOOˬڜ>g"Uk7c8>{v.www::񸎇9勗k:=}?7:çt}6~nNe>Dgn{.66_v}g랽0\~7o߾^z/_˯]]nnRmwΝPtst@*p>.踭Krqגr0l8Kj ִ ]okH۲,"eBp}SS>6{)Uj]1x.VS 󼴦 ZӫG6bӃԌ Iu͹F&4U 5Ņ*L?tι2Gk|@i9(4kqv:$'(2;v^DEA%պ0h"> \#<{&N%k|7Jj߳.gH9{]{cxm@Ţ:MkRJ !cCa/" 3e"b"*n?͠ȥ  d &Z*mpqj^EѲ+umM j;ֲ1*8nSS(@(!Yg8PqX.6rqC5%;:oҚ㝱ýqƩcsMe=j[Pcޔf9xk|:eBf!5 }:vNJNΚuIkչqYZ~<ؘ8\.i԰ !{g5ޟ`c4ml}sackB憍zb:""{%mxzk\oëA޷aaS629,ua3jsݧ=F&z7 @_ݿ?>2Jt6}hZ%g"N'@c EIٻֳu|w5޹8~נu1y߱p[dsβ!6,5RVԢhM9 k@:Jc##\"ibD,KZY61 18|ٗ]9oaݟq*gO^}#rw&zۻ~7on䩴n[VE{WxoիO>y8޾yO|~?~ ߍ)ƾV6f@9gl-Pb78Z[-%UkcMYORv{m_qZGl[kх*5J=!b-)tFC:Nd])dyOD37-5YfnY@bkSEs "uM9idUPV GXDB}7 M+1։V$kM]kiTAk5gE0a`I+4sezfE%cB# )ɄXJbD)8m\שP[Zg2l/e=2Qu]EO9Q"eAlu][Ck]&mRJ!Du\Dd:M\{> Xwi>9LJ{CԚM>8s[۴u@$F : s,Ǹ,<j[IATؤJMÞ 2#ZԻ %KҚ~'jz)*je:4S]k8X"?u3XaYIuU)6DñlBE?[v[G<3ḁLca[&y<5ଔ\ 5^AJʈ0sK! U-RTz9cVUEF"in2nsA47Zi",7c?(Po{1D\qGVjE\RYgM2?燲dzq~]8?3>|m0hQ6OX9.쯺o@ #}O{]<.!ݲ| ֜JuDȹ}՗_r.byK_|G2N 9x^~?-|Mvv'OckBU{1'jS=\^/^{kRno_o>~Bxa3vOawO}nE !j["nElx9a-rJτLH5!!3 cyZ%I[c-Mw.n1to޾8[ƾ239xlZ&q<^^_UJLjԼLrK5Gb܉Թ]Җi[^J[ ;)jkk^%b'[Tj#:nC -YߙG8ʸW$@bfѶW:vDNj6S s;Z! !*2[d" TCZKΔRTcAjR (2/ AZ.9l-UYmC5U f:cXF%'$Į~qs:yP42a2MWe<Yl'Rt&0Z6Z4ϓ58ɫJpʍǺn;O&D軈lT؅@Sn6J.*riY鸷Wд&In@״Z+̸vmhoZZWEw= 3XlC)1ynې˜"j+y6\1ؓqH.%r%fr2TAxct6gL,ZTJybLlR%OYSiTw0B%-[lUe55eM5.Ec^OnaC];OGc-..1.G٣y3ym6J֦et֜N umӤyFQjM>q]N靉6fqZ9/[;Ǵ%H 6ŰiM^f&XP[Vdacnl.4:qz(E~p?(qZ^ѣGW9wo> hb\윷ݾaǏ޾BޭEr>x_JƧߙ\ ˿wnww]7L=:ׯ\ZJM92|ަzsߒqκZa {|b,#_V߽!>~ه??mq.˻o~)Us4ygrm>yt?ϐr]̵Be]MyPg|IsYBi[8\ AV[m 1f5iks^f*bud%'P!"JI) 4F=]ףZ>ow_'=sOkяndU"D4 hG!FNxn~BqN}oƋlLʵ6dTu,aj.vCZ)%MnKӻ{z5uN ]]m60 (BHI>)R `GĎAv誮:9}=·mEk~~rR"b#4ZED`KKK50V1fk\ZBJ.ƺJk'!_Y,jɘQKpӽbadM]'V -EF%cs w?Z:S9@m\u4圵뺰,lc֫EɻcV{֫zŽ{r$mlC~fsvqq5ie7l Kٳ:Ca^a[;w|J1?~493߹޹ZϹe*Rrη77=N}^[|w0Rkwn3Ϟ}죧1^]]W>O{ե7v9*@!e1 4JP<q@񽖚JV+ojyb]'jtjAD6JT%̋k'4)z1p 1<]J jBhܪw=j+$hyY z<|F?  mwĴ{/Wۗχcۋ1P+*e9RъP8WR:tkjW֔j}|w.uHGaDl;N3!a4A pjAr䊈PjMk)qڵak٘ $\m΅ 2t=jk5Cܱs(b9* Z-۬21B͹P[4O0kL\ˉ@9F)a5\Z3kkVUMq9c;TujJKƘnv%Zk|7Vs\v#7o[;1Hf\[mJŚr*FJQĒkN tgb}y ){ ! KF.\ }pU?MG"$6֍w`՜sm;+}__>#?OV?|_j ukk%yF"SJI)&Nɚ%ÜKBakm'UqՖR9&ڔSK~nKG\~+వf-1 ɩ޺6 !Z+8[q:rHU`|+JKJ<;K-h+د7fD(8O[l'M+%aY%gd՚S@k. sZx滍^~mO1S Fx:1ߋH)E*ZG@ZGs +`#8+K̢ڪ°!xqy7~?dzӧ_pE {/ո9G_Khϟ?sn/ί.q@n7GOm/aU8ǯx=?;zﯯvwuuno>bbyVOsx7)l!fod;o=gwp(oie򦚳Ȋ"Dߩfo )0H82RK`1@}")tY\&>tRBj5iƗ\rJ8k݉u.4 W01l6Bvɯb'9 Ɲ1QG*̳p3Rآ֯X,657 ̌QjsNJjQˮoU> X8ݲVgmmy5j 8 -a^(,_Zu>|7 VjZ0~'<#{bJJ֏9'܉2rI1ږei*y9 Ѹ\'ŒlJ)*^\E5Z1oPcY9DeHJL:oPJQPPE ( 5hq@)%Pw9UkVA2;ۣHs3a"km\"2k59Uvə-3iw[PffM2R*h#4 妝Jԭ7K 6;AeY9w>,<{gb`9 kN;fkV %&VB]kИ! :gKH@[J)Lw5۷ gf%,dP4&޶ZC?ĹsQkV\KܚRk"U1;`9Rr !CθժVBQ귽 xݿ$jJ_zwv>,5f`&Wkؗք1N{"4}}Hf[k@8zmetXs'zMld^E틐+xl.aVYMk3ޭDěK!v݆LWTV1b,\l*rd8 |ZMvKìP14͇qs*MH=15a q"֭3g}׭JU1.Tk-XZϞq>01i*4{oϺ~m/)-ˡ"DV خlKXpZJP:bܰai]O,"L6$K6koG<9DC|# t;ؾk=˱VkX32$Rt9amT|w hZ3¼,3MGJ7`[O b}M[{FTkbsmDֹ#RV"[77܏?ֹ;V1놚3yi @bbFM }ͭUtU-Rt*8[SџiR!H^UP/v-!_YD8(LU FWgƲ4X_AJRbiR~daG,csnݾDȺy2gND\TK;Yfu?^y9[ϟyc*W߿}'믿Ό7:\a>lS ѫ={Q[fU?y^ί>;^}l:[j:\oys{Tk~w윭vxp޽^o^{xo{\w?q|ے˲ı0ﮯ?1ɷ>}w}WM.14MGϞ2Ho㨪D\sh%"DDt89@d㲿'q,YPO1i1ܚ keDbuC4yӉ8ggd:YDR*z4N\KX|S\f=ydX, Xps2~׌Zi5033 YVI1R) 2mDɉ,|~j+<71e; *a6DƘZJ {@*(!/B7ula@КAE6b*"ֺ<BUP"!8ޯ+Q[軋4Miͺprv|l=zg؇\߼W|33[kkY,ƭ["AZ 16yԦٜ6*bNg㑑YňgV9XRjXkOx}uIJͭUfbJa; 8׍Um\U i3"sl޻z"BɤxZBAZ[)sfk)߾xj찪­$Bb~r)&hĔbLn"49XD$nܔ`Yr$T'OZ+5Eb(933ycEH<֢h-9uH%b֢N[bZP–)Ysw1kK4kHDĚy -skD" E釵V)E+wC=)[9s]:7 XǦXjM)`Ɗi q})*}WSJqQ '!fU9,iy͌Rv?(hDD~ A7AjM'n>CieBP[Dzή8;gbLƒTJ&֪֫yoonWέjYf+FL)Z%c1`Δ]?B"U`%~[jE}B,sJANEm-(ƐxzbZaމ88Pͩ 3EsQ"*NѦU &N"77u %K'H "WJ)(Ɠ,u6@hHkb$,SICU=k9zUq #ARkQPiWDL]g>t ]_ ;Z~Gv;!31_+:_#OC_uo|m=4vsjnon2uokS- ~dnuxXK L޹2|x#e~½e5?cO};|z,>eCпwE?|)C_]+>×_{|7G 1˵%Ƙj)9U=Nǒ34ծcj"@ rfńbb֚XZ~x@ IDAT%sbP=)!Ls5ZFؚG9. |ocX|iiIX1(BBaѪ5e裏.<\}7>+/?x2;W9G/^* vҗGkRnw֔6]׭nv2/_|׽ndu8K))qss/?zs-gVbZ{_g\~/27w*ᛷ> r<>yw OfoǛ~ᇯOVZ,YpZ٘#3#2}-ꂝFc8~ezam_X]pKL)ĒBʹT܈c//6g\\c$Nc1}nXpKhA0(U ZNDL<:uU)Yw?y_jmq&✓ऴ`kN,~ ]{g&11L dFO/KSOͭw,.c?!c,n*?rëuo;~Wſo^xm/ѳߥ?ի`U'eU%Fw |Gg'}K:/ӿJ#$PW5w>!t?;[P+z~#OkD—z?bEQ !j5h23/˒R^9CeI40 #ަy"Vq2 4M8qkd!Hz/!K_aiffgd?1,6f2K8 g1bh^֎ǃ%$UPMU ݳ^ݹ{~gO}W}Ç{7\mή.KoMkoߟv7/?s>{5ĴYwZv[cc:~c{#s>eɛgOl8OVg}oy75r7w?`I˗On>}E~韾뫳ѯV/T'دΞ>p\o.?H1n-6=UERӌ-#Y06dSB0oVArsBenEB䆨-YHk _v?0 %ͻasܠlUrڼ)[4eMZP@dg۽rnb)!~IX)v}񮔔C$m8eg1-up*Em?,sj5PVcI$I %BITQ41iw=57ZLHYC\K6λ_bыsu4Mb}Lܐ0|xı(Ea6GSZI* XJNi Z=^v%-d]<;A᰿%46M{1;J!|x*_{4 7%Lt ,Mg;>]U)*T[PK ,2TJ`cJ)%5UU!#fuƈuDt9G(f}~s j;nV&9'jZJY0rG_DvI§W \H`=R,.Z{ڢw @7OBHLo KǬZ^i|ҿO9B@F@DRS\+U֫0 PJi%Mα*iΝRm J%̋ͪ悭"6VZ+ biuY#LBw.ֶZzʁY\ c)30rvqos+)Yc 8]%8:UK⍱GoVEv{{v>g欶iv}gcw(KzJ;Z&"|緇`moZc9ᨪs^]]cj1ZRJ˴1Vo7ǟ>}JbC^]Ki9Nf}vvqgGWwC.w8_5__88fxo^o%[wiKð 4$&M|XKƚI.[)gZXtA6=Vggr@^KYdBE͝ch1ZZӦ%ssfy{pdiU XViguEޜYӮUރ* [)M,1,8Ys\醺kZrc<ǯ\km"p[v{lg\G̈jXeraW46VI'c_k\ R2PGl[m̖j qW[- V-%7UbnM jYb "4 JnxS@զHIJLacIi4uS~"b**}S+dS%mcFe̹\sX1.Q;X.X%K]i Я٘b1kAi5 BfE[VjNTz#dBiGhwQH Q>) J@LbĠ۔sI+̻mbkI2"U"kfRj8l7HWXG0%,s aجyjmal>nq󛵳]ZrN3k(xyLoާi6Z[9g9>>p:Zkr\ݲuIR8L/^oW~o^y˲#io'?umOÏf.tK/kJ$mfcѯRmߵj[9" IޏFK[7?:aT{s1n]k2BK6B? adb)-Ւ]qRb ȸ0OjZriFqu8њwDƫ8Ͻrbi *"벘k&1WA--V CST;aCLhj9\2 +Js֋(0q~k6O*dc'HVT%/9FP$u]J)Vh00mq ogˉa`:݃c^WFd{"R~3"5!2"sי31Z{ҭgVtz{EKZֹa{5f^SC]#[ZzL邈W #(-3j!Xk+6L>/smr"lع֪Zb,h%˽6 d"wԏ#".zo231`7i9vBb_`y0x9iGk-h_Kiqdcp_$9UR9gU\㽿 a|͝(.>`U*̶[I)rDdq:,sj:aBi@ =z7 ލasPD!ӄdߌx| R\k5帶Zr.Mܤ?_.%F..'ܺ0*Hɵ50 Wf.<5uE(i~4kN*Jj5j ek0-"٦8t~bĎ8k2ӦRw|I9cfb9 o9Z߃ްSVZkEP-)HU-u@\ټrcݰy9P:?Qfϟ7/i2w??΍uu(EAZJVֹZs%Wi | 7ބJXwg}>D럶?|{Ow_\z8QjZӥZǥ\5aݶVfD-5-晈V97 >"Vi{R֒S:nx;l-9I+A؉X{Ż1Zƥ ΅1W^qaBg!ihk؋Ҽ.Tj??Olͫy~qg"BNu{yooyKE0yz{|||5 `woa駟Gx~׭;f>^}mrzj=|'Ӹx8d?obLawAn| ^ 75{8ooo?8\jLOonʺ2vwn@LuD5z("ׁ=;`rt>oKm{|6 v`0mn#"PZ{WP<\ڜ'|S\z5.(p<(@q.E0yzǸ9gը("굪Z뭷k[VˌdnBPk'XUMq~|[ VA1]DzgQi4lT𭅂Ƹ!5'H~d&-Ud0͚fksZ3O5K<KkWN4mðA`&SsZΏ%'0H'Ϯ=326ȧKuv!yM ¦}K)6)v*tdC&E~eg9v{#Y؄|msZB:lZk!Ƹ `Tgg29!a׍zoZU-1^A$"%B."9R*jRʺ,]:un%:p):!myl=tVSN ZMpEgXT:R\ pz\UJ[SI.=r ;N$]ݳ͓;BAڛJV';5Zz#*9g={J S Mq&vRrp||dHv57iq!cE09wIq^o ~ctT>X .&5"5c#?go HIuR?+7?!~~5{/Sj֗ c ޗsJ)aSm;x-%vLʑna k\9֚\kJ˝io/-^:T236~67u] ζ[IJQޏӸ&0b+ @jR3Ko):-a@ůon1Uq1*7^|r{lW_u;/ֺsɻaw*2zozH8m7@xs8w/?Qfiڦ,7snlܻ<lͻC՗~nsƽ}xz}ճΚ٧|zݡ8ӏ_/Cc.H6.c *ȕZ^l4Ah=Tѡ"zn [g=qY."y]a]TYSK<9TMKMv䢊CԜro]zytz+ gz-~ks^d6֓XKdhf`c7`뼗gORƹ.D K~8w:=sF[iq]W-֕`RJ/ݐB-E*hjB9.*HOG1·alZRiLv7J={-jq, P^ҿ,uzz{sZ/ګ36:(^N͎Ra܋`ASNp(/1y]/> օZnCk95z{ǒMVD;n-2!nw30?n:ZS ZfZ5F&*Ң$5K-)%EC#C֣B魵*{]_azgw;TjUJh 1qY{oְHGD 0tՒ#3[nn N)^ *iadCekmʾ HHj[YkkļpSu^zFh0KZNeS9-dMX{-rfK IDAT+hYq`ݲ\s~GiY8O LJ>8?*;`'n>ϽV+)Ij]8d{YK*5r>]޺*ץ5 v3mVA40B;H` r|#u}<>6|afȀfhR)f6pdĖHΧ@sK!*5Ӹ%"#t__VgA@*([YQdR__ӯo} 7 Ai*d;ou]wGr{Nx$#C gER[H|+}Rff>Jܽ2qTo;߸C2D!<}?/jGb~OJlsvg˭Z5LUN =X4xZ7M[MAi.%&loi+0a3X? ༷(!DW5u\JT0dלo5֬U5d=]ϦyrxsWDy~o/^z|S!R8lko~5Ӌєfo/?^~r^ZRf^˲Oq|77_~gφaxkZ|O?}8N_|p`\??;wφ!O}D&rb"5]7vNC( tzxL9G99kܼ͓%z5GTZaDu=LJכ PJtXJ7%GF|erv8Bi3RAk=48<_|o&vV[f7:Z^39fSz~<}4F!} {_K>9W2xyboNbZ&)উȗiMKo9>H Ja[[ϗwXGBN3zn9~5xkWlo Xm5xru֓q0 ~o Z1 SZ/lR,0!rI5./K(i>+b'2H5c'5zrlxOǣ!ma*z~|}4F&k5xlzl\j+S a$A֫ 3Y"Ze{skJE5K|Xe.2lpz1dFy.cA5HD&ik9;v^Vare! ^Gԋ[.0BaU}SR$-eq*oyg'dFĘs F2G4l-qaWxOkD轓'gȥ@Z"QK*b]WrRYKӸm66D(Mmj](]bE!ƑޯDjnlZJH8n$ETT{wdj9a.u%jZJ^#,HdatҵU<>|tZo^B(}ųֹŇhDr䜫yl6׾lZ/ֹ5\%v\a$քu ajUXA*|Nt>Oz_9o={?a_rZBo_SZtCErֽ{z>=a ĻO{'s=><~߻x||p8Kl{ﷻϟzaB!qsxޖR0\.1f߿yFQn><s7L[) AkoO ꜫdGkN9aތRF4[cAJW5-h].qҥY?֝D@{B%_T$!ޮJR" d:1^dSɆ؄H;R)"ZkX5@XZ&b2$2jaJ^,Yw(ю H[. tb_.ВsܺYB5bÆKiW xd؛aΆ 4"vj5v#iH0Z%J]DFTuD샳^sl]yl蚤ecpwq~|x;AZԥvTB09ҊA1RI PkqkZok+)^^k31΋d<z6rn:c[ a]k]蜛&?ϳsRq}&[γqSf7,Q[~ 56C=#^]*]Ηa𵬠dW`6`Z[GKƆ@ƨuPf(Jf@էwϞG'>X뎧&z||̹\.;Ov{޾~/[o^'|[mzx򤖂!X[<-3J*Ŏ{WpPA{Op؈YqZ3 AMk2.uL [cLoK˥cazR|3R!\Km"(k25AfhZsB6l|IRoM'Rn7W\@JhaaJ"JWc =>޳ ǫ+-qĘDKM(]M.M4U1/oK|jM6i,V[j=g4v^[͏QrvaD0 Kl{Kp)-v׺ qb>K+|XDNRufȐud\gEVɆ|ԝ ׁ)oA})9jnt6 R JW"٤|L{b,OZ3\7Onal}ir~07| Ɲ&û|9wo^.n|շ|+?#'/g9Υ&S:nw9N{Dqo_ow/?t<{.qM?Ogϟ}ֳQk|iڭ QgZZ]kZ+Hdm]jUZ6qwSl6q <{Y  WjUmlTjL*6hV"aKZ;RrJ̀K J#fiހa,%CvTu;8؅n<9sjҚ;NeY@ #+9&YS #c[J@N.ꦝz1F@6c2[hD060ےt1ֳ1{?R>o!81Vz\a i}q]EJgoL6X˭w2n]@#$Nk@EYkb{PelLJa[k$,5Q:m WqjnKMl꧍k HvE2xPiC*k9h+ȅ{ntq' !,҉ CoMz+%a&CZ-ܐZa6DDhD Ņ&ʆ8P}0T5qu9tlZ/Ά2DB$k2+ 9zpnQ̶4hB[H˭aضE45X!7q~ZȵD ap$ZTdC"{Bta@kk)RR%[瑹 ҥ3&nrA농Zw/˅ R&fWK!RʵxboS9]ZWfdƜS LljiTVz+և [Ʋ^t  TZ)%!ƻOE=+kyFޑ)UAeUAڥMkj(Akm뉘fM0eXk:[D$@[["|9Ƹ!V+ (A*ǰ1Iޯ݈`SDPr2=!eM\o6)* %Jׄ:2"B-iy|x*,7<}q5Zk]`<5UzW_w@BGV UւiCTZo'6W&4oR,8PAql #;juaCD|u=O۝J12k\WU!Fc]k.Ҟ={χR a a~^<zW?3}ų|=ݿWjH>l) 1_~s[Stn7&3ܭi-iw~ϟ.ϟ4v!l]8~ٯCpִ?| ʆqS;v1SZ/?>loYPjgb|9swW[9}ט iSbl-32% ۮlHk>pXJ~gh~lcZ%v jFz-[f8dJô]ȇ`SR^0i)2Iں2iBDf51lo@؍0HoZo$h Z;Ho &V`c}+ L+隫H(x݁l vW)2cHDsA]@cFlPKֵpkkZc a3Mk꽃jɇIz9^;4r.$&VhלEMke&}sxz9?jWch/Ʃv"֩zzހ KhB{Jz:7iL:߿cfƍ" ƒڄ 1c5Bh-!W?"#0j-ِw rTzskgt,5#avPZ#9Epr2Yboaҥ^19 y?4&F`'dek[m0m9*80CV;bnXWliˊT;n6Ps0z6LrAUSԒ c]wFлqSjn!u#!!R/a{vi9;Z3i[h\06 ӎ1Rqd/dfϠDdVX1L{)FfDR ld^Vk-0vg]-IAURL^aDk7ClX"ZJaUJ?>>ʭ*>'cN{QUpr:<f\Z\%w~G)x=h77_p'/mmm˧fm~<v UzGPyzI+Mo="JE,T H@M-H LC^QfUEVr̈w7}[ki~wl["en13Kw1MN1b6Tۮ‚z-L~1P}yޮ9Ch߯n\m)182Mim[J(<%}+~ רIdL"rV@y:/O2*!%@v11,o.!"Fo""dj0O *FZۉo7ry޷3z5:AC{F:^6!B}_9r HQx.C5jfF!D7^)9  ydjAF[9Lt1$B-<͇f Sp| wM]X{i%j7r;!)m-O4i7 S>};iVS&tb$D$pt8@ mJ :u}rp 9e^wvՑyn["9u3OIr"MjLSLmlu&`USL\חs UUD2RFmc,˧8nWӫ"e^um9ݽ<}%K)ƜBD801Ĕd,G@&h IDATl_>1"LZkw`ZNUll:!1ZoXk):hW攳헧#:Q^D][k锓 mΜ uLYbN6t_J!'w! 1WoHQ+803#Fwu}Lsӑ9ŹZ=Wq>z77Ϗ 1|1qat4,i<}I$.1V8Jm%]΀n̵mbL)g QBpRva e4ST3UM)}#tBgP mrBLBYRD=zMt s`HA2= F%I|LGt,e*m  T{iZ%0i1U޻ߪ!Du`%h{HR"`"usbhf#imgap}֘y[CtfB@MZGsk7rο˗/߿?///޽1n8rFďb>zmgm[U}ˇ߽}a ه("p8~k ge>~9NC)/OP|~~xx(RK{y>3ӟn~7o-O mς$ _(HiuJsSB$LHZΈy!̭)yBaܷ-Xn{oHT:ZCSJ۶̆ b )e1 by9I.1,8ܝxhWC*u ́܆4'seݶ䎵&RWA6uKq68f:H DbDy>tDHNS%zi{)ƿ4h};"t¤^á*!m4M̼/:Tb"si߯{.K!!D7*Yd }͛5s81 z}}ARvdq)rY_DDc6˅=IBc,!ɶMoqtWr7@&-ִ(ٜtzĥ|G7?YHa$a> ry]LMϯ_VSՑr~|z!iY~oNi@G1ͬ̕yJw%芈) }A0-VLBnB|.oSNKH$ Ѝ%v=O}cy{Lwsm@ǪmS WtmE˺"Hl.30ݼP[Fӡc:"DDDv ) ὚c/yu`U=Ncl a++;jjHvAm'"t᭻@'Dҡ܆J!Mn]?R:cmCthޝDRV|c,;nbCwzJ`.!@,a8ж/sH%e棚o;CȄXcZmL̄~ GGݵ09 *3Pq<Éa6G)1y R!"3xLYuo$1TUէ)VKCJD}~(!,ǐsfHB9Ի$tF$U1fӔx`jiJVD}80Ắq9޻92Y-;]{o#-hY8CC^ueBfy:$dÄ1ho_ߪO_/O'su/^MHZӯr߾{}Y_^I~Qo_{Ow+}?}WKx>/~ˇ_]._z _>G?evw<_Zaza9w{??wa^mα @ӼRdb򺞙ܬ‘cBwDCR1PV3 Zg3K)i0uG}917n8Ę ˩ ݶKH$@7$2IS($"FKcTIY{CӁ!#"sRw}Q0%ĉ([I9va!2UeIUdfjAZ!H&Eiu./!dpaA`%ylU8̇ci((`ZZ)lAэ`x3ZvD眧 Ն ,cmQeY1&7 H1b꭭uʋp 1vV$X#8"赆4t92 &0ڊbvN}/")$139R>Q˨ՈmoMkϯ@Lu}YLNc:a0jXV5zsJ˧GC"Can)ë]$Z=ZrLnpS|NbzŜχbR<R/pD W!`CC pnxw"^ Ę`Xc,Ϻ,}ih:)8{u_Y]./u_c9^9%B}dח>:89}ӄsJM[!4]U{7#$ޘ˾Jv(yYJ!/aױ9oϵlލRs6bF3:M1l8y3 o5 PņF !I]z b` fN1*3}?|?鶵O, wϯe>|CkB˶wϟ>˞޽^߲!wo~Ϲj6h8$nV a۶pR4@)Imّ)-v]G)B}FLPz㔧c4%͝9  =W"Tt8v80HXkY!HVC$Q! Zʾ^`lu܉꾣e^P$gtCFȭ6Syi}mӡQҶ]IM̶Ѷ/cC;SjL3r i1x7p opc9֙.3 !Zq.B۾B$lZX y($0Zu//f$dZ ĸm0jU4g"ԺKHqk4/zM1%T6˗TGk2 (, Lww^^+K۶0{mzqu )iNezzzz{]1$[nch~ A)c>_cN89noFP$4skJ1$&ƾi+uʾ==ղt3AsKF70sUyJi>Ff DJJUe1aCBR[JEbL'`5Ḋck=@Cu w1r8Y3AS!O_Pݝi^wD?gҧORJy^Dr,EG?NvyyL)~uHy{9׺4͏_. Ûo29?|7vJ!\^ꇏOOO/_[/gr~:Ƹvo~s:nc/_W?&&1ͬSKŁbL.!ۆӲf Q/kJSL@iNi4i9rnqz3Wysf*½w $e1O" 꾝_<ϟ>}:R˥N` !/NE]8So Ff",S< 0SJdNcv7ժ݅E cLu󴞟cٝЕ(Ő5~K 3pp(/Yz׼I!^K/&@tݴn:s,܉]CL& rBie0 9O) pt|/e[W3Ӿ]@u+5O3pH:FF0߹Sa`1uMijU|8r[Bp|Iu[arISvIGf@Qc:93Dcs)Wn:!<- \tt譐u͂P-^b|R>NR"I=%Vo{L)3p/tg 1&w6)棤|bt@%d9i 03[G[N܇J(ŕdtlպpr{w {[$.V( M#ji2a:/߽1Třn{6Gor^! # ! $SΣw3'6_%O}'a_.gȒx#d#3Lfs@{棅0[)M9Ed\y!^6&^ fjVh&AU+$H&B: ")։<s"|}gpf9Z%2pt<յl놌fF57<v"<0Z.o\yI)kK9,)][γ:sۮ.)IR~N8DN"$jna>譆 b$ Vtzit<;FHx[w03Z{qMzN("Qw‰CLC,9E{Sݷ sbʹ\Q0MKwOח8M1Ono +i6kC 3(6 }ݏ~<-˗ˮ돿|xx k¼8uZ᎔g*۾`:z#&FVKFۭoЌY 8Vn!&3diND }_]J/A(#+%\TaZ`MY[TJZti:hz=~~|" @d4WcJU'^ %h5u[8O,s\zBz01#KLLGC B>(# Pm9@u$ewhYb 5{0 Øj)B] ts\Fcb ]^<+tRpSJ_/QE9_:PҴo'~\D([)D~^ QzN]M2NL{2/)SH06LǾ9$6l6ݒ||DBnnrX!zRHq9"BݮkYeZNrrvki9lkM4GW mČ$j:evm`zĐX{\a)iDFʾ D{eZC' yK}u?,vy9ނwo6,!&+0@tc 3X5jb}R;3PLo֢fuK ݴǾP0Bk֙GLQRJLkj1LV|6r!3__^”E!m$˶.ǣ5MY$E>.)Qm4)pW )tw`&  lWw1Pqz>-w,)XJO~""_իB)tϿ4O]:~_kQRmSՐO~?cۿ뜗7)?Pzz^ӧ<>>+EHbLz=.P"^#EK)= xuod<~}[˱>MmcjH8߽bAa֢W1x|F///yȀy6es'ӱnDIvBt:z{H<]y!DvyZ Dpև4K$knޱ#✓Y'+Fń#ĀH-1aB̐#~!~A#V.us8{̾Z x$7!jMms;mP֕Ն;VVzt$bB ~S4-,Z>j@d30fjVFh|kͽz!1VK1Sf1jfuT#t8/ᰄ4%hjj#ǺDbJ)-)=8./? u#6R*S\FW=3n72Zs* '8%΅i0!d=, iC I}wAQG5$ q18k콈>N˜s6њSy]>Coc M)Q -Ii/7Z0Ҽtޫ8c6\c +h3XopeJa9nO>-SHͽ޽Gv>dc* >F'U$Oda4rs]6ZfCYff3jѝRqz؋u+*N]O)&DXi>ygw/]'(;RvVt8qF]_?A/@|"! l!"!ж7C0Fhe5"qZ9P"jϵD ¬:ݶ]C^|:j5bj}ST8ͭ v!]Ο{1{QbqY/}ú{wLG{^}pO6G✷xf2Č$?AsPц1 [9'By_lUWB$(WG< C@cӼkoλ1}/;"xRBډX/6vR1X"Ns"(3#Uf)yp7hh=?�s. me733PZo7?ϧyy>,?}O/Itn?ާv:'?צww!|?~ӏ?/`ͯp|>/O䟭Y  y/LSL `[p]?~N)!-"aVsn4^%D!Q`j飤04 .Ĝ׋ iwǤw fz/7V DokќRjCKi(.TFD3 ,)xO4T #Z;RkU툠>N!JV2 !zW{0EJxxiL@0a!b )1\#`!a۾-cKfJHFĦ}eߧ)jF "u/mXz]it5kEm4}Tm4ŭD`HY|DLU94yHί/Akmq^H1Ab۠ (uΈDO <ښM@Jƌɱwn]7N!jVVvq|Lڛ${GwCTUnj";y mߏC޷qjsXJ#\ɆZ.xS 4 <-7l4?荅 b%9(ult@rL!U&⻴ Y'4u۾|`Sސ: ̇Kc)3diBJ:Fk%V,h:MmlO !חe9i!jN$|>{^o\bL㱔uI-˱_n7$2C&_~m^ʯW߾ 透>?273a?.t7:!̓MzMJyv,mtG.G/"!.$!ow%6uEZZ[MX۫UOfduHS@0ӡ0"6@corDn1:瘱֪ Rrswmu"D/ vF»QT!8 1( z ]=J T9Z*i>|zSh{N,{)Bjoaaެv9M3{6z#!=,)MfVC\/W=b m}[owu$ǂ<גO¬c0ģg"\B #NU 6Oi9ΠU"QXVS2yy̑#'hDjLU߽clUDr8 =v;4(9gALd4%vސ TǴ>*i]YdZu'wLbk9_.fXtmOԳ8dCu0Zh.mm1(- bdhmDy$MOCual۞ӔdVf-C4A{snmJ9z10˶eþ!=.Cٯ>PL!Ք]ж7D(]"ֻ.P^āYR&&^Z Fl!ÓKŧ+-OAޖgSmWA'h{>1[KVYצP[i!fA{k삙u۾a:t:Bt9mCL^w{{tܻ^W$t! `AU .wB˖#zfu M{/.d6z εn<=JT#`gQrH"qi2z.y"ӁF=LTB ڷ ;yR D<S.0yn"9_2l{6iJ)&1Eit|x̥?~\}?OHx||O t<>~7>~D>]/N/߼9Ve?|%/ir|:<gHO$P}q9݀9j!Z7S2PKEć۶y3 {fk!f T c瑣bfRbmD{sS;Vzۊ~;|̓LǶݺ^ZOf0]90x9A&`NllLVΧ_#cgz'N5 ƴ4-xD/o6Z-eKsd"U 1+yaF :]] }pgE5@ݶ0rϹ`L3뻆P̴!B8HӫE_>Bwub Hfk7fɱ Bu XIH(Yz1rb'i>mwE tX[v~qp`r[>`y7F|\-n,wћupd琨>Z"u%4"]CXG)+ P8D~R gU{.֑4 6zӡ5 LJ;1z>(1lsLw%r~B6 „L0z\׋0ACuCOѥ&9ߵ> H.ڻMA$M;`!=&:I o8[/;@dca0zCmM/u,oJ5Wz}'w1m'O?~+)ao7A8| [ јYv>u`s/e,97A }B޼@U]o9hu {R4=﷝ 1ƔӧOwup/4.{:x8ǧ_v[?|y`) jfR4o?|~)=x^x}~_>??R}S$\v"&fI<:w65DY !ھ7VvaZ׻Pzۇ֐"8GHDwC1p !Mo6/|@RM!&d֘]sFDț!w̲mxFtϷO)NIMKSa:yرj%3h >n{ >h:sN<LgR5NmχѐT mlq>`o 8-R!<313Nj C\31!mDZZY{׹mu1pk-ކc?FHp/ڵLU|}x&tv!WBr\ՉZt'c1`"@4 A\0 1wx'bC*[HZΟm;q~63PUD9g$sޯi,֛Z#;ŧ{oK|zӷHՇ|ۍѺ^>zY֦j|t~jQ@29\v&fZ "8b*0a]=ׁFwDv9O3K 3Rz{xl;:b`f8F>Sev'i& VYpl$<\^B~8͋ri 1IPJ8 4(#Y凌6z1wUD+jiYޯ%:瀥9s6~//ж00jk1>8{kͅ%]?q ZP޼yO۾9If4E0lՉ/NR IDAT9$5 z):{pOk9S29߮^r^D8=$|kZ>GzfzZ?~N!}݇}"tϘOcJWwǐ|p?}rXwoR?7޼轒d}طc PmU3)!PziFD)Tĵތǁ2='FVf;;Fm۶b8m;<ϗ"̎LJRfbvcVkypeYW1 ~ ,LHC r1M"z|<,Ee>p9~ɗ,'.όXjaT".zj Pוڝ-g3}ڜs{ٝF a!,^]O/qtѵAy[G/McqLjC-p¾^R:=m$$i~P5:MSEĐpxx>zMQqݮcSk !9_{UD$<> C}j|8Zk1&~9n7 w Dl@v=0ދٍ1jj&vKΪc#"ڰ}WLJ7Vڽ} iW4}#KjnzzYŅ|9Z-ct0a}Cr!$`{jy&q׽j✯4o IU@1:1 ;#pϷL-zu^ Oahcܻ%$fe)uegѣw5 3@ L,w/n{Ӂ"R[%GҼaFKΉqZ~YW`Nv5)%_n{Wfjiyhi-֕ G:@ޫ}!:眛L oJ9a4SB2keB":tR}Үm=; 's||} sޮ֛ 0r!ւ$IBD7mEuZK&a'""G'cJ1z9W%Ȋk̈`{S %gtdF>ļ_R< E`]t !LTJ1B"ΙY.mJk"><V5MӝP1!}x~v@ iJ{7NoP8,13!" JpQ'qFؠ G|W?iH1עڿۺw)/oɯIpO0onӧRw}'r"\}۷~ݷi^ !14_χsf-{} - {˶I,y_ޚ: eZXJ@vF. QaoIKٰwaZQ[- !<ͣY\-%|ď~t8SJljJ>5ҕػFI PE1^HG'0 kEr"pY\Oǀ՜IkHitDDd!;cL۾FMR<^c-<ߊpw >n5Dڈ]+UXr.ޣY[mk~W9Rp k:3^t3}ſwGzXbys"%H뛍5;!)lmuk_ռϯH DӋwz||C!Lj+ k-Ldm۶1\OZ .<~c8$m=󥖚s5":'DTc` n9~Fn)y9rNؔa^󾭇8͵cZo|RvS]} 村J)8kj%or샯CjC]Zw ^5OgFkŁj+#-#Gv!G&sNrމ#9)wvOuoHB5 c?I\ʄ|v8֛M1*NLci2Z¸k-[D'y^ت.\,Ѷnu;+69Veʥj?/B݁l~>XJݮ! ^qotz}@<6$\oVE`09Ԓ}d!~NLq9!5ίն[p7}ۃbmE cҡ y.07cSp[L ř%2|"߽f7t]ch Oeyr[aܯ/)̼m[k-9zfSQZ[ѽ~\v8!]~#t|bvCyK.!tg@۪-HaBr$b_@y_[o{ۭ݂4E$wEFɻ}T^t@˶^l֪IǽyJk.^Sz#̈D?˯1g?pz >MS??ٛ/2׽}w?y.wϟ>_|jO>?4VnmIFcŸ_ϗwO*u8Ǵ0 ֪%̹䘂jy1"~1M࠵y\JÆZh^eO4đkPP(PZ-SJCa||=߀ !ʿ|Ε%)֑1\2o`+׏х"~!ƃfWBHK̷K5_se&SC4q\Ѷr頊F]k[E]͹J#h[ay߻A%$1LX)' (*Y[5Pku^t6'>^)RWri0@><<:D<+S֖u{x|BCom߯!n"("B5#}ObFʂ5 Ayfᮝe[u4AhreJ{2nN$Υ).L[ÁcGi4qԝm(" Yڶyh8qhC^z[mȣ^KSo-k 19T-.v4%Dc sJwSEs٦F`ח<y'"KޮաCC^ 18-ZeG.wPq~#0:ZNs2ת,n 5;0\ {1j:kp[6i^@ aao΋݅cfC{/koKǪ]?1p'ЭGFT)OmK󑵵ȹUpW8MB|`9^ò^Ѭ4A|^ @}L`yxt>MC˹+#"!w3ղ!j7Z<;šo̪)0 K"wiDDPPb±k3ݜRt['> uߝl6|PP -V}>yZ>1jpv ̥CiyPu0V =-:nڜsv'ڊ5F̥V5죍Qj8PDڰR_Wt:_?==mqϟ?____<><7O io?}z}o__>/G_"ai-4-_WiC4@T8O,^{"b@.δֶ,G#v[~JJ6]qB""'MT{@\dnpzMdf:A|`1 _.ӓ 94۷ݧ(eрj0C+9"#`[YfDNS!fr>Bx|Oq 2[pb5^P}%p8hސTp˱:P<Pfv0!Q+[p΁1{glj-Rm q CL(XJ5{ qLbHڽuk waaMsN"vv}ٷiY$oEi[R;jiyו(9G'ǼvњK6޼PsRrn[/0joZ&{:^Y*""3Ϲ~]ز7 !&̐ FHUcclrS6df4o7,)E"߽ZQR؏L[+cd$@"W,0":ѼOl \)8]DTDZ)qD/!c1OϏVZoYuG þݛ8-ڭʹ#tbm UC!j5P!Rtho{7Bmc/(HXkiRRHDac]p9v톆N8UHF4R#ei3\`<=|C8jcK ) 33;יiZcyz ;*ў޽k}%xDcV5fapjЫZ8kL/T #bi23GzėRRyZbL60B͂ON|ku JkC/ܞw$1X DG#7_{mD.#WB`V 3CUl3 81-h~n-D@s> {zC9xGFF-zq1Ѐ__ziQCb8Ñ[#=Dy@9QKU[]ėcUmpS|<c4C&ŻonH>~%er߯OOy}w~_ii%?O @?_o|yۿE?4?rNb؇HfLd:NOOtސd:?ι8T5Lscb $X1YQK+U %%;ơkK˩|dGcrzSNjL.U7 )%s)D<߰: 3ѫ}PD#O>81o6}0c 2 S"Gkc7T}Hw.8hn qk֦$vybFMFS,0Z|c(;G`%(s9C8Qj@Ձ"bfc |z:Fs2Tc{E?Y)q~sz1V-PEf@$HGK^PaF)ZUs +zauTLSϥ|lRLaZ@G[A/\`fЅ">u%dQ*hmCLDطc4iN*i`ޚ1R !@kL[;<궯フ;_ \io;OoZv.T)~].gj:ǻ6#g;1xTMȵj|nںkuϪ3zIl}y\J.`{Og:^Z!6B $33 cպ[Eb^K0l:=G.K-M)ږ7o?n{^;?z]΅331zm@s-&znuTK{-FrQ\مsfJ,m:/ZKi9^* WDvq I}@ѹ h.&"gCU#b0e8rVKϻ: ދsKmrCnmND ^L -0M)kE'ח0ϏC"zUsw@zl{|<"ځ@cm 1 <#(FK,~zoD,sj/Eļi[wVufczCatyk@D#=qN4Opo.Y<}ODQVKq{P7Mef'd,\/߿^_К0}߷y^՗iJG}Y&5k}L 3 K9x萨+Z=Zk!##G'zdI˃c2uQxwϷcޙҶ^Ikkm'(NaR~aضRrRt\_}eDH5u1%HӒܽ$X8ܴ0;gBf|(% ;4l-) Y.%>=X9(Rwm9."0缭>VX$(#?'vhЊ@9D̮Z@Nc`oeCp>>ƹs7'WuUSRU3e R[O;!eYTUGCSt>5\eY/n:KfD8֛jnE|"v!Q17_8zs.?}[o-F>L:*iri F#fcͅ4zW ,~ *n~f-Z9͟rrh{}t01Z/7 "ieX CBBf^?ZE9AZͅ*Բ3c MNv0xzH2)?\]Kɞs96RJuK)M>:t=5M^{5B`zLk.ڛcܷ‚(D셎D:ө,kaF&DC38 AD5N u99'uSU D"A/G[va-i["[;z߷\G#&q:,x⼜J4/؁t~˾~J[nXt0BP ťމRn1!XB|@v{Daݧ>j۶iY}mGc ?\؇#}2t,ﭓL:Al~ܟ/zǣA U<+ ֆY){繵&b2>rݎ^BX[fF38]eƀO9_jvN| ;G8J>RLBHP[9?]@JSZ=Zk9@v,.H*IDAT)ii.8{6ĺgA߾z_BH, \tvZ}ͬ`B8M( ;qHcqZ o>|/))e_>F|l?}\r^^v䯾~H񫯾8 {HEe $)|#U|?~{?3zZ}poj@=]ތ6'P{b>ghvsqQmk|bqMA'Qji:/g$GLx1إ˧oSj`CěVӲݮ=_JCH羮tz"\ǵ8=0a4S#k!aR2oOmUSs"&dF!%'~9N Oy/B†!)~}O$":"yݏkG| U$ {轎@"їƱ#[kӲ>ι oFݜwjZ6-ЇMkBLMmu<]POYA-s[>騣ujkNU+i;i!uݜ ]O KHB%{gy} AF@R2hQ} >z<y'jϠ/AjkhqXRK.%:Z^Ui20s1^{- }1;GugF{ˣ~ͻZM;8'.0ٱֽkQN `=wyJڡnya~}3D`'de_\RGO!|kcoe}Dxr!i[x@''uulh}Ϲ)w" z}~!~dr؇k4`޼35bdFV]Lo2?~>| %f[/qF4W=!m}},JCܜNQ ]B8vF6C5zceYG@})cL__ß'B1.>Tj-L$^; 8۱~~'♜I|.f~#ȇZJ7i%?>/n_ ;w\|Lt2']or\ڣ Z&:}HfZ@)-eB"ނr98VfhoTadԴU,NёPfiJ@TJ{^1Zk{ÆCF+>LԷ9*VBF9aa(ǝ0qHF卙-璏Cxa  ޻sN+B`a5+cl ֻ `."ڏr~Ø8Ajw"!AUs 4{t8F~ OSkI}τێ,s?/o@!LdB3cbJކ dJ0Zϫc%T{PAf~^-]!MG 4[hzzݞQPМ<{Cbju$$Gz s.@t^Dl;ZGY1QC:8Zs!E$ƈZَ}=H$4赨  8Ooc&qb[;̳,#H;cD2!f]k} !8jGCG1o$8Dγp3ZF&H܆M "wQr2-+CQc:]D_?ֶ___߼f| ~b1O^`>~kE[ȭ7B$r2р)GڻsfP[K)̧hit[qxKkggcn/ LSǃS 0,͋Z{S chQJ7c%NՃy4r8@L8^wZ9'm1>VKo-Z !>-JS 親ȽGmMD4O`JRwZ͇⫟OYNl\o:K>Za_߾<{;_߿Gu]4)O~J)~Ga?eYneS'try?Z2qa:̹ wsƂd+ǖq4i@Y&\֖@oߵn1rwN8.m-Sm5NSoMkc/s.qyG=섙<0:B>L>>*m@;#'zojyjLd$NGQ|6tMI $Iu y_7qJt"-_uh zJ.$sЖ|}Ǿ ɥِd12Kނw,_ Љ#s5LH$횦`}c|da,[zmer.)͞ˇOF]ьF|Vֺ/..=[މ{WJjǾ #̗Vv ZHK;2){&!QOc帽v2Znr;nf*>vf qBRћvb rAQG?Z-)N]XDG뭀i-Mf$GtAq[W&FDA@?#~}}qNz}ߝsc6|JF+1MA\@b7cqHc8MBVz˷Do]UPąow$a&E'!)8}^r5/SxE~Vpou\K,bNPZ 1 I[р]L'woOsJmNy CC:YZEUK)::0aD~=fv^7Ѵ|xz_/CDIENDB`dtkwidget-2.1.1/doc/images/frame_mask_demo.png000066400000000000000000013653311352002233700213430ustar00rootroot00000000000000PNG  IHDRz7- pHYs+ IDATx,9ev31)#2_U=GQHdJ!hS#Lѐj|5dVddpg>?^kֆKu^^rӵ0IN8NNf"e=.GBY#ym !0OwF c cj 4PlL7#gqdIy1NgSHp6vǟ$IN;\Y7w0nhauq&Ӣk)cAuBιmUH~n* \חq*1o8ZkBi^GQdonnnn !%@0 qTdNd.2NRz}gn68ڦO\ 9v Bhݠoooa`]Ӕ1?4ZkRGe8D)B꟟_/BHL8*z/4t߷?}ۜOGy1]?|-XX.FFy= !9ӈz;?4=ھ,-W)˾WtJdT!IQY>G?|&DQvl1q}u{:W\RJ=:{<ssF"N)iBb}|ܕ'nH4{\U~݇BjOE9!cZ:5[/WBX,^yιtz~~qpe!X#$><ϻm7Oι/_ܾ|qqq$+86Yk !\в<]]]mk,M)fq Xm4I ΃vwZo^^,2K|VQum}]\\\Y7Y!"xÎRmbΦYSi2˲OҌi޽N}O>]B!T4Ͼ~qkvZ}0:s)%c߿1jMI)ҩ:X}7v##r՛d4f/rd Y=.8Hxʲ !0b!cB!%DT"9Q)EsΕRv>' ԥ5>nɂtT)B0=rcl1q !pέ:.,L'iu>lj  @8ӆ-)# P& @¢$ ZC"@P[ QDa0v`ʳb2Jg-8!69bBecV0e qZucƘs!L0ZP|:g&1gssnka0֌3*0Pڍ P"h1a:2Q m.$i+EcXu{Bc %njw꿵}Ҍ Qzb%ZaPJ׃|J]&R w.0 !m޹tjۚb}y4.\^^*fj oO٢XVCS|2 !JIy:%iQq>__XbL83KB0|:E=<|ݻb};Ja7c=+8m[C 8Ni}⦅QiiMsI)͊umYv;ä.<›׋rj 1cXd o:8 yj @@C 8N8%Pu6cZ+``03.lY;`6vrP$b~be|8@$ceLUM]B(z!4EUb'o~o3bR̺\}\.Ũ$wMWmǡEhgַw!x>_Bu{b5XGN~IC!}]c_~Ru:R)8:^!pWM3ƺ̼0ynFdrWUu[i?ttzpp<-K qM @m =u}_LiY<>ccl:=LJ)ry9L|r{n'A=%h>ah6͒;$Pʏ-sT{c1d˜|z8Q(/i}=8?~C4I4M-dtWW`e\Qğ)Ky]4SN֛S,D(m03t2iJsu)ɲ1 }l3qk(mVLg·{%sYBp2˦QUǧ|VX!b`D(-%8gBoDy&Ԍ#ˊ`UC3Qw]Dž" 9'iơ9e Pƃ`-3™"qR5`82X0w@4`LDaLQ_Wao4?>XX+9;XMɈ1ޏ#(2cʥs^4mӴ<χaM'B $gY,zK08Yv:]_1*1h8H)9^Vָ~oalwW`1u}/(>JF!|vC0u^SuuvV}! x{UZkӴ"h=-C!Z;-W.(@].bof9Gs1_DG7b(ϙ̺uKDHR Ӷm,>mS" 8 BF9bh*mۺX.va͗7oʲXk۳1|Hz<0Qa(~m[յsV#OWǧbN{ B0?ooR"QsyZ\\ '#j6ӉPu!D t]}+ 9_,]˗/_xyyAMS4Os~:_@훮md%x;c1v!ht$z!Ĩ-%qFV[M[ǃҋVz eZkiA8^(jzuE-s/ˋ9 s6'jHibT<vcBu|!I7#MՏCf.g Tv X)եu2j ޼VȫDQsu۶պmz&8nuZ̗rMI)u{{;χaH@(&QhxQƘSLXQ,e7Me{_6MB0P8b Λg5Pao"!"leYE򘧓4",4X$Bxg]۵8&oxy}N,Z,9MyC(a8Uu6f!_`_>di~}}Knwy>}ȄIb vE:}EbyNyw->}(f|(&j(%_~f<cRW~GcLYVq>IM&po?t"2˯ƨ3!q!@J$x|!#b1_ʛ>mRd9矯.Zi|Xm*7fX,8!B&_ϒ6y>>MS"$NS$F[B0ck;"H #Y&HF! t]gaCv`,bi|m NZ+uY` 8" d *!OB`c!B TfRRƹ1Rc{g56輡\Q:' -0Wcffis֌igt[$#{'Hk" 7e8Q4tB(7z@00;0RJaZBZL0TH<Q޻@\JfD @gQ^JIucDujRjՈ1*ϜQs;# (Q~Xc1޹(Fm?w$3HqDQ ~[EQTiT&0 cYw]?~({n˩\fә6V(I|J{ldʚ2R1s.lj39Bi6J@X]gw[8ECor 㘤i%c`ViMݢjk8v f>*N3̬ `*l*)!x!蛺Rp\`4e:-!r==?E$#mߏe8QJ8N'I4lv !Q/et>i$UicMuO Qu>3J)! DPhbǞXIUPШ$vY_N3QX۶~`5֔p`sSAع.9I{l6,bg(7}׽>8ڶ]eY6sǏ滻cys)<޼zswg3J@(@gFYk 8mFF9ͨp0!!a s֌}!DEQ9' PBx  =0!c)Sc: ebP*&0tM@!K3 89kYzS IDATaq3Yc=ḩұo1&RDi!  aQ `L\F-9G)5Z!gy,yopBvy*$o!ұ11cLr!d!YȺC㨴2 Cp"#!3~ '0!Y!{!}()jF}RZH 08r^D1ͿnjTw>2BP4m[c E@@8NU,X,8Lp r>i0$ͼ O$Csn$]_OyYl2_N_wn1κahDk{AE Px'EF$y~bL7/ۛ,K'cdnj{f{ryq<k3Ŵ8uIYUQ5MI`?Fiz4չ$SVӈdcI~||Mw898z@fx>[ʆRwص-@8]$q;ffL^whL'ƚI>#bUe]8VuR9 i6#U nv5_g}Ι4;v0ʹà|;G(J90˧|BzNa6&I36~qu8 tWvչk4v`"Qd9ezlۦ5Z./a({oƹ8[,OTN1SǛS?{J`Ld*8cٰBba%|朧iG_E0 fY !ueYǑ1ɸkhMoC[]10V .IEBh%|/U}N">|X,$㯯se1x!Ko+2e4-KmWQ$O=!9sz>T߽ۜW|>- iJv> !~YH=2>IK)1$ff }+l!s [_^9 Ezt}(z2JgiZn$qB 8r}}RB({-r|MS `hyQ Nȋ8aHӄPfvG1]NgCvqZ{<4Fhtꍁx o\N\VժjJ!,8^,iZl^^ ޹H\-ke2gid_~fBЏ۷y^ 0]E}7Vkשw7JӦi+!ˋ2@ .&t:Ck,a4<=~ ]\^w|ǓǪ֗LbI^,BL9}0&i0Zkcںod"brʬ1.$BTȌ\HiNH%6S!D0!PJB1|Tks2#M]EQ(XFѣ}S> `[$ Ar0{ * 08p !$j`a;tq9e"Dh^Lϧ&8 10>aD(eY]aMlAa @l1 &Ce3{s(&QBZ g 1!d28/npN&tlzc4 A%r̲Iɪ}"w])&h۝jۿ=xlA./ta qFڦVcϸXo>?|Ίt>fTں:ifQ3t2)n)m6|]8U)Z0Ưct<- (p:EQx竪Z]m~$IBE1B"(!Jo|>F #4 0a.zvn&1f ,z" .rYe߷EGCOs=ÆSA0!8M3//#9)uY2Ɲ83-杯& @$#.dQLn{ @edթoBEn%r羪4'qsNзMWLqiVj!ˊaѯyyR }!]<=~Q}wv|^]^#u !dh:ΙHb)m\b>*_g?Mk۲gy1{ﳏ|<*[@BB$ $$JHtRo4 *^gc]v4VZ+7rP( ilL^j( EcbV3 !YoNfVEa9h,0ҼȄygsVʻBL4w^&zB/mQ,c@!4eL)f(% {5*~B)L1{)"BRDn0F<#}_7AY"p( %Dify'(i T"0”eF*s㝞Yj1PH^/ %8"\@0FfV3ʨR )1!\g !$#,2LSH&%Dkcd&^_RJ2+JIr/> UYƝ 0o]5M4MK)QBv](2L^OL#Y,BۧH U۵zǔe/ӻPew9ϥ*8Bsn_.Y&Gnn˥(1^E!|X~lgx<E(c L_-Rnf6E,p>Өf V(mS hS?UM, $D^5O:s{NnWض-Lj!8B3BE+mG8 juE?b?]eYמ.bD!4ι7/C2/բ Ƅnq1Ɛ2!wr%Y!|'V˦) C?_HQS!$D)YVBR{kWzX=??oo}?z713UEYNs)=>cJgcL۶ݬ6\Ks\.1"ˍ!q2/YUM3R6ۛge9?ޭWr~h8%y˲ƬJQ.D {G)i$BqI+(ܚx|E5 S3A0$;͝Oj ɒ,Yϛms8cZO*&!R&_7K8j+&&):ŀB1d^Fk8$BJM³Yiz0B!B92OS.8CB^:=B(@)mUĵcL1y!*RJYYi[kjj1'VsƑ$3LJ5!%&ՄѧS$³3VìŘL!DĈaF{;^N{g&s&O?^./zä pCLy!yιsL#b06Q0Li3c20"L(b aH)>RJs1!FULZsQ< Sw9pϘfJk}UU"Bv<zgeVr{Y ~g=͢!\.mF&v\l](i D4pNc gtJ1cd †R UCm˙ssXy.%8!dSY1xgU~1*F|ʢ&hcRjy1 z/Y,"8㵴B($yN>&yߩﺡ%+9w7ZO?7b<<~^JA0c<,{:?823Yj^v˲bUtrs)W~x<,wV:t=W)RJ(vFȲ,zZm~Q#(PJy8 V/kvٿ>Le 1Oc@]ׯO>R\ D~w%U@Η`Qޙn*k5\n>>?D3ee197 80ٿ| ڬ>^o) //0޿;7:7bxxR%(ۛ1**~x.~J>|D1eVfT}d&aD3}y|Hή21oKo~䌋\NZ"^?S1hBhoQAE.tbUaDVEZcBp#X"O1cd"~bpY!!5g09 PuCє4L"rz4Z# H^nVτg %ӟrM !ܦF+3t6i"ƈ)M@.0\ΗzI:シv\} 0!nn3^EsrpQBg@("ֻ0 )Lf2/qjR֯+<8sc pu]BZ7AfU7͛LsPz}=ۛn,׳r9!n1J)L6?ǏV@if΋Zp?^.|"E!1"j6N87(޽ Qe-{g7Mcu!ˬ_~b [gX&`{YWk./z^oB=_qpD"/{h| M|ۿݾuDVI[khƲLYz6Qlr1) gc 0F']B}0G|mkĘ_ IDAT0fsN=>=P!2C}(1:KB @p)B+SL@@TENAH\+f !Y1Ӊ煵B122!X^A!6z\L1. 4)N3BQ>0J C(\%1"{)ARĘ\ಬ !F=c$xϥd<Ø% !c1D3yF!y|+AK1{B`M׵e]2)Rrc@Bd=f4`gտoeQCd&W1Ɣ@]'s"/on1JK]jR#Pke4M`^}=yrN"wa],rYy1g-FHk !1YePY_˦y fLpʞʢ&F8KT&؏4ˌUY!)3Bfť=sNBHecZ1R:ݻyV(81&SaN>y֛R}F]NRBzYM߾׿bgB`} ͊ :ϳsja]^f1j",cylO"Ͻ7֨ޯכ=ϟahVKy28Pd\VuJa ;ׇ/Lo&g=Bf @-F)YXnR,/X&<+ʆ6Ab)Lt\` $,4BJsH!ʸ)G~cC!&@)3 ^ ARD"kA1"F18FR1 d^R|B) L1x4CD01 O]!!fyR"^\㵃B-܇9`1DB1rB y0&YER0Q)kz;# eRB@r&)E!E.s8NLDfwy~x~i̋ijղ*xYcZ>?&39m˧LJ˗L_Qgmk%R(e2J(JYV]U7dQf +} ( GLȻ ϏUUeb,:r={:E^mܬ5E.HG)'Q25&ur(0Dݰ^oCpp20=L_p>u1wK0뮽޻ˎ R<2q> !)%gΰ5,˛.9τ *+}p8ֻ]ЧO1!޽{׶mLA) Vs{xN)Cp`0qf>| iR˺kapU՘Lf70H+a{);u^GcM4q~(kZlۖs1(LtȪoDZ Lh@[˳/azRJ)s1Ʋ,_+ͮlV=Gj)y aab3ʲR^'#Rp6XiM)i6p\iO۟~뻔U.P}8}ﶻ|>a'5zBfLpYιs{l1BYLCr1w= +dֶ,<$x?@<~}=@F"A eu 7e b`˝5 BB5 @$!wf><0S1S *u^4ʔ4j bX^$LA yHtp0bDE3""10_Pr燠FcfȄ!jN[f$1H 8R1 L B)Z%$z VX@J( C0A ;Ι3~16jqFSNCNQfJ g @&%IB׺@J)cL<%u> }Rw” c<p֍cΊ C`ct! Sp/M)ct 4.[a|'ngE!Fl#!af`xSJ8wz7uuaL5VfqͲ./7o1z#Zww1mw7ۗ6M >TEUNrxcUUͳRfSJ>o'm>qey<(1~ƨ|ZK{N'm YdYp&0clov7n[}a3(!is6Nk-8lak՗O?Go`:/򼨜2r!1Ɯ 9eχnv^ 9D,ʱkSex~>Lm_/7)0Fo+eN"|$d Y&]$M}{:&hYfjy;t t~vo?<~EIe#̤e~ p!e^Tf()5v^__djܟNy^2N,^) s!SRz-+YV v ,Zjsk@R3v\f÷WRJ3|3`]6B>7ÔK߿'OU0&80޵mts)iEYUy< vo^_OӪj(|7-BQ<HfUY.RpMDضH@f01Z+c~NG}j*>~Zl>8_ݼQzv]6b2ﺶΆi߽yzz:{!p&!tڌ󴿜$M\.~mZ(WU79>wMY/ \\! !BYx"4"dG熮%Ҝ 3ayF(/ Cd< BPc S^L!+"@̪,/$UK Mt>/򈒳:xg$=1.",z!D!LS (i%he,c"D΂R ¬&L0&"`SJS ] "98>&8JQ2ƈ,gBJ'j3!IBL @$(#+5 P#B1B@&b 2sO0)B 1(ZYJ3BCp΀8_ D2:j\h0'ӃĄﺮcZ-#ٮy.,j|΄gBðsmNTUeIkFhbb*5SJ90jXLfx|m۩iƦiK&$$/ʗGJ@.s<7wKG0|~~lB0m4|&\.e,˽y;nh/6 J(J*ʇǧL!¦ier5NV /R0Bm3# Gyu<cb I,KisӵUnV|0†q8_.:¨(61N0pOdzkU|!y61:e&gSFjrM$:>Ϋx/b}0ZeB *>(F!$Ɣ粿\^׻]ԗ)ٛm]Yfs\~ͭ, ƻ\iuiO!&֛nm1FtCj (%40͊`rx}%oo~禮Rf(gY_~iV#Lj2)5Ue 0iOg Ĩiq8LJGۏ3/ZU9=-6, mM]>8@ ,˘5j^bcn(,D_ZLdPWuJy_뇪,77]7@a203P7fv:FeWc _)ĴX\OψnBs.˲H* Cy(,@RڬVwUtmyF)U(r]!$-Wa7۝fwwTT t<۶d8ơnr `bL<}hC>ݻ_yscxy͇L44}y6] c 2c`BV S(enu.ԫ%@ȧ) > ,;mx{{9AdRt{wb: 2clY4m6Rߵj3Y&o* *kf ti/35#af&QYJ;SvfEQ&2.(aƙfわ (Lmۮ6ǿ#E#۳3* }nlZ}R=!,j1PjFC5oB. !DdYpNf"x'e\ya޿("{w{{STs!@L v @lva0j^7?gs9NcRU>fY3ń|90Nus/ywQb||z6qE]Omgٞ/,+? qf 2;_,)%&c y.CeQ5~HX1!J)!DuNk IYޚ7o}BM<?/=Ψ @)]%69a%eaȧ![Ju>]Lr]0!=^.;k%҄)1EHM[(gLB4 a$eDGLbL40Da^"D(Uj;Ečs Btkg v{qR:_eD5}VJ" f#g-anSJeRJ)q2³Lc?N}8cic' y?oz* u]r >x>8ri(- :|"su0d^cBڶj3/+)acOO/. 4d,հ𬀄vg0t!;.b7\2D, C c2rjn߶N997Or<u"Jj(fR̄̅ҊsB(kedBhc0?EQA<[EYW!z}} :m~׮凜ƺɾ|WE4jjD[3ke6i~ج7~VCUzv1w.bCEw'Y{"8M9F,_~ÇLFQJenvTM ry5(Lb$RNӴXueyzCׅ`d 0q(꺮iե/ pw9h"aoж˷5Zqݽ)d0"Bl7e8WcܞZ<&~!޺̊1J@1˸LJSJYNjG]XVUUUsz㜯KY/Cp;Ιw.x+AfbѬd2.4M!lcvB>6Ms81!5||-ʲڔO_zۿnp{o* mݷzոZVj L" 10BTC(fB{RAH)Ln&BC0 cYczB %BL)CB@t%Fg69 ##8g`A[C)QBv0ίMsx5שA0EbbW7DgzG, IDAT Ƹպ+0攁C ٹ˄4Q){.&X ΂PJ c})h&@ܝwcQ0IX( ^ x&BpΛ<cYf);h]dY&Ąǘ)08 RJq05Jႅd'y5K>39G)5X !wl"LG뺳6(8ܜNKp|_ޚ({M N誼hr*ҞdØC#Ĵ2+6/1*tv e{RHwS BRJ N1B=u0O3YqZda\6MYk-chZAv켛 vx}}NJQ,Py0g52S1) [ھ?E4fum]!~ Ada4M}{~%#EU |~"3Y}7Xzsnכ"z~qi$W˳!|8fc2 CwYHV ?cWU{eU0&egei3 s!FIJk[VB0ޖrVe03MJPRy2SrRbq.&&`Jb!N?~gQe݄(o4\1i7܎!?_NCp yβ\߷_Z>F8ևza:_iǸn3Q2)r<%yCQsot9#*E\?5TJi0i;O͏?6xS")bsft?SQi8çaU=7u]]w1V[s9j/Gow,ˎCvj׈f۬o7׳@k ^, E@r< 31A50) 06NSL /Z\ԝ< Ҳ,*NQ*hKrVMRD0”2 Fs#XHQ(2୞Qp @$+)%Bl6EFyPD9\dRzR !v5ꆳSbBD[F!#[bH1C;cV/WLkk(Θq6LT SFEƔp.EC DړqĄ  !ǘ2 CoA{2znv,EB0C(K?79&8p wNw}O9+8cEQogEUXuc}jܬ,YOB-5  NC1&y"e<WֆR<4ǏoC޻nY1=(EQʼ\7^^!3t>on7fn|E~z N;<$ECȤ g6F !8.R+E΋bGB` >+Bu|9XݬYS5<)5s}gI٦i@p4vn0BJUf?6M\)Vn_O1صeq"F Vۛ0:R:}QViB M\t}?@Jdwass !"B@éo k-ֺk)L_߽{Zn<xw{wxU> 3O{3NӧoiBd qj;cL!5Θ+X$K[/A" $52=c`O18вR`:ǮBJS\Sr.L($]55>aF{ QJ 001\'|B x1A.xFc  C )0&"n;W=B{kb"1c 0sa5K:1_k?@U|`6!@F;kR cxP2WKJǢ,)F#BDkR"!Y& $Ly8TSh# #|H ys儁SJ͈fѴm(r.^ER7oa;6&c&PZYy"rfiTB; `;Q}?Y1Mr$R!8ZTbE9Mͳ #R%B9^oBH c<`)3k4AH@0EV:vBIcRʲ,}0|~\}9BwcljiƁs8w]Χ"Bػ^0Bm{Z-W1QwrJɼ,zb>: e-BQ z=%`Lӄ1! L BœsA߷fk r!BR~ޝa^/Ql??0nnye~NκCYY&Oi)!)js3JWRPlU_>Ku=!LOgVJ˱y."@cwaƯB:[kdM{̋rTjEy,KQp 4O<,/}Vט0Y6r4Mzq6`xDO)^ *8:m 2?u,ZJʅDb)<_m ")4eY^'K!euE(2vrVY}Y 9kR1!" IY5Kc]Qz`Raꪱ"B9_>-Ì4QJ dZEԴZ6UR$y֎h߽>Ls I)->㏿s0@Y4/)ƪc}UY^N)h޺eլ,ge㓙o8anv_0"Z$DB8EQ!1&IQ}?p.0^>%Y$&hfaǔ B,&\].>WemtSJc3U׵yƘfǏbIήrrq>g8(5>^rެ"cwv1.4R*>wCap:3YO8AeU 8%4/|pXmsjLjDX.i!!Ǔc32Z/!<(i67ېRfN8Lx8sNJy3&~e#p~iV NWu„LIf}ss׶r{7Vq~<=cWQJ22CJ!)|s{)1r䌶%z,38U}9]E. $qg&"2Y-͟qBb}{ffɢ(b|t4 |\.}nn'FeI5=Dއ7eZm[e|l%%Dl,z~z F_v;Dݷ &rg\XkrƘ AL);)$*˄aF]VŒ뉁0bc) „@)yk!!g"o  0 1Hc;r,r CL}^rێg5vb42N_Fiet'uzDzh!"2JxQs D0L ^)y BWm"8S1J_=~>D.$Lkbͥ{ L11zJ˔sL1F(!p.92cQ08 "RH BDGB 3ubeb oV "ofF2F_[R.Ą 8 Ƙ+8:sﴶ*@iƈBBpMB(E].`. q0Ƙ@mYRʍuYM\0Wʺ@8eUU0)JIf.)؞gקۻ!ғȸqJH.t>eb\m60ZrY,㐒yެᓮ^v;a^T^ CGPDxxf߼yCdƺn󙔂aDUqƨ!!ʨhOGBPY)˥PBy@>p<4u}N,ls&eF[hX^8ht///6+$um&zg)h? EY0,bo޾Ck3zfAu„hdrΊRHy5cr<L\ՕSSחEy)ƨi1=77L׬fZjcoon2Yx#O{gJriͿYV iRJbU~.!m@L,>&'D"X;Ϫ[{77(ϋo,Y c]"_#1 j8BF8O`1 4AsOƨ'  B<"bd1J P!2$4z)J)3 &hu B!0]V 5 QLac$` 3 2LmSfY `C1} 0|pZk,в0`,ec쬉!r&J˜qaHk !(&AtZ﬷DH)Zk0Lf)=)z%"+&jI 2Q06xX)&ӷGcsAB)%jfvAs!b@)y^mAL.j.R8nӬ!iMU}w>!Vjc]hc\{y C$ozM8js S!ELƌȋ3@@H珻Rr:r I)"O)ʬFcȎ,Nqz) r1R26:۬׳Eq^wuݼvłsA)hsVCaY^$*umE@J@F!)˂BAƸgSlZ B^cJu!aDxxΦQ!1!pZ/cFIQ8g3nB@h%x}< Yp!/nvo6+"bu3 FR#,eY}kYG"v!hFRz~Vxm/<˴c 8]FYV^14!\x̨(g &X۴Z,t>o ɫj }B .eU [/XrW5!RjzO0sL.fBr. j!D 8)t+o$Ftss*䋲2t瘂i\:Ϙ@rA :ϳ6Zfrk05A?쏇z{3M8MY!/=%F l#Cc1:5 &1!|>9E,01BL}{o麋4x4/zO?enLzh/c<w O/{Nѧ?)炋j\U|L1"w)y|E3ln~7?7e%DJ1& &Gct9kBZK< ڲ,MJ!D.xLBΆbjJɏC7 Rw t Ɛ $"c"wWtPAr6Ri[Չr!e$JQ431y^ika TJc-ƈaNj!Rr0 xcTkBwBz;IQ %98h `1  1X$@;zdBN11B0&`@2ž1bHPͣ#aB C H1DLjĘeyF,& H0Q}r1F)`" B9D&0{1C 10) WaL!00H)#pBc0)9g7 IDATp?2|y(f*x>4EF3AyY?R+k-|盛P\.)~(@8E޾Qj:*J)q !/5!%B.۬ЗgCߞ>_}{ #䬃)]eYs8rέbxM)۶ aa$ևt:=?}y1=ǟo\2yyx8Vin774o|\H`^0< rJ)v/z oq)Em UEK9he.1f~3VڐY7F۲@{8,1zk1m,YfQ} @2Yu]^0!| 1}n>eYԔ+"7^1(qrǮln*_u^<_S5iReY_.Û|T;ۻ<_<)B"/Y1gpM/S׶ FXSD 5EiyY+gOOO|>hGoph%ضpzx|wN冉 D  f&`QC۝YtK~&a~}~xxTfy/Km<@i77Z59ϔ"/~kY uݵl׫|:V1%Z}YVtʲ\>:k>'웷>~kgMYq>CMӜ·zsC?ܞ4fn֌43p8TE)8eX6UrÏ/w?]lEg2O1!#q)\=-27F0Fm{AfERD i"0 *2Z?ugBHeY"8ϓ,J@0a Q)WjDp)8V; )LZ2s`BB9!䵝 2yiA )uL  yBsy6!L)s!:0]J1kǔ+³l $5}&bRdc 5D !1B1: !0h&M(N|R!R3YL(QJzshM!L ~l"cFԬfr ")APƍ)"PNp!z3!B4"}!!1SF]YiH Xm(Pib )o @bd"zU9)@TA Y)%xƙ1\ȯ {PJ6Wֱs>͗?/%H B>|Rj:c lqҺGYOZdE,ϗq1P~!¾s.iR@3@+%Zjfa ]2!8!2XVV]ߟ/¨duS]K Xք4k6#_pwwRB\d0Lpssey^Ua$˧z:Zϔ0\UUY:烏 ū8! VzQfc߽_!s{u·`BxӬ.sHidf Ġg y۶^O1E$T+ڶEu]ǥy^oK{97o UbL)޽'$NCp\UԸ\ns.L<%twg]u,"1g1n~|UeY ϫb\MǡYA&jFOEj32Lwͻiħe{^l6B77ϻK @*,W|&hqΔe;ji{\JږRO1I!)z}:,s֊H WeO1`? y!/`yQyﯞקSe^hO?p8OofǙsBۻ{r!(և~W^70PJ󼸿{0|~8NlR&UW^e)ZƸsDFp9r)@ Y&$k= Oӈ iLqF"hӧ(Ȣs*dƄʄVuUSOLG)˜P*!97)喫JPjQB˜`oJD)AR]۲2'W-B\t{) 1(/&ཱུ* Ie@O[o#08Q"2c\yHDN)"0-BQ`D8`VMk<gA,| &BIc4))B`J0Jk&dP{c1Fʘ$EAD0SpF8%mR3FH9!0!cfB$ആSQ<`tQuRrmU.XX)Xy{lY7a㬚c$e~ܿ n6,O_>QJBesq>U)xҞ1u Z9%{:uur B7ק I,(B~upܕE~8jj9kB < oǘ!tjLi(52x~:ocCwVZ!BYah7bPp!in67(?Uq8,o}~9:]v yVn֫#h&vJn\Yo]0o<2+BLqh~1ޚP6 #XU4 ƈ\~̲ti޿\nqSk|D( S{yN3|f^.*bXZMM(YB1~y~I)~]0Bl?֫1*KxRǿ1>~xiW!ˢ1a=ze[n>{so2mH$@BAhѦ=/>,d+W>UY6PCAEQ!ΕwX BmaNɇ1t]pcL0&hY `4A`8[,uɧ~nS(CqBɁԝ3uƐsĘĘPB4 nM1C%A3bN9( )E92Ye깛ơm)cuEUjm\BCjvp&U5G("\"Pƹ`HFsҝO,T1fxoS œӕ+8! RL(Hhpbr"1@@1e8hs R*2)|>9*(c!%m-Fy'*L`RBi1V_Un;B1MÐ2bv>dP!Ô@.O1bƩ9s^@|AXNtG)ːdAbՆ rOZB%A$e!2Z{ =r.cdF|ncߖEuY 6 ,KJ%DOpae!v*DNzWJ !iCgk3ib]ϗE fzm5dU!eEu8U E!w} (X+Umτ˲DXT1; ݇ǜA{\7*9~]no-W7p8 U5y7חo7o)9P,Ƙi41^;kQ- Ȑ#LZrή]R5u؏}43. Dzc 8*UHYǮv\RLRP``RVb6_o/I)> ClN4_.tn~\.eB ΅.R gzW&e ABTRfBpeYz纮>}|1_`Ǯ?|Hcf1kfT|~|lZOqfc\pQgRdPU5l"hӐ)F3NPQIUTo\VƅC9B*e^Y]4L0NRi2f|Ck)Q)֘X.`}lY.לc;WE{%NrwM]CUUx) )v{@0 J\p?m\߾{w'B!Z?VH`y01J)Bg-LkSrU}w>Kӑr)! &eQ(c0UdBcB @STja”I)o4 rfrU@ٜ<4t!.]p.sb(fk2 C!t_9_1Q\!D "`WB(tǔ1r = !dGG b&Ajk4g BD>FkBFfŨ>[ol0!w2. ! ! a9{13 R1&ah흿6Ma7sNK!z7aȉ"BtvBP^aHo!1yH1Ay fg 'L1`ɐX3 R)k3:'c'a ۿnvqν77?l)|\.c4:oCW+r\NiX\~+˲im!d66F̕RanoB׳bZ)y>?~XBCB]Wxe3}c-~m"w c,(S+Ŭ)˲m۪T!pB!fV~hio˜ gE 0Fp>~ޅU9R\.fW)KQVח,C Ne3[㖋ǟB~/|>N|lO7yss|<8c3g5p4_/B49|=唍;ꯟ~l"t{P7 yjc<"@S6 \m Avb )8REYOGPL>t%,p%c7k)Ū*_,WRq8cr)G8k(Rau3WuʱonN3(s`3娵˿\.q<eULrǘBΠg)X{97MZD޹i(>xv-dkUeuٮ)OOOWR X5~ T%Lsrq!fyr|Z-糦N;gʪv_ϋdS Ѧ=R֚0FuYu]PƋГaL-+GEkSWKYYJ!ZC?/u}_U~Z νB8jKa J)U=} TJv;BֶJaNGԻwﺮZcӀ Lڦ 8m:R9; x|xwm׳ś1ViSL hkW$RQF.sL a)#C`1BbEtXWzRTEC9#sbV53֬pQإ #&0p "LA !sEX0 @k4ĥ! d=;O!$g,8L)^bS "Br)gLÀRC֛}Jx|7 aBR)E1Bc@ƘE'gL$w"J0[R0S ܄98\S9_O!!R#wɹFRtCTQbDB1eжRJ!%8CRJ1!&Hq块j.UNcL Ce4Hä )UV` ګWNҏ }?~mon0mw9Z'eG:SUO?aXgN:h^J1vZ ¹(|&]~ YSJ\pg iSJQt};c_nn}z6-B8gU0AR-˒s'19eigKe"t8oߎPb&Jg?0eY]]$9xwwu-ge,0YTRlfM)Cs4kK70s\bu>_ ?-Pjpq(BnYJQr79Τs(gBH=h{BŘ(EQP. >|xKC۞5zn0LzbQkfRۛ~fE0 ()"0VkJݢ7! BęBJ!v5 m>B,`n*eIiA)7z O{c%*ח[`}Q)!ˆ/st_#3ZF`U֌\ENI CPEy<0!pE1voχa0 !sN[,MXkzFp~fs77| !ʲ^-/_CUU4(@}Yj6[hݧ^^^jc_a>/mٯ~}]Juݛ,aiC?uQղ(!1ژbQl!aPZ"mU0۔"H 199gk-Š뺢2DcwudacIU`DbH9Ce2w*@ 3!\5I d PeZc.Gm@ªC%rC? 8!brUVM7!8*g %|9_Ayy~}?=9k9_.9ŢPO.OZ/ UYBApڪO/KBY ڦimb/\jU)\׋4i¥:ΙsnǢ*ixz}]o@ s!BR1&dP| Ѿ{a)lCRL!/*v>j;lCY֘_(%˅jmcۛ'!R)Dw/z`@JUEYUr6N !<^^mo~RF`1A})fͤuG)һ(mVKD0J?mHh\q36J1y}}\,R=w81c*@r B 'crWryS"wϔ7.S!?R^:ut1aϗQ*]PԺ770zm~?s1cBXk &0n/fcz_1v[!TJ3Nnjk1Vc0RpxNH!c3`)zJA|w{(R|]纮2]]r!l7ݹnfֺ."G!znVsu-===/ɺD40jVhsNPrGFyQ(uў/YPL`*/dni~1 ›zZf{bؿ .CxLH q[5Q@voizs<\]{*xas9!!v9uL;HdtYϋY뮻Ʋizqn{u֌}_k[%y I*Q]7>\W~\C=~z~}6m̞߿d!| rBzs̖I d d!Zݤt\Jb,1yqXK(&"RзLʲaB՘¢Zcr,f<<#B*.jƕsqZqSNcljRfWEsBi9;m&oKy06v#X K1KmwL 5f D0JpS$ {'̋l@1/, U6Z. 9arbR& @kߺm1)o@QΚ ٚ{Ŕ`ed@9gPJK0M%bΪ1@ǁ:b Q2D303!{91;C 5-aL9C#0c;r 張ә5`MA@(S#B014As\r2! a` 3*#`MEYs΂=gJ)kDpT1a49^NoߍzzyzZn6eS3J?~*UUT5"s>P¤kO)tΥi˲R^Buz$ Oݛ|>LaX+TUUA*&x<0DBb?ʢ)è8M]D`(rkJ c^rvuC1OOm{PRT3E?~1߾K.Ťly_l롏3\Y ijBvn^|Wy._0!^o.Ee3!̘)r)&] %kr6ǝEUUEqn AT{G  cJo@I/q׊bZuUV/+(i21z/fe]˹&'1A˧}(t0mB캑 %IͯM(BMӘA*_>͗bpV啳snjrM_;ޞN4n[Et<^ AJ)81mjvgZ̫bm6m5 v],n'%Ik@0N c<DzR{O)ja><-TF㧿뿎1l̈́߾}o3Z[ck!4lQ%:PJP^__¶/x.O>?//u]sJ `QXof΍sZ)~<ϯۛq5]Dph|>eO) !c80y0{Y,ej$0#^ig yH3RgEJ sC9mB;q! :"kqR wÅ .U)c ΃`)E=Dew:B̘sD(g VΓw#@ (+`/RH(+s" b6LUWBh"1&ZaPB21BR0R.'!P4 #`v!Ȳ(&= ðXm0e>Dc:i)c@!)fQT!P,e! vBbp 1bAF'*I1sJI9SCǩO9DM3V#jJR Di238:bIՕ…)EiwL:Tֳ4,f6 ?=S(zH_7$ifs,RO> Y.$Eqg8NeYaB{|U0^.gdNHKY^w0v;i8y2B)4ޅ7)R R c99襔m{*'bS/c6MKU.|C 3BeY !U cvo͟ۻS-S?dY.ruϹ\N9HQ"OT*r6_<>>f۶3)qdVm(}pz0.d1fS3Z619c8je B(cAy߾>O粬(Q7ۛBTx$AB)h]Ցr>EAX؝jk-VKJ1{t 9/ΗGuUfCB^ !8Jr*?񟥒O>|x K)/OլF]9D!ޙeQR/mîTUu̓KUV3rH)sƎUQ18JE5j#y09W|w]!l!ǯ}5@֛mS/qrwƘil7waPF7-TkwؿE>vrW@bR*L׏?aJUǢ6-|<0ϧӛۻn'l1_7#  >|qaݎ8~{_Ϛ|\,VךM!(M ; F;Q>@> B֚|`\bp$!I >X)VHI(]BpRUJa@P  ʄ@PQ,u!MU/r㐂TL'=朤$날 lI 2ƺbь`*g3!f!BaҔ@+zxuE#!i8cژ"{f]s\ۀ1M!e0z(ŔmƘ<A`B&c=iU#*u휏1Bbѡos"ѵBDR!k2e1 "q r5`:AJ^-  !! R2(a|U1R$ݵ$9cH)];h)\"+ih@0& _՟q!\6ARjZE5 UȮm%c&8JXUy!b1/TC 8Ds{bllV}T7TE?+sޞrd/!Ǐk"r1RB!ƌ 0 EQY1k7:Fӱnj|)Ugu3Ctm?|ӹfC?qV@8geYb,waA)=w7w9/>Y߸w>e1IO#yQetprS&f)|*oГ˥,˲Z><~f3vu9R@ )ټ^W1n-q Z 17~l6*s8eZS¸YBڦQ^1ƺcL1@],?ovٌ!ZUgsct<I 6mN!!t:H֦PR2PRRE1)n/jŕ4Fe8OՊRbw!žwjV1鸘/0&//O2<5W=%x_ٯc׵~v{c|y:ơ\rYxVyNubdysHDj?:wRz}yi>o>;_}o67_>l6Ä㴞(777!c3?C)Rn6(Rs`dkۯ_U)cs89g)>bS,yb\,{1H x<y33cr>۷wׄzL,KkL4:Ir`&a "BQڻ "l=Zc ))%Z^ZnB1fF ǘBoS*D 1nffReFΫ|0L+%aCESNSv>#AښZܴ>ȪJ0EF.DQ(nnh==<Le 0, VUuO0r"Dx} k=61iQw)FΙ Ns„޿_U5e i?6[mǯW"d\ECZwO _}\@BEU'Jl>;Ϙ~ B"1Y=v CTBOz!+QIsJ >iy~SDN߾{(?.x92St?㟠åQ,0W /-!L!a ƜRwwwzN/jyor}7[J!^?wƴ=gחvc?0YHaB^7Y S9qRRʜr,>jУ*mbys>wİ;_qam4٪)U}sNˑ |wZv 8Lr2sq-茝bzZ"O?ݯg/_>J%dbH/_?Cw>UYun\s%~v 8NO_EQ9zQ!p|:]rj]Ueι/JJ3ؙq6u]'/VKlHQOvG4+yY`vK0&|]->z\6ojfu]; r5&gcGmބOWUs6yER@4 z$ȁP& ݷS>}~k@ "v_n͹UUZ$wa6[J'EcOʅG8: e:DD`,"h5 P {"<'GӼt"|⡵FAQT8%RBBAL DQkE$ M!BOc>FEh9gN   քP#EA Do}˼4jg< N#3,Z[6%%M VxGIp=!xyb1"(F8h<c ƅqN!vz0f6\. !bJ1|T:Li:C~B!bL@80$ BQR΃1D1KS-FSւ1lގ#GPfvC0$I(BdY!&:K9N3#R bv{Q$$tGQ?ޅ"+ &!Q!^H))#J>3*8\ Y!8 R؝zX)5.3kVB[kR=;皦iÛwc>=2I3I"~\]}yf}:^Bnϟtq LdUۜvd~X.v} uZI);ʓ|Rd=~h8(a1DZ [kݛ+X$lt0u}9,YAgY\.yv:9ˢc/ɖ$Iǣ !<Όn DfRZcTҟ~jt_~]m"/~z<~U?|1JFEY&f=;_M4G)(¸m|/qBet:n>xWX$+9n6ιI)aʋ \.I¹1&Utsw1#(|]·Ww.I h 8'dJ)10I,FQ&@f8nޚ sJ1Vi|%iE$y!2zp(RZJ bmۼ(1"F9Ki|!dT  !@;}PF-> Vi8Ac  qZc!1xY&Y=R F "Em;M×5F٢,)Zp1Xc%y #$B5 FJ01" | "_v$ q#—FTTxNjD@i/3 o󢢌]lDDZKYbvrN!MBdYxc!$-OG@H Aq$ B0MDABAQ!86 KdQJ0Z;g,33ƥLatRJ `Ƅ{ƨ6PGq8z?:c6>᰼ZcL;]!/ڦi)޻|v:!8ھ,3Zͦ~NeQʔie !@77mmWWWYBRb1' Z]o7;5.ͪatB^mV(p `f C)wbL8z/vդ9#Wee뺮(  ˳$K)cۀa{g?gc~sSWYJRIr8j$c;/@~|?m!ض=V9z=X˸LZY]0/#4 ڇR8cY,/X%c)|2n7ղmi?W_m7Ӌ!c &IZ?[ B%$f%J<0C&Ů'Y M pUxT0fsQ0ڶM?~w7%7o}kC/ eڐoq# qG=dE׈3LR#Of*Ri%h#B{8bL BKO;H0nz` #轲c1b\vƌkFF h# }9RF(F$THDs>]4 D00C!Θ|R&IY @Y6!8 4CvmwYښ"yAIJ1t][k {LֆsICn 0B ]sD8dYvQ.# }Z1FPe1uQC$Yɒ 睍q"@Zk-!@P.1>* #H(P>?57l׶i^i>RP0DH0BH1n:K4M/.gm`!·bSBpctYalɒ"?ŕRqپZ~XV{)woǡ/}$2G)e,zcRf R4BHJ#uj^>Il6kvj1(Aj3 s.IqnfYϦwV)͸lZ$L 0i51θun2F=q:iv,˗bcp־|^-B͹2!y~AOSh^1xnڢEQBZmLJ6&n{BH?|0Dcw}Wi^tyMy}1IWWwϧKD)4~w߫ў}y"Ou7 | z(!)M2zjrs":3:-!usfH\o5}$:˹hS NJpN EyQ,+2I |5MUUEY1>4f3twI9Z}'Os~>!@oR)Ln͝wsֵ{ݻIC4Z9`u̮F(csFL#"YD9KC1Ř#P ƽs1FDz30Fo`8q선bp)#V !))DX5F$+kpfD0. C&m>8 c޺m PIۜ!AhkM5H)j9B$jE>H ~D!:g0FYUcQ5qJ`#Z5Z +޻^ ;j=h IBde8H),1"N)@!8Ak/&̸s#Bb g|JDZ &!DJ0:q:)i!F1c0 !1bF(c\3 BpۦibbBP\p )y>ƀ!7eY}TdUs:@"+`dӱwZ))%Yɴ:=cD hBgmחLdӝSH޽e '?O>Xڸ~WDiCA$-竗*+AYiQ$M|~ yU7,$PNfbD2I#@9>>=\7y}&TI ھX.oY.?|{ۗJH7!5☥ˡ,LVa޾iPU!Cq=nUI>iJ1a !#fUםIR CW66/'"K4]J\Lf+;&M黺*n3f:cdl;1c?L@#]\H"s !>+b6LH%<[AwΙ~It[5 h:U)xw]UVnn׈`c4C m+ q:V r96y>ͩzgF9'l>gٌ'RPUGB91."&8qqu5]2ie&}YǨFSC?f$ oLǧBaU5o$y!^^߿tB4Y)|-mT1DmL'<+sS]UJ{EVorKt>_߿YyLluijsJ0e.<2✱y F9Q>hx ގ`gnT g"A|p)aF 3a  %L( 8YCpڨVp:0\QzHlԊLa:[!hCL x A0ztԆce!Lh+9qLtJ&֚PF| ݧɄ q:q9dFCLY~UdSGc4I"1N" {D33ܠ0I AaP1A)*5&I} cA̝q<8B7ơNw-*$~;D^\:a [bcDr\&""LhM`"IRI:]Q :s DUU5MnO~>_@swoC@l\߼C"c?}򔊒PAI}:K<1b?H) cNa/e!v]E N4 ]y)D}>s.N 4}+c|6[ {orr>v}HɯZ9l:n6oZ="CM]3ΥyQެocvynA!g~{D_}CG/v)0e9 !`gy۴I"V48!v:J5MRy~:afzToQ_WZqֶp:{xRN20l6O= 1D惿^_w}1 7 c윿<.]7mX,ڶM&9!.2Ҷ>t)rβ\g)y7;.ʲB("}~Iitڕ/18 FaLӴmB :- m7Oon2tcBYVyI ljۺ4ZqsAk*bZm6p>@eq\.=c16s:@h,9Ww!a,קns3Zd>i͘ƾ^!vY"?}|M9κ& B,vKu}vΎ)Lsn*_~|}VB&;V_W|>?~izxo~a^.WI[ jᛯl68^ʉ'!D$>|E5z 7X㼛/?iC5)w_|\8oqB@E91F]ZJ!1$M䟏1/|yN8HC#daLE صY"}Kt>J$hmHwzhγF- DxAݞP!V;g(E(@wYY8"}DH.uzriA Iʒcw2FBB@9vd27iƆ_Yr̨ %b1bC !\"jL88!8%!P!zgc !X"H$йGAItpAEF@ l@8<8 !qRP.U}w!!j0&`>Pim$K)}xx L&U^Nko_ORV&D]1mň8eY"ČZ`pY]VkFyE<\BpmOz躮,WK5 m}!dY1=c|LRpִs"Df^]s<7j>ۻ'zf3c c cL<1@Fi?\dsq0&)c}@kNyi=Nyy6ʳZ-TJvMUU|q>דɄsGi!y112LѣY4=Y}t1N$pW|}.qC{fd2U>bH4'0hk0!!C˺n߼y9ϲlD4aAdY^ ̔ I"N=s7=7v!8N/Xe\ȥM3_z/i`㧏Zm?jR/79Iw8";o$OO}KCy@X'p}>_|?bЫjReYUi" w_n&M4~4u۶샻TzqOr\߬Rʧө⧟~jumRXk5LO0Bso^_?ä,.OOO󹹽6l\3PJql[!2$Ykn# ⏟<? S.i6O9ﺧ( 5B2##<^=l@1gdQ8_'Ͽ;ϳ_߾yKyI0Uc@202Iq}׀fEQs1&@0&BS)Dc 6KRQ@ n#,I)DA 'C$Df!$x cyd2tc!ƄF U}D0AhuSO)Tp.ZcSd"PADBy3 Uځ1&$an?Cŵ)5ȇ蝣]pA%̋؜T[gYhN'PNԪ'҆&Dvm Dj!!Lڶ BK38sJ8YNv"BRL22Z4iBl}du]A!BQD 䭶c(b_nB˜ H|tǘE2I)VCO F!%`ZS)|AV0θ0݄`O1 Rtlkc B"ƈCP3ʪ44#w@p|-|:]hQ]B:O;kl:czXo|tñ.z3ab8BΧumݜ. !A nzoj0j3#xu5>oKz2$cvժyy^.48ϾU. IDAT!ċld4Ma:<>n$Am,0͹I1X\iX4M!ȳp8:,\n Ji~Nu`Bʢpv]٢>8yň$AڮKd!j6̳l:_{7ﺳb4p9w !ƱiY~j\GqlC@(D{0  x8dy:j}8'MpnkYLڌYHTiBTm}Q25:ϋXϧT MSYABsA)a:2!|.G^r #l7yQH!bF6F==?Bnon a a9w>ެ\nw&՛7w=`{!vMaĩPX_~G@mtmw\/鬵 !X̚|^۶hTe?x"BnvwV}tb}͛vSMJjyV)G8c]\__= պJ)j~~YZce+ !Ҵbz:"|۪.̝P%ܜz5ӉG$׷7}ۜ泾q?}jvukA@mb*8vF1F=΃J[ :}"%'ԀsbIҏ ot2*K X S dduiq kRJcYʛћ!8&3|`A`lNxfY(!Y#8n<"Mm3wȩAuȨLcGn{a88x],7'3: hyaTz9 8/ W$Kus!80i\S ` ig,eI1ṘTg1fGJ)\ b̓DL2(k>@LL}츔*Z)AҸip!J!s}$tkm(aʈi;GZ.;QJh BRalei*4͙q˴ Bc C)% e{@ EDl9n2+@ӧΪ~>_q"aX ?1TN8RxC 9k8#/d\-~Ip\[ cj#6mZ, 3څ)q핹Z0Z㴚р臮3JCSeRLJʈ~d# j1>?T:8L1&ڟz5)xy޿[%8rFU5N;a$8g}߯7(KƩ{l5"aLy|`lGBu;"_xBw_~feH[M(ֺK3A4o2/uB7w_gEΫ<ڶRr.'< &yֵ-Ŭ8-1bz>Ϧb9Q5缜̢Vy  8.kZVI^?bjabċMzDNNY^h껦އxVNd"|l޾AkX\m7;0$x>1BmN|1d4@5t<ˆd9aAuU9iNBI߷\@.6_gY"|1xaPI8g0 Q霟Ng!H(&2+ꋢ|x׿LV|۷ww>~]]/zۡ_߽6[Fd:36lo߼#Blw$,tB˾i7/L/M{wn?]cLe3Ͻ38\rl) NSNgsL(^J1&@,&wy}s'J00]! c1A0VyQhUt.FA Tb!`صjcNp(/agSʸ"F`E$ D; A( xb<}tDۮ&ч#o{H(DEʕQiD@=@ 15 y,Jeo! VF0Ŕrq S! ae|J HJɨLD&a܍)J\>Xc\t$Q!37C+(rAH i!DY:Ȝ˒IBM.^r .01JAX&sg-He[o,)k1-> D[MrRLGJ8DpT cd )Ŝ8j `n23pT{1#˦ibA>~uU.޺C@vti3\^BRnNZ$I$G9Y^h˲ucp4U@R&`uu@Y8,2lKd!//M|!(޻}|ŗt^ϔmc?O'!bmwέ79Mcu0TUy)~g9&(0^AAD,M8Pe4s5%$F z|xX̯Ʌoon>U<Ƙe)m;RǦ9k%Biahm AaiB77Ҿ, }^Y`kxh6ϟ cZaRܞ~l6` &yUU04c^:?w罒\Jku]uwz%7T(!$;O &T4fy1Q!D=ٔ@rܿa !`t{,+B(c=%"wk5S0JJ%aJFO\Hi@D BY8 ZD)zTɳ*Zo&_.nS 8&@ LdD:+1fG68MB`۶ϊ9Ec`}U I PB(8cAA ?^ "Aa:o]UcJc캧tzLV'1}JucQʌu)%=c B)[*z;MLHTYL" @! Bp BHJD} cL1 ,\b)FNk3,ϝ3SֆR"y ]dH4@ !YSׂ NL g]p S  n, 9⬋'0"D `)"bDXc5c{zzz*8t=AxX5n+Uq Zb&Ҵ\m=~.iN ! 4]p~GΥr:J)sme]%BhGn{xx,}M Aj]̗rLL㧏Nl؋<҅Tֳo4+FB&m_1 !!y@ sAQ4]W3=!Mz\̗b R>\nf"_V!cFȏ?C?˹.`S~6cEYt]rss\.4EU˥n`p|S O0! |@8+k9Ie !YcYṞ`݇O 3P4Rv[i~Qye*}sR\<}~9 {{ۍ7lnbF (!XLheqMDrn.g6!rZSLK{{ssb9@VͣsMsYk[L LyHSVJ .d9A &xr:] 2NDa* X;8SsDF롍Z3Q 1 O(D0#!z |BB0Ae8 @弨B$/#܆@1Z! ? %*8Mc!EJ`&t rS"fuP'eB\H Afrz$Q& N)R r:k7P$8d]2}ItE*22k4Ms$  !L1Skb&zl (+f{?:%H cB ,ӆP4c!1` Х8c{4M!Puu/N 3؟7 5vs;:O ^yq&= !8ûa3a䝟WO*̴ueU\K4)T"ϚIu9z}FF??|R1/i׳ jӓYw3B֚3/!)y=ϋz<ߦU}1 u׹ru1BFa?NB]w,,\.?=ez3G]Uk0c^멪Tmw|?(eauY]kzӹU)0yU.㧐04/_t ~DB׏ma꺞+ƈc @YT_~ 1߮7?~.܅x9rY-ׄrxӷeQx@J Erx#8b!B # !D)Fa589wBrP@0+)%"pҚR8A6x%Iېl]!SJ rMN4N*NdM A&UEns{>R cw>XI h&-$9wY뻾F:72FBm)4pɇIcB e)Ji{T4!;,HL:F` b_1F19 LȔbJQpSb#cHҫ%!#Hʜ5{B1f.&P49>l?5Bp"# Bf8 Bc| ŘRJBR`1Wc&\ pf A8)&&Ĥ4zQLeYA!@Tv0 |>>qΩd YECGgQ [!2M#_oO)Bs\OG=Ggq7agZ;#'j1$Eɘ);vgRyH(4T)=.R?-L`GL|E/Af{TTtӨØw7j9q.vr>@e F=tCc鳱vݖe9͜s"+ʪ 7W3 ˺tZ{,<7R853Ĥx~lִMX U= HU^vOR @L* P i77+!8cxOpncںe}0zn^_a>[)ǘ4Vs>o;Eپ|#$=]x|bLPʮZIUy]s=EQh=i=*]8/.iT?.F=tC{93+0Z  !T8[ݴ.E܆<$;=Ĝ|{fsx{^_X|~ͤ㒗9㭷րl1AR J4EݴࢪC4QJKU͕C/ۗieQvTVpl/RJ N etMYe6._yVBRfƘ)!9`JU=s!lf򗟾v7og0 .a/⧧߿}sn7[= "8RJRVY^BvVYò.OouTFn˄f%e-AJ9}BcD1[k)0TY ak2%(s{q)&(M2ðBFlnObDYpp%ggqRÀJ2ymRfv!&0 )i=P11@p@ 8q6 BSbq1x= s!՘0L0隮2@  t@K%C(PsBc !F(R\_M$`4ϲD "A& eDe2SR!Rt i4B LAg%&%Kq|?aLAo|q{HOf bA(%X`qՈ./rqBDa\ lȃ $Tt}J8/"P1! !D%\`BiAH`"&_fsnZ7u۶sDҤ~0 ݮ,|)cnV>%CLCO$da?/(Ӈݾ ۷m8/O7|J1&\ޫ>p!çO搮m,cp:.2YE5;Ͽ~IJi !ocL! IDAT1?񏏏樂]sfqB6{ƮjC;G=jVn_'=f:no%d9aQI6 cKmztUfd\Bl/mZ]g)輧Oww)&.|?tJ),Fe^BA* "˅8!($jSU Ac&c<%͋ӹ{'ڤޯכٻ !)u!Ag־({21)!rR٬ 4_oby<c|vZ3֮拱n6}pnGc4JAw E03#c4|lnqĔn_7K8B,4M//qs{?]s>xwo#B)ts͗E?wDx}?DJ+5WoBژ &?Dc@14p]>LӈSZ!8T#@1 &Xp Rtr}"TQԔ4  jcH{T@1E%OL@!\ (Ô2S1 J!@c[d4˱Nq aqp$ygme0 )%Jp cdw>QLE! jN(o%OfB"Z9sA2}D=c,F8SQTIB`SBr`BcFւј9cI>!"!RfE bF0Oc"# gLd aoT1%& "!+kc\8BpΤw3 ¹Jp.QS) Rb UUZ3`E&,0E1TpB19!)f _z)bmLrv7Nb\NZGUCl߿[.ާaC)E:\EQ\J!4 AyJH,HKmͳl{ @^IʋZ),R{Fq7ۘQܟO}{gY4jx|u0 UU]'u]\Q7L;u\}[6ϳΪ,aiC~L yCtNE'0c QUƚx(J@ ҏûOwc c20Ǒs޶-L{lPEB"d1bQUbՋөɳj>[l0io-BeYB STT-2B~䌆Q٧Pt,˿_}n.q;K08y}~Zcͷo_c:kϟM+BuSJ6&0NRO_6[,)%뻻|ˏ0~Wӟ˦9rƩ:ZkXuFOU=ʳ_Q%ը5"8Wu0DFALsHyz0!89R :g!BbFU6Dy;+~0 *3+#ct֙<+(MsʊHLeG)>8UNoN{1$' !f\v !LB3zFkB088#体)!9FHkRJơ Y볬L!FgLib98R1Ecs(鬧s1..J!5&xB9gSW-! Q& d S"fS$;B A $1o[F0 m#ԻA䝙 0ƔPqz U 1yd3B1:G )&R LdstLR%J`J=a"' p9X!"c@ݏڌ_Z2JUyR]Pvk))򲬴 OOϿѩL}_5!_✙g)!cTd*Tf/qb!s9Wp^BQ80EFIk;8(TWֿct2f>_v]r#RQo9Cw ///!RU1U뜛P c<6ǢVr\)佷fNf~ZF@@<}U~Y?~d Ef|rɶIϪWJXWUJ( Џ)8Έ>^OgsΩRDu!/ʗ'v\C*ZiBo߿w[iUO?Oll6E\PR1BByVpF6 Zco `Lʲ8 RJtwE,z7͝Ȕt4(~10_(K׵tq!Iw0 S(zu]KޤSH01/jJjmu=ۖSVTT # gt̋mb] Yټl NӤW78Fwm.+J88MYm>eϔ{Azzf.g2*fVY8 C rV?ǻۇ%!=1p>[!by87//hBp? Yu s=tJ2~o7oo[|Dɕ,8~}m/jr|fol 0nhb'R Y#_MQֶ- 1vyﭳ`sBL{@)ɯ2s1a51șZc8,1^AE{XѺ13j/Rfg3N}'$)F=\$fP^zR\q\Qv=gy1x(f〻%y+fy2#8!f@Jqrlug))!4T0/D)! {0&$Aȥx%{'zb1K)責B!Ę [g@BX=  c@Bpz351(EAa(h Ɍιi)&sD(Ĉ)91b1J Ěpft"zZ_A-y^ti:Ƹ9 Fo`P6AKaGm'=a(rH돧V jf#@JfAxY-t,B&X}>Uo/?c֫; 1γ*gV|̲ v:?>v4ۼGeV~lnʥcI11]\.m}x<_NiԗKܖeu~l(W\TYgcIfK? EݻO(+! \"(7{ĨO(\4J8M\"ᘲ !bM㩑z~2? @p _95&r9ʛ/\.uU>?2L^."—L"˝u @=[<<{>mj}/5>8_*1.k90Jw?r ͲBPᣏ j!" "$xfGNy"4R#8+O罔¢ 2AD(;)b!bTZd8o 36Q&(e1g5& Ř`ĝRJ7 2&7 * #$=` !LHL(A\M0(Tp!e%b Vb(z켵`"SA8g(ZkBwFpc03aơ'J)1gx!$L)㐼Q̻ ؤKEBTBxr=`E I4ZD9Db; B!ր)CL>AI8,k3C[ 0aƾC@bC70)rOQ @y RfaɵMbdTd,)JE Pe%8a$" >"+>S N0F5dGlPerɲ#`LK8+mӀ f [bY.#pXcRJBJ)c!"P` zgf+UrN!-|H)){%BhZywN!#myJ=q]4F)UUzAAtX.ssG1F9_~l6Άח+h=B輓RNBL;@*┢!SUU}K)uoΗKu=S"Rlң zJmĻX3qJhz5v2Ve>D$YY,@Edq>#oof|β,S\X념J(HRc@LYo)!8B:WU~RrS ȔV 3Rj K5m`L1!`eƘL_~zӴvNk/|; Be5#ÈџϗǏa:HÁRRV5bʸx`y1$8k._8gq> Laxw8RJn~_PY ;N[ !Z3R& ?*jv-&@8NvXvҘvsuogU`Z]Zg}^fǏ;8ł A'mW2wW5^̸i\3M{qey.rSY^^}^TF|Ey1&g,%1(]ߋ,F9c u ڮk!F"c1 fYq]BH+>6$t gJF7䝳)2F(6z2S$3b,zbv &xy3 P8Rd%CBJcTDamNoXg9U2g4CØ#0k&(dF N d1`e R|9@&8"u#1AAp Y6%Xo$JڌRq D UJ!RLb N1bK0!L @ayVRF !֌mT^j$Ϭ0Ř3 ,%o` !Ɣq^JbpQJc &g<r r bBJSQyM!1RB\Όqk\+7 $K)`R"%B5SB)!1!ƌ Ad9z/qr`ch[CLE5Sv~yG0 _~,c۷ׇϔ?cc9g Y0C !ۖΙc=ܝϧb]Ϯa6 JyVzhkNmFཱིB(0[,5a.Z˳TLfFJerkW9뇡qt뙐 Bgy߷ ֓Rps3`.|fj}:u=^ahbk=)Utt~뮹 ]JI˥pk:qfrdYk=)6S$\.S`ȹ0ƬV7h A1DUڿ4춯jJ)wb>#&!Dߟ;9eQL8''RLer6\m_W"uaʊ1t:z8u,ۮ)е= @ 6x}}*vI*D/' /\֞|JM!Yg0BR*h'R2ƬVk_/մI8?<"(^j39_cZk?9qTU]ՔЦie1ϟX4aDƈg|ʚ4Id͒e޻6̯;_խ[Ĕ)W !&` ?h9Uuk3sM:A!-i<\qι+} fuLq]qΧӹkٯ 8Oo{|mC~{r>nW;NӴ\_9bHP ,◟Prs{c}~JMv!hmq2ecǩ( =bVZt]@B9G&A1/*gh8%Bcw> '!xL1 .}HuBcSRʕ4_,(cTjOGH@3eL bJPJUr~J) :G1Q&eIH1#1Bg M\3)&2Ҧ;&; \SobqBaLHBxURdr6(` @rIp=\P߈⒥_>ʐ*8W>X-`8pbJ2z\JH(!*rJ29Ҍ &9 nLH( R1V |0 1(R"s*򨔩jQJs!`S]7 !0X#91UR.UQ[.eQ}$\(9c&Rq%1Ʋ,#, S>綝Qq@RRb;_v٬^麞/r(aZn\MQ\.MBBI 9M3noܝu]_Z)T&% St]BBc|H@|1LX7`)0Af.!TFk,Zk{)j}WUanBuYF}f. 3C5ˆsYW]} IDATsaJ{m;kp8JrkL󫛩wÁ )cZ`䍖޻s +O'd۴yNλ^Nx{}=+]?n7wəSFS R\Is.GyJ_ t8 BvXP!0v[%%Psg\)%%O'{Sei2a3ȢH΅.#(@ A0abN1JQ`j%B@iٴ\ܒdNi !Q)MR &.e zܽUuB$9&L1bȅ I] 3B 93SΌsanHkG0&T0Q5ޒd9#ThebUQZBsF3bfS0B(%\ sN@wVH3:/q)sNA)u(9'B)y/A9>fs(4h9-9(̈Qg,9*(1%Fw9bYVv5,cPZd)bL!8qL/l0RH\mڡZEZ䔆qҤ)%al:mjhFq裏lVRw6eMWemfSTZ7k}eXp]4ZFln[2䭯ZaÇ/VFɗLEѮݱn)iiJJ>9Dž$VUzf l6rϳE}8m6 %/~{)nnSw؏Y]vʲ9)vxԽs;S^ eUL9O1IanןfqcPJN] .cR\&IJquaI){@XQh?.j솦nu!䋢!m~6۾iƚ̀EUY$7 ǘr;.M)sèjw;!˪^޿OZ+8NAIӴW v}qOUUӌ3gtju<h l7eYMC9G4K`bG4jۧ*W{+gSX $a0e]e>%cSHZ^^^%Jb94Lo/_qX 9WdǗO6q]nYkC(R*'7"deu(׺hae5a1i-T˺i1E]Γ䚰B6%U͎Q~{s{K%v 㙑\s_tz8_^*)4w SUώ]ܔ>$ھoTerp8<=j6Ǫ}|z!9l};wR餤rOvy÷R)VuZ;9;-ԼÈuSu^CTtSH CWRƳ 32!J9\!8uEUp.)"$3&.ȀGY.B8|g0ε!Jv>mF8BjΙKih)e*JM%w>}wrnbgJ2.DN !Ht8rə9`!8/BQ2n(A qWV D`SFv~ꅤ1{F41_P|)”*#!LZqViA()n]}NL2#\F sIi% w2)gu3 '!*Dp"1L2L!8 9fWP1Ţ"3K$'@ AF"S`H~jRxM(g1L\ |" !Fx>I3t>oݼg€39D(3 )e 8 bLWF&UFo\H!8O>3`oc~`w-arbyŸn.NS)bSzy7w^0ayusCc§/Oiq_^^7MluͤUU!d&L(. RJι~^]8))A*G$7],LCJPk@Mb!ue9 ]YS.ĐS^,!ח6.\7ٌRu[7__ ~Wfs$^p6qܝN⽫i\3JɎEvK ( c9d)U9kڔRJiӧ|W/wkfn]]׭WWymfY=Ӹ~O cq9X,`8_?UQpZiUS өm!a۵HB?olb?OVISc.˲,q/zfzsss8秧W04k1<^0#<Ҩ! PՍ1?AyJR @."L(ck2![( >JΔ҈4f+kw7@ts2$( 1Ř|LDk.x A+%$3sN,C`򪑺HBJޏ)%bƔ%BR PH~sqi # SɔdRCO)`J#f4B B026j1EMd &!'S% Υ U]!C?THrqɲ j7 9X&HJa\ %48>FK9) 4o̸Ps4MRrNY b9i)(%@. V9;8g`Jb)r C cp) D*N,.}9X?T?*(#9 ;/Ɯ;rvPpS5etMsJ4,"~}G`lFeDF(1ԆտR=pp:T5P 1ۢ4ʺ\m_˒Z!zejw87K)ײ,vmA)c@Fю”9axo|gl6_///MӌH)( Ny}_.#U{{؝Oq $͑1;Qk= C4(ͺh{Jt:UU4tֶj~1q(Ksڟ/)eY׈)D-!Bsi6ǘ]$]_n)~u}oNNŭ*2}4)%?0uQS?J|xjZu]nfbHξ>79QǺ.4~}~ϗUU_q@Hl?o)c! ٱvcg^dr.L9}} 0;.ͷ74x;)|(%eY!]7w(Bsvl;Nd,j!l6vy|8fib vS8 eٲq|o伣ű;6ooW7w)zu1(qΑQVf\׫ /(l:jHӪ|Yטs?tOuR2_. u~w~Y~uZǏ__ywW7xml^jfp)(} !|yr>흝\X_:)"\jGB2!JRjY NiRjc?6xYaZ@"85u"5aSLr1ƪR²O@E/dLPt,H"#"LbܱB+܈je>$%9O)圇dPFx T'!|BJCZ_3+9iRy'.FJcnN>J "Ĥj2" H)| &\H'Ne=F$04ǪF^hA#0!M@sRHΈR2߶׷By4M^ߞ32{wܼy!۬oo %1z7~mOFp#z{ng \B$c/uQ'jnWG̨"8אָ)B_ܿn0.D\QBuJbX,Q = Ǧ^,qt 9}+ABwluRT#\2YƣΗo?y2EqwS.ŘSΙ wһݮPE qƫպĕ\]9lUYF/OϜ˪jxH,ob0qbqo4rm^b FiɵsyEYxc4bK%_?uIx|M2 rnZٺP1xm벬 K2Z"RA fJ B*$!(LCo 5 `fJ(!]Rx9E$$8 Bc3S F%us>)A(VTK# ĄBU@MզJ1EBB`J Q>2:JA*T Ua(]Y9 g1bLcbBRDPSJ}t\P*)Zg EYt]>QJ1d/HJB9SƤe9hGL;#\0_BCNIn2"e$BRtn¸*bwSNh ҄YքkYR:~@)+@!F Kb&),TRa0\:vB{-KsѴe~*)f)FJ!dSN%As]# PF LSr\zuM+-i\`uYnߴf/j}; ǔ3%`*Yr9W9zTM]@.G=cvۿK9Ţ:hNIIu>R(FM5e1J}Ka4R} 1~~ !s֎\bǎrR)g3&c̅~߼u݄CLEQ6(BTUu>Ǐ'g}H1/_eQRx80!v~l7BJ/AtQιqDZ̬m~ i1_RZ ]1QHu8"dT1/_C`;ba)d4c}΅LJo*ctO,K3~9/_nn>~}R !۶TbY4-Zx\_ӝby۶ej;%?!e,f/[@)wK3&D.~x|x~~@]Jᠵ|0Ɣ/hO_>u)^.ј3!j&zŏ?8PW *!j%UAG;h!^z^޿<~x 7?Нڻa\-cO~nʲhBH}3/: IDATJ0c ;<%,x8rAơ'O~pZ_sNE۴f-"l1a.y?oqMQPbu|}~>?Ϳw8WYiJi_~?_LUQF6ՍvrJ%BRRȓOZH1笔,Y !,DPROM4.%"I1$R )%2e1dJiBA)M R]gq!RJ%5"@) !{tUA[d vED&%0Е ͥfc&$cF5e8%S&Baq@q̀,4vJs }IU* ibJJXgH)d B@S ^$gB*Ǿ*e(W>;|rۛbÏMr86M4n*N!Je1|ΜiRJ}߯>h%p>l"YU̦iKxﭵiSUQùX.8B,ӟH^_91NYJlqnR*2SZ.2a]pۜEQpu@YVvrEQA5Uw>!%[W"&[zzZ^]<߿{xF(~3O]_qne]9/v_rf|8TR~O 30PJu݉svUum !1jPv)}}1J>~p6ͼmɺjOmŘ 1ڶ)ʺ0:*8bx`U6iJ!+m^_퇲3FV1q6u1j]7LQ7B>OvavH S·j?UhcCߵm˅ 0o_|$ Ҕ gd,nIÇlu'! ˺:N+)MsfF9Ft !NS]n)aK眐LHѴ;a )gDD֎iGDBb!ŐRYþКr 1jcr1Kq.)fx(%+DĔB3 .l6!JBhME"4RSd8G EBvW79%PJ]; I*PeJ)e'ɨ֛ESޒ)/BHO$N@cSBd֚Qvs%(e$a8+S"9 D)aT\Z40 9Eˡ/asDL ԝSB^J J)PR" F@)$dijBFkGĜRTZq.c8!eU[PN4MbO7!%F ;)j6S\pҔ@s)˲+f48(sʄp|&';4%H evr .42ɹosb~߼Fw[JCQn[;MW5|>Ixܮ7nrnWwwOϟǭd}uw>Ƙ}J{if,p|NGA{Zi]OUY_ΡR]WBXU&@nB|ݽgEȘt:}RjtA*pK%Maj✌xw$L~¨L/.4M8>|deg%hOX~~Z\{cqDBQ9lg@@-bl6t<3FyQjx<.˔^*5 RnNMߝڶX65D?'AAHӶ˔!#z٧,뗗aק1a~}H^M2.mߟ˟#y+8 ]pJʥ0ls"M}`\Dv6 ud]LIRC)k\׋:eLi nlvε4Fdֶ[ H I1 %yLӴ!0ms{;N|AJMc 0c?jz8/raֻ %QR^k-S&w/N4kIY6@8Bo_ߪYZ.In_Ƙ懪SUUΝmZBuaX,VB2;`_ ZE%{kTj"9}]kI);w]4m;w;7=}ͷC}4J(ޤDzd]2_=<<2" ĀAM0JCJ 1AB PuOdFDfDxnu֛1^ySNǦCY?7oNniϻWۺi 1N)0u}9c,&g7vJ9s.RDyҤKq.X9#D@(cz!4p]@PAʿb ,+C#ʀ'"@8hMA l0a &,#cb`c)@Ň茞.lmtIPRi=6"xus) e9&P1h}1zp)!rH8e@Z 8DŽ(Ǿ(0{_/V8}(%¥ s@8sS ?wD/촟5)fh!~_UNX,,TQaZ^H=F1rC2e-! &2[nO_!cQ%t93 #*DkS 2&,be ;2BUOOR Ydm^gͫyIǏ?o^Mf[D @B]>w//?Lz-WIBYF`t14 E%}Ɔv)`g!E I))ŚjY5?w4c3RqpFHr@q/9C)a8M ļ*eEUS>ǧM]8P$%oEw>}c>bΥTD]nXQ؟-S;_ʛz}2!\K`8x8ˇv|ݝVyr&x<ԌӺ,1SJ.@~d@`r m=3!^ y;j}8i}wNy!ƈ? /~|?_,bHՆsn ^#0vhcZNUt0sBt>2~8 )0$4~ƛY; E~\nn|.~E-kJM71^k׶3AǏ?Lʲ)(+!c|bܟo7)c)<y(˟wyfu !*8P`S*qq}!aDcz)2B !$U)GL$)$njY!HF@SJ9'1LH^h(Fh JLEI%BCz{!i`Eʉq(c!LfE"[cR 2%%2%$ jd.uRz8Ƙ0&@( vb+}?ٲh"Ǭ'"!`@eY@*|1 ՌA;K%9Gmt Ex!hU@68B)a,`L.q4NUC6./_>X,7E;{zzJ(ݾ=χtjIÁp*)cr$+UݽGiI|ބh!nSZWvUJ==~Bw>|RJ cml,Yޤ'%%BXI9zt>w?ܽ!󛻷J]w0FoMwO7Ӭ)9cvimB77ƚ|>?n6W0CDi;믯npF]̨ʫΘ'rZǀ$Bi`BUUCL){V(3ƆZ࢚!D(g%(q e  zB)Zs X` ƎʤD)1`J|K2p\ ego50F93Rќ"Q1E5ۧ,\.sڻ(TY2]udy!J9!*|P"C)EBtPs4λR,B{Rxy?s F 0Ho&c"PI׋LCY!xN(BNr (h#BR1=Z @Qc| %(/8GBY1EI+FD6K3 0瘃ِpF'=%c$9uFcf %)9B{G 3)cb)I |a .2rLS(8zG0BeQP*8 1)Ꚉj}55M;Kɧihcl\:/vNh=龪*Ơ΀ Ni=7W,I,N)pB!l6[VNX,>z31ԍw, LΘsҶu7 Ybj-cDo^ՕwNk ^ꆁsyYV@8 u]2&rZ'Ů9?>#Y,Wq.I VQxF6z=iʪ(v7a˲xyyizG@1e=_.m6=F9謹}?Mz99upY6Rɗl6!#.ئyZv۶m#LN#2C?M7'Q:^Q̹)TEhzu?)%}6v\-jq @Rv3 'A\v\_y3}9OQ>==,˲(],jwOg)(*xH)c 6rθ*sfϫՆgnw;6ugcǡ~l04e᝹l6{r|9쁐/2dXq!˺9Y\v}ߴ8u4ۦM) ξ|t{sk{Y[&U5 KQ#878\Ζo#qBh='ѫ#$pwD*jyn6e} @R"&\ ^ˢN RN <}Ar'=^QySBE9f'yU7(\OY!Ɯ3F向36Lj)esB9%hJ1&|Ӏ.NBYĔ!@&AprS!p&@vgZ^|LIb&;se=(%(yH9$gegIѻ"V48U$P("/c.F*Pr }HExُ'٤' ɝOGJY3[/vBHHͬEUc)Dg0&P1F!Xs1I) ?K0BqR)pDR)f0BС8ePk-l>Bᜧ)ʢEF) >cR[ (ed1188)5D q2RN ?qckeH)87%3ً^R6\I.q}W,X(m_{}\xR p}{Aq˪=r<o޼##Om]fu0?f&, >UU͗{f}}:)e !s>YQm^R)tBqcl6f(sgQ|z|:y;wJ`Hz}k5z9qOo޼UquWW7.LZ.WCyo鱪l6뺮,J8.&=Mj}~yyկ~; ^^^eBv)T4bB)e oZ觾J=uUZkι63K%6\QVПnX+%|:)cƢi1~茙nod*ğ3gj??=Jx:@aD W9|J~Cx|>M}~b|x~뎧s6v~!ր4|3![ Dʒ`J !0%0%'&h(eL I5+4 gB%(%R!Te3}JI1cY!K8l`B 1ʢ+P )NqqcRs kЏa\3< < IDATL S+R{,9%2xs#xFdQL LI2Șq"9Sh9C( a,FMcrN1aDDU2ikUco MK?elv9x3)FĘkN; 0G0zóQ |9p)c=i?ER*cUYRLJ#g4OP6`B,~Z-9p̶d cLj|?77oQBҔq\#~8=N77_y;ckdF/2)ݡ*f(47=f.WCw0FWb,X5j >Z?==ʢB}7kwﴋL&&+罱2)IEI(;>U= 6(ESvlFAp @=}CXWm͆23r06Gcͨ}=[Y4sc􇫛j=LǟU /Jj1d)~'%7U% ebO{N)66WWW׷_Ǻ*wjn|@DQPba0t' 0t#"_>}(eb^S7QkƸA ?իQTَӐKqx̪(%@31j}~ E4ܼ뇽~>_oO(b? _|y8_}p2l-Y9)] \H\EA8>jG;i@DI~BF)DA)UE5 gN 91(RC&a*~SF1bfT׭w9-N'kf)ORZk7 'T1}xlrg%|sw>on^ B44mCxmSw\Ȕ"dLhi(_z'jg6z>_ij\6>i. ODk}88Bq'B3bx7ksr6eYJU\]t]_U11RUrq5MVZ;Ҷma{gFb9{8L Qz e땳ܝ~?N]]2n\nVϧfF(`hUUu=;jgaX P FY ʢ ΛbO>|`oZk/9e˟_4 .K .!RmuRjB TB TU S;_I9ۧ/3 ulwNO,z R:Y3ċֿzbߝ,)%F@g׿ǡ;n6q7Ӥe(Nw|c(*w1,O/ZɘRŜ>bu4l6k}?Pm/zmt2z(%fƸRM3>o}pUUz|xZ,ֺ847r2 cݶ@PBݤaDsǡ!b п' Z?s& a}J]g\0N_^^E!1F@0EBw3C .w(SZ!|¼"LqBs6BRJR D(eZ=2cEzWy c@ a(Ŕs,ʔ%x, "0%Ʉdn$f)CTʤ ňIYJQe eJPN|RTa% FS$\71N)7@0ʘȲF@ !xklΥR^zҗ-vf=_,ʌRpd9l(??\Re+\SUY=q¾<< %BXWW Iʙe֫MP, MJ)ۯa_ubꢝt8M9sv\sR5M㝥=n_vm3AHYMt3ʩmgOF q0p𾪪@rBcӶ3c2h$(1ջ몸~ywVEiuVU,WMsBݛqueQ|q>7駟*oݽooo6ֹv6_,6ݹ9J|շg>* U]V&\&%cl)S 9EJP:xJ EoCL(V-,eҬb4(eglN!xGo1E!H(1=9g\B1c*s9 BP5#"8P 8c!a L2F瘐#EYPWEI N|< Q 2s.(9ebT@jB.DL2. ֘!X%㒉3b4pF)x!d6|]$+ʨD u\* 1# EYx9H1D0&,)9fʹl0N!\'r&)RzQp _'VSQ(~h )0F~ׯi*ͮ~ .cʋv&|>GTj=`fxf)'™3,ljf3HӶ!1qѻm#" =iX3kxt-ꢪ4>vm۶}_tׯngE@Qm1>D (?W+% f~zz9c_1ˣvf6UȪ9πR[WqX|6Je6aκ~Z,/O.S % yӿncB(FXl#\{)瑩?秩Skk糵ѶO*˟}=۷ogO)HQxwssS<_U5GNnBr1v]UWϏ`(|7+w:Oc e9&\匵?~JpNSSo/9O)G!,bc|PJïdM!-W~8r\8Q/ͫ7|VQHrJd]e6 zbclOe= .Ĝp4yIdqE iEJ$8> ^0 8)R Nx6v$ ` C()1sD114M`#Ι9SBt XԘ)᜵)fdJ>euq*0 @sA5j # !_0;80`9Ys]ls\rCƘB#X;l@QBɹ,) !"`c9c^c`m)< cZq(J 19 UP)'#BpV0 T}1P8E"!q&){DrəDP!'  <:b)'Fq)Rpx 0S^31a6_dBuͅ!\ E`s[L B`3% P` V7al:2s\0.`9ɿu]?G=4폂_{,*eI!n?Rj}|y\-~e=:޻sQIkQəYCD3 ~u}+Vâibsp2 9Ff\<>|{;tVί7<" e|>XI 0Iɩb>TU]g8m6?wz^ժ;d M/qXm٢] !l2JOPǢ %ra޾f,Wrի 㔂I2'T08"rZ\?ݿ?R̝_i 1E]τ(D fch9MQ'|XƘB 0Z8?~~rz}sC̩jD|׏0RkB.|یru}U2>؏qN}ףs"(Yҗpx//8E۾j6Ws֙Xb>>`v|ݯXQHƇih ь >X:"1F(b#clfRMn<`BRSw\4kiA b1g&eiokN~̈lŬ @HH5 -DQ"3#"7b`Ybn6i^S5`"8Q3[o KFd:b"@b l'9@#g,Lf1TdRaRƣ'R=!=&"cCFv"'!H(xB{! Jc!@(4!#H.Ra>Oa…$2@(CpCBC 8;wB t/pd% %N1!2R L X!'k!`J3<aRjlgM&%_"=})v|vj̲\~[onogLh˲VBP@aq̲-@ Dѝ{3Ɖs.񸿺&9(ϟt;lVF%LӧOEwч΃1߻=һ70vSY~E(YBDeﻮ;c7޻h'֙cM}=4?c. 1ϕhc5g(vr}s猛BPS5~K؏YΝUU $DvjBBhUVB8[n!eRmr(v<D^un48Az-yQ4뺎)c.//)iRE(˔a>_U@)gy^Js qo %|>]!^.`i6~yQ}~ )1ZM͛e)Ŭ3!Df'r6}/ƮVO~m"˲sm!HB ?}og\QWWLФFBt:6~XTuQPjvŅ5fP!Du|͏ ]1&1ZҹtGA:)BXܢ#''9O E^HέPbJp,ayB1,D" !9B9/ev~Ȕ"xp:(p`J15V1$ % A€,D֤ %(xdT1mlI&8!(e p!RR&GL5L;o^uy,&T[u4 iw;c0CXG#@4cr;!B)ű}p ' IDATHPL% DBb3+5aLZgmΤ@`QF"& Cd1tQ8G9B` sI.j)!#L1qV;5Fo3NX`Jq NKYN9 !esGXSgB" HJ \d m"Y 'f"wjcbbBx烏ByL6 NhR'ǐg#$"H)b.D>!DY:4>3)e+B1ڟE25)XJ(1 `dCH)& PBCo޹!ݏ?x:쮯.OeyqYWt:|}$lۢ( u5Y9_cOZ<<}Q/n|"Hzy]}{u码:謏^1Jf,˾ze6pv]w<߾{O3Tjz~Ʃfm> kcz 80Bq;ɻt.yPeԩaRoȲl~#Bbq11!a\&x>.7׷ aa޿|yq^1ɷӬm`bL!LťSy9畋;B:#„*H y)9Q:v\CJ!D?Mcs O(%,sP.1J82%0q& 9mM:St@ksFp >(ČSnK3Jq :}6ƔlĈҔQd >A##gyHq %3 9g ) %eYE B%Ġ'Ϝ?ImSJLY7>X#H0ϝLa2&8ˋ\)bJ^00FY=IY "8M]ZiXVRLHL~F 2J !#ZGcL aʹRb\3s3[@QO'MDZ<>;&8SC8"c J1墬+4,O LDy ~w|Z*y) r>2.Pi" @)!k%gS! ! !LW]_dL?EV2 1%D8gY@@q[2AT~2a*eߧ`VjZ,81fߔU%D6#\.ϐ!O/<)^\\6|q8eŬӿ?d(eEv;H&3,feuZ2!$\d2XJiy$d2cX.nq>{Rr΍֎/~QP0z,V]!g[H>&0ͅ4o>}o~۟~|ig2Ϸ 9\.ЏӔE ۻ{!1v>[@~uyxhSL3צj,!!iU9;w?v"l5Qy@ 䴨gss5*UUuӶ85ms~SI)IY {#ftF;g'kؿ}.%ཷ }z\,VUS1%,g>X0eYG({<^^V2'cl[//JKD4n;ߤDŬO_?m9C?y%y(]pBY1RBOAYgQ:* ! 7!9& (1B@"唀s>Gy&8޹|^iec*JRJMgƸ,, L@ V1Nua1GA@i@a۵z&eӴ1A!v'B4Z8M⼪w]5ƈ ̴Z Apu{X^lL<<O{˶*}\^][kRWWWf>)"3t8L4ofieDVvǯ߾|8gmNwweZ﷛ooh.8{tLol")+ *kmz)3i]޼駟)j`~lTWˋViSuUeb!DRo5%tƶnϘ_Wi>}GYVAv#..f>Zk6-EhM)?8LJ|``02/TPHI?N DLH՛F2YY41B,(0AYEk\ gC^DpHpq&@"!RBR*F9%:~Ȋ<)r%;dMiF 1+YѤF Bha#agTBcP!z$?ͰRLGNk0E璛a Rrѻ?z,FZMT*b6Tqژ޽'p8LtXy~8в(7->3XZ0*߾}{j&$b.\n6/]wBbL]U֜n:wwo DY&Oz *"JF4j"1̬] TU;g~wsεݍ Ir1۷oR^׳|۝<.VFe3evpn"'x{~~ Z9E:]? Bz ViufAEijZ|x||mgZ/)%|Fe)%REc*iaөT Yx1CesF-@!82JY?qooo|>?cIM4uup#z}s۟09v+a Jefm[NaocYV@Ei5Ȍ|2BLq?12 nwhj^AAMS|8ꢬ5`I˲PC /.h=BJ!m߽{zzFSܽǟ(8}fF6j]//Zǁ39Ml.Xg1Ff6ۋKBV/[6m׏̅D1B< 8Bfw?n^_$/_|&J)2qu*e8~{1P]ۦmmWݻ!m.}zssSThfB$qerc<%`<==ܼ1)n}~qJK3O`b4Mqs!^^W7m_twwkp!?~&:WüM@ʥ\d]SΏ`cB&D3 VnJ):R1(/\3%1q`*mbY<(gJX; rS3(D(11! Df)xTB@  (%P!D<ˣjR\h3*N)z4B!R !"]552\އB LpN HDjpfPOBDўe`JVfLbZ)e_ yC$z9%È # QpVHe!JlIMYp! A1Hƾ2S!H 98ĄD Vc& "1RXg4x؞Nk0Y.-e& a@B# ! .0s&0"1xγH)â,qL)_eHAt˫K󈒵"onֻ߬v:g x6)e&vRQLhpaj?0cIdn몤jȲϟ?[_<˳2&H)6!غuyVqLpm^8AeQbƴ1M3l6IQq8v!;j5kn+b6ci@bCayy SU/CPۏ4a6_|]..(iv;eͲLfU;#L̎ݡ2/wW8 wn@g߾ RZ˥nX#tz=?ͫ,BXΫz ˢ(٬=8crqu˧OU]c?9W>닻<)3ɹPJ9 nceAM(nޤNZB~ִ_l7YQy>MJk}!veMZ&~jve=?<2&5VF_> Yaqnk!,u5"vave0o a|4,~eݶf{X.vo#.n7SJZM;J s1ffma騍 ,z?|xyyDy $H;ͬSOS]eS?=׿~[c]U-~\ B#pOj07LOB!Q ֪~ I.+)EQ4`l/(a8oa0 *Z1Gk3~ʳQb[&\A@7 %d&J)_e~~y̲@ƥ`2{]ܽGF@)ጒn8~C|{Oyy}T$3QH.U^ՈmL `P:TP`?6aX:1;L0"d0kgJq1\ۡs^hY}X,w epRf÷nO=D jgOryuWTMWJ \J1jrǨ~!yڬ{B$ QY|zzmD؀}qEzz|ݯO!Rmn_d.,?tsp(ˌ}UuU pw.v'eק/l)yavM3d岨Ɍ؏@=r NЖumf/`Dfv.P|2hm&m6[44Z /|V2 !4C ඞIVO󛻲n>dtOXު_~yhwZhgY b#.n[/cHc 7xX`F'<+8s1(Ψ= ֔&8CdY],\hSZCwtJo)%ݮ(3 TA Rc>dx^Z!q1/DD(@D&9oQN=xq`cD  $XKh3GwκpL^`Hc=2OI^#.SDhbbusJkJ RQ(֢89?2uApNӐeP|oLiT)% 3:y'ݡ"c-BA8c"Le b&)1qT J8q0R88lQ5Me^zC BCĐ c4䁱0fLH dy0E !B#˝Rpθe U3d 1YYWOOO2ϷmӴ/mUT|_.֪r2Q].yYϤ HEYڪhj{bRJПz(?`cq 䗳˙X棭bm3)vOwSȤ W7!IM\}3qf,Zw]T0 UU !B}L)lCxuu!Qa>V15̃w麬 77?v1ge Ŕv $hM1OhjVk#yv$9Q&E^ДUIQk9O3RV7m|>#:#E)E?KEQXg0[\{cRZVuQ!f{ss0y]=Syo~Rzyya>_P¬5þϧ!o0Zovʲ a@8unTfLdy^ cθH evmp8`L!TyD`8{zLJ4 $)嗗WáZֳY{qqqۿ{N)彝&3N"m[5@~꜍PʴW_`BfR& $8痋iO6-^ʢNLqTٴ8)30ۏ}/iŭRc,C:z㜹o׫/E-qn0fj(0p"LhcuQD`Yf!6M1 U9| &8N2imXQix8z{nT̴LJEQN.JSP.T4;oBЈ2i!QHɌ Kiva<sgkN !PJ%Jr"BH魥jc_U X/ϏsPXLI zH./u9cK3Re1tq9 !)"Һm_nfLBnʦ2/JJ}0|kmYg%>Ǵ9HWW﫦z~}”EQNÄy~^޽o޽I)E)PJ꺉!uu]UUOeY6u߽68#׫Eq~~Y\^,f!s)E hjɸ !We秇$[m6o_Z4!ֺ(ynȐ0.n{tj>B]N v32mp.~#|\cJ)iUUǘ$w0ΗOOnVZӠv;i6wwm{}isY.l@L\.a!^..z]VձRDF<;azS,x<6MŘ3 We}30c !. ]GF}ݾ/o߽/Kkϟ~Ц8mb@Bjl6ݗoL0qا0/jSK0Num 9 U8eQv{cQU]7jesÔRlnnnߍ}7\޼||}Lgu@ a(Sy}8\2eQUvCm.$C M\M1C\J I9dD>trIi1I)dBʄT2aH 3aJJF)d3La$! Q!"JSLLTv")@u a)̐A52&KDzi\*]VPB6OFw6xg\JU\XBB2#P #L (VXD JɃmާX 9W+RUJ3cLiP*BR쉆Ϲ !8eYN*BIy"B8=aE!Xନ*F(Sۘg \K93LPN@ @ g2&b&QFsIIc)cQJ BysU 19;?[F"%BqcB=Wҿ(]zs%yZ+Ld ~GBYشj3B&#]Ɣ˪EyR_~ }J9# { Jn1)) ,LN@J r1$skǜRQ^ yfo2OϏJMض- ̓e)oKE&d,xysfG!>~\eEUX,!ľ7A~8KːSw[$8cbv.w O޾wr 12rJMby(ܬ?BcٹV"/m.6:uQʺ~v~}QǧM 1s.vieQ?(KHPV 2*c^k >dL^)ɘv&U6!9ڱ2cLaSPLQ$P ]18"DyƔ3f$޺f! ƄbT0Fg ) i֦B.n3BZ/R; 9rܹYB|uw^u=f2!:|BV_>Tej")$WñJ-cDK=MrST]dr`uGJu|sxyu}x^bDZw?{B!P!4MUp&Νs)D)iXMv\Tw\k\M۾e0v0gg8|]֜1Ly_f9LeU BڦqNNow7on6 ΙE}0V b' !11a`w81 P)az~|:lhOdPł !BTmEtA4Bb&BLYYasr]91I0Rj @ .9& >hSf)NZ)?Y" c}TJAFwZ).## 2)dF4tZ)7M ?(A!#ycp<=v@PH8cdPjF)*y/8SRL0͓#ysS +!R ΍u!u1*&TZi (!()蜕RN]H\4$\Ca o12R.UBi8rqUj13rR)ʨs(PF1* `tVk@r`'9A \qHFJi1B40Σ3%x!5e]ڻ0lu-Mxuywá(q(!lsb8wÇrRֻ]/: 4 k3m\+&lh_כZW}7Pʹ*ί].{)4_盋? SviOؖ~l//ncJ4BOeY;m m &l?2!4i]{M?~ivqJ^):Lf'FqS$"#Ǧn3uR/As΄R9tv~ !w?)*Ĝ|eZ֫%p<6ƨ2}2[[~b}\*Dd*(0J)d&S9cv(%v1ʙ6nzo=3F0c(WeC)vL;BJ)dcsL1P2@0BLP1Jj(Ә!S. T)EJ(g<BP.X Np$W9 Ebp0L2c)FJR*3RNYP.əI9c .( IକRy6EɸH)f!x I *)eҜa; !K;ǘrF$@N)$LbY%3RM(;I4 f¹> 89S$@( Ţ*1J &t TS8c\PE<1u0D>z˅\q.R1"%,# !1;KHFLӄ1bZs>`T KqBL-ds:9yc)y*+R 1+U+%!!8)P4Rƹ(M'bRɡD1fwJ%1vCNBi.4"RJBpPH]QcH}4K&8g4/@R"f̉s S IJy*0ˢn1bjBY;´}S7ZnޘKu IDAT*Δs` XUewƘy.jXE|rD _u]W0?{'TR<>~/"&1G!Ңm !vr<Ejzo///]X]ׇeYNӴ\.UΈ)u{ߝ;bK)ŊHݬ]8>?Shmn6u]<>>mBn&=>> !7w>p:Nӄ@ba1,H?ojӤ]]juu]}__=?=tGR],=ww__SFUF0#UX6\ 0JС? >iۦ^̳}z~嫳;ԺZVOϏݫ6ǗgFmNHVT[|! v!$!<GR?$8ñPw~>U= CaEB_^^n^>?=?b$oS+5cpsub榬*] H~˗חUӼlwM""2#T^_ !&BhBL xuuKW1nmKWOۗa?=|G&~7:'wǶ1n|,|}y>_!#3>94_G=<1DsFH3"dB HRcBD 1́RP!u~3ľ"Sb`C c$H 3ΔQeFgBJOd)gL;Dh'LD *23}?zO1 )? wnGiǘBU֌sc,M08BZ !cbҪQ)UY,RxI`J )4)EPW:9# 9[ ̈́-}=TZkF)Jid]oxq!>=ʺ0kL18 uYU9LөwVsgrZ=}=?_=n\$1jP%jlWơ(4NEQ=<|$#!,4YeV뺮1Ɣ|>[Ӕ֎O[7ϥu}\ڕ,ʧmx$\}9vYUU;l6"0NCYӧs)y#z( }yY67ᨔ9_~'a<16 r}΄L~Y"ZMŒOOʘPog%J/R7λBo߾뇲v|Iһx}ƙO1)v4Eqw{{sv9bvzx漝#cy-d.%\,bL0M׷oa̘;EB|YVb|}sBې07?p$;Y.PRi*Lj9/ھzxJ1u˷~p_bBY|I" <3&i.u'aSSWF3Ï? @Oby}}\?L}b}}>v77fD @&uqgUa @SLr.L)$΄P .1y b(t cpQJOPs3 2 bS5@)lY]kPe1t,%$̙4731:Js ɳ\R.s $$sHks3~ښ0ΣI9GƁ3N@1FN;(%1Y/?BqQ OOwEiiWg,yB?_?184{o90Lva2DHZ l{maڶ^<=>{6ݶ]T']j7uUlu>Sp^x˲,2RXJ~Ǚ1"2! !c1qt0SJaZ0x)a(!oo(LiM!-+ pjo~/?UcLQRU :S1ƶic;@~x8?z~Ϙ˫~!;ƈQ8u>Lr]?).j1&ٔ)0l 0x)͹2EYʂOeSq0$,g(2aק| -yi”KWouU0.84+%96aCCYߢ﫪 d"@ekyٺ]蛶 @ O>E+ o:xqy!c 9[W aV1! 98tmQoqoQbLuUyԒ! \y1y^w|Tv`!fJ@Juv]w]-l֫O?bm{~_^F~תYu}Cp9J]ei/0_on..릙S$)a )]jK~B\B#%B)c9'2J!r@9㦨sJ)8NH>aRkJ);)S!cH1\T*7Y 3)6#a 2&̙z;OPΤ 1K@Y*CDL)eH2hwBRJW5fbr4@΄tǎQABʄkl@! 2I΀ vCI)j΍O^H8QBcl4kŇB!z)lgDhR@EiSsE?1eanZQܜ3:v% )d9BXؓ%%9sR%r{)ʔ 0z1 \ע4!4~IF.%Ri0YpȌf4"9$b3geg1뼔JhCRv"%'=ţ \ANcd (-hL(5ws#D9a+(` !NWBd 5τ0&(qn1&hیh3-br~S#iRBRbN"$"bL0YH̅MӆiB:9O)Iw٬8 rVEqb#bE'rZVEY觧 ʵ6agR0z}R҅:\bnؗF{ 3 P%!jȤ0UJ)%MnMx7+#GHXU8eY9GΉbSyキJiiM?Vu=M͛BpdB]\^|z?Oǡ+ɞw1D4?l34"A4FgB^^TBj/MUQy;kϟ eZ4ٲ_}Mxy~ݲ]}GEU=b"@GXhf;ֶˌ^ARx/te^9oEL}L1a]/zrzL}q?L>plrCH?}J\~e8iRq쫪Y.֜3g_~Ryqy[_c?li{q~pyu~z~>;LQ_?/VgHZ(32qsfQsfəYd4)Cy,2qo kY-ZkBHCc:.{4p(\px8=UeUxap9?4օSc㇟wwvۏGB`iTQu{u}?Ԅz?EoE9N#KBܴ \TUQ-W].#OOZ뗗"_\X֘jўͳC.ƌ)"ezIH0g~w{{VeT]7mCPJuh)!eQ*|0ː!$,EQatQ"6}UV]7̓MbJrFhmSViZ_0Z/=(-pvH9 )_\HBp;;[sQTgYHݽ!M}uwow~ |mĘ72@2ep2BR!&T&48W6gyʔ1>O.H3qtۖ5j{{'OfeJ*]X`STzaR( (d*Y׾]^Vʬ"1Usc<1hD(\kQJO4-JQrBRj4@_n(EfB^k(ek?M1Yc@Yie%%]-9q6(LXRq30#^FyΏJY"rVBՅ&(0_mL)H(y(4NӤ J5TZFh2~fcftvq+0" RHbZ+28 DT/$fiB)PJk JHڵZub֢iw+QJ )4) 9˩2Ỳ4Ƕ퉁kZ҂t/XIMB" QoPk˹ĔPژʐrJ !65K@qRSJ/0HIEMh7d21r)u9L9LBy/ɚ)cRRJ*e4^ZbJXTb !mYJ99르 0ca.9 5 y2JJ%iJqa98mGfys8~ݬ8]_ Tùm 7tӉJ-Χ)h亶_z8/_\]?==^Gct)t:5irl~՝Bu=\n_(/ hk9Ikw2ybι3zx>̧onnv_},kCM"ӓRqyDthz|~qӏri65ږRnozQ)I@-Rju<}/Ͳ_4&T7?0x4Oq>i|<=/5a߿|i<ZjHu VzFm:7Z.n߽wv4y">ht:ʹbR.)4sa_|B|>R(| ds{ ~ss7Pl-Çw}XkN㠌c1GFL}4ϵd>~^jJ1fB<\8}kb ( p8{~z1}B\.w!LaBJI1Mos1MsX5Mπ!$!EFk}|>#\Nӛ7_2B)s{Z)S4m}Yݍ@<7!&Qji\')7MOMqobqRzon8ZG4}ۅ88Kr<ˍyR^,0~!)Gs.ydNmwR|8>w @ IDATm72_NeiU1.<a}nu"W1|h05M}yMRoVHJmm߼yRyrYV1Svƪퟟx`\]y+%~52͡ms] |~zzRT W~/WWors< :Qjm+?u]<J%aܶ])q8voR- c<;m˧r9R~Ţ;w_~8ƵyXq"*oc:Nbx[vqJZq9 4}}><~Ns`b2t=*j|=mD}Jt:xlb.y0֥\J.!dӶ?{ߑ}YQ_Kǜ;8ϣ:|bJcuڗZ`"M0L|1\!(zs0HX;)U(K\B53e|-%\J(HjsR\DD1Ŕ #JcR*8O1ZVi 5T)HC+P%c]J9(sei,t璥(L!ZyFS *eSt؜ BHE 2#jRj-1$ \6ڗJk0OQP撉9L*RB(SR3 $R-y4E!M*X(oEJi]E:B)"!YJE @I V$bRq27mSR e]kkJ:!1*ҥ92#FPXP*:vRF!ֵb@PRY\6@L1#ʹ)cDJke=e(vJ'vǨ-9yO̕8#%L#*U9hpFHq"0A% jrI?V:/DI+i}oʢĜRjp\1cyZYj}u>?#q|+VkǏZ4/xj8]F )r~zviX9~4כqʘ45J·5)sMv* ǃյ sZwO]1K:輻Q 6- 0 )X3%2X,:t뺔pheumLsuOO/bX/Ҵw375h{8T펈s᯿y۴3OJr= M<|9nRVsdhvΙ??lajV7/OOaִ!̧I^+e'IE,rg$9O3UfJ/ xΥ:")30b d%f"VB9#aULE559R>M*icW1M!kcQJ4N{I<͍n% q1+dJY)]j5ZB+Z%QQZŐQ0*Pja(TwRd0sK p:nsJNk*6}!Z+(sN90gk 5ViPҖQBx 9B+gl1ƨR1@0MӸ6w{?3*1m+}Ws ͭ+V:P)T{4 Zrj1Hb!DD(R ZԾKA4i/OYd2PF br=)m\n|qwRR h9hۇrYJqVR8%ex86WK{9VSi4NZ)q> ]!7BHX6צtaRz-ҩa88wݢm RB,c6FYv\äNCJm["bUw>77/>sJ](n_.WˌpJ)\J/^y˧\C<!Wokۿˠb.V=#biQ5x:bjjP E8ߞN!鹖2Ym4qbmra"RRL(V}_+J4mE0BK )N /Fb r%d&TX(cJ5BRjfRLBƔ'JT~"pE9XcPIsFYbNT3VzFt־4FʙRR3ieJN5ǜr"JsRI S(c 4}cLZ % sۯdI7 RTIj= %~ΈrRJZaJ)˕!1Rz`xF`)U-ƚc}."Oֈ2&2T.B8[sF%/3ZKS-HQRR}\j@P2JZ[)ZjF)v%&Z L<LI)Jjwi]#VA)iBKXJz%{JۦBJ:1)P@)GcMe L30L!@*STb!ZJ R[0q0Ct:x7RʷOϵrFv cv]Vw/ŢbDt:bJ?|YjhR)G!ki}~ZKD\}~<N8XkڶUZ1OۻqV_K1W%c.ii_~fq\ t__jXpxs{]-45)bw{Çwo/~Cnw;%Vhv8vm9>==wǯj'-өT2i>N5J޹k^H !q7wBghiumժW}-<>b8\Υ[k51) t%a|K')4:W׋OAxr|Z.]Lϟ:#%8~xQl[; O3r<0/~еmZ0lV=U*1MK8XJsPTmJgDC)֊qz"3'A> #fԒ0#$%(9! ̑ qNh sC@PP\$TMà15Ox`1Tcg9t錪v IȚJuxSp|*y$ (6BJ5 X"sLibDa gcqf-<Kd9ȥLJ~Y\sLCJG\CڻIqA{_aQLdgbTN]T(J9癁)8iRrγQV)BNrJ|uݍrݽb(8~xnY:ܾx{ťQj-o!OcCMa6Zqu~=N]X/ybs|^~jŋfmsb/^\ JPk=OOz?LC(>0 i89_xmùq/J4iGͿ EK S^WѿY ,ϨgӋn;~7Oχ2(.XBל696$mAm==.HH)y,%o?|eJeC뫛fM BNYv<hpط]'n|{<޿ǧvu]kt:|֚s-әh%J~s&>[owf}{{JF+J7]Ӯ\|_(޹ZyJ)FS~v&draxRj_i4fߖNbu-$*׽rY\}-_Ï4J :œYjK UʅlJ!"B)A&8No4O֬! *msE S9'c 0B-xƕ\j]KM!XjbV/b sPKQ˨4ĔB4i$#.iB{D%8WbcbaQj E)V:cB)) y1`WWX%P)a JʑBԉs,JD ?R !9OOo:|:4x^vͥTJ6K@H) ۛNo:RJ \K`U9\ZJ=O#TJìZwT R8T7M ,sTJ9okL@aDPB8vZi&P{/K`m 0ZVJ-J)/H\ka`%#n]ޥ8Ha\ۂKI)RB*1]O朕1Jʔ##hB s\kQZK*Q!.d@R1Hb|{gM?`s(εR꒩*wmWsBW/sE?Uk}ssSkmwmZ~Ak˘x\l|BVσXbZ-W_FBjRJ J~'g4BH9aoBYk61EJ)ustniyqo`HqyA4ZWoׯ>||o~g\e#\78懿১W_|!Q?=>+ ^\mS뫗cIR/׽BYs s5XӤr dI53Uf.5"Riu^;SRd^*C|$7 (i{%m-Ek3c R2LDĨjRrH#J`!TJHmHdcՖj,pW&߶ iksIs*`"V`ise-7&]trmWkuoFPH)JVw$/6PSáRMQj79y6eIGJZk]+ct:o\w~֦5Mۤ@DMx߆8Ő3]P80 aߴ=0?>~z4f77Wu~?DF.ZgF1c*>U\K)Y@9E]ʹhcDU 睔HsB"o4It,3" )[Jr,"hx<fd="zKIhcRJ((̾@5 %M1\V;o򃾢~5՗dP10 e 4 f1a2b@WewFy0b,]>Q2swXk}iVXgRJ8ge %Ia1BR1!!(-*%0FRJBU('R̗)S 缪j\(dRJ@wRBUBi&tjt.޾|)jRc?d#)3*giU|cB(RFMOqX-p8^_hc !v_V[fvXFBcLƘӄ4M!S~;!ؗj.0$D?E!eя|[7oU!6V[ 0%vzJcCRۗzs&WW72Ql6+Tٶ͋qޛc{B0gOWp3 L.Y(Tx #DDc0 !pԣ.KL…r.bF$ąB1&N1 U9yH  C ɕ1ZF!N看B1 aRN(&leiFJʘ`ԳQBb)yun)ELr)2!p<AreLO!xژB4d蒳RLw{;?RQeUQq1oI M)-J^pY/|RBAi\ .FYc9sX,V0EE1%1iuU#@F[!6d) y󩋌2,/J+%{|||r:c~(12N#!b|ww{jݾx?%\/5!&xZzB8R*uh]͟Uus<އY3^I޿;{2\~XWٿPR\r`Arj}cDR@(Ze=GaB"HT[5$(1ǘf(BT()# )!39PpVkCJ,,fd\"%=%DUUuIC͚&OOZU(2g!BC\ 9CN!JTZcpYkg1sA(2rJ\>$.%I` )')%.qcNQ) H!w^(S`F)\Je\p.)1,w FB)Y|}~Zg}̀%!vP|$D6Zcƈ4Lpi)IĦiBqma}91cU)9ha?~IUVŕqP30NR"XR\$ qh/7BDpPB26EHi^.5a,.ڶBF8k}uSQ)B-h4*"S 8;JRᛛ}p!Nz_;x&g;"!N0|B`O$GguA1%@qWȂN8MfJBSL{(E#yzn܏;șQ)XTeN(ƴ=7W׏OOJ4.gX,s֣`}v>_(@Fۑ12F#BFLO #@ r."备s~ڤy \xJB yG`'ƸӘ0 %kX 䬱J) !t!Q1R7!fʺn_-^)6P TPYR!sL)RB[N1`03>QYXks#B!@wB늲hODaL%""' 9(!gbdSJBל:8}~zΐ!gzsm(yWWW/|i0ƋjJ)eQaXvث{Usz |RJ`ټi~..6!ĄjN!6umACw۪lQl98q\.yx_Rlq|~~~EF0ӇoeQbΛ9I[= q5^b]:&B˜3!(xs{oR׵vvvv~1DL!!&RkwQ>X%U% HFk!!$88lAs1F`N1sʢ8bVUq2KūA)z;m&$qr2sEYsP"ec6:xKB2^ЈpKʲBsQ">-icD=A>S!s hʘ1!J)Qs>9%DEbRP3RJ =M#,T_J%_]\\TX3|ssX.QgnBp&M> E7G{)͚iY@&9F b$ϻ-`rsx( |jձ;J)_x1SL.˫v}ap?ݽ+cl!t}s=isZ 9;')v}?bulՏ^._!l18+*.9'RQ eYT dLE> R"fBH)  )0FmcYBPIJi9c3(c ꔔ)1*P룱.%8aRJҪZ]oZFH98QĄRA O!UՌ+¸]NYK@3C,+)Oт"gvzTW^iʈ`| (SZ#1F!x@"?]ߎ-FTu;<_7& _>oﺲ_43JNQk\̀hCw#ȲLm rVMv& f"qZʨ3NN1pJc8` ystLPF0JSdH(ffԶEQ(; AQE=K@csUpd@!9D˜2Jń䔺d5% s)Q9؜p%8!Li9@Lq8)D!!:Aq Κ3( ?UUj32f޵`^=<~ JEi^s)9efҜR4MwiGzvltOYv1!8!liq)2CQ%|\WRw8 >x!juὫSRh泲(~~ofgLIu|Y[O)ça)PUUD_>_o|A vUW_[R w)XJX1N)ɦ53P ʜ2з| 3)(gkmYyΙ5! |C̝wXC0!‚w(l6JVFQaRHu4!$B!->PΙ1bXt.x8O}NBU1]L bsS#d  FA82vJb.SlYqOF>l ֺSYՄRL #^)% |zL~jcS9#u}zxӤǩm۷o ZlB?bu͛/xWIB|pUռ뺪6r6m|A0nB kmQut]VR(9Ƕnw;=!8x}U(O!ܧOdQ UsY]_]}ݤj(j6[WNTgyoߜEg?!fr !ﵶ)pi.RteI01jSsCqA!4MRcZ;1VϚ)gƿ9c_(|97͌ьs>v9R^Jcq)]01HdeSXT) !Ĕu'bbr!ʜQ)X]0朽1Fvq&)wGFz"s|.U"JHUdB(xirӶR߯l(:jlPR9Bl>WRM$8k4i\\,Vw?!XD ]_v[iv;= '|nnPB(="x!z;JO_6*dgb?.ru}}3M:bq\̮?}[ E)3&>~|Y|>)/_yW/w>|.b5)ʘ,e^aT[B)SP4{J)XP)^PFRv)K"( .aAf21c8RIXQҺ(Z[Y{_uԽ^ %,DW1Ή3B([!0!}a1s0NPP!Փ՚QN ,j $H)ec|>˲ie 9PWzd1[o٬vQa*>`VKcfsU.RJw5t|O11Bw>h̄)B]]ZgJl!U4E1);62FX)f8-"E]zOcD =vBRoNZ^]?^\ŋW1J|/jN|BrS̗R7?a!3W/zlsnh^B)%(AJ _> EQWc;v(L;f<;;' /2-r1DaCbE)Y 爳M6!&4/]H| = Q"V"354'>F/75FQLb'#T-d G |D /ctd}oTXobBH*r* ۗE1 1`PSpf*u! PFɹa2P2J8D()\1/TS6HȀ1c8gZe5L ܼzAO ۷_y×XLe]ׯ^ !ι?^^^/+k3d_m^=>$,7Oχ6PEJmXzc!'?c77yS#İ=cȌ LXqgM]%E^CfimlUYa `@9G]T$Jфi!Bb)蝷p\U2C3dQ'9pcHqE٥`n8!!>ɍ6Y͛e"BTsmO;-G@))b)="Ҹe3"̻)ÿ槵J|~x:}/Cpyy[k"F|lr*%G(/2bO>,*Пu]4bѶ10ʀ%<#w(jXʱO9o~lυ12] m㬹QEÝ>U%u- fMNIJB KrAGOg(K<ƈsrCrؘeY 60. 0)R NINa!DRPQr4;Ug r#J 1v݁P`T0\Lv* eT5e'.tyŹ&Umg@H)Q.R?;E"g֦#i8677h5C׶ubshJ YMG-rQB46Dwqq^x:B?Teh9쟻㳨_F1ŗW/ܽƔzbonn?"s{֚P\, Y !R0c\ߵEYeủz6cK}SW]{pV70W71a. Ϫ6=Ln/ggg1Ot FP&xW%?b&j s!K.*.+qQHCf bzS9\{@1F)8\ !D(兝,ǠL %i\3z4tG%H}!3gqRNE7E1x9%sʙRD0g%9GU)"q {O Т< 7X;R $ydL)xMQ-(1EF!dRN|8ƸʚsW ׷Be,(4v`(Q?Ymb|igY\΍ :ymK#BHk}}}ݶO)L1e/޾p8V,lj`|qqA#8ͬ,Kt.CB*m&d}Zaƾ\^c|1DkmŢbLQ׏VowCϥdg8 BOQyχl=SU/8+|DG黮_OϟLSB*Fy-}y˝su]4aRY\!DmۖRZ2 18kb1M}.#F[!fB>cak E#D f"XR8 ֺDȰ^oc?bכe;ys,%x\Tc s!9}SJCi/SF =eY8S:cYι p82&61if՚2~>zv|7_AN~/mƜ/_\ ֙Y0.vys}}B{XB[))#tvvvk'8B!L'8|Nq`irh\l>i)pBqƂ)alp>&BH c ‰c&aLTU!@SJLU 19EJip*kB@YHci=QHF[g rZ(&0 kK0>TlOqT=ٱ9U3O0b!1s/Nh"!ZLRӷ#ܾxvt0گF6X]<>F=2q1f,9[&h4eQs?|4Y۵e—lxF/_nicN!BU|7SD}}2MZm9;;;u*1c\G 䍟8o?u΁s!#!(SO2!tK)uJHJq?BeS>30ŘX.V!ĜsksR!!f#B6]Nާ1N &qtz?NǜC cL+290%PQE¼A!$쬅0ZC8x}NhQLbz9$10EY!sm_a0O))9__>},$}|WzLp3o[}}8|ngRtbQ P!(UI)+PPqEa*Qy)G}@i""@LpJz0ƄLg,c3!ra# N!& ,J0H@ aDN)G.Ŏ?MT`r}uB;(FǾk:0w ZUtZf\1>Rj&`no$rƔоﯮ1:!4 L}N ;wwwEQEïp~`,0?}!L.6R;䫪HwYYLP(u$J=??],fdm'Vq(T4jizry!9;;;a@i23B{? ]jYVH(0rFҜs "~fXLSiqr @Y`DcL4qsNڲrA$BpBpN c8?5'(8nqМdiGB̬Ǔє3(DuɻNv{oN)q&/,!ly4/hB8"84C:&R)B0RR4xcN=ݖNGnS|>_>Tm>3L%-Bju_TMF{];PՊ2bq>,f !i"1zL Q 5眭ӌq}yYH-o' !WfV1NՍ1ss<=§ir>Ll_nm߷\}]p0C{h="?ab/WWӗ헏ݝà_"㨧I]]h4C<&; Ym\;PccrsS4 RﷳpF8|j8*TsFNY|bL`!ac8LY>PrC郰~}IER:V>XB3 Ba&(1fLX2#^rZ3U( ,xEEE`9%8#C1-1&B3&a}ugs!Rr`-)EDB?e)a;o ]Yq;~޻i} vo/n~jsʥO)awwwײ6ϟ>/{5N뻻OeY(%s{w}߫\__ Lz==i|^)A)#@"?}TEc&c.v~}} FP$z㨸@!|^<=빵= R cֈ2V069#x)L@YQa2 @SV98oz)c<8ɹU vV*Ld.314a!$D SʁQʹPJ5OtK!a =cQᜋ1* gqN'S+BDJI `u 9gq !eg/(ƔRt9#JFlcd8_FhhJ8,))%ʘu69g=:c41m[H1"NcF?e=&(v%oͬf>oShOCr.(Su=J`c֓ nucF;a ɍ5"oc!gI(3>{_ ̖9gf6#SƇq8{oT!i],c}9:;ic􄋘qyu/nn%SϏRճiV̻cy!dSY {!J35sfN~_tvvvk}0nq$(1g0W!#1TѬ(璐*% Ȑu0.a΄w^2|BJBcTTK#d$uX\&(9R)UeJR ŝ9FRdڔX\`FkB pAh3Z&ɥ#„ 08e%y"ec QLFa,OC)eJ)Kj37Uj-]N>ńxSrzBwyrQUb)EDQ*hl6>:s,cb8%=;!뷋,Kc,g%B( c8ޝdA^ۯm2+vڮٌ X Bqᬬm=g_vG0_FW%} oX\_mcRoS*˗_էOJ)Kb y޼~]c\RUu&ay8WBsQ?ϧecFʜP9,6\kUrB("?}-솃;jUX2hrNƘBӴBjBYL?geR`N{ܒK@sn4))[o^Tw9jmW\Hܓ#p}]ȯ5uO12VUE)mx<>ߝ UNd;b %PlJafĿ߯smj{)4 m&RJJuk!u۶!t:5uwc,@.RL_6x....~S.$¸̅,E\ #E0<B .sV+5]J1F0[ZYpڍB @t0 PbٔRy>焜 By^τ@ !U溝2#bF`Ze Qʹq`Jisi֌p(|ULU%l6x9XJ)tU)%Sb!fYBUU!\Uչ9^]!aB1-"`!,%zs/~?/i}fpm[R몪ڶqΟWDUU~så#!^zN/;On1fYɯ~+Ft뷯_ibiVx<㈈JV~+l6G !iYyiS>Ř\߇m]1dww??n뫫[B!UUݶK!]Vxd眘 t\\\\\1F̹>HZc湮k%c䤕:_:I̜W 7K߮1R !T*S@Js.$=_Rv+b)(JByrY<`ZRJ%cΠmN7]RkmιdH)zoM!>[ ]pO%99W ds9F87RsWι:J1wH)c2Br)RH3B a/8yJs gJ{)Z%G)Xo2; yAil6!4ϧA,J4MOim۫$K?]vӏ_|ep~sT ;BHJq@HS]U0y3>uYuyOJ"竫z}Xk\߾XT'ӸĔ N0!&wp]\\\<_͚Q@ٜFη%,9)PF(BbF (ksscjuAQ4a\cmTtJ0h*ph DdbsJWTYX `Yh9g"t"%rrdGR 9/U[N#)S4'1UݣSB(R R%zLQr)fd sZŜ2Jz}L A\W4B"A*d)󤫦i JӻwUu^Qw12>Hz')n;Nf3tzuRu-? !Jׯ4Mcu.\|~ SZ4mO\pB0 ˲H) !B.|qtӇ<.fS޼|~I)>2FwR4Sݴfu\]]\ jArƸpsqqq)匉R@AFc;?MK)\IC9 )zKJ0KʁqJa Ν5B;BX9S;3OPw~RRJ6#N#TEF\KAN"R``f1 C1?h920 Lr baYys1)s6x"m{^HRzN}Wu-89H(?k?|W~WWWWOw߿~;O#[\ʨ1x< sZRJbBRZ@) @bL GVBr.1&F!=dPJI%JɪubU9NR8 iR\6MCB**„۶y)8 眽s1!Rƹv8W)cB#dH MP!* {002OH _oa\s3痔ӹ8k8%U[ )X}+-˲(/<cLPJ|tc)s!@Axsl;Hфք/eY?0ܯ58O~2VU8u]}tusNmMǏH"9;n| IDATzI)3Fy o6kylN\ܒ4՗_:[m6^\P/λjs:e1ӉkVH\BRʬ,5uϧ*T \r.HEB6 9bHiƹ1dRI1B+PǓRڪ8Ecf^IΤX Qr&{sNt.kJ)ˀsNF`ML1$g8B(uR|H P|ޅ%`! De[@*!ER`K)BY73ggmRpq.?.,󬕮zH)|Y$7qׯ>K"UwԖy`J*O-fXNxsK'$(a9gW-" ])RhxJDl 1TJX%SJc6dAYP{y`Ι0%`Q E)dR)BHlތ~ɘѶOMD$h[0CnMbk.ݻ뛫ڶ94}BHv6ć@tZ1Ə?__z9w.Zrºn)uU5a''BJι777狼mZ6~ SJRʻ{S}OO86MDB eYYaZ)CDBqz_:|....~#"u>Ɛs}D -JkD1k,4fBCi !fR1fldwzDgMt~l3N%B 1fM9!c1sxڞP BQk-'(<>>TuŹ1 u>xjw@嫷1s)@/]݁@1f YcWUYrIO]_0J[+ʕmrkt.m[!ng\umUC[ Rxu~LƭDƊ#8lD9%, IR4޻RBwl(@J1Ty"| ""\J!P$cRWrIw&!(ΎYJ@)%B%3В@ȥs@#!r&e[sV̀U/f)=LQ5f1IYQ!9;Zعxt)23LJ)Ő3;3{kG|BL1s֯[OyJ& ή޾bw?~G)n(Z$\)YJvavw{Fb]r5Ϯ;sm[ֺÃR:3zynn^2'1۷5q9)|ۭ; ݽTx}}?Ŕ H>Nh }Lwe" jJ]sqqqiyS%C)u[)* i:AP4\ "#c\\!RJ)s.S!Pe dݗRVf33BI@Cr|B]RFYU R)p !p)c F.HQUEJW#%JRBꐬ@)%4X(pN,wCwγs|cJ Jao$#_m~V7f߼eRy}]mo^}9%qcLi8j}use2[B"~+7^mr)[ ;ΏS7We:jλ!ԵY亪Obazu{hݭRڮo &.0; HtuߒdFuΌ!ݤLkEJesp\\\\lDB)Ɣ AbPb,.R)q &眭wVJQHћe Pۛ*ۙđw6e40:?g!D;< D( -k]5 < RBrΈ1B@p1b9,IZi^fL!f}ͫvJ`m*Yq& U ue Dm \W),B\b&'UI)( IQ bJn1GDTJ8$3tO޽|^;kn|WW/޽JR0Yqd7Bc!΅s{c$xn^8wxyV4oqpmne'a8-o޼ ֛y@r18R?v?=>>Nbusj&%9EB!z(2!b]Nӫݏǧ٪~Zu㌍帽{#PisUUR($O 5əs !DHbd2 뜸we|0R8:9Lj!)i@!$r9y.RjO'DҺ$ph\\W_ ތٛi6!AF*loZʺi1(RBR JPFvt\\\\\\W!dJ RRJd.E[R!}N{JJPJ^H׹Ԫ\z/}MGĶm@SQFߘ%Ji)AAYpy״-a)R9'9c,pJse n;IYLSU52>/#ӔSZ9LI猛}Ȑe.0Νcyg %B첤 R2\fqNu,)s^D_l6W~jU?!B(]c(%#-DQ74DoiBBu, !UkcL0qM#tmk%, ֫˦iOcZp/- ^'Vr!|xmV+ktnnb/^\mvWW8rQQp|a((%E۴17B>܍I)JS,K?_:....~? $H DiiPFK1,y痡k+z!D]w3JR1$,9R΁МLV0*H9 qR{]5'1KUAJ3()r>xk$p\RJBIds Œ4.loiBȺOm< #D !)0$U!,1]t@uۄRsyTiI<J,%2*24>?}8iXF۪M绾?|]!XvO87RR*9.kʕ2FMǑ)ɪU'%+F^!N͵1^)}8( ),o~-^c?},7/7jӇoTU[iսyf8'!T]7q9L>\~Dۋ7B sk 3f )TRBIU!4E*ii/-%Rb\B0 brE;D \!R,y9VӪOGq8Hd˒039 Ujb)P"IV b6ի&+[MC>\FHGȁ$WX1@P* ŜcE@] E Ah RraLz UHY2w$Ś`in7ֹaR/1Ͽns>!bTaDLz1!e9y-yyݐbgDa1RȲBAu8VͪIf=QR%C^ݤȚz\5mE)yrkmv2}~Mι7]㐂zz>z7k}UU]ߕBRuNkq1CJUJj}]2F~蹸8313B2B0LV}VAW/RDr^J1.P el^sƫ&GBk8?k|<\^|c4 z5r)RBB1$<#$b}1 {GR湤%x3 Ta:"c 0.s4r&P(c˼8Ҫi%y@µ1F) !|?RyE۶ɫ I1wJyVmƧx\Ow.ɺ]ouzOuů Ӱ uӯ:B4 RLz8CKQJI)nu\ӢUc7}?oGZkJ)_}Fq /-#Xj~bYa8VZuD0*VsY7 %{_Uu\...rʌ2{Đ çN8J)J]1C )sQ2B Ylu5͋!r.\êVpzJeJ%;7C0LQ*)EĘBYu@y+J2B.bO{Nmz&\̳[(9'BPDDL)Yc fJ)R.ss-"~T^ J<rg D:%hVgD4R)@TZmV"]Jd$ctUij̧R36 E撝߼iz)yZ\rzC)m[+-B'yq|z8Dx׭VC)AȊ3κq~&t_oOnP|{jWomt<}{z4_/eS1$6U}Nm\?|/f]ʦTwU]rSXx|'ko\W\e>~ӷ>q?/?ݧ%fS< >@p&%Q4ST5*8?>Vm/SJ<?W:0J<"qv]]3@9_%JS[%k-a!e4CeICxE8Ht2lX|Tr^W]\ެOI|%8.7zJX>P 0ŕV}ټ Q &ư0aIjp0.Dʙ e2E'K!BRFIN"h5jiBt}W3M玜G)9""fM`,t]7T*t<֛ve6Ms:}14jW՛7oyǑP4uFĺaP駏HﯿxqwL}m#5onnniqB8ߟ)N4SW}ָv}<>L/cu]__Mx෿^MB| a>-ǝf^pG6p+K=2MKϕbV+f H <iW/YY TϙD2>O].~z~B1g@$Z| ..γcq[-k:{KPJK!4&b=e^%XUV*QME8. eqdg82$4$bB(\jRomN[}rV U]WU%Wea1cM)ꦡ~< &()F]ל+$Ƥ) + AS\JYNEmqI"AugRid,xoBr*)eRj1 B )CD9缔H!&*d"\mJnJR !gWU? 'XS(s"qp?.y9~$iڪjvL1EeWW!ʪtMg>R5M{US,?~Kh<'gy/tl_y%/펧VY׵pXR!>aՖNۗ/ߦD_zݯV)mCUU*CMm71fTvcaUU9_/k2K)(eMs^AAi˺!x(i:#cCH)Eg03W(C$PJ2lr83 XcH8r K)>,jusDR, CBɜ}& |E̡i))Yw\rnYNm:Bre-%![{^ 9Fo5v9 IDATx t]s%ֻ !>gm.7B9 !R@na8 fkQJk,KpΥXB9`cpB(> /ʚ`C^Ww~e%d 3eww? F7]tTF?)MZF02oջWOZuS}p{sx,*o"ƒYNql_x{<ߣn_/=Rj-*_w덮S~%g_T1d~PiNǃ駏1GX(d\Vwqqq%HEITJ"ҔPHjUyk:kLMI9e'9!P$BZ*E6 j릳!L0ծsy \s)vYBJ rNΌkHπu%Rx`,9d%1(a^KYhə< l]7QUN-v*vI>z 咒dQ*L`q6$&;͒haNIaLH 0k _տ!¹`(Z{B2v=M<۶ݧ;]U!Ǻ;S R6KZu޶mU]KU@A4S%䗿_qFzcLuqYz )f{:~?G!}/ z\p.y )yRM#?} VRq >iW \Q% g?䗎_ok),%YoV/9)GȱiਔR%{w+ٕݎ>!"A2j#}}-NiQU% A&pAgvfJǔT%eFhRq1|B1C QNG)y|6ҿox{j^-vx?#y8ZKPO?=7˛WV}>~ k(g L44M4Lꍱ1)v!F>\.>Xj<,p>Zq}et:NӴ\}[Ϋd|j=>>R*)]\2s~\P_|....~).\6ZDlږRc !3 r%j%R3B4)Tι=bn5os0Iq^k}Nx"B@y< Θb(HR .@HiM+2dT 9:3FJW-[LDtM SQʘ^,eWk$P䵒Zk4m>/51HKF7܇Ts.4j)Dkݘg J)1FJϜi`LMaGRJ}J)/kJx7J0Ƽ믿{"{c|Nh2߾M~Z퇟?4JaBыR*x8R׿ᜏy6'7fRn^\ ^PyjO﹔!@ڮi4-wosq΍ozuL i]k0JPv.0)e%DDrK)P''R!cZJ9 6KɔVl<֙Rs\\*BRJW7zk/P9`de !yQSDZ*tՄI(udBR i1%RI \P "#RRiZ软RJR9t]C)ZvrSJc]AsRr.VcL0jwuw& 4yqr)2a<~pG<~iJɾfz qp^-׷/l7&O?k8t m՗Rrs+%$5?G-1\vXRZ_z....~i *ZnbvӔOv.)2.T RKBlj}H)Қ1!+0bLPkm\^W.9&Z DPFr$`RzRGRYJqn}XoPM i"f?ӯ]A~v;Hɞs)4rH1,` )JH-%ekT$oZ_,"BlBi[$9H)XJm,89"TbL)f`f \ a ȹ ><R*>XCMSJ1CZ*)2RMpε9V5߬Y GRKI^z* Ha8OK$:;`} OOU?suiXJr?O'],U9ox)5 &$My_w[km>'w?*&ZCFtzQNJ^]Vw>~S}A Ⱥ_)9Z˗bJ)/7RPJ]JI 5k/CRiJ!2Zr$}IqM()7;k(qQjqZ@%̕RZiBRt%ZZ C v^{_ ƌs9'@D!sΰcΙ̥x;*A"TY*!Xcc9 a=(-;kBJwλT|<3I<><}Qbi|U@𙮮^ʮZ): 3 "tfO%֫_z....~ ԜS cJ)eBJQZjJS*dR3,є n[D!Z @)ijI6Zsƛ9mIRMC(LO\9BR{Rke$T罝8 1P EJzŚ> 48kK)HVHv)XsJVHsRr!JRPRB`G7=QJ{9_JEYNR)R,RJJ0 w?xв)vτԘO۬9d|> `wvl$?ggC,W4NRZvׯ\AyR2L]N"!B+0$%/542Đ g__Fz; 20v3B4>`>ff[I\+aHJfzwyD! B5b)Uf\zVJRsfyJ7B L?vNkbp}}^o JfMaBJ%Vm5`f\B3ҍR㻷}vn\Q&V<~N;JhAq!ɹ@~<==n9=<=X$i^C%)&bSZ/.s.ZJ|})MSJyڮJIL Rk\n/..a0RZ(Jdqv>(q159_*a\SJ9g9&8WM !)GDTȈDc<!JuVBR%JiF)##R( %2\ %CMtrƖ\JDH9R}xRR*P !E1)%H*!4 t Q?4z$*!̅ZDTԊPj#BO)qÿ?v7Hx9s~zbrr}e,LbJ͠ %\tnvq Ȩ)? !>~駟޾ܽxyU_,ț~CMjɵZ87%'Ji@ek%Za/"ZzMI1^*}}}}XV1c'-rȾI0=+$8H)Zfq<jcLv\\\\R;$yoM)&b)ƊDkڴfRr5{uE/Pv"\i:UQ*kʄ\HE֔h $`sJ>]]6&3vٴ+ "O |p~<f kc@%R9BJq@ )dRΧb|q!9*fCsDR,ʶYhI!7ׯRٵm\uR$ʥ&JkN\Ĕ)e.a<V1zmr.۶9K%;a /^|RJ`ͼ*[ēཷ'7W1=1vZ#_9en1vt`LjZ}_SEOr_}HŦ$ *-m6O~[ZuR'uu٬M0xkvq6ssVHO~Bo60OHYn!ɯ]>L)YQ0"%4׊!'ìn@"Ŝ FIJ{`֌@-q٬JtzsPc%#gB-HJ!<Bv Ժ!KX9AmjRBDc S]nM4}<`!dGd/1և0I2GdBJ} p.[3,iDDRjɅRr1QrRJNG(JrnP {_`BPa#i_k<s. qZ~ﭝ<9Sp<6\IZ(%!7}tzdPʨs.1Ǐ6Wp<O?xzݯ6\TfufJ!SU|K߿e TB?5J==ޕ^1<Jf 28 ]\/>|R>y)䄊4i<gmM{&YhLv\\\\R eD3!"%7-zS'"婒\y|0^֜ i9@j)IkgL`\奂s1CL@u `Rc(8P"$3pƢw!$" I V2Σ3B {FI!X3. FFB yCsntXk*5;$ yc̘k 0bgCRBiHiTj-1D\ctft1ޜH BWBu1z4o0.iǦћk0K՚r9||bYKպ\4wZzQ pƽyp"ӑrAhrb"jz$΅H0uZ+'3jY*ɥӤFp!yNՋEY;FIKjZK)RdƘZ!|bLRTj @ 3ۥT."xx !%FEOLe.HKsM5LrJbT62J<*(%{kj)JSER p(7SNFukBER8v&9kSJ+e}TRJ״H)r5JP攢}|pzs@! nrI)Կ&R 2) WZFJNH匧T(RȜKIј)In|R$T81%egkԮmӥ1Z ){ Z-LȦi<;B("՝O1f–`biߓZc@}WJ !i!(Ŕz+Rz\@\f6Z:cN9ՒڶQJcպWZ8)Zjy&3o|Kd0 ƧR8hB,EW*0/8Lf&L,ۜ*( ܯ,ƹ6s5[~깸/!JXTRhIjB,B.jbhbGR,Hs1RH4L``Z%*ɭ\ʔ3Qx;2Jh$G/UGĒ3"& Z˔"*k22RH.1T Z ybZ3$PSD\pDh서o GJ9">'#!< 9fI 2[uMc왐ZJ|jL $@KyXjmXsV8uǐ]ݬwc̥T M+&xy~~Nq:~!\?u˗_|AP4ttX,)y -r<mNӢ_|6=!"b9ό2QX.y9璟=wq^~^1i2.8<!|&wk`e?=APCƄVSZ0)&&7uSsM1t(9p!r)9y.}8 ;1:^r*EdZKJh.U ͤۖ#b{8K)߈P}Z:#9$%#( 8Lv2jp?,l7RJX9is&'t:R.*TolrΞ?|xJ<\0ܴML"phf2f}zw}׿}K|zwޚBaXcNSXiX3VR*qy8}6}\2* ֌8zIb- IDAT[W@hJ5m68OJjjWobGwo8yR{s>wmg JzNrNTmZk,epJ)  "Q3bP )Jd5))P5sɉ1&^www?ixҚ7JRr!B)R EhZ?7)z 0뤂"c%gt =!Cl8JB4foK}jk/OLӟ57o~|jӯ1O/^Wc.iy8cP Vkv?}7/ۮa>|{[6MRΞq<:3!pu}t~-|<=NxJkyΥii^-6<0.BoRK3~⹸bJ 2@-J()e.EEI@$83JNL4PsFT2^JԂ@e.X+1}Bʲ3%RRyNKfBʦͱ.g뗌7qwTF 8a "8J@nU.КJ Tr!9'R"aNf:ג)P+')PR(ޞrtoےbvi)xfS̙y )B}u 9g\0Ɣ֢ZfFR9b Uئi`i)BX7m?9pm^¬1jZ+R_MJw"b۶OOOnG)c,nEHud칔:|x}Rsowwo|zl;e6j,Bk90RB5"sۉ@ӹX2P8ipΘEZB\KsyJP2))9g9ePj BMrS\3"2Ƅ9gc2眼N5iH<瘼l2G+~n~<M\oonEPRV1ٙXǫR뇟QJq\]LJO|~zz"B04v{s:y}0\J]*H&8OǽZ>X99SJo޼ysn9Oͻw_rc2n)#9ߜ΃R՗_[c7OO{2y;.PKB^~1SKA$j[.{%rB[c>9K hsB5v\\\\b7TR0'PP gLJAj̈́RKQB4BAJI)8 h(%!,u >s.tLjBpNj) )N)ѷ "EV@H0i!1ύ%c>__jHx-HCKJ Ba)B{ iSJ1$EpBLg5ݢ_n^+*+R.c Priu7NWG%Rv}RȦi[y4c/ևO)du#B 2d_N\Bb9r5YkgkEχC,RxXnRixTZ:owWW1Ɛr^|{H!B4 jDlYiuG|%?<)) .F1s;gn "EJǷf*R3K)gqT%P.`K)$bs0a4L0*8J\)qНhf#2bQHN#GW];Nt4sָ8kZJX)9)5 %ƘrїZ+bR JS3B xbL)9H "Ԝ9V*e5B8g}V![tJkއP 2/~]O@c*^ 1s͹gFp)V@O&Xvy<?CԵy͉JVFK.%j-Bƻfsͅ bA:۶)~nq8TmۚsNzAR?~P8>Ó䢑n0)x'?>9(yx_V4HC?Çӟ\]V41WW׍n>}BjMĹY;K)rN%zJ 9=c]\\\CB r.)cLj`0ID81I~;PkHs)/FuJh)%X _,3%W΄9PԜR$R(B!l:qXPbM!WSՒ {Ch RIk9¨h s5sʴjI)_|)ٙ+Rs~ z3>唓q8rRov Bd +\R@lUW]`!E@b1i>ǿ}׶ҏ?J)\fv'{șa=x͛7_rRʼm';Z;]R13e_Dƈ3s~w;q SigBJǧO7a8-ˮrf6c/w1`\W 1no8C!Gp18RdJMYjWu~d׿ wm< v\\\\R%GΚTP\h Sm,jȀT+ZєSΙ PR "&Gfc$1isoI ?GdLR)\Tb]K))R1f9Rb!US 9W) g3%1>? m>\L1 !i ! ITd۶_/7@)5Ƥp.9 #3P/jXmQjr 9nE߶ gvso\o7WR4mx^7t5Vk8W=2hI)osfw9I ꇷRJ|>6vW Rի)i>`;V8ֶK7}0Xkono?k%rqo2s䐣i)u8m㏛"]$8 c)AJFzu.RJ/_f,t.(CrYQpqqC @< D "dHXy׶bqpFcJ@mSEJfrfBV!Rƺ1 AJǜ=_#laR*tLy经5fk}\4mZo9 KM1A!MZm[B*9#u*#!;NGt)%tf减>nEo!u-q[.&4Z<}jz?`buiê_`%)RZq&#NImQH$XBi7_L0 eu:|LsY6v+vR2E縷J5ޝطewbk{6~ק2JeIU*S3mfc?h`!()~m7nwA5~=gtAKp'kijp  >Bv۪8N%*@q0&Cםa\itrrrqZQ^$XHJq!PR (BR/Sr`@c!zcKf)]Bpx^PݦTmvApTR`9]NqAĘ8 !!LST LTW* \cZIg"L6(]pBHPAq9v[UbPJ5ug׺z~qc\_3/KJ?K޿wJcvuOoݰoWoB(sǍU|wW/=Z뺮ɧJ+ŀf p'8[um]kJi۶ݢZiB4M3qZ|RiUŏ3&:)#B(%TN nJU- 1nZُ]>''''?TcȥyьS*)E\s#@2Nw=B83rR2) SÐ!+Tgf-XP0ZrΔRJ ԙ!Pa(JRʔR aJ(^I2ƒStB(%o[W3݌ QuCRJ)ZXI0RR>FwE6@1۷RK>??S]G!%q12T(ڪB3~1 =!1ﷻ!dR krP׺C?H AkupL)e@XXlP!w}r!\͛/fZQ~~vY (o\s7d EӇw0Bu]璍4u]B@*t9wuy:_}v9ϘnqbT4M"L5ݺBy98999r,9m0!9L|<<3!s 6QCL \0B1q"ಟspL r هj3#ahbLY?Q%<* 3l;f3w]F(*%<<.yi)ؔO(Sa2f0rBxo4i?oOa7a\^__mr@Һί(~8K)c =u-RBm2Kfa ՗_B0v(֫WBr8l}nt!o\sry8WN0V'f>)ӨgƲ7_c?)mlnѭy<w<; ~uy~\x<3ub\Q0vJ1???.Rq(L[΅pݙ}vNNNN~~KeJf`e-rI$.ƨbDd3#LR\&(3"`*$H DŽ8YԄ)&1_00"E IݤRr0!uhg5rŬneiM9 ʥRۏ#1!pID(!Bƈf+Bsp|H1R*#cBx-hh]xscQJW8p3qls_0B)9N=!իW!:v([Tq B!z8 >}Pw%8ahQJq1ƹ 4E96˦is>mZMzn{MLQpU͹m)Zk0gCS.q")d Sr)7 .j*f-BEUUι‡ O>ئrI-H)shWhn+(Gc*0MrP?oQ) A@$|hkp8(N0BO0DZi՛3)Yfm]ŘԜRl_rǑ`VC^/muXC?\^^ >|ͫ9Զ_3B|.rh-NTfL1EP ݬ9MΧcF3BcBJJ0Ɣ1@ FnS윝 IDATZio*%0oqvLV:R9GgMn*Fp>N iqs1:y)k]X!j݆ rΎU%JIK.( hF)|Ӝ)51# b8 cBʗ=45uc!sc38jh_c10-qu&tMJ^I p*(f!B/]~T~BHZjN%P~ǣ3!!zGD8*^pGK4__|ëWO㺮˕q3jy~~)}X)%LH*Ip9/OIТ]T9~{~6ϻ~{usC1>wS[Z5qw<i2΅-,uu]A''''?Pa0sVPSSer !s LG%i S qA1AKJkob*1.dsCP0As$@r 3!t8D9jS,[NUF2F XBcϖQR0тPuR@ju \ECB ) )NgBhB1FnW*J$K8Cjj ĩÈmva"B3x^],ߟ_J<}j?vP%9CL(e>RξLbrC>!O!0*(}B`w?y眵97 8* f_"iZW;( YgPJ(R[kO)ÌBPJsΥl .iRt!?2Ƅѧ`Օhy{MRzQ+RڦBqsT0J ,${Js.>c,ҺnS{{r~X7Td꺞1By"ȻsJw+c`ֺ0̓lf9>>/jy8N??Ik}K*8TH6Mv?o~~ui>>/XF)D/|9𴹥b,dZ_DDE)ٙ9b]*(..B|NNNN~(J0uP1&%#\?`2c:G8DŽ8qL``ߗ &kP6Lc]ZW91朌cUS3BCe?.ZB$CR,&rkAR>K)J>\_>Z9#H)ںY-vSr(9bL#XRvq88s>O }O)/{([)-Bn[LTRpν~Zkgu)n.L/mAqzX0BX)o^#Υ*~?ͯCSWD[/tbE_pB0I}RrEJmZߝ_\Dq|?yo?DFŪߵ8=R/sLjom]٘=`LD2* fz Gк IQJ%4'yKIcJWP!3r@|Bܪr#8t! rʕZdCH` 4nM5kϜ Mh m-hC*$#a ,"͕*q?"`5ń`QYR2?1)*%Sx2ĀT!j]yJXBNa,Kƒrsq}qEȐ@J;Ϸ۟Ĉk(~򓟾O#@]=>q0>5>բj} A݇CU)瑒0 ٤jo)gCoi}7?{IwޯWgyjU/ɆC)w4]n A5"Z7 0w{BhAGK0GѪf/S' n?aBB $!q]f.k T0e*#S19:(2Z g;miM2*9g.qM,$TJa{gSj%SJ;3A Ŕs4ʅuFHR`]c1fscB)880%ͣ $"Ni`WR J.fRA1ƹ0xgTƄj(y3.$9< b}LmIYZB@TRx"B J1ZUk-|A11}:E??T2f>wey6nuvc~eR Pe]\XbB]A]J0MoǮo7\)*qpN1*zs=FJI(.!Xo89TFjLW)e  0$y)M! !1&)s夔dR\vg cU]2ps!v#$_CY cK`g ( 0LrN9|pP69'4SNR*!@P9#¤f6 ʘ*bچRWJ7\j\|}B_;q. nt6Һa~|K)88yT`XẌ+9L񘒗Ba8ś)ѥno?Ǜ7W?~ĔNggG۷{q8WWW1FJ(!&Զ8:~Xrþiڮvb!sv ]·0k,nwfSRȄ\_zR<jcCcKo ❛b* AA ,%%5ZUZ9)Fg* RʑQRB63ۡ?0B){-i31K1@ahfM1vBUW B8(e K!$CƖ\d(3ZJ9(4DT8 TahK D)-JZ ikh.eb2(!%BZkʘ Θ1%gp<%'H} D?7sS?Χ!nr6l;)ab5aw/O)D(GZ,58Ͼb̉7O mOXaquAv;%\H6-\uӿ_trrr#Q$ BUϮcktvvvuuu,Sb\0c,wϏ0(vp.)X46~vaBRɘjXI-K1GB- SL1TJ..00!cfgT<KBq,B1&q&p. BE{~MU]Js{Pt!-YJI)zYˈTB Ŕp9cHm lWYȉ2 \ %9or1n.LƩjK)Ɯs%ƘSBtdV3 PS(({cpK&q>#e a1j)眱(_|iOwƸޯs۶8XKFoy@%?>~* ƘyZ/uUw!$|Ȥ\NI1#La~(,*G?Ly6tD(Z(ٌH .o9'B J| 痗!䕪v֌Z7i7EJ*c0b2n\rP)9cj9cʭUKsrrr DB $B(#|J(Ř+ũj D)pZkB0` J)1&`<Ř3J0 SXFsJlzD;v!BHv<β#9R8>."UP5:1)q1QJQ]BImn%-CQZ;6͒Pn 4)Z91FL(B%蜧P4SRY3r0sTBi샪[ʚ Tph+!DPrilݼZWJw"gpwI)}u'.!'$*=Nsdu[;CpvvU7ǻO%G777Bp.|<Э8 ֪E)YUR_2ν)CQa!tvqFÔgy||<;;va8n6m(.Mݾny*3T_v\0F ù^H^J1nKH!psFK.#BhSJ1G8a4|xYc,e3G)uRdf W R6)/o/7KRL{c$sbmu=0Ôb*ۇc-U]kRq)$TR:`1 Ų R5S!H! TRS !Xk.P288E1iBJL@ɺY1=g-4ݑ5dqqޜ-3bUꎔK\_\]#WS0zz٫7_M[We`nqF3s.P}XDL *x|tfb/ W}q}Ix,>~8-m >9°Z,8y` Nfl˕qȥ>kϚջ߽(}ݰ;PRf1og7 =?x;тJ9dws4r 0`Z"xK&cd :̽Rb `UKPF\Z׍ lwMrΘXFRٞ& ^9rNU% s0[3! ǝ DДa:R8%,s!J7hI3.E@0J+-!dl.@B!- PUv0Ά95BSʅB`g_q@ .5!1gBHp&ؑ&n>ژ[!=#Tc:KɥV"-7O~ûoon>)?ٗߏ12J&dd̐sT`BRR 3\5KFeJi\PbBʪZ 龮ěm]O JviiSn}p|~jyp?8L6g\⪩כvwx"~oc_˺)Ln Zc9ǔ)y6u]?9gq) G;LVz2 XKA9] B7Oɇk91^R%t~9999W>B(E!"BIHQ1%a`%| 9e(50S0Lꌨw)cu]MS5%1VJQJ)ag9ce"B09gsPq@N)dM)CBx!Z#̦?ιoyd֭tu.0MSA((BM6Ƽtb֌1laFR5r_ B//B$ZpA)t64.9]J c1̈́PL{|xq.S*1vmw][\JV@98 !}͙]19@^))٭7^fOm6y_o BT\ׯCZ/y7}i+T~RHm-<==\ߤχjygB)㕮 aMb VJ]ߗݢ)F1%;g~99990/osΌrBiN8Ga /R%8zYou`Y|p%23IE}9޿\r/qpBP!J6%CQWJ9ƾ9|Yx9@%FƘ1M1^~L>_LfdB1&/dܧh/?MH)s!1c0EcXJ?p䜐rwBR1()L\Ґ咍G IDATeNz-K0NJtYY-i[W"L$`@=3n oĒe"u^޺u+*+OnчGF  ޽32)ʲw"S8fx&X_xwZeCq`Z%3Ebu7{oYCDrQcJpp2`/@aay0 =><BzvrU:Dsv~1qY)ezct菜!Ba\ c  8Z7:72sM > FĵO1& M Q8 ${;2!$ #ƹ80% e@bpJ\0F;mF `nC.n|5"18PTx@Iy8Uf8(B֢PoӦȋLH;D08c#zB"e^xou)%DpN!‚sBsrfǔRUU ahTYS-cιqק! Q92TUMx^fq\q8E6cLbD,ږeBWsa[Ofov~Mژrͨ0f7Jeֹ8q50 8c ŔTYpRJHs) T1F@}Q))%ncDB(PAw$ϊʈsN!%Rj3Sh?&qԄ0k6,)M[4c(e,erwۻ+F(ˊO1yڄq ʧqS!%c,jI8+$w"\73̄+k<<0`MZњ) 2F)YJ(vF3J1&dO)q!xt{4c:,nooB/_LLuy jyfLu6aXraݮ,;;}9$hùBXko';MAU( )!*1g plyG fJ'zxϼa>=Ø7%Y >LdafFvEY뼏!D8ǜ C9އc 1#s!PJ)A !(E1K #LTvz'Rm16:1z-e?RC B1*q;7ykP fP}cLc!q?٪ւ %{1ɲ,9BLطGHq{=MB_!%k`*8vf pF̑0Ok֌țRmD=!btgaJ / CRʔS03%pL0Mm3(6݃ʋrU5Mv}e&sqC2?\ߞi0&wUUm5Zz(}FwC3B n\p{}[6zzZe=bD,$/8czL2JpƦѺiq$?7''vCȧqBx,;::{#)sczBL`#,^2嬡y,9/!B޻S#Gv0t7eQINAƣ׳ID8a!z}O7?!b~u8I9v]4cMW~wG E !˫z8IYP)E)sz9_eQ yg>|W$+1j]3Gn?3QUð*> Bd#b ieBLS&|tvJHTsޞ-O?rz#8}1`S"!0-΍ ;k-(躄$:`Lr}؏吂“M)9G3vE>m0`F,q$nRrQd]c4z*3)hO$DĸAxS!rLeEJ5C Qe AĂSr'o)eYyPŒIJ^,(qɕH|4-f4Et+˫:a8Zbm5^(O;l)"sBzZ̔ UemKNdwBŋ)8Fd{W?PJAsUiV$eYonn"WcxxjO^Ss6O(6]9sÆ`2WMY6hn^x}vvntu}gLݮ ULڮ),as!Tf!!l6ÁR9:::1qI)dF&#:PLކhc!!5ʬ,bJ)LP1!Hp]dBĄ2"LdB*o @c Z[1Wo"ʐ7aG,B 1VkvB`vgnjit|Y EY2F9[F1Etzj\p?I)wm|4v<9Y=Ef$ OUu$E6T4Mu]Y&k˅i?'cֹC۵ ĹGIUPs)%wRI,?fz~ou;qD)`FLQB@$8Ey)ga!)%b),3)B ǘP*W.Pz/2Ņ̘ǞB( C'v77$lWwɘij_Gv!l6u?1&{SBR94Ƅ1Bpέ14QJbe9!”21Nڸѻ~6{ƴty8a4'8ϗs?nn_.y3(% `i;2@)l&2ŔEMpRXvAO0k]HTY9h2G#j !?g_~͊3 8HKLP; N3B0@QD &JHΥ"B\y3B#eؙ!1#BA" 4ډ$>RM{a:.buopjc0fЊB`R)AK&)(D]CD.LPg"c7!,TQi)gzBQ,,X 1Rc@#RD@G7Q˲A|C QF)SJ(E@MC ,;kݦha˜PHqۍZO@5:%qw݋O!mۮקټk{JYQk48gggs9o?mnrUPo)a;.if

z# CJRjՋ` u]7rl!4e \A_>hBu7`i„B4F?|ZbALcJ)F;Egh qZ,XQۧB9! ǘ!3Aں^ 5s=!tH$˪9`>"hF)B~bgӾmR1odMB4;1E^yF!8g A;\]JU,O}glù"D\3c'g])$(R$EA   I!3(eBZ 8O1` (|OK)C8k(otB4sAp >=>` c2͌gy& ELPP"X8y(Rڴ!ݤ(C)F@SJOc $&ĻHB!Q4#0 AOUfd }aYx}Ya>R)L<ۦWe1cy1}-NyYhr>SeɥZ,/KūOxOxʥǧ}?fzx[ONWw?b^dΚEӍ ަ0I fEL9ww{{wtv2\"Fz>_͋b81v#+dѬIDzC?Lcj6;կ&%]VggR?$YƜLu>ۏ-zJL"ɂ pd"{g ~Fp(&$Lz컈(8u$pІ`cg^1i<ljpPBcU>NeKV=d,D1 Ercb 0 )bRH2 O 3~oǖEG_̚f6[\\u})O)5MB4vmQ-vcFX.˳?Wιbntۻ_Yݽy&9RHه,sag SI駟}z{wS7%lzCYTz\&FŤl>{^0Y~cIf6_XgSBָӳscr軋EY{-f/^xxnZ] ]|D\ƈn1&ʲ^ۻ& ;@GGGG?˿l7RH88dĬŔP1S8g 1xxZ-2Iq34RFi  i -s4%dq(dyqp~IV 3J%SRɬf!s !!R BB#DL* \qXPA(CPRkI`cB5xG9gYAe9z!sBUˆPJF(@1"`~jw3a;&| 2!gUU:޽!x&f !TuB68 +2ֶ{0&Wb`n"(xY4~֫p_~l^LlwۇP}yN$xzkDb}0!?U%`fic߼~sh[=Ƅ`"X߿C]7ÖRii>aB ¥OzeVN]79Yj1\^v(f$ArRm 1S#@JHgY6-AJq6>qNf F)B{9g9kSL!~"GcTǃ΅cκ1:˺t~,8S,r!֚sϕRskׯًu^fx a2 e8!lVO0 ]Q<!9oYsA+p~Oꇿ%WeL/>6nnnoLJ{kLa6ka0r>"ixէ,W*YsFuD=ۧk ֚ }Vu3>YCiҋŢmv\'\so.LCGM^?mg: #p=uqN$ IDATY|voF1 S6M \]^~Ԅy}n{OC{`}}(Ѵ;?OsJv{hKn&>n@ת(ˋb?їuoݾTY&d۝ɼZv8wn0PFǎ&rƄ,bA H=KBc7<"FxIVv2FڶRJ&1 q &J(#B !RI1T-0i3MzkZ1*aoUBHrpH)LL>z i " xVWyQUCp ~v,"eŨ(*V-@(IJ F %q$ƀP b#DK!rkh1C48Sn@ax>&:ej6i==ߟOǍRś7ouQ8}Y-޹/.83OϾQ7h]7~/fu)&ѯקn1O֜}4q/b*+7M3ϲ|躶0bQUuLi臺nc| !m}|G1Ôs%$I3~?,Tb{f5|lLǣ/v#1 B `D̘/318-H 9fznSUMPӐbD) E'SJA_Qy6/IO#&m1X̍Ѫ^rF 8\LJ( qԺ(NMLAӤ &1z1%=jM!'a"'ZRJɔb0b$0ıBh'0ZhC&Wv!}Uc)s/' s}ޛ>;`TL7)~2*̲!zE{ǫL~?=;ńbƱDŽz ƈzݶa.OլQ}+r{9!X,@k}hb!nvAɒRbOOO?|@0q>ΗǧWŗ_2BBF['ΘM؟]P*0۲PJ2Bʔ{ lP1y!DͤZ)? )UߏSߧgu0vZ{cRHs6cYRʧS 1Y|by2,eEn @c+˜5 %\`6mP6awH2 M nG[k>"bUU0M@1@LvK}.3;u)!8yUL"/3=Fh>ݾ8E~i\UUcJR3)8m]Ua؞ccO?oZUJ13}W5/ׯ^~>k# Z[ʐ(YW\"s@DP:of>CJ!M\^^2ƷmQE^c?7o>#T||>Ë/~Ï?JUW랶[@D~zRO?zds!!}dy_?::::y~~ F!0c e`!8J1c$Fu)LsJ( (2SJ5Z9[c Je)%Ji.#`_!JՒbU!ɬBb1g-i*e0`3f@JD03`yJA8t]/$!J9㐒ՆSN)$2%d{|,u3DŽ ]Ȳ<0 T bs, Ƅg9KZ'2.RQ@F/?Y)jٍ^Wozӯ *%7 F!BaBbySOŹv0w(G7W0͗_>[替yzPBkIQƇUE)x5M&Kh`ռ}w?촱isoJ8lS'W7/o/σ| 0ǮrW9#&s]QstttsD0㌑=eP D<@ ѻ裳aI JRpRS7C4lY|L"@8낷>$*ɅA^V5lلSLho=@ \/hvlzdQgþ,QHJny߷(bp8jww'ԋ>\_NNNco<2Lk2czyYmjAtO)RJ@뗿կA7]zj@x!X)@!rznGڶm*.D!M!X?|^VO?aLC0]7 C=2uY^ze 9:::0S1BtF \cN%eYRR!uyw>hB<ڋC)fB:`w}/ kƅ!9O)hb2 γHbǀhqb"U&GcQ@1:*~mJ1PUPPBpSQ}pƲ^?/9:::~7?}H3Z8J)FLM xo#aJS v>[LPL1ڮqzR\\df bRA[&-J)K $W c!(q`PeLPBI80μw ! 1 c p #lALӀfsr0%\y!cQt1 U3ʂ1ι&$UBY.RkBBJ}S!Q{]e0u=vYCzTkp6m{X,)ju8b/_BMI s΋ޏ8N]'.pPc1qsssrrbC3dş$KM2x2ƜX">C;>Kw5a˓iZk.DJqnnoCYT)|p]a(?~CY!pe]Lv>]C;#R'stttsQ.bH!DL9ks#QVZ8aH3'ccJ(%0B8>>lq}-FCc\% sm sJˋg/v/_lve>E5]ZlV on~dJ$dB۫+M*|4[`p?p%\.Ź/jǏ^\"7h+5g*.-&wtEҼ6v IpX/>c̏vxu{\v2|ww71S"b9'kl37xyϧGhm 899msɜ1<8ԦR\[,w7?<ĸX,?|x悍Dޱ骚L!g?vC%ً}~:^O.={~8w;4XR,]oդ>Mz?׿] ͹7Z1"m%p3! #"$LU?1 GH18;;A0D#1`Ȅjg-)QI[N,$.nfy.L)RJqw!D|9]ϗ'RpR!I 8c R2gL7X&㘩+0c)yS38a mH 1 R0V]]=;?)u$˫_av R|Clwձ&Ŋ{;wU5G⫣U=[<#i$?nUnoBRU)^wmwH)_zm{)09'5cRTRˡ7|QՓv}7_^\~HDo97i3 !" Ȇt}s{tt#0aR)f?s'ɓ'O~own5auCc ~@D2Rkʄc Z䒢+)`9S3 so}{89A} 8UPJoU=O!()sʉ\P7Fa@t-snB9G)9" R) \ PfP'`A+^rlRsU3a!\0%,J\ D$`L@esB"6K2Fǡ;Ę[F9b;sB?~d$O_ump~\M&u 8>!dC}U]Vb~< }~?Xj2"d:],ߏP\ɋ/qٳn6{a/\J;R 86P`=uys 04u3ά 0ZֶۿNgJf7ן1_~o `xbTʔLB(bLa6=<<\\iw||6$M:9MVRga:fZ7})}SR^}Y.nnR劈rI bJ)޽ロT햓f bYo*c';JPUTww_lKUU_tRRz<.C\}8>:wnoa8>9\ uU#an?"5JWsvrtz~Jp?тsxeJq;(eMU[Jp#CAh;?VUsɓ'O~RrZSL8kKH1~NONKv!1B8z۶R 9eHyv>T(,J);ιt`X ;?tRާU&Pp(%}IjX.)xg\u8b\1!s1Đ I VUS%WuE;|b)R%g]D9'M1v׷7,rO?yxn_v;9zt͸6eF۫ۛ(tttnzḻX̍!/fYafGg˓ 룒؊4]Kk& ű_[K aSm]moS!8cHl2[WWWڗ^*%ǡu32ϓ'OT)C!@.9}kG wJ)cFj%K)s*I!!7f(JIP1Hy~peQƘ1&D2(ĈOgz2ZsC1F眵8$F)u5]>N9c%(Tt2i̹m׍!@JP0DS!f&\P&T:f$`Jq_[ǔ̄ Sb:_(S炱@!*C*f̖~:z'6tA~|QZ0Cz{anRcax Z{||RʒC)נ~Ipqqqqr~[ˣ km׻ݾiכn?(%rs㳋F5k?ʶۮ'M]r#0jydfks:9c} xtypW@dZկ? ϓ'OtJ HƢwqJ!S)SUn(h)z#uyLu=Cs|z<@ t6qdR*#RP*4tCpNDh1c1'"6Dgw)r8!c \B6ELHx ܵۡ%ȸBq|( WJN&\J .XƄduq?/rN]{L^{ &bΏ}wW'?!%L&?}圚IX\?P IDAT/.^|nffϨC d?v;Pb?;N7Wֶwr߶f{L7tgBZ_]~o_˗oNOϜ m^ojZ=^}rwuѳT?\Uf4kb۵W'wuud~|#›ɑNГ'O$݇F&YI B2TQpb@I>ݦ;*ơ/a:_0)K&R9RruB*@Ru3bLP BPZh==eOB%d@qA2"2sIqӀo2DFR@7ɥdD2dK΅k,z/""LgX's`9#bUeKp!Tu%!DzҼil6,CWZM rY0u}{saf-V01y}NnF79Hh ./8u= Yi Sga>oJI$Z7/^lVEOfɥl?^_~/_e`t~PRSrs6Fx߿f2M_pp?%*ׅt:!Tۭ2CkooW`ȅifK.8?w|',f:C?^1!R999/^S9q1Ӓ$#|msΆa(1&%9R}>Ɣ5|X%fUMR9DZ* a8cR `L"@ =AJaJn0w9CIK)@ *HH)JM&c !H)Cb8-R*J*!e>BTUŽ+NWUnX2N Qq !lCptv cB=dઔRD4oo .q¤R(/mżZmVwww8~"8k4/OTwWa=m5;EB;ta̙Qsz}q&өs6\;;%tY-xo.$&̍nX-6g8^},z4Z7w~qx~4AFfӷv6]g cjhMGYRU1})8[ϝ'O9+17s"CUW#.QJPnoK)E(e>_OsƶuR.cOҕ21zyQnR˯+9CߟB\~` 2R\/2R\0B)CJPV+rɓ&~7oqg&Ee S1##)%'眤DBfZ K) c !sT{!e)ńB3YURQYo޺ʨRq*G޹nwoTZ3jJ*!BIkǒ21*@$01@!C,Ē#g<(P1f¤>92uĘ,)1ZFB>LLze`J 9Aɻib)hi|p1$&3Ƥ1r@lv"k81!Du1Tr^+)SWW뇇۫i3T(p8&:Mϕr8t⽯ϾE'ԘDd%R |ݶ~oO?IVZD?jɔb8/gyS/c\sY?tZ^^^[ZWn޽} 4z'gلE!*&&{ɓ6rNL( V%} 1Mg ~C0Z(9$AN2s ȍ#D%Q\03& c2\QcJe uFͤVR9d%uN9;g4uۺrJŔ14aBaȄ4fVa\Q),Z*s^0J0r@"Ldn`4W!O.z3 !RǾ@T7U]-nw={BBnggG $|>N>|: 8cRjݖRrJm6us||\hv1F881%k:Tzxyzw~nsynq͎_\Hq{!Kҕ~w7Ptz|H)峳~8l@Rli)1yrl:Ypc髗=coю1Q2J3@Șb9yɓ1,1Dg#Bz2EU3B !rs̄ą+cN9Vh-0Avrq쉉hGVD9WJxxJf 0fDWK1KSZ[k!"۱T1ط-… "ڔ h8n\UA |Fqbq@p6 `!GdPRIK!b,qF+m 1)S)ѹ!arvT==B_}ML7~BbnOq.G;t!ڣ|خw>|ov&vua.5Z7Fnt{O>/>|yWgˣ8Ӫ>pQTI s@\";>Ox㛨1QO|:tBz}mq bo޼f2S[wCn:}'9uI29wg>ͥJ)A Rٳ|nx8q1.2~tt<:ww/_\B rzןnۡ?{~pC]Iv:^w7G'g9PRI SN.qagΓ'OaENCM3r\&DSK\0+ HD9#Q"TL=u®ogU;oB}’,jƤ}K!d=bD\咃H%PRI~(bpn&!Ae(ȅ ǒbI,]xTŔ!Fp61۶2sUXJi1(@.qQ0hZ_3[|Tu=aė^}1ɤ!H8.\6b$"$|oepuKf2h51ɻ8gA1U5 n&9%lh:Obʘ"9]{?y:"`UL?|/QJѶm8?mֻ㳻v}hٯd*Ue*~՟4i)`d9dp6 #]DQCc3_<ɓ'?ɷ 1JPlG.a:w(1L9GCN FL#bw9稛 8J2+ǁa\cv ,V@-cT2cÈ4: b)EHIKjRg1Uއ* !JN)Cf\d{b| KR91CΉ1&RJ)B1%2<6hL)a!xEH(h!FH@v}}r~~v<^p.8MS+E49!b1G |1ɧq_uziVBLRgϞ\wæd84DsTb )%cR>n?| ?|rCi&f]LU={v~LLR4MSJobA䧧g٦ۜ՝ yr~dAĒJHRdd1BUWZyɓ*L&Fȓ y6u]c&RKH!sN2`eRf>kbN^JH@\rIH[F yBU-|1:K !xw)'9#bQ!nHal*)rSId1cٷwCP?=3R2cz%ҹ~,+Tn:j.ۇ݇?_}voaj\~1[|!ˏ0۾?x829cJU6Ȍ!\ @R {j*ɓ>RxF'#x\\̑I]I3ՄI͕d\\)}$e*"+2 Yq1(H1 ( 5 fRu!u3DČ1)d"'gCΎxR BΕTݤ\ lCIa_q(rF!lݤrJbB '\~R\9Jj6D9,D@.%X/LD}ۆ EJ> C݅9svv%39(t4`3׳q98{6d:=ut}ם~4 6?@꺙wst>X"2'Wo7|_&9f)jUGC_}g1o|9!Ÿ::> g9S;ŧ_.(HHb ۭ6f@ /Je*Xɓ'?c\HM&s!@ʒ#D%{o1F.2P 4s,9u}]iijnj:e$l)!cRJiYR$& Kr81x;@|".|?2Rj9(8!8T5-xq3CW/N +)9˸ 9%)$(1Ggo vVJɉ %%DFlRz;NI>?t&J@%eBZw{c(\-+d|_-1~n| |l6p={D֫b\Aa)NOO999{qq᝻ZO~7w'_$۫~?ڽs29gm ןIarJ8>vo޼/?ŋ/ ~U@"$1*}:SA X #1!K'O}i,B20rN<vfbj" })TRWu]]hfj1:?vq섔)2&jڜD1H%K@\WU|p3JP$7QUCęTL&2nCB2.syV$WUs%'ompt:UƜk]qi}oWǧdBRoO U}L@W0w3aGm=O)9~y<xyyyssVRp887f9xCD>t]/}xWrM&iuc?{îZٛ/9$Y's]ms#׮]i f 9`$J(QDi]Y{fdDmϥTOtv|/'''>y4ëW$5H)?3)8;=/yqp}{+kǁ)\A 1;bOJ 9Je*gdeZ]kFb@PK)̌šRĄ sc,(%$ $1B!ئ͠F67ɏK9=?X)\rLɗbDre.,ZNS)Be,0"UTf E*aᜁ*p)\+@-yhTzZ֏gI($9B$I54 -Ji\4*!e1Su\n!R!DDHkX!ZP*B$B)I)jч@$aSAjJJ-]kmji?N(Hj#Ofr7N^&s/?߬7ð!{czm$Z"Aܬ[oF|gwt|ZA뫡_64]a:e r'o%7NB񣧶m׷wWOOJ.iZDhuz~]G mM 5RvۭmUufXPDNI)j0j.b@@5[V.%%\ DirH16ʠN )e!5T%yJU%'"BheyGr%O#I2VYH"҈5mo|*J6)* g,H > )1PJZ#PS@RӴuRn֖RR)@99 λ^y1 IvY8Oc-,֜4}ߓmyrmmwRЇ7n7nk1tB Q%A.9ǬzäWWW!DD<;;;9:m^ߒ(ŋo\}x=[h#A]۵j0 ovM)a?y(`g_kn(Ӈ71M8|e.7D8q,$Sl6JˋR߼y?n^~WNn<8?>>I""""Pb5& 64TrJRPxppDSZK1Fb87 !*T! *EAnvf$jN5-̹DR!Dek y)3Us+F2TyTB98:k) J 3^)ȫTp1֮V+9-SR/JiBHZYNQKbaR%x 0cΙӧO+V*yuu%$}{vz'߽sZţǏ>yK!"߯JɶkbS{\)~[ݸ}_~բdie@+9 Cpc-b5FjZ "m;PAی 91NPxppA% jIj!BcM6)RJӴA] 1Ѳ[P\ L:@%`Zacُ0S$VJ`sR˕0j=Rv9lg]#i-A "kRsαV9mt5LHDq4 3Z\>XkKeu@XѪDj-!8cTB4!AM ¾V6`QRFK%;.tvPu6]+F)5\JvoOۮ {>wvv\]_xrz~j`͵UZͳw!uM{lNίcJIKVgc_ y9?;Uj;|=zWDpŃRs?7 _Xݝ_\76ݼJʶ; *.qswڞ# Z<&? ٮrAJa?{7+m\$H?tppp_lGZ$PkUki[tlcV}AVmϵZJ!*seoo)[ *%U B+RS \gTu"-1G8?V99.EhJ mT5'"~ޓ"$*B##sn9 Ad-)GHS˜+Ԓbg)T1VUP i ~a>x8X\n<}zzrzs}bD6<3Ͽ8RD|\o6< )7ߺ0I4ũL ژ姟btNͦkRzz|R`=Dom;SԪmlX4q7?meD|yնbpVJyqq7Ώo_t޻#b8\ORzwO?J)>| *<@fO{RH#Rk: PH9nw+v#@T TN #"+i?jimj)\ka}ɥ_ d"&JE?k%SJZ9(c JkLǵbV,S*H*uMk.%DPDչ(HkIuq1PYiQ@!dcE )ׁ¶-SACeksI'K5x$u!qtv8/5{#JS;őMIJn~1 W"»yP:Ben6\rZk 0"TB.Ƈж6}DΏۻ7/WG󛛛󇫣ϛawb[ϗݒcFU6g?B̻ݫ?i_|XQ7W~ il3wE']{IXe O?r"$#um7OJA\b[E@XA"89Mn1,ݺYR(~fjeFԷԂkn;>?T&JZ +@{P9I3heR)qqܴZ%E%|6Z:jj.)NeRh2 L1K@=;_Cd 923nƴ1UvXhbʸ~KSnu!ir bY*Ñ`Iq, P7]RU\T3*)S2ZQaHG`J$jӠUi-9e#mnI %̛ZVkC7,ض yzv3VyWG_i¹'O76xm3W+F'xۛGOou]m.wBpð؏㧟~Sxˡo_wE۶r]_rLiBB$52l@@%0b$I)pg4T4 b*T)(sᐁY-W:<=88~=GJ9JJU*D ,k۶B< 9:(B)kg@4MXs9Fݨim@*]rRZHjCUvms.hk$dJiV}QB nGښn4? PB(ig@ci2V.\8sJ$1)BSPJzs5TJY,)%LJki>Tb@"n9=1 :>>&R7WhcL,QTRZ~?n6۳ ~5Zۋ^]~+QAEf&sJ+Wy621jm*Wm,"BəfQH֒Q䔧qJ ˈ?O~ _5$ I)A(RB3J2& P9x!%U`TRjPU%2&!P"T{mlNI  W!e BCL\HHm)"YQfR TpcRƶXHr-1ֶ֚*c הr%vdd.6FjBD!1B J$2H0"imc]m6k6JbIZIN%hQJmqzsٳˋѳgOˡmVִֶzŜZiR )nw_͛u)9'!MkNϖH_1gOV'Uȥ!meB \j\v,N/X3dfJ8wv-QNyE7ujE\R\jI&@nk`R,JQev460}I.)C@lF5].e{w#"@A Daι!*WZk QUoa?n2PTtt ŌL}Hιy,9Ѧ6N2s u1#JRb9GBq} ]ߧV!mKB]R-Pk4BGGGιqy u)I B ofնPZSJ톥mQ*j~s>1ԟMpQ=Y~{ݟ'km'~;)jjGO70ͥiN|X@B,7W/~{)?7g2ia? ǘO|]f=>:~nW맟<'!6k\fX} "P{öYt dOT\8ZC`hP=VX9B#Դn~P s$\92KQKi 0p*9paF8I=﷐mmq.HZ1R (jJi-8VxiӋgJj\~W?gMcR !R޼yq/q۶Mh+鬵 !޿???ޯ/^H)?yϞ~X.*:==yumi Œ16Fk)[d8>:9j#wRTnMcsa))@J2BӬ/IHb!zD$RmW+@=&ZP*Hj"Tn&B!Ԇ0R[ilK)(ȶ-ef$`ȱv˩VDhfKɈc !HT ?mK@ڈJI@\3 ssNkb9 J~9V ߕ,nW'XRKDZZ+ D\lY,䜝sΏޏyvT #Lٮ9x9r]RsV"[7krFh;+...+ч[3?|pg#z߿r~?,W&Q)c۶۷Dj9 !hm[{jl ڦqec/vkK.~j[?0Hm/KTS g $1(E\r!y\293׬1HC{b1Is !||SB*"Gc> (~p)FL)1s)L$jJ+ H 3p]a.Rj.ATb\So):"PƐ™P ݊m)bȺ$. maSD5*%?Nm )T,9ar(DB ~v[JZs C5mi˵rW IDAT!!*xSJL!:۶DmD~w1L~Gk_-wI%cQ~6ƍT묒mC<؞wwUsW_{| awa\,oOdc޲KaЭ͡@)P3PF)$,ʐJ[mi7I/ 㓓GTts~O6A D CL3 ʅnM*j"]\1Ц!eK~Om|D)_O>.F2R-JHJHնېЈS9# !$D!#`8PS.{?'CTH=M)H[Ranb̶m8",3:_nQ*\2%iJ\5! (He2WaR%g.!b̾2s\pZ6JHXEϹkBi A'"~$"Y)ZĚJj)'Dѹyo~"S@DTQ&ovur̕)FkZP-5ǒbUjE!B <<,gtc2R, HR!H!ds.ZP2A8WJfsp~~!XD{mtcz=Ni۞e6DrܻaX âdtsxZ1q)eGBnUs"4[!R?/%o6~1n )}v~>ϳRT.]d+`eBh-jR0\}(HwdL3bC~r\.ǔmF,OKNvg]ej۞I8gaD.JyN5sHB;>?#T⨤-$"D UJ8js`(h͙m圅U9gIBڻ;Rpe 1+!L5\()s(" b&IXY 4ڐ"-w mQ J會UDȜ;'6mKq9 T+5lD0 9QH%]!} JHR#RO*M)mrB?ލ}]< $" DZk'Ͽ<ׯvۯOSF7=B.)oo]Pnooץ$bs{\jx[!ww+E._z-T>OCseiw5{䬈9MQ6l%q%%o>\GSNgeva]!iKMBwT7N+}VFN9eV> a\J(4@ň1(ݤ\BHi`jU(uqhZl=sPjB6%UʪZp y\JZ!leU%. iW=o6Mg3\8lCtZbJĊ-ziu̒#"`UJP3+0*RVo>D7ܔ D&(IJ@VIFƽwk(3'`cٯSfkVp <00auB5'U(JA޾sI~]hZq7/~ݻ7_>}'-vzZM%qSJRʮ^xqwwϟO6Ƭ[H٦GUZ&fT<5Zpw_5,R2qt:+ZmDTj&V:!R08gT""nN 7 k "W^\J}ݻwLi߼7!/r6ojHϞ=c).R޽{}N)_^nsj>_믐4;?Mrv0BjDlo-qM)R%ji\4H҄ ZA)Er!RY穤9K[E Xj5 dVZ; hŦzV*\D5#"%&UkI1D3XB,a+9k$ruzxZ 4Ҫgbix@qJTRNZI['@JiC !Xc+&J}?ؒ[έ6 1f[֚R:KD2J yzaڏw].ibtJ*Pmv޷P$庅d>W( {xV7??fK)|IY+~ыFs}#o)a-)gbTXBX뺎hկ~3F-F c_͏Eq4Aճg1u;eL {Z)I+ D7VVkƊqȵt\jmQ-y+;Dyy:vf󎁀(@r؈+ D@)'rʕzFzz Q%F z-ʖ0^I)*nZKQVη!i! LR"fn4֦Ӄ3;ɭ0ec @Fsaadd!m!f{L3m3(mIsϵ4`w$5F)gn)!*9uU*[E)Eg]+5a_M?6lnOq7n[RX# QA$.qDlz$,ݝ>LRm[ߜ쳾_|:<RMhSra?ܧV߼g#yPke;32-yg?a"EZ[2LbZ$b-k-3Z@+bH)mϓԂz-SZj3MfN2b<r)*ݰk뺵(ZJΈ:򹸸C!!Ca6"q7q?U U!aԺe<?4":i5n%ƸReVXcډ1|~9m9KMF[:RۙL1$D*s12i1֮V]1ƐKRJ)eVZ Zc})-8֚sacffZ]7]#e̶FFZVU6fb޽hC? +3mJY@cX >,"Po:{ٛ7oj]eOӼm>>>0k0wsnv%l:ZCnֈDiXhe`Y4s bo?Hk]?V|WJR-RVJV;ku &j|? m][Iks*%g CJw+VBJkH䋋?R}2^@Mk 7l j=Iuδ d 7"hRHʶac"C,9 RZkEk%d*)hskj̮Zk(ݾH;O"PuijTR9m8B& WM?DSL)lC真._ӵHiR*CObTKiPd4ujy "^LMF{b[* 6T vCuȷ~'{}-3?n$Vh&T5o_/~g?#Rmm2i׵I aAƎR'VJ8Oh%ekrn>)-Ē3"9c AR.6%Ŵ$-gekB9AiXTD RRQ%a-}'s]\\\a~^hCڢ6xjqޑ"ej%-RXqJZs b]- jIXc,%cl 3$"uXSku]fMu9Rf1ufʸ֘[)GDv1Jl:B1ƾu1hc1%B"3"&<HQw^v֎BZESrn f nؗ0m3H$q[ԄiEZT@Dn;=~-wo󫗯N͛7Ϟxx<YX2ga p{s yvMˏnu㨍G)-y:F;oGAV2/-aOP2 [:흴N' Iixt RҭJQ)Ѩu 6H}Bಆ]Ϊ]ty^\\/OZ4RA Y{oj[ϖ@3R7㡔j;URD)c [ZZkQ1D t|k;fXkrΎ5ys6y3"A#-+rNL:jvM Ԧcά),T$ʨ,jk׍D*HT R%`P 9'yUJ]im뤍c]7mp3})g:N!zox<> s|Oݸob/b]]]]7oS˗/1o>|_嫗>/뎬F)MP7 bD`Gc9'1Fi|WZ`O]L ({r4\1nZkd֕L09k x:y@B*4@9Z)  hC9n9ŪzmYn@@J)Kuv[iZR)5'c43b~ZPXO4XSMAJWH1J}w 2JuZ "T{kr1k[.9OĥC+egfF@k̺֨S!mt$Zkk5Z#ibDfe}oZuİ- sE [쇁XںaDfc4MOfq۴1uY~7>&Ǵ6Z+"ι~LYkkDXjn깸!Scs,VY@ZM)@[bg o8%'MdM!jobJ%{alB %A"fk.![[ ƜPJ)] Ԓ#j&%fDedXerrƚAAjK"D\Cf톝JacJL̜c=PtkZ=kKͩuX}iOٳx; pR:OǛ lzGfozӧ}})ݽQBPgW_ ~PW /S ~QeCZ3IjƤiTkkV sTw`k C7,BuHˆoZ*~& q*QNSjF!f@,%;e(NR5\f. tT")ZڊwB0Jj23hSƺx3"mϨ[=H=s~~HƘyw])e^@fu1Oqͺ[[”R)%8 0J)Ikp8ۍ8öT[JKծt4(hc]J5DabT, $2~N=?\]]K8 O~C%"}߳r|;@_P>G>--Ӈ9ioŋtY9s>>wϭ19)m5-g/rTwFJ@k- km1F>n-b)hMn(jOMn')Q4))ǍY~ۯƨVs)iZ=Iۮbpz\k[mVq2Hn@jHkN?M$TYk.ْen׵ZK)Zk$934".9QZ@Y5}K1\rLqa`bhB`kcԴ"ǻRcR 4$BPuSZ[K9 kFkw'_BZ$) Я۹G~Yu֊hEZZCN!Dq]WﻧcD"Rn{ZSj^I)<ch5n:a}Vm7t7eyEVZ:"a?$\Q˻ΧG?}?}Ԫ~r`e?Awpo7[?pw\VKk\1C)}2LnfZ+b8Jw5nq=kmkkyDli}\"֚bnOJ%@Ug?fi[ng޿un\n"C߷e-wtZI!h rښֺ"Ք   0XU|sqqq57iZ# ǘ5Cd"5k*Ô Pgij⺤֨H$L,,NuݶmKyV'@pLk}<nEJIO.%~b"b9Urb;31gz:Qru~ݢ>*J[kϏ蔒FH76;=rA 0BkR6Oλۛ.:ac-r3bL jǔbA%$Ƭ*"9O??w{{kO/>훇x~O?~~vn&M hZ) 9|IotuvZ@F$zO%ġQk٦ Ij"RsfqJk,RB1Vr|O[H@PjK aիOºMu)8Z!bmI$M(~U%KJRcY׵FuIIɸ@TK ƎL~t:S~-CXg{u[k KPY;jl< *6޹D4#i"" bC6wNj??<;hiu{jN"vyc) 18c"Zͺ$% R)%l{2*;\cSP)笔11֚R)e4c1*B͜ ^^oJiZ1Ƹlt8bڼtV\zD0l!TidXu!, SPs\bk^ՔV%e)TDR5.5lu*_o|k5;΄Eku}iǟ f}:cT[h`<:s۲h{1naSȼd=&Ht76_g h!r~h~V l0x4~XSJaǫ5BPJm)疷G5ZϋHUˬS vc?\"ژ:oP t'd%,?}WuyΘH׮"8|m"eb̠BK@m:?ZuV嬘1y_s٦#GclvWsEeRGwP [B&jJ<[+aZ"vcCCRHc$,9ƊF4**"䔒,9f<ļpuaBf-!"-K n=6G^Y25UM+icbR(#[Rb?)t+JyDWWk8~//jKXmu%Z48ngZjZsR ~0Z7m-)g5b!a@&M%7A9B)+c1-GVɩ*) !!smҺZwbގ3!w]NGc:Yk뷻8UچSLX!Q* ,顕Ґt?\6ܜS"%(cHJn)%f[fY9 BQJ3sY@@ZYRN!cT6fVJGi*lvqSt>NZqFR<~xOt|s{(͵\֦VqZ="}]X~?SaNQZ=M3=-Z34af\mU!+֖5BLa^a8 `ܖZqo] @7P eii;4RxW_ySOIa5j_?Cn(5F=sE-̨ucNY\JΡ@)9Fu^jEH)bB1D9*J4OSIVJmis!Du͙o^}.Z#u%1,MJl5Ÿj6d4N)Z#"꜋TP%i}^ݿ ,ۺ}=Z՚[WRJ4Ak<ޓH$ms)ﻧ !>}!͍a{ﺱ||7JiV EkmĘV)R=>>ȺmxuuDu`YRU)圫RϹׯ7|ssssss3_g훇r/׶A2XS֪.1-ԜK Ԏѵw]9ZjNKڍFw,6?Ĵ@QZJ)GVJXg_dy:˶5#LRv#51/bTJ␓h2ƀ &n5l"@HKlm"MkiR"%ZZSJv㞭XcxZakJZk:SADRJцm+kiߧ?VZR K@Ę u5 kY SvJiʎ`Ӛ3GĜ^k,ET[CDf{VWlVk3&@|hpy0w}JuiBZJURCDV 1FDBM3m 9ɗy;'~Dwp0\ml؃Ҟ0A%7 VFkAFi":o T i,W<(Fa<\45)P i+ĤM1ݍ+s^[m[$RF x Ukݼc?546"Y$Ǹ8cj9JIez uWL+ 3;W)mlN9Haz....P)@Uba+1;rZ5VZ!Zc1uP2cۖʄáZk0"IHRx)䜋hur2 Bl€ɩ2Ҋ6L۶=6ً\mw;*B &nmp|+6CJؖK JN{FDRPi&i9ܮwPK-u/:?:s(IHJcgXiB+w_"ƘeYtڏWZ9CRK65ll0otZ6 Ȭjk5esdmҠR~rOGZe]7xDc-)UK8c[J-X2Z@Z j]"ͨAc)7DkC)fgkVٖJ:J ZsL):ۥV)[mSrLȕ)??WN6uζڰH1d_ޥY%K#"3RK]0``a"0&2&B}ޙw_k1cP\#=q4k甬`8ER-2ϥpz~ݣo{))˓TӶEDK)꽭{me!ko?5iyմ9D2Tu[﷜US΅.تﭝ_^iCs\D"B \z Wz`ϻy|"I]OD|NIP"LAc}UU"ާiʧ B*)u}~{`Zkz:="Ty"ry^׫<2_MYet9׭kYv3̒zQz4fǶZS*9ZuKtN˼W@%dLRNB^^8DՃ@,'ML4Q9,v_(Ekt#fmNk/mO2 t+&I U")pI,#oTi{=*3}- oyESm[躮2߯߾}J,ގIey,%en{;@8 "z3 Jr'ޭkZkRrlt~Z|IY9ZM\-pN/̬,t:Ǒ`RQE0ު&˼?wn_w__?|>7!dUli*U!Vc2?K oQ|.E@Kڶfms5,Aru꾟Nds Sz=?Pkʋ{~Ys.O`|yt Mjfz[ySo[4OSz.Ej[{@G0щx݈j~'o~x9]~_ۯ?}|yR{NQJmu۳z4%}=,KVfF|Zzm]ŚQ)֏fK2Ǵܼw;}?TuybuۏzzQ}?4Adơr9_^@B).߁Qkѽw}Y΢t(~SJ)y^,no֝gk?/Zo>R"F{N`Q}[Nrx7(Yϗ[}=tI&7t>]JXU$jJ)ݮW8/C$"wgRʢ5̾"cmuՒ=t+ÉĪ[xcffL)Ht>E۱ ZJet"[gB-Y4|%ɠB"ڠ܍ƚZI,m7UlUҴmRr7w"n֫{,oWRf>bV35`7PM,s6Dd"{gq0S+s)SJ"魁̭3iP f2CqUz<֘Ld3Y#Xܼ ֤){ojҍ"")qʭV=zTr38"R)6 0s"IU۶r#:Yz/B ;6JϧsTހ [R5}[L$aDnݭKʈEzG:ӱLNLL3QV,?j "("4)v2{o:M Dɭ{X;y2[۶ԣiNR87!^^="8y~^ @y젰Wroo/^x9MӜE nr"vX*7ڱ/SN*e>2IRӬ:.$b֯~^-BPM rʚTVF+'D޻{Lܻyoe>} jU'/"??Lɭy}Yftj뽵}^f*I걧\`=$DJ@Z۱j֔zD(M%rʉYMd۽{<oRo%͚h)8j:_u~|p{W^Zrϟ?|pp'(} Dxy>mn=MSې[gUr"}y}qhA-fMzG=cغ<АC@D,c ""㎏DDzo,A`39p EzcG7f0{.?G9ƻD&,Pc& @pwkb"b ='ce :X6;Fli&f`>GB, s#x=NQE݉za%@GA"#'k|WH _nbQ5n"y!{abDGNDS 016KH(r#f" DxHpDf" P}<2LHd(@D~(qncmp=WѸaօÏc&" CAD̀wIKLMՓ͓zv8\cO[) pvZsvՄ-v=BUoloVT$Hmc ٶᥔr^ !*cXӔzgN~?|֜7$$F`2~ne3U۾o7Ӽ, :jpbl~:Z6贼vL<W-ߜ{.o_3zHU0"i!!NӼH~zevBB8,I֎JJSNP;ǾAJab朩8˱^ID0v8s].z\}IOppe[kǴ,DN~km k|$¶oe9yR@)N'\o |XSfx{sD \|odjJ[w& s1XY9="!B AGBD z,DDi|T!IB&! D*,DL#{` eD01~ 31DuR :3& "%fWE 3"D$2xD`@9 As(|NL`0@ "Ƞ ?FRǪ>z )N΄1@a~B; a DY\`*'ra0D4]3:D; fpb%f0*3` r||kƌd;1AVbg "01}p"8(Dج= Dht\F!)z܍ =z!SQ0f!LLok&<'MS"*ASv:R eRMd(:89yj[w#UE8t>T}veaDxMe-!93k~Zt'@QXOK*LIYgk jD53{ݷR[QrysXAֺI\ӬT^oţ%+@Ld?F8ׯ^~,G$kD߾ dwmWXtiEIToA5PO822ZZW]emu (ۺRr)L[S%Ozui!*?__YA*cg,@zi1.ըJׯ2"D 2gwr B=ܺHbFn݆-̈H"Aׅ;(0N"X"4ր< "p(Y aL9 } ZaUd@cj DAAp‰#5̉} ⱀ !@9]@4Fx5a@XcD~ <0<c偿" eܠwwtxp(˙ALq.E1^w6^O{Ł(&As Yx&La ȃˤnF) >p239݄2 p'891Ѡ XȽ07G90Xwc!fCb8rP11X 3[L!3L[!L9@$4gˆݘG xJ,ā#u"$+#@,IvBÏR R\fqݶL}.e=<˼2-*m2).O˗eavԧ~޾}w9di e~>- B0` \ӬVQub%"S)P3qڎ)NgS=t,tk[t{8{*y)QL`m;۽'m[mZVk2q o[37-R^H7ݶ#"3U-eBJml[zKC∔Gqԣyn|f-XKpkd r)Ƕu]E|n|^KCӶ|e-n}/`iYKf{ܷ,_^eo[ RbfUR=Wֱʺ۱)-zS5׷ygv}"[M`2G.(653fqp!_c|Z"B"@’ N0A`3GXD['s/D։( :3z+- a"ID];3pach N,`&`0#")1!eh@ D.ܺHIJ)-.n,*ccf]s1ɓsZ8*]cOܮ[ަ9y:z/_/։(ju뽦Tfs.~<|tT " uO%1f9g VBN'ڎ|>M˩dSpު{Àv-'<-߾ڷ[ֲe8tG pPfl3/>!Yny^uwz}E9=!N珽wyouww鴮}3Yo,z崔S*_ߴ}婤u[ϧ!_? ~;<Ӽg}ZǣVaciJzni~,k$D!IŌ(MrHI5 gO)Ym#Y4y@aݘP#zN87="Dtפ0¤*=9SzFBn ft/,NL}#܅ݝ14Έ z*a)+3i`0uP%x0T{oík(Y8|D3Nk   E3ďpu_$ǺfE56[ei]P18Fx@ 4u<|r `Lď@ a!,>F r"~<$mL̜)!r dѻt p3NUpq wW_rǨ& %5ѱcX8:}H̃@ UF/z !>V"L wL4x!Clfsp-3$„az23#zcNx`Ga0``H*Da΄pS"'UCuLNH(%b2"*) Y݈Z(vdufT de^M|[efyYN^J!R"svej!rZt~֖̔ {SRn~42?O"w70r9כ-Bi5e{E6y[]婴:=& !b!3{gȝ@XHHz*Bn!cE*% o8@e-q-I>3#}^>\uKZ4OVͺH6/s!ZBߴMZJvlպp2a6^9݇ew~.@̭!CٺPZ#9"&:pq',l N X@!;a" с-c @au7S!fn>;1j<<aAY xd@P<" KyJϞ@`nFNL JIaA4tx`ʉI2͌#! 6ƻn"n݀@`#GaKfcABIyNc!DKP WDmWr&>LEzβh tKf 3'oyoͶw[;53Xv Ktvf齋Z[SEJ_.zߘvLx{{#) fݧiGt7vDdvǴ̬-SuQZ[9t߷c;4_>+1 n]77:Zz['8Oqb1i^NKPpޮWT Ƕ֛imOxyiG}zyhCq:1~5Ã̶0cf X[^D6MӴ\t81)єSo{)eJq0Nc^`eYJ)Aqm/DRutIQJ"9 5( IDATww?}YEr^DtݚN,r^uI  ^H{w"205 /Rx D&V+3rQ{g6"y@`@.I{3)`n',D8>2bb?PS;* z#2j# cf"nr' (Y<0LT̂B {a)Tű;-dJ>e##~ipjNBC'fДnLU)DI$@d1VJxovR'QK%̀w#+gr{i[_IhH˜̾|<"o[{TҪxzwfpN'aE9$˲9$Lϻ\ZADAe]r 4s3kϺ0iI}:߮O{gkL##B/ڄϳ/G?eBnz\eAei1ׅY|ǯ,j@GkkD<~uYVRfCI9XzKsOEAQ3^G#σ j[vٜLDc+v">rj)y(yFR'$_d03 pB@f$9Q%*c^QgQ@b`ME΄Sh$NtΤCbyYJxሡB$pX!#"DjZuQ O 2)ݐ=3C'PL-4 !rcAntn&bL+*q"|g ¯InJCf$tZogvbztaʴLĔxyL@b!ڴ`+D%+(Ba4LZj) "z wa\[TfZT9R8Y9Y=}(=M5#(#]XA)2!A2b {E3@HSU,e#d"47 !erwFrO +Ps5=#|M 0G-ܮg s1#E f3 M ff< Nd"c&"Ո@z5brq@FE2X0MjC `I qYD܉I0=nqݔYqBw XbF BD1:CL+U|o01,=Y,\x ip6*P&ըaHfΜZ ,.O+ mI@̠:wd"fW,XcIH+aW{.3"ڼRBYMF09a qr3m$aFz5Ӑ#?ϰd  t+cd/U 5$t7HBέ0&`"t™"S33CRCfN+ vuhGd*AdlBnR(1@4HIQ*I-HKv;~y-N-+O; Hr;~c3J/Z[]ؿ?>^^X׷:zs9} @ϬFX:J)\x N`D؏,ʤmo_Ooo?F) $.Deii.aYe{fJ$~bBG/xx]"n/eZ51)D0#PQ]Y?̲ue}noi1I}]^ Q~ Bb&} 1Unqt$6>G8nkYL˜Y*yֲ.mt>v{*3m_~cVu-n!r7Tc'"Be$ 'JZq8fRuA" !Q:]w dfLL-L9A^] ), a hXBDO@$JD(œ~vaʸ@[CRP=l^Y6@T!=#)&O΀хƒT2"9UR5DL좘E %T _򓃊̀`#ʐt&3-6M fZR*Wc:݉T/\b4y f!yi/0!1"JaQݑ\̦(􌸂*L0rzJ>E!\Q L0f"qT{"=cXBs` .B\DO^ cIjq^? 6'dzS!Dˆ,m$ -(n., $ P13D$#\33!3T?y$Y kyQzwȩ\C lH!KY0Y+t2A5k tZP֢3 :cۊlÇsOYsRO_Ggic}X^:iy||louy>Hi }i1 KDȌ=3RlZg>fm[?O",v DK)sY%21П׫ze<fm`8> Q?vUw$cxA6ؖy<cJl}{reE60օ=!{ 7 LxfC͠8 3f1 iN/9 ~ZǻMm>}<^^_|ZxmeۋxgT-ᅧ,q-?1m>~l"R DZ< o-qN˜LhZ<3 BK:e s’b <-@YQ3#X'M0YT2(qBpO'!*_ wun!1,Z3 ͺٯ0Otip4qv@(U#^>'H`w-3.眪 N@fIΈS%MO'\ɦ+5&d,5Y11pBDa$ 3)ְL@³[5U| GS @HR92 jɒLtA}LO ,E}@g/1qE KE3:# 5I0 !@B] R Go˜#hMяV &:B&$ƙ B͌S,&C+PNxBUz"p^}cO0!WwNcr'kBU2Lg&t,f硌"@¹fAF dB #q4]b6Hxap#0;3C (2c/% 1H193%"ϨI,>UgĐha%"dpE32L(ׅ}0IURP"+ ,%cdR+ʊ~Z;L-ΰJ}|,+F0R>1P-JO-9gr{C{0̴pdV@f灀۶\m9'`05 xRI8R Xwd8wD|wؑH3,8u1TYD2!ݽm}DD"; EDnK3wb߿^^яi}^ x<j-_!8iNT3W͈qg0<" o\nzm0oOcVoc"D0"Rme1j]i4Q_=͌3a]Z~=G^4U-6~߶{9.(̥r[+pQ?ÿy@L`f#Q9ýZ21\*8]u9|RJA&J֥5'fZ"U 2mfY[9R(~jY 5p@DQ|ajEd^@csZjq"&ϬSjԅ2ҧ9ָ̈YMb6 ~*Œ B$.H T$mϽg{\@GFD{ъ"Bv>B5#s0<) ͦPGfcd- q ) Y\&"nDҺnIi1\DRKƄ, 1cueD6.6N,UҼKe"U'@텱FLLcv{LRCÓ/whUA!9DEX=UK Li2<}Y1R)9!sڲ,DZǾ>Dl믭Bn2wOkuK_]j}]o1Oa$*Qz]UE ! rəЖgwcKՄ{WјPնޏ+O"e}<>Qa@2##4"k-mZ-Mwe9mXzI}U-;\*I{pOa1Zkn?ٜPNFe{؉-ڶ Dn/O.ʐQ&l.O8Dzuy:8ǜGBbQBDeݞj냈Á/x.D[Ǻ}(1p,nc~m۾\aߏRgˆ 3/\#}1m2Quc<0{" FR8 ؙ>$RZ0#p>%f7BZ7Y؉nQtp`N>kY=ҤhfhT aY3_,`@c]G̒D&H.]b"zxEID",sBab:"[GQst  O7gE q0D f\0|NgFHwTEq/bhCuMmLJ$$,B`6Cgdh>mY@ fEk RƘjjWeLAƘ3P z R @H,%2)3!De&\Da|r!b0Q+`)f !%܇$ZK@Lt7V$`U  %S"0_&E)D ңQ͜gR˲q[kϱ,{V_uʜDZ.o?s{O_8g)>qӬ/{KZYvauw""w22@>Tѣ?O#?M{_qt@ë́>:%Ik8TZ' `d**,byMyaE&19j9KKe"TnNhHzK#G?„(>ڥfsYsGҖ>Uds,%|'@yeeVD14C$  ^xu!.'/3k\> Hg%7'$Lw4q{[!|*K< b LxƥkAF% P8Ezd['J`1cY," _w 4bӈh#LpY V͜ns϶޴`[S!n"y L`R 1RX0Y3 MD4SE! Z[DD-1 sd&,3J. ČWB+8%ekvVZ1%IyRhΕsw giٵK ,B,nrk) fJ}i @LJ/X!$"$`Lq1DDJI$N"벹#Y@2ZE<$8EU3<*H>2i+c4UEtLOU8k]-cDY4D`{9 QUQ h;Nuy 0Ӣ2E~_xq{keAD̼h9FXDs+$Gq[L$,nChaccZJlDcr#kqZWeL~Xk?hZÄ?R@nsEŜY_ jo \kAHkI>e>[kWxOg~T ξr]|o/o<Iі18_^oooޝ_w\V (u 79\~0hHˈ5ܹUW|' 2 * s@s%$ RƈM˺Z g>UjuΕT(Fbp2 dAZHɟ$iD0E$?wXkᑗ$<H(6{ 8Za$G$O*sHGR CbpY'(^Jf@+zkkBdc y 2 >e]!LU.0%027XF-9fRJi!J/9c.ByZ݋5@Ei֪mkcֶ(kg0K* 6N! mu4CX*TcG4)ifH³O*q{%5ZKF"g[$R}9 A:P{&,)r=Q E(G*xTDS(,0e !~_I^XQY(~9g[6zǏoZidfキeCKQ%l|gQBD\qoK|2m4Rn9Ƕ>cT{?۶!XcZ*ǺLKӺA~埶1R2 k1; >>{-ۓ{[jMmoFDGw >Ip[7˯D]<ݗecU嗯__?/8nX=}TyT*1-{['(߮*߿{<>n'3fFwZ~pJAȁHL(m%)0?3ai??tlZM.{%*!mzOe,By|##=q*Kp4vT-0F̵.4YXRB\π:g/_~Gp\YEPciq gk2rR"(F˜gk<!12TuQd}~{)cs>Z>jf (3M2" yJޏK<0u>pѪ0qτ!,c6Hw~|}^QɎĂ6ؑMAmj1=vDiKlT~,Z#TddO0jk^ Bzkb@J  fftl+!e]&-Y~޻7Ȭ)@5H$$( D B;kPexsƚx.mۍ꾯 uB!d>8f'e+!_~swF LD̒3Bp8p1;\J_\1),0)eڂsX31F32 b0ht!QMTY샙0_^gXcSGB糱+JOSSW޳DڙgTŭPs6sf }ۧ^.bSD8 P"R'L(!1j6*+e@BZ 1#z)Fub\foagd}?&$0TqHU%y>۲@8Xqn?gqK꼢ˈ>k ag?O!L,PR0?C +ag1'sA߿%{;Z _~ݾa;=o~͗b6]JwPQ7BTU$BL,esڷ9)XUDt]O_Qv7}k-,|uc$?f:#byZ]Aqs)UI3}DpAfLFsH^'O_c?>"?7ѷb vyr昙8cg/DZUؕP0'asLBSygou0P8y?n?!Kߏٷ~~>~~j83y& Dș܏v&߯o?@Q,=X/?W..!|>Lb}4āo&+e&P~<}K"ߖ淏 !f/B|)J*L"C2M5@"uaN$覨orY'^ r-"8cP%s+CJ]s kS3a@kQF4ZR5L8@[7K1g-ڎg1Ajh&f0f̣:PBva r'S7$bELy2:բf8ǡeqUȹ3NU

f.b1{ByzzqtMĴ" B/Y,̹ u&4.WNb,g }mYbW*n@ADY\]R+BC%K!16yxDp, K5#!0[jA0ZqYEi0SWuRݜ+RL2NWRCDl&ټxΊ{ hBw'`'agapNQ!28P3 a$C5͠Ui0`@P`*IЕdCxxa(&A:] QLae"9k!\*c+.& ę8KC9 1(Uh)3 Z0OUdJP 5.0tȦ 4d'\bUfWW3$K5kQqޕY"}Yj-f@8E2sT'' a?>}D߭cxE*g)&(,n1o'5 ȥ8S"a]ȵ&H,@=ޙ˗Z `lw).b\c֋]S]޾, ؾ˛ɜ?[us@Xh .:YqbvGL߶.nCgy\//hK+qO_I *l}DbEˍtYdD]mS35۷}]~>D93yyy{HĄ0;2#"rAdus??eYq"ÜE$ 5S5]N03OQ )2;,™ٙ”]8s fX.qxN4@$ZqQ]dY<3ZݨƳC5YJ1 ku(Ϊ؅LԈ{aA@\! 3.+!DeuadHË cӌj)/ OQ(G@ )D4DEūF}\0Vբ-3j3vyϺ8Rv2q"5N8QˬG41bũ@] ǥJEKQ,UUqg0+BCˢBS%eO¡ Qo/jU( 9&PŒ(8DRUcRkl,YhRK]L Eg*x0rfF0![;@U2Z)jˆL9q&eEB8œE cUgvaJH K9fZ܅)<.L@4("Nw& 74S ^^/ ;M>`NwUE>EP F.2jЈA Kx׫y _/alB4UyέJ9wiFN XR-a^o+#zDLŝJJ+Z+ݟs{Pd>ij[z#1-߿u]WL"bdČ$? J3sĪ*BD9"x\+PyI0L0Dd&&;-=FWqssɈ}?ݔHl/q^K "9gxG,/ 'L"**Z{M4˖,͍E`{>_W||u9`b΢1猑cNbj/?yQ_Ef y6R!/D{)k&b[Ls'vZP4*rB"~=9cveqRU^$$5UUH ̴o7DcC1/eO@e)ŋGDّGo^%2XxM Kao.^ "1Z/ IJ¢Ĝ\~کBL|!̎9JHv#19cUpDLaCr,gx*:A(q SFy)D:PFIffR$CuQ2S2p*q8p$ęіB9Kv> 9T/جJp+'`WA&(B-,tNWVI*k!E]Di֢a%r2u"TqMD)bŤv<^ p2:rj1J1U8Eg(yp,G)EB%12$BFT3"eQ/ ]9s/I!B4Teb*LQ֏MÌXA*)s%!Ҕ(&B7IIM80^ʯ亸)Bc`ݽ4PA` 7BQԪR2NsYMUŌ??tRM+qԥDLp%UXT$U,E;3_6{'`mavܝpd2t#cP7@¹J@qB,lyD?S$CajƽEZt\u)0;N55S)' b(Q&fOՏmoomnhƭdxԂ3zk w1+˲ ˺\1sQ׷y1=cxaw_RB9k7̡s\.%R! [}}zeo\4=Xe/>,kpYf^k{LiO+ߞ߭^O|޴ԜZؑEhE?_._zݱoV~>vFRo`nm±=~eYm d<YqjbCҫgwXo?~ qD:3T[k,1UOAWc@zCDW~ A 1$MaffFB&@;@ڲk;8OQc=9Yx|YwߌM1I9bĉ3,T;4܅hbR a]~}'FWur[M0DМTa@>0\lZLD)hiN/kY/^x#e}eaę1)uEHUBb$"z). )_وҌU1}3#ĸ\bps hBꤒg]T] &ŗ^۫p( bFZw6/2@x8HxF!)#rMD!"nc*qZ\sΌD(׷*v"t&re$ӌIzUZf{UՕ 8^|17`nfZ~ vsyPIF<0 31_k.sq2[)E$K53JVmTdXV'ǗUb6fՎ',EsY\xq`, 0vvbAa,d.}9FEqγ{)jJcuZK *st""cmE,U3`!,IZ]j -1B;J|]0Jf)0Ug96ZDṡJZ,ĬA@0j-bʜwՏqeY(fjGOR[5$r1[h-eOY4 џozu D5"HLǹLc~>73{myމHTu Gf,K}/!g1aqxWB߿9:g0ײUEDts. ??fـՐKg`u"*z>G'c,e@([:̗lge?NQDy<7bFbqCbe̙6"TڎyfKո Ƿ˺rQGD(-+/7d ,(ld{ UDWܘx?{aNP֜00]wY VTeΓ(EDMz":e8I"t5cz!$S(F?b3v) *0 PgCe Z-}&fB  IDAT0!!]LGoX]ʈM8XTXn7i&BЄfR%ƎЄqDeQ)/c̡ƾ9=Ɠ1TQ֢4g/T`ξeuYrS@Τbv!&frt[*]LݪJ}FEy0 3y63VeSQ:zjbhB9v~B ߶x~y8 㓎_t)31w#)c<8K)*eR+ D!O }Wbe"vNB#ʺIvin"(EMjCDHx:΂J–BH4c1 嶊UC8KG`"aq7A^qx9לq"0d6bvfVCfh^ r[gCIYޏeaȦB@&^h`v$>& J.D*T7cJUiJL`$gtU*UIںP;)4Eɚ"|teQSuAD憵:+ Ƴ τJX*(V z[b8~mSՑ8,W9rd $B8C&]̑<8 zHRrNH船=rۗ%U??E?8u]$"~O@Hh#OQgC޿ZVoK2ݵZs4]c?T 5D*Bχ j<ڜ^/a?\cgh$9G? H( e1W_yˣJQ/_ˈ(忍9c&1+&N$D+Agc]Tdy<f8E, x`g!}lZ ?1̘s|<VkYjdg\Ϗ/7 SeeɈNw;VffyNU%lcO?%y\nDs+ Go9=0L@vPsVَH9E}ͅF;Yg߅r%h*~*qW*U^:(fՅpMTynݕKK]J*TU q" 10s](Bv1%\.UԀ1Eph^^=#"XC+'ʳvx~/z-D(Ŵ&R\[^XPJ]doW2db}ռ0xBZS3bkuw9%klj 0z1b +-`ufV)*."TɄMD!ƙјA 53pBS2ٟPkUF-j1یZD!c& y2%SdNUmF*\.ZU3df "zn*-'A <G)3NT& b,sy2Ḅ2AL!TA3:8TKe%9cn];"L0KG5A1O~Y%38Z(OZ֒,.ُ)0}]q_/UY)oE0kuF$R` DzDPe`9Tw%dN`9slIY8Ǿ.j׷d?ADR+ F6^#0ejVeˢ\ `?R̷D:GN@@.bklR63׺B2?Drgev<8ve~=΀]n/`fV>Rz{;ϱ?b̽"\V B5Sr\bfjk1I^|wgyqİzq'Rv0 ?*,#0Ja-32I 5Ǒsֺ箒""o_..~h,&J_/I6(0& a. *,2Ӳ,fUT8 ӫfd1߮W-c !.e0S FN]=C\I1cn)Jz}s7iB#΍*$Dׅ*f0bh*c?cdnU08w̹, (8Y 2@($0(eK1vr+nTus1v,yMHD53/z86D|{{3~V"q/ɲ,HD‘#rΈ%b{c_G;!m(^ZYy41Rœ"Ds>qHhq@1^SZ[.7 ƘDD03Ѷō͐XGkXJc;fH Ѿmyb1=焘֊c1{kNj @1@zۙx$xP-+>?~m:BBFcx{}0ZH"&̙3PJ NAz纬gYguwsA?Kj˚ AV<2AlZ l[)q6ką Q"'"䱳GGv Ժ1G#Ќu-~/? s"4fW9)XP] =EZ 9&1T)# V8۪HDËA\ GkcH8{8`9mdDwcaFcM\9b4W%*K;,sg)6gw'i1fxnϏ.Yl5SAJx2Sq^ =j,u)9R:g/EZ?A,׋1Na,z gߗu_EfeYc P5'f5nڶpVL\Q@^ĄY ;pCd%S\mqCE]YalbB9 bd2eDFUɌu97Hcjy!QLa`ve(kq9g9⪼ޮD0֛O?ct'C P!sY}g[V!jK+/e ?jcyZD ";+AoIHVTe) cU+9aUaxُf8Φ~Z]dI0۲okӍKՠrwbxR$Ka^ a?Uv>^oO_:Ԅ>//?>njO|Z̼֯m[¬>죻"V{vorY>qlխqy"Y^8K)*{FtlG Hrq@8x^pDV(yfY;Oxb{ޫ1Z!D :dv0"1"dvTYY~&n.ID%FeT+,GaѾ¾J#!DzV҄*_ |GLIrA "l/_ $W+8:*L!-\IMr)Je n7"ޮc,k)D\oT (3L0Ȗ@H*T yx$LnIwMl!\jgʉqш=mk>:Ĝ32˲9%u+{W)BRYrTco)Z6` &RbfAo#*LZ% ʩ$A?,jcPz5TқȘ02;[߅d"9Zۑr2$N̩<5mcz!FUϣEohӖu- `̊瀾l mŜW-8t_\D }4ი[8m5poѲEbXfmp|Zmz͋rq Qk޶Ŵp4_QN #g;@n:߹ۛf3Lbs~}}޿}!a!8S-"YssOEB-y!Ѯ+Uأ_ sMADAIS(JT6sPH]C;ϝׁ>L7'afi)* Zuu]ɯ1yY@DɄs\y[j9+x]˜ӑk)aCu\zF$7e$gHяo6 KqBBa5Kp>4&]9%So0ω|/K.%ѓ͖Vpm(k!0g$qtM8")khϽl0e!rɊ1rLȀ<9-; 2>ƥZTFL+D!-lto6F Wmwhu>1渖S$BQjvsQI SVPfU^,Ly\jU͈nե"HLUsVJ[g;japYQ۸u]+)*$9IoQ3̾_Vfp-֛H@ᬌKýv1{#\ܯ+|m0pZ .^Ј`0ܞm3/hԤ$B}6cMvKB8BDHR*0rxM gF˻\Tz;ٮ)KDaFeQ$%&?O?b9޻!|M%RJc֞법R{s9U4F7L) >0 g=  } "ls[κ}}k FoD99'!+ZǏ1~0H6 ME8IJ04D}Q:id?m󈳷@XJGJ<\ylav]G.DESb JhEy"O?>5ڟ<]0}́HK6uhfǮ4bdI0T 9/el+p]W}X/+dfVohʚ ax{"q]V)_Hd3s;MוsDI>?? @;sN qSI֏#"MSZ 6yy>—??鏣w!1\K(5|uj叟y)#.jY eY D%8RzZym0rvy=|tՄZ B5ѝXPR*Yr)`9p<_ QƘ- LSe_uK57c IDATZ\[?Vk~S*ȋSQcy9T$E}CЯJb))`@RWNzާm~<ڴse!a ~ޙJ^a3 +J`9u>f]sR6jZ702ļܝ]U3csR]Pe~e ~#%)ieb";'F,u:GLsZ~nv%KY1(s~K52#Ϟu=#f.i>i"Ԓ sS95Ώq=nj9aZse gWɉAq.%hDfIݦ]@&Wߓ"~8g>ǟ~R;Uf"su]",f>]}?}Ζ`>.fגOyܶ{ɩKU^$iW%ܮ,}[7$~yHYY4KﭝM5GYԵny[ s|sFRfH!K_P5My}r2 yXnBI}Y|Ŷ,,Z%gȞEH8Z99zxW 2ZG덅SJ6rEmCXz&(mk_ eϿ埅DX8?'"Тl_ FG ptÔZV~ڑmogNE˶A s*OUms|%~_aϰ3e pfeUх$/%3# 3@AS"aqQ뒗lea&B''kFxyq{YV 3L݈NiYPzGR3~&Y5Dls|\)E?r] r G\8OZ#&E01U=}9(\@w9K&D!;3{ʅES.YqS̚洬>}pQB9~~ִlo FxcSsRL#zgDih$Iڵ!\8޿тE$A>q F7qomYy&MRyZ`cS֔)ƅ1縄_ШE%3y{]?gJ |GLG9{UœB%/۵;DHwhd1Us9R %"݁ל}8p\cYy܋.lcl2{GRHf6ʲ&8c @ vx~PDi\38|S^H "RΟXn 1c_o1x>oLܮrajz{U foϢ? "Z9&+ \# CNnf΅[o͑J\dNQ.LHgN['@Q :<=½.ZfJ A*p1rJar]lTW&Tfzlj||$- C;s Lx_$߾GDVծn\^Vx bE未*zRTxYL?BL 4}NgcZ_h+#R樥X@JYrӌH^E n8{s9gƺ kmF0QNR%ǵ' Ҍ̢8Ops\rz?z c|ǣ01rNc\7$1zY9eWso1'KJܭkI)$뇏IޖΒxY}h{[r~^ϟ*̤sN/rB^S D!ɢVHJ1X$!x0Q eB~p&d|*/w a# շosifNv#t  aA8kfZ336 wFt3դom|Q091#R-%; ,Kv.k D\jH|nk-Yߣ3SV& UU"c"t $9gUN) c'9zٶح;ex R)eIfl2TR4$uM% sV,*" >sB|| D. 8C0o:_9p u-&0EѴT|[%(?~\r#HII|TGRjd?r[Ƚ1z`=)l`"$63 1%D rȉrIfs.ZǸfgj\o"Ԟ_GDU+K)\Y85Q*B0k.A۴^jiR ?ǒ0sքQ(&\<":sk]_ER׏Ts.YSD ('9̙)엍&ʯ%~"nyYo)乬6Ob Qaa0 "a|퐔g?,uYfG"kO @r$B/|kDG#FbMA~jF >:ٜ˲@xg#nbsE$1ɿn|2ǡf6yaX3 #sGe}הE32"a*%%f\_B!eAdG}D$i?N"۱?0_wr#6gz׶TA:8- Ǘ"sͦ GsZ bA̯SZo߶y' xܽ6,(y}O~>Em֔_?Te?R5I JW5<bw< _si᭧Z?<Z]9fMrnFƹIeۦ HJI94{{Z>Oa@Ov؏R 3_1{JxDnFO0"2חOKDwT>~d>3 *z;0\\6֌L(4S޻ Cف5*O{YDǓ̜Tc?ED=F\oȹ.wr|ٓ[j 0'OQA295T5M+RqD0;М - TkLIffc]+XoZSE๮cΜSk+ $`&&>{m?|pO9ǮĨ='@),ђ\@9;߲XHUXD *n"n8xm61u9[%FxCյuKW%9UYrJI^6աo+dh)I̦ BMh(LlߖRdnvNMp+添b !3Wb]JɈ摒( IF;@#dDBy DY GIoWnoB"ʄao HdVí.FcG?p.eݤ9.m-\ҺѻdU|60|*1C@Hv"DIqa9; iíwsmcp `/Ry "fK|- 0{wqZ#~˚YjJ"{-n:!BuR*W)-y%# ~|΂ʙaiJ\8Ϣ)5/e' ymB*IHhJl.K5qg P ͋ Q+[?=DcuH$s=KIz1Nє:R&$\0|ynHDC~uïϚw L3;4}MUHɁ'8L$x~,vM37BLH "K$i$Voʈ@K6Z`FKZ¬,%W&twɈvvAʵ,d03Ӯ$[sefӎRϿfOpO%KLgdq:?;5%R0wV\k)$z8' C%) >-D5{֘fiZ܏.Mu7~ ET(y j]UPRJ>/!*EUkN D:;A#OT (JtI DAr &՜R2kLV؟o~m^zLGMG)4YBRS6J0(5%$̢.VGY*!Lo֧r+B̓±ח￘uX~G5_tZ$Lن3)S?jǘ>/„8¸ڳ$1F@~Qu |U=FOo[HJ9\JڑQpo @" 9_o,@5Kq_'13d$I 냙Q*"<$(0>fh?ouI1s&edu3 1 瘽'Mu@}>ARy>Ч0~qtid$gfGT0"b\6RӮ*9M3<窜YR؀h?}8(>=$"Eċ;z"?9 PJ`!ѭc醬*Cs>^B2z%G" bkm\ /;ueYgm`nsII6P vI$T_?￈lOA粮]W]GoFϏAUBjaI ׺&"s\^;P-0l˛pn Rw4gJ|ُ>#Zk?1~Zy=s/ݺǡZZ`K9_;3ܭt]{-麞#@ERnHe%fVk%G3 䔔󺼀Dn}Lou&)J\"ļ# aC_~q#BRHsJ(&;dKQ5s{#⽬,rʿ@ 65a $AV"3+_Dn(Z *rXc~&,/!KhXc LLC5%dmb0`_m!F)D/"tNA4la@!&"nۦIƒ=wP91QAoi[Em6{g6~gk߿]D O9{8# !*1"2"v}4[wPDnD}\HD$Mn~se|͢ݣb69e]BDJd|>DXUܖP xOV.igJDlB ǿΏט+3J)^J=:e~ѫCYVD7)LsߞǑ{WU!G-R0R*x~SE۷_|>u],1F]M{ZF6)11yKRm9FNsp^l4:0'q"uBϹnff@@׀(( qf5ƚz_klʾEJɫ,֚n%LrZRĺک0xWTRR*WИcTl#DSwPKymrHA#Kj"R1T91DZcAhbDVwDڲøڶUp7_0ƸힷJHZ;+1 'չv%[kZ1vwIh}` X8DWo[b=ncoo(Z]6D!0!)"zԎg)sb)eA"JcUܐx9ۍz溅- Gbav:z^Jkɩ2c知_D̥Vg,e=7欵񳵶﷔v f9g Ƹ[K9T,’Ɯ}Y}\ 1Vj׵m[-I\Q)Go]k%ןvbODaFRۿ?S-{D,:4peUs6 |g9) Am3˾lRrZ/IDu>F/ƲzmyϿ[}'\t x;c]Wx{Ulg;p`$V "@0#bwoׁae!ݑd{cQF$b ,8A̹,A,UR{,)8ϲ} "D83ղ otiȐ{Vڏ\thˇ1OD-6kߑbY'z5`Aoox-[IkB&M)ֲRRo'&5 %iʒ ': `R0!B5؜f>^$d"b$bQjM1clϒ5Ehαmes^jsTDl>lM,$*cvNXcAHW-ָײ7NLꝂ֖")0 !bnrbT7H9_rKU9!<:.0'J̌űR)ΉcS\#PSbBXk1↓1Ϸoo]PkpI;qN%H#++tCZ-)98DH)ќ3oy>DZĤ[-g-{BXtQ3uF:"<:1"YTg.[DAi 쬥:z5k9g_"+%r/t3DvloZ d)v?3L$np n6E궏9>? 90 1L/Cƥ\`9;oZחْ1KEL[_W Bݷ/=;(pR1_5y"sB g33J3exȖnᔶ=®ޤTWyVGk5d6aLlZ$ս_Aȹr7"9, I|_9/_Wy'\C} NVn|#\fIQR?x~\ݩn7jBgZ{)c\䖥Z2HPh@+|56OBιTEq{ LuXp! %@ˍK4DR* Nw} s*Y]VHW;7ErR%$a UVɺ$~'9;4W$+p4\r-SRgJoP"WmcMfȔ=edx>ErK3'?寿4391=?s -;M͓&v=Tr $ %va$kJa"$E əYb1:byR 7",*DW?geqم R9vn߭ٞ,趯'i*gO5yB۞5Ql(V:YGoϮ> V5E%wҔsX1BSE 8;a)bsдɌ^( Ur}2kk#& 3Z(|>R=?zl;KZ8k)a )>p#dI t=F bZ1{, )QNmkƼıf'D2G| j Bo>n7f5MCtQE%CdָX",AUr2Z>Tk>O[SJՄ=?4\藯#X9QYP.;#RMqy?zR_wu}jpw }u4lԒ24̚Aͯxvs"8*3V0n9ɏp՚7Ƀ|{;xc"'l+TĬr'׃jNyPʍ%iX0U*On ,9Ck !"" F;mߙN$vvCBs3_r{zdђHbf@|=~1Ēٗ}gc{# ܎qMD n_'#KD`D1ϟNl`?~/Q眃avCJDp|> |,JB=sM)^A֔TUrQ;D l1{:S% lfs 1ӶoQ~6 3KU]ZYJsiw@t[|gk[N,9nZGފ5 R٤iBֲ–$"Bf[#DW&".sY2C FMvc漿.7'ThA,%]{&DspOIY%|>UJv bNFoϯ?[Ha$z}|ybιVkv{G߹ĵ~V HTi8:Z]K.1F<+eMn6E¨{GMy1f9sN%?~y5a_OUaI.$H[c"6'JN feHTj5GoOZs 1m}}4Ps^Hx"IeG)տ~Ŭ;<I$O mׅs^烙T(v*&i 1t}}"c{{eaKumk:K@*ank$ǚ!Y߾hkӨ$vi r6.KrX[}[4-P=KHhf3tkBHq,￿P߾y9 9ll.^7МS])Н|L Wo6xY0ŰLcΜ9IX6ct[䄈VIT4ޯ X͘wXrcB=OH[QD Jϯ7d5j$y'U_2r3wf~)P0mU5!335DN񺑰vOPb)7Ժ&"sL*Hcx*; 3 " )"2#D8F" 4,g?##Yb3Z&Z%Ma{]P _SIwBY Y?6n֏Zg^}h=l}&֛W! Bb!R[יxP9AD>>o2]yɉU ="8>:#'WFY 2ۯv\q}B ]˗4A"XАc&XQk.-,V2vZ@eW;"VJoܶWj!O@ZEE$ 40Ƽ\k)δݧr&/NGD}9yP|vvzR֯\,[Ds)AĄ$aSЭONAXEH#֬:UfF|-E[]uU ~sNHf^az￑ӯ ^W fQYk2IךĨD&# 4km kv< u>""?},6V9[;p@z>շo*pqIu8 AąAK mr+vsUfRWwj}%1SZ_&ei_o%Ucd*ܮ?r1<*j1.h6߶ֲ[w_') j\{@񋔷`v,do"< ih?vy<)Y mcfa \m-nR,=,IMsu.8 )%79ܛtkoo2ǙD $q}F0S{YZ;?sٸ|oD6i1,fϼ5B G0odc&&Ĕ SJΜu|z_@v]=y#ؾSdoel4kkgyۇlEт|u)Z)i*;#0!H@֜L |pVX6FRD(|T{Ƅas.B$x^9n}|?y>eoc" v=@ܨ]5: 0_D1z;ϟ"ќK)6~~js15+2ٸ`!FE¼ooDdMnc@񊂚ْa֧J pAbɀ4" HL,hgΊc^װ<޿p^FP6iyy8Y\}>r͵ rHVFd`?Y(eZmK(=Xs!ujRfdF*lZ{Hp7'"X 33u>n%궝luy5!&1FGQ"D.aqTY_ i^y6NiΙ_:+0 91fH‚>F"P?u+owT^k/ּf q5V""v5"2!v8"o*}cR.)SJ,U:A6 s*|v}23 !;3LY}`ͷeI ]rD|R)jktb%)Jn}4p"[ȘJ0__'HF$9Gפn>Ĕ*֬ 6=|I̹$~ZKVeHIƸBTsoun>QT%b RFlp%vxJs^ka 1r/!֗CxZ; m ͅm4 AH2i CkZ6ED2Zlh{>!||~}\wVJ33"5``Hx SMT"~'31Dǫネ7xa`'sbDZS2=~%D23&*0SSR8F IDATz?s)Ѯp}#eO3j^o)ge|~5FJ̗&XUД2"׹ſK!q\B$I7b+k^s-Ƽ#~9e2uz?3CFsM:h.  LX%;ٶd*R Ys*SΉ0#B W~3*(/f#D&sZaZwcYJo*_Q7LRbNa+"$$/ @Dq|NYXb"iX"Aq8HZ  1lR~]l5;\״lo6Z[mndsR\kX ۾g-`D_yү-הa*luFɬ"&X}vUMJ8I# l  @PUuޙu13 Hon'Ir詮6+^rTls w&8Χ&^2KrގrCR9?Kky\3n8Dt VuwV,*^7-YȂ9' KNG& 5|90&ס̬aӽ81Rf S9f]o$6ݻ1C$bވ ͂ADÃJsYjY ak秖R*eYf Zs*|>u5k8η7.j9ex|)8Z)I#^k%oD $isIYa:͑SVfaFĜ[TfN i"fD:CSfB8^rCp2D8]SJZo)1}?a:k\~Oa旦WHJ#c;O"aMZ"P=)}}eYu19~Knw\k}6NP_R18/k=ϋQe"uΎ*?z7"R-\W}{>6K"b+l UJQB$C_cV $@wpco,y`I iLB4%)kp^|R{>ٽ&*u1z?t `k$+̥q^ϯ] X(#dK%ٲF;uZޤ0k49y$)v8mBĐQo,7sLuR9Ih>g #{wהBDya5ky֒D{Wt~m7N:mzv1czYRNʟ|0ҟ?Yp~4Ӳ> [eLy]eI 6 "!3]  Vʲ=`:0OìsNJz۹L@`] 1S.IRmtۛ]{YRJ/+L1(ކKNs0Ͽݷ>Z* 6_"w!Z%GJP4M"N$oFĚrDj#R(+4WZ3"dZ+e弐qD;\*e}D6J)y<bSҜdf`݀X1|kb(yiE. ZDTncu}xE!H @̈8weHs[>U $ V8CFu&S.ADC  #"|?*ZRn3p1z^JJ*y+Kc.7*(9r]Oed_aH,ױc|G>v&R(xf^u~2)C>QfDDA/Iua-W ȵ \7C Ϋ,v$F?~~=^;xDq^'#VG k!byRRͽ_M@^znnXfCk.ea1S|0Ͽ$K"`qn{;v\9k0B@(nHsX (P};bDRy 뼲fJD6||dhmiW+ujP6Myov[D Pz~v 2~}6<2sVJѯoO"d>EBT*'&">FCDm{/6!zR5O$'b0k~CAbTUf <0UT:sYzׯX-)I>--+[yf$Rk It $9"HrzavL\1ƘTsuk*IsF;""꽗RgLR)c5ُ}8!2唔S %܈S !fEJ.fFV y90徼r?jq"1xeLtܑխa]@$׆k.½pcehSs\Ӹ3QJ!#<+D)I9gDh4dn*9Ĕ G)iIyY@@h3-Kr1KJCAȪzR3B{.ԮK8/N(s_o{AjdiD &Eq>sec~qQj%k"Rs 7aЀhƣ1`Tl混?_BNϯǣ,,%nIHL2|YSN6zJl#"y`+і( 缚OW>ԔMsRZnVj7HIF&u?;p">zlpҔ/3w"ӉU_i&_Zfu^˺ٜ9券Z{[sڄ`YEa 9}y{Ƅ@f62՚~% eqKu2ºOjKUgTE?""- `  v)%qpM91H[?c1Fʹš#xڜR2bu<Ξ;qSrERt_s#_I"@bRJ0R SDj飏~i}!$"s\ByPr; sE4YJZ\1/F0*vk?v=3K -,i PHH"3"$nk^Y]_Q%!24"" (I9-nIR>"E 1rRV"vB3kJu!P , ,lea#ҋJZ+"ϖ(ۦ\z ^bw#bdbdH$) ~֯`U&g||Jles ~~r˲2mR#^SmIH-Wv 9 ,f|=Xu}?}Q. |v%ծ$? im9e09-kя} p<q]֎@\6cߟ[YuV͹bXV\M""v~q,}N7+%@)49\Q޾YׯTun||Zݧk *zݵʶE !Qx"bޑyO݉RRpKp]"ibOrs>޿)2ƄP۹kYj;ٻc(-2 ´,bTְ9eRo73]xz*9%>ۅe]+R,:F*Oב>_ZEx<,Ur23Z)/zvj?Rj!q>wD;cKcݘ_?Z#ܯ\;fUTU0wMjfBp4!Q$rO (v"iDhJ_)Q:H,ϯb.+1Ve)*"6gk0E#߬8&PW bM&¦!J.lq^7U 0 FZ Dz}TMI#⏴&?#uR:rJrGo@<>H?HQO GT6.f`esΖHY^ו)h%a%b&I$SN&EB0ή7tsu-ju06_1zY$~H4nu{{>aD4]},o߾֖e3s$%zLD)Itzi4۶iR5 0SbhaLB 4+Dp„ȬyD=ZE2@ABD r_B[;c; OpJ'`ιYK˦sehg^2Д^ވOp U.UU2.Xm9/DTSݐk[OHB,Dq^R4><`דҲ CRLS~m|TI_ %dRvusy[NuLmĐE@Nyۜh(mowsZ8&<8R>ά̍YYDPw1z+Қ/p*[ sR SD_y^6bnuɈ)~z0mʚe׺9D|>c4 eT?|Y.KiW#Ipq{Q<ܿ*l0O*Y}_K} Ipp}4GeYIC$Ir"ImL>#d?ZJ&Ge!훏IFȴ}H@fa_G Cm`tv=؃^Ϗ1Gy7:'0'"n<6 } z)pD$a$<ڳ3 1ܜXzlX7^ޒ[Rnkk_c\$ ;6v>3D2p(ϏcY~}1I)kL߿%啄dns1-4Ἦc]jP7~N@$M?jgY0 xFu TSy q?%Q#8j͈l6F50?*ǃ!EBf6IGX9>[Y +[w-|>g`-%_ׯTjNWR=E͛D)FYnJخMR!v>MDHhS0J$BI`zYQs>J*!`)\Wbnmmp&8b>Z=|Ya^KxqcXol#%Bt{nIY2~=BRC Qk]^PIl'v `NDc^;byFY_i^Skɿɲ`vPkGۛ6PR:l#(?7't-/og?1 yXuZesS2" }^r1N|PI^_m5|zoH,Yp88Z$]8> 1[[`p;u]nW|=~^S51[+ ݆2i.%LJMpϥa'/fc r̪1Q*];KmySܺ.z; ` NY@Re10ܬc?F>=e& 60]/H>L54a6U֠yRIKi8f_}OeYFYH"61ڱo<I:E0>I98GS . IDAT0Φ!81"8(0df Ю,:='#W?AE#|r<>IR.>1BD(vDH/$3}L6j:1|gB1sS^a!-xjfX41(PXu{qL$. fDuIDѯv]jMQ $ ?=%kv?{]6>EE޾R*fA.̚_w܏rJ)HԻ+\*2a,Ɂ$0sxM R)RJ9F-=ZT6g>! NGW6c]o4궦_l?e>m$@N*62pH9YT4"3!„")-|ϫ}2l.Ĥ65%ɂ:ܟ"Υ1)L)Ou%9ǰiI%ZpUCD U?nrNH~1-:qpEBpGsQ@5 hy9 # ۘp{MSV׭Ky]! 2ie6z;%e}monM,!~ZOD<3Үk6i(`i_n @sJF }|s&@cQx3ºToh0'Qk眣.[<.v]$rggF *r]=$ܘy+ 6OCK^`%?~$ff9="vyĬn-)uav}y5d~5Zk?1r{(Y?\X}6i˲ZtPcX{73A3@uN4P$U!! (I?6'7էIcZ]W 9%s\z/R-Xj6Yk~<~C4/B2Cyi)y7'6䍘FOoāAe&М<\4% BBf 3׸cbR1u 38p( 3rZ#I c_Sb"*L,e9!:!*P6`tS i 7U~=eYr]įaI/ax;39gDbIP%F_hfVkE&$N ͧ|維..6{Q크yɹs'̵_׵ךH6F,)=|w3#z{~~՚coײugR X8Bɰ7D>-l=e1gɧ  o$,.>]TSݐ`J)JKy@]3kJ!эh!TyϘWNHa}x~ٹKa~R]GuXr23p/q4#G2عv,nӦ֤Yl+M k$ &Ӊ(j||XR5ww. k}R#S y[ɊnDXDQTֻ200u&@ף6`10/ @>Z]vfղf@PՕ)壘0˘sBLډ!D8"LR"Ib-̔X4ic_ߐc4@LyI%\k9-F 4RrED"bcK4b.B<1\=&&SD:|DGs/%׺Km<{Tu >Ě诇RWKֺ0m{K%D"9µ0keyB"BRf_Hn]BYY)1U1ǵ{~iN>gPSlβ,R} "Zn7@(&D@$5&4ה^_¨nkus-YbvYJg@ V)׳\!psyzBLdaߊ YGU-M%1Y$".q>Ӳ8fy{#$AUGDx8vK]_у8>C&>pYRZ8mWI ,:Lp y Rj}߾})oL Tb6#!!PpIX g.%~< $洽a[QKnvD@Yˆ"∽])霃`)N:22Q Vw}S]oyl?~uuZoo.m \~}rRΜ8'T-$:͘0DX\Kp>z^W+ 1: J #b2~d2onHS$6l^S𰰋ƴ܏U8'X9_Ϗ~5BHRNuwy2g_hNÇ_ v<;XNP+ s9H(D&tcL7붵6iC^[܅9FZ 19Pb1gKs'ޚR*x<ۗ/oᅫѝM!&H(8Ĵp:q",^[f1hgw #p  #EQEc3LKوIǧncLxSx|~nSnsY6&91.]_%=Ar,鼼7&R5a\ tδ%XJgHi٘>BX1FmB3˘!"zc(L>( ^2Y$3bP7B9tRH91rL:_%ޙr:sξia 1zn@Xϟ7"f"(ܖwhn}Nflc )uV_ Tֺ?G)9TJiuĸL}]!7#8B@I]_`8~+G&d)&Bj:Ӳ. U9{Mu}O,l>a6f䒖Jne]vku7 t[^Sn#q t{A9Z=u'c]!H\֍sohj`q1: K,KkC>N!Iّ[Z۹ YBevQr9(6sa'N̡?\mԲ9/(<{ !ŜnǏz^m,-(AV5Wc\e|=>KrZAR).5vܿ 0<mI& l6g jR$HS3D"XSQ-! N+zٸ?>p:TWuǾuǏóZ" 6lҫJ)̄#AmOp@@6jə)ay5UGaYǼ,21At\nwNl$?~w9G_~AB|䥤֪^bbnzb a3#.vgZ/$m)2SR'e-S;"w # 2ƴD E mM/ q伦]ux9'8w`f´lw@v!puje^OfRk,>%Z̫$F?k)+0/ "A\YBe)c0v].H `1I~}5Ri&H6J&8`,:,J8 UǤK)1bH뺬f:kuWEtC7k?ʲu.:{R1F@dkJ] (u뽁{ jl-.kHi{=xO$@l{Ƿ6q218J̃{iD ,:l$Ĕsm!̵6I9E~<>)ReY@UfKή:;nP0qŒrRbNP|,pW'.+0 EDߗ%u|j׺,_$x\'ļ?BFGzcNj {©7S>GLc &(s4w5sfy@H@)WD\$IYT)@B9x1&1GY;!Ҭ`qa`z= LDeq1^ru[oCsFz:2IAl؝řDDCy121uf"4׵@6Zo!@B>l+ch^tNJKs3$&ty}_ހ1咣"D3l*Bp< „nRڐ"jl3 !qu]:n/٫:e撓I>@DJztD.%^nDxAlEj$A FAR(WuĔVۮHn7&i댂RǀBZ]!R78c+-o0BZE\$T~궽"q} !A P$׍-no>{3i-)eQUp%u-.KH 1ÜeEaH0 Tͧ>z ),!Q=leCId0g+%x#>Ul*5En4bfb)_D+y^rFN\TafEQo/rw珒 3b lM!±,VaĔ99W U$"_B#sZ9.sg4 (:32Sr3.oa4zwW xs:%D6"mfT K>eȜBb^nNHN$f>>)kH_c,aԚs e9ĐwkQCD)a3荙B+B۹ʺ0x,%ooS29}i}vG8ߧȩ??`p1F IDATl t>s"&{`\bYj w% 71κ~Dz7 m0: V*`ƐęKnİ#n㼿 !r[<1*I~ 1rҒ6 oezs9olNü~TB_sD&p?lV#؆r$yK`n?#K`\}^#m[0O1-WW~>;b%oG}|ۖ(By5C5E q+zts;zvO2K5,WWS!$@u,-w†) ?~~Uom}m2R@紶|e*;3! kHK}|b(9px~|N ."gL>IHC  %a ׵(7Lw"1}^A!ǧڼB` 2H%z?`bӒy>՛Ltv"||_//8](p@nǏYnf8T+ $|Noc0Hѯ%?~$e=kߟ9gB1B֏Y6c)I0:>,If*s y;>Hn?7\;IFUB0f)G旣%Ho' kij6J"hXzա#`Yn! ДRe)fjzmaytB,Dؿm3  Q0lV{=xZ{:jm/%S|ߟ!󹫢#Lu)*"JNA#Jp3b'o_0*Hx: x۶Xn_=lID"!/kLIxI 0Fos<>US-pD"˘Uy=:q~Z{k~) ⸼iP6F P 6ccڐff:6>\ {t,!1bOVwc_:BUkXncds&}Cm1R8'" O)!ޣ콵̦;޿>){)lf̌$Ү ˺i:RN0,l+?efH(́p0׹(kΩ09SRm@} Ͽמ‚7?!=XŘT5hmY~< j,uNkYT"$fZpBTJoTr^)Cz"ϗtYbqn!%UcB ]0bI/ox"蜽_]fD~fd>|}nwp҇""3B1"h(u>bhφbfֆٙИb]G/1}~Ob?=GL̳ ac9"!*RmfN9/mj;>MgvI1&"׾ %!)a:u>\e5q"=Ϛr;p}e{W }-Qk&9t2s5(: G)/XBNگDP^6fchr{3zqKN " c49Vk_r۶y\TV5g$>h)nWi(f97&19r{G"v(#k( -,pG)%lnN!ۭ'-Xm 9甐c,#> XJ C /59,1uN ;?Mr$t~aڙ(1qNGQ$ sSR0r#GJN:\XFKo0DRkHf}s!X#3)0tϟoeYRL!m=@ 5WUS9C)6H)͋|6!!l} #%j3<էM+(si#pޯ ޘiV"D1Ddِ0RS/pev@pazFoM%3 )儀yY eB1a!-$KH"1nx>|j*i1'EYT֯ו8LRٯ})eB B&tӫ{L% 1zY9h1]^3Ƹk5lE*jQCi%23Vs's/6R J`(H0d&b7i(WѮ.R7lSN$d{mdb؏=E$" PQ[͌b\b\r*t Qe(dPq"eY<(Lx>>]Eb&:M֪sY=?Gn-OU}ŒcNq,fg^# 3hɦz `CDՙ9j⥬Iab 1fM׽>ƲjY99 8NRf粢+sO(7% `:GT1b&vCDGPuD) hDf! [@r]'gi>^ϣ]!.~=IF{e:gCrγ18F "K ft*ORDBB굫]$]#o.EBH}}<9үlAJ)"`.mepsx䵸3b6ɦQ̅uh]cFY|X@MsHu^$כbBF"RHa*1L4|Y yeDK!SưLp$XI k?u1t) s|(strBaLv>wf)氬N,v' #!~~kno8J>1[Yלõ_vi]_܃覵Q ($RY{k3׫S4uJ!TH SWE ^9/:c &"[=SY:'m99aJ1is =x1qAahmeQz$$!'v齶e0W5=cjV5/7Aa/>mY]Auaf~x|+ "#acVD )`V 2Ե+|I}LJu@"Ry{sG’)||~?_(DD>u4wAʘ AqJ21]veY<{\2Tfz-A455DUIUwUW}Y~33 a}fc:Y'R,ĪDѯC!~|w@fRbmZO6yBדPz{.vz v/ϔKu[1Gb ĒEDck;~,jת}e]G$5L- K I$tbwGxYI@2qgٗ{p39d=hZ/l6O6`4F{>>z"bˊ(ʥ^W6"J^$WaNf 9-K?m%zuav iJ>o96J֧-ѦQ|o&&Ƙ%1=| B $UyUDSnm?1݈JGmu{纬<#0<b&i)e}DX*ITz[W#{Dtps>LwL> !Ě/x2q6t5dsiosm)'c"i!)/6IIR[,%'c }z˺&x\R[jJT-llY)" I)zecM?>YZo}ϟz}~'ڌ9՟?Z͌,eYzɯzLB$B01̒fe}*ru$I")?ÿu+d@?>r[cgRJe]~7 CZWX|mۜ6upҒuX9&a\>V|63v62(A<~|}3| %$8W=_(6G;/ДfJIUmqzo5$leH>zg2"qYZu%,L0=(S*D0ؑȥh]D˲M&\DX3_@)gp eXSZVRRx$UeYn7|cxtԔSޘy̖%ސ vOb=Df8rZG%aBkc6XS;+HD0EZw$T,sFT(w\wX׵_fQeca Fh^MGDwLj1dI2z4dB F@D۴9mc1RVB!"&?u4 'Dʥh\vo3b^,hk۶vT08A.K(IcRR_OH|>>_DZ>Mn4 J9^/AgX͘WĔHl' Fغ wF#| vIHiUS jJ~D0y0˦>EHrY!{|NR"fPDDmŌ)v=$_Q[W lvI)/k)K@HIq`6y#]nY6\uIz"Hky%*r[Qϲ}T,]YX%šuXM=H"2`f7, <>?"UicL0YkzW3`)^WK!lVϫTG~??I41Q!.ef33ݖzS*EDk=Z #(ZfS$CkޏNI})RbY֜Ҝ8g˟ގHI%JmaRc>q]???a\R/U @4z+ T6q' u~7R4ioinfLs٫tj浝6gZoA $v~:EX{?۲dFOލD40rOeNNx=8&5EД|eYSk׋$hH IDAThv` "lΈ`fwKI RRPX!v~~^?$ee"Pu%|G9<4 #0 ӘSǜs[?FeYRN$tt bz~O ގ}}3ʜ jT҇ʊ>:CxDRV-耶[@ weYguYŠeUnoCDuZnS*{LEl<5%13Ô/~ȲmYi*|mlNv\"ma#Bqsiͦs;X;(1tKsTfzzogDҔkk)ea4f|g~iAk}WQyEu]{Y3,~|:շeW$%/v‡̢cr1das$擉 YH}+/[],,)o.7@65mi^ŀZJ ìk8YWw`"$ /~ww?~UYS:1DD1=rY?SF YWH1ti]˺L$es7!o64uhRf^6TB!TQΊ^SR$eh/@W$!i!VbjWw7<}Fc@!d-8~z岮9{{X?`,9')-wmR}L^;ib1P=Ehz}|[3zED"i6Fg^hg]Iy!ۗ!|$Bޮ.1Gm`p@Z֔Dc,ۍ$3[k_ŃHig@ mUlDrRSDށ9OXJ9-f9^_ZJu]Ye- A2fWT F@T?p ȈRG8~us(nj)5|GN"^ﻍN)vn®"v'z[GM/|='$Ͽ+;i=2a0˚#B@}QIr/MDKRy^ 1}I&~[:믌x+BYVϟ):uRm?_RkZRIZDæ+=_/%9*NTP Af;Є9z%f}WMˍ)-lc6F^ڇmۍ466#uuT$N=\e+F \)fӆ( kaN}wObZ) U9bj# `ǡ"/d vusѲfBr0ojJ(`WFI"[ʂA*3IZwZ`}ldi[ @ S R.Z$^yg9z6M9ƴ9 /;8HZcrY, mg1y>~7kEu] P8!霐"nJ,HW6Z;Qaݙm615ѺR#ۊ#Usg M@"8PNjv!5 }aZr^vx,>gTUP=:ݣ,K^۴!u'@$lӑ3ޏ"$s+Q}"!!UiALr}IӔ9[}7;G,`(tJF{=c*{4wS^,Ғ򊈁fJjIcjZk/kI*ڮ4E!p^ӫ>f>:30?,W)%l0Q̦_*6DzgHwtYu?Iҝ0vq\#]K! zg]7u\J׋ W`Z c  'I ݗ1*㟷Rnu>E3"ۦ,:~c]0io_׏}/g죷ne|KN Ǻ-aĜK&[u5@WMsvIM6$Dc4w@)Ǒ4G (;iu䲂%lZ;z;4T52F6.c HU]UʳR^P5}Ǻ,zT3L#F8PX*oդ&932 "Z -Ʒ3@˾Z[99!!uY #9 Rּ|'siv<$@~[J9H5SJ|"RX3- z"1; XJjJsN1P.bRG恴R磌o%91n/~1sRm]RJJݙx=hU5Q^k} f 皴/jckKH9%G&cWw'{f|rY㺎 $IrYʚB2wweY(ImLqsMmGp}΢˲b뺉֚٘s +b޾`.:UM7a]Rr^6$޻ٜE?0B;O45G}|7Dd]6f׼b lMX9> Å6-IGoSR@>>%< 'J ]cm?땗=%*,D,rv} 7~uYx lf|_>AZ*9qRWwr]gDSY!R&AIZ::RJf̩z]iUϼ8Oy4e`&bBىiԺl)co")A*9ĎZ.+`h=l)yj*wab"%%8L~& 1\﷼OI2{V+'v9&_G_9Uh9,vR=mʌq1-lp"N|y-(L4o k`,p@^z mCNH#tN9bsQ !)Ny3e)"M<N[qN[㕓_`aT_#fטsuqm[g vL\C_emRq<>Br>'.Ltײ.p֚mz[ǏT1E )F8Kސǿyέ5ü]#iR).p.stbѤ̀I@ro>H9jY?8Ys)>'Bµe_{;:힥@D(,seY"bZEUTUb5:^}8)Dg}ۄ[om.|n{=o卑oZoDDY6sjRD,D(ݍ8&NEP^PB]mCuGNtj&] XqR7s{'̩jʾ{9%qnY8{^1Dv<N~WѰH")/zwRDcn6df3z]2Z+$q7U齖e9r:@DȈ=/k!he]}x: zlHn@)36<A8>SlCTh!`s؜KΌ(e'뺐h>{ߡ<{}FxDDuC1jCw 1l"׏{D/GkZcS#SXP]]kB2RҵuKHBIߝz>5I0H8eHBnJLV1_$:Һ#ª!L:PK~`@ʲq^˺v>t]Nj=˲ 'hD7̖`acQ-k_j dL.Ȥ ̜}W*Kh^E$ՆUq_X1r&#Xŭ9w 1r! VJs 􀈔l2(/s%/ot9!1u%p@RisT{%ys@NspIve9"Y]Fw/91*4-z9&C蚔%ꥩ$,z7$ qR ;ED,"#;c61w&nGm!8 yaI `<,H{ `ny݆GpARV^ࡪ9ʺ)<ݴdQV>ǹKx7xo sݴl6]P8^1"2oOJ8 藍ѯSD U9%=Tn0CDWdZq8s)?惈Tz g\\2ǰZaJ6ˬݑ'!q}mml}V5~?ZJAs xr9I 1xr. 2PAGѳ0c[cx$2 {8 |>{ n"hJ*o \+io߾ <DzPz8K76pBeOsE 'a_&h%ΣۍÈqT3uvʪ?~e`gx5뚳K="i @k/37 "_y01r)5[APf6uYU&RTU3q\e+"L,I$dMȄsb>ŀ߿n_}DM ^ ! z]Jʈp> ˜Sy/r틮_i ՗$eAT $AA>M3D#  Ls` kLDI@Vc峏颙oϙspPZ|%k(!!14h>#\Kוb3FasADl6%"DzDDSš˲c!q%o_=<|j゘mβ[J_E'#x)"X_?s$ fQ{,h^,ji* }Cn5Qu֯߿_|-2.)^{Ȼ.ԧ[徣92 G,+"1%#zLL QK`@D9pӉ݈݆{V0ӲyeI|&" aiB@R>{.%la=X,K.~?G68-k=`sV.Š~5ɪy9:ĻӮ6ܣl7NU|CYDA11Js@ciYil3=fq!QYwB0{L%y]rQ֒S 7½9s^1":Mj 6RkBMy`AN25[Ӽ6l4eHe}ZGR23ϒS^Ww'1eeӲݐ8eHI Oa ,ܮvp"9zz^ટZ_hZҲRu4& R^&~? s B*Mad.L9MsfbDzXY{>Wt/a#ef &&#"D: 8f0]IqN>î_) " WRI;!̉]OQƔYf,6F]SW#@g?u??۾^R}9ϒsxۭV#Dadm;I,1D_tVe0j 9.fJ}h.0ڡi " (`Dw!B$|<L"0Ήz>5e, `,%-?M+˲i/c9:sE $tH@STQ&-TEok1FfDh ROw󏿡OcZ1U (j*es!HHH")]6:1;P}Hɂx>_*їdm~=?T"J;R`dBQIy^"Z""a|6o; ;Z1'95%0RDJ$MH)糖7f|Tpa[ff%ml>_Id!>>=ERƀr<ϔs)lV~S:I4mvb%-"Z{Yo-\ECDخkqxL9 yE))"cy_q~ iʣALপc޿NH 1#"5ZE{?GQrM֏/!LHບ*\ Gk[}0[e_3+]sia𲥺*"Zof\z{f"f@10kj M3Sٙ3֘UTB08"DʲEIe&$5xHNyDњ IDAT—1UlNH$(;y#"sbDY g?7 65: &5fI)mS#|m<1{۾y1^f}rJ.u#Rη{/R:E^BH)pB|' [cވTJco,@唙4H:BSXX|,"Brkly'֎/|%ęqyCv}x^l-%<^ef5m|m/6:>ZJ@~ՠ</&݄ZRcT2zӗm!L؎Pk "=ϑsY )n!GZcN xlyL(%{ǯ}9n˶Q*k $R"纅Zu9c'D9aV6@@TnkJRI&\d@bV@DH8[s_Dr,Lq%[&sk[EvϜ%g]\ nj\5/?lf"(Hd^RNo۶)tSUQ%(yV~$ [k8@x^Z9:p6,9!W<"#1SZy@x<"Ns]~Go8[lH)WƘ )UD 0"0cc\鶭~^ |b w7"Ɉ!,|ޞvCX }4Dⵦf)ew[x?EoDIIRݯ'-B%qwfRTݿ[O%{`k>T#ϵ:sW; DpwB)Z퍈灀"eY'jNF흢Gf(i))g/Qpsl5: ܃RU1|끮DyL@?'94σ$y>Z#b)[kc q檄uHrs!8C޷}_?x54!DA^)~r}k(:@s~!Kk-}-""ݎA$kU!1-甶͖vT mI֔z{n{=?0 [D0:}u`bMcek.UhkΞ_v{k""(/3Z^)44]瓃c!~q\9_a"{foHf;t"9_qL;0S[9H%Hzǚ:ͧ( '&y A^ ]Mh,H^]!މ90R6V ϯ+1:Zkm Zːp=H!:BQĪev<}' Ժ05v *L $kgHjIFg D$_sBx1M4@e51.U6%׺朳[D #c3""Ls\'luX)u]H"6ϯ\ i/ z~~;ʺ!WL HHxdu]k ĩ0kS,y𑲌anM%o2PmC!, y=  ~۾ۜ:~[ffk[sGf&JD|~Xҍ%ju9"y̙RA"wg@ΕXR.(V@9Q+lٯkv[)=~ Hu$@3 ؜ sn4eH$}ܐdI)WG ~[U$!IoDz|՚ *$DfX}γzCkvxJ6BREp ! pERzAَ퍴<~wbڶZj%$Oh$oy|ڳՉt=|f+n„,,Prqn|̽ϤK5MHZ>J˝xZYZ"Zo{ֱ,ooHsX[a=tZگ$\ǗJ-ʼE 3}8)H|=?m4fh%gzOFsl! "]HI$_D`M@$덙~}k߳nQj%nLnnLk i[o7x|~ӗ{{euGI>N09i+^Ji?ȝbk Jb$aE:_| mg `1l礄;/k({rQtP&ae~<5ך%+s~ @IZ1",~onqĜ|A u{^Ws ZNQkF$ɥ"Q^ךMDUD]QÁ)u=We\u]Up,6\`7%k[[oQJaQ`描?o b\ϿT\!L۶5q_3kϧ&d~GsY-9*qGp$D֒<eYk+ܶۻH9l[{~1zw8 c}ѓ ?@T_ϗ2<Jr}?1K\>yMZndb@&ɬY2q{ͯuĸ,e?;vuvG-jGΕIJlzɒrN8{coS?9 2M j)*p)ƶ YSږ9P,u_>WCUu-`Bbsc#%eM|0!iIu>h"f|~;I.6?:! ak bo"²m(7@$G_m"2H0Fw=٥db1Rmh(_ǃDDw}`8ǧe̘rs11mEbkaZN$N) I}H81G̵"Rn)q<4-"%x"I9SJIS^ Eds9縞ÖjZow쳫jsaO[? |O}S$}59SEuZVow[^rmg"kNu'g;iC1k ɂL0peIr<خ^U]Y59>baBnHkM1N3Ϲ p 0_k9q̶}I|W)0"\PR]}!@_wc亍$+\)e$Z @@9I#%ugk4Pj^$@hJ/86Fy}^wewRιhsۼY~yY~ޞOHnoUJ⼻0~$RIw $Y׸>&(0"|cwvW{,6nj|5[kc֯X%OUSޗ{9gDL)ٖ-"|:sوZu2A+HΩ}y`{Iu-De3nˉafHR9FJ%Ia:?52G5uf$ k^]awM%UT9‘ݼwo?k f1lͭsY*HWLfTe L9`dk9v!ϟq 1Z3iwZs8v55'-$qYK_G+eR~\~n^r:'ɫ)fJ55R9;2 Qe:43&u_('9+X8zIО̙̙TZw]. 3Fp$,@m̑ם#L`z9AzHιuO 5Wo IFIe 3Ц؎DYb "\Rqط-B ޘ nm厱T?'_ιO""#r/BJ֏vPn9k WMٰJ*Hd܎㶖KHV,ˆƜc\ZFXp7Do?O q/̜j.>y+knj$'"%ND6z?(AchIYwa3(̹꾻u&k.ryјmu)1wan}mW 6^߀y^'BfcEj uZ LrE\ cgJb}Yl7`QT`JIkv wDum,mq]vs}q11!1$Z, PZ/{w8hm~]Ik,RV7{}$z<9+-lq>BU[GwMEkd߽?c$OD Dxn7bO[o;ѯPj1?O33olI^YR>k[knZ6Mّ!\5nc#NWnzkLG&dr),:_|ĔvI5~_sE(uETDYcJϏJiKV+bmh'91jb-I`,)Wo\0۷y)xAƬR ZT 'ȷ!!"Ǹֲnz*s6"9Gzch-n&k`~](I弾 \m^8>ooHzS%jV{~ښ@KfL RvL쾈;1oȁKi'#R@D69F0sQEVG s3ca9FTz)O7e#dvM@LBA²!vlWsGa]*D̿?wB%"QhZ.)&r ikٲW*y޿Xr#2!F$hֵ߾KD /Ii2pE>teR ѭ?>fa<_&lѓho@ v値n~_ׯRs/D$4TU3kc /mW`kik-7bkȣ]$,"aRwN,hmtw,{Zs"\-oYla@9='ZHHvhJ<{os;?Zas\!$i a$ /SE`+lۚt6Nd|o z;0v ]ǧ`13Έe@Ymv$toRop-C\'`nEDR "Y-GkQ̚1v0lsw4\o9Vfn!)9uH u|!w33)) 1"Hd"zA],^x|oRֲۼ|aA"$ ock);ϖR~!(|הjDz$v vs-3U$RjR1B@3.TU8k*9]ש"a}s^s4Bl7[׺zkIpR)?h+ƹm|hf^Cu%6dp)%DTa8xSep IBKv1~߅ܕp *&g?-mu}kb%$L\ϟHt5). 0"e Eya1[ ls "@3r-ޞs˕^fyQK$:Yke{u{[s&A2ܮA`Z I;9M*kޞH7AZnf<#m5G`#\σ@R%v\~;OfD23kX2{v<> 7ElsF۟RiZsY'"`9$>6ݘ: IDATԬKEєc,MeqD8Zym5޿$3hѯv?Tw"}\!+e!Dѵfɥ$$__>{ʏ H[1(RM:fk͑DT3$gǯYrve1F?>o,_?_Bp_kBYs.#0༮7Ms2yVoU@>?~]3}Ҿ!kqf3'f.%qaS[yi$03f'ۄO ~ I)(DXP1 ˆ=R*/>Fуϛn.9X(B|{יh-z~_Mw$rCDN%`Dت%6眗H9>?S)qRGE;1Eps64ɱo55;HΔ^r>Sɶ$F0IsX MSƼ} , )0Kut[*$&!N x>"01ZߏOeDpEu5[s>:SUZ4eb ׹З1)eMx$ eYk1ᅪl;>]k=ˬ[0s"2__ӜKϟkY)9 kkjy=״g;u#:G\E_Ց.lYָ΋Z{8 B%tJB j@B̈gﵖG \rssJ%!D@O4G@ nfnLHLLPՔ3@ѮCT$9qNAiF"wB$Nn+bnwsgFЬy65Ff󚣧TdV|Ф ~5ɦ4i9܆ƱfƚÍ ~~|_Ǖrbaf}ZnS m\+#l@SFl5}6hV;H*:򜆄cl嬀"GokvIh\lB8R20͎Jɀ@ޙDR1ͼ4g) ݄!l?wƨ"k_ADDoooڮS֯[C*r~q!PΉHs?-\ʎ fdCSI9Ř=}g"1Du79~1ּ&ZIL<fvT5N_3 $`V=??Zvg-o<:ŔoLɚ@(,sp MM|3 E% 4ٮ3'fz9V#|5EG$8᭾jwF`L`+ ژes*5[bI=Y=^tՎTx-[sߕ|͜r?uk}/e;u^)er6ooWڑ2/H$_m,HaX%tCdXTXU_Yz)"IZZ2S*$ =%@$"1R6|pίh+ #qDj6XluBľo㳵9! ̵^Sa, R-]Yʎ +IҔ*ݯtwQ0_D%R}MN4GWUDDd<9-1cIR0\6ܽ%㫟p4gJ7Gl!:aY.]ElDjeKDSʣw"52r[l1ku`\5g&p{F@f+v޾[ZT䍈lΤRz~}i)yߵԜ7ՔƒyZJug aV?H-RW9A S=0xc75zI4qNy 乎1FF" _?pgu1jcSR&$|sE5R.li >Gտ~.ycFPU`9p Wׁs*21_)oiڈX60{;}\v"23fW \FDH6;=[cU7k׵}uFrNaĄk֮k8s۾5LR,]fIK(kD[b Er *$Hlp$$IۙKyUؙ4m6Ԕ֚n:IHj]<.x#!!~Ah>(<);=@EZM|~!ݗ{΅RTKzQ,QRŠ"J%k.uƜD%sY1IsH)t<R3!ֺ>ZfJ%ManˈY%V}k6Yn>ݑ,b]f-a$?ykݦh3V)hrD pϏ)r/~!-(pkmN 1DQsCNi[sv("%G*h'/h"cN<"TJx`ygBI‰lbn,y$VSK>Csn;kq+*b6&[kGR;ޥRF,rY˯#p2ZQyjlM QE"XQ\sH!?R}c~>yJXK]9"XP NDTx)$q.6 "Dl̓ l;I@|ef/L)-{D y]6.Fs){()$ZɌI4&Q~X e~ok1'e-zkmjJ9?G]s=r>:X~my)&u73`zpqX泟Ϙ[֒THZĀ< nWZ;$xY #0]kٲ9gy\ 8RYUF$~AY1Ԃ$}]B&,fu%5$ _"`k Q/eMӵSJyu]D&TJ׶Ub&=rs#Ś/~mۭߓ(LJm:[ +#inj-}D ث(^jMSޥ <܈ ýkZ6D:{W5XX]ښsHx~պ#[hN$$-}efBNe͘kp.$hf}20?jgTo":缿GX-_sFV 5DhT[8Z!x\gӗ[)ȇfzD0% [ P9־gk^f}k_%$39gXo˦m1~CD[9g9R*m#t|>Q4imc: 10b`"'[f3+_ifTb̒r%b+pxHίZQJv癘S-Ҳ [6ƥʀ4g0*IIy"9TLJ᫟e,\)+Xs)ױvH"BoTBv[~|֜c΁*l /ZBcNIErkZ*T)my0XX TS2wpftgJzgI`N9h_fnˍE\k] x2nzDJzU%M;9Et?[.ۜ+LH,i7"yL("fVjM)1u]۾\m$Bs5*ZxؘG aZj=zD8"֘WI9[3_Dx֞$<H^I$Ʉ9ƨub}oY~W7 1"koPI:%gQW6K-]Pr%"7[AtSV"KKޘo̜JzDvZ꽿"kZ#B3/y{>)x\UFW^66.nERx>>>1JYvVDZKeTj{;E]OYDHS+^dzn$?};b5Gs1pa)A Z{9mAᕋZkg.[kc۾C[gR);2+lnP@|Zh&gF9g$ŽY^+d$gF\Љ1 jp/w$U8kHZS44f5R~I~v>>%Lּwqϟ9erVJ(aeD)f@NyUD MYK%"-5S5#jRVDO _jcϜx_H( G}5̬)!m}¼-SI@)R/oW0[=%o Я ~ 1F<$DrZ*y>>$`m۞C*21y^KMqιҔ0lQ�hA1k"rgΥ" F;|~ǼUK`Z 2 fE1,ܐz|o̖/ʵl"B V,1J%9W$!bS ‹ϯMuR"X"`Dz]}{gW5J*sv[cYFV5:;0;1a%$5%J[0T\+ꁢyz>`LBHZz=m#4fЮF*)DT_֚px|~oD5Y@{:CUn7E[p9+#!%lMFT13FdMu&q)RJIEh"bUښjkue7QXn˱ouy޾vfxZu $ \#¢_`b qΓ)܄YRUJ*4]JuC.$Z~L0qk]EYڱo- $+T#?mjkT"ښ֯S(mU'}>~23խ5_PtFk1 IDATQݷ׏q@m-) v/r-˜X2rPUO!P]vL)Fc6b"DTkuD`$hIH,nR'&JyVR`5׬s\OeW6VFD?~V-L">Z@$TsmY3~6H9;Qza5T5 ĒJ"r3V;W"0Ex-8^Ւjy>>#; s +x)WUpLclU@R"H0k9KSk-%(f&d"`~OIr9 ^_BHh3|^e+\hސmךD4V$辞Qsnm%VOHn3% N7 ))='y13#QjApd?.0/&b:nL{WZg)}_@]$)~'R`܎q>Kγ\Sw7瘈ˉ9s.A` ys˟|?1;L)aSĊ0ǵV=}/$re !]p8_H5Z݁$gFd -ۜc6`?\~a͉c,F!d\~_W(D1nª,5%l+TSNiΪ\cv栣=# 1ך*)HV??>l۷7kkDz>gosx\cMpY(k6n5n E?)0͝%iWWMJMZ5qywXt V-5 3A|9 8D71U~ETRi훗:*ˠnst[3m@V$Ҝ9Ϗא.Z~~}SșCrMe{Tz9zىbk9ח yiY{M=J_ҷ?U`A|<9B$1eD(X^y5 dmqb#W{,3͙5CL]ծ> ޾]p V[&AĠ=[;rD "!Ҙ`krV?#D5"[zS;iA^of^:Y\oJw(uCd'bsR""$Dek-uRDl_bo;jR??)1?Ynk.lM_sNkYkg)Ej9Ak Dgq]IJZ=8Xo0ȩcm5iy^J9~SMk-f6*ZX" @`qIs1 pz 'lW0|5?r˥DSXrx'DJ۝@(}mԝEUDkz; #lB"$sS2Qle>FRA8,v'3vwGswB|L(L2\g˵",V,srvkW)~s*RϟIT]WO9$EErR "Y 1ق>\20_') 0]s!.Is~9Ԛݦj{"eZm#fY)95fe޻ oۖKfI䜲{r뽁]ˇfyuZ7&ܾLkDTk8Tz\Fy?j¤^V2/Q-ϓ0i޴n7ҵ !JNRJZY ˜=CS*cA-4觪9P!b5r*kZSD1댰~jt[U%ka 7(ecRmyT֎3':b rG~uD2 {&DE@J*LH*T**]38:2/;f" x ˁ6~)BZ6yQB^oHY!1 L"_ܯ1T &h+&\9#"f6_y ,[.$u_")v嚁p\sns\|cW,= &QBsIJIͩ y|{Fhk"ZZ/XJk݈\s!2 nkq?bX}>ۛ07b%0 Ḧ́%6,@:m-a*)>IIZkD`~_{N$؞D@_U5{UT&k_\saFiRkz4UN,6y>H^w;0#\PJܘ`~jfkͺqns$I Kɳ͞8齳D0G"Үǜ|\9UBʩ늄D,Ǐtyt1/%a}MeX\)I,(if@62aJVVgLLV); K w NT 5r.<>J9L$tXk"~,)k2F5<)K諉_zkIr_ "Qk->ҤwIjf."n&HAs9} ͩokw蒳#JnI8#l8v~ι햷Q$Iȷo/M9 _ ש) 'lnneQdDeRS.f< 75-9a.8ZgbU%R6gE` infs9}NDl 39k35?g{۾ "baҴzWIR9qyohgDd}9Q&R!J AUs^1/>nfFc c TȄQ2{_[ TRN3`裇%n\m4 @p} D,U[m!1J9` B_wުN!YAR9`B%?b4 ﵞvSrY#xye:!0 )/8LGUDh:K.ivi1$@p깬h!yWWփ)h򷘂Zϳt"Rt\)LȔ/:cZ=JY$-is> ́%}ÿeg "1Y fc aNzaZGo(B@}h(9P$Q9"ZF@BDhL}YאUJ&߾>}$Og `9Y3c\W zΔ5VrV1=:$1Z;@o۱,[T8"{~!ϔ;J $'0~튒GU=m먻"Qɡl+:8*^bH&eE BsZ)IH1_i鄎$V!gSӁ Nb <CƉjuZ  hb!-RHe!٭_֩ 1oKv 9?:C(9 ~"PD8rW%$i6*씇CZ@Ĕ˂j :Mz} %OUg hxAO sR$L(t׺ zHn>TSif)_?c $D5j_VXsR 9B U3-YwC`Bsi$C:[ lϳo݆$J8S\[v8܂!g53~~XMkmzNyߟΤCu4wSWvscԻLLd0Pu `nZʛ=3d!嚶+>8DڟR^rJp~"EQ>F.q5R 7 Ahjk1%Dc>cJ1gDg@ "n21Sa>σ0@P,q:a$"XU*35. @Cl[/bd&Y:>U4󑓼bH Bz]pĜ_e]GaY/,!ϩ87dw@B0Gevwd"iҎB{WH]Gc/y{joji Tys>8Z6۹甈ĜPm,9p䄈mHusǜt; ; C`JVϘ/,cuy`"9;h^.)^G@DYKSˢWw`@"v^I{9#61v$j>1$*dcLj*APxFh ~1C1牎Kz6rwbn"z̅s})Rjg1lj94xS]߯㶤hd3_uzB !0ĮCdsn!Ygab$9 һ )i"GƞMg=&#ph!f:zQD )gv gX=_%"0;18Ḓq""cL"pN ϔP!PTq/o19k0{;Pm9c/\B}B XOScNJ>Oڭzy֖#28ќlJ3ں@m"Tf:q mND~ۯ^)F&Fl"SO! qrl\eZ)Hym0zeuXi`}֐ ȭO'zo~0FM ݁D$Q5n 9Ȳ, !:iڬ "!I,3zs kkb{geD)?q,SG,##x?G;뱣1x%-"qHXvJ8%zu_nbjA䲖rU4B)>g)eC-ZZS tB!y7#`|~nBJ0$hZ";UzŠZچ}||O!DJS(>bn_׏Rk#SZks,66' 8Gt  :$y:Q6S,! K0k=.oV!Uoú)25D"I!z<ѕl&2 _-5BǔWdt"FZ}| !#$aq9$h: ۻPݧQ1Supg}i8Xm6v]}1Fpr:go9H C`IYS \kND1b~VG 88~*%嗸׽"PY$T_S)rMKӧD&"GF:^@nYBmL!ms'8zBNADBnWI)ꔉVurs0sIAQ@ >C贪cԶOAv<߾Y~1+3OU34FʶŲ"2(4Jr D>FFLi' )J>g7Dic"S"(!,Jί_\Б²y#FazVyESlܾe|[o/rB3D jUSb)#qLI҂۲n:1%V2GDZ_>>h< vNS?D Rk$795Ey>۟:&`Cm.Bc܉s)/Jk#Da!z`1yJDw\72Ǚ׋"$w1 L`HJb,0yDy)s_)So{益HLQkiܵO)F!&@x9@^u9Zvz>AuJNS)IEC-8{nn6C^zke墽&@C˛9H,aZvt4=k[Ky?c(u?.$ja.@E,PZ*֠)ESwDGr|!e]9-,f-J >GG^7F,yV`)Ǐc(1;rAB?z3]{3>Dz,h%[,Ybr\7mS>CC mt?| geV+ցG=G=Suh g9Xkr"~t*Y%1YO'vMzAtoyV[d1:r<S^[1 Ac)K\Z8S/͛/Z޿%|وLDzuaqlFzws*DxvdWˑbl!>[;"8?||#P >t$|o,qI18*e{>w?8RJ,AǬI^6G\oH1FrR,v~n9[;}̷"VU14S!^'s!9HWq5gdF`X8ND )l/1)c` œVZt3"VGdr\;N_7 6Td.9uoe^_<yR*#@fG؟B6GQ* qo߾MyT HJǔ[=O3s\X@rj${]r!ׯ91{)^c~pU!"{}l,mK\_僜=F{F*[;HgN$9w[ܿ~B |R۲\LtRګce$Cd=BH1BϳNay)JH:ǐgGb^ PYL׼ yŴ;^N@9`L"=?y Hӈg¡R ÜuDqE aTkj},9۵s9DwV3/]c  B y0eLL%/,AMѧp@Y}Ɯ-壷L-R=XJa$I>nRK}٦nK!}rK\ISS9 s"Q$tzg 6{[KJNY%R8dk}4>g)%r~9m].)ok?>9F7$HG޺xGEœJ,1-<[>ꮭajQO@::z!^bɏϳ u;`7B~OqYkr{#/?X<w435I0_>8v|ѹWEyu*ȧ=qqA"Ato#m4E#_ߥD D*Kp8":LsJq05Sh/ =]-X۳=mhRVqsPG!8u][=]g="K:b)'QқD &!;,|>ŜIbLf;빬ׯu-e !Έpd (!~|^.Edy_k\?Ǘ* _\B<#/דC!$jc*ڟ{:v5 QuT' Е%9ݎzT)EuõOSb)v>rǾE} !EG˶lWDn4n! [?$`=9-y{X[eYT]snn>k;Eh<eqrY~g;t9O,&jc %n6T;Ifdf[k-3u|UǴ۶sO,)ʒJZyـEd@⩈dN!Š10K.6\? y{IBD &>qf~IJq^IC|z͐ID0k)r)yiH%s$ŔM??݌8`ZW#|gY7 VsA BqtE:GΉ{v!b-8{wu{'$uWbY/xhE3>rǩE-f/3vÌ) Nlshkm)љ)MT;qH/ L6#/ B,!ƬCU"^1S9kDݶ!16$b?ߐq%WDF5f9SB2k<\q IZ8El|ǶnӰǹ?RxjY.cwtSH9U58 fk3"v; 88Ɣnexg0aVr"|O7K)+řDqG?>۟u6sNf}uW (*M0.3ۜ"!^iӄEF:sʦF|py{хcVj?ʁF譺ǒKNЦ:A,9y9:Ę/<??sXq,)c:Z)mr,ep3s!| \o["D"Ub֡9Rȋ:j*5qanWaBNuQΡsfLǷo:D|~/q16$9̩0Z5 ⣅\*̒sS{;γHb2U#,,)--k,)2̎Q(@x>>rB"b4 ]8#_>6w~v!o|q"s dhUG?$; b Oe&s48{{]LaVHi5u|#q<,9O':{731C?YH#nm9m[/߄ÜCwS!s^^σ KÒӲ]Ǎ8.]o5$twәcbG="4$ c%1p#B9G-k.y)kl 08Ӳl߇ND/̦"c?;:1bRs~2hNc'!Pf,@oc?S0D1: ;QN A^e 1[ZJ D3@a&I!Q{$"J6A%J:hAY㌁ǏUryk~VF[E9GI$>X0nthc0F{f;YH$D=ggbqJ1Z?g=霥@xْ voRRxܟ[!lC.\yDG=|9@_?9˲MG˛o1FGBX;>Fʱlmf !/juKQ$ sn  =5xc9][ycsɳ7%(ےS!s6ӱjmLA$C)c2IUX(sAa̙R +s,mx>/bz>991Hg_/h?}CcO,!103 Zke.8亮?|zܾ~߬qH"^ i2Кxֆ%G hpzVSc^q%u"b<,k\ "$%bvp1FgF q<^蹻p 9+)oe=@\.n6 ϵӺ Sm?<ɮ$۲]g*=bgIK`"$7 ;"Xq/Xcr/)iWis@Ę*:z} knct͏v<>zu\}$ގ+*9Mޏm`rB4QC譎jH:3S@5/^W"܎g??Dk`'HATFquwTT98M|3:[Ytrr1%i!E :Jcj.o8G-.9F"kOL0QYxk|jʼ-{u6N!Frd`U>s\mh Q$}hS `РQP#hyER1%I״.`cJA[yޑ 5楟ZvKXp$2ZV."}YJ9QA4хz1j)c\|csĘHZ=IȠT(`6͝y,:S΀B˺0 kQZo!ݰ "A&8hrK\ݶ<̙@|_,9 d4k6>F'i.^p$DI6cQ%kJ I}Ъ_hZ) 8Ƭ>C AE<=-snyXJ{^ZJ aj'`ulvsϟIz#сJDDRܡ_voۨ?RJ̄"Y{,,aAyj wHcv5sJSIF%!ڔHHZ/*<ʑ&Ck0#7{y=)1!h)ql !I>.[orti{4 a ,ާOo4ZK[I415 U0N"g4Qڙrvۂ*szo?I0.FjND}󫜯)| KHu3RdbjZQ3kn}j6Y4eyqIu|}9 "K<[)VC\b9u4]H*,j3:9>|}'pVR$t4#b=7zFsu>lq |{5o}p\nUHkr6rj~#1r;gYխ[/ೞ;c\ 05d9D{Q<~3 c^1$S' A) $ 5NAQ_c5Jo IDATLJy-,u&7Ny;dӘzwU5V~C86MUtYz3{n)l>jo}ar\6gNh^LN~_L"̈Ϝo6l,fQHHYJiWΫ0aHt__!;8z;ju$1%$JyMz]|_51j-.4m(]3 Th z1ocP-F*-%߾Mڂr- TYёJZnjf:sPo}Z?uy\nzO906DžV̀T*%ו^ߖca)cZ,c `ϯO,&cDC㶝m~n*1-<4>~a1i6S^uA{ʉ$PHۜ-  J֜Z?u){cn.v?^֧t]%D9Ɯ_1F`10:t׶}#e^l0k-VJsLA"BB뵮6YGo6pw3 1Y+W ! a@1f lx|>B1J7ݿ{_\$e#uo)* vq>2@cTDY>ی12+ڎL1z synD"V-3qn"jTJ#ΙYRr?S}~qGҬ0QeLdPj )tc2s|c0D)w"x7q}r< U͛HiFo, HzkL$`e Lǿiqᶄ >!1fLHtv0毯O@Ii1@bc$uV&wMV"Gau $z2RJ5=XJ9;һcLikeV{z'}e3 a$Uy1FZo|Dr^/nڨ?/*1Y DWmy4*#Fa通RY%q> 9!HLOCmR{K@PD]R/P $ 26EX^.>er\n˜׍`4fBd'u],L"53d69<.Xcf?6z2%@X5ޯlE5|=ʱ˂$~A}z<☞4#n!,B__hcNՐW Q$L9G >{^!zM 1$[;&m݈ &#:`1e1b* Ƚ )5F&/ 9Uvm5Vw"1hc =8^׷쎶n H5~$Z(Q*RD_,Škw|,,cQYS7ͩf̬R>_"u!:>Șy uu]۷ja"3!Ni$2ls^4ev6F\٘߃ͼm0gwL`hACcSP iL!9cdf]C_/U`1XIS%wa}KTS1g->y.瓙C D,!]"뷏cEC2Ѯ_e'Da9GȋY^OFv73|l[/H1`Hc}߿~hv}@\mn,r Q[0g'Dqd y}'RCojmtCR3RZ֚0u9z"*?~p=_`xkǯ˲ $ ד:T]Z;j>CRBAJ-!EIzr h->\2K^#cɤ9hZ;^kkeYRmBvQ.|kHTF6`@Xx́~3sr>@lڀfbĉ8ף1u}^>ˬ5B\` "2$1uxqo}m"گr3S6h~2KJ[">iZ1 B37 Z;BR+8$!az{^9s *~ӺJcBZ|WGP DrGZ8bȢ?K~ Ҝ(AY8v_y]|ɠy|Ep2ݽy{Ow f Ī{)݆;n_"K^ծxΙ"Ę 7복y]:}2(T0Ɋc.&u>pOA\9s\$gi֮>29R4k})RB>fшy81-zQr帢b)_[^ a !1N,nޱy iMߜ1*2Yײ D#-0QEZ؜9#S0s3VH"7L JWa 1KLyS~(D%\R:-DSsԔ׃U7biBˆo㘆7mW Й+iYFi CW)Qb2iepQ 7kmsHxc^۹#TrA,?o)l܎]C$_OAyEt2qd̓卶I PvwTp`]e9qBӡ#4g-׷~CwD4s7x~~-ߟ/-,[Cy@G2h>{ PT0Ԑ^p3w7s~RΤDaz=bN1l Dѡ1ۏ\1&nA۾s`GSy|qqm4*`\Y1B>]ru^AÜ[=k2ۊ'x g-M"tϰ,Co^c?~|p >s^q^[0kqݶR^o篴dfj\,D>'+j__L%|#E=/au61 46cH-Z!)WR )QpKuW"ִX&IqCaw 7l͍V/e] >S1z|*XNوx=}ui;U_i]_BGD6Z땘p!x?MJTJNIk\55_Fօ}TCm,12ω)fF)93ĈaA< y}(T^H_r52'lZ1oXǜ8S NDLX'saBcew 6i)bDM²,9' 3|"Q[HynۏeBN!f$!3q(akӠi0_a[ ӿov]/WHj__:t0ڵo)~*sZG}1!͂cRoyGdc!E5ԫ(Gx_u(uC_m!q;29D P!*9-"f9n#=r]~T}Q+7BРzZn?8י%'3 VEq`Ռ8jkc]n|sYs0l֋ja_c|bc9sA8ɑܧu0J1n,}  }DtI8d1Ho"#͠ʤR΃EZolf-۶n.2O4J\ bo ,~IB4DDYbfUR  N!`fGۺocǔf9/ޓ=´M'9gYḘo1"H!6h9Yla␗7` !h>^$b\nmcΘ3!fMx^1ƐҼzѲMWw亮7SJo)(o5; +M")33 A]#Ljo^ݑs~GkME{n]d]5p#A@чETBc6fsD1(#iXr w*~!v݄c6Ci 9=޿a}Xѭ[P~CIf &19De0b#9 1`Y]`"Zc̢=IF1+F I5H+YtaA#<嵭+jf<& {B 怨c1eVk=cks63s oA4c:V䴚hsi1 >fYMoc&GzZj)[+k^mK ͐3pr/H^H21&30]Ǯ8˶RE:3F#yZ%|}j} C$OPުoٜYD)8 T{[nqzoUSxnߘ n[m-o˛DUp\C>?u6Z# 6!܈Ünn""`C$D`6IB,Sb۔a\#CAa.J)߾C关6SEd2vo}*5`"4ρl6^/q A|шD9H,ϴ+#.y!?ΗVs,q4iZ㵋l@B)X;E4#I|s>9zmAUDӲcYd0P%1C!f3Xk#rcx[s8 0(sgƴ$z Ls1Q rfsH) E| X@EU1rC *2Xo.*)%HH>{FW)q[ xFi}WN^הdCAp3zeYJD,o˴c8[M̌9:ݍ?m ۇ%ܶZTZ}>E} ~n!+0aZt]lNUL)ёEzo';!ycZ6[ljG9ms ^N­{-,s]rnqýZR* !,zݟ9f Zs1%1QR/;Ŕ۷i$Q߾ !D@:c^<.uӸǯ"o?@Ո0Ĥf(֪0sѮgAp38Fخdo$b+'>zmge?>?~F8]3ۿj K X`皒;8ުz}A4z"+0V1㸘Y^߄@´}|wZu[ZyzR̚n.Ñ vtB YmR7 `^M'2Uf99j"7b\m¸.k'uz=IPB+%Ymqwskc&} 0 6!ǵana RZU[ 1ǸgZUi>ќX˝DUZ?RLYΛ(.^ò >' 21YRF\W3X;piJ>J,$0[xXO4u&Qk|a))b^UL1d1`1U}FBC7}Bnnnҟ:j(fFmmloux>4C'$JiĔ׉9V{L'{-FQ-뭔՞b)̎6ݦ*=?ϯ[αʊcw]XL!!> 4TvhrciFpG6(Ay٣Z*^iۜ 6!)rIq}!/J&9ǘĸ1́,ȋaC6dT BLix IDAT)Rf4/&gլ!̘Ba@ ܉hDQp&dҨcMw@h{)ͣ v1['!ۜ.@5VˁЇh9J}D Zϧr l Kz/L_]ռ~HWGn@1"&bLTfFkS,e'nN@HAMyC<ȑ)re $[+Mc붍s} <ˊ$۶7nbfk}Az':%:QHKJ 8w7y5|7"9mzNP6TRSӪf"„?y`l 1G?3Ck"$a߼YDRfR; {5 " 2sX\*Kjn˜nHSݙ$"5I,rYn!:zbxm(CB f|~|m>) URqX.W yx"BŒDy.v ͼNW&%E/ lY]Ҋ(,KǓ!2(wKIDuY b91Ku\L܉PJ! 0ե..Wڏr*kJer6hv^/'׺g9'Wzo[\s%11^+z6Dz 'S ھ׺yP{?~zJίґcp> !X׭ᦪ)€h6V2YXŽCݷfB.c=}W;Rd^bS7ex>I 4[Jvn9zgB$LƄf#zYodc@ v.+jP[ߧvfˆs]Sd`RzuM)L5tPLp9e}/uG0˥)1ڲlޞ8+QujSp>˶W[NGR>Ρs;A*)K Ӕ/xlܟVSfp Sme]_ˀ8TJr,ӭ{(@/(9Ya޾-KM)~^REN˜ p.%4X}BNcΓ To>s.Fp5Q5m=1X^:7u]r%.f0$͌"3Օrqܿxz}n8%>U[gf7뽋pDTzLDH~OuTmĞ˅dy<˅X0l .1z?붂Ǐ0K۶lR^L.˅RνE]@{mJy dF^JT@8g9#HSglmJէ"Kl'TR_.V;ш(vrJ}:ܞfyvկm7r@sJ脈ĪfD$e]R)zBy/0@{{"*Y,5I(as!'f$ `ZQ䲦!|`|} 6g~3Ix]fd4m}zZxLmYH=dERu Pd$ϝS<ډ"s)QՓp)(D1 tBdĥ$PP7Ȋ9;1_}?ܼjzS(^v/ "Ldz.+Kvy/19ŒP'_q._j$1ўQmYBB??(/a.S]8zZ3PcBmu TsI90,^:LӲ$LmYS3JbuYp:ρsrs}9zY-H)W$4u]hARLmi9 ^5aœgīOUFz]WOlj6ծ|GYRkw @Z|z^FT. p`#g)yx{fbSzR;[eH)%QAȤϟohs}Ĕ ٞ)lK9ϰyN_K/SmEi!bma6zx}mjoi7d$bf1H#-KU#""Rmzv} m`2};@D*Wkdow.E礈 ?{(CX/b()sh\qy{ia:Tv C32=R$ 1I@0OB0FmGZ22ZI efL ܭ45pf&"ϵn/(-98璄? ~~t=}/Ýs$cETK9lv"s">:krp*BA GϔX(0Oc;P1^b60uFC55JNDh ABL/T, Wݝ$@.1E"Gs?{|<ﷷP{̼V5qr$۲1̙  0I"h)-ڽ oZJT,K Hc>>Y.qG{%8lJDRI=Bc`kJ6gI@} Ѯ[N8[{qYU۶: j}:BK죪}\DlNkD-?uYBYRL QR"e'N/X=9zp@vNV*(?9/jy{{S"?~ԺL"Rʥg׷@z`uj.9ë`D 1u"F-E<<#p]f) 9q$,? /繬lh!iI q}IvH.smېy)koߎc1}A"BqIMcݦu[I8/&>fyJJDn)ebI)qPP-ksTDrɵ:nh>Hy ʽZy뗯z{?mb] JTzl%W7%f$|>K OsLs),A\j}/-R!I,[)z*<䳩!SJ )E,6檜ּlso9g°_YdT^Gd \-$ׁ̄HSۏe]YEs*u)ZH9gĄp aJcy=vy#1[FZF˂<<3qz}ۻM,"քq+ 3"0,p{u!|.Zӱ߅N) S?>S2ۡI)/vbNRJD P\JUp3n6͐Xc3'HD4MEqC]z4 clnR>YLQsE"~!hœlG~>GksEޚ1^uq0w=-/W5g4rGM$n'qqJTSDB,PRbC%=Z륍!8>Kk7Gᔗ|D XJ גdF }?sg~Q,Ku6)$Dd&z)0I):R$h$)??@ҟHU_2ԕYXT뺮`IODi{x\{9?{ik|dILu<,Ҳ\,wAHe"˲S;)QbpBuЩ.H@<ɡƄ6Gfγl8dfIق-rN)M"y$q}Ooڶmͩ@z+ =܏coLRkc>ST20%`@I ' 䜫Y$$0fU-I>Ͼ,gGw&z̹Mm)s I1FDs~]W V s,cTM \}vݵlI^A~'c"t|=^ZE{@(RH4by{9B$"O>,˒UGGvIgסu]Zk:0X4 3M%<ץj].gh2[D;*bj^n)!̮DTj5D*~~~^o_wU z%WTܖM( Ia~E=Ԭ|A(e{2/7GbqCS&u_lg(E#̼RGo0m+0cz8RR*:g R sp"/:Uٞϲ\γ,SNͩPvu˷_4Ĉ"8焔58X IDAT[fP0.u{+y{nU5$&ls,{MzD$XOuf Gݵ$s1TG21l/۹Zֿ޶\ffQߠ}`#II (eTced.$ڲTUuϟO.@(G.-$'}'J,|D2p9eS"<$9Opea}  0€`HYdqgNjsL]mjC0I9 Itv heosNۚ/cόٚp /vJ@p"^3=e˲ *uG*U.S{皁,-<-%e7%IkJtΦ@i TUXH(~)!hTZ/BC8+1:q6ufq.2 F{J%rssD}T$TH,/:RǣԊ(l8lo1!{c9m'ږaPbh "Dڸ ݢ fLR1@jgA@$<﹤."$lJNw3ps-eO_`"ko$TnanLǾKRΙKq3j>^!fpL5bJe) zc$d/W#Ic]r!Ձx$,y:D`Y6)3 49uh֬QI,)1Qx";TmEbPwke R ZcvhK:.WR-0oQW`@eY9 Qorl xoُZk˲q/Iʛ}C1% w"~I.S}ش`@Dirc̚K-ew!B?A)9KN?zeY&G˺^ZW=ʹGP]/:J̽")G8"0y}ws ᯸n 2ܑÍԠȒ\G ӖmCvr("<>!/Edj}y)@6rd?~<>?z[o傈$rkNH\|Hu}lZDI)S*,94."CDD^l%R)poL)\Cu|qUԅE9B~~ϞE@y&,/Dr²˲Z~载qUW38mY*sYo>MH@|͜ag.5 v8_ERA$S.u "R^kdj}m:O0I*cN]-m֚9rb,+/v>8>??h۫Ǧs֘posD2ZK³u3 |>,\\ !uTg.z;y=Ŧ:s|hr WK SIx. DHu`e{ 0sӭ^h%v,M\^)U<ɲ#KZw{gۨ4Ԁ2(2M8^TP[2sZbƺl$) V?>>q$U0wB)h4343&djn":̓ J Au]6Ϋ3 O( OQNpU7 `6a":ډ>mΤsypoÒFXGҜK띙{9֫j /%4'ޙ1E֗tf% + 1q,<ǜ9$bs#B*hZ,)AC$1m SY7pHVOk/ˊoS0-k?R~"9h.%g@ުBza6Z,u{ E9H5I0~)(6z69Ywwau6z"| U.,e;9 GZRmuze;kLjwMTI/c 2q&,dzTsF-<7ݶ3#Tޮx04Hx`^V/$ӅTE[k9h{(Y[H8Fg-6[=Un(*F6~dJ)IgR)y#Kޮ*<ϲ\rDDbsjd}1$>8%)o1} RXEJZEɎ\4/ȅdaai"b̩'X{s^r^8zQދ1F3XJ f=|Ӻ^ݘU%qJe:RV*)1s;NgFff+?V"!U3z^ÅqV[njy-Orf 4\o(0Q):\̉߶D3|'蓙ɜrH1¹?z=8ƜF{]/6>Of~sB8 zkcv]Usyr^7A&VRFo\Ey6gs)qL9.)D2k@ wd1Yk^$ wP$oO"r^pK27.1GP|Na&}X!8A|<9< (p!%B|y2˳MM9ee$P,\{%q$R?gǚaZcg{417qS8Fز8enZ0x뭮%Y,[Db?0svL n)g@N*@P8Lc̔ѭNKYU sj3Q*?0<3GSUi0P ?@$y~b#\Q*0j.k 0L[΅0Z%~]iA*Su$)_ )seMEŘY͌S€i8 q p*5DH.^uNr*>Z-zVN%:Z%Bf}FDʌJֶOg 4Fϲl>϶g$8_p@Z*kL--4S !B?ԺM3&a!Wň,ȚrO̘XT3.cnxAz܅w0ZSn dz 2z}^eـS^ּl!2m Ym}ﯟ<\Lhr~~A:Z}:Fh9j?ն|Zx0<~X1{sIcj@0~\)-۟ǒG w$#8D6NF?Ӳ{q[zvG||-9@AY'YQ3kfP1xܿDPiڏ])#@.kþ]/!3:f?_OO;wI|쏬z۾cm3"Z;~rM}ɛ&bA$f͌0̬\ctKU"E)m %/c_}~+D5~%)7,}tՄ; y182A3 PtC.ijZe)RF//[ e[;%1 T_P2Z(soIn"b/\ $9ʶӝTYU C^wJ\!GɹP˲̺!Fkgg]H&Qaj%bpWa|(1G&Z3t_&]/6ZzWnh-k{RlzYuf^%o 89-ާG;DBaTDZB2hf$H0lC|Klus6G΄譨9 01&}E"䒗ޭ,};ǬOnYQB|,୍q?{7S1`#l"8>_/X[kND,P< HI'I%=L4K2p|KQ҂Hr$z׬/$HPE60 [*ʸ}o#W@(]ǡI'cc}|NLʢn$:ϬGs sD~d޻$ojc^nW&4a#²m6g٥X 'p&M9\_?S %EV끢>k <(˺u̥^>%G纮iMc7\3ysaisFi@. Ǿ_xN.,׶׉~~Re$I$bNRVއP*n2ӜyCmmY z(NASU c8I·.ĒuBqb0"7$I%8pq\rؘO}9QY}DD$`@RQ@*Gl;1ճ.% ˜6.{xΉh]F;T܈JfՊns,D{}Dy|njQF@Ql^%-WԂQr3>hYR ȭ Q@.7*E|Vݎ1a8Y(\ 4QsN&ߌBaQ>vT~/H3sDV tMfy,e_OМQX#Don%$&9.ȤK9z.c-4}LDL$u@dL+9fZ6DDA~"9l"Q @g%]4mH< -̂@TRDr[˲=1GoČ˶!hB|M$eH~!>#ǜʅF˴ȥ&t%n3YD s眝 w6OjyղӲsQ|2OOK%څ%.B3|\̏?q<#,Oz<[S-}2|^)9zlfY ).~b2zeJ,@osʚTzc,~}||H.aV_3O%ެW$Ekx:SCBxkmTszxѧQR7=O^?!Ĝ)aJ6Gir¬{X/zk1Hx"qv6RֲdMK8Xon掗ODj|[VPM,,t@d9 J^Ǿ_nf=/˴ "xKD^6@u裻Mmzܾ}Bx.=icn8^ԡHf?u֓m'%zwfZҼe4~zB 7!r.$<8_"! 1`}Άyj)H) \C9Ӄރc{lnEr8<%r߿7bV\gSSUsUQ B@nnus{'ӍI$_oو#DưѓAYXPd-8ۃ_G:0_~0SY?v_ooID}gvd^8$5/I)fgyq|n˷:rYX9Dtf"=XGbvg.K@Y\DɉsrfJ/&jg=j˲z9{  t( IDAT@9 JZ你\.IP%oD(M#"kjRbtw{;1FຬZM$^/ca]7OcHvd BVll^5R[SwJ뺊*2cJ2{-D EfoL@(d"38{Zo/ ^Egч3cZ$eȭVa6@̭.f6D`4XXs!-@$I&YY߅wrfeu9FҔ͜āxs1#(j^w|.zcbAӼSngc2 ٤cRLi>].rپ_.aNȈMn1G#qC5Ehmm]7@z*L0"HdL[6R$y:]r0Naܿ>nzx$!5@tC$sZ$:Ʋ,;zشV>Ƕ-R)9X8M_I"H,}>#+3 6hv$9_{DKՃ1JN.)dv1S΀k6f\~~.ˆ^ <u%^Gd.a~~:yJ{m$ kH :liYsB`Ĺ{ٮ(P8SIa T|Fh*DR B=/SbYc[&qN[Zo)/꽏]  gP*ڋ611z|c߶fQY}cJbfm&r}zdhx˵瑄S^)cX^+G=a\8fw\("&IAiVy)kx$@tGǷϿ|%]62AV9#lN*4!% 4895Ƅ yp3<|_3R3#elˇXyY5d=Mx[nL~~9y,uMz9[L~~%n۟9GMeFmH$ 0᳟ %i$ :.)N"`Dav֎Kqy06H5OT. 3\Zm۱}IsqjCv<8~$B&6Tf31'fz/HDpUѡhy{'ƘUT|hċL` Zo"Ruy{r9^vUaaƈ\  M9U81 X0JJq?~IVR8eX0yc^һx񸗬,DDJi~PY瞕sJW^m?TMlNɪoZ/_v XZsߙ5m׈q/%ffvD$g=˥ ˥L,wc+\qsr)+,"& [# rNœ;rg)3%r^γ1˜&ؘm"6fV]Ϗ?iN6hܝIϽY%)3^mC4U""v?KIWάiY' ±?{ol^] l[הٲGLBs9hl\?>t][,Z>F1' TUy-7C8Q[2dDG 1}IZDY5Y6&>jiMr3 rvGiHcx7K߼t[e̹ms8EhȜf~X3g=s (4yBIz)'BIi9^͙ \r8neQB9#ues߁l\$cgf|h-fovHbڹ\/p{iʋleL01B9̍,q]USÐSUdTIf.xsrp1Hx\chbhNzK^JD4B,C4Xh*B}ɲ kf8_fXn-O"__6 D%9=DR>#H%1J)sNݑ8Y_ePR.`3Ze݈y/˲Ծ?>?)݇]I!ͱ.0K=jt1+'uw}~zod"p^^֕sy>[ mo,˂^nWIjo6ZIKQ#$।˷b$H~&뽶#If\6eqD1S=_9kYj navH4#Qx$ΏW.FQ1MHxi)vkZo,<^fQ fn51{kzLrev4AD|§|?5emhqOa!Y|fIDTF3m?O֬im2Ӟs#3Ф$h : ~ M PSgvf[D.zne1yf}TPjf !B4G Rn?~"9/gMz;{[yk{(a! |YЩenjsl [ iY{n6['$ERAJk6Sp(lcV&dN!oAfs?T^| =92Yf^՜K11z.Нn[Ҳ"阣nR)HpgOB yA֥ZIeEcT (LvVt# a ƒX֥rtdv=/3-%TbnO66-+bjce@,1;6݃Hm9R I -h>gmY|&0/" >އO)IFǡǍC{)::"{nhu,@P=y;7 \t}}AX溾pg) __RPA Q7%rC=isT12PoRRk{"49GeKe,:ݭx6 Qԭ{-4[F1gKbisqX/唈mΑ6H8=<Zk˅~!1-e*(@}LFDԍc\ƨ7A(qMcXK=q|$4I9'$s+RJE]}`ʶ\ПYm}zF!5 lD²$Rގz{rq}sHȩh3%D4U),hd6I͞B,sH@sfsZ?m]MRgBم|A@8$elNsqiY>JN6fh,U'"MUN[M_Die)1%jARKJjL]+Wʛ!,aL8X68[+e`c꒥9zqr=Ǵ1]2 i>rL $o,PdwrvӆHHWMSF;K__s)i:@0p%`8cjFfyGq)u{;(evԣI>Amlq6 (k &,kqd©+DPZ)̮93}?OcԺ߾Kh?n +0BqK]{AN zmuL lM_z]^# ~'t?O!1q{NDS*u1w%Q H&Z{]զf:an ut2vmQ8뭬73嘇rc{JrKַs%zMmY_8mnh]#/qTvox?ztvym,K=:`k3N$|>e}3@)-hza_ַv_˯?~Q×)]?o?r &8\l珒e[YkW 빏~F;b 3 ,,~T!9%y~|9vp>taZ¶i6'^GJMCC,WHjwX`ү)\J_OQr1ZȗVu֧20Lo=o(OǯjA~RVGuGSDDc`-"hO<+ A;ZAg9so[܏m'<={L庤S\tjQ8"Q^֩K̙{r S #)+6K.`GvkzbJL N!% AKosOX4b&}{LY ُcO9:x`'Jn՛bJyCffcTQkjH v9g&zzJ.~///fꡀ/?^cH*\D+8piotz`z6gg3:)HI]5 ,a>Ozyq3tX(՘lǗH@w֋ORJv8v+ǐ 0aZV!g?5 bdGYb.B0=^ǜ}lKZn6finQ aXͳEsca.!YW=))f1с~190;1ǯF1y5-xrN?Zk9r;4 ٫qR ՎI@S@r6G;c^Gkc9U!/IX6F@mV(ϣjdLUa-vq09XDl ˱?(dgϕS*T$gnu?$P)}\%5>Z?.Zk߮WU?;sL0շ|c)!3"vRʋCʦz|~3:lQ1 aS%9"!4QsӉbEJ DDSKnKqYϣ/׭b2g;Z!/n6fQxn;MmvC]$ĘfVKkcނ$+9Rֽ˲Rj=γ R":}íXu"zhcILĩzs.oII r! YK;`Jgoc6 )?7y.X4!eIQ Ԧ˚|)1َSI9ݙh)uK#!"z>hfOqSqb'O)Y'͏N,hR9?cPXBĀn_ )۲\T'~[ IDAT2p׼lT}cGb lj@V[1!]oºD!"coӗe%Bչdw HX8~>ccSRGh3syE(C//l6 syڹϳsgT+%"RHLNyFp2Gg m 楷 j]_S.vq@@>A3%*y)R. B~v A~%1S'"pY粱An(߆^Vyj6 _?L!T53B$6CC 咑BFve5iN"ryf>hm!kL9Uݞ^" "ft/g)2hv˷\_7#0~>zOaٺgα8VO?DHrnHC-ZN>7W$nu.u MFofJ%c cƜ%v466B"s1aY _ aŧ2IJsE.IY09%DgF ۶%F'ee_WUk>u̩`@$yW9/ P3\RS$#jnYK1\i)P.WY=1&speBJ]UHzz CRzPUuNn81H,Wf!4gXbʽ 3ǝXD=E8!Pei%Ǻ?$D'\r=HO{^N$Nyaa7 AL b\O'^N νoTq2|;iYnGڨX~<14;TVzykkQmSJBf(S2nzG7'Scĸl`)岬c rfs?bW""BA(_ z037>9;n!ĸ',mA`nlֺ{Jv>m}ncDGmeYw3o6"d7ڦnC|"izkKZ~xBYLB:=HRt45pSa$| `?W `Jn CɁèG{D!8 |Bs.|}bN"S~mK/`y>>sg5GtĐ*<϶mW{߶m1|_#ȴ?/߾Ƕ]c*a.O N{|j;c!jMCG"Vʓe]G128Ξbn3;V411gԱz1Ź`\C"AJq׷jZmU zDBp$r(LsʗK9tuCĜ~3r>bNsTDS0"=s,s4,xJ b"("Ng)}?>'@'沼vA$~!,Y|:R$ϯ!mz!\eihy xA;S!#zSnE>~ߪ8:昪e]TY[N/y_ bpia<\(fĂ90]DU ",8=3_V}4@wY.)9c& cNeh7hG_/Dhͪ~0MG6TY.9k 둘yM͈$Hjzf_L' {V6^^9pTB(ˢ׿~~=ޗe毯?;$޺/[iNKLaݮp<@O&ga[50)08ǙBh/ov:kھ]Ebn:t9̔2]uIc=B\fǏ_# ~޲D$L)]G~䔖Zg ѷe=zh;~ʖҶRO}Ζ/$g\_;q|+!6t`,~>i mus渽eF!myni \F?}ƍBcM"!8٧J(1v3wK10OQ*6{T}j\V^R~{sc S!1#;"4&,)v.,.~%!@i9աXf˷8HLc/Wwf"xQIs&1'Nf |K. 䪃{DSrwdDsKU3~T3X0P"t9Ƕ]l˚s*91lt?OЧ"qm9ԮO?>~}ݙr1C^XAe}>>2:vySm"rJOgs) QrRzfwF'S |!&t朩\gl"1()&j]c^)DA@}㨧e;Ah^,%DIHTu%BF Nv<>URbHIK9gm},!yX^k Dl"ap^UAb6R2K}ZcO$wJ#l$uYo3 .u"S2pw 18FORwYr}r!~,ˆ6zo5Lc7"1jgYtվ]3b$c?z\y]}:z! Ϙs,e:F}ny)9`LbL hCS>?~ )!mc:*P~[mLlXf7.os*`)Ƙ^,!DN сm9FeasEdYZ 蠣?q]rr^Dc3ry9L'.[Ƞ~Jy!*xMc%DN-e H^./!z?s@wW#l\5P讝f23 0,KHjs\[(=pe!08G.tz범]C˫{ϥnqwח\6 |q|X۶] q@{ 9]p ²_.O"q~,i!1k)g1"10X"q"ͩ1-iلtXb.8۹_ 9G)g"g_5q2#[%du1:: ~oJBZXBV}cݽrA攳:4-x>|iۆyO~~1)0175tͷސq;:@ $#`$HSLsZH !VoRu?BZ_z"wKF=Xu~߷;㸯("Aہ@co}L%,SÙH<YS뷷Ϗgh{5q.n6ju~Ʋ0$fv!k6 )^[?zyU΀> Q;om>BDc jqԗo>}Yoo/}n7 )e

[K9j\ǘ9lq{)A9\Yr݉9v]c cpx1%h10,yq_Բ"Cb' %()"Sʪmt~:pt}ѵ# !0!0&1eg{[UsBvcX-JCuw@'IRC@0s&}.חG@As)C 7l;}̺l Wu eى@$0s Avur}1=?1?~lKu>.ף IRJȜVz] ǯZ @DSL%їeY??1B i_%5rl+YeĔќSLWp` D9'1чuY{Wpb QD0FERI/iY؆ϖ@vɪA.~g0yp.>NL7FH6EQ^ȩn_yC˛J,<rqw!wDbTթ9,7%BWh.q82 OI)TBZh*962Q\ Z)+" OJXPpbHs/yK)qlH!%x1"! ĔK__=|9Z{޶F\ǜ@\k[b^1ǙRc,#/twCw?o@(1Fϥ45<up^9:#JȡjWsDsU6T 7a|ܾBYt>C7O%t)(B_\d$OD_ 93s.%h6u.9HvBȪ4)!F ()#@x:cu%U"dRt_,:V_L1Ow 1|K]Q=YrZѩh(b6t@ Lo_á,[\^R):;z7m{DQ>Mq|<)>>z.j DD$YCdrw} q )1$B-zcz.!&y+3-8gT.7JKob^۳˜)Ӵm{z}MNµp71V{.kN"01Frc LÁsFv"sܐhCG3YlɰFΉ̬{O'Ō6 VgA0WnK1k6V#-z+ r֟?o}׋$fq~Bd$򪩄wS(Is֊fLW^n6g;X!>a(̏vv%8?ۑ2Y/"r ZcvwkrL珿̹91VjRpokD㣟{^.m8h}yϏ.7XR c==%DY0əF X!VkƀOfN@ Kg@ &2Om,ʪ5i#@K9DtZu]hIk!hLy<-R6ݷuS. %0%`$>-ertgGגͭ=,i ^D`."⤅I7[sLa}9 <و334ZƜK ѧ1|g@R .RJ# ϟ մde-A6b" ?$y&0lZ )طa~d};,Ԙc1VeaUX.֛nL6mϵ`ͤh!8f>,yuD`y}R2IKN09WIDAT` P(,0Kvn,JJO ot{N# Ono!@D5i*ILך\&">GBl뺔7J^oW 7"̀0X8VBє𒳨"zTl_?)'@gR:zoD 3SͪE{kz}qIkga\KS1ܧR 1FYϏڎSU.IS۷1NO5}Lz9iJm\P8kHb!!Za=( r{ ńf3Dd}m\ѭm;irswzT]m_ F{߶ ̜͝UjMTY8юٚn8"ǯo,<T=reNH1FuXp2"39۾ iΈs>Q늜|mx-9Us>6]5z%q>GM¹~I_dDh6"R +KM;394{b}: y8f7>K-Ą,r*uv'l},]˓KoD '"9,}˲//o91uv(??LSbz?;"QKpyJ)}>~ @'H*y6OسKPKŧb)QS>ƘGDۚ0kR3cZք8"&@$9o?9SJnemwaQ>L)sZBx]֞<0Ӧك|FbI9#FDPAz?Oe\_}]sL.yhң;9j.y )kllFxOk8vh |?#ޮn 0~Y}g1N64/]k kĢH|<5q]Ɓ:ry崲 T 1l2! #Đy<_^ yU\1ԔzGCD~wa뗦T׵wE;ﹾL> Po\^mfDlϲ,.o„7gk"zfJ]1%uk(x2G$PluYAr&I6Z0Nn}F=$*d$ w@, ""RIQW;v1s]0,KחWi lgr`3HUu;{v./+hќm6n1l{^psZn5f'DFc{`̜طD0'91W`GMe)̂@,H?@lz={1f MrG YRd ,׺.3BXܣMUs~]Se77 ޻"A)%֪Ƙ)LHӽ `Y43WrܶmYg9DR!غ\ھQc; K~BDHoGDpo="yi ͭ6ƹ{Xr)&nyIºQ F d)cJRkY) \t9TNDd?׏-us!9$͵D5RΈau.o$^n6XE;Z* nsI9j;~h8,uQf.i}g”`V0s\2! W}IENDB`dtkwidget-2.1.1/doc/images/margins_anchors.png000066400000000000000000000440541352002233700214020ustar00rootroot00000000000000PNG  IHDRJsBIT|d pHYs++tEXtSoftwarewww.inkscape.org< IDATxwE4@HBw 4;*b4(E*]BZ$@{Ǚeܲ޷w~칻{9#88Mh5Dd%`(rUKǩl lU՛q!B-"p4DU%TBDN~T-qі-HWcqx{K^8NF搖7q]8xw8qp^cDdcyED"\29N9DHy5;qFqgvt&YX+Sqz+qb8M+ "HSvDEQMx8PlNAD& TuAWf.S8M#i:oy=L/f EU$M.S|)-S%>7Jp4V^ߋdT>i 6^bs7'7?ڶPՙa_4 EQEQ:qGѹ - ,&:(|bn¿< ]IQQ[i&F>6  ͳѹOG៏'y+:~R~oAѹEߍoK4q&J|A-4DGY':|lPf^W`$gQ2W<i\;8N ]5&6T[Ȳ^ނȁa\%qB 9==U@D"RgBнu QHH&:7!uC;:%<V oK!|0yh"2 X5OWBxax"1((Sq lC%pDSU_ i C5»7:pVFDn yB1Eʪ:=/yZ yxTU[VADN~U |HY'^AދρﭪHĆzm.ڳ[^cNwc1gIZf_]N{+5| B!"Sy UUy"tbαdP'U %n"DSVLc |84_qg nUpd!DŽPݎPՋ󖡕p l)\Cqp0r>J8KkL} LUKbw{7[֧ pZ|0, -ڡwg'LfRndTfgD3P6><><<\KG7ʤ?38U1NcY+k?ͨxL$H^fNl~ĞC"v!VbΕnU0$9󌪾\$IMfuDD8|/_"v0HOTշn ѶZ2\Qp_-W+lXK2:/J]<. j nW|v,0ĵk.Sp%)؇ө-&avaBpǘbĘJ#a~|9OK݀G_\ ?W,lCj\yoS`o*'/~><ZY?;9r/V<#,Cf)%`R?x5.ɻFj6hL;ab:zRsʒ|;a]Iyݷ7>z2_ ~|fnnH^q 6[A nZ@uk?$X$|'fB? S9.6sOgߧ]!`ÆIGi91Z`75E+x^.oUڀ/_~GW-oU?jCKx/{h8BLS"^1(줂I+DYz(2y.L'l["нRQ+ļ/. :y޼iR՟uӽi1솱Qw5-D-/f%,o( %G:zlaUFKVn|G 8ܨ5z~7E:p}8G. ƈȲ"E,"VNC"ᝪZS%"("_c*U%]GiUB_F;rKIǑ>6.n,{< 1K~=`2= 3zw8?6#uodz8+ڳ"fhsUb莓;;`|aO#uRdfÁe/^R%Fj*ĜtYX2_5"""Ed)"Ddf(xˢгTGEY|/L 6h?adi+DS3y"]BjhIWeU3[n+"rlN750/D +E,>d{eS gI9p/;N#3̾ EX&7c82%c-JgL0S{?U7~6eNXmt9b_2K;fRkwY*_}W5FUߠRR""CKB;dCmF]3V4gLǛS2V.8^+] g, ^=koMCU.w0kT%Xʕj|}>4ljc"rӽɘhHZD˗VbT$X_eމ-![-[JFe^ ÝuJJsFiy iȮYVY4 ;H"-">31Wh|o5RE yEWp|{ɫRD JFn* 3|;+#"#DdVe:}LŽXX<98*1 06Zd,iҖTXt|_NpdJǭUU8kGQJjpB." yV&t_\ׇav Kvb!Q *Iu1eľ(s_YʯADb'Dd{Ka5EUOWSv "m31=FIVcK,&"ka,8+Yp^4S-W! 43E$ Oż:|AD6"Nig"kq^+"g&"&"1WSk̒?I-?zA"p; ݇6jYv O"r#"wcJ_0N/.pPthӀ1/`I+}Y_ZO5ZU/"\N(2EU;DdlE^?$YjkDy8STga x-%VMMT998/}>l몃 8[ĥjenWU8"6?QSg^cTum>rNNQykztu%^x ݧ5L?CIce>w͒_Q՟aJ[FukUd442->u*>Xo֪z%02J6 H6GI?"Wc68VUY$'n!xxNkv~$ 6<Y1)'^'[anYl:cZմz""ג4젪)O_zKUuf^"+O8)O=)Н*\er>1ڳW|,=b]ה-H;$)jIg.׸2| igj-ٿ N% 뇡 lY&3?CȾkO6Ŧ f5?_qoǃGV^U,Ps7֔ZLg]3N[Nnw2ۉ/9YV+A({z_ľqmv:|m1jCMsAC*G̙Mw^뵧.kT㪾/="r#r\2s(#6o}}On[eȼie:_8sҽ-i-K_'?+>SfEDb3 æ ܧ(^zd'O٠߮]ھ;-K_A;9ֿ.:eiqp^c‚bEV ^dbQ~ߎ_ܶ(_8:<{EvJ޲$'1lm{uqqh=M] ,C<{툫]Gc_\5oY"cI`eq&zi+*Y"2 L8\Kqz+ڳ pNt| Bo[gum2mW_G\Wӄx{ #"mڲi[k=!¿ Ӥx ,%H;oܶu}'#CoHˬ/s8M+;-@zۯ%T H^ x:s{i[et#y#sJ Wֶ6k-8͍+VfȰyTF 7s,k Ѷ}wm*=g%"물pg1#+MNN28NqqZoמE'.8SG2ۉMt q^cT -o9'+:/x8B1"]Sq*!"#ɱ(,kOȌ{=31Y˽t-8zQN' 0Y=c9иB{28NVTu{r8tx8qp^DDmqrȇ2< W i\;ә,=n^'&diYqWu@U[Ɋ[qrwq[u@DvDS|+mTEw&z}8ȌBw&ûC< =7)q>0E ,S]Xy§9NS 'q-8Kw;8N -: " T]k: 009V98Nz} sq*iy/",8=8=H]p&_\q }4!>^>DZY gy 8Nq^Tep<`|r8tx8B"} > НFfU+ti2˽Ű8Sw^wq205:Kqz+:-dEU_[qrwq[u@Dacm|U]HS8eVU,8=[ }llrߜeqJlfqB\wqqCbLTKiB| >|_6v^U ,NS""k[Tծ(|ElYy *:~&:ӫBtiDd-l(`zJOm]+d("8 +sU!"3Ed2pp}ʟ.&Exqz W9Z>bK$? _("306hxl~|N/Q>& tK8j2"r\8TUka H`4"i|Y?о:ceА_©5s|+?+2]iX}rh;wWk;Sg\-x\=hпmdоuSos'P5^OXMSIX]UYqj[کWյ18WR`a#-L;pϞw3teഭ6~q:B]ěd+S'%>[MmG`%U>֣8Nc@cj|"S"2 k쨪E?a?zf|Қeɗʩ+:%l@Vb08FUV,izb1rVUU$ѱ/8M+:d7WCDB& fi S,PD:Tq/NT+s8M+BU{}Ph<XGi-Tu[D`0:3Wu@D#OU/ZK8 K]:}U]aQOyh/)8NFq8m&6qIp8N >xqU\_qU| >9^YǩXy ǎ4뀪N[J0ڜ,88-뀈|X0]9 k;8ˌ\rj\ׇcu#+t  s`8N]ʨJoׇ.w%}Y蘿8ǫ{9qÁؽf%Ι>=k;ftv>}˹]_UEdv^n q^TuZ2tlCG3kԙʠjwg.;E 8R Y"reK&su}':!*Wy8NB{ &y sOw*w-iy Jβ8\ׇ=7)g/]ܡy^7-8͏ՇHeɵ{u;w}]S8]=}a7-hܤpLj7Zz 6 oYiS,`Vύ/oYi~˽s|߸pRcaWS+sqjwY[`_"CVX}Ý[?t?-GlH8|UUaq*z} /, 'ݻ΋v2qRN=Y-/<-GmeqBCts 􏎇bcqWT׵Ed3lLv8?Uۃ|VvV AӀT2iڱr~"2HEU䜔Y瀈 ú*oRimq.ݱ.69RrȶF4xla }pH8.EDDH&EGT&! ְY'\{"0uT7~ƛ]62?)ɳ Ǜc k1-[08yuw[H"iJm+U\K(=|?%\K> pFSʤ;S^?l<M뙊TAeKK<=CBXgoDoGq> *rIڦp&lh2l-O#"k'֘SDd. *->P`v'Ed  <&qENxHD!"6v|${G[<`"G7'B〛 ]BDNzmށȨQypy_b-\~3,wİtfFb*~Lj

^>_5ź/:H&e[蓢rs$1p8"JH{j$<3JlZ').Q9HZqz7Va1y ;uƔ% l (Kě;0HXwmCx_✖$3ƿ2CE(l`"b~R{/| u8NiW/\-cZ`-B/ReuK[E:V-Omi}+V8{lGTn! <}w8ZUWoVZff55\* 7Whmh8Nh cMvt7[fn0mo}Ubi1ؕO,ĺ׮o7aɜv`k\5yƄi[*#~cs9*7*ZK_O\4ʷ{+tq*Qpnh yqV-~W+PRFT!y~>S+E,8L !x3񔫒nTu[]Hɡ"/`c5`<9Ep'%:+l s@*9Y9_ޡ3ByBcohւcD@?̂?͈`S*}Pؼspã¼zw#xkܹj {p628NK("_#Uĭp>.S^_ī'nWZW1TqW^ؔQfGV-n1e^dmmՒj]QN6ϸY~tFZUdE^y`t/G<Ş`:l-XZY:)%Xn怤lNwRq  Z+Yw?^|l𔵡Ӆ{e8Rr>565lU_SJr'EdslQK5r 8JdH³j0$aђ؛7J86yt~/9CDvQ"22lӸ/}LN*iE("_{ZiZZ+s_ \YXqޛ>z[D~"""26}뢯8T[ݔ׽&oyZeҐw-O+mtq]ԇw 'zs$/:d<WLa>9)\ yRp; J+RX>[dp0{uSdxNK/˽塢/wl.{Q=#:>%C9QA~M7~^>5|,-j/˩\v^-:<-iN $+%Sm&Y} |YUO UвNKLUv^SnlŷkҾZ~!hֵ'1{PY4& ~bM ڙUY*!A;%>….$'pB~' cK".#wTuJHf4c,Ed [qG4- k'`_WBPR7FH[+q1UCW #,RՇ4:xYm Dd8VKXFixQb"29Vc"6& Ռfi,5""ےxVUgHJ"=aLWDF`csTuR/,OiX`La[ej鴽;)OhXLc qۋ?o+!MazHxR{CJaGú*|~O+b,k·dH)-3^D03ڻZ0퉵vNb-țB+W$UUKz edp8KU'Uj1I+W:˒~ߏE*Bb.^ǼK_`h~H򼪾^$mHKV+2RsWr\1UݶD0]Ͷ0ڤ߮ɪVy\u5KeneV^8͆ѹqQ(|dAբsrF[Y>:wC~nc;3 + _P&^C((|VAgs'DcѹsE'D\'^*((||Aѹݣ3˔K|,_L]_Y|,Qaa>`IʔAyH6y?.C^*9wzNSC4 .;ǩZVCCwj"1~"5fԙH}FW ,dtj,E&,p3E AUb4I>NMƈh>gAŪNi9xҴ򨆱"i:4IvRC-CE tid\T4q(LSYLMS(]>k6<Jip>9 ^W }v.jwW |ЊZ-v^J %ܘsiZi:I1[d%eG-Yoq'y1#mJ6,eO[s /SUZD>BY]Ԇ>܆-@kwbсM9?g,"r86xC"9S%qp+wqi| c̞pGi(”52;K;qWᣤ+&M'u8ij``G헣,rn14^fq^[:B\f\DqrZ[eq%/q8N qqZrwq뀈,FFDN+zt"9S%\ШWǩ]Xy}+gY>88-;8N qqZW8Bwq8qp88-+tqi\;8N qqZ o/{"+5 )"?s8XU_S<MT^&FDFóUun8}gTu^_ ,WpZUG="r,yݬ/l[|'4"r>p1U#OyDD>=HU ׼R8Yk `(h{(R -)7kO.`J̀2p`A:8 ZR9]^c\3^GVaW-1:?7 ?`UU]_U7TՍCJab).96\CC:HK\|>%lq^$5U 'U^~u2?Z/ `xWܹ^0gY"y,=yIV0>"54z|"y(u{x]3O>HD WYa[` u?aCÁ??Dvlj`WJ(v%݃1]@[^ 8"_`DGi_! |4a|. e\]YRK:/Gi^}A߃e!L`Dώe~\p)'ug|` a{ykW\~!ΑQ(E/}+ػ{doͷ 8xۮ/|e2KV)T+%%Wj`ˢ?U〽JRa> m Pæ%ǿ)!Q:inV+w;!9FU@+U!('=6:D^:6v_.7m* Ҿ&'{5R(, 2.~y_-, UBJ] 6V1KŽ-!ýQ_9:/>V*/LD*.P60j˫.!"aK'|߄'V4e[Ɨ[U?LI: ڞZa\J>N `pBFauY!.{{!dO!$brW9$ȸ36j`"_wovoOΩ{XP1÷H)3"vW?` _>W)Osg:+?a٪D:;+g!*q/vFcsq+dFG%r.V 4v<+g 7x{?=|M=񗰊]=_Qs*OU5$-tp"Hxðn$#JwPjXgwYj'CQQE5 aҔjo)r-H[=MKċ[IoQ 3x ZГ"(&[omto'|B-tQ)) S$jtoI_"Ӣ8_x|7 aߋ6+pnrQ` UjxT9{ ]J!?"1CQ؂E =پBoQGzw|k-Q1e +UXU0, A? ֯y/c=pxCPՉz4SH-I{)*q}rams\ސZ4pWaPг|MU4a'v.o> |VUiXzBgZsO@7b\5Z>|+ |&cgja;;gǪzVqW/J?mzi^*0tl8\K>`IjY;:}M =.Xݏ.V9"DUgwQahY2U.wy^˱76$pX*>uVժ2.u̻*TeRsғh?6fhWOG?+Uq\Ԛ3J߬o?NSi }kR_O"T a-dNz,${~ɲ!"mX}p٘aK^:B~;3ī*#oZ9=T{&jzގÆV 6!" 1F =y#m9'Fey5*`T_焪}3\;+su)K%Aܐ!x%c":QD\S~lDvvUo0:úHA%e?He%N5,Y %c.%[UR|HDCiZෘX̘ l|Q^!Ngyw,^1TV^7)AD+q3_ HDVƦ%OXŠ,C6Pjuc>@%~dGmNzUx4ݸd kؿQ,bp[q0rUSqn{ >9_gޟITKeElVx~NҴm)H/1.&3js2InZR YJ4:KhŎ 3YUAvd,cLD*Aǩ9$୰]uKf1B<'{[9WRwb-Ed$\{6O:u -QDV&O<'z>ճޟ+$ه'W*P+uta֕\e騒 LYMn1S$oW*R0fQUtXh`grd#-Ozv*VtsH&x^oYe}v!u_[K.$;[D)qH:NÓSoH璯 ,"EG@Y/PPY֥;ȧkPI@UjnqU<SDd"֒[X~'\_l"6`Y;= W%n@ @>9RD&~TuNtN[lY-YŭճK7wDdt"q/4 Ŝb$A6GE/"r/"7_ߦth*`&"/^nM\R&%DL܎᭹sU}8T96E=gPZΒ$C0 {oޢ^˸p<WgސH 9Gϋȥ"-y 78N2\D؎ħLlܭ{6%a/yzL&lXdr8R Ê%%8ֆSU_>XT"2[,[t*r'6NT*y%ڃ(ƀcKyO 22tqL/PD*c{vta4)iFc[q,FqN#";*YT^é!">鴵ETh; I=id\71򿤿|c?RD'3 N "ǖ+"0K8=ǻܛ` =˘̻gH+m/[d\ɀ\O܆ -3 >{TUڪ8lZ&^,`Ʈ1m^;NnBobB9Cԉ~jES ߋuɩWhý24:Лf_l1XP1+Wc]>Ƅ.bSV–TlYчetz "Bf S;rqC-uaPIENDB`dtkwidget-2.1.1/doc/images/pageindicator.png000066400000000000000000002115601352002233700210340ustar00rootroot00000000000000PNG  IHDRbG pHYs+ IDATxǕ.q*( I$06+Ԛ%Z]_[z}=n_}[B5, 1H !1 j<'3y23##r8u2'2;"#_/!H&aaT<^Ema? NamP0LaarrKRpT(P@دg)> Bc) -5QDlF(!\3bH2U9R Cr-8@dt\ɘ7!Իf1R'gPpH# \Kp.c\>+ub|"WT#cyfA\YIe-c,L^ &AGs4B[0ͣ--kB:A-\'y{ 4Lbdv0vC[6-)C䨉GNt⨉t9p3 Μ qt:59ӐĚTKX-[*S>BI&8cBF`\ 59+x\IYp"SVy ԗ=L_n@rT.8Hz<˭p: ̿455 ؑ1a'ɜbF# *Ɛ8F ~`@mѬۂ\2#k6h\%8gfR^xpfkgDIr0V3pEHAZWIu*2Fp12Kguls+^6ݺP6S."l&X$^[ٓ/c4e* Ww+U!4{% 1%!#a>RAR23вcPjL,3~XWL ,X9K8r6iaL+G銚yYESN)3U[YBD\"_ᓱ4TV .)/x6(`OguB0Y8aW-7TpeaXLS(d:Kz!ۗ RXH:h V)& B+"*]b!ħ(Yt6U` :3ym#Jq 9)+tb#ɒjL|xKU茔 cDg ]zE:3"!|SErz$Dܺ%iDX82n~CdNdh9S+Х88</%OĠйXr o>TlhHu`L% q+3eb_}ч z))ƂnǑ^%TRUk$hFI٘!o0Μ$k1ehPpQB !y4{;Db?#468ϑV!f%cX,nzo\y}CU׭}C'NS` p$a\$Yf0hVFenPhrN C &#m616w)ӢbkJg*\J~m+nI0LL ǗwJri \lY[H0c뚀EG f; oGG82˾}tO[/s={rڵ˗JkW  ( Y?W9nZu5ǩъҭ 3I_|ChYuYl!F=F> xN }AԣT*w.i;QJ-Vk/_Vg,\R,W\Y.\ X,̝U=mænʇɗZիRK/d%Ħ܎4!ŨBum*psAN@,A5#),ڥFqC=3#U1ߤc7zX/K :Sʢ2BtFȧ~>gk׮wu^`!d~[|W.X0s޼nB7Z /^hZ={Z.@v$W=5sm21M 83 O#l&1t4112IAxΣpx˯4x5lzVZ6AZ-#~X%.HG2<\ٽ{/~t]w``Zn,[tΜ9Xl|P(|>WV=?Ց˗B>Px\Zjõ 6Pi/xx4wI'ew`x>X \k2 /ce`PHFdKlx={ҥK!juhhK &JXUΝnmmYhd---]'Ns+ͭVkW .IU] ioZ+̶j`h&x%[L9 G}|S1 F$H)ViGrǮf۪1E&AfXc.Tc&&cJ6&ɍhҿ$̑~y`NI&Ýi҈݆:9'&hS0ӵlL8L/ǫψ> TJKL 85´qc>1q$x$f7VdJ 4ZorEeF] qrDGbxxӮMu\AُFE٭)0:#0, xbJB4-v #:t7=pdZ7W>0e a5-GS1R4#rK+pCS6Ay*| 1]ΔiE*tMV1d=#hVimT1qb@| e Gbđ*?;<N>>݅\VS~ Ws^dXAXL Jl5ZGЬfcxZ #RÑ SR16ìQNkZQUJyL$C[(\69Gʈm FmFznand,X~T,gM6+ ]f$ngʻ+O92zg6SqgeΑ0v&灧DP^lPucablzS(x$~ uRW߭(%ĕeԸҀ~JH n0Z7Rz,!h쳃y/(5 a6iR>3fk~<])%ߛ j!lfRG\CJd,SO8+kr$-HCj` d5S)yaͻs}dVkbT YkR3-|!a-e \[hN-Xvdq15hVAkh‘ǻ$BdtI}\kvjZtƎZ3l$iӕapD@(I1\A6i T#: b+K u7MfPJMe=(J5p+ юgSb/1 JjfU4TI l'2d$!d4 mJkƱ:LcpLE݊ -ְҐ!P0jC*1x+G' IPͩ);I`yjRYR2F>,LUUBo/̗T!$1\2'J/ޑhj+Ih*=&pUR@dsczInߠ|P/'%һ`%"HK7MiԜIqhrRԠF[жh Z Д.m,x(C|zm SN/,Yc$bcWEƬ֥1d #ī?GY?cb$-DPcx"س.ƤuONNJ'D[:ë1s_ԔLWYڂqpeÏ|ג2${eN )4\hNqjtEZ~ ѪIZ$L[rE8IeϋIm/4 ("<&m{[_493,NRt)0gyxC@]φBm$X?uUȑ>ə5#fueBDQH9LS,c &ܵIÎtpj L 0KD[3B3"M{y670Lׁǂ,cP`TIq->lq.%ujMT8r$(}Ӟr+ͭİ%q@RĿX^+Rb1h%G I#13xAƒI*GbDg_ކ"%iϬiQ"R?$kMӀ3])`1tpd'1%>~A"FoH#űpio!Y櫈*9L9^k1h2kq=In(bmS* {JIhE&35_B  pd0񢻘R"Õ*lt4ޖd]"LS}YbEUH,|6_ŦlIFӫhqI@EȔV-3VxMHg9GU4Oܟ!B(Zʠ4dtR=!=}i jTj>)y< V%E`nK(B;2 S263$I:$k;d/:ė|=)-td s6`~ɟiZצRV'u0'9#mz1Њ n O|8W}{dsiD ;W$Mk Cu$֟6L#cSbŠqn$_*X`'XOYJ;5./8HnTorf畞C Ń#稏I7dHYiE0*rLxeJF~o2Z{ (Ď*E1#c$V 8u/DBZ]E)o*A-A%PUzd7+|3AHY8 G-RuC|LbJض 5Kt 3RP"A%nz!\D?l4%+9wpJEuRv-!* "-iJ8eڟte'zv G6fUkzLr޽Ӈ;1Lis&.,8;s1@[TwhJby-1=ՊX-'Qt{`Zy+S.lkӶA:>G|TJO%^wT;n%c$g -*AT^QL6zR4lkn!NZ4eE!/i=GO~;1[&TPjuF$pMXej?@ec yyGPL{"52ɍjC0#I =dD DDcU?XV|y96Vz5ə;rc?%`|5p`_ъ+MY`d苆9R̈́’щvi80e~5%jw6F$@Gjɑ~7璚 8NL-}Oc3(. t۳ve‘IIYBذ`}w 2=YsrCB >->1 ( 4ga.W$ߓ3yv)R`HYXN-nLc$aM1`ũ%@:KمSx=LJ+\~K*q"9RVĊag>J ,=HHkplG.TAF Pti2Z.mW˓GئXDe"9j?T)@(:/қ/fߊ hNW8 z JDFVN… tvv ޷oٳ---R 8p֦!u K~11~=T}_U3H=G2 zX$KZ].U]$qJ㣻T=s"HH ƘԪIp]-rH֮X* %mbđXFmsMϬS1FEvt]uk܂,i:SJ)BX,ѳ4%̑-h,^~ H,s?CR^?#DF^$$Ԧm;{%I&o8}ٞ(kus/_Xc\\#9jhht9&~Le}Qoāv~/ ч4X^ m`Qߝ0ŗ*!\?ۭ͝լY5 D^T%#BnVy:.Kt u 2Ï')ȇ_%jugOerйJzqRYj)@j >}|O{V}ManJdAi!6Ңd ܽWŘ f&]|;:B06NFC1?? C b08XK/bR|S n۶5#=tvv>Ȏ1Re4HG}L(,)", (WS?DJI |L0/{Q  B|KiuP(F*e6>2 -,IUOoxV $J׈O/;k8G=;?~x!d||Odddr3lZ`>D7)qLr(pMM$}dB;RQ;EGQcZ\o>.[lŋ'|jmZ%ًGrz?Ma9T!% qHKi``KK2},>d!գ[eP"R$B$HZ[ !T|b(2,JRRJmH47<<\΁ _MTWW4#%h"\nY^%gA B R(Pvϋc FƑ Y 5Plob?DO0؟hѢzXIc-*gopŦI P2j"õŻ9BPƣée&Qf 3ۼ O$^)`"8I n ȑW(xgjugTLX]O a3O<ŋ{ !+|1eVB{OΞ=+@ePݼ!KKSȎ<R( gC8_B|B6'6$)ɒLFQT@0uxLiX-E "n;Z ӿ5+YK5ZB xgA/dI1CpȆڥ-!X.,RǗaBCrJa.*{p{>LcWEu"lii[[== {z 5i1$pM]K b&3ZA'd\'H"5$`JO)PҜ)SH9 ґ"Qkt3x_*_yvO< InLTEQ|njz/HTPô?e$>]L"tJ.y(s$if!'%`RkF:;;*9>>n?#(JO-Кq i;`kcVsd xaZM-d4O;}3v'wYЖd_N!&RBU6NՙSdRMsK|rovkqcCϑDI˪{ H#S^\;|ooU ϝ`G8ȥxA6">At5G%Pa T" %%DmЩ(&=JvPfFRVD_($u#vatz A- YI0)?pKK+!?i̝mf찺ZHڧмlJy)\<~frc3ڬ7xuo?R"k5Fe7(ᗜ5`|5~̑<ѻ+E➜֕Z֥`\~iSxYַ)pp-a>qە\#Zo IhV ng~Q~R,}c>p{ݿůjQzJ$2x;P#)S7[ӵ'H##AT ݡ0"9`yVyԼ`JBRH$]VX~܅e7nXBpȑӖo69tXM ikȔ u]{[obEvuy팱˗>ٞ=liiH/p)HhK}Th0()A#4g{o"-NWz%(A{508=ϔ%wqvؾaK.򗿪Vky׮qW_}CJkU\$iRނd2 S(ӹ>cugV^zYmrҥ}o˃b/0]>( ZA%+\%L@?Ք K?Jmkb>y .,_k&ǝݨsBɶc1Yn"F..I 닀%Q`ZR,8߿b=kq!z5k ^{pZs$ sH834̶y?"}rEci+,ޅ?М9c|hR߿g+~pi*p_'|YKX*Qb] Y|K5i x$??t@ZN2Z *ND?tXȯz=d#E  ]ݹ}== ۿqo|#~z!#nDFNAl81V h skؚfvd;?L815#r:y+z2tӎz㏏Bʔ|0YPO0% Ŕ ndIB .` uB"@q%XT^P} &#&'=`}ؙ -Iq@([E:88ׯyGvy5ZEbqd3`CAodCᣢV.^-7-V'"r]՟p Γ B4GFp~v?+}>M4Zg{PIMb[0}Lak^2 ;WZY(|}4B^(EJpnTp|S<84(K8,S[}YʓO>x"n!Չu넒e0>G%c :@14D\Ŋ l6Gjvb-ZDEü>LZ !u]b\*$ XG5,Can0Dž cyA0PCCC;w4>>;rӃRaML8TD%X"?#n^7yD8NGwttĨ->?ÿV*wuchpa ]Vu׏$Us&20ߐ$7`.&B!:֯ӳ0 M1}2o'# z՚)}:e۪}%(EZ(Ϯ)Rg?T*]v L63Ab7ۤ,m?ŜVP] ĒX 39..|y((KiŸ( haR+Oꌧ |P js@RwrAi)aqP.=11E˿`8c\we۪ Yj~B#ܢeIh&{둿+F'(Ky£ZVUmIBYA;GV@E.K#Ҥyk>9;\{\lp端hz( ;%+q LXшGqek[1JiR$rwvβ-/=Il43:cCk҆ O!໓4ιault09ۢrFĢ%!_׭-_̼l[,YWUK%!rlҰ Oa}e>̱!XU)/))G ęSoPuBy0o6YR]D"ʔXu32]ʺ0nSzX$/9P Pl|,&lq8zq{ ʘAz1ϑ}}'G8r_ "6BbjkWRhtuuũ&>`eXjNe"_[4 x3</gyŋ78Az(b fL,lƐIec蒣X,#K}$ɮr$gwJ;((?x HAjuT*?VY~911ӟ4YU, U"{|a{~­/f"%)4Xb޷Ã|w1NGŋ;9g|1f*r*\ c Ңi|,Z>b:C Ddvp&_gmsH>%15KΑFMƔT&BM='VSpE5cӧO:u lQ$٤! h{,fr#6He)JIZkkdY(.+Ną;T=?[aV ZJ*-j 8VN&t%1ςR2e`_ J! `_en:f)IBFvq,4ŇC̙'L[G"UD!PZ$'ڟʻFO)ajiڻkYfxg`>AaY͸|H6L_@W2cf"%X֤f0V$N2y|G1ktI5K 8uޔ§#Ȗ$74im'8} dP |ݔ1C8&㮍2TnbM?P,KJ}(G뷤Jp)idP&7G0YC5)ۖ%U-EkB6qhVy{" I`2pl ~ E0~~9VRg:1Pt 5p(ʌEwi$Δ3ǔ$$֤lW {*-(yMpZ Z+8X!Ht#*X*%xK b%d)IxpmHƒ36&cҼ#PB3!Lzk:a$ӡao}W#KOL bSǑH*G G:x)H`Kr=A gmCgM-z7ۑB5IbmM7L9r~3!HMvd7l2rv@撚lD)!|]t4R'}HDӚ ;08U7e IDATn)> +#KS2(!CrM ynPāƄfp GƯ[TZK@kndĚ H@,I=}x﮲/D q&ﴡ ~%'Ȭ&0w0+B].z)3t5d3&dOJdu(!%p!ΰ0e`MVR|A&iA:Q}k,9| {oDOee/&ϓY2b#-C^?Py)9r4MCZ0W41j'BU/oݒd=2~ 3(g`ߚ` ˤhf!x!C5e5p OD)Uȁδf/+3fo$^X70DEEYKIe4+^v o @Zw?f2G۶aP] $۵4t?m>顑;4޳:ؾ?*`$G9"&zS&hE2K?ٰ2SsѬ(95'Og dlnHJS#892#ǒk`/FS1:$esVmR*r7J2 YM޾Iҕ-NijΑ9r䘮(Ŕ:% ;La`q1dTcDBk6 [8vxdMF!2 b7p"}`m2#G)e\Ra:MvKP^N9rFx!$!1-򪦁T-9rL/42J p"z[9f&t;]IF!W̌KSd#Gi 5lINOϦ[Tju^sL \ XXF8LNN^~gϞ2-*ʆ 6nڪ#۷Ó ǩCuݱ;vXbbbرc'OsǣJz;ɓZRr?_cccSшf8&18Ą7Ǐ=ѱj*u,Bժ'O|[ZZ$csĈzj4)$3tvvFWן)W˰L='xBSjbŊ|_}K/tܹ cjϗUV}R,X@9t8Sюfcl[!c/. ~xiٳ+J?s /ںdɒ 6\v ̓|I`uvv>c]]]i+J__'''c.*piRڵk .=u2D)=~ڵk ͛7B.] 0 QPJgϞ]Նϝ;駟^|̙3 [,gΜ!ONN J:1&all's;p@\NnL 1>>Oϝ;_ EuGGG !ҘVcccfCoqok9x?3|`{{wN";v266o}kʕF-[|?~)nj?l2o/[T*- ˗/~k:=djuڵs}饗.]Q72\ ½Ev]W^1c`bb{7j>^V;.]2liix3Gulb'?ɶm ~###ںuk&=l߾oHáZ;v,N̚5kmmmrg g^v!1mcu8<cw޳gdTz'xm۶uuu1~hRgg;2xqt4z\^ve˖9g_~%3i4Iq]wŊ'OTvZԩSj[v5yFFF|#u._ɓpώ9v-?Xlիo;vx;`=*yyېFp'p ދFXyرc˖-Z??^|nTGɷBy!8 /VUu-ZtrOY6% Ѵ+ juxx;<=}޽9t۶m+Wj3g#<۷eڵ`rܹsjJc,X6㏿⋵k}ݘ\FGGG o-|4[~cǂª5kRX,{(u|AŋT mC7-rk׮ڵklllttRZ.m߯7gΜ+V|Xz5IY~@!zwyO>ϟy … ˗)}}}?8UN$wNNNvvv'._|a58֭ g}ꫯ?/n[[[{{g}٩٦c&c+Vwϟ?'hIKK֭[={$f@#i ’%K~Λ7ϓ]rGrԣut:[RI>s:::\=BKK ?]ם57|r_λbqΜ.?[B/˵Z- !B?32e} Vuwyuق֬Y344G{;njmmUz(ILi12bBU [r|P*Ǚ?"REǔs$!P(&J!D:$1Ѿc믿~ .ؼyG}mna~nGtFU#Y Ϗ9N;@qŋܹ1g>`͋-' Y:~===R\92'*5X{nrrVғ'O?~!z'*W]0o޼'xGX,|şcc`ϝ+k3Qq>3qnٳgBҥKvۭ---ʫ?O{3g[nr#GHZ16}0e~{g֭Jߎ=@Le$!T*MLLbT?!d>dɒG8p NLLde~nTFgzz…C>.7nmٛ7o{?s 9rSBHkkKR)J.]w=|p[[w5k,Yz@A&A.収'Nn޼__B֯_M7}}>'JO.F(I瞭X+cccK.t(k Xd cl׮/\8,پc{[[[[k! $clٲeR)Vl>Opkڡ\._~s޽mmׯ|5kn#G>|X,}6P^w8ׯ_/ӳoBc,LM.]TTOdҥ< vvv~ǃ?{|RE' iD)]Ώ?XSO=W.7WO8޾=:-[<844ͤ))###K.}+=ܣyAX,vvv._;Xsrrŋ7>>ٹjժ;sϞ=93M?ưy'_/Qqwo~WΛ7g]p{ri&BHPXlϝ;7::zх 'y)MRJ{+͟??Y*,X}رcE|[<7p.wb8{lXܶm۱c,XP(2Ǝ9xrZV~龾>/fZ={l>ƚ{\(Ӕ w}7t-_Vc@V"tZEV'Ϝ9b}176:^x˳T*/[… g&JȠ8qBe ˗/Nǩj+7mɓݳz-GB? f#0%ͫk&rX .okk{G4{#a~rR<Ӽ}IWS A{刱w?=?K_VU`;w,[nF +8rHͲnpJ' ꆦĮ]!˗/7|^xVlڴ͝;q w$^~6 |HBtKX@}c9%LX ~j8Z>|__Ϝ93k֬͛7?yqdd$FkҔjkBmm-9}L׼466F(UojEzVZo?~d\7R؊/,o]޽{۶mhoS'''{{=裁Z* >z:11V*-S4Qg!,u>'JȢ _(~g}6~?FGG]ݴiw[[o4ILޛ`BBGP8z7o( Oƒ\tY j]۷o}G|9¦SLUݚaebWݫ3>>s/88đ? /NpݻwW_ϥXS‚# Ӛ344ի]]]w7mrPd>3~g̑-页u߾}CO<ҥK!3g"ucN6]_v>3)U4Z5q׀C>?---=?.-d:;wSJ:q)ڂp$"29tabbѣ6mT*k֬wl2,ѣGy(>XN@\\>xcl֭sv4>>_uTzG/_S_fݻ|$4GPWO.]:k,p{׊+6nxM7e0뺧Nzr=CV5fG])\.={vxxn]nUi522kˌB8swuwww[o}v϶YC%kc.4iLRtEz<{Zܹفrcŋ1[oJh k0 %IiZ*Μ9lٲxX|]Cf,iGJ޽gϖOKسgB8{֬5kn.^ů?pɓ' MhLJ$^F"47[sX}]s) jmrrr۶m}}Vǎ{__v-)xB 8ٕd2HK)8}Ul%_|ūW66 hDY/e8hRuצ[nY BP*o9N<$VsJ| eKmذR,=8LLL^~}gΜ5+NWC2|A6Lfĩޓ8X2V*o}ƍ&.}>|I$m?;g{4MHg$NލY(MVNNN(BP(PƘfRZP,VʕVv @Mf^9cS{qˍ3BV'ayRJ)-c&XPhdoȹ00$C'&&Wߴi-&&&.]W'`4ME?r_ 6_4:`s:)D 8RQàմq5F:50`1q}%Ja\pq1222k֬o~K.moo,GGGGGGO>^vMs𔠉hoVIl K3sZ;LKj2}$ _g?]GFi74Ef5!ƊzAD&S͌I`/ Ŵ "?, :t]\0H$}FdTUF j#4F7NDܛXi90{VcQMYk G(OL'RIu*Z ;ܛF ת$V{P '4&]5jӁUVVwrL 5 )61 lXs[aOTk-.OrdIxOcF/jd&ù&~O ,ɛr B¡N0>7ZE|/-'\dk׎0E*bҜa-Jܫ6  L (KhpFoU)F֪TIJ|!~S8Pw3((V`Bc,|d_ndJlPR59AD N[^nMܨ 2G#MJ^8OF#L[zʙ2-<*'ăͮu-D֨eQ>T640n=X5+҃nXL۪A~YTĮ߬ZAi!8AQZ4iRX3( Z(~tN"2-#'TPR@SZgKHi TX 0(aI[,L{DVS/JB|%0禡 J/oGȨВC50Lk/V}1IWW:Hv71ؚ̺ߢG|@h/+9gEӕ~IJw &] = Dh~5 %^7́2 25gWh8*ĬI'SuֽsRkm=W O{vy44?]a?"8hef}n僠N7 k6H 'xL;NWߎa@F49U" ~t!ҙYHal6 PUH/|UA%:MP^/DXdRp}b_\\${N:f <<0A֡ivw+/δ&+ZdcnD52B(en 2,*딄hR[./;(AJңE̘ 4*f@8)  kW+4>`{ ѤFU>Ѧvd-|1@dl7 ZQx3 ɇ1И CGA ٮaI<+5ɑ%E) 6' 'ipI:PIu:E"QޭUc/v$ U^n@jHDb΃22& H}LUMbPqW YXrz[4oñ~ɸ.i !{ H ʴmaQJd0- z#Uwz˒/|AyZ|2B{P)REJe i CYRy}Ee=8. K#xЀ) 8Uh]L8:S͊рI3Gz1Ԍ߾&m*dž(EwM|@]aYT,fL d`bD˫'&$By_ B.nΏKMثh??@kA*y*A]Z)O ؚ(ȑ!asjeT+E5!JgYY#w90DPVf}!F)^E`=N`Po 38;D32$!ADDϫ IP<xP|-[ `V;nYJKr^E xΩk*<=i8)ʌ?v,E)Bm7*As*Y+Ő#t(<)E7 RW=*zh4AČL+J%Q?RV?еN4ᗍ)"Aӥ >1 n+p}R~<C㜁vaVks*Au)@s^[Lz R -0ĔV0O/gߛ4ؿ|N|OrkL҃C @-lY#( s۷ }M}k?LQ/RݭDB#,hpKF?d:ʠi4M)4P4G !եPsWh'J ITHePݛ\1oIZ7G=сuxTQ B7c&@5~6(+ͶCNrOarEiPPBq+QI e _Y.(H)QM &KIZ+5DƲo^.p9#!Gjrb )F+3#2"Ԉģj"*&2-"- -HoPQ; g{:Pcw)W~dVGIZŔT%#nA : m>I0~S3Lȉ]{ ˎN83=/4IHBxI BB@ E:ްozx.c$ X$=@H<[TUfVfUsTku^̪snC|RDn (-9^+f< Ʒɦ,iDeZxȕ,HdPa[JSHsberR"4")EUJ4AK$xhQfG9 b_ -'6yUWԨEXx$W`:< s OڦaffH %Ǵfă-IAj: ,+ T-QV/"U.]Cfeb/Ly% '~)+u,ҕڜLuWr RxY ҧ5x<5lU$3_ ^-Evj'M`iӂc$ݜ˱Β0;N#Xɞ6Fب NNZ5D%IDt";FE.' w!6guԲؤl%49u\;4a$I#}`:O_p2 xCZ[2 "Q*qzG)wJ v+)kCy y^|G\qcI-ٛڗ>5CW٢ *WS%HcU &%nNd #U% S&޵K涴\KTsj{)2 G"ů+m2l f JIM UφKtjfUϕ.¸1'0^ߘRq[ٖ&(i&o i*PE&2ˉ̊dx!*!$6Y&SJiYD&sZѱ(w8D=1j_N\. .y-O<0Rq[<,AJ M⤓NxkY\\ p8ZZZڽ{xC=bշ e5Z)R$=v)%yԾ,S.6)??!cd4yݟoE'0\H|^&YUcA~i#Jiloz'Oͧ7)z ˃-&=Dz!n,J}QiJʩyzÏ6'q9㮅¤2ÃoN?ٙ8,lڴq۶'x=/]kܛ#&[0rZXL-+/Du8vdHi">2Nog(@XazѺYz5NW޻'S 7^977.I3֞ ql؁&W w +kvt.\gCTh_uQ^pxO}ӛ.زe_ꗿ|3Og鳳|'xM7}{x y5Il bMߝQO 4A2bM3NsLg暙Ak|g6`\."r=c3`Б?zFxl߾=knna+Bn#k ͱB)L BkXi SPБ'ɹV(- :r2dڸts9oذ!saŅ.x~~[nc'T2.;{iLB㉾9xk(2$QTS[Բa T:@G^ #g:[[tRS;حM @%˓pi4ЇO`m// ݂iDy>K{ZޟMy&^&JQ5z hiiCz1c*3Q ]B)JM\O$ k-G.YuazI % :;;Hz{ad`F4.0?_oBEs Ht'?&HF|g\RPQMq U*1&H8]ȏekDsN`d?sϹ;>]CK;WX3I+Qr9o4IpNMBƘ~v!J-<2@DQVeR;̳`XBY߭^l$V|[IÊ'M(Ӝ;LQR_>!x3-v `hПML: (^X0 Ï%,pU(NzUF~矗/?}{{~ eS5qTLaBYTrj9Ext5utpKO=g>;i9`(IR 3({% *AֺrkZnXkgf} #__ElBKk3_PQ~-V$Pկ?[^O_BA £^VG`KMoܰa._R 6̽7u=w(98&$bzkYv5 JOlb$z>0O #%oPZ)5ENSt5Aahyy?[l⊷yT̬]w::?Etm?B%}*Z?%Z'[2/2dh{nad^Ik+|qqAUŅO4 M#iI}>%<` ՙi 7XX[ÉoS+Rć^+߅Okt7a(@xV \y*lZl(i|1BM0ᖉل;hc~//'-F-;Vnt-xgL&L!,ũRZVO=o'"GCҰ)OxUL3j `w,3Yi4b<+nqwߪダ4KR=AbrT5\?'й\twD# ܡy'&yC/G?Óq#H H"<5z)z> ^²;! 7:2;;sI'>YDogS%g>rh1xuRB o|㛏?ػ-[)!7I൹ G"a9:2Υ bjdw!]Mk#Gfn#\$i!nCYjŖ-JʍԲI/u6Zpk^svAy->眳~A7#RCtΕO:|%孽ɒC꣢Ge2r 8pݻo߮m(wt0|Sz{޳su i:ga 3TO`=Kr7H680w~jPxfN#4If QD>lCRq,)*D']פ(#'\]TKv%}R,,, gfDDGer?gt1ڗ&t@)vM)+zG/virI'?}-T r8~sꪫvL#XEYWUwu?`=s}P>cD^o<W_})??zSLF䝮|3(-L}X$Z [h\ b|+ ͕`xz4FBm:B)3# =M6Tju4`ƦA~I)v&T=L R䘟ްwGy8/c=o^N Ă-@#_#Q٦),`* _N Q:ƍ/n fggo}ڵ+'nK_җjO &8+Qzθ# }v*-=(tU)"%ߛp1}rKH_0՘쨂ڦšT11hKӊ8mݺ*+NmPDt0BR$ԭj oV!oАHg~~mo{ۏo~󛳳+Tmx<.䒗/xH2anOjHKya Fe{ IDAT5 fK: Ɛ8"*& G 1Z^xhT(WkÆ}߿w oѨݬh:MKnQԘH8}YTRsӥ(E:땯|Dk-}뮃ydQ0W[a6m\(J"GaS)f6j ^j":_q9)B{$|G:;vF#cee[#ZZzjS1O^wr-7YXXxK_ Uog]B;] `󧷻}q7Vy(muLF)K4^NGϵZN&aIvTv"NK7vW-//ͫRS,.VrDz$#2hff /o}k0|;yַI?*+HYa$pɄ $ʹ:v#h~YZW,,={^زeKО=/TM  ȭ-2=My_}7t3Nz뭷>3wgqiu]wwz5uFl)[@IR>SQCOm*K\Z*[ǫhjO@Em{]}_־)֭[O>] * +1aHȮFIcbIu#Jd۸q>)eVL:X{K((+ M ƒؒI#H |j۶m  ki8KJ`L|$F[fJK#-o8e69^}$|B)6u"=6l w3* 7\""6H'ʹEnkވ]۞}b3/JF[y߲u붭[xBO}3=$εKlLl9e Ꝓz62*7+3HP4)7-"@[l H@ݮ L`Fa?!cZ.%i &5Nb/959{aaannT<F{n~ $j/~ˠDNo4ubjބ<>'hAÇNuWq&7x(KӪoPg7SbN*AɱnHJ +FäYWԂwnTjPJ=G#b-WARfE7L+L$shxȒ+t )|6^ڽ?0?Ȋ3B2}ñom d|կ:?㊤HBAlxV̍ȃTOp&D8Ɣ^Y0iCYWHlĺ),^)TNӠ "筎v:^_[5C|o.ы^eu?)8%w-Й( uC,Zh2␯P5^Ċ]`1nZsWKTtJD&.qmuX + =E#`i%ry(^ڪ6FX@ȤѦP|hN&0K-1NS[ޤӱW`vylȻt$,\x+@^8 m }hMMJ̞Cck7վ u1$@b,bnZ\5qyXV%` |eH%H̉Z)}E6H8Y P9nڟ,*M[S#lxPNT 0!G#>,Qm@5sY&W5784`b!.]@C T 5L74 kclZ 94?끚QK1l`b v&𼍒NJrL`yrfhtuF DLMvZ"cd NG֐t:nNHQIUG˂"u3HI"#hoSVT(*& 巾[by.aZ% puFIA 2aoe$Ѻ7jHx6nnX[V2oQQ5N}nI@P&fQXEPG-fp#Jl0q).̋mFHYoujCdyX6x-{`vĬ#Pdb;m^Gؤ HnX ]'P 1:Fr{!r跭F xXjm`XD\sVKky6 –gHN1rJx/6™(,!ԮwNh1,QL"6L@Ga"\h@NJN ` a?C{ štH]C81pl<$_sLX"0~wD`5 '#O4!Bm?RJ^w6(&c\k1'ɳTIMyFjDla[,IXu9H2*,AYȘ8J9#h NqsV xoXRuޤSkjos">/ާXU%:,IoҡwpЈ^2l$qॻNHՍBnedRj$&cAmPqfr *V˸ YxS >ufԥG%@v7#Չ;ǧqq4i48l ]1q$YuEuH`X4]AH8a-`m1R&doh4CAAyUnP, bT2.|sKL@N2f@?aER)[ѩt_x7-EkYӬ5]SWSc-}CG/WAdŇtA ! ݙb 9K '@,5M.%C".SⷓޤyI{a]A,W3h!.N2APmuTt `aXc/ Iu,,#Yb%ыI:ȫ&eb 7j~>* {> ²l"M::- l7EGdXtm@`<<0X!6#9_B6WՌ~;*3E#\2QzTUA>i`̡VM *zr3)7ʀa#ȀHûΐr hf >CsԮv;9i$#RJ*bC쎶O1>U^X-:JGm{ƺ'&1 {$@P 2FďyA܆kPR]_4EH=dde 0j2-$wVOdJA|Inggq%LYp6v` 1ls3*02tZ*:Jf*B~YVa?B5BP#ZD1FJ9+FWE}#;%pt5<ɑl>VqEF@wD.s[9~q;>Q2yy}p1krAy?c9 Z1x#^Q1:!!gpO[C ?VbٸZƟ6z"1:ulN//)/r+Ms_d#Ƀ讀D;iO ZF2o?!S&:̽J Qҁ-aoIԂZtRSrb~$9"[Ȩ9հ.5Ο/(jLk, ܵEl.QnB4lGM)[3GdX!o/S7 p$!jߜiNI|KnGL)Sj#ur0){2+HI*{" a܀ qt!wdPN]x=ACCr;Qձ#wVjAqr\aC"8DFNEu=Kf%ĭ?JNtkkΦ5%l(Je* H٧e $|:"XX~U$UfCb"v1!bkXѕ,A02xN=J~WeH L AgKoAC:12KЉJWl )V  ]ѭdoe+KDHx C ٕkXxOfi/0 'kn3Cq?yJJkoT8C&‘a7U-\u(ܢzE M,M}&\Q¥2=WV/FWQ֦؂V&Ip>Ƣ)Q|j*q$(RfJ@<"vOܠ!H #I:& KT(3͟04Tv18*XkQJ kɜ8~쬚:PI[yjE.LI`p)WE+C/23L;R( sT!Fֿ ނ_ߩH(!HlL¥ :ܩ(EGJ04FD$-kOEVWQ#MZpeΩ~Z ^'D+uZ7);b)%YZi++9.gE553W71b(sABI֓(!b"oR3JAΣ1)>ž&f+<ʕ%aҧ icKiȨ:ݩmD*K^@O#nZLKAǦa*054y2ї Sɞh Y:b.]bCVa=fk IDAT`-\JLك$i5[*cT6KoeCh_].&N#3U:]YG"nw7GH_oiB;VLaKGJ>GVU79 H u]pERJn]opר"CNȕ'U-Z;Ć,te֚ J\(t0t,"GKQj5͝HՃli02 jj]^^obӣ~4$o4垰Jc@є\`AAU eT-L`}{9IV q )鈼yr4ʈoF5LeF.#&<-[!e I9/#aU¨EeϰO!wb5^(p6fݜi iH ,:Xʚ9:85%xTw-dE,%fMvרR$6+0[ Z;vc7)G{2dTJ#|Pt)BŤ<cBV>>EHSICpҙ~}q<=b`I5f.ZЛ& |A-И! )WoLm=Ky͖DY)OrRk#{鶉b<%y^hǦMggg0\^> {oO>'C+f-ޏT=DLi>&ӵ#\b2H۟ѐanZ3 2j & mwܬ|ekM`$Z1R]j?~d4{U) +BC6UWgK*ZkSO-,lwO~rxFM5LiZ4XJ_d[L\KQ+_+D1fQd&f@ D9;B8&xOjy¥J+gI˼uE12M xAQL_^^>p`z9lٲipwݻ 7s9CJ琠o]O\ˉC" GeF/?yM h4~>c?uۖe^bT= D~XBC[h۶m5gq  7ϟy7mz^- 1 dzŗUKj/&em\I}{׫_N8 f|ᣎzю{=a\G<hlEoKYqI3t& -:8}HNWzrqkdh<-Gˣh<,[F" $R$M@"j1!PJ㵣XFq:";ڹs]w,UHO?~4v$L_xSRi͛~~Yko^`v4:/?#>sg]^. ^x~?GUM@Vᴴ&G? dFF}`$J䐢BF ' *ėғaBB־}s챻N9[oߟ'p7?Oa4K~oY\\8IajD %!R&O#qq%f(v( K/}35'~׿Ƨy籔;;﵉0l<]%c4!e @c$V|9!֔ٛ*#$9P K`ffIK3v횙<#+k F3v-6."Ȼ}ы?^wyAGsg?%ka_Ɨxqqq߾8t@kDB_rEHCiJzٮF&hDwZƯxř5;;s/뤴CMDKS*vM,/>}ҁ]{W;}=/^hnn|ťs{߻n-]u` \eh"VoM|,AqaJMz3`mb&fC)i7tg Ⓠ1* ŸZ,CԺg (˶-oyZ 0 >;(eX;_p}3xӦo|yC^W[.Ŏ'ԩ;4e$=ԔjQ FIQZ'!f-FZӶ"Y <˜ MWz&,//Wdíodشi㑌n%%^jtһc$։]vzO=,Xi;yqnqq+߶01Lڭݕ=il)|-'l! ٔPkwʊmJ?sR-K)) ݟE_N3`i-8cvk<~y4}=7xSOYAOcG*2?SN*)㎹7/-HU`6(;{2]:T3S pT!>S?u]7s=f*AÕe6m JzMP@f8< {?}m>ºޙgvW\wM$d3lo?g69]M)N&uo2K|էn)f]}Jfg7؏}/YgcDZYUڡO$/jc׼đxÏ\{>O|oÃ9c91@uM_E`)5Dǖa^'48L.//q]7OڅwrWT/OLj"KJr΃xj۩ {p0;3O-,d{ݱ=;gF]O_-HwXQjMo]"mF ۺUݕb_~k޻m۶Js~{.Rmjff0'ƧBLJ>HپRmn䳶wナ,'?i</,_yN8 =v?&H}YI.=E"*HW]d'귨2dL0jaaG>BO>Ř?oaaG?ˈoY9=J]a%FmM'\pA5Vvj^Ƹp{zGC@ .}{gΣ^׈Hq p+5]յޞdL8eyy[~8wI')B ӫ%jJζ9MԢlk<%f;i'P+MeZyZ($&pǒ/`&ؠ1gqo0FViӦ+x^D&I82݁mdu+'ڿlmtUV y_---Uq[o[W]'zMƌ9=F8&(z`;fOm r YIC?D-S.ډ'pqΊwgfzF cG jL@dP8[z 1wugΙm+=6s:K333֎;ш+)?_:/+@"! 433H)v UVQ*q3+˂ʩHWq)PbXYTdw#zdݻO;4H׊M:ܡti n"S<,{`fk&offfeu!w~ &E6lG`օ`$`߭ Td4µƃ+(HhFN+E6#FJRʫb2ULƪ 3;ٷcfh-ٳcq_]aڣ,%&P2]OgeP'x/}Ica ^ObaR04u1秾b6U`:c3y2?3۶mUW}׮d4AϚ^%_}ɴܸPxUc")"2IzCqnns\׎;Q;6{DcdIHIY[9U2be$O<~8,o)M7}sIW(u{"vs lQUaU B2-r&Hfe&%YV$: hāY)"ewR݃ t扐R'&#t!~|vvw,*_я(_eUd.] cI埼RJ FiإIhOx NL Գ+u[&=+Zwg2zݟO<|HОbJƘ˻wsЭ> f1%%/[9p )iPLyHޖY/ Q!5-07Bϟ-#+ wqJJH7={Mf J)Wq8&s!~Kq[V*W5_Hn+] g%X i_D^+hghԖH(rΟR+C Du.cL_Сx<~J!< JVR^ŤtJRz?Aڳgp@B+Uyq@Ї HLAx)}Aanujr.+҉1%^-//[g┥%c vjZ',ȩk͗7X KT02_n4,/;w6d|x}V7\˗N:AiK폓/*,vp7K ؊7YDJQK-6R!OU +2$Iv&:aj,`d W2ύ1=O~ŝ;~.瞿[կ -)9|ӌu-Upl$AWSpjԇ6mܵkǛ|`01^{msw&+؉ p SH%F(6#J(4R'EC"~+Xq:Z&A_#)5yxY+0ZH#Ԋ>7m۶s>cfffzx<vgVkT'ϯSU-=tE?U;r,%Oxoc1`5^Ye?!#i{ir"nz^k\iU&O3+߮Uȼ2wLkt7F3owݿwG}bz(Q1`d׾Cȕ\3Z Ι_NhPh*KdJ!H]!SZeb6]l;64ѧWIaئ,͟VTdb-'Tj+$ef+> +8dYi0"8KΈlL7&.TטV֕\C4@a`~N޼$ƒg\4\<_qPR@Z`0`BS; IDATNE\3@6uk[Y]H钀qk2]ZK,$ ،9$9ߴ ɡн~S*#c{wc~?dN:|75VV-?|0r&1wSHI&1<#%edD9-@>(C*\$L0u늬(#1y'F KJ"N(FգLIӆ A@H~_Ԣ,dɝetX(?*5+C#KYnJA` GQQ!kjkV05TX8)B?kh9:2t]mb  Tc%!U PR[ YJ`g+}mp)x$02 2-QZ: :#W.QXl dܜdY1:+Rhdk5  !lP ܴ3j'' kԍ>t8O 5^4;TULl(ܙǑHA~lzzEm¸:RNKaXc%nURa܎z}ܲ1)C(^eI [iЖMK*5Wxzk/딣h4 ji BvN%^BGA 9Oh&.D$ykw ޏS'`K'r6\6Eg#w ^Ь F)y`OR20@ν&zzs-g;0õ~ r-x˳l#0x>&L"PzGw+RQZ)^'nJP\ 4 ! -HDzbuuG"uH%_YtΟ}P5IŞw,'V#\כ@匦N&nhW_-ȧănm|k70?Σ4:`f05yPBaRTB 8=*qcKM'<k#3dXF~Y<][S>BJͲɛF Wkʢ"O1g "5 *t Mhh0y—`_rcZ.S|FPU@WOK?MjbD#$=Z?`@ۓߺ7t:Z׀at/W"TJrT"Ȥyǂb7.&6cԶ)IM2,|9_,Ɇi@J'9O$=\&9oXfeZAB0{MZrRNH5/< |:)nAۻ^`1S B5fxNI$mNG[F47U\L8sL4AHlٰ#^^QJKfx3# bJۅ7h@r"4oZ6Q]T[BE*lGCfuka'w" 5ށFsMW7y䦙Apj]IZK zdI<ttA`=,|#⺴rӞlI4`[0Σ¿`Z%-π$f@i/eSE>K {8 u(LR&ANeGj>`6aRk'Ke$4:`{ϱX\JMIaABDEqqoRTJt:ۤ-Veޤ %93UE$6ZI% "(Ukj,|w$WDGG4v: P/>+C'jPnEk9 .V'f[ˢD17d7)idILX AakeGS iA)ZWzHįQ2aP¢o<*WG^|}*"(jSzB !9ՊgV Ng&\)hd3۬sɜK6jįӨd gS*Ba(!뉓kFM6X$V?򊣬/-47pVt4Do!Y^>BiZ/dDR[4(xaPZZ0V-*t!b+7i~:ĤӢp LuAVP(T6%@x@ՇPB"tWg.$5ul9U.R&cv`J>6=K#bn%u%> H!PBH9$#TLR{DYD@e! w~~;Z,S^dvJOH#)/-y-*G&o%pꮺ{mJHRV *8Ya9L_Fbеe ~"O#svåKf;Ӕ\#L Lu2o~},VTdg&b>av-'AkfKFVA!lp4]a$oʜX(jQ)\$ ٠% [=r)klEG8+pbgV:b܀(Icp#92 T"Įd|$6 r>gM 鲚֖1:\Y*v5ݓbZl\KϋOwA$΄3FWZ#YCUljbAVáL(tӮYE+tx"12@0JC "uɎx~ӸxcPvZEfu CBڣYnK{";BRQ&-۝@ÞnGe7 xbGMR*Eyh*@ T"+rcR2uׂCHR(*__i j+EFahD+4! ӉlixsM+"q :)@`D,ʟt&T%̢["zD14NR Cu!13+b3.1QBIKO07'ORs:̷ E%N-SV&R(ȧ4S"shO^2t'']^ ZF?͜h{^,,{ś,*7Yp'? #M D8Kl%ׁ9kA!)v'p@X L-$ul@ɉaԑ]]w?ɔUqi*1H:WLk#y@BXy?2: Klr8ځ H-C^qM6F{޽痿7 lܸi#AwdT/){׾v=/Cb}*ad;7v/%Ղrjʖ[>z肧ԈCW0L60Xkfx<^\\x;޾ebyi333;wyϾ f:reH1NF{Őix!MK ;"t-1d/-$V^ NρxDHx|nS3.!eɼ]QLɩ4ҼN-W\qy#433W|~~_(aH &mwM9N;WxV:-dkVamՖdPʜO)AqWSȢn[_h:j a}v]"`08J8YI=*Ώ$*ѽM8M)C9Mu:H7Cɞe)!bs<=s[T:uK*GA "> , 2Edҳc˫AfO>ya!vWk_䉚cSQT&jd!J 0iE֑ry"2~·}G%_H&#N<!4dU>^]Fֿ9S. %sp8tP6 TuSŮsY5Dldœ5)q:T^-Q-(#T; N0FGo*P_k5fhl2}/dvabd+WהIBќMe65pW%uI3qӠus #|D!a1j d%96mXT7M~o<˞:GLZyCզ}ȪeHNGMS6ͻSN]cbIAW Z@{ EY|%. EBft:jMbT>xl\a)FF4+¡kR"t`.i 5H ՝i'ZeYOXO 7Amq_3a,qT"@2f n } x#$G'i%E r"|)Yo̦̅n@qPuNɖC*s!R6u\![)u|org\~$QM%CݷaÆMpdL/V՚ 6G؀*33()j55R6 c䚠ɂ*AJ+euJ''\bwGx(:l y ߽c*Q, 5;W=*R7fKZ)zLaxXNP I4 Zp-dx0$(Cd\ÒBut\QXXze1\:M~n@G(Kui5@V>/֞I뼪yG{B qd!h[@`HG ,)J"ؖV+.EZT>tWչVyzDS}Us_T陛G73K)ӅOKg IDATk呖q$M5 (!i,ٚcYvSQHL;)jCb#q_$ xtqy Kul`AJ7&[v:iJ;aWK\t2MGtC IK7u9Ȕ#OuR&'QDjC<^ ?!.KFcGkJ*aΩ/_w'OY_|oGϞ?Xʻ ,,^NBrC3F?H3cBzOן- ed~*͹a|\1 :jð(USHL9lD&l6;w޻@7L>o1uKI"8EڪRf;g~lYr PC칐!#0 C 1g˶Ęi9GQΑV% ?-'Oen_ʙo>DcNf{Zr;R;g(RR8Ǟj5Ħl\l+{*ndт* eF$?=z|W^yt ͛/sZw?}f4h2+{ABZd9}ǜ]K\ۏY܃,.HQ}; !?]ъ|Lp, desir!9aMܪzG@v_׿U8y={54t-o9  $_۳ DRƕhpʻ:Vq8{~2kQ,1)b6UxX#^ku3fӟgϞ# vw~_>Hй GJ$ xnYH̒EkJqk 0b²2r%vFݚ\ݚ+)'MU[duLas.'>~Ʌ3ӻށOdw7tεffTxɈ\OW[us7 մDo6UvGljMj~S_(4NeJi1~83ō߿ ^Q\"fOjddPr<ܑ͖@H}N^ 7aCJҞ B^MX!s3oW,9,|>g%2{!K/ x ؆Mccq.,`yy#G'C2$+)by;WM1ejRVLBVm{:::o"C֬|\89e,(E"c9_^5E%B w*䌗EW@g j5U_kͬ<G6D4\Ӕ]`LZ'8(kӜ1ʑKz~:B,m֡,x3Ġj;D8 t(Tf+jsE` JQ{&9c;_ƣ;N&q^u(ʞ]g+TdGU@RJNF.عZW*=_xH[X"ѧcȀ5a m?MƬiy!tI/Ónf|;{߬ګ7u`?9d)C{lu˻0k:]KpNS\<ٔ}L9KȺ)\)|s5sqnRd$4e.0zk?PUsuѳ-i6+r:?RieMi#<1 Su8FԿyTESc@&  Λ\ۦ t]۵踙$r4(u6 cbv3ethTf G7("HoAG3bROB`{!1'݄B׃Tp.+ʼ`8#ppՈ^R}<0@:8IshE\j^oRkɯ`>ɐ 2ɍZ$l|WA,A/џ M(P߃VGaatu&\RXS(s>{30'nzRn-0slRNh8C֖n!vNVk\,Աд@ 21eN^A[8 >8pC8,i5P"`4#tR|)PF  OGrTH~7q)rd~%eE.FQ (9M9eY=R0*ˑT#u4J(KKR hF&6>WR4s:VuPAg a='&]ݠ<آGfG'Z/# Y6s2S:3Iײ0ekw@2L 2 oMf iCCsCX=u 2lI-崕qmɂjXNw*%Dntxp!t瀕5^g!0DA#G*HSH'fҍ!60=Mc4͗5K OS@)4v}e>Pf_%S&[~+G[g 7LCXW*ұ9,v]:)ۗlD+s`8Ftk)ܫ,pn\xRƑ(tBne;h6ΑUlOHMa`mG`Y~lzkY=A&L'Hr$[JNoijY;lJrR<!qkUrEXӕVy;n 92lsֻnSqdkȖVt4dMZl▊N<&6N$,*pΑ(@ ލkpke7tIK(pٯb{$ŰRFqzx?,Ν?˗/ݼիs>{O<光IDAT!t͛/^z9{> @ִƽ8bФdzPCx >4 <ORb1̔y;:҆3)ө0s$ae{'%Y֑sv1y4D`I9PW-{qd\teƫMYjoxB[Z qֻ&zv7x-et ׯ'w.j׮0ֵׯ}ɯ߿#?{aBjst1j{pI>TmwA7Xt Ẽ`OpO3mq u,s_Rf$5v3A:ȁ:!pe@eVҥ3h"V6= )]%(LAUИdM/Qo=Kn7_p~vyy]+b92X*zv űW^sb0K\_= 2-"km)"1%(S:\ԬX1eJ~Y?PQe)Y~ @<| xJ\nF Y@ M3&` )y!2gV_q.5&g:ۘ] ?YvK a='+fAҀMI;#H0߬˃r$8d}L#sC?sˠY\ÃO/J! V{ܻyGvfC2z|cҖӨ=OvݣG93$j2՚A @5Td˥Ow۸?ڍ2|6]8Q9x53<Dcw#ٚ/WQ0n۲#yF,Ľ .w<7|6`AײH[f36>/9PVۂe0}҂&ᝓiX}t׀ .gw3R_7ouov믿 ݽv_7zB9֫*S2Ƒ^(Gg I31ZqtaLd m8 pY\1 ;T`hy5u`yKfYNxK$Ov q YUIo"`"d+c ДhRr2T8;>@F|ĵÇn~|4$5Q@*(SiR6kׁ;˲irRD.GIGTSK^QSd+})FʷL%)MROɥIGY3!tFBHDƻq-ep.2ogzc V [0E˓*l!GU@3LfW1q&W*&Oj@}ukuUnwǧTe3 #\DђZ ]ka̹v\$AYW2bBU1=!=H( C3u!FŻ9T ƓrL1qY/ z'Jjc;ny8Ui)nrUŘXK>) Z2q,26PYoc|> X)Z+X^6Jld6rUM9i+B3ċKgy Ti[,ÿ벲,SwdAǺtà7 hp9*%6L69JԚM)Z]-.8q,WF4Ic J/XrКmsC ̤6D3XqMh'B?M|fRFǛH,X(:]QQZx kQ WtOeI.E1G9~1-mq!̞n(55Sr3sܶ|^g/m*t,9LuFv㽠H;j:B{)cfok8YX(4lL2aNaRˌކ6Ș 7V)G~&Ui` - 0Rծ^Whg3bLyIAa?}E3CJFv1Ov42y27\.jfm0LL4ݩԋsh}^DxBQSx56 Lq4l=hcɅ"~睢þ}Cw]U;Zi k4v›x@!C' M6b"Q}βcg!9 atZQ*n%$?TkZٮr^nY1յ#e>Hˤ=d'-}Qe.FmB,p.7wfvy^3G/Zj"Yzh |WV ϳ`[VYS a]MQ߉9qZ:Z8Ze>8'hrlpӷf$?92D(~"C6sVƔ>kz\) ,mk{B#d/ '/9'\&,@L([Mpr:aݩe 7J6e=3_<=)Nk' GDXRyU!b=n[gL#˱`Z'be l&nPe+5=*նk'dǹAM:fօ:[ud>_(|Ȏjd~gq,@WoΤe5OOg0N' hMp ޴^J\> 5[z ݎ\?6.@QM8bwQǖòoYa}9k^WS|v :F&38Z+„^WP>+p}nCsjP5%Р\wEjQVhwtxsʔ^Wz=dM1]<4ѡdGGGGGN*:Mvttttt4ѡdGGGGGN*:Mvttttt4ѡdGGGGGN*?BTp6IENDB`dtkwidget-2.1.1/doc/images/searchedit.png000066400000000000000000000053511352002233700203350ustar00rootroot00000000000000PNG  IHDR:L pHYs+ IDATxSWsvI . J6tddF.NvZNu_|3M[ZeBK#)P!bnnvI VeyZ6'=PB)~RI0 S<(bYxU1/kAr@}P$ԧvzԲwa!D]UUªJQYa@)Z } }*9JQJ3L2ҁjA)l@kimm5LHb*Z HsWj`6+T19z=6,a*- XIp՝Br@}P$Ar@}P<WZ T׫   B(xl6['ܼy*<WՆx{n,Z8nll}}}}vv6'm6ۙ3gNUOւRzQRReSNRD"\lN;e˯|wwh,3$hqdpx> tttNLL\v(%om0CС>L-&K$IZq o/^,?gcccdrjjj`SSSΝx$Lg644D7nD֓'OKXꫯ' ?ZZZ:;;.r fv˲|޽aۭ͝;w^wx1q\0ܳ1q(H:3'D"QHjeYrP(q^\;44444Bl6SJ •+W!Cr/ ].|xzz40===d9z<Y'''Vki'N8qB=^YYo2ҹǏ;v\`@r9::ZI@om@ PjXڵkXL][ZZZX,A:VO2 #^_^^.ɓ'Kn;V!9@{٬띘8wܭ[<#eaaABQH$Rӯ(ʃ666>C^6tddD׫Yt:mll嶷%IX,}}}>OL&#I oV-l.T:h`$iyyk``h4655  $Ѹ$90jD"!IAaAVVVh4#G8噙ƞx<8D" TBғqVZuaj{{[e 9@q8.vVY\nttrgشcnnN  S~sСqSNbGFFΟ? ~'$hX6j9]wvs玢( d2])NSӱ,)ojynsGjkky/j]͖cǎ)/rH($²li9H$RvaP 2ϡga,[_iNxjIJɱk*,zPx 9>HqyapIENDB`dtkwidget-2.1.1/doc/images/segmentedcontrol.png000066400000000000000000001047461352002233700216060ustar00rootroot00000000000000PNG  IHDRF6 pHYs+ IDATxg]Gv&xzT (hovT{ڨ)EK;iFcmlĮ664^iBV٤n$&$PW73Of>[ uoޓ'OB4EJ B3Ӽ\6K7U-jQZtRQkj,r5-)PZ-nM;Z䢪ӎDMo\U!T=F殰s]j[[XrLT?+,)4sdRjUnu50R=6qǷIa3U\Yaz\ 9ZԢET V^/dGlE-j%cKkJE'Kw/=dtęyBX~i5EZJ](V̌/pr;n>,"xB"As+|OfZ l j(5uMCъlNz?kZ4gte`ϕ=psjeGj-jQZԢKKOׯ WԡE-"IpśzzsZV\òQ-@4_ Rb9M"W #RMdelҴhaQN6 -}PUJo4iB-jQZԢ("r f~K$Ԛv̵eQsIӢL`U (kEw 5њus,]PM}ZNZԌdVÍ74BЖ]O-cjsE-jQʣCy*4BЖZӎkr~ 3RCpsj!B,q]cUmKuj:JjGE ez9Ư)VFM!Pgݺ֮=y188jժ'O^v]|XMn,z6[y1+;3ufo 읏Qcb[l?19LJ[Ԝ::;;:;;:,^߷tt:q}Νnں>giرc>wC9ZĔlՓYYx| [1mL( L ]zҥ'O:\PO_W_<li(+-5K &'ڏJkbâV,kqCs.1~s>GS|*xRHuqr{&''Ӽn(0;s7sgfffffgf죏=vڿO>uuҕ_n1𑣶KzCD=iNJi ozG`dNoGnΤGb%`%bZ@H6 [W&Į7W]J$RA&@ z|ϥr 7r@cE066VZӎ~_+_dOg֖suww۷P(r<466[o-cbo/QX=Mivex2.. EFnEMcL mO>}jX{پ}k|b^ ,PPVa 6K.ZL?"u뭷.[zС1'&&E{쑮. .ɟi6[d/S'O߱{ͷ5eIyq/>r{%EYd2lf\Ov^*8AM fWZX,n;֯_g'wyW2ttt;f6=}̕+Wmyx{{l.ѳ*eh_k_3?;[AzQvf':>~wK1; I]q砨Vʌ\_Mt͛6o:w'< jm h9z7X,?_0žկlڼG'NO9ނd*ܾm[&9|0f2Ǐxnnظ!>}9hOKR6;ㆣΙݝe(>ڛKԻ#Y7,>Szi\vb*5%DM5-_SO߻w/9ėk׮λ*lj7xLNNNZb,q'&G\y֮[;55}}nحn=z-[fffΞ= B-إKl$XM{ }[KJg䐏g{F/.o;<+^.,\!GH{ ˗/3YڷWhOOc;ɧM d hIEڞ|lT w}+>aH$]]B>vG+J,ydl.y|":7uevA~U[ޟyq.2C9E&wOvuw;.Jsҙ:J%;;;gffLOBDUL2`k\]9zCg :::zzzfffwٯ7/}L<;~=Tۡ<+=Ʒ L{WO{̱6΋ 9_/^?P(@.Zbſ%Oˤ龾0I]EͧgRd2mۭsc}}}B//|9t֭[/^|%K|ߜ]ti_ҏ|,>pΏ=vҥSokGGG_z饞/| T &&&xc_hiצ\.]K-T[nWG|նo^}kzJ9Q}7'Bi||}}Ǐ#Gab1KٳBu󼌟徑a!9|P˗KW\xćVK-6+_)jܚcLȀvc۞vю. l p  TݍYpU~xxty3BQmck9W.tttd>jxh[/]T͍[&:(GwVZ&~޻ⱃӮIB r5`U%u*c+m귵o 4Gch8棨kODU61N_(ϼs;y _wآUI-oQT)L?5SJMѨ7W/jS:P/p26S1x$ߘEǐ 皂afQ42Rs?x4'jmf/ 2c譾sH}讙HĬ;n *3*3TutQ]tFf -jQjK1^5tiǜMư&bs7ҴuY@ zPl&Y<}~}s[\# C|Z֌y%#eh.hqXj*CÕXw,+1QFf&P9GzF~ԪVF7 15Ypq9k-Ci(B^SA is4aطE-cˏZޞnoO&xpoؐ5:МFcBඨnY䪷̮Kb>d2LFRMx74P5*ȍUQHngoh:]uNw>iAVbTRٯD$A><8VjNlVڏQu*RmE3 Y@#L_K#)|GoLE8$ \(.ES}cZ [hJH&I:#kQ2ԫf-jQB\;ĘT0^w83È(UZ PnD*כlLKsgmeCvR 2G(5(تT x4QOmXU?+rԖw$IFr{ÜB#V԰ڜ ;&s޺v`ڑU>Arj~S$؈CNfw𻪞4ofHb |Z9O"<_>ye 9h? 5h"`v8H, jBʁjh4ήQFuPݗ:[dj`vV5a9`#,hAevԟ|.A}譌v5Ra^ P-O^ 9@/?ή.cG׭`xi믟9ynݱGYL&gvJM$/k=oHh>͕\T1˫[kZ?2SOm-*v GPvubbmҥ]]SSSSl6b]tbx,KR2%;{db87m>}KXrt:-p`w5=57rxλ_?,,[λcJG٬+JRk!Lđ; ?|M Ӎ* 6Ts8KYez+ ͓iGy2V_7r%<`G~EEU ZҖC|+ٌɉ ]O};}裏>x]bwݱېة'֛n期=s:㱍7:y"H߰1NK):o0:2ӿbl`ŊuN?ttt۰!`s~y>9rsL$׮M:x"k$.k=ϕ@R_ ^bMX["Wj즑8ea*3*8p>ILRvt% Sb1*vXi<X"LXrm;Ο;|vۮ]%owݵl&SO63=O;;tӖnzࡇGGF\S[#K{bU;J'j l  ߍHMQimDu5(fTVYp(1kr %֛nq.o3cӖ7o9'Οぎ3/Y9b_Ic+TcSSpoxJ7N"Dؼ3Bz=FkU~+ʬ)6@Η^.&hhF{]Lզar{oێΝ=vv.w->ē?SvG R/ۗDis[[ Ϡ&N^UJ5 _b&xn4]͍YxW*9*$ZQpZMZCsSm1UudJb81>^,F  [kϝ14H-^y~ XӳqW^VkxEEkc݋TpUcej'].HDR,AN(&LQaҚUYT'4 w*'\y+U~m)FcsQ}~=LHR\Ďk lWCW^z5NC]]^bWw0ֿlR⥏:qX[յe3ӧNUue܊~ra(~9?.]I)ʨqE\䚕mDGCbqiXlsZ]#J\ cl՚58cޥ}ydDb՚5tsgKR.ƅ.) IDATp\v8iѢE;ı`XPxMZ-M4!H€rӣT+O}jM 6 | W/_FצBR 8g\|tb ƔjtlՑ;bAαlY[*6% \bV*ӤNꚧQZP֤Rm#< *ñ?d2 xIWmY;nU<Xbͷfo^x[2E<_<W}iŪ5驗_|{ow")KX,6>6F")A4mOF p2< ibkCN$s IRÁ *FRN9EM(݅b3Wo e>79$^O(sh^+:]xA?``HҔ-5k:~4bE t<]鹷B02<2Zz&)8sᎦOF&&p"s]H5,,pJ*ScJDGJLaEt;MA ƒ` E=VO /&͝ß]x^@˜8SܓRΟJS1r7L/䒞P(VVHR`'YUDbyc&!zMʵjQ#:o7{*p"""}xMT`Xy*ZC:m֭sM/@IɕrE(#jZY} 0-8YRA-bOWzjv9D 1N95*B%N첅~yƸ7PDꃋR B)a#V WTLz˝`"Y Tƀ hQU= QVkyuY1xn(0ʉ.ܼ(™hukPa{*96z%3F"aQ`PTj jQ4g\q"LE_\Ϝ߁As@O[76x g*`(ǵ/"x&>CՆj8^B Wf fztetP -*P *2Asݿ[aBQgec]lĠngm24g >v#oDrxXfPi@,t/jQ>GA`⇚sBA1*YYuhǼD"[/Ҝr"% xCjVq*qOh8D'cR:7]~ o^ atH`CjTUp} h^ Rm_[<Fc L"&ûYYpHN {!8AeF0*):s*&60 [apʇ}wbsq% X,x19!D^lz"̭pG } +G=m(Q p*$)8wiX{_H@EEW~n/8ʌf!bB۠ㄼKU#h_bHKc.-O$o*2#!h\ hl蚡N~a3xB BXM5|@3Pϴi+#_!BH; ʨҹM9G<#ցUIi¿uD}tE6CѢHs ?kTH2 g#:i;ѢSRg*9aW_v3ޑH8۸jjOS878Np9f,%65T,$/j}04\:GC +ag&f@̰ᇪKY)3/ٸrvyak7/\s ך1( AapƱ0^;a^,T.3 k Ր`{9=d{0;39;3ieS|I/*oB+]_C4˒G&mzE<(3@F^귌L>ŻXXj`.TEtN3YUďD,&vyzl%Ykȵ s N9K@+Z Sal/, "Lg19p^,({mHTtEܚ Etf(cqq֛.xzRQ\lwBA5kA,~%N) *%OkC:KBpNT~:79neeɿ="9DB$צ—hsp P ZY_ҿG Lwm4- ؈*p? RU6|\m˺*8QlHV$zし.V;=GEM61B/Xiuha*8L~#S"3/,R4QbɆ~=c 1aq VU1*{O82lgk2KT 6OJ:D||KJC^Т_R׺ # AO3m&e̯0/U,w(rܑ3L=V; upP *7by]&_ZO .1 +`(RyrqOY=v&jVX+tLՅ.JPu:3ZT&Ṱ JnPy]HoY+o;''/yt60\OD9ȶ굠B4]ӟlfF K;&Z`.cB=U ҚQ#{3=PmG暺%sQ.!3h^ن[Ȋ)P1M+zK"%0H%NHϕ)Ʀv*I̝"EP`QdWw1?P 6> `ytYT` Xop|pVJvYUz]-4/V9.K4]t@RꗭPZ8eeyr\}- WafDhFtO)_*"AT nE 2K Q(`XQZb` n(\ԃyLx`jy"miK1Lt' Z%HXn(R7rPe<40LBx)2noS3dvݙ!u[5n,۱:e|?0.bhÐ\1KE*O$5I1U]ir%:YrPK"\HWAUb?@u6Qq H%7+X !ZGnr0!µ 2 ?8\% I ]qӜdzHt0$\x^ !zk!na/>g]Kr9Stm.WTCm!@py\E=Em`V {mM*]iāfm5Q.0XcTvMfNJkg% v9~$bmXϷȳUȈ(qodɇCI2uAaE*+݊,~~'?:w^Q7hx꤉* 75C'8]oI$ :K / % q"B0J &إjqPAm35ݿeH!4R LMTG$*X-#!N,DQ #K<]-#WLȦ30k>wz %_"?Ch!)-UHiLܢ٭]~YtͲT!z3~+0-TS "Jɠr {e<\O=0tZR6wrq@3}0'7npfdAWc _ms?$6H iuchԕZgF ~'*h!Kr*`O\ȤEިgM + Q%n fb(eƠ@Y@ H*woxݨHpp?[/fAR)1 IDATt^#9L5% H`lz[ jyx{\#1(0`QS3Vc !pUu*2ksYUk{@Qtfa9T~0~h5q#y߭ns)709@/ΐUd<ՙnp_[ԭ0]?;<H;,jx铰ԧnh&Y1cB\j( <N0l#aH5*Y|l3aC E R}E䈵Ai3HxHWQ !gc/w[yqoeVMUҜ9{tW{8x8i0 QÉ>z$@|_Al|θn!HGg +BKC>P,̖J% DL9wԑm`H$::SvbdVC6ʚ oŭtHݽ,k`(YͩLwiEa#z* 7`hCVYvA|arC`%Z ƩkĤtk [0CC *dࡥ#צK1cXkq# ]x:g0g@ˋP8y>7,gQ/AM@g[]}T6@Eb0Z*"?__NOhIT"t]W48M(EF[ \N͒#J^mf5(S"NR^G=H JkGyUm ҙ#G:F}fh9Ilp#`Hf.Wz/Df!ft27|k d00X%]T2&<0&$.(چ(@{] 10F/6! ӹ I T `wtQf慶Fp 1Gz7 iXvD}jWe]ID `121H5un4F׭VU6wE.nn<EKv׍( G LCBgYHb~է Hx;~3\~0)3-Ggv1Y%rPv0UjQ~DT1}+2]ŌHsx$I8g,Ik f Lf0};4dT`dCsC8Z2ˣKhDfs$o|ǃ:ldEJ;Gtgx(gX,nABCkL?%+_س8i pʞguBF2"~ 6df%3]1B64( s2([=aweXvP:CR8Xm:XxĎ^@^kiaZ#jPȹ͐,.(e\:" U]CmSm%3S褕?h.ф1eAB+8AyxQ $ܶ*'4!f BLeMGud&.1E gVď,--~C 9 iЪ V"o&bwoXcW2BXGE8[hZăgJ]2r NׄW|KBKUf0Pa[g+>?S'Wk+P_ңqm5)) ;%JmL=gc3/[#*fZ~ײjlT,ARƑ T*p.Aʹ80z$!A/\3(7l IǣC4@5 >cKD HpRUhufy G.gR-6k '|#gbmW9UK?uT]BZTp)b1CHP^[A0SI9F{)^!#G1fI5w DyVkAtP1lqU$REgt Ɩd*PLwpe4鉴rV40x1w_AߊlÈ," Kk!CvyH*I,FɈ qgYq3[U&Wh;ʢBeg.'Gtc[l^s:b- ]sf-L)sF)R("7ʂ/KBQLS 3!DC=O4C"p9J&zYAt(PsCr@9" ,G!d0:?m~:<뫆 PLsk .Cik-;'YIDhF&>H%+0NcG>I'x["s\"NX"@OIϤ1ȸET5؛1yp΀PԖE 8Đp[:(AGC otEGMGz-O8#*63{b.e92mv"NWaa+ K; Ep:Z<3*]yǗG>KNA[Z*ʕ3GZR5BPk$>3x* 0va[4 {%2oMPašhRR]< hsA̋B?C4بk⻪JoaqhҵdX.jh!\]-P'Z09TD T ~N~ `k8`,^7roKоyha'ZW%0D,$DR`n4xʃ")`2 7J`HKV]8(4R6/HiPH.9Thx`x.W r2*ib z#ͺGv#6gX4% >q0Y⨊9%n#pf\fuѧ0U$ 蕙&Yfꉴrn]nx cyu0٬^2O*0mX+z܃2K*Tu.ԈEe++2_R#I_pT_"ZS GaۦYzrhEL6[hdGVCjkAu_kf#cGHNG{w m~5QYK RG/x:yLsFp?oaT5Us?}t?'\ٍRFQs`D7ELF(~l2tQ/,flU,ėfk Lqn9C+]12L7TlTy0zcݚb(/gFم陙iPq$foff3 %\%L)D~X׾t'"1Wo^OyՓGJ<L/>F(a@5y+|vT,2$8ŧ7Վo\-cޥgu.Gמr[ВP1:'WWB9?5 %iۣ_N.y|qKϕJ%=7l>dÒ=2e__?#b2& <or1 pMef&d!pt(iy P3c{%ixY{)Fx*s_Y9/^+~t펻.=8JBnr2B~־͗:~#bfh~""[<E?k[U&)ܮ}cdà@3ӹ5X@NlBmndF %q'ȶ1Z ͊]a^Cg]KzSm\s٭Jwt*Sy짇ܞǞ|__~"o}㟞0R_f-7M]UߌE 3ZLO C$B+ְ a\o~'տ¢jhOC_ Zo1k^F(A[ k2ZA# y!"`/_eŦ[๙_i +oO5S*~ڋ7TX"·zR,Xf#zݽBo 'ETc)#!j!pC B9ك4hA&PCA{~DMcbA HR1ڏ{牧?x^I$S_|ygp[G wGL265>7~kǽ^:u\Q[[z_r:V`ƳCOv+=kF+ J( QCgTڍr)WSMfQP ߀ox䳙?&{~_ n_ѕ{^2vWf&F wpLKhyEEeHVd 3=&3Nhp j1qDM>IAC]g\=1ϥ`T*" mmHQxb!Hu/]r0ny5q;o{BJwͳ69;3yzt(+,_מ@2R ̠*ջ|:2P!+QC eH |oL\-އhʣFH]o[tq}xӎ=`~^*b3W/.631~IlZ+Kwlv63:Cٮŋ{qϩ#O&;Gc GL!%qbJ qsrs~/LNû( Qoh"&f0q-Y;Q0@P0@ .!dd@RTԼX۽t3٩Ivz,l7>o{'/{X>sly`e~fX,kM^GUj$jDŪ+!RET#GqJGzG@a&qbDi$QkF>+<Th5^yeaSڅd*ͺ'YKő7ؽ3'bxճ|p/;/pGC_֊v>?}~\\6EG0K4z`_f#$N /#(;Tx&"Ͳ8Lf@.F'ibIc4 NĚAA|T djpnbw=fX!?{Wtۧo~_x繿<g7X,[y[vBxʉ/X,s"kAY8')^{(  rk @Oa}Ni(hbN *t:08WrCfrbթtzs3#=Xnc{gu}yeܞ5[nYqhTrX>}_2Әè2 aw|\^2 ~/˅8_\3f˶7acIVA 6) (sϑ 5+pA']v`M,l}c+nY~ݏ6'n9 p7xSn:m+;t7c@{s?~MM-xQDOcB 2"Ve'kqkbD[w߿j-jg&LJ.]+޼}z.}{w{ⱫRm|joO$k(kMAީ`u}t2Rc 6-0$ׂ)0N;{?ᅏ_}&):g xwߊշbQ*)ݽw:RqjZ>E{>\ōYg 6rs2U"'e"JS CdO<]-_N+gy*vdOhRkҴW~x2aG'GGoJ/39a7;5>֋ԋǣW.▯zK¡vJ+ L'ce:rg4PŏĚӚfboG "I90%++ƯJV i.;/Nаw6fq7O77Hm ZC3.`E}˹qX"2tԊͷѡs/[1`\le,zT,v7?Ba6'bcA<Ê-OZG5jt9 5:D߱4wMQy(3q#oS ,.4B0t^aҭXoT[œGFNඇ>79:|÷TMܺoHPdr]k7+bΡCƯ歖lwtpϾ5+u9yXDl(*0w\sPS.=\6Mˋz M;]  o^rtkSRUd') zh*_/-[Zƒv_STbw?w~X")5uS<|+0hX^;>|r836lG-h ]4r\]mlHC^ڢ3a _4q~SQl ujNx/D$Z}qo1BbM7/[EߚT_}cΝ/Z1bx(fo ݞZ{SOs[ko޿f^={;>'GGp }a8f$n2bA@ M-0M#es9cokokšaxwsbKG948s7j2نYygd[ ݸ⟧LdsCӤeRh?3 'Z HopmmTjQ/G/o|M?o>2;Όut~?ү4-ЂT? #8VpiF :sDhi$XK Ahny  IZ%~TǑ(3I\#z1 f4de.$͌^0zSy_^{r#||rtx}#O޴f&'xG,~R4 gF/kDq+2fh@SLئI;Y1~VJ^ ( ȮN>e:KGą-~:|kjvQTߺ`#N^Ϩm{\q-Y&?ɅU`-p<o3 }]j鉑kޯZmơgl>?]-w?xġAU 7]#40 Z0NC(Q eo ,PԦF=A lBTN=қ<iQ y1cW]S.q^ē)ﮭޯ]ϏeWqz=1c1``" A"A@I6,! 'e!&(@!$P?bc xglόg{+{}z_i=S:U'ݽ}k~_7|ϟo/}}'?ϟN~O77{{oy朝3W{3ҥ1fcۭIm=C>*+dr b( JyNH~gFai왰1k~13e;0!{|>o">XR*fkŋ8oݻ.>zO=mr]O\|哟o|+?~3_{17UݜfEJҬEbbx*u1; ЊJ<? C8?}knˁ.Kė{pb)&"Ǟx3~_E_^'sW|KlTusw7 O=Ϟ.{q|cd'N>_~B 2ZCǣ[(GU,}lABjAvqb;;S|_ANc *bZ_2^ ?8G4pM^s7ot޽==79ʍ~ ?x 'w'[G|X/xrZIRƀۛv'yW 0U O+>QwE]cUd…Kdϩi,hЊ֖wN P3aI{xQH7ͲsGQݜ{3y#?y[/_u%w#o~_,|W^^>{{ |uGx/_ fY']ã8R 5 HTH`jnDzhVAZt&[?7ouR)ngjۚ\FKիG 9%#°V͏WmJi4n8 RS[f$WQj 7TNIY BpYBs4y|jy 8CX8f9h<6.>8@;_2%;15ml5Fbb<8Z0IhPvbVՐO%cjٛ\;"srW|a'`#RV$\| 67N> =Sxk[L_mNvc`8tY_{O B0vW @??5ё4~im|*3{|w҈dJ1K1Բx ņOE-bF=K @3< 98\aDe@"iц4蚎[ؼd7cY`Tġb8GҢ4/Fhq0Kq-ǻL,Cv۬fgo'6& ^J+œ?ߎ.:Kl1F>w%Ǡ0FAHvGIJVܚt`+f6(\RʱJXM3Lre}n b0J ) \є!ð˦L%%JWӆ (!DAxE-F7'HF$̙? 5e >$qM m Ȝ@r삂Gv)*kؓŒIWkjnXa>&gs%kbG 8>oEih} a`G25.mʐ#w1 v`ND]T hE*PROpԴhfPͽh9lPO\̼btO5!]_Y7uZUC)GM@'[Z Y'^nU@ Z moF _YV;2KהiASPvkf:;^]=I$tYҨ 0]O+Iۑb}*VB:3,-jo G 3$J&dj%PFB%aaZ^ј@kW"Gd7o SWj]ǝO FIxD?&yJD2=W*NkSxTjw&0c0  :If&89ۙ"o]y0J|챻"kցzS%l\Qâ"= 7C/ 64i&{Ϝ6vߚa>ȡu0xAb.\ֽ"34wK%HQzW,ncDtWG4-1fXTHV"U] эVlIOr-xH'߈[0dpX͋d@@)]ϮqP)WuXO涳1{lѝ'ߧV{hZsǂ`zT/LnTbtj㦡ՈgcjTGRؗHA.qyk.i;yM5iꍸϠ9HW3oM:#Z !U3TB sQ=aep5GNss*,Au vǏԆ/G"-)@{݄V0 M(׍5f o-gJOxS_bpM`t8Pk"[*0j_6`)Z:kA0p qoj)$A8Mq7!?+iq Fl`uCW("6C&(1<(!),UOL1ȕ6l:FtE` dOCK=Rw/g`B$):l7N-*bqsQY0htZ_d.,֑RgCb3)[";;ku>!066"dJ<Ԅq2e<@B,Ip4fki|4m*e4<ã]07dP2#16j^ 5gߡI:2g: C;:|wDQK_S3˟\&NV( DpYTʋ-wй2hJ(xa)K̢@c4OS+bk—5i͵T\:06!`apP[/!o1s䴔q21ts{:(%s%\pXKcc8y5Ǫe&,Pyx0+̾X ĀwF#(hq-Eĵ`=x;$ Eh: Au`}r+z OuG4Fb@ >DƁMGqrmk6Nw҅+xCӻu"ԧ]&t!R6s`xOdug̨4,6@VȕM&r:DM^$.e+&%+-IT'Cj,+lCw{>9z _KT+ЦYl$c<ȏx@JNv8~>%E!W%`/+tlVK_ J^WPvFX|>B8Ry2pF6eܦSV\ͣU\4[;OaRNS+= .qմ 9-Fex3FRͰ!V=VKΊK I#iWyi,C'6$Lz$muCM mˢԖ6U L#)d:-} Gh8%ݢKJ ?-+ƲψZrQ m] zfx#R#~d C^"Asnd8,;ԍ:~bA`@+Bo9>wkނ!*5$T8dv#kj +-c694WE#ID@Zm h^ɲ >dmqf7U€<Nt8df)[YIp[R1'hhM4I͖ $4`T^9ۛE=ն|$'RӸpvuRA -1갸@Ae$włkR&oD&ss)LJ&HY,D72sBmA:s-)+JC9<ɟ4^q"3cd*didXa-p#4P8ƀQF}(SQd.!(HyߋS-#j L5o1<#NT"`\cT?)\߈z w_?V!eW.[.ZO2b"̘N_7stT{5#9_wD>"h_'!82c$iE-B5nϷ'q2IENDB`dtkwidget-2.1.1/doc/images/switchlineexpand.png000066400000000000000000000232471352002233700215770ustar00rootroot00000000000000PNG  IHDR pHYs+ IDATxw@]  {=pTlպqu[wYֽPQQADEB xV&sq{.MӀB 䗮Bw`"c0RB1!Tb F*B1#!BHE!`"c0RB1!BOkGEN.Bb;XD8IB)MI* cClӔ&: &JH+fQ1\\#YZL\c"bzELׂكYڬZS) %( >qF3O뜆Z}9ZuT n)#200RB_yJ0֙=Υɸj[z'*ޞB}a)41ά)wa4̻r0$:B_LjAwixOq+BA5KҊbE)kW{V=/%eOkV;XcFLQ3x?j·Z)-/#Sf wꗧfoI&&l\ֽi}Ot$!3GۊndA},9G{^Yg6[$7]~Ṛe'ȊYs 3o^cH/]o'Ssd~GhHGW̎Z=k\UI΍|L mUD"&l6a̯n/*7ZuO=ZϋDW^F*#0#$BgWpgk.=Y"ĘkOtdž̤{oɪe?g3ήYw%_&|PA_%gUWId;|AW:銢\i%S uĶxwH%Mc ::Bϳ.]ȏ?mݏT-J%>"Lڇuv4esዽ{+x\8T\CꔔKrRWh_'SW)zFFg/@eRW 9ξ]S/lJ}iMɜvJu*hD"qט={[*,q4f,Jr  (m˶#Y3]=T4:p!zU~[&C6؞窤ůRA:ݧ`e׭ޟPD1o=zƄn-X29'[]~'S6I8vU$I%ZVւKi7szF% @p?'ss]&]+ל|TNu,cj ![6|d Z~o|H%v0uلdPN-mozN, W?#OdLŏ(V%OjrݓZ-lu |S,o/r:ߌ$t#VL[SjkLkȾyPZI֤5kk@+G;e^Vg1MA^e>@lRC ᭬vom֤OS*BxLfI}Gw]pvK :-ḎN Z^CYj']{y ŕ?}F"쿼ivl:+={j$9p@I oK% }G y˕ĭS>=:XcħUA\<~Ҩ s%>V<[ԱX/tʉ @_߻㆔>i TF^oy$ nzx+9ksO~!t.;M2n|-.1}H:#"߸ ps1Mw,:uf5X^_S;x!g7\ڵ+g4C6[w~_l%H1sO}Dϵ aMkg-8 D~U > ]Hvv\cf-fCYm&hJ+U+z6]-7IjB[J_ϒTיZ,鞂eؤ.UInnHXի=ȶi #MDlP!^-t"xf<*.UoD<?{Ne†Hy.qͤo6HaaZn6+-{i ͥ+i/6"@U^2~\|j1MP9E75}i(-l^_ptpjtY)_-TRWmgOo9;787ԔʉJHH '.rsw%nZ #8ԉ _(iVs+N]`"@FQU󲂦g <**k>qLӮqn1?'MN$]QT"A3n]+k=fOٝK+%Ei^Gfu b$@ kNΆ=$➨.,T?iJ @p9]L\զo~<\U(Fհ}(r26Ki)K Ƽ7Bւ yť4K#f''}Pވq_|]*nKwZ; sҸ, )m-d# Z|6]yV)uw%;l=sދ{Y'r4nʧ{_:n^Uf}6o",;: TNByTW5ݠh+YhK?Q{}#zIe+ =7{s,\}Y# J/'sz-<\9e7JPp<[D.yϥu!T9(ʞ}\%ghunƒE?HPvާk]T%vܼPߩ%&e36]VR(kN+kXE-86ށBBq| M)+':0֫PU |.}UjP4nT*3rݤV^z7dT ZmY~OeK.Vl m`\[kzf Pnxq~tx.TkWM<Pys3zczճm_ݻgĔ=&=73 vU[:(&8vmnj#J^&zsʎU_'9EST솽x?UUV\\` y`+RVXX',+(]'RˋzFB}fkED.u[٨JKhU%S8(-(Vk(OpS &}$וW~ ;RÃ72k*2f6OL {f蛘5iTy ,LdpA4mhjZc䱸SOS Mj.OEJW"2ݔȤj5H#!9 BnKV7,U7%%+)j ¬YL*EÖi1Ji~Eו[ՋRߣJ+Ԅ6@=*`wSF:س>*5IU`_֧O50RB?R]6Ȑ 46Q\EWRJ#*TbNF*Bё)ẄHs>V"$q`H#!x)()hhFX -i5yӿB;!Tb F*B1#!BHE!`"c0RB1!Tb F*B1#!BHE!|5$?V"c!BHE!`"c0RB1!Tb F*B1#!BHE!`"c0RB1!Tb F*B1#!BHE!`"c0RB1!Tb F*B1#!BHE!`"c0RB1Y*[_ʨ@I60ʸ 5BTIm;mUAr/]EF'sT|vme+ %\+ˊp8WMSj @+'ṱL+-̛tER s~OssۑG2)PYj ^!mQP>}.%}trVޭی\u.En' 8kKNU!-,,'z GG;[XxM9-Qk*luK\jI|}=;O-.(}ܼ[z9wsћʪSwjnvI#{x8ߙPNiw“ɲמ.OX7G@KI*|׷N uwss÷N^T-̝gGe]a3if4%H|*dcRu;8|Lyu.lbԱy {fuJOئς*8?_lnnnFe;Fq mQ&9.Ҵ:n<(Uڝ|5(]rHs]DWRTsנ`f|(35|ՊfNVvq­1o2.Rz6] 킨U|Y]?he /;ΘITݧU&2 tk*JoH,䉿 <|T=^#Gtsa'1yЂ o_/Ouwt[/ 2N"UҲDŽZweƍs`o+j:UrH皵0:|Twݱp %-{k|NHB0;y=/3`SzA/\C3}c3}`8 pjx~rf>s8~=yuh*}:^h6tpgWC-IQDX>^MLԢѨqPI,6mF,+*%z1nX6iV=Z$DT4MS3Ė!kV4_)Y멪zYG\ݬz]2('ȺȗUeE+Tk86^$[L;PiVM,7]6(o/wn}&_gi@m Y%VJU>Zl3J+="M5WX0xfّLVo%YRd3h3MmTi-?iVa#9L>@y0kiضE3XD.o+?** _2dƉ4 e݈J+7}?.|ȍYZ$z6HDt~Xf+ l3Bv.S][biv9EӔ4rH$~=@Y"K,E7&*^bC50<6Q);OE*C{L-eujSMS$\B@U+`׮NP Ck+hsg?t5sXF.^P+iq_+ӏ¼L_ys*yX"`78npK'+0x2&}U$KzhlMl]˕箚v#x4Vg\ʬ3+],wY4Xycܸg Zk=jFÛwm.St-—/ܭz*l\bs68v\O6|DZ [qؠ9N2o;dݺVZݗ]xվDK:d+ue$\DdevV+" iBRx{ !BS mUZ458BB1#!BHE!`"c0RB1!Tb F*B1#!BHE!`"c0RB1!Tb F*B1#!BHE!`"c0RB1!Tb F*B1$?V hu@G!`"c0RB1!Tb F*B1#!\z>#qIENDB`dtkwidget-2.1.1/doc/images/wa_wb_topWindow.gif000066400000000000000000014123531352002233700213610ustar00rootroot00000000000000GIF89a111 vUUUUZ'wUUjgk!!,2+R'a_(Y(ggPk**_Rm^EұӷڤӲ̵9! NETSCAPE2.0!|, HA*\ȰsJHŋ3jȱǏ 7Iɓ(S\ɲH0bʜI͛8sɳϟ@ 2ѣH*]ʴS.JJjTCjʵׯ2Q>KٳhJʶ۷&Kݻ6KZ\Ƿ߿ LÈ+^̸ǐ#,̹g#'JMӨS^x"װakLmX}Haat Nȓ+_μУKNzᵱk:A#Lҫ_˟OϿ(|^p~9݂ ]xFhxYp_,3J$t!! ($h(,0(4(F2J3P@YЃi]9^-AtTViXLTң e)&\DiZ<ɳNy/cixD |׏yRhjN$i|'&Q*餔VI&Nv**jL"6j7l髰Z1|\ *)(:eӇ&A}lcljmYe-ӆ+UjB Z춫+k{] 8LǸ'j^+1kgt)0:}M4+l+G38MzOU81Zyp!M3%l4S2l2nJ٬Xg/C}tqز436-? uԬ-cYbx|߀3>y6Ld7NFs1Dviw.X݁.褗~1:a8"#1n8.1Vphv4{.ߞE,'7G/}MtcYa/7.,Sygy/?pOo篿^? ;\⢱a!|@zG=GA@8 a沗I GHPY` W0 gHCł.=MD%|Q6F9!7] 4.׶J` 〮2hL6э4dCM{l1q@!F+8 9H#C\H"yzKh=``-qE ok%GIR‡oL*WT0z(.@( E #;IO%Ќ&%c ph5q<\)bNf\"8v~ @:/"jfc%fQNpQk2JC֑=5vӞj `,l Nb(}Ԧ:PTJժ ȪVծz` X:|ś,y:FCÀD/ 5bL$H:GTBT:-!hXNVzT)JTÓHR?ֺlgKvcͭnw,l^z-ZΡ{EDj`="` 2Xf82]&2 aFp)kU˻t썯|yGL"rEQI / LN0C;'L [žo\ 7cCo)X/ kX-b`CKFRBtw`{7wY#ĸ@p&;Qh{^.{`L&GahN6p7Aa+ZAQ\ `|LW5n>n:yurG]@aɧMWj&4&ZTN^Xfw^KNf;ƄMmL9]%(UZ!!r Vo14pƎ1u# ɿf tx{ rll|Lj] 0Ʃ;N!$Xzk8o { GNLW0grh_i0Wm9*U{˸" Nw/h#4iay&Nn4āwqZYi }X$.AQȚCZLO·= H;񐏼[5GsիqMғCodt;HxjyNHiqd Ra1!Anw#oZ˾/"':x̯Fsyn|haBo}/PjOWDZ08څRX.uGB=^  |uPspnh"(cP&x(X$ IQTp246):<؃>@B&FxHJL؄NP/80HV3 Ofzԃ}A'* 0 V\h3&L&):^uo T ,Ơ70ԗUFnehWRq@ q `iʒzVu T0 " ; t~v8/(n @ Ȋǀ{`g B`@wU{6"bzHh¸\p`P؍(@`m(V7$zw ֋BDCoÏi'Q ~8>gh@{CׇPKW }mhE 0 (d{ii\4ٓA7wfEX-YKo19>i26ɀ8 v:IXIw ilF^hygfGKI 2GᘓÇ`nlYA|@'_~ce٘MiPn>4bqD|ҕC H gik9=ghh PN)⷗xwIDDjٚ +{5@Kii p*s0]ٗ9,y$fY Ș\P#n}P@_`șy)IY=dzT0 @x%pumPi y$P&z(*,ڢ.02:4Z6z8jv?0>%pu$??:s*~׹Y$"MZ\ڥ^`3:WPphC]֦nL>< ?CA`fFj鸤s|P~grb:ZzdZ> A=ziIZe{()˅70nx@9wTdi9YҚs *ࣾ*DFũjW?7&䰧vxzx٪WH e? j rτ*ѫL `Y ˊ29 7Ztд7:] kZ^+ѫhJ7訃ٛ*pr̅zyD:iM{@ [q:}:=X{BzuXK;Z G:*. ,q8 sס֨nKsbZ(Ft вz벨z:Pz ;p({[j {>-.*1cmP:ǟ޹o++ {S<R}+@H[Ӌ j>~*s,_  hdki˨k*rʐ-V02<4L<+e˷X; l `CJX* 0=˰1p8kyD'b j Ap ,4|x  <,pKd!H$GTj }ꭍOL]̕ p )[їI ʋ0?\ݢJE.\R}wTq˩]pZQ8He]Y4m#p=\-I1",|sֻi$lՄ]=miIv=O:5-nm٨Ϙ-b}ף+QGۺں˫ $@xMP*jlۤ۔]ý킉=dצKNJܬ ؾM- ӌ׏ -+X׌И}]1٧c->..ڪlƠya =">- njmե  %N!zhz)I "hW#亽cL~ C>FJM;]N n]]<4㦚`scG-Mj>_V6i舮lӓ.ә=M.ne>  jT땎ΗN0Gx~ px0ɞЎkf>7۽.> nDZnc-w^} (஍ JOX ?ً] i~O>/& IkB2o/_~1XpN)_H!J3Rn@~Y?p-( }-gPjmU/tw_,l0K4톯po*]yތxe@o~qשּׁd*T 0?o/ܣזb fD{dHHH&!i/a $vI„ʕ,`ƨqSOA"IӨQRb+,YDUI)UdRܷmڢ5[FL.YOA WQI.eSQBU‡"(x!Q C [wN孕n:t^Ɯ6a8cIR#A|A3&˕C/fcȑ%O\e̙ $hB!JhFA$k)ʤiN͒oד] iUP~m۷qgmv7}\pկg{9 4Ųl#>i|?2\3ٰ6q]89-7=1X~%`kY6ai'm@kx]([VZ)S!,-ܭd_^mh@e6f69iS%6L[iSEt]Kͳ9 0k__7A>{r+_TI~gFˊpMj)$j})NN!rwޜm=б[#Q\4OE|a䢂ɪo{~}.^sVRyܢ~P\N;=}k_89)~ɫfSt%oy'S]n6eo{]1P-t{좗o٫߭׿-WޞX5TY.Xml gvjXU#.-#!&q]k/X]|c8(6c:v c/Ŭu{d,O]K#R ]&s[ʹl;)0 TBpg&$AI B,@zցnp@-@ (ϲ, ~a/&0qH4bD <f\݆6A i|bQLh}]3SR.3I5 lK} @ `A?50.:t`qW.ߊoO3[Ԥ.5} ZH5~8h ~3LP[K,`Be70 Lhi b p DxQ p-XQV E[{Hykr~m8 4`=g{~>Cs4EDo| O["` 7`O{sg}^wحΝuH 0'6K,[n"o@.u]90Ǽ/T{wZlA `,H҅q!<}Z{.5퍇O@ g ~&?7^D!8d#hj 89SC5>s6<? ./sbښm,XXOhA{=f 5Q{6<жف cy; ښY38ATJ!%&dAd6g:6CBQyjb %DJI$BPA*"B:4.lI37 C C0C8C4\'Ay#SÃ::|Db“bC2@ ATAC 5HH\Eq]M$1DOL3D6̑E &`EbdWE{h @[jF?4 PM#@{CEb G)kJ۪dTF g\xFcFijlTSq8FILeԆvtG0xlȆhD _"I/3*EvLf<ɅLIyLAdHHIȡѕ4u,Ʉ JwtgIAn+I d.JHtɞAJʠlƢ4`,hJ LGIѓAKE,{ɘĄY]TRi}sDE+QM x`݆ E_! 6{CHYT^]rݢ``5{H$&EBf́ކ a[۫RRla] l=TSem|}| ]bbRQ؀+e^.;H`[{Cϥ`|=-->^biA^B`D`'7iU@eu3ure<+-[eW<mx#ݐ'v+M&cfU)g>'i^Z%c2o6t>1kg_{of5#6{893<˳=3.h>hNh^hnh~h> 4AہB34DSh6  8 gg5f^͉4x{Cg35TS5V[5miiijj.j>jjW{X54( 8õ5;3"h^4NiK5GtYmFyS7~kkkkkkkf3Ђ2j]3>Ek.[U3Us6kl0u^ljiڝRZf>nknm~m؎mٞmڮ ؂ 7S.3" `PlVE 6 Gڍ݌e`r@9^@:NkgSǛoooooo=j6 8 p[[C; $Pn`nnmuF Gn8Oho6a miai_ 9#o r!r"/r#?r$Or%_$:(@ p_k=@@2 {{{(h&3$0;hvv\]HhV-B>C:^; 7@zn5 xr0c8eHB(778B4KF7B`UuBnoG6q+Yw_B``\?i8;@|-x9g[uhw_@ Hv8^lu';@mikvru\'{a 98, r9on0;< a>g^P`]- A| Q_I* d[qh𳹛c\V\TfC.|%8βmr;RU&mڛQPnYw%!|ꐃTI&Exp:a# 8 x mRKT_9&#<<([pU]KƣW^"Z VaW%ƘcTL9mr&hFv&`) &Bk<'ɚg>E m6 9Zn2I)%烟!%Av&up`!kQH&* u!ƀj,B }Qm1YǀA {,* UKpXrSUӬ2ңJ'Il".fEC֣%O4ҝ̔BHD"+!N@k~G07}&Y1+1`LmN" DfhnD/Vd.W< teW<뒑%K!D8xR00k XsБ(D#4n0x|wa)p>!F1&,C)JKhsk ox,D b$c'W G.3DN:B5YBf!t1"ReR.dES<Ь wB~;( PA5%&TGx@xj X(iRI*P ZلB8IT.(|DJvau:E'f'E`-LE!Ȇ&0O/cM(HC*ґ&=)JK M.0q,r<дTJJD PĂc~O0\`pԧ(<̵ p(DBXsC,(_ kVnPwJJ/sL*|.}%3N~2,)SVNr~ޖmo+ 6 % H5"&.z]kp.]5f=N~V/b{XF |/{Y#3ю~4#-ISҖ43h"v+h`EQLC] ^M V^ fn<}|`tc'75 77MD,Åd ʪu%hR@L`1d`_xB<$GHhR]8C`LH%*L@7$ZxVM }F C0X2XB kyG"<H %'cmL'JE2ݭ[ ^#6jD@T 3yܟ\ٌtE FNxFma "DEHaC0bE^:D0LXD8 BA9SXñq"Lbh'bdH~hBdp"&"HVbFKxJA!88WIPTLQULx9BO'L2Z2HmѐuKw8ՁiX5f#XD@m8<8n@99_:@@m=/#\>@@A9CFS2:cV:d0b<T!AhwRHN6_<~cDRNl9bE>銊hUŋ*^!*Ya *n/B:(it2(Vd`]cnѰzaNB+< *n%)ߘijP )^:Le}})i^mAe` ME`! <@h"P:_Q"ófJlH"^ae$@"Vr,k;lhPɃ:!̬<0* b;dVn<jnQdh! 2^l%DB4@빦غtR)i:+[X!Е0BC! + cHRF`9lĄJX@PʃhlNlú,ZCɎC[@$nC^,@]PMjtl,,E!lOxȓtsZf*cAd)"fih-׊FVo,\@ҟޜ\-^ I0T<L N$$.fa¸b>?iQh1[ $l:4GwG` tc41#t:+2$;4D4VѳU3jF4NNHA:/tCSKu54s͝2tV4TGT^3ItB3C43óQu !55W>\9yXZ_C`M\U5J;5X5I4Pt=Ϝ5_^FVX^m=Dj]O6eZ@Z5d3^kP7_߈E6M5b'6N.LO9co>ueveufIuJgp/hLu\6j\`k3;1n_7]dvV 5WpL5Sg3b6auыT2Fw]<-ECa}KvkvoVW7` vLRcrg|dC+Q/,}gxN7w4g7_ y8Ftwx@wdPW5AvIwot8sD+vNTFu84︇{9oĐ_a Fwl^ȅ^ `v98O9VWywuEl9i#w~6\^5 Å9{3oxp9Gy. [yh5Bt0^_-7:_yϺC\y#xS`D >iڵ^KӺrX<`C;`g?'/;;;#yr;eso{;x;{;Owg79vyHx{3?Xy <Ǻ/2ZWC>?e~+{—x9b}=x~ݯq"TCԟڧ~x;5l}x=s>>`w=+?~S~[?Okps?z{??_?˿pӿۿ<֭CNܷo۴M1ad" FqL+14yeJ+YtfL3iִygN;I *YQ>5tiQHJ*V,Ylu lXcɖ5{l>kٶun\sֵ{o^{H B BH"F=Irgdɓ)W|s=ZhҥMFZj֭^u6پi׶}wnjh@nw~w 3Nc2\:ϲ ;Ҿ;M<*;̋=h>ÏU\.~L8ÊK 9Ɩ{uܑM;ж;K<<\26۫c*tQ #Sα|2ɧ>NJV3:R"% okSpc>|~?K|+JSL'L!? CՂ_V0F. L`rM |C$fjϝP'MI 5Kݳo 8SQEuJC&šs*[lɉ2 NEUb-qn t#ܰ5g5 "S =]s٪48VS '9Mۂ`-KoᨥlB#PI7 "8Dۑ h7.]eK_|yn޻֤m 3A ?qf"0I:nv^>Dj9BqU2g=M9>ɦAURqw5O|qc)e3NB3=$Q=Dd'Uن]@TO+lE%U=~~7i{]o8y㔅15~oi ? ^pLĚuIԍ'BUžV8  `e1I:mo7]!i(b[r ^I 6aG@ⰊH-OtXǙq!Ө6- &xvT"[GpcYIK` IO(M <N=%YLJJ,JyL*[- F[kTKgHYyD2V)}@ĩLs-]5 ClqYcgGN{#9Ofmj>ڷAHi*Pn̥Ā6H{hX&)ZFqyJURRJy5R/7S:qkw7UF+TSmQb~T:IUʪgjVq}`X#Ey`(8(fSd[CiVTu#qKns,SBD dI#ZfY;:v Z,VelZ[ՈD9[N紹n[嵢-qv \b&6-kuk³mk\ކx-|#s^nTm{Y Ɖ}5R:@ NjnBN.ג);VbX-vӫCY#fH;l= !da ?S'y4m&R*# L71p7rYVɏ/V=Fnc՞l``YBU.V`8|?V"]~OrUBjo,c\fŤ[r7U69Q^]<.pGCԽ9ssxmZvD?яL7y=u+2Wŵu8m{e-׳-oI/^Zw-Xt.Y ]!xø.u ~yx4,>덏#?yW|C ppW=EWҏJS -${g\Q_w#ʧK{?Mh|0~豟}B4sH }Oy낧fwƯ!֏oO$O./sBQ~/~07oHOp"&.nG-BBZ8P /BGS3qㄊ >JPȡ=xa ՂȞlPllAL%P>~(Tp/bkA~gf>% 'eb ! c/PO J-" pB0a-|B{ U A*q-ڡ=$@ORlBqHMUqP+ k#f0R4f*!qla}@S0cqakql>VD"%d M_bE_">L4`  !"'2*.1 N.Ӧ zU0v|zIg ָ0Oj&B&2!7 !'ͪ(Ǡ "#(1rYlkCU$ ; ,o,/!t-!߲(Ѡ./23L3±T@@ALA+iT,%B=Bd2TC-C$"@F* t3EmK ?B(QBead67р7Gt3/&gMl##U $;v$X$}!%WR^&P&7.Iv@=9w@nb ZLHq=r!&r+r/s3Ws7s;s?tCWtG7stOuSs#Wq[MJD93r)TpYg P2+'fɨPRoTK'Y66?/ @pqwqq]|Iu}W}ח}}~W~W~U~ruWqpu`0aG \iR3Ogh#0ImKX@ls9SPOK}8\:_Y3٦ٴS[W[۵_c[gS[A]Ya՜sC7@T-B$/~!u#x 4?U..{0z2"pS`Wmzڴ[盾۾[ۿ Zw}3|؜°-J:.6kWbJDyB]Bm#0$An-5I=[$Y8 ػɹ[w{ȃ\ȇȋȏɅ< ɛ{#(v NjU¡pQx yU gDzd fFHD:F-lF\E̻pi%cͻU"TX\C d|im3q;?C]GKOS/[U۴B?1 .zGc\5ו>T޵n0~]R+PVg);rMeE]D*[1p ]8# "ƚ1 s%}҅BZ^ jc=əB[ >:/;z[vvb+Z4c7vxb7,hEdNg7e>HK2TQH L=]z%!]\ >/c= >߯^뷞^Ǟ~[%~⵸auw=+CEz9P8rn#+ $ih6SdȊf][*iY+ +"*L &T0]|8E;z2ȑ$KTϷpu(Z<~ }ONs#`JL2tS49ԓl2TQG% STRQUWa5V&U*b.c2Hc6Ha:c>dBaX%cT8Vc!eG,Hg&iZ,nfm擐zzkVtGMPz'J":1 N:OAQH(JRlءSVHbYjJjj* E kJkzddXAd]ffxe&kfKN) } fsێKR=):an!TQ1jLpp /p? &Jq_qkkI*$M dMYefi '~dIm5 D 9D{<MI 6 O>o&eVoZۯ^{ibMvfvjvnm Mwvߍ7 X^mjMʜy, EONyg.hSM uԤhLM|`oj {N{ߎ{{O|wZ+&Nh^x3Gyf^~Oњ *MKP3ZGL*z p,*pS32ͬ q0 Z Dp\BxZPD7:^ꇥo+$*qLl(JqKEVyD"d(sMz %3pa5S ۵$t"Ju P>!D*rl# HJr%/9lq'? JO `"`׺lHVB:fleo\ȅ/ևGD}7P20l&! hJsԬ5ljs H ps,9)} 'eTAhɕ<#ƴr?8@w|Pߵb4hJtE/ьjtG? Ґt:OҔt,mJSusJyVzfg}D-j΅.:&ɡxPټfLIiPZzW ְud-Yϊִ:[VץJ N;,Ke*T~uR1Usj=冭 Sjzb5g? Њv-iO@mk_ 5iDDY[+Ⓞ Hb jPDA,lI՟Zw w-yϋW l{%qgdn~^>k)ws7PB:y,1LކŮ/ kx? XDO!A}S귞}p`x<.NiNmt:WW9nܽ$xT,kyʌ4naθލexlȁ)]c`p|^ @ zЄ.D+zшN& iJzy^f3c,1ify=~3'gvnDnl#yo\z׼ ` L覱K+sWw#qoFlIE0gK1*w`Xγn x{oY3a  BeϿ%#΍8?|$/O|,oǣP|4oB WvKa?ԯk+v/g\f5o-)xkC_(H$hxǀ (ç~'Kmv9!, B H*\ȰÇ#JH"|3jȱǍ|}亓RȲ˗0cʜ S߮8sɳϟ@ iѣH*]ʴ)SP7꛶MI(UFʵ׭6KPhӪ]˶ہ_ꋶmՓYW˷/԰f \È+67*fھźNƘ3kL7MtZQ4**e˨c ۄMͻP,Z+_6NzS4Vktxcy}Z_ϾB3[8l>'', qݕG&aL*ȠwሴUhbzS$04`q'^84<ڶ@>"1 1h~9FҎ=VYXfGƇ>Dc>4-LJfGTZ)g`Z֩%F]v'T'`#:~ t_eF*餔Vj饘f*t駠*ꨤjꩨFg*fT/i@b F,K }x +)&̂ѫ~Te3`0Iw]knn[zrD)^7Oo$:̢kH 7G,g!gw ,2Ƨ &ɽѫR/NN)|KLzգ.-DmH'KjPgB갣Xg]@8J"Z]bJ0OP$+I2Xj?G T{Xn0rIb Vqw[L㎾)nkcsŢ1l{L^89>y|eh2!]bY(\^ 4nr-O)SXֲ/cb<*_9jN'|<915ǙQ3l9Jq-H:͕4OdLE"Hi3ԡץiMs)kh:;fkWBuW^RwCY]lI"`Xvj+DԌnMm([>tmkt39WD8ϣGKznt/5out]ƶF sc%7{܅=w>[]tg:$xN%n/=85j'ʼ̣w; /p~W<#>Ý/xgx䉭={_I>-|(A>{~O˻^?N~?;ߛ/~˷7<]~ӑ')G'{Xsg}z~{7~hx{؁lR" }#xjQ,*w-G'6h4~7ǃ@(>AX 1(gJHHKфDTHRUW YX[؅^~7SOfxby-nhpA8tȃvx7z(|؇o8X'x(؈(8~xڗx|؉LIPD@B ;:71-0&`$@pxk[H|>s0nj@YpT@QI7 苿j[M01YA4&hh[(|PXӘhBHxjhJѤ9Ap< 9  Yd[( 8x H$B(=?0| 1HA<xCI5 _W0 xZ a) >PБ(qxliDbɒFf >0َH;ph{B pQ 0Ihsh8IY<;9 |IIxPyU 7ЛIc[( yéb ȜəUI 9|=)c<9 )Yn䉓iBԙ$7ឱY0๜T`Hb[8 p)ٗL jh; 9}:A 0 * Z b(h&zz12*Py9yɸ I&#Rf:Т:ةiKʠ)LR)? QVW` [=sQZj3 kj,jp 3ꥄp|j`[ O-ZeP}v)-Njlzf@ Ɍ9Z`[MN R֦0n@ wʙ8i_[LkimJ9Q_ 9ʫڢ ؚڭ赅:gJ9U]8JvZ gz~<5*ji ۮ :qEO6 :sXdzhkO kf"$' "+˯K7P! Z9=-{/VDO:R0K8ɳK\[4gjYz\۵G"5zfZk˶B+qr+ gyŷW)mړ?0P[mc{ aۢ uc[L 3I{;0 Г,]?,=dm ]y@ pLt=\}4 q i䨙e5<͆ |Q ? ɣKD_ HμTTU-2Kj%+`::0֊<] 5{mDzU ץ׍,ZjyNȫ&tLRWwJ&{hPٖ-T=yempG 1@xۺۼ۾=]}= `L 5sbڟ(۳M۵xݷ=]}۹MO!` ݳH8]~ ޺-~W3 "C P$ ɜ#: ݱ8=.6~8 n>9 0:n A\ɋ޴ǰ5(05@A ؑ<˹/1hNjlnpr>k^ 0<#1En|=ظMNrOαN(RR9 АAӞ S6dfۍ>t^@0 %D `p Ύ~> cqR.S 1 ZM<0Z>1@ۭ냎)蓳˭-^,8-p|>_-˽)Ɍ'_K PPN h)=?h൘At^޾hR QMM> a!A `~0.z|> ?Ph1~)y? 1O+ /|o X0 1hZN'? QD0 q@ⅰ~>})8.O@QÁ )(H!P>%ƀ ШE 4@Hq0D(aP(O_})6PM.Y$.$ZQI.eSQNZELA\*((9yCV8ACJJSQmЌ*AxvDS}u gjA@78d}м!P3Ɣn͠t͸iRƆ )|<p4|6m=̭u |!Ed izyկg}.)ᐦ @ݔU-Q\et)0'j %a 8"kP+x0(X Z\E"[,Uc ѳ`1*d\id`pIq`Qͦ$R6"5V+=H4}6fO~zPDUtQFۋOEq' ?@ZgAzIcI%@ ,|@P@H`mȆȆZ@3 `'cZdEvp\eYƥv'Mm=KXuS\w-hZ>!x?cFva#~H'ēQHJ?Lp@6Դ5yH}&sYXA([ "C;ju &%^ :8 a3|s7Xd/ S}h喛@d ѧe_k} [!B\yB#yX#5}g@ h&Oz쉾 k$!>ylՊYwz~2yO pejIЇ % L@#HkM@uN+da B14%<(]luEIK1(Nx_';PWA ʛUp,RATBX=0Qc$cxF4Qi$fqo5J` @Q2 xPF   |") -yILf |DV$e,`E,d! [udJy 7 mL#h11 a1K)< LH"X <yR̙huE,bq^MpS$g9>yS|B9&4g?Mv HiJT ,_CRҖe3a bS4&2/! fƋ4XYԊVfK]RT3iMmzST1ݢ7h=A.gQzԓĘAKyTpĉCeщr0$XG#B8%ѠT\i]zWU{k_WVvuʄHelc<(T:UVWuDoUb4 k1GQeT5ck\)µ\m{[Vmo}[aX e.s#KЦ *fwPBY%//тUYͪڑkka ۷Wo}{_Wo߷֚,-Oւ&X|dШZ7ݬvi n%xˋԢU|&kXi΁n`1]bX3qm|cX;`^|d$ea ,'ٝ?Uv55y%buzM|fYkfsf8 \@g>iMT>P. j _4Ёrp g->dT:s>@`V7S2V[Qw@.&y e2sa1L2'[fvlhG{?!>:8-pap>p@-0 B,3&>ܡ9.f⪏+RAafxE8(xXpq}p߂N)KK _oe2-a3ym~s\;yϧ ]D< za&L ">Xo2b؁xQ'z> sx펞QrHAwƧJ,m9GNr&!pBZ'>(K& ~C"1!Rh4y71U<}iz~s|`{+'AXޛ(J!E$MMЂb!ܶ`v>"}&KbE+]J78WPZc({X9 %bp y58ˡD;/ۊk9s IP k9ls>xޫ> )=}B! s &D?}5 ?6 X IPX)²9&X0?C=< yQ!d@8ăȥ[=alWP` PȡLP9S=SK`C F 7ʱΆ+Kc X˶CDH꽋2_ÉXX`AR=RDWɐ5$OP0PkS%P3|F!S PP U %oD;VH2P UT<)#+p,=B:N $6A>؂dKB O! Üt 3kfPPOPH}hϜ$B~;;%LtSq9SJL7S7SBӇOO`N`^`6`}x^ :*`_ '^%*+^mY_Ka _na~aaaaa^ҙV/_KR`" .5 c %^=bUa,b-b.b/b0c1c2bȳK`a T":bޅ2u&&bAdB.dC>dDNdE^dFndBMa ۰bB,cM:~]b<a=z Sb)dU^eVneW~eXeYeZe@N4& +LMf$f<eR&^SnCehfifjfkflfmmv TG`"fa>!X3`dVe.egvfng{g|g}foNrFgfu;&_xgghhhhhh}h Z𲅰2&s.hvcUvb=,iiiiiiSH楮jc0Hind뺊N٘鞮jjec>QH.khj%~jj~kkkkk&\rk h5R k.@kvV~nl~lȎlkk&K&ll@l~m.m>mNm>mbl\*"TXϾmnmmnn,؞&Umn^nn^l~gؾ^nnPf>oNnQNnfno oo|0+efEoo8\q6po ל (p5pp/q/l_qoqpqprqq' c1rqqr礥*($^FrGr q0/k'4W1o*Wr o^ߥsDy&s7s<'h;@w=s+GBGA?EWCO%tantKoHw$t@t9tP7G3QcQOt*s9qVUupQuOu[ZN?OvZr:v7vv]'v^w ujw hXc(z_/mnRtiwzvuOltioewy7w?+w!w}ω{|wwK/Wxdvf~x/wNvtuxrn7xumwÅÕØ׿WyWvONfG/ΡݢOtkvzgw8Ww?{Kq_{O5v$k{?2v{{g{o.7v/:|`O|ݰxf/\?y|~y|b^}o__v7gԯ/zvŏb}Я}yo,ҷu~Mp}̿}g~K~V~o!Ou9FsSw~}oxշ'sx?r}q)/~Q|,OuЉmh͖K16r#Ȑ"G,i$ʔ*Wl%̘LZHMFJŊU,Yle(Ҥb2m)Ԩ* RPB!JhFbǒ-k,Z3k̹ϠC*k4-޼zZjֆ#Nx1#Ċ3nrM:y*-vs/U s-ԪWI3[q/՜5PAupW`u/n1䶓Zҧ]7i^;%,3NVQoN>gUBi 巜y= Zրi]!=XlQxW)FAVvé8#P([sX#.!)#Et~XM!術UVd&h%AH_eΈe:Rh_v`29h_zt6fA&' ߄J$/硍7[::cRI椙kjbp9䧥Ʃab *wg 'xB낻.+*kS,f1dE{)zԵ~Kݶ{.#آ;];xe[\Iz pn"K0 j¬EO6HH(6KD >ࡒx&39Mr$(C)Q<%*SUΡTx%,c)YҲ%.sIK"QY~6auMx/ApF<2&.!F>2$8+q<':өu|'<9NW겞'>a}R`J&s{RC=S$TTWh㱂\6 HJ(HC*ґ&=)JSҕ|)Lc*әҴ6/1!<&&l(4)a #ּ6MAp*Vխr^*X*ֱfj rֵn}+\*_3%@A9F=*R=CBJx8(HH*d#+R,f3rlecPђ=-jSղ<)^1LzP?~]([.sSzXD*Qm#\2}.t+Rֽ.v>W.x+^Ӻֵhmlz;^N}M3q3=RX7Pq%M6>03~0#, S Ay3 s0C|ޞTohM} ovp-ME.21c,!F>2%3N~2|SV2-sj2 f7]M:i/Rԗx8>$)tcc3-AІ>4E3ю ,ISҖ43MS̞d&-/0+7sO3[gĚM'r]׾5-a>6l`뀕~6AMNQy>h_of7-Twu~7-yӻ7ȳ8?:Z+ nY!3q7nu?17|3s8C.򑓼&?9=..Up}ojV'$MZ E/3N:ԣ.SV:֝.r^eY*3͡jbFչ9}mp}+SNn+~;/?<}<#*& lAgg0{c,o !ᖈ݉!}I=c/~I`Aڀ9DY_4`_i1lEN V^ fn v~2A `Y9q^]}腞ܕ^N. ]!&.!6>!FN!F ^!fn!v~!ߺ1 `FULV A6X- !!!  "!!a,"."#Z=b v^ έ!Ҙ(bڡ)"**"++",Ƣ,"-"<".."//"0bI$" b'v'!͡4N#5V5^#6f6n#7v7~#8c7R9#VF1_9%`_d&nܽ!>#4#??#@@$AA$B&#C6C>$DFDN$E:)ҹ;ciH#>'$JJ$KK$LƤL$M֤L^ANd-]FjFž<=HdI6R.%S6S>%TFTN%UVU^%VfTfAuW~#2P2&6#RޣV%\ƥ\%]%W%^eԉ%_F ꜥQ%[%b&b.&c6c>&dFdN&cfA_^&fffn&gv_Vbq GGHaj&kk&lƦl&mflfnfhΞ`eiiڦq'r&r.'sn&tF'oo^p giJqn'wvw~'xx'yyiu'{{'|Ƨ|Vgufvz''z'h{'g}u(FN(^ŀ"(fu2h:(((( ~ƨ(h~h樎}(~(i(i)ʞ> 6>)&)Vh.Fn)ި~)R)oLi)))i)֩)ȩҩi))&D@!,/f7 H*\ȰÇ#JTXoņ.jȱǏ C0"HN /NTI͛8s~\qO<*BhCeF RKKNɵׯ`7J!^' u /ϟ>l0|Vͺ!߰^C݅E+Vo!}QZ[Ǟ W6D5xuǗЇI6%CO}q29}ٺ!9q\t#uȣK*ruUc)jP.'|,Iod'S;S-OWLz걷;Y`"+StsAh[ Ac@zYZlmO~15[{=%gU^ sb qRNi$XcIb^\5hY>dT/?rR/!pĥxȕeMK`r}GFdXuԩbA}e b)/wR() 2z&_ih&`Jdٞ 9'sUU0>|Կ<*`pQPޗ@ʷ_z0h@Aţ $A?A @SD/ylƌ*0ED8@R81jg O#'0* N#Ҋp Kh P6 )__ pJ ⯈ : ! X.(o`HC*΂/Vh@,o,AROz@d<:.(SxQF?"/ !, ``@"\Paƒ!,H 7 (C> > N8Å :\#ɋErFb|pfE-.P!,i 8 \(00@D/Rl@z\(1#Ƒ$peʂ-])cǚ3cʔN upǕZ!, O@ @J`@NHƍ% q( LQ`DȜ)eBDG ٓ#B婒eɥo ^&SN0sPd C6>C9>$!ć*<5 !,o HP *4xÅ J!B 1hQaF ~!ɂMDy1ʁ)]LGΜx̗5{Ty3hO?I )S6E&8Ǫ0'j=)ר !,{H雓 \ ÂK ŋ*^ ad Å- BI7L'N+R7XHFRɚN; @Ebx ]*t,01Hx Rz0D:JERի1"j7yʛ;,:l DmvFV paa7fo>!y|P E%F !A,hQXmk`a5}w\7>}b\HjHT|.JJS  #򡒑U/ \Zm، n kW'6XXM@ν]"k:`AtÖ7`7?['>ydڶSۋŽ^!,s6H|*<( iExp|D8-"h2_,V% }1!nZѤ@JJEs@$t&Uȇ@V&UZPH %5'd"[ӣe.<3.ׅqSݪW\- ^(p>†L`<8 !,i,孓K`l]‡H!DLeA>!k $Bq4Yp|QX\2´y,;#a:(zqϚ;=h()u j&7]к!*Y5+A!J&@h[W kݻ [bV…!f$BVlpc2!,f*孓%0!hҗae"ZW!F>6#P\>0,&/_2GCa ,B(԰I05΂ꓔ:$tŠLJ>iPH %[0vE,XFlq̷!,a)孓%0N_ F ֺ#.@QE `nj7kCQ|7a/N/>#[&! ӆ҈b aL1ZpSԢ=p :H iRU\ @_t =ط`YϭA{,8dI!,^'孓%0!hҗae"ZW!F>6#y|`\"iE pXNGi2)BRÖv$aনC zORd\k&7]XV*j #B!&@.ŒqՒ5hUd-&.!,\' ӗ/K`l]HˡALe#>06ԗQ\>0. #q|Q\ v`F}.iAaQֲb0EHjXҋ$>S%Nփ6NY}|hd,Y!&h{6[}dzY / !,[' 孓O%0 B$e%U!F>h6(.u8``YK}Dp۩O672"a I ;zMLTR@5Hh .LJJFV@Dt 5@֮ъxp!,Y& 孓ӗhZСe"ʢh# vqYZ aH+ZpT=p :$t2:C%#f ot  O]V}A.!,U#孓%0C}$e$җϢ>|$صCHV$q0%B17,/ƀ^ L[|7z.SOc0$FRÜGh@1nHԤ1r*:"$t5ȇJAVhPHK0 d_-f3BM{T-`@! ,T"孓%0C}2dU4xO}6(Da/F߅a/N##1,[HAc/ Ӗri09I #j>8شTA1! )u>B\@wC>TԲjK`ad*\"er@! ,[  AtƐᶇiHqⴋ3fLǏ CIɓ(S\ɲeʊ#BlP dz'O}@ :gA e>1ӧPJJիXjʵׯ`Êm mEsϞC#S!M5VmƷ߿ LÈ+^̸Ǐj(BmKn¤^wӨ[ͺװc˞M۸sͻoשrĴ qf!Z /jIJkνËOӫ_Ϟm}vf}6gPP`u0&0 6F(Vhfv*({Sw~i&gGA6A8_݂ ㏶)DiH&L6PF)T:&kEEdr-guQ3Du1ǜnYgxh駟c*蠄j衈&袌6裐F*餔 {gv9qG$4&}!GN5M3j뭸뮼+CD4e~s_N/8MPͰ2v+CE,.+l)mse !Lk2A1,:MPø G,K,%Y̎ m C0kT,rq;{72@- cL(L0/%4N0!XgCj'=n`ԪC0p-`RG<2Գ0܈'`b017Z6,-R.⠇.:Y".ZdK->zb.=9|tn,xrG?",,R&Ko@_Iyt@53u2 &T;01TĢ}^[*7E5k_*H ID!-;&^m.$D0 <#q$&Nx̣ɕE L0ShEgY'k1_*8HG@`<>6DH&}@ 3#WLX$6qH)fob#C .ʐ!pI~c".0x(BH)r#~@˸S\7q* h% Y}n}my &.ш>0fu7q(Db‚9J=4t]^‰Pgf=O P^ gKHb| BJME8ZʠDԎAANXkdBDBD OʱP $2%L<a(!p o-*P:Oҩ;?]}XD#$q&nS!守5"aVk 5ܜcYQjͣ@-jӯs y0[i鱂ЋD#ч:Rk0:`n0@-{;i V:h0򲄾gK3 p# M!q:g/}µ2ecK6{_ؖŬm%.ܠy _h/8j @r N ay@B8V*\ Yƀ5ة@^A"(bM Q\5Xn|#Ct t4e ]hCE+(bs<^BCp |#61ѲlTBB /:%30Fm?l 7؁0Jk叆6j>lKO#-E-_×uhC&P!Ai6mj{_a#T]5l;k݆հcA4Anizlp݇U w& 00.@@8&(fa1[Af07qq[6 s[-·@Vl! 6:. 9P([X:XMS]9hqDkLh@ 7ghnm¸A[z XNnP7y|p(7![~(Ot~'NܠoGRl"9[ :PLO W`}^l׿'}UAA~/|UϡT}?}ƾ}[Չ?z~p+8(@O_\pVC 4? 2 8wAA,Ѐb`*1>`0+xjh|@(.:ȃn>H(GFP-C8lMQx2xV^+Z?fh+a8]xliȅe؆roHsxCQksqȇg臀1w؈8X{Sr؉Ȉ28&phXxh(\'v18;jB،؋HXx8ͨ[x(؍XHȍx؏x8cR ɏɎ yI֘ȑ (Ɍ)ْ2ي03yX툓<)X=9ȒD8h@6RFQ9XILyu&YXPby'=Z9.hi>kyB YI_Yv)xٖⲗ|ǖ RٗiI)NIWDɘHI=iu<ə8陃$I)siYS؃9PXExɚhٛ7U©ɛnT˙)_iIy*ɝy~ੀޙ~gIn鹞@8 '7i+}ɟW}])ӷ|ç _ x꠲G{7s pzG!:#w Y\~i,Z~1ͷ3JCw[(9|;z]igbnEj'p6mKʤ^dUtbR*{FtD;7p1-&`$kwn}pP:h}bW@QI@Ba*cZfzhj0 צ|G tjn|꧀*aAAਉJ5ئ {'Thǃ^gGTL@ 7Av ʦĚ@_Bj <,P @ pz> AQ @h<m\<}Y_bz  @@$0㊮ A ͺb@Ql$B6zsh gF@\]V5٪0d([*K@V,k>p P떬x0GV9@)?c,g&PMs@Ѫ<ڧb4; -&r;DShɷ|j_:i{괏;[$fŃ]R{_;;aZej{A5I6պjmn+J˹e*c +>5PnsyڼO6~j ;+4#AKVFؼQ𿴺*[;&rB{׿{A E |e˻{˹ ¡=ý4PUJ&p2y'"eLʴ48SL L6YyBYOF K8>3Y:L+zB(c8hBgjlS[ot'  &Lj86E8ƧT_m|tr'Zçs##}L \ɒ`õe\*oLc#b#<ɫ :ʑ0\=)@>@4,8>8";Chʣ ,\@'Xl ʲ > T >1!$搬612xP ~T^rrAa#G6*S  -.>10= @B? Enw&$_ 7mQн B[.1!k2btqqq$#sR Bu.mOs1++Vv.|}[^2+#}62骾.E RO]2N !@3w.3.4^>#̮~5=A 2za >,Swy=# @v ְ h  _1 l@3nlk?`B[-3x(|0#٠ @p:2n=P36Mv'S DoİЂ__1p?@?AWB/ +=.Xo~OO1f/񲮽M/1ܐŴ</E1?Gјcļu껾a6aq?_&\p|~(9>Gܣ1&]iؾu@kSr(8UA U騹u5Gɕ/gsѥOg=|~0ā}<˙͔>|)N|}M:_ RmւF.ڈpB +B 3pC;:}0q& z`J -0`Ӄc/`|  <Ơ&nI(lJ5M+y:FD ) xBRQ0KkHNBs5}- c6 |& ̣T#B?$;?s/rS@l+PPej `@c+R&mO=d“NvhJ̦rmŠYb53CrN/7._!`Hn[ixNG̎mN;mͦDfߖs7 B àwy(sـ,nRj" Ck/ڝҿs:*x!E#AEx1裏y}dmJ.WMKxzxS׮`šXz7zr {))@b -yM_BAPD`,Z.%#pGi%L]|L vpyrDXDQR6$n'lKQi`\yBMT?'dMk;X:)072 RUDb3A*<яrԣ&}x TaN:(ԣh+'p.niOiQ^_X1ӏzw&6,iTT0UA-K*Dž/Tk= q}|Bܘ@XZáp,|b!L%[tcW4]ecXV4DVI=ur VlJ:VIKW9A``RBV!DQSom"ЅPAa 0-ʹ_Ŗ5μ` Bh}{_Wo_w@[{Dk)W"C\P> (QbV9xA%*^aWb1A2iD 11 C&r2ZYKfrd(YTZLF!NjW[&$A *fZ|(qx! q` d CЃ&t }hD'ZыfthHGzCoլ65]"#ÚrGe\gk#!y2\Yֳum}k\Z׻u}k`H5Qu+j:3FuWvmp[&w}nt={!B湜 n6-m:ӸwFqh<'x ~p'\ gxpGp0fVøaD,I Pz=yЇ^'}a}]ݍx`MjL5YµkF];5 g m !tpcnp _(#9Bp8)L·BXnT}xч+ d ;}r8O۲jqSFAB@\zcCDEܾqIDSzĨM6}j{DN|;\H}jNܽ{lHDXږC DHt8_C` ٿS s r ޸$N ǂDAІ_YvD<˛RDmYGdunyD11ؗ>8E?Il@-x?x kXa\ d  $ @dKh _1ܾt3|1JGIEڌ |C(H(ԇ\lDK\#0 HK}^h=^tLzɍTn)Ì1ȷ:LXyǦ(_X"D,Mzǫx3yXMPDw\D't R0d 9;E9%ٽHз{P5_ Pkk.PHdH! wp p Sz+ynCxx2rd䍃_X*AOZ 3]@(} _Mj%RpߠP4P MSy@(_vǦQ 3чh"_PP.9Be jfIB]H: ,2SA= 8!>_ j@Pa%,U>{W|W}`xDABLI|@b Cȇ  |X W9|*ŀ#CЖʼ&SJVzפ W׉mxҙzw`;3 Y;ٔ]ěMZ]ZmZ9Zm ZE٣eZZڠu]ڵZM[][8Z[t,ڲ5[Se[[UZY[Uټ \\Q[[[%\mܼ5ܩ۪U\u\˽ܭ\%[y\ ]Zܸέ\]]M:͕\M]m]ڭĕ]*]Je=]]Eܹ%^w<^ [楷޵^ގ^Zmߛ^ _E$_Wހ!,L xȇ*\}1TE+Z8qG ~P (=.0M^(3F2EG$,/yen-k.,{3Fڍ޾vE 5]LDϮe6^]',)UutN"N@B\@wh>Tj6C!z'@elEC_! ,L PA < #ǁ=FA]G }< 9)C6&o|Fw(9"CrKk;.@VΏ {NZjDk[=S$I(NPɓ Dܴ ꣋w;(!,J (pCGaCk>"Jh!y$:xCr}Iҗ>΋ɗ$Q`F}"a4C@=u ͗GřEGN0}E4#NBOz՞7by!W ב{]jIj-Aaqim䲆JοC˗`t;NY| p!H"C[TYl !,I 8НCrGC}|HHÆ$Gk$ZQ"9(=haC( r`FIr@u (q`ē츲J v ϝI͗ѠZqkְ;"4vӐ`v|˶\u]x5nԎ]=tG 4&Ogu^XV``eL4<iemf|uaZ!,T" GA|9@Mr>rz'@P8}X( L'.NV2JVUGDCa0{P؄1&6!܎aTt Jh .LC f& 9# kT&(`@!,T+  G A DO> B 0pxQ@ !ɑ&O,%˖+alII&K򁱹R4y,h>"" ӆBYM0HjU$ nTRy]'@!Mn.0($K0]! mq@!,V9 H(D8PB&1D}bxŒ P4ȧFڈ<).!e-(L[7 3_ ,Jbড9z')u  PȪYBM.p׬u!,WD H@XB =Dp"E/̨Q"G/N B>%!kS|``$8M^(-{HDa PNb$$5,(R7)CAIА&7]hȇ@Vd@ft @֮rŻ7 !,[N H@XB =Dp"E/̨Q"G/fh2r#AymD(.e沚D- e4/FBRÊ2%apRF=*: mrs݅| d gA!d&@ vX^!,I!a 80 *\P‡Jpaʼn NԈbŽ?n 2HT ɔ-a24#K5]μ3Ξ:-#PB:%M5liҨT ZŸ)ʮ;NV9]V@jʝKݻx˷߿ LÈ+^̸ǐ#K @ok񶵻.\ύ;w4iO9t˙_W-r}ۭ6/mrw|D vF]YƠKj$n2ܠRy_'.Mn.P+$$@~ȲK^򵇗!,ah%HA}*ƒ >$1D/b8bĎ%* qNj!Q&,#ˑEj|R͛8q'6;m&iElh>"iGEYM1԰ZI<܄)U %NEB\@w"*Y53PH %h4]8纽8 !,i|'HA*<‡:P"Ŋ/Q#ǎ?|(rBL9B.Onrfš*qɳϞz)MP9Zs|Qt.KNaiQSTb$5,+X7yEIʮP&7]ɇ@V͘R ht R2 kϼtwF!,u$H`APA .(q"E/*̨!Lj?"<cI;ȖAVYMnS^5T4y\&4´zC,SpHjԬ$ntRy]'@"Mn. 5($@$@֮rT!,{ H> XB "L(qbb̸blj)VC !& kò>q9M^(6G0mH(Kh|1 )MꁠTT HHh .$Ce f; 3 ḱh!,~ H(D8PB&1D}bxB(#6!5LJ勢Q2h-e/ARz%1pP>=蓔*: mrs݅| d,A!&@فdb8+Vw!, yHp(DO‚  嵡p|`8.&/_>#"Q|0ofI {iM4U )u PȪYB\M._ebϩg!,}  APa *ѡ>ym J4(. e1)P|`) %|1& jv顠T< ب&7]`ʇ@V  *0]FV[Bb"PDž 6,3vL{*K 6h1nx+BaL4 Cilg4o+kp4 vփ1j L4Ⓕ qbK"<B -!j#5C H'4')PC}H=/E04{_; FO"P ̅t>(T}5 .&^ >\hB `3&~a^,9=rh!U/]5Xwե;̟Γ$"8\%`" _,)!nm4вl8Jdu~ F9|! J$("Do}싅㌱ +l;̖? #` -րYSZ kp9G;/Xap0x`*/m(Ta.i_WPXzho/^ PRaOx VG cHo@@ dxju˛4( Ñ2ġc?Y ,HO_|U.#y}dÊL#Esz JoXF [pғӀcBE*Tt>h6@y]xOYAOHhGabv7| \8,+:|CB` tK"  FEC"C(/yA|{zص@Q^@+w' vaO)07yi@Ti-`X gD{E@ 9| q=pKw{I/N)qy>Yxu!'1? 4^(B#)/ptp 0 @p `5pqr@ Иq)A@ٛb0 Op<`y : q9Ip(!TD0PI/ug @И>@3' @=q ^>qi9'1` jqP_͐ ) 4# p* riLYD@"yB(9 @P89 :*'R}0^ `qH@;p'Lz,DO[iЕa)=@9sIɔNInL%D]镣ɣJAu*Q`z/$ IuJuꏱp:;ɧ>)B٩ZɦLdz$ XcyZnА !1@TtzG説Е :ɩѪTIzr?Zj ZIj;*ڊ-g?9z ;ٓʩ:z 2  k &T[y6_ZD)M_ DPv:f Dpf:[.ڠ2;O+K -˓s YLN/JVK ꪔjF˩:`c( !b-3SK? 9qew( !h;% ^i\kH9ʸ{'.S먁 af'uly[KzGG;a[;'K+LK'Q{Qk&U3 ~ٍrK&AR(«>)难뫼-Q: [Ip{x%G">;+ ̽I 5 \T̾J)9ɵ%)²e(t 6nL5JÍ: > B,D\Obd @\C,FJ(y|4Y\ ^ %py;|_k|QQנw M~<&o|PRi 4tڍ /cMld͍@6 D],|99 &|;YPۣMڥ*( }]uptyO搭ۀ ۛ}] ĭ 8,*}`f9Na((q 9ޞNߐګ!plt=Ii 9[6s '5]^}I=ZJLNPK^; V~XZ\吴J7n9]>|*CNE+pr>t^vsz|~MTa.Y0 TYx)9p^~阞难p.LN藝TP 런 ɵ}{9km>.^~n #p0r@K~Uލp@Ap<@hn%'^~% ʮp9>3 oӮ&pj#>. AZ@' `&n>0O>4_6'w0@01^A `6 ` CU '1 ZM` :vӮ.>>_~,0;p}- )ly p n1?_۝)~8P A1O)$@VU"C K1ii>61`1p\t)@.p})P1RЗB` 0pA@A9ierECB4R&I,PShN BY}.A!$~^u6Ʌe08ڠi%%ת}mЌ*Az>:t Dc$:$B l; A"@Dp(<̆ .HD`0Cs0:)40A좔rJ,t;lFxe!EЛC/T+&}xaOa1rPH POl`T?tTJtvQPr$Rk\O{T4}Ԇ Lpx ܝ<,)0Kf61hD00 [L-&0!H4bPAq ^h+ i^xLd&Sdf3ɿ9S|Bv/F$'.if,'E cÔT%+]y IȒ}-s]T"0 zP&T ehCPFTUh1E&xB Qi3d'AxcE,XVbX!hiK h/{SUC%jQzT&UKejSJԃf1 < RfG7Jf3LKW9{R7ZNV5D@zWU{k_WVhP(ՌM&jcsNLru_=iXSJ֖.1ZSROpk\yzZԦVemk]ZVmmyZWT/Z(ZXz#*eCiYyb֬MZk*ZֲN. Z7d7onw]W%oy{^m@cfVɶӝ(M.=3{VJ¹5)?kNWep`GXc9a ujpP]3hAۖX!8ԡ IH`3<d AtxX dinWUdvN@<\67\]c&s|f4Yk=Ap1A"\U/8`~x`?A>6aYF0 =} ChTMbir"˘ae.w5k`[&vf}`@ˮ /"փ 68IBRrb8C7v04]ˁ4Va zش>F+/19!A*CGeY6T(XAeA(̱м("qB 8 ZXxVʄzqٴ @EwIMOrp.K7aD+1|Zh(HAV*X<%V|s|v/nI׸=O Eo7zf>AEiBzJm;DX]2n:@Iؓ$O|' rY_υ!7 (XabWY|&6qW:֘p-4ͣ?@ۿJ,@L`==9I X8A5K 778ZCv?C8}yAL`@= FH9 9y 0sXT }9} :? 31x3|A3|C8743Ȅ{ `A3d=0 ;̊ClCL[6 LCр:qL h4vc@K㡄HYkb|bd Yh}5QC3!Q}j Kȃ@l4vGf;Fm$3xs s`ԇAȃT:Q艦 )|:>77V>KN %+ <_R?XXaaa &)f!%a".b#>b$Nb%^b&nbOz]B!&b,b-b.'('*_*bub$4Nc5^c,bv Rb3~X6c;;vcb2!,vh 8 \(00@ċ)6ȑƇ#c%1䈒#ȋŗ ޴q 92I'(GF}{2 $ի'^ !,u (@ Ȑ B2XP!bƆ 8 cE"4"ɊPde N}1w`CvT@- )Q>/eԗ $F,#zX6؋m!,t O@ @&("8PaƉ;2 `R Q`āȜ)@ǕFjMu)(E:t8B4ĘӤ29.(tTMbp&էIlJQ PhLCr\a Kဟ"C*8x኎3D2 !,y5H`A>F‚qP4yT,b>"iGFEYI԰*I(܄#I %zN@EB\@w"*Y5hPH %xH1] U׮`ÊKٳhӪ]!ou.ݍv pˆN̠@܂5@w͜dt?w&(/g`/.΀!,el'f孓*\(.u #J\ @X'j EY7<ؑOBQ^T(.3sN/JΙj#s0m(QVФb0HjR$FThRZJJeu mrs P)ȪN] kmVxǐ#KL˘3k̹ϠCMӨS^@eה=Ž,{ڒk^{7޾v8!' [6sώclس+ Y@hV@ |Q>`*}g lF ćB}yI#}%8\Q l؟ufH0z`HD(,2_7v8B V@ զHiЄJ`:(9h%E݇~L'}块^뵇w$\M!,]X(孓K`l]‡H!DLeb|$bFym& +08}`\#i@ Č^#Әτi3xc粣3 j0O 5lALD/㦩B zgTRu]'@$i t\DioP U3 V2'TS-Ew"ov Gt:D%ݰeh+BGiekGxPt_};u(/ ϣz{l|zv}< z!,YK3孓*\Р5HhĒhe2dC|$EҤ˃ (K 07?F0J 5 rN}DS#Ha 8jU e95_+$5,ALDV!Mb Ѻ AJJv$Mn. &Lcl*jaрr)$c .\d-E4 A&XȢ *#P@- [._>}-A&6y޿G_߯oǟ~y&X| &H`6M߄X 8 $h(,0(4h8<@)DiH&L6PF)TViXf_"b`"bd9 Iiz%ɹy'/yuq :gGvhi"j頕Zqh y) =*)** Z&cΊjs!,V@!  \hP^ bĂrಉt(L[7Fx2_lI⦕ OzX T2 @hq{ .x`"˴P U30 mV!D}ك=h@߮-!`G,b &H KhZNl6nزu'Hύ6i Ο7Mnɛ!,U7HA>FBqp4yT$,b>" Ӗ䍍:"a$Wx)ǒJJs6F>T`l$@CdV ױd>LʷpWKܺqWp]~ X`z %!,N-孓%0C}$!P^ $iE o|DB Ӗ \##a4w)˚JJtP PhRUY 1Y4qWZ>Mkܷ͋7cT}aF ᐇ9 !,I%孓%0C}$e$ʪh# vqtQ^F(N,q(.#㲖4"aw#粢04_ "$5L[|$,n*Ru]' EB\@w!#|d,[BЗ] kݻm"ʏ-?p3d͜51OG֧:2!,H"孓%0hj2eQxO6"(MDa"- R8M^(.#x24ƳEaw#粢eT/O 5,)ULD#xqTqzEIQ$h 8C#f# qt *K1] Wd~683麦 n6!,G孓%0C}$e$ʪh# vqtQ^F(.,q|Q\ F!e-iE´˗eFati<@=JjR$& 2 M$N@F}Hh ., f01 m]>B$e  ] X@jx6;ڶU; !,G孓%0hj2eQxO6"MDa"- R[o|Q\ F240mйhAY?CӃ!JhE7A6 JJup+Hh .,  f/1 ^Hpi]Ro kWѤL#x$u3_ T4Q-oZl'5qmlmsf9€!,G孓%0hj2eQxO6"\O^D" T&/_te>"8<(L[7p.ZPVϣb aA%Dz4 JJu0H2VMn. &L+ȇJ$lX4B"ݛ:#h@֮-a֗`G,b &H fhhD#N[; [v9ߴd-(u>ydV 9h !,G铷NK`l]‡E Ç#.@QE `DŽ!嵡(d|0BN/J " Lf>"? Rn\4>BU0* & )шRR*\ э6 <2-$*j&aâ ) .md :i;bK@8AYB#F@#:;a6盆m/ (O,}۪B Pܷ# !,I['O غE C-@QE `DŽkCQɌ°RN/J "LLf>"? UQn\4Pc@)RÞB%D)7]01v*:qL"s#Mn. &LKɇJ$lXu)P,N_KhF vh % ,/PNG}?mF7li-s#6@ɲj>m_G! ,[  AtƐᶇiHqⴋ3fLǏ CIɓ(S\ɲeʊ#BlP dz'O}@ :gA e>1ӧPJJիXjʵׯ`Êm mEsϞC#S!M5VmƷ߿ LÈ+^̸Ǐj(BmKn¤^wӨ[ͺװc˞M۸sͻoשrĴ qf!Z /jIJkνËOӫ_Ϟm}vf}6gPP`u0&0 6F(Vhfv*({Sw~i&gGA6A8_݂ ㏶)DiH&L6PF)T:&kEEdr-guQ3Du1ǜnYgxh駟c*蠄j衈&袌6裐F*餔 {gv9qG$4&}!GN5M3j뭸뮼+CD4e~s_N/8MPͰ2v+CE,.+l)mse !Lk2A1,:MPø G,K,%Y̎ m C0kT,rq;{72@- cL(L0/%4N0!XgCj'=n`ԪC0p-`RG<2Գ0܈'`b017Z6,-R.⠇.:Y".ZdK-$@!\b.=9|tn,xrE)` /WxŠ,':hԃ.K\7P1M䓀>cR&>E.lسfLM~H(0A |#(41֑8w P|T(Rzm5\@լ '$mbw!0gu؁0vL Ix4lTMlpb RbDt:]$Qˣ Bk 9 D0+ &H&{LȕE L|1K'IgY')UPa6Cx8fǬ"1U $Ras9L4T\׳4\1a55ey1H7b"H 00.@W 4E\`P 0ƥ@?Ap`nJTA*|UшKXs5<9FL'J1qFA 0h 1n5S1b&,fqM5(W+"$&Úy>F7nXR@D"@ˬ!q _ vA),$[ X췮*sJx D$$Ulqd";qT(Ń\ `Hz; &ĚO \ /p"\c"6YSr :֫AFH"3TWF}k'NEBFL@H?^@6.}yB \N@9AWueXAhJLHCvu $by|с~7(F%l!WnM&3@#tPA$+Y`X?]L^!.L< yRh 4Idk| V%1,#W7@hB8›Mö,fmvUrd-#K_Ϳu  5@p$0! T0 jSx-*>ЂDP{Bjp6֢Mi:n4 L{ u@ Mph -PF)o++NplD렆_m4wa+K.Gb~4[O;܂3[19,Ѯ MEw{ŗ}1dOqeZ}H?'Oy<+y_nP6?دxӻ^I=շO{ƒ Ͻ?>k^eC_]AT>7:'g~g_9ЀBw>`5pC>yx?p(4 yAApAb`*2>`0+xrpqo}@/:ȃn>H(^GFPH.CsMQx27zV^8,Zb?f+a8]xl+iȅe؆roHsxRk|z}x1'؈8Xx8I/8XȉKqbhxev1؋Hh/xȘx؊8E/Ԙڸ،Ȋȍ8[H긎hŽ8x֘9h i舍 ɐy/Y(H.ȑ ɍ!Y8i*(+ؒ425x>X?YFC9LBZ( RWZȕi`Y(9.fɖ`$ _)JIYiDyُqV9ɗuXBIoɘKX)LI^iis?(U)iIɆ隯iS؃]9_XExنYٛA))7i˹IW8i^y yQ眡7㩀Yu鹞P؜`w H(臞iyZw})xw|Iz r{g|zנdWrwʡzل!* H9v(ڡiy-:xw~Ǣ3[(9~;)p?zUGE*]gHK~^'PGtGj:p71-`&@hjc֦n:fA?X qty)IQI@B`bJejgi0p:r^7uzʧ~ `EAJ5Ȧʦb i[&gGTL@7E"d f q;Bj <,X @ pZ> AQ @qq<m\<{c^az  $0j A l@tz$B6௢zrg?ʰK@aeVpڱ5ת0c&[(K@q_*BP PRwx0LUV{Z9 )=b,?&PK۴T@Ϫ<ڵ@1;Э -&p+>$eZVfqת詷zڵ}J^g[ʴ+if+(Y,:9;NlEo''}2(,궷0J;Ë9#AD&Z+i>,y2<^J8?FPa9<;&' zB(\^Za8hFenƨ^XF? ( jKw8Sät},{<Œ<VL'w¯{=z*27>A4ɔ, epɅ6*ʣ262+5 ’ʘì L;=|t \裹4OȂssé< aVq \k5x-}}V#6Q@ښ3 f`2%1B֯  3|فWZ\- T*ka-A3B@ C8ޕs޿BCBa ]T -1! %p612XxP ~P\^srAa#LYe+S  -.N10= @BD? En$D%_ 7=6Rн B[>1!k2btqqq%#sR Bu.mVs1+]v.|}ܣh,#e}6>m骾.E R6h2M !D4.~5^>#̎۞ ?uyA8ML=.]023 4 ְ _1 @Ly&| r   #_Yg9*?@q3 n }GmM?=@ Bk-Gm_+CO k^-*3;QOgl2')"Uohy>4N;hp܋/ثߏ/?Rӓ1?G!3J/1o/ۀ9/;\?_ȟʯ{:wOMM[JQUlp')?_o'YşLuWHytIRF Ç#֡XE5nG!E sTqƥ4cr (-OA%ZQ}.eT^6}֝*5m)ڕ>0DPÆ%e[qΥ[>Rݶ?pKQ圖gMH%O\rz[vm'9}zfנW}*@sX ͞Smܹuo#t>?@>9ء`|PJ a|y3/^vn>Q,³p@ 4@TpA,N "0 b&vB = $26CË`&b9~a1ƻG yʬ=JKJx!Q&B yc'.ްTiD#D0}3AL8*j͇$9<` S @NǶp@@xP%KĂχ0Cr[nq@/yJ.zwzo!|w|Gdc<ÇP Åt醥c'/ u?.b7;x۩7.,a i8<j"S P&C@`!"8pn4%jGzcbhC, FS!&Ƴ$Z"h8 )B3"5}boh1ElCv@ADɂ7Sʰ4@}POaUvr!/ E)Miᕒ PjEF5ڝNٮR*fb&5WDiJ"C@8mlCӘF4ьer(]^P\-rc YC&rq 2Kr-\ #P&x˫ɣG a0cC<8+na50|g!,Ē\3e2sM}jTZիfu]jXZֳ1@IxAA(LZЭt/iY(V1ZӦv}mlg[vmpO[qokl v}l4Y͝v m|[wo\'x mQ&\@nvK6sבlֆYq[#'yM~r\+gy]#<4dy LH ?\qdc|Nq;~t']KgzӝtGNF"DhEylqWІ||.=qvrҡgc]o/f> BׯDx.q/g:3qN]|-yg^F9m8U5>XMуdE/niD(yE8l1g|pχŭ 43eœ-/[~}_5OC@" 8D\ŐNDrD`H>Lx$B=_ı>GkH6f{GHt(?؉o$ey}0=_C؉?S{$sp rhZ0IF~Db_Yxr9PKDLcdѧB܉u(f)D4˴P=>11zDl@-+x` kXT ԐLkw}WxWyu`xH(A=Ȟ|@]C%R |Ќ|+&ŀCH4"}@b9VvmWәWuׅxxҕzhw`;s7S6Xِ5Ǘ ZZ-Z3YmY؟ ģZZڜݴmZ}ZZ [[2Z~ZoYZm[}[5ۍZ][[[-ۤڥ[[[-\[ZZZ}\ȭZ۴ ey\ܸ۳\u\-]Me%=]}]1U]eօ]-յ]G]ݭ] ^ ]5ޞK^X獸^ܹ%^תr^}mZ=_y_ހ!,B xȇ*\}1TE+Z8qG ~P (=.0M^(3F2EG$,/yen-k.,{3Fڍ޾vE 5]LDϮe6^]',)UutN"N4fB\@wALd:(X5pa6Yd "tJw2"`v(OvutHזz->Ey7|\D/blq#Ž3>@҇|'N(PGHkK0SMo\O~,(4Qym%3PpaM7N/J  `Y|DS>an8De 5,/LLDS+TM ؛JJx;H&7]pY.J%@V͸b6,ںBfҖqDgh@֮-5$`G,b b'H ˯hDY[t!,O7}GBȰ@_5lă3^,QF?HѢ%#r$$ʖ& \rɎ8c̙&O7Jd(T%ѢC}ȴӧPJJիXjuk|k|`:&/_#T7ʊ[1FSRV$t^=l*:N mrs|dLE!&@vI 9j!,A ,` h퐏YȰÇDH!r3jhC 7$P##5+)/r|cʌdzM}oBc༞HͣЁ9LfЧ Ju&ТX 5/Zâ;,O`զmڵc8-n8x q݁&ӆlj7g69"Ѫ,|*ؖXB9ʗFj-Hk<宕iњݏʜ8ӢG,È']0_~#Kບ%e9fW'<,7z9ŽZk#"}uiK'R;Ě$MhdŌ7voY`zӫ_Ͼ˟OϿ(h& 6F(Vhfv!b`&~._2Gc݈|1袏ȟB8P!L6PF) ӆ\7<1D/b̨Q_ň?(r$ď= D.!bJ,g'AymtД勲s|Dn ӖꍔV#aTи)Ӫ.JJv6BJ>Tjvt:KhY|g!,? ] H0*\ȰÇ!H1ŋ3&Ə ?V\82ɓ K%J )RE4s:dyΟmb (шBM:RG:}2j|TZ}5+Ȯ z(v%ֱPrU6d٠gV}ܹq۲,]zֵ Zgv옸bBL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ' @xB5bPP !- }> 9!kNx_֡xa:,&!6)N$O3T<3J6@1xK5"A1,rEM\ 4\ve@ D6%W*Q@!,+ @*LX‡"PD %bqcƆ?: qF(/rL!K(IQI Y&Ð-e JѣHB `QymT2t|D Ӗ $adג)ײTjvuLK@jYKs@!, ~H(DHPB LC䵑Hq  L/ŋnYӦR\'!Mn^@ȇ@V@kt j@./kVۀ!, ~H(DHPa h6*LƊBQ2@T(L:f I V& } 73R\'>B\@w!*@Y58PH %(5] NmVۀ! , kHp`P^ `iEoD" Ӗo <!0Iؔrb$zNAB\@w!*Y5($$@.Dok@!,G HA*\ȰsJHŋ3jȱǏ 7I(S\ɲ˗0cʜI͛8sY`ȟ@ Jѣ"{*ӧPJJuRXjʵWKKVKٳh]۷pʝKݻx˷߿ k1+^ȉ#KL˘3˝h`ϠCiPBR^ͺװc˞M۸sͻo`;3Mq'УKNسkνËO_Ͼ=TOuMϿtׄ1${h M$[X`A?ĄFHabhfHa~("$zXa#+ZX(Xb8b)#>Zc,$!ăBh$Ox#WZ uvd<˭ :8h=IcR6)DH-P6J7*$BrhHV )⤏8襉B~zǵj2^e8hX֙%sfI ٨ȒᤌIîx-rk+~l3bکa즅/ y:G&-[~&FihC,Hi...1JL(hkH>gj[,KϚ' 8& ,h{VhzgNCݧG3YfL1)Kbk_hȁ{16t'TpTj٠Ûv/$BsCPa\nӽ昱VH%;wՂ߻VNpƕnpF)n7&J-.%jϭ7h*a|=8"}gaQb5.N9^ꭣB*.N8nd;4A gYIm AoCNe,}fUpIasdyNd<6 uX%$~!귎І6}EaU=ml+ ՁpdE"PBΩ0yL (:oab1MhV [gCyPxd~DmLH+=5:8#EWl6'8RELah!Cl!8bƭ΄"\4>e{[wǶPwBF4uO|*GV{\sBEl&REY>OB{ ĮթsF(VaXPFMEcژc ב.]Da6`^\!Sd&Z&&*ӔT!H.oc:_iA̕1{D啨 )l8GAgFj=>:ҎaP $PЏh2Pz &jrLV4VXCDZՑ<5։Znta+E-oK3щ63K,cȺ}'CM,{zH/`t`\XR {a8ùasbe%YbV=[ Q_|꣨(Uma&7EVŭpAu92F`w[TtEX4ɶ_@v%YU:uֶ,hUgC8ՊA nO.[M,O \Fw ^T YNPcbUR5)hy4h|Ū \Vxh4h6Tgf[N1˙-ߑmf k؅͊% Yb ckm5ui񄲟/BY'0v519=w@KKGyƃoxIYez۪yn=X=Ψ|ڶJK'}#=4#_x1l=^=Yw7/]) mpgvAxϻci윱k dsIkEfEӉZnkٿ-ZW2VϓL&x̑o/jލi9jO3F:1Z6:Ne{gټ 7GZ_i' ][؏>{ǻSkeyp͝>ӑSUڏ|}_m#=$oLq7cƕQ6VPTi&cBcvdʧi0IXAswe{Np{Ra8igV%u~M`vİ\gK}:<8~@B9A~tvb° `)KLWhrye|AezjWxoKs_|1z6tgeV_UTi%u |x7sNzd'hzEaJbhGlgco1uVk6`X)|f8\׃؉rC8zgSP& 'p%'_Z']fmGc炧N_~ƂWHVWUgd K[慆bBj2AV7ROj1h_7_H&mcA6(Bpbgue$!` X7v9894?Tg 5RNVx^yVIpy|Ycdˈ_&s×[]8OVKNs )ozs'y9tߘW3Og|EWtG|ѨhSoP 3k%}vٕ^9Yb9'X' !#{ &u swhPxzwNs7yXzjB(,jؗ:w4o`טhMx6 N>gd7pV{؍x EXf_]d9)~0AbJ &`ȇ/uӋ-Do`'niiȇUXFFy"yոYk|EbeaxtSuzH8tԩWTv>gم{QyBP€fi'q ډYJ9gYȶ[_Ƙzz6yihHxD_ M67tz"ؠ(hGׄohU|G|GIo:ysXFyx (Wr&*Zv55B2-#+D" 929RAA3BcE(n#FV7<.tE:"%$4Ss/m䭉wxcB~k~ ]N'`+ivm% 1I'ǹ 2wvS OٳLgCɂ+*sNw|˻ hjJ Ek3j̎I;Xk4"(WQ-:+pT)78Ns'K$1t#Fk%J캦\!YWtEeǷ)iIzqyH#5J+8V]HD뫔hyN+&)?DcVJ-+i*|;Soe^W< (tBB;b%Z`S=z8%A\:FL9{anD:bיSzvb|dq HuGiGׄ}Y챗Y|+ZkF~wܲ#u/ (Kۣ/%=y\/OZ!+*v[6<uRN"U> R񵈈.:VxadFp2=(AbؕP5hhFv{1 ó[ۘ[0ɩJȩg5:i7M]aڅ8#+ǖI¯WiLX6zo |0wz+3*%"dMv0LWs#V|%sckBw<2X}c旄?]6HehI|z y%,\꤬|j%uK~هaj8J2 rEIi؇7,߄= ؑ4e#4ۊH{DIJ-"#K\<-t\/Q^$9j-!}ӦM +jHZm:tkhj&X_m('\Gʴ^2N8^Ժo&{šY 8 5L|%=ELI5A: UzHNo>[ť^=Y(Mv EM⵭G FNz{=ݺ7Mf=Xr]3QS<00,r0]#24_IX$vרCu){_-omihv&~|蚊gלLɾ}e +;u}1̸vMxijgG#*NAoDJ.aʤi3Uz@y^%é՜/+j/0(<(ll00 kK#K$˫j)PA*̱l3 lp) uT뮣j챪EI"(7-ֶ3κ↣ҵj-Kh(}VhLmTLߦ(=:j4~CMR^inR.bQ'4LB(L>IT)FL{CjjU kO?,YoX"R$qԩth,/V,ƭ쫣hm@Sˍ ܸ4S.SJ<<ǭN07K0wPW_(6: /C45E ɼ MtFԾQ33p,{91n]Y\L1R\ښ˙gxtM|Je}qyhw6ރcܝ.:j}I2*LRȩo뗉tO3餵^=K]wfvui\:޳;K,t;x12sf[xU>zӼxwWʗB{FSgMO`<#M,`|P\{*(D*Q i+Ǡ;O;t4 n5XR:%qi!l5/Lv .xmfc"=۱h]<CC} bpe9T'ńonew*koK\k=]:YէG.C c R< *9҈F&N8y;׍JdZȾ /:%_(.k,^϶9)EK,n~ңN7s/9ʹm;b_ܤXPLLuwc.@dC2Inu^\4zpS"d3!!pvr}^U'0Nz$!&ˆ$\%.-(߈7 n\24J9_wU"ؿl1b7bMnD%C=2T"\Ԩ!%!+ٛvnE:51tq#+ yug]hC Le>W2kRb Lԧ2E36bWMm!+T8//;ӤG'> "BՇ/ZbQRE`*V '1IgzZFYwum]SHi^9KKRz&l(vB|0Nd9U k,of3I ia'MSt͈]-ج2v')vOq!,` OA9p-+ L| rd]+ZQ.Jkݹ _Knb\V#uv9ku ` lb=r r9Q cpM4C9"tL@: [N!AÍ.?6*_(uy3%%"/(31A$3R 6"ұJ;3*0 [8l/ C0[;J :^ j+Yi p:L15(C4X$"F:ECl|DĂ9~*?U죇pZĪ3d1;TH+%H j142a4n$IJ@0D5ŮʻJwSvJ6ĥ铷õ!?5PsjDɩ?SղX)@= qrȊF| F3;.{('1LH4c곥M򮘤Ū(/̉40<9KJĚ*LZ\>2BaʚkdKfҸcѬO*0ӬJi q{Ŕ*j&2ƴLy5߂FdIpS戝j({"?EB;Fl^l[ACS t9GOSG˄X{אBҤʀ @^ (J*DdDF{F>rJ>42X!@ ?I˾(|)SGTuCwT;*"; {Q"6IE RS''`ϐ{=5\#Cۤ#:>{ՍZ|mKE+_â٧G;|4EBjSRC.I\E[6c;W>ǿi ΃+hCLEk` |yػKE8}꧷SvM=;!4mDTHKE?D;tbZJyEHN':-KT@Q2}`TQ '40|D{̿HAs?*A,Cܡ˂P5 ?a6j*yŤd#tK#ݰҨ5V8K]Ul7 MDHڇ8X h8Iee?CK{!r?jfGyT/]dS =Ud $h=1T+!#[ ŝTJP NR}PbA¼V]`U\=,$֨ M\U O >:EN`4 4J5B\Jᱼ#ɐBA]}~̏h*['6V<̴{9UzF,euє= -XCԲ)U85zS.<cDQi1eSkAЎ`P^H_R@Jy7 fؙe|ժ6}d DݫЏSִN̫lhqNnv2%n1C3Z5;u[>I5yTf&޺iѮ^Y)PZ~ gWDzgcCeǝ1N+XeZsmj~Ήk 0\1;Fb'8z,kBj3KUj&bcφΎ.<hFvU=->> "%g!~_#N3ISIi&p-m%Yth,ƿ+MZ1z;qBޠO;IV-.X)E"yd]4: 8L"X!&ӴvعNվª}ho]~%kiR^^91i+MTѦ^)qZao^=KV䈜: Kq^>n;6F @FݫQKa}D$Pv?}--n"T" v9?f"ǫ`Q̛mC7EA0V8P%1r-rߓA܅=1HVx^| ].cP<䳸Z vZr{)^) ՚ 1Z~q⯮j2䰥|%@fF,!1ҶzҤ0m.\htWdhم:/ZraV.o%wm) 3;fuKN؁@nIeHoySY+'U}V1r\r$97-,s)cYr:KЮ$ xN,\းD2 l)TY`H2oDPdc3졭,oVl(}+q#4TvI*N,P1 ~""FmF5]fFKHa"4:sܸ~6IPgJ벇x/Q_%ce);;޻~dzy3?ڦ ՉJ3!4p.zTԽG+ ]AmgCSrEaSv0R(8y@,`EK0ƽji&~D!p"Bcq8("m x3eZ2`޽:Gkrmc_z6Ő7![ee3[ !t[q *=&;b;ڟ|L@fin Aejgg2CM Em| NʯUᇾP[Ǒ:&U y RKYM)abg:A NGa0|J)k&xbgWFipa(Y0ɢgz!iLM DD$ry'P[p=:}̠TMOnqa`Xm[]i)]'oed(~Dd{^&ߤ卦JXQVZ*1E%~^%~iBGrQBL& ZpZG AEOq&h=FU⚱4F?^ɗ 9f^Wjpx>gc\dJIUkIeaζJ\jL!]LrWb SIi%T\$jlbkWmR"Vf\0NIZM]x"yO[J|VEH'E(Np iFbA`EpH͸ѐ\p|6߈PN_65-]Q&M``}M\Q%iZ8!>b4"M65ݢolK9eڹrFͲިU%H2Y-+.\}ꑼQI# k.χd# V[U$R_jrhTdPߩ:X-e \a_u`& N\| r+vo򧐌eZl&z5)=RQ! ~K͡ooГ)0BKliV=bgѻU߶'9 N)A!$~y1hU2H X|QuZ%fyH% "Gp$4o1 [goYU]&uIVi\Tje9xb^d" zM0S #}p0X&D;DΫQ5Pg U`8o1ؠoID\'18:_fp# %Kt'ӕ$Z]⑩"ECs8q /&W1*XOt~6 8UH,[OUJ|y|bKzlEf@o([[{{!0jEA0h& 2! Nذa0C.PRbDž%7b\Hʏ/Y:h!A0Ml 8Gr$(ѤK6E4ӤJ եZp զ]umZj}ۦ-ZeĄ*U6܀C| 'LiB!bD)٦E(#_t!(WŐ+"\qE;U.4)̡)Nl9K֍"H=|UNwØ!ZA#K qr@AKD{uzl|_]"ӏ)"hl뭸뮼:Ȱ&4)06k wB/6T ą2$j *C U 배Uǽ`̰[11l0$G%BB 0! 0FFBol00gÅ2N8 p.Ṿ,.OK@U* 40*OڃL櫍)$S:?T pS$)]EA. *5|21LƽFLG 442E G1ElF sFU11-3BŔ1M:P>$"ЩUA?H u)kP dUW_AZ#\!7%&S;qE'FɝD7 ˦L{$/l2=7ñ2l6]dg qu^|QCvm-Ө7Ct78P:DҍPnbѡ( oժ6B:**Ug/ΑY#wM詵U{|r7i};W_%F5D=ʭ54X+'0a`衸Q~#H s,xSnCV1h[[dZ%kbH'=&Kո1 z[߾t+m %+Qh ^0 %d-=Jh11Yֺ05+).X}?Ĭ7E B$yNݑ 3"'(Q+$Cc sAѝ䅍2 rdT/Tҳ]f]ٕ` T=].q(q Z !)˺,mo#mRjm^rG FA0LE! tH>'SmZ\W,FЛ|5JYr~b +9aFtrTy  CS;|)OwŴ22kQ\AM8Ћ;Bcа5XRģc}!뻂~BQ5ŕie4UKF*&io2W>!$F1Dfaw¨G1 :'$0H'oyM žYnpZMgˊX;ǶEjRӲTb4hqQ^5˭,ծPkkK[Rh$.IM,11~٪~n>ܻ׫AKrz|迼[aghI;fI[ڄ9 4t&I'l I7qkow)T} lxv=\;Әpc!!Xg[e!m`u\v?QcLD5!+[c7ۢ9P@y|cHLd{׮Y ߢ+No  Fa3jJxLf7 %˒g%f3mN'y .svKaҳ}-[?i&%V2f.lQ yF\sZbƮInf4(H쭷\];~ IUi GNL<Ĝ"q*Sꐜ11k4Cg״ AoeZhE`s-{y=*bvC5aV6*BzT%du%@鑕tܹeBb(SЮ]OeE; g6"avI+ӵ1J%ӗխOjfjz8Z\&IoZy{%*Nkk=/$խ+WuyH=(iY(w~[g11^gt)\:8a FHgrϖ:h|t$E= RP,.Re@^l.lvE W&֬ *e܅c}`[D͢*LO/,n/D$G[ji=JnIo^HF.44NN;^C>8 -i4HJ6B+MpVK@SFB֯f:ln/B'b^`kک}xMn^oZ0 jJGDЪjf[͠r ifE]>%jMDžn}XdkV4 ϥ6$Ȋ;,6/#iPdet+ľP ]kh*+fbBb!!TQ +PnYJ\q̅C@۞,IGXg]x,l|{\*m*l=%\H/`߈4͒v1WTt'5I**pr'Ú0-r0Fa0") *9*S*@|9F{%M q`/{.KYvp,p4<*krFKY.KP*(ro.>S;>QCNrPS4>HC{hFNT%},@N!#(r))~@@|9I& J{d *}ȸq!FHIo@DmȦ*8n+py( Lk g f=F[K6(D6TJ&*&$:: nM `Le&n"o^gP3.UA >b'VUl@O"@FadOd!Dvd}@)sSI F& `H&|L$zF`k$%K0A>`NkNP1P !KJfR54n0^M0"T/Bc DsLFP4' |g6D0(*65ev cdad ladAaS xbVIanV&@:fAxswwv`Kk6YyάpڂO;TPp3Q~Ώت=k,5a H桢+Lg1̓R#$$5s3M o7K$-&cd@P6zr>>c{ J,6[k''5iu6amI)NvNV!ady,!xSIAnvg+ Af avV؎1g;Fr^-<۾7<|ne.;D3amM>+۴VER!$U%QbX0 srq4E#$o&> 3H)V+D'78&!25 E[U@nd Fv(NXd9aRWHuy'w6LO4 O֓^w $uZӫJ촚3vyY>8C$o6ԤbVuqF B?66'g0S%ngS)pbKFV\Xa!NXdYbuG)S8TNrVzH#"#~!a[/Ys}T(iM+B3JZ֐Yp{8[M .^<ӣ%a\QZ;BBr,ƙ#2Y@N /eØ1 (xPcwUk% $dYMZae4HV=!GVHwwxo.nD]bUɰw\iKd\g:}ad*wz ЌB@UϬF"Kc'CHSL82e+p*LxFuT)-IYv·|ЁAނ7cFYY/P{`ZcC\GE{;V[Rd:_5%z4ը;8uM%ј 2!#0;5Dꀃr&& ӯd̯^3Y:n+ʧ()6PS+S:T9 \¿!* /04<ipӖ9{5s کpԥPIz;` ŪQQ ;rtj1iB/hOfۃ1hkb[Fj*"yw6wl'[>z& ցۢ ~K 3B1XX띿p|#gB Q&Y-%9e$4{:> 3c52!}PƂcpU~B;βH-29;=ue6mf<'\xK=c5^> N*l"G7)OÙ<6R|Wpκo̔QDcO;_ e+(BpM&b* VDXU56}I2%O4 }9.aB#σF~]^c_gi^8ɃDsN<;ٻro^-'?ayLtB]Q ZzdMGG9__{/5MiSw"jF{&x/? A"HE 4(Pஅ :t.":t}miӢ5k̘1bĆʕ+x K 1ف&L_vsg?y揟5*EPHk* hSRmδJBR UrxhנR~}Gܶ6c&MUL|u&u^u-\W\ՉZ"R` lv胢 *"x:5Sgf0끱^ziظ?pY%/⺉/f#Ȑ#I4$ܻ{v)ӿK6Z~/eluz_&Oɖ[X^SNXT h$_zM{FYCAhb2AL:Q`a$oXڋvm֚jŦcng/Zyi q,%satHLԉd]^~ u!1mPfNQSHN/b1}8!Uw嘞q9SpY{C7U(Ku^xMJ_j}aMHYPxIdfx<@H+.N$Iy@Gimn-awOgyQr. Dz`Fj;niufObz0&._}fZ.oSA}HAX1p7$22g: m?چ&X$#3M.PNDQsTVIF[tJ/WgU/{SQR0{OZ gj)֩\gf Հ |$„%bOƕՊfff"Lok7,+iܳ=CO;-GѺλR#앛6knp~~g`lh@_c)~/!~&dvmZqgng}O^a}nQm:eD7\d*5ª.PI1zhE9 zI\T'9gzb=v,l _-B^孌Ͱbs 俗C@Qk#D>YHNyx58&~ԐQ-p+V >@29LPdͤ54`0x@R0f+cU rdo!,|ܰ%†&ZEhr';i1Y1}zB>Ok *%/6-eԛW&{",7+OcQ_V6 ^v#SbrY^N13>lEL Mmpu,="ej3ɥ`JIcΊ / t-7|K]3S~*.nKcG5^ʓ~6ً`,RTUY.E +JHMUJ,i]Ǹ<J$zL푮ZH+"(xU5\H>IRYϊִ^RK0õ%Exid49yJ`K{Уce+dVJoa=B(mEF# 8swIJB73:zTo3{RkK3tu_'?O*7vjm%w˩N\]u ")lKy 1+dE%6l,Q2BURXvHVUf7j "oeB4 45b 9i4XW98aZyX \9y:+ie;'gz~ewy{*_LW>tUK̽mWSQv_v^Pn'+Y& .|+dϊC碭JB;abKU͞l|4k7~S ?!zL2Z>sut)Ɣqc/5})Xc="%3PEKX3@[غ38ϩr!f3.*_+DtB^hQg˰@|WJ.w,eʭED=z@f,G2qaglNTFm˶w9Sggr?9n6A~r2(8?~hkDAv^JWA  7nVCz)'AnEkM68d`D3<(pfY?"@"`mgwfjgD[s$E:NT҈HxVp>~)Jb9HCNS0cdsDoOYt@/ZhF|<8%Unxl3MTAS9dǁā8r&9D(`su'UPY>S'_;SiHV5IJ&_3*b$pL{щ`+slrw2iZm2@ y'I)9)cgYG @K~IQ卍h78wKfzh cPLj3)2!7IK88j?w9dv$,v|"fw90[i`z ٗ uztťBLTEz-´&5JD] 'o]zU{Q"NYkDm"u]g?l+zJk(~lę3#[vg'T}D3¨;W:_:Ʃ*@ʒY8oxH(fv{~ E1릏7{Hcª3EgX7Cc7jWuVh {&7vʑ iR"b \"8+qf42'8H/چFR2J!Ʈߧ:A۩{pL Wy.Q{'rY56厢Hz\s)G]"ŏbZe<1vq=66)6 tJfBmF!ȉa&+[fr%g,fz JգiJK0-u&v%VFPz !r5ZD^Xh6wXb>aF1?j'mFHlh9G:}T="[U;|U߆@62qv)-U۝6:D9x3 8p]+ezV.Ryc|so뺤zCJKKW:`0G{׋,TyX#$*ުw*+3>61\⩒?剥 M3^f inV;2uki=(^4ZL(MSX@ǔS9j`QWD{ LE}%zwdz$rq(`#=@|bҏLOPܛkmu1őHxu]Gn嗛ѕDkG8%@K_|jah٧~ǹo*N5r¼eh+Ɍ„,Uȉ܉iQ]=s_u4P xKYy`su)nQS{uܕPEUjne!˼/Tv,}$vWf75OͲ (rÿ́h?FńJjhە]CRɺȳۚ}7;t&MKZf[AZS>ER,kJ&廷uИqR-[̽UJx#h[ H ќ*F̞G`m1SfӅF k5uܣz4 )-ns=jH"(Σc㺎8X6`)ػasFa[xɂ=[+m{N'K!ɂ7>_}IϬK*y1 *W^ r] a+T{.E-SXuL i`MfFڋsfraA TaA F2+xWtXլ[+l۽ፁÃhsqA~詟ˍFLújהP:zMl(KXdZ2c&@a-QՖ::"S+͆ȘQ͋ WdZB!䗫pmYPO{tPye^qMP7/UQS}a_~;)は&LAyoqҭ0k`^9b. <յ Mb䘺 ` 2=/ i;.fPD(BL)yZ}"uDsg+)¼$qَə@~XƸQ :/;D\4G Lgk>~ K =&y|b-kk"M$+nv˚69Uu?:˾r[{9BΖ<޸=uvr|?D Ii_ ;DHbnj4vTz::"&U) b)2عgEnz&. D(a"bCZlbE1~E I6AD [R 2aǕ0Vc"Ō%yz4yReP-Gެ((RGkW-R-AV]~ 6_>DPǞ3|n t=x7^r4Bރ{Ĺu1]+W溈UYrhѪQ?s|6L{:7txKaΔ6kڌk4s$ɟӭDK2)s9ro$ҞOJ/æDZUTW +@,}J+`xʲm/BȮln 0B*[-.2 4@Ԭ -F`K rx[6 6 4 Ƚ.*8Dˠ#JKʸ0=:!SO|:8-ae[< 0PA QCzLQ4D4.RmBo#oT, 3422"S<  B1V@d /H lF](ht߂5˙#'RْHjnL(;+ .S6Kh)) O>/Ϭ4_б[TGѴ -ĴjQV% ) &YY5V iDNk#riCRXguVLݕN0BgeNV>n}VoΥN- LoU<$ FnWƷmzǞ J4אb0MyS0d16|m/ x5cg$J7Ȋ\TbI5'sTnM`O'ةYێV,:UVժWjVUvz%F;v,kȕu k&i)OiqjBư;+S Uyձld%;Y~566L|ʙtiekﶶNmk$7_ξ5=A5a5;;ڔBlSkIEnrsP,7V.q(mK$`WmŖr݈N8-HHSM`KɩҰj>rpWp6 BqDB>jpGVCIZ6M80%sIžsSZ yGsPB!2\a민+ CP}t`}T*J`2zr,|Z6s,0}׿a\μE5kOlsD }qVc-h-'RHΌ ua;׻=,xׂׄoznZ!GPӲIM7!6e`ŵ?BヶU8㲝 t,9T0,f|ZU~ep f{=;x|㵯9}@>h.g}<] p3g{=#S{][P1+ ^=+hp&|OـJuuBbs=e̾zQ]8|>ѿ+`0t>Eșk\,nF5w +Y#"1#A B 6 :0{_(?'^:E1<3>S c±x t `*`AȠ`s$?<Уx7>Z /9@,m&;;Cȓ { ɺ_*d`B(008HAAEw=ᰴ1kвs A;$<:$d{BK:@- '5o<h3$>ҳ+ 6<`иlㅜ@1t-8#!;951MCJ4+GjL4Z23/EzɻjEɏ z'PEh' ;_Sŵk #3 bľd, s>h$+s3ɳơG @=pJ^BnA:G}8`?q?[Gqc lA1(dB r@pҫ4 B |sJHf ve#+30qk6+ś<յklskH@,肛S8 $nja|O ˩)r7JSdϩ2iěRxLM=>m?.Yյ~=`B#T b{.DBdCXd:빆YMI۴BD(G{옕![)E h-1!+@BTO 6L1@-ǫV#OER<* tP3Skת xN#)0&K#IHt\qH K߾ /"]Z|䊑K7K"_$14tJٽKq]՚Lo}K$ƬL7VP F$b_zX5 u &Lv=]w`IbH&AlRPmR:Ī!\ f_%1]EXj()_Ї FQ~sopKr*%21(6EŒHH u89 bs4d6 vDhq2e2 rJcC3άF;M͐ ScчhƩR'"Oɠ46Z D_eO24:!IOt`^Bc5C3X"۝86ӆ-y8V,<ȃaZ+aHgѢ3vSy;PK"F0 5}0jtT+8Ю>M@P}FԳm> 6 }w=3=3G#QrV 9\`s05ѝUV]'q<7 yU{AcC߬TFUMn>hI93`P}( @#oGnE k '& S"3,^mu]HpoYJ Wi+,ǫGl@*?ϫ o=S^`ׇ (cG>nvvvh;vFvf&zmpOthZjԉ^whlwx?,~8!T &#;2e7LcL`x6x wksoigj֫p?Qv xhTe􊣇0;F HJW}n%)H`zYHu|mWs>x"CaȎӬX&FmZ|I?Pnn~E|`UW0h | nU,K0p5r/ +&sC.#!NZW<@$""P64p"ADFX0Î!~ !FE@@}Z󱫖7.o̩s'Ϟ> *t(ѢF"MJ%SBU TA T"IY,YŇ9+ "RJpȍ uYtKaƂ} #ip\ ^|\H|-5 ]*%:]nVz5֮_S*Sv22F`;۵͑m>|2c{<-Wu(P1g.n淪?dP` Tb"`x=ah dp{uWYi`okĜDt6bim.6wby z^]CYRCZ!) wS.dk%'uE2uYfYJwȍ7vz'+b*'_a.[x(iEZuQ6%y=|!WxjB8&z:\[}aU4naHFt~Ĝ b?"mQWabڙeY)+o+{8"\]ׁw``vIfHn[x&`{KЯ>flmނtz֜k^:GJFva|Fp—~{Qk)A܋/sPҦOʭM0!e2qV2u[/0qv睓:jr&}24KO5Y2 Lsi|F' z]1\_r"yɣc f75bCdG!׷w$Fݶ%<0v*Yx" '^bhjpsIЋ1.p]QiZJkDf1pe"nPzz^)O}G ~2UM.Qڢ]=8yzڲbLYī}W?A$USa ~gLbjC8R,VW.t9R43]ye.hK)բn:`I5HR9Kܰ˒ejgsdFZ&d+ u92.*K_u%g Hѩ9beE껋R;9{9fM-Bjh8;dG_fr>Z%DvzTʱ\52Rʷ#NZL g8yM>3X5+b.AoeYt#9n1'\(tmS%kGDo8+@tiZH0x="=OO0 YX"?n ;mD٬L^Cc:VcYI, =! a,E{nU&)I B A dhغ\Cș͝*\" #׮չT TC$W%Y;afHGIaxVk [Mi͎eMmy-EWvKUZ[)=cgLDhaOjYtQf8b=L.Jnڦ`&A`rTx"Wa smEbaΜNy lvv mF#BifD:Pf D ^i\]8ZI;@ZZX U`_hfi-'ssVtpfi_'Ț Af!E NT''}RineF^Uf#[LI< E Y؎=f~ F\(ҮͥRI捒!f)εӺB(U"\|5be(JyUaU5*=4eOOJ5:]iy]V&(g_|)УWB%7AZDbյNdy֊NU\p["~&#m8H1Cfd^ G9`%&V,!Lg|$GƩrbJfWxn""bGzvYx^}EA&[Qe2k m顕؝޷h%o-Ԟ9$ ' 2R6CīaɓF֝E|u%d0][7^ܱFeH[܉H\,F}"PSg (7*EΦY$[^bF)6 &\,yehX*ޣXd-ѻ`h}׆ͳ̲Rᤩ͋h@ڥ$B"ۂh=` ku~*٤`m$Ad]"OM#%%Sm( 2nnnx.fd >K(B_,SJ}-3.ނZnd+:"` /J/Ld.(VMe&])$xzΕ9t͹cNj^Γ^PsڛxnJ 2۩/Z2l>^UB'$.%]ىl_,P Ia.n^꡵9]"Z_VV]ѕRLmQF4joVq4ZO&-oJ4g:3@dњZ[EaJ2c1IԷځY;cRu,ѯ%&Y¦N_#mioT~Lr[ufӻvl}BKcQ"&)Ҫ6YM.(^Zz nFtsrPZbɻ]7z=i%iNUd(E NQ .z7ɒ^)A]QsOr_4@Q4@ELhp >„#Nq!"/Zc.'QLeK/aƔ9fM7qԹgO?m:hѢ !dÅ#FXPbӂA8f|JqA2°:01k QI,qSך5rSj901!++dK( >8Dͼ|PC>A/y:Q$ۋ?X*;o7U0ɽ .#Y#l4 ]+N/\|" 2!DD0)R.:--4cQ M&jGPk 6S M83ƮKELԱKm2榤ϸYnM[q5ܔmU9TC B $/r6Xl2}mGe!{V *ڣ*rSӳEssMtH%.5lQUp?MK0Tͯ4xqΙNODPZ' Gvys1a7$"RINyO1mm,q*Q-("42MvK8evU~8e#qɇ osU[wݓAQnP8Uh%t\Amޤڏ_5fSoc̱M ](O[resr)e&O:I_!:u3ߔ(z 91 =G*V" >(ƢSynS8!.s_0HK)j_aÜ prio* -. 'p}{ȗ4>,|0]YLtD=P]bxG3 UNeO284}!f{¼i9jX)91/;Χj*M/mS.~2!CF1zJ9(DN$aW D W5ɒ:RQpYb^#q G*̌ U%1wϵױIqfZK_zYY3!IJ_ #Kqn5Ȫ%d $ G|%qG7>n>e LorR9NuCt׸jhdNճ$[P`FFs_T#'J# ]Mw&sFiZG{;>R<`2\M4>$ɳb+bTGմ)N,*lwSc$=HаY#Vm9-W.zũ5~KdjP*2xa_#հ.RT`0$U/U&RƩ}Bp @y;{4_%"6PUv;2D-9~{G8՞kS L9]Yt}XV -nBn@5ֲ$gW8O rݝ>n)eb@٪OwwGmQ lEW _;9 ^ CTb9Uƒ[&ͭd.]\Cv=$,X,A"Ju_P9$:!՘Y0O2Cu+zc@Q}^V4D˲w?y3xD狵mKJĶkoVX)sRغaai[vЭ̡,~#[aTbN4qk-,%C5慐A]qr2"E˦Qu+CnveEZDi2]iW1kf{%sk u{O%cG嗝"u%[~%Qv𶦧9SApݭ;gr0w,r^$q>f -+iRQx2WuϾOy,hF-Asҗ^mǢN`YC8ZdpvpڱSmWqVjk{]mX޲hh;$;9P/w=J8?_P!'vƘK4yDz AzzDuʳu[%tVcMGTn2!4_b|;Nvۊ\:kuk *V8cdȯh!0% -1PR$=A0C3MmfOY][QpiU`0upyDd0+qP 0 p ` 0  p p  0 {P ɰ g N pY 3I!0P yq!1BN51)=m06q?C1IqOSQYq_qcQiqosQyqyQqyq QqE Qq'O1GqkfqQzQp1ZqR</ p ( {!p!!2!%R )""0#Q8=RAREr$O$$y1%U.# !, = &ưÇ#JHŋ3jȱǏ #* (S\ɲ˗0cʜI͛8sIp٨H %DѣH*]ʴӧPJJիX*4Ҩf'yKٳhDgK_`ʝKݻx˷߿ L˒PVǐ#KL/k̹ϠCK ƔS^ͺKqM۸oS$ε&h[ȓ+_^ۘo£KNe>̳kν>۠WOdӫ_^3i˟OixϿ?i'M4 *G4(iL fᆝь6(p4S(b_u43͈0ƨ4̱882/iEc9idn L6S3ĴqT183-3UN=aި0p*y fŃ <'wgj#̛{& '$tF!Cj0꩖F"P˜tA;bal`:,@c"+P/<|!,]G {:~a 06{\6@p>X/suK:1n [ācg\p:1C2D36}#I,4l87c@-DmH'tZ¬hy0] '>0`MgcU]< F,ۄwPA1|nB$L,`@h5isk˜vKN8'0G`0rL/n{߂##.;>tq-ҙ o^xygSygxFul/~YR0'2Cw|`akλ2Q/tr׽ cu@ YP_`;ٍ8̡w@ h؂YhM ѩӜq(D b[2`,Ǿa."h,F [0*{ڗ:x̣G>f! IBL"9HiCHW" R `5LF لTJXU_E\2u86^UTTAWJXa̮wv X Я)T6u])1 >\ ʂ'Rj5(( Z}|z 3)ٶvka{oMr RoYܛ7 r\n}ZmuQ\D鍯m[B9|{1!lƕsIkJ/q[7mHfp¹=t \ Cmpd& ( OVvq$YXpSX|Q&`طL*[Xβ.{`L2bvһpMyMgawQ6>πoz(N&Q(f5AP=I{ ˄F\bL}ogAԨNWeB UbINΪ(}E]o:/n`,a ĜlgЎMm*Y<ִuBdl <4C h>qYNFJ}Ms*ZW<cB٠s%Vϸ|S~[XnCA!a<,kְT N0u-\q<`BD<`ѭ#hcxpWBDӡ~{`6NMJ5M[l_Ե58H<; Λ9QT#>x"s.& 4&"QKaϼ7CNr J9׉xBA/w4v tʹ$x-usЏm*'"/=^|잃49T:)p0U[画 A'/HJvB>$VcZV }xyA?@Af} xvl+Ay-~k-PkN'Ԁt#RPDpu'q%b؃>y Xt}m0&-@E>`-ys<`Ek(uflk0K8t85L=+>0~)0oExq.3hull?Xvq hIdvvN,Rn0..SJtzIْӦ I&ZmIZɝ%j٠!#'*]yʞ1 ZI:ƣ+@ aЂQ HZ=ʢQj`a"[Ƥ>zΉa^Ppxpo<~_hjjʦgn BJ.y<@bŠ㙦8zfqѶ_pe 0y{5vz1yZzv? rK*dhuک:)pA 9je .޺j59AP0}!WJZ^ݙ*wp ׺<0j):3:ۢɬ宖 Jjں95J ;_*J\,PܲکuF;˳곋s*ڲJPZ6n[eZ\<2JvP29{W V`vRb%PUK붎 +n;:[% m `!+ۥj];wV XKY[+۳›KK[ !ڽ[Z&ձ{ &˾KmY {klMj|[˿$ۼ˾ <󫪶sq\\‡:s *l,1\6j3|:K*?<B>40 `Zۻ=3ۥ)fc@H ;pZэ-@ 3 p QxmPI mL= }QxPs}Q0}i=H~].D^3L= ` O^n ]DI=໰ 0 2^ ~ P]*.$ h= Z~>4&LT;PV>䈝-A 0 Y. G3 S}hkn n rcۦM{.Q.D`d qEn  =.m, >F@!< -틬rubxb}L..<[` N# 䣮ߝ_ Ϧ_K~n})12; a\q@ .?u 25o/]<*?͞~3+Z:_^/#*PH\^OJ&*OA?Ҭm>J4b9 ,Sk}O_)dIn^挿.OS?e?&+_CНci?nW4oמÿu| Z/~_>O/ SOϗ)> 4Fl>Hy1 >uܠJ 5nG!E$IR)UdK1eΤYM4$L<"Xdb:Ӂ[B}"hp $5gse[qΥ[׮̝=ZhҥMBJ*o6PA>>jngСEn'PD"UԖV[6b-y2>Lqɕ/gn~Y~[lmㆽ=Sկg}Ujt <3TpAt0R˭0?}|m| $c[tEct+諰 ;)`:dO,PEeTrI&d(> BGqFiiaveM"@"'tM8r쳮Jtr.4HXRFLsTtQF]kN6<ԒK/TPB =+-GCuTRE)1O,/s?L4Pc 0,uW^{T)Q*,KXÔuPZͺ5D}vZjIcIv[e>UjUw䮕GJW5So 3Y5Zv߻ܽ> cuOz\q7D9E`+x&SUy_]A/r#>7ڋSVy2vbM/A2)PBFr޹"id0lፗ+&遄q#Y:[Zũw )rPg Ra^c:`|PaC$Zz;ll[<L/38! (v7xL7DPЉ5'ϰFhN'|Yw]ZGܳƝ8msŖJsO6ܿ}`{뷖˩և.KN \rA%NqӟQV!<}x[V}S Ap4Ü*xŦ|4-B;TC  ЉR}U,RIVaxŶ kE3aN"vVE,Qx|7u`Kˆ1Yjc[Ѐ5R%ŭ-5ώxb7A Z@';yPR$e)MyJTRde+]JX2[!O*#ɤ\Q! LHIRd&5IhBӓӤf5yMlfSf7Mp-7\ydf+]A4&2'YIK^ҙΌf?OT%hA zP&4!qk:${'65ȅ4 &'>}S3iMmZP (@#@0Z`(5Rm"501" )7bra 0R*s/gLVUsk]PUdN5ЁL vAD:V9GRFH64.DpUS@,2ϳSiŧKZUmm*V` 6Wl`>P|b<@d0ZjK;SQbp2>:eЄ BEJ Tb Tz)R`h,H>$@ 98l <VcK X@M< m ˀSHs Kn`)iR CCd@o8.F"څKC N)WB\)y9F Z@80 v67<q%OF dЀu% @> FSrwҋ~keD 4R%.eaNg&1b-G;9Wϲs~l2ze9dҕ$Nz8UmoWc:4BNw>jBC>@* _@!^x!.}x؜n,& h$x6Y8$OI`rtĉt vv[? 8V}\\٠Zx'S F̀þAS:^b Pq} _Pp',˜1^4DׁW;~mqcx V~:uw d:0@բ 0ʀ XaI ,? @ҀK@3:;2ѻ[˶hx=б+=pH ,` @3%4&H0a0X `p. 'dBPt>C.\4dB/BBXC.1h,13BcHSC;JӸ-BIs;LYA+9Z#T <[0xs8& 8+E"8 г ໱E!0087̠4 G3]TBaE_ܰгhTBlkE_ČlTB#8@Fg$Gʳq܀0BzlXC$MMJ(Ѫ,1z)/#0Q2E3=I4U5OTPe6UR-US=UTMUU]UVmUW}UWdM (TC"A"3-}H S>(S3OMTNT4ViVjVkVlVmVnVoVp]SOmS4M@-U9(,zAu'"Ic2USd:9`V7(؂ESMX]XmX}XXXX}h-+JWue7*+_Wy0Z1b}]EdWـYYY ZZ .5-Zl,}:0Y3 :- ̀Z- 4&UXuy*UQT%iy]zT=j|OYBS~MVɥO\˽\\\\>= p ʕ/pt`8Pd. 0s>8ܿЇ;8 QOyZ}RrDExUٕeϖ}mQTm\ǭ_~_____1:0@ӇZ=h]k/j`AU~ +@x<Ӈ@* Ѽtj<9L}&*q q VKhсIHN F0F@aUk3>c3+C4F.GQ<:0FB@P˃B(/j-8l,L ]4-E- ZxY9 X̂aj/ǘ}patLؑmF%م]s(n$I-)YH}j~_on>HGh遀PXnccc?CڅYׁ9(mށp DZ Gڵ`ő̜g}\2LĕTVei}QHAZ.[$V .!boQa pV hQeY;LiiL!<jjù=J^9`} @iK 7878fj8&JP}] <`8g F9b% 4 i[63!__1 iZWڨ9 !VO M`mmm؎˄KX;OP1 ˄ HmdHjJHXÆF=+yl ȄQ`a@Y"1TpCx&  8  /q'^ }pVRp 2Lf񁰄<]d Wz~ rϮ /aCqc}(7oAp/:-91 _0yiyXXi9tT9JCGGׇGGUCnϑϪHWnHOLpӇStM/=PtVcDGX.P@Idj!3?^^;ms׻l.r *k\ifPs7BH֓QwXWQwwT >.wzC,;zW?xy_z(x{/k;__I쁨qv^4/p}s vXT9sisd `^;pz+;v WZpa{p{+(]vyp(u `=]O{O;Z{ЇaFBQI(_|w'"Jay^Py+-YTs:o/I;gz}gi~~/~?~C`i pn~^i.ax@=*S~s^aXև.(_vٴ!&]vA[,h>y kDtmM۴6nlqeF,Iʔ*Wl˘2U 5&ΘV eD6g+*L.[dbEԨM$5"֬Zr+ذbǒ-k,ڴjײm AI´(RX%KR\hÈ1"5rr!Mr3ТG.mFw%e'L"-6ܺw7Yrū_J 3/hCs6ɓ)W|;Ǔ/o<׳?ն$5?U]y_5`B):-Fu`gvi]wz!!8"%x")b&J ŔS&x#9蟀x s>6VjwцQJ9%UZy%Yj%]vG#'R2JTԸ#m&XHq& )JHݒL69Oz(*(:(2aG 7Lk1nIqz)6gq"ryid~ hZH(z++dI Rǩ*,h'CZ䞭&ʺ-z-;.{.aT1." +gn){oy2N^Q{0 +0b8 +/Z|1ƺkjxjm9ꩫ:O>뺗/~{q Xjю> ?<<+baԌH;[ϣ>|uVO}II˿Bw?=~; R?ᯁ{ #A}{_3A,l C(l Pc cA6!sHMj+$ֻ\!p!%~=T!3-rNL6~B*ZbӨ5 ch9Vl#H#=, "(ȰQ<8r[!)InQPIeN%C)J/bl&SH%(E!b+s̤-٬Nl4%2IX|fpiN&4'iR&&q<(9@1':)Iuѝ<<'ρ(B}#P2TgB#6) Qr-(HmPvvehHS^.2$5)LR#)NOJg5) oӡt%PT^rD}jWfԩ2HP*JխƪX}V*VxC XZViZ SuqkIZפ^WF` P6U?X>d+ZY˶ef9;N~vm6I[Z}TjZ=li[K޶m*yj2UndI7E#\d>tYfԺnv_Y]mx[FWUo^JC|]v׾o~Y_nN~]J*wJ+ҙ6!9-KEsKk,:ƦoWAOt5[]ken{k_C>C2`b#YӼlf{8t0^SN2m[07QTܻ㩔э^qvߖA]dllORQ nsGN?ܐxc|?7;;"W(+Og$G[N,9^7:׶:1%L@]]yMhܱpWC?fB,&A.Usu>g[6=Yd'"Ξ]mp ҽng\t"ؾEG|/aggvaϹ шHh/WxN?Řz/uyc >/RmKl~%g_ >)j,\ TB ~&$I ӯ?/ӿ??  $`%޵A͞PeF$4"    Ơ ֠   !!&.!6!v_m_`AA\P`1b ^`N}LE` a ֡!!!  ҡ:!""&"B!#FQAha vi-IҞ񹏦Ȇ$! ¡"++",Ƣ,"-֢-"-@#"//"00B>"$Hbn!`a9qb'^vpL Tl  * #99#::#;;#<ƣ>#??N!Va$b!%r]4&RI6p`(̙)FB !"8n$GvG~$HH$II$JJzd K$LƤL$M֤M$!c2$ r3J&.$C6^ce#}7az"`dFN%UVU^%VfVn%WvW~%XXReKޤY%ZeLdNN$3%BNcQ I0eSJB)Zd#&b&b.&c6c>&dFdN&eVe^&c[n&gvg~&hh[&$e HP^re^NGk&&%LaEp'qq'r&r.'s6s>'t &uVu^'vfvn'wV|'xxAf%\ %lƦH __mk@'&lnfo'((&.( 'FN(V^(f'` `3e|({'f|6EB'~槍(樎(()i&.!(ލhkPe^Ҧ@$`K*ԧ )))Ʃ) )) ee{6ޕ6 |,S()FN*V^*fn*v~j .*c])]v_ A_RR˘ *_++&.+6>+#V6cFfdTё]мf`*T!jϥzR+֫+櫾+++$r$UF\]bb=Evމk5fikQ~,ȆȎ,ɖɞ,ʦʮ,˶&Ƭ,֬,"fpfoEQij+l^@ @HjrQT^-fn-v~-؆؎-E`&ڦmo}) ў^u@ ~{O..-6>.FN.l'ܺmV,\,lef.ꦮ.붮.Ʈ..C`...m--}n =GҍPwN/V^/G)v(omj*/1o-/֯/r//pSJ"M\J W_0g' Щ0Hkj6o*I̯İ 0 װ 00 믞0  pDO1Wq\fo1#q/=pbH̜11qdAƱϱ~q/71  2ӱ!rڱ"q'˦L2%W%_d"o2'w'2(2#1*#mڴ*2++/N,2-l))^2//r-31-q.-337s1G4O35W5_s5's937w74c8394k}:379 3<dz)/H@!,h 8 \(00@ċ)6ȑƇ#c%1䈒#ȋŗ ޴q 92I'(GF}{2 $ի'^ !, H 2 !\GpP>0L/B<#b0mo< +% 6h>HJs]Ü6BA|$e,"P!H.AAeQէ!,$ (@ ȰÇ D(p"36@!Cr H%,`%Î$aTP 4R7ةOBobXaK@DQP^ U˦ VXeK}8M^(5*&O#Soa% 7- iȠ-CYp'X32)Ը `@LPR^4A B$tVJY(U-KzFd~9㽩k:@=]>~@!,## H*\ȐÇk0Ex4yt,c>"## Ӗ協el/̅IM2MೠT: (z&7]`jqOH %:cYTmn[p.݁՗W/ݾvv0a3M'0 "K-RbjZN$5Wb*թUj:r$t CE fBet @.ɊŬw3ϠCMӨS^ͺװc˞M۸KȽr7\p}\r͝?o] xguy0O~O^v}یϠ_zWq ^z͙GS 5ހ W \PaszYMX@]^^WPt.'.D&܎أA?2 o3S\C2\˙bMɅ8| PX_.ȥ_# @_o^WAwg aw!,e H*TgC |Hq|`&V|8M^().HH´[yBY#W a*eIpL+=C'T8 8T\ѓ6S⾝CE f)$RcY`˓Rsxo޽B\@wa_u"UC TH %PL!c-UvtAСI^1]Þ-pZڳon޴zȓ+_μУKNسkνËOӫ_Ͼ˟O# `W P@20@k fǀuT޷p~}X } 8ߋ8UP@9P@ 0dqER#|72>-$>:\~f$he?WbKe|k}#Ys!Y_.%}Bڄ D:f!,O  H`䣰aAym:l(.N/JƄ*#0mR(9PVȔbGjJ$Xnr)2R\'`>B\@w(*Y5QH %1]շرEX;6ڳF)wnɺv3p/_~"naU˖%m'8`@!,!F NK`l]„$e$ʪhQ Ra>0$AN/Je#BadqAY0u'a9uW&1uzhOR*lJh .l-ʇ@VR6 $m v]kV 2]` Xqŏ# !,$8" Hu *\P50$Rܨo4rlODTQ^TQ>0. 9㴄Q\ p&Ml#"XQixC貧+=J:0W 5l@LDú㦭JzgVR]'$ n &7]pY <$X5ˉIذh&SfQEƊ\)z4ˏ n kW 0*0~y7Ə#ONoq?O.}:gV.p;ٍ } y˹g!,32 (o&:F È ("ƁHGPfr`5a-q(.;pKf#QFim˞F(+T`&&aâ @Ǎ\Hd "˲w"qFvJGt:F%(aF֢:S6YiJ>"N@!,82['O غE C-GQE `DŽ!嵡(de0BN/J " L\N"? US67~.[RVQ1xaO`"ZU@!%NBId$t\Di!PU .'Q#7Z+@h/)E,_} d xGt:H5ݰeMkM؜g&ֶ!,n H*x!… F4!Ŋ'VLx# ~RHGvD)$KW(s6Sy3cNiNut&׍!,92['O غE C-GQE `DŽ!嵡(de0BN/J " L\N"? US67~.[RVQ1xaO`"ZU@!%NBId$t\Di!PU .'Q#7Z+@h/)E,_} d xGt:H5ݰeMkM؜g&ֶ!, B H*\ȰÇ#JH"Ey3jȱǍxm&$RȲ˗0cʜ S8sɳϟ@ iѣH*]ʴ)SP7ꋦI(UFʵ׭6KPhӪ]˶ہ_kmՓYW˷/԰f \È+67jeӶŊNƘ3kL7MtZS^:cͦi;rָsͻ߹Nȓ+_μ9KN]L-!,VK{;㏭N0Ͽ?4wIfU 6F(!^Ybfv ^(Ph ۄ,7.,'^8V@)HҊPF9,c~']F`)di&Ylp)tK>%瞉}Zc(蠄 F, c2XNm\*餔Vj饘f)W駠*ꨤjꩧ 竰j ~)`b0^9xkv6q~\OVk-S[nOFݖknIJk(+kW,lLNӵGPG裒Nz֌@T&$_ +ز 63w,4l8RwY\sǨ.cLh%Gle1@ H"H&:P*Z )CHlܖf5хτ=@a 0px̣wBH4MpCL"F:!$AJZ̤&7N^r'4zqU #QtD!%Q.cPD. 0Ib%8~1e!IjZ̦6nn3 8IrL:vӝ\GR2-u_L%qx~"#O,e 6e[wILi:t R!!AD(L|Zh HG "(MJWҖ0}"fJq³Jb{zTé?]<UcAi9f"|C0WmVծ`Jֲu$B(P p͂\@W0xͫ^׾ū @Mb:6m[@ٷ DO|$hДT5h4 *Amlup9pgG*F(5PTڒToJa@ i396'C*W2]1D2 4ꖂ=|ᢑWle3N"趷սhC`r]4 b ΰ?TEu{a>jjq9]|0NQw^*c{^B!1'JFQ2e0ctrAޯB[ ;NI2;,:Pf|LFY^Ɩa Vxx& @2< g,<_ݵ2j"ֳ4n,bXB: ^Z ö,R dcHفЇg˚fg?lg䨊NqLXb|{{m&͸r'y$$As`>0"60C0$?@ȏ5 5o ^8'0RAȸ8SG@;> x@@ #/>l&gWA|ho[9@*L#G1 萇a*/p?.#<ʯҷNy] 0@đ#;cplh4vwb!1A=}& Fܢ \P&_a'"?8~샜\<)?"A8_/χgmn'{7.zjmgV]pG{ {0 yg y'p&; Gm >y|`rgwp> V|0r*rg WrGǧ0Xt!18~`uLw-hgz zvk6f m y׆7 xFy=}AxDyDŽwuyGruwL$xyX~CrJudgYxzvs&sp#{V&@j8n؆p(tvp xZW|X!w}$grR8qp><Ȉ%7y> c'\~$gXCzY mЅizvDo0a{` m ڀ 8n၁xЃyHquJgu=r8(xuuOr*u$|(zA`j W5{b[Ɗ0&0 @\xh{yy 8Vuu | u PruȉW`Whphnd(dHƊ (` ~Kً!|h$QtYwcFg7:8w-l)ȆaWP 'k`8mȗ})-KY8@r,vxtۧ*~}ۗu$~WVZ`|퇝V9~3--@Y t}aSɶ s4{D @)Z|09V+I^4  {* , @ːw Av+uZ$nU؅vxٛ$g 7 PI Іl  Gq il6Jl&dY6 2Xo%4ĦꆄZ-iWjpjGf0 vjoe-)Jq3j|bIV*gm'ץXjV{ꨡzi:Yg*Ū'$@LЫC*2y9 fNJՊ"V:sI(Iيd׊j"ڪ{ꭐ :lSlxj|Jpśڦ `zZV}l*[ u!Jjf  ˭|hZcfGqoAjhr&l  RhW,ciŬ*\L*;C \VBFv}гcBF;`0wִI:`{Qc%boscA۶c˭-šO pmZF6 wx}_K {ú;1ooq[6Kz}K_[չ[nhK{;k{;;ێ h+k[ۼ؛]۰z+Kh"{e iUu;al˿+˺K `@,[ƻ[lhbK h1%D4ջ[,l0›Px')£U.\l7 9@A|CLDG03˿O96=\@Z,Z\ܬ/1%5èƩFlnCJL<ƦL-f"j +&\ȆO찡vLMl+pʫ\ʰ ˇ g,řɝ,ğO\t wy;PPtۇ͙l;ɚLȼ˭ĥLlμ ,cA ;aAPU89]gH p),mA.]텡:\Ϊz> Z ` Lw+ q@_EQ<6LNL2ͻ4}ʚzy_0H);֕,^%(MmPM$ kXmZч>K7=u'rF;&ҙw/=1 Z ؑp HYD=0<ٷ]uRמ]|}ժ܌g9!\M ݏFrM=5-ܟ=}Ȅ@P mSn--1n m8ۇЂ LL$-N3<ż P m0ۖ4^&mG.-L}y=no|\1P{bdnY~i+kM}K^w^>m>oN~~sm'y .}Hݍ摎Rڕ‹=׏2^!瘎f߭I^~MƱ^Jn믂.ƭ..9^N[Ꚏ'B{褞̞^"^r>~lnn^ANԁn Aƾk?IN(&)J2o034>5?? NH:oIaD/N>o"2UC`b?P_fhU~ln,7vx3|~)O_/XXII@B0ui@|U0'USXUjSt巔L^_/ U5UuET_!0.0V;V}T^/ ?S?}0 }  h xWA .dC%NXE5nG!E6$H&Qd3F:xZHҥMF"*XdɲU%-2(h S`3aŎ%[Yiծeɔ+[9͜;{ :Ԩ-L;E 60XAd0cm5ogСE4R%K0eҴS'O@5iK$I2(c}Ќc6D&tI(J1[.+*VhwqE+$M8S) d;a K/}F+/7d9QH#t:W[]vϠTPq !HT޼v曏a޶(txz{7qg^[alٓ7Y7i|q}wŵfϛ|Re}|Z:wYtkQ` oju H! PtWp ABp;!uZBC$b(VoӰY񺖊1PS #fIX9Ac$c4zEpG>xD..ObxGXq|jc6nр6Gxdd#7 WC&rd'#ɵI$!)ғdB@C8 rle/=b9Aw/tJ_F 0Sԇ5LiHiRl$5gM}!crh(#9>|KrsdAڈt! Smnz4$:"iQz)Uc)CcVUZ'Y7i)ÙʶUH\Hou-[_ULue {V5xmleUXFe=0ӯgMHTkb'VZ-`C moeE[1f eDͅAmp õ]nsK$ YaBDqGb^A_p w 'l` PJīp9B@aY iz{b05̆c =o`XlaBA X A"L6:n|5|{[=M|d&Dء ,& !EBnl?Zq {-D|f`90L39ĕ 2 WXŰ>4nb&F6E4'?(&pȞ9(Bi,zE[ ZȊ鯢MXmɂ `@1dD/f @é}Mexq(ڲ}_aJ_G9-,6,}[3+Ƶf!挸3nu`,d WB3! O ~p'\ gxpG\8Ņpq_|Ao@- L@x@0`WWuA%pݲ20 HEJpIKgzӝtG]Szխ~uAnhCu4,2`o\;Gn6iwvϾFTiH)z᫂t'^g|xG^|䗮A e;onA3 w4e)lc/lO mHC*=gHC'|'_g~|r*=s|Η}ߡ'` p #-0Zc/crɽWzEx < >X@l@|@@ @ @ |X >@9?;7LKC?#9+[8Ӈ=!4t 4!&lB'|B(B)B*B+)@ B.L .p(-=@2 LT0(h& C$(HA6B?HtxrcPD(Bx{P,!3%hFHABPBXW=} ཭P=.PBW$Y<8zڽ^%ޛ?peԇ-د=XV/w2@EElł b@>HFqFY=,:c ϣ HD}p9D E9< 0 D?j4 *ZCY  1 @ElTTCIp@E\J`|IFI$ T `Jʖlɥ,J(ɦLH(ŀ,c4Nc5^c6nc7 LC W `~aX03PE(^P(k:`~cpi c;kö2K7a&qi VeZe[e\(\VWYFC1&ACYEY7# MT@$R&$SQs>gtNgu^gvngw~gxgygqs Ui$A7fk些ʴdӻm"fhhhhhh0.!}7k?t;ڞՑiiiijjU˩1>~Wip#Fd5Qebh9ek.k>kNk^knkN9j9Xf6hַKcęۣFh2"jȉȎlɞlʮl˾lllg0NjQN7}k ^ .P=54VhQmmmn)kH8vD8 Vxn^hnŨA`䲆C}fHnHWNiUF|Ӈ[mlqN;e[6p/p?pOp4궆m(\vJ(l p-pQL _h @};Hhf^}oXR؃(%[0l"r)r*r+r,AC.-OkvkHk3 1҉p ObȦ=H~+aoЀ*.1!g4t-(ý;%0ʇȂ8"u/;A;MqHpxnZ,qXluYRӇnXeRUu@tP 3 ^h'}s}@kbN B85_'kxOvI_p}D&}0 kDOXp ';#؀ !Ox#tδO-Z, rpr@pw,p)_8PcZnuyTϦ s\%T11ul/L`}u8O Ppo&Axv*5 7邨w F?4c px׀LMb}`"K5'ߏWxQ|OŷnzGGA+eەz}0fZM_ C(4s!2|v*>\"*&Ly,=.8\rE[|{x'r'?w?*P?|HrO  2Cpn!k"ҧo`}M  ui50[ຏG T0F"eƈƕ#ojtpȝ =o>W1Ij4`5 j*֬Zr+ذbǒ-klW;0˘ &ٳ!I6yT*Vbɒe밭uرF'tƢ9>iP@ h ئ56Xm‘@(:Xm180n}x) Wu&5?r`˗0WڗC1?o>_>~⥬ƪ#>U#h? 8Nj >suW^{W`XbV=c3AT;@CdCdEvd郞>ͨ5-h"$xh>ю8BPN#A;AY ht<:mD L)m"A\Iup~ :(zՖM2Ѓv_~`VTH䣑h#9NV=;H*jCcRATJ! e;JJ/5쏪,'Z7`K ʹesc' Dx&y\Mpx>iA\UQW1Ո |`dqE f;」5Qc|Qup}tJusz7V)8PދO= jl7NM3#.B'>{n;4* xjpCA,(H]hzC(|k@??v; s|%p #8 ^0T2N|QOӇ`55(1 $!(A ZPB %Bv#%&E*O_8Cpd<$"30k$Gq%$&EGth! cE07T$*SHFёCl#_xDQ1%.sGɤ+EvT%2CV:P,"(G貚ּ&;+r) qSwLYJO_&$JRUR4HPSѕT*Xz>LbNRյEVOpSvAѧzԠ[G˗U VO⵱akMzSHmghXzt,h YBReSKrQs_ kgYkQIS-t^fյ]pd֬Mv_MZWkxӛT/L{nW/~y\r-_rʗ}`WY`0͹䢳5mn3 S 7ҿ̝{U<⟶&QeC5q*IlcX@>z\"9BV))&SY,r?*ɉ1E00qמi~W™kng{>+?+} ]@xЊ~t^\{ѐK?[2 MОq&j26{>5]Uyʲ3c|k|ھnusf`'5,l:'{PsG[PvtE| ǯn#[Mp1G|8X&^|]Ѹk$;\wu?$$F#=vK"L>LN$M"MvXFNFz$9(lBSL%QZd+A:%%"SSBe#H%U UJQVWnN.eO~XFTeI%e[J"$OBd*<]e^ꥠEQ_,yv";~d>&Y%^*46&r=&[ndeeڣ=-CƂfZz0Efd"&%Gʥ`Rka]&m&mn&n&i&p%Xe3.؂k'!?*gm6'ehY yihrheb/қ<| -B*DATiڋ m!4*))hP(nDC)W- i願@E izS j!'K40j)QAj)cZj` &xj`*Majé'Il*Z(Bҭ~Uirzfr"ktRڭQRkXCgv+@拕kMfOgk+fkV.FiB*]A.l grQb쀴NZj_Î '*Vh˺l, **ɾ|\J*)iJ!S* @ @ z--..&&6>ޭ- -2Ǻ@=kF{Blg>lD&D$ڲmۺ-ƭ-. H..//&Rn­۲hly)u '+@(벭۾-n.Ư/֯//>o DR/)*~%&aⓔi8'1Үo0 0 /pbnRӲPff,~po ?1GO1W_1goq _~10O 3h:*e=^0n.(p2 s1"'"/2#7 xG$. cf(4҆1.ki i(?^&/ 3!2//2003130C$'s_g2gnq[0vnR-ӚfV&1YTlo-2p.;3<dz<3=׳=3>;_@ s Gc24#.ֲqFڪ6-RSrL%*9s-:>H4II8Jt22AWyW5FE)I*{ĺsn:2SS?5TGTO5UWU_5VgV?uJWk!:qk'wi5*88z3 DKlQ9#Rt4S6aa6b'b/6c7c?6d73eWv1Xu)p'?PMBK(0.*/jmISd^ߎ,F_o2Gn6oo6pp7qq7r d[6s77G4on.0uBh3u^ij_Bk xbl6mvضm}7~~77}_I8IC5Svc]Fc^w[(hu0ux*7L%zAw{3_3n|8Ǹ8׸8縎8{V S&{qEvlA5g%HvNwcs]GkADlG99ǹ9׹y9;5a3#9/zvin,r74j*73CjEizy88:::Ǻ:{@d纮C6o|Wѡ;yr twCwx5P[Pcy7"|'w뵸gz{;;;ǻ;;{@r绾wӷ'Lx{{\)^0z41pbG:S.#+6Tr{:y;ɗɟ<ʧʯ<˷˿<Ǽ<̓<<|Ǹ$t4AFj$Nyw*RkPhDmœ۵Ƿث<}ٓ<ڧگ=۷ۿ=ǽ== 8=y=5o-{A^X=b17"կ(\yg:iA|؋؇<闾>ꧾ>뷾>Ǿ췾 >z{>۴è;A)!dH\tm6h-'|K8z @L* ET|]|emu1| "1Ј>7*O?#dh&2͢|0k w߀;j!PRHԓ>@B =D]|H%J\S4m'k?а|HKbA[|Xe 3kM~ j(s)N/9X]f}hj4ݖnp rt>./TF%NEUYr|ݷlU5yks^N)hR9%XĊ-5ޘ=Ec=U^]N9ݘU]W,UPB(m']t搸`!2!E ⮽>.[~m@LJr +M- lUp}Mi^'rWCꪃe̱Κ=EM?CA]e3kQ+u&Uウ&o⍟\'6 ( %..WUUߞ?}qϽ?*BVĄxUx 7!1'{ZIoz0b= ^9A~!a#F+R!X'=џuUTĥ)`SihFA%D'>QXE+^YbB/~aXF/jO_ %qx!xXG;Ƈ?Ir- tDC&qT"HG>$)YIKN2 &FO:HfHs$YʓM@MǛ]97E yKB0YLcT2l=4Ei6vmk|C'%ȕ'H4Mc܅n\`{YO{>Oe5 ZP 5(&eS,Hq^+'b)Yy Hw)UJYR1Liz(49NyStlWPI{0I g9Ct-XR^YVU~aV6n;aϛ RJ"ΩO%G` [XUbX kd)[Y^[ZQv(^; D\_YZ׾li[[,fy[߮uϸYv+^=t[]^v]^Aux='8rkr٫咶|[_~_[` V=ոEI@!,20 O^.̑4!AO@Bqʴ%7&T$'@H!=u!72߰BRg"aKeFO\*MBJh#լ3F6h& 6$@XBtۇ x2 15C_}0(4hW<@)D!ȂAuA QgX*$@ YVOVASQAU͛p)s꓊,sb"*蠄j衈)6裐F*餔Vj@*8З,9ЅbS^řS3٥ꪬj('|F'm뮼+lTb&6D $]cL*Ai&MA25Cۺ;@"-y|},N&iZ)T qk:A@ь(l2JK 8<@'DmH'L7-0giD9Pa̦5#@ƨp% ++̬߀.n&7G.WnK%Hur T:y10z$(P WB0 LBІ:D'jO0ͨF7юz G@Ғ(c-nh&ִ&25tݲf#WM#HMRԦ:PTJժZXjU.$LejHbQHЁResj+ xQA,0X3SզgҎNj`B^'KF}D%L]"C4-ƻڌعclg; g%6LfE4oX#/)kAaЍdH\-!:*8]k[Qu^}LX) Hzvןe%l_YX ox{\hne`> fC LFi!1,\4cDMƂ^<\`A>PJnaƨo T7W+ffrv5(pry KgΛY*L#ATCTW~7^DV5sW3"* 0m!XbBZ@ouZy;@czH*nCm+*žۮx'{~qV-^vD̲>[u->mN:&C!r`m>t9ῌ5TW+zYБ"F54Ђ _E>v '"d';xg'͞wa32O醅Ո0g-qp?*W5φl5m60 qhSy_0T P&_\G|6t/vo>#𧻓wtzvwv֠ x{5淀W{?!U'65|cPtƗxqtFчb7 &0 @uPswwW ~>0{0sE8:W8~`~0anZ{ APm'[W @%n`xpVL|l1Cy!͐ 'MWx'n?y7{vSw |'hs0waXyH?8s:W{eT4;>7PmP|GmIaf$S1dRTyxsE}w `zxwN(aȋX`H:zȐSvw>،!0r1'xbM[hPYaT0rWTwE(K7wɏH@?W{|({X= Y>w4s|s]Q{9Oj 刍myRGFu`ryT.먁|لAȋgx@w7i(s8Cw s3w7[:eWPh mb,9mر0XvI Wn<WZ@X`~ְwǝtHwshyؘ0z# \- P)(ֈGk|8NrTp>0 ڠ>p Vd֩9zz0~x~@!Zs yz~EX{)w~c1S-@NI֖D+iTVz M-Ez )PeZThIJ_yrIc'| P yxmٸY6/PRSu}+ЇzZtj*|)LU PF >uxj7J&@9p:x5cQ|PL[q :Oլ޺5?aQQ Pifn)wr)yPBMÚ ZYϚD'8p)yKѯwL~:Kj޶ } kWCD0۩F՚Y#;ʲر0۳!˧Hj窍m.L?OA[DzGM(P;jFcH˰ʳ\];cJOl4ak;YDj۸;[{O3KJtgKqCn&g On@ p }Nm0`p-+G;'j;Z@8cvn[; uQ;IN5_X bnP;ۻݛ K i6̻ `cKK׫K\`;O+F\e ,L\.L[<:_¨5 ·+/\Eyj嫲㦾ZnÄMBl^HZ `@_|9D0E{j j\nmqUlX1ǎ+$~b*1lWFgǛx|Ȩ\+{<ŝ|ȤY<ʥ|ʩˑo[Fkó 9,Ņ Tnrkʿ\O ǜɼƶ̸ˊ<;\͏|ͮ bUhZ :ܾ|g ?,֘xlLLȜ,o,u+%;E +LʼL < rѤl)-͂Л\ei6muh_Λ*b{Y\leԷԬMQ-FLպZH=1^7MN (iӭ\lYqǵ_a]c]z}|jmpo}C2}\`-gYi}P.cWݽ(j-[ >n7FL&t^a.=KgNڞ.L=@Ȧר媾RrװdfN^)-넝зJX/ NMqnhm^N*_2._˞O3"0DF_H?R_@/~JQ/ ]/Jn_Ojhooq?M[vleA~?{}kaO_G߬7j_/Iof?\/?dae.Oo__]ß ^?Od[?Y_xuoWYA$ (TM<|-j$&OFJUXdURI)UdK1eΤYM9u'LDC)ZĨG"IYUYnkС.l0Ċ3n1ȒΥ[]ys-(h٤h}Vj\/f1KD54mSPNgСEό,ҳK:m.ѱeϦ]tӕlu'Nz`_ܔ\5ѥO}{2ԗ ތw[`֚s/מ7t)_yvz{; 4p?;7c@#.AvkpC }Q*dn;~pEG$.t;ѾlqG JQƓ|BF^G&T |B$9Vd%K>Ɂ犓gq"'T@ɈeAμNVqe<֧ v-n}8)4`29)DVC!>B".`@`r{2'&BP&P?Ih }!D2XIl$XT%E)Ojb|.TrJqw&!ai.Py^r)J".%v`H}BXpO/ B4ai>Fa;"Ӈ(^r I0ӇFW9@PV@_mPH%n疔0S@&0K\ u <0D4/'A'p4'>a=(,9EJMl$S!EQ$C4/^؈ q)R1%$ <-]lÁ H0C[|]3" +:B XDUZ^"5KZf-9 % l#( /YK`X$e76bWB6LhnO\qO} C̥- RBh!نU._&ٵ,C0FE~" j:pYX&P f^=sdfT]E1 ~sf$99$3^;)Jݧғgo,I46CŨN*NL|ԜuH:镄uyBR[ QhC(ScZSc$&QOxDgBd(1+׬m$%ژF[!U#'%|Ő cLl`* lpIa[)<+PQ-ph`2 tֳ 4p%%_TbZ%p'h(PL@$[ms%ԇTB =~#|cڈ tVۏ6RAxՃxɛܸ%@I }O+J=% Pu+X ()\Bl-K|V@y6T~P^jA~QVK/F }c%~Iǹ;d ֍Fc$C ucIYĹ'E*F(Y2ncѸj,rxcB(qfF>Ԭx3g,M8e Y=e (h Bٜt H;ny\|Ȥ-1rVYѦypy !S>@`XD2:!o|c}1!]Ȣŵ:k^ ,5,mtch=6ֶ{o͇:ܽJVMs;n7Mmy_;۾wo2Mu8=Nn;$NMgv}x{Kh_[w#\uI~\etsO>CCoz?W_G]ѣ]J;C?>{<`@=c<+  D> |@;A@@>ݓ#A @@T=>|={#DB: ,B(&IB[Bs@B./>Aܿ23L?0lC|CC'C<\=4d5tA@ D8BSA>B?,@S &? D]aB :A#EL9 E:$?]ɩ4I HɛTɜJڨJ5LɑJ@h|QJLKYKG4J˰KK%KƸ KCKK EaELLnKPIKFwt˔aH̽\HPǢL ͟LJKMtJL8kͦl۴ܴTMdMγ tDNTΎcN|؈ڜNAME?@]GA05ԮXSF<}BԭE]J%QL M%}P8$MMN=U8MU;-UG1+`>V[-8SS]%A^,VPabѽyUUmV{V_Via%VcVRU\^q~VceePo 9puw5rstuvx=9zEd5nMH~e؆=Ń%؊ո| R]E؂RXhՎm?-XU3ؕX}Y" !HEyUؚ-g;Y)ը؅YE Z`ڢV X}eX2SYBPdب]5Z=WL8ZVZZ [^[-۳MصֶUTMݓ[nB&w!۲UھY%u[FZ2дݫ]ܼڽ\e {|hTͥKܠ Vڢ6YʍԵ8 sݸY2ƽ]}8]4]eM\M^)B( ]޾^W E7㍷\",0ߗE_*V^\׈օ:wK,\a'ZZ^QmA Fަ(x ǂb/o` W0a0a@a^[amp6ڶ,_XGaW ! "n7#Fba()&UbU`7$d:c4 &\Zb.&9.:^e^>n 5`Y3dHa:n_ a34`JmULMVdNO vbe?G6MT^,+LE^v/2VYeIdn*Te9Nళũ%7GcFfUff.` iDhCX*4fov\[^%ZsrvsFdjic}gihhhhhhhNi.vhg!۴g n:F#^R-a&QViFiNj^jnj~jjj rVivfQ g`mT`\)*ɗ&jF kkkkll.l†3inj*f8k tw_&``i꡶뻖ˤ~ kQhlfk` oVav2c>mvRmnnnnnnjjo xb(gчj۞k, >fu&rl2F:ޗ >p'Mx6oJo&>ed}E/Vn`Z5UZpgnpCpqqqqq7j&g-pgOg0^.hdVqcaq(vq0s1s2/s3?s4Os5_s6gn6l8v8ofI *rl@԰dpTvr^7Vn"C,ǘza|rdnN !=l@g6ޜ_kzseacu=t`vavb/vc?vdOve_vfWv8hݕ VbV@~]ct[zttb)Kuxwywzw{w|w}w~{7px]u ?|vT6 '_BS*`"JsGvug]wwOy_yoyyyyyo &׆`lWBOp҇F(`%a*ZG'U yIѶ{)y`zu{/{?{O{_{o{aA6{/sj.(z5zpm_n iu6ζjt*(AzuoI||}}/}?}O}?}hv}ן ɶ6pxoU˞QzwgZ*R|ix|~~~~~@0#j'?wd'8&On9_|ykR6a"A}3M5c&%˕pJ"G,i$ʔ*Wl%LtЬi&Μ:wSߎ; g$苢㕋`&QfNyz[8q߾mۦmZfˌ&l-YR $xIBB}huQ c*xQ#ԪWn5زgӮ=ܺw7pB/rJ2u4ԉj\ͺH.a"{6mm2:V]}w‡%^x.Y&Wt9"(PCF` J8!Zx!j!!8"%x")*rL!\OQuXiG,vܑeZjyɅ^z걧{`!1=~bA Uh &E &q9'uy'y֙}' :(R2ҨT7NWݎ=zvB xnWy5^^%%V҇ec[(f -DCy&h&+ ;,{,*,kBJ;-Z{-6EQ5HcXuWwFd,ĵ$Z*_Waǘcꥬ*Z 0Ļ81[|1k1{1!mL%GQ`[դXkivnxly yt5^>Fj|oLJ`-ćdZYYk5]{5a=6e}-6m6ܚQ5z>1S>[nYx~:ϣ> S FXW]մ!#!*T>:饛~:ꩫ:뭻:!.;F̱w~cWdsnɫk{B~ pdK3=AJbu r>髿>>??~z꿿lo\6a<igKH|Eqު(K0}|8a#R.|! c(Ұ6!cx6>!(#X ;!o^"pZQ mh\2P.{½P,n,!(9ұv#=y)A<$"{U5 ISbZԒx^; EA)}0a[A31<Ij'@*Ё=(BЅ2{CD#* )|G6qI.BTwDEqjHW4g$.vqA9\<|泧'P*ԡF=*Rԥ2;T*թRVEE'uQM,#NR-:Osi;Mw2K0lzPS~=N+=,b2-b'ɾtKF?) |e5J8ja1RJ8ATk33Sbyny┯-p+=.r~}n'΍o|m>&y5 )֜Dm:JU2f*O26-~/,HBu3~0|PQ{<70iy3 /Fً>XN׺2]H^6/s>1,!?pV'G /\LEx= x-O)%]ԛb/q`44L5V01:9ӹv3=~3?~t#m[]xk^(e+%1E+6)aJ=mvs|S8ծ~5c-YӺֶu]׾5ƣ(,Ҥ-mN 0Xïԥf-q>7ӭunsj)yӻ7="*lv(Yl͵g\,q583s8Cq*4&?&EQ;bfQH8?să.F?:ғ3N)SV:ֳ>utI |՞z;~~.ӽv;~.٨u R^RgmE<0o`s3>Sֿ>7ۤGyv]fo&aEw(/ӿ?z[v!,v H ǰÇ#:4F$,q2[DZď CIɓ Zɲ˗0cʜI͘ sɳO'#QcG@*]ʴC7JJϫXt2 oE3]ǵٳMV]˶[pDKXmnܑ a*$)زF*,4l8笳;@twIi2bU߀|nVmU_1 +, ˺.#v0cmhlvTx"tmx|0tt/UǴqeZg-䔓}'K+..\褗n騧G.n>{ ? v*>W6^=>c-PmcO%y^yٗo觯L\"ocĄv0x!KhD ɋڌ+Mz] C FHBF!x)9k_ gH8̡w2A@ H"HL"w ®nsV"-@MP=AYP>vïod"$ O lkJvG8 IBFF:򑐌$'IJR2d&X=QnQX+^Q+:17_`h э|@R&$aM܄5J0L2mBB8Ќ4IjZ|"MGn2X0Q3Pmtы۠4!Hu~ U@:#hHBІ:& @*\Y(6 z HGJҒ(u Җ0LgJӚԦQȩN+Ӌ^! hXD fNR3-K*q-3ӈF3}^9KH4pb$&_t$ 7B,pQ9m͝!?Zj5AZm0 Cc }xBQ8@s ,wx `Êx_9y5;_`^y7SiyGyf)F K=QM@>԰cAڐ8ro)ȼ5?v| }}|>:#x@}j_{>>>UXqN N%udKh'0&~Y@ R $hP+ '<q|ao?YA a9U70nsx@n` {Xx9_1h6wH ` cv |GbunGȗ|W]d`$   -9C8 ZG<>@<` @7wp> ?`360u>8vPv61x>y>0K?8@zW 'džm n{ q#fww|P^X s0 1`Udh6x[e~0WPhz({ u 錽(vzO(pvchx= wgkgft]討XoxYTUw ~HZzXzW9p>uS99v'[iT~6]ȓzwYm7w򒺗>07mRb?xHw`bPh6H?>PؕgLzuh7{b gU֘Q7:Up hݨsrhfsG瘎}i  ʹ8 @t#< 9vE09 L7 Yp]7{2w@0ZT cf)9Ќ8!$Pxy6h Ȟ`({؊)9p gPfh;U-S śq|tHwWĩ**^[%Jޢ YH6JqZ칔Y~Io:U3M67I:m|TjXfvf൥UְUॡ<~ %Н]`Ewu= oX$ZxiPѩٗeUiA@{+@zUVۉXUUݺ-@Q*tY fŬP U *jVWXU"JJwڠ\UU+ Van+eQ**w孉ȱcդۑRQS*)i䘥8+yHvGpXIM$-F6ۖN`a뵰I@Q< {kUzbĩ#d;t]f(۳% ko^0[;U$ Qyk&⸠p[ np5cP* +˵{(?hA[wX{ٵ$ pplZBۺ8"r;+kh{kuĺZ[uH|CE {{ J껾۾;[{ۿ[ڍ⛩tU !#n%dnafKjl>^=*g~ymNon䀞Y䇾-C(N:>=>.yEr遞.k^}B7u[M^㎮.칮n썍`~b^Gn-np>^>׫~n|n=ٮNN^/:MNnN .P웾~e"/$_& 5- o9/%@>GIKoM_OB5S/QY_[o]_aceUndjoC;M~vkOmyxu/q>J Oro}ޘlo?/ON?RO|oO__//\?s?Dh$?t?՟/$XA .dC%NXE@b$LPf7uK<E*U*Vbɒ%Ж-A%ZQIrR$I(Ut S&M8u TWaŎ%[v"ӏ!G.:3.=#49ڛpC)7cK4#cA gqǡj IqH"%A GԯH&T E̯@'|J.L@O4sH,Q3ی1\M:KH%sLrJ??|qPD ,-u4EdQJt9+KsSPo4@C5Q=uR=UXGsXkl2m/\'ױzXbb5Ru6(fv/{ICiv[[w܈%\hWѕ7!uQ≁\wR"Q(N7`{@- b.1a3a(%,.cKށIX  dQ^ b,l 蟏OBg(NnjezZf !gAnAbЧL0.`k:ch }P 4C0 *$ BtPM؛6戃 7<1'soz/]lU;VFB&(B 0Xa %6LJp6`uiz9d m^A`` `W=*Q@1A}H>0 (PA : @H1Nd}9 1!B@P K !qAv(+ reR"q GAPܠ@/yA$$ }4BD a{aGUA3rQ#kXS @0 Ib DāDL "$GCEdKF}xfq=M|r h!a@r;P^YX# Q>jI Ȅ 29&H,0D Rk%Al (#ш@ВnP4扦jE.L6bڋvD' )ƹKH8&e!r#vFۗB# a?)+HjQx cPA. )Ngj"12auE()RTp1`}Wڳe*X1XuTi)՚8I oU3UAh@׾%YQΖΡQ\ҵ|>I4!^~fTLm*jӚh0G`N%Lhp-e1X|(LJش0mApO̸ irݣ m,׵jP᥉]; !bxB(!~D@|1b@$w_r#{?} r4pV?# [ 9 S`b%7mlCLg[X+nBX1Uj `Ǡ FAk }l9K 9A,  ƬJ,Ep!5 bv~sFv9XyV4t?g* A;YP<tC Fq6P3K7,!0Kg%Op?qd pN-VꁸֲZ A RU KtZalV:TfSZ65\MZ/V 9Wǜ~t#Mg$K>"ych4o76'W\?ɇqS818NgWp[Z"-x'37q4tŕq|5W'_ntw`uuSev=Qշ"r}i:yK_sxo~_?w4_mo|Sg-/{⏿Yy?[k?>?cԿL<\>+{ 4@ ً,l@@@̼lAQ@@;L="@;A\|!|BY1B>*A+ B,B(BK$@ ?B2()A̿+d7D3Dx@5TA6<$8LSD!\L$41EVE;C `Aa Eb,F_t@XE&ftG\;WDh ETj c,mTntogN;dsDktcdq rw4pzT@4|,}~ Ȁ tCLELHX9lD4HKAuǍ4D:‡}ؓXhNh^hnh~hhNhhhxeD.V0}g9"_Q>Nm:hF,)Q۹ghjj.j>jNj^j.j~jfhnQ0$ } niie;-g~gikkkkkl..ꞦkjjZ߼ /&k] |^_ZiiNm^mnm&lÎmnj궉K`rZ^i<{ɕj뚶ۖkӮnnnnnnタ.o>oNl^lejl(i$ևЇw~5c~*R,nnnnppp n}@o pn}Xxe}" \TmosܴKڱ3,ae1p&mOr!r"/r#?r$Or%_r&G p(Goglqo3}`E^qh<>:>8p1:R,Ɯqs?s@tAt<>nm> @>W ʎa1#eqSZ_8wk:?;q'tWuXuYup[^nt,W ˂X}҇'m0k3W[F5`p&8IuU_uVvpwqwr/ws?wtOwuGw}uwp!Gw~݄<£Fio.fNku89uT!nxxxxxx&y/Eywx PJfovƸv]F)։*almozzzzzzzz7y sVwt^2(=tMe&G+#R?q/_zO|_|o||ȏ|ɟ|_zupWuYPړ_8[p"&N1'wnq5Pba)v|/~?~O~_~o~~~u~'mxWWneq{0nM'sNgo;}z~&,h „ 2l!Ĉ=ܨh"ƌ7rE"E!$IFBʕ+YF9ugBKET,kOuRQ'۶mڦE̘avْ*)O0Ih>|ԙ㦍1ziɒ%&li0Ċ3n1Ȓ'Sna$̚7s3h%GDr%e{3N}|zPV?cLs)|?ʛZ*V\-3FL,Yhb$->}е1|i <׳o=Ӈa4? (`J&q@_5F4!4PFoc pC5%qRC:V%UW97.Yie]$\x7^yEy$I*$M:$QJ$ Zy%Yj%]zadjdG,O$ yNh\eŢ΍Uhrc[ȝm8h{ y)j)z)) az***Ai7Ewlf$թφ!n#>ǭȕW=75Bjcwv(J-;.{.骻.kD/cVޙhZNkYa#qx e-: R+I: \ro]sh ;:2%|2)2-21lBe5,a9/xޔN p`' ,}b/BW1e}6i6m6q݂u}7ys{G ztң*u> .1F)nho-{5إ~:ꩫ:뭻:>;1Ly;9d4Cnћ{Dp 5N3˂5)VuV#5!:髿>>??ès~ǯhE;F8R(IjsX*anZDuE;! S.|! c(Ұ-r>k-H9 dt+ x8a%XzBV,0+PρiTyp{%Ҙn|#(9ұv#x!~# )Ad!]<%VMDiՈHmq+]\Fs601˜hͱrs |%,c)YҲ%.s]򲗱!)a<&2e2lbv.= $5ġ*:n̢E/>k ތJi |gU)yҳ'>}1S.ql(6/՘W&W^sۛ58Nu'ln> JPrV+-s^2,1f25Yn1,Y9Oxvs/)GWFMT%['Jyʎ#-ISҖ43MsLx3C-QԦ^,-[AfZ>HnԎ&sOV4Xa>6e3~6US־6mt~_VY>F%Јyӻ7}7J緿So@D>'NBs0-򑓼&?9S򕳼.9.Ӽ69i.SB6^E%^KOƭَ{9ԣ.SV:ֳsTy.|<r '%:|tA?/׺V:k~;/wz3ަg[ֲ}1tnJC/ѓ?=Sճc/Ӿ*y=8.s^<3>G{S֧]wޟw#O>ӯ?/g?O޵lo]u]q%. 6> FN >`fn v>bR5b`U Ơ z f`nj5xҜ !&.!6>!fAnM!Vfទ!,v H \ǰÇ#BGŋ3jȱǏ Cϖɓ(S\ɲ˗0cTH͛8sɳϟ>%:IѣHV,)ӧPIU@jSү`ÊTٳh^]˶pʝK.Wc;lڿlKÈ+^Mcnj˘3k̹ MӨS^ͺkYg ˮ)۸ͻ߼s/dݠ+_μyDѯKN:즳 aYmLYӫ_Ͼ=,˟OߟLmut{풅07 6߄VhUq4 {uD$hy全,0bh8<:baKڴD޵L~c LSc5iXf\v\ʘdihly&Fd W!dD)%')蠄jdb袌6(6'iQVtY٦1Lф*唀rjꩨꪬ*무j뭸뮻dD@q1c6L4j4v+nK(覫+o&,S(2mL0 C1L[mbkWlg; ,ȣj&P#0Gl6.(p?DmH'JSPG-TWmXgm&2}*E \'D?p7+"0=3A߀.nQl7G.Cuicʥ,.7t[)7=O3)rxޱ/oL\7G/cbcfu`wK┎c0.WxB{|㞻 H`$:'H R[5+2mn>a; a@g6MfFB>n~= F- Dɼfb@ԟ H"HLD&&PH*ZX̢#.vсͻA{خR>N}Q!Bc/5 b„F\bdk搈LK@F:򑐌$'IJZ\&7)/2pySeAϐk ERn2)R3d >u.K^j0@bs L2[*\Yf@Mj*̦6nz 8`&L:v'@zR|R;FyDt=ye,fx BF>&JъZͨF7юz HGJҒ( 1tp9(QU4!L  HPJԢHMR9*,@FҌ*,:*4=m1hMZתV"dWLMYU'7*WU$MYAHhri!je{E@tz6FKҚh"!U@+{b'>` Vn@CjKWLXD$0NMB.ːnvchC0bCcKE FHByݚlnu]vCzLکhbR)}e+݃7!.`+ [BGLbS| D#X _?VV_q,R@2[NAh 'lUNlP E.{@E.^2tdH9UC++˂BsėMOts |$w_n2c)r0M3HϺ-WCa̋63YɇBt+3}ȹv-dTT07@i$@ C4 t\pQVm渪eumL0QL4~61fs`>"60C$?@½@ søZY kjzu&6+H1MЛs&|cTwv *Ѕp| HOz}|918#Sxp@|x>.>qFn4akk&H-;h$`3=i /yAozX߼M4$ӛMl2 ƃq؞m&jYF.}w/bG0< `"T :A:>uWU}` }`~p}Wzqz f zcqv^`nqfF&Gwvr- @I0`PϦ` m ڀ ӠW^Z><` }\~]7wp> }ڷP80ppppݧwVt>ІV7tHxwXzhe'{^wn1w% V6l&op /|0 - `p$`tVxІTtQu [wpˆgp u^}q z}X(8z`0m{veb.Ckgg8]W * DP`À"0 c\w 0y@WWMzwu_`gw y >>pYPo٘1xvvH(#X!|ķЂx &- CJCEQ pc8ye "X7`~= q9uvpu *)Q71Q1 h(nbU {P s/H'Py<pWie~xii~  `Ǒǚؐ puև0yۈ4iv6kF{IU rwu p @@^gpW!h$?`u yZW8ur8x_v8QHQ-OvRlW)I1lx |^pI șE i~DP}~ߧ GWZ\h*0WYUZmA9PQ$WT0Mc5hIaw5,y PZ % 2Dx `_)PZ QZuɓzL2y8f^4U^!U^K AuΧ+tQZJx'&jff8J)"%  ` %EjJЩb˅9Y$jj%zD%)Uz/YN8{5ZJNI`'J%ZNQOت(ֱk kb KQ,%#;*-K%Ԝ6ˢ ȳR@ 䚰B\I`4{ʭHWlF^Z+/aNpKqdLgkKUm;^o{`˴M;dvKߖ$@z+ٚq:Yk;OQ;6KH=۹JڸeK7V [EB{+TKfn[ TہRz2˛ۻk jہ:D{{Kx ۷Hf [{ۿ<\|LfۜR仳֫ |K;Kg<{ 02<40 :)7۸{}mM۽(ߝӧ-Mݮͷ;ݺ- ]Ы_m.w 6=^­^-=X)~-ڍxM A~û=NCF̈IKM.= 1NPnD.*^|fhjmMt-3|~p~سev=^~l.剎~g>iNB~鈞ֽޑ=ޡ~Mm<ޫn~ߣ-JN^ᅮ뽾Y^ľƮپ~>&^N.>^N_.l]>n(V>n躞>6.NyҎ>n瞎n~^~_0O79O;=???ACoEGI/KOMOQS2?B|^^')/NShcnR(6/8xzcpo~O5?څOtOvV4/Fݚ_ꇿ_\Oܠ? ;Jo?u_]___?_>M?]؟ܟ_|/?;ٛ$XA .dC%NXE  H&Qd3F:xZHҥMF"*XdhVFA%ZQI n1Ȓ'Sl2̚7sSWaŎ%[v"S E4R%K0eҴS'O}>_:]-ոWj5cȑ%O~8X-ԶSZ.׼^)&]tXOJ}[U.ֺ[=]mܕ9UmXkŞe;]qө gnsơO^r̬s4mŏ}ͯ-{ݜ/>.:3.=#49ڛpC)7cK4#cA gqǡj IqH"%A GԯH&T E̯@'|J.L@O4sH,Q3ی1\M:KH%sLrJ??|qPD ,-u4EdQJt9+KsSPo4@C5Q=uR=UXGsXkl2m/\'ױzXbb5Ru6 ZQ8I}ڢՇ$(lj0mSUlJۏz <~(!Ef͵!t wyhD P^Vg]}LW߁ : qau0McD [yWi(\Y0F-(ޙ1Vr=Zʲ}}df>Y"0H!a}tAn'iL <@ .QfC 7h }P 4C0 *$ BtHmM{D\ O|Ƴx<-\8sͺ;6Wu,@ |b! rG4k>c0B '6LJwP8u74V@ } d| }zO =@@@>}A<  bhA>'ڐNN!>PHd Bp- drH  6mdaf(rE} (%.! ID`$2 E`Rth4}/+Q rԡ$]ׯB'J#a.mjX&Q:jW Lֲ{.4 zMR*$DRFZXC ӘkbZhgG1Xmp,=n] hC0 ْ]iܐ1ES Z*H6⋼_eAZؙ6p?ф&xKzCeXqf@ h#x2f"1o|!(fXW a1~L81I t DA!/ D<|X0uKfH*Oe1 Ь@( a jܡ@#@r,g+G= >MCzCoGhyĒ<uc A1]DWH< 0 nr‹8;tr{\-Xg г>nkbA\`ŀ D65BVScumKu?@m'<'#( )1*"붬/yж{#:EJ,Tȇ@!hCAzь<+f8+@oBW2zUA[?zSN=a>׳oUϱ :KP9v}낏{+re\s{@u~gԫ~f^}?=sߟS]}>?~Y>N⋽>k;~/oCjx/z_G}SsSѣ<{?ӻ#=ۿK@c >+=@`@A#@c5LA+ A0s=?AAc @<@#@$,%@{?"@AC+; (B ?TR5T U5%Y Zů-T]U_`]B͢U[QM]NWXbcUVlmyVDUQ ףWkU֌BWVO-{W",dSl59H |FuWiWy XE(X<8XgoMX\ҁUuwM=E֏MR{YU`ՓMYBXYr-RY T]pEYUZ%-T(ښVL(لcZuڎږ җZجMͭYkBrڠ%ZXBZ%TGZc5[[֙\$ۨٿKh[ջ֠[E1[R%6N}̍ý*Zܲѳ=]@5e]9:5ܹ݄ZB.]U]ʵ\`]ϊ^%]] ^]]<^m-\>rMI_<A m"^<"DZ;``V+:``14- N93:в=5."/~ LXaqjƠ ֆvZaaȥ !n0b]$n.]҂-aߍ\j ] -ᬓ-:_2]NVXc b8bXӇȻ:m-cc޵?.@bBb]aR;mIvJ&D__-dPވr =be:E+[aQ>Ia ^,a~aSX/:XefY#j7hamhNh^hnh~IhgzMtU9b$,=\d6r*eZ|g}ggiiiijj.jhNjiaсY0 x_%f&9Ln嵭3,,"Y+雎kkkkkkkki~HzNՇj jj.vB.=ۥ:nRnk~}k^mnm~l^hnjn9Ğt}l}ɦ } bj=KínJ,mm~Fmnnnoo.lNo^o&6lVlIvM5%,fw5&^JkenĶnnip p p fo pk܎j& `\ Їi>ue%\;=BUؑ!f~p#?r$Or%_r&or'r(r&prkqqN`8 Nnjiva&̎m->kyi!r"s>s?s@tAtB/tCn}mE_tr-ĖHے@0n0 lL.qZ!Ңs&HpsCuZu[u[ׇ u^n6. =1tΙ4OnWC6fbM.ϞI,Vou<Xwr/ws?wtOwu_wvowwwv^w ?ruUZ{h}XXgvSn6ߡR$J*vȑ:;wWxxxyy/y?yyroy7=|wt=c_ d:(oxOPG΃snR)zzzz{{/{y_{$qvަyypׇ(e#/ugXFiUʡz||||}}uO}`/Ww{} dJ͆{)6B9%"+:&Aqzz|ȟ|~~~~~~~x/to&q+@Jo7X>cՇ8'q_h͖#6l-YR H O7mԠ3 ,YbJ*l%̘2gҬi&Μ:wp'РB-j(ҤBu0ecD&a$, ǠQfN}ZI%LGj-ܸڊ/^}8q߶m6-@cƆ C(CO#6ZT9xR$'GVi4ԪWn5زg6ܺww£JZU"x5,>d5tI&Ovn\,1dR1]TP7wH6 x * : z Zx!jyT!&1bKQVsIWVuha][o]%^>w:gb. 7_},BQFhY%]z%a9&ey&^"m&q9'pxK*V]c-bٱ>#wU^_dz^A%K|Gٓ]4%jptegz%*:+z+Yp'+ ;,tڞ|2Պ-F7hE#7r>:(@ iadJ24 Bu̡FTndV{/// <0 +iRwִ՘袱t;r˗Wmi Rb4q3=3A =4E}&ж4ӳ4V> qW͂E1f7.hkcR:$W ,Ѡ%R|7}7 >8~-@8;8-U-1/ÈpuǍ#y$K7CNÞ9)CnoP}U7E/;u; ?<<+<ǐ&K%^գV<Ņص>냭b騫z*Ҷ}*ID5rOʽ/?(< 20z #%UYjĴ7Ts(HAT(JcTDlBZC.$%\Cdwѯ~(!F<"%2N|bo@)RV"*|TTٻ&qOk[EHBV"'N C:M}YO0eՐS!s(?Lg;!"E2|$$#)IRA3Mr$(93ajr11j,˷;z21QI(†s2gGe2|&4)iRּ&6L&8)q5;gvGs+ sme эu#Gr5&Ia 1#*щR(F3эr'ґ4pxCe;5Jxo3C멨{vg. H@0!Х.N}*T*թRV*VU^*X*ֱ5:?xrZ+F;8i-my0/ GaՠG}RF62},d#+R,f3 ygy;olK;繇Tn_]o },D^ӓ˟1A]F`!aHa{X2}.t+Rֽ.v+ "0'7?!V־rsMEv@,W6U Kָ=03~0#, SI /3 s64&{Z7"6[Z_V}/_ V{0 \!F>2%3N~2 (RV1GHC}hX2Ic7u,_Z$7`E32ҷ6#=Zxe^qmK:x~5c-YӺֶ5sk&D׾5-a7Df4,naOؾDnKSޮNΨ-q>7ӭuVw-yӻ7}*ەnbJx GMR#.S83sߦGC.ߖno-G{F3okN*0 gx÷>9Ѓ.F?:ґN3N:ԣ.<_,r+yxZsg;uw<;Ϯ󵳽n;.ӽv;ݗ>N*SSrg]k90׻uVc'{ݜS<3s*ѓުtcNkvdzdw3s=/wN3>/YՓٹʕ-_؃}4g3m㓿??G-K[wa{  &. `lFFU`,Da_,y1^y ` fƠ ֠ tev"Ҟ !& 6>aj ? !v~!!FJh!!bMa.a!a ¡!ڂ!a#>"$F$N"%V%Z"&n"'v'~E"#%"**"+>b&",Ƣ,΢r=(\)ba+"//+Ң00V"Nb"363><#1N#5v!c*6n#7v7~#889#:-b@!,t H[ȰÇʛHŋ3jȱǏ Cϖɓ(S\ɲ˗0cD͛8sȳu# JQ%g*]ʴS:JgBtXjUϯ`ÊKمYd]˶۷pʝK1ݫ_} L`^*^̸uiJL3j@àMѡ;^ͺװc۸sͻ߽+|8NƼз)/ ZسkLË-qћk[Ͼ~|Ε#Ͽ( b& 6.8^y- fav! ($lj(A 3 ~M'4h8cW@)DiH opUhaM j8.B0Aʋ0g`)昦h& @+=ER>aӥs\!K4ޞj衈&]AʣF*餔Vj饘f))YIu2t`%*%2D#+j뭸뮼P1ʰk&6K*nm Ve*W.+n ͤ;++BiV-'=IC]uMtڷ?0ckw ,$L'(,0,c q7m`ުW_|klH73,`|nTWmXg\s&`-dmh4#+) &Y6sR~.Ԅ+첋0O.Wng%.褗n騧:&:&c|7IR. K9#)b70Wogw3!o觯췯%mWE4fU.yK@^]<-̠7z F(L W0 g8CuCw^xu.9{c.yc-*`"E~x` L@2hL6h\/tvj2 +@K6 YDxC@I7XҒmȤ6I4x(GIP WȂ*V,gIZ̥.w9J0 0IbL2f: Є&*SElk:"DOPAȇ:v~4n0MqX< B0T}L"Y5T@7юz HG:Oa@=hBY裛CQt'd1@ P*T")fZZT2'MrǢX0ܠ z` X: *DvIEX8L}'Q$*QdbV16ST `K6*B$$Vu Mբ.Рz hG+u2a-F!k }oyͪň! Y! pK$ID#$1ZjS%;'E1[ 5xK}@-sVԥOM +T! [ Lhb޵F[Bx澸n8Y" GLZ"Ar\0{U2up0-lSmC~ [Ă &L' } "n B_0{GuWB+ $6js ?0A<&\oeM83Hp's^W'8sn_b꘷E*F *4 Z!H: wø 6tncbt8rjՊ:թ '$ & FA{LU&pA5D} i}ӨoD /cǻ 4+H1Mp[8s|C6Av *HUNo| 0y}|Qi7-oz#;xPo{淿͇knma\*ڦX^D/9۞D#Zt$ <0'8O!>Wr q=8|ҥC:c c(]>F'Hܳ"?进@;wA_@;P?+4 :N&tWtgeFjucz^7q @IZ7@` m ڀ v%tGtWtw<||@| 0&X` v<|'F|{|(P;}| AP47lwpvcn0LyPgPyP yl7nXgW[a_zaw {0 - `p$({w-NqGͧB Phv6GB70tv[0:[|7ՀovxIgd(7cJ`u3sHVW_Vj u=  D@0  @ %FDw ǐwUtr >ׅnp>F}H5wxhwæNc(QP{9Y0jj"Idm(zZFh Z tYpFpU|`(D t@vx^(lw&LsYn6t Ef0 YJhixlN`yZ$zqYgjY_6q`  s,'X\xnI)~Ao]}&sg9Zs I}ɚ@nCfc0f1pˆu˦{YvD z`}P;Z pn0iT xB0Ƈ!$ Dyrg BG|D0j;0ƚFdm-J$W!y̶%yu\_IqnНpw,I Ya*WZw~g}W$` =w:6!*`A@Hj0 Jic7Jg`ZoE %|ډnޙ  >P Лt Pq)PZWTcNNRaJňdˉT:z)pɁcɒw,jO%𦩞t{:iʨ Q@hCs(w])*_`pu7 ZzXP ZN WO٬QNъّrƦw)1f&J vx0cЮO5O$kTگˬ6K4y)x";-;xKQJHtb(x<[uFk^'[ UfH{Jǩ֊ A 51]K\Z|iKd&Ѫ",5~LPK{sfnyzK} BFD0tK`˰{˪K`L`պ۰%r[pM^P;yۻ\$ [z[R˻kX;6[ gyd;f;ּ۽F`AךG۾TN;uۿ<\| |1s+h8[  "<$\&L{u4\6|8&*LTb{ P;Y:JL%(?lH0D\8Jptijv(f\h|l|^ 򫑛xǰKK k~ Ȋz|<Ȗ$ [j@Ȇ|ɢt+\˛ɦʲ캮l<˺쾹˾0zn\a'L\LZŬǜ@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xz|~׀؂=؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ=]}؝ڽ=]}ޕj=Q̻ ]}>^~ >^~ ">$^&~(*,.02>4^6~8:<.`0,X?^AXCNEXG>INPR>T^V~XZ\~͑v|_nanc^e^gNin9y=!ǟ%Ax.zY|~1U~n.^qAmElܘ>ZnNZ-Y=мmŞM3m8qr~۵$zm+*׳Q}5תΊ+Ǩ۷,:pT+I^zAf۷6Q1 eJ%w{,Y=n|}/0O/h&@LkSk p[/kuhy13?&zy{蛽ʋ=j IncKMrQ#,U+.+|TƛW A?-5˱?-;.ǂZlpY_ɱ.-0f+V DL?c-|Ia[/tк5m+|*-Ks[вZJ߱m0я6[۸:0{_gk$]IA}X!!By!M6m-3FL.YRt)"A|QCǍ1bha tOA%ZQI.eBQNmN6[BJ0cдSOA4T…z!:q1NLal$ F0WDa0cʤYMIX%]iԩUfkبΦ54eԱC$L~ ƍY}}-$I&Od!ݺ""Dpo_mbUpuXB"e/aʜIgp@ $6 rka7|#B8*k C"!:::k盽i&#$PR" &,̳3H$TrI&TI`A"-.,<6TCL6'TF.i4#3 1PO ܫی!+rPB 5PDUtQFuctRJOk!J -,8y!U11[hx<%5= |p}P$` x@b d`16Uc [羵R .+/}dgK Fvrî яGIuCP;a}C QC$bxD*ЁKd"v8Ih]Ԑ= t\H!e aEY^Ka#P] w0a*CH6aG@R$d! yHD&Rp\# ANh1 aK;FA ұm)BR2] e3$̑!fG`S$f1yLd&Sdf3ES$$}-VBDQRcDЁowa ZQ=~˥ڳK^ү$hA zP&T ehCPFԠФfE-zMMX0dt>I::)NHf+}nn7~gd*tTTKejSTFUSjUzիz[jW>ꑆ.ojC9M J.EUYyM7]_N1A?UC.,elcXFVle-{Y>HlgH=VR;Lul-(Ns΃`;Y2}mWծOiens\FWӥnu{]fW%Ah]W%oy L _KZ>-\{k(Җ.0-c<ϨWc oXRO-Tv2 ܠFXp-|a gXp=a+$qMHFw6#GY؍;[ SVC,gY[re0Yc&s|f-@kfsԢ2!q_p1~ŇζkZ#YةpP,m)gZӛt=iPZԣ&uM}6fus{ri7F(U7еm _,%FdF#vL,Hg[vvmp[&w}nt;-unx[HsZׂ3fZllwBte7#[-zn\Ĵj[x=q\#'yM~r1n]rR8!C|mg0W2{Ľm|66!ng][z׽u]c'{͞XkggZ7d6W+Zoz,F 9R]-$z#PD~yg^|=yЇ^'}7^g}]oUH\:k{.p?u#DB˳Ѡ٬nx/l!?NO^~}_'`g~_~k;^9'z^/` [[ +3Z>8<-P*> >@@ AA,AS">3>y@L|"x> % C@2,C3Q-O/ EQER,ESIKDpI"%d‚;> S>LJHLLN,NFK4@Ց\H+ތD*Έ\ONOO PP-P=e\PmP}P~ " O,DˁKˇ|B(tt\8OQQQQQQ(P R!R"-R#R5C1 IedFL݌O\Q5L S1S2-S3=S4MS5]S6mS79S9$UR P PRD/eOAR}OR/mTG}THTITJTKTLL;TOTP UQPO+DERA%T5-ED)\T^U_U` VaVb-Vc=Vd%VN%UfmVg%UVHm5@nQoB]]]=Ƚ]]^m^}^(@ߝ^]^޶-^E^^ __-_=_U0^m_}_J^uM___]_`.`Fٕ]`_`` ` DJ`٢`a` `Na `fYaaaaav`)Ka b~a">b$Nb%^b&b(b)"b*mb,b-b%~)b0J+b3>c4NcV c6nc*&c!,t H)\!#Jŋ3jȱǏ CEɓ(S\ɲ˗0cDh͚sɳFBGѣD*]ʴӧPJ}%իXjʵׯ`DIY[=ӪEqRp5:ݻxF߿s),εyR8ǐ#CFreɒj̹ϠCǪӨS^ͺתg8ٲoڂ .eȓ+_μН_IEسkνwx1iˇ(WW+uykYF{_4VM3f2j衇Wz$h(,x)0(4h8樣Ŷ>*)x; bdA}$ه>|4$!TVI@udY|DbK3!WߘdihlG(p)tixg;ifIDdN$*AQdTo)ŲC,R駠*ꨤjoꪬ(5^wV) ֡)@Nc7)K a F+VkPɶv++R7Vf(:PSd7߳!} C1+& 7GoTlgw[֙U.2>Kc 7!3\(h"0-01HL7PG-TW4d\w`-ؘm٘`-$[Ƀ$䡉@,͕ .+u҄>F,D}tG.Wng9LH砇.褗n騏}{;ՙ@wm-P~υ;n<#( nMGWogw|/o觯smv۾g*&cܶխݼ(ig#ѐ恶'F$̠7z A(L W il?Vvݮzl[3d >!Ks86XQ X"E.` c 2f hLc6pH:1&`> IB2! L$+82 hX&vP@Z+>D G6 OPAȇ*WV򕰌,gIZ̥.w^4n0MN{VxC(ط]T0nz 89Ka@|V&NVb!1@< xĸLf qV}԰cA4ı\<| ׇxw<1-7oD^^r'D$2pLoC>5<C<uGypy 0W` vP0(fhfI|glV>HXeJ6(QJjY0j=va@(NF+Ugw։Ãwg' BV e T D%u`H[7Au=lVVtшGfu,kȶp Xfv5h(A+Hew}r }P; (0Yy rT> yjby ($Hvy֠p:)x](kqq jdE@yviEi`iuWw#@nGJhT<&xwyHZ]؀M'pc]ؑgʠkoYfcK-@gv=6\\ \_nJ i tT<0t `)QZJjkUjKWM[fITPA hrg/HdNY[yǏHЙjAzKG%o g+pu$QԥVzX=&ڈ瘎ىqjqj18Eb6Uu7VTTP 4J WKzѨ_jkuxk'zv,Z85U*yrx0c E5KZj\Wfy4'zLfi#mqid5F#*8z6ڮDɊ dGQ@FG\i:lhZ''jubR+ &cj+}k!q'$Q9nu.;D;XIk*l7nxE;T[fIn P"\*/U;d;^$@~gV:R[t[u4ᬙ&v Zg{|fUq`B[Q{RB0[;Mi \+  RyK۵[V yțʻۼ;[{؛ڻ )h{s00oŽ껾۾{ʶP<\`AFkoPۻ\;_ҙile[Kn*.2<;Aұ4ck`:FL>B;B ^jQGGwRŒKk;q ZvK:bƼjE˞nǽ{r\ǁKvdz4<h ,%{~|D%!-Liˆ| hȷȈ!QȖɦɶ{ʮʰ˲<˴\˶|˸˺˼˾<\|Ȝʼ<\|؜ڼ<\|<\|=]} =]} "=$]&}(*,.02=4]6}8:<>@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}xzj~؄]؆}؈؊،؎ْؐ=ٔ]ٖ}ٜ٘ٚٞ٠ڢ=ڤ]ڦ}ڨڪڬڮڰ۲=۴]۶}۸ۺۼ۾=]}ȝʽ̭fkR]]RMڽ=]}ވ1w=^T.K}&{;VXbn"VԲY)+NVI-.B[C-;R159;.R=JQC.R&aWlONSh$'fIQ< WO^9]f|A;ar<a_G(z(/T9y:hRhﴱ|yNCe> ^QBmD`Ýu*Ⱥ7I6;ۭ.h vԨ^~vFJ <ִN~V>䭡Dnc`A}HK % 5J?jyq>+pxڴlW)<i:R ύv$%KG}/["FT)>~:- ! οl H["_-%ο;<71<5O7n+Mb `*nأ9Y?:+[3:Ξ_|g#Kjt1-&`$?_?/$-NO%ަa@!h9gNW@QI@B`7y{}?_ίڿo{; ZT;Aֺvdn9D4YI١ [,4! %NXE5nNjD$YI)UdIK1%:\ ;a +YS>t &}W5Vժn]oUk0ad"5jӥH3 1`d„7*\ /f]%O\e15opM8uI1h9tQOVMedqaF3K,XHy$>xQ7(Laowŏ'_޼y}կg{Xg`Ν}3Q}5IdTX,*7}fhчaveފkr:":#,;:EcqFJ>sqǪ(BAL ?XCJE"DM<]bp+* ),XIŭK7cD*KB " :kqO>O@tPB 5wTth; C ?Ҍ@BgNH]O ٓYR$qqJ >B.Sa|U1YXP/2m\?vW~B;OC$bxD$&QKdbD(&Ib4 H)M'$!S^S<΍P%J~|S Y?dP4d3LhFSӤf5yMlfSu@MpfqwݜBӠrc4zMUV[αSZW!c1ou,$tdhCPFThE-zQfP^G=O(sIFW~ Bq/h ɺ~tQ0@UhSTFUSjUzUfUO%AUUc%kY8DD_Ĩ$d gGYVZ>̗}mLiW,B ̊ڦ6I-feTfVlg=YІV%AIEԦVT3[[oPIKD׮Js:БS\RaG2FbkCFV .R]W%oy{^We/xM`IW\&2[m* ]EW^Bʑ#s +&V.A]:Cag7#&qM|bX+fq]bۤqLҾ'/6W|+yFt2o+ k6s^ͅ0tYG_Œ}&2X0[wc&s|f4Ykfsf8ǹ9s|gRٕ!@' 6bӋ2!N[&w}nt[fwVR-gxvm! {vUtIEȅr]L¹41Q+Oƶ=q\#'yM~r\+gopo\3ym^Yrwp ft}>3َ..>|+8)^qLWƽu]c'{~v]k tv]s{.üwA&ve#<~M%^hcX3]h&X ? AA,AlN'V2@S43d@u!?+‚Ki@kBz:m(lx©K@LBMT-DODP EQER,ES$?,@#L:Ryɇce{2z< qĨeIJDjDkFlFmFnFoFp Gq $Es FTP UQUR-O-C@MUPD]Q$F.0 SNFuT\e8NU^U_U`TO5Ub-Vc54LU@dzR-5T̀UDNE]FkUmVnVoVp WqWr ,pCtMWu%CemW@ AMQ-uUh5Xej PlWW XX-X=Xw]XmX}X_xU2LzV/WM}XDXY-Y=kUX]Ymه]My-TXώXYYY ZZ-jeULZ]ڥYYzYYXZZZQeZۤuZeU}FWVZ[[[[[Y08[[ \\uVƵ]۶U[}\ȍ\ɝ\½\\5\\X\-]=][\mͭn]=ѝ]۽]]]ޝ S]]^-^=^M^]^E޴G^m^m^^^^}^ _ ^ ]M_]_]_%_p<߀!,t HA}*\7ÇIH"o3ZȱǏ CIIX\ɲ˗0cʜIe8s)ϟm jѣH.LCJիVjʵׯ`ÊKThӪ]˶۷pe[sΟ@߁K :uQW#.˸ǐ!K˕c곋oO{6 EZk[zװcnM۸sͻNȓ+_μys6 zZ>e_^Ͼ˟O>k*Ͽ(9G],mt>dv~q7TFy5.r(މ(,,G4h㍣ KvU_u@wކ ~h̒KPF)% LXf\v`)&ihll#Z<ޕ>Dy | 2PǠǡ"ZǢs4ڨFiVZA+P*ꨤjꩨ*b꫰*무j뭳qj`gw@KB6QFZ"&)-Ԓr3̶LI+k覫.L\+kbbkJJgA91C-UN!J+哛0.„-nl(,N2!4l8<%&ť5 KL62FI"w-s" Q]hlp-I4bx|߀G"BI?4BL)+UUMX7$]m^%IO.n-D/]8۪'b4+C4M?m98ی,JZ觏?CYa H L:'Ȅ(XT`,aG) OE< R9C", OPAȇw@ H"HL&:H4n0M@@@p ]grs! gmT6p8Da@VbH-K]ʐ1::򑐌$')I"y"}$CxHZlsX0ܐC땰,gIZ0 e2?|$X'OaP{a)G h+qIjZ̦6(DBT07I0."L/~d2h yz=EDhhO%H9ӲC{Le!1SͨF7Q# h$+H7Ih:*\砹X8ͩNwj$#/OJa =VvȈt°+nӪZX%@F|C%gQxT<%il2JçMȂFsDVW8W,`DA*i3]">=`W ]ҚBC0XU0F,֠) ʂ>*L#ATti 6>%I -u, !Lַ݄pI >@0=t_ nkP}dmRVRE (zS1 LPkt|CTov |G=kTd=mMs飭Ơ-dT=ёbӤU|QEl`K<~.:P(J`4Fd! WȬ (6{#T@.|PTD @JW@6iN–Gep`GL Iόf5ØmH <x39V@/5]L5bGWٿ&0 B$!ÈJ30oDİg59Cp@ @m` `V>&O@4?D! d_ "4~q4}980[ XugGߑ'|dL\}8=Ђ@=qvwfg| ?'{0|ejj e|vXj|| xvP dfFk:v׷o~c 7wUClWBW^lhv |@ s IVMg{jp ?tPv8o}!ep>`bncWvc&`ohhn_:d};$3jݷpZggcElvrqƃ[DFa' BOPW5P @ˠMQv}WsoGeoѷbfWjj|[VfeEZ dW }1?`j}0k^~6[GX`Q/qh  O 2e_٤\06qj{qܴj fZjlbv@}Wh```@Wgvdɶ ~u 0DYFy yM> ]ss'Gysj9Hw|Uz'{eIk)x WӍ 8`x6}U&xn?CyXO<_&s[w`s{HYzVjU&5CmgTP?cPpkHWBxr%dl9x:O=d C P%hDqDFIgC9Ywђcaq/~AECH<iO:AyFDH$DF+J&oQP,X@c88!axA(u7Q*zOP C XWD-CRDW?t*3jyɈac`?*3Ts0Kʤ_\jbDuY  O/їoN]!Q:~z4D+ZYeJu@QhT:jOx=h F:>mPp'ڟź_$)8 q~_4Yb9uQI0*w֥ǜ7TF$meQ8}h@UگMIj(|] ʦJaZ^qCxڱkK$@"G 5HaxX 8A'M:[FS![@k0RwzT[$J{P'V;d[MX;erKKHj!+9~Գ|Q۸;[{۹("k?s0pg;[˸i)Q;[{kQL  : ؛Yrk;[\[{˂['5 Kz+H~ѿQz%o$0"g\\$P$,!#\,+0<4 [8\7<;@B<į4qjDKLSFlHCTSO\QU\^`b@B=D]F}HJLNPR=T]V}XZ\^`b=d]f}hjlnpr=t]v}x=0[M{-}MMс׆}؈؊،؎ْؐ=ٔ]q# }"I!ٖ=ڤ]*G[O-Ċϭ'۾K۬}m=h}$܆[-ƍOKuSѭӍQH\JzK}1޶T޹}}޶d ZMG'+̾m)r>F!q%yK)s5!| >,K8"YMo5һ"ll S1> z'\lD7 ZC1 |&6IH,waV"%}{^ryF=ةGj0Fhm+ܷD5Aʧ>ܳ 1m0꺧!H;7K>[Ⱦ4^⽫ v'ڶFfk&' â_.+XC[ >-i c~>n;K[SXQJ>!<^/mk<ʲ Zl׾qj@Hh.ʍIw8=_罵n;0E71-`&@.084_68:<>@B 0FH/1.O,&Yۿ4lnm~TLD %n),M_/xz|~?I|s(:B0Ψ枈BkEߵX1Eَ'ޭZ#/Y`hlo'*sOv?_}_'yBwGV /dfODkoO??__B$aʕ,`Ơi3>5t &}K1F!E-deƈ %+V*R0IjD:nԌ (L!"d7`S-LLZUYnWabYiծe[jAK*ԦJuHcԸyF,z ȑDYR6mӢ5Gl.[Xt)"A|iOBEFӦQuGoW-qn[*^zu[B! "($}Q iH}Li3> mI5vCd+(Ē3K5TTSUZuU+p0`|(D< @R!-o3ɓN ZNT[pw\r5\tUw]}^uwr/VdŅz?)H<Ѝ-VcCR63fM4R*ɛ`͵MJmuPydK6dSVye[vpfkNYκ=u722RϜ%PS-'k3nQύc+A{l6lV{mvmǖfQT޿L_j؀s4bTTH}/%fҪL'lJ7tSW}u[wucu}VdVhPi3VRck)J3˩#@׮mskW}w}~뷿}ݝzMO-Jv ӵ}-l{_Wo_Xp {`'X f0o9OVgӝ,e}uQ'"/F:  !$HAѲadY7޴q]-k X;q}c YC&r|dKfrISNXU){̉ڵ&8ث`hOт0FK<{sg@ZЃ&t }hD9AetNJxD ڠxZc0/y#jxI3kaRyf cL" έ"){[І3}T 8b{x_'~|'_gwyG_ӧ~񱓽x35ۻ$lfz=f2jfўU{h @@,@<@L@\@${@1?˳&;3rCKb#5Y;5T3eۻ]Aܻ??AAA B!B",B#C?C@ DA=L)ɜlKDjƄT1$Cyʠ*JRҼ P ES?S@ T<,TC=T4SEDͬe67J J)SMTNTOTP UQURE,XTTMUU]UVmEESMRl;O'%Q]K,U` VaVb%SuUdMVe]U$$TչUUlVmVnVoVp WqUXEBs=Wt=Wg}VhTiQjTkyW{W|W}(MW]W?wxQWmX}XXXXXXXXYÃ-&bX]YmY}وؐYYub1XYLX', ZZXYMڛM?YC}ZZZZ=ZYZ [[-[=[%[Z%Dm[}[>ZM[[[[][[h[=Y-\=\-\\m\A܀!,t Hp຃ס[PÇ"nME2F۸Ǐ ɓ(S\ɲ˗0cde͛8sɳϟ@yzJ訣HZ4TƚJUUjUW 2lP\o/b$eʝkݻ˷߿ L^&+^̸ǐ#K˘rT)SRO:*֭Yv,f%NT6[s;v Nȓ+_|8IУKNسk|͝?Jڴ,\WwMYedwܻ׿Y'h& 6F`Thfvᇑ(1fw%%TUuz{eV|\u[je,L6PF)JAȕXf\v`"dy!)VMהS-"j2~{͖4 1Raj6(F V襘f馜v駠*&0aꩨꪬ꫰DJŭ^kh,oXitYPs|:tDcfv+k覫 sl&RL9ZyVS⯿!p|l0#\sE +Wlg RGʢV#XݸVG8<3`\2/Ʋ Ŭ'50nTXg9CE$ Y%tlO0mp-tmQD"I) r|r)A0R5.h-W.1D]f}UjucEH0a.{4"Ib[Gku6ڥfVZx,``7G/Wo}W&Gw'z+2_0J\/oo-|҈޸Zesl4"5GBG ZA<L^Ț;nt;BLGN&pCGBpGQAy;hC)F"D"$ B&u|j0I OH" 60ęc&pIf? PSFJA@ s@XHy1pH<%/XAQl$  @'uXPD':Qj<ȨF5w#L6!n~3$ xpJ4':gɇu&vDƙC;^JNc(JZ'ƴ~ @đ1cp,ZplPTS5d«d4C"%\DS/$`4)8 C6}7 Qd=D0~Zä&9PV&=IZ?c@` ]>$;?U=W^=a1qFh =&VS)ӟ!Aq U>gNS|]X#el[:ڞ@}[ x`AaW`l[vsP!n G40NA@G+^ (y9;NX3ӇD}4c}&.ш>Su !i w*oN uKzb_ :հJ'Ћf?v71R>j!NjΕu /ywIA "*3Vp[#Pj.GѨ&.!E 4&H "k"XzcUmW]}h7 O >*ijUְGhCl6W sy1ydQ8uj4N+u%"$!{iFDDh|o\`v=hoɵȁsBne'o 6W+{qԛj,`@F*}iq!joBc?9JA@lTR k_aRh U[z}A.J6C헴R%шE;:. 9t̏-};-bxlAT >l;$8!QtoY~ $oOl4_dqEm/-pw^vHvFjGvYevvkpG|ɇA $Pp' @@}c}(fGs`8MiLg9鍴If sH =)=kYiRى$@)טN?j"t/)ֹ{)(rWcٞϣ칠 dH99F֕L89f *:{Id/` JTuaq؛w8',ZFZA$ /*2ڀ򗁉]գvuȁx(z`KOƚ7*_d)@qX] _*zCgeij1hrJZ e W@|Z J:fj#*q2کTqqpWm -:Zzګ:Ċ 𙗰d`I,j TbizZ:Zz  ԩzAz*uZԯ ۰{ڮ[cOԙA " cx(; k#02K%c ۲4@B;{fLu^SR?g]A ѳO;b;PVK֨õ^;`PKr;VY!ѶtIz]{ kIp^Ӹ+jp}˸˹;v[K+n[K{˹H_{[{@^aF*!+ʾ++ #ٿڽ+ <\| "<$\&|(*,.02<4\6|8:<>@B['Y[-#]_o4Ψ7XwZ۪XlDf[HAڠqÇc㩌I F۶`^cަQh.<٥jL6KfpI/f'^Y 9ٗ^aت1鶡q.>ۤmBb^'{%J̜[=.| pgh }iZ {Xg~Gjr1-&`$0368:<>@B?Do PHJO41O/6^:Uv'٪JQI@B7+-/t/Mxz|~?z?O/-m;\P&4: N>(W`hl+./s_?_-J 8{-HњXqYj%pOB*/_?@Ooo F#*XgKÇ '6mӢE[f]b" FF0YP$ "Bvqg 1Z %QI.eSQNZ* nWaŎ%YIc"IDBJ0cԸOAIɓ@Bt1BC6y˖,V%7]HJ;%`@&`SpA~rpK.K0sL24L. qM6tM8$P'E4QaԎ;VVL!ը>Δ$)KP2 V8BAbnmvm{nn{oqosU,~a mxCP;a}C цD`)C\bD0Rv(,kR{8W^m3 N}`^:LucY'CŵXqVjkK4K4e.OT%hA zP&T ( dPFThE-P$,M N00&'YX3>14FJN/j)6̒eQmO&UKejSTFUS-I @fUa9Q)v5Z\OK39R`<%RyS]C!O{̡  k|&VelcXFVle-{Ś@lghG9ң+YA*g(s5 ,XT:)!%u`p\6ens\FWӥnu{]^nwkG:0m@nzSIRp)9NuZ)_^*ҷ} 0 ,\ fp`GXp-|a g-o=aXu&@oYK/emwP[=4ͽgCX(j.smF4_<- K.d(GYSr|e,gY[2cP0YEQS #ݡQƷq>`WtF,?~[`,['#a##Y`4hHGZғt-}iLgZӛcPUPZ4* R4ẀQz|# sk{ʹcbH_@ZD+`CЍ`vlhG[Ӧv}mlg[ۆ Jmp[&w6삅b0 ߕ9~*[=c&3etȇ4V#[x-~qg\x= #'yM~r\&onr^Ul~R[o +*w[[9]{} ; 4pMD]S/vխ~ug][z׽u]c{v]kg{ǽ F b$3fotR|kq=[]RH_, My-?lg^|=yЇ^'}MphXg,󻷘$s:o+mS{@ @ @ @ @ @@@ .A$A&;AVF0E #1e8@b8%\@&?'9(B)B*B+B,B-B.B"40 0l42?Ecty[c1<ݫAc,@\<83$TBBdBCB FaFb,FciE#>w,l<"LIDzlI|IIIIII&hHII J|ۼ+R |3V,GC< L(L0D$;GXZǐMwL NN,NS0Q1A-US=UTMUU]UVmUWM,TYUZU[UBN.TP?MQ}Uc=VdMVeMXUg}VhT.UcD_A `TbVoVp WqWr-Ws=˂.\WvmWwUEjUOVlV`?EW}W~Wt}Wv]}DzH{W|mX}XXXXA00XXXXILX\{X=YMY]٪؏}YYQHY$Y}PYYXYڡ´مYmZeڠ%ZZ5ڌDZUZZZZ [[;=[M[VW}[[[]X][[mĶmۺ[ \ۻ[=ܴ[m\}Oĝ\UŽ\ƅ\\Zɭ\]z\=]]%]UXԍ]\e]۝U!,u HPu)(oIFQ۴i26۸qGc Iɓ(S\ɲ˗0cʜD͛8sɳϟ?/ Jt(6)ĔQPG#EU_TX"`Êx@5tĊ3FqYHƷo]KÈ+^̸ǐ&iD˘3k̹sHCYMMFJj֭cu K/ A~s֬]==9H@kL A"z㛔h;oe 𚱶/ƷC$&0C= ux'KK@*HOɔHdXDH1Bf L0bLj>tc/,e8: (6!E*Z4&FA+1 @x;1*hcϨ 2ǢTbp-˽O˺"σx'0&r_Cdyj@>|`U_>6d&yZVG%76+?H3oY\ H#!u1Y@c6Br=9p/Bp6iS0FFhCW0T P$y 51NG6y36>VTÕte*ݹC26>z t@\OJS6dO$  RA o,>*J81j 1 B+cx+Xc,bJ/Xjh5SY@΁ U'PZQ yٲ疌rmMT&&.ш>cvaR@VZYT~v|ߌ@|yB5!HiVXN#[ri>g\uXy]僭oEǛ }@D<`hO$"^#հcA4qR1q| Fp>: lcm'` @m>N2٬eަ Go0&YЇ@+ɣE׹$ !YI~Z ` A4 +_ op/$3rgXOs 3;]T.l}U7 4a6}Ww_.CG/EnV|іo4"F4A޼0.DHQI`{8*4[gj)n\gc,ݑoUW%V bHl|2t|Hyth"P|Y@ Nch`tu,Q2?BbmPk K!pݑʡ-p i rKhH#H @C,xÔLT2A>[ַ-̲]fdĉ_؉ʟև pKSX; Zkm *W>ڰ Z jGqK9_Ls"1 :}Ȳ Mp T X,%N v%Pvyfb' *#H'behbq~Q99-X"D@gyvFD$dtjpvH8kH,uIIT+ JUs' b"'%'aur$a6.s^GQ)s?zփ&|PhpOh, j"! hx/P & ְ`hỌ5߲~0ArcbAwAyDt@}!c 's'cX#TOqPx .~$nA׊s^2iA6d~8烂:8mlhv9~?GQdSLG;BAևxPmi18)(qH4ux<4dH@HXu.bITPܕ=zS56W:i `Б ٓ>i,"Ř~j(=3%9#nDw1?ٕnDDC"6G˘-<~;8R)Ńho؏`^ٗ~Y`9Kh9; Sі pi1tKQv9zُY^ #9 K kٌH#İ!y IB0C)qCrs O9L2iIWz.ɕYyhF‰ i~ǹYXy i9IIݩ@#22萏ٳ3zhwW` L 8ECG 7 y0 +JT  W *,ڢ.02:4Z6z8:<ڣ a9s|3 ɡ衯Ot9&>Z\ڥ^`)J;Y@H%J*ɚ'Sh9Yp.Š~z@P9i:dj9Kɤ%{T^uZdJ*[j [泰 䊘 ^ʃʱ(,:$ ( -{58rʳ({kBWCy3ڭʴV3$mEK9%T{W;( Kn1Y~h+jo[¹w۶z;·s۵RZ۸bzk?{^˖ʢ۹+K,˵u빁;Ѻ bat;[˻;+tS+Ƥt~X{}Z{{;DK)':Y׋˽;:+k髾ʾWY{ ˿<\l :}{%̡+FL $KLi|^%\|l9<,,+QA,C{0Q,7LUlXZ@<#,_|Eceg, (oI!i,kLy|{|q s,uLwaƉl ől+ƕl}|\ƛlÝ|ŸLɡ?ŪLmǯ ˣķçL5<|ȹ2 $ʷȚD<ɸ ͙,ޕ>}}߸.Hm=Y,.n.8O:_9>>MC=L~@.OQ>SUW.N#\-fd^i4A~m^>h>׹BnSzN7|Cr焞5~M+H譓莎ڑoa^n3頞1>{;m~~笎euS괞/~^/돋>^n̞3[1κ>8#%[~~^B`qϞ_q0x`no/GPbacbO/fV0gWc` ;E9J B . /Q({%~p ]N<O?;P|s;LOg`bd_ ɾyg B; : 701 S&z!nc.h]bx%L@Bo6>DkP߉/oy@b 1>x/uE+X J0:o}1Pafzz(M5hD DXE5nG!E$YE;$aBE_0cԸgF.UdK,} ZQ>iq(xUYnk+[9M}9wR3PDP]yݚ! !saX 2IP"_ȑ%O̕ "7 98uV\%hFI"5*HP lE\Zo}gEȪ#&}R |bpŏ9A%KS!肤Re$ѓM>ZMh$3@S@IoGI0ED"$EBȆ ҠSTqE*A΢ 9:D(H7v ETrɒB,hƒAQkO6-h/HГMkdAH5# #H$sO>)rr,J+uR|]  XKL}<ٱ?ؖj9"8ORKO5k*R-}ra FFmT73+ӄ)P `H6*2 0-}cP]PKJ38/}̘FhdP!%.@ gDME!)% A9Nb 4> 1"ƌ[[Ѧs-qd4c4av@A{+yd 8 mL#01;; N GPeкqD d|d$'YK֑\<J\&h)ۇHE2R$%IIKenKh6(t ѬFU2XM@?yn+g3+unI#x 3mr:f-LV3X̰&?g9zѤ~5{-kBѺ]5hcC׵r*5ڹmag7z.1lW[أ]nBv֩n۾Ow}uַͽtsB ^2v;݉=n?Q W7-ofuq}qw|$v+^IlW8*^U|X`{(wk~91b=|?ٽKxTWuk]u\r]dx#rr݂,gE {cr/Q}|z9Gw}t]ʁyn|QwLJnC|g~<|TPo4o!_̇N{O'~ᱟ}&G?''iϚ};;*+>C= ?3qỿtT9t?ߋ ,@K?U@<{狾p>q 4@@, ds{K, >e!!h3?Di@AB $BL;$L%d@() : 7,A8%:T:=??l?@ 7C:$1E'CiÔFДK ByL1TM=a|4|Kԇ5M<}ЁMhŻ:NdbM?0YLNNI[ƬLYHN,qԓ LRrJB.O<߲KKM40];(?EL@,6K5xh0Q R!R"-R#=R$MR%]R&mR'}R(R*R+}R%N̨LHO,d<8(Du ЁQQR@%,TB-TC=TDMTE]TFmTG}TDRIT%=-ՁHD,CaK3=ьTH"jLӓaXzX YY-Y=YMY]Y}T}Yр.TiTkF$QĢX$|$\ bч(Ї،Q\XՕZZZט[YTzSmB&RMHjPTӂZ aPYW؍ZZȍ\ɝ\ʭ\˽\\C`XV٥C;t[F4ԇ[)U&݁;`ZS^e\yI]յS=߇OۈHP8u__]ma~aaaaa@`[uYOLE]ݛ۠ F4ھڽI MAO!]c2.c3>c4Nc5^c6nc7~c8>x\:c; b! kۙ`QL[b^tb\_mrK !,(.N0dNdOdPeQeR.eS>eT9cVnEm`jc:tM00U{!ߟ!`G~ d8N-]MKbhLfjfkflfmfnfoi~gr~%\ &edE^fbF\}r!f9tAfbeefgnh~hhhhhhhXbc6@AKA ۖpՈHN10V-Vff^jnj~jjjjjhja2Fg擮dEh?Fgm ee ] qY 678fdFhlY>lNl^lnl~lȎlɞlĞ8llNL뱮E ~Lk[+EyI&4 ^Ay뀍k0,ln.n>nNn^nnn~nnևTn6lfu>lm5Xw6m yNb%O>}qn@opp/p?pOp_pop'p p p p ngVj;o+Gi%.Hd@ڂo5o7ɥ8Vo!r"/r#?r$Or%_r&or'r!'r*rp^/ dhкM]qۦqx kqo=s>s?s@tAtB/tC?tDsjFoF_g6o,ABVq>dPQxsI9q|:X9s7Zo\u]u^u_u`vavb/vcole_v.lg/ktJt0O7tMSXU?nNuWuzXw|w}w~wwxx/:hgOx_xoxqjKg@WJsЙ63AuW5Ywgu9wxwyyyyyyzpp?zx!ѮYW' th2ֶWsx$yJGwNMȏfhwyw'{{{{{{{{r/|ßxrjv@H̫=zh(ws7IIyDŽTW_{}؏}ٟ}گ}ۿ}}}}ٿ~~/~?~sDͧj7͐fl hK$O:*z**z*s:+z+Y'd$$8㟀FS{곤C%:Ԣ'I$DTTGΖ䦜)骻..;/&+/[R/VVֱ~&ಃ6ihjEDUK!k.%|2)2-2('!05|393L0A4tZ1& (O'1Ԍw-Oڭr]{1a=6e}6i6e34q=7u}7B7j!o%]M;lQ=^SZi^5^k9{9衋>:饓ߩ:뭻zpe4 hD)><UkmBbq;uoȦ{7148&Vk-mՒ1&79< 2|  HP4N M}kV|;i~/y.Tc(Ұ6!s>B(!F<"! 33~B P֡ũ0* f<#Ө5n|#9ұHĥP~"aQmqC|$$#)IR$&q qPqA~a)+^qZlyDr%.s]򲗾%0+<&2eK\ƻ!.$ Jr&)q<'.u3MϏה WҐ'8*Ё=(BЅ&4 az(D#jxs(2)QyOSQ'?ϑ&=)JSҕ.})@љҴ6)No*Sa4RFREVIH´N}*T*U#V*VsWDAWP8ըHU*ZӪֵn}+\*׹5+^z׮` *Q}ڤ+b2I^#+UѓOؠ vG),hC+ђ=-jSղ`,lc+ҶQصijk-p+}m27+o+Uֽ.vbW܍.u񒷼=F^}/|+ҷ/~[zz>02w!,u HpA P෇۶imڴhi\јGb A9Rɓ'w\ɲ˗0cʜI͛14ɳϟ@ JthHJZSnϓF $EJ_*"HVhӮ#p#Ngcf$9,宿 EaÂ+^̸ǐ#KLe"2k̹ϠCy=2}*uUdMkm}k᷈֍,V# @ ( &p=ѐ GZp)t֙`\RVL8 e d@gELI裐F*KCE$`sn9PAx!P9׆hqC*무dH$i< tn 5Ewu4.hcF+L,!ۂUz #N;`4d٨OXc Y®E8mx}l,`Gl}, v c + Kl(I4"l˫>+Q] .)mL @V@kܭ[|WȻ )C#-d%}6d<`ƸC,DZ'|hŠ'W]K|xJP @3OcEzյ,_o8 nڶ= VeI~z,nK*`B"zY;SFeI[y>rm+D{*x"IC*Ӟ>?"LPm۩s0A.l.-3Wp},s+H1MO~vlS:H)Eh?| (La }|~JrG?#3 xp $3a9@oTXҕT\o_*Ko|娎` q Amp#c :PjӇ04qj=xog 8E .⋱`/Lȟ4dl_0~K\꣆Ą9pwpu!jXtü:l23ݡXvplLP0 dTA%,d٤3a.|Y`1 B];h4r%uC>x_17Lz._Or_B MA*RfE*Bw섕7 $qd,i=}K*Wܮ>_0qFjAD3;l?=—hhB@'ؠt2lhy-?Qe[g;AmЇ#*zU⯪m7^r5nXYJՃ,Uq 7@3随qUdg ,%^Yqvׯ-#` X׸;da jЇ1*B(q}Z{*AoUB,5.r"W:l-쏏Dvf83)"Bj$ p@4z^J { *emm$!8R vT95paoE/ît. C aؠ&0Bj;ө\ lU}KQm&<9~6P Gw7VI4b},۩&ü6@GC`Y$Xl?LkЖ1kp;N fZ Շi*PSXVKm 0,2QPʋ 0jAȡ0U̇+y`裘/! ^32ߘgZ4yy_9-6;6lè-B>E >=WS3ym4DpM/~Q R)zK@fg(~>B uݏ_0ukShf1]QQ˞p޽o[\HYA;j0@Yo y (NY k$'ICN{GBʄ ,:UP6* ְzv@>&EC5&WXAn֍cv͓;Bsp t_J>sѐ,{5H1V6'G =QmmVIDG3Gfi14oUVm8 H@|H?zTsh|xcP|v~5/ XvVx Sv}8YC;؃h4r h#Wd_7[C nR}t(θ.$ (ڶh#(/h~)((.AW}p4ȌϘӸrcڨ7J.eAD`8bÎ<'XC5#x yg O(zmPW)ÎL 0w8d6A@Ph:<ٓ>@B9DYFyHJLٔNјI|n@`n0 *UENnoW 'C; X|rbXՕK[k5g jmiobZ4W,)LXzD†C}).v֨H\yR&spTҙ)6ً阒#i:yw؛dә8~ ĜI8))( Id99b]_؝Y(!ٖI%my@mcHŸڟI) z :иjjٞI+lI*= *,!:%m#6:)-ʠȝzY7 I)L:'DFڣڤV*%9Jy/񨛘Uzb$Y:|;~楿cڦUR[ب?znzP^ȥiȦxLg&kB&٧cʨ: * کp|:Zꩦ rzjȪvꪞ ]::JKګº Hvz6 ĺƪJwE)1@*˗܊AiZYJڮj@᪑: ʃq j kiK[yȺۭ; +Iʮ'`+벂 j7;;{f>{@[ ,[FMn *NVB'EnT|o-"hA:N[&QmнcmcYwL@B0`c~jl>M3Ur?򁕧xz~7 V&`ߝ53_N*YSpRG )`.ݢ~n$>>xG`>w} =vEJ08p00춭--$kD#)>>&@[RZsZ8F @i 61{$8@~p@E*+  DiadWH0_bD~h8+e*.X0LЖp'p}d/T2/)En)J1˗#W1dQ}' <5p 6eo ZR 0eD#0 Ov8!F:Z4/d0t`c0$P޾Ҩ+_2TiWD$p_ ~r_}KQBQN'}cUQ[ʏnyD``j J( O`oz~_.m4JTX'K-}w-Ϙ>b ӷ˖XHREf ,W0Ib@E9uOA%ZQI.e"IPї5n#hQ# "T!D*RHl>aA"5&IS WDyaĉ/fOZj֭]-x0†+Mڊ*ftp&zi2`&- Co`AAVjdAs>3{dJ>uܠJկg޽<٬h?y4*bI=TpA/}.'I -*BC# M"bD@*@[tE`}fB8['ïo*& 6Tt&1 "&"b@uq,<M.!I)"I(sN̉,5ҳ˯DFh NFu) 4"0jOpVEP}ȍD}TTSF*(G=+Q֩}i<"h'TUvG\Kew5"\Il5Q=6YfU $IڞfOZ؈"76@w]NN"-Аk}ܔ`v#QI<_;8 1^ձ.D^?;"[ rmck/ Nc^L29͞OG{9goygzbhF ʔdUj}hg%:63Bll^:3چmaG溳ƛko|sVz97yq{k+ϫ2|v= tG_][urcv䋶]m=S}Gn>>y^ܟ[쿷tǽiV%g}/7~~L~kD>.rP`D'| Dh1io#_>G@a[J @ׁ#a OU9e<]x=ⱏ6$"pp.9Q :bU5-x )=ULaZω#2^ЌY!_D6B{lQuH:0\xH~Tb.N${iё[` %J28"ʷ4r(]Rtr' R4P(G@>*C]&31 f#i&FTf5 ͯ3JON$N@rx!N~]*;Y\S@'#YugAKp7mNVӠ'Cg ; 4(N*ŋҞ#A;jЏը8OєFO %RW4)D]S"|V)yКթ01MctL6NthT8Fb 5Sդ XU:S5J]+[Kb+\պz}:_W|N2l)ejvUfc׭JVݥeP T,g;{W ձ; mF[Қ*=zX͚TiV#>G7I$Ԓw884\ܙ|N}|~K&_=[1Tּ߆{gnQ| ";S%, t=ԇ< ,$;0 Ï1{qK?:5*!^cx?C<=$,H>ٳ7@6$D1Ȫp4F+;JKdCpmC}Q,EiH= ZCY,KL9E`atB?7e;AҶ{@4jk,C935onᴈǝ!P^TЇh0HHXȅ|HHHHHHHH|HIH$,H'\SAӔXl,< F9H"Ёȁ,H*l ?K\CޑMES E@7*!(H`ʾLǠJHȔH@>\ŦLM\4"9ˈ}HЁTʜMO,Ogt^ ` nanGa>85;&@͖YfcFFXB> bnVNfehvfhhhhhi,_>`*ngwndeFWKYS_4坠Ǟ숈剒AN>X=d$6懆hFfjjjjjjjj a.k(vGvix٭_d} zgcFhAPh޿Þv^lvh~lȎlɞlʮl˾lllև0l(mfki޿yܵYeR FhNj>(n>n6l^nnn~nnnnnV mnnҾdinNx^mvma@]|Mg= V@^h( dnlNj.nOp_poppp p p gf pfvir{kFxm mfV剼mQ jIH0FEnB!'p#?r$Or%_r&or'r(r)r$g摾r,r?ve0qnmFqNQDڦo mZ@oL jqq>s?s@tAtB/tC?tDOtErGtHtItJ驆jvhFl>n17qk4<nωmsK\s^u_u`vavb/vc?vdOaSLovgvhvivjovflqfO+QWq5\*iPsXΡ`X'@s9GZ{w|s}w~wwxx/x?xw`loxxxMvtFNPswZ6u4wq@wn ƈpwfMF ww49uyyyzz/z?ׇ^zoFnOKx'u5<39Flj\ mӸEcp{y'@wZy{{{{{|?|O|_|oOp7!<;.s| X{1؏}ٟ}گ}ۿ}}}}ߟ}!p 7p#'rq]ZyyP0>B}!:g;fMg}o"r*B\dF #EDL6mdqF}6ȊUXɒ5Җ#wR%̘2{M6}FF׬ٲe%fta–2e)ԨRRj*֬ZrŚ!ذbǒ-klYj1dPĈ)Zqƍ<~ 9ɔ*Y,,*̹S_IԘI7'e3ТG.m4ԪWַ5زgӮm{mm>{Iܺv3W_&Olst#kcoMǏ#G 4cl<׳o=g>o\ w^qHKAa*v*qwyP8"%x")"-18#5xoH֥#)8RG|H-JYha1IGHXwLvy!a9&ey&i&mEq9'uy'x pAWG r 6sO*Ob.M)uV]Zrɥ^j)z):*z*|**G}%rM64%U^M8i:],J;-Z{-j-[J+;.{n.)qE$B2CK4:Bj#Q:00{0 +0 ;0K<1{11k J$a/[1V05|393=sWp<4E}4Io,SM;KFlE,.3e}6i6m6qu}7y7NCԻ*$V#u]KKa8K>9[G$LTWmᗏt/[^9:>;~;뾻Yd; ?<~*Pʄ[=k={=?tț>髿>*<ʄr.Cz_?(B;W<& R 3 r`y&t!LC{pQ6<"%2N|"()RQ`!-r^"#!jf<#Ә5{c(9*t=^|)A<$"E2|$#וIR!,7  xȇ*\}1T È̈Em\X$H>*xpK(Pɕ '9|39gP>x>T4'ym$ ʴCʟM&/_]}cbK˲#Ya;b8KE@E:t:$p-=E nZ=(o<}Vɲ!,! *" HAX#TC3tPzC똑Ȉ Ex '} Q@!,2*\Ȱ$X`+uj܈V+ $0Fc86r#0GdȲCR0e^@s#Qv.!И3M҄L*TTI;ViVB/@D&OY=u%SMcb6-*Ky0I,YR&'fq>;X8p;vi'PApCO$WtoSWBŒx!$n^ͺ5]/\@=mf 5ms}Cq@d:BĒ,x^2玫X:YqEn @xAEx> EJ1CL\\aRcAc\a"B֌8Q9֘P@!, 1 H*\ȰCeË3j܈! C<Ďɓ(SK#UʜIr b͟@3qhΣӃ#JUMן@݊tH_ӞJ+QpMm;dܻN%XZZ#*ՠԏ+F0RH?ZL`c 1rB>.Y-<_lbEEKYFQ˶ήɦ=jӥHq6zsYrl1IBw掝C7:UK+WnUy6)a'uhV ux[Ry zcSCGZHVV}^>Q/tghx]H2Hlm9#i#Ex!`xأg]|e -rq`#O`hޘܚcdNf$NƬX,;'B@,E[醒YİA,5zYnjP|.5j D\kz֩0 tõː[\26;@N$ܻKI&n\ LW&D'NS@ȲKR:0ʞr\!,3HǰÇ#JHŋ*qcƏ Cס|رK^#cʜЗ>|I|S!͟@/ZyZHĞP JN}IGՆQ¬JCG)]UXetcN+oƛZ3jw/O+' G]w G~I3ÕFE:]٥:ԪtӔƬo뎰'mݸMs bױrw {.>?1dRܜpxE}ݥO^a|Um߂d]XDY琄QHPQJ1 X|=N)b\%J(c|>cBJ'OE&Ndp@!>2HI%~V†%$]zQpAI~6 R7\Y2,"ERji| (R$TԩJ EN$v*+yl\+C*T0J3pZi'D&N6m5PҶ,P.y;c@!, 2 H*\ȰÇI(ŋ3jܨljCIҡG'K\"Ŏ [ʜ93&C4sԈfŝ@61УH J4SM>JsɨT*U׭FyJ6#ׇg˪1ڷKغxQMh5/ݽ%~+=8o჏8b޼.rym%D[;oL%ѓE,|>"3uU7$kRD1H`Y _E$(WhQH8!U:haVl\ SA>L+И: hQ@NbrHz%M"!,'孓| *'.u &\/ HQ2ei'1/HKcI^'~0/a NSgF pzȷTw @/BB\@w|d,\Gst >[skYdpbiEO;m!,'孓A<(.u &Q_4 bA8Qe0xG HdA'00O HNg i@ ѡEA.㩏Rc;ԪO7" `c,$; a_'8ȶmMgu`]I BB\@w0م|d,ڲrt .լrvbń]^u!,' 孓O%0 B$e%U!F>h6(.u8``YK}Dp۩O672"a I ;zMLTR@5Hh .LJJFV@Dt 5@֮ъxp!,') G*$(p‡6t‰-&NB5غ C @X'6ԇqe\ʊYp"M6 .?ִS^I@Ѓ *իל`fGٯWikxٴe-[/xI ېDASݤo>+)uV|&7]x89(*Y5jZ!&@/De[c̽+!,*I G*\ȰAJHq"Ĉ3j4:1n9[bIfJyp%K8 շTjU,[ x]) kW/V*< !,Z& H*\P:y #JHUȱ#h豤ɍE˗S `WK8]&9rL)N4bi@ bӫ S.+TcV5R7. ;mJY[amۻ)I ;;mr\=u0֔R]'@$ MIh .,4J!$lX_rtp``Y [>*h;lzS*=;mBlyX_E~=BѫT|0R~K_zXRy *Qz4IN!,4  H@y\Ȑ50$R8p4.G>|$% ɒ=ksQXˁ/aN(NԗS'CF pBE>"L=U*A´ t֗Ds <劶BHh զE[㦶Vz#R=JJwK@6 <2sg(PL†E[`B..Ȯ?Lp]ZDÉɋ;bK@:AYO[*vJHt:T2^|-8w7{Ѥ}g~!,C孓%0/‡HkC("ƂH#FLfFq0A1.胙HOc@o-=% @2c >5HhI5n1r:()u6MBT#Mn. &LsJ $lX44 ї0;ͼ1UwhiƉ;bK 8AYS]zyݰefE&6!,((G H*\ȰÇ#JHŋ3jȱǏ CII R\y˗0cʜI͛8sb@!,; (/HȰ@#@Bq~@eZ|@G*t2@  @u 7loHc 3`0$Sȧ2h!TT*UEf6&kՁW ".o5<[oĦ(N@a#Kׁ.3ϣ4ǰ%sv\ uT,ƅ۸s_DֺF|Ӿ)3B|:g7]ޥ \s2!,y HpA)D'aomFQ۴i26۸BF' Z˗0cʜI͛8sɳϗ%(hKHbZF%ETTںUWY†Ȳ%σ2t(.Ċ3FkјȒP;ן L0)VFBJJt'S^ʊkׯ|m+'ujٶ&q"ŸіjΜ9nrn[o4C8ȓ+_gQ>,hm\uV~C>ӿ1LQhG~ߘsXƝfy h|VN均z]GCJgv $XvYfVUx jkEWv G@)$rDq^g^MGc{7d02|`0TDS'B"(5 "}ǝwǞٶ[j1 =i衈E$dfJvb|9Nmԡw+ m9K*x"I{9?L>s|}0N:1Ǟ}wj,ч]M )lr{t+ROP ;1ț OA `06CHNy`ǓAt|&nh _d4/q'0&?=rǃ/pzw;PA=Gy.I'+\N @ H,lR^r4֑FRjEʑG A[! `"T Dthįx|P#G"<HX#:@@XI(ݡDrB"}$<¨AK{"x.q&t҇HG<RA8"f@x`xC0{Ds @/~ x܀@@PTV`A:vXrBwDC X<7\P{SVE4p#L\ǸhD|TF21@@<:Ֆ?>">4tGGD_58^0Ai*S9@4m}+"9ѫ.Mba m#7f) oWB,%$>! c>L@ulI/y=9 q+ʋ  q D{hwy]⃹t5|P}PX@Xda jhM3HNR3YUvMmq$!'l!c'r&>&y0V4Z-iD279,]ES]vW-I}<RLPŖ hPMELVfiyZD!AKDb(pɣ]Ȗ FZ 70xLk_CҷjגK}2C}8 (^1 )H\h/)*t]6ʙ]~F}dSb %шE;N*%i^,ia`8\㤏Bu" Vԓ I@,(QFt,6Ea3i _g ࢙iVisu5}ˋ ܐkya6Cx8L7fXpgK0.,9N3˻[ > yX:Ȱ܀rK)Ij d|S! 5NdCM:8I Wkyvu7@9@<ЂTxø 1a| }BӞN_.쥠Z@}GǐtuUVYD:-i qk5<0b 1w/y<<`w a/y Wl|oL+UWM+c`RqAh w-%YHwd8k0xa |dN||76_\;&&R='z,3s0(pp0Q1` '(x&u6jj3e_BTpe~m`pGJ @p)Qoҧuyf}4}z2eaVmh 7pprx'zTXyYG}S=W-)-8PCGvuj(C!P#!! 򰇞I}V_p2"`$b0(~Gl7h귆xbIy[$")4Fz`m71^BD.8}ȅX48z4`WiҸABL d(wjhؤp_vh8YȎ)&-hX1Z(2G`CuBo>c ABu\5)2vvؑ8"I(Y[c4(4o0H``P!;)=9j@ 3^x-_H~41)`ˈxIQ X8FA822>`fhgJl9!"hSuxE)۠a91PfcW B;p y{A\ps0Cٙ w*鍡z9sp)9ᛦXhC9xsPTJH X':`#}yҞTXIȝ*ɓG}9ڠRIL8ʠ_-xZ._>=ZYءo]:&a)Z x)Zʀ*1qzFZy!j:*8uj0:ZqIhʫo9ʧʩzZ@zz:՚ꪛj 4J᪭jj犨뺬}ge9hcIkgMiQJگXr0m0Y`P*%ĈKҩ ɱڭ8W+kZ*e0;2v&{9ɲ@K13{K˳*MP S5{VXL`ۈF;H{gZ˰B۶ $;r[I[јzO˷"a +tKhܺ_E[T){>eq˹鹷HK1+kki+ۺk? K[;[Aۻ˸p뼩 +R[ۼ۽ )(N[b(Ⱦ^k4+Kg0l}{k{KК}۸K+ϓ l̵;³ž +'6l780̼2|=\?\7AC{t[>,VClE4Z\5\M\=;mACEmI]KM=O " Ѓ,+]J|]<[ ց,,m֏Tg}mo mֲj|n]=ˁփʅׇ/~؎*٦2ٔ(}هٚMΝ=,_2ڤ=$}0ژ8ڞY҆-ۛ aڼ-M=r%Ý۴-7-$ҭ ٭_Ӹ &]q}އ]߃1]}'=d}nNׂ}a 8n^U/1$N&~*'$!T p yAapұuJ0Aj \ . 3fJ>LP.]pW#Z=,X6>r]=ik>?CT7P.qdQ |].w?f>_.e. >:sM\6zݧ:{)nʮ~~1-0&`$@ ߼n^`PLI@B1~~]ȷqrZPYp..t. u`s0R{Tbp =c]{}4.7 )0o.|/QP %WQ"08P)',<n 2A_@%!|JX  m.!z '1aaДS(*ϵqpVAVDrN %)= Lb7^D0?.Vd11fPUH MP"\NퟯK]Ne\PQ> t "裡@?FF.0S@OϟO]s  i,Jh!9ifLG,KC!C"$YI)UdK1eΤYM}HQ_0cԸGC E*R}dɲ%U}Jzt%"S"aȑ8Υ[]yd0|g%KA*U*ՃjE L. d2P:nT0B pekر[Mgi} K)>Sm*I9V,VHz >٨ (?\1Blŏ'"P*M<|-j$&OJp[e pX!@sC1b=& b+CCcbO>O?* @[L.GD,. tI(q*Q=R1/d|@[nfa@y$AIR6*(2$sO>*[1Kѿ/kF!1%GxeL|34,Ď;sTRKO|?Dej]G0 h!wDBC@(%7рV/k Wmmk[v#y8%C^I37mN1 = >A n#P$uP4N3ɢWj&5yNvT5VYP< KYRl.w5]2R0MGLp̘V^™ό%:fZޒܥ6NS'ǒ/tp;IMkbf>P?J)ZU9=66ф4Il&DMڧ~VcWFm4Ђ3՜5)mf%=iORd뜸:czЏ4/FUO@ŗ9?V2(MAЦR%jQԍ0*RT-k]_s֕k*GgЛ2UO]] [s|i_ QT)IzX&BU\yYeVŨg ZFu*]S{[IP *k[կ]RKKX&/oYI,Nk[fw%M^5+T{ܚ(Ub\Ɩ e͋^zekZָ5e{vlkߣNle |_g$u/p_7FMaKK  xĵ={8v? c -mLdY/]'jnE;[YF햽 ]/|2~|9w;Ns, fy5_9ъN-Bw@v3kiOJsyiŘfS:2,%_Բ.)jHZҝ浖^׶Ƴ \b m!jCoĎvf}]T$v~}Fgvx9ngslh`އiXtf7nr> ofx7Í^#stŝmeu8CN|Ʊ91.gmG9򅷜%-qW\ M<,]yU{7z/;67ӭJPi\CRźh}/k'yc~tT:{(k]SU[>u}x}>c3x"(vQh/7Ռ~}⢇ {Wz>o_|b ? {ə=Ox=E}?dSs=''Ϳ{o? w-+>4,;듿ۻX0<$"T9-ꃿ  @  Aq@ \A@@@AAc>A Ad) @#KBY{!"MDB+,T9-+A)C7#23LCl#HLA4I'KTLDCD =lCeAP܄0@c!RDJL(TNtEwҿXY \$_\EuFED7cdt[dF:tƮFiLM$ WYD Fjqn|epǭ!G_4G5DHuv$!} ™Gn|D`bGBGSE&(Ǡhs<0Hm4x`yLJHRHDG HH,H/(MR;o9lM^Gl̏LYYJ M["ME4̹$Ή4L-4JMxjyJtlKT]KLFL,a<F+)s-jkB`q9ppa^(XmcZ ^#V՞P\6p=\#b`ڣK c8Q^~`5^5և68F%[:Nb _(^[fܽ%.NL޵[\"1c IN. Kd`$^_ ]R>>?ڄV~%D.qQ_ь6y>aH^v+H^!`;Vea_t(hi)AdB`&m.gga!\n6tV=vfM7{Q&e,' dEk d&^W|ܵ&^Ydvd]HٕqgcI .kKШvhPk*8-v^khOl.æNhnrl~.g>n˾Kl>[,Nm5Xmve[ tJ^n&jm4_ylnX.gևFg4f=o̶lvvm_nja~a-ѓm5 όl"p#o$G~g>qF^q٥J.)>Vp}Cog p!!'rI>qNqrt+_i̪VNp_W!1/oqGP5 5'̸ts& l}(@is$s?@o.GþLGYlqytt_ч?׏ ahPG.tL˕hqXf(JY9ؑ]Ovuf=?ghtvd lu_P6\wi8@].pRWȕrh좝m\(WEuHI~?nx? gH 'r7ό|_e~'tx,0v/`w'7>$Wr#5WzT-rwr/LFGIx2! 3 |-H 8?{wva¶w{j{މugGc7tgd_]?yWgyvo7}n[{ccXЇ_}`wg}iw_v"||GoO'?nwz0 kV%~}~}mN+XPh "l!Ĉ'Rh"ƌ7rQ"EF$eҤT*Sj*LdѤi͆vPP %Q▊鶨QAZr+ذOL˘2g֔3'B=(Q}HcS}RRM,Ċ3KTųl6¶S.E]CpƲgӮm䆕Y!P3Οy*:{!v6ҧC:qEqxy/x= U|iw݁V[~%PyJ8!H_ ]!wQ8"ltQ}y^}X"1ʈQ8`8#=RWE7E٣1y$MVK:9%AYUjVW2!,z HP຃[PCqIFQE}ӦEجeHɒR\˗0cʜI͛8sDϟ@ JQ*]SLz:uUJŕX`;֖ٳҪM;m[1DСo-j˸1Zf@$XRJa'^˸1cŐ#KL˘3k9qFCMӨQGZ͚uPOnz֮_"+n{pn]q11c&W.V,سgνËOgZϾ˟OEڣ܆np7]ݕ^1ב1,ndam! !$Ɖ(b,0(4h2Ď<@)DDH&IŒK^dh,Im[XUXm-O!GIBhϚpp)tix swWUyrwQ$&s~9)Q |f馜v駠r)ɠY -Ǘ_-Jc I\i+;'`\b*[YɊnYhT[mǶǷxQnp:L㫱9 Wmz(Z)Ͽ"db 1ôk6E${*BY[&p1d^X$s0"\Բ*z"#^*,cL7p4"IRP{ұ[tCBWt)Nڟ&SیϮڛ=ss >86tmI4B1s7{ Lr,dv⤗n>D!}}q[a}w喏v -!bK,^xA"yu8;j 0t]4½" +\1s!ͻ~qVjjmaDɽ3~0 ];pCǼU Ug-w%t׿TTwRG=pA@9jг)8elRXDDH,kP `aX"5)b8 lt9| t`͏-ֹ&Da! @dX;+R T|A0Qh4Gb4s!=شd=F0ᓡ:d"H`5_>} >"IWbYFNT2u#K1IJ#@C<φ˙yCbZ~|hD$r జ8DJ1TP.`E_(B|AR^$$MHSD')A GMR;])=}E4U)q$ *AƂ}aY>tD&)HLD+:Qv*Uy`xt-=X| b)5R F/q_LHzBಎk/YCE*ImW*X}+ 4(P`Fys.8p(3/ш>_)KNY,ebĦkõWt/;TNJ6*ܢgs+TW%i5FxBi[*:[ހa m 8ueZ1 g| ƒ$ $ܲ&š"Vyc3륰{kJnC5%h<C\M&mU(okE C`c&(3hn5 gsh {Yu3={%"Az0cRy2P4 UiCuL  >N+pQW)ACTQ3ӄ;}.76ڇP<:dD"h>P-Cbx@ H H;t0FMӡQ׆ @+FLi[FtsoІO$<~%H f6kx*gCd?$FLRۑX>=8xg} 0Av@s6qX:i0@ `Q>HIެ9C=~yO}·jo &HP! $7r3{gvnæ `Wy#47_ - g&M|J)M `u)XOm1T8KMc~'"fV82gumugc]3lF$H @PjT@q xfc^AJ+Ing&#wam\gK*?,bm 1m8QhpO` m ڀ F zQv } Qz\6-7%f8%9rϦj=2g Ddy̔s2rh0&0 @$O/:BvP4ӉԃGH]~m8(|8  Ā ؄Ģ#QPl~ﳌg4Ӹmmu$-9 G؋Ď.H'\i/5=bA%A}m.Ҋ%'p0.64&^e\={cws`(' zIWpT7ٕ.L@x막rґ 9yBDExn1! 7i|ٗI ᕄ0$@aɓnF)f(W0S"`pG)! V/y$ix+skg҈9Y+Y>b 7RfhG0xL sys ٝLCB`<~͙ihWmII粝 3)cyIɌj9]1W2ў7W ls;'iu*wI]1+HiɔW8$Z&z(*,ڢ.-z elUQΉ nF `W`p-pJ ڤ$\5P8CaGyDɛKzNZjC;yߒGA_z!)cj~4Ylyt6;sZ\z6yعIڧZ.jJڂV~<*ꉢڪ*zaX0 bc*@lө8Lsbȶ:˪xкD9ʭBJGjϙڠi ӚժڬZkڮVz.: "ʰ1Kd9 [9ڱ+:"۲쒱%a8+,0˓2{49;:;hZDGkxIB Z)RTJ[L[[zҵ4>?)cftH V;M{po"_a;m z;\·duYKkA묍[UW ] etvKk[{jH ӡ`F!:Lʺ꺑+ˆi#Yۻ *wۖץm+J[V9 KJk^{˶K 6۾ *JZz<l+ ?|;#X+\,fh;˽Kq\sk,eDl,,HL?l‰7\ Ǝ ǐ<̹2 Y%<{l;0\ʧܝ|iq@<ʂ,oĵL V<ʙ,\NMaQ\;N".$?C^#tH.@J,`䍽%.MN^~:`3d8f~O WD椓r~pNu^wy>{}nZz>9N爾QC2>-S1>.N.~/] >7߄.>-InV/)^\춍Ю~ݣn,xn'>qkR'n _*+P $) p)0 paIZ7ezy # !)#_'u -  #q9o${~kflQ2oI?Lw [&$>x@H_0=p?)AA z_B.ɇ)0Uˏ'.B0/;p:77o&@$}!!""$QID ;'- d=O."?]PXpT_yدh0|;tܸ>},dC%NXE5nG!Ez$H&Td3F:xZHҥMF"*XdɲU.I,]*`H0 .WaŎ%[bɓ)W|sf͛9wtѣIۇ3a8lġ/HxP4t!Vf5oghQNχK2iĩOBTmA|/%J˘A/gSЧq]PĤ/"D"۠>'LG3_JS J;}CjFۣ3.:!oC;par A4HAHH%$B!9hrt'C81*l=6h<ѧ}RqHA}jqH0qK.c9 *O%rPB eҲJDLzvEO:dM03BiKuCUrgV;*i]N .5O4zS5ZC9JMhma)[%qۘ ?3AK7}ƒή@횭ڌby|ruP57O&ӓW~Fuߤ~k|OVVHzxW?|uwښ볿=Xq۪%Pq_Lf~l4~10oA==bo @[` ׁLj)P@(~<IhDe& I|{E&y.0@E4+~zA6l\d)! TI xG @{T/p>D"r^c$7aƇL`*D%AA}0 op}H1}x$E˂>|ŃBу(CDD92]8 !LdޮQ" L$\iD @H%KZڒ62hQU(C I*fsgA01"&lj[ŽFE E<;ZN;S@B4">.ϟ3CY|!/ BL4Dm@@>!b@!fOm2_AK˸K,vj*WtADo&93-?K2A` D)+Dͥ:p"a]DU1SkaL&HӧPBNdI:JW'> b p<ҰN$ HQHNCց HV٣4L>!K<+u6#fΈ!- %r z/U㯰X0a!F`BX@ ag.@KulkF+Iqzc3Ces?ɯ^FʜŬd;;\hkq_CĊ&1{gH"o|dkMα jQ:"p _TYՉfuZ5\yӽ^ aG!򥻛CN4]Si[Զt]$g{xn-5[0wV %c5hX6h|Vnkd;x/\5MoۛwݝW>wurNS9gnzkgy'[|Yoit+{9y>_V9sO@z.t`}tmf/t׵]t\nOqٍvuO}NvSZ;o{><~<+oĿo{vnu{gr]qCo{Is/}u{_kn|SgDu{Gzzg^=O=ї)~ۇ&=?_m.&k8˾ܾ>D?| ,5{#:̿Λ@@@<,,!#Ac3As@?l>K@@?>\<{!%A)Bd: ;A,3-".C?A$@#\ejC B9TA.C:8,C9CKC@ D*tCBt89\ED/*dCI(D D{=C",:E*|D'DE(TDVd&WdM'OERE+4H4IC_F7DCbc"`+DbDZ;Rl@k?mR@AJBmS|C D!E3.MS,JT0!@ )9X A FSPԁJQp#6)OrU &10Q0]N቞ `%a3 " d1a4rVڃ'* >՛lUnRPҨVm׎sQ0PdW(qW5;֠WW`Upq-] U4v%(Q?lm}Q}uP%S H=XZYJs.CY$WSHeּy٘YL- |GGGMaxաex+h TVnB5kS5תi}֬ݏL `N`^`n`~` 䝵 ؁LGtߝUYFQ}!_]ފ_ n &X}N[n<;Vʕڀś՚q- _a.b/b0c1c2.c3>c1N]m +`VZYj[$3ݽ_.*+bFuE89! %ٕ{0ƄZ_M7Uڟ!} ]/u/yJIb+vWetNgu^gvngw~gxgygz^g}`| }c` b:;Tmfי撪.d~Y޵) ?r.gsNdCci/ևJFK]My#fcb,fhfCVah^jnj~jjj9b}ahZ2hc>6#5@"&jjkkkkll.lYe^lZ vۖMV#V o5a90 (^eP.~m؎mٞmڮm۾mmmm~ma}j]XlNb%6,dNU XAeӾUVf.j.o>oNo^ono~ooPgoY`q N_&_]\Wޝ̡jV jH 'poqq/q?qOq_qo jq.<TgFh{݂fdSɍ7@e 'p r-r.r/r0s1s2/s3?s4rqep`6p8ɉ`_r[>>4l#'5` *rԾr tJtKtLtMtNtOtP>lR/uv6eևsV f MnMa"Q1CdCi G'h ofthvivjvkvlvmvnmwqm Wuh Bp暰s6[C"'A`ǜPkSEGdnXv*_xoxxxxxxxx'oևtuGv5]iz!6rG v9 黉@FGv.OxOz_zozzzzz VpzzzzXvWyM惼 $tAwQyCyRYoWEzO7zo||ȏ|ɟ|ʯ|˿|̷|Hs. *@*_wv]w[' O{|V2F-"ٝwr/|7|/~?~O~_~o~~~~ׇP~tvHxFvԷ:hoC K϶O |:tc6 2l!Ĉ'Rh"ƌMD#Ȑ"G,RʔTV>02njAFM7sç BEt &OF"E*U*VbQeVn SXyƢ+No۶i6-Zfˌ&l-X"5&L$Ih"BiqȒ# l2̚7s3ТGn4ԪWnM زa̒r J8u 4ТG.e4Tj+W/Â,ojN{L.][pFX? 8 | * : 2L0A\pF!SM=r9tHub]Z۹xu,9& FXa|I*$M:$QJ9%UZy%1ȴ%]z%a9&/D>hN;O Ep'"TR)UΥtYgY15#\w^ze_a"z@Fri)z):*z*ϙ*:+qt>m4>>qrHQ)q$gV)(J-Zw]Ym[qx(y)գ^@.;/{//ް+ <0|0 !$]O(=P NgU& 5(ڭm|[0H冨zʜ5|393=3A = t4I+4MDQ/= 1bM<)q6qmqZb]8ףZ"ޑ¼7}7 >8~8@㍃0/ bY#\'Hv-v"\q) n\at PY|;;; ?<0+<;/}(R_pi~1|B>٤k;r[l-]6>뵧rR???(B(ḩIFJI#q=q fxXt3@6l+}RɌ·})\V'Ұ6!s>!$!:HGz `B}K\嬰-+R>lMmS¾hvI5n|#(9ұvT=~# )4щ6A Y$_EXЄCa UBь4#C)Q<%*SU|eYҒS%޵MC)( J0E2|{>v-BM#cˌN61fRִ&'mr&8)qԦ>u+zgJ0_)&r⊎D&#If}&4CM1|(D#*щR(F3эB (HC*ґ YJQb(9'%($e2-KQF=*Rԥ2N}*T*թR5QVխr^يvrP8iXvSB P3T~+`+=,b1+Y *j]&S\OIXg+jSղ}-lc+Ҷ-gs[j ^IK9(af[Nr+hC+Z)1-vr.x+񒷼ܥBoӫmIVqv,υnt:]gV>03~0#\`}tXHv)A?5%ג$RR#~1c,Ӹƿ}af6ʵ>(Y1%3N~2,)SVj-s^2, 0M D^>id@%v3=~3L|όfxm,Iі43,ϲU\bDz,+4SUծ~5c-kYӶ5s]fC6o6ew1I,dv־6ms\q{ܹv?(t~ oLE7_7.pdJk738#.i83ss!, H຃[PÇIbEm1 6m#iBIɓS\ɲ˗0cʜI͖TFɳϟ@ :ѣR)Uʪ)XPƒEXʵWÊ!ÆNx1ƏG6Kݻx=ɷ߿ LI*+^̸ǐ#/&ROBj5֯³i#Jͭ#͕mw۸sͻm NȃGļУKN9dry*gϟC&M^YiײmQHɗOĆϿ' 1h& 6F Thfbɇ sSMiƙ,"xv:eQF)ns #DiG9L6PF)T2Ʉ$Xf\v[vhaMR(Պcj{6}UW(蠄hx^!袌6裐F*I4b饘f馜vi$jX'=Q}צ9kmc4;.C_}VEvJUflm&F+VkbE!v+.b#nFbU  }\GsFI `gw̱T!2cl(,0,*8<>G!T]Hg"v)Xj7R3P!6mlp-tm7P)To%+Ykq#+T e-WnS.nQ߈k5 mM:CCnGxoΒ.Oqޝs-3dǎvWoؓ7 Ni՞y׆g/?yH7;gyg8)o}1 4oz'HA0ać|֡1OW 0d10 sA4B@++ gFG(.bmP閄>`e|H> q[ +[NL6| D#C->U?0^Dqy"Vd,Qn\DbxEytQ2D΄KavaXi_B4t䄀>bsĢ/٪..,CD(JaRI?̔ ?Rt [沒 @ǂmcL[”Xf*]@Aspr"}"RfہjM\QeIsΓL\(UxXbB4ObgA P٣JWj-PzS;V>ΏS(+ RxBQ(ღ: $jJͦ L.0fӁ@>{BCNX@=b ٹwRjC8>8@6ETldDಘŬ܁ XY%U!P֮~5A m06>P5+c AΡ|pAqPЉnzO dEQ=FnnG A0,bؘ:m8OU=l%+Yewz8o+[}0WS0W` n)yJʕ)4T4F!Y(߹\. RAv U)* E/zڳ7?@8nj}@ԺW oW[k , 0Ёj9;rY*bXq`# @V[y*XDNӆ |y=n; M`"Ha Pa ([ Xڪ+cZ ! `ٲ|vdAf o ]pAo` ǵ#jQ1qFAћ1lh{Lwo;3{!U}ص\{]]lW;^lU5b=Wc_%~ rbv!m}+aj2}T X5"@Em-x>c 0,Ԋ(1^wQ[f|بu5m 7˯mj:b~}@rClY 7 mIc1 m{dπDa@4uYλ2Jcz'|x\u8w婝9WuxmGU}@֓{t3f| hPk tg?aovL p {'T|÷psw<'}W60d4'fdZ l HZ0l/HZ 0_UU'Rnrmw$[JA9tt\&oH##h}o% }P;01R ij x0 P|lbZRgxeCXq҇H)AfVl@XcZ&8rYVvkUetfm +-pgzHGP[qSoxQz+eDhXnPnGhZ&0 @@wXP5;fU,A6qd0ee:v^EXx~UqUu*khk1YOct`TM&G G=EvRD\}nfX8 k  >j P&2)%w1r-@X2wgDGzNYXowNaXu0j8 -bke;7q~VuQ$szg5"ؐqBW׀(|PhpIp0=ix;P 8 (78Ėn9Nz4GvGvy0{Z8uOs09 pPp @ːyd3<)AY=txya7TLـZ'Ip7aI `ȹld3QoI%"y[ JمuiB w Q<9q)Ig,}K(uBKYjPj&,ڢmcIЖizي[ Gza!ꗯi9h.zHJ0H`z8*5|@ DJ80n01I:,JD3 mRZZ $8cajdiL A?t9ziSwb(}jj1)DzUڨyNAZ_:Zz$ jU8xɐĵ֟&)j:Zzдʜ?n6F:j֩ &}ץ`:Z2ʭOs*xpr Qz>]:Czj6:٭Pg 9z VQ7K.tC;@3ٱ- >j3k=A7&,۳@۴N[ClJ+a ZBKiT4Vx[{N۵D˜)D+h;?۵TRzYt!k:|[ۤ4ZW۸{2KIC]#۹kg(E{/;뫒 iLKO비ۺK۷ʛ[oK<[Լit +Ělܻ&⻾PDNjc˾[Aۜ{[mYn:C: ̻=l4o[<ֳ{竨$µcL;8L;0ʿ +9<Ė<\+DucP?ā{t 躬) `b N\P>lú_aWũ`m0Ycd\{2@lnLzrtlxb}<['i!xņ1cȿ=TL5#ɃYǞ ʍ,ʴKR &\q]|ǟ `,˳ L[řƛ̬|S̨̄5ͼŭȿL,1|Iܼͯ{<Θ[̀|ͪ,\Ɂ^ˋ ]QlͶ¸Ϻ͸m + а \˖Ęܨs ,,!k468Ҡ<ғP ۜ'}-g\TZ)+hM}xY8 ٠@p'jCFjJ}0]! N`y]h}}l]ї,=ߠ 0 pDZ;1mzq 2 :z|MOkڂE _p}Zm۷<lW=Ѝ\ݴ܈e&e==fr -ێm ְrU]&=f]=/[n>}/R . n ߢ^]A= [2}nm ,..1=}㙚};^>@BǪ-I>KA 6>T}WNև|Rh,ac3n[iιż-Y~sN-ZjNl^熮iu>LL+, ꡾LM/^馞m.nvnMѧ=fžam죌`r˻.nKn/MN^ U+N}ݎk-xnz O&wMt ԫ]-۾- _ Nm_:o6AC)N7H_PI?{.\^bOddlR7_9A?ovnw>2~x_z_IZ߻8#et?_ 3o 'OO_/Yj_t?O?ѿןHR߾/?E_1t菿ooE?T_?$XA A$ (TM<|-j$&OFJUXdbikK1e*YM9uOA%:C> JhFA$iʖ.enYWaŎ%[,ͣ x,Xbƍ?Ydʕ-=_^҈m:ݫyYJe̙50`MB;UY)okرvH0ۧqҭz1e'^xYtȪw=^u ?\qiސS+yeoǨO.o^}^|L3@)+0A +0ě.qD 3d;ItLl>`q(``$lG&l ~'$ I}\E P@ I2~P @8}H K9%.]e Qj@4P&HӁ x,A:T`PȕP6g/e]ATTRuRoOR R *4U` MV|5R[7kחL%Wa6!Rb*2ܠcNJ 3Z>'Tڽv^z JG`K]umiWR u8Uڜ }5lnV#3GQ6x;U[.OtCey,Ozhw0ZoPniL /`k:gbPۍ6Pm4c 0 }`"$bv:j6GbQˌSoPmՐn0;\p7\q[f1 r o6GU?uzqkfvꐞrs' 2~jySD Đ_'L}bv CF=/T+,AB3_ dR>Пl0 "c<Ȓ @@Zj S] K},bQ 6!x|#c% 2 j9R PbR#B oЇG4B!(4tT>1d3/p2 Ap&)%)4`T]+剁9%$1C d@4)`t c3-6EsMӬE la>HAs H$ECjQ xߒLf!IN 'CM)B#9I*Z4&+IDB|>d 8>P@}@NVp@!lJ E7 F/QnPUnY*8%QIɊJPŠTD$؄;AWv@]؇]ı,)&NA\~ev awKlT\%l]wD0Ahu[@6O1k b#M,bQlTu*荺ֽn=o52UneY<̡]us[_2b<ٜ[4C[X$VXosGE! 'w_ O> >hčhFa 4_lP!AP}/e2iܸ| r\#dyMX&p YB~"$vZyZY 0Gc 8eYQ3!$kӛHԢV_AmWhy8mA`D09s1 îL4hDp˼(vM0ŤMB˳.rjOX\''h6"6MD PD}0YHKM $+55tf=,w?l(N "IM ፶8[V7lf9R0mQeЫEy`s۱.5V mz-&8[ё~Rl& J9ē>uJ5|;gY: ҍ?#i TN" * Jz{kC-\ ;|Y:1oPbiA~MH *py*hT ZRQdsF gŭ1A*4a ~E~aO@.'dCXk5yӇ m3A4S9ʳ___E_m [` & F` >uM[M _. fI9]]F\`ڄaN)^Vƃ ^qxa6⏢a-^Hx()v]-Fb/Vb0]!h1ٗ H+5bBb^89nV2c bmY\+6T`@KBCD^v㙔d?d@L~Mcd'P3 SVDTN?.1,0W& d*d&ZcRf\dc[Se_dabce(VHQf[fl_?JV&l֎9^n2gq8Sf^V21fWgיgY4d|&}~fVgV*ٚ˂Ffz΂1h{qn)g}g]iNZiQn.if`zm؆ Lga820>x0!6iY 甾(Ԙ j5CBH:1Ijޕ08fjqF |³EEcku띀kpjni$j:OIlkÆT ^臬됀lF@lO &qlԖ찮^ngVX jdb핞lތn:nNl&iekn~ &P6՘fjA"oooooo+jt.zD,o p p p jqopZJyIi|{/~?~O~_~o~~ׇo?txfz4uw_FoNŸ'}dW ~_~ׇ,h  k }:tB$ (Q\ɒ5nGE$]ӨQRb,Yv'P+*o:tJʼnmiњ-36L.YRRE3 1`dBJ&L!"B/.l0Ċ3n|!Ȓ''\0fC)޽(w㕎 Ѵ!YE"]2&l3(C=tiӧQV%Ֆ,VFm$) uΦ]FtśWǓ/o<׳o= ӯo>~olcFo6"vRJL2F[,9SnRTRMe 1WeUW_I"Gn[a\qםw#=#A 9$Ey$FʗM:15EGcTZIxJ-l7E(moF!ԆG+\yuɉ)eVjhi3Uc6ֵ8:(J:)Zz)jD):~핗>u%hniI(k!;injȔSFUXis!ѕ5iVpew(j-z-;.{.Ac{jEw9H%j`l+fEegSYȑs:ˢjHkneFb;2%|2)2-21.ͅWw&ѐF~4]R I 6cLw&gstk #[W1 |6i6m6q=7u|y#:eI`e!.J/ ½pIEg]]}gׁJ 6v:ꩫ:뭻:>;~I#^gQ8G mᲮFH'=a#o)5>ua5NJ,Bۆ裓V>>???O?@na+dkH VJͬZͦqGA-jġq<-9|>|jИ&CѰ6!s>!(@]F$W EKj` Hy+ Jq3'B+KatWA.| 9ұv#=~# )H? fLv:!OW&5X 7.>`Ĝ$FF3IkJ RUΡnx%,HYҲ%.s]򲗾%0)L\nT[ْYEoj#MVW}'@*Ё-P&BЅruC 6$Ҝ&%cb+K^2MK&GoDrb(Z;!Sw)Nsӝ>)P*ԡFj P*ڐ5J˓`ќd3 7Uҩۋ :9uFx)LIUv+^׽~+`+CFTPEiR3&61Qԋ@("mOed)&UJu>m}+lc+Ҷ-ns򶷾oo=.>dbP N(NEαH֗T|Y+ҷ/~/|>0 ZƲ]<هTw5abvc3kr.XY*U0Pޛ̆&({7!861s>1,!@A,%3Mv0yJ5(i[/j:hGn:-#1YOL̩Za\aj3=~3-AЂAA=yFx_VFIu}2]BOsHgfWL3̛fMi"kYϹֶ5s]׾5-la>6lF㔦wk\ }KQ\/wàE,pNC91Btީ. yӻ7}7o!>iMJh[Xv5xs[bCQnSfu@4Oޭ򕳼.9c.Ӽ6y`؝>v\J_ y>"~YVx7.q{|Xd <&$.f?;}n;ٺv%D/y/u2{qjXbr[=@7GnS^<3s/Sֿ>}&}=_yhaol = Mwԋg|rW>  &.  FN ] E*4ާ__Y Ơ ֠  `\!!jPBC>ܞ F 2X _ !!!!R!.ښ>PPy\&eƝ!~a6#>"$F$N"%V%^"&f&n#R~"(((ڬuC!ʽ bQ.".."//"00#11#2&2.y")>#4⯝¼>+ Ƣ,"ppa"9#::#;;#<ƣ< =#QMW 6rc7zԁԉc-B.$C6C>$DFDN$EVE^E^5n$GvG~$HVc!X@~[jg!"8b$M֤M$NNڢFOO[I$J`K*L!$LL>%TFTN%UVU^%VfVnV} XJ7QbR*R2eS%\ƥ\%]֥]%^^d_%``ˁ%b%e[c>&dFdN^`^&f͍Z"fb*b2h&ii&jj&kk"El&́-x&nrhko&ppflҦqbn.@s>'tFtN'uVu^'tfn'wvw~'xBsay'zzzjgx'|gx'}{'~~gR|'zg}(&sg6B]@!, H຃[PÇIbEm3jƱ#h CVɓ(S\ɲ˗0cʜIIR8sJœ'b KQ*MӧlLaC'Ri#A6Kl3hӪ]˶[ʝ;JΜ=%*(ҥLBUKUU%ZֵHeILy˘3kތٓϟʽ3PE,)Z jثǐd+/3ƛ7Fa+_-УcD:hϢIׯնZ? l3ގr F}a^"Pt]GNyqGwM%bꁅ[3[qA^Rޅ߈$V$($, tb7)8j :Lqec썕1 C_SJ5^tד&F)h-b啍dȊ-u`wGLflǛpǜtQsEB: j T&mETDf"(vd;$ϨVuXbmV3P!6*0j뭸&g7̱'Tcf'*&tꄌ}+T C봹Vkj ^X&`<Ɔjm6c !LLK+k/KDqIr*ҹ^5Wba8+G|0TD2 kcjȚjVpm8,kHrl~̕6.hH'M%Drɗ4ۼW_,л),c]d_4"ɈUZ_ĵoCffIOc+ItܬX]'-mߘg|%m{+9w=ݫF>.ߚn{LD!1h;]Φ3rYm-bK,~WxA"g6pk'|wK,xrs!݇O O%9^ 3F}6ہw?m WG>% y{{|Ӽ"Gw%GS=ñA-;hC(?}OZAGfHC3a*H ID$re $R"60C`aX,$:Pԇ ^w 'n#է@Vbp"@(H"E| d$}|P".# xpKacxƒq;C-6 ,xS "ؠπ^[+ L4"^̌<\`Ȣl(C '0*"\$F}A=HP3\%5ɖ+D @X cp`Nt#8DԩK 9`wB&rTfchR}Te܆Kq-E9CLb}&"A$ -X5v A*!EWy`xa"yD\& sPJQeZ:Shp, ZA4#^y)]Y_EyFl 1~VUlbcjj8)TVtq9i[_LxD('ЋV\mo7ChUj/jg~qUm'эk32|P0G@^BM43>Q ;ӲYEf>< sŸDm%ݹ|Pw.!.*y%7sꃮӹ̰6l j)($1ІҠ^tY<}赈DBJxc]`ٟFZ 1nfY„sRriꮳK=9oUGY+ Q0+AUL jPוjw]ܩͣTGC´%"A5G`C׼u5/ $v!|냝&tszTh7'Pl3 !.Vq/vהG c4t:@~ۆ|z!LJQbbBXDC(`ia6Cxwk䫋XE9j$m) Skayy& r}T޶*wec<mX q݂+hz> j Gu)H l&B ]׹TXy qDm>L6w ptG,UPuY|'Iz\ΚtrBjR RڥQYwȤW#A^Ui3@:j굡jZ)98qvDmM*gPnfjAdeʨʩz)z*J9 7: :/ȺJ:)ڬjtJܪZ׭:Zj?ys9PzԚt 5*Jʮ浘ڨʯ ʘ @; jo ڮY:/꬯*[%'+#քҝljuJy@ȲNɱ3 5{8:{<;?+BKEKKIK+MKRF=[V X;F˵ aP`Tik+m[o1c˚v>{;}KL;6;B w+g۸ 4KN{ey1{ +7ȉh;^;[t ;˺л]; ;oku˹˼輑; _כ˽ݫz++{囻Ȼip轢˰+[盼髿Ŀ L0K[kk ˥|{7KZ/M0Å<ܹ& A(;Pcp#; ![C\bc'Ģ1pp$lM,?=*O U|WŮ 4 be?gS<qĬP zR@ j'\p|XlȊ$y ÐL= VrR_M@8\W{ʨ\J#ɮG <˥l;,AĂLȮĈv%̵?\%aZ^*̵<Ʒ͚i,YN0MػǏ,ϘCϤϥc@6,]к쾱 ȢHK7kd\&}nۿ\; esk:=2 4 D-I4@mCR\VԐY-7$HsռZָ{Kj2lB ZGs2u *n#}-1mӆo-hM؅ 1= E 9׏ `)|д;8m֌ט+liڀګƞڮmϵ.L۹5ŝǍܻݾ3(]͍Mݼ--߭ϭ]}Pc-Aݫӽ̓}F~'f MMȔNm.*,#;\M8:SA.90F9DM7OC Tn6Sl \H-a.. g.^.`kK.1=札lnh .p^|t烞4[~^f蚍Mvn/^,sik^٣>nا~^-n->R~+댲뼮(T.%^&rN"ʾޙўnnWޮ>"JrM1N^"~y~nnԮ1.>? _. /2Z^~n.*^(?_P`N7䔮FPnNq'0<jN_Coa] a9m_jv?x1|~-< = 1P_h?>0 ppHM@ Q/@x0LO;11F  pqAC_`NOW?1tx0>Pп @C1a48crP_  %˖>vJˡ.%NXE5nG!E$Yɍ&H„ ,`|@IR"4Q!C} BSQNZU DZ9Fx)&OFM*VZZUyׯH;)>}yu6PIa5ܽX|Di- ""mЧrMEw`".p&+I hJFE&K质E~ }܂[vy`3*h@RE*'Plah}Hh$=Y -ض}Ve`&P p8"DUCLLZ"K"DЇAcV\)ul˃'*&EG(CR ZieCC1c$!ϘH,vx ĥ8R%wH"M1Ee3<@f<":@OI%hZ&Cb%B^A2& [@0н/$IBS &pi!p1FaEьb$E†P!ЇĄsE(̀] ?y@H!lZW&x^h T" ׈ ̮3(B4QeS*U'3`tExBP# D2Ńd O ̨2#Nś ZFˈd^_5G~aS?To@)LMA}\- Tu ^'zn:kP]d"؆61 hN ibB^V(Bʃ8_+Z h!l7Z "1+B61E%n{GUh烐VؕB~rꣻHm#8_|'^F#8x "o?+]E(E7tCލ3~"QZ >XH("qi%7j"BT"(R\g 46C!c0W&4<.T x8{C &rbgٛPDP""((^'>p;s5Ba$ 8|顜C<;䋵V9(ưB)UkReG7IX 17k"R^k[t!hc@: 61( Vјs$x\̶luhKFT?~;H\$ݠV 1Gx)Ӯoo/tC>pGZD86mȷ;Kgt3LY{<>y# +.'y$M^oC\=1^2gze.|yʁ.t1aZ9Y\b79٫~=l&rC}%n|wwSwGŃ~uCKbO3v.SGNs^<gu@>7Oo}?v;/uǭ^쫼i,L/_}NS{>+{7C3ڻ>@,9{PdC@Zk=þ?$24?ÿA{u?֓7== ?!D>s<»;\¨j{)@ ¬AjR:՛AA$t*$ä;3tB#6AۃCBtC6B%D#B?/$=*AD(E@FA ID9@BD.D DO¾c@$5|DDUJB+Ev$G7Ex#yLEHn@܅AaXZ ȋtƌ,H:; IkI,bEz|ItG|It$EP4ƈGII TIȏ8NJ æIQ"LʘIDJ,FpǝKDE$KʢLˣ\KTʫFK \D˰\ʷKˑKF-HHK<̾J\Թt_d4FlI̶̲LdIt,@„LLɜlL|BMϬ8& 'KtQ3-=?TDTB5TL$KSTI5J]BKR2NPGTHQSTSL,VTU?Y=R]S=ԶP6eFSDZ$B@Xb-cU9 dMU6S7iP%k%lV<\eVpu7Vre$sVkM:&[ vuW\^XHhWaU}ZuES<؄օE׆M݊~Vn7ԑ[_V؏ϐ*ىEULop95XW}ٙY-YY;Yy$%&2Z0@ڤM Yn%=YRF ;P pZiژ׮UMmv%H5۞m6^]Yc`۫cbEӹe6W[-9AUڡU5Z]u\4ܱJ[.\}\ܶE$%Z&z"ҽ1H]eݾ]Z-T6]ݧh\uRCm #B2#jy^ަ0!h\<A F8xQhX[AU:_S_sd߿0n___I=m-%o+S%S~G Vf L@Է`[.`Sa>~\D`!e 6;Ea&;ja8bVb&ī}[VB_)L*Fa=]uڃb/%5ߴ3>4 XA ^mW -v1Ёhݸ޼EU<Iiε&376ZI^`J^d9]e}T6UVbj5XD[7hmef ^b^A&Xֆ&<=e5Б؎gfxvbM>Uva >[_EҶ]u^gȎvhw~gf_gxh렎ЁYW^M>TOTp_aFڮQi~hhh|n菶bea&^)i d"fD`( he.%sޚ^jښjHfcM6 棎[l\ַ55u wjni>֒5aW.^VO[d97?)n>c6.5vm$al.CFFykĻqz[y"Bonx>n*oǽn :70Rvކwlh`oNnp h~d^kCҶl݈#DUB&?$?YfXHc~ g0]v_"o!:`̜O!v!Β()*++] 1Wo%dEuk`y\_-8_&_'(r)i=jRPA't [DWEmN[" cf&p'%b$Ah"VtOs?uQg_o0j6A&s Gute_b_:N-y av<u|wrjgmk8ZGF7gsgMi/R:D>{{O|_yxvl.|?|3g _/luB:$|͟_'jY~i~%y{{GV(BſyxLJs?{_P7$b ~Ib/~O(aV*w, 035m̩S>}Z(K6y4j)RRb륬fe&]wS޺膢'۶mڴM2cĆ e+f,VH %I"5Z!A}i-\,ҭk'޼z/.l0`S8 C0FXbƍ=Iɔ,]SM[9W3:F!U:i3Rڼu+W_ÎmT,ZA29Sn:Fn8Dj9H'Q]tjիqv hѣ=URW|XceY `rI8 Yx!jhwߡQengyuQgJ-fLG_}?'~InUeVZוpE\(qM:i܆QJ9%S~xeDY1ш$\G]YI{14MԍіmM=n)`KW9& jh*(m"1i]peY(D)"LȦNn'sx90?R~Wp*( k{YjGmjgf jf`o[c*kf%.[Ұ;/uq)heڴU|-l5KTyzL{n+iwL/!tMJngZo&t:0TxJĽUl1V/I42M7\sr* -zڢ0&!*#@4=u%y7wV_f^;acp: qk-0S+3߽9>߄^Zo=Z1ǧy6ߌ~ TjKsۖn99#$K*.Hì!Nٷ= n϶}Am/kqn8w=K=r=W{ߓ@k?uk_⦃z1=.<S¾+b(h4 ƭ`0[YU!FcF<"^^.}xlp=\'QA; (1N| XCeNJWY{B.&/^RȨǺc<&.lrG9n#$)-Q  l"AD TZ,9HB~Dd"?P. %)MKRiQK17LfRd'cA2|& ̉L~r)PNtNt?|s&;au\`=m|K|gPy/uA*#>n(FX]4FUяtX!P@!,w H຃)(!om(PE2ƱǏ CIɓ(S\ɲKbLES b$(@[@ ucp o'ZԆQ>6Zׯ`Ê;vِ1IͤyUΝ{t]_&]8'n7U`iXnmqc#KL2AO=U0@+O}@mU)A <@/h@bAnbZrs= <г>Уʥ.ї';9~1 &R?asD'uxM juZK`YQb[|'@уaEG( !`*ٕv&zJfHmWE2hPmGZ[$u,f/-@(>4.':ƴ`?ߩ$ȝ>|ITGsFIâ@7D夔V*VDŦ]ih, uiuM<tTx &66 BhϮ믖 sH<\sj򸊐k~CۆJB00;R fl@F,I Ȫ!bJC݊D{,[nw>.Tv8< `& ˠ¨2\H*q֞Gz,C0m<E".)S A;3.hXk"\&fpi̦2HK10aut׍_4""]'}CRUͻvG.dI^ ]jqʂ)0O`!ɷDS*t./k|P7 A=+,η(|v} Ɩ?miW6"ؾwC'L=Do,;hCZ( {֊I+I IDDZFk$?hEl`@c<~9&!с>b1yKb (6aF:Zl Q @#>VzGIs#\c<G\Cpo1"A}@$ 2bfq#IIET_>>DeAxbщ#g=ܩ^$<p&%r@n07Lɣ,6Nռa'40p'N"L snL0T P:y=RcA6~pJt"?)Q˨%?{K j|@1:&TPO*Q_]GZRtu1qzt{ic63c$&"A$(t,]%@c@:9Gn@>+ӨtbRρ @>S1}L@'l L?zϯ! ޚo}v0A,/K^/|=&Eebԅzۨ4繠4 Z ˆRo^}l]!C >`W&@bo.%\J]VgIuusi\_l/' } ؀>ǯ޲j?j%o׾R`C,ZCMslh}mkJ#cM\BtMO>D*H_ZǸg>.wjskS{􇒕e .{A2 N-k!pʙβyyX̞9ڃ>RhFw;;[kF8$) k6 R /0d4L*LX hn#T0{ UT|K'/mnh4`DQƿ}1A=gf;"uռnjQ3^bX߭Qa= I4b}xΒ#jX1 ma-N`a|| v7D5~Tn[x&vq]VD> lJ[wـ[pO-4 weš?V ܰw@ R $Aa{6(# ,T}fUZն[$~= [yPcNլ=9b˱1,Ecm橐7;Ue_Sc>)UuWx:u+p YA P|)Z Pr)0QvFGЦ-@7Xc;sjzpQRRkVeuj*H!-&|Ga+0^OQ@Aj%XФtt@*OQzIVpu7* sp ч1` EhP 1 tՅ(^`(cPtA#_CC6!mjL2qHuVx0c P`T dL5x?oj tI>xe  zp)ċQycxDDjh$eDspxPm ݨ bP  .he8=EXĉM?:X8Xj`( .&a(vsCz3<)53hs`ّ8+ً"IoG&y2(膬W>cϘ4ӘPy$@HXl0IoY7XLvyB;iiZ ڞ/hq)t)K=: 䘕0$$ZbZ ?*Jz' <"2ZA ;ڣH&cX7ZA9ڐI:>L:֘sI,ډGJ`*K Xz@åoaRiU٤Yz9+.ʦvoZxdPZWMw:xꦾfJ: Jzz|]*iY2ʩ:=Id}z z:jꪢ j:Z٪hJګ JjÚj_zah_8^Zjꞽ*تZJHZzc ڨjn:zJj Juʯ[٪˰:ZXX)PHYp`t KK"Kx(K^+Ț± V6k8ۙ)+z? R/;5%۴˲KAW[9!\{^k`˳Q UX{4˶]+{S{wKcj#۶LQ *u[g{i|붎:K믓[0۷ ۳v+V/+˹ڞ;+[{{{۲z9Y;k8; xz۸+;R0: ۹*R{a{I˾뾺;:|U>ۿ ;Ch  ^迠 ںb="` ]["L$<&@)+™T7\9 H;L=K>,˜ ʥe)ĽK T ~5[ ߺ JF-n] N;(/*..024+6~㖒:N)<\@%B>,RF"Hi#+TV~)dY^^`1dΖ\~;jlApNr>GmmJؽ~"j^q܊>Qkt-nNߋ~[~ݑz(Pᵞ&~⿎0"a| ~A6p' J<\|N^u^Nf&1N~"/`+Q0p%"`;0` ?O , @b!O1=? Ցd)O+i d5?#@rԋ:C`/6D=>pہ\ഞtɚ!>B(;(")1p-&`$@u<nmh`0#)QID(_륟O2jc@O)&}or|qҏ?֯ڟ¿Nn@Pb1* WA .dC%NXE5b$H&Td3F:xZHҥMF"*XdɲS.,I&Lƍ1Z\`UYnׇ?Ydʕ-_ƜYfΝ=k MBDQ[P aĉ/N<`dIDK2iĩςu-ɒ^DvxBaƱeϦ]0 EN>kYm涜~3 ǐ>/`1:]uq . =*C rhu߿=P^}'!엂(21HbWz*.iĠ80 }`=՜a>qDKg?xs#<,E B!:h$)Bp9@c Jb)@D&t26񁷂xh< !ml!@}H-B|M8*)KJCŠ.Ck!L@ 16 ԞcA 7tRJJ&E}\(Пb 2PU* ܋V\'K(C벵4s|jZgX<IYD> }Bv \5w]%30ckPlX `"*bW>}P ,Hɍ3tvڗ(SA!ΘF4 h@ ;! 2m<^W& 殃Ad'86 A0A hLab%EhJ!9L4dm,b0)@d CB'=?f2N$`~(|!>v'2r)gC5F!+"*䥉E>gBʃRY]7G},B@ A]R%(  BC.˘:19} "ҧG,h5m?`%EDL}BdC"#RS. W zҁz%>P 6$XyTX:!o|cx1YȂ!C40(jJ" XVc=iP_YTbpLLS*lVU0(G3R̫NyS ՍF4ZگQ5TXLnf[pװfl3 "ne,I YRYzcee,Z *=mj}jUbYY߀"[M+hTݖֱ.XڼZָ}lφ+@{^\r-n搻2%myM^wkevmxK^ޚ7 zK\دm& p{;Bx_ w-l"ش pmĘ0|x+ް}5]qk,`8)td Ů#Xot e0U&vK\-8<sǬ27h&|޶ovv] Ƿ\tg&c {YÈhI bJ9Tk+9*vr;li_ȚF򉗼VrZ֒f[8KZkc٦3 .іlkۅ2w=jۍ^Um<܏Gܓw~i,;f{{w m#< ?;&}}xэK/| N]qy|'_o+r;[9yy^Ӝ^u^tμН}7Ճ>?;2k{돣V7!+Mo {{}`ݻu2s=r;a=Kg0nq#cDxl?Iy|oV ydYzI<>ϫ>:c{ay~'_gO>stcv/v3yO]g??C'{~ ?ü37ɣ?[?>?D? 6@ ,;[ܳ{ Ծ u#@4@ < ?AAsl&<$>@!"l$%T&>B T)*L<};-d )J509QQ1eKC BsC",͈C'6:B?< = >C$ 6DB@>;D/D|[×kDGCH2I.J@qPdD1D,1R,BTBU̲V(XUC?DЊHMŅq+Ƞ>I9ơbժ&P vVM}9U5,P!E{S|}mP4JJUS}S[V9MԞ4V;}L舎h08YHقmXHYЇ%YV*@զP`PܢWi5 萊-YٓMuق;Y٨x 4WʁtU.5="E1y*Y-YY=ZЇmZ%]T vѰe]_#kPya@ $f %`(bVՇ6ݮTY^]Kk%[vR.bI8ڍ\4>@ $Nb!Ї}pc6'&<~Kv,[@~^`CQc;}3fHI>%}`cdܱ\4`Ae) Ad-dlcY Y[HN M}efcp0ʏHQLf5XfDu}@N\aj,L]*!1fo6 g\dч#!M>vZ=fQ`6 e@GpgfiMUj͡1Y_ZVFcd*Ї6q^Mdvg{֓8ɜm_ FU^W-kFkF"aQ^fr#I \eLꔰ S~͒c>X}bZ\NϟAdcjko(,fE0g~kePffz?T+R ve-u`,iIl!mΖ1"F&Fʾۉ.~hmht0@ꔎ^Čm,!mkmfnVQi@fnXkbha9iV\6ԩm4lۦfQ3Ah'Vn4iVN(˦yinƼNmR gnex)~9jm^p<:hp)0~RPf˞k q^DՆfO$MՇ~g-l?pIPpqR#_.%_v''qͨ6UNi ~.1kY2@saa Gonrl (߄w)fs-iٶ9CDŽNtE_t}Bpt|hRtn'Pw*G&.FT7/nCRPusчH qY //vagsևbO seRf_SwW}pjv7@B0/XRivYNpZ!/w9x6ׇxGsct]{5~r_ha%xxog}nuBӌAqwygt yYn?ω}~7Gv|y7k/lG!y y`x5xcwQGm{KԨ*RSW)Wg#n'{}hQ!(t}`Non|=f'{+1A{ ?zQZ|u_gxzwozW}W>"wߘ?P1#UOFr~pwЧ 穾Qdmma +஄2l!Ĉ'Rh"ƌ7rxȅFdJ}0mj娘Hԗ*vS (uJkOoRQfuڴhZ5k쫱=(pÂeg>#C7!Z(|ɷaݤp-td  = MOu z69#=>Cz 9#qЉo( f,jf80Ju iЍ>z% 9AӈJ\O&t h%X8іa')Qb y&~I:\dL.feoFP1#CYy)N(Cd"j⢮(C->4Wj*z В'۩J{lz:T&Nij-lRt+C:B,& ;By{/GNCM(;0`,ъ;0ES0 C|1ƮQ{qGo1%g,2$(!,v HuC7P߾ ܶm6mMK-Z CIɓ(S\ɲKHLj +Vc*(K@[2 >$qbŋ7 XYXjʵׯF9͜; PG &萩D Ԩ@-JÈc؄dxVZ|[tҁMwG 36Æ)Mm0ܴi cF7rZ}k3٥g}uևԎ \ϵ# M/][ o}8N̜hID]Eya_VƝw[ބVU$|$$7P{6_}7Pr=^aOi}E>1(P%gY$L)X-A4"l(Ɉ2هrOs) "@}!|QsEBA:0 7|zEQA@W\Oh,IpdYyqy<tgET66 BhO>}jꩳ sl2XUY"+W$Qj)B 18>uP1̨&[ k7[@q͕7]4l3̦%%2J Mզu@>mb2ø!*&0P &RJڛeَ 6 1ô(jHqbM<>oB#O` 'lB2H$Dc2כ_Z):wh>˸L2FHm6yI҈$A(J~Ust[](t,`}DK4qW<5*twRƐ,-p᠇|Hm3>;ZWsǜwB"K*Y.D+f\ e7v~ -wHB!I|t5" +\{|̇WEf6s@%;,`}dM{`v |sԔ݌Y "wG=p ujr\ RxBQ!mჂX9&-"F!p``Ht9 F:,%PXÛ!(aX (6E3&]LX@#j"x)FjGL `qHMH9ꃎs"Bn$ BA/ L4\!@`>&iET_>7dBxY$73wĝTY.H-D<p [-3vMWCЊ\4j`>IF|0P.@F_(B/ژy%`2*JFr4;QyT>O/r)>E=Q# @Zǂ򒀘(b0\Љ+1Eb"HB> Pa Ubl (݀|UX#/}%Ma9| bt R/s2KS>iS{vtB>9X=:hUkX44! >eBDB)ͼD# |L@**&dZu$=MSfj(E •c|0roC]jQlJV`CzIa5o-(`ClǕl |G 05D/Xak UŃB!Fc4Cr;R`f'@>Yaƙ)KF Õ<t&4РL[\.A:(&HO8q Gyj<gVBp}SB@j7-ی΁Dp_ 5ѕ7 :2WH1K71k3آĄ$>aO|X5m60 q{aUqej lkZz+Nהµ:r>؎St5VW tYr-,Jq3x| tnyܳi -HL0 SRYk ,&u_3)!TT@;+}/milد`bafl rgtky+snAYaH͐H b@=J*+N_S)0%e<$kgK\!}y7{V:}},}n]#E0H>`sj~ n!-_`AJV ȀQ0})fhVr%"c-ǁ9Hn|Phpp0Zp% P| VXe}u:ܵ:GxLBxVT~#s0V(- _ T ؆=dL@y,vPKSʃ+'zh922nC=cGWpyHdQf}D*D0Xixu+!3!L!ҨËX}CX<W Ef+CHɤ;Huȍ2&?m]~W67xOL3s`P쒏ȏ(@th9c+DŽcUR~(*Y$@I}hG3yȑ)^6#Ӈc(+yђLxm2ڗr=f?Ɍ'YPH}Ғ6r826yn{X9FAP&cЕ) |$ cɏg]gmYpIɘȊn@zi}Y/ VrHcYn2W iy4FDX58mWyK y}i9x@Y .ɔu]Ι}Srx39B;d2I繜hNىY/ByHh"I}9ɠJ!*)Vj@$Q癙A8J%!(Zhg2} 0!JV<6ʢ8I>P{˃kΛ1@0Ʀ0K˾{%1᱈;e&@mؾ۽>@-;'ỳ;e!  wu0X#A%Rn*aޞ -M>$A^! 2$~&~*-.$,146~㈑:n/=.?nACnEnMݗ}In~H^qم4?$@Zn0P| @? 2_">q$xQ>혚nZQ>Q.HQS" H0 >]_1 ٽk!!q%;k3]( _1:xnʥNrkO J:N Q Sa՚B:9<' ԏ G_:݋*_ӂюZXJ-B  !'d'x"1-&`$@jќ>^njh`rLI@q*7-P &1m??n&o?]P=pI_'1 &`Ck!'-~#&""oX//$XA .dC%NXŅ A% 1jGТF.m4jTXŊ%K-[w[T1*Q$!cǍ1bxSQNZՆ$(;„G"IDK2iĩsW# z1gСDБtiS&\pa\cAV %!T!PP} :Kt/ҿN&]iR!(V EAUp'&&$D&M %)SѨ/g޼CģQW̩o4+ ьe${"w^}R:avf ŠHm,# X <;*B oHD  YD!hSЋ/ 3qFG۰ChĄP,(&2d -B jrJ*"a" K:)Zz)j]viK Yhb%&R\dK$idAΫ 5"4PD2-?,0S-3L3Mp)VތsO0$F:p=DcEQ,+L\LF aIӖM=%e:K=u68"LrVlͰFâRLLc"aUMOG;MEՍk_總۱ WJukeBwa}SR3<ϛC i Byd\uRrnf۝88CUKdz0Q]aHhXR ,whƨx8Y .R>)CXךeme؂B'4oJ H-c `rDFnv :DQgあjK7EҌ6hGtKGO(IbH6] H}y5R,!LHqjfcg+L<~ @ g~$lw}z}p ΈuGI@ Ab@Hn #~ -h T](+ HX0>*6o<I:֡ip #%Ȇ9/d$A!1Ӊ-(Kp&QJOd@AdA Q}Ċi>~(cnFaB+Bjd80t +>70DC Yb%]9K $@<C؆6ftX(ŲՈ< $_y U6\G0Y &ƒ+ih⋚f=S4\mWRZ5N?$1 ]4@{F9 N 9 NvSg uO Q4>b%(:΄IRfs)ZƴDBGӇU+5YZM.퟾ Rm Ҝ.>ETj,Ӫ[ѥ4bmI&V2~w-+Kc23yYF3WyJzL: Wz2+g!{63QK7W~ Akc4lK;6&J7ԟQ N!^5V0kԜ>[k[35_-^x9Y[}Z.8&r+l:Xھ n1+>}/Yjw{M|gTS[7nu#ˮ6!8H?}nqv:y7nO+h3lpf6_i6\ۙsW=BG6er_S=woZD;I8Y2r;OWֹ.7ЯNSG2!=ZrO#ݧ뻳 {;iz[}/{=nw?)/vgqŧ_^î_KOt>i_>﩮kxO~T18w^ۿk+Gq~?ٿ,[> @=<9ÿ`:3@@4> As  ? X+<1/Ã>B kB0npG\!'4ODHTG"lttGxGC, qlDBsF9L'XG{wELG$KGW7}tTܘmȌd6ƅlH”Hcb{qɋLƘI4ɏIWIGJ,J9U\JiJzI00JJ䜮DhiK!K4K|l/}XmKa@Ei0!В9<Bh<}P$Ìhļ/GY)OmhK(}@u%Ŭ\*)R4̑/M$"j4dA:p5eqӲDg$ʖӗ S)l*< Hh0 } A- POLe!N$ɟ<<DS}V @ }P }T}TT=S-Ղ8ւa5`m@ fRn"R0cMX܏&N'dT&Je?N&@bRb=Ad1և,Ꮓxd6a`aDb٭LQf R'S>>U_lQaSeoepH"ggF463Idbf cFb5d{^&\]hfTjFN d>h@o&^4eYzhhԝdGv`OL>pB`}~.Y^ZUDVAV;iԇTI65eFqf^undfr6ie^jVf&~fgrUMbcjXޯNDk(idmkehgC:߽FVi!h=l6:E(`:9H"7phNOFi.kVjF 5g6m1i)vNjڮŶNm<(g6TfDՇXg(%]M'vîoR և> Nkg`ƥﯶ년n<Ҷ @r׆my9Ɉ /~׆.lOФ^fooQ݉hyWʎl5VoqQXrnrV"FM}0wePM.QFYkч6w̯L1ߡn܅N?t¾67rCԇDGEJ?6M8sPk]vOQu?lW?d 7uP0[G`'>X#b86GsQ/bv9檿/>S}@vwQNɡT8rׇGE 1qvo_xx9's{WR|iߢwxLiQ`ӇqA(x}xuot.ZgQGRggs^q}wm8~Oytxia(u7'1 xdO:/yH?ZhxzVWͨ9uA$)/I {!xYP?e R?zgy=/y}'oWA*/UGFEOpGϣȈ=r)os}{ЗqJO]pz7P}}7zzg'y)}ߢH}du~Qߥʇ}Ӈ]m i+8mZhr׬Yǐ"G,i$ʔ*Wl%̘"=y9jTHRJU+}bq%-[!wYP丰C'VFbǒ-k,ڴoɱϠB&40ҦcJ%XU jH1E3nq۝o}-8]J;2=˷T'̚0bÐWn[pMxѻ9vNch!r4ʗ3w:cmqwY IǓ'uX{ݽ &6Zׯ`Ê;vِ1IͤyUΝ{t]_&]8'n7U`iXnmqc#KL2AO=U0@+O}@mU)A <@/h@bAnbZrs= <г>Уʥ.ї';9~1 &R?asD'uxM juZK`YQb[|'@уaEG( !`*ٕv&zJfHmWE2hPmGZ[$u,f/-@(>4.':ƴ`?ߩ$ȝ>|ITGsFIâ@7D夔V*VDŦ]ih, uiuM<tTx &66 BhϮ믖 sH<\sj򸊐k~CۆJB00;R fl@F,I Ȫ!bJC݊D{,[nw>.Tv8< `& ˠ¨2\H*q֞Gz,C0m<E".)S A;3.hXk"\&fpi̦2HK10aut׍_4""]'}CRUͻvG.dI^ ]jqʂ)0O`!ɷDS*t./k|P7 A=+,η(|v} Ɩ?miW6"Xy$ΤwC'L=Eo,;hCZ( {֊I+I ID@ 0@IGhʜ- Lp0 (^1$:PXC],;a>8]&8H|TF21@@D C|S;^%1ђp4WKؗȍܰE<@$I:e\>=*M 1v5D`%S `"T z|Ps9kJ<5pZ#r:Ěn$_ݡJw%$ϔ$k b3@lf#F=QJLDI@ik< @ dUdS>,n3ܴbCρ @>[1@ ueu[ Xz(! >vPn)+)PNPo9e'<A"K4,X* :Gp[=2ԺH5,/pXf^7>x^l@m!Mz:1XCtҬgA+bHa m)%-7ͱŻm7q I,DKHYah8ics!!Ǩh>h hּ2IXk0|HQkԽKhȮZ> QK˾ވk} cPC|N쩳Z?$n!B@<ЂTxø ^$%5.^ISZqd3 kN/9 [{k#!]r`Uj[ $#iH_[KM@a­~`@vة]}AfQEJ^"D)hDth|@ h<‘}kxkvrd־B@5:8Q}H({" CW"3W2mN2{gj}lFŧ$>ajG8Ђ8pQfbc| ~[_,5 W <Ցe~_{70/zJm[͙[p`[-:1 8Vxeơ? ܀޿d6C~?|y3vkQĪ@qc]?iTM\gQ6VueUW^V1c1|TrGwF;|!;*.AFk 0xnTeP5HT 7Q tWH(%oi'NdTP|cp|%?c0&G'CxFgvF0.ppnP UyoE3Tc+ `0Q_&l VZw;w@*}W}Jtsu7(!߀/q b p pYnc0wAaCC#7!lLagx0cZ5x dL0h5x?Χhrl dJcXg1.H8'QP|ȁ蔅(QgDsxPm(G$aS8=vZ${?P:[Xj(,+&֋ÅC}3<")5+h}Ќhи-\(Wwh'YH}Fd.X1JADДۨ6T O^WY3(h's 9` )|Yd1iplyזW hT}CyYHٗd ڸ8=8([舉82 /ABNy5 l!8=nrrA}.]!ybA5酊 1igX`p9Yw 6I瑝>i} YW@㙟OفxZl*.Y 8Xjv zB;ɋ:iZڟTȋ鍆9i=&:[/0$4*b*, ?:|7$ LBj_.0KڤXj6ڜGZAIڑY:N\:癅I<:WJp:[ h|@æHrq~if٥iz9;>ʧB@IueU|t~j.a*_ʨm*-!ʩ ʪJJb樳Z2j:'ڬ!aN٫ΊzJnzڬz l٭ߚzʮjJz`*گ YkZ{˩+KʍZ٭rXy:!#%'w),.ˉmPY :Xy˰밶ڳֲ C10HkJK:>AiDk4|ٵֱaKCU+gGbɶ9kp{b+CA Ei˷J [S{۸m˴o/۲f-nk*r[{˒ 볥 K۰tKkx[& ˼ce;;˘{K[Nj۴-ҧ ݰ+˾k kHkJۿK{ BŠMW>pL<4z Ơ.L $K'@W9z A)4H68? ) A,zJ)Ľ˳P $u d5a, D;+hW#Yu,PX5t>v-z<I8ik\,pӛ "1ɀ\^2Ȝ<< !@)Ą ʛO~,r`ʸ L],Z̯*ǣ 1͓ξs; 蛿͹̟,}+fLpټlʬЮx+K#=:YOѳuq[ц; mӒ٫Ӳ2}4]@M7BcmH-JX%LQSV!NLO1_1X}Rj0mhraݺw yݗX\׼*a؈ݷ-$،= | ͹=ُ[ؖMڥ ض"}ï۔ڰ ܙ-ܮMܜm!<#] Lܾ }Eӝ(= ,ڿMem`mJ߬ߩڴ. ڽ-~n7^z= ~ޟ!M-~*&⯽1~n79>;ͯ?.^s#QI +>^Q^.;)2c~ݏN1<0㩾X @듭ꬾC~ټn0K>q"^Ǿ^;Q^ ߞp0>B鎙;>ǡNʷ/>N>~d"5r O ^/ZL0^}ʇ n-/6_8J%@>EߪGOI[H@4AM; !V_p >= "!`?<ꮍQ 918A +1v? U:Z@ُ\ _. d-`  #'J e 4Qt闚{30' kį)'^1(ag_$,_2,o&@$^q ,Sn0mhP`E TDa$ !;tܸ#F &.E5nG!E$YI)ULIb$Lf3F:xZHҥMF"*XdɲT.ssU5jЌL,W9j .o\b]leTjybƓ|v3:ȖwYw}4|Cf g[bwvgj*^߅XJuD[(z5qǕV}ɕ]d@ %h\4@, "Dڅň@.i]د `P X ZPE"y0֞`q?Dt>Ʀ: WH _xEo%iIߢ0Z+a XĊXdc0̤ Ad" z' o ExX 1XcN"RBGÑhDP>co Aj#]&-SeKqGġ X ^Jah+ 7FɥFz_f$&xp!XLt2"JC}!8d!::exOx>s2 U';+xj#e,}#%ƞR1M4cВ>RpN9 HA;!j0a i"`"PEvZx\>X"\,X$(UiUUÀ4 9jD(2SB`!J4X SUU d< W݀BLtZ(y$VX:!o|cژF4abyR膴ӻkiSs;n{Jb>6eEVͳ|h5ZW5͠j]d)kPjvplh\fW:݊Ielk[-Uޓ7wśxK^:tw[bv|w7nm.m{[Y䖺hK` {_}|_w+| gXŶn}aC .~ u]q9aM-3q汏| L2V {dFؿpSd Gٸ&kf\1I f8Crfoy(n2{,ӹvFqlb/*tWg3Hֲ7/Ǎi#l>5 fN%o˧nW\+Օu3M : kDcبnqdU5׼gS/{&3k]_nֶ-ijrT]mvs9;g7-l{^u Z /-åIʦxZ27NnuMl+/>jlZ9r;;7m:'+m٤uӵzG=SĭN\[5Йv6dҽw|r0Sxm.wބK|{ p7NNоuW*u!oɯ×|mez:}}=C7L1{}vڇ ||~}t?Wɟ᛿Y~?G?;>|$<?  SWee:XdUV&aV]LƬi?V E]R6ETUoE+}rՏstC4ѭOxyWƒ,DWje,DBU/c]Ԅ}5USUNXVa)[]e-aSi3V)T52HV c!})bܽPbA>N06b< bSFљO-y+\fb%}d?dLgRBU1^eV3 %B5uD_7fpgqNΐ0godKR4Jyʿ`T`͈V^d3,b^Qc!Ahf>h@e&Pavd9-6I|m zJE]1u}~N\'Zixfpٝf_[wo | Ga҈^6Fʐ䫦"}j[Erf䬶G QΉ ,j{|~-uevQωehǰVbaJf¾Uijl5j` .kvUnj8GN!2ii@ )򊌐ij}Ȗlll>HƤMVeNHvN1fcn Q5@V`~h-6pjЇPVږpto.no vfnk&OmZpNiǨqmj po{a6v,}peM}7Ι)BPq6+(%soXp4q G67f}Wr|jro1)A*0t>HnJĐsOs $;o0*As?߄ӑrZ!ytjuutg6vMR8t9rPW,efi.mvfu0q"v%"Y Hׇ -!ab9PgZ" A'j'0rrYЇ7tu-Hn/zy{|_W~'SךfU؈DxLf9zwy{s>yʪ,rP*Sѹz'-{zKL{`Y=Lx:w/y[:9QЁCgT߾mkOiӢQmfu2cZ:>abyh,ڴjײm;c# )i%}%OT%)}1eҌeN[dwQ*O(ѢG[ʴ)ԨS껊U1] :XanWn5lsW`I}=[9J `dάySċ+:NQt)[nZmu> G.o<7%,[蔂P @=y&iAK2L~ZW(t3r YAdy(p"'t؝,)|D@:ꡌ&$@ 4'kz #AZ)A t#+:ZibqZJ;T,A(d':kdjгEK-fAfA.g޷>Wи .B;k/B0A \^x06pk ElCR\|2l3r#+T21l <3sZ73A =4(I;ү!,z HP຃ס[PC"nbiilƱ㲏I(S\ɲK%cʜI͛8sS'K@ JT(HbĔP:U S(K@[ ٭ 2lP\oYԖqcf ID9߿ L0཈+^̸NjHL˕MSTEW}` KVki2lV\uy )R%`agMȓ+_KУKNسgOҨD|yCv z@RY $tj_^[UGpfiF(Vha fhv ($h$AȊ,0Ȍ4G^f@Aehӕ@~f6`3ưsamƖht9Ɨ`)&dihl)p)tix'&0矀*蠄šRW4lRV`}DedkHD[mu42&]꫰*무j뭸뮼+찼 sHJ| +<(ІE@qyԗ001 k覫*ɲ9 *. $ȿ!p|l0QGsTFhCWlg1`\S=S^}++'e2øO<@-:CE$K}IW[2i'r,lLD-dmcG$I^$ەW<m[j01+ڄn'DrnLrBݝ7֡ʬ& #+n騧~I҈$9*=U -WyߠK,`Ⱥ'|I8> q>7ʘŻl, #-觯g!p `nV՛NQFx Xd,}LQG<bFfWz;o.l R| L W(6!XD'=_Ax2x.X+HL9A1'X?a0!A}$,J #phL#wBQ[WAY.w FcL(0A#gpQC"pmHCA3NYx [P,RA OH" T5|VZ#q|p%Q%>vӝ>p>0k%.|c<hv_SC1;9Rzdf8h6ćD1 Rz`7  ,Y)в_>^E':yI>9ϟUeA+D Cn07HO,;*H""hh4,6!3"') }t4[0T PAJy] /y`Շ>;KrħOy}>xc/t R/E5iBScc@(1(ELXWԤM&"A$m|裺cJgiݲS>p-԰9qD\b1v){[ XCbqY[T~=b!@r`e۱ "#e{hpmp "V>JďG1qFn-1nYdsN͉|Wb|  -1O@,f x䯅7_,/6~/qYT6E͐ja mnc(˫X̢EЍ0%$>eIoq- 0aYlUD@q#OKݑ|Z~[">yzf\MKD |YbܶaX L.`qe@2s L  .z|ihWk xڱ~լk}r)%b{~3B2gS/e/zK_PBSOn j$+iMXg⭉f"Ao{M¾>Ofs0.޳4oYb1  5e6[8Wf8@KYFg F÷ILИTΉ{QiQi$>ay'IU]5m60 qPw)aں7Z5>*2850H3gJ}vcY'qoWjϼa'k|M ڍyUFܠ/|pnw-HL0 vd{pK,zdSWXY&O$vvdņSofe*`EEX"|d%}3'm ڦ}T7xXE5PV2bp~CVr`h36yn01W6H7 0PW -0c#^2 PXWv)iX\'`*,ZG.s mb%1wUVh ssLBsQn@Gi`yj5X8 -0 L74Jde] Vo3炊yHugQp:HsGEwÄ́9vn# tB'|Phpv4p0!SЉB ` Ɠ+hK护Ȋ⊨`}[A8nYՃ69]x=MhdoT2C[AdvT 86H1KB}BwU#~苿/axxIHFi ( 7pI Gv8(gB}#mPP8xF(3XM~DWmpY6 t[ iD3H "O['䷒,I~fM  `py6&ؔD烗u×ds`АYAӘL 8}xn$\|s_JD 8t|8i[ADmDh6x95c[ `a)ڹALt9sGi19Mc99I斗 5yKEBpY᷏珉yiɠ$ ه;8TT*GMzMN` Y>')Zv8 xbAS6o镠yٖ?@Y*[KL)  \CWUr:tZvzxz|ڧ~:ZzZi"D zi iW:Zz}J;yÃ:HJ繤J(iBGs:Zڥ{xy z:: JQZ֪8Ȭ/X=ILڮ:Bg ʒﺪ(zOɭ)Z?j[6:j ;s6*+JI`)+!j1&*{-0˟I슳BK:+/ ~>@KC۴T.[H ;{`XDP T;9Y;+Cڳ_;;J;LKn@fKh+jkxBq˚SKӳњ>E[g&A;:D:Kk˯]zw:E[ۺsri˶뺸{6˷;(;6V+ûAS j[˼+4Kb{۽9s뷿ۻ[YnTVZ{Kcᾴ %ڡ@c1KЩ,K k뿻 9 Y$l[)| N+þ˾ziߒsX +J yl,r?3<4kR,TV=8#1Fg/kŨ`̸k[8|sqjB*ÄLܿprh\ǓܱL×njS\MUtğǗ+H|.ʭ̱,QȈ pɏķŹx+|\~l0 2]N4 2'<`\ 5TF ]Z, 7Ǔ㬯   \qHY`0\0еG j ,=\U\) Β̼̰ܾL@ APͬ0-2mz|!=ҼA ]: ?,mPVXL-> ,cMe}GAlb֮6Om=|r=f]^|Lʶ* P)|!.mz6me] ߼ٜM=7, ɪڽlLƨlƪɸM ۹̜xƾ|\˝Լe,}ӝ}׽ɶM]m ޿]=ݭ ]̶L-}<ڽ߾٭-‰N NWc ^l^ҍ^ <Ƚ$*NJ79$x;B?;νE~GAcKP,;T-HʫO bU_ng>RwǽO7v>rtNy~dYzV̄^N狮{叮N΁{>v]u>>Ꞟؠ駞xFW^1-̦nM^븮`^^~=@ʞ۾^nj^NI^^m Nmni>> 9.oPOK/&Jo@'?^.ߠ,Ϻ357H!H>_9ACEGoI/0)FRTVNN,b>d_sh`/n@0O0q[룪?N ;1_>$ & >@-? 40?_Ab[ /D*p<`5ZPL/opAOfo 8N6 [80i;c<k}@)_ d>}n4aC}H!*,Y4#E!E$YI)UdK1eΤYS%D0B% 1jGТF.m4jD}b]̸GYnWa'PD"U)TR.y_dwthѣI6}w.ƺw\e̙E 6[8-b: ]ͩUfz%ghU춱U5Jvo}a56q[pq=}5sѥyqѷ|wWmIsma덽;5Z>l<0 }.@ H85n-[iG^FA[ Hq }I%td@SLQ 9YgBoP!0" (p!=ثn f 1s}3F^xA0)Rqwz(% @!@DHb1(PH!W@G#F 1A${; Lc1Y2Hh! Ȓ>""4E#2WB$fE+BAP$`B.D Oxb%((A h(2m`zIdcMH9AE @B R8%\G.A)ZEhv5ί| Nvt\J'""{H HAZ$pp"7@qrMvI ܓ#ABRA%TX@$D P? < ɃP`f|ƄUc]c&3Т' j@XN5D҃H.'MVمFyTr3A>!im@ˠ1!`hNo0L: a#8hBINI<4lC=ఈ`?wGξ]C51aRT@f SJ {FJH57],CQQR2"9Ӣ8>Ϯj`mF_!ֲ"UHB1ՙRԢVMB]xnUl{膦1_|!I(!4aP\UЂB8 .0'DZC"Le$/!dcٟRZJvxHr88 yCwC 4xR"͠r<}P \8B8'P`IrwEwFH6 _($}(qW$40r1Ybmm W%pՄ *0;y HMI+ _\$&)2Aǩq? yAԂ$ SɚZqoeڠԝ⥇ I {Q" ɚڠ3Blj_.>=Xzӟ9֯R{r٭uvJgӉu3t|EnWÎ_o:ڻ\^ko/7~'=L/]W;~x't^4Wz@utgew#X]9k%==c ? t ?@4> T(#@??+>+@D>ܙ >X@ڿ"l@|@%73+)@+>|?<4BA1lC,8'J44F tHIJ; D;B5=4ODKAGVWXdQ̫SNO5կ(ST-iYU>W=*XTPU[]R=T_M%XY 7=VHV]]^0h]i5Vk l]T>gN2bq\9 sUUuVouw Wy(W5W-XMR~:>?``6@`(l;VHIhnJ .\JT n M`;\#cL[֕#$ ]~6V`ɾb0Zݕ3aa] 6b㔠m^E<a*=+McA*сA&h@dUf4F; ];"1d dh1<)ec`$dݚbvee&襊[csf$ feޥ'NfXfA>FahUIښ9tQviwgzg{g|g}g~gghhN>yw>rabOtmUH=_*4 q9tygxNi^ini~iiiiif^hnqdYD{3e0*y)i&jjkk.k>kNk^kizvi&r j& ZN&)e ޶z9('& .sfkʮl˾ll&ki .j_ c̿Vc6 b#,)U^,j@mnn.n>nNn^nnև鸖빦&SQ8XecH<%æܦȞvnooonjɆlѾo k5Mjqf dEتO)2-4io?qOq_qoqqqqOmk0Ff~܈ps^{aoy!!8"%x")"- 8#5\te_'}"ǘc deY&J 4 3!Smƅ)'uy'y'}' :h$x(#Q#AFֈ{K69%$ CTw%ǥH$*8Jk )jSOm+ ;,{,*,:,&0:-XSGi_֑^!|d**Dg}Z*݄`q*0 ;0K<1[|1glXQ0xmނk){2y.ARjU_˥تcԃΆ9|+4M;4QK=5U[}5Yg]eؗ,Jۤy:eV oJ:KIPfք$!=E+8;8K>9[~9ky1X"s=kXKDzRŒߨs*w0&$&)A3H]8h+<;bJwcև ׼&xK2| #( R 3 6 ,^<µimb&3kvGF?(5XDZ* S@2N|"()RV"-6$"Ņ!|fV U:(q@Z-$~4aEQ70$;!Ro~{Lc`E2|$$#)IR$&3MrĄ(QҌ;e|H"^se/i/=˟X[cw$!r71|&4)iRּ&6mr5[2Y±e0T.c𲗵cngC{[ɧ%(!Q&BЅ2}(D#*щR(FIrr%↶mT]"ߨLwut = 1*ͭ 1*b2},d#+R],7Rqu{IwuȴK7>C/~/,>0& .+Z%GL23WwWmL%^Vߐ{۽/oc,ַ61s>1,!`H%Sؑu&3{ZԺo+z^ؒ#&>qb[x$s5wn~3,9ӹv3=ә L3LIFQo%*6Y\E9qf>׼f,QԦ>5SUծ~5c-TGж5oMCr>FjjG,(z'"`9ͫ;iPS־6ms6-pSuZPۨ2fM*ydؔF̖eL洴.?838NtSO=P`3ZÖ7]Iwh.9c.Ӽ69s2ŃVTT~3YتTc/*w泌^>/??ӯga{yߥk?`MyٟN V^ fn v~ n`1] N> E ֠ `d%  !&.!6>!FN^!frLQ!!faHrq!a!aKP0Wbfx!!""&"."#>6bΡ$N"%V%^"&f&n"'v'~"((f?A) "$.("++",b+)֢7UGdlг :},pcy>V. } =|vMמ WHJxSh&7]pY.J%@V\$lXu8-;%-;-q`G,b b'.H KhZNG.2ݰeЧFGyЧ\hP\c&T`4 bE<8bE}``G C `Wɓ(00c )NM@GJF 0iј!GЧF  Bj KN(Nu5H"S `S٩=!%NH$w2b6 <2ͲeT` (&aâ3]9;'4ޱo +@hM#$%/^}.P!NlUO^ݰeFr,(O,[۪_0 !,: H;䣡CJH Cȱ@w %6dQ\)!GYd2%9ХErbS|kv4+j)R-T\cԊU9  Ab-xjڡ\r#/ vyTn>X}66m-fTE&|(8}`\dg} Vw(.*e3n̻>"^iuCkm˖l.}ԗWV1xΜ{KIKjX$V;嵉y 1ضM$طzeDAsx YLHUdJ3a"0Ѵ6<mhbXA - . gL @ $ KaE\@_XndgR05M _q_\&!,0 H)DȰà >H`D36i4Nؑ`tHalZaD} ͚/Jp'2MxshSksӰ:U\>0.`څukDN/J la͉fe^y{)R/F-⍷Rm8,c]4&QI +0L2yzLHH\$޼N-=0*Mn. 7/**jv <}-' Ň 2iqSc,kW: F$O 'HPG|$@%RaC!,- HZȰYgHO1NǏ CiСɈ)NX*IRHʜIG Q\yeIJG u1IJ(R^JU2tШUÊy5V[z-طp"ʳeӧ6.y >k߄s!e^!CZAek ⤋nSᑹC V>dfZ[hҥK+߾U&$슞ޛvn(;C}>l<%^cgQm}p#w_ >|m?˟G/p2惚qYe}A $]f'_NlWރF{Z eu`mZkqC' A7h`Rsv`3^{! ߎyg/dh!CGZK-BITZ6jYe tIeZpfmgn褏cJIeX@#7cp^H JFU(ʟ$LX_v^Ur>ɕ}@NijRԵ* eFUUZ*gצ9+mZ%M>"NW"v @jׂީUd>Il>QF@@,%(HRiZ,%)r.U⪄ e0$KTM,S ZnwL`"A ӆ lDxD$DmTMwR(!o԰0 tmSɖji1ah]˶m˜Hi~V'Բ>w㶯_pʵTNf Ŋߠe㵁yVGw풕*Xz!v \ġJbmxÓJ Ɣ]ю֪>tV=֬n K |ԁ #.jq~&@,I+ 50%QGV_]I,زxnK׸Ge֡FA 'PqT"g|.L8[w\s3ۈsUZk`p0 Y.Hy =EsAU?^+7Yo~J~[A}H??,PM3'01o\7mVax d bBm8 fB [fTw Qv؄ ( arFc#EF?. $RuoLtGHqtRG70\xD 7\<daj$dyf GFR!|`>Xь$o+wY! @GnK]Hd[Ęnj@.)@SǬJM<!,x孓:!F Ä2F4 EYfԸ# v,8$ĎP˄°6o8`Tht#L[ LHjaGYQ A,֬o 5̫ALD`YJ-@.v:#'wlGB\@wALdnFT`լ'&aâkj9'4vЂ  ǂ7,` 6wnzt֯G0 !,m & H*\ȰÇ#&Gċ3jQcŏ ;II(-\ɲK}!|Iͅ3e~ɳM JР*]qCLJ-xaթX^EҭHy,Τd4ڷJ(oix#2͹ OdYAڥիe}2a D&DspAm_uy@ }]M&I*#eb(dl\ x`B؆&fT+0D%dB$b \r$jI*d@ WpM $ zbH`\@eZr)朘32Mšnh'd0FhFh!,e孓K`l]‡ H!ċLe1Nj3 `CAffu(SB(N4Q\ &/fGD1}Ff ˊDQR1y`FRêGhZQRYV_FIҮ@FIjHh .,I%@Vpb6,E13 89rK;֘F vhMь v"rv Gt:H \nAtÖY֢mHp6YU 1|߇[e ! ,) AtƐᶇiHqⴋ3fLǏ CIɓ(S˗5ISf8sɳϟ^XQ[ĆH&sǎiBL˘/JtQ NӨSʵװêM vܹr 2UT/E Nȓ+Gn٘cKسkΝ;qrHQ6Т^Ͼ˟O:KϿ׳eۀFn oSfE(VhfvvÄ80$FS[,H.$(=M.iTy@)DiC^ʒL6PF +TVi} 96 dvlp)g3.|Ɵ蠄j衈碌ƣm!餒aiuxi*Ȩbꩨꪬ꫰*묬ƭ뮼c+,ulYjq\`Kg:vuv+k WZ,+k!"KlyyWlC,ds׉-fw bX ,0S}#y'7./1`r#l /<< MͰ2㠇ߤ-ມp)O~s\{MD^:S]LG7|Yx2e\2w44 6χ~WxB Էme3L 7/Aۈ:PW6ܽ(^XF0A~o\f,(L!쮀Q,h"m,Ơ胦ÔfHLbX(f\D-E,D$1!BBe̡hL˨ OvӃUfb#+F~paC cL侨p 7bO4 1+b-HE/yF3N^$617NvP < c)6z2cl1 5@>)(Dc$#¥,X+0}nhӘG<5.?/v3r&4]GIVX-dMx 'IZ \ &JQ &F7C$Ӟ B;OyC' |0Oy!DhЈKlo48KPH(0A'L,@3WE@`g!pQ}>9z3 ҘΫ uEԋ >i((&8@J OH" IG Ax;& V|mY48zCb؂Z _<<(5jRPA/l{wT_՞HQR_䖝%>ڣmzVTUn@t\+!zht 6oIPVb8=X @cA @b\&Vd.l1cfcu}̓- Uۡx |[us @qc`-j0Q.;^k(bHׇ^I D$lSHQT *L#{K>[xAUĂA`H B 7&k]pZin_$4f+L35/ R.Ų j`<%M ]QH > &&؛n~ 0pʞTI'=t3(j }0LKZ5NMVbH_Zٗ'j6Dڋtq[ 'pJϊs:wp{% oϛledv/|1 B$!`1coE5Av c.E@c\ܭtl*N|;Zcb ]emiik/~I2S<cyvǻCS\|Ĺ΋}%J5}6&.ш>\ H.>Q2-EC&Z c= p,Ttk<>Mkk؝ M|mխ~gjNqpZc<@jFxV$b5k0(t)0k~1 ?D&tI죚@^z^t4u`Sp՞]|2P + y$MUi9ۉ@ 4s0BVTYKI&;yi o)EYCEP'#u z;0X4mPJt &<@z#DZ-zċZjI 8uKУXs\e^lxb`P^D@t֦U*CZS6fH4n1`>j3„oj:aCvjl:墖#TEuФ`OAjlZn ecy*E~cz*>zڨHCsФȪ9ʬҚ/wzg"gZ:)doЪ2슪t*jI*[2Z%[ W 0z#6 s *{8@, Ъ W`9[F<;@)EzC{R;AJKk"M˭T`7I "s@T@a۶n 3c,٧lzڲ0 {k˷BJ9'az|p˳YW4r+={w? x?`λW+[+AAnKAY`b` K+3;_ \;,3zP+#;[{  K/kl!$%,!<%z/˰. :2 \6L8;\?àķ+"LFډ;LlNRI0A Od^,9C\lgLctNop!Z\|lJw<*|7 \6n׎ mcׂ|@~փP tػ`×*֊؂ ْՁmzق}Ӥӽ|ڟl=/۱-C{Dd۶ٕ-[Mܽ-IL͵]->-ȍ=<=ݝPU,άݦMm3^_~a]eg ^\^prt{2wHL[vaNzh{xg=ǭW. ?KLY .ۨ3+ƮY}nz.tM ;~ױ>^nlA nS ^>kאޤ]LNH IJ*07p1-&`$ /gvۭ TLD ?o *0_ ʧc8#50$@V ) ٪3~~T@LD:0,pJ+N?P@4js<^a,`pC$ op + 4Q 1QWJH(0aO-aO#p o 4 5 1nX/hB o gf-  1qҭqg<:f p`_ڟ$XA .dC%NXE5n#>5iQRbK,[1wͤY.ܤP#BOVP„I"AA_ 8OC R5`V/xd[qΥ[["IDK2oY`\ LL UÎFX-Z5aB]ԩUfyG<ЃoC;C? i6l+7򫉘a~ ,P9)SrcXtѿ;lC1BtG6.sSN;==EJ߀cFCLKL;S`vضBLi@TU. \>u1kuTG\ytjH v\r5W!cMoJeaVP,cYDdnͶG6w\Vt$U]5&ToK{ wQFY:[R!LXxe[QU6YXދՍ99~gU֑5dTvyinr]O*]g-NV|~0hȼMvm~R>KskZQi{}m zV.wq`F]S}tޭ7o/ \$pc3 !wu|jrgR:/.ZCט ׷lɼ!vo{!v晀AoDtj_[yWfzܭoJ{>/oc?Utt>&X𓙩G깋Y y{E< L| 熣P+d!H?}˛e3 j?LE{׻zK]CsPKT op~ڸr7U&1yK0AsҘ &QrbT$(ΐy[h7\Y P&dxHD89^юwFX.bP"#DRYHG>pzĜ'v=JVҒf e/㦗9B)E)2", EPK_fS"bC*D*hYu+_JL8!M|"yQqQHqc~9c>RK:[9v{!{S5H^~X>,ꃂfBȂV#z?w18S$g?4Y:Z*NTT 5 IEmi>;c֌s5L -4Ȩ 6PE%6PszU!bEzh*:( U A*aiAd v (Av8@ lmC.hx"xY o >pA%yc 0@Ts%V(oP!0j}b%/"صKLr{r#8vH 0VB S(oȄ/V d ?^B̽q*ZեAz0 Ŀ @`` @ \;dGs)ϦX%]B㿱X@b$'p'DWi F ɥsW\AiJg\} K\J6ЀC B(i)r\k?Q@Н:\}i-(Mz>tRxeku8iuL&m,W?y퇛;L*[i]+۷G\ - 6LP$G} PǾS>ZHQ@P 7 +ݢ}LP(BIMBMMuo,AdA^U 9ܐFh-J PN}й6O7od_0۴MjP N,u'|~0L+ B ON38 8 O|k(RZZ-ZZ>b{Mۯ]۰m[Y,ېZ[[ =[\½\ZUۨ55\ʃĕ\\ƽ\x\]ۺ\]ݹ \3]~Eݧܩe]pS]е]]S]٥\ܸ=ݥ]]使--4᥶]^^BޙM]]%¹ [M_}[c%\=3^͈5\NF6_E fKeU] ረ``&a}I.] a ab^Va"F1`nxba*#Z$\% ^-N+.0,f2.65fK c 9:NZ/~ c>cticbC>3.4G>?Z7Vdfd)J.H&IOFPQ.R&STVUnze-eD\McNbG^eٹee5eVf}c&dX.eY,Ze[deANmdOgVhi۞`VaN&Ofudv*w6fPFze&fJg矚g~g{QaW!~GgVbh~vhhzh}hc|hnl_0Fg^gghAgRnh6g-g|>gi6dƧ.ijdifZiqk.nicvꊆnZfi^sjV匶nu&k6&ڬ&鴆k^k>뢾룆ۼ^jnjj߹ZjjFlV^>ŶkxVk^>lh&;6>JuKFV#fv9m{f¦lölȎF_@.mƮE`zm:unNf @Nd2%6uX5f> ބ dkfnnz;lS2foBnڈorVjVb.7A96bpl]X@~H7jj&or5TGm&Bhq [oh' qq>p f,Qp$7|NYs2/s3?s4Os5_s6os7s81s;s[vfovgvhvivjvkvlvKuWvo?XXY4P6uq9v$iOck̝јd>wxx/x?xOx_xwxxXr/suu>o!q x6n,"ei}yyyyyyyyz/z?, 0sG[u]rCm,{Ǚ[W ?/{?{O{_{o{{{{A{{{azqz\uxpDyqVr { |˿|||||}}'{OgzZx>]o(p_GM6zyr,!!,~?~O~_~o~~~~`}~~7sGw؇pw).*7q͞7? #H,h „ 2l!Ą7Ph"ƌp7sԩ>-jIMF"*XdsРB+j(ҤJ2m)ԨRR5֬Z*o:tĉM۴h͖#6L.[bJE(O6.l0Ċ3n1Ȓ'+2̚7snH%OTҥK1gęs,?j6ܺwt+p]klڵmƝ˪]zn:ڷs;Ǔ/o>׳o}&OIK2iũglVox .xEXeVrlOu]x!!8"%x")"-"+ 5x#󑆒}jl2 *$M: p^}VLrn1\t=wa9&ey&i&m&q)Ďuy'yW_*#|6kv$D9(pQ9VY V\.jŴ_M6=_O%J;퓐j%l-֦r {.骻..;/,/룰6R~!,:p^dYi)Ӗ0!<2%|2)rú21<RjM =tO,iqo;MZzK 3X}5Yk5]{5a=6e}6^'a3m6#$ 9%l#7RzY;G8K>9[~9k9{L=:饛~u^ ](868w8Pt38<+<;U$8tЖ&N,ORU|%,c)YҲ%.sK]^AN Ө4INΓ<&D9:єz|&4)iRּ&6mr40qS4R'u&SwDqvgy'>}$')s$c'Be2ͤ'D#*щR(F3эr(D0Б#Uס zЄQ e*әҴ6)Nsӝ>)P,ԫJiJSҥ:|'<*թRV*VJTrH5ɘ*%95+P=+ZӪֵn}+\*׹5`*^׽(+`THյ=,b}},d,rec#+ZN6Q=0ղ}-l] Ҷ@A-ny򶷾-p4[W=킫2p+ݕ"Ty.v.4+r=v Rvm z+Ve{{};]*=0`f_#,.}02 sع2,pu&/<'.~`?⒱J1s,1xv6u,!=F _"3F>m,e7 ;-S^/d._>vÜ297h~3v h!,] xȇ*\}1TE+Z8qG ~P (=.0M^(3F2EG$,/yen-k.,{3Fڍ޾vE 5]LDϮe6^]',)UutN"N4fB\@wALd:(X5pa6Yd "tJw2"`v(OvutHזz->Ey7|pq؛Ͽ(h& 6F(&@r|$'O'N>`tH4q| MO7'K=0)ü m2)ʫY!i֣K}i#fٶ19ʬh.G_xaYї_UK؇*+q]<6/R rHv'V}g=_;T T n|挳 ۸C[v.Ȓ'3RH#FU;^ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($X ,b"~2h_6҇c#|>4X@/ޗd7Ĥ~OhTViXf\v`) ӆl7TeĕƜI͆j)MΘp|Qb. HDaIPRb$$5,*V7Ye*CAIА&7]hȇ@V͈ gt  k͸lg&!,) *B >q"Èbtp#G? )"ƉQ&!K_ZҢ͛8s| ').沢X-e=/CRêr%pVV=(*: mrs݅7 f㆐,P!m ivaN@+ g V1g:YT0 !,ZK H0*\ȰÇ Jŋ 'jDDžAJHcȌ#K|b˕0 2ʔqTYbϝ̏B%RN2}J3jթTsZ4HW*vٲK6![[:|+܁'ƽ0L|n`N̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ@j`i HZaMHg^Yj6>@ Ba'vGP0Dp}hs ZQ,Vn,!)Èy \yA:@HsDzJ3uG a# 0)Ir`&.x>gBԉ( @-d."@W131Hr- !,# /@ *\/'4 2 +_R1=.Q$I+DIPeI:,ʔ)ˁ1gkF&7*O1<ӓ-HYiuBIvbS[u+}sx߿7JÈ#2C>#K)˂DP`Ϡ ylpӨ3ĺkՇ.ɞM[5MsaP CTȓ+W 3ʚN]wiߥ7gvIF'&pO!, (* `C&aąx`vȍ%EDȏ-Uv4`4eԑO#|SfTVވ&/QQV iW#eXt%@BrpAX2۷nepnݛY*s$0KؠTǐ!EG_0ThY3+!, H *\8РA0t>>)Z'Ă-#ÍF#%CaQ"DY1uAhBJ¨O(DIpҦBB\@wQ|ǧ c/0!߿d1vfǐC,x H@eNϠCI`J9$|װ3>j.߷3Ϝ,Y!, HA>FBqp4yT$,b>" Ӗ䍍:"a$Wx)ǒJJs6F>TjF1KPbYB$S+x +6$ٰfϖ}-۶k u+Wƶw˒UH߿} Lu+^ ǐ#?.ȧ2B}-ę ς!,Q  HA*\ȰsJHŋ3j⺏ C~DGɓ(S\ɲJ0cʌ;ɳϟ@3tIѣH\JSNAJJjG-iʵׯ`ÊKkғNqzdʶ۷pʝKҔ\Ʒ_ LÈ+6#KD3k̹3\[ԈӂR^ͺװc˞۸mܝ o} Nȓy,DNسk}zA,YVӫ_Ͼˇx4YWϿP%Hˌ"&ۂ 6F(Vh!a|($F5-%0(4h/n@)Dio&&QPF)e(25}#tSv`[<S!!l&$etigu D8Lǝ*鹜yD砌6ꨌx^4裘fiwj4Ա騤H4a꫰2|i1nĪsMj4 F{$nlJpNj44c0rk# +~* n3cu.+0k*2ϛ*#L,`D1_ko,򶴮1J#l캶VLs.+}.L daϰ"*3H*4 #,G'-5K3QOK,؀vavf b-7mKsfݻ2Jz.:GIx}xx x8Ŏ_1n^㠗蝛[#N:'_Œn//|/25Y`VD/rB!c o!.LP~ߌ"hp"׿/<"!B;20w+@Ep)m =<ʽ #TSXs.|!b(CѰ!C xH"HLSq`zH,BX̢E䩉TXe.hLcFEgcQH:qL O(őFw 66FW$[JZ,!YI蒠 eG7)$V2;*J>ɕ$,c&>̓$ʥ0=re0IHRrc-)$fZ4/7L]f|;Ms?L'ӌ/CT N~ӝ@:P'4᠅PE=#vN7ѧB𢝅;S )*Fz(H04x \j PDDH) j6ֈGLy :)J5LBu#j,IRY5X/ jL\΢VUeYQ.̔<;]+Nzҽ3R1ѣz45xdinMtl/5MvSZ3\ /X3^Vs-dQk[j خ{UM\,W33SB c+\ Q`m"AB؁u;nM`n.l:^5+R1M`( 88O<̼=~#5r@$]S"<&F!\"}b@8&$a3ǃ(0}40s!&soQD"D]A̜+T 3'qω50t@ '0a/b}P?}819Qo0k5#OFA]Ppt3'շr~DzVa}Q7 @pv6 Gr5}> `Җ3Hz;p5!ox,, 1NsjoDo#Grv(gps pvq28]B-o88orGWExX7ЄN(%kp2; Yo!`h)xmۖu0O,8#0n3P4&At XrInmHHY8s282oY(rvJu0}Hn$j8+-≈UW؃wt8mTX(P)R./so煪X%Bmh 2NS4r#wtܸmЇWG<NE2) 6 9HtFmbqDODb- HSH;w !s@vuُY‰xI 8yѐFX)I$ 1{,"ن 3B6ɍEm-ГE"ayqX1rpQ)DUi-Y+YiShmW51zeiAr^?VIȐ'yxY91xn26tY5QyQb0ьx7Io#'pǙiVq@)"0M㎔ PŠiC)؛^$@I+osyxh ٙT JDJ23yqy 繝ɞIkH18r69pyE G'nj՞y0n ZmJ!D-l *D65p"ydY!r0 2:D5(= #:B:ӡW 7({p VN4FPOw^Z*w 3G'jզm0uw"f}{zh /`ބrJtI%:,!"%N o_5wq70s.l*w@z :> {h@'j Cº )yڭI*o#ʛJʮ#jW"]o:UDjAlj[Җ{i䊚K;3 I9ze57)("s78%2;%R4-;L>;#@jhjpڙ={" qPSKql °p8(/"@Z g[4Sb_P0prKȀ5z|Pggs"a `+Л]ge,y; rv["pwq V?+`x#b$Bnô{8h!B 50;+AcLy6k5Фhp(lPD`unov| "<$9ڋG8z nv8L:<>@B@lh&-VܩLؓM1`s 2wȽt]؎=ג]؜n=ٍ`JG- 5a$@os"' pۿQq|pV@l5yLn]m]܃J&7 `sp=}74@hj\?7v>2nnnsnn6<^Eͽ[ pߟV}(hy @ @_sOz'я,nLnw,:`mCn6 zh|pMn挮@M@n^ъM:8WG|H] $ߘzJSN/w]~aG8mX0 z>(6lmjC.n"M M~Ǝ8PZ-n>v hnC~,}u-wlO# rvL  QpEm?NG<Xmm=vz 67ʃB-[hB>un0?8om-v2  ` @оHn9`Mұz+GXyZmgp p"RV7ڶm6m-Gpvm%OuG,wI ,ZPws?s/sH>pyoPpG=ZhJ%TY`pr p 7mfmXQPȟʿ><`s4ǂ}IY)O2y,Y-W^7pzp m VR0ƿQ$XA,\C4)Ģ$I"d7n\WI)UdK1e\)Ϧu'۷m۴Ml1bÄ%U*R6a$"B}Sg6jЌ! Ƭ,i\a[qΥ[]q;F;>Yaĉ)/N>Vh]dzujHX+ذhƒs5eϦ]mܹuv@=^\q1?މDC)g>KtҦ!Fj˾f{ϧ_6Qdh"T1rj*.)6lλH㪫9BQj&&٤I(N\3$vIQ mؤ,d9ݣ>\6xel`*N{DiIX bXm׮D_ sX2+MXWrV*(\ed$ !:MBs`frKB=03%qEf{V׺k<uI@\W]0\0@DX`V!Px\*NLQADfX-fXp=a{!:(\a(D]\^<^!Z2$ xF XȵՁњkV R`GXSp|e,_Y%Yr, ^xYc&n;Z8(XإU!Ǚ&6/ vݪA@wS&t }hD'Zыf)@%*T |iйyS`&7}sM}jTZիfu]j@?aT. *`Z.c`OVK^GQ'[fvlhG[~2˼5C®]:`si=fwnx[wm>Av.o\j;ms [ pG\x-~q2 #+4,\&u9Mr gx]r\3yNld:LT<|䚮O{zKgzӝtG]SzӇ;c )NЅ.rvG?y͎]kg{\ fO׿N{/w^'| HgLTnw={-yg^U7CH(yK&g=;z^Z2pOWz_'~|M#e=ѓ}g__~}RH~~_70O3 }~__?t ?[9+?L@L?{i3@ ,@ ߃{ <!,GQ *\Ȱaxxrŋ8cGqIz~>A)+b. !Ӈ+] =sB~=9qԚΠaTEDwC[fPJ~u2"˨>S2ubub֌6d:,B@˞)4߿K/k"օJJ`{1.LA~l㴏)K2LZX]SaC0l.hQھ8xwG H!j.½Ӆ]"Y;|skϿ(h& 6F(Vhfv ($h(,0(4tua裏 )tʁ>|?V)*`pAuAQP\I`0h9)>yfUȗщ<("1@~x\p*Ax< eh0^)Zfh,|)*yX瀀2KajS*7E<i`6'!, ``2' A} /@!,h 8 \(00@ċ)6ȑƇ#cIb,q!F+y!G5 ^LR y"NQTQI,6$ի'^ !, (@ Ȑ B2XP!bƆ 8 cE"4"ɊPde N}1w`C mSR>K&6J[dX@>qˆ elą./6M`象~cT԰~IT QߦtzXTɒ&7]`ɐ f-$@X5]LM4Ә!,} 80 Ȱ "J8!CVXbI2GI /FtI$EYt @v1gM5{I!͜|6eؔA\Zt !Vbo*Ֆ2{&F"-Q Уm֡ҟ324)ʾUd81ƛg e}!,|% H0 Ȱ ( 0ǎ,b1Ǔn@dždHe2@I)c ]I( m@L,`SN 9+̧b4eUw԰*|ʥl%4^/΄*1ʴkMRgCL9iaژgi2Q&/_7 \:TӖ e./rgN&彋{@.)u )$tCE fI 0K='P!,%  $Á>0(P  D MDPJ]YQI2it`Ě=)qhPG}&]J3Ӆ|$` @^ .@\>0R/xu|Qu|DԲ L[7 |1Kjݿ$]SqJJex\@h .H@:f>T` +{ Z{^wW :`}Cmto$U"L.6敃Q^0 !,! /(A#:DHE ^ܘQ Cv Ic&Xre1bʜ̛1(LqϟhHCѣHu:ıӧ}BjըIj:ׯ`#BlQF)8@_(  W}W^7o]ض-*8˕vboG*&"CqGv>0G1-Mj j @\ j;tجȕ>!, ,@H0*\Ȱa #Jtċ+ZȑFC*($B&KLr%K._^)S"͚7ysɏ>s tGEMʴӧPJJիXjʵׯ`ÊKlVcvU@M. pe +_R* xv i.@¯c,ظc6,3eHmZ/?_(۸oKYHbͺl=MЕƜoM~i}r4–H/@y4B'&Pi E`0P-&@E^zy!p]!,8-I[FL*\Pa3vjH"h Jȑ#FYHrGDPSY$̐3YxSN?wrѣByhRcmTZ}'ͭ !VemڥiÂפغ ˷߿ LÈ+^̸ǐ#KL˘3kW2c5-+-$ym DiB-`ζMmˆ 2M4D~֦<7w[^z 3 |7sr `oA7 :}x` ! ,o HmHp>}*TOÇ#FԇŊ1F=IR$ɑ&OzDzʖ,_ӥ3]ܩs!t,|n H*x!… F4!Ŋ'VLx# ~RHGvD)$KW(s6Sy3cNiNut&׍;dtkwidget-2.1.1/doc/images/window_system_menu.gif000066400000000000000000001161101352002233700221360ustar00rootroot00000000000000GIF89a5)000669U<8G=9H/-z4+uUUUUH88Q>9UUn5Ek4HUUFFIUUUG^|H`}bbekknoorrruU'H)g)j=cUUUGNHOBJUUJlGwM^|aUUHmUUUUUUUU>-HKUUv{UUUV)Ub/w)hOiPUU}_UUUUUUUUVZiUU͑AϒDUc~8<1U͎̎֍ؓսª̽ßθ܄‚݂Ӯֱ߮9! NETSCAPE2.0!n,5)K)*\ȰÇ#JHŋ3j1BhҐԱɓ(S\ɲCRg޸I͛8qϟ@ JѣH*]ʴӧPJ*իXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx*}Ʒ߿ LÈ+^̸ǐ#KL˘3k޼_hѺ3ΨS^ͺ5kefɞ-{2׸su0gM_>УKNسkνËO^:Xӫ_t˟?>O-GK3h&t5xì굂# v=H#Ё^+Xza(]0@A$D+ۑx".W  "AL ~my_ ,Až,5p)tix6cҌ(yj衈&袌2 +V +І6駊'nD4 ꫞F*-믭a ~A.͌6)pB(/Ң*4+8뭡$̡ATŷ:ꥴ.. )Ri@b0,'(M,0 *Ɍ>R,D 0\0v2,0,4l8<.bmH'L7tBMiOWmXgb,l-dm+b 0˜-tm|߀.n'7G.Wngw砇.褗n騧ꬷ.'c/o'7G/Wogw=9/o觯/o HL:'H Z̠7z GH(L W0 gH8̡w@ H"HL&:PH*ZX̢.z` H2hL6pH:x̣> IBL"F:򑐌$'IJZ̤&7Nz (GIRL*WV򕰌,gIZ̥.w^ 0IbL2f:Ќ4IjZ̦6nz 8IrL:vɁ~ @JЂMBІ:D'JъZͨF7юz HGJҒ(MJWҖ0LgJӚ8ͩNwӞ@ PMrHZsr8A61N7!,~ O 4h= \iϐ|bEҌUx  ɋO%JT6~x .[^Zeo겋j $p^*T`$qRNh2.[DRl4^%1R` ,m4Mu\@!w '(K 0+ВLU" u%l(3;4F#4xKcTP#Ջ4L.$5 uûH @%H}z`C]e `D WMK/a) Rl,F/ȊTT~؟'Kfy (_׷Y@NЈ$ 1|3z1")wQ2ƣekj!^@ʏ 5Wg"X{P `yy5JT4DUARch?7ep0.JÌ8 ' 39Qd\ؘ!,VрB]0TBYPO[3BZQ٘&M2 1SRd$`󚗳랁]h{/9 Ob3TpnwJLV<wX HDB II>Û߬1N` D':QrLa_(HGzNbt gGiN0})2 qtNwOb)HΠ)r4洧HMjO TbqEGJժʔS(z4QE RfK[(TZΛVd5V丮>qW;i]֟t!_ڝ5J^]F'KYc֎J m5F/*ri:ذIvͭPדbH-ngR<9/ ;!R9 ЭJZ[-kU 06ee$< E`!醯Ϙ-W]n7%mgށ7+ yolP׳Iw:p3 ixCIQЮf\ JCxS{6x%zm+$I0ч;o`_x~ u'~m#1|n`H3, 0!WԱdž3Sʺu\d4a t`/<@‚lf g>LV)ݝ0$P4s&r};wPu۰o ̨g%sՕvCL9xخ=ff8ֈLlIDd)SfY0-ií6F,{;%c1fv o=i^Z >-:%R;)5W 1"pn3*)BoHc_SyFkΫ;<:_9#%w~tƎyGSvU}|fשt[cW9ؗ#|'/vݞmsǦ{~G& @B"mC>U)IE<0 Hi>Ug|DYȣ3wafEm`5`EX&gf{ ``an cXHtm-c:1``s5 Vsx1tjv5G $3壃F0MGwo(gYP:&WX nG焾5`Wz@GEŁDŽd ' /hs8uNb|XHY8׉{(HOMhȊ Y8XS|WVH8Z苠؈hXpȉHhxRȍH&*n}`B}x@e2Vc>eFU^3t(1 Clp}0  6E%it*_n&ya1 uEs HV?5?1 `c3v56` 6 Y<u- /9E VHfOg4]Kf4j>{ tиN)c ocVfnS`'85dhc|l]\5~h_kF.vKy M jy>}& i`i0gv&eX&?AIa8 4Ev9dhHї.Y晄F^_3 lmC9Hh`FuYwËxi6`pJ 8fnsnyADUd3dk~p5ƒ:'8lWzqt߹ٟC  m`:Z^Ұ zqq0`JʔYe(zxby᨟!=(AzHaUGJNȤ(5 5EOj&fwY\ d^ʚw7cJF:iJrkhojXڤBure`: z8ڧ;Jlb*ql=:iEQ\-^\6IYڦIjV<dx)@dJ~:ZU}'{p}074.9E^'T qjz% e][i>6abȕ)o*'aٚX n0j\uZG)EaiDٮv5H@`h7:گN Jj֛\Y>n@[4~n>y%ƍLf\պª0 + cT@&- n`F;?ð"g3\˥p+E)xy>V^ p͜\1{ 70*̜ Cƌ<Ψ˱kV O|{<\a;@f\4E:c80+ɄJ5>7Зl^~ QCҜ*S(Lm*0ڛ:hNQKAv5 0d|yB[kan4Q:9 G-1eKFhK|T>ӑڞ4RazM" gKJ9k]L?(kkҠШiٜHy^`[ akʊj]bK̹b{938 Aƈ cOvXcL!#nj Xi4޿6>8.L1~35L;Υ3l]?~V-NLN>F <JPZN\N>3lه Z_TLn5ȅ]:\2,؜pP8XP uiG~'qm?WCkc ̧@}T_vJ { (@ָH)CǜdQG2S|)&s"8$lJx)G`1CR|"'T`ϸSkGo'@bԒ-un=U+A*R_\2CGRCc#vS;t5}MߙSn1-iHS₦6fJڴj;i*P*Uxpoz՞}DNWjGfue=*ZV*ƥ}+\K*WZ7]gWĈƞijOӑSÊ˒(g[>sUΞcYhV[8ܿM!əag5c ߶#KS`3vϠ!Vf ]`j5L;ag׸)2ÈwSJ%{V;s+7G ,lôB^}5B+'e`٭_ݛh>c-_(w͇tb  A֗X }6Zy}|1^gOQhbJ84l8NĜ(I)47 aC:ˌ@t4ĈcNGTXL4@|N-WX FOfd3myQ^ @lpXDgF$fnjo:Ø2vT4[Z p4hr D%ӨFF ^kN*VVJVꌬi(4s筺ꫜkL*e:M4!$4Bl4d2F+-z-Jm6-+ $nۮ[*;C++̮ˮ˾p[0Yd ĭiq<%?$kD+X ,3h4k͓̰C1,?k)4-PGE@7=sP-_Oz\YTkX]zJ}J:ꥋI=;~{IC;ﹻ{GW>w>.ltVA94^gUjzTG70Jӌ5DV#J#)/QKLӗ^I:Z#QIT,ՠ|jSɮhZJ席ʎ\uU?BKZ$xVUk5*ǪֲZ̚1 b⯣+ZBFX]ݫb^(1EE,>ɖhi1 qY@z!Zf $Xڥ}fwɐey>ִbj+a`5n&Q)WEswaYv 8.+0ew.7e 0若+ ^tW`kJ=ZK1ʘ/zy pH*ops+X$mDa`XV0+0F / ڕ} Kc԰4!dE cvX }w! XR-z^/VE[cc/ CR(+gy˻2,0/X,_ˮhE g6 4|aY\yn߬6Ʌ_! UFnkLcɏ*-6gS9Mi|:ԒF+TaiUxBNbG,jE|k/kN4Ģ\8ҫXEsxl*'fsm)K6M 2&'Cy5.~u]w4KS3cr3&ItM )Ưlt]×eܖ)[㭔& GltKcrcnj`pEBcZ1rs(Y/'y*Vi } E6wU7}:Ayӎ;ch=:ؑ[:]g}t "wsϛ3{"JO~(MbE ɒ0ZONʄ,%˂a>ɳ'O| ~ӧџD6BΘ ZtgÝβR)OҲU)pOX`2[ˬc\D:K+meCsኋ6: \=k/C=gG{51ϨAܬ-C[)șٲdO}8PÆcuuL.F.dg eŁ7 hBcG+U|:[ 8ĬL+Mا>͇WI<{feʥl@!,x HP *\hà >0bÊ fthQcg -cH#OJ#Y@I,fL3ڔ3@f@k:IpQDZ4JMIdRbY֖Үz)ؙe6cfT$Ll%Ɛ%؅s%+].]}+ !),DI%p@YKȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0c\(CS !, *IS&\P 6Dpć J(-aE1G"G,q*]v SMi By3g<:(4(Тtoֿ~`~MRsw`s t=xY7AV܅eȓ v8w ~$h˕b)FHc6bbը1xM;=.d qRI%Z'2_ZQbIUy%Y"&k>fl香EyqڴKzJ4(Ht(G%>zҩh}ʴEj m:Q.+~bBJi^JޚiF+:+ڊ,{9CBK۴j"-V, %A1J>;K튫.ūtAFKAz/H3j4T0 ë\~H1#W nls wr#W=$ rϬr0rjC.s"PܳJLm7=uP,DTlZ]. 5;4͏ cMwcl{w㔷ށ -.]ޞ@:^~z +Zcdx[siޫ38p9@9:G>=-%|nIMODkm޷~V_VYe<?cߡȴ[KȟK J gP\H*@07b<˚մmE ɂSVUi5K**xa >sg l.ULa Pjgx j`3{ZUBxbkCB*TfͪRmۼ{ ڧo*UbxZ~JDYqYêVݫ;-x7!$Eoj^ }oQ5Ux»mnMْvݬ,o_wBTh}a Wsb vp1(߰ >,v"T*,t6NثνYԿ {aZ ڴo]<Ͽ?Uw~2{R_tFhVgxЀR|t+,8.R !0"+R'|\ {uDI{¤_hH 3ȎE {0#HD֘\w00̙hlp)tAh"恽I*蠄fAy^~je裐F*須),b"N駠N* 3 0iJ,̜*騲J@ҵ̮+k&JVk^vmZ}+{l榫ڢnKW2Jl'pZ-WS\wʹV^-`mNlHF]WIw6 R4(~?-$'?7^[(@nr礗8цg-z˦:A1cz A~KzϚMA.<ܡ~<]0Hy#?|8"uod: w\H>= =_<ßO}^7:π<r[G>U~Đ @Jw(_904Y~px-tHHL8s؟>!eQLH CB)p`찈0z;T"s&-M95!T3Ma[&}cӑ &3ϓה&>Si擓'= w4hILt( JPEΌjtGADVt-)<=ͅt-*ҘN6}J'ќ6pڬOSTcQ73/&Ke`T9FUC`&oh9Gmff0^UݬZȯiU>lg!Ug3aWsa$PzA "ֱdEɻaLJ mA=;V掲]lGQ+MБJlC[K3zl{rmYB/4eqܠ*wTI ]spjWw Nwͫ,^X < _7@ 6]i+ҳE'_3)HXԫ =/ilW4|m_KZ8} Y\ŮW̕^'\ ]ZcZ;Fu3ZGqULe:9[WrȵE=mv|8㷩 3Sk^=hA5 hE΅hNsL+o̙򧗌m&!8h.tI]g W:ۍۦ=>/y3) `^u,ie/Abі^A?c.v,l26Ϝlg11lf#n\cwMb? u`vkuO.< a`^nTC }q gΰZS嚳fUnKrnEl<lnr4GMFL5O]ԣ7I^ul:e~K{Ǎcvڷh]\;.dߣ ʼ"+1k˚n'swK~j<.xvs:ԲFIm}iMw\Zy^xT#'v7r G_6Rs E>%]O3i?q5MZymV~[VGKdWo}s-g(=H?hJ@xY'vC(O?`:WIU\gzMRȅWqf[O(^9&~\N[\iXWLxndԆjՇ`xVzs礇5s+džt/cr8fL9[pO(–@|d=EgfF䉡w聢|'~Fn'm?NzqFuThvƋvQȀnjȌGi|3Ө{xKظmna8X~xc踎x_ug8x~hʨ ! ,jg Ϟ{|P=C"J'WO'jܳPC T1FiL,2A A9PfI17ތsb– ոp=ʴHPD s9ِA !,i Ϟ{|Ȑ B6gȐ-iX"ƌC6 d#C hr=H6ɘO{)Rc΂:+ӥ `bJ;!ԨS]V%Si/s5X1:lIU4k1I| RdC'i2YA ?%k!,g (O?zFaCcH(1} >?1r\RUCg|MqF̅7̵gȧ$*bdJYL@ҜZ5h.puF,h܉gö0eۘԼlEWn".f#Kfb9fDv@FGU@f1g3Ac1ur΋ɧ8H3a&s-+B!,f HPZ1\\P'>{"JOQđ-Fɓ&+a4L.4 㞖!~z̢4=4dgO?kl4gGtâQ$#Tyj*X 2UYgDj{v !}J4On%O`i0ˬYfru|Wʜ6,uGet3%p3Q25SC^hLCf81hQZH==O i@!9,f HP *\hà >0bÊ fthQcg -cH#OJ#Y@I4R̔9YPϝ<TТ9")R͢L թR] Uk֙]~VXT*dƖ-ön#;%]E !,& ٳ! L8  $X0Y@!, i Ϟ{|PZ.jiϐ3Y(Ō /%cȐ{}:rH' d$F Xs@|`T(B0SJXtI9|iC*l!,  H@g*\ȰÇ#JHŋ jq Ə CIRdǓ\ɲ˗0cʜI͛8sLe@ JѣH*]ʴӧJI'!jʵׯ`ÊK٬ҪM{VXv gx}VԿS}qÈ'Rǐ#Oڋ,v9*KЯd0 oM0cSLefu3|1EM%e l} {6 Nf^?>B;Gol3<:|C:<~ıw-g1߂$= J/ {1]rŶx 2F2Ax+c1T2!viDb%ҋIK* I@!Xd$aL2:) Q6SLUYCgS*^{}&vdɐ,)Lpʙ .c, DK`PKEA*˟>N"gs.S'63DBͰaKFKIaiF4SI$h=Ak P-J U"3! @J9۪@$,2X JBH㌷KB` @*ZڋT.VL*"{yo*Є,<'˵Jj)B ۋ Bll!@@Wk1[!1#6,D-԰0m0[s͌LĆ1J2ڻx Kp3*bg/Nf?p.8Z <+^D@3nPr{i?ܛv! |cfW<7JWp0 0/e.T`~z(p]/§@,]*!0|,ʶs J1ËH2i'Hɜ f4D .,؈A0{F$EA3x&4BCj2VT\*)7 ./5 ^.ȳ-"c#lG&:PNb:$XI9b2 *țPX)3Z|38^ 0=]1d#1fFBe,eKgZ44! 3K⌹=K>1K:(Nf85zN>3vYY'> ͙X9І:a2 4&*TͨF7 !R GGJҒnģhB!REAeRVa)S R >nrDӢG*MW] #  X0V3TԦYŵU$ЈЇUiˬ[kAPqAW 0CaX_2+MԜU#&36Lv6` bhW"%C,pVkYeUlLh;Z2Kv[m 6kwrJ[FXsn `/(4*3,X68Unie @(? Ds ܬ4 ޸}W dYaR? og2f8EuXK2ーd0L!0 1$ -حz]i x)4єz**np,ViaC՝q8cLJ,ٱ.z#$Su& XD"dK6nsF,:3vγ:>~xѺWЈ ,ѐ+}lh G҉LI{hL{Z4C-jDԁ>l*]PcyڰdTYI4RGD+h ލ\@mmOUU.򖵋UڕE3@l:'`CR DBW^VUFt;FIn Y¬12> +!*7􆁇!f8\!pi %a de+lu$@ы㍷k!F{x+!{@|!<ѕkJ~8B\v:p;H0nU1t:_3]q5@2UoV@Hƍsz 7u9dx Z<4d !Pεyum!{ rQ{߾;߬.F/97_i}n* P>HtOOkfURHzC"g ?hD{7bQU`l 4v]1 ߵE_b Quz䆁UU3n `YUY6  0Jvw"xezҠ5:"lLrgC%>n]ÃNZUly#)x}[SV -T(|6{jY2&B8r&T1d.)&`dn-:!XYrz9& Ed^D^ @Hc}1z S]H)Hx>N5wh?aOr- x@ Wa4À?o'\vy 4cbc':g8$3t$0.P31lddMb f ۨ"A 1; 6AY% ]`X7~~c7{HqZX97;uI|}!xk8#(Qג.|%1Ie0Yw8i}3{$klm 8@5cS9. b؊=|DXS6o!V^LI;>xO3uf V #Vز2@%UזaW8P%DY\T~rK%7~E (6 nPr;URs~n~#[6HF9.`]V=>%GaWȸ{c`=l m9D 5dy7Ve]E]rYRyx!AUu צ3pm|Q^c cOٜ6~C9AX_65Z):GZwi)igY``,Ul ean0a}՝wF}# sOub2b K0n.0Y4%9V~>YCX(dVt-Ff/ 48G} pc 1om)ҐeӤ) @bDF>&Y.ŐgzwM\ na Yz3 ʉ/= mƗQK\V \{regi^kmoK`HMu[yy}|>M*u>hm$DMh<@kq\PDM %<3Jzm8KNKǹWY E$*ppU,'YΓtYX<Î} R]Lm .MOU j3΂Ӟ}.&<#ep 5X: 5SU#ϴ)"~^J obYڂZ$N$0=@0tb5s^}"*\Z3CZp[3Esy+ 0[x,K"O|j#v W?`h\DbԤeo.xD (1 Uu/ A'% D_yo1 ̐R (QCqI/(IS>?_K ?.RS/5Ykeg*R55?_QYA@Q_2]p$XA .dC$NU.`Ò1k4i!EeÆcْe/1eΤYM9uϚ.YH!K>;2SQNZUYnׯO1dҤK5kJv[qΥ[]yׯ^d6sv-Zfcȑ%O\e̙5V\aEw&]iԩUfkرe+Ammhko'^qs zsɥO^uٙ7ǭwŏ'_ys!, X=dlCJL!'zX,ŌeBRڞOQ!{ Rcr4%ɊKq3g=I)XrN:ui'G9k σ%si6*S٭gk@%5L֮a9-k,׾ɊǪVvJrabsUbl\,0VE\* PM>ĆC8OB*cy~s .}$0/HLx'%S|!,'-[&a]*jР,,XJ0ؐh EV4,HAv0 Z4HPD8!-E[] si47@5U/Vd5TT.ۆT^Inef+Ym,o$9M+Yq&DfHhTŶ5ar fX#h#+4VzE66YfɊ!,- HPZ1\\ȰÇ#JHŋ~⳧G>2Iɓ#?yeH!QʜIMi8Ϟ*vѣHqvShςMJՊy>ݪկ`~ٳhӎ[::K03o-.CK0Es> Xǐ6bͤMp.Edlٲ:֋ 4cΚ1+(NC:ݶe&v,.ȯ~z d=X|ؓN>pT 9qKZV:>OZ̲ H(h& 6 (f%3P%v z(Xf0ð" 40(YD(D s{ 20H @iXrH37c*ӣ4Pdh& 4d}TmPxɐ0G"Tnؙ硈/HJ/sF#)laFL1G1?$jj"he(hp*'w8D3A {`J'4$ M1F[뀸&8j+ UJ%n8SV P{<#G3~o$ 0fldjC,Sj~8éC8ÇKT (2qͽ?d1|-Bl@m:(sH'{m쑯l2/B @<ࢃ aLq &Wc-`.B 1ƻC.S47-DT K|S1̍I.iG-RۺΒ' ,G͍Kd]/{Rjq/qGh .M.u[zSCs/(K1+o?qZ"2˽dA[+mV=I` ( Z̠0ˆ '~( !,% H0קp\p`.>{=|r5dXbB,Ibq FhQP᧐(,I`=7si|<[tೣD@g^,ի\),kVZ3:kKpָ(O}܍͘BnI [ ٪4fVLV/ |sV  AO2ZZ9'Hu9-mj~ΩӲen!L`TA sǾV}]Z6UA|, Vkҟl4(ԃ utXL^*&"} [* x^N.JSI$)|9b{  lp, $A3,{Ҹ6ч ܸAA!, q}F}•p`‡;ujbO h#\!zf.&tXa$K.Ы4c!.'A rpĬbO )'£=TRZgƇPq65hEbf, KuJ0aТA@+ݴAiI]ɢ)nC4`eʪU^4v*VcfT*&aϩ@'{& mF=WJUɍ3uw%F QPJJ5O{`kjW6`BjRh7 \lgH^tm6R|f*'C]n̸6۱!w>ن>ml$堠xO~AȲaA"ZFU2`,nT@|j6+(0#m8*x@mЈ@Z @yҲ謳4lNbk>) wR$VnP5϶.,rv 0}L2z:%S +0)``lH@i,z~Ɇ@&-%ʬ -@n`)fHts$2\I[]J%@#kEtM @I$+-d np8M-G.Wngw.x@!,< K&YaH `,b.i'V#uF@E% @6%a+gcU3fO#7IEqWhXs dA8S 0h `#͙ҥ-#7be*MdҶZu/ښ6ilv],Ve3W E5-6["lp2iH Q2ĔTJUɍ6ڰY Е"dk*XŠ56DH*S$YrMYJpjW0ni@*2 \]a kcM%Ҟoՠa2LV)!,/ -֬Aְe*LB%VdIL ={`J$#J0Z@h0Ȣ0h `Ȟ݌^FY -Yh8-zt,WTVbƆ*0gpuLum636Z@Tb4H9;#+`NS;c#i1!O%њ@ޮ%a+XE= $XΘxfBi,m4gX`@!,' 5s&`f *\ e 1[q^*fPGGiR Ypd%T2,^bՌ&͐4>SZd`h,RL ^Ub+YmR SYZFs#ͮI 2eˬ\6R)-TpFUgSM&Mi$4ZpT8k# ӐuP)IVxu8c!Ҽ &-l ծ#``5ga ` t 6ضƪ؂XhSiXAd4ld! ,% 5왴Laf*d̆ILH"+Y4nF4 Z%`4(eh/Ț)aТAf3 ev3Z#nzydѢIk(Ri>e1* Q4Y U46kMVئᶑ[.^ɞ `e}TJUYoH,qHY čEƙT< WYJ~U+ ]JGj.] n* 4agР앪yam,HTrY?9pr!,$ 5sL &ð{j3%J A`H5 FBbd]E FVK  6&Li% ]ɢl4˜JU9YzO`BszԠ6hJlg lL.J*qF@6![)^Vo8c!MsE@ @4p]ΕЦҮ"``7uZ3hw6ZDkWqiφQ `@!," 5왴La3gJ%"X2f4XIVd%IZ%R*bh/O6paТAf3}7D( dѢIk(ҪҖf憨שU46J6,n&jɞ `eVJEYoH,1JTݝϪ6!RJXBEVNG89.FvYU3hcjW/iX49B`aKKq!, 5sLa3gJ%"X"fR,f͚1 IZ%i&1K#fH5Lְgw-$lX*4P`85ЦAJk6&TԮ PVv)0d25]w 73lL0J*qFl s\)4MqF@fm M]YٌU,mR&+d18JESmA~pÀbcM%&|/V* a@! , =(1k‡0b^,Т44r 2I˘-{ @h&ٰ6&aТAgk)i"-XsWhѤyZAi5e-* 7"ɪUlS+ @*7Fcu&{&aÍP)U%7`ӆ HV$ +`O#+n#iHsFfSzZ6n}- lZ U R}4ᩬX2(6L6,AY+!,"ٳ! 8DZ :G4 H(- !,  4h= \ȰÇ#JHŋ3jӞ! C$ɓ(S\ɲ˗0cʜIfMC2͟@ JɊ>ԹG@PJJ?K謫ׯ`ÊKٳhӪ]˶وJA2d*ͭݻx߾{B;dH umƐ>$0ỏ#}mΝR^2O ӆ€BcX1貟oGnU'C NmY-sjc+y!Aӫ_ yCG6fGdϿI z ^C^C<ŒL|b.I`L3 xqDb `Cn h'b0("E1$GDbD 2"Q '.m痐y(D4{tQ[P2$袌6裐F*餔Vj饘fj)Gh駠*ꨤ6zQdJI꫰En ,$#ke믭bk챻b.4F+JCfvN C 覫;D C$Fl/Q lko" +&Wl1 _Q2 ,$lҀ,0,4q8Ӽ%@-4 F'L Q4PG-TWmXg\w`muDbmhXp-\Mx筷v߀wn8OtGU7Jucy7k57K#֤S9ܩz֭;箻CW./7'Q3G/'GCyw O?=ާ/$~ܫoz/TJw pCƺ)ЀtB~Xw9v4` @Pu Fh aְ{7>ψm{BH%B>t!h>$*ъW [H$P\c<,p HGͱx4y@R-L!i?2q$$')IR ,$!Nt';iQR$*MJ2~"G32;+X[n }ɿ\2$":`bZcd9L^탚f59KZ2Ж&(kR|&5i^7 w6gEPs#T';r3$cXyr b@#ZÉR4(3SGR%HRt- Gcė")Cqz: a Ct{a+w*ͣoi#ԧЄȤ" ZըbUl$-IED|'Yeh3ⰕbZO]fr~\uC~}j:m'X*נ idcXcIu-!AV:Cئr?e<[a|-n1ڰ"pWqg"2$u+5.vYv6ig}y[/ztlQY^&akޫox[IWJڝѸްnNh_55'}{UBXl\|R a*Šp_Gס1kAQxlMvqk yBow%SN^_e$OyUq֘CLx++]\/{a6D1[â<3Ub>p  gemEq=;aG?t`ղ/ϛfK\O FMh|58CRp} P2oIUwtf8a=nk;-5Rc,XLcZ%0}hbY2ack`pη67j-Fz3Z˾7+:1ݿ Ttn$3f`?şeWQFտdDMW8a\^6i?*hUG[rFxRr:WhQXG]WR nW[9h "'b A@G5֗kO![6yWՃquew(*hs@sFhsBW4)XPsQȄMr)v3`xrtiZH/6;jIlphYq8stxszxsb|Cq8~ssxoqNo4o8(xc膘! ,r Ϟ{|P=C"J'WO'jܳPC I(0㐐GJeʈ#dѠ̙/I1#Μ>RsfMEC)-KAx49SE%)0Wƭ\ !, Ϟ{|Ȑ B6gȐ-iX"ƌC6 d#C hr=H6ɘO{)Rc͘5sV,K=?9Ka3g3YY/iX1+vr*êW"u%CaaԕO=NϨsmr2i$b<$*|{4t+/C8fQ!, (O?zFaCcH(1} >?1r\RUCg|MqF̅7̵gȧ$*bdJYL@ҜZ5h.puF,h܉gö0eۘېY[y٢uoYbu;,ZbVW˘w5d#kY{Isfl HԨf$@Lv"сb{\ 3 }X,#A\{(?{D%C#e2,ӳ&|6XC>8(]= *SlWψ!8ҙnus`Xs2t 66[@lm2 5+n{J@+a<0n/i;Sf – @%X-r a7 6X:$ |͢f#KmVˆ]{h#vO>lpFT  B3,x,1R 3J/Da4l׋ZDy`tv. 6 Bd"M*`c#,U`Rδ!@l$.K-$,E#+ +cPN.%|3lPɖTu %4T^f`~i: 20E +5 +l Q gIs(J*Z!,! F aÅ J$1Ć2jl2f7n<8 e3JY.Xt(R,ȤR=8J{Y ke%`<Ȭ*3b|ZUfъ#3\?0h `s=|m lFH5 W\Jqu "UV̍Ϟa`Ջ1f6sKT6Fݦtk^NL߿ ZtT8k#6l "x߬NŊծa X plPiXdß/+ JA]EA*W c̅8 04LQIYB 4A,RHP@!,. F a… J1ć]l"e.2Ida`%XeHiTHҡ˖d`Ǘ7[φAKFOˢJfшa5 !կˬ 6*jbhtTFnZvZ [7g U/{ٜ+-˘-LE[lv L:fҞ ɺҙYmܰaihRIװg{ FhW6]֮#`06d=s89 0I3LQSA @c,@!,: F)d :QA̖%[f a`%븬]*fѤIXXX)eIX*eC`BA0Eɦ'BA i* 0h˨Zuݕ,6ceEn*`޼6/Ru8f8Zɞ ؿ+Ynب42b &ծ^Þ%XllYm , ]G al"$zlo7t qiXhSiChKLe!,@ FDPڲ",4 RAְ!P!GaI`$JTIr&̚7 ƳYllsh$ *-hkV7m.|& ٬^u#۫YYJFTUJKUnJogHȰլRUr㬍7lBGR$ɬIװg\ @BxyUZV n`P;BǶ$3^tKBJB{NXˠ!,D -6, a # B* .% 0FLLh&QLeh&٤\0h 9SZh7%< .G<& Uf(WѪeplR6?VMZ6O~M63;:bZUZJnF6}#mR5UiN#v&BgF,mT~֮lEp0Ȳ9k@X9s4TjԣZZUZ@!,F  F˒ Kve0rxp.i(\ 4 4JK&ˣH$@#Acf* x&`05"ثg] (Y@ 6OVdcf*͢MҰ&{& [֬gma70"eUM]=)@l-A$ida]3+BWJ6M$YϜq ,ќƖu m*ij$a-;!,G! FL6,B  kCP!ŋҒ) A$  >"\$40e34`ҚEsɦ3=}0 Z4Hv0OFkM/F[+Y6]&v=DUK-Vd)ۤKSʓvSMLǎ\Z)U%7pæsav+E2jiTz {V8c!ѺMJhVV62JpkW(:M$YϜɍ < :uam,!gkՄlm@!,L" FD0eɆ%kh0E0FETHőd!X I1Kiрg ]& M p"Mfh% QA ] h镵Vl#XYDeӍU`KN6V)3ܯ.7d<b2+Yn؈4쬴J&ծ^Þ +Mgl"jW6elSrpQveu&3gv#hAg BJB{JX!,Q$& F&L0‡6tÉ -j<hC~RGi#KV$"gVDI2b3 EIsa,eώ*hBGA*TZ GJ%ՠRhU1rjPY 6VMNgN0,&$lv,kAJkM\n6!V8-Y +9Xr, ޺QςNY0AnQi*ɞ XQ3AWJUɍ6ܰYiʃT#-eM]}plGjsJHhY,m ]GxalDҔ3E,L/5LQ i42!,h++ F*4(p‡6t"ĉ-j<1ƍ=~PƑ K CgKʌq p.93"0?e MXã`P*)OGEŰk)Ð!+m&-*5 `KHzUէ^twxtWm lW$^Yz X`GY:\M\&Gx4=q˳#a4'{&mGt˶RJnHP. )mR5̫rGF_F?x6e&xG%+BS78M$L{APôaApvA-M2L`!,2" F8PÇ6( 3h%N| Cg5nT8 X R&d(MC`PbM ]BˉaL@m&tLZN6I%a!` #ҩJ TZ#nzy8HlZ_t)lA7[]KVd[zLշ,AnB.@*ɞ xIQ,%gmaC;0і6v w.Fd @Bdh3laUb3+B;_pH1ZrX mT~ Y42k!,F H*\ȰÇ#JH+jȱGHɓ"6˗U4͖rRϟuV х<5&=(ѡ=JtgԩX_:sqk֯(v lWcњ]FlB[ܻ Nԋf8KX +"cŐ6821[.ä́fp4iБM&5hհW~{۸sͻ Nȓ+_μУKNسkn;Z4iϠq^Wǻ> X՟ {Y哤/ 7_4A'FL4ނ58 4@G!GI0Fn5K2xȢD BbѸa7N +ȣl\dD ccޱK:$<#@92Y 5(M*L! lD2 5XI$R_0 #0ҜΰA*})PHƌ@o*P.Lh@쵉3jF0),ʣ3 {XF%FJPM2̊!,4 FAISxfz=kxP0`MHP 0iem@%Dr, $]#FYl$:rhŰ`I`ͤEkMJgؕcY;JeիjG6B}FMкY2dػ[RUrL7lGQZH{YljWaJ2 36R, @Bdh3̨T n`9BJDkհpGs XhXhSlAhϊBK& ֲ!,5 FA\(-B>(qϠ%04 md8X"-,iRVJP ##F &]/LZM6!s0 4HҨp)fIsӋʡ%l 0_gʺMԳi%6!M;LݲM;;RJnHJV6vrf#q&BggІ,Y = ]VG06\:s!7[ڰ6TJvZƂВ z@!,:4 F Å J,1ć]F UH$)<2%J/$8cMm޼ɱcG>yb r"јFќ@sf\rҫXjʵׯ`B{k3 y,\h+ V`U.vٽ*lf;,$lv% ai59] G,tgz.rcrSLsNLxOěgmaC=Ұ*EJnTz N,Qn8c!rHh3Z,m֮Ei F$u9ZBD \ôaAFXA,,Y@!,X F*\ȰÇ#&8Pŋ3jHƏ C,ȓ(SN,M˗#YICJs@=HУ.UiLFJ5ԫYB`eVسjE6ږm㾅\u͋VZz=LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿA 45A/7  p,a%`@oB!T[H!0B8"(M#ыEK2#0<,5ƋD+Y/[ i#ATamXB3Hh#[va*LƜ c$D"!+. #ll8F Z[HІ@v:)AhXdmð ,J30mXF%R& $# ,!x,K FA. */ #include "bartab.h" #include #include "dcircleprogress.h" #include "dwaterprogress.h" #include "dslider.h" BarTab::BarTab(QWidget *parent) : QFrame(parent) { setStyleSheet("background-color:gray;"); DTK_WIDGET_NAMESPACE::DCircleProgress *circleProgess = new DTK_WIDGET_NAMESPACE::DCircleProgress(this); circleProgess->setFixedSize(100, 100); DTK_WIDGET_NAMESPACE::DWaterProgress *waterProgess = new DTK_WIDGET_NAMESPACE::DWaterProgress(this); waterProgess->setFixedSize(100, 100); DTK_WIDGET_NAMESPACE::DSlider *slider = new DTK_WIDGET_NAMESPACE::DSlider(Qt::Horizontal, this); slider->setMinimum(0); slider->setMaximum(100); slider->setFixedWidth(100); slider->setFixedHeight(20); DTK_WIDGET_NAMESPACE::DSlider *sliderSize = new DTK_WIDGET_NAMESPACE::DSlider(Qt::Horizontal, this); sliderSize->setMinimum(100); sliderSize->setMaximum(400); sliderSize->setFixedWidth(100); sliderSize->setFixedHeight(20); auto layout = new QVBoxLayout(this); auto sliderLayout = new QHBoxLayout; sliderLayout->addWidget(slider, 0, Qt::AlignHCenter | Qt::AlignTop); sliderLayout->addWidget(sliderSize, 0, Qt::AlignHCenter | Qt::AlignTop); auto progressLayout = new QHBoxLayout; progressLayout->addWidget(circleProgess, 0, Qt::AlignHCenter | Qt::AlignTop); progressLayout->addWidget(waterProgess, 0, Qt::AlignHCenter | Qt::AlignTop); layout->addLayout(sliderLayout); layout->addLayout(progressLayout); layout->addStretch(); connect(slider, &DTK_WIDGET_NAMESPACE::DSlider::valueChanged, [circleProgess, waterProgess](const int value) { circleProgess->setText(QString::number(value) + "%"); waterProgess->setValue(value); circleProgess->setValue(value); }); connect(sliderSize, &DTK_WIDGET_NAMESPACE::DSlider::valueChanged, [circleProgess, waterProgess](const int value) { waterProgess->setFixedSize(value, value); circleProgess->setFixedSize(value, value); }); waterProgess->setValue(60); waterProgess->start(); sliderSize->setValue(100); } dtkwidget-2.1.1/examples/dwidget-examples/collections/bartab.h000066400000000000000000000015451352002233700245060ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BARTAB_H #define BARTAB_H #include class BarTab : public QFrame { Q_OBJECT public: explicit BarTab(QWidget *parent = 0); }; #endif // BARTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/buttonlisttab.cpp000066400000000000000000000066611352002233700265100ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "buttonlisttab.h" #include "dbuttonlist.h" #include "doptionlist.h" #include "doption.h" #include #include #include DWIDGET_USE_NAMESPACE ButtonListTab::ButtonListTab(QWidget *parent) : QFrame(parent) { initData(); initUI(); initConnect(); } ButtonListTab::~ButtonListTab() { } void ButtonListTab::initData() { m_buttons << "Button1" << "Button2" << "Button3"; m_buttons << "Button4" << "Button5" << "Button6"; m_buttons << "Button7" << "Button8" << "Button9"; } void ButtonListTab::initUI() { DButtonList* buttonListGroup = new DButtonList(this); buttonListGroup->addButtons(m_buttons); buttonListGroup->setItemSize(200, 30); DOptionList *optionList = new DOptionList(this); for (int i = 0; i != 10; ++i) { DOption *option = new DOption; option->setName("aaaa"); option->setValue("bbb"); option->setIcon(":/images/dark/images/delete_multi_press.png"); optionList->addOption(option); } optionList->setCurrentSelected(4); DOptionList *optionList2 = new DOptionList(this); for (int i = 0; i != 10; ++i) { DOption *option = new DOption; option->setName("aaaa"); option->setValue("value-" + QString::number(i)); option->layout()->setSpacing(0); optionList2->addOption(option); } optionList2->blockSignals(true); optionList2->setCurrentSelected("value-3"); optionList2->blockSignals(false); QHBoxLayout* layout = new QHBoxLayout; layout->addWidget(buttonListGroup); layout->addWidget(optionList); layout->addWidget(optionList2); layout->setContentsMargins(50, 50, 50, 50); setLayout(layout); buttonListGroup->checkButtonByIndex(2); buttonListGroup->addButton("1111"); connect(buttonListGroup, SIGNAL(buttonMouseEntered(QString)), this, SLOT(handleEnter(QString))); connect(buttonListGroup, SIGNAL(buttonMouseLeaved(QString)), this, SLOT(handleLeave(QString))); buttonListGroup->clear(); buttonListGroup->addButtons(m_buttons); buttonListGroup->checkButtonByIndex(4); QPushButton *b1 = new QPushButton(this); b1->setText("value-4"); b1->move(0, 0); connect(b1, &QPushButton::clicked, [optionList2] { optionList2->setCurrentSelected("value-4"); }); QPushButton *b2 = new QPushButton(this); b2->setText("value-3"); b2->move(120, 0); connect(b2, &QPushButton::clicked, [optionList2] { optionList2->setCurrentSelected("value-3"); }); } void ButtonListTab::handleEnter(QString text){ qDebug() << "handleEnter" << text; } void ButtonListTab::handleLeave(QString text){ qDebug() << "handleLeave" << text; } void ButtonListTab::initConnect(){ } dtkwidget-2.1.1/examples/dwidget-examples/collections/buttonlisttab.h000066400000000000000000000021621352002233700261450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BUTTONLISTTAB_H #define BUTTONLISTTAB_H #include class QListWidgetItem; class ButtonListTab : public QFrame { Q_OBJECT public: explicit ButtonListTab(QWidget *parent = 0); ~ButtonListTab(); void initData(); void initUI(); void initConnect(); public Q_SLOTS: void handleEnter(QString text); void handleLeave(QString text); private: QStringList m_buttons; }; #endif // BUTTONLISTTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/buttontab.cpp000066400000000000000000000062451352002233700256120ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "buttontab.h" #include #include "dbasebutton.h" DWIDGET_USE_NAMESPACE ButtonTab::ButtonTab(QWidget *parent) : QLabel(parent) { setStyleSheet("ButtonTab{background-color: #252627;}"); DArrowButton * arrowButton = new DArrowButton(this); arrowButton->setArrowDirection(DArrowButton::ArrowDown); arrowButton->move(5, 5); DWindowMinButton * minButton = new DWindowMinButton(this); minButton->move(30, 5); DWindowMaxButton * maxButton = new DWindowMaxButton(this); maxButton->move(50, 5); DWindowCloseButton * closeButton = new DWindowCloseButton(this); closeButton->move(90, 5); DWindowOptionButton * optionButton = new DWindowOptionButton(this); optionButton->move(110, 5); //////////////////////////////////////////////////////////////--DTextButton DTextButton *textButton = new DTextButton("Test Text", this); textButton->move(5, 40); DTextButton *textComplexButton = new DTextButton("Checked Button", this); textComplexButton->setCheckable(true); textComplexButton->setChecked(true); textComplexButton->move(5, 75); //////////////////////////////////////////////////////////////--DTextButton DImageButton *imageButton = new DImageButton(":/images/button.png", ":/images/buttonHover.png", ":/images/buttonPress.png", this); imageButton->move(5, 100); imageButton->setChecked(true); DImageButton *imageButton2 = new DImageButton(this); imageButton2->setNormalPic(":/images/buttonHover.png"); imageButton2->move(35, 100); DImageButton *checkableImageButton = new DImageButton(":/images/button.png", ":/images/buttonHover.png", ":/images/buttonPress.png", ":/images/buttonChecked.png", this); checkableImageButton->move(85, 100); connect(checkableImageButton, SIGNAL(clicked()), this, SLOT(buttonClickTest())); DSwitchButton *switchButton = new DSwitchButton(this); switchButton->move(85, 200); DTK_WIDGET_NAMESPACE::DLinkButton *linkBtn = new DTK_WIDGET_NAMESPACE::DLinkButton("Link Button", this); linkBtn->move(10, 125); DTK_WIDGET_NAMESPACE::DLinkButton *linkButton = new DTK_WIDGET_NAMESPACE::DLinkButton("Link Button", this); linkButton->move(10, 155); ///////////////////////////////////////////////////////////////////////////// DTK_WIDGET_NAMESPACE::DBaseButton *bf = new DTK_WIDGET_NAMESPACE::DBaseButton(this); bf->setFixedSize(100, 30); bf->move(10, 260); bf->show(); } void ButtonTab::buttonClickTest() { qDebug() << "clicked"; } dtkwidget-2.1.1/examples/dwidget-examples/collections/buttontab.h000066400000000000000000000023511352002233700252510ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BUTTONTAB_H #define BUTTONTAB_H #include #include #include "dtkwidget_global.h" #include "dtextbutton.h" #include "dimagebutton.h" #include "dheaderline.h" #include "darrowbutton.h" #include "dswitchbutton.h" #include "dwindowmaxbutton.h" #include "dwindowminbutton.h" #include "dwindowclosebutton.h" #include "dwindowoptionbutton.h" #include "dlinkbutton.h" class ButtonTab : public QLabel { Q_OBJECT public: explicit ButtonTab(QWidget *parent = 0); public Q_SLOTS: void buttonClickTest(); }; #endif // BUTTONTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/cameraform.cpp000066400000000000000000000041631352002233700257210ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "cameraform.h" #include "ui_cameraform.h" #include #include #include #include #include #include #include #include CameraForm::CameraForm(QWidget *parent) : QWidget(parent), ui(new Ui::CameraForm) { ui->setupUi(this); camera = new QCamera(QCameraInfo::defaultCamera(), this); viewfinder = new DVideoWidget(ui->widget); viewfinder->resize(150,150); viewfinder->setAspectRatioMode(Qt::KeepAspectRatioByExpanding); viewfinder->move(ui->widget->width()/2-viewfinder->width()/2, ui->widget->height()/2-viewfinder->height()/2); viewfinder->setSource(camera); } CameraForm::~CameraForm() { camera->stop(); delete ui; } void CameraForm::on_horizontalSlider_valueChanged(int value) { viewfinder->setScale(1+value/50.0); } void CameraForm::on_pushButton_clicked() { ui->label->setPixmap(viewfinder->capture()); } void CameraForm::on_pushButton_2_clicked() { viewfinder->setMirroredHorizontal(!viewfinder->mirroredHorizontal()); } void CameraForm::on_pushButton_3_clicked() { viewfinder->setRound(!viewfinder->round()); } void CameraForm::on_pushButton_4_clicked() { if(camera->status() == QCamera::ActiveStatus) { camera->stop(); ui->pushButton_4->setText("start"); } else { camera->start(); ui->pushButton_4->setText("stop"); } } dtkwidget-2.1.1/examples/dwidget-examples/collections/cameraform.h000066400000000000000000000025101352002233700253600ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CAMERAFORM_H #define CAMERAFORM_H #include #include #include DWIDGET_USE_NAMESPACE namespace Ui { class CameraForm; } class QCamera; class QCameraViewfinder; class CameraForm : public QWidget { Q_OBJECT public: explicit CameraForm(QWidget *parent = 0); ~CameraForm(); private Q_SLOTS: void on_horizontalSlider_valueChanged(int value); void on_pushButton_clicked(); void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); void on_pushButton_4_clicked(); private: Ui::CameraForm *ui; QCamera *camera; DVideoWidget *viewfinder; }; #endif // FORM_H dtkwidget-2.1.1/examples/dwidget-examples/collections/cameraform.ui000066400000000000000000000044351352002233700255560ustar00rootroot00000000000000 CameraForm 0 0 506 268 Form 10 240 201 16 Qt::Horizontal 290 10 200 200 440 240 51 20 ok 10 10 200 200 310 240 61 21 mirrored 380 240 51 21 Round 250 240 51 22 start dtkwidget-2.1.1/examples/dwidget-examples/collections/collections.pro000066400000000000000000000035171352002233700261430ustar00rootroot00000000000000QT += core gui multimedia multimediawidgets svg greaterThan(QT_MAJOR_VERSION, 4): QT += widgets QT += dtkcore linux* { CONFIG += link_pkgconfig PKGCONFIG += dframeworkdbus } TARGET = collections TEMPLATE = app CONFIG += c++11 DEFINES += QT_MESSAGELOGCONTEXT unix { QT += dbus } !isEmpty(DTK_NO_MULTIMEDIA){ DEFINES += DTK_NO_MULTIMEDIA QT -= multimedia multimediawidgets } else { HEADERS += \ cameraform.h SOURCES += \ cameraform.cpp FORMS += \ cameraform.ui } !isEmpty(DTK_STATIC_LIB){ DEFINES += DTK_STATIC_LIB } SOURCES += main.cpp\ mainwindow.cpp \ buttontab.cpp \ linetab.cpp \ bartab.cpp \ inputtab.cpp \ slidertab.cpp \ buttonlisttab.cpp \ segmentedcontrol.cpp\ indicatortab.cpp \ widgetstab.cpp \ simplelistviewtab.cpp \ singlelistview.cpp \ singlelistitem.cpp \ multilistview.cpp \ multilistitem.cpp \ graphicseffecttab.cpp HEADERS += mainwindow.h \ buttontab.h \ linetab.h \ bartab.h \ inputtab.h \ slidertab.h \ buttonlisttab.h \ segmentedcontrol.h \ indicatortab.h \ widgetstab.h \ simplelistviewtab.h \ singlelistview.h \ singlelistitem.h \ multilistview.h \ multilistitem.h \ graphicseffecttab.h RESOURCES += \ images.qrc \ resources.qrc win32* { CONFIG += no_lflags_merge } win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../../src/release -ldtkwidget else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../../src/debug -ldtkwidgetd else:unix: LIBS += -L$$OUT_PWD/../../../src -ldtkwidget INCLUDEPATH += $$PWD/../../../src INCLUDEPATH += $$PWD/../../../src/widgets INCLUDEPATH += $$PWD/../../../src/util DEPENDPATH += $$PWD/../../../src CONFIG(debug, debug|release) { unix:QMAKE_RPATHDIR += $$OUT_PWD/../../../src } dtkwidget-2.1.1/examples/dwidget-examples/collections/graphicseffecttab.cpp000066400000000000000000000050711352002233700272500ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "graphicseffecttab.h" #include #include #include DWIDGET_USE_NAMESPACE GraphicsEffectTab::GraphicsEffectTab(QWidget *parent) : QWidget(parent) { auto *mainLayout = new QHBoxLayout(this); DBlurEffectWidget *blurWidget = new DBlurEffectWidget(this); blurWidget->setRadius(30); blurWidget->setFixedSize(200, 200); blurWidget->setBlurRectXRadius(100); blurWidget->setBlurRectYRadius(100); blurWidget->setMaskColor(DBlurEffectWidget::LightColor); QPainterPath clipPath; clipPath.addRect(0, 50, 200, 150); blurWidget->setMaskPath(clipPath); QVBoxLayout *blurLayout = new QVBoxLayout(blurWidget); QPushButton *glowEffectButton = new QPushButton("GlowEffect"); glowEffectButton->setFixedWidth(100); DGraphicsGlowEffect *effect = new DGraphicsGlowEffect(); effect->setBlurRadius(5.0); effect->setDistance(15); effect->setYOffset(3); effect->setColor(Qt::darkCyan); glowEffectButton->setGraphicsEffect(effect); blurLayout->addWidget(glowEffectButton, 0, Qt::AlignCenter); DBlurEffectWidget *blurWidget_behind = new DBlurEffectWidget(this); blurWidget_behind->setBlendMode(DBlurEffectWidget::BehindWindowBlend); blurWidget_behind->setFixedSize(200, 200); blurWidget_behind->setBlurRectXRadius(10); blurWidget_behind->setBlurRectYRadius(20); blurWidget_behind->setMaskColor(Qt::black); mainLayout->addWidget(blurWidget, 0, Qt::AlignRight | Qt::AlignVCenter); mainLayout->addWidget(blurWidget_behind, 0, Qt::AlignLeft | Qt::AlignVCenter); } GraphicsEffectTab::~GraphicsEffectTab() { } void GraphicsEffectTab::paintEvent(QPaintEvent *pe) { QPainter paint(this); QPixmap bkgnd(":/images/default_background.jpg"); bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio); paint.drawPixmap(this->rect(), bkgnd); QWidget::paintEvent(pe); } dtkwidget-2.1.1/examples/dwidget-examples/collections/graphicseffecttab.h000066400000000000000000000021351352002233700267130ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef GRAPHICSEFFECTTAB_H #define GRAPHICSEFFECTTAB_H #include #include #include #include "dgraphicsgloweffect.h" DWIDGET_USE_NAMESPACE class GraphicsEffectTab : public QWidget { Q_OBJECT public: explicit GraphicsEffectTab(QWidget *parent = 0); ~GraphicsEffectTab(); virtual void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; }; #endif // GRAPHICSEFFECTTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/images.qrc000066400000000000000000000175711352002233700250640ustar00rootroot00000000000000 images/button.png images/buttonChecked.png images/buttonHover.png images/buttonPress.png images/loading_indicator.png images/reload_normal.png images/Spinner/Spinner01.png images/Spinner/Spinner02.png images/Spinner/Spinner03.png images/Spinner/Spinner04.png images/Spinner/Spinner05.png images/Spinner/Spinner06.png images/Spinner/Spinner07.png images/Spinner/Spinner08.png images/Spinner/Spinner09.png images/Spinner/Spinner10.png images/Spinner/Spinner11.png images/Spinner/Spinner12.png images/Spinner/Spinner13.png images/Spinner/Spinner14.png images/Spinner/Spinner15.png images/Spinner/Spinner16.png images/Spinner/Spinner17.png images/Spinner/Spinner18.png images/Spinner/Spinner19.png images/Spinner/Spinner20.png images/Spinner/Spinner21.png images/Spinner/Spinner22.png images/Spinner/Spinner23.png images/Spinner/Spinner24.png images/Spinner/Spinner25.png images/Spinner/Spinner26.png images/Spinner/Spinner27.png images/Spinner/Spinner28.png images/Spinner/Spinner29.png images/Spinner/Spinner30.png images/Spinner/Spinner31.png images/Spinner/Spinner32.png images/Spinner/Spinner33.png images/Spinner/Spinner34.png images/Spinner/Spinner35.png images/Spinner/Spinner36.png images/Spinner/Spinner37.png images/Spinner/Spinner38.png images/Spinner/Spinner39.png images/Spinner/Spinner40.png images/Spinner/Spinner41.png images/Spinner/Spinner42.png images/Spinner/Spinner43.png images/Spinner/Spinner44.png images/Spinner/Spinner45.png images/Spinner/Spinner46.png images/Spinner/Spinner47.png images/Spinner/Spinner48.png images/Spinner/Spinner49.png images/Spinner/Spinner50.png images/Spinner/Spinner51.png images/Spinner/Spinner52.png images/Spinner/Spinner53.png images/Spinner/Spinner54.png images/Spinner/Spinner55.png images/Spinner/Spinner56.png images/Spinner/Spinner57.png images/Spinner/Spinner58.png images/Spinner/Spinner59.png images/Spinner/Spinner60.png images/Spinner/Spinner61.png images/Spinner/Spinner62.png images/Spinner/Spinner63.png images/Spinner/Spinner64.png images/Spinner/Spinner65.png images/Spinner/Spinner66.png images/Spinner/Spinner67.png images/Spinner/Spinner68.png images/Spinner/Spinner69.png images/Spinner/Spinner70.png images/Spinner/Spinner71.png images/Spinner/Spinner72.png images/Spinner/Spinner73.png images/Spinner/Spinner74.png images/Spinner/Spinner75.png images/Spinner/Spinner76.png images/Spinner/Spinner77.png images/Spinner/Spinner78.png images/Spinner/Spinner79.png images/Spinner/Spinner80.png images/Spinner/Spinner81.png images/Spinner/Spinner82.png images/Spinner/Spinner83.png images/Spinner/Spinner84.png images/Spinner/Spinner85.png images/Spinner/Spinner86.png images/Spinner/Spinner87.png images/Spinner/Spinner88.png images/Spinner/Spinner89.png images/Spinner/Spinner90.png images/eLoading/eLoading_01.png images/eLoading/eLoading_02.png images/eLoading/eLoading_03.png images/eLoading/eLoading_04.png images/eLoading/eLoading_05.png images/eLoading/eLoading_06.png images/eLoading/eLoading_07.png images/eLoading/eLoading_08.png images/eLoading/eLoading_09.png images/eLoading/eLoading_10.png images/eLoading/eLoading_11.png images/eLoading/eLoading_12.png images/eLoading/eLoading_13.png images/eLoading/eLoading_14.png images/eLoading/eLoading_15.png images/eLoading/eLoading_16.png images/eLoading/eLoading_17.png images/eLoading/eLoading_18.png images/eLoading/eLoading_19.png images/eLoading/eLoading_20.png images/eLoading/eLoading_21.png images/eLoading/eLoading_22.png images/eLoading/eLoading_23.png images/eLoading/eLoading_24.png images/eLoading/eLoading_25.png images/eLoading/eLoading_26.png images/eLoading/eLoading_27.png images/eLoading/eLoading_28.png images/eLoading/eLoading_29.png images/eLoading/eLoading_30.png images/eLoading/eLoading_31.png images/eLoading/eLoading_32.png images/eLoading/eLoading_33.png images/eLoading/eLoading_34.png images/eLoading/eLoading_35.png images/eLoading/eLoading_36.png images/eLoading/eLoading_37.png images/eLoading/eLoading_38.png images/eLoading/eLoading_39.png images/eLoading/eLoading_40.png images/eLoading/eLoading_41.png images/eLoading/eLoading_42.png images/eLoading/eLoading_43.png images/eLoading/eLoading_44.png images/eLoading/eLoading_45.png images/eLoading/eLoading_46.png images/eLoading/eLoading_47.png images/eLoading/eLoading_48.png images/eLoading/eLoading_49.png images/eLoading/eLoading_50.png images/eLoading/eLoading_51.png images/eLoading/eLoading_52.png images/eLoading/eLoading_53.png images/eLoading/eLoading_54.png images/eLoading/eLoading_55.png images/eLoading/eLoading_56.png images/eLoading/eLoading_57.png images/eLoading/eLoading_58.png images/eLoading/eLoading_59.png images/eLoading/eLoading_60.png images/default_background.jpg dtkwidget-2.1.1/examples/dwidget-examples/collections/images/000077500000000000000000000000001352002233700243425ustar00rootroot00000000000000dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/000077500000000000000000000000001352002233700257605ustar00rootroot00000000000000dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner01.png000066400000000000000000000003371352002233700302500ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfaIDATXб@@EѻVͨFb@$Ӎft!&  $D/o|Y=l3=u‘SF`~r 9%U?)L=$I]{[QIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner02.png000066400000000000000000000003511352002233700302450ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfkIDATXС @ C$Q*Bb[s{=q}iצP wW-f 8!^HͩDͯn='``fHQ_M$IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner03.png000066400000000000000000000004071352002233700302500ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``HfɶoV lJlW000l3X(\a3?37 3Lsu(F!d;ykп.bϰaC#捂Q0 F(`Q0 F(0ðIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner04.png000066400000000000000000000004441352002233700302520ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX! AweuT$*x-K<lbx̂,(|O ? de3`N=6h@V-^H 8 [ʧ4.@kAAց$񿛊f, <O]ME֞M`˟_zsW`m Ti!p*P]$uQoЋoNW.ZtGV ǡ. 䑔!Plw&`$ހ3Ȁ.!e?e'v8pL/!^;=yIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner08.png000066400000000000000000000006431352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf%IDATX픭KAsg$rS&XVmb`sA?Ab0,b`]P8A1(!Zvc;ЮWźFEQۼ9װ.@/lOIj3(YYjhC1̻ʥQdV9{L1!/a#ܯ}3h,ǧ3Xxoz먧89:~?p,2&.`@|};ECo7Za2%Lo'xshxMN PaOR!4%t/=iv˓IݲF]?ŤXuj+A"@[rtr n^q`?ţA'ի2tpgvV(Vj..~ݎ~* ,)gc_ϱXW1g` xZa:~7UɓIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner12.png000066400000000000000000000007721352002233700302550ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf|IDATXOKQUZti@ڄeڴ+qZEnVATQB -A4#}6μy83C׌$COX9z;݈!˘*YWM$Q\P!ݼLz8 TX2U,THxx6 u.> 0#9hxN&Q4ZyRd…p;L^F+\Y |PqVN;,M~ja] דUO'4%749)oںv`#=$ڟ T‹-e.߷F7R)IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner13.png000066400000000000000000000007631352002233700302560ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfuIDATXֱkQoCIuA"" vb -"X6m$lE@@[m,m6vӍEI"1DMmK& Cp~e{fy %%%%;XB[g h]{ c n- CVp];]2h1Lk,iE5>0%1S0;s n u|f 4*ȒhpaPdza#x},fIc'pRVu,w[a@u)書mwz,lU*`B<տPN={Bw[i3H1C|^&n+ln`3P&>mUVƃ &g0!#-ct2y  lƢ[OV_p MU\Q)IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner15.png000066400000000000000000000010261352002233700302510ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXձkaυ r]4).]E\29Bt(88)Nf1=$'dPt`R*=mrL0Y. GNNNNNNN&ϰ5+v?v*)lV[|d°[XJ¡*n!›L 8=.Qn8.O~W a}^2؜ eiFI]Z\U<5Wz{x a_ g,BjϰcbOÙqTz0V 6"MFt}gH R1+axE<ܫ00Ӆb&96#{Z$D,nCFhF~ $bA{}%+' {-%tWKCL}Q |ӅFϚHs|ekS ޥ qVk/1AB2[TfS.3z} +.&>$ [ Gv  NKޭLkE܅'H nQx#BKp #߯íY{,6?Ua"|A! > DIGDx(@e2:c—lPM +cAS-@c8 Bh+l#aJs3P؋cȱ0}=7Zi,RX؂7l× 9: 1oǭ7;n)؎Ďa]K^Dkt$6Qmr9&Sm_2+]v1Z <>:jOw) [-ojE39ōm@jånݪ0= ʽŕfx\k[. ||)HIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner18.png000066400000000000000000000011471352002233700302600ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMHq,F)Nյ%A A BFԭ[m;zҡNRP CvUe]zN? _WLԎKXRS `+Yɕ%NEړ ɕN E3+H{IC*ޢF[p"GVXLS'CtO0Vumtkб_ M~=W_w+ͥF\bu9R5Vhވ yyo4ސa~8(g 8 m&:tfynLPc IXw(b|@zA<2[H9T7m**¹JǵaEW L.Vԏc':1$Uba[\ XXvǞ#on?n+8^x q!x{l}IUgwt>)}0¶ /oIzIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner19.png000066400000000000000000000011671352002233700302630ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXKTaϕ!AH"jQ U0?`DQmͅq#Ehj+{!2,Y]i13pQsXA}S%1C Kx7Uڍ8+ yLZd0v14_l+T1olxS"o`y]5Ng^FW3!N9O_6tUt6l+JHGiͩ߂9Ώtda\U[HL@k*[8M5[jԵו =|[.vg~.?n Ƥ,bZJJьwP,S2:7;7{6O2'gK̅؍#8;+x=J+odIk\''Gpq@(&\ƒ& }^?iDZgډDi/~fhBWZA1Z,+Au?BҽIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner21.png000066400000000000000000000012661352002233700302540ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf8IDATXOqٞZivMn"'rRJ)9Wr؋8mJ=і(R2İ4֔V*Yx4@T(ap{;g(N v F JδQ؏kI/`_ux^FN`K"|. Kq[-|PVv"0V b~<)ܭ5jCTgZ'-39sӜZ/gv{9Jܪ> *U\r ЅSjO RHBk@*>K>zk־7L@y|,32 ;эX3>yL~jz/wt>K16Yj@I]ƭf7,fn!8e FX`7.#q2N be J+gѹb BV_:PoQ<0ihbJB.93\(`ڭ`=Kh @ ;e l8 )&>I]Ha%]Z@<) p 0!@&l& RK-)_8rk@x^d**+y|~ 7CcZBV^-Qa; dKk8WwU˿WukY 8'0n8gK&-!)`x&.138nw%%#aM+֤Xg =fV ہ'Zz: jGwΛqp<h@H+xgJh+%+OWO`'P7RN3w ]J]*Pv#8~( n:j !p `a((Pzʂ(}tK1T&νe n91 lg9R(  1Z5*  g혙IiY@:L^Gsʞ @A 6r?cf%= &!<g~Yݹ,BURooWѠ9IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner24.png000066400000000000000000000014201352002233700302470ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXŖ1haJZ(CSHըA XZN:iQq3.NRKiNnY]EA*Lф JK i%T$?}^/,$mx s`m2kǀ<-s=Y.ww /&l.<0Vh]LEwR\maL [q`N&~ik@Йgz,RNY9xE2D.\*Eǫ~NNTPhRQQ<>(~5o{"0Ls9(;μUVXV O`Ҩ u!:GP_2b׽:&=V#-i?/scԽ|]d~M'4<9{/>9*@fг|  `٪^p@8+g 8}@σoejaP\s,&v۱N_K7Cb^agdʞ~لj0H6+M˘3Z=͋,Mcdpx|zWt:%8L|S_WK+^6u)Y.`v͡jixJIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner25.png000066400000000000000000000014001352002233700302460ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXŗMhAotӵQJ *T~A='+MDAބT;-"Y!Jnyogfa%~^J.tcmZf@q978m?`l97?@|i`с>@'+'P3 `Yo _[POх݆xjF>JrV@=iFp.{Y}7#Yf\w7 -Ќl)g%~ PM \Wt ѾnɮDqEҦv$3If*D.@2SсY`1 D w ".p ؄uDX2Fl(Dj[AiU$fe}+>DeVw/'N"T#LkNnhJ\v"w篚/\iu8dsjڽ:9MfB)s몦eB8 SSWɡpqV .Gd)L%p{)mFs@T^gSIJC [AL~ }[hf y% uEHD|ρ&R x-phS-oTYd:؞Z<@H, L Ak5ƁXTY.7׿֎7"_`8NP#YN p@߈EiztVI1\99Me 06H`x\'z5oĢ:~hEu}'Jh#[F>iwh)%R&W[nW2gH7B*wUBýz5lD%تUhBOoBP3jpNP,@ݝzQ&:\5Vl ӡIWf׋A .`p6[# =`3ĒnGcP 3.ϩB%.~# W.!TkM>JRޭkA2nN,O~?ܥ58 uߎGruУjCGhf* S_J_eJE|̘*b}L ࡒ: '0HwS|c|f<mHE||ͬoә5,l!kSJ mJ$c=UYײ$8"2?ڌv1rα2 'Ve%8n,#R gwd^}=eKZz&Ymw] +S=IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner28.png000066400000000000000000000014321352002233700302560ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX]HSa9ӁF3eLZQ]IAwR$B}Q7ME4 -o .A Ҝ@et9 o|y~~&KPU+C~H^cv+m2PLL7SM[ڒs`r4O@v,:m& y1 ~7G`|4n Jՠ/BWTxq ޱ\#J CH >dje׆yRHUd䃥_[>e k)Jˬm2S$fkiHCΉEWFWf3:\ \6^L/#{^z) TGhW_ut@_&6YLM_onIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner29.png000066400000000000000000000014231352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXKa? L%"F;Eu A"{ҡ^ X; *0UboA0 A*y4&|NYX\aTլ'V;|vi, aWM#K^N[VW}l`c'2_y r \PB=bfcf/tA(q%zj~ֶJPMff_JحEjMIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner33.png000066400000000000000000000015021352002233700302500ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX]hPĵenUx".Cp AdTnЁ2PWRğXB;]NiAuxѴcam !ɗ}Nɗ%.6O!i.p!lm\+ts;px\yxZMj%V\},-Vۀ48gj%f^[Qj&9&R^Vb2pp x\0@I. 0y,voq{OB.6ہGvQu5k3G-ʁH)Dv}X`K=GR%? H==YI xI8\L[+gGBϳDRe^8==L-hAPCdҨx185Db5-G;] ĸ@ hPAӋW %C-p՘0XVcc# <)9aIkz4P ƌI^i MK.q{r G srތV1,,bX]@>Gh"[t> ZR=pV[JE}}ƀӣt3 VK|8gH9~*TkIU6HC܍u-t/IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner34.png000066400000000000000000000014731352002233700302600ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMhA؄.-J"M!5# j=Ax\Dԃ/B)mo*UA/"h^,D<+؆ZMpM6I~>Xޛfv潅e+rJ ȩ%6S< V-%p{K. ^.&ooܫ~'>1WL@p N{ڡynq'T倜W,@F߾vFǹxSPa xD+Xf,N HQ+VIާBN^tY% w _6vf&VƧ=" Ll65ޝ[*@LW&`foO &㓈 혥~&;EӦ д%M&AI'eѿbZHAt`$<~ǯ~s:kBy߁^@?.RՓE` N8ca瀹_^=\ؘ z%+]x8c- q&)cbZk[ pxǯڀQɦw-v+K+_Z ?;!oG_ qd t36^ '.,\xp8l@_m{^/EkX96sW0$!{j ݀Gcag%_ 3a)IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner35.png000066400000000000000000000014271352002233700302600ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXAhP[;WLaA)!$zD,xă DD/zd)!eHڭښ5xhfumlXe t$}}\/ixmu_`ܬy#y@:)/5/w1-`.xMkoTҨުᆙ*Bcq` 熹[G)b*kKV˝pܾVy]U:꒪# JbUM`Vʪ9c~z0a+z-܆(M* )bm Ur`πU2>ͦf)%KnqOL˃ΙW_3.`[ U^OcEs+ ?yL]ʫuCha1?7{le0MzW@+p+av wS*0&7֛Tl1I|-Q=>EY"ʺw)EY0<9T1p>v0Zf Ś!i < B׵qhؗjn m3QC()rM>e=L Pq_iWO7 IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner36.png000066400000000000000000000014221352002233700302540ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX헿ka?osm4bB,t,Tt(J`". Jb? 8"" U&&ب6&MK.Ӓ4}} YÁ> >/dl?pk8+5dzV`c4dR0 0gtYqZxL׺ʪS=sb ,8 WHnNU:l/x6zYVǮ(ie0>^ЊjQ͞T]PbOVon%(+%RVښ0ү @O%: s2emL> ,O"d]&l+J=U`3!fw<ݷ(mv; `첵?[ނ?}loAZ=fHZG0f;9үw#6"p':u`iXU@np60p!8JW&pc9=*0Z/G;[@31c4ЪvɓIYL\\øT 0KfjkV_~[Ǯ0pYUL\*guit cYI?MM^Lzd0hBMW`"kXW>Ŀ 7IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner37.png000066400000000000000000000015011352002233700302530ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXOhP?fZ2 C: TJ/S4TvуTpzP7Oڜk- S^Ү~@S5 P5*>0U Ǥƌjw>@W0l.ysa!WR,p%ٰz[c-f 4 <RvPC8@g2 B.6ו@K)(JS.zL- zppД񅌟+U2m~{D;̱IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner38.png000066400000000000000000000014351352002233700302620ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXOHQ?3Y[ˆ Dv(C'2HxOa^R`PCBa QaKKº 2XVꬳtY{ke}c-e&f莵I˥ l7πzz ,&՟<z`^A2q!bEuI?Y@Bh-[-kMM,뤏u_0&fl> x<ƗZɝ9@Z+:-ukg+bzzݵu3`K4Ƌ  y L`!ٔf h3gh7?4r"!l6 eUʅRx)[AZp`˔?^ K 032UGX*1 R@},X;Sna jx6,%"y0w+!0F߿Di:-KqzApޒA`BQ _7;@4dZ3E5O݂ݥE|Be7ĩ#OXsR-{1Ne3e7xT.ČǁS,cYN$NQM/B,zxQOH,*% =C?`0];}VM RIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner39.png000066400000000000000000000013541352002233700302630ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfnIDATX_HSafN5`xDFT*F]QH!yEAtӅA @hW!A@#lɩŎt6a߼yޗk%*aځQQ:k beު4MmФhi^#+sgQ/. a{K;sH! $=_iJN 'tעv^fn6k +vOgIoԖN \UoHgpAo$5?5Mwx0?vn0 \XhP>p:ayYJӻ@KN:S; 3\_6v-NS t!*@-c? \z_m([[l()锿@08k<[4/i p 8\/U - m~SJ- @x͚֮_9"8ZNW\TŤ YC.;h4k-lb G -&7mu?aU4p4ŤNQ-j4}:'&,k- b@Q{ Ei*1,AIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner41.png000066400000000000000000000014231352002233700302510ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMHa̴k(֐,A/J'8xR у$Х[ԡCH ڈKPDsR> 6Vy;쬍˲z43Ϗw%Y2n@h0\{E&dx]HjT]] T rn=#Wvlڨ `3KM>֯N5[V[B^1@A 4/ƀYk{ᄲ3BՉ . Կ@ܵ eGg|vLrD*Ncvy)h"[dJ]`W2|0Fv.E3˓*D,udk70=j{z%U:`d+Fȵ+ L/=1Ô SWw8u X56L= 075N@k}%GﺂNh[㞐W`f臬_ɴ~zP0e\Sۖx\[dZYlM{k2 ÀNSmK.U\)w9σ /(fgIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner42.png000066400000000000000000000014271352002233700302560ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXŗKhAylinIZEAPbOJ^Ɋ"E/^*Aki0Thltmm:MIvN˷3v?%6x埢a#" LZ_MǶxwLEc. HSi_kaz;*@d 8K*OA4ffz N5)Jxq; GNj\vxLp_ ]j\/z HuAYv"J$ 0$SH<{.Jod0V; 5 0XI!?d3Gc@ֹ7 SVRdXy:u` o>ǒ[{êQ Sv;Ks谒sC$ȅUjTl%Ōaʽ  ˵VFiC+pja~ॕ 7 Jߪ4pkΊv#< \Yo~ͪ[`%rzVPs\dܵIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner43.png000066400000000000000000000012741352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf>IDATXݗMhA٭Iغ-c =bDC AI*"\ Zڃz'Q/EЃ7m@#D%B6;4.lr^[Dq6 C4Ou[N{B%G\ch#'pŏm!L."?@ S"1x\lQ3}J o1k גuz_] {7N/ZCV~f)phRi0SFlq+,kW5 0sF 3`7gB6G`Z36o8/ѕ^7v&*ӨDSrXR|%2J`e1Xqii㎫:AӴp8l/@Nτ 'sZn_?D*n* |kI` Uu_W7_'?t ONNOz鬟HV*-̍}IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner44.png000066400000000000000000000012421352002233700302530ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf$IDATX嗱kQr1ZSPB  YE[:(A ]J!CBJiK{m&ϡ9|9mi"[|=wሃL K&S2EԪ~ඊ֯c5>G 2NWurρ2j(FDo@*S9%ƼNn-JoЂ.O#g 2;]5 L#H0=w> jKZ)nT3\+Ag.0r ^o|I; <$`٪_lDQ;\L- p@TVqA. _+0 PtS}auq[a j|1/9@BV‚'M뒝(hiVuIl_Pya 4ŲQVю_p p8 M76&))<|?D?>Y+/.;cBFeUc_KerD2RE]8\@ !o `U= ii>7p4sw5DF,sQB߀UƁXǓl~ϯ^je֟G  5xLg?J )N$ XG5X3ՕlE+(ex d7['\ᰱ 9ik=ע5~ktx(eſF 0x `1m-k"&Nk LoWK{&@=&K d y^uD4p1JO 0mN_>"oΞ$BwfΦp[,XuXfV\u%0J ` X%@8LU׼i5Wq#.d?M:IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner46.png000066400000000000000000000013021352002233700302520ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfDIDATX?hawjEȹdV.YPIBGq頳ࠝ QTC3ҡ'5PBO49$ _VL,>}F,e^^&fL:p脚Ծ!xTxR:祀õ>Ŧo*Z@!ptK-aP]Ӈ +@:eVBNc#WVǓ?5#Vu9PH , D{٤?lX5y4!/W׊z:`"?o>PX+"pM`VToOWޑSX84j-jxp0۵ \/SX' X-Of$ |`JV%%%3*\py%@G-lّR]&oԏz;UgzXNcFިOF ۵<Cp'l!oiɾʾzX%pqp$, t\$,AS hCTs]+| F?ѼjQ IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner47.png000066400000000000000000000012201352002233700302520ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=hAކ% xY[]!H J@2 ˀ,l,-u Ia -ș%ce.۽&o57}fD,!ԥ9~9d-U-0 Lf 0Xq1]aaQOF'0\54v72z4-߃7AFA8@UYe;v  rpuXʘXSY"0ٟۨ{W?P%-p!p^3f @y p '~Zx ;  `Jwx8 PD4{`(OZ=h+t:):CG^/N6pBN<|+@7 . Ϳ:La2;Б]5tU:0tA x5vnm7oH^2U xHGޏQH?XIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner48.png000066400000000000000000000011561352002233700302630ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햿ka?ۚ ǁZQ=8Y8 GID78 :: EO̥RLV.Fu%m{;|>∍\\nNWK8SbJ'> )WfM(N7p zDQ_F{Ms{Q|?Ura9@瀛U^TFd޾# ,Ch4*Z]>Tk27^eF o;Se5O7_F@ >2Z/5#sށk`8zgpőn@\1w#"Vq$t! ط8߲CځIv] ?]φNb8luF5:^Di2~7|VZ)t~TQ(QlU }Kl&. 5?$`C`a/P>osIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner49.png000066400000000000000000000010661352002233700302640ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX핿Ka\b*=J .¹uQ,ҡةnLm dk۠{L5Jrv{<Ŧ%Ay#W S`uyVޑ8'ia`(Ȕʹlpr$<;$u^ Bi)`Usq!Ң,dy֘×hK >H^j}rwzCwdS *p;`ZrXTSGA7JDmu) y/ʡl7'`{"`pPrW=kn`I)w^ zŒk| M0Ǫ@%xdK-0d?*WF[d~q8S7,6ބ)q qIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner50.png000066400000000000000000000011041352002233700302450ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX픱kAC)lvjYK+U h'vimDia&  I\ ITℕ, ɡQ,ܯcvf2\RGe%w& j7!vf|Zt wj,Pd xIId|ڠ(0S~Ԉ9odr%UgFԪR ,pJ|; WK ڜZc h҂;ãM9pw |Xcs]j҇Ffm ًK%mv@>pf$$ oJu<_w gbmEvN#bNx \;-kp٩MҰwx[oȩ"8{-HLҰͅXbm|LԢ3IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner51.png000066400000000000000000000010271352002233700302520ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=HAY[]oT hDET-D6YIs`g)DF[- -P^`|UwSs) .\/8@ȦK>+8,'0Mro'X H;.ĺ5R)Hh;\ |`qfu PQ&4s]:֔ kVmG 9EɫZR"pQ@ ڽQb{Iz)@ gŇOҊU~x拧a߯4OIIIIILc_wZWIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner56.png000066400000000000000000000006601352002233700302610ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf2IDATX풽JAݜ',&A񏀅VA,m}_B$h #ACc=H[,vfcf (ʈquYr5ʬzv`{O'Zا1p0_r),ʟ4T3pKGuFQ+}ZR;F-^&8[}IJBltn$UѳLD>a%K+{Ķl!g=@ flf۫+;;CM:DIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner57.png000066400000000000000000000006101352002233700302550ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf IDATX풱J@Eϛ]RdIdShOO>6`%6v."&&|s;o{7;bU2Uro*ǥ7 dE8 g͋ؿs*Sotǥ@ˉ3`d-p <{]SJ =y-D*}K˳4*3~` *$`(0!lz`f{.C\8] !=,#κlH"mMUo 7<@|BIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner58.png000066400000000000000000000006151352002233700302630ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX퓱JA9 hl"J`' _w^{K+0XT0XCܯٙep8VlR)mjylh!mr~*0k[-^ezY hj 9 ų΍T͢NNB;e哑hAXy*%ilx^Kߚ~{wÅVY F3KͼǭFwvE-ZSIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner59.png000066400000000000000000000006161352002233700302650ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?K@l'I  Wpuu.~n%]T1S0979x<qvhUuXSF!l;5lIsm΀ܙm Zi @&jT'a)zm~/,p^]$-1<_4~)d3=b™ Եɳo \0FT)ʘ'gjXk >e0@xDvC =JMjy/_9J>{IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner60.png000066400000000000000000000006071352002233700302550ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf IDATX1K@%mtK]EnAtwtuqi/pbA"*Z6K 7>B!TQEaMX=ʽ[hrIq1&E@+t?[UTw~N9}A=\4ΓU5uYS+xac} Jj`V2VtG^>~SO~a?CDTHIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner61.png000066400000000000000000000005451352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX1KBQynDAhr~pkn rhZ>AmQ 8rE$8CzRJ)R꿳ָyP`Xq= ]k\ _ho{{W0)Aw6>z< ;~Byt݄2"x^WGvs0*W$b&@h񔍒a\^r˅G7o ^y9|LIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner62.png000066400000000000000000000005131352002233700302530ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXб AqF݌RJ;ؼ+(!g0`Ul$.ucL:;B!B^ )P :P@VQqbj2NMym̳\@k q)(Nǁ}>;`)CGY8^`HAC't,%O |;Jo=s21.IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner63.png000066400000000000000000000004441352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXαAn6Itxϧ7D+: * htEvBkM&B!B!J|:<ҡ`U:-(G q_ vV#v34@<[>uso1׺MAV4^U+߼=u*TӷdIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner64.png000066400000000000000000000004751352002233700302640ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҽ`۔"2L`4 lFb6I  *A$IsB!BT`uH1tN3dO0*02E"q[os\St 7<` ^-`$ ZAGM<=.qu9<w^X@}?wJ/FIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner65.png000066400000000000000000000004511352002233700302570ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX-@@ᷴAlR HR=jps&M KMSIfJ)RJ)c& \Ж̎=\j@v wr8]8 ETn(a"d璗LR1ZE@d0i޷I+M7IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner66.png000066400000000000000000000004561352002233700302650ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXѱAF3vlfԉ~;D4xVBO-zщ(t$l(7Aqo!B!Ui;=N&m,L![v^kS3 H}5@i&C #`k<8x[6txccpkdۛ{>@U ~'$cusIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner67.png000066400000000000000000000004521352002233700302620ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҫ Q/zA%,6 6` A0l|1[usLB!wsQR ewuNY+h ]_clTs{ae-ޮs9ZD.~R\ ^q)f*IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner68.png000066400000000000000000000004311352002233700302600ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX!@DљnnP!A,p@9 @*1J4]&`S3""""G쌒=kq,)D@G<a1 yC!b?ʍyLV1E"gn+XW?D }IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner69.png000066400000000000000000000004231352002233700302620ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``Q0 F(P򯘑1[<8?= ;# c;#+c3=,;q/10000} :>c5-4lmP#g&Gb(` J#xy\IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner70.png000066400000000000000000000004101352002233700302460ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXα AD?`*h``` ڃ`b5FZ`V`t±` p`fffdS]OMZa+ Ԃ Vο%^:WuxNuji95{aff 4IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner71.png000066400000000000000000000004021352002233700302500ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``Q0  Yq&z!$3Fw:LQ L b L Ltw냿WAXHO020008r}f|Ch>#F(` ԿP &IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner72.png000066400000000000000000000003671352002233700302630ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfyIDATXΡPύX `R M`2GH^%<5 "" `}J_MR}[ƭ*c]IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner73.png000066400000000000000000000003731352002233700302610ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf}IDATXc``a N}a_z8 NLbLpֿߠ ̌a9R/)g3_F(`Q0 F;rZIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner74.png000066400000000000000000000004001352002233700302510ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``tQ\Wђa}_tu⦿"lLwu4wAA"ʨ3mGvN0/{`Q0 F(Φ!s ]IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner75.png000066400000000000000000000003711352002233700302610ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf{IDATXѱ@Eѻ;bЀm8MP)UM@l~|F|\ 8j ُⰷ]ݶeO{F5>Oa cK53?IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner76.png000066400000000000000000000003741352002233700302650ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf~IDATXc``0Iߙ&~砇]LɳreQ_ ȐM'uv#6Ay~Q0 F(`Q0 F)NIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner77.png000066400000000000000000000003601352002233700302610ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfrIDATX=@@V%Q8NH\\(fryIك1܎ %x) pDP0Ac~JuG#圈L4IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner78.png000066400000000000000000000003661352002233700302700ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfxIDATX!@F7&HH$g$8.p<u%SSUdļd@Rm+| aGIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner79.png000066400000000000000000000003731352002233700302670ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf}IDATXб @ Fg_ P "fvD)(KP@dGsQ,~2,lB9uO9-p*g^S85?|WibagR IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner80.png000066400000000000000000000003761352002233700302620ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc`逑E 3/JSL-_W#yMNjZN o;?5 0g/C/@,c@,`Q0 F(`Z:UKIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner81.png000066400000000000000000000003711352002233700302560ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf{IDATXб @7nbщ ؎-X5Zɕfd ^v1IL,5ІOkd1~#Hn*]MXv}(9""""""-IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner82.png000066400000000000000000000003721352002233700302600ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf|IDATXϱ 0lPe DY3tTH)c#}/;wVnN-g]jC˶'me-4?\&ڰ<^cZ/$r~Z /S"KIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner83.png000066400000000000000000000003751352002233700302640ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``Hb V\ %5Dbfk*Fv{L,75Y! FF;33d\Q0 F(`Q0 F(.qMIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner84.png000066400000000000000000000004031352002233700302550ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``Hxw~:@ UfF5 z?-%`"I$+'*T <%Ѭ_S=sRQ0 F(`Q0 F(pw S v_IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner85.png000066400000000000000000000003731352002233700302640ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf}IDATXc``H *L*[ %`!U#;V&&7JDFVFi$,%30]$l(zJ0 F(`Q0 F(`I, IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner86.png000066400000000000000000000003751352002233700302670ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXc``H&y?;@iۿ ̌ sǼ\0A.##?BQ\reB Kf=Q0 F(`Q0 F(pA[ W$ X%$rrs;-e""""""J<}xIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner88.png000066400000000000000000000003741352002233700302700ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf~IDATX1 PYJFI<`'DM 6ͼn8xa"fR Cܺ*}APzM=]'$*@ zz^0nڲzoNhIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner89.png000066400000000000000000000003661352002233700302720ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfxIDATXб 0; 0K ejX>] @J L7nO4F0o{ŧss` WF \ } c%We,%fo4 ٟIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/Spinner/Spinner90.png000066400000000000000000000003661352002233700302620ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfxIDATX1 @?9 !VB ZY6l_|HLr}T^a'MҊ\hqe@A M)eIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/button.png000066400000000000000000000060551352002233700263710ustar00rootroot00000000000000PNG  IHDRZ pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FZIDATxb?5 ##3={?GIG M%{驘t50 y$y$S R&/q9 kY9ؽZ]WhEA0i.##cQ )(&?Faߒ"lnu=.!3V10085tM"tm+  #??Ys، {2݃fE}z#+֮o_y]N߿1o?w85"B)A/z_Dxyo jFbH0yqXaIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/buttonChecked.png000066400000000000000000000056451352002233700276440ustar00rootroot00000000000000PNG  IHDRZgAMA a ;iCCPPhotoshop ICC profileHwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~T/ cHRMz&u0`:pQ<bKGDC pHYs  tIME(%RdJ_IDAT81 @E߄tV A*$9'Hcgo!A$$Mo,>f-Nfw$IYtq%ŕ%i$-z/+ȇ$: ~0|z8c՛gziz=|6=z@_پlIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/buttonHover.png000066400000000000000000000063751352002233700274020ustar00rootroot00000000000000PNG  IHDRZ pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F*IDATx̔_HamHI.J0X"(4RFJ.BQ @XYib!&^,7)JH(Tڲt! /z<9Plc^㲈C@ʅ/]/@Kߔ~8HA{mY,''=V+ǗTn-<\_WT=,mc}~!IRL^IL쩲$tmѴ.Aou_=ߥx<BDmYZ $KքDb ֞)n)3\uӷ羞u`<~OzGͅWMu/=}QqT˕Wrv?,-w]Æ ^Q^d:[Ors씶ݎ. k$ɉIOg026:׆ݝOׯ֓9@EQ\CRXIIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/buttonPress.png000066400000000000000000000056231352002233700274060ustar00rootroot00000000000000PNG  IHDRZ pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATx+ a#Anl(F1Y];p.fs j%<|- vρ{=23Pu4&@p1d?-z~13;6}Ir3I܏"7P Mqypdx\egcC//cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc ~4L혥s"(T@RYR *i)"k @XEKDY`4IJ\ŀ 5J4T[(J@\5͸( H,PC6n:dYcs@"5.A*(*i*TT o EP@ !@$H"ʔ T"nRI$ gQ,R3nԝԊYl )i @H3.YlX ( @b[ d&)u2)YQ`$i3cH$@ayX73,(E44 @ ̢.e,"ŖFUA@` !n@ (:LT*@X7;r7'DsYYmJ[4BJP,XؠU1(A@!TUr@P`PPBPtIb7ͼ'I(IR&a[(TPP@3 q\AgS *P4Ɛ@yX+ d&h)@@ $\ fhs,bͱ@((3,3QT5Α` (@:TcH,(Q SrX $%gVZ@I@eH%E`PʋaHPB3 A1$UKsjh3(hP U2 V$@ , @* wAEP$KA(8%@; @F bbQR+ӤRԚ4J+:@D̠Fo9U-2PP@Z2 (@ @F9P@ hi&@B JB sY3(Qc2yۋ@  a@`Y4+;@POK'Y:J`  %(ɰjZdUI!%SQiFNZAl ,XY4γ3(:35(( JpgHE Q$f9s*Y@fX& dʤ h Ʀtgr +4( R &hdJάXfQME@tEqt@( A(Y4 $\ƒ )id$Ġ S@VlJSq`VL@gW eBg@ՀtPTvP 1+ =5M2N $̰I@,M3@U,c3j"Mvt UAlR YP;HP*u$f3l3`@%L "f.J9kY(T ( ]- K+6@t @N$7Pe%P@ J P0 %=3APԴ@J%gVA T+:(4ϡ 3'Vl@7`ր!@ CrhC4 )s@. ΠΙ՚͹ PTͲ T%fY9̀+:@;i@N Yi( Z)( %nM1@(,,2 g:LYSR %AP nn @ PK%1Y%D i;Fu ƳgEh (,X";J4%c`3nnQD-PVu@&ɚJ r بi+6!@)ΦҀ1@,6g:KS*T@BXu@b%(qY ,Y)" P(dm(@ \6"JJE,n3DK`"J%fu&@ 1ՀT uJ "VXi;3@ Ҁ5JDP%X, *P PMY@s@cT,-K@(k;@=6: #y)$P)ў@:m( Y, % PcVh5e XP͔Pl B-C6J% Ә@f: 1PufJbgU@"JԃI4r4M!URj4.@g@\(MY@Jƒ&gTl)(3RK@]9 'F4)P5@Y ͪQRPMHDtѶt *(K5 `h%fgT&j -f3R!"(Q,טM@%JTJf5 @ɬT"Eزh NgP,PY%,F@K&tl s+zU!P3dE!Q`@ ̰^`ɶhՁ@ Y̽q%I%@7 - mdfjʥQuj4%d@ ,` %*^@lgƓY*()$W-e3a lhJ %i*2sQ j]BAϢPYwc6ZcT%C: ,P]ytdpQ e@ s@I&@Kehf &B;@1X%@ SRYun(JJ΁fε(5@cT5^{` "-PK9ui72 nD fz@)Fu Ah4 n@9h!eG`$Ԁ5RP#RPe,)@ RaY75Ku`,\m@(!1"^`5&4K2)*k %fkJPAMd73g:huLd lZz&XX ,JJM YMwrƨՀbذ:ssK9ul6K2  T="(YP3*-ΠTI{ՙI` ,PSRR@S@ /Lh ˥u`.V[mW-,ב@Nt5d*"@ ESr-Z6(JKJnM2ri`%ʀ@ I@-t, [4[i.mmӞ^{)@בFt*b`PSy-*L%%@ XC)@E6iPFDP"bмu!@P[3,΀טΙN`R㞢,XjjJs YIR+ hԀk: ۋ@S5,P:3d̠,X(c5e B ۛqd =@V53RN]ygL힗d`s7,%R*bs:-ZIRPrlTs5af d( B5 '@TZ@Rf4Mo;hP wJ,P-F5%@3ӏW>@ d,lE %J5f@%K @܀ X@"s"(=&@ 5YIRl(75* 6 X!-fDPX,s| ,TTܖIj%66֠3o\P1j@Y,( kyֳQ@ \59n13Yuzz,-,neh0Sbn;LmP@Y#f@hBիe.Xv@b@,1XJ͒Ӗ:d``7 ArK(PXHZ1j;L ,,Y6h΀ TUQrk@"ʠ"gP T8u穚v9@`=Fm-` m2[̨u (32\K٠(:QT PXjוK ϥƠ,鉡-@Z o2ꥌZހe@,5 -1P3Ldk YP Ҁj[(jhr .lZCPbf?^cS Sx`jIxΰ`ZtPJԈͰ3uT,J̀f5J1dLR,j @#@JjeXwPJZ iPS: ԰?^b㻕@ g)@ ]hKVR n@(5&(Z1P =3d #i-R\1t h!rQ@ט Yq 5 9s3jd%EjMH Crn@\jcTNq% b#bh4e@!cLjKΠK ןw 5 \;  0KejD@b램5%SyC ˘ dHR @R":EZkfjhUK(@ Y( h㸢 X%f?^` LEJCy.Z ԛ̖@fS T܀ &cT)339@k(,FM@S@Uȗ@5vcjYvPw.zBX@6t2jy%`-Wl (*MH@窠\fƓsYlQNXUfX1\%Uk6 <Ad8  5e75" ʀ1 (5  0u)9܀,.ZŦZK %s54@3(45!$gLjk8vTJ$@4&52)dW. f͠ZhPR,ԐQ@,7Jrt@@PBB bhU)`%K` @zS\1PJP}w@T(J ,ܔs툀4X!lPM@4jIMCS@ )@P jbwtRd uJ( u`($Q^w@5VJbh@\R,XpmP@5DXRJXS&UJI\$6{q Rt T9%(( tPJ Jk0R U,ɚ14s` P nP)Z ,7E5ER X"9n9n"p&U ");Q뙨P[JT@ JPNv-\"jARnN.Trʀ5Z$E54 CR6 fLЂ)  iŜF 'IJ<W.E@uiJWDԄABŐBSIYesu::`ABԺX )@3` jsk @Fu%@XEiP8^sj(t,KJRᾙ@"h W4Q fh5\EP* @X.T͂V@b9@D幝 Sƒ,"lRN㽨@RP@Rb(#Rm,̠ZeeQ @%\FjR5-R @PB J [8 LTkJ:gXKFW7Rږ 4 /:P SHYl &@-)` '\@ [(K.MH3\1$8u%!Hv2*beb fi +-(h,+Q ̠Z΀Hl@.TlfC4Sbș] o $jdT@YS T+7P+(Hb](K@  Y0 @ )΀`(t3u, F 54LҀP3PJ&kIN{"jJm(YS ZW* SȀs- Tc5 MbZ hdԚ*B]eR F,4@ܵ@t-dq΁"i, &u=L(@)P" ܀@(E X5J -Med4hEPZ55 k" PrҀ ٍN[p  @ԀMY<2PuCt6@lP ,h X@@RI,P Iä@Z,Y7Ŕ @ k6 *k8Ԕ2f\:@H@S r  ]m")d 1u b MI@c.t΀ @P@ hj@ Bi @TR 5Lk2&lƜo4=RzbiCPPR .J,I(@ZM@d閤@ܴ 3@JƦ52f{di=P8&Y Bs4E@` (P#"(@@b-")@Fe \1fuJfoP@,w &6@ MLn ()d,nH(0PX)2%%4@3hsUҀɘƔe!A*PΧ=d1d8u @tBayݭ P9.3t7A AeJ-Th( )fFY(4 MњjTŘ ft`e@gZ @d( URSy @e` `L\e* A@(,Q E @3 Vt穛 Ŝ!i'<95hHP+K nK(a@f QH*Y @JŜ1o(ʀSӞ[ͬ(5EK  -RL! %Իΐ(( AP@`7(ӞԀgXo9S׎5/-Z-fT3v @` I+e(Q3@(( PQ@ :ͨ(7,@zX ;Jg ӟlD*04f-@:fP2 -* .J/@!HPsj"iK q=P @˦@;l>Prk*l " UFfJ0(*4@Q7R酀Z 1@K K9jCp3@|*PBmsPP "TJ (*P4#e@.5@ƤnBDK cW l,fz, c:FW@DfI@YhԛPe@ *!HR@c` ".@Ko+7 @ ۍ" ehLX)/l  Syt Z(̆uI@LkP:fj@%T[,@&h] r@lԚ"VPkQ"cy=g4  ;Nzi *Q5I@Eƺ , () %Y )@%%ͼhu-ZV5D"u= YS; 8#IU(5J$f7` 5%K24k4 %K lR 7L m R"Y)y%KNPfubI%@, C*)Yl %A e`EYn70 6cVZH7.yJd ^~r &<,i)[ Z .56MHY"*S@Y*:(Kd5ňSZRDg=L*Y-%\s{KJF@6d f:܎y(,Te@),*΍%Pf -hVn9JԖn@GlbM@[@ J͠5 ^4U@Xk@R @&!BRl(3,JVX7s֢H+hj7"!J􂦲 '|)Zƨj@ƺ@hPƏ^ɎhBlb@-cR)@%2B1u@ar& A!> R j5 ݀@=:u祘 Zqkd^mizF YPSE Y@Rh!lԀ)eZ-(78@ zDT(5% T 2 ܨRf2KYBT[KlLǗlg5Ļ:* BPZ,$ HeZC5*TYhPYFƳ;%)Ƥ P( ,q5 eJm={+ z()`|WǧYsm⃖uEʊRl@J )5( Yk$M:PP"s)M@Ƥ$-jf,֠ԃ6K=:-K-`gB  yy'x0sYP! ( `07( ѹ3YYjkzn$A,(3Xj5 SRRRL]K@P)SVPR5 t-rD@yzLwX RQPhK R JJ`bXg\s.PPγcp1H (@܀C6P( ,EɣH6i<@Ps$3kZD^9ʔ(,Ya SJ!A `L)R5@JbYlFgNYDnDSy j@ B,iQ@ζ@T)4llc s\z(2fZa|bPh@fM(N @V΁eynQ %(51@(P E2@Si("CgD@s^e&z@A(:ɥEU"M(MdfVA% o/ʒ!HK"%(MIeƤ PP)P ՚3(UNr( d-%.w ,P33t jM(@ !A@.Z($%+XYboz)H%KPj\j@@, HA \ڥe e@vrRd47`T 1tO%4B$kP %d* z\vvh*%B2]Yh4EꞋ:<XQN,"Ҁ 2ܚ*EEiR.R,)R Ke/JZ:trd_xQB[gR j(ӕ@ɨH/IsHfB'5yc, Q( se|fE s.eBZJ4tt8_Bz,Waa FʂX tHXCC \nd-*u@rȡOFgLUe5P0pԆk\nu"`$,y@2y3*@:R ǣ\gIw@%^  @SrhrXH ݀@NWeĠlՀ8jBL!VNFh24lah!gYL[ jP []VjLZFNs\"ΑE4j\Yh!˦VGL]\͠ Kkeծ]R:s|&s)#+dz7-AN R˦A %::$Հ &=P[%9.#kRs (=l @TJb@L:"C%:-BE2K@@f]As /)X>RYru¹TP94˫S eyg\(\^pQs,IN@/U.FTb^Y9tr!z ^s|h((;5t,΀3D&gT Z6pk;HF;" (,s_-Y,tOu+]$<h fZlHB! S+zjSLGY: -E 3XѤNVBsc͊ @`)NP1\"rU6<@Ng@"NfgX P@AJۮ QԽ(4saMAK^uR iAo'00fcwy\Ylw(WZ ,'I:"rJLeH:@3K5CulݑH;eH(ŐqPw;b 5g\\S@!]gϝYZ R; PAE;%TB]"+KW9a$%0A]Ɨ6rATt:IW̼Ҟ|7n,47 =ҀBy#*(f^R9Z㴃+ W0:P!kײP2/KnEV=,jH@ ² X@o1M XM$HE)oN-po֓i祕)3wOT΂hԵy/+{1 Re)@;t5-غM2܄Y*y3זu(ԕ3u\هk5k}gRaVW =aZ&apr^MgU\ӎE+ PhJPry׌Pv@ ~|\BI%7"=wsOS=#nZ4X85 :̠PPR R;\ZXA\M i=5Q`z5Ad3*IјH,!h2d΀RN.u(0(ZeCsz3j))`ҽ8 6y[.kh:uY!5 .}]82b^fP(@P)@ Q`K Q@)E@  haQe:@R(E "Jg6 4{flOLϯ+湯\4cӮԖ,={k|@. $:Yў%pP E"ZE%j@E R@dR*Rٻ:@B%) @!M&@S8qJ lkrKy/&+Ϧvj<,Y*PQB- y "PC @XY)@1.VVf@Pfe @)@AJU꞉IL·sӛ^ip @P*RPqT%پm:lM|ӚOEZJ, @,Zd (( @ ") ˫"f"@VugbPd%Ps: gP.2yz;_2t B1TEѼ9W%eW+4vNj)Kaot("@K@S>ٚhԾzh:<X渖(T@Le3lhTZfX@@z<3PXPL@N6@+ cRY Nee"X&@Q@PY@( XV@.H@QM$;M0eyġ@TRP@P,R3lPY7 SR @7 Z *PBjm Ae% P.@,U@ T[%d(4#scr HtBT2bߟ7(ͰP(JbؠLF ),* *P@jh*`-%XE"%@%DJ"t#YcKRDP T )K Z͹P3@nJ͠PE€*Pn!*(X, @HJ! `b ( @AD5E K@@ZݖHK@- @͠D4%,)dBSH. T6@(J ʈ ` @e`*" fkB P)J"-@ SQ (MP+DA4Pʀ4 Š  %()Ae@̀ ( PT!fevZR@D"Pf5`Eű7 Vm R B( @i !@ &2ET"%E6P$QH fkRK @вX* B!@b4 JT(5 (K P-JeE( ()` C6PC5jDPB5e5% @PlB (J(,  MhŢ!H)fi" (bK` H#+Bf̰ JPSvACRX"KnTPp@ʹRPƐ*`B f)P P57s̹X B [,*Z3P)R[, b Q@Q(!u%ns9TP,@ h HB f6\%%7R@(E@-f *X .@@)J ZB%B`VWQJ}VR@F-^%Z XK`P !B54u.e(R B# P$Rƀ9P, .PP ,YP zY2v2J|, 2 Y@t p]\5 @4,@  @ &sX( RP@ S@ hLP=8LYP5@ lJ4ĠJY@SB.e,HB (@UF`&Xjȼ)@@ (!@5 e&gҐ`V!+53g\p1$U J %K Q4n@\JMHB [BJJXT((7 j@(RԟA8iȥ)O_=C5,R;TC5h!@ @*I@R@;+*f\*PRtNUѸ٣éyKyP*h@@M@[>#YMd*cP K*y-WJYJMH!@ G\gPR{}l'XJb}dC+\*eejJT"C%4SIॗY9:F7le @V@ P̰*^L^J*SiKf6n*)`y73f3^\(3(l(@F3tL(3Ӭzմ,8nZ!rh|gTfXIfj PJ,>{.V\2VD=)YЁu2t< <(P A- P"HKdaUPm=r7̹n)% %(!*JXԠvs8ƸM@  <Ҁ (R( @3YX PSY,n P Й)B(!>@(]F:`yW9|PR Tei2"E(ˬ @X!* 01@P!`2"pA3#8P*T^@P@P@P(PGFPQG%\iZT P88͂iP8zB(B!iZTr`+J˅ |dt`_QnEZV u1= ^#G -*giZT,…QqGO*8… 8@"a(PQtp1b`c28qh9-*9ú B (ZViZViZVBG|;O\PBiZVBAHQߞSx`d>]-S 8D|sB1CC~[-߀+~%۞@J3О;w[>B) .u r>r(G=[8Pa[|#E@|!)5o|s-AjZ(eMq?!-KRT# ήT?m%JI ;ؕ5Rs%J*yiS-*T 8c9RJ@T,v` #-KQC;_?[ǎJ)4X'n_D 6H-CJ?)#p*Tu0 ׂT7hX6O'J1%J,GEZTqy9Mgd<؋X3xC&\o(iQ4M2>w -*9"6͹SS>pO=[Qz{`];q3ʞzckFzysvVuTzs(3vwȕ7'9~n߅9nxУ>VKvv S :x㽕Ngݮ; t#+RNۊy!ҏJloݙZ#{aC*r;]3joس3 ?[37l|mmC-t2&9J4OS=wnzI- ka3lCڛ~s6Ć6GRrCCC\}D- G 8 }jr,P VX%l3B89Q$ܕ92`d!D~BÚKLBӳ-b4C^ïVL3e`iX18pB$@p#V խ=Qd@)8𣇅4ZFb,L=4`F_B(&zs ; Q !EiCҕz^"SaV!4bb3J 4yGdo`4w񓰞nr0Z-ak XZը /+W/2/:/9_i&eL%# VBԧ7Qbv r=xOX-։<6jHZ*TH<'-JzSspǣ6\j8^​gO.4̽y844E$$0@ P`1p!QA? 8%QEf3c1f3qqǂGUqeqx5ѸQe^ԝ'g|qǒQǖJ|{88QU*;=qʣvU~2m<圪U' *Jd}v_w[ N!=+ͨWVN!8̋]v*2*2*2*JRTU*JRuGq3bzqqqRMG 쌅ܜxQw:_{p[wQx=G^J,_J.1F2GVa0T]6*n1GnJ=(vC]͓Ԏv"Pƣdڊ(802c(*F(;GQ@"WV1/ݟQE`稢]j,x%QlqV(тpuK¤%#Y ,l`K%#(Ux@<T] -L3Qf;$uyuԮb7W0:%Mubi [2*N'qz=¶8G\%l{ה8x⮞E.Pў9g:v::n 0g*+p*.̘uB^rpiҋuJ.GӀ0T":o!'Ӏ0V=::VnpP(((((=Ώ,n/!|@tB7d/|Y#աc:9XSӆ}%1z_oqR(pM_zx!7QyW<*u]^Q{N+.<ěHBoWs =&O=!Ǘ4~hqt|9~yqsGqZ9#=>dEQcר.e_ވdh2O;'=>]z`?xFxr_d(gW!8s< _Çq ϧf=PcRT'ވ}a<]u{1tj]lI_KTp?u74PvD|ǐ80jP5`Gm; Y%R\Q`i8o;A%GLwX.;oQEסּQcE6}Q(RT8㱫/ qǻ8= LY +JS T{c|x:O4sq>G|+1q!b-i<B1QT; wqb4lkO``jb14aa 5sq4rQub:Gؗp m_,|_cmF֎s('?7o  Qqq5l^1ej-lGrԙH DP[8m?/F,3;hum]<ԉD:L\ˆD"))(DQ(#F O5%QEQp"S)e2LS)e2L((1E.d9H(2LWYbT%Rʑ)uJPGDZSdCCMWqir) D %idB6dBB/r\c0T1-_9Tq`ɨ7|Θ%@_HuG}'Ș>{"^WEQ[' 'm>Q5( %p ]I8`\se1ccTyR%2LS)2)2)1De&S)e2LSQEQEQEīuJU_"R%"R%"R%"R%"R"/??\qsCX~9O_{"TJb1 Qc8>UJ _ ]x6^ uNdt ceFTeRTU* PCڈD%2LQEj纾+ %0@P` p!1A?ʿ*q'(8yǝx.?rq)@:Ks?&:cs5ܓ]qzѝ888Mv<ڝ7Wy3>;'tz;;ghU6oi4Gz ?]5\8'=\q޸󧡪zI=)=8;G\xb2G9LapXN6!=x+1N;nȌiWF1la781;>ڹvN}GSrOpl\ʝ8s8DT5sÕßQF:lTIlÊbV.la QEQEQEQEQEѳ;(̟0 FoP\a;Λ>Zt38Sbޞan'ɑ<2G6sb 551cE4H͒|b͢9?6h-Y :ϨlwE:ͱݔWB:k+à)ΩQ4T?>Xr|O+a)Ɯ.QEW^F R:œ_$aEN((hW`д:)ԍ"0 NQE6i{8TQETtTEqT"]U?"F 1qt(1Š*_l*9W 1ϫ]к;:ΝEboV n0pϫn0LU Ҳ>qkO*‰)X Uuud-S\梊6U @[‹Ia rvP50 03@wvu>8udEC y:8 GȽ) u՘Saq(*Cg=}r?Q˸:Wvn88㏿TWn;SܛqU!p{r0wkMq\bQpgugȸc㎫80q\}GSQWW\tUM|88:;qqqqq(}\}QPwuMEPrh.E*f>8 rGbc;ύCx!ۏtYtu>tS("(lKqT'3.888|ˎ88e}GYF=9(v(⋱cE] 5o (|ϙ>gQZ MQ¸yaUqn7/!1 02@P"AQ`paq?_u #OUٔo-ïHW|OsjcSmu1ŭj`&T"k lGkzzv_Qw&5͍?>lGK}!Ѱ? ]76+D] ~1mDI;}w9 r髡LjhHK`WM\zU#TF9Pkw;Y#7ckۛZo66utA] I*J̤I$de$(I$.{u:NA3$(M5Ið$24u%LB0_k:jލaiJ\N![J7utI2$)ԅ!H=3)Dp\gUtRe%}eS2eVe,cRP}k*dleB.R>b/v79Lw9G۾> U|ƈPtؾp\kA*s|ƫ+saݛm5XuheUE9W?e!p) AS/e 6$I$I$I'aLDQ*(w\gT+ğoo!t:C3)q ĄTtC_~269K+z\_nNrcS*ʤo̧R T2KH\o͏vS#\W1ALj݋&>a->7N+RG15% vNUt2H:c7f%e|Jt>+ 01!@QAaPq`?!A%@`hhhqf37qnn}߳{1g!?SOC=?SOC= "t"t"t"t"t"B!CQD:u!B!QRFhS ;xP,1i(~J|ĞD!ad\tVGi30 EQEQE%>Hu$oYf`mQ\?8>$hV(_h;}z888888888"vXQEH# JC.0#m:>ZnO| M/ZSjձzx`$,Bp=QQgB&,ggaTE,_q}şiiiih ďTnu ֢/"3 40qղWR4AHu'Q:,IiP]4QhڡHp;*&7(l⬴<0y G>LHwM@*(av+"(wm{*`)VEAAƀ8şXJ{'Hb!\8D"sQPS'vC7qx#<rm<.)Txpn*g'z8şXN/0h~$YSfGw! fc|P} ټy`8qΣY86wy㎒zM\^ 0I6,;'7,~Ђ3Pl5&cQldbtXM-QqUqq`d) 'sdh^> f~/gS4u2/XO smhZB6 8`;3b쮓!@"ik.1Aͅd;;;nT`YIc87tp*"O sQ\!6) shc)4. APo7-h@<CN!Z gvP8b(6h&:hX7J;7|2"f3,Ԛ ^40 hB|8Ћ}>Ou э=\t KVAǗ|yI9y4f25 ێB .!Ƨ{₠.5%B]|pG44 *6yRCWpI̵4 E6mBT;43?-R&ՅD]7רQSM J>b / 3pZ% owXafE5 M$pg+=  + <"bK6z\qvlqz486 N)/qV8$=a$`bx;UGhB"Î8>>CWmF͑x! &icJ9; 8UhEcVF Vs(q|"uFcw ]b ; Vu/q|wP g" C<'T&kgJR4'qFL`R)$yjO+nDG$x;$tciҝǴ'a pbҸ4@(rÛ3CΎ:Fa3q<uW $l8ԑb^> xR"10ӠAAJ PsFjVJ S A g盗b(:|A: ðld;#G<ᨀA睑psB:eq\Ezw L4qœ_;@wFS`΀EEDYR@8Aۊi[q `6x&X˄6qD'h5ϝ_ Z|mF5jj [wР7 F v D]qhnHC΢l0Χro 6s+)*y Fuma!#L u"8Cs`툵q#88 p %7dL=D$| O,cB_yx$&bX4AAfy/ ViQE>4 VlH6}c~ˍ_VW b l. L!^. O@GIǎf\!p8j8 `E /7pDL^P)|Aqqq%q sKCs7o JygWq\q EG%m #L Xq 7&85.ϊ(EnXco WdY8:IT)a: J-,aps_, @Piǡ@HqTs|tEIŌ,֢AeQ` J -9NmJ8A68Y ;$MC\RcwYQ|HN0g:u5RUoopE_L Pd떠&12pVz[q@hj˭D ނJ`z[9 W':Ƥ%-L|z ql [Dq:aQxR¡NhpjJPqӄGcJ8#8>łT%F:ΙVN1FVi4=8gi.0OA@ mfH8;eҲ5IAv. Ps%B_x EVG&B 88V7N=N-S6 Qps/A?L}jIw2 b> ބV Dn1nRF0bQL6H.es9ZN*7a,PE6MM6PFB*5$PH+-fg00` 󎳰<1CN;x!3:\oF*GI$srO [xN;ܵ<1e4%#7> Qu@;.O Y5w6u@p&|hcȲ (pigއ0V 1  $Sy"rGO0d|7>DP&VfeKͦ͐"L/.8YO5qǠx~IB =kCB=DzoC59XqVXI_8.aHO 5>Xc< O HRkRC. ]zSj3 6ޏRY4!PL#<)mF8P/QWJ4/7 :E: QEQS:!mK8 &m 91h5_? s|x 8($Bh@EJ([4ؘ-c[q=oBsaO4;3۟z<xnV,šMCр$CCZ|ak׏sߟto53:ct Ûh Q ?N@uZ@F@4ƐT8mTCn1[:<.oUaB6 CWvGh*Bp ט1c~qx ס1^!OPd7S1y"{O/P$(F~ 0S91h\DRF3 4ў꞉tNZj>?qB~#z F17ĠߡXq!u *6cCҏ!Ї T :dT8١Zx'H!ԵSޤO2Ϩ} }?cC=F#ѱ:$t 0nh;(:,Ap1azlb(@4hvw&t!.aLɛBcB }S uPv4BT:2Y-zP?Ȩ_T$k0F! gS^XxCL+`C 봡"L۸`-kjH$t`;Ƅ/S aqP-@NE dh[(] |QSZ& A RO@)!O+3Z[i@f4Sz)5J[Ns@!V0wє3I=K7R80d&D>@ a ZQLuH< a~ ?y3dtHHD)@qHyi;rt;'z?`@!hP@dz~П!ROEA:-FwRzX@D JQ=q7:r _V2]Ry5(3< h'=N`A׳AA AE` ` ph;P" z?1t>voaB B;):Gɹa, w5 iFgh*!Xټbd꧟ zLT/{-g6CbpF= A _Pv|C zgAC@JƯ2}} &- pzFEOW$I+jXш )yЇ4t?3 T>(G;ABQAf/QA'OGa-h[P3A6Aćm ЗM389c@A@1q_]@0A6QfOEPvD5&!Ikt` 8fl5ez؄b?h (X࡞QIvG '1=`REg:a CyT8A0ЙzԈ3d (NL{qp32֜#AL#Wv3+؁`@ ep{fzuJMA[=2jrϨ)=tuAbIg7 {7'hz-EXqA(= { }(g~)bО?'DQ^?YH?sȈfbz=MCd (b1lP`"jĘ#;gX{ 2=!/4ot>@{G=bsЇz 'F{|$L =XOBܟ $L3F[F>LCz8s nP` G`o@_ @f8 |!'O>G_r?l }Ư,1 'Bn{S`!L׆Xꇡ# ƌBH440pFIֈX$`C|O7`30&aL ]@ P#Aq! -ݙ,!?`@g< $GA̡ptj_ĂDi~5n͎}s} :А3ci7=eS`3PlLOS}| ae2V9G3x@ Bs `ct!r#3Ăt])6͎X1B=Z9AfH>({r'~76! h&x\![/yCZL :fv P ;pO/0[gwF2y #15 Zjk44b6^b0uqԡn Ez M5 N, )вs}>I=ƀCuhj'@}D";xEy:ߨKAD"J-qOA֟Z(EQEQDb1F#b1F((Q 18cLQ*s{? dBTÝ2}#c p`}CB(mq՞G3~#eQ0!`vgiB_Pr_cH*3 2'(b%eKEQEQEQ@~ ߒ0;$}|7seXv/gg:?'ov3VM@8$j{Sڞ=Oj{SڃeLP5I ?` 1Q !]xJۏH- Qad7U3s#hQj$LJ$='(KIjmx`P~, Tm-MQZ.dOW=_~W=_~o=~!?+rټ.*ިj#IcBg@}Sb1Mӯ0 !@RxG55ajf-4]Hj# 1~ k݊N3{^fAnX 8*fH&-\.pL s7fa bt"t"t"t"t'@ Glp`'pk4:BBǂ.:_tX}0!F ,ysElq9I7Lz΀a@!ï. 0flBH' O<.{x;j-`ab~d71ˁD?0dGلA"NoFx hhgK f6|hHSɗ-8l<c?t :q$"$zYPɉ"1q/SKrU m$I$I$InhI$I$)$n6mmm Im>Im$I$I$K}Y?m$I$$[mrI$I$I$I-rI$+mm-miOmm}HK$I$$Cm>IdI$ mmRI$[dEJI$Km`Mm)Cmm[m(hmHK$I%$$$I'K$smII$MI$A$mi[,KdImlz%BK$I)$$I$I$_\=m6I$I$NI%$_&Cm$I$DmsI$JI$Ii$LI$I$mI I CmmB@$CI$I$JI$ $mm mmI$* xXI$H6I,I$F$qn2ImmI$9I$I$BI$ !mmm!I$sm6*a$Q6I$ZI$umm)$^Bn)mmI$$m[llkm$6m@I$Fm%IIeI"Ipmm $I&m6[$mےI$mmvm`"I$Nm m,$&AmKImltMmm-f%I2I${mI$vmDI$$m%-$m$I~e`I$I$ĭ@$A%2I!$ I$nmd$I%mV;mmdm$Ilme$I$I!$$ImrII$NmlI$I%!$jm$6mm`IdI$IEmI$m|OmH@I$\l,$ncm$I6If6mnQ`DI$I)IGIfH8Zml 儂I$[i$I%[mI$I$e6I:$Ϣ_@*`I$5* NBItI$ I$nmmi$I#mmtIdI$IvI$dI$@I$I$HI@RJ$&I$gmawizSmmm_قIdI$IlI$I&(?$I$I$K/I%M$P@I4rR$I$':mbKmmdm&I$I$lmm1I% !vmmP@:I$I mjaH[mmm$I%mI1mi`~䒅FmlamI$BX9I$Imꝶ+RIZDmmI$yI$I?mkmI$ml;mmDX֒I$IVI$kjӶ{rJ[tm mI$I$Iz[m}$I$p_d[mPl $XܒI$N$I$[l6JDmI$עI$H[mڭI$I ?$[mk\I$O;lPI$[lZJHHtmI!EKmmmI&߲I$@A<Sa?#C,mNGvJo$?I2I6@vmmmI vA$O$I$/dI!mmMS4LG(Im[mmM6I"l $I$n?mI!HmmI<4lI$fmmؒIVm[m[m`e $I$Imm$ڛmI!ݷI"IYlI$vmmA mKImI$vjI$@ $I$A$I$$$I$ēkmII%LDHo:SI$mm4I$mIMmI$VhI$H$I$" $I$$I$ԒSm:I%MVhm$`m-l$I$I oo$I$I$VhI$I$#)$I%mdI$Tgm%I%fimmmLI$I-my$I)%$I$Gmܹ$FI$^m Vl$lrI$KضmĒ}`Mđ$$P%I"%Ѵ$;mI$LI$I0?i$mI$G6mn$m]I/d$ 0l2I$նh ߴˉ$J,m/m׿I$A9$Em$I-I%$-I$Fݶl$z[mδmm#m$E MoJ$I#>i$$mMI$A;mئmGI$V֒I m`HNmm'm$ =nI$$mI)tH0%O-[fI$M+mvm$GI$VI}mŶ;mm$m-ڀ}e4I$6&I#$WI>I$ImI$I${$BImk$Jm 6mm ,cdI$tI%$mdI&$;mI$I%^AI&%m$llI46I$I=,1mmI*-Okk[mI$FI*HvmIm lKHk@I$I$mm*H j@*I$bI2B-I$NmI#{ImoO$HI$I$ lmhm$-II$I6amI$vmI$ JIU%nmY$I$I$I$IamI,$0 HIIdI"mڛmmMI)Lmvm$ rڀI$I$ԎI$2/mI5?uTFI?ILIi$mζGÐג_#B?6})$mmM&mMI$m@/yI?IlIrI$[mK]ⱿT9}<$mmmmI%II$mmO|mRI?IiDI,$?ev܁2"*ɹm?o$mmmjI,I)$Hmm*[fI$=I7II$$ua5'ɓg$.H=emZ$mmmRI'I%hmm$J*$H*bI'-ހIMIm kKbfدdS$$J$mmmRcmim mI$RK$I$_I&--ǁPBI#m!|[gdD;DH&ӛmmm˶kmid lLI$i$IW$I&--6$FrH.m,r[m%-V`$IH5{mm}km$rd m$q\I$ۭ-6$$H?ԙ$mhr[$Ѳ6'$' $Ho{m;m$ے`Cm%$?]km=-?I.$$I$mN=K$#vZ%@ĩ$I+Imm$ٓi$Ht$%)Wm5 m#ڒI$MVvI"mg'I$ $I$mm%i$ICﴔI,M m$I$I޶vRhRI$i<{d|%i-I$m7ot~@i$I#\$I$} )mm$DI$I6ݶڶI$k@do$ m[fmИMn: $Fpu{mrI$Rm kmm@-$I$I&&VM-Y/\4ŒI:%Ѷml͟#`k{I $LͷmI$NBIm|-,I$K*7kdɲͼlg km=m-\[lu[nI6kKg@+II3mi2m'BImP-oI$r[!l /m"P \m@f (vlj앶mmlI$FZoܓm$rA$EIbڼ %I%;6mŻb@%l I,@/'0a$d"m)'nBliwЍA"km$m ifڼ'Ho@-撠]m $ $ iRH61d!(m[ %#daj̑,0jI$RIt{x\}ԜH m`f @MĒ$.vIާuHm 8%I7)ēE7)$K6d&JMoJBRI$D-Н9kkqJ6 5o0@ am6o $6?jF76ì Llg I$34D iBx&?A"2+M$8&X1J_@GEJI'ȳH&m@8-%2lqJAI fƶ-Zkn~rA$K $L$ ضM$oKkm :Ip1m\7I@ŢV$M4mM%mmğG\UؒKvtI-$L$f[$EH+MwnAKN=6P m;ĒE$mIe$ջ"~1+)w %I ?LdA%JI7'f! >ٶmp$ݒDep>MzK>s򛨚Jlyض$ k6liAII3If%~$2Y[[vٶa̒{Hm3 K7i7m[`P XBX)"m;%{7oIimlAoeKא?vY$Y?K^I%xOLmkԗi;aPK,X߹#`"V $IV96'@?m$hGK,mRI$mvIAm$Ia$HI$I6m"I$϶D+mmlxARI$6{m[m_mlI#;m$J$slH.mjI(RKmI" hkmkm$n &mm[mmmI$m'mQ$I$I%m[i*I"I$o m-BdI ikmnm$)$k(=em[ $$Fm$I$Iimmm@ im)$fm0 mvK^$y$/`+mm$@m@I $mſI`vemؒI6m$=[M-TBI$@mƔdG$2m@7؉$_mYd@DRK$m'HmRA- rI$I$I$@ ՀmEV/mic6b@ROo$I$ m&lM$t-i*RI$ͶmrI$I$ 5lI$}mxI&m$4 g6p$r}I Al$I-o$6I$ݶmm9$I$- $[mӭm~I$omI$m@I E$mRo $VxIemDmI Kfk+X mm "I$Em; m _Ir`?ܲI$I%M pmI $ dIy7:/bI`"Im%$I$[kmI*RYI$M'I o,M$ $@ 716mI$m=I omͶ؛-iI%mRIRfW{m8I}$KMRL$Im$I mm A'- B &. I$m$) CRXmH?I$ $I$PI$Ii$ITI$mۄKmI$zV&TIMm$~}/[R~$@ml $Km@tI&I$I(I$$I$vG cf=wIo餅 T |0-$KmKmirA$I$I&I$I$o};mv@;rI%m)%ӠjG+bI m$I$me$omRI ImimSdo"I$I,I$I$[1HͷlH$I$=mI$IKbI$I$Iu$I8w#9mm?miT%obRH~͸II,I$M%5m$Im&I$I"$2KRI$'mI}$mmm@)"&x)6nXFKHdIoIjmmI$I%@lm$woom" 01@!PQAa`q?G`˗C=[-ƒ=J*TQ(J%%%%%?'J?%DQ-?i'O?촶[-el[-˗.\O `ze˗.\r˗*\]Gp.\Pw?V˗.\dMd!C˗.\r˗/*VWQż;;{x\r˗.\A*%x^[zܹr˗.\r*Vfz"Fl̚OQSe=/-> RQRJ(J%RJ*TRJ*TRJe2>gʙR/ e[Ř B&7DUi~4/-7 j*W}m^aH3)MG"~4qa+Hb~XYGRyM5+(y5PouoC~#!7^ZR]Rn U+I̓PoXֵƷ2ؖJl=kR͉yu,~MB}YO%/jT_SD[ܗ+xF j )v4rQm<+zԳ~v~}*(.^\(}2L OJYYYIIdԱ[n^O |VҴ\xl/?`9r5/ep_CJ|*1^靃:iG=+Qm;5O8WE<.TW?\_N#.6-’u^MY>2vʿ+mg#pIײ}Z{g_~HL J7DL_={kZ~pm5~ƲJ @Wf o~v^w+JVíwJ˦}x~;.>o *T_f ZO+nFFTRl7v8JVfx1`o Қ*A|An ^SWM!O4uXkOC'k۞ qMxħcCu\3+q/Di^+@$U:h umLϡLor6=`əO*\L_<6nLNn?o A鳧!㦷iU}CV&a^P)ud>5%zړ[ w8~B LcJoý.&!nĽ=5ԩ\+ĸuw\ wWrr?U8+RRJ=ba'l\ ו969,^y cGΥJ+(TIRaί `xӃka熡d%Jr^Q:Ju}CY,)B/C3Ef}:ot@T њ[ wlR+Q寠JprJ{qAo֊` 7+K6=jiPӼfʕ*T\$FnʥD* x| !fu+yR` ~.N'/xW40)^QڕLUx_y/NITRxTJu|FڡUmJ~|N3J*TRJ>K'7P*¥i?wSs[B?KP\[ΥJx_;iT.ޗo4Shzʕ* <,s|o6FHh<Wx_}NNI_C{x_#{\GΚI<+_:19ش\[oxW#ˠgR2_9t|k.UuʥJ*V*),/1ƼN/MJ*Tʕ*TR`Ê v0+@tkV eJT1rw;B~dw?/n +y6=z)Hr˗˕˟' N+AߐQ~04.\z 5*TXoCf߹Z^oer\rRJ+':, zc쭇zoQ{bs~[8v=43ؼUn;z]{//{l7e`,Sعמk;y |>r_-7ur5:Qu0'{oe0u9ܹ~Mp\f׈*}G{ ]oK`5!/WJ3N^Twq|n}?wU\rRRK1ֳ /]/U* A&oQ?WP>e2 J4W}< ._JC++YXXplM7/{]>` jTθ^jV~0aY/Cgҝrd?\THVg'V~<}Fo݊]+A~o114Vr;n^k޷'&nk3!5??`uj*T&o]lsr7.z^+SP5 h!n:468x*uJ~~o+|F*T8O!|[E@ņU*T- TPBzbQүØLRJ*T%AN,3yؿ K9x) W'9ZKKKoLQڱaux-k{\Եܹ|\u˅O?["b~<S?_+\\[RgϐֳSܸ8^w' %8jg;J<. NL"d7;[k͐Q|K8{|"W  p\T/7 *tA3Cc73Fu01e"yTE#EDr;p>?k: .\xVb lCM&LkE)Irw!'X˜CP1>eNY&Ⱑ pxH|G"popŘVʕ·^`%?14"ʕ*WҲLRlRB%qh`VJ!h%OO?1III RoG)qRzuiKKKKS)J.(=Je2ߒЂǷODr)F˃x?[SO R| W+Ek 9b|^ Cp !l 3Ɉ}R_q/PwDBK\C!7.\k oOEc,Hh~NwS2>%zEm2J~J69ّ> ^)+7N/T@gQ _@ zۀVxه/o(#< k7.^Eza/􏂥}Ã!|}%/Sx0GS}x]˗/o2u2 /e˗.\n@" |߇迉ŗ"K@M"Cz.\ Ú>e22e˗.\r˗.\r˗.\._Jу@tX?arR^C]O[P+%$)Ur^d)O|\r˗.\r?--/~jssssrmJ~J~J~J~J~J~J~J~J~J~J~O~J%DQ(J!f0ۤS/+/A/5*W&TUy:Gf U{_M\Mfot;oh2'X5_wz6s^}m//W%}7S1*V_8/T=P^W+ .?Âg(n '}ʹr麏-5}/+@_c_\.^f5˗/b+1@"/ԯ|/Z:z@~)YOgQ/oTϱx|֘/lzkY↑^mJ,"wrۈ\5w14(^ku+UMTP{D*ag,_iO:^^^Wh~McOR ))+U?9JOAJ=U.U+jTR_OFgRrφ+J*WJy1^Z_u"0 @1P!QA`aq?8jrXqE_N<81zl'pqk*(Y?=8N888$u>V7ABpOywz8wĢ+(:\qqqqqqqqqqb>#qOq=j(GqǁI>88'{A@ABu }f36HL j$H$ q; 0%B_@`o5 CG8A6|%rG . $xAP7Kv  %C$B@_0hΎ84A=C=ql7c4f2;~ؕ pji*Pyb& RfFߎ|%B_`y}ZR>c=q6~9~HdxP@6lG1G# G#{|zO8E.6F6Lxr=s+%B_h; Q.q<{h7/88<#ˁMT%t =G`{n>JqqPyx:I!.TN cw~NsRu@]d{BĿ~ o[3ʎ zw|j%B_<8G0OH: PgpTN‡B9s \"<) vP<.>_O B=z2.53Gt(0q q38BzI_7̢EY>RGnnģPPa(΢^ X=ևaE؍HOowlMKcpEA9>jE(q"Gy7(ȈH@X81ТܛK,yy@?0QWi}y% '݄?ջ8{;&]g$*#Mb:ΨhH&lFNʳi~hhgj㏨j 0 G]l4X(|،O8-ǵ<ڈ'xhʀ!6!Z)pp]cc(dT¯BD D$Xuj HC |<ɰ ?q<Ӹ E**CQ4Z T ~A@2r7XB4𨢄>#`*?q栭|^2ϕĭn+FNⲴ=!j|qE@=<Q=cAꑐ?6WORfV] -z((Gh(?jUg5TEb@0 gxEaEeZu=ZpQE~R'C̘)JtQd@?"/;H/cE؁gƁj?PpZBUӕ%8xBO *(0=C@]*-·Ȣ`8c@gXESCr(>\n a(bzc@9)V"/H#SQ<DV Cc-qoyx>yn7k8L6:\wQNF)y0P#9[.:S8GH#6bnO's8|P`?ԕx55>ZVh4 E).q(4$ZqIkbOw 1K9d; R~ rDy \@64 gb>!eajM_8 'a/iaMgɠyx!a2MYз<\#4h$H,d&y "E\z\ !!RςBv? $Es: CiF9~W8#813C+\#A C;Mƍ"dp(d%OWch7\#@cb:b"VD9NZ+ۉY|^ !$GPb!dg%pWbuP|Z|%j+'N.%lO!GnZ [vIyQj(_C+Am;H,N WO& .UuCEHI=Ƕ\` ?{p@EQE)E7+pCaECY@^}Rr!!\Fd{ЅQh3qeTP`|GRԀaH<+yQR-X%s?yD7Y4n|qXBZ>EX&y}qt6+8.#V0C*E:xQj'HָT0A9'8ddHjyn;Oxƕ@8*TC8?ǛyH5M&!+G_$ Nݏf @B?"6*+*aEh}CI G(dFV Hp@r @7zE?5&ƇԻɠЄL#  ETC[ ø(1, IDjF0/?h;Um;R{hН{C4B, [CYC{ O*pp3B(E1h\3)j5@U*(rQEGC$.#}T>iQWjuU?!+fi ˏ[zLЈiW "QEj<P 5'{fFf.@+V#ŠqǣeEQR0D!lJƇ*(*.";tJQPD2Ènj?ZD}jG("-P1 2J8 Gȟ?ƣ(p?O@0??'b1 {pЄ%=9["!3CBrB&1 eT+<"?!D" QEYpVDF8CǃQECE?dAr?"HJ*v '0gPw0\!8ѢH CBGPB&D;$H5~!'QEZ/wAp&QF UG ؑ??=OY;b:K+DS!=%ê@آp 0=*j4!‡/,T"( uPln_ P@n"zK DqǢEY!%c 7FĴphJЈpdhOl €aaǰ4GbhlX.HLjN4l ZA OG͋ja!#CcF3ɣb$H}ʊD 848b$H"D,X"D$M83>1V #APQEQE({##U%TKk|$Qaǃ3P+J2#0FHq*boq?`Crx*2q¿@AZ:(7}˔c<#✃D_qFAǒX!qt 00.;(Y2<#thј~eCq( QE\qqq\q({(pJO`Ԣ7)'8>7p$H"D&G<s5xqf3c1f4hѣF4n!χ } >PCa p=b<qqNqP4|A7uk@X@%|0\@ڗN p`0\/$7eC(f#Vvً=L *VVowyrx1z K#9> GGO}}yeWA.?!>4@e`XݢP#rgu"V%ۢt._r@ %O+h|yFO,^K~#R=b}߈ ݫ>9V`u,!eo-|,̷̷̷̷o2eKz--->>>)SħOr%%%%%e%"WIẓ+.\j5Ĭu{N_p-P;*My|&+Alw.zEdWoxw2}` AWP0W m~z\YIJU>ygPv7-Ŷߋ 6;oP7'5f=ãp8b*N* Z~[Di~jQx%%;@)zpgReG%t6O3 3Ϸ>|{O)O)O/JS*[--AT=?C=~)K|KxyYG*ȕm?5,)N㧄!C(9s%t*ҽn7zBb#:.z'ܵp#1ySbF`AT@ :=2e8䈪 ڀ}WTThOV[1[:/Yjum_ *'\îyG/_ Id%4iIGeJEDtWDsr6K-F;n\"gy\N-T uBVrsr9(IS;,/kAMK&68z'BrY:@UvJO.z_<.lqB]ɝ9bDD:}+._G&z%*/cynt:UmˤOg9>JӺ?FzG Lg|XQ.+%mR%}%6sOK6oA_m}\?ۦog.8b#$Io/r3=']L68JyG+يN-)(ΰ5x)6<Hc=dTĴO _'+fw]H:&=F\0h{p6Dh롎Ap[L pY-->Ғ%:*M"a_, ],7 {=PmE=^E=}p x߃#fcOtVİٿl_s\SLJ]p=7ycw:&6S rlKJfdJ @`oc@c\}/'E'D[?WWSS [2nAS6 ~m~z5cDTC~ PGC9 zDy'T8xQZr{@o1;dvm웕j񺨨Cx;A`Gf ;2FcENUxu^"޼FgI{=cK'l Lu`y ;6ħkmEn ່w x$nY4A?18}|}D^^êܧ Z/lrt.[h0DW>CgSz+DL,Ɓ :Xk}e%z PRzwkVqWCpcL'/꾏x yK-m>ڊCgQ ٨;d}\;c@nP [ʧ1|YIgT P=Q<#*ٙ.:k\3 pXk醣f~(($0rs$ tɭtozET^- ۣt[SިW Cdlo( :b{Cɀ0kɗ*VU9CQh[78uNzoQj-N5R%叁QW*Xo:-MÓ"Ydo7^עܹ;p,ѾCCS'qx{/DQib[cAFBw3pfp]vӟP]n}~:|;BͰv+XS]<[mU]z&%^AoAv/V6< Yyr>lgC8qެ؊yr?!=z:Q_.eV\}TJie, xjS : 643Qu'Qm.ar]+Qg@"v uVmsjvYı6PZ߂_z#a{V9zNƧ ]y G[ b-Q_A|k[ jwG'K)Wgx4Ќn3nQh)t8[o_Fv;T\}֊T}1^,oqGhxSs%-6DLୋzи}cq؊ޗ8ÏWƋ]\jW@WC ŷv M;tR{d{GjYQᭉe1)N;0Km Xط墳coI>}-r3~PwQ䳡zZmk 3i*v݆E,lv zH;v%JT͡u] :\Ft}$sZ%[^e垱tT2COb>)G/.η5PٍtD{/黼m97=]{-r H`WE[c8g]T3pUl߄s ePQ=ezɰ-]<#ٜK)+ggIBs}mK"S[}m}فmh$-xVyƸ 3/ci;n_FAφYR}eN"սz.j#x|t)ظe~f`߾p+EC1Wr U]Ne2hju̧X6fCɂ 'koDyCNk,<؁=dYګNHp.祏?XALC K f WTżrK 5r",dطھϚ<hrnWDbĆ6,)+>̡N%{1=^!#2%|6Nvոr<%`us(<:\5p=6'Ur*lƎ][pm˹</xk&wU$Tq--[xTl=`^6.Ipyou]K_E;V%ii)wt|;=to PGI-;1Wh\c=%,vpLQƊ:nxy ;Wg pc+rꕰPCz[uմ{100zG6 l:ppNE离nهrv%b⌟ Y^!LAb=}6㉜N~i~G讒ѳܴ_j\5Mi:vh.!ݣ]{"],F 54Abw4ڵ8g)"=l-!>ګh{;UnN<ބ:'&x ,s2Vۗ.^2<( 叁rwK]nN{*}h4y\_fL׳GkIv bӗgAvv:'EضEkzWLPG6xy%YY1._ql:DQIž]@Y_i^7dh^ѿ n˗{:/Z-7Dez=*!EdgũRqS'ދ}`:= zq\@3<_Z.VX; (7.Y.zN#GIIiONeJ-)/}uAm@|Ed!fܺչ}WV^HcV﩮g"8w=1C\tn{P X5r-,/+̧E\às;*R}:'}jV=<rUTrN6L(e^z7v(e{}E9V*uE|4Z:' 9qթR2w%(GZgߍpREl ҾtEz#M͢%H(D1l_cڸc[zXrѩR *qvAhOl}_6WÎrmTW n\]l (!+)1--->%RЯrQ^z׳u: ;o{\m17`M@qlV†c־_5tBiDZZ}e%<(f>3?[oo[1jy-&7iJyƁoTq_R]:r;|MA*Sz+нh.:)W ض\= @J8^'WpٵR^̟Qp?;}}%>2ޟa{feǽ>BPf`{TpEm}@ٓMˢT="èO'sʦږV8ώ#SxNCzߓ{h[[qb6.v9ȸ@mKH1~4V0<=2YXMG 0M>3}  8*cTH/{Zz:hRYo!'£% `QSѭqT2>(>:)mCȀ{7:l6ԧ;7Y {R=(tո<v짙K^0߽mL5UG1Q^諕޺w# <#_:{m,nt'.^rn[X ,΋wwbTJЪ1G&H1o@\.tKP;́'m e4`o_}*s,ymx;3}W +=$ bpj;^ipe.EKsth=sSINd89bTJiاd+ {mkU<M : e:xt/Q}-Q'?plrb|l]DtHZ8*pfVkza9wS[İ)V}%{5^}u_5{o[->:Y̚Q}řܧ.zð9۹[_{}tL b[B3~KӋ49SB{;;&)Wݥ-C&󇉌B1r%N 亾gqzhzh>[ض+a}K|KۼS*{WoQ3)_4q9bo.I3} t4ޢ1On UE` ɎRLlo$c-U{F$_#@+G,O.a駍2juRR}e`|\MvWzf}Ebn1܇t(v oiy,i ocGlQ-aN_C^E abnEv*sH>eKGop{mx?Ӡ*gee#_ ?>Or u]rⶫܨzc`px/P!A;%bb[2̼YV\ƹ? S{g#5-j&9A@>-Q7rbਹ(@T V9_[h)S.ᾋV.:c\J9ZR^Mj bΙEcj-C^iCr@֣HW;٩Z#c{]vS=;rSb v=ց|x}[˶C횸7ZQ N1оx:&=sj"1/-[}eeeeUJq'ޡVFK"SD=@Kvkoo%y:ܵ 4`oɽ_HNdqo-`ryĮ+b{?}XƃNw^rf](EФƮ=ǝw\^X,P&^Kxy+zaqmC1aBWE5u]Ossͼ` Tp s YbQA/U. @a`]U----qq.8y63O(}DmM9 YO-S/WhO23 rXo 5)DUKؗQ+E17whjjfT5}w UNy#9e; hKۖT[Rv*/p68[,Q*W:8?\F&@k}3O}\:WhNl~ TCn[ӁSe9&Ʀ#\B&-âqбGRV[euJ. pʞ_`>XOgcۃ1D|ߨQXpwc'f w~0Q^4Tϯ9֥laɪ{mI؀p9f"fb}L@ x++3_-Gg}hT.Z. ڴU@}].׷xxLǒ֮[Wy+̽' P/r3> œ=j2pfQv41#x "SS΃GOJe%:[uaV_fp Z!Ubzh# r ;3^eyy{^|9gw.g(JoīOo1 sۙ!!/@VjcLD;t> kwY~ AAb3E4efEƉ9I#P5\'\l2jcUT} S ac-.\1{ھÉܯ|2is-rl; O*JjỌ5ؿ)җƂJTG^<#ܹ·D k]_3x86Yg(wA@yNIa=;V%7>gW+XgG.2x"({^ ( ^MHOr2rh-ѮǞ>v0"u`=\C.ph^p> 'v#eVBiO Υ*Y)).mcw~cCE55 CW_H4\\O=5h@䭂{fH~n"dz\Y]זe^o8k׹3o< rEL"8K0mrUDHf(h#v]lZx;:kn\`QANI2p~pN# AkG/wb#2T`h,;UZ 64x--* \|[բK8˼ [9Dwc'E;~ c?+7P$qh L@v"z%s~7 "d90Nc<TJyf"ıbN?Wg2׾90L,s>)=6G{٥؍tCgk#>_Æ.+~O(-Ћ(qB{DO,$=FxYYy%H""; à.Mw[=ЪհGvߝ9)u>o2x׹vfW.GQ:{a8Ez^d [燢Fw#gT{I{P'QwrXeZgOC=O'rHMSzݖA.%͹wpcO廒 9уPoG[8X%HSvvki|(`݈9t9"F5{ǡ,vؗ0/D6 A=jTTZ%;oo12QZk'ܿù'L 3jT#z2KT{LdACvt hkJ+w0&5)>X9 ?)#b8 9fZ0 b[K`-Zuv+!xedP `^YfeP-h@fp>b+JuLj8]C֧Q&e{Q lccP 4:Vs0}iX,X):Z =_0x9Km- s#D!g85;8Un飘 gUGPs܉M9"ZiuűC,|å^"%Vhܗ#򙞋;N p39"<=a\qXwg0>" ܾ3((%T'y~Y,0x?Pcb< 06h(6#}9%H@wyv+0O7ޔ/>ewӼ+;/gVpB8q쿹_"n"ѽE=ha}L7S9r/TE=l {oP[ 7ǍeGO5>'YV><@GMy+i816rp?J;O8k?+yT;~SԿnܱysǽ"Yڏe(S2e vg{_~v3, ;e-E򷩯<7NTPOS?OSה]Nȯ.\pw-=?OOTI 3Ag{?kb;'z`[gVgVgV9QLS~6@~[syCRù+$*O ~6Xr2sԲeJTH|GQo%C.qc(9'+8n$s3?NS55qFT)/N|&W)>A}Uyv3\ͥ 9ݢg[,]_ܿ҂Y/zw(pwI߳AլY9?^5_B)bVe&9y'0Fr|70h#6Bj=nދwS'l4 ũkn 62k fZ A{geKj۽R!2$Ҷ@ppB'rX1Ixe4fxMp?KN^H8v 7rnzÓEjtn %ɉD/KEũk"Ի--.Y.!UCJd7}cs KْZC[}\퀶]ao2;T?B?{_3SIZ. ]6m0fS&qm5ZsD-A{R8uF_G:Wqg`ܭ$˷`qf_9Xa@}yҧ\3^pߒ[+'RYmN'o<Id"&4sQh(Ky3RFCq"a婔h&@}*oK}*WDA;m2>tW}&ZֆtZzv6mJ;nnuN3?O_Epf|u ى[] uyѪJf  p)'tj"yoNDqT]BT43Jp~ c~/ȫ_4+%:;)!v=&兰of[ nhVmr3NE3&S&W:b 8vT3޽oCPoJ3JƇol00_"<:'>p Uz0"tsJ.^\AwH([e]rKyO?02t!:L%rPL$j)hG?VW,l~ A;B3 TEwuLGKmm;8Ssgbk0Z=gnQ P9wrIJtp v^qw"Ua9:vV/ZAKz;SroFbE}=?ַqEFDLJ:TZ<g7hbe3(|2%KW -DOTOC>4f }1q[ӍvLX&ӱPڂsW\//ٗf{^}+ -ÖP{5`O'/cwArϵ-)28/0+?I7f\6VW1AzCK[>۪o>h pk|rÁWfz O#,#^^Gq)o*qJ|Je1yW̯YOQQSĤYyyiiꞩꞩꞩꞩꞩꞩ2KhhQTBJx'SKy4RGe:N SDaWop=/g{~u\HjN}@Br,"<cEc/gK0懌Ea!w?d_}gL(?c5x[D?.U2p?Q2#0}E+U)(eꕿќP/.ϳABe{yLb}ܜTJzS PG£=TϴQT^pn 톌ᝯ̰?DS--->Ғ%} qa_ U.xgOA?LN^{'&_C<DZO?'R=+_?8?e3tr܊N r*pW2?O?O?OL~.[eeeeeeeaCf`rW3\x`D;8wG&:zpVľ;q08gmZ:2pW2m@r~Od?N?xOL]PX_OA@O~O'cb zuKAg t[{=2*:5K߉n`Lzq1̩W?2kGМ3옦v~ڈV.)"Զ> ,%5:#;q_Hq{uքJiߖ}>%;äjt93šv%ĭL& R'r^'qg}c"1~$d~~/S1.%|+}{ uk_&6Ხ_js0肼@uʞ9:෤0Bϸ@ Q+ffpS^4Ti-!Ω :Wrhä'<@ u <@ náo. Q·;:MEw JySk51vJDPbSڝ#cW&456,ɝ\\@tO \A3Cp^%9?;L߃bS|gqm饜ĭVGI¬w#1gu|=˞3JfoqhrbeoTuv}C{um1K=ʂ}@n'!]ԻZ3W-JezUq+fnL z;;ŷT^:7+ Diww.6ؔ1|:K2re˗. n wpXe-X*<ȔݴG@:.u;uVtwV۾" IqXDFk6 6޵]# <߱hV-Ʊ܂w_P,K<2222e S,щNԮmv׎к巶|gT A'bXE4-;GT`];GS-E=o- ._X8N6< 0G-'F%h/ۖV_jxAÚD/IuNG.ۣR;kUwcn1$WZ F;a/p^2kL@JF˗9N7+in=/DO+TۖTX?,>6~8O̾?E=ڴo]]NDF _[GJa)DF>9?=W1^t6Wj8rN)vҥ|RA|:Kۆ[x6YZ`?[lᗷ>T(f) K:0@8t}m*7Upս1^(;ڕ,/ _Z jH ]OWcdCz '0yJ/j^bs[W 0~̗ev}IW-;~ǩK֓?́1*I־ 9@@c@g9?i?D)%K?6?(xJ=!߬s1pp^ aBNcw1}3u)J?OgCҤ 83Mع%w-X'ט'n õj-b{]ouƉqYDDŽcW*v.\Ae}y_eXٙx,i=`3ִ'0߁}q=DLZb_2 K['2ϴƟyOcmAZ3 Јel%4_Z]g3x^Xg?~uχվUx߆y=d1/"t%X?P HQ(&#׳'P-lJ;T},|lzdtF3 O4޶3c}*JvkQ 3RyY =Oܳ)Yul%q26"32ޞabv&V(eOdDsطC"}*< P0,.+x[~b;GDKD0Fw= ䷗Ur +`X }ee]Ư D N/)G[a-.YUfE,n8dx/Q|~Q\s+xUǷ[-_B1weýqDW+a]l[\KOb-r"Vdtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/000077500000000000000000000000001352002233700260645ustar00rootroot00000000000000dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_01.png000066400000000000000000000002301352002233700306070ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX nH@ GIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_02.png000066400000000000000000000010441352002233700306140ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXӱnS1g榁$BBjAdd`,,aeE<ba``CB,Juh * Mlnob;G8 3zME`F*c_$޿gn_ς~ Gw PWF十J%I$I$Igр'IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_04.png000066400000000000000000000011011352002233700306100ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҿkay]JmKQ+iEPAA W7q]tslTEk%$^yS2Z|lXPxHvtDnq!Uc/UjDUumu0|KTn__@~.'V9:C-CÒA4b U{[?5k(pWY[D&E )xE$",XHqs۝榤߯ }!jG]2Zޡj !ކVȒ@>nW.ݟ86XQ4An@ƑQ@,Ȳ*B"JீOpG^O_ 8`39m㙧w/.~}X}dř~򧭯\P( BP=>_$IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_05.png000066400000000000000000000011421352002233700306160ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҽkQsnMƚ(HAh)qAE'I .NA*Ab1E,7<Cl:2 XȊh3F}G|p48,L)냩$ÔAB$B@uon_]. sB.p3IRS$BI/;4_#E&QH"i! @Py+;ѧʃÕ?+P+[TDrP 7ڀ!LcTLp5Z4Q%/T^7Z޽hՓ1 8`O& {L1Lh4!m$]k J_3F?Mެμ-M9k$w:g֌mxx(p[:&=qxrLx:EӉT}h Ow K<6#^bX,g }dIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_06.png000066400000000000000000000011471352002233700306240ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXпKUay{^M QA FFTdAM PC P5TK PFfMB{Ϗ$Mf:y1Ԡg8x6eo5?%>btAo)->%O$(qfҌ(rZ:XWwEM;ʮ26#tP Ny;RYjh<3z׼*^bLGdNa.EAYoe ZBٸ9:bJGF'T>UIօp؈ RemE5x(^W[Bgw`9gL78hq XenOv]p^cT_gݛJE\@OW~W/R'CZz+# #pfS&C%|q}U&2[05F͌+>]Vr\.rkWƷcIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_07.png000066400000000000000000000012101352002233700306140ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf IDATXKTQsνڽ r ^E@Z lhʂmE2]( "]iRޗs6E^Qgu?CX5PL"J`$54|Q`*lA (1q]S:dV!.(2KP^|"H8 ^$YP&?ޒx=Wpeױݔx5Xc \迍zų}#L$7=Oj i?F=RM Wd\kED[B1U@XU,PE?83 0P[j󳲲;A٫IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_10.png000066400000000000000000000011501352002233700306110ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXջjTQs JPA'!DDlBR)^Q[' ( " A"633{H˜&׋n^Ovu~$muIb]떯,̮>Hh5W0 \97{T:VMX'2iw5ez,8X2#9fV;kE]wSci4TDŽ*TpaH ϟ}jyeb S+ڟwmm9l9`en)m4ѩJ>t[  Ñ@eXn4u6RUx`|dݩ BGO ִl4uA) @_sLȸ%#0BvY|Txkʅ3|)x9q=%}^zG ˼[iIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_11.png000066400000000000000000000011251352002233700306140ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXAkAݚ6+ZED(%s=x?EOz/-7QA)p~4תn>»O Wsrw=to`IK'V 6&+;F/VKs%q*T(aqkr UuSКN-LN؉4Qh x",MYcsCE"@Z%p&"9 kD H"ټc[#ek*BYFZ jɇ_-ҘwKVNlᒄJh._"n&"\ZqK+%|q溨aYG]ͻH"gjgz`լaTʞ@dDs0EUl}JB XМO@\N :8R Lъ\"e7K)G͠7A|? 2 /)F*Fn7@((FV"?lYŝjeK/Nyc/7йd j)Ё/q|ڕSngFzi#sIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_14.png000066400000000000000000000011211352002233700306130ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?kA73{w{k-y ل FD!xhlr<" oӦMI| ڟYjp QVnqh Bvs_c&gOp4>bi;/vlc 77x`}85rfqЈpIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_15.png000066400000000000000000000011401352002233700306150ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햽kSQƟs|ަIRlQA*8OA7U."8( ZG478 7}8f̘1?Ciw` 6> 1 ;$| tcq+4d^J*?NU=Ov!W`܍!iN}zqMT_ 6A: eE0P&PUD) %$ts KE y$.x}ZU ^lyCMKg X+l8SiB88Ol(\!d/ps1.>`+ꀷ+?S kxP5 h kVpg"%d*z`95([q>W$zL&p!y4I_+Y 쾺6)hS#j(eׁfw;QV |]pW~Ūa/IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_16.png000066400000000000000000000011711352002233700306220ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햽kSQƟ{Mn̍7ܪH*v][:8;8CMAPZ暛s^"Br(- UkBe[WAPP 6"HT;{ZEm%%*6,,au/cSб瘆 ϯKK4k㙿NIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_18.png000066400000000000000000000011741352002233700306270ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=hSQ{IiڤJ4) EBZٿ.瀃8[H']\up(ںդ ۛ{T(.MtssLkf"jܨ42<CF~qd2t+ E~MuhPr!IpEgrDAɐJ5:(˜E\b֖O^NF#.8M n6IQ={@E8af5'+cK n7u>nT`a þJ9d \a$4XhtQ]zs(p+dB2 iVʧU[wz;'TMGѬ ag ƳKҼ3 +(PnJ 6k| D,l$qǘb;$4xiխZD05GkU֔~e;(=B$+͢6ݷg-]:mIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_19.png000066400000000000000000000011451352002233700306260ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXбka]Kj$6Hk!JkS- NnE(.Ep Xpu)HA[ Rr j<_^ H$D"2.X!-MÊ98j|~;ٜ똁t2Vy-$QmP6 80c׸)} `EpR"N-egdawu6MrO7g2ꨔ Y ]#~Ek ߾RœvIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_20.png000066400000000000000000000011201352002233700306070ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?kAxw'1*"`VQ !*Nlŀ V$F 4&1wݙy"^Э)}f Oyr}z[G*c'էPW21>p՜qR50PƦqf 0CzuoO)0Z{ۊon`zrSh9' aI^=ϗqW{rX C$H-\m=/㲭hWFhU^eaPV62{ .gIwSU/p0ޘ@ ([%)Lgҫ86~Y`p"k["P>@H%ooZyο6,ȃP g9 D:}1m3 ]=xZa|rdRL[MmWݾAh _XAIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_21.png000066400000000000000000000011231352002233700306130ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=kTAsfv޸ hD?P; ZHk!v&"J(5D&uݻsg_ysf x<W\ n -鍚3@1|6mXP8-?z;)W(f"$08k8u$R"o tȱ IݻV]r Lvp,q%TATHqK i.M$vU*jv, @jJʬBmBhjctP3+3-mX~[@_]6.g0 ٙ!JIdR't#q? W .(22ƈi% (4EZLV>u?X ;{"EYH@佀[Mjiu~oŲ^.:_+ mm.IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_22.png000066400000000000000000000011251352002233700306160ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=kTAsνwwe$l U XIVXXA؈E6FH$l֐f~ D%&y 8p8 A}J7!)vWt1׾Ivߛ|qSt\9U5V R*$_s4.i lm=Boˌi(`e-6۝T qlQ j:\ X{{yN3Sq* ][*CAOjDz6^S ؐ3J2JP'h$0"ϯxcXgqɛFͧLA&.+Qg>TZ}Y-*+s=Vyt#D8ICh! ȲZF.1=E7+.^LCE%RL𴢐"\8ɺib׆ 6f=7IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_23.png000066400000000000000000000011011352002233700306110ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXjSQ='71m"J) G:*E'>@#ǂC8q"8u̩`_+%$ޛޜXc2pƛl<<yehA{f¤7g+?lDW+,~K0< ,h4le[ͪ-8esQ ZJ?11b-82b*.X D "/^wZ q7aIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_24.png000066400000000000000000000011041352002233700306150ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҽnAsfv łQK,!AA4(RQ"vx"H$l-ۻsh+oqqqq3N. #].9poӯWcfmj^s?t|s7&V3Y ;OM,*b{P?ōx}ؓ^LwWV)immϦTA{:֢p[/Fb-м)i|YTr_%3+P*(!9)e0ɤ9ǚ9ob <%uE#H"@tD0a@&ᗡOtw>ONy Vo[^ |Q#jIp D pl3Ql='x_?1={bITG5Oчf83iHZ K~IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_25.png000066400000000000000000000011141352002233700306170ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҽkSa96iM6";AQ\DA?$\AEQ Rf*Z;-"+fBmc+le_Oj8x^cIZ~:q(9;{h%04s{6f;9^0Q3L~DAww}fi>RΪ^TK GauC6h]А[왿+PFuX\HeB S 'D1vrF-rZ&֬ ek'wcogUÙ,N$ g=UKgHIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_26.png000066400000000000000000000011401352002233700306170ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?hSQ߹$M5U:TD "v * N8)qTWup(sRv}_HRT*Jw;})oˢc9jG=oCޯAue;hqE#̏B`EAΓǂ1\[%,\pp|-=̕oV!@/h Ce|rF<f:ay+'4Un& jEƇ o@L@ &#3~tl Ssł/VxJԔ|gn )T0T!Abmŵ\KWط+ NhWJdGUB%%4Ls /7FR-IP8[h![NHl;h{X|789]N:6,7ŌZЂT4vpa o|"l[XIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_27.png000066400000000000000000000011461352002233700306260ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=hA $'J?$Q A;J)XX2 v`%J 9(DPx1ə^f>+FI> ߼0T*JR&Cۙ aIq|D)"7uw@ad F8k<+/+U8\=UqW7 xuÞ>XVƁbFZ-o$ȟw272f~$nu;o+#%,fT^FY~*}V+r(WUUR Bpjª70y?&tr8KS[R8FO ]!Nq1g٩Ye >#"'f͊ 2_/+TR]%[$HFUuuˡ~-(K U֧kxF=oQUn~O2IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_30.png000066400000000000000000000012011352002233700306100ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMkQsdm**HB҅ ? ?@B7APV7]I( *.T?(*6& )tJA\j9pRRRRRRRRؗ^0A+*Th,+|Q{T˯m2I On”#p1$p)NNcx0[۳urϯ:xOK}Nf knh]F :G`]&$|1c|IRA@8=m)-5,s.?>Y@p]?~ R<IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_31.png000066400000000000000000000011611352002233700306160ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=hAofno/sA- !`r_B665vilE4Fj m$]~f泐VkO5|2 򟡽wCL2Z;!%& &Frtg Yrv̦Ll;$\%‘ 5x33QrluZ) pWhSx*+A |w-qG1,'6Zܴ̏I8SW]n/czFDS OLPDQ|tT>0߉ ux5[75^{D%fU$W/~f S |qJItQa?S}! СQ+48@w,k]^Ò\wcGo9EeAƚV^.2FNkCY"d j+h4/O`ˌJf# #s0x?GVIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_32.png000066400000000000000000000011721352002233700306210ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햿kAǿG.&x5FBLJ-%D Q; 6 FDD4 )rDoγE`nyE1MQrԖVŽx(9kEKYNL c&4qQhZd٣Ȩ@'BWMdGYτC>Fj` -"]H̵#o\UQ g*PVX/z@li1lHYfcO?zaնq4O/KG #̡F'v{»'f as6cNFǛ+` };Kn2a)Z-Jޗ7^km=KugĘ5׷fw$}ʬ J#c#2c{-^5@Py^/Jl(P2s?2ǹ|\qIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_33.png000066400000000000000000000011251352002233700306200ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햿OAǿՅ#r'Q9 xb4h-4[@ag RlX,^d98Pvwf+n 0ffppgƦO\bJ@Coζ٪@ɑCx0fgoU@ bU@kE@Y h$@]+-!R *: )TKYJ+{0"{s[rcހ0jzs" 즒(1! DUo`a4}4.Ov]k2U=9f^qw/8=6)~x!Ә=VcPJ{:[֡YK,0Q?kA:rq7{wSpw6BѸbc%VxqӞ FoN=}Wcf|h6ӱf_ w0P (r=U촐w˿3kIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_34.png000066400000000000000000000011411352002233700306170ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX1kA;sw A1S.7QEUH:X04WZ+)>V|O,w4@b#LDy+`K446b~yqNTUK7fƩg@foTWsKcdj$kXoYJfhVIoįޘ+fleJ(jAWľd?d\DhMצb_o6;a+N;3'(whkة'wbJ{5=-R"kϻp,ly}\ᄍIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_35.png000066400000000000000000000011261352002233700306230ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=kasޏi0b4.t?p(8:MDZE)%I&y "yp9<73fGN“pނF{+5q͎jqJ@秽cF(SNMHPh uH>L Ms~tAD`l77[֢4*X!lFv>X:x AcFo%!Qo00Dazyc ĩVL{n$TL&qPr6*RWqc8a oڡJ7\lZjM#977,;YG"RΤ2{% &c~xY,gje-Ƿ[#_W6KC˚,p|!h1 +QJ)>\Y#>cZKJDJ-Oo5u?w,7Và9&/WfIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_36.png000066400000000000000000000011161352002233700306230ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX1kSQs{MTSk-U[;;"IgG7 A\ BMAAĔ$/y{8..[x>.&L#f,}=mƍ$\+bpҼVמM@o)FRTE*/-dS $fVl3` MF=㢡*@[#?*IpeG>W@Ѱ3iy9H ufn?9͐Z@!_AeTYS"+zGũ}5&bK".y{h|w?SǖĪ{Kw\ K'ppuodKUbP< w0˅z*s$fXNsdN5ˇJ */29_ҔCz;o ,]c\#+q5 \Lu1cgd8XDy3Ճ(G^.Ԥ^kr2$}(PLXXՇ@WR) ,%mNʟ> %):+\&ۭ^*_?xb!^P6g׽{!R"scptx#R,N9ow,X:& eﹷon'I?!NLyF\PikFϫHPN7HFM"Ү 1 #4{;ѻEƌL*7/e![q̘Bg*|FIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_38.png000066400000000000000000000011351352002233700306260ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX핽nSAF^vH, $)B4$(<%@t$ @JJCB"ȖOB{ݡRQmSM”)Ww_zfh:onŞcP^rYn{5 TL.ŠH)qƨ7B)i$* YG d+mC[߽w^0PՊaPе" *L{hP-B.< 3'$X }#RA[[,ۑֻs-ʳ̍N8Ƌ}ڥ_͗+AN!Wgi?NUbS2-)VvIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_39.png000066400000000000000000000011451352002233700306300ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX픽kSasMLr%C1`.J+NZAAD"UtPXSb#MLkb>{{RNK}y?3fq}_&.LW el%3UW䮥'0{<_N“4rL_w;G '\I^ U&5ȴ 7 V"ado?%/p(qWcОiĿ I磥YGΣe:j|x8) 5#LPqf/_޿[J&<HܹV>ͪ0aЉVũNEL|ߛ4Q`h |6x^&f>:%M}ENjS7tnWgt|6dO79030e#N~fPDLn{7`~To+zʣZ\=0f-`VY\ي/'pKpKs쫚/p)+Ҋ3`h)I+"\PDZ(5/;.=l#4e[:jk ާA^4)0wiTd Y]sr55AQ㌧?9L`䀠-֭wO^k!vf24g/#dQ~LPDO[ TP'y\8CUbkcع vBUE csJϩFħn!s жŮ); )6`|p`iv&jS?0w f6eIߋ7?)9Z'1eʔ=w4sIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_42.png000066400000000000000000000011731352002233700306230ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX;OTAs޻AXP1F1Ą; 51Zl5`06ۑXj#F]sXMJٯiw^wyjBd0]ߦfdI }D?PN}E\lQ G:.qkg990 xNb-+0&G"-d"v!6bi:q|fj{٨\#fa,;Ss'Tmf+F+^O,?(0 2ow}u>#އdVX3mnc$FAVĦ~Beh9]am^=f""}ZԢ9 0(c\.V̬iPBSMZscӪ7zH|w 46։){cD+Tlx4j, [qKkfӌ!)}z(jv^'գqZa=z8%IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_43.png000066400000000000000000000012151352002233700306210ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMKTQuQ˨DMd DТݬ[i&6A:0ehZ4wsJw5p6=PM,nhb9o̵bO&S+m|"h'`_Թ2Ruq9041ץC޽( Ai ȸ'(0 =Z\ B7}`:)eC_Or,´u3cfNrxieh+.pѩ.Ou']"= d 2Rdev}8IT9% +]yI|ἢˡWa"CTyrP'үЌUl։8?T([ڶ(CKHLhZ5MT"~3M?fgUkI6H7\R~wH7 u֌͖7H=  R ]wuT-1t`:t "TԒ"IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_44.png000066400000000000000000000012221352002233700306200ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX햿ka?}kERn'7L.uABEphE*&i6.{߯ZXyp;ׅŘ9IV*h\I<@=ݶI9(. 1 U(ggm1n ,^&^W9_ѽ\ S9;6gfqmO@-pa<J7]SjJQXh+.Ii\.92t ~(5sGb㓚2JxCY۶%MHkmZ=`nYi҂0j@=MK?yCb?At?QL6XY凰,I8iod0a2pկf84L^Hv|?A#4\o`oƊucmw4mZX:-۫?(x@FMqӧ?78jIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_45.png000066400000000000000000000012141352002233700306220ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=kQsf(1 %k b`Yؤ6E0`!E"f|93 q bvl)އ3W1Nl]V3OL!`{<=TĞ6<1!0|i|hKM? e׶bxfΗǜ6cˤ2MSNa %lz`taxjY+ )&@[5C]aƓP:xV:z5 2f,5?ʇ0m *7?} "}GT\^tC,Fِ+OxT@x/l.yJP'䋨RU"߯bw s{f{ѣGѷIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_47.png000066400000000000000000000012341352002233700306260ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?hSAǿ{y MRTEt$BnUNvEG\: %䢠R6${5yw? -Kxw܏qC랸X\-i{ >Zkr=xҖ|dL7(rc'w'e_L"3pގzjfpDY35Q ݇$p5[E{# cϰ9+W?Ge¢!E45߮Zʖ +*)zr%pmƲ{KUQzz2Aw 'C=d9 <)W9+.# WQ~u+4 d~ssv[oW`~ç7s]k}eDtjTWf>kE$bTiӗn"sSBi0XjXEa1@uBC.=x|}PMp)uG..}ru:E@}et\ $$$$$dp${*IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_48.png000066400000000000000000000012061352002233700306260ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX?hSQ'i D,8UA$HAPgH'')&)jJ@pRix{{!P ǽ{ {b).2H'Ry>`Q!\%-BZW\@pڗ036SDp~U% Xpd5i0p"Gd"Cg[\; 1ϐS"xZv`kZk*{3"BP6jF@Ir.&DjiknyN):CӲy`a]Ps|5֐vup$g8T7rr1˶yj[TkvV #RAsgs&`xu 9X;=sJkJ"}}+K8(C,qfJ9J!^3+"bLL$ fy{hG̬2a94h!W 4M?̅22'%0bG 9/ [ -Z vv`ĢA5$D=-zl7Xod=ys96k$TZ^yX/2/_G/؂WH Hȳ!A+Ze22%(O 3٬`O?,lL3uHekE_بr}y&aQDLevZ~ yTNN[$sӕm2NaIÅPS90ѠIvnRBoUF5jԨޟNIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_52.png000066400000000000000000000012121352002233700306160ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)Azsf IDATX퓽kSQƟۛƄBV*DbAWukqYnVPMh.&MrTG2t{{[:Gi,FႻ&09MF!Q&f Fmtlj{] pl&"leN pZD+~>^,#&[mN+Ehxe |g8ѯG>;uB X!X@MKUzSG3qrrN¬7xJ@W@d*&>D kb]-$ +_\0_?kB&uSÍ==o0Prɗ 3{;jͰ#^*H-*l7S9|kIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_53.png000066400000000000000000000012161352002233700306230ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMkQs$&UZE#(Z "VQpFbZRqӥ6 ؍R?FN'u-bmC\̳>6AaO)IˡgfAm6M}W/6C$SHB c·:?;{PpIsa)0"`l̍ \{SsZ)<gd+]ŘQC bgyTZÌ\k"KN~*L/5_Dg] vOimߔCĎ.c2#~TW[Uֺ ' 'T|_V/g 4$a `LW=,N%iW6@HHELj\W*HSZG3؍^1Vi2?U'W/)`x"_]ؓ#72c-q;zLLLLLLLO:RdIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_54.png000066400000000000000000000012041352002233700306210ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXKTQs8c/L"_N!QѦ]Bh٢MZmZDEF;0%HhIS8?{-*B#a0[aW#K#Wy w=dw*t='HkNEfq@&nvO`^YZWݎϐ8` 吳mD] dbyI{B㔦" Vy@^Ttv7/pu]q5/)43"V$/IJXVz&OuWk\&oi`dn&Bh>z|'5jrHy%ŪYMZͬ/pLYB*'̰/uOci{G=`k ?°ߨ wjB^-Hp1pPs)=0ˁ|7 nf CCXaiuanmFzr jPgc5+#}@SD"H$,:5IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_55.png000066400000000000000000000012061352002233700306240ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXҿka܏\ClҡbAP.*:s?@qp)b ":Tk&)^M\޼C(-XSrý{`O*elbڴ "HJ5K•tv J,D^ɻOKvW/< P*%LYL!(@=$P Ӻ+abA0 3"F~e'IuSけs>n2k+78Df~Rw4,l++VFތy@:иﮢf;o[gܝ&dCOŏ{uz#n=#e1J/琰͸)7>^ӱoZ(0!*]t;W J .Wg :?n c/#H$Ds?5[&6yIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_56.png000066400000000000000000000011701352002233700306250ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXMkQsΘLICHSU~!NWҝ/p!n.X".ܤ B(8jH&w>qeSq1r}9R=Ur aI D7(j*I~~{>Mxd癋L&O8::V=5pz!A4%! И=30)8 -MhAu!ʳjH`05œ#1Jڹv<>J׽`dcU7D"*(hw"h:o .n5Q!R,pH8ƳDh )p wos,EWs' 3O E_8$@p^Z 墖cJq@`E^o%q *ͬMރs9OuUu~ãyY4|Ln;6\8YQ׽~*YM;ĻƢܸ/?,M`HPrF(e7sg=xU%1tĤ 1gW(B /pʇXj#EOᬏٗD,@ ;ᏏS RY"٩T*JR˩nKIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_58.png000066400000000000000000000011171352002233700306300ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXjQIf:`l h-7".7t+uʅ]wNpo+jPJiHI'L\ͷ>|s+WDq$<Ȭ}a}(':n,FSaXIZ!L H ywc :RśR`V BXP`$5oc<뫇ŀX$Щ }@=ɪ(f&k'6` za(X~h?̮\H$49[CfvRwRMpW-8F۷aPcwN/'GƱ(KGlQI{c %4ƇVO͏ JJ1R8Z}5mLT@<v/Q}-VٷOH='''''''''O7 ,}IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_59.png000066400000000000000000000011171352002233700306310ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATXjAsnUw0qˆ"}7Kd| ;@\(…č?hd&3ӓtW1ĤѸo[ESOS\N L` x`Nn$e> cpzSJE5 O$c5lVCZ<`'2ĈH4 K:$ $Nl > z} X9ߎ3Ā> 0#k8s reމh ڨ0df 1 FNtcךV | m/]!r)qOMVi@KnM@^BsV 9F#ׯlYLpt|: lEsr-p ĉM{4_=<8'e_# ) }C  uмoRRT*JRk?՛C{IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/eLoading/eLoading_60.png000066400000000000000000000010651352002233700306230ustar00rootroot00000000000000PNG  IHDR szz pHYs8"@$zTXtCreatorxsLOJUpL+I-RpMKKM.)AzsfIDATX=kTAFνW|,HBX "Jl'VbcNb'P,jL6̼$.j`f0ɇk6*2Ud0 7q' x3򪳰MkQ*a \!^^{;A7Yh3UV JIA} 447t S+3QTII}pR)nxrz2Y t ;=F'焙 gӱ .sv,)M^ߍƞW6nacV½# ~KWԚE!BL9~{z1w[#á'ƂI%?ooo/Y3sLݘһ/)=mҟ+@[뎧`i\tZ+GY܈ w?*_ Z{IENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/images/loading_indicator.png000066400000000000000000000030101352002233700305130ustar00rootroot00000000000000PNG  IHDR@@`UgAMA a cHRMz&u0`:pQ<bKGD#2IDAThI\U 1I4((BPDDp@AuAp.%W.,"Fq $ND3Nq5w]W5uUuUw!iz?\'wA2A@$ Kw$b{Wް@DR/˄'i!rS/>/ *AEbq|̳$RiJe=ᡅj3T3zW?X墾γ/ Ӗ{QL'J_{Gj!bfe2뛂cV/s{޼>SlRO]- -l X-hYF[ZF~שpW WblH\]McG|+%_#$6V6KvR!9}˼/z[]p'&v9=EA>E*\s[kvuȂ-j \El3=IK➡K/xM wxK16[? 2]%]I䋭~TZiU@FOL;3OJWj͚_mO2~WX:wHPQ/lUYB=5f*i܈/#16:hf}a] R Bj ùݎmR<& ~h)HOt*x8p|-4Ϊ`qvi(c/gyUGlfAE !7a13rZ&#[D抦[g(An1}>cC!\Axٚ׍&|%Exqn4u|Jp Wl@B_ NcWÞiի89P.A7 ?gG4R$,R&ݓbL$_P-afF c\n_ӵ:yۂ#liS;c3ݲ5uMlzU_(cB:7In<8 QMY7!r$' r8]2Qy^IQ8,Q%ʹ*s6{@g9MHgl/_ o?q`su9N0FX(՜lK-zILsJ@35\ o@\0 ^qoȾC.v1(".@(lXtDu᳢9}nzt= KrSTpIENDB`dtkwidget-2.1.1/examples/dwidget-examples/collections/indicatortab.cpp000066400000000000000000000120171352002233700262450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "indicatortab.h" #include "dspinner.h" #include "dpicturesequenceview.h" #include "dlinkbutton.h" #include #include #include DWIDGET_USE_NAMESPACE IndicatorTab::IndicatorTab(QWidget *parent) : QLabel(parent) { setStyleSheet("IndicatorTab{background-color: #252627;}"); auto layout = new QVBoxLayout(this); auto *spinnerLayout = new QHBoxLayout(); auto addSpinner = [ = ](int size, QColor color) { auto spinner = new DSpinner; spinner->setFixedSize(size, size); spinner->setBackgroundColor(color); spinnerLayout->addWidget(spinner); spinner->start(); }; addSpinner(16, Qt::transparent); addSpinner(16, Qt::blue); addSpinner(32, Qt::green); addSpinner(32, Qt::yellow); addSpinner(64, Qt::white); addSpinner(64, Qt::black); spinnerLayout->addStretch(); auto *loadingContainerLayout = new QHBoxLayout(); DLoadingIndicator *loadingIndicator = new DLoadingIndicator(this); loadingIndicator->setImageSource(QPixmap(":/images/loading_indicator.png")); loadingIndicator->setLoading(true); loadingIndicator->setAniDuration(2000); loadingIndicator->setAniEasingCurve(QEasingCurve::OutInCubic); DLoadingIndicator *loadingIndicator2 = new DLoadingIndicator(this); QLabel *label = new QLabel; label->setPixmap(QPixmap(":/images/reload_normal.png")); label->setAttribute(Qt::WA_TranslucentBackground); loadingIndicator2->setFixedSize(label->sizeHint()); loadingIndicator2->setWidgetSource(label); loadingIndicator2->setSmooth(true); loadingIndicator2->setLoading(true); loadingContainerLayout->addWidget(loadingIndicator); loadingContainerLayout->addWidget(loadingIndicator2); loadingContainerLayout->addStretch(); QStringList seq; for (int i(1); i != 91; ++i) { seq.append(QString(":/images/Spinner/Spinner%1.png").arg(i, 2, 10, QChar('0'))); } QStringList seq2; for (int i(1); i != 91; ++i) { seq2.append(QString(":/images/eLoading/eLoading_%1.png").arg(i, 2, 10, QChar('0'))); } DPictureSequenceView *seqView = new DPictureSequenceView(this); seqView->setPictureSequence(":/images/Spinner/Spinner%1.png", QPair(1, 91), 2); seqView->setFixedSize(50, 50); seqView->setSpeed(20); DPictureSequenceView *seqView2 = new DPictureSequenceView(this); seqView2->setPictureSequence(seq); seqView2->setFixedSize(50, 50); seqView2->setSpeed(33); DPictureSequenceView *seqView3 = new DPictureSequenceView(this); seqView3->setPictureSequence(seq); seqView3->setFixedSize(50, 50); seqView3->setSpeed(66); DPictureSequenceView *seqView4 = new DPictureSequenceView(this); seqView4->setPictureSequence(seq2); seqView4->setFixedSize(50, 50); seqView4->setSpeed(20); DPictureSequenceView *seqView5 = new DPictureSequenceView(this); seqView5->setPictureSequence(seq2); seqView5->setFixedSize(50, 50); seqView5->setSpeed(33); DPictureSequenceView *seqView6 = new DPictureSequenceView(this); seqView6->setPictureSequence(seq2); seqView6->setFixedSize(50, 50); seqView6->setSpeed(66); auto seqViewLayout = new QHBoxLayout; seqViewLayout->addWidget(seqView); seqViewLayout->addWidget(seqView2); seqViewLayout->addWidget(seqView3); seqViewLayout->addWidget(seqView4); seqViewLayout->addWidget(seqView5); seqViewLayout->addWidget(seqView6); seqViewLayout->addStretch(); DPictureSequenceView *seqViewOnce = new DPictureSequenceView(this); seqViewOnce->setPictureSequence(seq); seqViewOnce->setFixedSize(50, 50); seqViewOnce->setSpeed(33); seqViewOnce->setSingleShot(true); DLinkButton *restart = new DLinkButton("Restart", this); auto seqOnceViewLayout = new QHBoxLayout; seqOnceViewLayout->addWidget(seqViewOnce); seqOnceViewLayout->addWidget(restart); seqOnceViewLayout->addStretch(); layout->addLayout(spinnerLayout); layout->addLayout(loadingContainerLayout); layout->addLayout(seqViewLayout); layout->addLayout(seqOnceViewLayout); layout->addStretch(); seqView->play(); seqView2->play(); seqView3->play(); seqView4->play(); seqView5->play(); seqView6->play(); connect(restart, &DLinkButton::clicked, [seqViewOnce] { seqViewOnce->play(); }); setLayout(layout); } dtkwidget-2.1.1/examples/dwidget-examples/collections/indicatortab.h000066400000000000000000000017471352002233700257220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef INDICATORTAB_H #define INDICATORTAB_H #include #include #include #include "dloadingindicator.h" DWIDGET_USE_NAMESPACE class IndicatorTab : public QLabel { Q_OBJECT public: explicit IndicatorTab(QWidget *parent = 0); }; #endif // INDICATORTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/inputtab.cpp000066400000000000000000000154571352002233700254430ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "inputtab.h" #include "dshortcutedit.h" #include "dfilechooseredit.h" #include "dipv4lineedit.h" #include "dspinbox.h" #include "dcrumbedit.h" #include #include #include #include #include #ifdef Q_OS_LINUX #include "dpasswdeditanimated.h" #endif InputTab::InputTab(QWidget *parent) : QLabel(parent) { setStyleSheet("InputTab{background-color: #252627;}"); setFocusPolicy(Qt::ClickFocus); DTK_WIDGET_NAMESPACE::DPasswordEdit *pwdEdit = new DTK_WIDGET_NAMESPACE::DPasswordEdit(this); pwdEdit->setText("password"); pwdEdit->move(20, 20); pwdEdit->setContextMenuPolicy(Qt::DefaultContextMenu); DTK_WIDGET_NAMESPACE::DPasswordEdit *pwdEdit2 = new DTK_WIDGET_NAMESPACE::DPasswordEdit(this); pwdEdit2->setText("password"); pwdEdit2->setEchoMode(DTK_WIDGET_NAMESPACE::DPasswordEdit::Normal); pwdEdit2->setAlert(true); pwdEdit2->move(20, 50); connect(pwdEdit2, &DTK_WIDGET_NAMESPACE::DPasswordEdit::focusChanged, [](bool focus) {qDebug() << "focus: " << focus;}); connect(pwdEdit2, &DTK_WIDGET_NAMESPACE::DPasswordEdit::textChanged, [](const QString &text) {qDebug() << "text: " << text;}); DTK_WIDGET_NAMESPACE::DSearchEdit *searchEdit = new DTK_WIDGET_NAMESPACE::DSearchEdit(this); //searchEdit->setSearchIcon(":/images/button.png"); //searchEdit->setFixedWidth(300); searchEdit->move(20, 120); searchEdit->setPlaceHolder("Tes"); Dtk::Widget::DThemeManager::instance()->setTheme(searchEdit, "dark"); DTK_WIDGET_NAMESPACE::DLineEdit *lineEdit = new DTK_WIDGET_NAMESPACE::DLineEdit(this); lineEdit->setText("Test Alert Message"); lineEdit->move(20, 180); // lineEdit->setAlert(true); // lineEdit->setFixedSize(200, 30); connect(lineEdit, &DTK_WIDGET_NAMESPACE::DLineEdit::focusChanged, [](bool focus) {qDebug() << "focus: " << focus;}); QTimer::singleShot(2000, nullptr, [=] {lineEdit->showAlertMessage("Test Alert Message !!");}); DTK_WIDGET_NAMESPACE::DFileChooserEdit *fileChooser = new DTK_WIDGET_NAMESPACE::DFileChooserEdit(this); fileChooser->move(150, 180); fileChooser->setDialogDisplayPosition(DTK_WIDGET_NAMESPACE::DFileChooserEdit::CurrentMonitorCenter); DTK_WIDGET_NAMESPACE::DLineEdit *lineEditAlert = new DTK_WIDGET_NAMESPACE::DLineEdit(this); lineEditAlert->setText("AlertLineEdit"); lineEditAlert->setAlert(true); lineEditAlert->setFixedSize(200, 30); lineEditAlert->move(20, 230); lineEditAlert->setValidator(new QRegExpValidator(QRegExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){0,3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)?"))); DTK_WIDGET_NAMESPACE::DShortcutEdit *shortcutEdit = new DTK_WIDGET_NAMESPACE::DShortcutEdit(this); shortcutEdit->move(20, 300); DTK_WIDGET_NAMESPACE::DIpv4LineEdit *ipv4 = new DTK_WIDGET_NAMESPACE::DIpv4LineEdit(this); ipv4->move(300, 20); connect(ipv4, &DTK_WIDGET_NAMESPACE::DIpv4LineEdit::textChanged, this, [this, ipv4](const QString &text) { qDebug() << "text changed:" <text(); }); ipv4->setText("192.168.31.55"); DTK_WIDGET_NAMESPACE::DSpinBox *spinbox = new DTK_WIDGET_NAMESPACE::DSpinBox(this); spinbox->resize(100, 22); spinbox->move(300, 50); DTK_WIDGET_NAMESPACE::DCrumbEdit* crumbEdit = new DTK_WIDGET_NAMESPACE::DCrumbEdit(this); crumbEdit->resize(100, 50); // crumbEdit->setDualClickCreateCrumb(true); // crumbEdit->setCrumbReadOnly(true); crumbEdit->move(300, 100); // searchEdit->setFocus(); lineEditAlert->setFocus(); #ifdef Q_OS_LINUX DTK_WIDGET_NAMESPACE::DPasswdEditAnimated *passwdEA = new DTK_WIDGET_NAMESPACE::DPasswdEditAnimated(this); passwdEA->move(500, 20); QCheckBox *checkButton1 = new QCheckBox("show alert", this); checkButton1->setStyleSheet("color: red"); checkButton1->move(700, 20); connect(checkButton1, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->showAlert("button clicked!!!"); else passwdEA->hideAlert(); }); QCheckBox *checkButton2 = new QCheckBox("keyboard enable", this); checkButton2->setStyleSheet("color: red"); checkButton2->setChecked(true); checkButton2->move(700, 40); connect(checkButton2, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->setKeyboardButtonEnable(true); else passwdEA->setKeyboardButtonEnable(false); }); QCheckBox *checkButton3 = new QCheckBox("capslock enable", this); checkButton3->setStyleSheet("color: red"); checkButton3->setChecked(true); checkButton3->move(700, 60); connect(checkButton3, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->setCapslockIndicatorEnable(true); else passwdEA->setCapslockIndicatorEnable(false); }); QCheckBox *checkButton4 = new QCheckBox("eye enable", this); checkButton4->setStyleSheet("color: red"); checkButton4->setChecked(true); checkButton4->move(700, 80); connect(checkButton4, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->setEyeButtonEnable(true); else passwdEA->setEyeButtonEnable(false); }); QCheckBox *checkButton5 = new QCheckBox("submit enable", this); checkButton5->setStyleSheet("color: red"); checkButton5->setChecked(true); checkButton5->move(700, 100); connect(checkButton5, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->setSubmitButtonEnable(true); else passwdEA->setSubmitButtonEnable(false); }); QCheckBox *checkButton6 = new QCheckBox("anim enable", this); checkButton6->setStyleSheet("color: red"); checkButton6->setChecked(true); checkButton6->move(700, 120); connect(checkButton6, &QCheckBox::clicked, [=](bool checked){ if (checked) passwdEA->setLoadAnimEnable(true); else passwdEA->setLoadAnimEnable(false); }); QCheckBox *checkButton7 = new QCheckBox("abort auth", this); checkButton7->setStyleSheet("color: red"); checkButton7->setChecked(true); checkButton7->move(700, 140); connect(checkButton7, &QCheckBox::clicked, [=](){ passwdEA->abortAuth(); }); #endif } dtkwidget-2.1.1/examples/dwidget-examples/collections/inputtab.h000066400000000000000000000016731352002233700251030ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef INPUTTAB_H #define INPUTTAB_H #include #include "dpasswordedit.h" #include "dsearchedit.h" #include "dlineedit.h" class InputTab : public QLabel { Q_OBJECT public: explicit InputTab(QWidget *parent = 0); }; #endif // INPUTTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/linetab.cpp000066400000000000000000000117571352002233700252320ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "linetab.h" LineTab::LineTab(QWidget *parent) : QLabel(parent) { // setStyleSheet("LineTab{background-color: #252627;}"); //////////////////////////////////////////////////////////////--DSeparator DSeparatorHorizontal *dsHorizontal = new DSeparatorHorizontal(this); dsHorizontal->setFixedSize(200,2); dsHorizontal->move(1,5); DSeparatorVertical *dsVertical = new DSeparatorVertical(this); dsVertical->setFixedSize(2,200); dsVertical->move(10,5); //////////////////////////////////////////////////////////////--DHeaderLine DHeaderLine *headerLine = new DHeaderLine(this); headerLine->setFixedSize(400, 30); headerLine->move(20,30); headerLine->setTitle("Control Library"); //////////////////////////////////////////////////////////////--DBaseLine DBaseLine * baseLine = new DBaseLine(this); baseLine->setLeftContent(new QLabel("DBaseLine")); QPushButton *bbb = new QPushButton("Test button",this); bbb->setStyleSheet("background-color: red"); baseLine->setRightContent(bbb); //////////////////////////////////////////////////////////////--DBaseExpand DBaseExpand *baseExpand = new DBaseExpand(this); baseExpand->setExpand(true); baseExpand->setFixedWidth(300); baseExpand->setHeader(baseLine); connect(bbb, &QPushButton::clicked, [=]{ baseExpand->setExpand(!baseExpand->expand()); }); DSeparatorHorizontal *dsHorizontal2 = new DSeparatorHorizontal(this); dsHorizontal2->setFixedWidth(baseExpand->width()); QLabel *expandLabel = new QLabel("Expand content"); expandLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); expandLabel->setFixedSize(200,50); baseExpand->setContent(expandLabel); baseExpand->move(20,70); dsHorizontal2->move(baseExpand->x(),baseExpand->y() - 2); /////////////////////////////////////////////////////////////--Right content QLabel *rightWidget = new QLabel(this); rightWidget->setFixedSize(300, 500); rightWidget->move(400, 0); QVBoxLayout *rightLayout = new QVBoxLayout(); rightLayout->setSpacing(0); rightLayout->setMargin(0); rightWidget->setLayout(rightLayout); /////////////////////////////////////////////////////////////--DArrowLineExpand DArrowLineExpand *arrowLineExpand = new DArrowLineExpand(); arrowLineExpand->setFixedWidth(300); arrowLineExpand->setTitle("Arrow Line Expand"); QLabel *expandLabel2 = new QLabel("Arrow Expand content"); expandLabel2->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); expandLabel2->setFixedSize(200,200); arrowLineExpand->setContent(expandLabel2); connect(arrowLineExpand, &DArrowLineExpand::expandChange, [=]{ expandLabel2->setFixedSize(expandLabel2->width(), expandLabel2->height() / 3 * 2); }); /////////////////////////////////////////////////////////////--DArrowLineExpand2 DArrowLineExpand *arrowLineExpand2 = new DArrowLineExpand(); arrowLineExpand2->setHeaderHeight(50); arrowLineExpand2->setFixedWidth(300); arrowLineExpand2->setTitle("Arrow Line Expand"); QLabel *expandLabel4 = new QLabel("Arrow Expand content"); expandLabel4->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); expandLabel4->setFixedSize(200,200); arrowLineExpand2->setContent(expandLabel4); /////////////////////////////////////////////////////////////--DSwitchLineExpand DSwitchLineExpand *switchLineExpand = new DSwitchLineExpand(); switchLineExpand->setFixedWidth(300); switchLineExpand->setTitle("Switch Line Expand"); QLabel *expandLabel3 = new QLabel("Switch Expand content"); expandLabel3->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); expandLabel3->setFixedSize(200,50); switchLineExpand->setContent(expandLabel3); DExpandGroup *group = new DExpandGroup(this); group->addExpand(arrowLineExpand); group->addExpand(arrowLineExpand2); rightLayout->addWidget(arrowLineExpand2); rightLayout->addWidget(arrowLineExpand); rightLayout->addWidget(switchLineExpand); rightLayout->addStretch(1); } dtkwidget-2.1.1/examples/dwidget-examples/collections/linetab.h000066400000000000000000000022151352002233700246640ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef LINETAB_H #define LINETAB_H #include #include #include #include "dheaderline.h" #include "dbaseline.h" #include "dseparatorhorizontal.h" #include "dseparatorvertical.h" #include "dbaseexpand.h" #include "darrowlineexpand.h" #include "dswitchlineexpand.h" #include "dexpandgroup.h" DWIDGET_USE_NAMESPACE class LineTab : public QLabel { Q_OBJECT public: explicit LineTab(QWidget *parent = 0); }; #endif // LINETAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/main.cpp000066400000000000000000000027141352002233700245310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "mainwindow.h" #include "dlabel.h" #include "dapplication.h" #include "dplatformwindowhandle.h" #include #include #include "util/dwidgetutil.h" DWIDGET_USE_NAMESPACE int main(int argc, char *argv[]) { #if defined(DTK_STATIC_LIB) DWIDGET_INIT_RESOURCE(); #endif DApplication::loadDXcbPlugin(); DApplication a(argc, argv); Dtk::Core::DLogManager::registerConsoleAppender(); a.loadTranslator(); a.setAttribute(Qt::AA_EnableHighDpiScaling, true); a.setTheme("light"); #ifdef Q_OS_UNIX a.setOOMScoreAdj(500); #endif if (!a.setSingleInstance("deepin-tool-kit-examples")) { qDebug() << "another instance is running!!"; } MainWindow w; w.show(); Dtk::Widget::moveToCenter(&w); return a.exec(); } dtkwidget-2.1.1/examples/dwidget-examples/collections/mainwindow.cpp000066400000000000000000000213601352002233700257570ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "qsettingbackend.h" #include "dsettingsdialog.h" #include "dsettingsoption.h" #include "dsettings.h" #include "dslider.h" #include "dthememanager.h" #include "dtkwidget_global.h" #include "dswitchbutton.h" #include "segmentedcontrol.h" #include "dplatformwindowhandle.h" #include "dtitlebar.h" #include #include "mainwindow.h" #include "buttonlisttab.h" #include "graphicseffecttab.h" #include "simplelistviewtab.h" #include "dtoast.h" #ifndef DTK_NO_MULTIMEDIA #include "cameraform.h" #endif DCORE_USE_NAMESPACE DWIDGET_USE_NAMESPACE MainWindow::MainWindow(QWidget *parent) : DMainWindow(parent) { auto flags = windowFlags() & ~Qt::WindowMaximizeButtonHint; flags = flags & ~Qt::WindowMinimizeButtonHint; setWindowFlags(flags); setAttribute(Qt::WA_TranslucentBackground); DThemeManager *themeManager = DThemeManager::instance(); initTabWidget(); QVBoxLayout *mainLayout = new QVBoxLayout(); mainLayout->setMargin(5); mainLayout->addWidget(m_mainTab); QHBoxLayout *styleLayout = new QHBoxLayout(); QPushButton *darkButton = new QPushButton("Dark", this); QPushButton *lightBUtton = new QPushButton("Light", this); QPushButton *enableButtons = new QPushButton("Enable Titlebar ", this); QPushButton *disableButtons = new QPushButton("Disable Titlebar", this); QPushButton *toggleMinMaxButtons = new QPushButton("Toggle MinMax", this); QPushButton *fullscreenButtons = new QPushButton("Fullscreen", this); themeManager->setTheme(lightBUtton, "light"); connect(darkButton, &QPushButton::clicked, [ = ] { themeManager->setTheme("dark"); }); connect(lightBUtton, &QPushButton::clicked, [ = ] { themeManager->setTheme("light"); }); connect(enableButtons, &QPushButton::clicked, [ = ] { titlebar()->setDisableFlags(Qt::Widget); }); connect(disableButtons, &QPushButton::clicked, [ = ] { titlebar()->setDisableFlags(Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowSystemMenuHint); }); connect(fullscreenButtons, &QPushButton::clicked, [ = ] { if (!isFullScreen()) { showFullScreen(); } else { showNormal(); } }); connect(toggleMinMaxButtons, &QPushButton::clicked, [ = ] { auto flags = windowFlags(); if (flags.testFlag(Qt::WindowMinimizeButtonHint)) { flags &= ~Qt::WindowMaximizeButtonHint; flags &= ~Qt::WindowMinimizeButtonHint; } else { flags |= Qt::WindowMaximizeButtonHint; flags |= Qt::WindowMinimizeButtonHint; } setWindowFlags(flags); show(); }); styleLayout->addWidget(darkButton); styleLayout->addWidget(lightBUtton); styleLayout->addWidget(enableButtons); styleLayout->addWidget(disableButtons); styleLayout->addWidget(toggleMinMaxButtons); styleLayout->addWidget(fullscreenButtons); styleLayout->addStretch(); mainLayout->addLayout(styleLayout); QWidget *centralWidget = new QWidget(this); centralWidget->setLayout(mainLayout); setCentralWidget(centralWidget); DTitlebar *titlebar = this->titlebar(); if (titlebar) { titlebar->setMenu(new QMenu(titlebar)); titlebar->setSeparatorVisible(true); titlebar->menu()->addAction("dfm-settings"); titlebar->menu()->addAction("dt-settings"); titlebar->menu()->addAction("testmenu1"); titlebar->menu()->addAction("testmenu2"); QMenu *menu = titlebar->menu()->addMenu("menu1"); menu->addAction("menu1->action1"); menu->addAction("menu1->action2"); connect(titlebar->menu(), &QMenu::triggered, this, &MainWindow::menuItemInvoked); titlebar->setDisableFlags(Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowSystemMenuHint); titlebar->setAutoHideOnFullscreen(true); } auto toast = new DToast(this); toast->setText("Successfully close window"); toast->setIcon(":/images/light/images/window/close_press.svg"); QTimer::singleShot(1000, [ = ]() { toast->pop(); toast->move((width() - toast->width()) / 2, (height() - toast->height()) / 2); }); QTimer::singleShot(4000, [ = ]() { toast->pop(); }); } void MainWindow::menuItemInvoked(QAction *action) { if (action->text() == "dfm-settings") { QTemporaryFile tmpFile; tmpFile.open(); auto backend = new Dtk::Core::QSettingBackend(tmpFile.fileName()); auto settings = Dtk::Core::DSettings::fromJsonFile(":/resources/data/dfm-settings.json"); settings->setBackend(backend); DSettingsDialog dsd(this); dsd.updateSettings(settings); dsd.exec(); return; } if (action->text() == "dt-settings") { QTemporaryFile tmpFile; tmpFile.open(); auto backend = new Dtk::Core::QSettingBackend(tmpFile.fileName()); auto settings = Dtk::Core::DSettings::fromJsonFile(":/resources/data/dt-settings.json"); settings->setBackend(backend); QFontDatabase fontDatabase; auto fontFamliy = settings->option("base.font.family"); QMap fontDatas; QStringList values = fontDatabase.families(); QStringList keys; for (auto &v : values) { keys << v.toLower().trimmed(); } fontDatas.insert("keys", keys); fontDatas.insert("values", values); fontFamliy->setData("items", fontDatas); // or you can set default value by json if (fontFamliy->value().toString().isEmpty()) { fontFamliy->setValue("droid serif"); } connect(fontFamliy, &DSettingsOption::valueChanged, this, [](QVariant value) { qDebug() << "fontFamliy change" << value; }); QStringList codings; for (auto coding : QTextCodec::availableCodecs()) { codings << coding; } auto encoding = settings->option("advance.encoding.encoding"); encoding->setData("items", codings); encoding->setValue(0); DSettingsDialog dsd(this); dsd.updateSettings(settings); dsd.exec(); return; } QMessageBox::warning(this, "menu clieck", action->text() + ", was cliecked"); qDebug() << "click" << action << action->isChecked(); } void MainWindow::initTabWidget() { m_mainTab = new QTabWidget(this); LineTab *lineTab = new LineTab(this); BarTab *barTab = new BarTab(this); ButtonTab *buttonTab = new ButtonTab(this); InputTab *inputTab = new InputTab(this); SliderTab *sliderTab = new SliderTab(this); IndicatorTab *indicatorTab = new IndicatorTab(this); ButtonListTab *buttonListGroupTab = new ButtonListTab(this); Segmentedcontrol *segmentedControl = new Segmentedcontrol(this); WidgetsTab *widgetsTab = new WidgetsTab(this); #ifndef DTK_NO_MULTIMEDIA CameraForm *cameraform = new CameraForm(this); #endif GraphicsEffectTab *effectTab = new GraphicsEffectTab(this); SimpleListViewTab *simplelistviewTab = new SimpleListViewTab(this); m_mainTab->addTab(widgetsTab, "Widgets"); m_mainTab->addTab(effectTab, "GraphicsEffect"); m_mainTab->addTab(indicatorTab, "Indicator"); m_mainTab->addTab(lineTab, "Line"); m_mainTab->addTab(barTab, "Bar"); m_mainTab->addTab(buttonTab, "Button"); m_mainTab->addTab(inputTab, "Input"); m_mainTab->addTab(sliderTab, "Slider"); m_mainTab->addTab(buttonListGroupTab, "ButtonList"); m_mainTab->addTab(segmentedControl, "Segmented Control"); #ifndef DTK_NO_MULTIMEDIA m_mainTab->addTab(cameraform, "Camera View"); #endif m_mainTab->addTab(simplelistviewTab, "SimpleListView"); m_mainTab->setCurrentIndex(0); } MainWindow::~MainWindow() { } dtkwidget-2.1.1/examples/dwidget-examples/collections/mainwindow.h000066400000000000000000000025321352002233700254240ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include "widgets/dmainwindow.h" #include "bartab.h" #include "buttontab.h" #include "inputtab.h" #include "linetab.h" #include "slidertab.h" #include "indicatortab.h" #include "widgetstab.h" class QAction; DWIDGET_USE_NAMESPACE class MainWindow : public DMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); protected Q_SLOTS: void menuItemInvoked(QAction *action); private: void initTabWidget(); private: QTabWidget *m_mainTab = NULL; }; #endif // MAINWINDOW_H dtkwidget-2.1.1/examples/dwidget-examples/collections/multilistitem.cpp000066400000000000000000000066371352002233700265220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "multilistitem.h" #include DWIDGET_USE_NAMESPACE MultiListItem::MultiListItem(QString artistName, QString songName, QString songLength) { artist = artistName; song = songName; length = songLength; } bool MultiListItem::sameAs(DSimpleListItem *item) { return artist == (static_cast(item))->artist && song == (static_cast(item))->song && length == (static_cast(item))->length; } void MultiListItem::drawBackground(QRect rect, QPainter *painter, int index, bool isSelect, bool isHover) { QPainterPath path; path.addRect(QRectF(rect)); painter->setOpacity(1); if (isSelect) { painter->fillPath(path, QColor("#2CA7F8")); } else if (index % 2 == 1) { painter->fillPath(path, QColor("#D8D8D8")); } } void MultiListItem::drawForeground(QRect rect, QPainter *painter, int column, int index, bool isSelect, bool isHover) { int padding = 10; painter->setOpacity(1); if (isSelect) { painter->setPen(QPen(QColor("#FFFFFF"))); } else { painter->setPen(QPen(QColor("#000000"))); } if (column == 0) { painter->drawText(QRect(rect.x() + padding, rect.y(), rect.width() - padding * 2, rect.height()), Qt::AlignLeft | Qt::AlignVCenter, artist); } else if (column == 1) { painter->drawText(QRect(rect.x() + padding, rect.y(), rect.width() - padding * 2, rect.height()), Qt::AlignLeft | Qt::AlignVCenter, song); } else if (column == 2) { painter->drawText(QRect(rect.x() + padding, rect.y(), rect.width() - padding * 2, rect.height()), Qt::AlignRight | Qt::AlignVCenter, length); } } bool MultiListItem::sortByArtist(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort) { // Init. QString artist1 = (static_cast(item1))->artist; QString artist2 = (static_cast(item2))->artist; bool sortOrder = artist1 > artist2; return descendingSort ? sortOrder : !sortOrder; } bool MultiListItem::sortBySong(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort) { // Init. QString song1 = (static_cast(item1))->song; QString song2 = (static_cast(item2))->song; bool sortOrder = song1 > song2; return descendingSort ? sortOrder : !sortOrder; } bool MultiListItem::sortByLength(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort) { // Init. QString length1 = (static_cast(item1))->length; QString length2 = (static_cast(item2))->length; bool sortOrder = length1 > length2; return descendingSort ? sortOrder : !sortOrder; } dtkwidget-2.1.1/examples/dwidget-examples/collections/multilistitem.h000066400000000000000000000031071352002233700261540ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MULTILISTITEM_H #define MULTILISTITEM_H #include DWIDGET_USE_NAMESPACE class MultiListItem : public DSimpleListItem { Q_OBJECT public: MultiListItem(QString artistName, QString songName, QString songLength); bool sameAs(DSimpleListItem *item); void drawBackground(QRect rect, QPainter *painter, int index, bool isSelect, bool isHover); void drawForeground(QRect rect, QPainter *painter, int column, int index, bool isSelect, bool isHover); static bool sortByArtist(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort); static bool sortBySong(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort); static bool sortByLength(const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort); QString artist; QString song; QString length; }; #endif dtkwidget-2.1.1/examples/dwidget-examples/collections/multilistview.cpp000066400000000000000000000045671352002233700265360ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "multilistview.h" #include "multilistitem.h" #include #include DWIDGET_USE_NAMESPACE MultiListView::MultiListView(DSimpleListView *parent) : DSimpleListView(parent) { QList items; MultiListItem *item1 = new MultiListItem("Bob Dylan", "Like A Rolling Stone", "5:56"); MultiListItem *item2 = new MultiListItem("Neil Young", "Old Man", "4:08"); MultiListItem *item3 = new MultiListItem("Eric Clapton", "Tears In Heaven", "4:34"); MultiListItem *item4 = new MultiListItem("John Lennon", "Imagine", "3:56"); items << item1; items << item2; items << item3; items << item4; QList titles; titles << "Artist" << "Song" << "Length"; QList widths; widths << 100 << -1 << 20; setColumnTitleInfo(titles, widths, 36); addItems(items); QList *alorithms = new QList(); alorithms->append(&MultiListItem::sortByArtist); alorithms->append(&MultiListItem::sortBySong); alorithms->append(&MultiListItem::sortByLength); setColumnSortingAlgorithms(alorithms, 0, true); connect(this, &MultiListView::rightClickItems, this, &MultiListView::popupMenu, Qt::QueuedConnection); } void MultiListView::popupMenu(QPoint pos, QList items) { QMenu *menu = new QMenu(); MultiListItem *item = static_cast(items[0]); QAction *artistAction = new QAction(item->artist, this); QAction *songAction = new QAction(item->song, this); QAction *lengthAction = new QAction(item->length, this); menu->addAction(artistAction); menu->addAction(songAction); menu->addAction(lengthAction); menu->exec(pos); } dtkwidget-2.1.1/examples/dwidget-examples/collections/multilistview.h000066400000000000000000000017531352002233700261750ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MULTILISTVIEW_H #define MULTILISTVIEW_H #include DWIDGET_USE_NAMESPACE class MultiListView : public DSimpleListView { Q_OBJECT public: MultiListView(DSimpleListView *parent=0); public Q_SLOTS: void popupMenu(QPoint pos, QList items); }; #endif dtkwidget-2.1.1/examples/dwidget-examples/collections/resources.qrc000066400000000000000000000002441352002233700256160ustar00rootroot00000000000000 resources/data/dfm-settings.json resources/data/dt-settings.json dtkwidget-2.1.1/examples/dwidget-examples/collections/resources/000077500000000000000000000000001352002233700251075ustar00rootroot00000000000000dtkwidget-2.1.1/examples/dwidget-examples/collections/resources/data/000077500000000000000000000000001352002233700260205ustar00rootroot00000000000000dtkwidget-2.1.1/examples/dwidget-examples/collections/resources/data/dfm-settings.json000066400000000000000000000040061352002233700313170ustar00rootroot00000000000000{ "gsettings": { "id": "com.deepin.filemanager", "path": "/com/deepin/filemanager/" }, "groups": [ { "key": "base", "name": "Basic settings", "groups": [ { "key": "open_action", "name": "Open Action", "options": [ { "key": "alway_open_on_new", "type": "checkbox", "text": "Always Open On New Windows", "default": true }, { "key": "open_file_action", "name": "Open File:", "type": "combobox", "default": "" } ] }, { "key": "new_tab_windows", "name": "New Tab & Window", "options": [ { "key": "new_window_path", "name": "New Window Open:", "type": "combobox", "default": "" }, { "key": "new_tab_path", "name": "New Tab Open:", "type": "combobox", "default": "" } ] }, { "key": "default_view", "name": "Default View", "options": [ { "key": "icon_size", "name": "Icon Size:", "type": "combobox", "default": "" } ] } ] } ] } dtkwidget-2.1.1/examples/dwidget-examples/collections/resources/data/dt-settings.json000066400000000000000000000172771352002233700311760ustar00rootroot00000000000000{ "groups": [ { "key": "base", "name": "Basic settings", "groups": [ { "key": "theme", "name": "Theme", "options": [ { "key": "theme", "type": "checkpicture", "default": 0 }, { "key": "opticy", "name": "Opticy", "type": "slider", "max": 100, "min": 0, "default": 90 } ] }, { "key": "font", "name": "Font Style", "options": [ { "key": "family", "name": "Font", "type": "combobox", "default": "" }, { "key": "size", "name": "Font Size", "type": "spinbutton", "default": 12, "max": 20, "min": 9 }, { "key": "style", "name": "Font Style", "type": "buttongroup", "items": ["B","/"], "default": 0 } ] } ] }, { "key": "shortcuts", "name": "Shortcuts", "groups": [ { "key": "ternimal", "name": "Ternimal", "hide": true, "options": [ { "key": "copy", "name": "Copy", "type": "shortcut", "default": "Ctrl+Alt+C" }, { "key": "paste", "name": "Paste", "type": "shortcut", "default": "Ctrl+Alt+V" }, { "key": "scroll_up", "name": "Scroll Up", "type": "shortcut", "default": "Alt+." }, { "key": "scroll_down", "name": "Scroll down", "type": "shortcut", "default": "Alt+," } ] }, { "key": "workspace", "name": "Workspace", "options": [ { "key": "new_window", "name": "New Window", "type": "shortcut", "default": "Ctrl+Shitf+<" }, { "key": "next_tab", "name": "Next Tab", "type": "shortcut", "default": "Ctrl+N" }, { "key": "prev_up", "name": "Previous Tab", "type": "shortcut", "default": "Ctrl+Shitf+>" }, { "key": "close_tab", "name": "Close Tab", "type": "shortcut", "default": "Ctrl+W" } ] } ] }, { "key": "advance", "name": "Advance", "groups": [ { "key": "cursor", "name": "Cursor", "options": [ { "key": "shrap", "name": "Cursor Shrap", "type": "buttongroup", "items": ["█","_","|"], "default": 0 }, { "key": "blink", "type": "checkbox", "text": "Cursor blink", "default": true }, { "key": "radiogroup", "name": " ", "type": "radiogroup", "items": ["Minimize to tray","Exit Deepin Music"], "default": 0 } ] }, { "key": "encoding", "name": "Default encoding", "options": [ { "key": "encoding", "name": "Encoding", "type": "combobox", "default": "utf-8" } ] }, { "key": "coustom", "name": "Coustom", "options": [ { "key": "coustom_command", "name": "Coustom Command", "type": "lineedit", "default": "" }, { "key": "coustom_directory", "name": "Coustom Directory", "type": "lineedit", "default": "" } ] }, { "key": "scroll", "name": "Scroll", "options": [ { "key": "scroll_bottom", "text": "Scroll Bottom", "type": "checkbox", "default": "" }, { "key": "scroll_line_count", "name": "Scroll line count", "type": "spinbutton", "default": 10 } ] }, { "key": "compatibility", "name": "Compatibility", "options": [ { "key": "breakspce_action", "name": "Breakspce Action", "type": "combobox", "default": "" }, { "key": "delete_action", "name": "Delete Action", "type": "combobox", "default": "" } ] } ] } ] } dtkwidget-2.1.1/examples/dwidget-examples/collections/segmentedcontrol.cpp000066400000000000000000000027201352002233700271560ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "segmentedcontrol.h" #include Segmentedcontrol::Segmentedcontrol(QWidget *parent) : QFrame(parent), segmentedControl(new DSegmentedControl(this)) { segmentedControl->addSegmented("page1"); segmentedControl->addSegmented("page2"); segmentedControl->addSegmented("page3"); segmentedControl->move(100, 50); QLabel *label = new QLabel(this); QPalette pa = label->palette(); pa.setColor(QPalette::Foreground, Qt::white); label->setPalette(pa); label->move(100, 150); label->setText(QString("current paga %1").arg(segmentedControl->currentIndex()+1)); connect(segmentedControl, &DSegmentedControl::currentChanged, [=](){ label->setText(QString("current paga %1").arg(segmentedControl->currentIndex()+1)); }); } dtkwidget-2.1.1/examples/dwidget-examples/collections/segmentedcontrol.h000066400000000000000000000020351352002233700266220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SEGMENTEDCONTROL_H #define SEGMENTEDCONTROL_H #include #include "dsegmentedcontrol.h" #include "dtkwidget_global.h" DWIDGET_USE_NAMESPACE class Segmentedcontrol : public QFrame { Q_OBJECT public: explicit Segmentedcontrol(QWidget *parent = 0); private: DSegmentedControl *segmentedControl; }; #endif // SEGMENTEDCONTROL_H dtkwidget-2.1.1/examples/dwidget-examples/collections/simplelistviewtab.cpp000066400000000000000000000022221352002233700273460ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "simplelistviewtab.h" #include "singlelistview.h" #include "multilistview.h" SimpleListViewTab::SimpleListViewTab(QWidget *parent) : QWidget(parent) { QHBoxLayout *layout = new QHBoxLayout(this); SingleListView *singleListView = new SingleListView(); MultiListView *multiListView = new MultiListView(); layout->addWidget(singleListView); layout->addWidget(multiListView); } SimpleListViewTab::~SimpleListViewTab() { } dtkwidget-2.1.1/examples/dwidget-examples/collections/simplelistviewtab.h000066400000000000000000000016241352002233700270200ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SIMPLEVIEWTAB_H #define SIMPLEVIEWTAB_H #include class SimpleListViewTab : public QWidget { Q_OBJECT public: SimpleListViewTab(QWidget *parent=0); ~SimpleListViewTab(); }; #endif dtkwidget-2.1.1/examples/dwidget-examples/collections/singlelistitem.cpp000066400000000000000000000033751352002233700266450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "singlelistitem.h" #include DWIDGET_USE_NAMESPACE SingleListItem::SingleListItem(QString itemName) { name = itemName; } bool SingleListItem::sameAs(DSimpleListItem *item) { return name == (static_cast(item))->name; } void SingleListItem::drawBackground(QRect rect, QPainter *painter, int index, bool isSelect, bool isHover) { QPainterPath path; path.addRect(QRectF(rect)); painter->setOpacity(1); if (isSelect) { painter->fillPath(path, QColor("#2CA7F8")); } else if (index % 2 == 1) { painter->fillPath(path, QColor("#D8D8D8")); } } void SingleListItem::drawForeground(QRect rect, QPainter *painter, int column, int index, bool isSelect, bool isHover) { painter->setOpacity(1); if (isSelect) { painter->setPen(QPen(QColor("#FFFFFF"))); } else { painter->setPen(QPen(QColor("#000000"))); } int padding = 10; painter->drawText(QRect(rect.x() + padding, rect.y(), rect.width() - padding * 2, rect.height()), Qt::AlignLeft | Qt::AlignVCenter, name); } dtkwidget-2.1.1/examples/dwidget-examples/collections/singlelistitem.h000066400000000000000000000022531352002233700263040ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SINGLELISTITEM_H #define SINGLELISTITEM_H #include DWIDGET_USE_NAMESPACE class SingleListItem : public DSimpleListItem { Q_OBJECT public: SingleListItem(QString itemName); bool sameAs(DSimpleListItem *item); void drawBackground(QRect rect, QPainter *painter, int index, bool isSelect, bool isHover); void drawForeground(QRect rect, QPainter *painter, int column, int index, bool isSelect, bool isHover); QString name; }; #endif dtkwidget-2.1.1/examples/dwidget-examples/collections/singlelistview.cpp000066400000000000000000000022141352002233700266500ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "singlelistview.h" #include "singlelistitem.h" DWIDGET_USE_NAMESPACE SingleListView::SingleListView(DSimpleListView *parent) : DSimpleListView(parent) { QStringList rockStars; rockStars << "Bob Dylan" << "Neil Young" << "Eric Clapton" << "John Lennon"; QList items; for (auto rockStarName : rockStars){ SingleListItem *item = new SingleListItem(rockStarName); items << item; } addItems(items); } dtkwidget-2.1.1/examples/dwidget-examples/collections/singlelistview.h000066400000000000000000000016441352002233700263230ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SINGLELISTVIEW_H #define SINGLELISTVIEW_H #include DWIDGET_USE_NAMESPACE class SingleListView : public DSimpleListView { Q_OBJECT public: SingleListView(DSimpleListView *parent=0); }; #endif dtkwidget-2.1.1/examples/dwidget-examples/collections/slidertab.cpp000066400000000000000000000023531352002233700255550ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dslider.h" #include "slidertab.h" DWIDGET_USE_NAMESPACE SliderTab::SliderTab(QWidget *parent) : QLabel(parent) { setStyleSheet("SliderTab{background-color: #1A1B1B}"); DSlider * slider = new DSlider(Qt::Horizontal, this); slider->setFixedWidth(300); slider->setFixedHeight(40); slider->move(20, 50); DSlider *sharpSlider = new DSlider(Qt::Horizontal, this); sharpSlider->setHandleType(DSlider::SharpHandler); sharpSlider->setFixedWidth(300); sharpSlider->setFixedHeight(40); sharpSlider->move(20, 100); } dtkwidget-2.1.1/examples/dwidget-examples/collections/slidertab.h000066400000000000000000000016061352002233700252220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SLIDERTAB_H #define SLIDERTAB_H #include #include class SliderTab : public QLabel { Q_OBJECT public: explicit SliderTab(QWidget *parent = 0); }; #endif // SLIDERTAB_H dtkwidget-2.1.1/examples/dwidget-examples/collections/widgetstab.cpp000066400000000000000000000064071352002233700257450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "widgetstab.h" #include "darrowrectangle.h" #ifdef Q_OS_LINUX #include "dmpriscontrol.h" #include "dregionmonitor.h" using Dtk::Widget::DRegionMonitor; #endif #include WidgetsTab::WidgetsTab(QWidget *parent) : QLabel(parent) { setStyleSheet("WidgetsTab {background-color:#252627;} QCheckBox {color:#666;}"); #ifdef Q_OS_LINUX DRegionMonitor *rm = new DRegionMonitor(this); rm->registerRegion(QRegion(0, 0, 500, 500)); Q_ASSERT(rm->registered()); connect(rm, &DRegionMonitor::buttonPress, [=](const QPoint &p, const int flag) { qDebug() << "btn press:" << p << flag; }); connect(rm, &DRegionMonitor::buttonRelease, [=](const QPoint &p, const int flag) { qDebug() << "btn release:" << p << flag; }); #endif QCheckBox *lunarVisible = new QCheckBox(this); lunarVisible->setText("lunar visible"); lunarVisible->move(320, 50); lunarVisible->setChecked(true); QCheckBox *festivalHighlight = new QCheckBox(this); festivalHighlight->setText("lunar festival highlight"); festivalHighlight->setChecked(true); festivalHighlight->move(320, 80); QCheckBox *cellSelectable = new QCheckBox(this); cellSelectable->setText("cell selectable"); cellSelectable->setChecked(true); cellSelectable->move(320, 110); QCheckBox *controlPanelVisible = new QCheckBox(this); controlPanelVisible->setText("control panel visible"); controlPanelVisible->move(320, 140); controlPanelVisible->setChecked(true); QCheckBox *dateInfoVisible = new QCheckBox(this); dateInfoVisible->setText("date info visible"); dateInfoVisible->setChecked(false); dateInfoVisible->move(320, 170); QCheckBox *togglePic = new QCheckBox(this); togglePic->setText("toggle music picture"); togglePic->setChecked(false); togglePic->move(320, 200); ////////////////////ArrowRectangle////////////////// DArrowRectangle *rectangle = new DArrowRectangle(DArrowRectangle::ArrowLeft); // rectangle->setArrowY(15); rectangle->setArrowX(25); rectangle->setArrowWidth(30); rectangle->setArrowHeight(10); QPushButton *button = new QPushButton("DArrowRectangle Test"); button->setFixedSize(200, 30); rectangle->setContent(button); rectangle->show(200, 200); rectangle->setBackgroundColor(QColor(255, 255, 255, 0.5)); #ifdef Q_OS_LINUX // mpris DMPRISControl *control = new DMPRISControl(this); control->setFixedSize(300, 300); control->move(500, 0); control->setStyleSheet("background-color:red;"); connect(togglePic, SIGNAL(toggled(bool)), control, SLOT(setPictureVisible(bool))); #endif } dtkwidget-2.1.1/examples/dwidget-examples/collections/widgetstab.h000066400000000000000000000016511352002233700254060ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef WIDGETSTAB_H #define WIDGETSTAB_H #include #include "dtextbutton.h" DWIDGET_USE_NAMESPACE class WidgetsTab : public QLabel { Q_OBJECT public: explicit WidgetsTab(QWidget *parent = 0); }; #endif // WIDGETSTAB_H dtkwidget-2.1.1/examples/dwidget-examples/dwidget-examples.pro000066400000000000000000000000531352002233700245420ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += collections dtkwidget-2.1.1/examples/examples.pro000066400000000000000000000000601352002233700176500ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += dwidget-examples dtkwidget-2.1.1/src/000077500000000000000000000000001352002233700142655ustar00rootroot00000000000000dtkwidget-2.1.1/src/dtkwidget_global.h000066400000000000000000000060101352002233700177410ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include #define DWIDGET_NAMESPACE Widget #define DTK_WIDGET_NAMESPACE DTK_NAMESPACE::Widget #define DWIDGET_BEGIN_NAMESPACE namespace DTK_NAMESPACE { namespace DWIDGET_NAMESPACE { #define DWIDGET_END_NAMESPACE }} #define DWIDGET_USE_NAMESPACE using namespace DTK_WIDGET_NAMESPACE; #if defined(DTK_STATIC_LIB) void inline dtk_windget_init_resource() { Q_INIT_RESOURCE(icons); Q_INIT_RESOURCE(dui_theme_dark); Q_INIT_RESOURCE(dui_theme_light); // TODO: use marco create by dtk_build #if defined(DTK_STATIC_TRANSLATION) Q_INIT_RESOURCE(dtkwidget_translations); #endif } #endif namespace Dtk { namespace Widget { #if defined(DTK_STATIC_LIB) #define DWIDGET_INIT_RESOURCE() \ do { \ dtk_windget_init_resource(); \ } while (0) #endif } } #if defined(DTK_STATIC_LIB) # define LIBDTKWIDGETSHARED_EXPORT #else #if defined(LIBDTKWIDGET_LIBRARY) # define LIBDTKWIDGETSHARED_EXPORT Q_DECL_EXPORT #else # define LIBDTKWIDGETSHARED_EXPORT Q_DECL_IMPORT #endif #endif #define DTKWIDGET_DECL_DEPRECATED D_DECL_DEPRECATED #define D_THEME_INIT_WIDGET(className, ...) do{\ DThemeManager * manager = DThemeManager::instance(); \ {const QString &sheet = this->styleSheet() + manager->getQssForWidget(#className, this); \ if (!sheet.isEmpty()) this->setStyleSheet(sheet); \ } \ connect(manager, &DThemeManager::themeChanged, this, [this, manager] (QString) { \ const QString &sheet = manager->getQssForWidget(#className, this); \ if (!sheet.isEmpty()) this->setStyleSheet(sheet); \ });\ connect(manager, &DThemeManager::widgetThemeChanged, this, [this, manager] (QWidget *w, QString) { \ if (w == this) this->setStyleSheet(manager->getQssForWidget(#className, this)); \ }); \ QStringList list = QString(#__VA_ARGS__).replace(" ", "").split(",");\ const QMetaObject *self = metaObject();\ Q_FOREACH (const QString &str, list) {\ if(str.isEmpty())\ continue;\ connect(this, self->property(self->indexOfProperty(str.toLatin1().data())).notifySignal(),\ manager, manager->metaObject()->method(manager->metaObject()->indexOfMethod("updateQss()")));\ } \ } while (0); dtkwidget-2.1.1/src/lib.pri000066400000000000000000000013071352002233700155500ustar00rootroot00000000000000include($$PWD/config.pri) CONFIG += c++11 create_pc create_prl no_install_prl isEmpty(LIB_INSTALL_DIR) { target.path = $$PREFIX/lib } else { target.path = $$LIB_INSTALL_DIR } message("Build dtkwidget version: $${VERSION}") QMAKE_PKGCONFIG_LIBDIR = $$target.path QMAKE_PKGCONFIG_VERSION = $$VERSION QMAKE_PKGCONFIG_DESTDIR = pkgconfig isEmpty(INCLUDE_INSTALL_DIR) { DTK_INCLUDEPATH = $$PREFIX/include/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT} } else { DTK_INCLUDEPATH = $$INCLUDE_INSTALL_DIR/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT} } load(configure) qtCompileTest(libdframeworkdbus) { DEFINES += DBUS_VERSION_0_4_2 } INSTALLS += includes target win32* { CONFIG += staticlib } dtkwidget-2.1.1/src/platforms/000077500000000000000000000000001352002233700162745ustar00rootroot00000000000000dtkwidget-2.1.1/src/platforms/mac/000077500000000000000000000000001352002233700170345ustar00rootroot00000000000000dtkwidget-2.1.1/src/platforms/mac/osxwindow.h000066400000000000000000000013651352002233700212530ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ namespace OSX { void HideWindowTitlebar(long winid); } dtkwidget-2.1.1/src/platforms/mac/osxwindow.mm000066400000000000000000000025311352002233700214310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "osxwindow.h" #include namespace OSX { void HideWindowTitlebar(long winId) { NSView *view = reinterpret_cast(winId); NSWindow* window = [view window]; [window setStyleMask: [window styleMask] | NSFullSizeContentViewWindowMask | NSWindowTitleHidden]; [window setTitlebarAppearsTransparent:YES]; [window setMovableByWindowBackground:YES]; [[window standardWindowButton:NSWindowCloseButton] setHidden:YES]; [[window standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES]; [[window standardWindowButton:NSWindowZoomButton] setHidden:YES]; window.titleVisibility = NSWindowTitleHidden; } } dtkwidget-2.1.1/src/platforms/platforms.pri000066400000000000000000000001351352002233700210160ustar00rootroot00000000000000 linux { include($$PWD/x11/x11.pri) } win32* { include($$PWD/windows/windows.pri) } dtkwidget-2.1.1/src/platforms/windows/000077500000000000000000000000001352002233700177665ustar00rootroot00000000000000dtkwidget-2.1.1/src/platforms/windows/popupmenustyle.cpp000066400000000000000000000311721352002233700236070ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "popupmenustyle.h" #include #include #include #include #include #include namespace { const QString SUB_MENU_NORMAL_ICON = ":/images/resources/images/sub_menu_normal.png"; const QString SUB_MENU_HOVER_ICON = ":/images/resources/images/sub_menu_hover.png"; const qreal FRAME_BORDER_WIDTH = 0.5; const int FRAME_BORDER_RADIUS = 4; const int ITEM_HEIGHT = 21; const int ICON_PIXEL_SIZE = 16; const int ICON_LEFT_MARGIN = 4; const int TEXT_LEFT_MARGIN = 4; const int SEPARATOR_HEIGHT = 9; const int SEPARATOR_LEFT_MARGIN = 11; const int SEPARATOR_RIGHT_MARGIN = 10; const int TEXT_FONT_PIXEL_SIZE = 12; const int SHORTCUT_FONT_PIXEL_SIZE = 10; const QColor FRAME_BORDER_COLOR = QColor(255, 255, 255, 51); const QColor TEXT_COLOR = QColor("#ffffff"); const QColor SHORTCUT_COLOR = QColor(255, 255, 255, 153); const QColor SHORTCUT_HOVER_COLOR = QColor(255, 255, 255, 255); const QColor ITEM_BG_NORMAL_COLOR = QColor(0, 0, 0, 204); const QColor ITEM_BG_HOVER_COLOR = QColor(0, 188, 255, 255); const QColor SEPARATOR_COLOR = QColor(255, 255, 255, 51); } // namespace PopupMenuStyle::PopupMenuStyle() : QProxyStyle() { } int PopupMenuStyle::styleHint(QStyle::StyleHint hint, const QStyleOption* option, const QWidget* widget, QStyleHintReturn* returnData) const { switch (hint) { case QStyle::SH_Menu_Scrollable: return 1; case QStyle::SH_Menu_KeyboardSearch: return 0; default: return QProxyStyle::styleHint(hint, option, widget, returnData); } } int PopupMenuStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption* option, const QWidget* widget) const { switch (metric) { case QStyle::PM_MenuScrollerHeight: return 15; case QStyle::PM_MenuDesktopFrameWidth: return 0; case QStyle::PM_SubMenuOverlap: return -1; case QStyle::PM_MenuVMargin: return 8; default: return QProxyStyle::pixelMetric(metric, option, widget); } } void PopupMenuStyle::drawControl(QStyle::ControlElement control, const QStyleOption* option, QPainter* painter, const QWidget* widget) const { switch (control) { case QStyle::CE_MenuItem: drawMenuItem(option, painter); break; // case QStyle::CE_MenuScroller: // drawScroller(option, painter); // break; default: QProxyStyle::drawControl(control, option, painter, widget); } } void PopupMenuStyle::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { if (element == QStyle::PE_PanelMenu) { painter->setRenderHint(QPainter::Antialiasing); QPainterPath path; // Skill // Make path's corner draw smooth // http://www.cnblogs.com/smileEvday/p/iOS_PixelVsPoint.html QRectF rect = option->rect; rect.setTopLeft(QPointF(0.5, 0.5)); rect.setBottomRight(QPointF(rect.width() - 1, rect.height() - 1)); path.addRoundedRect(rect, FRAME_BORDER_RADIUS, FRAME_BORDER_RADIUS); painter->fillPath(path, QBrush(ITEM_BG_NORMAL_COLOR)); // Do not draw outside border if it's sub-menu if (widget->parentWidget()) { // Skill // Draw outside border QPainterPathStroker stroker; stroker.setWidth(FRAME_BORDER_WIDTH); stroker.setJoinStyle(Qt::RoundJoin); QPainterPath borderPath = stroker.createStroke(path); QPen pen(FRAME_BORDER_COLOR, FRAME_BORDER_WIDTH); painter->setPen(pen); painter->drawPath(borderPath); } } else { QProxyStyle::drawPrimitive(element, option, painter, widget); } } QSize PopupMenuStyle::sizeFromContents(QStyle::ContentsType type, const QStyleOption* option, const QSize& contentsSize, const QWidget* widget) const { QSize originSize = QProxyStyle::sizeFromContents(type, option, contentsSize, widget); switch (type) { case QStyle::CT_MenuItem: return getItemSize(option, originSize); default: return originSize; } } void PopupMenuStyle::drawScroller(const QStyleOption *option, QPainter *painter) const { Q_UNUSED(option) Q_UNUSED(painter) // QRect rect = option->rect; // // Draw background // painter->drawPixmap(rect, QPixmap(kItemNormalBackground)); // // Draw arrow // QPixmap arrow_pixmap = getArrowPixmap(option->state); // QRect arrow_rect(rect.x() + (rect.width() - arrow_pixmap.width()) / 2, // rect.y() + (rect.height() - arrow_pixmap.height()) / 2, // arrow_pixmap.width(), // arrow_pixmap.height()); // painter->drawPixmap(arrow_rect, arrow_pixmap); } void PopupMenuStyle::drawMenuItem(const QStyleOption* option, QPainter* painter) const { if (const QStyleOptionMenuItem* menuItem = qstyleoption_cast(option)) { if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) { drawSeparator(menuItem, painter); } else { // Draw background painter->fillRect(menuItem->rect, QBrush(getItemBGColor(menuItem->state))); drawMenuItemIcon(menuItem, painter); drawMenuItemText(menuItem, painter); drawMenuItemSubIcon(menuItem, painter); drawMenuItemCheckedIcon(menuItem, painter); } } } void PopupMenuStyle::drawSeparator(const QStyleOptionMenuItem *menuItem, QPainter *painter) const { // painter->fillRect(menuItem->rect, QBrush(ITEM_BG_NORMAL_COLOR)); const int x1 = menuItem->rect.x() + SEPARATOR_LEFT_MARGIN; const int x2 = menuItem->rect.x() + menuItem->rect.width() - SEPARATOR_RIGHT_MARGIN; const int y = menuItem->rect.y() + (SEPARATOR_HEIGHT - 1) / 2; // Note pixel calculate kill, make sure draw the line is 1px height QLineF line(x1, y + 0.5, x2, y + 0.5); QPen pen(SEPARATOR_COLOR, 1); painter->setPen(pen); painter->drawLine(line); } void PopupMenuStyle::drawMenuItemIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const { QPixmap pixmap = getIconPixmap(menuItem->state, menuItem->icon, QSize(ICON_PIXEL_SIZE, ICON_PIXEL_SIZE)); if (pixmap.isNull()) { return; } int y = menuItem->rect.y() + (menuItem->rect.height() - pixmap.height()) / 2; painter->drawPixmap(ICON_LEFT_MARGIN, y, pixmap.width(), pixmap.height(), pixmap); } void PopupMenuStyle::drawMenuItemText(const QStyleOptionMenuItem* menuItem, QPainter* painter) const { int width = menuItem->rect.width(); int height = menuItem->rect.height(); int y = menuItem->rect.y(); // Draw shortcut QFont shortcutFont; shortcutFont.setPixelSize(SHORTCUT_FONT_PIXEL_SIZE); QFontMetrics shortcutFM(shortcutFont); const QString shortcutContent = menuItem->text.split(SHORTCUT_SPLIT_FLAG).last(); const int shortcutWidth = shortcutFM.width(shortcutContent.trimmed()); const int shortcutX = width - SEPARATOR_RIGHT_MARGIN - shortcutWidth; QPen shortcutPen((menuItem->state & QStyle::State_Selected) ? SHORTCUT_HOVER_COLOR : SHORTCUT_COLOR); painter->setPen(shortcutPen); painter->setFont(shortcutFont); painter->drawText(shortcutX, y, shortcutWidth, height, Qt::AlignRight | Qt::AlignVCenter, shortcutContent); // Draw title QFont titleFont; titleFont.setPixelSize(TEXT_FONT_PIXEL_SIZE); QFontMetrics titleFM(titleFont); const QString titleContent = menuItem->text.split(SHORTCUT_SPLIT_FLAG).first(); int leftSpacing = ICON_LEFT_MARGIN + ICON_PIXEL_SIZE + TEXT_LEFT_MARGIN; const int titleWidth = width - leftSpacing - shortcutWidth - SEPARATOR_LEFT_MARGIN; int titleX = leftSpacing; QPen titlePen(TEXT_COLOR); painter->setPen(titlePen); painter->setFont(titleFont); painter->drawText(titleX, y, titleWidth, height, Qt::AlignLeft | Qt::AlignVCenter, titleFM.elidedText(titleContent, Qt::ElideRight, titleWidth)); } void PopupMenuStyle::drawMenuItemSubIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const { // Draw sub-menu icon if (menuItem->menuItemType == QStyleOptionMenuItem::SubMenu) { QPixmap pixmap(getSubMenuPixmap(menuItem->state)); int height = menuItem->rect.height(); int x = menuItem->rect.width() - TEXT_LEFT_MARGIN - ICON_PIXEL_SIZE; int y = menuItem->rect.y() + (height - pixmap.height()) / 2; painter->drawPixmap(x, y, pixmap.width(), pixmap.height(), pixmap); } } void PopupMenuStyle::drawMenuItemCheckedIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const { Q_UNUSED(menuItem) Q_UNUSED(painter) // if (menuItem->checked) { // QPixmap pixmap; // QPixmapCache::find(kCheckedIconCacheKey, &pixmap); // int height = menuItem->rect.height(); // int x = menuItem->rect.width() - TEXT_LEFT_MARGIN - ICON_PIXEL_SIZE; // int y = menuItem->rect.y() + (height - pixmap.height()) / 2; // painter->drawPixmap(x, y, pixmap.width(), pixmap.height(), pixmap); // } } QSize PopupMenuStyle::getItemSize(const QStyleOption* option, const QSize& size) const { const int m = SEPARATOR_LEFT_MARGIN + SEPARATOR_RIGHT_MARGIN; if (const QStyleOptionMenuItem* menuItem = qstyleoption_cast(option)) { switch (menuItem->menuItemType) { case QStyleOptionMenuItem::Separator: return QSize(size.width() / 2 + m, SEPARATOR_HEIGHT); case QStyleOptionMenuItem::Normal: case QStyleOptionMenuItem::SubMenu: return QSize(size.width() / 2 + m, ITEM_HEIGHT); default: return size; } } else { return size; } } QColor PopupMenuStyle::getItemBGColor(const QStyle::State state) const { // QStyle::State_MouseOver not working, don't know why if (state & QStyle::State_Selected) { return ITEM_BG_HOVER_COLOR; } else { return QColor(0, 0, 0, 0); } } QPixmap PopupMenuStyle::getSubMenuPixmap(const QStyle::State state) const { if (state & QStyle::State_Selected) { return SUB_MENU_HOVER_ICON; } else { return SUB_MENU_NORMAL_ICON; } } QPixmap PopupMenuStyle::getIconPixmap(const QStyle::State state, const QIcon& icon, const QSize& size) const { QIcon::Mode iconMode = QIcon::Normal; QIcon::State iconState = QIcon::Off; if (state & QStyle::State_Active) { iconMode = QIcon::Active; } else if (state & QStyle::State_Selected) { iconMode = QIcon::Selected; } else if (!(state & QStyle::State_Enabled)) { iconMode = QIcon::Disabled; } if (state & QStyle::State_On) { iconState = QIcon::On; } return icon.pixmap(size, iconMode, iconState); } dtkwidget-2.1.1/src/platforms/windows/popupmenustyle.h000066400000000000000000000057571352002233700232660ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef POPUPMENUSTYLEH #define POPUPMENUSTYLEH #include const QString SHORTCUT_SPLIT_FLAG = "@-_-@"; class QStyleOptionMenuItem; class PopupMenuStyle : public QProxyStyle { Q_OBJECT public: PopupMenuStyle(); int styleHint(StyleHint hint, const QStyleOption* option = 0, const QWidget* widget = 0, QStyleHintReturn* returnData = 0) const; int pixelMetric(PixelMetric metric, const QStyleOption* option = 0, const QWidget* widget = 0) const; void drawControl(ControlElement control, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const; QSize sizeFromContents(ContentsType type, const QStyleOption* option, const QSize& contentsSize, const QWidget* widget = 0) const; private: void drawScroller(const QStyleOption* option, QPainter* painter) const; void drawMenuItem(const QStyleOption* option, QPainter* painter) const; void drawSeparator(const QStyleOptionMenuItem* menuItem, QPainter* painter) const; void drawMenuItemIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const; void drawMenuItemText(const QStyleOptionMenuItem* menuItem, QPainter* painter) const; void drawMenuItemSubIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const; void drawMenuItemCheckedIcon(const QStyleOptionMenuItem* menuItem, QPainter* painter) const; QSize getItemSize(const QStyleOption* option, const QSize& size) const; QColor getItemBGColor(const QStyle::State state) const; QPixmap getSubMenuPixmap(const QStyle::State state) const; QPixmap getIconPixmap(const QStyle::State state, const QIcon& icon, const QSize& size) const; }; #endif // POPUPMENUSTYLEH dtkwidget-2.1.1/src/platforms/windows/windows.pri000066400000000000000000000001241352002233700221710ustar00rootroot00000000000000HEADERS += \ $$PWD/popupmenustyle.h SOURCES += \ $$PWD/popupmenustyle.cpp dtkwidget-2.1.1/src/platforms/x11/000077500000000000000000000000001352002233700167055ustar00rootroot00000000000000dtkwidget-2.1.1/src/platforms/x11/x11.pri000066400000000000000000000001011352002233700200220ustar00rootroot00000000000000HEADERS += \ $$PWD/xutil.h SOURCES += \ $$PWD/xutil.cpp dtkwidget-2.1.1/src/platforms/x11/xutil.cpp000066400000000000000000000470441352002233700205670ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "xutil.h" #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE namespace XUtils { // From the WM spec #define _NET_WM_MOVERESIZE_INVALID -1 #define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 #define _NET_WM_MOVERESIZE_SIZE_TOP 1 #define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 #define _NET_WM_MOVERESIZE_SIZE_RIGHT 3 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 #define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 #define _NET_WM_MOVERESIZE_SIZE_LEFT 7 #define _NET_WM_MOVERESIZE_MOVE 8 /* movement only */ #define _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */ #define _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */ #define _NET_WM_MOVERESIZE_CANCEL 11 /* cancel operation */ #define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ #define _NET_WM_STATE_ADD 1 /* add/set property */ #define _NET_WM_STATE_TOGGLE 2 /* toggle property */ const char kAtomNameHidden[] = "_NET_WM_STATE_HIDDEN"; const char kAtomNameFullscreen[] = "_NET_WM_STATE_FULLSCREEN"; const char kAtomNameMaximizedHorz[] = "_NET_WM_STATE_MAXIMIZED_HORZ"; const char kAtomNameMaximizedVert[] = "_NET_WM_STATE_MAXIMIZED_VERT"; const char kAtomNameMoveResize[] = "_NET_WM_MOVERESIZE"; const char kAtomNameWmState[] = "_NET_WM_STATE"; const char kAtomNameWmStateAbove[] = "_NET_WM_STATE_ABOVE"; const char kAtomNameWmStateStaysOnTop[] = "_NET_WM_STATE_STAYS_ON_TOP"; const char kAtomNameWmSkipTaskbar[] = "_NET_WM_STATE_SKIP_TASKBAR"; const char kAtomNameWmSkipPager[] = "_NET_WM_STATE_SKIP_PAGER"; struct MwmHints { unsigned long flags; unsigned long functions; unsigned long decorations; long input_mode; unsigned long status; }; enum { MWM_HINTS_FUNCTIONS = (1L << 0), MWM_HINTS_DECORATIONS = (1L << 1), MWM_FUNC_ALL = (1L << 0), MWM_FUNC_RESIZE = (1L << 1), MWM_FUNC_MOVE = (1L << 2), MWM_FUNC_MINIMIZE = (1L << 3), MWM_FUNC_MAXIMIZE = (1L << 4), MWM_FUNC_CLOSE = (1L << 5), MWM_DECOR_ALL = (1L << 0), MWM_DECOR_BORDER = (1L << 1), MWM_DECOR_RESIZEH = (1L << 2), MWM_DECOR_TITLE = (1L << 3), MWM_DECOR_MENU = (1L << 4), MWM_DECOR_MINIMIZE = (1L << 5), MWM_DECOR_MAXIMIZE = (1L << 6), MWM_HINTS_INPUT_MODE = (1L << 2), MWM_INPUT_MODELESS = 0L, MWM_INPUT_PRIMARY_APPLICATION_MODAL = 1L, MWM_INPUT_FULL_APPLICATION_MODAL = 3L }; static int CornerEdge2WmGravity(const CornerEdge &ce) { switch (ce) { case CornerEdge::kTopLeft: return _NET_WM_MOVERESIZE_SIZE_TOPLEFT; case CornerEdge::kTop: return _NET_WM_MOVERESIZE_SIZE_TOP; case CornerEdge::kTopRight: return _NET_WM_MOVERESIZE_SIZE_TOPRIGHT; case CornerEdge::kRight: return _NET_WM_MOVERESIZE_SIZE_RIGHT; case CornerEdge::kBottomRight: return _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT; case CornerEdge::kBottom: return _NET_WM_MOVERESIZE_SIZE_BOTTOM; case CornerEdge::kBottomLeft: return _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT; case CornerEdge::kLeft: return _NET_WM_MOVERESIZE_SIZE_LEFT; default: return _NET_WM_MOVERESIZE_INVALID; } } static XCursorType CornerEdge2XCursor(const CornerEdge &ce) { switch (ce) { case CornerEdge::kTop: return XCursorType::kTop; case CornerEdge::kTopRight: return XCursorType::kTopRight; case CornerEdge::kRight: return XCursorType::kRight; case CornerEdge::kBottomRight: return XCursorType::kBottomRight; case CornerEdge::kBottom: return XCursorType::kBottom; case CornerEdge::kBottomLeft: return XCursorType::kBottomLeft; case CornerEdge::kLeft: return XCursorType::kLeft; case CornerEdge::kTopLeft: return XCursorType::kTopLeft; default: return XCursorType::kInvalid; } } void ChangeWindowMaximizedState(const QWidget *widget, int wm_state) { const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); XEvent xev; memset(&xev, 0, sizeof(xev)); const Atom net_wm_state = XInternAtom(display, kAtomNameWmState, false); const Atom vertical_maximized = XInternAtom(display, kAtomNameMaximizedVert, false); const Atom horizontal_maximized = XInternAtom(display, kAtomNameMaximizedHorz, false); xev.xclient.type = ClientMessage; xev.xclient.message_type = net_wm_state; xev.xclient.display = display; xev.xclient.window = widget->winId(); xev.xclient.format = 32; xev.xclient.data.l[0] = wm_state; xev.xclient.data.l[1] = vertical_maximized; xev.xclient.data.l[2] = horizontal_maximized; xev.xclient.data.l[3] = 1; XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XFlush(display); } CornerEdge GetCornerEdge(const QWidget *widget, int x, int y, const QMargins &margins, int border_width) { QRect fullRect = widget->rect(); fullRect = fullRect.marginsRemoved(margins); unsigned int ce = static_cast(CornerEdge::kInvalid); if ((y - fullRect.top() >= -border_width) && (y < fullRect.top())) { ce = ce | static_cast(CornerEdge::kTop); } if ((x - fullRect.left() >= -border_width) && (x < fullRect.left())) { ce = ce | static_cast(CornerEdge::kLeft); } if ((y - fullRect.bottom() <= border_width) && (y > fullRect.bottom())) { ce = ce | static_cast(CornerEdge::kBottom); } if ((x - fullRect.right() <= border_width) && (x > fullRect.right())) { ce = ce | static_cast(CornerEdge::kRight); } return static_cast(ce); } void SendMoveResizeMessage(const QWidget *widget, Qt::MouseButton qbutton, int action) { const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); int xbtn = qbutton == Qt::LeftButton ? Button1 : qbutton == Qt::RightButton ? Button3 : AnyButton; XEvent xev; memset(&xev, 0, sizeof(xev)); const Atom net_move_resize = XInternAtom(display, kAtomNameMoveResize, false); xev.xclient.type = ClientMessage; xev.xclient.message_type = net_move_resize; xev.xclient.display = display; xev.xclient.window = widget->winId(); xev.xclient.format = 32; const auto global_position = QCursor::pos(); xev.xclient.data.l[0] = global_position.x(); xev.xclient.data.l[1] = global_position.y(); xev.xclient.data.l[2] = action; xev.xclient.data.l[3] = xbtn; xev.xclient.data.l[4] = 0; XUngrabPointer(display, QX11Info::appTime()); XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XFlush(display); } bool IsCornerEdget(const QWidget *widget, int x, int y, const QMargins &margins, int border_width) { return GetCornerEdge(widget, x, y, margins, border_width) != CornerEdge::kInvalid; } void MoveWindow(const QWidget *widget, Qt::MouseButton qbutton) { SendMoveResizeMessage(widget, qbutton, _NET_WM_MOVERESIZE_MOVE); } void MoveResizeWindow(const QWidget *widget, Qt::MouseButton qbutton, int x, int y, const QMargins &margins, int border_width) { const CornerEdge ce = GetCornerEdge(widget, x, y, margins, border_width); if (ce != CornerEdge::kInvalid) { const int action = CornerEdge2WmGravity(ce); SendMoveResizeMessage(widget, qbutton, action); } } void ResetCursorShape(const QWidget *widget) { const auto display = QX11Info::display(); const WId window_id = widget->winId(); XUndefineCursor(display, window_id); XFlush(display); } bool SetCursorShape(const QWidget *widget, int cursor_id) { const auto display = QX11Info::display(); const WId window_id = widget->winId(); const Cursor cursor = XCreateFontCursor(display, cursor_id); if (!cursor) { qWarning() << "[ui]::SetCursorShape() call XCreateFontCursor() failed"; return false; } const int result = XDefineCursor(display, window_id, cursor); XFlush(display); return result == Success; } void ShowFullscreenWindow(const QWidget *widget, bool is_fullscreen) { const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); XEvent xev; memset(&xev, 0, sizeof(xev)); const Atom net_wm_state = XInternAtom(display, kAtomNameWmState, false); const Atom fullscreen = XInternAtom(display, kAtomNameFullscreen, false); xev.xclient.type = ClientMessage; xev.xclient.message_type = net_wm_state; xev.xclient.display = display; xev.xclient.window = widget->winId(); xev.xclient.format = 32; if (is_fullscreen) { xev.xclient.data.l[0] = _NET_WM_STATE_ADD; } else { xev.xclient.data.l[0] = _NET_WM_STATE_REMOVE; } xev.xclient.data.l[1] = fullscreen; xev.xclient.data.l[2] = 0; xev.xclient.data.l[3] = 1; XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev ); XFlush(display); } void ShowMaximizedWindow(const QWidget *widget) { ChangeWindowMaximizedState(widget, _NET_WM_STATE_ADD); } void ShowMinimizedWindow(const QWidget *widget, bool minimized) { const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); XEvent xev; memset(&xev, 0, sizeof(xev)); const Atom net_wm_state = XInternAtom(display, kAtomNameWmState, false); const Atom hidden = XInternAtom(display, kAtomNameHidden, false); xev.xclient.type = ClientMessage; xev.xclient.message_type = net_wm_state; xev.xclient.display = display; xev.xclient.window = widget->winId(); xev.xclient.format = 32; if (minimized) { xev.xclient.data.l[0] = _NET_WM_STATE_ADD; } else { xev.xclient.data.l[0] = _NET_WM_STATE_REMOVE; } xev.xclient.data.l[1] = hidden; xev.xclient.data.l[2] = 0; xev.xclient.data.l[3] = 1; XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev ); XIconifyWindow(display, widget->winId(), screen); XFlush(display); } void ShowNormalWindow(const QWidget *widget) { ChangeWindowMaximizedState(widget, _NET_WM_STATE_REMOVE); } void ToggleMaximizedWindow(const QWidget *widget) { ChangeWindowMaximizedState(widget, _NET_WM_STATE_TOGGLE); } bool UpdateCursorShape(const QWidget *widget, int x, int y, const QMargins &margins, int border_width) { const CornerEdge ce = GetCornerEdge(widget, x, y, margins, border_width); const XCursorType x_cursor = CornerEdge2XCursor(ce); if (x_cursor != XCursorType::kInvalid) { return SetCursorShape(widget, static_cast(x_cursor)); } else { ResetCursorShape(widget); return false; } } void SkipTaskbarPager(const QWidget *widget) { Q_ASSERT(widget); const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); const auto wmStateAtom = XInternAtom(display, kAtomNameWmState, false); const auto taskBarAtom = XInternAtom(display, kAtomNameWmSkipTaskbar, false); const auto noPagerAtom = XInternAtom(display, kAtomNameWmSkipPager, false); XEvent xev; memset(&xev, 0, sizeof(xev)); xev.xclient.type = ClientMessage; xev.xclient.message_type = wmStateAtom; xev.xclient.display = display; xev.xclient.window = widget->winId();; xev.xclient.format = 32; xev.xclient.data.l[0] = _NET_WM_STATE_ADD; xev.xclient.data.l[1] = taskBarAtom; xev.xclient.data.l[2] = noPagerAtom; xev.xclient.data.l[3] = 1; XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XFlush(display); } void SetStayOnTop(const QWidget *widget, bool on) { Q_ASSERT(widget); const auto display = QX11Info::display(); const auto screen = QX11Info::appScreen(); const auto wmStateAtom = XInternAtom(display, kAtomNameWmState, false); const auto stateAboveAtom = XInternAtom(display, kAtomNameWmStateAbove, false); const auto stateStaysOnTopAtom = XInternAtom(display, kAtomNameWmStateStaysOnTop, false); XEvent xev; memset(&xev, 0, sizeof(xev)); xev.xclient.type = ClientMessage; xev.xclient.message_type = wmStateAtom; xev.xclient.display = display; xev.xclient.window = widget->winId(); xev.xclient.format = 32; xev.xclient.data.l[0] = on ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE; xev.xclient.data.l[1] = stateAboveAtom; xev.xclient.data.l[2] = stateStaysOnTopAtom; xev.xclient.data.l[3] = 1; XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XFlush(display); } void SetMouseTransparent(const QWidget *widget, bool on) { Q_ASSERT(widget); const auto display = QX11Info::display(); XRectangle XRect; XRect.x = 0; XRect.y = 0; int nRects = 0; if (on) { XRect.width = 0; XRect.height = 0; nRects = 0; } else { XRect.width = widget->width(); XRect.height = widget->height(); nRects = 1; } XShapeCombineRectangles(display, widget->winId(), ShapeInput, 0, 0, &XRect, nRects, ShapeSet, YXBanded); } void SetWindowExtents(const QWidget *widget, const QMargins &margins, const int resizeHandleWidth) { SetWindowExtents(widget->winId(), widget->rect(), margins, resizeHandleWidth); } void PropagateSizeHints(const QWidget *w) { const auto display = QX11Info::display(); XSizeHints *sh = XAllocSizeHints(); sh->flags = PPosition | PSize | PMinSize | PMaxSize | PResizeInc; sh->x = w->x(); sh->y = w->y(); sh->min_width = w->minimumWidth(); sh->min_height = w->minimumHeight(); sh->base_width = w->baseSize().width(); sh->base_height = w->baseSize().height(); sh->max_width = w->maximumWidth(); sh->max_height = w->maximumHeight(); sh->width_inc = w->sizeIncrement().width(); sh->height_inc = w->sizeIncrement().height(); XSetWMNormalHints(display, w->winId(), sh); XFree(sh); } void DisableResize(const QWidget *w) { Display *display = QX11Info::display(); Atom mwmHintsProperty = XInternAtom(display, "_MOTIF_WM_HINTS", 0); struct MwmHints *hints; unsigned char *wm_data; Atom wm_type; int wm_format; unsigned long wm_nitems, wm_bytes_after; XGetWindowProperty(display, w->winId(), mwmHintsProperty, 0, sizeof(MwmHints) / sizeof(long), false, AnyPropertyType, &wm_type, &wm_format, &wm_nitems, &wm_bytes_after, &wm_data); hints = (MwmHints *) wm_data; hints->flags |= MWM_HINTS_FUNCTIONS; if (hints->functions == MWM_FUNC_ALL) { hints->functions = MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_CLOSE; } else { hints->functions &= ~MWM_FUNC_RESIZE; hints->functions |= MWM_FUNC_CLOSE; } if (hints->decorations == MWM_DECOR_ALL) { hints->flags |= MWM_HINTS_DECORATIONS; hints->decorations = (MWM_DECOR_BORDER | MWM_DECOR_TITLE | MWM_DECOR_MENU); } else { hints->decorations &= ~MWM_DECOR_RESIZEH; } XChangeProperty(display, w->winId(), mwmHintsProperty, mwmHintsProperty, 32, PropModeReplace, (unsigned char *)hints, 5); } void StartResizing(const QWidget *w, const QPoint &globalPoint, const CornerEdge &ce) { const auto display = QX11Info::display(); const auto winId = w->winId(); const auto screen = QX11Info::appScreen(); XEvent xev; const Atom netMoveResize = XInternAtom(display, "_NET_WM_MOVERESIZE", false); xev.xclient.type = ClientMessage; xev.xclient.message_type = netMoveResize; xev.xclient.display = display; xev.xclient.window = winId; xev.xclient.format = 32; xev.xclient.data.l[0] = globalPoint.x(); xev.xclient.data.l[1] = globalPoint.y(); xev.xclient.data.l[2] = CornerEdge2WmGravity(ce); xev.xclient.data.l[3] = Button1; xev.xclient.data.l[4] = 1; XUngrabPointer(display, QX11Info::appTime()); XSendEvent(display, QX11Info::appRootWindow(screen), false, SubstructureRedirectMask | SubstructureNotifyMask, &xev); XFlush(display); } void CancelMoveWindow(const QWidget *widget, Qt::MouseButton qbutton) { SendMoveResizeMessage(widget, qbutton, _NET_WM_MOVERESIZE_CANCEL); } void SetWindowExtents(uint wid, const QRect &windowRect, const QMargins &margins, const int resizeHandleSize) { Atom frameExtents; unsigned long value[4] = { (unsigned long)(margins.left()), (unsigned long)(margins.right()), (unsigned long)(margins.top()), (unsigned long)(margins.bottom()) }; frameExtents = XInternAtom(QX11Info::display(), "_GTK_FRAME_EXTENTS", False); if (frameExtents == None) { qWarning() << "Failed to create atom with name DEEPIN_WINDOW_SHADOW"; return; } XChangeProperty(QX11Info::display(), wid, frameExtents, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)value, 4); QRect tmp_rect = windowRect; tmp_rect -= margins; XRectangle contentXRect; contentXRect.x = 0; contentXRect.y = 0; contentXRect.width = tmp_rect.width() + resizeHandleSize * 2; contentXRect.height = tmp_rect.height() + resizeHandleSize * 2; XShapeCombineRectangles(QX11Info::display(), wid, ShapeInput, margins.left() - resizeHandleSize, margins.top() - resizeHandleSize, &contentXRect, 1, ShapeSet, YXBanded); } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/platforms/x11/xutil.h000066400000000000000000000056751352002233700202400ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include "dtkwidget_global.h" QT_BEGIN_NAMESPACE class QWidget; class QPoint; class QMargins; class QRect; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE namespace XUtils { enum class CornerEdge { kInvalid = 0, kTop = 1, kRight = 2, kBottom = 4, kLeft = 8, kTopLeft = 1 | 8, kTopRight = 1 | 2, kBottomLeft = 4 | 8, kBottomRight = 4 | 2, }; enum class XCursorType { kInvalid = -1, kArrow = 2, kTop = 138, kTopRight = 136, kRight = 96, kBottomRight = 14, kBottom = 16, kBottomLeft = 12, kLeft = 70, kTopLeft = 134, }; void ChangeWindowMaximizedState(const QWidget *widget, int wm_state); CornerEdge GetCornerEdge(const QWidget *widget, int x, int y, const QMargins &margins, int border_width); bool UpdateCursorShape(const QWidget *widget, int x, int y, const QMargins &margins, int border_width); bool IsCornerEdget(const QWidget *widget, int x, int y, const QMargins &margins, int border_width); void MoveResizeWindow(const QWidget *widget, Qt::MouseButton qbutton, int x, int y, const QMargins &margins, int border_width); void StartResizing(const QWidget *w, const QPoint &globalPoint, const CornerEdge &ce); void SendMoveResizeMessage(const QWidget *widget, Qt::MouseButton qbutton, int action); void MoveWindow(const QWidget *widget, Qt::MouseButton qbutton); void CancelMoveWindow(const QWidget *widget, Qt::MouseButton qbutton); void ResetCursorShape(const QWidget *widget); bool SetCursorShape(const QWidget *widget, int cursor_id); void ShowFullscreenWindow(const QWidget *widget, bool is_fullscreen); void ShowMaximizedWindow(const QWidget *widget); void ShowMinimizedWindow(const QWidget *widget, bool minimized); void ShowNormalWindow(const QWidget *widget); void ToggleMaximizedWindow(const QWidget *widget); void SkipTaskbarPager(const QWidget *widget); void SetStayOnTop(const QWidget *widget, bool on); void SetMouseTransparent(const QWidget *widget, bool on); void SetWindowExtents(const QWidget *widget, const QMargins &margins, const int resizeHandlSize); void SetWindowExtents(uint wid, const QRect &windowRect, const QMargins &margins, const int resizeHandleSize); void PropagateSizeHints(const QWidget *w); void DisableResize(const QWidget *w); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/src.pro000066400000000000000000000024461352002233700156040ustar00rootroot00000000000000TARGET = dtkwidget TEMPLATE = lib QT += dtkcore CONFIG += internal_module QT += network concurrent multimedia multimediawidgets greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets widgets-private # Qt >= 5.8 greaterThan(QT_MAJOR_VERSION, 5)|greaterThan(QT_MINOR_VERSION, 7): QT += gui-private else: QT += platformsupport-private } linux* { QT += x11extras dbus ###(zccrs): use load(dtk_qmake), dtkcore > 2.0.9 ARCH = $$QMAKE_HOST.arch isEqual(ARCH, sw_64) | isEqual(ARCH, mips64) | isEqual(ARCH, mips32) { DEFINES += FORCE_RASTER_WIDGETS } } mac* { QT += svg dbus DEFINES += DTK_TITLE_DRAG_WINDOW } win* { QT += svg DEFINES += DTK_TITLE_DRAG_WINDOW } !isEmpty(DTK_NO_MULTIMEDIA){ DEFINES += DTK_NO_MULTIMEDIA QT -= multimedia multimediawidgets } !isEmpty(DTK_STATIC_LIB){ DEFINES += DTK_STATIC_LIB CONFIG += staticlib } HEADERS += dtkwidget_global.h includes.files += \ $$PWD/dtkwidget_global.h\ $$PWD/DtkWidgets\ $$PWD/dtkwidget_config.h include($$PWD/util/util.pri) include($$PWD/widgets/widgets.pri) linux* { includes.files += $$PWD/platforms/linux/*.h } win32* { includes.files += $$PWD/platforms/windows/*.h } DTK_MODULE_NAME=$$TARGET load(dtk_build) INSTALLS += includes target load(dtk_cmake) load(dtk_module) dtkwidget-2.1.1/src/translations/000077500000000000000000000000001352002233700170065ustar00rootroot00000000000000dtkwidget-2.1.1/src/translations/dtkwidget.ts000066400000000000000000000140631352002233700213500ustar00rootroot00000000000000 DAboutDialog Acknowledgements Version: %1 %1 is released under %2 DCrumbEdit Black White Dark Gray Gray Light Gray Red Green Blue Cyan Magenta Yellow Dark Red Dark Green Dark Blue Dark Cyan Dark Magenta Dark Yellow DInputDialog Cancel Confirm DShortcutEdit Please input a new shortcut None QObject No search result Restore Defaults ShortcutEdit Please enter a new shortcut TitleBarMenu Help About Exit dtkwidget-2.1.1/src/translations/dtkwidget_am_ET.ts000066400000000000000000000141521352002233700224140ustar00rootroot00000000000000 DAboutDialog Acknowledgements ምስጋና ለ ተርጓሚው ሳምሶን በለጠ በላይነህ Version: %1 እትም: %1 %1 is released under %2 %1 የ ተለቀቀው በዚህ መሰረት ነው %2 DCrumbEdit Black ጥቁር White ነጭ Dark Gray ጥቁር ግራጫ Gray ግራጫ Light Gray ነጣ ያለ ግራጫ Red ቀይ Green አረንጓዴ Blue ሰማያዊ Cyan ሲያን Magenta ማጄንታ Yellow ቢጫ Dark Red ጥቁር ቀይ Dark Green ጥቁር አረንጓዴ Dark Blue ጥቁር ሰማያዊ Dark Cyan ጥቁር ሲያን Dark Magenta ጥቁር ማጄንታ Dark Yellow ጥቁር ቢጫ DInputDialog Cancel መሰረዣ Confirm ማረጋገጫ DShortcutEdit Please input a new shortcut እባክዎን አዲስ አቋራጭ ያስገቡ None ምንም QObject No search result Restore Defaults ነባር እንደ ነበር መመለሻ ShortcutEdit Please enter a new shortcut እባክዎን አዲስ አቋራጭ ያስገቡ TitleBarMenu Help እርዳታ About ስለ Exit መውጫ dtkwidget-2.1.1/src/translations/dtkwidget_ar.ts000066400000000000000000000140541352002233700220320ustar00rootroot00000000000000 DAboutDialog Acknowledgements شكر وتقدير Version: %1 اﻹصدار : %1 %1 is released under %2 %1 أصدر تحت رخصة %2 DCrumbEdit Black أسود White أبيض Dark Gray رمادي غامق Gray رمادي Light Gray رمادي فاتح Red أحمر Green أخضر Blue أزرق Cyan سماوي Magenta أرجواني Yellow أصفر Dark Red أحمر غامق Dark Green أخضر غامق Dark Blue أزرق غامق Dark Cyan سماوي غامق Dark Magenta أرجواني غامق Dark Yellow أصفر غامق DInputDialog Cancel إلغاء Confirm تأكيد DShortcutEdit Please input a new shortcut الرجاء إدخال اختصاراّ جديداً None غير موجود QObject No search result لا توجد نتائج بحث Restore Defaults استعادة الإعدادت الإفتراضية ShortcutEdit Please enter a new shortcut يرجى إدخال اختصار جديد TitleBarMenu Help مساعدة About حول Exit خروج dtkwidget-2.1.1/src/translations/dtkwidget_ast.ts000066400000000000000000000135321352002233700222170ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agradecimientos Version: %1 Versión: %1 %1 is released under %2 %1 llánzase so %2 DCrumbEdit Black Prietu White Blancu Dark Gray Buxu escuro Gray Buxu Light Gray Buxu claro Red Bermeyu Green Verde Blue Azul Cyan Cianu Magenta Maxenta Yellow Mariellu Dark Red Bermeyu escuro Dark Green Verde escuro Dark Blue Azul escuro Dark Cyan Cian escuro Dark Magenta Maxenta escuro Dark Yellow Mariellu escuru DInputDialog Cancel Encaboxar Confirm Confirmar DShortcutEdit Please input a new shortcut Introduz un atayu nuevu None Nada QObject No search result Nun hai resultaos de la gueta Restore Defaults Reafitar valores ShortcutEdit Please enter a new shortcut Introduz un atayu nuevu TitleBarMenu Help Ayuda About Tocante a Exit Colar dtkwidget-2.1.1/src/translations/dtkwidget_az.ts000066400000000000000000000135021352002233700220370ustar00rootroot00000000000000 DAboutDialog Acknowledgements Təşəkkürlər Version: %1 Versiya: %1 %1 is released under %2 %1,%2 altında buraxılır DCrumbEdit Black White Dark Gray Gray Light Gray Red Green Blue Cyan Magenta Yellow Dark Red Dark Green Dark Blue Dark Cyan Dark Magenta Dark Yellow DInputDialog Cancel Ləğv et Confirm Təsdiq edin DShortcutEdit Please input a new shortcut Xahiş edirik yeni bir kısayol daxil edin None Yoxdur QObject No search result Restore Defaults Standartları bərpa edin ShortcutEdit Please enter a new shortcut Xahiş edirik yeni bir kısayol daxil edin TitleBarMenu Help Kömək About Haqqında Exit Çıxış dtkwidget-2.1.1/src/translations/dtkwidget_bg.ts000066400000000000000000000141671352002233700220250ustar00rootroot00000000000000 DAboutDialog Acknowledgements Благодарности Version: %1 Версия: %1 %1 is released under %2 %1 е реализиран под %2 DCrumbEdit Black Черно White Бяло Dark Gray Тъмно сиво Gray Сиво Light Gray Светло сиво Red Червено Green Зелено Blue Синьо Cyan Циан Magenta Пурпурен Yellow Жълт Dark Red Тъмно червен Dark Green Тъмно зелен Dark Blue Тъмно син Dark Cyan Тъмен циан Dark Magenta Тъмно пурпурно Dark Yellow Тъмно жълто DInputDialog Cancel Отказ Confirm Потвърждавам DShortcutEdit Please input a new shortcut Моля въведете нов пряк път None Нищо QObject No search result Търсенето е без резултат Restore Defaults Възстановяване на настройките ShortcutEdit Please enter a new shortcut Моля въведете нов пряк път TitleBarMenu Help Помощ About Относно Exit Изход dtkwidget-2.1.1/src/translations/dtkwidget_bn.ts000066400000000000000000000146771352002233700220420ustar00rootroot00000000000000 DAboutDialog Acknowledgements প্রাপ্তি স্বীকার Version: %1 ভার্সন: %1 %1 is released under %2 %1 রিলিজ হয়েছে %2 এর অধীনে DCrumbEdit Black কালো White সাদা Dark Gray গাঢ় ধূসর Gray ধূসর Light Gray হালকা ধূসর Red লাল Green সবুজ Blue নীল Cyan সবজে নীল Magenta ম্যাজেন্টা Yellow হলুদ Dark Red গাঢ় লাল Dark Green গাঢ় সবুজ Dark Blue গাঢ় নীল Dark Cyan গাঢ় সবজে নীল Dark Magenta গাঢ় ম্যাজেন্টা Dark Yellow গাঢ় হলুদ DInputDialog Cancel বাতিল করুন Confirm নিশ্চিত করুন DShortcutEdit Please input a new shortcut দয়াকরে নতুন শর্টকাট চাপুন None কোনোটিই নয় QObject No search result অনুসন্ধানের কোনো ফলাফল নেই Restore Defaults পূর্বনির্ধারিত জিনিসে ফিরে যান ShortcutEdit Please enter a new shortcut দয়াকরে নতুন শর্টকাট চাপুন TitleBarMenu Help সাহায্য About সম্পর্কে Exit বের হয়ে যান dtkwidget-2.1.1/src/translations/dtkwidget_ca.ts000066400000000000000000000135721352002233700220170ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agraïments Version: %1 Versió: %1 %1 is released under %2 %1 està publicada d'acord amb %2 DCrumbEdit Black Negre White Blanc Dark Gray Gris fosc Gray Gris Light Gray Gris clar Red Vermell Green Verd Blue Blau Cyan Cian Magenta Magenta Yellow Groc Dark Red Vermell fosc Dark Green Verd fosc Dark Blue Blau fosc Dark Cyan Cian fosc Dark Magenta Magenta fosc Dark Yellow Groc fosc DInputDialog Cancel Cancel·la Confirm Confirmeu-ho DShortcutEdit Please input a new shortcut Si us plau, introduïu una drecera nova. None Cap QObject No search result Cap resultat de la cerca Restore Defaults Restableix els valors per defecte ShortcutEdit Please enter a new shortcut Si us plau, introduïu una drecera nova: TitleBarMenu Help Ajuda About Quant a Exit Surt dtkwidget-2.1.1/src/translations/dtkwidget_cs.ts000066400000000000000000000136231352002233700220360ustar00rootroot00000000000000 DAboutDialog Acknowledgements Poděkování Version: %1 Verze: %1 %1 is released under %2 %1 je vydán pod %2 DCrumbEdit Black Černá White Bílá Dark Gray Tmavě šedá Gray Šedá Light Gray Světle šedá Red Červená Green Zelená Blue Modrá Cyan Modrozelená Magenta Fialová Yellow Žlutá Dark Red Tmavě červená Dark Green Tmavě zelená Dark Blue Tmavě modrá Dark Cyan Tmavě modrozelená Dark Magenta Tmavě fialová Dark Yellow Tmavě žlutá DInputDialog Cancel Zrušit Confirm Potvrdit DShortcutEdit Please input a new shortcut Zadejte, prosím, novou zkratku None Žádný QObject No search result Žádný výsledek hledání Restore Defaults Obnovit výchozí ShortcutEdit Please enter a new shortcut Zadejte, prosím, novou zkratku TitleBarMenu Help Nápověda About O programu Exit Ukončit dtkwidget-2.1.1/src/translations/dtkwidget_da.ts000066400000000000000000000134721352002233700220170ustar00rootroot00000000000000 DAboutDialog Acknowledgements Tilkendegivelser Version: %1 Version: %1 %1 is released under %2 %1 er udgivet under %2 DCrumbEdit Black Sort White Hvid Dark Gray Mørkegrå Gray Grå Light Gray Lysegrå Red Rød Green Grøn Blue Blå Cyan Cyan Magenta Magenta Yellow Gul Dark Red Mørkerød Dark Green Mørkegrøn Dark Blue Mørkeblå Dark Cyan Mørkecyan Dark Magenta Mørkemagenta Dark Yellow Mørkegul DInputDialog Cancel Annuller Confirm Bekræft DShortcutEdit Please input a new shortcut Input venligst en ny genvej None Ingen QObject No search result Intet søgeresultat Restore Defaults Gendan standarder ShortcutEdit Please enter a new shortcut Indtast venligst en ny genvej TitleBarMenu Help Hjælp About Om Exit Afslut dtkwidget-2.1.1/src/translations/dtkwidget_de.ts000066400000000000000000000135721352002233700220240ustar00rootroot00000000000000 DAboutDialog Acknowledgements Anerkennungen Version: %1 Version: %1 %1 is released under %2 %1 wurde unter %2 veröffentlicht. DCrumbEdit Black Schwarz White Weiß Dark Gray Dunkelgrau Gray Grau Light Gray Hellgrau Red Rot Green Grün Blue Blau Cyan Türkis Magenta Pink Yellow Gelb Dark Red Dunkelrot Dark Green Dunkelgrün Dark Blue Dunkelblau Dark Cyan Dunkeltürkis Dark Magenta Dunkelpink Dark Yellow Dunkelgelb DInputDialog Cancel Abbrechen Confirm Bestätigen DShortcutEdit Please input a new shortcut Bitte geben Sie ein neues Tastenkürzel ein None Keine QObject No search result Keine Suchergebnisse Restore Defaults Standardwerte wiederherstellen ShortcutEdit Please enter a new shortcut Bitte geben Sie ein neues Tastenkürzel ein TitleBarMenu Help Hilfe About Über Exit Beenden dtkwidget-2.1.1/src/translations/dtkwidget_el.ts000066400000000000000000000134461352002233700220340ustar00rootroot00000000000000 DAboutDialog Acknowledgements αναγνωρισμοί Version: %1 %1 is released under %2 DCrumbEdit Black White Dark Gray Gray Light Gray Red Green Blue Cyan Magenta Yellow Dark Red Dark Green Dark Blue Dark Cyan Dark Magenta Dark Yellow DInputDialog Cancel Ακύρωση Confirm Επικύρωση DShortcutEdit Please input a new shortcut Παρακαλώ εισάγετε ένα νέο σύνδεσμο None Κανένα QObject No search result Restore Defaults ShortcutEdit Please enter a new shortcut TitleBarMenu Help Βοήθεια About Περί Exit Έξοδος dtkwidget-2.1.1/src/translations/dtkwidget_es.ts000066400000000000000000000135461352002233700220440ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agradecimientos Version: %1 Versión %1 %1 is released under %2 %1 está lanzado bajo %2 DCrumbEdit Black Negro White Blanco Dark Gray Gris oscuro Gray Gris Light Gray Gris claro Red Rojo Green Verde Blue Azul Cyan Cian Magenta Magenta Yellow Amarillo Dark Red Rojo oscuro Dark Green Verde oscuro Dark Blue Azul oscuro Dark Cyan Cian oscuro Dark Magenta Magenta oscuro Dark Yellow Amarillo oscuro DInputDialog Cancel Cancelar Confirm Confirmar DShortcutEdit Please input a new shortcut Introduzca un nuevo atajo None Nada QObject No search result No se encontraron resultados Restore Defaults Restaurar valores predeterminados ShortcutEdit Please enter a new shortcut Ingrese un nuevo atajo TitleBarMenu Help Ayuda About Acerca de Exit Salir dtkwidget-2.1.1/src/translations/dtkwidget_es_419.ts000066400000000000000000000135531352002233700224370ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agradecimientos Version: %1 Versión %1 %1 is released under %2 %1 está lanzado bajo %2 DCrumbEdit Black Negro White Blanco Dark Gray Gris Oscuro Gray Gris Light Gray Gris Claro Red Rojo Green Verde Blue Azul Cyan Cyan Magenta Magenta Yellow Amarillo Dark Red Rojo Oscuro Dark Green Verde Oscuro Dark Blue Azul Oscuro Dark Cyan Cyan Oscuro Dark Magenta Magenta Oscuro Dark Yellow Amarillo Oscuro DInputDialog Cancel Cancelar Confirm Confirmar DShortcutEdit Please input a new shortcut Introduzca un nuevo atajo None Nada QObject No search result Ningún resultado encontrado. Restore Defaults Restaurar valores predeterminados ShortcutEdit Please enter a new shortcut Ingrese un nuevo atajo TitleBarMenu Help Ayuda About Acerca de Exit Salir dtkwidget-2.1.1/src/translations/dtkwidget_fi.ts000066400000000000000000000135431352002233700220300ustar00rootroot00000000000000 DAboutDialog Acknowledgements Kiitokset Version: %1 Versio: %1 %1 is released under %2 %1 on julkaistu %2 -lisenssin alla DCrumbEdit Black Musta White Valkoinen Dark Gray Tummanharmaa Gray Harmaa Light Gray Vaaleanharmaa Red Punainen Green Vihreä Blue Sininen Cyan Syaani Magenta Purppura Yellow Keltainen Dark Red Tummanpunainen Dark Green Tummanvihreä Dark Blue Tummansininen Dark Cyan Tumma syaani Dark Magenta Tumma purppura Dark Yellow Tummankeltainen DInputDialog Cancel Peruuta Confirm Vahvista DShortcutEdit Please input a new shortcut Syötä uusi pikakuvake None Tyhjä QObject No search result Ei hakutuloksia Restore Defaults Palauta oletukset ShortcutEdit Please enter a new shortcut Anna uusi pikakuvake TitleBarMenu Help Apua About Tietoja Exit Poistu dtkwidget-2.1.1/src/translations/dtkwidget_fr.ts000066400000000000000000000135431352002233700220410ustar00rootroot00000000000000 DAboutDialog Acknowledgements Remerciements Version: %1 Version : %1 %1 is released under %2 %1 est publié sous %2 DCrumbEdit Black Noir White Blanc Dark Gray Gris foncé Gray Gris Light Gray Gris clair Red Rouge Green Vert Blue Bleu Cyan Cyan Magenta Magenta Yellow Jaune Dark Red Rouge foncé Dark Green Vert foncé Dark Blue Bleu foncé Dark Cyan Cyan foncé Dark Magenta Magenta foncé Dark Yellow Jaune foncé DInputDialog Cancel Annuler Confirm Confirmer DShortcutEdit Please input a new shortcut Veuillez entrer un nouveau raccourci None Aucun QObject No search result Aucun résultat de recherche Restore Defaults Réinitialiser ShortcutEdit Please enter a new shortcut Veuillez entrer un nouveau raccourci TitleBarMenu Help Aide About À propos Exit Sortir dtkwidget-2.1.1/src/translations/dtkwidget_gl_ES.ts000066400000000000000000000135541352002233700224250ustar00rootroot00000000000000 DAboutDialog Acknowledgements Recoñecementos Version: %1 Versión: %1 %1 is released under %2 %1 está liberada baixo %2 DCrumbEdit Black Negro White Branco Dark Gray Gris escuro Gray Gris Light Gray Gris claro Red Vermello Green Verde Blue Azul Cyan Ciano Magenta Maxenta Yellow Amarelo Dark Red Vermello escuro Dark Green Verde escuro Dark Blue Azul escuro Dark Cyan Ciano escuro Dark Magenta Maxenta escuro Dark Yellow Amarelo escuro DInputDialog Cancel Cancelar Confirm Confirmar DShortcutEdit Please input a new shortcut Por favor, inserte un novo atallo None Ningún QObject No search result Sen resultados Restore Defaults Restaurar predefinidos ShortcutEdit Please enter a new shortcut Por favor, insire un novo atallo TitleBarMenu Help Axuda About Sobre Exit Saír dtkwidget-2.1.1/src/translations/dtkwidget_he.ts000066400000000000000000000133741352002233700220300ustar00rootroot00000000000000 DAboutDialog Acknowledgements הוקרת תודה Version: %1 %1 is released under %2 DCrumbEdit Black White Dark Gray Gray Light Gray Red Green Blue Cyan Magenta Yellow Dark Red Dark Green Dark Blue Dark Cyan Dark Magenta Dark Yellow DInputDialog Cancel ביטול Confirm אישור DShortcutEdit Please input a new shortcut נא להקליד צירוף מקשים חדש None ללא QObject No search result Restore Defaults ShortcutEdit Please enter a new shortcut TitleBarMenu Help עזרה About על אודות Exit יציאה dtkwidget-2.1.1/src/translations/dtkwidget_hr.ts000066400000000000000000000133311352002233700220360ustar00rootroot00000000000000 DAboutDialog Acknowledgements Priznanja Version: %1 %1 is released under %2 DCrumbEdit Black White Dark Gray Gray Light Gray Red Green Blue Cyan Magenta Yellow Dark Red Dark Green Dark Blue Dark Cyan Dark Magenta Dark Yellow DInputDialog Cancel Odustani Confirm Potvrdi DShortcutEdit Please input a new shortcut Molimo Vas da unesete novi prečac None Niti jedan QObject No search result Restore Defaults ShortcutEdit Please enter a new shortcut TitleBarMenu Help Pomoć About O programu Exit Izlaz dtkwidget-2.1.1/src/translations/dtkwidget_hu.ts000066400000000000000000000136471352002233700220530ustar00rootroot00000000000000 DAboutDialog Acknowledgements Köszönetnyilvánítás Version: %1 %1 verzió %1 is released under %2 A %1 a %2 alatti kiadás DCrumbEdit Black Fekete White Fehér Dark Gray Sötétszürke Gray Szürke Light Gray Világosszürke Red Piros Green Zöld Blue Kék Cyan Cián Magenta Magenta Yellow Sárga Dark Red Vörös Dark Green Sötétzöld Dark Blue Sötétkék Dark Cyan Sötét cián Dark Magenta Sötét bíbor Dark Yellow Sötét sárga DInputDialog Cancel Mégsem Confirm Megerősítés DShortcutEdit Please input a new shortcut Kérjük, adjon meg egy új parancsikont None Egyik sem QObject No search result Nincs keresési eredmény Restore Defaults Visszaállítás alaphelyzetbe ShortcutEdit Please enter a new shortcut Hozzon létre egy új parancsikont TitleBarMenu Help Segítség About Az alkalmazásról Exit Kilépés dtkwidget-2.1.1/src/translations/dtkwidget_id.ts000066400000000000000000000135561352002233700220320ustar00rootroot00000000000000 DAboutDialog Acknowledgements Ucapan terima kasih Version: %1 Versi: %1 %1 is released under %2 %1 dirilis dalam %2 DCrumbEdit Black Hitam White Putih Dark Gray Abu-abu hitam Gray Abu-abu Light Gray Abu-abu Terang Red Merah Green Hijau Blue Biru Cyan Cyan Magenta Magenta Yellow Kuning Dark Red Merah Gelap  Dark Green Hijau Gelap Dark Blue Biru Gelap Dark Cyan Cyan Gelap Dark Magenta Magenta Gelap Dark Yellow Kuning Gelap DInputDialog Cancel Batal Confirm Konfirmasi DShortcutEdit Please input a new shortcut Silakan masukan pintasan baru None Tidak ada QObject No search result Tidak ada hasil pencarian Restore Defaults Pulihkan ke baku ShortcutEdit Please enter a new shortcut Mohon masukan sebuah jalan pintas yang baru TitleBarMenu Help Bantuan About Tentang Exit Keluar dtkwidget-2.1.1/src/translations/dtkwidget_it.ts000066400000000000000000000135331352002233700220450ustar00rootroot00000000000000 DAboutDialog Acknowledgements Ringraziamenti Version: %1 Versione: %1 %1 is released under %2 %1 è rilasciato secondo %2 DCrumbEdit Black Nero White Bianco Dark Gray Grigio scuro Gray Grigio Light Gray Grigio chiaro Red Rosso Green Verde Blue Blu Cyan Ciano Magenta Magenta Yellow Giallo Dark Red Rosso scuro Dark Green Verde scuro Dark Blue Blu scuro Dark Cyan Ciano scuro Dark Magenta Magenta scuro Dark Yellow Giallo scuro DInputDialog Cancel Annulla Confirm Conferma DShortcutEdit Please input a new shortcut Inserisci una nuova scorciatoia None No QObject No search result Nessun risultato Restore Defaults Ripristina valori predefiniti ShortcutEdit Please enter a new shortcut Inserisci una nuova scorciatoia TitleBarMenu Help Aiuto About Info Exit Esci dtkwidget-2.1.1/src/translations/dtkwidget_ja.ts000066400000000000000000000141401352002233700220160ustar00rootroot00000000000000 DAboutDialog Acknowledgements 謝辞 Version: %1 バージョン: %1 %1 is released under %2 %1 は %2 の下でリリースされています DCrumbEdit Black ブラック White ホワイト Dark Gray ダークグレー Gray グレー Light Gray ライトグレー Red レッド Green グリーン Blue ブルー Cyan シアン Magenta マゼンタ Yellow イエロー Dark Red ダークレッド Dark Green ダークグリーン Dark Blue ダークブルー Dark Cyan ダークシアン Dark Magenta ダークマゼンタ Dark Yellow ダークイエロー DInputDialog Cancel キャンセル Confirm 確認 DShortcutEdit Please input a new shortcut 新しいショートカットを入力してください None なし QObject No search result 検索結果が見つかりませんでした Restore Defaults デフォルトに戻す ShortcutEdit Please enter a new shortcut 新しいショートカットを入力してください TitleBarMenu Help ヘルプ About このアプリケーションについて Exit 終了 dtkwidget-2.1.1/src/translations/dtkwidget_ko.ts000066400000000000000000000136121352002233700220400ustar00rootroot00000000000000 DAboutDialog Acknowledgements 승인 Version: %1 버전: %1 %1 is released under %2 %1는 %2하에 배포됩니다 DCrumbEdit Black 검은색 White 흰색 Dark Gray 진한 회색 Gray 회색 Light Gray 밝은 회색 Red 빨간색 Green 녹색 Blue 파란색 Cyan 청록색 Magenta 자홍색 Yellow 노란색 Dark Red 진한 빨간색 Dark Green 진한 녹색 Dark Blue 진한 파란색 Dark Cyan 진한 청록색 Dark Magenta 진한 자홍색 Dark Yellow 진한 노란색 DInputDialog Cancel 취소 Confirm 확인 DShortcutEdit Please input a new shortcut 새 단축키를 입력하세요 None 없음 QObject No search result 검색 결과 없음 Restore Defaults 기본값 복원 ShortcutEdit Please enter a new shortcut 새 단축키를 입력하세요 TitleBarMenu Help 도움말 About 소개 Exit 종료 dtkwidget-2.1.1/src/translations/dtkwidget_lt.ts000066400000000000000000000135771352002233700220600ustar00rootroot00000000000000 DAboutDialog Acknowledgements Padėkos Version: %1 Versija: %1 %1 is released under %2 %1 yra išleista pagal %2 DCrumbEdit Black Juoda White Balta Dark Gray Tamsiai pilka Gray Pilka Light Gray Šviesiai pilka Red Raudona Green Žalia Blue Mėlyna Cyan Žydra Magenta Purpurinė Yellow Geltona Dark Red Tamsiai raudona Dark Green Tamsiai žalia Dark Blue Tamsiai mėlyna Dark Cyan Tamsiai žydra Dark Magenta Tamsiai purpurinė Dark Yellow Tamsiai geltona DInputDialog Cancel Atsisakyti Confirm Patvirtinti DShortcutEdit Please input a new shortcut Įveskite naują trumpinį None Nėra QObject No search result Nėra paieškos rezultatų Restore Defaults Atkurti numatytuosius ShortcutEdit Please enter a new shortcut Įveskite naują trumpinį TitleBarMenu Help Žinynas About Apie Exit Išeiti dtkwidget-2.1.1/src/translations/dtkwidget_ms.ts000066400000000000000000000135221352002233700220460ustar00rootroot00000000000000 DAboutDialog Acknowledgements Penghargaan Version: %1 Versi: %1 %1 is released under %2 %1 dikeluarkan bawah %2 DCrumbEdit Black Hitam White Putih Dark Gray Kelabu Gelap Gray Kelabu Light Gray Kelabu Cerah Red Merah Green Hijau Blue Biru Cyan Sian Magenta Magenta Yellow Kuning Dark Red Merah Gelap Dark Green Hijau Gelap Dark Blue Biru Gelap Dark Cyan Sian Gelap Dark Magenta Magenta Gelap Dark Yellow Kuning Gelap DInputDialog Cancel Batal Confirm Sahkan DShortcutEdit Please input a new shortcut Sila masukkan satu pintasan baharu None Tiada QObject No search result Tiada keputusan gelintar Restore Defaults Pulih Lalai ShortcutEdit Please enter a new shortcut Sila masukkan satu pintasan baharu TitleBarMenu Help Bantuan About Perihal Exit Keluar dtkwidget-2.1.1/src/translations/dtkwidget_nb.ts000066400000000000000000000134631352002233700220320ustar00rootroot00000000000000 DAboutDialog Acknowledgements Anerkjennelser Version: %1 Versjon: %1 %1 is released under %2 %1 er utgitt under %2 DCrumbEdit Black Svart White Hvit Dark Gray Mørk Grå Gray Grå Light Gray Lys Grå Red Rød Green Grønn Blue Blå Cyan Cyan Magenta Magenta Yellow Gul Dark Red Mørk Rød Dark Green Mørk Grønn Dark Blue Mørk Blå Dark Cyan Mørk Cyan Dark Magenta Mørk Magenta Dark Yellow Mørk Gul DInputDialog Cancel Avbryt Confirm Bekreft DShortcutEdit Please input a new shortcut Sett inn en ny snarvei None Ingen QObject No search result Søk gav ingen resultat Restore Defaults Gjenopprett Standard ShortcutEdit Please enter a new shortcut Skriv inn en ny snarvei TitleBarMenu Help Hjelp About Om Exit Avslutt dtkwidget-2.1.1/src/translations/dtkwidget_ne.ts000066400000000000000000000150241352002233700220300ustar00rootroot00000000000000 DAboutDialog Acknowledgements स्वीकृतिहरू Version: %1 संस्करण:% 1 %1 is released under %2 % 1% 2 अन्तर्गत रिलीज गरिएको छ DCrumbEdit Black कालो White सेतो Dark Gray गाढा खैरो Gray खैरो Light Gray हल्का खैरो Red रातो Green हरियो Blue नीलो Cyan सायन Magenta म्याजेन्टा Yellow पहेंलो Dark Red गाढा रातो Dark Green गाढा हरियो Dark Blue गाढा निलो Dark Cyan गाढा सियान Dark Magenta डार्क म्याजेन्टा Dark Yellow गाढा पहेंलो DInputDialog Cancel रद्द गर्नुहोस् Confirm निश्चित गर्नुहोस् DShortcutEdit Please input a new shortcut कृपया नयाँ सर्टकट इनपुट गर्नुहोस् None कुनै पनि होइन QObject No search result कुनै खोजी परिणाम छैन Restore Defaults फेरी पहिलाकै अवस्था मा लैजाऊ ShortcutEdit Please enter a new shortcut कृपया नयाँ सर्टकट प्रविष्ट गर्नुहोस् TitleBarMenu Help मद्दत About बारेमा Exit बाहिर निस्कनुहोस् dtkwidget-2.1.1/src/translations/dtkwidget_nl.ts000066400000000000000000000135361352002233700220450ustar00rootroot00000000000000 DAboutDialog Acknowledgements Erkenningen Version: %1 Versie: %1 %1 is released under %2 %1 is uitgebracht onder de %2 DCrumbEdit Black Zwart White Wit Dark Gray Donkergrijs Gray Grijs Light Gray Lichtgrijs Red Rood Green Groen Blue Blauw Cyan Groenblauw Magenta Magenta Yellow Geel Dark Red Donkerrood Dark Green Donkergroen Dark Blue Donkerblauw Dark Cyan Donkergroenblauw Dark Magenta Donkermagenta Dark Yellow Donkergeel DInputDialog Cancel Annuleren Confirm Bevestigen DShortcutEdit Please input a new shortcut Druk op een nieuwe sneltoets None Geen QObject No search result Geen zoekresultaten Restore Defaults Standaardwaarden herstellen ShortcutEdit Please enter a new shortcut Druk op een nieuwe sneltoets TitleBarMenu Help Hulp About Over Exit Afsluiten dtkwidget-2.1.1/src/translations/dtkwidget_pl.ts000066400000000000000000000136171352002233700220470ustar00rootroot00000000000000 DAboutDialog Acknowledgements Podziękowania Version: %1 Wersja: %1 %1 is released under %2 %1 zostało wydane w oparciu o %2 DCrumbEdit Black Czarny White Biały Dark Gray Ciemnoszary Gray Szary Light Gray Jasnoszary Red Czerwony Green Zielony Blue Niebieski Cyan Turkusowy Magenta Purpurowy Yellow Żółty Dark Red Ciemnoczerwony Dark Green Ciemnozielony Dark Blue Ciemnoniebieski Dark Cyan Ciemnoturkusowy Dark Magenta Ciemnopurpurowy Dark Yellow Ciemnożółty DInputDialog Cancel Anuluj Confirm Potwierdź DShortcutEdit Please input a new shortcut Prosimy wprowadzić nowy skrót None Brak QObject No search result Brak wyników wyszukiwania Restore Defaults Przywróć domyślne ShortcutEdit Please enter a new shortcut Prosimy wprowadzić nowy skrót TitleBarMenu Help Pomoc About O programie Exit Wyjdź dtkwidget-2.1.1/src/translations/dtkwidget_pt.ts000066400000000000000000000135731352002233700220600ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agradecimentos Version: %1 Versão: %1 %1 is released under %2 %1 é publicada sobre %2 DCrumbEdit Black Preto White Branco Dark Gray Cinzento escuro Gray Cinzento Light Gray Cinzento Claro Red Vermelho Green Verde Blue Azul Cyan Ciano Magenta Magenta Yellow Amarelo Dark Red Vermelho Escuro Dark Green Verde Escuro Dark Blue Azul Escuro Dark Cyan Ciano Escuro Dark Magenta Magenta Escuro Dark Yellow Amarelo Escuro DInputDialog Cancel Cancelar Confirm Confirmar DShortcutEdit Please input a new shortcut Por favor, crie um novo atalho None Nenhum QObject No search result Nenhum resultado da pesquisa Restore Defaults Restaurar Predefinições ShortcutEdit Please enter a new shortcut Por favor, crie um novo atalho TitleBarMenu Help Ajuda About Sobre Exit Sair dtkwidget-2.1.1/src/translations/dtkwidget_pt_BR.ts000066400000000000000000000135461352002233700224430ustar00rootroot00000000000000 DAboutDialog Acknowledgements Agradecimentos Version: %1 Versão: %1 %1 is released under %2 %1 é lançado em %2 DCrumbEdit Black Preto White Branco Dark Gray Cinza Escuro Gray Cinza Light Gray Cinza Claro Red Vermelho Green Verde Blue Azul Cyan Ciano Magenta Magenta Yellow Amarelo Dark Red Vermelho Escuro Dark Green Verde Escuro Dark Blue Azul Escuro Dark Cyan Ciano Escuro Dark Magenta Magenta Escuro Dark Yellow Amarelo Escuro DInputDialog Cancel Cancelar Confirm Confirmar DShortcutEdit Please input a new shortcut Por favor, insira um novo atalho None Nenhum QObject No search result Nenhum resultado da pesquisa Restore Defaults Restauração padrão ShortcutEdit Please enter a new shortcut Digite um novo atalho TitleBarMenu Help Ajuda About Sobre Exit Sair dtkwidget-2.1.1/src/translations/dtkwidget_ru.ts000066400000000000000000000143621352002233700220600ustar00rootroot00000000000000 DAboutDialog Acknowledgements Выражение признательности Version: %1 Версия: %1 %1 is released under %2 %1 выпущен под %2 DCrumbEdit Black Черный White Белый Dark Gray Темно-Серый Gray Серый Light Gray Светло-Серый Red Красный Green Зеленый Blue Голубой Cyan Сине-Зеленый Magenta Пурпурный Yellow Желтый Dark Red Темно-Красный Dark Green Темно-Зеленый Dark Blue Темно-Синий Dark Cyan Темно-Сине-Зеленый Dark Magenta Темно-Пурпурный Dark Yellow Темно-Желтый DInputDialog Cancel Отмена Confirm Подтвердить DShortcutEdit Please input a new shortcut Пожалуйста введите новое сочетание None Ничего QObject No search result Ничего не найдено Restore Defaults Восстановить значения По-умолчанию ShortcutEdit Please enter a new shortcut Пожалуйста введите новое сочетание TitleBarMenu Help Помощь About О программе Exit Выход dtkwidget-2.1.1/src/translations/dtkwidget_sk.ts000066400000000000000000000135651352002233700220530ustar00rootroot00000000000000 DAboutDialog Acknowledgements Poďakovanie Version: %1 Verzia: %1 %1 is released under %2 %1 je vydaná pod %2 DCrumbEdit Black Čierna White Biela Dark Gray Tmavosivá Gray Sivá Light Gray Svetlosivá Red Červená Green Zelená Blue Modrá Cyan Tyrkysová Magenta Purpurová Yellow Žltá Dark Red Tmavočervená Dark Green Tmavozelená Dark Blue Tmavomodrá Dark Cyan Tmavotyrkysová Dark Magenta Tmavopurpurová Dark Yellow Tmavožltá DInputDialog Cancel Zrušiť Confirm Potvrdiť DShortcutEdit Please input a new shortcut Prosím zadajte novú skratku None Nič QObject No search result Žiadny výsledok vyhľadávania Restore Defaults Obnoviť predvolené nastavenia ShortcutEdit Please enter a new shortcut Zadajte novú skratku TitleBarMenu Help Pomoc About O Exit Ukončiť dtkwidget-2.1.1/src/translations/dtkwidget_sl.ts000066400000000000000000000135111352002233700220430ustar00rootroot00000000000000 DAboutDialog Acknowledgements Zasluge Version: %1 Različica: %1 %1 is released under %2 %1 je izdana pod %2 DCrumbEdit Black Črna White Bela Dark Gray Temno siva Gray Siva Light Gray Svetlo siva Red Rdeča Green Zelena Blue Modra Cyan Cian Magenta Magenta Yellow Rumena Dark Red Temno rdeča Dark Green Temno zelena Dark Blue Temno modra Dark Cyan Temna cian Dark Magenta Temna magenta Dark Yellow Temno rumena DInputDialog Cancel Prekliči Confirm Potrdi DShortcutEdit Please input a new shortcut Prosim, vnesite novo bližnjico None Nič QObject No search result Ni rezultatov iskanja Restore Defaults Obnovi privzeto ShortcutEdit Please enter a new shortcut Prosim, vnesite novo bližnjico TitleBarMenu Help Pomoč About O tem Exit Izhod dtkwidget-2.1.1/src/translations/dtkwidget_sr.ts000066400000000000000000000141341352002233700220530ustar00rootroot00000000000000 DAboutDialog Acknowledgements Заслуге Version: %1 Верзија: %1 %1 is released under %2 %1 је објављен под %2 DCrumbEdit Black Црна White Бела Dark Gray Тамно сива Gray Сива Light Gray Светло сива Red Црвена Green Зелена Blue Плава Cyan Цијан Magenta Магента Yellow Жута Dark Red Тамно црвена Dark Green Тамно зелена Dark Blue Тамно плава Dark Cyan Тамно цијан Dark Magenta Тамно магента Dark Yellow Тамно жута DInputDialog Cancel Откажи Confirm Потврди DShortcutEdit Please input a new shortcut Молимо унесите нову пречицу None Ништа QObject No search result Нема резултата претраге Restore Defaults Врати Подразумевано ShortcutEdit Please enter a new shortcut Молимо унесите нову пречицу TitleBarMenu Help Помоћ About О програму Exit Изађи dtkwidget-2.1.1/src/translations/dtkwidget_tr.ts000066400000000000000000000136161352002233700220600ustar00rootroot00000000000000 DAboutDialog Acknowledgements Teşekkürler Version: %1 Sürüm: %1 %1 is released under %2 %1, %2 koşulları altında yayınlanmıştır DCrumbEdit Black Siyah White Beyaz Dark Gray Koyu Gri Gray Gri Light Gray Açık Gri Red Kırmızı Green Yeşil Blue Mavi Cyan Cam Göbeği Magenta Mor Yellow Sarı Dark Red Koyu Kırmızı Dark Green Koyu Yeşil Dark Blue Koyu Mavi Dark Cyan Koyu Cam Göbeği Dark Magenta Koyu Mor Dark Yellow Koyu Sarı DInputDialog Cancel İptal Confirm Onayla DShortcutEdit Please input a new shortcut Lütfen yeni bir kısayol yazın None Hiçbiri QObject No search result Aramada herhangi bir sonuç bulunamadı Restore Defaults Varsayılanları Geri Yükle ShortcutEdit Please enter a new shortcut Lütfen yeni bir kısayol gir TitleBarMenu Help Yardım About Hakkında Exit Çık dtkwidget-2.1.1/src/translations/dtkwidget_uk.ts000066400000000000000000000143741352002233700220540ustar00rootroot00000000000000 DAboutDialog Acknowledgements Подяки Version: %1 Версія: %1 %1 is released under %2 %1 випущено за умов дотримання %2 DCrumbEdit Black Чорний White Білий Dark Gray Темно сірий Gray Сірий Light Gray Світло сірий Red Червоний Green Зелений Blue Синій Cyan Бірюзовий Magenta Пурпурний Yellow Жовтий Dark Red Темно-червоний Dark Green Темно-зелений Dark Blue Темно-синій Dark Cyan Темно-бірюзовий Dark Magenta Темно-пурпурний Dark Yellow Темно-жовтий DInputDialog Cancel Скасувати Confirm Підтвердити DShortcutEdit Please input a new shortcut Будь ласка, вкажіть нове клавіатурне скорочення None Немає QObject No search result Нічого не знайдено Restore Defaults Відновити значення за замовчуванням ShortcutEdit Please enter a new shortcut Будь ласка, введіть новий ярлик TitleBarMenu Help Довідка About Про програму Exit Вийти dtkwidget-2.1.1/src/translations/dtkwidget_zh_CN.ts000066400000000000000000000134621352002233700224330ustar00rootroot00000000000000 DAboutDialog Acknowledgements 鸣谢 Version: %1 版本:%1 %1 is released under %2 %1遵循%2协议发布 DCrumbEdit Black 黑色 White 白色 Dark Gray 深灰色 Gray 灰色 Light Gray 浅灰色 Red 红色 Green 绿色 Blue 蓝色 Cyan 青色 Magenta 洋红色 Yellow 黄色 Dark Red 深红色 Dark Green 深绿色 Dark Blue 深蓝色 Dark Cyan 深青色 Dark Magenta 深紫红色 Dark Yellow 深黄色 DInputDialog Cancel 取消 Confirm 确定 DShortcutEdit Please input a new shortcut 请输入新的快捷键 None QObject No search result 无搜索结果 Restore Defaults 恢复默认设置 ShortcutEdit Please enter a new shortcut 请输入新的快捷键 TitleBarMenu Help 帮助 About 关于 Exit 退出 dtkwidget-2.1.1/src/translations/dtkwidget_zh_TW.ts000066400000000000000000000134161352002233700224640ustar00rootroot00000000000000 DAboutDialog Acknowledgements 鳴謝 Version: %1 版本:%1 %1 is released under %2 %1 遵循 %2 發布 DCrumbEdit Black 黑色 White 白色 Dark Gray 暗灰 Gray 灰色 Light Gray 亮灰 Red 紅色 Green 綠色 Blue 藍色 Cyan 青色 Magenta 洋紅 Yellow 黃色 Dark Red 暗紅 Dark Green 暗綠 Dark Blue 暗藍 Dark Cyan 暗青 Dark Magenta 暗洋紅 Dark Yellow 暗黃 DInputDialog Cancel 取消 Confirm 確定 DShortcutEdit Please input a new shortcut 請輸入新快速鍵 None QObject No search result 沒有搜尋結果 Restore Defaults 還原預設值 ShortcutEdit Please enter a new shortcut 請輸入新快速鍵 TitleBarMenu Help 說明 About 關於 Exit 離開 dtkwidget-2.1.1/src/util/000077500000000000000000000000001352002233700152425ustar00rootroot00000000000000dtkwidget-2.1.1/src/util/DDesktopServices000066400000000000000000000000361352002233700204050ustar00rootroot00000000000000#include "ddesktopservices.h" dtkwidget-2.1.1/src/util/DFileIconProvider000066400000000000000000000000371352002233700204740ustar00rootroot00000000000000#include "dfileiconprovider.h" dtkwidget-2.1.1/src/util/DHiDPIHelper000066400000000000000000000000321352002233700173210ustar00rootroot00000000000000#include "dhidpihelper.h" dtkwidget-2.1.1/src/util/DSvgRenderer000066400000000000000000000000321352002233700175120ustar00rootroot00000000000000#include "dsvgrenderer.h" dtkwidget-2.1.1/src/util/DThumbnailProvider000066400000000000000000000000401352002233700207210ustar00rootroot00000000000000#include "dthumbnailprovider.h" dtkwidget-2.1.1/src/util/DTrashManager000066400000000000000000000000331352002233700176410ustar00rootroot00000000000000#include "dtrashmanager.h" dtkwidget-2.1.1/src/util/DWidgetUtil000066400000000000000000000000311352002233700173440ustar00rootroot00000000000000#include "dwidgetutil.h" dtkwidget-2.1.1/src/util/DWindowManagerHelper000066400000000000000000000000421352002233700211670ustar00rootroot00000000000000#include "dwindowmanagerhelper.h" dtkwidget-2.1.1/src/util/ddesktopservices.h000066400000000000000000000061351352002233700210010ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DDESKTOPSERVICES_H #define DDESKTOPSERVICES_H #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DDesktopServices { public: #ifdef Q_OS_LINUX enum SystemSoundEffect { SSE_Notifications, SEE_Screenshot, SSE_EmptyTrash, SSE_SendFileComplete, SSE_BootUp, SSE_Shutdown, SSE_Logout, SSE_WakeUp, SSE_VolumeChange, SSE_LowBattery, SSE_PlugIn, SSE_PlugOut, SSE_DeviceAdded, SSE_DeviceRemoved, SSE_Error, }; #endif static bool showFolder(QString localFilePath, const QString &startupId = QString()); static bool showFolders(const QList localFilePaths, const QString &startupId = QString()); static bool showFolder(QUrl url, const QString &startupId = QString()); static bool showFolders(const QList urls, const QString &startupId = QString()); static bool showFileItemPropertie(QString localFilePath, const QString &startupId = QString()); static bool showFileItemProperties(const QList localFilePaths, const QString &startupId = QString()); static bool showFileItemPropertie(QUrl url, const QString &startupId = QString()); static bool showFileItemProperties(const QList urls, const QString &startupId = QString()); static bool showFileItem(QString localFilePath, const QString &startupId = QString()); static bool showFileItems(const QList localFilePaths, const QString &startupId = QString()); static bool showFileItem(QUrl url, const QString &startupId = QString()); static bool showFileItems(const QList urls, const QString &startupId = QString()); static bool trash(QString localFilePath); static bool trash(const QList localFilePaths); static bool trash(QUrl urlstartupId); static bool trash(const QList urls); #ifdef Q_OS_LINUX static bool playSystemSoundEffect(const SystemSoundEffect &effect); static bool playSystemSoundEffect(const QString &name); static bool previewSystemSoundEffect(const SystemSoundEffect &effect); static bool previewSystemSoundEffect(const QString &name); static QString getNameByEffectType(const SystemSoundEffect &effect); #endif static QString errorMessage(); }; DWIDGET_END_NAMESPACE #ifdef Q_OS_LINUX Q_DECLARE_METATYPE(DTK_WIDGET_NAMESPACE::DDesktopServices::SystemSoundEffect) #endif #endif // DDESKTOPSERVICES_H dtkwidget-2.1.1/src/util/ddesktopservices_linux.cpp000066400000000000000000000167271352002233700225630ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "ddesktopservices.h" #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define EASY_CALL_DBUS(name)\ QDBusInterface *interface = fileManager1DBusInterface();\ return interface && interface->call(#name, urls2uris(urls), startupId).type() != QDBusMessage::ErrorMessage; static const QStringList SOUND_EFFECT_LIST { "message", "camera-shutter", "trash-empty", "x-deepin-app-sent-to-desktop", "desktop-login", "system-shutdown", "desktop-logout", "suspend-resume", "audio-volume-change", "power-unplug-battery-low", "power-plug", "power-unplug", "device-added", "device-removed", "dialog-error", }; static QDBusInterface *fileManager1DBusInterface() { static QDBusInterface interface(QStringLiteral("org.freedesktop.FileManager1"), QStringLiteral("/org/freedesktop/FileManager1"), QStringLiteral("org.freedesktop.FileManager1")); return &interface; } static QStringList urls2uris(const QList &urls) { QStringList list; list.reserve(urls.size()); for (const QUrl &url : urls) { list << url.toString(); } return list; } static QList path2urls(const QList &paths) { QList list; list.reserve(paths.size()); for (const QString &path : paths) { list << QUrl::fromLocalFile(path); } return list; } static QMediaPlayer *soundEffectPlayer() { static QMediaPlayer *player = Q_NULLPTR; if (!player) { player = new QMediaPlayer; player->setVolume(70); } return player; } static QString soundEffectFilePath(const QString &name) { // TODO: super simple version of sound theme file search shema :) // will need to be replaced by more advanced approch like libcanberra. QString temp = QString("/usr/share/sounds/deepin/stereo/%1").arg(name); const QString tempWav = temp + ".wav"; if (QFile::exists(tempWav)) { return tempWav; } const QString tempOgg = temp + ".ogg"; if (QFile::exists(tempOgg)) { return tempOgg; } return QString(); } /*! * \brief Converts \p name from 'key-name' notation * to camel case 'keyName' or 'KeyName'. * This function converts GSettings key names to names * suitable for Qt getters and setters. * * Well fsck this. * * \param name key name * \return key name converted to camel case * \internal */ static QString GSettingsKeyToCamelCase(const QString name) { QStringList parts = name.split('-', QString::SkipEmptyParts); for (int i=1; i localFilePaths, const QString &startupId) { return showFolders(path2urls(localFilePaths), startupId); } bool DDesktopServices::showFolder(QUrl url, const QString &startupId) { return showFolders(QList() << url, startupId); } bool DDesktopServices::showFolders(const QList urls, const QString &startupId) { EASY_CALL_DBUS(ShowFolders) } bool DDesktopServices::showFileItemPropertie(QString localFilePath, const QString &startupId) { return showFileItemPropertie(QUrl::fromLocalFile(localFilePath), startupId); } bool DDesktopServices::showFileItemProperties(const QList localFilePaths, const QString &startupId) { return showFileItemProperties(path2urls(localFilePaths), startupId); } bool DDesktopServices::showFileItemPropertie(QUrl url, const QString &startupId) { return showFileItemProperties(QList() << url, startupId); } bool DDesktopServices::showFileItemProperties(const QList urls, const QString &startupId) { EASY_CALL_DBUS(ShowItemProperties) } bool DDesktopServices::showFileItem(QString localFilePath, const QString &startupId) { return showFileItem(QUrl::fromLocalFile(localFilePath), startupId); } bool DDesktopServices::showFileItems(const QList localFilePaths, const QString &startupId) { return showFileItems(path2urls(localFilePaths), startupId); } bool DDesktopServices::showFileItem(QUrl url, const QString &startupId) { return showFileItems(QList() << url, startupId); } bool DDesktopServices::showFileItems(const QList urls, const QString &startupId) { EASY_CALL_DBUS(ShowItems) } bool DDesktopServices::trash(QString localFilePath) { return trash(QUrl::fromLocalFile(localFilePath)); } bool DDesktopServices::trash(const QList localFilePaths) { return trash(path2urls(localFilePaths)); } bool DDesktopServices::trash(QUrl url) { return trash(QList() << url); } bool DDesktopServices::trash(const QList urls) { QDBusInterface *interface = fileManager1DBusInterface(); return interface && interface->call("Trash", urls2uris(urls)).type() != QDBusMessage::ErrorMessage; } bool DDesktopServices::playSystemSoundEffect(const DDesktopServices::SystemSoundEffect &effect) { return playSystemSoundEffect(SOUND_EFFECT_LIST.at(static_cast(effect))); } bool DDesktopServices::playSystemSoundEffect(const QString &name) { if (!systemSoundEffectEnabled(name)) { return false; } return previewSystemSoundEffect(name); } bool DDesktopServices::previewSystemSoundEffect(const DDesktopServices::SystemSoundEffect &effect) { return previewSystemSoundEffect(SOUND_EFFECT_LIST.at(static_cast(effect))); } bool DDesktopServices::previewSystemSoundEffect(const QString &name) { const QString path = soundEffectFilePath(name); if (path.isEmpty()) { return false; } if (path.endsWith("wav")) { QSound::play(path); } else { QMediaPlayer *player = soundEffectPlayer(); player->setMedia(QUrl::fromLocalFile(path)); player->play(); } return true; } QString DDesktopServices::getNameByEffectType(const DDesktopServices::SystemSoundEffect &effect) { return SOUND_EFFECT_LIST.at(static_cast(effect)); } QString DDesktopServices::errorMessage() { return fileManager1DBusInterface()->lastError().message(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/ddesktopservices_win.cpp000066400000000000000000000070241352002233700222070ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "ddesktopservices.h" DWIDGET_BEGIN_NAMESPACE static QStringList urls2uris(const QList &urls) { QStringList list; list.reserve(urls.size()); for (const QUrl url : urls) { list << url.toString(); } return list; } static QList path2urls(const QList &paths) { QList list; list.reserve(paths.size()); for (const QString &path : paths) { list << QUrl::fromLocalFile(path); } return list; } bool DDesktopServices::showFolder(QString localFilePath, const QString &startupId) { Q_UNUSED(localFilePath); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFolders(const QList localFilePaths, const QString &startupId) { Q_UNUSED(localFilePaths); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFolder(QUrl url, const QString &startupId) { Q_UNUSED(url); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFolders(const QList urls, const QString &startupId) { Q_UNUSED(urls); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItemPropertie(QString localFilePath, const QString &startupId) { Q_UNUSED(localFilePath); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItemProperties(const QList localFilePaths, const QString &startupId) { Q_UNUSED(localFilePaths); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItemPropertie(QUrl url, const QString &startupId) { Q_UNUSED(url); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItemProperties(const QList urls, const QString &startupId) { Q_UNUSED(urls); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItem(QString localFilePath, const QString &startupId) { Q_UNUSED(localFilePath); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItems(const QList localFilePaths, const QString &startupId) { Q_UNUSED(localFilePaths); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItem(QUrl url, const QString &startupId) { Q_UNUSED(url); Q_UNUSED(startupId); return false; } bool DDesktopServices::showFileItems(const QList urls, const QString &startupId) { Q_UNUSED(urls); Q_UNUSED(startupId); return false; } bool DDesktopServices::trash(QString localFilePath) { Q_UNUSED(localFilePath); return false; } bool DDesktopServices::trash(const QList localFilePaths) { Q_UNUSED(localFilePaths); return false; } bool DDesktopServices::trash(QUrl url) { Q_UNUSED(url); return false; } bool DDesktopServices::trash(const QList urls) { Q_UNUSED(urls); return false; } QString DDesktopServices::errorMessage() { return QString(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/desktop.pri000066400000000000000000000012071352002233700174270ustar00rootroot00000000000000HEADERS += \ $$PWD/ddesktopservices.h \ $$PWD/dtrashmanager.h linux { qtHaveModule(dbus) { QT += dbus SOURCES += $$PWD/ddesktopservices_linux.cpp } CONFIG += link_pkgconfig PKGCONFIG += gsettings-qt SOURCES += \ $$PWD/dtrashmanager_linux.cpp } else:win* { SOURCES += \ $$PWD/ddesktopservices_win.cpp \ $$PWD/dtrashmanager_win.cpp } else:mac* { SOURCES += \ $$PWD/ddesktopservices_win.cpp \ $$PWD/dtrashmanager_win.cpp } includes.files += $$PWD/*.h includes.files += $$PWD/*.cpp includes.files += \ $$PWD/DDesktopServices \ $$PWD/DTrashManager dtkwidget-2.1.1/src/util/dfileiconprovider.cpp000066400000000000000000000124001352002233700214520ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "dfileiconprovider.h" #include #include #include #include #ifdef USE_GTK_PLUS_2_0 #include #undef signals // Collides with GTK symbols #include #endif DWIDGET_BEGIN_NAMESPACE #ifdef USE_GTK_PLUS_2_0 typedef enum { GNOME_ICON_LOOKUP_FLAGS_NONE = 0, GNOME_ICON_LOOKUP_FLAGS_EMBEDDING_TEXT = 1 << 0, GNOME_ICON_LOOKUP_FLAGS_SHOW_SMALL_IMAGES_AS_THEMSELVES = 1 << 1, GNOME_ICON_LOOKUP_FLAGS_ALLOW_SVG_AS_THEMSELVES = 1 << 2 } GnomeIconLookupFlags; typedef enum { GNOME_ICON_LOOKUP_RESULT_FLAGS_NONE = 0, GNOME_ICON_LOOKUP_RESULT_FLAGS_THUMBNAIL = 1 << 0 } GnomeIconLookupResultFlags; struct GnomeThumbnailFactory; typedef gboolean(*Ptr_gnome_vfs_init)(void); typedef char *(*Ptr_gnome_icon_lookup_sync)( GtkIconTheme *icon_theme, GnomeThumbnailFactory *, const char *file_uri, const char *custom_icon, GnomeIconLookupFlags flags, GnomeIconLookupResultFlags *result); typedef GtkIconTheme *(*Ptr_gtk_icon_theme_get_default)(void); #endif class DFileIconProviderPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DFileIconProviderPrivate(DFileIconProvider *qq); void init(); QIcon getFilesystemIcon(const QFileInfo &info) const; QIcon fromTheme(QString iconName) const; D_DECLARE_PUBLIC(DFileIconProvider) #ifdef USE_GTK_PLUS_2_0 static Ptr_gnome_icon_lookup_sync gnome_icon_lookup_sync; static Ptr_gnome_vfs_init gnome_vfs_init; static Ptr_gtk_icon_theme_get_default gtk_icon_theme_get_default; }; Ptr_gnome_icon_lookup_sync DFileIconProviderPrivate::gnome_icon_lookup_sync; Ptr_gnome_vfs_init DFileIconProviderPrivate::gnome_vfs_init; Ptr_gtk_icon_theme_get_default DFileIconProviderPrivate::gtk_icon_theme_get_default; #else }; #endif DFileIconProviderPrivate::DFileIconProviderPrivate(DFileIconProvider *qq) : DObjectPrivate(qq) { init(); } void DFileIconProviderPrivate::init() { #ifdef USE_GTK_PLUS_2_0 gnome_icon_lookup_sync = (Ptr_gnome_icon_lookup_sync)QLibrary::resolve(QLatin1String("gnomeui-2"), 0, "gnome_icon_lookup_sync"); gnome_vfs_init = (Ptr_gnome_vfs_init)QLibrary::resolve(QLatin1String("gnomevfs-2"), 0, "gnome_vfs_init"); gtk_icon_theme_get_default = (Ptr_gtk_icon_theme_get_default)QLibrary::resolve(QLatin1String("gtk-x11-2.0"), 0, "gtk_icon_theme_get_default"); #endif } QIcon DFileIconProviderPrivate::getFilesystemIcon(const QFileInfo &info) const { #ifdef USE_GTK_PLUS_2_0 if (gnome_vfs_init && gnome_icon_lookup_sync && gtk_icon_theme_get_default) { gnome_vfs_init(); GtkIconTheme *theme = gtk_icon_theme_get_default(); QByteArray fileurl = QUrl::fromLocalFile(info.absoluteFilePath()).toEncoded(); char *icon_name = gnome_icon_lookup_sync(theme, NULL, fileurl.data(), NULL, GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); QString iconName = QString::fromUtf8(icon_name); g_free(icon_name); if (iconName.startsWith(QLatin1Char('/'))) { return QIcon(iconName); } return fromTheme(iconName); } #endif const QMimeType &db = QMimeDatabase().mimeTypeForFile(info); const QIcon &icon = fromTheme(db.iconName()); if (!icon.isNull()) { return icon; } return fromTheme(db.genericIconName()); } QIcon DFileIconProviderPrivate::fromTheme(QString iconName) const { QIcon icon = QIcon::fromTheme(iconName); if (Q_LIKELY(!icon.isNull())) { return icon; } if (iconName == "application-vnd.debian.binary-package") { iconName = "application-x-deb"; } else if (iconName == "application-vnd.rar") { iconName = "application-zip"; } else if (iconName == "application-vnd.ms-htmlhelp") { iconName = "chmsee"; } else { return icon; } icon = QIcon::fromTheme(iconName); return icon; } Q_GLOBAL_STATIC(DFileIconProvider, globalFIP) DFileIconProvider::DFileIconProvider() : DObject(*new DFileIconProviderPrivate(this)) { } DFileIconProvider::~DFileIconProvider() { } DFileIconProvider *DFileIconProvider::globalProvider() { return globalFIP; } QIcon DFileIconProvider::icon(const QFileInfo &info) const { Q_D(const DFileIconProvider); return d->getFilesystemIcon(info); } QIcon DFileIconProvider::icon(const QFileInfo &info, const QIcon &feedback) const { const QIcon &icon = this->icon(info); if (icon.isNull()) { return feedback; } return icon; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dfileiconprovider.h000066400000000000000000000025541352002233700211300ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFILEICONPROVIDER_H #define DFILEICONPROVIDER_H #include #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DFileIconProviderPrivate; class DFileIconProvider : public QFileIconProvider, public DTK_CORE_NAMESPACE::DObject { public: DFileIconProvider(); virtual ~DFileIconProvider() Q_DECL_OVERRIDE; static DFileIconProvider *globalProvider(); QIcon icon(const QFileInfo &info) const Q_DECL_OVERRIDE; QIcon icon(const QFileInfo &info, const QIcon &feedback) const; private: D_DECLARE_PRIVATE(DFileIconProvider) Q_DISABLE_COPY(DFileIconProvider) }; DWIDGET_END_NAMESPACE #endif // DFILEICONPROVIDER_H dtkwidget-2.1.1/src/util/dhidpihelper.cpp000066400000000000000000000021631352002233700204110ustar00rootroot00000000000000#include "dhidpihelper.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \class DHiDPIHelper * \brief The DHiDPIHelper class provides helper to help applications support hiDPI. */ /*! * \brief DHiDPIHelper::loadNxPixmap loads the suitable @Nx image. * \param fileName is the original resource file name. * \return the hiDPI ready QPixmap. */ QPixmap DHiDPIHelper::loadNxPixmap(const QString &fileName) { qreal sourceDevicePixelRatio = 1.0; qreal devicePixelRatio = qApp->devicePixelRatio(); QPixmap pixmap; if (!qFuzzyCompare(sourceDevicePixelRatio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(fileName, devicePixelRatio, &sourceDevicePixelRatio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / sourceDevicePixelRatio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(fileName); } return pixmap; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dhidpihelper.h000066400000000000000000000003621352002233700200550ustar00rootroot00000000000000#ifndef DHIDPIHELPER_H #define DHIDPIHELPER_H #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DHiDPIHelper { public: static QPixmap loadNxPixmap(const QString &fileName); }; DWIDGET_END_NAMESPACE #endif // DHIDPIHELPER_H dtkwidget-2.1.1/src/util/dregionmonitor.cpp000066400000000000000000000117041352002233700210100ustar00rootroot00000000000000#include "dregionmonitor.h" #include "private/dregionmonitor_p.h" #include #include #include DWIDGET_BEGIN_NAMESPACE DRegionMonitor::DRegionMonitor(QObject *parent) : QObject(parent), DObject(*new DRegionMonitorPrivate(this)) { D_D(DRegionMonitor); d->init(); } bool DRegionMonitor::registered() const { D_DC(DRegionMonitor); return !d->registerKey.isEmpty(); } QRegion DRegionMonitor::watchedRegion() const { D_DC(DRegionMonitor); return d->watchedRegion; } DRegionMonitor::CoordinateType DRegionMonitor::coordinateType() const { D_DC(DRegionMonitor); return d->type; } void DRegionMonitor::registerRegion() { if (registered()) { qWarning() << "region already registered!"; return; } D_D(DRegionMonitor); d->registerMonitorRegion(); } void DRegionMonitor::unregisterRegion() { D_D(DRegionMonitor); d->unregisterMonitorRegion(); } void DRegionMonitor::setWatchedRegion(const QRegion ®ion) { D_D(DRegionMonitor); d->watchedRegion = region; if (registered()) d->registerMonitorRegion(); } void DRegionMonitor::setCoordinateType(DRegionMonitor::CoordinateType type) { D_D(DRegionMonitor); d->type = type; } DRegionMonitorPrivate::DRegionMonitorPrivate(DRegionMonitor *q) : DObjectPrivate(q) , eventInter(new XEventMonitor("com.deepin.api.XEventMonitor", "/com/deepin/api/XEventMonitor", QDBusConnection::sessionBus())) { } DRegionMonitorPrivate::~DRegionMonitorPrivate() { if (registered()) unregisterMonitorRegion(); eventInter->deleteLater(); } void DRegionMonitorPrivate::init() { D_Q(DRegionMonitor); QObject::connect(eventInter, SIGNAL(ButtonPress(int,int,int,QString)), q, SLOT(_q_ButtonPress(const int, const int, const int, const QString&))); QObject::connect(eventInter, SIGNAL(ButtonRelease(int,int,int,QString)), q, SLOT(_q_ButtonRelease(const int, const int, const int, const QString&))); QObject::connect(eventInter, SIGNAL(CursorMove(int,int,QString)), q, SLOT(_q_CursorMove(const int, const int, const QString&))); QObject::connect(eventInter, SIGNAL(KeyPress(QString,int,int,QString)), q, SLOT(_q_KeyPress(const QString&, const int, const int, const QString&))); QObject::connect(eventInter, SIGNAL(KeyRelease(QString,int,int,QString)), q, SLOT(_q_KeyRelease(const QString&, const int, const int, const QString&))); } void DRegionMonitorPrivate::registerMonitorRegion() { if (registered()) unregisterMonitorRegion(); if (watchedRegion.isEmpty()) { registerKey = eventInter->RegisterFullScreen(); } else { const QRect r = watchedRegion.boundingRect(); const int x1 = r.x(); const int y1 = r.y(); const int x2 = x1 + r.width(); const int y2 = y1 + r.height(); // TODO: const int flags = Motion | Button | Key; registerKey = eventInter->RegisterArea(x1, y1, x2, y2, flags); } } void DRegionMonitorPrivate::unregisterMonitorRegion() { if (registerKey.isEmpty()) return; eventInter->UnregisterArea(registerKey); registerKey.clear(); } void DRegionMonitorPrivate::_q_ButtonPress(const int flag, const int x, const int y, const QString &key) { if (registerKey != key) return; D_Q(DRegionMonitor); Q_EMIT q->buttonPress(deviceScaledCoordinate(QPoint(x, y), qApp->devicePixelRatio()), flag); } void DRegionMonitorPrivate::_q_ButtonRelease(const int flag, const int x, const int y, const QString &key) { if (registerKey != key) return; D_Q(DRegionMonitor); Q_EMIT q->buttonRelease(deviceScaledCoordinate(QPoint(x, y), qApp->devicePixelRatio()), flag); } void DRegionMonitorPrivate::_q_CursorMove(const int x, const int y, const QString &key) { if (registerKey != key) return; D_Q(DRegionMonitor); Q_EMIT q->cursorMove(deviceScaledCoordinate(QPoint(x, y), qApp->devicePixelRatio())); } void DRegionMonitorPrivate::_q_KeyPress(const QString &keyname, const int x, const int y, const QString &key) { if (registerKey != key) return; Q_UNUSED(x); Q_UNUSED(y); D_Q(DRegionMonitor); Q_EMIT q->keyPress(keyname); } void DRegionMonitorPrivate::_q_KeyRelease(const QString &keyname, const int x, const int y, const QString &key) { if (registerKey != key) return; Q_UNUSED(x); Q_UNUSED(y); D_Q(DRegionMonitor); Q_EMIT q->keyRelease(keyname); } const QPoint DRegionMonitorPrivate::deviceScaledCoordinate(const QPoint &p, const double ratio) const { D_QC(DRegionMonitor); if (type == q->Original) { return p; } for (const auto *s : qApp->screens()) { const QRect &g(s->geometry()); const QRect realRect(g.topLeft(), g.size() * ratio); if (realRect.contains(p)) return QPoint(realRect.topLeft() + (p - realRect.topLeft()) / ratio); } return p / ratio; } #include "moc_dregionmonitor.cpp" DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dregionmonitor.h000066400000000000000000000037101352002233700204530ustar00rootroot00000000000000#ifndef DREGIONMONITOR_H #define DREGIONMONITOR_H #include "dobject.h" #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DRegionMonitorPrivate; class DRegionMonitor : public QObject, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT D_DECLARE_PRIVATE(DRegionMonitor) Q_DISABLE_COPY(DRegionMonitor) Q_PROPERTY(CoordinateType coordinateType READ coordinateType WRITE setCoordinateType NOTIFY coordinateTypeChanged) public: explicit DRegionMonitor(QObject *parent = nullptr); enum WatchedFlags { Button_Left = 1, Button_Right = 3, }; enum CoordinateType { ScaleRatio, Original }; Q_ENUM(CoordinateType) bool registered() const; QRegion watchedRegion() const; CoordinateType coordinateType() const; Q_SIGNALS: void buttonPress(const QPoint &p, const int flag) const; void buttonRelease(const QPoint &p, const int flag) const; void cursorMove(const QPoint &p) const; void keyPress(const QString &keyname) const; void keyRelease(const QString &keyname) const; void coordinateTypeChanged(CoordinateType type) const; public Q_SLOTS: void registerRegion(); inline void registerRegion(const QRegion ®ion) { setWatchedRegion(region); registerRegion(); } void unregisterRegion(); void setWatchedRegion(const QRegion ®ion); void setCoordinateType(CoordinateType type); private: Q_PRIVATE_SLOT(d_func(), void _q_ButtonPress(const int, const int, const int, const QString&)) Q_PRIVATE_SLOT(d_func(), void _q_ButtonRelease(const int, const int, const int, const QString&)) Q_PRIVATE_SLOT(d_func(), void _q_CursorMove(const int, const int, const QString &)) Q_PRIVATE_SLOT(d_func(), void _q_KeyPress(const QString &, const int, const int, const QString &)) Q_PRIVATE_SLOT(d_func(), void _q_KeyRelease(const QString &, const int, const int, const QString &)) }; DWIDGET_END_NAMESPACE #endif // DREGIONMONITOR_H dtkwidget-2.1.1/src/util/dsvgrenderer.cpp000066400000000000000000000126531352002233700204470ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "dsvgrenderer.h" #include "dobject_p.h" #include #include #include #include DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DSvgRendererPrivate : public DObjectPrivate { public: DSvgRendererPrivate(DObject *qq); QImage getImage(const QSize &size, const QString &elementId) const; RsvgHandle *handle = NULL; QSize defaultSize; mutable QRectF viewBox; }; DSvgRendererPrivate::DSvgRendererPrivate(DObject *qq) : DObjectPrivate(qq) { } QImage DSvgRendererPrivate::getImage(const QSize &size, const QString &elementId) const { QImage image(size, QImage::Format_ARGB32_Premultiplied); image.fill(Qt::transparent); cairo_surface_t *surface = cairo_image_surface_create_for_data(image.bits(), CAIRO_FORMAT_ARGB32, image.width(), image.height(), image.bytesPerLine()); cairo_t *cairo = cairo_create(surface); cairo_scale(cairo, image.width() / viewBox.width(), image.height() / viewBox.height()); cairo_translate(cairo, -viewBox.x(), -viewBox.y()); if (elementId.isEmpty()) rsvg_handle_render_cairo(handle, cairo); else rsvg_handle_render_cairo_sub(handle, cairo, elementId.toUtf8().constData()); cairo_destroy(cairo); cairo_surface_destroy(surface); return image; } DSvgRenderer::DSvgRenderer(QObject *parent) : QObject(parent) , DObject(*new DSvgRendererPrivate(this)) { } DSvgRenderer::DSvgRenderer(const QString &filename, QObject *parent) : DSvgRenderer(parent) { load(filename); } DSvgRenderer::DSvgRenderer(const QByteArray &contents, QObject *parent) : DSvgRenderer(parent) { load(contents); } DSvgRenderer::~DSvgRenderer() { D_D(DSvgRenderer); if (d->handle) g_object_unref(d->handle); } bool DSvgRenderer::isValid() const { D_DC(DSvgRenderer); return d->handle; } QSize DSvgRenderer::defaultSize() const { D_DC(DSvgRenderer); return d->defaultSize; } QRect DSvgRenderer::viewBox() const { D_DC(DSvgRenderer); return d->handle ? d->viewBox.toRect() : QRect(); } QRectF DSvgRenderer::viewBoxF() const { D_DC(DSvgRenderer); return d->handle ? d->viewBox : QRectF(); } void DSvgRenderer::setViewBox(const QRect &viewbox) { setViewBox(QRectF(viewbox)); } void DSvgRenderer::setViewBox(const QRectF &viewbox) { D_D(DSvgRenderer); if (d->handle) d->viewBox = viewbox; } QRectF DSvgRenderer::boundsOnElement(const QString &id) const { D_DC(DSvgRenderer); if (!d->handle) return QRectF(); const QByteArray &id_data = id.toUtf8(); RsvgDimensionData dimension_data; if (!rsvg_handle_get_dimensions_sub(d->handle, &dimension_data, id_data.constData())) return QRectF(); RsvgPositionData pos_data; if (!rsvg_handle_get_position_sub(d->handle, &pos_data, id_data.constData())) return QRectF(); return QRectF(pos_data.x, pos_data.y, dimension_data.width, dimension_data.height); } bool DSvgRenderer::elementExists(const QString &id) const { D_DC(DSvgRenderer); if (!d->handle) return false; return rsvg_handle_has_sub(d->handle, id.toUtf8().constData()); } QImage DSvgRenderer::toImage(const QSize sz, const QString &elementId) const { Q_D(const DSvgRenderer); return d->getImage(sz, elementId); } bool DSvgRenderer::load(const QString &filename) { QFile file(filename); if (file.open(QIODevice::ReadOnly)) { return load(file.readAll()); } return false; } bool DSvgRenderer::load(const QByteArray &contents) { D_D(DSvgRenderer); if (d->handle) { g_object_unref(d->handle); d->handle = NULL; } GError *error = 0; d->handle = rsvg_handle_new_from_data((const guint8*)contents.constData(), contents.length(), &error); if (error) { qWarning("DSvgRenderer::load: %s", error->message); g_error_free(error); return false; } RsvgDimensionData rsvg_data; rsvg_handle_get_dimensions(d->handle, &rsvg_data); d->defaultSize.setWidth(rsvg_data.width); d->defaultSize.setHeight(rsvg_data.height); d->viewBox = QRectF(QPointF(0, 0), d->defaultSize); return true; } void DSvgRenderer::render(QPainter *p) { render(p, QString(), QRectF()); } void DSvgRenderer::render(QPainter *p, const QRectF &bounds) { render(p, QString(), bounds); } void DSvgRenderer::render(QPainter *p, const QString &elementId, const QRectF &bounds) { D_D(DSvgRenderer); if (!d->handle) return; p->save(); const QImage image = d->getImage(QSize(p->device()->width(), p->device()->height()), elementId); if (bounds.isEmpty()) p->drawImage(0, 0, image); else p->drawImage(bounds, image); p->restore(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dsvgrenderer.h000066400000000000000000000042401352002233700201050ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSVGRENDERER_H #define DSVGRENDERER_H #include #include #include #include QT_BEGIN_NAMESPACE class QPainter; QT_END_NAMESPACE #ifdef Q_OS_LINUX DWIDGET_BEGIN_NAMESPACE class DSvgRendererPrivate; class DSvgRenderer : public QObject, public DTK_CORE_NAMESPACE::DObject { Q_PROPERTY(QRectF viewBox READ viewBoxF WRITE setViewBox) public: DSvgRenderer(QObject *parent = Q_NULLPTR); DSvgRenderer(const QString &filename, QObject *parent = Q_NULLPTR); DSvgRenderer(const QByteArray &contents, QObject *parent = Q_NULLPTR); ~DSvgRenderer(); bool isValid() const; QSize defaultSize() const; QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewbox); void setViewBox(const QRectF &viewbox); QRectF boundsOnElement(const QString &id) const; bool elementExists(const QString &id) const; QImage toImage(const QSize sz, const QString &elementId = QString()) const; public Q_SLOTS: bool load(const QString &filename); bool load(const QByteArray &contents); void render(QPainter *p); void render(QPainter *p, const QRectF &bounds); void render(QPainter *p, const QString &elementId, const QRectF &bounds = QRectF()); private: D_DECLARE_PRIVATE(DSvgRenderer) }; DWIDGET_END_NAMESPACE #else #include DWIDGET_BEGIN_NAMESPACE typedef QSvgRenderer DSvgRenderer; DWIDGET_END_NAMESPACE #endif #endif // DSVGRENDERER_H dtkwidget-2.1.1/src/util/dthumbnailprovider.cpp000066400000000000000000000265421352002233700216610ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthumbnailprovider.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define FORMAT ".png" #define THUMBNAIL_PATH \ DCORE_NAMESPACE::DStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + "/thumbnails" #define THUMBNAIL_FAIL_PATH THUMBNAIL_PATH"/fail" #define THUMBNAIL_LARGE_PATH THUMBNAIL_PATH"/large" #define THUMBNAIL_NORMAL_PATH THUMBNAIL_PATH"/normal" #define THUMBNAIL_SMALL_PATH THUMBNAIL_PATH"/small" inline QByteArray dataToMd5Hex(const QByteArray &data) { return QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex(); } class DThumbnailProviderPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DThumbnailProviderPrivate(DThumbnailProvider *qq); void init(); QString sizeToFilePath(DThumbnailProvider::Size size) const; QString errorString; // MAX qint64 defaultSizeLimit = INT64_MAX; QHash sizeLimitHash; QMimeDatabase mimeDatabase; static QSet hasThumbnailMimeHash; struct ProduceInfo { QFileInfo fileInfo; DThumbnailProvider::Size size; DThumbnailProvider::CallBack callback; }; QQueue produceQueue; QSet> discardedProduceInfos; bool running = true; QWaitCondition waitCondition; QReadWriteLock dataReadWriteLock; D_DECLARE_PUBLIC(DThumbnailProvider) }; QSet DThumbnailProviderPrivate::hasThumbnailMimeHash; DThumbnailProviderPrivate::DThumbnailProviderPrivate(DThumbnailProvider *qq) : DObjectPrivate(qq) { } void DThumbnailProviderPrivate::init() { } QString DThumbnailProviderPrivate::sizeToFilePath(DThumbnailProvider::Size size) const { switch (size) { case DThumbnailProvider::Small: return THUMBNAIL_SMALL_PATH; case DThumbnailProvider::Normal: return THUMBNAIL_NORMAL_PATH; case DThumbnailProvider::Large: return THUMBNAIL_LARGE_PATH; } return QString(); } class DFileThumbnailProviderPrivate : public DThumbnailProvider {}; Q_GLOBAL_STATIC(DFileThumbnailProviderPrivate, ftpGlobal) DThumbnailProvider *DThumbnailProvider::instance() { return ftpGlobal; } bool DThumbnailProvider::hasThumbnail(const QFileInfo &info) const { Q_D(const DThumbnailProvider); if (!info.isReadable() || !info.isFile()) { return false; } qint64 fileSize = info.size(); if (fileSize <= 0) { return false; } const QMimeType &mime = d->mimeDatabase.mimeTypeForFile(info); if (fileSize > sizeLimit(mime)) { return false; } return hasThumbnail(mime); } bool DThumbnailProvider::hasThumbnail(const QMimeType &mimeType) const { const QString &mime = mimeType.name(); if (DThumbnailProviderPrivate::hasThumbnailMimeHash.isEmpty()) { const QList &mimeTypes = QImageReader::supportedMimeTypes(); if (mimeTypes.isEmpty()) { DThumbnailProviderPrivate::hasThumbnailMimeHash.insert(""); return false; } DThumbnailProviderPrivate::hasThumbnailMimeHash.reserve(mimeTypes.size()); for (const QByteArray &t : mimeTypes) { DThumbnailProviderPrivate::hasThumbnailMimeHash.insert(QString::fromLocal8Bit(t)); } } return DThumbnailProviderPrivate::hasThumbnailMimeHash.contains(mime); } QString DThumbnailProvider::thumbnailFilePath(const QFileInfo &info, Size size) const { Q_D(const DThumbnailProvider); const QString &absolutePath = info.absolutePath(); const QString &absoluteFilePath = info.absoluteFilePath(); if (absolutePath == d->sizeToFilePath(Small) || absolutePath == d->sizeToFilePath(Normal) || absolutePath == d->sizeToFilePath(Large) || absolutePath == THUMBNAIL_FAIL_PATH) { return absoluteFilePath; } const QString thumbnailName = dataToMd5Hex(QUrl::fromLocalFile(absoluteFilePath).toString(QUrl::FullyEncoded).toLocal8Bit()) + FORMAT; QString thumbnail = d->sizeToFilePath(size) + QDir::separator() + thumbnailName; if (!QFile::exists(thumbnail)) { return QString(); } QImage image(thumbnail); if (image.text(QT_STRINGIFY(Thumb::MTime)).toInt() != (int)info.lastModified().toTime_t()) { QFile::remove(thumbnail); Q_EMIT thumbnailChanged(absoluteFilePath, QString()); return QString(); } return thumbnail; } QString DThumbnailProvider::createThumbnail(const QFileInfo &info, DThumbnailProvider::Size size) { Q_D(DThumbnailProvider); d->errorString.clear(); const QString &absolutePath = info.absolutePath(); const QString &absoluteFilePath = info.absoluteFilePath(); if (absolutePath == d->sizeToFilePath(Small) || absolutePath == d->sizeToFilePath(Normal) || absolutePath == d->sizeToFilePath(Large) || absolutePath == THUMBNAIL_FAIL_PATH) { return absoluteFilePath; } if (!hasThumbnail(info)) { d->errorString = QStringLiteral("This file has not support thumbnail: ") + absoluteFilePath; //!Warnning: Do not store thumbnails to the fail path return QString(); } const QString fileUrl = QUrl::fromLocalFile(absoluteFilePath).toString(QUrl::FullyEncoded); const QString thumbnailName = dataToMd5Hex(fileUrl.toLocal8Bit()) + FORMAT; // the file is in fail path QString thumbnail = THUMBNAIL_FAIL_PATH + QDir::separator() + thumbnailName; if (QFile::exists(thumbnail)) { QImage image(thumbnail); if (image.text(QT_STRINGIFY(Thumb::MTime)).toInt() != (int)info.lastModified().toTime_t()) { QFile::remove(thumbnail); } else { return QString(); } }// end QScopedPointer image(new QImage(QSize(size, size), QImage::Format_ARGB32_Premultiplied)); QImageReader reader(absoluteFilePath); if (!reader.canRead()) { reader.setFormat(d->mimeDatabase.mimeTypeForFile(info).name().toLocal8Bit()); if (!reader.canRead()) { d->errorString = reader.errorString(); } } if (d->errorString.isEmpty()) { const QSize &imageSize = reader.size(); if (imageSize.isValid()) { if (imageSize.width() >= size || imageSize.height() >= size) { reader.setScaledSize(reader.size().scaled(size, size, Qt::KeepAspectRatio)); } if (!reader.read(image.data())) { d->errorString = reader.errorString(); } } else { d->errorString = "Fail to read image file attribute data:" + info.absoluteFilePath(); } } // successful if (d->errorString.isEmpty()) { thumbnail = d->sizeToFilePath(size) + QDir::separator() + thumbnailName; } else { //fail image.reset(new QImage(1, 1, QImage::Format_Mono)); } image->setText(QT_STRINGIFY(Thumb::URL), fileUrl); image->setText(QT_STRINGIFY(Thumb::MTime), QString::number(info.lastModified().toTime_t())); // create path QFileInfo(thumbnail).absoluteDir().mkpath("."); if (!image->save(thumbnail, Q_NULLPTR, 80)) { d->errorString = QStringLiteral("Can not save image to ") + thumbnail; } if (d->errorString.isEmpty()) { Q_EMIT createThumbnailFinished(absoluteFilePath, thumbnail); Q_EMIT thumbnailChanged(absoluteFilePath, thumbnail); return thumbnail; } // fail Q_EMIT createThumbnailFailed(absoluteFilePath); return QString(); } void DThumbnailProvider::appendToProduceQueue(const QFileInfo &info, DThumbnailProvider::Size size, DThumbnailProvider::CallBack callback) { DThumbnailProviderPrivate::ProduceInfo produceInfo; produceInfo.fileInfo = info; produceInfo.size = size; produceInfo.callback = callback; Q_D(DThumbnailProvider); if (isRunning()) { QWriteLocker locker(&d->dataReadWriteLock); d->produceQueue.append(std::move(produceInfo)); locker.unlock(); d->waitCondition.wakeAll(); } else { d->produceQueue.append(std::move(produceInfo)); start(); } } void DThumbnailProvider::removeInProduceQueue(const QFileInfo &info, DThumbnailProvider::Size size) { Q_D(DThumbnailProvider); if (isRunning()) { QWriteLocker locker(&d->dataReadWriteLock); Q_UNUSED(locker) } d->discardedProduceInfos.insert(qMakePair(info.absoluteFilePath(), size)); } QString DThumbnailProvider::errorString() const { Q_D(const DThumbnailProvider); return d->errorString; } qint64 DThumbnailProvider::defaultSizeLimit() const { Q_D(const DThumbnailProvider); return d->defaultSizeLimit; } void DThumbnailProvider::setDefaultSizeLimit(qint64 size) { Q_D(DThumbnailProvider); d->defaultSizeLimit = size; } qint64 DThumbnailProvider::sizeLimit(const QMimeType &mimeType) const { Q_D(const DThumbnailProvider); return d->sizeLimitHash.value(mimeType, d->defaultSizeLimit); } void DThumbnailProvider::setSizeLimit(const QMimeType &mimeType, qint64 size) { Q_D(DThumbnailProvider); d->sizeLimitHash[mimeType] = size; } DThumbnailProvider::DThumbnailProvider(QObject *parent) : QThread(parent) , DObject(*new DThumbnailProviderPrivate(this)) { d_func()->init(); } DThumbnailProvider::~DThumbnailProvider() { Q_D(DThumbnailProvider); d->running = false; d->waitCondition.wakeAll(); wait(); } void DThumbnailProvider::run() { Q_D(DThumbnailProvider); Q_FOREVER { QWriteLocker locker(&d->dataReadWriteLock); if (d->produceQueue.isEmpty()) { d->waitCondition.wait(&d->dataReadWriteLock); } if (!d->running) { return; } const DThumbnailProviderPrivate::ProduceInfo &task = d->produceQueue.dequeue(); const QPair &tmpKey = qMakePair(task.fileInfo.absoluteFilePath(), task.size); if (d->discardedProduceInfos.contains(tmpKey)) { d->discardedProduceInfos.remove(tmpKey); locker.unlock(); continue; } locker.unlock(); const QString &thumbnail = createThumbnail(task.fileInfo, task.size); if (task.callback) { task.callback(thumbnail); } } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dthumbnailprovider.h000066400000000000000000000045771352002233700213320ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFILETHUMBNAILPROVIDER_H #define DFILETHUMBNAILPROVIDER_H #include #include #include "dtkwidget_global.h" #include "dobject.h" #include QT_BEGIN_NAMESPACE class QMimeType; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DThumbnailProviderPrivate; class DThumbnailProvider : public QThread, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: enum Size { Small = 64, Normal = 128, Large = 256, }; static DThumbnailProvider *instance(); bool hasThumbnail(const QFileInfo &info) const; bool hasThumbnail(const QMimeType &mimeType) const; QString thumbnailFilePath(const QFileInfo &info, Size size) const; QString createThumbnail(const QFileInfo &info, Size size); typedef std::function CallBack; void appendToProduceQueue(const QFileInfo &info, Size size, CallBack callback = 0); void removeInProduceQueue(const QFileInfo &info, Size size); QString errorString() const; qint64 defaultSizeLimit() const; void setDefaultSizeLimit(qint64 size); qint64 sizeLimit(const QMimeType &mimeType) const; void setSizeLimit(const QMimeType &mimeType, qint64 size); Q_SIGNALS: void thumbnailChanged(const QString &sourceFilePath, const QString &thumbnailPath) const; void createThumbnailFinished(const QString &sourceFilePath, const QString &thumbnailPath) const; void createThumbnailFailed(const QString &sourceFilePath) const; protected: explicit DThumbnailProvider(QObject *parent = 0); ~DThumbnailProvider(); void run() Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DThumbnailProvider) }; DWIDGET_END_NAMESPACE #endif // DFILETHUMBNAILPROVIDER_H dtkwidget-2.1.1/src/util/dtrashmanager.h000066400000000000000000000023461352002233700202400ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTRASHMANAGER_H #define DTRASHMANAGER_H #include #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DTrashManagerPrivate; class DTrashManager : public QObject, public DTK_CORE_NAMESPACE::DObject { public: static DTrashManager *instance(); bool trashIsEmpty() const; bool cleanTrash(); bool moveToTrash(const QString &filePath, bool followSymlink = false); protected: DTrashManager(); private: D_DECLARE_PRIVATE(DTrashManager) }; DWIDGET_END_NAMESPACE #endif // DTRASHMANAGER_H dtkwidget-2.1.1/src/util/dtrashmanager_linux.cpp000066400000000000000000000157641352002233700220220ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtrashmanager.h" #include #include #include #include #include #include #include #define TRASH_PATH \ DCORE_NAMESPACE::DStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/Trash" #define TRASH_INFO_PATH TRASH_PATH"/info" #define TRASH_FILES_PATH TRASH_PATH"/files" DWIDGET_BEGIN_NAMESPACE class DTrashManager_ : public DTrashManager {}; Q_GLOBAL_STATIC(DTrashManager_, globalTrashManager) static QString getNotExistsFileName(const QString &fileName, const QString &targetPath) { QByteArray name = fileName.toUtf8(); int index = name.lastIndexOf('.'); QByteArray suffix; if (index >= 0) { suffix = name.mid(index); } if (suffix.size() > 200) { suffix = suffix.left(200); } name.chop(suffix.size()); name = name.left(200 - suffix.size()); while (QFile::exists(targetPath + "/" + name + suffix)) { name = QCryptographicHash::hash(name, QCryptographicHash::Md5).toHex(); } return QString::fromUtf8(name + suffix); } static bool writeTrashInfo(const QString &fileBaseName, const QString &sourceFilePath, const QDateTime &datetime, QString *errorString = NULL) { QFile metadata(TRASH_INFO_PATH"/" + fileBaseName + ".trashinfo"); if (metadata.exists()) { if (errorString) { *errorString = QString("The %1 file is exists").arg(metadata.fileName()); } return false; } if (!metadata.open(QIODevice::WriteOnly)) { if (errorString) { *errorString = metadata.errorString(); } return false; } QByteArray data; data.append("[Trash Info]\n"); data.append("Path=").append(sourceFilePath.toUtf8().toPercentEncoding("/")).append("\n"); data.append("DeletionDate=").append(datetime.toString(Qt::ISODate)).append("\n"); qint64 size = metadata.write(data); metadata.close(); if (size <= 0) { if (errorString) { *errorString = metadata.errorString(); } return false; } return true; } static bool renameFile(const QFileInfo &fileInfo, const QString &target, QString *errorString = NULL) { if (fileInfo.isFile() || fileInfo.isSymLink()) { QFile file(fileInfo.filePath()); if (!file.rename(target)) { if (errorString) { *errorString = file.errorString(); } return false; } return true; } else { QDirIterator iterator(fileInfo.filePath(), QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System); while (iterator.hasNext()) { iterator.next(); const QString newFile = iterator.filePath().replace(0, fileInfo.filePath().length(), target); if (!QDir().mkpath(QFileInfo(newFile).path())) { if (errorString) { *errorString = QString("Make the %1 path is failed").arg(QFileInfo(newFile).path()); } return false; } if (!renameFile(iterator.fileInfo(), newFile, errorString)) { return false; } } if (!QDir().rmdir(fileInfo.filePath())) { if (errorString) { *errorString = QString("Cannot remove the %1 dir").arg(fileInfo.filePath()); } return false; } } return true; } class DTrashManagerPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DTrashManagerPrivate(DTrashManager *q_ptr) : DObjectPrivate(q_ptr) {} static bool removeFileOrDir(const QString &path); static bool removeFromIterator(QDirIterator &iter); D_DECLARE_PUBLIC(DTrashManager) }; DTrashManager *DTrashManager::instance() { return globalTrashManager; } bool DTrashManager::trashIsEmpty() const { QDirIterator iterator(TRASH_INFO_PATH, // QStringList() << "*.trashinfo", QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); return !iterator.hasNext(); } bool DTrashManager::cleanTrash() { QDirIterator iterator_info(TRASH_INFO_PATH, QDir::Files | QDir::NoDotAndDotDot | QDir::Hidden); QDirIterator iterator_files(TRASH_FILES_PATH, QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System, QDirIterator::Subdirectories); return DTrashManagerPrivate::removeFromIterator(iterator_info) && DTrashManagerPrivate::removeFromIterator(iterator_files); } bool DTrashManager::moveToTrash(const QString &filePath, bool followSymlink) { QFileInfo fileInfo(filePath); if (!fileInfo.exists() && (followSymlink || !fileInfo.isSymLink())) { return false; } QDir trashDir(TRASH_FILES_PATH); QStorageInfo storageInfo(fileInfo.filePath()); QStorageInfo trashStorageInfo(trashDir); if (storageInfo != trashStorageInfo) { return false; } if (!trashDir.mkpath(TRASH_INFO_PATH)) { return false; } if (!trashDir.mkpath(TRASH_FILES_PATH)) { return false; } if (followSymlink && fileInfo.isSymLink()) { fileInfo.setFile(fileInfo.symLinkTarget()); } const QString &fileName = getNotExistsFileName(fileInfo.fileName(), TRASH_FILES_PATH); if (!writeTrashInfo(fileName, fileInfo.filePath(), QDateTime::currentDateTime())) { return false; } const QString &newFilePath = TRASH_FILES_PATH"/" + fileName; return renameFile(fileInfo, newFilePath); } DTrashManager::DTrashManager() : QObject() , DObject(*new DTrashManagerPrivate(this)) { } bool DTrashManagerPrivate::removeFileOrDir(const QString &path) { QFileInfo fileInfo(path); if (fileInfo.isDir() && !fileInfo.isSymLink()) { QDir dir(path); return dir.removeRecursively(); } else { return QFile::remove(path); } } bool DTrashManagerPrivate::removeFromIterator(QDirIterator &iter) { bool ok = true; while (iter.hasNext()) { QString nextPath = iter.next(); // qDebug() << iter.fileName() << iterator_info.filePath(); if (!DTrashManagerPrivate::removeFileOrDir(nextPath)) { ok = false; } } return ok; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dtrashmanager_win.cpp000066400000000000000000000071761352002233700214560ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtrashmanager.h" #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DTrashManager_ : public DTrashManager {}; Q_GLOBAL_STATIC(DTrashManager_, globalTrashManager) static QString getNotExistsFileName(const QString &fileName, const QString &targetPath) { QByteArray name = fileName.toUtf8(); int index = name.lastIndexOf('.'); QByteArray suffix; if (index >= 0) { suffix = name.mid(index); } if (suffix.size() > 200) { suffix = suffix.left(200); } name.chop(suffix.size()); name = name.left(200 - suffix.size()); while (QFile::exists(targetPath + "/" + name + suffix)) { name = QCryptographicHash::hash(name, QCryptographicHash::Md5).toHex(); } return QString::fromUtf8(name + suffix); } static bool renameFile(const QFileInfo &fileInfo, const QString &target, QString *errorString = NULL) { if (fileInfo.isFile() || fileInfo.isSymLink()) { QFile file(fileInfo.filePath()); if (!file.rename(target)) { if (errorString) { *errorString = file.errorString(); } return false; } return true; } else { QDirIterator iterator(fileInfo.filePath(), QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System); while (iterator.hasNext()) { iterator.next(); const QString newFile = iterator.filePath().replace(0, fileInfo.filePath().length(), target); if (!QDir().mkpath(QFileInfo(newFile).path())) { if (errorString) { *errorString = QString("Make the %1 path is failed").arg(QFileInfo(newFile).path()); } return false; } if (!renameFile(iterator.fileInfo(), newFile, errorString)) { return false; } } if (!QDir().rmdir(fileInfo.filePath())) { if (errorString) { *errorString = QString("Cannot remove the %1 dir").arg(fileInfo.filePath()); } return false; } } return true; } class DTrashManagerPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DTrashManagerPrivate(DTrashManager *q_ptr) : DObjectPrivate(q_ptr) {} D_DECLARE_PUBLIC(DTrashManager) }; DTrashManager *DTrashManager::instance() { return globalTrashManager; } bool DTrashManager::trashIsEmpty() const { return false; } bool DTrashManager::cleanTrash() { return false; } bool DTrashManager::moveToTrash(const QString &filePath, bool followSymlink) { return false; } DTrashManager::DTrashManager() : QObject() , DObject(*new DTrashManagerPrivate(this)) { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dwidgetutil.cpp000066400000000000000000000046601352002233700203010ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dwidgetutil.h" #include #include #include #include #include QT_BEGIN_NAMESPACE //extern Q_WIDGETS_EXPORT void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed = 0); extern Q_WIDGETS_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE QImage dropShadow(const QPixmap &px, qreal radius, const QColor &color) { if (px.isNull()) { return QImage(); } QSize size = px.size(); QImage tmp(size + QSize(radius * 2, radius * 2), QImage::Format_ARGB32_Premultiplied); tmp.fill(0); QPainter tmpPainter(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); tmpPainter.drawPixmap(QPoint(radius, radius), px); tmpPainter.end(); // blur the alpha channel QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied); blurred.fill(0); QPainter blurPainter(&blurred); qt_blurImage(&blurPainter, tmp, radius, false, true); blurPainter.end(); if (color == QColor(Qt::black)) { return blurred; } tmp = blurred; // blacken the image... tmpPainter.begin(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmp.rect(), color); tmpPainter.end(); return tmp; } void moveToCenter(QWidget *w) { Q_ASSERT(w != nullptr); QDesktopWidget *dw = QApplication::desktop(); QRect parentRect = dw->availableGeometry(dw->primaryScreen()); if (w->parentWidget()) { parentRect = w->parentWidget()->geometry(); } w->move(parentRect.center() - w->rect().center()); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dwidgetutil.h000066400000000000000000000026271352002233700177470ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DUTILITY_H #define DUTILITY_H #include "dtkwidget_global.h" #include #include #include DWIDGET_BEGIN_NAMESPACE QImage dropShadow(const QPixmap &px, qreal radius, const QColor &color = Qt::black); QStringList wordWrapText(const QString &text, int width, QTextOption::WrapMode wrapMode, int *lineCount = 0); QStringList elideText(const QString &text, const QSize &size, const QFontMetrics &fontMetrics, QTextOption::WrapMode wordWrap, Qt::TextElideMode mode, int flags = 0); void moveToCenter(QWidget *w); DWIDGET_END_NAMESPACE #endif // DUTILITY_H dtkwidget-2.1.1/src/util/dwindowmanagerhelper.cpp000066400000000000000000000636631352002233700221720ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dwindowmanagerhelper.h" #include "dforeignwindow.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name #define MWM_FUNC_ALL (1L << 0) #define MWM_DECOR_ALL (1L << 0) // functions DEFINE_CONST_CHAR(hasBlurWindow); DEFINE_CONST_CHAR(hasComposite); DEFINE_CONST_CHAR(hasNoTitlebar); DEFINE_CONST_CHAR(windowManagerName); DEFINE_CONST_CHAR(connectWindowManagerChangedSignal); DEFINE_CONST_CHAR(connectHasBlurWindowChanged); DEFINE_CONST_CHAR(connectHasCompositeChanged); DEFINE_CONST_CHAR(connectHasNoTitlebarChanged); DEFINE_CONST_CHAR(getCurrentWorkspaceWindows); DEFINE_CONST_CHAR(getWindows); DEFINE_CONST_CHAR(connectWindowListChanged); DEFINE_CONST_CHAR(setMWMFunctions); DEFINE_CONST_CHAR(getMWMFunctions); DEFINE_CONST_CHAR(setMWMDecorations); DEFINE_CONST_CHAR(getMWMDecorations); DEFINE_CONST_CHAR(connectWindowMotifWMHintsChanged); DEFINE_CONST_CHAR(popupSystemWindowMenu); static bool connectWindowManagerChangedSignal(QObject *object, std::function slot) { QFunctionPointer connectWindowManagerChangedSignal = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectWindowManagerChangedSignal = qApp->platformFunction(_connectWindowManagerChangedSignal); #endif return connectWindowManagerChangedSignal && reinterpret_cast)>(connectWindowManagerChangedSignal)(object, slot); } static bool connectHasBlurWindowChanged(QObject *object, std::function slot) { QFunctionPointer connectHasBlurWindowChanged = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectHasBlurWindowChanged = qApp->platformFunction(_connectHasBlurWindowChanged); #endif return connectHasBlurWindowChanged && reinterpret_cast)>(connectHasBlurWindowChanged)(object, slot); } static bool connectHasCompositeChanged(QObject *object, std::function slot) { QFunctionPointer connectHasCompositeChanged = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectHasCompositeChanged = qApp->platformFunction(_connectHasCompositeChanged); #endif return connectHasCompositeChanged && reinterpret_cast)>(connectHasCompositeChanged)(object, slot); } static bool connectHasNoTitlebarChanged(QObject *object, std::function slot) { QFunctionPointer connectHasNoTitlebarChanged = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectHasNoTitlebarChanged = qApp->platformFunction(_connectHasNoTitlebarChanged); #endif return connectHasNoTitlebarChanged && reinterpret_cast)>(connectHasNoTitlebarChanged)(object, slot); } static bool connectWindowListChanged(QObject *object, std::function slot) { QFunctionPointer connectWindowListChanged = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectWindowListChanged = qApp->platformFunction(_connectWindowListChanged); #endif return connectWindowListChanged && reinterpret_cast)>(connectWindowListChanged)(object, slot); } static bool connectWindowMotifWMHintsChanged(QObject *object, std::function slot) { QFunctionPointer connectWindowMotifWMHintsChanged = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) connectWindowMotifWMHintsChanged = qApp->platformFunction(_connectWindowMotifWMHintsChanged); #endif return connectWindowMotifWMHintsChanged && reinterpret_cast)>(connectWindowMotifWMHintsChanged)(object, slot); } class DWindowManagerHelperPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DWindowManagerHelperPrivate(DWindowManagerHelper *qq) : DObjectPrivate(qq) {} mutable QList windowList; }; class DWindowManagerHelper_ : public DWindowManagerHelper {}; Q_GLOBAL_STATIC(DWindowManagerHelper_, wmhGlobal) /*! * \~chinese \class DWindowManagerHelper * \~chinese \brief 提供与窗口管理器交互的接口,同 \a DPlatformWindowHandle 依赖 dxcb 插件。 * \~chinese dxcb 插件抽象出所有需要和X11平台交互的接口以供上层调用,DTK 使用插件中提供的接口再 * \~chinese 次封装提供给应用程序使用,从设计角度讲,DTK库中不应该直接使用任何跟平台相关的接口 * \~chinese (如:X11、Wayland、Windows),在这样的结构支撑下,在一个新的平台上,只需要提供和 * \~chinese dxcb 同样的接口,DTK应用即可无缝迁移。 * \~chinese \sa \href{https://github.com/linuxdeepin/qt5dxcb-plugin/,dxcb插件} * \~chinese \sa DApplication::loadDXcbPlugin * \~chinese \sa DApplication::isDXcbPlatform * \~chinese \sa DPlatformWindowHandle */ /*! * \~chinese \property DWindowManagerHelper::hasBlurWindow * \~chinese \brief 窗口管理器是否支持窗口背景模糊特效 * \~chinese \note 在 dxcb 插件中目前只支持 deepin-wm 和 kwin 这两种窗管的模糊特效 * \~chinese \note 只读 */ /*! * \~chinese \property DWindowManagerHelper::hasComposite * \~chinese \brief 窗口管理器是否支持混成效果。如果不支持混成,则表示所有窗口的背景都不能透明, * \~chinese 随之而来也不会有窗口阴影等效果,不规则窗口的边缘也会存在锯齿。 * \~chinese \note 只读 */ /*! * \~chinese \property DWindowManagerHelper::hasNoTitlebar * \~chinese \brief 窗口管理器是否支持隐藏窗口标题栏。如果支持,则 DPlatformWindowHandle::enableDXcbForWindow * \~chinese 会优先使用此方法支持自定义窗口标题栏。 * \~chinese \note 只读 * \~chinese \sa DPlatformWindowHandle::enableNoTitlebarForWindow */ /*! * \~chinese \enum DWindowManagerHelper::MotifFunction * \~chinese MotifFunction::MotifFunction 窗口管理器对窗口所能控制的行为 * * \~chinese \var DWindowManagerHelper::FUNC_RESIZE DWindowManagerHelper::FUNC_RESIZE * \~chinese 控制窗口大小。如果存在此标志,则窗口管理器可以改变窗口大小(如使用鼠标拖拽窗口边缘), * \~chinese 否则无法通过外部行为调整窗口大小。 * \~chinese \code * DMainWindow w; * * w.resize(400, 200); * w.show(); * DWindowManagerHelper::setMotifFunctions(w.windowHandle(), DWindowManagerHelper::FUNC_RESIZE, false); * \endcode * \~chinese \image html disable_resize_function.gif * \~chinese \note 普通窗口默认存在此标志,对于 Qt::Popup 和 Qt::BypassWindowManagerHint * \~chinese 类型的窗口,不受此标志位影响 * \~chinese \note 设置此标志后也会影响窗口标题栏对应功能入口的状态 * \~chinese \note 对于使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow * \~chinese \sa DPlatformWindowHandle::isEnabledDXcb * * \~chinese \var DWindowManagerHelper::FUNC_MOVE DWindowManagerHelper::FUNC_MOVE * \~chinese 控制窗口位置。如果存在此标志,则窗口管理器可以移动窗口(如使用鼠标拖动标题栏),否则 * \~chinese 无法通过外部行为移动窗口位置。 * \~chinese \code * DWindowManagerHelper::setMotifFunctions(w.windowHandle(), DWindowManagerHelper::FUNC_MOVE, false); * \endcode * \~chinese \image html disable_move_function.gif * \~chinese \var DWindowManagerHelper::FUNC_MINIMIZE DWindowManagerHelper::FUNC_MINIMIZE * \~chinese 最小化窗口。如果存在此标志,则窗口可以被最小化(如点击标题栏的最小化按钮),否则无法 * \~chinese 通过外部行为最小化窗口。 * \~chinese \code * DWindowManagerHelper::setMotifFunctions(w.windowHandle(), DWindowManagerHelper::FUNC_MINIMIZE, false); * \endcode * \~chinese \image html disable_minimize_function.gif * \~chinese \note 设置此标志后也会影响窗口标题栏对应功能入口的状态 * * \~chinese \var DWindowManagerHelper::FUNC_MAXIMIZE DWindowManagerHelper::FUNC_MAXIMIZE * \~chinese 最大化窗口。如果存在此标志,则窗口可以被最大化(如点击标题栏的最大化按钮),否则无法 * \~chinese 通过外部行为最大化窗口。 * \~chinese \code * DWindowManagerHelper::setMotifFunctions(w.windowHandle(), DWindowManagerHelper::FUNC_MAXIMIZE, false); * \endcode * \~chinese \image html disable_maximize_function.gif * \~chinese \note 设置此标志后也会影响窗口标题栏对应功能入口的状态 * * \~chinese \var DWindowManagerHelper::FUNC_CLOSE DWindowManagerHelper::FUNC_CLOSE * \~chinese 关闭窗口。如果存在此标志,则窗口可以被关闭(如点击标题栏的关闭按钮或使用Alt+F4快捷键), * \~chinese 否则无法通过外部行为关闭窗口。 * \~chinese \code * DWindowManagerHelper::setMotifFunctions(w.windowHandle(), DWindowManagerHelper::FUNC_CLOSE, false); * \endcode * \~chinese \image html disable_close_function.gif * \~chinese \note 设置此标志后也会影响窗口标题栏对应功能入口的状态 * * \~chinese \var DWindowManagerHelper::FUNC_ALL DWindowManagerHelper::FUNC_ALL * \~chinese 所有功能性行为 */ /*! * \~chinese \enum DWindowManagerHelper::MotifDecoration * \~chinese MotifFunction::MotifDecoration 窗口管理器对窗口添加的修饰。只影响窗口上对应功能 * \~chinese 的入口,不影响实际的功能,比如:禁用掉 FUNC_MAXIMIZE 后,还可以使用快捷键最大化窗口 * * \~chinese \var DWindowManagerHelper::DECOR_BORDER DWindowManagerHelper::DECOR_BORDER * \~chinese 窗口描边。如果存在此标志,则窗口管理器会为窗口绘制描边,否则窗口没有描边。 * \~chinese 否则无法通过外部行为调整窗口大小。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * * \~chinese \var DWindowManagerHelper::DECOR_RESIZEH DWindowManagerHelper::DECOR_RESIZEH * \~chinese 改变窗口大小。如果存在此标志,则窗口管理器会在窗口的修饰上显示一个更改窗口大小的控件, * \~chinese 否则无此控件。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * * \~chinese \var DWindowManagerHelper::DECOR_TITLE DWindowManagerHelper::DECOR_TITLE * \~chinese 窗口标题。如果存在此标志,则窗口管理器会在窗口的修饰上显示窗口标题,否则不显示。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * * \~chinese \var DWindowManagerHelper::DECOR_MENU DWindowManagerHelper::DECOR_MENU * \~chinese 窗口菜单。如果存在此标志,则窗口管理器会在窗口的修饰上显示一个窗口菜单控件,否则不显示。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * * \~chinese \var DWindowManagerHelper::DECOR_MINIMIZE DWindowManagerHelper::DECOR_MINIMIZE * \~chinese 窗口最小化。如果存在此标志,则窗口管理器会在窗口的修饰上显示一个最小化窗口控件,否则不显示。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * \~chinese \sa Qt::WindowMinimizeButtonHint * * \~chinese \var DWindowManagerHelper::DECOR_MAXIMIZE DWindowManagerHelper::DECOR_MAXIMIZE * \~chinese 窗口最大化。如果存在此标志,则窗口管理器会在窗口的修饰上显示一个最大化窗口控件,否则不显示。 * \~chinese \note 只支持使用系统标题栏的窗口,此功能和具体窗口管理器实现相关,deepin-wm 中设置 * \~chinese 此标志无效。 * \~chinese \sa Qt::WindowMaximizeButtonHint * * \~chinese \var DWindowManagerHelper::DECOR_ALL DWindowManagerHelper::DECOR_ALL * \~chinese 所有窗口修饰。 */ /*! * \~chinese \enum DWindowManagerHelper::WMName * \~chinese DWindowManagerHelper::WMName 窗口管理器类型 * \~chinese \var DWindowManagerHelper::DeepinWM DWindowManagerHelper::DeepinWM * \~chinese 深度系统桌面环境窗口管理器 * * \~chinese \var DWindowManagerHelper::DeepinWM DWindowManagerHelper::KWinWM * \~chinese KDE系统桌面环境窗口管理器 * * \~chinese \var DWindowManagerHelper::DeepinWM DWindowManagerHelper::OtherWM * \~chinese 其它窗口管理器 */ /*! * \~chinese \fn DWindowManagerHelper::windowManagerChanged * \~chinese \brief 信号会在当前环境窗口管理器变化时被发送 * \~chinese \fn DWindowManagerHelper::hasBlurWindowChanged * \~chinese \brief 信号会在 hasBlurWindow 属性的值改变时被发送 * \~chinese \fn DWindowManagerHelper::hasCompositeChanged * \~chinese \brief 信号会在 hasComposite 属性的值改变时被发送 * \~chinese \fn DWindowManagerHelper::hasNoTitlebarChanged * \~chinese \brief 信号会在 hasNoTitlebar 属性的值改变时被发送 * \~chinese \fn DWindowManagerHelper::windowListChanged * \~chinese \brief 信号会在当前环境本地窗口列表变化时被发送。包含打开新窗口、关闭窗口、改变窗口的 * \~chinese 层叠顺序 * \~chinese \fn DWindowManagerHelper::windowMotifWMHintsChanged * \~chinese \brief 信号会在窗口功能或修饰标志改变时被发送 * \~chinese \param 窗口id * \~chinese \note 只对当前应用程序中的窗口有效 */ DWindowManagerHelper::~DWindowManagerHelper() { D_DC(DWindowManagerHelper); for (QWindow *w : d->windowList) { w->deleteLater(); } } /*! * \~chinese \brief DWindowManagerHelper::instance * \~chinese DWindowManagerHelper 的单例对象,使用 Q_GLOBAL_STATIC 定义,在第一次调用时实例化。 * \~chinese \return */ DWindowManagerHelper *DWindowManagerHelper::instance() { return wmhGlobal; } /*! * \~chinese \brief DWindowManagerHelper::setMotifFunctions * \~chinese 设置窗口的功能性标志,会覆盖之前的设置 * \~chinese \param window * \~chinese \param hints */ void DWindowManagerHelper::setMotifFunctions(const QWindow *window, MotifFunctions hints) { QFunctionPointer setMWMFunctions = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) setMWMFunctions = qApp->platformFunction(_setMWMFunctions); #endif if (setMWMFunctions && window->handle()) { if (hints == FUNC_ALL) hints = (MotifFunction)MWM_FUNC_ALL; reinterpret_cast(setMWMFunctions)(window->handle()->winId(), (quint32)hints); } } /*! * \~chinese \brief DWindowManagerHelper::setMotifFunctions * \~chinese 设置窗口某些标志位的开启状态,不影响其它标志位 * \~chinese \param window * \~chinese \param hints 要设置的标志位 * \~chinese \param on 如果值为 true 则开启标志,否则关闭 * \~chinese \return 返回设置后的窗口标志 */ DWindowManagerHelper::MotifFunctions DWindowManagerHelper::setMotifFunctions(const QWindow *window, MotifFunctions hints, bool on) { MotifFunctions old_hints = getMotifFunctions(window); if (on) hints |= old_hints; else hints = old_hints & ~hints; setMotifFunctions(window, hints); return hints; } /*! * \~chinese \brief DWindowManagerHelper::getMotifFunctions * \~chinese \param window * \~chinese \return 返回窗口当前的功能标志 */ DWindowManagerHelper::MotifFunctions DWindowManagerHelper::getMotifFunctions(const QWindow *window) { QFunctionPointer getMWMFunctions = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) getMWMFunctions = qApp->platformFunction(_getMWMFunctions); #endif if (getMWMFunctions && window->handle()) { quint32 hints = reinterpret_cast(getMWMFunctions)(window->handle()->winId()); if (!(hints & MWM_FUNC_ALL)) return (MotifFunctions)hints; } return FUNC_ALL; } /*! * \~chinese \brief DWindowManagerHelper::setMotifDecorations * \~chinese 设置窗口的修饰性标志,会覆盖之前的设置 * \~chinese \param window * \~chinese \param hints */ void DWindowManagerHelper::setMotifDecorations(const QWindow *window, MotifDecorations hints) { QFunctionPointer setMWMDecorations = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) setMWMDecorations = qApp->platformFunction(_setMWMDecorations); #endif if (setMWMDecorations && window->handle()) { if (hints == DECOR_ALL) hints = (MotifDecoration)MWM_DECOR_ALL; reinterpret_cast(setMWMDecorations)(window->handle()->winId(), (quint32)hints); } } /*! * \~chinese \brief DWindowManagerHelper::setMotifFunctions * \~chinese 设置窗口某些标志位的开启状态,不影响其它标志位 * \~chinese \param window * \~chinese \param hints 要设置的标志位 * \~chinese \param on 如果值为 true 则开启标志,否则关闭 * \~chinese \return 返回设置后的窗口标志 */ DWindowManagerHelper::MotifDecorations DWindowManagerHelper::setMotifDecorations(const QWindow *window, MotifDecorations hints, bool on) { MotifDecorations old_hints = getMotifDecorations(window); if (on) hints |= old_hints; else hints = old_hints & ~hints; setMotifDecorations(window, hints); return hints; } /*! * \~chinese \brief DWindowManagerHelper::getMotifFunctions * \~chinese \param window * \~chinese \return 返回窗口当前的修饰标志 */ DWindowManagerHelper::MotifDecorations DWindowManagerHelper::getMotifDecorations(const QWindow *window) { QFunctionPointer getMWMDecorations = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) getMWMDecorations = qApp->platformFunction(_getMWMDecorations); #endif if (getMWMDecorations && window->handle()) { quint32 hints = reinterpret_cast(getMWMDecorations)(window->handle()->winId()); if (!(hints & MWM_DECOR_ALL)) return (MotifDecorations)hints; } return DECOR_ALL; } /*! * \~chinese \brief DWindowManagerHelper::popupSystemWindowMenu * \~chinese 显示窗口管理器对窗口的菜单,和有边框的窗口在标题栏上点击鼠标右键弹出的菜单内容一致。 * \~chinese 在 DMainWindow 的标题栏上点击鼠标右键会调用此函数打开系统菜单: * \~chinese \image html window_system_menu.gif * \~chinese \param window */ void DWindowManagerHelper::popupSystemWindowMenu(const QWindow *window) { QFunctionPointer popupSystemWindowMenu = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) popupSystemWindowMenu = qApp->platformFunction(_popupSystemWindowMenu); #endif if (popupSystemWindowMenu && window->handle()) { reinterpret_cast(popupSystemWindowMenu)(window->handle()->winId()); } } /*! * \~chinese \brief DWindowManagerHelper::hasBlurWindow * \~chinese \return 如果当前窗口管理器支持窗口背景模糊特效则返回 true,否则返回 false */ bool DWindowManagerHelper::hasBlurWindow() const { QFunctionPointer wmHasBlurWindow = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) wmHasBlurWindow = qApp->platformFunction(_hasBlurWindow); #endif return wmHasBlurWindow && reinterpret_cast(wmHasBlurWindow)(); } /*! * \~chinese \brief DWindowManagerHelper::hasComposite * \~chinese \return 如果当前窗口管理器支持混成则返回 true,否则返回 false */ bool DWindowManagerHelper::hasComposite() const { QFunctionPointer hasComposite = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) hasComposite = qApp->platformFunction(_hasComposite); #endif return hasComposite && reinterpret_cast(hasComposite)(); } /*! * \~chinese \brief DWindowManagerHelper::hasNoTitlebar * \~chinese \return 如果窗口管理器当前支持设置隐藏窗口标题栏则返回 true,否则返回 false */ bool DWindowManagerHelper::hasNoTitlebar() const { QFunctionPointer hasNoTitlebar = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) hasNoTitlebar = qApp->platformFunction(_hasNoTitlebar); #endif return hasNoTitlebar && reinterpret_cast(hasNoTitlebar)(); } /*! * \~chinese \brief DWindowManagerHelper::windowManagerNameString * \~chinese \return 返回窗口管理器名称。在X11平台上,此值为窗口管理器对应窗口的 _NET_WM_NAME * \~chinese 的值 * \~chinese \sa \href{https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html,_NET_SUPPORTING_WM_CHECK} * \~chinese \sa \href{https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html,_NET_WM_NAME} */ QString DWindowManagerHelper::windowManagerNameString() const { QFunctionPointer windowManagerName = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) windowManagerName = qApp->platformFunction(_windowManagerName); #endif return windowManagerName ? reinterpret_cast(windowManagerName)() : QString(); } /*! * \~chinese \brief DWindowManagerHelper::windowManagerName * \~chinese \return 返回当前窗口管理器类型 * \~chinese \sa DWindowManagerHelper::windowManagerNameString */ DWindowManagerHelper::WMName DWindowManagerHelper::windowManagerName() const { const QString &wmName = windowManagerNameString(); if (wmName == QStringLiteral("Mutter(DeepinGala)")) { return DeepinWM; } if (wmName == QStringLiteral("KWin")) { return KWinWM; } return OtherWM; } /*! * \~chinese \brief DWindowManagerHelper::allWindowIdList * \~chinese \return 返回当前环境所有本地窗口的窗口id列表 * \~chinese \note 顺序和窗口层叠顺序相关,显示越靠下层的窗口在列表中顺序越靠前 * \~chinese \sa DWindowManagerHelper::currentWorkspaceWindowIdList */ QVector DWindowManagerHelper::allWindowIdList() const { QFunctionPointer wmClientList = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) wmClientList = qApp->platformFunction(_getWindows); #endif if (!wmClientList) return QVector(); return reinterpret_cast(*)()>(wmClientList)(); } /*! * \~chinese \brief DWindowManagerHelper::currentWorkspaceWindowIdList * \~chinese \return 返回当前工作区所有本地窗口的窗口id列表 * \~chinese \note 顺序和窗口层叠顺序相关,显示越靠下层的窗口在列表中顺序越靠前 * \~chinese \sa DWindowManagerHelper::allWindowIdList */ QVector DWindowManagerHelper::currentWorkspaceWindowIdList() const { QFunctionPointer wmClientList = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) wmClientList = qApp->platformFunction(_getCurrentWorkspaceWindows); #endif if (!wmClientList) return QVector(); return reinterpret_cast(*)()>(wmClientList)(); } /*! * \~chinese \brief DWindowManagerHelper::currentWorkspaceWindowIdList * \~chinese \return 返回当前工作区所有本地窗口对象列表。和 \a currentWorkspaceWindowIdList * \~chinese 类似,只不过自动通过窗口id创建了 DForeignWindow 对象 * \~chinese \note 顺序和窗口层叠顺序相关,显示越靠下层的窗口在列表中顺序越靠前 * \~chinese \note 列表中对象的生命周期由 DForeignWindow 负责 * \~chinese \warning 此列表中不包含由当前应用创建的窗口 * \~chinese \sa DWindowManagerHelper::currentWorkspaceWindowIdList * \~chinese \sa DForeignWindow::fromWinId */ QList DWindowManagerHelper::currentWorkspaceWindows() const { D_DC(DWindowManagerHelper); for (QWindow *w : d->windowList) { w->deleteLater(); } d->windowList.clear(); QList currentApplicationWindowList; const QWindowList &list = qApp->allWindows(); currentApplicationWindowList.reserve(list.size()); for (auto window : list) { if (window->property("_q_foreignWinId").isValid()) continue; currentApplicationWindowList.append(window->winId()); } QVector wmClientList = currentWorkspaceWindowIdList(); for (WId wid : wmClientList) { if (currentApplicationWindowList.contains(wid)) continue; if (DForeignWindow *w = DForeignWindow::fromWinId(wid)) { d->windowList << w; } } return d->windowList; } /*! * \~chinese \brief DWindowManagerHelper::DWindowManagerHelper * \~chinese 不允许直接实例化此对象 * \~chinese \param parent * \~chinese \sa DWindowManagerHelper::instance */ DWindowManagerHelper::DWindowManagerHelper(QObject *parent) : QObject(parent) , DObject(*new DWindowManagerHelperPrivate(this)) { connectWindowManagerChangedSignal(this, [this] { Q_EMIT windowManagerChanged(); }); connectHasBlurWindowChanged(this, [this] { Q_EMIT hasBlurWindowChanged(); }); connectHasCompositeChanged(this, [this] { Q_EMIT hasCompositeChanged(); }); connectHasNoTitlebarChanged(this, [this] { Q_EMIT hasNoTitlebarChanged(); }); connectWindowListChanged(this, [this] { Q_EMIT windowListChanged(); }); connectWindowMotifWMHintsChanged(this, [this] (quint32 winId) { Q_EMIT windowMotifWMHintsChanged(winId); }); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/util/dwindowmanagerhelper.h000066400000000000000000000071761352002233700216340ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWMANAGERHELPER_H #define DWINDOWMANAGERHELPER_H #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DForeignWindow; class DWindowManagerHelperPrivate; class DWindowManagerHelper : public QObject, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool hasBlurWindow READ hasBlurWindow NOTIFY hasBlurWindowChanged) Q_PROPERTY(bool hasComposite READ hasComposite NOTIFY hasCompositeChanged) Q_PROPERTY(bool hasNoTitlebar READ hasNoTitlebar NOTIFY hasNoTitlebarChanged) public: enum MotifFunction { FUNC_RESIZE = (1L << 1), FUNC_MOVE = (1L << 2), FUNC_MINIMIZE = (1L << 3), FUNC_MAXIMIZE = (1L << 4), FUNC_CLOSE = (1L << 5), FUNC_ALL = FUNC_RESIZE | FUNC_MOVE | FUNC_MINIMIZE | FUNC_MAXIMIZE | FUNC_CLOSE }; Q_DECLARE_FLAGS(MotifFunctions, MotifFunction) enum MotifDecoration { DECOR_BORDER = (1L << 1), DECOR_RESIZEH = (1L << 2), DECOR_TITLE = (1L << 3), DECOR_MENU = (1L << 4), DECOR_MINIMIZE = (1L << 5), DECOR_MAXIMIZE = (1L << 6), DECOR_ALL = DECOR_BORDER | DECOR_RESIZEH | DECOR_TITLE | DECOR_MENU | DECOR_MINIMIZE | DECOR_MAXIMIZE }; Q_DECLARE_FLAGS(MotifDecorations, MotifDecoration) enum WMName { OtherWM, DeepinWM, KWinWM }; Q_ENUM(WMName) ~DWindowManagerHelper(); static DWindowManagerHelper *instance(); static void setMotifFunctions(const QWindow *window, MotifFunctions hints); static MotifFunctions setMotifFunctions(const QWindow *window, MotifFunctions hints, bool on); static MotifFunctions getMotifFunctions(const QWindow *window); static void setMotifDecorations(const QWindow *window, MotifDecorations hints); static MotifDecorations setMotifDecorations(const QWindow *window, MotifDecorations hints, bool on); static MotifDecorations getMotifDecorations(const QWindow *window); static void popupSystemWindowMenu(const QWindow *window); bool hasBlurWindow() const; bool hasComposite() const; bool hasNoTitlebar() const; QString windowManagerNameString() const; WMName windowManagerName() const; QVector allWindowIdList() const; QVector currentWorkspaceWindowIdList() const; QList currentWorkspaceWindows() const; Q_SIGNALS: void windowManagerChanged(); void hasBlurWindowChanged(); void hasCompositeChanged(); void hasNoTitlebarChanged(); void windowListChanged(); void windowMotifWMHintsChanged(quint32 winId); protected: explicit DWindowManagerHelper(QObject *parent = 0); private: D_DECLARE_PRIVATE(DWindowManagerHelper) }; DWIDGET_END_NAMESPACE Q_DECLARE_OPERATORS_FOR_FLAGS(DTK_WIDGET_NAMESPACE::DWindowManagerHelper::MotifFunctions) Q_DECLARE_OPERATORS_FOR_FLAGS(DTK_WIDGET_NAMESPACE::DWindowManagerHelper::MotifDecorations) #endif // DWINDOWMANAGERHELPER_H dtkwidget-2.1.1/src/util/private/000077500000000000000000000000001352002233700167145ustar00rootroot00000000000000dtkwidget-2.1.1/src/util/private/dregionmonitor_p.h000066400000000000000000000027061352002233700224500ustar00rootroot00000000000000#ifndef DREGIONMONITOR_P_H #define DREGIONMONITOR_P_H #include "dtkwidget_global.h" #include "dobject_p.h" #include "../dregionmonitor.h" #include #include #include DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE using XEventMonitor = ::com::deepin::api::XEventMonitor; class DRegionMonitorPrivate : public DObjectPrivate { D_DECLARE_PUBLIC(DRegionMonitor) public: DRegionMonitorPrivate(DRegionMonitor *q); ~DRegionMonitorPrivate(); enum Flag{ Motion = 1 << 0, Button = 1 << 1, Key = 1 << 2 }; bool registered() const { return !registerKey.isEmpty(); } void init(); void registerMonitorRegion(); void unregisterMonitorRegion(); void _q_ButtonPress(const int flag, const int x, const int y, const QString &key); void _q_ButtonRelease(const int flag, const int x, const int y, const QString &key); void _q_CursorMove(const int x, const int y, const QString &key); void _q_KeyPress(const QString &keyname, const int x, const int y, const QString &key); void _q_KeyRelease(const QString &keyname, const int x, const int y, const QString &key); const QPoint deviceScaledCoordinate(const QPoint &p, const double ratio) const; XEventMonitor *eventInter; QRegion watchedRegion; QString registerKey; DRegionMonitor::CoordinateType type = DRegionMonitor::ScaleRatio; }; DWIDGET_END_NAMESPACE #endif // DREGIONMONITOR_P_H dtkwidget-2.1.1/src/util/util.pri000066400000000000000000000026131352002233700167350ustar00rootroot00000000000000INCLUDEPATH += $$PWD HEADERS += \ $$PWD/dfileiconprovider.h \ $$PWD/dthumbnailprovider.h \ $$PWD/dwindowmanagerhelper.h \ $$PWD/dwidgetutil.h \ $$PWD/ddesktopservices.h \ $$PWD/dtrashmanager.h \ $$PWD/dsvgrenderer.h \ $$PWD/dhidpihelper.h SOURCES += \ $$PWD/dfileiconprovider.cpp \ $$PWD/dthumbnailprovider.cpp \ $$PWD/dwindowmanagerhelper.cpp \ $$PWD/dwidgetutil.cpp \ $$PWD/dhidpihelper.cpp linux* { CONFIG += link_pkgconfig PKGCONFIG += gsettings-qt librsvg-2.0 dframeworkdbus HEADERS += \ $$PWD/dregionmonitor.h \ $$PWD/private/dregionmonitor_p.h SOURCES += \ $$PWD/ddesktopservices_linux.cpp \ $$PWD/dtrashmanager_linux.cpp \ $$PWD/dsvgrenderer.cpp\ $$PWD/dregionmonitor.cpp } win32* | macx* { SOURCES += \ $$PWD/ddesktopservices_win.cpp \ $$PWD/dtrashmanager_win.cpp } packagesExist(gtk+-2.0) { DEFINES += USE_GTK_PLUS_2_0 INCLUDE_PATH = $$system(pkg-config --cflags-only-I gtk+-2.0) INCLUDEPATH += $$replace(INCLUDE_PATH, -I, ) } includes.files += $$PWD/*.h \ $$PWD/DWidgetUtil \ $$PWD/DDesktopServices \ $$PWD/DTrashManager \ $$PWD/DThumbnailProvider \ $$PWD/DFileIconProvider \ $$PWD/DWindowManagerHelper \ $$PWD/DHiDPIHelper \ $$PWD/DSvgRenderer DISTFILES += \ $$PWD/desktop.pri \ $$PWD/DHiDPIHelper dtkwidget-2.1.1/src/widgets/000077500000000000000000000000001352002233700157335ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/DAboutDialog000066400000000000000000000000321352002233700201470ustar00rootroot00000000000000#include "daboutdialog.h" dtkwidget-2.1.1/src/widgets/DAction000066400000000000000000000000231352002233700171720ustar00rootroot00000000000000#include dtkwidget-2.1.1/src/widgets/DAnchors000066400000000000000000000000261352002233700173550ustar00rootroot00000000000000#include "danchors.h" dtkwidget-2.1.1/src/widgets/DAnchorsBase000066400000000000000000000000261352002233700201500ustar00rootroot00000000000000#include "danchors.h" dtkwidget-2.1.1/src/widgets/DApplication000066400000000000000000000000321352002233700202200ustar00rootroot00000000000000#include "dapplication.h" dtkwidget-2.1.1/src/widgets/DArrowButton000066400000000000000000000000321352002233700202430ustar00rootroot00000000000000#include "darrowbutton.h" dtkwidget-2.1.1/src/widgets/DArrowLineExpand000066400000000000000000000000361352002233700210230ustar00rootroot00000000000000#include "darrowlineexpand.h" dtkwidget-2.1.1/src/widgets/DBackgroundGroup000066400000000000000000000000361352002233700210550ustar00rootroot00000000000000#include "dbackgroundgroup.h" dtkwidget-2.1.1/src/widgets/DBlurEffectWidget000066400000000000000000000000371352002233700211470ustar00rootroot00000000000000#include "dblureffectwidget.h" dtkwidget-2.1.1/src/widgets/DBorderlessWindow000066400000000000000000000000371352002233700212560ustar00rootroot00000000000000#include "dborderlesswindow.h" dtkwidget-2.1.1/src/widgets/DClipEffectWidget000066400000000000000000000000371352002233700211320ustar00rootroot00000000000000#include "dclipeffectwidget.h" dtkwidget-2.1.1/src/widgets/DCrumbEdit000066400000000000000000000000301352002233700176310ustar00rootroot00000000000000#include "dcrumbedit.h" dtkwidget-2.1.1/src/widgets/DExpandGroup000066400000000000000000000000321352002233700202110ustar00rootroot00000000000000#include "dexpandgroup.h" dtkwidget-2.1.1/src/widgets/DFileDialog000066400000000000000000000000311352002233700177530ustar00rootroot00000000000000#include "dfiledialog.h" dtkwidget-2.1.1/src/widgets/DFontSizeManager000066400000000000000000000000321352002233700210110ustar00rootroot00000000000000#include "dstyleoption.h" dtkwidget-2.1.1/src/widgets/DForeignWindow000066400000000000000000000000341352002233700205400ustar00rootroot00000000000000#include "dforeignwindow.h" dtkwidget-2.1.1/src/widgets/DGraphicsClipEffect000066400000000000000000000000411352002233700214420ustar00rootroot00000000000000#include "dgraphicsclipeffect.h" dtkwidget-2.1.1/src/widgets/DGraphicsDropShadowEffect000066400000000000000000000000411352002233700226250ustar00rootroot00000000000000#include "dgraphicsgloweffect.h" dtkwidget-2.1.1/src/widgets/DLineEdit000066400000000000000000000000271352002233700174560ustar00rootroot00000000000000#include "dlineedit.h" dtkwidget-2.1.1/src/widgets/DMainWindow000066400000000000000000000000311352002233700200300ustar00rootroot00000000000000#include "dmainwindow.h" dtkwidget-2.1.1/src/widgets/DMenu000066400000000000000000000000211352002233700166570ustar00rootroot00000000000000#include dtkwidget-2.1.1/src/widgets/DPageIndicator000066400000000000000000000000341352002233700204700ustar00rootroot00000000000000#include "dpageindicator.h" dtkwidget-2.1.1/src/widgets/DPalette000066400000000000000000000000321352002233700173530ustar00rootroot00000000000000#include "dstyleoption.h" dtkwidget-2.1.1/src/widgets/DPasswdEditAnimated000066400000000000000000000000411352002233700214670ustar00rootroot00000000000000#include "dpasswdeditanimated.h" dtkwidget-2.1.1/src/widgets/DPlatformWindowHandle000066400000000000000000000000431352002233700220470ustar00rootroot00000000000000#include "dplatformwindowhandle.h" dtkwidget-2.1.1/src/widgets/DSearchEdit000066400000000000000000000000311352002233700177670ustar00rootroot00000000000000#include "dsearchedit.h" dtkwidget-2.1.1/src/widgets/DSegmentedControl000066400000000000000000000000371352002233700212360ustar00rootroot00000000000000#include "dsegmentedcontrol.h" dtkwidget-2.1.1/src/widgets/DSegmentedHighlight000066400000000000000000000000371352002233700215250ustar00rootroot00000000000000#include "dsegmentedcontrol.h" dtkwidget-2.1.1/src/widgets/DSettingsDialog000066400000000000000000000000351352002233700207000ustar00rootroot00000000000000#include "dsettingsdialog.h" dtkwidget-2.1.1/src/widgets/DSettingsWidgetFactory000066400000000000000000000000441352002233700222540ustar00rootroot00000000000000#include "dsettingswidgetfactory.h" dtkwidget-2.1.1/src/widgets/DSimpleListItem000066400000000000000000000000351352002233700206640ustar00rootroot00000000000000#include "dsimplelistitem.h" dtkwidget-2.1.1/src/widgets/DSimpleListView000066400000000000000000000000351352002233700207000ustar00rootroot00000000000000#include "dsimplelistview.h" dtkwidget-2.1.1/src/widgets/DSpinner000066400000000000000000000000261352002233700173760ustar00rootroot00000000000000#include "dspinner.h" dtkwidget-2.1.1/src/widgets/DStyleOption000066400000000000000000000000321352002233700202460ustar00rootroot00000000000000#include "dstyleoption.h" dtkwidget-2.1.1/src/widgets/DStyleOptionLineEdit000066400000000000000000000000321352002233700216640ustar00rootroot00000000000000#include "dstyleoption.h" dtkwidget-2.1.1/src/widgets/DSuggestButton000066400000000000000000000000341352002233700205740ustar00rootroot00000000000000#include "dsuggestbutton.h" dtkwidget-2.1.1/src/widgets/DTabBar000066400000000000000000000000251352002233700171120ustar00rootroot00000000000000#include "dtabbar.h" dtkwidget-2.1.1/src/widgets/DThemeManager000066400000000000000000000000331352002233700203130ustar00rootroot00000000000000#include "dthememanager.h" dtkwidget-2.1.1/src/widgets/DTitlebar000066400000000000000000000000271352002233700175270ustar00rootroot00000000000000#include "dtitlebar.h" dtkwidget-2.1.1/src/widgets/DToast000066400000000000000000000000241352002233700170500ustar00rootroot00000000000000#include dtkwidget-2.1.1/src/widgets/DVideoWidget000066400000000000000000000000321352002233700201670ustar00rootroot00000000000000#include "dvideowidget.h" dtkwidget-2.1.1/src/widgets/DWaterProgress000066400000000000000000000000341352002233700205660ustar00rootroot00000000000000#include "dwaterprogress.h" dtkwidget-2.1.1/src/widgets/DWindowGroupLeader000066400000000000000000000000401352002233700213550ustar00rootroot00000000000000#include "dwindowgroupleader.h" dtkwidget-2.1.1/src/widgets/daboutdialog.cpp000066400000000000000000000354301352002233700211020ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "daboutdialog.h" #include "private/daboutdialog_p.h" #include "dthememanager.h" #include #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_UNIX #include #include #endif DWIDGET_BEGIN_NAMESPACE #ifdef Q_OS_UNIX class EnvReplaceGuard { public: EnvReplaceGuard(const int uid); ~EnvReplaceGuard(); char *m_backupLogName; char *m_backupHome; }; EnvReplaceGuard::EnvReplaceGuard(const int uid) { m_backupLogName = getenv("LOGNAME"); m_backupHome = getenv("HOME"); struct passwd *pwd = getpwuid(uid); setenv("LOGNAME", pwd->pw_name, 1); setenv("HOME", pwd->pw_dir, 1); } EnvReplaceGuard::~EnvReplaceGuard() { setenv("LOGNAME", m_backupLogName, 1); setenv("HOME", m_backupHome, 1); } #endif const QString DAboutDialogPrivate::websiteLinkTemplate = "%2"; DAboutDialogPrivate::DAboutDialogPrivate(DAboutDialog *qq) : DDialogPrivate(qq) { } void DAboutDialogPrivate::init() { D_Q(DAboutDialog); initWebsiteInfo(); logoLabel = new QLabel(); logoLabel->setContentsMargins(0, 0, 0, 0); productNameLabel = new QLabel(); productNameLabel->setObjectName("ProductNameLabel"); versionLabel = new QLabel(); versionLabel->setObjectName("VersionLabel"); companyLogoLabel = new QLabel(); companyLogoLabel->setPixmap(loadPixmap(":/images/deepin-logo.svg")); websiteLabel = new QLabel(); websiteLabel->setObjectName("WebsiteLabel"); websiteLabel->setContextMenuPolicy(Qt::NoContextMenu); websiteLabel->setFixedHeight(24); websiteLabel->setOpenExternalLinks(false); updateWebsiteLabel(); acknowledgementLabel = new QLabel(); acknowledgementLabel->setObjectName("AcknowledgementLabel"); acknowledgementLabel->setContextMenuPolicy(Qt::NoContextMenu); acknowledgementLabel->setFixedHeight(24); acknowledgementLabel->setOpenExternalLinks(false); updateAcknowledgementLabel(); descriptionLabel = new QLabel(); descriptionLabel->setObjectName("DescriptionLabel"); descriptionLabel->setAlignment(Qt::AlignHCenter); descriptionLabel->setWordWrap(true); descriptionLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); licenseLabel = new QLabel(); licenseLabel->setObjectName("LicenseLabel"); licenseLabel->setAlignment(Qt::AlignHCenter); licenseLabel->setWordWrap(true); licenseLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); licenseLabel->hide(); q->connect(websiteLabel, SIGNAL(linkActivated(QString)), q, SLOT(_q_onLinkActivated(QString))); q->connect(acknowledgementLabel, SIGNAL(linkActivated(QString)), q, SLOT(_q_onLinkActivated(QString))); q->connect(descriptionLabel, SIGNAL(linkActivated(QString)), q, SLOT(_q_onLinkActivated(QString))); q->connect(licenseLabel, SIGNAL(linkActivated(QString)), q, SLOT(_q_onLinkActivated(QString))); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setContentsMargins(11, 20, 11, 10); mainLayout->setSpacing(0); mainLayout->addWidget(logoLabel); mainLayout->setAlignment(logoLabel, Qt::AlignCenter); mainLayout->addSpacing(3); mainLayout->addWidget(productNameLabel); mainLayout->setAlignment(productNameLabel, Qt::AlignCenter); mainLayout->addSpacing(6); mainLayout->addWidget(versionLabel); mainLayout->setAlignment(versionLabel, Qt::AlignCenter); mainLayout->addSpacing(8); mainLayout->addWidget(companyLogoLabel); mainLayout->setAlignment(companyLogoLabel, Qt::AlignCenter); // mainLayout->addSpacing(6); mainLayout->addWidget(websiteLabel); mainLayout->setAlignment(websiteLabel, Qt::AlignCenter); mainLayout->addSpacing(5); mainLayout->addWidget(acknowledgementLabel); mainLayout->setAlignment(acknowledgementLabel, Qt::AlignCenter); mainLayout->addSpacing(12); mainLayout->addWidget(descriptionLabel, Qt::AlignHCenter); mainLayout->addSpacing(7); mainLayout->addWidget(licenseLabel, Qt::AlignHCenter); QWidget *mainContent = new QWidget; mainContent->setLayout(mainLayout); q->addContent(mainContent); q->setFixedWidth(400); // make active q->setFocus(); } void DAboutDialogPrivate::initWebsiteInfo() { #ifdef Q_OS_LINUX static const QString cfgPath = "/etc/deepin-version"; bool isProfessional = false; if (QFile::exists(cfgPath)) { QSettings deepinVersion(cfgPath, QSettings::IniFormat); isProfessional = deepinVersion.value("Release/Type").toString() == "Professional"; } websiteName = isProfessional ? "www.deepin.com" : "www.deepin.org"; websiteLink = QString("https://www.deepin.org/original/%1/").arg(qApp->applicationName()); #else websiteName = "www.deepin.org"; websiteLink = "https://www.deepin.org"; #endif } void DAboutDialogPrivate::updateWebsiteLabel() { QString websiteText = QString(websiteLinkTemplate).arg(websiteLink).arg(websiteName); websiteLabel->setText(websiteText); } void DAboutDialogPrivate::updateAcknowledgementLabel() { QString acknowledgementText = QString(websiteLinkTemplate).arg(acknowledgementLink).arg(QApplication::translate("DAboutDialog", "Acknowledgements")); acknowledgementLabel->setText(acknowledgementText); } void DAboutDialogPrivate::_q_onLinkActivated(const QString &link) { #ifdef Q_OS_UNIX // workaround for pkexec apps bool ok = false; const int pkexecUid = qEnvironmentVariableIntValue("PKEXEC_UID", &ok); if (ok) { EnvReplaceGuard _env_guard(pkexecUid); Q_UNUSED(_env_guard); QDesktopServices::openUrl(QUrl(link)); } else #endif { QDesktopServices::openUrl(QUrl(link)); } } QPixmap DAboutDialogPrivate::loadPixmap(const QString &file) { D_Q(DAboutDialog); qreal ratio = 1.0; const qreal devicePixelRatio = q->devicePixelRatioF(); QPixmap pixmap; if (!qFuzzyCompare(ratio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(file, devicePixelRatio, &ratio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(file); } return pixmap; } /*! * \~chinese \class DAboutDialog * \~chinese \brief DAboutDialog 类提供了应用程序的关于对话框,规范所有 deepin 应用关于窗口设计规范,符合 Deepin 风格。 * * \~chinese 使用 DMainWindow 创建的窗口都可以在菜单点关于弹出关于窗口,一般不需要手动创建。 * * \~chinese 为了提供简便操作,可通过 DApplication 来设置关于对话框展示内容。 */ DAboutDialog::DAboutDialog(QWidget *parent) : DDialog(*new DAboutDialogPrivate(this), parent) { DThemeManager::registerWidget(this); D_D(DAboutDialog); d->init(); d->productNameLabel->setStyleSheet(styleSheet()); d->versionLabel->setStyleSheet(styleSheet()); d->websiteLabel->setStyleSheet(styleSheet()); d->acknowledgementLabel->setStyleSheet(styleSheet()); d->descriptionLabel->setStyleSheet(styleSheet()); d->licenseLabel->setStyleSheet(styleSheet()); } /*! * \~english \property DAboutDialog::windowTitle * * \~english \brief the title of the dialog. */ /*! * \~chinese \property DAboutDialog::windowTitle * * \~chinese \brief 返回关于对话框窗口的标题 */ QString DAboutDialog::windowTitle() const { return title(); } /*! * \~english \property DAboutDialog::productName * * \~english \brief the product name to be shown on the dialog. */ /*! * \~chinese \property DAboutDialog::productName * * \~chinese \brief 返回对话框显示的应用名称 */ QString DAboutDialog::productName() const { D_DC(DAboutDialog); return d->productNameLabel->text(); } /*! * \~english \property DAboutDialog::version * * \~english \brief the version number to be shown on the dialog. */ /*! * \~chinese \property DAboutDialog::version * * \~chinese \brief 返回关于对话框显示的版本 */ QString DAboutDialog::version() const { D_DC(DAboutDialog); return d->versionLabel->text(); } /*! * \~english \property DAboutDialog::description * \~english \brief the description to be show on the dialog. */ /*! * \~chinese \property DAboutDialog::description * \~chinese \brief 返回关于对话框显示的描述 */ QString DAboutDialog::description() const { D_DC(DAboutDialog); return d->descriptionLabel->text(); } /*! * \~english \property DAboutDialog::companyLogo * \~english \brief the vendor logo to be shown on the dialog. */ /*! * \~chinese \property DAboutDialog::companyLogo * \~chinese \brief 返回对话框中的公司/组织 logo 图片 */ const QPixmap *DAboutDialog::companyLogo() const { D_DC(DAboutDialog); return d->companyLogoLabel->pixmap(); } /*! * \~english \property DAboutDialog::websiteName * \~english \brief the vendor website name to be shown on the dialog. * * \~english Usually be in form like www.deepin.org. */ /*! * \~chinese \property DAboutDialog::websiteName * \~chinese \brief 返回对话框中显示的公司/组织网站名称 * * \~chinese 通常采用 www.deepin.org 等形式。 */ QString DAboutDialog::websiteName() const { D_DC(DAboutDialog); return d->websiteName; } /*! * \~english \property DAboutDialog::websiteLink * \~english \brief the corresponding web address of websiteName() * * \~english The website link will be open in the browser if the user clicks on * \~english the website text shown on the dialog. */ /*! * \~chinese \property DAboutDialog::websiteLink * \~chinese \brief 返回 websiteName() 相应的网址 * * \~chinese 如果用户点击对话框中显示的网址,则会打开相应的链接。 */ QString DAboutDialog::websiteLink() const { D_DC(DAboutDialog); return d->websiteLink; } /*! * \~english \property DAboutDialog::acknowledgementLink * \~english \brief the web address to be open open when user clicks on the "Acknowlegement" * \~english text show on the dialog. */ /*! * \~chinese \property DAboutDialog::acknowledgementLink * \~chinese \brief 返回鸣谢链接地址 */ QString DAboutDialog::acknowledgementLink() const { D_DC(DAboutDialog); return d->acknowledgementLink; } /*! * \~english \property DAboutDialog::license * \~english \brief the license to be shown on the dialog. */ /*! * \~chinese \property DAboutDialog::license * \~chinese \brief 对话框显示的许可证 */ QString DAboutDialog::license() const { D_DC(DAboutDialog); return d->licenseLabel->text(); } /*! * \~chinese \property DAboutDialog::setWindowTitle * \~chinese \brief 设置对话框窗口标题 */ void DAboutDialog::setWindowTitle(const QString &windowTitle) { setTitle(windowTitle); } /*! * \~chinese \property DAboutDialog::setProductIcon * \~chinese \brief 设置展示的图标 * * \~chinese 在关于对话框展示的图标 */ void DAboutDialog::setProductIcon(const QIcon &icon) { D_D(DAboutDialog); d->logoLabel->setPixmap(icon.pixmap(QSizeF(96, 96).toSize())); } /*! * \~chinese \property DAboutDialog::setProductName * \~chinese \brief 设置应用名称 */ void DAboutDialog::setProductName(const QString &productName) { D_D(DAboutDialog); d->productNameLabel->setText(productName); } /*! * \~chinese \property DAboutDialog::setVersion * \~chinese \brief 设置版本 */ void DAboutDialog::setVersion(const QString &version) { D_D(DAboutDialog); d->versionLabel->setText(version); } /*! * \~chinese \property DAboutDialog::setDescription * \~chinese \brief 设置描述信息 */ void DAboutDialog::setDescription(const QString &description) { D_D(DAboutDialog); d->descriptionLabel->setText(description); } /*! * \~chinese \property DAboutDialog::setCompanyLogo * \~chinese \brief 设置组织标志 */ void DAboutDialog::setCompanyLogo(const QPixmap &companyLogo) { D_D(DAboutDialog); d->companyLogoLabel->setPixmap(companyLogo); d->companyLogoLabel->setFixedSize(companyLogo.size()); } /*! * \~chinese \property DAboutDialog::setWebsiteName * \~chinese \brief 设置网站名称 */ void DAboutDialog::setWebsiteName(const QString &websiteName) { D_D(DAboutDialog); if (d->websiteName == websiteName) { return; } d->websiteName = websiteName; d->updateWebsiteLabel(); } /*! * \~chinese \property DAboutDialog::setWebsiteLink * \~chinese \brief 设置网站链接 */ void DAboutDialog::setWebsiteLink(const QString &websiteLink) { D_D(DAboutDialog); if (d->websiteLink == websiteLink) { return; } d->websiteLink = websiteLink; d->updateWebsiteLabel(); } /*! * \~chinese \property DAboutDialog::setAcknowledgementLink * \~chinese \brief 设置鸣谢链接 */ void DAboutDialog::setAcknowledgementLink(const QString &acknowledgementLink) { D_D(DAboutDialog); d->acknowledgementLink = acknowledgementLink; d->updateAcknowledgementLabel(); } /*! * \~chinese \property DAboutDialog::setAcknowledgementVisible * \~chinese \brief 设置鸣谢链接是否显示 */ void DAboutDialog::setAcknowledgementVisible(bool visible) { D_D(DAboutDialog); d->acknowledgementLabel->setVisible(visible); } /*! * \~chinese \property DAboutDialog::setLicense * \~chinese \brief 设置许可证 */ void DAboutDialog::setLicense(const QString &license) { D_D(DAboutDialog); d->licenseLabel->setText(license); d->licenseLabel->setVisible(!license.isEmpty()); } void DAboutDialog::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) { close(); event->accept(); } DDialog::keyPressEvent(event); } void DAboutDialog::showEvent(QShowEvent *event) { DDialog::showEvent(event); if (minimumWidth() == maximumWidth()) { resize(width(), heightForWidth(width())); } else { adjustSize(); } } DWIDGET_END_NAMESPACE #include "moc_daboutdialog.cpp" dtkwidget-2.1.1/src/widgets/daboutdialog.h000066400000000000000000000052571352002233700205530ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DABOUTDIALOG_H #define DABOUTDIALOG_H #include "ddialog.h" DWIDGET_BEGIN_NAMESPACE class DAboutDialogPrivate; class DAboutDialog : public DDialog { Q_OBJECT Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) Q_PROPERTY(QString productName READ productName WRITE setProductName) Q_PROPERTY(QString version READ version WRITE setVersion) Q_PROPERTY(QString description READ description WRITE setDescription) Q_PROPERTY(QString license READ license WRITE setLicense) Q_PROPERTY(QString websiteName READ websiteName WRITE setWebsiteName) Q_PROPERTY(QString websiteLink READ websiteLink WRITE setWebsiteLink) Q_PROPERTY(QString acknowledgementLink READ acknowledgementLink WRITE setAcknowledgementLink) public: DAboutDialog(QWidget *parent = 0); QString windowTitle() const; QString productName() const; QString version() const; QString description() const; const QPixmap *companyLogo() const; QString websiteName() const; QString websiteLink() const; QString acknowledgementLink() const; QString license() const; public Q_SLOTS: void setWindowTitle(const QString &windowTitle); void setProductIcon(const QIcon &icon); void setProductName(const QString &productName); void setVersion(const QString &version); void setDescription(const QString &description); void setCompanyLogo(const QPixmap &companyLogo); void setWebsiteName(const QString &websiteName); void setWebsiteLink(const QString &websiteLink); void setAcknowledgementLink(const QString &acknowledgementLink); void setAcknowledgementVisible(bool visible); void setLicense(const QString &license); protected: void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; private: Q_PRIVATE_SLOT(d_func(), void _q_onLinkActivated(const QString &link)) Q_DISABLE_COPY(DAboutDialog) D_DECLARE_PRIVATE(DAboutDialog) }; DWIDGET_END_NAMESPACE #endif // DABOUTDIALOG_H dtkwidget-2.1.1/src/widgets/dabstractdialog.cpp000066400000000000000000000403051352002233700215700ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include "danchors.h" #include "dialog_constants.h" #include "dabstractdialog.h" #include "private/dabstractdialogprivate_p.h" #include "dthememanager.h" #include "dplatformwindowhandle.h" #include "dapplication.h" #include "dblureffectwidget.h" DWIDGET_BEGIN_NAMESPACE DAbstractDialogPrivate::DAbstractDialogPrivate(DAbstractDialog *qq): DObjectPrivate(qq) { } void DAbstractDialogPrivate::init() { D_Q(DAbstractDialog); if (qApp->isDXcbPlatform()) { handle = new DPlatformWindowHandle(q, q); handle->setTranslucentBackground(true); handle->setEnableSystemMove(false); handle->setEnableSystemResize(false); // bgBlurWidget = new DBlurEffectWidget(q); // bgBlurWidget->lower(); // bgBlurWidget->setBlendMode(DBlurEffectWidget::BehindWindowBlend); // bgBlurWidget->setVisible(DPlatformWindowHandle::hasBlurWindow()); // DPlatformWindowHandle::connectWindowManagerChangedSignal(q, [this] { // bgBlurWidget->setVisible(DPlatformWindowHandle::hasBlurWindow()); // }); } else { q->setWindowFlags(q->windowFlags() | Qt::FramelessWindowHint); q->setBorderColor(QColor(0, 0, 0)); } windowTitle = new QLabel(q); windowTitle->setAlignment(Qt::AlignCenter); DAnchorsBase::setAnchor(windowTitle, Qt::AnchorHorizontalCenter, q, Qt::AnchorHorizontalCenter); q->connect(q,&QWidget::windowTitleChanged, windowTitle,[=](const QString &title){ windowTitle->setText(title); }); q->setAttribute(Qt::WA_TranslucentBackground); q->resize(DIALOG::DEFAULT_WIDTH, DIALOG::DEFAULT_HEIGHT); q->setMaximumWidth(480); q->setAttribute(Qt::WA_Resized, false); } QRect DAbstractDialogPrivate::getParentGeometry() const { D_QC(DAbstractDialog); if (q->parentWidget()) { return q->parentWidget()->window()->geometry(); } else { QPoint pos = QCursor::pos(); for (QScreen *screen : qApp->screens()) { if (screen->geometry().contains(pos)) { return screen->geometry(); } } } return qApp->primaryScreen()->geometry(); } /*! \~chinese \class DAbstractDialog \~chinese \brief 可以使用 DAbstractDialog 类创建符合 DDE 风格的对话框窗口。 \~chinese \ingroup dialog-classes \~chinese \ingroup abstractwidgets \~chinese 对话框是一个用于供用户进行短暂周期的任务交互的顶层窗体。 DDialogs 对话框可以是模态的或非模态的。 对话框可以提供一个 \ref return "返回值", 并且对话框可以拥有 \ref default "默认按钮"。 \~chinese 请注意 DAbstractDialog (以及其他继承自 QDialog 的对话框)对构造时传入的 parent 父组件的行为和其他 Qt 组件或 DTK 组件不同。一个对话框总是一个顶层控件(top-level widget),但如果它有一个父组件 则对话框的默认位置将会位于其父组件的正中央,并共用其父控件的任务栏入口。 \~chinese \section modal 模态对话框 \~chinese 一个 \b{模态} (modal)对话框可以阻止对模态对话框之外的原可见窗体的操作,如请求用户输入 文件名的对话框或是对应用程序本身进行设置的对话框就常是模态对话框。模态对话框可以是 \ref Qt::ApplicationModal "应用模态" 的(默认),也可以是 \ref Qt::WindowModal "窗体模态" 的。 \~chinese 当应用模态对话框出现后,用户必须完成与对话框的交互并关闭对话框才能继续与应用的其他窗体进行交互。 窗体模态对话框则仅仅阻止用户与这个对话框的父窗体进行交互而不影响这个父窗体之外的其他窗体。 \~chinese 显示模态对话框的常见做法是调用 exec() 。当对话框被用户关闭时, exec() 会提供一个有用的 \ref return "返回值" 。通常,需要关闭一个对话框并使其返回期望的值时,我们可以把默认按钮, 如 \uicontrol OK 确认按钮连接到 accept() 槽,并把 \uicontrol Cancel 取消按钮连接到 reject() 槽。当然,也可以调用 done() 槽并传递 \c Accepted 或是 \c Rejected 达到相同目的。 \~chinese 另一个可行方案是调用 setModal(true) 或 setWindowModality(), 然后调用 show() 。而区别于 exec() 的是, show() 将立即交回控制权给调用者。对于类似显示进度条的应用场景,如需限定用户只能与对话框交互( 比如,允许取消一个执行时间过长的操作),此时 setModal(true) 就很有用处。 \~chinese \section modeless 非模态对话框 \~chinese 一个 \b{非模态}(modeless)对话框表示其对话框本身的操作和该应用的其他窗口互相独立互不影响。 例如文字处理程序中的“查找文字”功能通常是非模态的,以便用户同时操作对话框和应用程序窗口。 \~chinese 非模态对话框通过调用 show() 使其显示, 其会将控制权立即返回给调用者。 \~chinese 如果在隐藏对话框后调用 \ref QWidget::show() "show()" ,对话框将显示在其原本所在的位置。若要记住用户 调整对话框位置后的位置,需要在 \ref QWidget::closeEvent() "closeEvent()" 中保存窗体位置并在显示对话框 前移动对话框到所保存的位置。 \~chinese \section default 默认按钮 \~chinese 对话框的 \e 默认 按钮是指当用户直接按下回车(Enter / Return)键时所会被按下的按钮。用以表明用户接受了对话框 的某些操作并想要关闭对话框。对于 QDialog 可以使用 QPushButton::setDefault(), QPushButton::isDefault() 和 QPushButton::autoDefault() 来设置或调整一个对话框的默认按钮。 \~chinese \section escapekey 退出(Escape)键 \~chinese 如果用户在对话框出现后按下了 Esc 键, 将会触发 QDialog::reject() 并导致窗体被关闭。 \ref QCloseEvent "关闭事件" 不可以是 \ref QEvent::ignore() "忽略事件" . \~chinese \section return 返回值 (模态对话框) \~chinese 模态对话框通常伴随返回值一同使用。例如用来标识判断用户是按下了 \uicontrol OK 确认按钮 还是 \uicontrol Cancel 取消按钮。 对话框可以通过调用 accept() 或 reject() 槽来关闭, exec() 则会根据实际情况返回 \c Accepted 或 \c Rejected 。 如果对话框没有被销毁,也可以通过 result() 得到对话框的返回值。 \~chinese 若要修改对话框的关闭行为,你可以重新实现 accept(), reject() 或 done() 。而 \ref QWidget::closeEvent() "closeEvent()" 仅当你需要记住对话框位置或是重载标准的关闭行为时才应使用。 \~chinese \sa DDialog, QDialog */ /*! \~english \class DAbstractDialog \~english \brief Use DAbstractDialog class to create dialog window matched DDE style. \~english \ingroup dialog-classes \~english \ingroup abstractwidgets \~english \sa DAbstractDialog, QDialog */ /** * \~english \brief DAbstractDialog::DAbstractDialog constructs a DAbstractDialog instance. * \~english \param parent is the parent widget to be used. * * \~chinese \brief 构造一个 DAbstractDialog 实例 */ DAbstractDialog::DAbstractDialog(QWidget *parent) : QDialog(parent), DObject(*new DAbstractDialogPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } /** * \~english \brief DAbstractDialog::backgroundColor * \~english \return the background color of the dialog. * * \~chinese \brief 获取对话框的背景色 */ QColor DAbstractDialog::backgroundColor() const { D_DC(DAbstractDialog); return d->backgroundColor; } /** * \~english \brief DAbstractDialog::borderColor * \~english \return the border color of the dialog. * * \~chinese \brief 获取对话框的边框颜色 */ QColor DAbstractDialog::borderColor() const { D_DC(DAbstractDialog); return d->borderColor; } /*! * \enum DAbstractDialog::DisplayPosition * * \~english \brief The DisplayPosition enum contains the position options that can be specified by all dialogs. * \~chinese \brief DAbstractDialog::DisplayPosition 表示对话框的显示位置。 * * \var DAbstractDialog::DisplayPosition DAbstractDialog::Center * \~english display this dialog in the center of the screen * \~chinese 在屏幕中央显示对话框。 * * \var DAbstractDialog::DisplayPosition DAbstractDialog::TopRight * \~english display this dialog in the top right of the screen * \~chinese 在屏幕右上角显示对话框。 */ /** * \~english \brief DAbstractDialog::displayPosition * \~english \return the display position of this dialog. * * \~chinese \brief 获取对话框显示位置 */ DAbstractDialog::DisplayPosition DAbstractDialog::displayPosition() const { D_DC(DAbstractDialog); return d->displayPosition; } void DAbstractDialog::move(const QPoint &pos) { QDialog::move(pos); D_D(DAbstractDialog); d->mouseMoved = true; } void DAbstractDialog::setGeometry(const QRect &rect) { QDialog::setGeometry(rect); D_D(DAbstractDialog); d->mouseMoved = true; } /** * \~english \brief DAbstractDialog::moveToCenter moves the dialog to the center of the screen or its parent widget. * * \~chinese \brief 将对话框移动至屏幕中央或其父控件的中央。 */ void DAbstractDialog::moveToCenter() { D_DC(DAbstractDialog); moveToCenterByRect(d->getParentGeometry()); } /** * \~english \brief DAbstractDialog::moveToTopRight moves the dialog to the top right of the screen or its parent widget. * * \~chinese \brief 将对话框移动至屏幕右上角或其父控件的右上角。 */ void DAbstractDialog::moveToTopRight() { D_DC(DAbstractDialog); moveToTopRightByRect(d->getParentGeometry()); } /** * \~english \brief DAbstractDialog::moveToTopRightByRect moves the dialog to the top right corner of the rect. * \~english \param rect is the target rect. * * \~chinese \brief 移动对话框到给定 \a rect 区域的右上角。 * \~chinese \param rect 是移动所需要参照的 QRect 位置。 */ void DAbstractDialog::moveToTopRightByRect(const QRect &rect) { int x = rect.x() + rect.width() - width(); QDialog::move(QPoint(x, 0)); } /** * \~english \brief DAbstractDialog::setBackgroundColor sets the background color of the dialog. * \~english \param backgroundColor is the target background color. * * \~chinese \brief 设置对话框的背景色 */ void DAbstractDialog::setBackgroundColor(QColor backgroundColor) { D_D(DAbstractDialog); d->backgroundColor = backgroundColor; if (d->bgBlurWidget) d->bgBlurWidget->setMaskColor(backgroundColor); update(); } /** * \~english \brief DAbstractDialog::setBorderColor sets the border color of the dialog. * \~english \param borderColor is the target border color. * * \~chinese \brief 设置对话框边框的颜色 */ void DAbstractDialog::setBorderColor(QColor borderColor) { D_D(DAbstractDialog); d->borderColor = borderColor; if (d->handle) { d->handle->setBorderColor(d->borderColor); } else { update(); } } /** * \~english \brief DAbstractDialog::setDisplayPosition sets the position of the dialog. * \~english \param displayPosition is the target position. * * \~chinese \brief 设置对话框的显示位置。 * \~chinese \param displayPosition 要显示到的位置 */ void DAbstractDialog::setDisplayPosition(DAbstractDialog::DisplayPosition displayPosition) { D_D(DAbstractDialog); d->displayPosition = displayPosition; switch (displayPosition) { case DisplayCenter: moveToCenter(); break; case DisplayTopRight: moveToTopRight(); break; default: break; } } /** * \~english \brief DAbstractDialog::moveToCenterByRect moves the dialog to the center of the rect. * \~english \param rect is the target rect. * * \~chinese \brief 移动对话框到给定 \a rect 区域的中央。 * \~chinese \param rect 是移动对话框要参照的 QRect 区域 */ void DAbstractDialog::moveToCenterByRect(const QRect &rect) { QRect qr = geometry(); qr.moveCenter(rect.center()); QDialog::move(qr.topLeft()); } void DAbstractDialog::mousePressEvent(QMouseEvent *event) { D_DC(DAbstractDialog); if (d->handle) { return QDialog::mousePressEvent(event); } if (event->button() == Qt::LeftButton) { D_D(DAbstractDialog); d->dragPosition = event->globalPos() - frameGeometry().topLeft(); d->mousePressed = true; } QDialog::mousePressEvent(event); } void DAbstractDialog::mouseReleaseEvent(QMouseEvent *event) { D_D(DAbstractDialog); if (d->handle) { return QDialog::mouseReleaseEvent(event); } d->mousePressed = false; QDialog::mouseReleaseEvent(event); } void DAbstractDialog::mouseMoveEvent(QMouseEvent *event) { D_D(DAbstractDialog); if (d->handle) { d->handle->setEnableSystemMove(true); return QDialog::mouseMoveEvent(event); } if (d->mousePressed) { move(event->globalPos() - d->dragPosition); d->mouseMoved = true; } QDialog::mouseMoveEvent(event); } /*!\reimp */ void DAbstractDialog::paintEvent(QPaintEvent *event) { D_DC(DAbstractDialog); QPainter painter(this); if (d->handle) { painter.fillRect(event->rect(), d->backgroundColor); } else { painter.setPen(QPen(d->borderColor, DIALOG::BORDER_SHADOW_WIDTH)); painter.setBrush(d->backgroundColor); painter.setRenderHint(QPainter::Antialiasing, true); QRectF r(DIALOG::BORDER_SHADOW_WIDTH / 2.0, DIALOG::BORDER_SHADOW_WIDTH / 2.0, width() - DIALOG::BORDER_SHADOW_WIDTH, height() - DIALOG::BORDER_SHADOW_WIDTH); painter.drawRoundedRect(r, DIALOG::BORDER_RADIUS, DIALOG::BORDER_RADIUS); } QDialog::paintEvent(event); } /*!\reimp */ void DAbstractDialog::resizeEvent(QResizeEvent *event) { if (event->size().width() >= maximumWidth()) { bool resized = testAttribute(Qt::WA_Resized); setFixedWidth(maximumWidth()); if (!resized) setAttribute(Qt::WA_Resized, false); } QDialog::resizeEvent(event); D_DC(DAbstractDialog); if (d->bgBlurWidget) d->bgBlurWidget->resize(event->size()); Q_EMIT sizeChanged(event->size()); } void DAbstractDialog::showEvent(QShowEvent *event) { D_DC(DAbstractDialog); // 不要在resizeEvent中改变窗口geometry,可能会导致以下问题。在双屏开启不同缩放比时: // 屏幕A缩放为1,屏幕B缩放为2。窗口初始在屏幕B上,此时大小为 100x100,则其缩放 // 后的真实大小为200x200,由于窗口管理器会对未设置过位置的窗口自动布局,接下来 // 窗口可能会因为位置改变而被移动到屏幕A上,则此对话框的大小将变化为 200x200, // 触发了resize事件,紧接着又会尝试将窗口位置更新到鼠标所在屏幕的中心,如果鼠标 // 所在屏幕为B,则在移动窗口位置时又会根据B的缩放比重新设置窗口大小,窗口将变为: // 400x400,将形成一个循环。。。 if (!d->mouseMoved) { setDisplayPosition(displayPosition()); } QDialog::showEvent(event); } DAbstractDialog::DAbstractDialog(DAbstractDialogPrivate &dd, QWidget *parent): QDialog(parent), DObject(dd) { dd.init(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dabstractdialog.h000066400000000000000000000060751352002233700212430ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DABSTRACTDIALOG_H #define DABSTRACTDIALOG_H #include #include #include #include "dtkwidget_global.h" class QMouseEvent; class QPushButton; class QResizeEvent; DWIDGET_BEGIN_NAMESPACE class DAbstractDialogPrivate; class LIBDTKWIDGETSHARED_EXPORT DAbstractDialog : public QDialog, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor) Q_PROPERTY(DisplayPosition displayPosition READ displayPosition WRITE setDisplayPosition) public: enum DisplayPosition { Center, TopRight }; enum DisplayPostion { DisplayCenter = Center, /*!< display this dialog in the center of the screen */ DisplayTopRight = TopRight /*!< display this dialog in the top right of the screen */ }; Q_ENUMS(DisplayPosition) Q_ENUMS(DisplayPostion) DAbstractDialog(QWidget *parent = 0); QColor backgroundColor() const; QColor borderColor() const; DisplayPosition displayPosition() const; void move(const QPoint &pos); inline void move(int x, int y) { move(QPoint(x, y));} void setGeometry(const QRect &rect); inline void setGeometry(int x, int y, int width, int height) { setGeometry(QRect(x, y, width, height));} public Q_SLOTS: void moveToCenter(); void moveToTopRight(); void moveToCenterByRect(const QRect &rect); void moveToTopRightByRect(const QRect &rect); void setBackgroundColor(QColor backgroundColor); void setBorderColor(QColor borderColor); void setDisplayPosition(DisplayPosition displayPosition); Q_SIGNALS: /** * @brief sizeChanged is emitted when the size of this dialog changed. * @param size is the target size. */ void sizeChanged(QSize size); protected: void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) override; protected: DAbstractDialog(DAbstractDialogPrivate &dd, QWidget *parent = 0); private: D_DECLARE_PRIVATE(DAbstractDialog) }; DWIDGET_END_NAMESPACE #endif // DABSTRACTDIALOG_H dtkwidget-2.1.1/src/widgets/danchors.cpp000066400000000000000000001324141352002233700202450ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: kirigaya * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "danchors.h" #include "denhancedwidget.h" DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DAnchorsBase * * \~chinese \brief DAnchorsBase 提供了一种指定 QWidget 与其它 QWidget 之间的关系来确定 * \~chinese 其位置的方法 * * \~chinese 除了比较传统的布局方式之外,DtkWidget 还提供了一种使用锚定概念布局控件的方法( * \~chinese 类似于 QQuickItem 中的 anchors 属性),可以认为每个控件具有一组6个不可见的“锚 * \~chinese 线”:left,horizontalCenter,right,top,verticalCenter和bottom,如图所示: * \~chinese \image html edges_anchors.png * \~chinese 使用 DAnchors 可以让 QWidget 基于这些“锚线”来确定相互间的关系,如: * \~chinese \code * DAnchors rect1(new QLabel("rect1")); * DAnchors rect2(new QLabel("rect2")); * * rect2.setLeft(rect1.right()); * \endcode * \~chinese 这样 rect2 的左边界就会和 rect1 的右边界对齐: * \~chinese \image html edge1.png * \~chinese 另外还可以同时设置多个“锚线”: * \~chinese \code * DAnchors rect1(new QLabel("rect1")); * DAnchors rect2(new QLabel("rect2")); * * rect2.setTop(rect1.bottom()); * rect2.setLeft(rect1.right()); * \endcode * \~chinese \image html edge3.png * \~chinese 锚定布局同时在多个控件中使用,控件之间只需要满足以下条件: * \~chinese \arg \c 控件之间为兄弟关系,或被锚定控件为父控件 * \~chinese \arg \c 锚定关系不能循环绑定 * \~chinese \section margin_offset 锚定的间隔和偏移 * \~chinese 锚定系统允许设置“锚线”之间的间距,和“锚线”一一对应,每个控件都有一组4个 margin: * \~chinese leftMargin, rightMargin, topMargin 和 bottomMargin 以及两个 offset: * \chinese horizontalCenterOffset 和 verticalCenterOffset。 * \~chinese \image html margins_anchors.png * \~chinese 下面是左margin的例子: * \~chinese \code * DAnchors rect1(new QLabel("rect1")); * DAnchors rect2(new QLabel("rect2")); * * rect2.setLeftMargin(5); * rect2.setLeft(rect1.right()); * \endcode * \~chinese rect2 的左边界相距 rect1 的右边界5个像素: * \~chinese \image html edge2.png * \~chinese \note margin 仅仅是对设置的锚点生效,并不是让控件本身增加了边距,如果设置了 * \~chinese margin,但并没有设置相应的锚点,对控件本身而已是没有任何影响的。margin 的值可以 * \~chinese 为负数,通过值的正负来决定margin的方向(内 margin 还是外 margin) * * \~chinese 除了基于“锚线”来设置锚定外,另外还有 setCenterIn 和 setFill 这两个比较特殊的 * \~chinese 的实现。 * * \~chinese \section loop_anchor 判断循环锚定的方式 * \~chinese 假设 DAnchorsBase a1, a2; a1.setRight(a2.left()); 则判断 a1 和 a2 之间 * \~chinese 会不会存在循环绑定的逻辑为: * \~chinese 尝试更改 a1 右边界的值,更新后如果 a2 左边界的值产出了变化,则认为会导致循环绑 * \~chinese 定,否则认为不存在 */ /*! * \~chinese \property DAnchorsBase::target * \~chinese \brief 绑定了锚定功能的控件对象 * \~chinese \note 只读 */ /*! * \~chinese \property DAnchorsBase::enabled * \~chinese \brief 控制锚定功能是否开启,为 false 时仅仅表示不会根据控件各种属性的变化来 * \~chinese 来更新它的位置,但锚定关系并没有被解除 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::anchors * \~chinese \brief 一个指向自己的指针 * \~chinese \note 只读 */ /*! * \~chinese \property DAnchorsBase::top * \~chinese \brief target 控件上边界锚线的信息 * \~chinese \note 只能和 top verticalCenter bottom 绑定 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::bottom * \~chinese \note 只能和 top verticalCenter bottom 绑定 * \~chinese \brief target 控件下边界锚线的信息 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::left * \~chinese \note 只能和 left horizontalCenter right 绑定 * \~chinese \brief target 控件左边界锚线的信息 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::right * \~chinese \note 只能和 left horizontalCenter right 绑定 * \~chinese \brief target 控件右边界锚线的信息 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::horizontalCenter * \~chinese \note 只能和 left horizontalCenter right 绑定 * \~chinese \brief target 控件水平锚线的信息 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::verticalCenter * \~chinese \note 只能和 top verticalCenter bottom 绑定 * \~chinese \brief target 控件竖直锚线的信息 * \~chinese \note 对属性赋值不会更改它自身的值,而是对此锚线设置绑定关系 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::fill * \~chinese \brief target 控件的填充目标对象 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::centerIn * \~chinese \brief target 控件的居中目标对象 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::margins * \~chinese \brief 上下左右四条“锚线”的边距,此值的优先级低于每条“锚线”特定的 margin 值 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::topMargin * \~chinese \brief 上“锚线”的边距,优先级高于 margins * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::bottomMargin * \~chinese \brief 下“锚线”的边距,优先级高于 margins * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::leftMargin * \~chinese \brief 左“锚线”的边距,优先级高于 margins * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::rightMargin * \~chinese \brief 右“锚线”的边距,优先级高于 margins * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::horizontalCenterOffset * \~chinese \brief 水平“锚线”的偏移量 * \~chinese \note 可读可写 */ /*! * \~chinese \property DAnchorsBase::verticalCenterOffset * \~chinese \brief 竖直“锚线”的偏移量 * \~chinese \note 可读可写 */ /*! * \~chinese \enum DAnchorsBase::AnchorError * \~chinese DAnchorsBase::AnchorError 设置锚定信息的过程中可能出现的错误类型 * * \~chinese \var DAnchorsBase::NoError DAnchorsBase::NoError * \~chinese 设置锚定的过程中没有任何错误发生 * * \~chinese \var DAnchorsBase::Conflict DAnchorsBase::Conflict * \~chinese 表示设置的锚定关系跟已有关系存在冲突,如 fill 和 centerIn 不能同时设置 * * \~chinese \var DAnchorsBase::TargetInvalid DAnchorsBase::TargetInvalid * \~chinese 表示设置锚定关系时的目标控件无效 * * \~chinese \var DAnchorsBase::PointInvalid DAnchorsBase::PointInvalid * \~chinese 表示设置锚定关系时的“锚线”信息错误,如把 Qt::AnchorLeft 设置到了 Qt::AnchorTop 上 * * \~chinese \var DAnchorsBase::LoopBind DAnchorsBase::LoopBind * \~chinese 表示设置的锚定关系和已有关系形成了循环绑定 */ /*! * \~chinese \fn DAnchorsBase::enabledChanged * \~chinese \brief 信号会在 enabled 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::topChanged * \~chinese \brief 信号会在 top 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::bottomChanged * \~chinese \brief 信号会在 bottom 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::leftChanged * \~chinese \brief 信号会在 left 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::rightChanged * \~chinese \brief 信号会在 right 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::horizontalCenterChanged * \~chinese \brief 信号会在 horizontalCenter 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::verticalCenterChanged * \~chinese \brief 信号会在 verticalCenter 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::fillChanged * \~chinese \brief 信号会在 fill 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::centerInChanged * \~chinese \brief 信号会在 centerIn 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::marginsChanged * \~chinese \brief 信号会在 margins 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::topMarginChanged * \~chinese \brief 信号会在 topMargin 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::bottomMarginChanged * \~chinese \brief 信号会在 bottomMargin 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::leftMarginChanged * \~chinese \brief 信号会在 leftMargin 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::rightMarginChanged * \~chinese \brief 信号会在 rightMargin 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::horizontalCenterOffsetChanged * \~chinese \brief 信号会在 horizontalCenterOffset 属性的值改变时被发送 * \~chinese \fn DAnchorsBase::verticalCenterOffsetChanged * \~chinese \brief 信号会在 verticalCenterOffset 属性的值改变时被发送 */ /*! * \~chinese \class DAnchors * \~chinese \brief DAnchors 是一个模板类,在 DAnchorsBase 的基础上保存了一个控件指针, * \~chinese 将控件和锚定绑定在一起使用,相当于把“锚线”属性附加到了控件本身 * * \~chinese 重载了 “->”、“*”、“&” 等运算符,用于把 DAnchors 这层封装透明化,尽量减少使用 * \~chinese DAnchors 和直接使用 QWidget* 对象的区别。 */ /*! * \~chinese \class DAnchorInfo * \~chinese \brief DAnchorInfo 用于记录“锚线”的锚定信息:被锚定的 DAnchorsBase 对象、 * \~chinese 锚定的类型、目标“锚线”的信息 * * \~chinese 每条锚线都和一个 DAnchorInfo 对象相对应。一般来说,在使用锚定布局时,只需要关心 * \~chinese “锚线”的绑定关系,不用关心 DAnchorInfo 中存储的数据。 */ class DAnchorsRect: public QRect { public: DAnchorsRect() {} DAnchorsRect(const QRect &rect): QRect(rect.topLeft(), rect.bottomRight()) {} const QRect &operator=(const QRect &rect) { setTopLeft(rect.topLeft()); setBottomRight(rect.bottomRight()); return *this; } inline qreal horizontalCenter() { return left() + width() / 2.0; } inline void moveHorizontalCenter(int arg) { moveLeft(arg - width() / 2.0); } inline qreal verticalCenter() { return top() + height() / 2.0; } inline void moveVerticalCenter(int arg) { moveTop(arg - height() / 2.0); } void setTop(int arg, Qt::AnchorPoint point); void setVerticalCenter(qreal arg, Qt::AnchorPoint point); void setBottom(int arg, Qt::AnchorPoint point); void setLeft(int arg, Qt::AnchorPoint point); void setHorizontalCenter(qreal arg, Qt::AnchorPoint point); void setRight(int arg, Qt::AnchorPoint point); }; class DAnchorsBasePrivate : public QSharedData { DAnchorsBasePrivate(DAnchorsBase *qq): q_ptr(qq) {} ~DAnchorsBasePrivate() { delete top; delete bottom; delete left; delete right; delete horizontalCenter; delete verticalCenter; } static void setWidgetAnchorsBase(const QWidget *w, DAnchorsBase *b) { if (w) { DAnchorsBase *bb = widgetMap.value(w, NULL); if (bb) { bb->deleteLater(); } widgetMap[w] = b; } } static DAnchorsBase *getWidgetAnchorsBase(const QWidget *w) { return widgetMap.value(w, NULL); } static void removeWidgetAnchorsBase(const QWidget *w, const DAnchorsBase *b) { if (w && b && widgetMap.value(w, NULL) == b) { widgetMap.remove(w); } } const DAnchorInfo *getInfoByPoint(const Qt::AnchorPoint &p) const { switch (p) { case Qt::AnchorTop: return top; case Qt::AnchorBottom: return bottom; case Qt::AnchorLeft: return left; case Qt::AnchorRight: return right; case Qt::AnchorHorizontalCenter: return horizontalCenter; case Qt::AnchorVerticalCenter: return verticalCenter; default: return NULL; } } bool checkInfo(const DAnchorInfo *info1, const DAnchorInfo *info2) const { const Qt::AnchorPoint &p = info2->type; switch (info1->type) { case Qt::AnchorTop://Deliberate case Qt::AnchorBottom://Deliberate case Qt::AnchorVerticalCenter: return (p == Qt::AnchorTop || p == Qt::AnchorBottom || p == Qt::AnchorVerticalCenter); case Qt::AnchorLeft://Deliberate case Qt::AnchorRight://Deliberate case Qt::AnchorHorizontalCenter: return (p == Qt::AnchorLeft || p == Qt::AnchorRight || p == Qt::AnchorHorizontalCenter); default: return false; } } bool isBindable(const DAnchorInfo *info) const { if (fill->target() || centerIn->target()) { return false; } Q_Q(const DAnchorsBase); bool tmp1 = ((int)q->isBinding(top) + (int)q->isBinding(verticalCenter) + (int)q->isBinding(bottom)) < 2; bool tmp2 = ((int)q->isBinding(left) + (int)q->isBinding(horizontalCenter) + (int)q->isBinding(right)) < 2; switch (info->type) { case Qt::AnchorTop://Deliberate case Qt::AnchorBottom://Deliberate case Qt::AnchorHorizontalCenter: return tmp1; case Qt::AnchorLeft://Deliberate case Qt::AnchorRight://Deliberate case Qt::AnchorVerticalCenter: return tmp2; default: return false; } } qreal getValueByInfo(const DAnchorInfo *info) { DAnchorsRect rect = info->base->target()->geometry(); switch (info->type) { case Qt::AnchorTop: return rect.top(); case Qt::AnchorBottom: return rect.bottom() + 1; case Qt::AnchorHorizontalCenter: return rect.horizontalCenter(); case Qt::AnchorLeft: return rect.left(); case Qt::AnchorRight: return rect.right() + 1; case Qt::AnchorVerticalCenter: return rect.verticalCenter(); default: return 0; } } void setValueByInfo(qreal value, const DAnchorInfo *info) { if (!info) { return; } switch (info->type) { case Qt::AnchorTop: info->base->setTop(value, Qt::AnchorTop); break; case Qt::AnchorBottom: info->base->setBottom(value - 1, Qt::AnchorTop); break; case Qt::AnchorHorizontalCenter: info->base->setHorizontalCenter(value, Qt::AnchorLeft); break; case Qt::AnchorLeft: info->base->setLeft(value, Qt::AnchorRight); break; case Qt::AnchorRight: info->base->setRight(value - 1, Qt::AnchorLeft); break; case Qt::AnchorVerticalCenter: info->base->setVerticalCenter(value, Qt::AnchorLeft); break; default: break; } } qreal getTargetValueByInfo(const DAnchorInfo *info) { if (!info->targetInfo) { return getValueByInfo(info); } qreal value = getValueByInfo(info->targetInfo); bool isParent = info->base->target()->parentWidget() == info->targetInfo->base->target(); int topValue = isParent ? -info->targetInfo->base->target()->geometry().top() : 0; int leftValue = isParent ? -info->targetInfo->base->target()->geometry().left() : 0; switch (info->type) { case Qt::AnchorTop: { int offset = topMargin == 0 ? margins : topMargin; return value + offset + topValue; } case Qt::AnchorBottom: { int offset = bottomMargin == 0 ? margins : bottomMargin; return value - offset + topValue - 1; } case Qt::AnchorHorizontalCenter: { int offset = horizontalCenterOffset; return value + offset + leftValue; } case Qt::AnchorLeft: { int offset = leftMargin == 0 ? margins : leftMargin; return value + offset + leftValue; } case Qt::AnchorRight: { int offset = rightMargin == 0 ? margins : rightMargin; return value - offset + leftValue - 1; } case Qt::AnchorVerticalCenter: { int offset = verticalCenterOffset; return value + offset + topValue; } default: return 0; } } const DAnchorsRect getWidgetRect(const QWidget *w) const { if (!w) { return DAnchorsRect(); } if (extendWidget && extendWidget->target()->parentWidget() == w) { return w->rect(); } return w->geometry(); } int horizontalAnchorCount() const { Q_Q(const DAnchorsBase); int count = 0; if(q->isBinding(left)) ++count; if(q->isBinding(horizontalCenter)) ++count; if(q->isBinding(right)) ++count; return count; } int verticalAnchorCount() const { Q_Q(const DAnchorsBase); int count = 0; if(q->isBinding(top)) ++count; if(q->isBinding(verticalCenter)) ++count; if(q->isBinding(bottom)) ++count; return count; } DAnchorsBase *q_ptr; QPointer extendWidget; DAnchorInfo *top = new DAnchorInfo(q_ptr, Qt::AnchorTop); DAnchorInfo *bottom = new DAnchorInfo(q_ptr, Qt::AnchorBottom); DAnchorInfo *left = new DAnchorInfo(q_ptr, Qt::AnchorLeft); DAnchorInfo *right = new DAnchorInfo(q_ptr, Qt::AnchorRight); DAnchorInfo *horizontalCenter = new DAnchorInfo(q_ptr, Qt::AnchorHorizontalCenter); DAnchorInfo *verticalCenter = new DAnchorInfo(q_ptr, Qt::AnchorVerticalCenter); DEnhancedWidget *fill = new DEnhancedWidget(NULL, q_ptr); DEnhancedWidget *centerIn = new DEnhancedWidget(NULL, q_ptr); int margins = 0; int topMargin = 0; int bottomMargin = 0; int leftMargin = 0; int rightMargin = 0; int horizontalCenterOffset = 0; int verticalCenterOffset = 0; bool alignWhenCentered = false; DAnchorsBase::AnchorError errorCode = DAnchorsBase::NoError; QString errorString; static QMap widgetMap; Q_DECLARE_PUBLIC(DAnchorsBase) }; QMap DAnchorsBasePrivate::widgetMap; /*! * \~chinese \brief 构造 DAnchorsBase 对象,传入的 w 对象会和一个新的 DAnchorsBase 对象 * \~chinese 绑定到一起 * \~chinese \param w 需要使用锚定关系的控件 * \~chinese \note 对 w 设置的锚定关系不会随着本次构造的 DAnchorsBase 对象的销毁而消失。 * \~chinese 此构造函数可能会隐式的构造一个新 DAnchorsBase 对象用于真正的功能实现,函数执行 * \~chinese 时会先检查当前是否已经有和 w 对象绑定的 DAnchorsBase 对象,如果没有则会创建一 * \~chinese 个新的 DAnchorsBase 对象与之绑定,否则使用已有的对象。隐式创建的 DAnchorsBase * \~chinese 对象会在对应的 QWidget 对象被销毁时自动销毁。 * \~chinese \sa target() clearAnchors() getAnchorBaseByWidget() */ DAnchorsBase::DAnchorsBase(QWidget *w): QObject(w) { init(w); } /*! * \~chinese \brief 在析构时会判断此 DAnchorsBase 对象是否和 target 存在绑定关系,如果是 * \~chinese 则从映射表中移除绑定 * \~chinese \warning DAnchorsBasePrivate 对象可能是在多个 DAnchorsBase 对象之间显式 * \~chinese 共享的,所以在销毁 DAnchorsBase 后,对应的 DAnchorsBasePrivate 对象不一定 * \~chinese 会被销毁 * \sa QExplicitlySharedDataPointer */ DAnchorsBase::~DAnchorsBase() { DAnchorsBasePrivate::removeWidgetAnchorsBase(target(), this); } QWidget *DAnchorsBase::target() const { Q_D(const DAnchorsBase); if (!d->extendWidget) return 0; return d->extendWidget->target(); } /*! * \~chinese \brief 返回 target 控件的扩展对象。此对象为 QWidget 对象额外提供了和控件大小、 * \~chinese 位置相关的变化信号 * \~chinese \return * \~chinese \sa DEnhancedWidget */ DEnhancedWidget *DAnchorsBase::enhancedWidget() const { Q_D(const DAnchorsBase); return d->extendWidget; } bool DAnchorsBase::enabled() const { Q_D(const DAnchorsBase); if (!d->extendWidget) return false; return d->extendWidget->enabled(); } const DAnchorsBase *DAnchorsBase::anchors() const { return this; } const DAnchorInfo *DAnchorsBase::top() const { Q_D(const DAnchorsBase); return d->top; } const DAnchorInfo *DAnchorsBase::bottom() const { Q_D(const DAnchorsBase); return d->bottom; } const DAnchorInfo *DAnchorsBase::left() const { Q_D(const DAnchorsBase); return d->left; } const DAnchorInfo *DAnchorsBase::right() const { Q_D(const DAnchorsBase); return d->right; } const DAnchorInfo *DAnchorsBase::horizontalCenter() const { Q_D(const DAnchorsBase); return d->horizontalCenter; } const DAnchorInfo *DAnchorsBase::verticalCenter() const { Q_D(const DAnchorsBase); return d->verticalCenter; } QWidget *DAnchorsBase::fill() const { Q_D(const DAnchorsBase); if (d->fill) { return d->fill->target(); } return NULL; } QWidget *DAnchorsBase::centerIn() const { Q_D(const DAnchorsBase); if (d->centerIn) { return d->centerIn->target(); } return NULL; } int DAnchorsBase::margins() const { Q_D(const DAnchorsBase); return d->margins; } int DAnchorsBase::topMargin() const { Q_D(const DAnchorsBase); return d->topMargin; } int DAnchorsBase::bottomMargin() const { Q_D(const DAnchorsBase); return d->bottomMargin; } int DAnchorsBase::leftMargin() const { Q_D(const DAnchorsBase); return d->leftMargin; } int DAnchorsBase::rightMargin() const { Q_D(const DAnchorsBase); return d->rightMargin; } int DAnchorsBase::horizontalCenterOffset() const { Q_D(const DAnchorsBase); return d->horizontalCenterOffset; } int DAnchorsBase::verticalCenterOffset() const { Q_D(const DAnchorsBase); return d->verticalCenterOffset; } int DAnchorsBase::alignWhenCentered() const { Q_D(const DAnchorsBase); return d->alignWhenCentered; } /*! * \~chinese \brief 锚定过程中产生的错误,在一个新的锚定函数被调用之前会清空此错误状态,每次 * \~chinese 调用锚定函数后,可以通过此函数的返回值来判断锚定设置是否成功 * \~chinese \return * \~chinese \sa errorString() */ DAnchorsBase::AnchorError DAnchorsBase::errorCode() const { Q_D(const DAnchorsBase); return d->errorCode; } /*! * \~chinese \brief 对 errorCode 的文本描述信息 * \~chinese \return * \~chinese \sa errorCode */ QString DAnchorsBase::errorString() const { Q_D(const DAnchorsBase); return d->errorString; } /*! * \~chinese \brief 如果此 info 设置了锚定对象,则返回 true ,否则返回 false * \~chinese \code * DAnchors w1; * DAnchors w2; * * w1.setLeft(w2.right()); * * qDebug() << w1.isBinding(w1.left()) << w2.isBinding(w2.right()); * \endcode * \~chinese 打印内容为:ture false * \~chinese \param info * \~chinese \return */ bool DAnchorsBase::isBinding(const DAnchorInfo *info) const { return info->targetInfo; } /*! * \~chinese \brief 方便用户直接设置两个对象之间锚定关系的静态函数,调用此函数可能会隐式创建 * \~chinese DAnchorsBase 对象 * \~chinese \param w 要锚定的控件对象 * \~chinese \param p 要锚定的锚线/锚点 * \~chinese \param target 锚定的目标对象 * \~chinese \param point 锚定的目标锚线/锚点 * \~chinese \return 如果锚定成功,则返回 true,否则返回 false */ bool DAnchorsBase::setAnchor(QWidget *w, const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point) { if (!w || !target) { return false; } DAnchorsBase *base = DAnchorsBasePrivate::getWidgetAnchorsBase(w); if (!base) { base = new DAnchorsBase(w); } return base->setAnchor(p, target, point); } /*! * \~chinese \brief 清除和控件 w 相关的所有锚定关系,包括锚定w或者被w锚定的任何关联。会直接 * \~chinese 销毁 w 对应的 DAnchorsBase 对象 * \~chinese \param w */ void DAnchorsBase::clearAnchors(const QWidget *w) { DAnchorsBase *base = DAnchorsBasePrivate::getWidgetAnchorsBase(w); if (base) { delete base; } } /*! * \~chinese \brief 返回与 w 绑定的 DAnchorsBase 对象 * \~chinese \param w * \~chinese \return 如果 w 没有对应的锚定对象,则返回空 */ DAnchorsBase *DAnchorsBase::getAnchorBaseByWidget(const QWidget *w) { return DAnchorsBasePrivate::getWidgetAnchorsBase(w); } void DAnchorsBase::setEnabled(bool enabled) { Q_D(DAnchorsBase); if (!d->extendWidget) return; d->extendWidget->setEnabled(enabled); } /*! * \~chinese \brief 为 DAnchorsBase::target 对象设置锚定规则 * \~chinese \note 可能会为目标控件隐式创建其对应的 DAnchorsBase 对象 * \~chinese \param p 为当前控件的哪个锚线/锚点设置锚定规则 * \~chinese \param target 锚定的目标控件 * \~chinese \param point 锚定的目标锚线/锚点 * \~chinese \return 如果设置成功,则返回 true,否则返回 false */ bool DAnchorsBase::setAnchor(const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point) { if (!target) { return false; } DAnchorsBase *base = DAnchorsBasePrivate::getWidgetAnchorsBase(target); if (!base) { base = new DAnchorsBase(target); } const DAnchorInfo *info = base->d_func()->getInfoByPoint(point); switch (p) { case Qt::AnchorTop: return setTop(info); case Qt::AnchorBottom: return setBottom(info); case Qt::AnchorLeft: return setLeft(info); case Qt::AnchorRight: return setRight(info); case Qt::AnchorHorizontalCenter: return setHorizontalCenter(info); case Qt::AnchorVerticalCenter: return setVerticalCenter(info); default: return false; } } #define ANCHOR_BIND_INFO(point, Point, slotName, ...)\ Q_D(DAnchorsBase);\ if(*d->point == point)\ return true;\ DEnhancedWidget *tmp_w1 = NULL;\ DEnhancedWidget *tmp_w2 = NULL;\ if(d->point->targetInfo){\ tmp_w1 = d->point->targetInfo->base->d_func()->extendWidget;\ }\ QStringList signalList = QString(#__VA_ARGS__).split("),");\ if(point){\ if(!d->isBindable(d->point)){\ d->errorCode = Conflict;\ d->errorString = "Conflict: CenterIn or Fill is anchored.";\ return false;\ }\ if (point->base == d->q_func()){\ d->errorCode = TargetInvalid;\ d->errorString = "Cannot anchor widget to self.";\ return false;\ }else if(target()->parentWidget() != point->base->target()){\ bool isBrother = false;\ Q_FOREACH (const QWidget *w, target()->parentWidget()->findChildren()) {\ if(w == point->base->target()){\ isBrother = true;\ break;\ }\ }\ if(!isBrother){\ d->errorCode = TargetInvalid;\ d->errorString = "Cannot anchor to an widget that isn't a parent or sibling.";\ return false;\ }\ }\ if(!d->checkInfo(d->point, point)){\ d->errorCode = PointInvalid;\ d->errorString = "Cannot anchor a vertical/horizontal edge to a horizontal/vertical edge.";\ return false;\ }\ int old_pos = d->getValueByInfo(point);\ DAnchorInfo old_info = *d->point;\ *d->point = point;\ slotName();\ if(old_pos != d->getValueByInfo(point)){\ *d->point = old_info;\ slotName();\ d->errorCode = PointInvalid;\ d->errorString = "loop bind.";\ return false;\ }else{\ old_pos = d->getValueByInfo(d->point);\ int target_old_value = d->getValueByInfo(point);\ /*保存widget当然的一些标志位,setValueByInfo仅仅是尝试设置,调用之后要复原标志位*/\ bool moved = point->base->target()->testAttribute(Qt::WA_Moved);\ bool resized = point->base->target()->testAttribute(Qt::WA_Resized);\ d->setValueByInfo(target_old_value + 1, point);\ if(old_pos != d->getValueByInfo(d->point)){\ *d->point = old_info;\ slotName();\ d->setValueByInfo(target_old_value, point);\ point->base->target()->setAttribute(Qt::WA_Moved, moved);\ point->base->target()->setAttribute(Qt::WA_Resized, resized);\ d->errorCode = PointInvalid;\ d->errorString = "loop bind.";\ return false;\ }\ d->setValueByInfo(target_old_value, point);\ point->base->target()->setAttribute(Qt::WA_Moved, moved);\ point->base->target()->setAttribute(Qt::WA_Resized, resized);\ }\ tmp_w2 = point->base->d_func()->extendWidget;\ if(tmp_w1 != tmp_w2){\ Q_FOREACH(QString str, signalList){\ QByteArray arr = str.replace(" ", "").toLatin1();\ if(arr.right(1) != ")") arr += ")";\ if(tmp_w1) {\ disconnect(tmp_w1, QByteArray("2"+arr).data(), d->q_func(), SLOT(slotName()));\ disconnect(tmp_w1, SIGNAL(showed()), d->q_func(), SLOT(slotName()));\ }\ if(arr.size() != 13 || target()->parentWidget() != point->base->target()) {\ connect(tmp_w2, QByteArray("2"+arr).data(), d->q_func(), SLOT(slotName()));\ connect(tmp_w2, SIGNAL(showed()), d->q_func(), SLOT(slotName()));\ }\ }\ }\ }else{\ Q_FOREACH(QString str, signalList){\ QByteArray arr = str.replace(" ", "").toLatin1();\ if(arr.right(1) != ")") arr += ")";\ disconnect(tmp_w1, QByteArray("2"+arr).data(), d->q_func(), SLOT(slotName()));\ disconnect(tmp_w1, SIGNAL(showed()), d->q_func(), SLOT(slotName()));\ }\ *d->point = point;\ }\ if((isBinding(d->right) || isBinding(d->horizontalCenter)) && d->horizontalAnchorCount() == 1)\ {connect(d->extendWidget, SIGNAL(widthChanged(int)), d->q_func(), SLOT(updateHorizontal()));}\ else disconnect(d->extendWidget, SIGNAL(widthChanged(int)), d->q_func(), SLOT(updateHorizontal()));\ if((isBinding(d->bottom) || isBinding(d->verticalCenter)) && d->verticalAnchorCount() == 1)\ {connect(d->extendWidget, SIGNAL(heightChanged(int)), d->q_func(), SLOT(updateVertical()));}\ else disconnect(d->extendWidget, SIGNAL(heightChanged(int)), d->q_func(), SLOT(updateVertical()));\ Q_EMIT point##Changed(d->point);\ return true;\ #define ANCHOR_BIND_WIDGET(point, Point)\ if(d->point->target() == point)\ return true;\ if(point){\ if (point == target()){\ d->errorCode = TargetInvalid;\ d->errorString = "Cannot anchor widget to self.";\ return false;\ }else if(target()->parentWidget() != point){\ bool isBrother = false;\ Q_FOREACH (const QWidget *w, target()->parentWidget()->findChildren()) {\ if(w == point){\ isBrother = true;\ break;\ }\ }\ if(!isBrother){\ d->errorCode = TargetInvalid;\ d->errorString = "Cannot anchor to an widget that isn't a parent or sibling.";\ return false;\ }\ }\ QRect old_rect = point->geometry();\ QWidget *old_widget = d->point->target();\ d->point->setTarget(point);\ update##Point();\ if(old_rect != point->geometry()){\ d->point->setTarget(old_widget);\ update##Point();\ d->errorCode = PointInvalid;\ d->errorString = "loop bind.";\ return false;\ }\ DAnchorInfo *info = NULL;\ setTop(info);setLeft(info);setRight(info);setBottom(info);setHorizontalCenter(info);setVerticalCenter(info);setCenterIn((QWidget*)NULL);\ if(d->point == d->fill)\ setCenterIn((QWidget*)NULL);\ if(target()->parentWidget() == point)\ disconnect(d->point, SIGNAL(positionChanged(QPoint)), d->q_func(), SLOT(update##Point()));\ else connect(d->point, SIGNAL(positionChanged(QPoint)), d->q_func(), SLOT(update##Point()));\ }\ d->point->setTarget(point);\ if(d->centerIn){connect(d->extendWidget, SIGNAL(sizeChanged(QSize)), d->q_func(), SLOT(updateCenterIn()));}\ else disconnect(d->extendWidget, SIGNAL(sizeChanged(QSize)), d->q_func(), SLOT(updateCenterIn()));\ Q_EMIT point##Changed(point);\ return true;\ bool DAnchorsBase::setTop(const DAnchorInfo *top) { ANCHOR_BIND_INFO(top, Top, updateVertical , yChanged(int), heightChanged(int)) } bool DAnchorsBase::setBottom(const DAnchorInfo *bottom) { ANCHOR_BIND_INFO(bottom, Bottom, updateVertical , yChanged(int), heightChanged(int)) } bool DAnchorsBase::setLeft(const DAnchorInfo *left) { ANCHOR_BIND_INFO(left, Left, updateHorizontal, xChanged(int), widthChanged(int)) } bool DAnchorsBase::setRight(const DAnchorInfo *right) { ANCHOR_BIND_INFO(right, Right, updateHorizontal, xChanged(int), widthChanged(int)) } bool DAnchorsBase::setHorizontalCenter(const DAnchorInfo *horizontalCenter) { ANCHOR_BIND_INFO(horizontalCenter, HorizontalCenter, updateHorizontal, xChanged(int), widthChanged(int)) } bool DAnchorsBase::setVerticalCenter(const DAnchorInfo *verticalCenter) { ANCHOR_BIND_INFO(verticalCenter, VerticalCenter, updateVertical , yChanged(int), heightChanged(int)) } bool DAnchorsBase::setFill(QWidget *fill) { Q_D(DAnchorsBase); ANCHOR_BIND_WIDGET(fill, Fill) } bool DAnchorsBase::setCenterIn(QWidget *centerIn) { Q_D(DAnchorsBase); if (centerIn && d->fill->target()) { d->errorCode = Conflict; d->errorString = "Conflict: Fill is anchored."; return false; } ANCHOR_BIND_WIDGET(centerIn, CenterIn) } /*! * \~chinese \brief 将 fill 中的target()作为参数调用其它重载函数 * \~chinese \param fill * \~chinese \return */ bool DAnchorsBase::setFill(DAnchorsBase *fill) { return setFill(fill->target()); } /*! * \~chinese \brief 将 centerIn 中的target()作为参数调用其它重载函数 * \~chinese \param centerIn * \~chinese \return */ bool DAnchorsBase::setCenterIn(DAnchorsBase *centerIn) { return setCenterIn(centerIn->target()); } void DAnchorsBase::setMargins(int margins) { Q_D(DAnchorsBase); if (d->margins == margins) { return; } d->margins = margins; if (margins != 0) { if (d->fill->target()) { updateFill(); } else { updateVertical(); updateHorizontal(); } } Q_EMIT marginsChanged(margins); } void DAnchorsBase::setTopMargin(int topMargin) { Q_D(DAnchorsBase); if (d->topMargin == topMargin) { return; } d->topMargin = topMargin; if (d->fill->target()) { updateFill(); } else if (isBinding(d->top)) { updateVertical(); } Q_EMIT topMarginChanged(topMargin); } void DAnchorsBase::setBottomMargin(int bottomMargin) { Q_D(DAnchorsBase); if (d->bottomMargin == bottomMargin) { return; } d->bottomMargin = bottomMargin; if (d->fill->target()) { updateFill(); } else if (isBinding(d->bottom)) { updateVertical(); } Q_EMIT bottomMarginChanged(bottomMargin); } void DAnchorsBase::setLeftMargin(int leftMargin) { Q_D(DAnchorsBase); if (d->leftMargin == leftMargin) { return; } d->leftMargin = leftMargin; if (d->fill->target()) { updateFill(); } else if (isBinding(d->left)) { updateHorizontal(); } Q_EMIT leftMarginChanged(leftMargin); } void DAnchorsBase::setRightMargin(int rightMargin) { Q_D(DAnchorsBase); if (d->rightMargin == rightMargin) { return; } d->rightMargin = rightMargin; if (isBinding(d->right)) { updateHorizontal(); } if (d->fill->target()) { updateFill(); } Q_EMIT rightMarginChanged(rightMargin); } void DAnchorsBase::setHorizontalCenterOffset(int horizontalCenterOffset) { Q_D(DAnchorsBase); if (d->horizontalCenterOffset == horizontalCenterOffset) { return; } d->horizontalCenterOffset = horizontalCenterOffset; if (isBinding(d->horizontalCenter)) { updateHorizontal(); } Q_EMIT horizontalCenterOffsetChanged(horizontalCenterOffset); } void DAnchorsBase::setVerticalCenterOffset(int verticalCenterOffset) { Q_D(DAnchorsBase); if (d->verticalCenterOffset == verticalCenterOffset) { return; } d->verticalCenterOffset = verticalCenterOffset; if (isBinding(d->verticalCenter)) { updateVertical(); } Q_EMIT verticalCenterOffsetChanged(verticalCenterOffset); } void DAnchorsBase::setAlignWhenCentered(bool alignWhenCentered) { Q_D(DAnchorsBase); if (d->alignWhenCentered == alignWhenCentered) { return; } d->alignWhenCentered = alignWhenCentered; Q_EMIT alignWhenCenteredChanged(alignWhenCentered); } #define SET_POS(fun)\ DAnchorsRect rect = target()->geometry();\ rect.set##fun(arg, point);\ target()->setMinimumSize(QSize(0,0));\ target()->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));\ target()->setGeometry(rect); #define MOVE_POS(fun)\ DAnchorsRect rect = target()->geometry();\ rect.move##fun(arg);\ target()->move(rect.topLeft()); void DAnchorsBase::setTop(int arg, Qt::AnchorPoint point) { SET_POS(Top) } void DAnchorsBase::setBottom(int arg, Qt::AnchorPoint point) { SET_POS(Bottom) } void DAnchorsBase::setLeft(int arg, Qt::AnchorPoint point) { SET_POS(Left) } void DAnchorsBase::setHorizontalCenter(int arg, Qt::AnchorPoint point) { SET_POS(HorizontalCenter) } void DAnchorsBase::setVerticalCenter(int arg, Qt::AnchorPoint point) { SET_POS(VerticalCenter) } void DAnchorsBase::setRight(int arg, Qt::AnchorPoint point) { SET_POS(Right) } /*! * \~chinese \brief 移动 target 控件的上边界到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveTop(int arg) { MOVE_POS(Top) } /*! * \~chinese \brief 移动 target 控件的下边界到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveBottom(int arg) { MOVE_POS(Bottom) } /*! * \~chinese \brief 移动 target 控件的左边界到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveLeft(int arg) { MOVE_POS(Left) } /*! * \~chinese \brief 移动 target 控件的右边界到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveRight(int arg) { MOVE_POS(Right) } /*! * \~chinese \brief 移动 target 控件的水平中线到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveHorizontalCenter(int arg) { MOVE_POS(HorizontalCenter) } /*! * \~chinese \brief 移动 target 控件的竖直中线到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveVerticalCenter(int arg) { MOVE_POS(VerticalCenter) } /*! * \~chinese \brief 移动 target 控件的上边界到 arg 这个位置 * \param arg 要移动到的位置 */ void DAnchorsBase::moveCenter(const QPoint &arg) { MOVE_POS(Center) } #define UPDATE_GEOMETRY(p1,P1,p2,P2,p3,P3)\ Q_D(DAnchorsBase);\ if(isBinding(d->p1)){\ int p1##Value = d->getTargetValueByInfo(d->p1);\ move##P1(p1##Value);\ if(isBinding(d->p2)){\ qreal value = d->getTargetValueByInfo(d->p2);\ set##P3(2 * value - p1##Value, Qt::Anchor##P1);\ }else if(isBinding(d->p3)){\ set##P3(d->getTargetValueByInfo(d->p3), Qt::Anchor##P1);\ }\ }else if(isBinding(d->p3)){\ int p3##Value = d->getTargetValueByInfo(d->p3);\ move##P3(p3##Value);\ if(isBinding(d->p2)){\ qreal value = d->getTargetValueByInfo(d->p2);\ set##P1(2 * value - p3##Value, Qt::Anchor##P1);\ }\ }else if(isBinding(d->p2)){\ move##P2(d->getTargetValueByInfo(d->p2));\ }\ void DAnchorsBase::updateVertical() { UPDATE_GEOMETRY(top, Top, verticalCenter, VerticalCenter, bottom, Bottom) } void DAnchorsBase::updateHorizontal() { UPDATE_GEOMETRY(left, Left, horizontalCenter, HorizontalCenter, right, Right) } void DAnchorsBase::updateFill() { Q_D(DAnchorsBase); QRect rect = d->getWidgetRect(d->fill->target()); int offset = d->topMargin != 0 ? d->topMargin : d->margins; rect.setTop(rect.top() + offset); offset = d->bottomMargin != 0 ? d->bottomMargin : d->margins; rect.setBottom(rect.bottom() - offset); offset = d->leftMargin != 0 ? d->leftMargin : d->margins; rect.setLeft(rect.left() + offset); offset = d->rightMargin != 0 ? d->rightMargin : d->margins; rect.setRight(rect.right() - offset); target()->setFixedSize(rect.size()); target()->move(rect.topLeft()); } void DAnchorsBase::updateCenterIn() { Q_D(DAnchorsBase); QRect rect = d->getWidgetRect(d->centerIn->target()); moveCenter(rect.center()); } void DAnchorsBase::init(QWidget *w) { Q_D(DAnchorsBase); DAnchorsBase *base = DAnchorsBasePrivate::getWidgetAnchorsBase(w); if (base) { d_ptr = base->d_ptr; } else if (d && d->q_func() == this) { d->removeWidgetAnchorsBase(target(), this); d->setWidgetAnchorsBase(w, this); d->extendWidget->setTarget(w); } else { base = new DAnchorsBase(w, false); d_ptr = base->d_ptr; } } DAnchorsBase::DAnchorsBase(QWidget *w, bool): QObject(w), d_ptr(new DAnchorsBasePrivate(this)) { Q_D(DAnchorsBase); d->extendWidget = new DEnhancedWidget(w, this); connect(d->extendWidget, SIGNAL(enabledChanged(bool)), SIGNAL(enabledChanged(bool))); connect(d->fill, SIGNAL(sizeChanged(QSize)), SLOT(updateFill())); connect(d->centerIn, SIGNAL(sizeChanged(QSize)), SLOT(updateCenterIn())); connect(d->fill, SIGNAL(showed()), SLOT(updateFill())); connect(d->centerIn, SIGNAL(showed()), SLOT(updateCenterIn())); d->setWidgetAnchorsBase(w, this); } void DAnchorsRect::setTop(int arg, Qt::AnchorPoint point) { if (point == Qt::AnchorVerticalCenter) { QRect::setBottom(bottom() + arg - top()); } QRect::setTop(arg); } void DAnchorsRect::setVerticalCenter(qreal arg, Qt::AnchorPoint point) { if (point == Qt::AnchorTop) { QRect::setBottom(2 * arg - top()); } else if (point == Qt::AnchorBottom) { QRect::setTop(2 * arg - bottom()); } } void DAnchorsRect::setBottom(int arg, Qt::AnchorPoint point) { if (point == Qt::AnchorVerticalCenter) { setHeight(arg - bottom()); } QRect::setBottom(arg); } void DAnchorsRect::setLeft(int arg, Qt::AnchorPoint point) { if (point == Qt::AnchorHorizontalCenter) { setWidth(left() - arg); } QRect::setLeft(arg); } void DAnchorsRect::setHorizontalCenter(qreal arg, Qt::AnchorPoint point) { if (point == Qt::AnchorLeft) { QRect::setRight(2 * arg - left()); } else if (point == Qt::AnchorRight) { QRect::setLeft(2 * arg - right()); } } void DAnchorsRect::setRight(int arg, Qt::AnchorPoint point) { if (point == Qt::AnchorHorizontalCenter) { setWidth(arg - right()); } QRect::setRight(arg); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/danchors.h000066400000000000000000000205321352002233700177070ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: kirigaya * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DANCHORS_H #define DANCHORS_H #include #include #include #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DAnchorsBase; struct DAnchorInfo { DAnchorInfo(DAnchorsBase *b, const Qt::AnchorPoint &t): base(b), type(t) { } DAnchorsBase *base; Qt::AnchorPoint type; const DAnchorInfo *targetInfo = NULL; bool operator==(const DAnchorInfo *info) const { return info == targetInfo; } bool operator==(const DAnchorInfo &info) const { return &info == targetInfo; } bool operator!=(const DAnchorInfo *info) const { return info != targetInfo; } bool operator!=(const DAnchorInfo &info) const { return &info != targetInfo; } const DAnchorInfo &operator=(const DAnchorInfo *info) { targetInfo = info; return *this; } }; class DAnchorsBasePrivate; class DEnhancedWidget; class DAnchorsBase : public QObject { Q_OBJECT Q_PROPERTY(QWidget *target READ target CONSTANT) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) Q_PROPERTY(const DAnchorsBase *anchors READ anchors) Q_PROPERTY(const DAnchorInfo *top READ top WRITE setTop NOTIFY topChanged) Q_PROPERTY(const DAnchorInfo *bottom READ bottom WRITE setBottom NOTIFY bottomChanged) Q_PROPERTY(const DAnchorInfo *left READ left WRITE setLeft NOTIFY leftChanged) Q_PROPERTY(const DAnchorInfo *right READ right WRITE setRight NOTIFY rightChanged) Q_PROPERTY(const DAnchorInfo *horizontalCenter READ horizontalCenter WRITE setHorizontalCenter NOTIFY horizontalCenterChanged) Q_PROPERTY(const DAnchorInfo *verticalCenter READ verticalCenter WRITE setVerticalCenter NOTIFY verticalCenterChanged) Q_PROPERTY(QWidget *fill READ fill WRITE setFill NOTIFY fillChanged) Q_PROPERTY(QWidget *centerIn READ centerIn WRITE setCenterIn NOTIFY centerInChanged) Q_PROPERTY(int margins READ margins WRITE setMargins NOTIFY marginsChanged) Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin NOTIFY topMarginChanged) Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY bottomMarginChanged) Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY leftMarginChanged) Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY rightMarginChanged) Q_PROPERTY(int horizontalCenterOffset READ horizontalCenterOffset WRITE setHorizontalCenterOffset NOTIFY horizontalCenterOffsetChanged) Q_PROPERTY(int verticalCenterOffset READ verticalCenterOffset WRITE setVerticalCenterOffset NOTIFY verticalCenterOffsetChanged) Q_PROPERTY(bool alignWhenCentered READ alignWhenCentered WRITE setAlignWhenCentered NOTIFY alignWhenCenteredChanged) public: explicit DAnchorsBase(QWidget *w); ~DAnchorsBase(); enum AnchorError { NoError, Conflict, TargetInvalid, PointInvalid, LoopBind }; QWidget *target() const; DEnhancedWidget *enhancedWidget() const; bool enabled() const; const DAnchorsBase *anchors() const; const DAnchorInfo *top() const; const DAnchorInfo *bottom() const; const DAnchorInfo *left() const; const DAnchorInfo *right() const; const DAnchorInfo *horizontalCenter() const; const DAnchorInfo *verticalCenter() const; QWidget *fill() const; QWidget *centerIn() const; int margins() const; int topMargin() const; int bottomMargin() const; int leftMargin() const; int rightMargin() const; int horizontalCenterOffset() const; int verticalCenterOffset() const; int alignWhenCentered() const; AnchorError errorCode() const; QString errorString() const; bool isBinding(const DAnchorInfo *info) const; static bool setAnchor(QWidget *w, const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point); static void clearAnchors(const QWidget *w); static DAnchorsBase *getAnchorBaseByWidget(const QWidget *w); public Q_SLOTS: void setEnabled(bool enabled); bool setAnchor(const Qt::AnchorPoint &p, QWidget *target, const Qt::AnchorPoint &point); bool setTop(const DAnchorInfo *top); bool setBottom(const DAnchorInfo *bottom); bool setLeft(const DAnchorInfo *left); bool setRight(const DAnchorInfo *right); bool setHorizontalCenter(const DAnchorInfo *horizontalCenter); bool setVerticalCenter(const DAnchorInfo *verticalCenter); bool setFill(QWidget *fill); bool setCenterIn(QWidget *centerIn); bool setFill(DAnchorsBase *fill); bool setCenterIn(DAnchorsBase *centerIn); void setMargins(int margins); void setTopMargin(int topMargin); void setBottomMargin(int bottomMargin); void setLeftMargin(int leftMargin); void setRightMargin(int rightMargin); void setHorizontalCenterOffset(int horizontalCenterOffset); void setVerticalCenterOffset(int verticalCenterOffset); void setAlignWhenCentered(bool alignWhenCentered); void setTop(int arg, Qt::AnchorPoint point); void setBottom(int arg, Qt::AnchorPoint point); void setLeft(int arg, Qt::AnchorPoint point); void setRight(int arg, Qt::AnchorPoint point); void setHorizontalCenter(int arg, Qt::AnchorPoint point); void setVerticalCenter(int arg, Qt::AnchorPoint point); void moveTop(int arg); void moveBottom(int arg); void moveLeft(int arg); void moveRight(int arg); void moveHorizontalCenter(int arg); void moveVerticalCenter(int arg); void moveCenter(const QPoint &arg); private Q_SLOTS: void updateVertical(); void updateHorizontal(); void updateFill(); void updateCenterIn(); Q_SIGNALS: void enabledChanged(bool enabled); void topChanged(const DAnchorInfo *top); void bottomChanged(const DAnchorInfo *bottom); void leftChanged(const DAnchorInfo *left); void rightChanged(const DAnchorInfo *right); void horizontalCenterChanged(const DAnchorInfo *horizontalCenter); void verticalCenterChanged(const DAnchorInfo *verticalCenter); void fillChanged(QWidget *fill); void centerInChanged(QWidget *centerIn); void marginsChanged(int margins); void topMarginChanged(int topMargin); void bottomMarginChanged(int bottomMargin); void leftMarginChanged(int leftMargin); void rightMarginChanged(int rightMargin); void horizontalCenterOffsetChanged(int horizontalCenterOffset); void verticalCenterOffsetChanged(int verticalCenterOffset); void alignWhenCenteredChanged(bool alignWhenCentered); protected: void init(QWidget *w); private: DAnchorsBase(QWidget *w, bool); QExplicitlySharedDataPointer d_ptr; Q_DECLARE_PRIVATE(DAnchorsBase) }; template class DAnchors : public DAnchorsBase { public: inline DAnchors(): DAnchorsBase((QWidget*)NULL), m_widget(NULL) {} inline DAnchors(T *w): DAnchorsBase(w), m_widget(w) {} inline DAnchors(const DAnchors &me): DAnchorsBase(me.m_widget), m_widget(me.m_widget) {} inline T &operator=(const DAnchors &me) { m_widget = me.m_widget; init(m_widget); return *m_widget; } inline T &operator=(T *w) { m_widget = w; init(w); return *m_widget; } inline T *widget() const { return m_widget; } inline T *operator ->() const { return m_widget; } inline T &operator *() const { return *m_widget; } inline operator T *() const { return m_widget; } inline operator T &() const { return *m_widget; } private: T *m_widget; }; DWIDGET_END_NAMESPACE #endif // DANCHORS_H dtkwidget-2.1.1/src/widgets/dapplication.cpp000066400000000000000000001214031352002233700211070ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #ifdef Q_OS_LINUX #ifdef private #undef private #endif #define private public #include #undef private #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_UNIX #include #endif #include "dapplication.h" #include "dthememanager.h" #include "private/dapplication_p.h" #include "daboutdialog.h" #ifdef Q_OS_UNIX #include #include #include #include #include #endif #ifdef Q_OS_LINUX #include "startupnotificationmonitor.h" #include #include #endif #define DXCB_PLUGIN_KEY "dxcb" #define DXCB_PLUGIN_SYMBOLIC_PROPERTY "_d_isDxcb" #define QT_THEME_CONFIG_PATH "D_QT_THEME_CONFIG_PATH" DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE DApplicationPrivate::DApplicationPrivate(DApplication *q) : DObjectPrivate(q) { #ifdef Q_OS_LINUX StartupNotificationMonitor *monitor = StartupNotificationMonitor::instance(); auto cancelNotification = [this, q](const QString id) { m_monitoredStartupApps.removeAll(id); if (m_monitoredStartupApps.isEmpty()) { q->setOverrideCursor(Qt::ArrowCursor); } }; QObject::connect(monitor, &StartupNotificationMonitor::appStartup, q, [this, q, cancelNotification](const QString id) { m_monitoredStartupApps.append(id); q->setOverrideCursor(Qt::WaitCursor); // Set a timeout of 15s in case that some apps like pamac-tray started // with StartupNotify but don't show a window after startup finished. QTimer::singleShot(15 * 1000, q, [id, cancelNotification](){ cancelNotification(id); }); }); QObject::connect(monitor, &StartupNotificationMonitor::appStartupCompleted, q, cancelNotification); #endif } DApplicationPrivate::~DApplicationPrivate() { if (m_localServer) { m_localServer->close(); } } QString DApplicationPrivate::theme() const { return DThemeManager::instance()->theme(); } void DApplicationPrivate::setTheme(const QString &theme) { DThemeManager *themeManager = DThemeManager::instance(); themeManager->setTheme(theme); } static bool tryAcquireSystemSemaphore(QSystemSemaphore *ss, qint64 timeout = 10) { if (ss->error() != QSystemSemaphore::NoError) { return false; } QSystemSemaphore _tmp_ss(QString("%1-%2").arg("DTK::tryAcquireSystemSemaphore").arg(ss->key()), 1, QSystemSemaphore::Open); _tmp_ss.acquire(); QElapsedTimer t; QFuture request = QtConcurrent::run(ss, &QSystemSemaphore::acquire); t.start(); while (Q_LIKELY(t.elapsed() < timeout && !request.isFinished())); if (request.isFinished()) { return true; } if (Q_LIKELY(request.isRunning())) { if (Q_LIKELY(ss->release(1))) { request.waitForFinished(); } } return false; } bool DApplicationPrivate::setSingleInstanceBySemaphore(const QString &key) { static QSystemSemaphore ss(key, 1, QSystemSemaphore::Open); static bool singleInstance = false; if (singleInstance) { return true; } Q_ASSERT_X(ss.error() == QSystemSemaphore::NoError, "DApplicationPrivate::setSingleInstanceBySemaphore:", ss.errorString().toLocal8Bit().constData()); singleInstance = tryAcquireSystemSemaphore(&ss); if (singleInstance) { QtConcurrent::run([this] { QPointer that = q_func(); while (ss.acquire() && singleInstance) { if (!that) { return; } if (that->startingUp() || that->closingDown()) { break; } ss.release(1); if (that) { Q_EMIT that->newInstanceStarted(); } } }); auto clean_fun = [] { ss.release(1); singleInstance = false; }; qAddPostRoutine(clean_fun); atexit(clean_fun); } return singleInstance; } #ifdef Q_OS_UNIX /** * \brief DApplicationPrivate::setSingleInstanceByDbus will check singleinstance by * register dbus service * \param key is the last of dbus service name, like "com.deepin.SingleInstance.key" * \return */ bool DApplicationPrivate::setSingleInstanceByDbus(const QString &key) { auto basename = "com.deepin.SingleInstance."; QString name = basename + key; auto sessionBus = QDBusConnection::sessionBus(); if (!sessionBus.registerService(name)) { qDebug() << "register service failed:" << sessionBus.lastError(); return false; } return true; } #endif bool DApplicationPrivate::loadDtkTranslator(QList localeFallback) { D_Q(DApplication); auto qtTranslator = new QTranslator(q); qtTranslator->load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); q->installTranslator(qtTranslator); auto qtbaseTranslator = new QTranslator(q); qtTranslator->load("qtbase_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); q->installTranslator(qtbaseTranslator); QList translateDirs; auto dtkwidgetDir = DWIDGET_TRANSLATIONS_DIR; auto dtkwidgetName = "dtkwidget"; //("/home/user/.local/share", "/usr/local/share", "/usr/share") auto dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); for (const auto &path : dataDirs) { DPathBuf DPathBuf(path); translateDirs << DPathBuf / dtkwidgetDir; } DPathBuf runDir(q->applicationDirPath()); translateDirs << runDir.join("translations"); DPathBuf currentDir(QDir::currentPath()); translateDirs << currentDir.join("translations"); #ifdef DTK_STATIC_TRANSLATION translateDirs << DPathBuf(":/dtk/translations"); #endif return loadTranslator(translateDirs, dtkwidgetName, localeFallback); } bool DApplicationPrivate::loadTranslator(QList translateDirs, const QString &name, QList localeFallback) { D_Q(DApplication); for (auto &locale : localeFallback) { QString translateFilename = QString("%1_%2").arg(name).arg(locale.name()); for (auto &path : translateDirs) { QString translatePath = (path / translateFilename).toString(); if (QFile::exists(translatePath + ".qm")) { qDebug() << "load translate" << translatePath; auto translator = new QTranslator(q); translator->load(translatePath); q->installTranslator(translator); return true; } } QStringList parseLocalNameList = locale.name().split("_", QString::SkipEmptyParts); if (parseLocalNameList.length() > 0) { translateFilename = QString("%1_%2").arg(name) .arg(parseLocalNameList.at(0)); for (auto &path : translateDirs) { QString translatePath = (path / translateFilename).toString(); if (QFile::exists(translatePath + ".qm")) { qDebug() << "translatePath after feedback:" << translatePath; auto translator = new QTranslator(q); translator->load(translatePath); q->installTranslator(translator); return true; } } } } qWarning() << name << "can not find qm files" ; return false; } void DApplicationPrivate::resetApplicationThemeType() { D_QC(DApplication); // 在 DThemeManager 初始化期间会调用 QApplicationi::setStyle // 这将导致应用程序的调色板发生变化,因此先初始化DThemeManager对象 // 之后再获取调色板中的背景色 DThemeManager *tm = DThemeManager::instance(); // tm为空说明DThemeManager对象正在被初始化 if (!tm) { return; } const QColor &window_background = q->palette().background().color(); // 颜色无效时不处理(窗口背景可能为图片) if (!window_background.isValid()) { return; } DThemeManager::ThemeType type = DThemeManager::toThemeType(window_background); tm->setThemeType(type); } void DApplicationPrivate::resetWindowThemeType(QWidget *window) { D_QC(DApplication); // 如果窗口未自定义调色板,则清除其“主题类型”的设置 if (!window->testAttribute(Qt::WA_SetPalette)) { DThemeManager::instance()->setThemeType(window, DThemeManager::UnknownType); return; } const QColor &window_background = window->palette().background().color(); // 颜色无效时不处理(窗口背景可能为图片) if (!window_background.isValid()) { return; } DThemeManager::ThemeType type = DThemeManager::toThemeType(window_background); DThemeManager::instance()->setThemeType(window, type); } bool DApplicationPrivate::isUserManualExists() { #ifdef Q_OS_LINUX QDBusInterface manualSearch("com.deepin.Manual.Search", "/com/deepin/Manual/Search", "com.deepin.Manual.Search"); if (manualSearch.isValid()) { QDBusReply reply = manualSearch.call("ManualExists", qApp->applicationName()); return reply.value(); } else { const QString appName = qApp->applicationName(); bool dmanAppExists = QFile::exists("/usr/bin/dman"); bool dmanDataExists = QFile::exists("/usr/share/deepin-manual/manual/" + appName) || QFile::exists("/app/share/deepin-manual/manual/" + appName); return dmanAppExists && dmanDataExists; } #else return false; #endif } /*! * \~chinese \class DApplication * * \~chinese \brief DApplication 是 DTK 中用于替换 QCoreApplication 相关功能实现的类。 * \~chinese 继承自 QApplication ,并在此之上添加了一些特殊的设定,如: * \~chinese - 在 FORCE_RASTER_WIDGETS 宏生效的情况下,默认设置 Qt::AA_ForceRasterWidgets 以减少 glx 相关库的加载,减少程序启动时间; * \~chinese - 自动根据 applicationName 和 系统 locale 加载对应的翻译文件; * \~chinese - 会根据系统gsettings中 com.deepin.dde.dapplication 的 qpixmapCacheLimit 值来设置 QPixmapCache::cacheLimit ; * \~chinese - 会根据系统gsettings中 com.deepin.dde.touchscreen longpress-duration 的值来设置 QTapAndHoldGesture::timeout ; * \~chinese - 方便地通过 setSingleInstance 来实现程序的单实例。 * * \~chinese \note DApplication 设置的 QTapAndHoldGesture::timeout 会比 gsettings * \~chinese 中的值小 100,用来绕过 Dock 长按松开容易导致应用启动的问题,详细解释见 * \~chinese 见代码注释或者 https://github.com/linuxdeepin/internal-discussion/issues/430 * * \~chinese \sa loadTranslator, setSingleInstance. */ /*! * \~chinese \fn DApplication::newInstanceStarted() * \~chinese \brief newInstanceStarted 信号会在程序的一个新实例启动的时候被触发。 * * \~chinese \fn DApplication::iconThemeChanged() * \~chinese \brief iconThemeChanged 信号会在系统图标主题发生改变的时候被触发。 * * \~chinese \fn DApplication::screenDevicePixelRatioChanged(QScreen *screen) * \~chinese \brief screenDevicePixelRatioChanged 信号会在对应屏幕的缩放比可能发现变化 * \~chinese 时触发。 * * \~chinese 依赖于 deepin 平台主题插件(dde-qt5integration 包中提供),实时更改 * \~chinese 屏幕缩放比是通过更改配置文件 ~/.config/deepin/qt-theme.ini 实现,与此相关的 * \~chinese 配置项有三个: * \~chinese - ScreenScaleFactors:多屏幕设置不同缩放比,值格式和环境变量QT_SCREEN_SCALE_FACTORS一致 * \~chinese - ScaleFactor: 设置所有屏幕缩放比,值格式和环境变量QT_SCALE_FACTOR一致 * \~chinese - ScaleLogcailDpi:指定屏幕逻辑dpi,可影响仅设置了 point size 的 QFont 的绘制大小。 * \~chinese 未设置此值时,默认会在 \a ScreenScaleFactors 值改变后将屏幕逻辑dpi更改为主屏默认值,一般情况下,不需要设置此值。 * \~chinese \a ScreenScaleFactors 和 \a ScaleFactor 的值改变后,会触发所有屏幕的 QScreen::geometryChanged, 且会根据当前缩放 * \~chinese 更新所有QWindow的geometry(更新时保持窗口的真实大小不变,新窗口大小=窗口真实大小/新的缩放比)。另外,可在构造 * \~chinese DApplication 对象之前设置 \a Qt::AA_DisableHighDpiScaling 为 true,或添加环境变量 \a D_DISABLE_RT_SCREEN_SCALE * \~chinese 禁用实时缩放的支持。 * * \~chinese \sa QScreen::devicePixelRatio */ /** * \~english @brief DApplication::DApplication constructs an instance of DApplication. * \~english @param argc is the same as in the main function. * \~english @param argv is the same as in the main function. * * * \~chinese \brief DApplication::DApplication 用于构建 DApplication 实例的构造函数 * * \~chinese 对象构造时会判断环境变量 DTK_FORCE_RASTER_WIDGETS 的值,如果为 TRUE 则开启 * \~chinese Qt::AA_ForceRasterWidgets,为 FALSE 则不开启,当没有设置此环境变量时,如果 * \~chinese 编译时使用了宏 FORCE_RASTER_WIDGETS(龙芯和申威平台默认使用),则开启 * \~chinese Qt::AA_ForceRasterWidgets,否则不开启。 * \~chinese \param argc 作用同 QApplication::QApplication 参数 argc。 * \~chinese \param argv 作用同 QApplication::QApplication 参数 argv。 */ DApplication::DApplication(int &argc, char **argv) : QApplication(argc, argv), DObject(*new DApplicationPrivate(this)) { qputenv("QT_QPA_PLATFORM", QByteArray()); // FIXME: fix bug in nvidia prime workaround, do not know effoct, must test more!!! // 在龙芯和申威上,xcb插件中加载glx相关库(r600_dri.so等)会额外耗时1.xs(申威应该更长) if ( #ifdef FORCE_RASTER_WIDGETS QLatin1String("FALSE") != #else QLatin1String("TRUE") == #endif qgetenv("DTK_FORCE_RASTER_WIDGETS")) { setAttribute(Qt::AA_ForceRasterWidgets); } #ifdef Q_OS_LINUX // set qpixmap cache limit if (QGSettings::isSchemaInstalled("com.deepin.dde.dapplication")) { QGSettings gsettings("com.deepin.dde.dapplication", "/com/deepin/dde/dapplication/"); if (gsettings.keys().contains("qpixmapCacheLimit")) QPixmapCache::setCacheLimit(gsettings.get("qpixmap-cache-limit").toInt()); } // set QTapAndHoldGesture::timeout if (QGSettings::isSchemaInstalled("com.deepin.dde.touchscreen")) { QGSettings gsettings("com.deepin.dde.touchscreen"); if (gsettings.keys().contains("longpressDuration")) // NOTE(hualet): -100 is a workaround against the situation that that sometimes longpress // and release on Dock cause App launches which should be avoided. // // I guess it happens like this: longpress happens on Dock, // Dock menu shows(doesn't grab the mouse which is a bug can't be fixed easily), // user ends the longpress, DDE Dock recevies mouseReleaseEvent and checks for // QTapAndHoldGesture which is still not happening (maybe because the timer used is // a CoarseTimer?), so Dock treats the event as a normal mouseReleaseEvent, launches the // App or triggers the action. // // see: https://github.com/linuxdeepin/internal-discussion/issues/430 // // This workaround hopefully can fix most of this situations. QTapAndHoldGesture::setTimeout(gsettings.get("longpress-duration").toInt() - 100); } #endif // 初始化窗口主题类型 d_func()->resetApplicationThemeType(); } /*! * * \~chinese \enum DApplication::SingleScope * \~chinese DApplication::SingleScope 定义了 DApplication 单实例的效应范围。 * * \~chinese \var DApplication::SingleScope DApplication::UserScope * \~chinese 代表单实例的范围为用户范围,即同一个用户会话中不允许其他实例出现。 * * \~chinese \var DApplication::SingleScope DApplication::SystemScope * \~chinese 代表单实例的范围为系统范围,当前系统内只允许一个程序实例运行。 */ /** * \~english @brief DApplication::theme returns name of the theme that the application is currently using. * * \~english theme name can be one of light, dark, semidark or semilight. * * \~english @return the theme name. * * * \~chinese \property DApplication::theme * \~chinese \brief theme 属性表示当前程序使用的主题名称,目前可选的主题名称有 light、dark、semidark 和 semilight。 */ QString DApplication::theme() const { D_DC(DApplication); return d->theme(); } /** * @brief DApplication::setTheme for the application to use the theme we provide. * @param theme is the name of the theme we want to set. */ void DApplication::setTheme(const QString &theme) { D_D(DApplication); d->setTheme(theme); } #ifdef Q_OS_UNIX /*! * @brief DApplication::setOOMScoreAdj set Out-Of-Memory score * @param score vaild range is [-1000, 1000] * * \~chinese \brief DApplication::setOOMScoreAdj setOOMScoreAdj 用于调整当前进程的 * \~chinse Out-Of-Memory 分数(linux环境下),这个分数影响了内核在系统资源(内存)不足的 * \~chinse 情况下为了释放内存资源而挑选进程杀掉的算法,分数越高越容易被杀。 * \~chinese \param score 指定 oom-score,范围为 [-1000, 1000]。 */ void DApplication::setOOMScoreAdj(const int score) { if (score > 1000 || score < -1000) qWarning() << "OOM score adjustment value out of range: " << score; QFile f("/proc/self/oom_score_adj"); if (!f.open(QIODevice::WriteOnly)) { qWarning() << "OOM score adjust failed, open file error: " << f.errorString(); return; } f.write(std::to_string(score).c_str()); } #endif /** * \~chinese \brief DApplication::setSingleInstance setSingleInstance 用于将程序 * \~chinese 设置成单实例。 * \~chinese \param key 是确定程序唯一性的ID,一般使用程序的二进制名称即可。 * * \~chinese \note 一般情况下单实例的实现使用 QSystemSemaphore,如果你的程序需要在沙箱 * \~chinese 环境如 flatpak 中运行,可选的一套方案是通过 DTK_DBUS_SINGLEINSTANCE 这个 * \~chinese 编译宏来控制单实例使用 DBus 方案。 * * \~chinese \return 设置成功返回 true,否则返回 false。 */ bool DApplication::setSingleInstance(const QString &key) { return setSingleInstance(key, SystemScope); } /*! * \~chinese \brief DApplication::setSingleInstance 是一个重写函数,增加了控制单实例范围的 \a singleScope 参数。 * \~chinese 在Linux环境下默认使用DBus的方式实现单例判断,在其它环境或者设置了环境变量 DTK_USE_SEMAPHORE_SINGLEINSTANCE * \~chinese 时使用系统信号量的方式实现单例判断 * \~chinese \param key 是确定程序唯一性的ID,一般使用程序的二进制名称即可。 * \~chinese \param singleScope 用于指定单实例的影响范围,具体见 \a DApplication::SingleScope。 * \~chinese \return 设置成功返回 true,否则返回 false。 */ bool DApplication::setSingleInstance(const QString &key, SingleScope singleScope) { D_D(DApplication); QString k = key; #ifdef Q_OS_UNIX switch (singleScope) { case DApplication::UserScope: k += QString("_%1").arg(getuid()); break; default: break; } #endif #ifdef Q_OS_UNIX if (!qEnvironmentVariableIsSet("DTK_USE_SEMAPHORE_SINGLEINSTANCE")) { return d->setSingleInstanceByDbus(k); } #endif return d->setSingleInstanceBySemaphore(k); } /*! * \~english \brief DApplication::loadTranslator loads translate file form * \~english system or application data path; * \~english \param localeFallback, a list of fallback locale you want load. * \~english \return load success * * \~chinese \brief DApplication::loadTranslator 加载程序的翻译文件。 * \~chinese 使用这个函数需要保证翻译文件必须正确命名: 例如程序名叫 dde-dock, * \~chinese 那么翻译文件在中文locale下的名称必须是 dde-dock_zh_CN.qm;翻译文件还需要放置 * \~chinese 在特定的位置,此函数会按照优先级顺序在以下目录中查找翻译文件: * \~chinese 1. ~/.local/share/APPNAME/translations; * \~chinese 2. /usr/local/share/APPNAME/translations; * \~chinese 3. /usr/share/APPNAME/translations; * * \~chinese \param localeFallback 指定了回退的locale列表,默认只有系统locale。 * \~chinese \return 加载成功返回 true,否则返回 false。 */ bool DApplication::loadTranslator(QList localeFallback) { D_D(DApplication); d->loadDtkTranslator(localeFallback); QList translateDirs; auto appName = applicationName(); //("/home/user/.local/share", "/usr/local/share", "/usr/share") auto dataDirs = DStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); for (const auto &path : dataDirs) { DPathBuf DPathBuf(path); translateDirs << DPathBuf / appName / "translations"; } DPathBuf runDir(this->applicationDirPath()); translateDirs << runDir.join("translations"); DPathBuf currentDir(QDir::currentPath()); translateDirs << currentDir.join("translations"); #ifdef DTK_STATIC_TRANSLATION translateDirs << DPathBuf(":/dtk/translations"); #endif return d->loadTranslator(translateDirs, appName, localeFallback); } /*! * \~chinese \brief DApplication::loadDXcbPlugin 强制程序使用的平台插件到dxcb。 * \~chinese 这个函数的工作原理是通过设置 QT_QPA_PLATFORM 来影响平台插件的加载,所以此函数 * \~chinese 必须在 DApplication 实例创建前进行调用。 * \~chinese \return 设置成功返回 true,否则返回 false。 */ bool DApplication::loadDXcbPlugin() { Q_ASSERT_X(!qApp, "DApplication::loadDxcbPlugin", "Must call before QGuiApplication defined object"); if (!QPlatformIntegrationFactory::keys().contains(DXCB_PLUGIN_KEY)) { return false; } // fix QGuiApplication::platformName() to xcb qputenv("DXCB_FAKE_PLATFORM_NAME_XCB", "true"); return qputenv("QT_QPA_PLATFORM", DXCB_PLUGIN_KEY); } /*! * \~chinese \brief DApplication::isDXcbPlatform 检查当前程序是否使用了dxcb平台插件。 * \~chinese \return 正在使用返回 true,否则返回 false。 */ bool DApplication::isDXcbPlatform() { if (!qApp) return false; static bool _is_dxcb = qApp->platformName() == DXCB_PLUGIN_KEY || qApp->property(DXCB_PLUGIN_SYMBOLIC_PROPERTY).toBool(); return _is_dxcb; } /*! * \~chinese \brief DApplication::buildDtkVersion 返回编译时的dtk版本; */ int DApplication::buildDtkVersion() { return DtkBuildVersion::value; } /*! * \~chinese \brief DApplication::runtimeDtkVersion 返回运行时的dtk版本; */ int DApplication::runtimeDtkVersion() { return DTK_VERSION; } /*! * \~chinese \brief DApplication::registerDDESession 用于跟 startdde 进行通信,告知 * \~chinese startdde 进程已经启动成功。 * \~chinese \note 只有DDE系统组件需要使用此函数,普通应用无需使用。 */ void DApplication::registerDDESession() { #ifdef Q_OS_LINUX QString envName("DDE_SESSION_PROCESS_COOKIE_ID"); QByteArray cookie = qgetenv(envName.toUtf8().data()); qunsetenv(envName.toUtf8().data()); if (!cookie.isEmpty()) { DDBusSender() .service("com.deepin.SessionManager") .path("/com/deepin/SessionManager") .interface("com.deepin.SessionManager") .method("Register") .arg(QString(cookie)) .call(); } #endif } /*! * \~chinese \brief DApplication::customQtThemeConfigPathByUserHome * \~chinese 根据用户家目录设置Qt主题配置文件的目录。 * \~chinese \param home 家目录,不要以 "/" 结尾 * \~chinese \warning 必须在构造 DApplication 对象之前调用 * \~chinese \sa DApplication::customQtThemeConfigPathByUserHome */ void DApplication::customQtThemeConfigPathByUserHome(const QString &home) { customQtThemeConfigPath(home + "/.config"); } /*! * \~chinese \brief DApplication::customQtThemeConfigPath * \~chinese 自定义Qt主题配置文件的路径。 * * \~chinese 默认文件通常为 "~/.config/deepin/qt-theme.ini" * \~chinese 其中包含应用的图标主题、字体、、屏幕缩放等相关的配置项。可应用于以root用户启动的 * \~chinese 应用,需要跟随某个一般用户的主题设置项。 * \~chinese \a path 中不包含 "/deepin/qt-theme.ini" 部分,如:path = "/tmp", * \~chinese 则配置文件路径为:"/tmp/deepin/qt-theme.ini"。 * \~chinese \param path 不要以 "/" 结尾 * \~chinese \warning 必须在构造 DApplication 对象之前调用 */ void DApplication::customQtThemeConfigPath(const QString &path) { Q_ASSERT_X(!qApp, "DApplication::customQtThemeConfigPath", "Must call before QGuiApplication defined object"); qputenv(QT_THEME_CONFIG_PATH, path.toLocal8Bit()); } /*! * \~chinese \brief DApplication::customizedQtThemeConfigPath * \~chinese \return 返回自定义的 Qt 主题配置文件路径,未设置过此路径时返回为空。 * \~chinese \sa DApplication::customQtThemeConfigPath */ QString DApplication::customizedQtThemeConfigPath() { return QString::fromLocal8Bit(qgetenv(QT_THEME_CONFIG_PATH)); } /** * \~english @brief DApplication::productName returns the product name of this application. * * \~english It's mainly used to construct an about dialog of the application. * * \~english @return the product name of this application if set, otherwise the applicationDisplayName. * * * \~chinese \property DApplication::productName * \~chinese \brief productName属性是程序的产品名称, * \~chinese 产品名称不同与 applicationName ,应该是类似如“深度终端”,而不是 deepin-terminal, * \~chinese 这个名称主要用于在程序的关于对话框中进行展示。 * \~chinese 如果没有手动通过 setProductName 来设置,会尝试使用 QApplication::applicationDisplayName 来充当产品名称。 * * \sa productIcon, aboutDialog */ QString DApplication::productName() const { D_DC(DApplication); return d->productName.isEmpty() ? applicationDisplayName() : d->productName; } /** * \~english @brief DApplication::setProductName sets the product name of this application. * \~english @param productName is the product name to be set. */ void DApplication::setProductName(const QString &productName) { D_D(DApplication); d->productName = productName; } /** * \~english @brief DApplication::productIcon returns the product icon of this application. * * \~english It's mainly used to construct an about dialog of the application. * * \~english @return the product icon of this application if set, otherwise empty. * * * \~chinese \property DApplication::productIcon * \~chinese \brief productIcon 属性是程序的产品图标, * \~chinese 主要用于在关于对话框中进行展示。 * * \sa productName, aboutDialog */ const QIcon &DApplication::productIcon() const { D_DC(DApplication); return d->productIcon; } /** * \~english @brief DApplication::setProductIcon sets the product icon of this application. * \~english @param productIcon is the product icon to be set. */ void DApplication::setProductIcon(const QIcon &productIcon) { D_D(DApplication); d->productIcon = productIcon; } /** * \~english @brief DApplication::applicationLicense returns the license used by this application. * * \~english It's mainly used to construct an about dialog of the application. * * \~english @return the license used by this application. * * * \~chinese \property DApplication::applicationLicense * \~chinese \brief applicationLicense 属性是程序所使用的授权协议; * \~chinese 主要用于在关于对话框中进行展示,默认值为 GPLv3。 */ QString DApplication::applicationLicense() const { D_DC(DApplication); return d->appLicense; } /** * \~english @brief DApplication::setApplicationLicense sets the license of this application. * \~english @param license is the license to be set. */ void DApplication::setApplicationLicense(const QString &license) { D_D(DApplication); d->appLicense = license; } /** * \~english @brief DApplication::applicationDescription returns the long description of the application. * * \~english It's mainly used to construct an about dialog of the application. * * \~english @return the description of the application if set, otherwise empty. * * * \~chinese \property DApplication::applicationDescription * \~chinese \brief applicationDescription 属性记录了程序的描述信息,主要用于关于对话框中的信息展示。 */ QString DApplication::applicationDescription() const { D_DC(DApplication); return d->appDescription; } /** * \~english @brief DApplication::setApplicationDescription sets the description of the application. * \~english @param description is description to be set. */ void DApplication::setApplicationDescription(const QString &description) { D_D(DApplication); d->appDescription = description; } /*! * \~chinese \property DApplication::applicationHomePage * \~chinese \brief applicationHomePage 属性记录程序的主页网址,主要用于在关于对话框中进行展示。 */ QString DApplication::applicationHomePage() const { D_DC(DApplication); return d->homePage; } void DApplication::setApplicationHomePage(const QString &link) { D_D(DApplication); d->homePage = link; } /** * \~english @brief DApplication::applicationAcknowledgementPage returns the acknowlegement page of the application. * * \~english It's mainly used to construct an about dialog of the application. * \~english @return the acknowlegement page of the application if set, otherwise empty. * * * \~chinese \property DApplication::applicationAcknowledgementPage * \~chinese \brief applicationAcknowledgementPage 属性记录程序的鸣谢信息网址,主要用于在关于对话框中进行展示。 */ QString DApplication::applicationAcknowledgementPage() const { D_DC(DApplication); return d->acknowledgementPage; } /** * \~english @brief DApplication::setApplicationAcknowledgementPage sets the acknowlegement page of the application. * \~english @param link is the acknowlegement page link to be shown in the about dialog. */ void DApplication::setApplicationAcknowledgementPage(const QString &link) { D_D(DApplication); d->acknowledgementPage = link; } /*! * \~chinese \property DApplication::applicationAcknowledgementVisible * \~chinese \brief applicationAcknowledgementVisible 属性控制是否显示关于对话框中的鸣谢地址显示。 */ bool DApplication::applicationAcknowledgementVisible() const { D_DC(DApplication); return d->acknowledgementPageVisible; } void DApplication::setApplicationAcknowledgementVisible(bool visible) { D_D(DApplication); d->acknowledgementPageVisible = visible; } /** * \~english @brief DApplication::aboutDialog returns the about dialog of this application. * * \~english If the about dialog is not set, it will automatically construct one. * * \~english @return the about dialog instance. * * * \~chinese \brief DApplication::aboutDialog 返回一个基于当前程序信息的关于对话框。 * \~chinese 此对话框可以通过 DApplication::setAboutDialog 进行设置,如果没有设置就使用此函数进行获取, * \~chinese 系统会创建一个新的关于对话框。 * * \sa setAboutDialog */ DAboutDialog *DApplication::aboutDialog() { D_D(DApplication); return d->aboutDialog; } /** * \~english @brief DApplication::setAboutDialog sets the about dialog of this application. * * \~english It's mainly used to override the auto-constructed about dialog which is not * \~english a common case, so please do double check before using this method. * * \~english @param aboutDialog * * * \~chinese \brief DApplication::setAboutDialog 为当前程序设置一个关于对话框。 * * \sa aboutDialog */ void DApplication::setAboutDialog(DAboutDialog *aboutDialog) { D_D(DApplication); if (d->aboutDialog && d->aboutDialog != aboutDialog) { d->aboutDialog->deleteLater(); } d->aboutDialog = aboutDialog; } /*! * \~chinese \property DApplication::visibleMenuShortcutText * \~chinese \brief visibleMenuShortcutText 属性代表了程序中菜单项是否显示对应的快捷键。 */ bool DApplication::visibleMenuShortcutText() const { D_DC(DApplication); return d->visibleMenuShortcutText; } void DApplication::setVisibleMenuShortcutText(bool value) { D_D(DApplication); d->visibleMenuShortcutText = value; } /*! * \~chinese \property DApplication::visibleMenuCheckboxWidget * \~chinese \brief visibleMenuCheckboxWidget 属性代表了程序中菜单项是否显示Checkbox控件。 */ bool DApplication::visibleMenuCheckboxWidget() const { D_DC(DApplication); return d->visibleMenuCheckboxWidget; } void DApplication::setVisibleMenuCheckboxWidget(bool value) { D_D(DApplication); d->visibleMenuCheckboxWidget = value; } /*! * \~chinese \property DApplication::visibleMenuIcon * \~chinese \brief visibleMenuIcon 属性代表了程序中菜单项是否显示图标。 */ bool DApplication::visibleMenuIcon() const { D_DC(DApplication); return d->visibleMenuIcon; } void DApplication::setVisibleMenuIcon(bool value) { D_D(DApplication); d->visibleMenuIcon = value; } /** * \~english @brief DApplication::handleHelpAction * * \~english Triggered when user clicked the help menu item of this window's titlebar, * \~english default action is to open the user manual of this program, override this * \~english method if you want to change the default action. * * \~chinese \brief DApplication::handleHelpAction 函数在用户点击窗口标题栏的帮助按钮 * \~chinese 时触发,默认实现为打开当前程序的帮助手册,子类可以重现实现此函数以覆盖其默认行为。 */ void DApplication::handleHelpAction() { #ifdef Q_OS_LINUX QString appid = applicationName(); // new interface use applicationName as id QDBusInterface manual("com.deepin.Manual.Open", "/com/deepin/Manual/Open", "com.deepin.Manual.Open"); QDBusReply reply = manual.call("ShowManual", appid); if (reply.isValid()) { qDebug() << "call com.deepin.Manual.Open success"; return; } qDebug() << "call com.deepin.Manual.Open failed" << reply.error(); // fallback to old interface QProcess::startDetached("dman", QStringList() << appid); #else qWarning() << "not support dman now"; #endif } /** * \~english @brief DApplication::handleAboutAction * * \~english Triggered when user clicked the about menu item of this window's titlebar, * \~english default action is to show the about dialog of this window(if there is one), * \~english override this method if you want to change the default action. * * \~chinese \brief DApplication::handleAboutAction 函数在用户点击窗口标题栏的关于按钮 * \~chinese 时触发,默认实现为打开程序关于对话框,子类可以重现实现此函数以覆盖其默认行为。 */ void DApplication::handleAboutAction() { D_D(DApplication); if (d->aboutDialog) { d->aboutDialog->show(); return; } DAboutDialog *aboutDialog = new DAboutDialog(activeWindow()); aboutDialog->setProductName(productName()); aboutDialog->setProductIcon(productIcon()); aboutDialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion())); aboutDialog->setDescription(applicationDescription()); if (!applicationLicense().isEmpty()) { aboutDialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense())); } if (!applicationAcknowledgementPage().isEmpty()) { aboutDialog->setAcknowledgementLink(applicationAcknowledgementPage()); } aboutDialog->setAcknowledgementVisible(d->acknowledgementPageVisible); aboutDialog->exec(); aboutDialog->deleteLater(); } /** * \~english @brief DApplication::handleQuitAction * * \~english Triggered when user clicked the exit menu item of this window's titlebar, * \~english default action is to quit this program, you can try to save your data before * \~english the program quitting by connecting to the aboutToQuit signal of this application. * \~english override this method if you want to change the default action. * * \~chinese \brief DApplication::handleQuitAction 函数在用户点击窗口标题栏的关闭按钮 * \~chinese 时触发,默认行为是退出整个程序,子类可以重写此函数以覆盖其行为。 */ void DApplication::handleQuitAction() { quit(); } static inline bool basePrintPropertiesDialog(const QWidget *w) { while (w) { if (w->inherits("QPrintPropertiesDialog") || w->inherits("QPageSetupDialog")) { return true; } w = w->parentWidget(); } return false; } bool DApplication::notify(QObject *obj, QEvent *event) { switch((int)event->type()) { case QEvent::PolishRequest: { // Fixed the style for the menu widget to dlight // ugly code will no longer needed. static QStyle *light_style = nullptr; if (QMenu *menu = qobject_cast(obj)) { if (!menu->testAttribute(Qt::WA_SetStyle)) { if (!light_style) { light_style = QStyleFactory::create("dlight"); } if (light_style) { menu->setStyle(light_style); } } } #ifdef Q_OS_LINUX else if (QWidget *widget = qobject_cast(obj)) { if (!widget->testAttribute(Qt::WA_SetStyle) && (widget->inherits("QPrintDialog") || widget->inherits("QPrintPropertiesDialog") || widget->inherits("QPageSetupDialog") || widget->inherits("QPrintPreviewDialog") || (widget->inherits("QComboBoxPrivateContainer") && basePrintPropertiesDialog(widget)))) { if (!light_style) { light_style = QStyleFactory::create("dlight"); } if (light_style) { widget->setStyle(light_style); if (widget->style() != light_style) { widget->style()->deleteLater(); widget->d_func()->setStyle_helper(light_style, false); } for (QWidget *w : widget->findChildren()) { w->setStyle(light_style); } } } } #endif break; } case QEvent::ParentChange: { if (QWidget *widget = qobject_cast(obj)) { DThemeManager::instance()->updateThemeOnParentChanged(widget); } break; } // 处理应用程序和主窗口的调色板变化事件,以此更新程序/窗口的主题类型 case QEvent::ApplicationPaletteChange: { // 只处理发送给application对象的事件 if (obj == this) { D_D(DApplication); d->resetApplicationThemeType(); } break; } case QEvent::PaletteChange: { D_D(DApplication); if (QWidget *window = qobject_cast(obj)) { if (window->isTopLevel()) { d->resetWindowThemeType(window); } } break; } } return QApplication::notify(obj, event); } int DtkBuildVersion::value = 0; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dapplication.h000066400000000000000000000117651352002233700205650ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DAPPLICATION_H #define DAPPLICATION_H #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE #define DAPPLICATION_XSTRING(s) DAPPLICATION_STRING(s) #define DAPPLICATION_STRING(s) #s class DApplication; class DApplicationPrivate; class DAboutDialog; #if defined(qApp) #undef qApp #endif #define qApp (static_cast(QCoreApplication::instance())) class LIBDTKWIDGETSHARED_EXPORT DApplication : public QApplication, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT D_DECLARE_PRIVATE(DApplication) Q_PROPERTY(bool visibleMenuShortcutText READ visibleMenuShortcutText WRITE setVisibleMenuShortcutText) Q_PROPERTY(bool visibleMenuCheckboxWidget READ visibleMenuCheckboxWidget WRITE setVisibleMenuCheckboxWidget) Q_PROPERTY(bool visibleMenuIcon READ visibleMenuIcon WRITE setVisibleMenuIcon) public: DApplication(int &argc, char **argv); enum SingleScope { UserScope, SystemScope }; QString theme() const; void setTheme(const QString &theme); #ifdef Q_OS_UNIX void setOOMScoreAdj(const int score); #endif bool setSingleInstance(const QString &key); bool setSingleInstance(const QString &key, SingleScope singleScope); bool loadTranslator(QList localeFallback = QList() << QLocale::system()); //! warning: Must call before QGuiApplication defined object static bool loadDXcbPlugin(); static bool isDXcbPlatform(); // return the libdtkwidget version of build application static int buildDtkVersion(); // return the libdtkwidget version of runing application static int runtimeDtkVersion(); // let startdde know that we've already started. static void registerDDESession(); static void customQtThemeConfigPathByUserHome(const QString &home); static void customQtThemeConfigPath(const QString &path); static QString customizedQtThemeConfigPath(); // meta information that necessary to create a about dialog for the application. QString productName() const; void setProductName(const QString &productName); const QIcon &productIcon() const; void setProductIcon(const QIcon &productIcon); QString applicationLicense() const; void setApplicationLicense(const QString &license); QString applicationDescription() const; void setApplicationDescription(const QString &description); QString applicationHomePage() const; void setApplicationHomePage(const QString &link); QString applicationAcknowledgementPage() const; void setApplicationAcknowledgementPage(const QString &link); bool applicationAcknowledgementVisible() const; void setApplicationAcknowledgementVisible(bool visible); DAboutDialog *aboutDialog(); void setAboutDialog(DAboutDialog *aboutDialog); bool visibleMenuShortcutText() const; void setVisibleMenuShortcutText(bool value); bool visibleMenuCheckboxWidget() const; void setVisibleMenuCheckboxWidget(bool value); bool visibleMenuIcon() const; void setVisibleMenuIcon(bool value); #ifdef VERSION static inline QString buildVersion(const QString &fallbackVersion) { QString autoVersion = DAPPLICATION_XSTRING(VERSION); if (autoVersion.isEmpty()) { autoVersion = fallbackVersion; } return autoVersion; } #else static inline QString buildVersion(const QString &fallbackVersion) { return fallbackVersion; } #endif Q_SIGNALS: void newInstanceStarted(); //###(zccrs): Depend the Qt platform theme plugin(from the package: dde-qt5integration) void iconThemeChanged(); //###(zccrs): Emit form the Qt platform theme plugin(from the package: dde-qt5integration) void screenDevicePixelRatioChanged(QScreen *screen); protected: virtual void handleHelpAction(); virtual void handleAboutAction(); virtual void handleQuitAction(); bool notify(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; private: friend class DTitlebarPrivate; friend class DMainWindowPrivate; }; class DtkBuildVersion { public: static int value; }; #ifndef LIBDTKWIDGET_LIBRARY class Q_DECL_HIDDEN _DtkBuildVersion { public: _DtkBuildVersion() { DtkBuildVersion::value = DTK_VERSION; } }; static _DtkBuildVersion _dtk_build_version; #endif DWIDGET_END_NAMESPACE #endif // DAPPLICATION_H dtkwidget-2.1.1/src/widgets/darrowbutton.cpp000066400000000000000000000200061352002233700211670ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "darrowbutton.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE ArrowButtonIcon::ArrowButtonIcon(QWidget *parent) : QLabel(parent) { setAttribute(Qt::WA_TransparentForMouseEvents); } void ArrowButtonIcon::setArrowDirection(int direction) { m_direction = direction; style()->unpolish(this); style()->polish(this);// force a stylesheet recomputation } void ArrowButtonIcon::setButtonState(int state) { m_buttonState = state; style()->unpolish(this); style()->polish(this);// force a stylesheet recomputation } int ArrowButtonIcon::arrowDirection() const { return m_direction; } int ArrowButtonIcon::buttonState() const { return m_buttonState; } /*! \~chinese \class DArrowButton \~chinese \brief 可以使用 DArrowButton 类快速创建箭头形状的按钮。 \~chinese \image html DArrowButton.png \~chinese DArrowButton 提供了快速的方式创建包含箭头标识的按钮,并允许通过 setArrowDirection() 设置箭头方向来直接改按钮的箭头图标的方向。 此外,还可以通过 \ref arrowButtonDirection 和 \ref arrowButtonState 属性获取和修改箭头按钮的状态。 \~chinese \sa QLabel */ /*! \~english \class DArrowButton \~english \brief DArrowButton allowed you create button with arrow icon conveniently. \~english \image html DArrowButton.png \~english You can use DArrowButton to create button with arrow icon, and it also allowed you update the arrow direction by calling setArrowDirection() . You can also update arrow state via arrowButtonDirection and arrowButtonState property. \~english \sa QLabel */ /*! * \~english \brief Construct a new DArrowButton with DArrowButton::ArrowDown direction * \~chinese \brief 构造一个 DArrowButton 箭头按钮,默认箭头方向向下 */ DArrowButton::DArrowButton(QWidget *parent) : QLabel(parent) { DThemeManager::registerWidget(this); setFixedSize(IMAGE_BUTTON_WIDTH, BUTTON_HEIGHT); m_normalLabel = new ArrowButtonIcon(this); m_normalLabel->setObjectName("ArrowButtonIconNormal"); m_normalLabel->setFixedSize(size()); m_normalLabel->move(0, 0); m_hoverLabel = new ArrowButtonIcon(this); m_hoverLabel->setObjectName("ArrowButtonIconHover"); m_hoverLabel->setFixedSize(size()); m_hoverLabel->move(0, 0); m_hoverLabel->setVisible(false); m_pressLabel = new ArrowButtonIcon(this); m_pressLabel->setObjectName("ArrowButtonIconPress"); m_pressLabel->setFixedSize(size()); m_pressLabel->move(0, 0); m_pressLabel->setVisible(false); setArrowDirection(DArrowButton::ArrowDown); } /*! * \~english \brief Set arrow direction of the button * \~chinese \brief 设置按钮的箭头方向 */ void DArrowButton::setArrowDirection(ArrowDirection direction) { m_arrowDirection = direction; updateIconDirection(direction); } /*! * \~english \brief Get the arrow direction of the button. * \~chinese \brief 获取箭头方向 */ int DArrowButton::arrowDirection() const { return m_arrowDirection; } /*! * \~english \brief Set the button state. * \~chinese \brief 设置按钮状态 */ void DArrowButton::setButtonState(ArrowButtonState state) { m_buttonState = state; updateIconState(state); } /*! * \~english \brief Get the button state * \~chinese \brief 获得按钮状态 */ int DArrowButton::buttonState() const { return m_buttonState; } void DArrowButton::mousePressEvent(QMouseEvent *event) { Q_UNUSED(event) Q_EMIT mousePress(); m_normalLabel->setVisible(false); m_hoverLabel->setVisible(false); m_pressLabel->setVisible(true); setButtonState(DArrowButton::ArrowStatePress); } void DArrowButton::mouseReleaseEvent(QMouseEvent *event) { Q_UNUSED(event) Q_EMIT mouseRelease(); m_normalLabel->setVisible(true); m_hoverLabel->setVisible(false); m_pressLabel->setVisible(false); setButtonState(DArrowButton::ArrowStateNormal); } /* \reimp */ void DArrowButton::enterEvent(QEvent *) { Q_EMIT mouseEnter(); } /* \reimp */ void DArrowButton::leaveEvent(QEvent *) { Q_EMIT mouseLeave(); } void DArrowButton::initButtonState() { // QStateMachine * machine = new QStateMachine(this); // QState * hoverState = new QState(machine); // hoverState->assignProperty(this,"pos",QPoint(0,0)); // QState * hideState = new QState(machine); // hideState->assignProperty(this,"pos",QPoint(0,height())); // machine->setInitialState(hoverState); // QPropertyAnimation *sa = new QPropertyAnimation(this, "pos"); // sa->setDuration(200); // sa->setEasingCurve(QEasingCurve::InSine); // connect(sa,&QPropertyAnimation::finished,this,&Panel::hasShown); // QPropertyAnimation *ha = new QPropertyAnimation(this, "pos"); // ha->setDuration(200); // ha->setEasingCurve(QEasingCurve::InSine); // connect(ha,&QPropertyAnimation::finished,this,&Panel::hasHidden); // QSignalTransition *ts1 = hoverState->addTransition(this,SIGNAL(startHide()), hideState); // ts1->addAnimation(ha); // connect(ts1,&QSignalTransition::triggered,[=](int value = 2){ // m_HSManager->SetState(value); // }); // QSignalTransition *ts2 = hideState->addTransition(this,SIGNAL(startShow()),hoverState); // ts2->addAnimation(sa); // connect(ts2,&QSignalTransition::triggered,[=](int value = 0){ // m_HSManager->SetState(value); // }); // machine->start(); } /*! * \enum DArrowButton::ArrowDirection * * \~english \brief The ArrowDirection enum indicate the direction of the arrow icon in the arrown button * \~chinese \brief DArrowButton::ArrowDirection 表示箭头图标的方向。 * * \var DArrowButton::ArrowDirection DArrowButton::ArrowUp * \~english Up direction * \~chinese 箭头朝上 * * \var DArrowButton::ArrowDirection DArrowButton::ArrowDown * \~english Down direction * \~chinese 箭头朝下 * * \var DArrowButton::ArrowDirection DArrowButton::ArrowLeft * \~english Left direction * \~chinese 箭头朝左 * * \var DArrowButton::ArrowDirection DArrowButton::ArrowRight * \~english Right direction * \~chinese 箭头朝右 */ /*! * \enum DArrowButton::ArrowButtonState * * \~english \brief The ArrowDirection enum indicate the direction of the arrow icon in the arrown button * \~chinese \brief DArrowButton::ArrowDirection 表示箭头图标的方向。 * * \var DArrowButton::ArrowButtonState DArrowButton::ArrowStateNormal * \~english Normal state * \~chinese 普通状态 * * \var DArrowButton::ArrowButtonState DArrowButton::ArrowStateHover * \~english Mouse hover state * \~chinese 鼠标在按钮上方悬停状态 * * \var DArrowButton::ArrowButtonState DArrowButton::ArrowStatePress * \~english Button got pressed state * \~chinese 按钮被按下状态 */ /*! * \~english \brief Update arrow direction of the button * \~chinese \brief 更新箭头按钮中箭头的方向 */ void DArrowButton::updateIconDirection(ArrowDirection direction) { m_normalLabel->setArrowDirection(direction); m_hoverLabel->setArrowDirection(direction); m_pressLabel->setArrowDirection(direction); } /*! * \~english \brief Update icon state of the button * \~chinese \brief 更新箭头按钮中图标的状态 */ void DArrowButton::updateIconState(ArrowButtonState state) { m_normalLabel->setButtonState(state); m_hoverLabel->setButtonState(state); m_pressLabel->setButtonState(state); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/darrowbutton.h000066400000000000000000000050411352002233700206360ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DARROWBUTTON_H #define DARROWBUTTON_H #include #include #include #include #include #include #include "dtkwidget_global.h" #include "dconstants.h" DWIDGET_BEGIN_NAMESPACE class ArrowButtonIcon : public QLabel { Q_OBJECT Q_PROPERTY(int arrowButtonDirection READ arrowDirection) Q_PROPERTY(int arrowButtonState READ buttonState) public: explicit ArrowButtonIcon(QWidget *parent = 0); void setArrowDirection(int direction); void setButtonState(int state); int arrowDirection() const; int buttonState() const; private: int m_direction; int m_buttonState; }; class LIBDTKWIDGETSHARED_EXPORT DArrowButton : public QLabel { Q_OBJECT public: enum ArrowDirection { ArrowUp, ArrowDown, ArrowLeft, ArrowRight }; enum ArrowButtonState { ArrowStateNormal, ArrowStateHover, ArrowStatePress }; explicit DArrowButton(QWidget *parent = 0); void setArrowDirection(ArrowDirection direction); int arrowDirection() const; int buttonState() const; protected: void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void enterEvent(QEvent *); void leaveEvent(QEvent *); Q_SIGNALS: void mousePress(); void mouseRelease(); void mouseEnter(); void mouseLeave(); private: void initButtonState(); void setButtonState(ArrowButtonState state); void updateIconDirection(ArrowDirection direction); void updateIconState(ArrowButtonState state); private: ArrowButtonIcon *m_normalLabel = NULL; ArrowButtonIcon *m_hoverLabel = NULL; ArrowButtonIcon *m_pressLabel = NULL; ArrowDirection m_arrowDirection = ArrowDown; ArrowButtonState m_buttonState = ArrowStateNormal; }; DWIDGET_END_NAMESPACE #endif // DARROWBUTTON_H dtkwidget-2.1.1/src/widgets/darrowlineexpand.cpp000066400000000000000000000066631352002233700220200ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "darrowlineexpand.h" #include "dthememanager.h" #include DWIDGET_BEGIN_NAMESPACE ArrowHeaderLine::ArrowHeaderLine(QWidget *parent) : DHeaderLine(parent) { m_arrowButton = new DArrowButton(this); connect(m_arrowButton, &DArrowButton::mouseRelease, this, &ArrowHeaderLine::mousePress); setContent(m_arrowButton); setFixedHeight(EXPAND_HEADER_HEIGHT); } void ArrowHeaderLine::setExpand(bool value) { if (value) m_arrowButton->setArrowDirection(DArrowButton::ArrowUp); else m_arrowButton->setArrowDirection(DArrowButton::ArrowDown); } void ArrowHeaderLine::mousePressEvent(QMouseEvent *) { Q_EMIT mousePress(); } void ArrowHeaderLine::reverseArrowDirection() { if (m_arrowButton->arrowDirection() == DArrowButton::ArrowUp) m_arrowButton->setArrowDirection(DArrowButton::ArrowDown); else m_arrowButton->setArrowDirection(DArrowButton::ArrowUp); } /** * \~chinese \class DArrowLineExpand * \~chinese \brief 一个美观的可展开的控件 * \~chinese * \~chinese DArrowLineExpand 继承自 DBaseExpand 并提供了了 ArrowHeaderLine (一个带有箭头标示的按钮)作为其固定的标题控件,也就是说跟 DBaseExpand 相比省去了提供标题控件的步骤,只需要提供内容控件即可,如果需要自定义标题控件应该使用 DBaseExpand 类。 * \~chinese \sa DBaseExpand */ /** * \~chinese \brief 构造一个 DArrowLineExpand 实例 * \~chinese * \~chinese \param parent 为实例的父控件 */ DArrowLineExpand::DArrowLineExpand(QWidget *parent) : DBaseExpand(parent) { m_headerLine = new ArrowHeaderLine(this); m_headerLine->setExpand(expand()); connect(m_headerLine, &ArrowHeaderLine::mousePress, [=]{ setExpand(!expand()); }); setHeader(m_headerLine); } /** * \~chinese \brief 设置标题要显示的文字 * \~chinese * \~chinese \param title 标题内容 */ void DArrowLineExpand::setTitle(const QString &title) { m_headerLine->setTitle(title); } /** * \~chinese \brief 设置是否展开以显示内容控件 * \~chinese * \~chinese \param value 为 true 即为显示,反之则反 */ void DArrowLineExpand::setExpand(bool value) { //Header's arrow direction change here m_headerLine->setExpand(value); DBaseExpand::setExpand(value); } /** * \~chinese \brief 获取标题控件 * \~chinese \return 标题控件 * \~chinese \sa ArrowHeaderLine DHeaderLine DBaseLine */ DBaseLine *DArrowLineExpand::headerLine() { return m_headerLine; } void DArrowLineExpand::setHeader(QWidget *header) { DBaseExpand::setHeader(header); } void DArrowLineExpand::resizeEvent(QResizeEvent *e) { m_headerLine->setFixedWidth(e->size().width()); DBaseExpand::resizeEvent(e); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/darrowlineexpand.h000066400000000000000000000032241352002233700214530ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DARROWLINEEXPAND_H #define DARROWLINEEXPAND_H #include #include "dtkwidget_global.h" #include "dbaseexpand.h" #include "darrowbutton.h" #include "dbaseline.h" #include "dheaderline.h" DWIDGET_BEGIN_NAMESPACE class ArrowHeaderLine : public DHeaderLine { Q_OBJECT public: ArrowHeaderLine(QWidget *parent = 0); void setExpand(bool value); Q_SIGNALS: void mousePress(); protected: void mousePressEvent(QMouseEvent *); private: void reverseArrowDirection(); DArrowButton *m_arrowButton = NULL; }; class LIBDTKWIDGETSHARED_EXPORT DArrowLineExpand : public DBaseExpand { Q_OBJECT public: explicit DArrowLineExpand(QWidget *parent = 0); void setTitle(const QString &title); void setExpand(bool value); DBaseLine *headerLine(); private: void setHeader(QWidget *header); void resizeEvent(QResizeEvent *e); private: ArrowHeaderLine *m_headerLine = NULL; }; DWIDGET_END_NAMESPACE #endif // DARROWLINEEXPAND_H dtkwidget-2.1.1/src/widgets/darrowrectangle.cpp000066400000000000000000001067651352002233700216410ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "darrowrectangle.h" #include "dplatformwindowhandle.h" #include "dapplication.h" #include "private/darrowrectangle_p.h" #ifdef Q_OS_LINUX #include #include #endif #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DArrowRectangle * \~english \brief The DArrowRectangle class provides a widget that has an arrow on one * \~english of its four borders. * * \~english It's usually used as a container of some other widgets, * \~english see DArrowRectangle::setContent() */ /*! * \~chinese \class DArrowRectangle * \~chinese \brief DArrowRectangle 提供了可以在四个边中的任意一个边显示箭头的矩形控件 * * \~chinese 通常用于作为其他控件的容器,将其显示在矩形内作为内容控件 * \~chinese \sa DArrowRectangle::setContent() */ /** * \~english \enum DArrowRectangle::ArrowDirection * \~english \brief The ArrowDirection enum contains the possible directions that * \~english the DArrowRectangle's arrow may point to. * \~english \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowLeft * \~english indicates the arrow of this rectangle will point left * \~english \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowRight * \~english indicates the arrow of this rectangle will point right * \~english \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowTop * \~english indicates the arrow of this rectangle will point up * \~english \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowBottom * \~english indicates the arrow of this rectangle will point down */ /** * \~chinese \enum DArrowRectangle::ArrowDirection * \~chinese \brief 箭头方向枚举包含 DArrowRectangle 的箭头可能指向的可能方向 * \~chinese \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowLeft * \~chinese 指示此矩形的箭头将指向左侧 * \~chinese \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowRight * \~chinese 指示此矩形的箭头将指向右侧 * \~chinese \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowTop * \~chinese 指示此矩形的箭头将指向上方 * \~chinese \var DArrowRectangle::ArrowDirection DArrowRectangle::ArrowBottom * \~chinese 指示此矩形的箭头将向下指向 */ /*! * \~english \enum DArrowRectangle::FloatMode * \~english \brief The FloatMode enum decide the WindowType when DArrowRectangle show * \~english \var DArrowRectangle::FloatMode DArrowRectangle::FloatWindow * \~english Window will show a separate window * \~english \var DArrowRectangle::FloatMode DArrowRectangle::FloatWidget * \~english Widget must by show in the rect of parentWidget */ /*! * \~chinese \enum DArrowRectangle::FloatMode * \~chinese \brief FloatMode 表示不同的控件的浮动模式 * * \~chinese 控件的浮动模式表示控件如何显示在布局中,DArrowRectangle::FloatWindow 表示控件将会以一个单独的窗口显示,而 DArrowRectangle::FloatWidget 则表示控件只能显示在其父控件的布局中,不能超出父控件大小 * * \~chinese \var DArrowRectangle::FloatMode DArrowRectangle::FloatWindow * \~chinese 窗口模式 * \~chinese \var DArrowRectangle::FloatMode DArrowRectangle::FloatWidget * \~chinese 控件模式 */ /*! * \~english \brief DArrowRectangle::DArrowRectangle constructs an instance of DArrowRectangle. * \~english \param direction is used to initialize the direction of which the arrow * \~english points to. * \~english \param parent is the parent widget the arrow rectangle will be attached to. */ /*! * \~chinese \brief 获取 DArrowRectangle 实例 * \~chinese \param direction 用于初始化箭头的方向 * \~chinese \param parent 作为其父控件 */ DArrowRectangle::DArrowRectangle(ArrowDirection direction, QWidget *parent) : QWidget(parent), DObject(*new DArrowRectanglePrivate(direction, this)) { D_D(DArrowRectangle); d->init(FloatWindow); } /*! * \~english \brief DArrowRectangle::DArrowRectangle can set DArrowRectangle show as a window or * \~english a widget in parentWidget by floatMode * \~english \param direction * \~english \param floatMode * \~english \param parent */ /*! * \~chinese \brief 获取 DArrowRectangle 实例,并指定浮动模式 * \~chinese \param direction 用于初始化箭头的方向 * \~chinese \param floatMode * \~chinese \param parent 作为其父控件 * \~chinese \sa DArrowRectangle::FloatMode */ DArrowRectangle::DArrowRectangle(ArrowDirection direction, FloatMode floatMode, QWidget *parent) : QWidget(parent), DObject(*new DArrowRectanglePrivate(direction, this)) { D_D(DArrowRectangle); d->init(floatMode); } /*! * \~english \brief DArrowRectangle::show shows the widget at the given coordinate. * * \~english \note The coordiate is calculated to be the arrow head's position, so you * \~english don't need to calculate the position yourself. * * \~english \param x is the x coordinate of the arrow head. * \~english \param y is the y coordinate of the arrow head. */ /*! * \~chinese \brief 在指定的坐标位置显示本控件 * * \~chinese \note 坐标被计算为箭头的位置,所以你不需要自己计算箭头位置 * * \~chinese \param x 控件箭头的x轴坐标 * \~chinese \param y 控件箭头的y轴坐标 */ void DArrowRectangle::show(int x, int y) { D_D(DArrowRectangle); d->show(x, y); } /*! * \~english \brief DArrowRectangle::setContent sets the content of the arrow rectangle. * \~english \param content */ /*! * \~chinese \brief 设置要显示在矩形内的内容控件 * \~chinese \param 要显示内容控件 */ void DArrowRectangle::setContent(QWidget *content) { D_D(DArrowRectangle); d->setContent(content); } /*! * \~english \brief 获取内容控件 * \~english \return 正在显示的内容控件 */ QWidget *DArrowRectangle::getContent() const { D_DC(DArrowRectangle); return d->m_content; } /*! * \~english \brief DArrowRectangle::resizeWithContent automatically adjust the rectangle's * \~english size to fit the its content. */ /*! * \~chinese \brief 根据内容控件的大小自动设置矩形控件的大小 */ void DArrowRectangle::resizeWithContent() { D_D(DArrowRectangle); d->resizeWithContent(); } /*! * \~english \brief DArrowRectangle::getFixedSize * \~english \return the size of the whole widget. */ /*! * \~chinese \brief 获取整个矩形控件的大小 * \~chinese \return 矩形控件的大小 */ QSize DArrowRectangle::getFixedSize() { D_D(DArrowRectangle); if (d->m_content) { qreal delta = (d->m_handle ? 0 : shadowBlurRadius() + d->m_shadowDistance) + margin(); switch (d->m_arrowDirection) { case ArrowLeft: case ArrowRight: return QSize(d->m_content->width() + delta * 2 + d->m_arrowHeight - ((d->floatMode == FloatWidget) ? delta : 0), d->m_content->height() + delta * 2); case ArrowTop: case ArrowBottom: return QSize(d->m_content->width() + delta * 2, d->m_content->height() + delta * 2 + d->m_arrowHeight - ((d->floatMode == FloatWidget) ? delta : 0)); } } return QSize(0, 0); } /*! * \~english \brief DArrowRectangle::move moves the widget to the coordinate that provided, * * \~english Like the rules in DArrowRectangle::show(int x, int y), it moves the widget so * \~english that the arrow head's coordinate matches the one that provided. * * \~english \param x is the x coordinate of the arrow head. * \~english \param y is the y coordinate of the arrow head. * * \~english \see DArrowRectangle::show(int x, int y) */ /*! * \~chinese \brief 移动到指定的坐标位置 * * \~chinese 参数的作用类似于 DArrowRectangle::show , 移动整个控件直到箭头出现在参数中指定的坐标 * * \~chinese \param x 控件箭头的x轴坐标 * \~chinese \param y 控件箭头的y轴坐标 * * \~chinese \sa DArrowRectangle::show */ void DArrowRectangle::move(int x, int y) { D_D(DArrowRectangle); switch (d->m_arrowDirection) { case ArrowLeft: case ArrowRight: d->verticalMove(x, y); break; case ArrowTop: case ArrowBottom: d->horizontalMove(x, y); break; default: QWidget::move(x, y); break; } } // override methods void DArrowRectangle::paintEvent(QPaintEvent *e) { D_D(DArrowRectangle); d->paintEvent(e); } void DArrowRectangle::resizeEvent(QResizeEvent *e) { D_D(DArrowRectangle); d->resizeEvent(e); } bool DArrowRectangle::event(QEvent *e) { switch (e->type()) { case QEvent::WindowDeactivate: Q_EMIT windowDeactivate(); break; default:; } return QWidget::event(e); } const QRect DArrowRectanglePrivate::currentScreenRect(const int x, const int y) { for (QScreen *screen : qApp->screens()) if (screen->geometry().contains(x, y)) { return screen->geometry(); } return QRect(); } /*! * \~english \property DArrowRectangle::shadowYOffset * \~english \brief the offset of the widget and its shadow on y axis. */ /*! * \~chinese \property DArrowRectangle::shadowYOffset * \~chinese \brief 这属性表示小部件及其阴影在y轴上的偏移量 * * \~chinese Getter: DArrowRectangle::shadowYOffset Setter: DArrowRectangle::setShadowYOffset * \~chinese \sa DArrowRectangle::shadowXOffset */ qreal DArrowRectangle::shadowYOffset() const { D_DC(DArrowRectangle); return d->m_shadowYOffset; } /** * \~chinese \sa DArrowRectangle::shadowYOffset */ void DArrowRectangle::setShadowYOffset(const qreal &shadowYOffset) { D_D(DArrowRectangle); d->m_shadowYOffset = shadowYOffset; if (d->m_handle) { d->m_handle->setShadowOffset(QPoint(d->m_shadowXOffset, shadowYOffset)); } } /*! * \~english \property DArrowRectangle::shadowXOffset * \~english \brief the offset of the widget and its shadow on x axis. */ /*! * \~chinese \property DArrowRectangle::shadowXOffset * \~chinese \brief 这属性表示小部件及其阴影在x轴上的偏移量 * * \~chinese Getter: DArrowRectangle::shadowXOffset Setter: DArrowRectangle::setShadowXOffset * \~chinese \sa DArrowRectangle::shadowYOffset */ qreal DArrowRectangle::shadowXOffset() const { D_DC(DArrowRectangle); return d->m_shadowXOffset; } /** * \~chinese \sa DArrowRectangle::shadowXOffset */ void DArrowRectangle::setShadowXOffset(const qreal &shadowXOffset) { D_D(DArrowRectangle); d->m_shadowXOffset = shadowXOffset; if (d->m_handle) { d->m_handle->setShadowOffset(QPoint(shadowXOffset, d->m_shadowYOffset)); } } /*! * \~english \property DArrowRectangle::shadowBlurRadius * \~english \brief This property holds the blur radius of the widget's shadow. */ /*! * \~chinese \property DArrowRectangle::shadowBlurRadius * \~chinese \brief 这个属性保存小部件阴影的模糊半径 * * \~chinese Getter: DArrowRectangle::shadowBlurRadius Setter: DArrowRectangle::setShadowBlurRadius * \~chinese \sa DArrowRectangle::shadowBlurRadius */ qreal DArrowRectangle::shadowBlurRadius() const { D_DC(DArrowRectangle); return d->m_shadowBlurRadius; } /*! * \~chinese \sa DArrowRectangle::setShadowBlurRadius */ void DArrowRectangle::setShadowBlurRadius(const qreal &shadowBlurRadius) { D_D(DArrowRectangle); d->m_shadowBlurRadius = shadowBlurRadius; if (d->m_handle) { d->m_handle->setShadowRadius(shadowBlurRadius); } } /*! * \~english \property DArrowRectangle::borderColor * \~english \brief This property holds the border color of this widget. */ /*! * \~chinese \property DArrowRectangle::borderColor * \~chinese \brief 这个属性表示控件边框的颜色 * * \~chinese Getter: DArrowRectangle::borderColor , Setter: DArrowRectangle::setBorderColor */ QColor DArrowRectangle::borderColor() const { D_DC(DArrowRectangle); return d->m_borderColor; } /*! * \~chinese \sa DArrowRectangle::borderColor */ void DArrowRectangle::setBorderColor(const QColor &borderColor) { D_D(DArrowRectangle); d->m_borderColor = borderColor; if (d->m_handle) { d->m_handle->setBorderColor(borderColor); } } /*! * \~english \property DArrowRectangle::borderWidth * \~english \brief This property holds the border width of this widget. */ /*! * \~chinese \property DArrowRectangle::borderWidth * \~chinese \brief 这个属性表示控件边框的宽度 * * \~chinese Getter: DArrowRectangle::borderWidth , Setter: DArrowRectangle::setBorderWidth */ int DArrowRectangle::borderWidth() const { D_DC(DArrowRectangle); return d->m_borderWidth; } /*! * \~chinese \sa DArrowRectangle::borderWidth */ void DArrowRectangle::setBorderWidth(int borderWidth) { D_D(DArrowRectangle); d->m_borderWidth = borderWidth; if (d->m_handle) { d->m_handle->setBorderWidth(borderWidth); } } /*! * \~english \property DArrowRectangle::backgroundColor * \~english \brief the background color of this rectangle. */ /*! * \~chinese \property DArrowRectangle::backgroundColor * \~chinese \brief 这个属性表示矩形控件的背景颜色 * * \~chinese Getter: DArrowRectangle::backgroundColor , Setter: DArrowRectangle::setBackgroundColor */ QColor DArrowRectangle::backgroundColor() const { D_DC(DArrowRectangle); return d->m_backgroundColor; } /*! * \~english \property DArrowRectangle::arrowDirection * \~english \brief This property holds the direction of the rectangle's arrow points to. */ /*! * \~chinese \property DArrowRectangle::arrowDirection * \~chinese \brief 这个属性表示箭头的方向 * * \~chinese Getter: DArrowRectangle::arrowDirection , Setter: DArrowRectangle::setArrowDirection */ DArrowRectangle::ArrowDirection DArrowRectangle::arrowDirection() const { D_DC(DArrowRectangle); return d->m_arrowDirection; } /*! * \~chinese \sa DArrowRectangle::backgroundColor */ void DArrowRectangle::setBackgroundColor(const QColor &backgroundColor) { D_D(DArrowRectangle); d->m_backgroundColor = backgroundColor; if (d->m_handle && d->m_backgroundColor.toRgb().alpha() < 255) { if (!d->m_blurBackground) { d->m_blurBackground = new DBlurEffectWidget(this); d->m_blurBackground->setBlendMode(DBlurEffectWidget::BehindWindowBlend); d->m_blurBackground->resize(size()); d->m_blurBackground->lower(); d->m_blurBackground->show(); } d->m_blurBackground->setMaskColor(d->m_backgroundColor); } else { if (d->m_blurBackground) { d->m_blurBackground->hide(); d->m_blurBackground->setParent(0); delete d->m_blurBackground; d->m_blurBackground = Q_NULLPTR; } } } /*! * \~english \brief DArrowRectangle::setBackgroundColor is an overloaded function. * * \~english It sets the background color by modifing the mask color of the * \~english Dtk::Widget::DBlurEffectWidget. * * \~english \param type is the mask color to set. */ /*! * \~chinese \brief DArrowRectangle::setBackgroundColor 是一个重载方法 * * \~chinese 通过改变 DBlurEffectWidget::MaskColorType 来修改控件矩形的背景 * * \~chinese \param type is the mask color to set. * \~chinese \sa DArrowRectangle::backgroundColor and DBlurEffectWidget::MaskColorType */ void DArrowRectangle::setBackgroundColor(DBlurEffectWidget::MaskColorType type) { D_D(DArrowRectangle); if (d->m_blurBackground) { d->m_blurBackground->setMaskColor(type); } } /*! * \~english \property DArrowRectangle::radius * \~english \brief radius of the rectangle */ /*! * \~chinese \property DArrowRectangle::radius * \~chinese \brief 这个属性表示矩形的圆角 * * \~chinese Getter: DArrowRectangle::radius , Setter: DArrowRectangle::setRadius */ int DArrowRectangle::radius() const { D_DC(DArrowRectangle); return d->m_radius; } /*! * \~english \property DArrowRectangle::arrowHeight * \~english \brief height of rectangle's arrow */ /*! * \~chinese \property DArrowRectangle::arrowHeight * \~chinese \brief 这个属性表示箭头的高度 * * \~chinese Getter: DArrowRectangle::arrowHeight , Setter: DArrowRectangle::setArrowHeight * \~chinese \sa DArrowRectangle::arrowWidth */ int DArrowRectangle::arrowHeight() const { D_DC(DArrowRectangle); return d->m_arrowHeight; } /*! * \~english \property DArrowRectangle::arrowWidth * \~english \brief width of the rectangle's arrow */ /*! * \~chinese \property DArrowRectangle::arrowWidth * \~chinese \brief 这个属性表示箭头的宽度 * * \~chinese Getter: DArrowRectangle::arrowWidth , Setter: DArrowRectangle::setArrowWidth * \~chinese \sa DArrowRectangle::arrowHeight */ int DArrowRectangle::arrowWidth() const { D_DC(DArrowRectangle); return d->m_arrowWidth; } /*! * \~english \property DArrowRectangle::arrowX * \~english \brief the x coordinate of the rectangle's arrow */ /*! * \~chinese \property DArrowRectangle::arrowX * \~chinese \brief 这个属性表示箭头的x轴坐标 * * \~chinese Getter: DArrowRectangle::arrowX , Setter: DArrowRectangle::setArrowX * \~chinese \sa DArrowRectangle::arrowY */ int DArrowRectangle::arrowX() const { D_DC(DArrowRectangle); return d->m_arrowX; } /*! * \~english \property DArrowRectangle::arrowY * \~english \brief the y coordinate of the rectangle's arrow */ /*! * \~chinese \property DArrowRectangle::arrowY * \~chinese \brief 这个属性表示箭头的y轴坐标 * * \~chinese Getter: DArrowRectangle::arrowY , Setter: DArrowRectangle::setArrowY * \~chinese \sa DArrowRectangle::arrowX */ int DArrowRectangle::arrowY() const { D_DC(DArrowRectangle); return d->m_arrowY; } /*! * \~english \property DArrowRectangle::margin * \~english \brief This property holds the width of the margin * * \~english The margin is the distance between the innermost pixel of the rectangle and the * \~english outermost pixel of its contents. * * \~english The default margin is 0. */ /*! * \~chinese \property DArrowRectangle::margin * \~chinese \brief 这个属性表示边距大小 * * \~chinese 边距是指矩形最里面的像素与其内容最外面的像素之间的距离 * \~chinese Getter: DArrowRectangle::margin , Setter: DArrowRectangle::setMargin * \~chinese \sa DArrowRectangle::margin */ int DArrowRectangle::margin() const { D_DC(DArrowRectangle); return d->m_margin; } /*! * \~chinese \sa DArrowRectangle::arrowDirection */ void DArrowRectangle::setArrowDirection(ArrowDirection value) { D_D(DArrowRectangle); d->m_arrowDirection = value; } /** * \~chinese \brief 设置整个控件固定的宽度 * \~chinese * \~chinese \param value 宽度大小 */ void DArrowRectangle::setWidth(int value) { setFixedWidth(value); } /** * \~chinese \brief 设置整个控件固定的高度 * \~chinese * \~chinese \param value 高度大小 */ void DArrowRectangle::setHeight(int value) { setFixedHeight(value); } /** * \~chinese \sa DArrowRectangle::radius */ void DArrowRectangle::setRadius(int value) { D_D(DArrowRectangle); d->m_radius = value; } /** * \~chinese \sa DArrowRectangle::arrowHeight */ void DArrowRectangle::setArrowHeight(int value) { D_D(DArrowRectangle); d->m_arrowHeight = value; } /** * \~chinese \sa DArrowRectangle::arrowWidth */ void DArrowRectangle::setArrowWidth(int value) { D_D(DArrowRectangle); d->m_arrowWidth = value; } /** * \~chinese \sa DArrowRectangle::arrowX */ void DArrowRectangle::setArrowX(int value) { D_D(DArrowRectangle); d->m_arrowX = value; } /** * \~chinese \sa DArrowRectangle::arrowY */ void DArrowRectangle::setArrowY(int value) { D_D(DArrowRectangle); d->m_arrowY = value; } /** * \~chinese \sa DArrowRectangle::margin */ void DArrowRectangle::setMargin(int value) { D_D(DArrowRectangle); d->m_margin = value; } QPainterPath DArrowRectanglePrivate::getLeftCornerPath() { D_Q(DArrowRectangle); QRect rect = q->rect(); if (!m_handle) { qreal delta = q->shadowBlurRadius() + m_shadowDistance; rect = rect.marginsRemoved(QMargins((DArrowRectangle::FloatWidget == floatMode) ? 0 : delta, delta, delta, delta)); } QPoint cornerPoint(rect.x(), rect.y() + (m_arrowY > 0 ? m_arrowY : (rect.height() / 2))); QPoint topLeft(rect.x() + m_arrowHeight, rect.y()); QPoint topRight(rect.x() + rect.width(), rect.y()); QPoint bottomRight(rect.x() + rect.width(), rect.y() + rect.height()); QPoint bottomLeft(rect.x() + m_arrowHeight, rect.y() + rect.height()); int radius = m_radius > (rect.height() / 2) ? (rect.height() / 2) : m_radius; if (!radiusEnabled()) { radius = 0; } QPainterPath border; border.moveTo(topLeft.x() + radius, topLeft.y()); border.lineTo(topRight.x() - radius, topRight.y()); border.arcTo(topRight.x() - 2 * radius, topRight.y(), 2 * radius, 2 * radius, 90, -90); border.lineTo(bottomRight.x(), bottomRight.y() - radius); border.arcTo(bottomRight.x() - 2 * radius, bottomRight.y() - 2 * radius, 2 * radius, 2 * radius, 0, -90); border.lineTo(bottomLeft.x() + radius, bottomLeft.y()); border.arcTo(bottomLeft.x(), bottomLeft.y() - 2 * radius, 2 * radius, 2 * radius, -90, -90); border.lineTo(cornerPoint.x() + m_arrowHeight, cornerPoint.y() + m_arrowWidth / 2); border.lineTo(cornerPoint); border.lineTo(cornerPoint.x() + m_arrowHeight, cornerPoint.y() - m_arrowWidth / 2); border.lineTo(topLeft.x(), topLeft.y() + radius); border.arcTo(topLeft.x(), topLeft.y(), 2 * radius, 2 * radius, -180, -90); return border; } QPainterPath DArrowRectanglePrivate::getRightCornerPath() { D_Q(DArrowRectangle); QRect rect = q->rect(); if (!m_handle) { qreal delta = q->shadowBlurRadius() + m_shadowDistance; rect = rect.marginsRemoved(QMargins(delta, delta, (DArrowRectangle::FloatWidget == floatMode) ? 0 : delta, delta)); } QPoint cornerPoint(rect.x() + rect.width(), rect.y() + (m_arrowY > 0 ? m_arrowY : rect.height() / 2)); QPoint topLeft(rect.x(), rect.y()); QPoint topRight(rect.x() + rect.width() - m_arrowHeight, rect.y()); QPoint bottomRight(rect.x() + rect.width() - m_arrowHeight, rect.y() + rect.height()); QPoint bottomLeft(rect.x(), rect.y() + rect.height()); int radius = this->m_radius > (rect.height() / 2) ? rect.height() / 2 : this->m_radius; if (!radiusEnabled()) { radius = 0; } QPainterPath border; border.moveTo(topLeft.x() + radius, topLeft.y()); border.lineTo(topRight.x() - radius, topRight.y()); border.arcTo(topRight.x() - 2 * radius, topRight.y(), 2 * radius, 2 * radius, 90, -90); border.lineTo(cornerPoint.x() - m_arrowHeight, cornerPoint.y() - m_arrowWidth / 2); border.lineTo(cornerPoint); border.lineTo(cornerPoint.x() - m_arrowHeight, cornerPoint.y() + m_arrowWidth / 2); border.lineTo(bottomRight.x(), bottomRight.y() - radius); border.arcTo(bottomRight.x() - 2 * radius, bottomRight.y() - 2 * radius, 2 * radius, 2 * radius, 0, -90); border.lineTo(bottomLeft.x() + radius, bottomLeft.y()); border.arcTo(bottomLeft.x(), bottomLeft.y() - 2 * radius, 2 * radius, 2 * radius, -90, -90); border.lineTo(topLeft.x(), topLeft.y() + radius); border.arcTo(topLeft.x(), topLeft.y(), 2 * radius, 2 * radius, 180, -90); return border; } QPainterPath DArrowRectanglePrivate::getTopCornerPath() { D_Q(DArrowRectangle); QRect rect = q->rect(); if (!m_handle) { qreal delta = q->shadowBlurRadius() + m_shadowDistance; rect = rect.marginsRemoved(QMargins(delta, (DArrowRectangle::FloatWidget == floatMode) ? 0 : delta, delta, delta)); } QPoint cornerPoint(rect.x() + (m_arrowX > 0 ? m_arrowX : rect.width() / 2), rect.y()); QPoint topLeft(rect.x(), rect.y() + m_arrowHeight); QPoint topRight(rect.x() + rect.width(), rect.y() + m_arrowHeight); QPoint bottomRight(rect.x() + rect.width(), rect.y() + rect.height()); QPoint bottomLeft(rect.x(), rect.y() + rect.height()); int radius = this->m_radius > (rect.height() / 2 - m_arrowHeight) ? rect.height() / 2 - m_arrowHeight : this->m_radius; if (!radiusEnabled()) { radius = 0; } QPainterPath border; border.moveTo(topLeft.x() + radius, topLeft.y()); border.lineTo(cornerPoint.x() - m_arrowWidth / 2, cornerPoint.y() + m_arrowHeight); border.lineTo(cornerPoint); border.lineTo(cornerPoint.x() + m_arrowWidth / 2, cornerPoint.y() + m_arrowHeight); border.lineTo(topRight.x() - radius, topRight.y()); border.arcTo(topRight.x() - 2 * radius, topRight.y(), 2 * radius, 2 * radius, 90, -90); border.lineTo(bottomRight.x(), bottomRight.y() - radius); border.arcTo(bottomRight.x() - 2 * radius, bottomRight.y() - 2 * radius, 2 * radius, 2 * radius, 0, -90); border.lineTo(bottomLeft.x() + radius, bottomLeft.y()); border.arcTo(bottomLeft.x(), bottomLeft.y() - 2 * radius, 2 * radius, 2 * radius, - 90, -90); border.lineTo(topLeft.x(), topLeft.y() + radius); border.arcTo(topLeft.x(), topLeft.y(), 2 * radius, 2 * radius, 180, -90); return border; } QPainterPath DArrowRectanglePrivate::getBottomCornerPath() { D_QC(DArrowRectangle); QRect rect = q->rect(); if (!m_handle) { qreal delta = q->shadowBlurRadius() + m_shadowDistance; rect = rect.marginsRemoved(QMargins(delta, delta, delta, (DArrowRectangle::FloatWidget == floatMode) ? 0 : delta)); } QPoint cornerPoint(rect.x() + (m_arrowX > 0 ? m_arrowX : qRound(double(rect.width()) / 2)), rect.y() + rect.height()); QPoint topLeft(rect.x(), rect.y()); QPoint topRight(rect.x() + rect.width(), rect.y()); QPoint bottomRight(rect.x() + rect.width(), rect.y() + rect.height() - m_arrowHeight); QPoint bottomLeft(rect.x(), rect.y() + rect.height() - m_arrowHeight); int radius = this->m_radius > (rect.height() / 2 - m_arrowHeight) ? rect.height() / 2 - m_arrowHeight : this->m_radius; if (!radiusEnabled()) { radius = 0; } QPainterPath border; border.moveTo(topLeft.x() + radius, topLeft.y()); border.lineTo(topRight.x() - radius, topRight.y()); border.arcTo(topRight.x() - 2 * radius, topRight.y(), 2 * radius, 2 * radius, 90, -90); border.lineTo(bottomRight.x(), bottomRight.y() - radius); border.arcTo(bottomRight.x() - 2 * radius, bottomRight.y() - 2 * radius, 2 * radius, 2 * radius, 0, -90); border.lineTo(cornerPoint.x() + m_arrowWidth / 2, cornerPoint.y() - m_arrowHeight); border.lineTo(cornerPoint); border.lineTo(cornerPoint.x() - m_arrowWidth / 2, cornerPoint.y() - m_arrowHeight); border.lineTo(bottomLeft.x() + radius, bottomLeft.y()); border.arcTo(bottomLeft.x(), bottomLeft.y() - 2 * radius, 2 * radius, 2 * radius, -90, -90); border.lineTo(topLeft.x(), topLeft.y() + radius); border.arcTo(topLeft.x(), topLeft.y(), 2 * radius, 2 * radius, 180, -90); return border; } void DArrowRectanglePrivate::verticalMove(int x, int y) { D_Q(DArrowRectangle); const QRect dRect = currentScreenRect(x, y); qreal delta = m_handle ? 0 : (q->shadowBlurRadius() - m_shadowDistance); int lRelativeY = y - dRect.y() - (q->height() - delta) / 2; int rRelativeY = y - dRect.y() + (q->height() - delta) / 2 - dRect.height(); int absoluteY = 0; if (lRelativeY < 0) { //out of screen in top side //arrowY use relative coordinates q->setArrowY(q->height() / 2 - delta + lRelativeY); absoluteY = dRect.y() - delta; } else if (rRelativeY > 0) { //out of screen in bottom side q->setArrowY(q->height() / 2 - delta / 2 + rRelativeY); absoluteY = dRect.y() + dRect.height() - q->height() + delta; } else { q->setArrowY(0); absoluteY = y - q->height() / 2; } switch (m_arrowDirection) { case DArrowRectangle::ArrowLeft: q->QWidget::move(x, absoluteY); break; case DArrowRectangle::ArrowRight: q->QWidget::move(x - q->width(), absoluteY); break; default: break; } } void DArrowRectanglePrivate::horizontalMove(int x, int y) { D_Q(DArrowRectangle); const QRect dRect = currentScreenRect(x, y); qreal delta = m_handle ? 0 : (q->shadowBlurRadius() - m_shadowDistance); int lRelativeX = x - dRect.x() - (q->width() - delta) / 2; int rRelativeX = x - dRect.x() + (q->width() - delta) / 2 - dRect.width(); int absoluteX = 0; if (lRelativeX < 0) { //out of screen in left side //arrowX use relative coordinates q->setArrowX((q->width() - delta) / 2 + lRelativeX); absoluteX = dRect.x() - delta; } else if (rRelativeX > 0) { //out of screen in right side q->setArrowX(q->width() / 2 - delta * 2 + rRelativeX); absoluteX = dRect.x() + dRect.width() - q->width() + delta; } else { q->setArrowX(0); absoluteX = x - (m_arrowX > 0 ? m_arrowX : (q->width() / 2)); } switch (m_arrowDirection) { case DArrowRectangle::ArrowTop: q->QWidget::move(absoluteX, y); break; case DArrowRectangle::ArrowBottom: q->QWidget::move(absoluteX, y - q->height()); break; default: break; } } void DArrowRectanglePrivate::updateClipPath() { D_Q(DArrowRectangle); if (!m_handle) { return; } QPainterPath path; switch (m_arrowDirection) { case DArrowRectangle::ArrowLeft: path = getLeftCornerPath(); break; case DArrowRectangle::ArrowRight: path = getRightCornerPath(); break; case DArrowRectangle::ArrowTop: path = getTopCornerPath(); break; case DArrowRectangle::ArrowBottom: path = getBottomCornerPath(); break; default: path = getRightCornerPath(); } m_handle->setClipPath(path); } bool DArrowRectanglePrivate::radiusEnabled() { if (m_wmHelper && !m_wmHelper->hasComposite()) { return false; } return true; } DArrowRectangle::~DArrowRectangle() { } Dtk::Widget::DArrowRectanglePrivate::DArrowRectanglePrivate(DArrowRectangle::ArrowDirection direction, DArrowRectangle *q) : DObjectPrivate(q), m_arrowDirection(direction) { } void DArrowRectanglePrivate::init(DArrowRectangle::FloatMode mode) { D_Q(DArrowRectangle); floatMode = mode; if (floatMode) { q->setWindowFlags(Qt::Widget); q->setAttribute(Qt::WA_TranslucentBackground); } else { q->setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip); q->setAttribute(Qt::WA_TranslucentBackground); } if (DApplication::isDXcbPlatform() && (DArrowRectangle::FloatWindow == floatMode)) { m_handle = new DPlatformWindowHandle(q); m_handle->setTranslucentBackground(true); m_blurBackground = new DBlurEffectWidget(q); m_blurBackground->setMaskColor(DBlurEffectWidget::DarkColor); m_blurBackground->setBlendMode(DBlurEffectWidget::BehindWindowBlend); m_wmHelper = DWindowManagerHelper::instance(); q->connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, q, static_cast(&DArrowRectangle::update), Qt::QueuedConnection); } else { DGraphicsGlowEffect *glowEffect = new DGraphicsGlowEffect; glowEffect->setBlurRadius(q->shadowBlurRadius()); glowEffect->setDistance(m_shadowDistance); glowEffect->setXOffset(q->shadowXOffset()); glowEffect->setYOffset(q->shadowYOffset()); q->setGraphicsEffect(glowEffect); m_wmHelper = nullptr; } } void DArrowRectanglePrivate::show(int x, int y) { D_Q(DArrowRectangle); // if show with FloatMode, must has a parent if (DArrowRectangle::FloatWidget == floatMode && !q->parentWidget()) { qCritical() << q << "Must has parentWidget when show in FloatWidget mode"; Q_ASSERT_X(q->parentWidget(), "DArrowRectanglePrivate::show", "Must has parentWidget when show in FloatWidget mode"); } q->resizeWithContent(); m_lastPos = QPoint(x, y); q->move(x, y);//Overload function if (!q->isVisible()) { q->QWidget::show(); q->QWidget::activateWindow(); } q->update(); updateClipPath(); } void DArrowRectanglePrivate::setContent(QWidget *content) { D_Q(DArrowRectangle); if (!content) { return; } m_content = content; m_content->setParent(q); m_content->show(); qreal delta = (m_handle ? 0 : q->shadowBlurRadius() + m_shadowDistance) + q->margin(); q->resizeWithContent(); switch (m_arrowDirection) { case DArrowRectangle::ArrowLeft: m_content->move(m_arrowHeight + ((DArrowRectangle::FloatWidget == floatMode) ? 0 : delta), delta); break; case DArrowRectangle::ArrowRight: m_content->move(delta, delta); break; case DArrowRectangle::ArrowTop: m_content->move(delta, ((DArrowRectangle::FloatWidget == floatMode) ? 0 : delta) + m_arrowHeight); break; case DArrowRectangle::ArrowBottom: m_content->move(delta, delta); break; } q->update(); } void DArrowRectanglePrivate::resizeWithContent() { D_Q(DArrowRectangle); if (m_content.isNull()) { return; } q->setFixedSize(q->getFixedSize()); #ifdef Q_OS_LINUX const qreal ratio = qApp->devicePixelRatio(); if (!m_handle && !floatMode) { XRectangle m_contentXRect; m_contentXRect.x = m_content->pos().x() * ratio; m_contentXRect.y = m_content->pos().y() * ratio; m_contentXRect.width = m_content->width() * ratio; m_contentXRect.height = m_content->height() * ratio; XShapeCombineRectangles(QX11Info::display(), q->winId(), ShapeInput, 0, 0, &m_contentXRect, 1, ShapeSet, YXBanded); } #endif } void DArrowRectanglePrivate::paintEvent(QPaintEvent *e) { D_Q(DArrowRectangle); if (m_blurBackground) { return; } QPainter painter(q); if (m_handle) { painter.fillRect(e->rect(), m_backgroundColor); } else { painter.setRenderHint(QPainter::Antialiasing); QPainterPath border; switch (m_arrowDirection) { case DArrowRectangle::ArrowLeft: border = getLeftCornerPath(); break; case DArrowRectangle::ArrowRight: border = getRightCornerPath(); break; case DArrowRectangle::ArrowTop: border = getTopCornerPath(); break; case DArrowRectangle::ArrowBottom: border = getBottomCornerPath(); break; default: border = getRightCornerPath(); } painter.setClipPath(border); painter.fillPath(border, QBrush(m_backgroundColor)); QPen strokePen; strokePen.setColor(m_borderColor); strokePen.setWidth(m_borderWidth); painter.strokePath(border, strokePen); } } void DArrowRectanglePrivate::resizeEvent(QResizeEvent *e) { D_Q(DArrowRectangle); q->QWidget::resizeEvent(e); if (m_blurBackground) { m_blurBackground->resize(e->size()); } updateClipPath(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/darrowrectangle.h000066400000000000000000000104351352002233700212720ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DARROWRECTANGLE_H #define DARROWRECTANGLE_H #include #include #include #include #include #include #include #include #include #include "dobject.h" #include "dtkwidget_global.h" #include "dthememanager.h" #include "dgraphicsgloweffect.h" #include "dblureffectwidget.h" DWIDGET_BEGIN_NAMESPACE class DPlatformWindowHandle; class DArrowRectanglePrivate; class LIBDTKWIDGETSHARED_EXPORT DArrowRectangle : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DArrowRectangle) D_DECLARE_PRIVATE(DArrowRectangle) public: enum ArrowDirection { ArrowLeft, ArrowRight, ArrowTop, ArrowBottom }; enum FloatMode { FloatWindow, FloatWidget, }; explicit DArrowRectangle(ArrowDirection direction, QWidget *parent = 0); explicit DArrowRectangle(ArrowDirection direction, FloatMode floatMode, QWidget *parent = 0); ~DArrowRectangle(); Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor) Q_PROPERTY(int borderWidth READ borderWidth WRITE setBorderWidth) Q_PROPERTY(int radius READ radius WRITE setRadius) Q_PROPERTY(int arrowWidth READ arrowWidth WRITE setArrowWidth) Q_PROPERTY(int arrowHeight READ arrowHeight WRITE setArrowHeight) Q_PROPERTY(int arrowX READ arrowX WRITE setArrowX) Q_PROPERTY(int arrowY READ arrowY WRITE setArrowY) Q_PROPERTY(int margin READ margin WRITE setMargin) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor) Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor) Q_PROPERTY(ArrowDirection arrowDirection READ arrowDirection WRITE setArrowDirection) Q_PROPERTY(qreal shadowXOffset READ shadowXOffset WRITE setShadowXOffset) Q_PROPERTY(qreal shadowYOffset READ shadowYOffset WRITE setShadowYOffset) Q_PROPERTY(qreal shadowBlurRadius READ shadowBlurRadius WRITE setShadowBlurRadius) int radius() const; int arrowHeight() const; int arrowWidth() const; int arrowX() const; int arrowY() const; int margin() const; int borderWidth() const; QColor borderColor() const; QColor backgroundColor() const; ArrowDirection arrowDirection() const; void setRadius(int value); void setArrowHeight(int value); void setArrowWidth(int value); void setArrowX(int value); void setArrowY(int value); void setMargin(int value); void setBorderWidth(int borderWidth); void setBorderColor(const QColor &borderColor); void setBackgroundColor(const QColor &backgroundColor); void setBackgroundColor(DBlurEffectWidget::MaskColorType type); void setArrowDirection(ArrowDirection value); void setWidth(int value); void setHeight(int value); virtual void show(int x, int y); void setContent(QWidget *content); QWidget *getContent() const; void resizeWithContent(); void move(int x, int y); QSize getFixedSize(); qreal shadowXOffset() const; qreal shadowYOffset() const; qreal shadowBlurRadius() const; void setShadowBlurRadius(const qreal &shadowBlurRadius); void setShadowXOffset(const qreal &shadowXOffset); void setShadowYOffset(const qreal &shadowYOffset); Q_SIGNALS: void windowDeactivate() const; protected: void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; bool event(QEvent *e) Q_DECL_OVERRIDE; }; DWIDGET_END_NAMESPACE #endif // DARROWRECTANGLE_H dtkwidget-2.1.1/src/widgets/dbackgroundgroup.cpp000066400000000000000000000047211352002233700220030ustar00rootroot00000000000000#include "dbackgroundgroup.h" #include "dstyleoption.h" #include #include #include DWIDGET_BEGIN_NAMESPACE void DBackgroundGroup::paintEvent(QPaintEvent *event) { Q_UNUSED(event); DStyleOptionBackgroundGroup::BackgroundDirection direction; if (QBoxLayout* boxLayout = qobject_cast(layout())) { if (boxLayout->direction() == QBoxLayout::LeftToRight || boxLayout->direction() == QBoxLayout::RightToLeft) { direction = DStyleOptionBackgroundGroup::horizontal; } else { direction = DStyleOptionBackgroundGroup::vertical; } QList items = findChildren(); QList> itemStyleOptions; itemStyleOptions.reserve(items.size()); auto createOption = [=] (QWidget* obj, DStyleOptionBackgroundGroup::ItemBackgroundPosition position) { return QPair(obj, position); }; switch (items.size()) { case 0: itemStyleOptions << createOption(nullptr, DStyleOptionBackgroundGroup::Invalid); break; default: { QWidget* first = items.first(); QWidget* last = items.last(); if (first == last) { itemStyleOptions << createOption(first, DStyleOptionBackgroundGroup::OnlyOne); break; } items.removeOne(first); items.removeOne(last); itemStyleOptions << createOption(first, DStyleOptionBackgroundGroup::Beginning); for (auto it = items.cbegin(); it != items.cend(); ++it) { itemStyleOptions << createOption(*it, DStyleOptionBackgroundGroup::Middle); } itemStyleOptions << createOption(last, DStyleOptionBackgroundGroup::End); } break; } QStylePainter painter(this); for (QPair pair : itemStyleOptions) { DStyleOptionBackgroundGroup option; if (!pair.first) continue; option.init(pair.first); option.direction = direction; option.position = pair.second; painter.drawPrimitive(static_cast(DStyleOption::PE_BACKGROUND), option); } } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dbackgroundgroup.h000066400000000000000000000006471352002233700214530ustar00rootroot00000000000000#ifndef DBACKGROUNDGROUP_H #define DBACKGROUNDGROUP_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DBackgroundGroup : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: using QWidget::QWidget; protected: void paintEvent(QPaintEvent *event) override; }; DWIDGET_END_NAMESPACE #endif // DBACKGROUNDGROUP_H dtkwidget-2.1.1/src/widgets/dbasebutton.cpp000066400000000000000000000063561352002233700207630ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbasebutton.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DBaseButton * \~english \brief The DBaseButton class provides deepin style QPushButton. * * \~english DBaseButton will be deprecated and removed in the future, please use * \~english QPushButton, together with dstyle Qt style plugin, QPushButton should have * \~english the same visual effect as DBaseButton. */ /*! * \~chinese \class DBaseButton * \~chinese \brief DBaseButton 提供 deepin 风格的 QPushButton。 * * \~chinese DBaseButton 将来会被弃用并删除,请使用 QPushButton */ /*! * \~english \brief DBaseButton::DBaseButton constructs an instance of DBaseButton. * \~english \param parent is passed to QPushButton constructor. */ /*! * \~chinese \brief DBaseButton 的构造函数 * \~chinese \param parent */ DBaseButton::DBaseButton(QWidget *parent) : QPushButton(parent) { DThemeManager::registerWidget(this); initInsideFrame(); } /*! * \~english \brief DBaseButton::DBaseButton constructs an instance of DBaseButton. * \~english \param text is passed to QPushButton constructor. * \~english \param parent is passed to QPushButton constructor. */ /*! * \~chinese \brief DBaseButton 的重载构造函数 * \~chinese \param text 用于初始化文本内容 * \~chinese \param */ DBaseButton::DBaseButton(const QString &text, QWidget *parent) : QPushButton(text, parent) { DThemeManager::registerWidget(this); initInsideFrame(); } /*! * \~english \brief DBaseButton::DBaseButton constructs an instance of DBaseButton. * \~english \param icon is passed to QPushButton constructor. * \~english \param text is passed to QPushButton constructor. * \~english \param parent is passed to QPushButton constructor. */ /*! * \~chinese \brief DBaseButton 的重载构造函数 * \~chinese \param icon 初始化图标 * \~chinese \param text 初始化文本内容 * \~chinese \param parent */ DBaseButton::DBaseButton(const QIcon &icon, const QString &text, QWidget *parent) : QPushButton(icon, text, parent) { DThemeManager::registerWidget(this); initInsideFrame(); } //Bypassing the problem here //qss can't draw box-shadow void DBaseButton::initInsideFrame() { QFrame *insideFrame = new QFrame; insideFrame->raise(); insideFrame->setAttribute(Qt::WA_TransparentForMouseEvents); insideFrame->setObjectName("ButtonInsideFrame"); QHBoxLayout *insideLayout = new QHBoxLayout(this); insideLayout->setContentsMargins(0, 1, 0, 0); insideLayout->addWidget(insideFrame); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dbasebutton.h000066400000000000000000000023371352002233700204230ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBASEBUTTON_H #define DBASEBUTTON_H #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DBaseButton : public QPushButton { Q_OBJECT public: explicit DBaseButton(QWidget * parent = 0); explicit DBaseButton(const QString & text, QWidget * parent = 0); explicit DBaseButton(const QIcon & icon, const QString & text, QWidget * parent = 0); private: void initInsideFrame(); }; DWIDGET_END_NAMESPACE #endif // DBASEBUTTON_H dtkwidget-2.1.1/src/widgets/dbaseexpand.cpp000066400000000000000000000166451352002233700207310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbaseexpand.h" #include "dthememanager.h" #include "dboxwidget.h" #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DBaseExpand * \~chinese \brief 一个美观的可展开的控件 * * \~chinese 使用 DBaseExpand 类可以创建一个可展开的带有展开动画效果的控件,这个控件包含上下两部分,上面的控件为标题控件,这个控件会始终显示,下面的控件为内容控件,默认为不会显示,调用 DBaseExpand::setExpand 设置内容控件的可见性。使用 DBaseExpand::setHeader 和 DBaseExpand::setContent 设置分别设置标题控件和内容控件。 * * \~chinese \sa DHeaderLine * * \~chinese \image html DBaseExpand.gif */ /** * \~chinese \fn DBaseExpand::expandChange * \~chinese \brief 内容控件可见性发生改变的信号 * \~chinese \param e 为 true 表示内容控件变为了可见,反之则反 */ /*! * \~chinese \brief 获取 DBaseExpand::DBaseExpand 实例 * \~chinese \param parent 作为实例的父控件 */ DBaseExpand::DBaseExpand(QWidget *parent) : QWidget(parent) { DThemeManager::registerWidget(this); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); m_headerLayout = new QVBoxLayout(); m_headerLayout->setContentsMargins(0, 0, 0, 0); m_headerLayout->setAlignment(Qt::AlignCenter); m_hSeparator = new DSeparatorHorizontal(); m_bottom_separator = new DSeparatorHorizontal; m_bottom_separator->hide(); connect(this, &DBaseExpand::expandChange, m_bottom_separator, &DSeparatorHorizontal::setVisible); m_contentLoader = new ContentLoader(); m_contentLoader->setFixedHeight(0); // default to not expanded. m_boxWidget = new DVBoxWidget; m_contentLayout = m_boxWidget->layout(); QVBoxLayout *layout_contentLoader = new QVBoxLayout(m_contentLoader); layout_contentLoader->setMargin(0); layout_contentLoader->setSpacing(0); layout_contentLoader->addWidget(m_boxWidget); layout_contentLoader->addStretch(); m_animation = new QPropertyAnimation(m_contentLoader, "height"); m_animation->setDuration(200); m_animation->setEasingCurve(QEasingCurve::InSine); connect(m_animation, &QPropertyAnimation::valueChanged, this, [this] { setFixedHeight(sizeHint().height()); }); mainLayout->addLayout(m_headerLayout); mainLayout->addWidget(m_hSeparator); mainLayout->addWidget(m_contentLoader); mainLayout->addWidget(m_bottom_separator); setLayout(mainLayout); connect(m_boxWidget, &DBoxWidget::sizeChanged, this, [this] { if (m_expand) { int endHeight = 0; endHeight = m_boxWidget->height(); m_animation->setStartValue(m_contentLoader->height()); m_animation->setEndValue(endHeight); m_animation->stop(); m_animation->start(); } }); } DBaseExpand::~DBaseExpand() { if (m_headerLayout) { m_headerLayout->deleteLater(); } if (m_contentLayout) { m_contentLayout->deleteLater(); } if (m_contentLoader) { m_contentLoader->deleteLater(); } if (m_animation) { m_animation->deleteLater(); } } /** * \~chinese \brief 设置标题控件 * \~chinese 标题控件会始终显示在布局里 * \~chinese \param header 标题控件 */ void DBaseExpand::setHeader(QWidget *header) { if (!header) { return; } QLayoutItem *child; while ((child = m_headerLayout->takeAt(0)) != 0) { delete child; } m_headerLayout->addWidget(header); m_header = header; } /** * \~chinese \property DBaseExpand::getContent * \~chinese \brief 获取内容控件对象 * \~chinese \return 内容控件对象 */ /** * \~chinese \brief 设置内容控件 * \~chinese 内容控件默认是隐藏的,调用 DBaseExpand::setExpand 设置其可见性 * \~chinese \param content 内容控件 * \~chinese \param alignment 内容控件在布局中的对齐方式 */ void DBaseExpand::setContent(QWidget *content, Qt::Alignment alignment) { if (!content) { return; } QLayoutItem *child; while ((child = m_contentLayout->takeAt(0)) != 0) { delete child; } m_contentLayout->addWidget(content, 1, alignment); m_contentLayout->addStretch(1); m_content = content; } /** * \~chinese \brief 设置标题控件的高度 * \~chinese * \~chinese \param height 指定的高度 */ void DBaseExpand::setHeaderHeight(int height) { if (m_header) { m_header->setFixedHeight(height); } } /** * \~chinese \brief 设置内容控件的可见性 * \~chinese * \~chinese \param value 为 true 则内容控件可见,反之则反 */ void DBaseExpand::setExpand(bool value) { if (m_expand == value) { return; } m_expand = value; Q_EMIT expandChange(value); if (value) { m_animation->setStartValue(0); m_animation->setEndValue(m_boxWidget->height()); } else { m_animation->setStartValue(m_boxWidget->height()); m_animation->setEndValue(0); } m_animation->stop(); m_animation->start(); } /** * \~chinese \brief 获取当前内容控件的可见性 * \~chinese * \~chinese \return 当前内容控件的可见性 */ bool DBaseExpand::expand() const { return m_expand; } /** * \~chinese \brief 设置内容控件的可见性改变时动画的时间 * \~chinese * \~chinese \param duration 指定动画时间 */ void DBaseExpand::setAnimationDuration(int duration) { m_animation->setDuration(duration); } /** * \~chinese \brief 设置内容控件的可见性改变时动画的样式 * \~chinese * \~chinese \param curve 指定动画样式 */ void DBaseExpand::setAnimationEasingCurve(QEasingCurve curve) { m_animation->setEasingCurve(curve); } /** * \~chinese \brief 设置是否允许标题控件与内容控件之间的分割线 * \~chinese * \~chinese \param arg 为 ture 则显示分割线,反之则反 */ void DBaseExpand::setSeparatorVisible(bool arg) { m_hSeparator->setVisible(arg); } /** * \~chinese \brief 设置是否允许内容控件下的分割线 * \~chinese * \~chinese \param arg 为 ture 则显示分割线,反之则反 */ void DBaseExpand::setExpandedSeparatorVisible(bool arg) { if (arg) { connect(this, &DBaseExpand::expandChange, m_bottom_separator, &DSeparatorHorizontal::setVisible); m_bottom_separator->show(); } else { disconnect(this, &DBaseExpand::expandChange, m_bottom_separator, &DSeparatorHorizontal::setVisible); m_bottom_separator->hide(); } } void DBaseExpand::resizeEvent(QResizeEvent *e) { if (m_content) { m_content->setFixedWidth(e->size().width()); } QWidget::resizeEvent(e); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dbaseexpand.h000066400000000000000000000045031352002233700203640ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBASEEXPAND_H #define DBASEEXPAND_H #include #include #include #include #include "dtkwidget_global.h" #include "dseparatorhorizontal.h" #include "dconstants.h" DWIDGET_BEGIN_NAMESPACE class ContentLoader : public QFrame { Q_OBJECT Q_PROPERTY(int height READ height WRITE setFixedHeight) public: explicit ContentLoader(QWidget *parent = 0) : QFrame(parent){} }; class DBoxWidget; class LIBDTKWIDGETSHARED_EXPORT DBaseExpand : public QWidget { Q_OBJECT public: explicit DBaseExpand(QWidget *parent = 0); ~DBaseExpand(); void setHeader(QWidget *header); void setContent(QWidget *content, Qt::Alignment alignment = Qt::AlignHCenter); inline QWidget *getContent() const {return m_content;} void setHeaderHeight(int height); virtual void setExpand(bool value); bool expand() const; void setAnimationDuration(int duration); void setAnimationEasingCurve(QEasingCurve curve); void setSeparatorVisible(bool arg); void setExpandedSeparatorVisible(bool arg); Q_SIGNALS: void expandChange(bool e); void sizeChanged(QSize s); protected: void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; private: QWidget *m_header = NULL; QWidget *m_content = NULL; DBoxWidget *m_boxWidget = NULL; QVBoxLayout *m_headerLayout = NULL; QBoxLayout *m_contentLayout = NULL; ContentLoader *m_contentLoader = NULL; DSeparatorHorizontal * m_hSeparator = NULL; DSeparatorHorizontal *m_bottom_separator = NULL; QPropertyAnimation *m_animation = NULL; bool m_expand = false; }; DWIDGET_END_NAMESPACE #endif // DBASEEXPAND_H dtkwidget-2.1.1/src/widgets/dbaseline.cpp000066400000000000000000000075331352002233700203750ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbaseline.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! \~chinese \class DBaseLine \~chinese \brief 可以使用 DBaseLine 类快速创建具有位于左右两侧的两个控件的行控件。 \~chinese DBaseLine 提供一个固定高度的控件,包含分别位于左侧和右侧的两个可供显示的控件。 \~chinese DBaseLine 可用于构建固定行高并需要自定义左右控件的控件,比如上方导航栏等。如 DHeaderLine 即使用 DBaseLine 构建了一个带有文字标题和可选内容控件的控件。 \~chinese \sa DHeaderLine */ /*! \~english \class DBaseLine \~english \brief Use DBaseLine to create a widget for display inline widget. \~english DBaseLine provide a fixed height inline widget with two widgets for displaying related stuff. \~english \sa DHeaderLine */ DBaseLine::DBaseLine(QWidget *parent) : QLabel(parent) { DThemeManager::registerWidget(this); this->setFixedHeight(CONTENT_HEADER_HEIGHT); m_leftLayout = new QHBoxLayout(); m_leftLayout->setMargin(0); m_leftLayout->setSpacing(0); m_rightLayout = new QHBoxLayout(); m_rightLayout->setMargin(0); m_rightLayout->setSpacing(0); m_mainLayout = new QHBoxLayout(); m_mainLayout->setContentsMargins(m_leftMargin, 0, m_rightMargin, 0); m_mainLayout->addLayout(m_leftLayout); m_mainLayout->addStretch(); m_mainLayout->addLayout(m_rightLayout); this->setLayout(m_mainLayout); } /*! * \~english \brief set left content widget * \~chinese \brief 设置左侧内容控件 */ void DBaseLine::setLeftContent(QWidget *content) { QLayoutItem *child; while ((child = m_leftLayout->takeAt(0)) != 0) { delete child; } m_leftLayout->addWidget(content); } /*! * \~english \brief set right content widget * \~chinese \brief 设置右侧内容控件 */ void DBaseLine::setRightContent(QWidget *content) { QLayoutItem *child; while ((child = m_rightLayout->takeAt(0)) != 0) { delete child; } m_rightLayout->addWidget(content); } /*! * \~english \brief get left layout * \~chinese \brief 获取左侧 QBoxLayout */ QBoxLayout *DBaseLine::leftLayout() { return m_leftLayout; } /*! * \~english \brief get right layout * \~chinese \brief 获取右侧 QBoxLayout */ QBoxLayout *DBaseLine::rightLayout() { return m_rightLayout; } /*! * \~english \brief set left margin * \~chinese \brief 设置左侧外补(margin)边距 */ void DBaseLine::setLeftMargin(int margin) { m_leftMargin = margin; m_mainLayout->setContentsMargins(m_leftMargin, 0, m_rightMargin, 0); } /*! * \~english \brief set right margin * \~chinese \brief 设置右侧外补(margin)边距 */ void DBaseLine::setRightMargin(int margin) { m_rightMargin = margin; m_mainLayout->setContentsMargins(m_leftMargin, 0, m_rightMargin, 0); } /*! * \~english \brief get left margin * \~chinese \brief 左侧外补(margin)边距 */ int DBaseLine::leftMargin() const { return m_leftMargin; } /*! * \~english \brief get right margin * \~chinese \brief 右侧外补(margin)边距 */ int DBaseLine::rightMargin() const { return m_rightMargin; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dbaseline.h000066400000000000000000000030141352002233700200300ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBASELINE_H #define DBASELINE_H #include #include #include #include "dtkwidget_global.h" #include "dconstants.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DBaseLine : public QLabel { Q_OBJECT public: explicit DBaseLine(QWidget *parent = 0); void setLeftContent(QWidget *content); void setRightContent(QWidget *content); QBoxLayout *leftLayout(); QBoxLayout *rightLayout(); void setLeftMargin(int margin); void setRightMargin(int margin); int leftMargin() const; int rightMargin() const; private: QHBoxLayout *m_mainLayout = NULL; QHBoxLayout *m_leftLayout= NULL; QHBoxLayout *m_rightLayout = NULL; int m_leftMargin = HEADER_LEFT_MARGIN; int m_rightMargin = HEADER_RIGHT_MARGIN; }; DWIDGET_END_NAMESPACE #endif // DBASELINE_H dtkwidget-2.1.1/src/widgets/dblureffectwidget.cpp000066400000000000000000000676001352002233700221410ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dblureffectwidget.h" #include "private/dblureffectwidget_p.h" #include "dplatformwindowhandle.h" #include "util/dwindowmanagerhelper.h" #include #include #include #include #include #define MASK_COLOR_ALPHA_DEFAULT 204 QT_BEGIN_NAMESPACE Q_WIDGETS_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE QMultiHash DBlurEffectWidgetPrivate::blurEffectWidgetHash; QHash DBlurEffectWidgetPrivate::windowOfBlurEffectHash; DBlurEffectWidgetPrivate::DBlurEffectWidgetPrivate(DBlurEffectWidget *qq) : DObjectPrivate(qq) { } bool DBlurEffectWidgetPrivate::isBehindWindowBlendMode() const { D_QC(DBlurEffectWidget); return blendMode == DBlurEffectWidget::BehindWindowBlend || q->isTopLevel(); } bool DBlurEffectWidgetPrivate::isFull() const { D_QC(DBlurEffectWidget); return full || (q->isTopLevel() && !(blurRectXRadius * blurRectYRadius) && maskPath.isEmpty()); } void DBlurEffectWidgetPrivate::addToBlurEffectWidgetHash() { D_QC(DBlurEffectWidget); QWidget *oldTopLevelWidget = windowOfBlurEffectHash.value(q); if (oldTopLevelWidget) { blurEffectWidgetHash.remove(oldTopLevelWidget, q); updateWindowBlurArea(oldTopLevelWidget); } QWidget *topLevelWidget = q->topLevelWidget(); blurEffectWidgetHash.insertMulti(topLevelWidget, q); windowOfBlurEffectHash[q] = topLevelWidget; updateWindowBlurArea(topLevelWidget); } void DBlurEffectWidgetPrivate::removeFromBlurEffectWidgetHash() { D_QC(DBlurEffectWidget); QWidget *topLevelWidget = windowOfBlurEffectHash.value(q); if (!topLevelWidget) { return; } blurEffectWidgetHash.remove(topLevelWidget, q); windowOfBlurEffectHash.remove(q); updateWindowBlurArea(topLevelWidget); } bool DBlurEffectWidgetPrivate::updateWindowBlurArea() { D_QC(DBlurEffectWidget); QWidget *topLevelWidget = windowOfBlurEffectHash.value(q); return topLevelWidget && updateWindowBlurArea(topLevelWidget); } void DBlurEffectWidgetPrivate::setMaskAlpha(const quint8 alpha) { maskAlpha = alpha; // refresh alpha setMaskColor(maskColor); } void DBlurEffectWidgetPrivate::setMaskColor(const QColor &color) { maskColor = color; if (isBehindWindowBlendMode()) { maskColor.setAlpha(DWindowManagerHelper::instance()->hasBlurWindow() ? maskAlpha : MASK_COLOR_ALPHA_DEFAULT); } D_Q(DBlurEffectWidget); q->update(); } bool DBlurEffectWidgetPrivate::updateWindowBlurArea(QWidget *topLevelWidget) { if (!topLevelWidget->isVisible()) { return false; } QList blurEffectWidgetList = blurEffectWidgetHash.values(topLevelWidget); bool isExistMaskPath = false; Q_FOREACH (const DBlurEffectWidget *w, blurEffectWidgetList) { if (!w->d_func()->blurEnabled) { continue; } // 当存在一个模糊区域填充整个窗口时,不需要再考虑其它的控件,直接对此窗口开启全模糊即可 if (w->d_func()->isFull() && w->isVisible()) { DPlatformWindowHandle handle(topLevelWidget); if (!handle.enableBlurWindow()) { handle.setEnableBlurWindow(true); } return true; } if (!w->d_func()->maskPath.isEmpty() && w->isVisible()) { isExistMaskPath = true; break; } } // 清理窗口背景模糊是否完全开启的状态 DPlatformWindowHandle handle(topLevelWidget); if (handle.enableBlurWindow()) { handle.setEnableBlurWindow(false); } bool ok = false; if (isExistMaskPath) { QList pathList; Q_FOREACH (const DBlurEffectWidget *w, blurEffectWidgetList) { if (!w->d_func()->blurEnabled) { continue; } if (!w->isVisible()) { continue; } QPainterPath p; QRect r = w->rect(); r.moveTopLeft(w->mapTo(topLevelWidget, r.topLeft())); p.addRoundedRect(r, w->blurRectXRadius(), w->blurRectYRadius()); if (!w->d_func()->maskPath.isEmpty()) { p &= w->d_func()->maskPath.translated(r.topLeft()); } pathList << p; } ok = handle.setWindowBlurAreaByWM(pathList); } else { QVector areaList; areaList.reserve(blurEffectWidgetList.size()); Q_FOREACH (const DBlurEffectWidget *w, blurEffectWidgetList) { if (!w->d_func()->blurEnabled) { continue; } if (!w->isVisible()) { continue; } QRect r = w->rect(); r.moveTopLeft(w->mapTo(topLevelWidget, r.topLeft())); areaList << dMakeWMBlurArea(r.x(), r.y(), r.width(), r.height(), w->blurRectXRadius(), w->blurRectYRadius()); } ok = handle.setWindowBlurAreaByWM(areaList); } if (blurEffectWidgetList.isEmpty()) { blurEffectWidgetHash.remove(topLevelWidget); } return ok; } /*! * \~english \class DBlurEffectWidget * \~english \brief The DBlurEffectWidget class provides widget that backgrounds are blurred and semitranslucent. * * \~english DBlurEffectWidget is QWidget that has blurry background. With different * \~english blend mode set, DBlurEffectWidget can do in-window-blend, which means the * \~english the widget is blended with the widgets between the top level window and the * \~english widget itself, and behind-window-blend, which means the widget is blended with * \~english the scene behind the window (with the help of WM). * * \~english The effect has optional styles can choose from: DBlurEffectWidget::DarkColor, DBlurEffectWidget::LightColor, and * \~english DBlurEffectWidget::CustomColor. Usually the first two are sufficient, you can also choose * \~english CustomColor and set the color you want by setting DBlurEffectWidget::maskColor. * * \~english \note DBlurEffectWidget with BehindWindowBlend mode will become opaque if * \~english WM supports no X11 composite protocol. */ /*! * \~chinese \class DBlurEffectWidget * \~chinese \brief 用于实现主窗口或控件背景的实时模糊效果。 * * \~chinese 分为主窗口模糊 DBlurEffectWidget::BehindWindowBlend 和控件模糊 DBlurEffectWidget::InWindowBlend * \~chinese 这两种不同的模式,主窗口模糊效果依赖于窗口管理器的实现,目前仅支持 deepin-wm 和 kwin, * \~chinese 可以使用DWindowManagerHelper::hasBlurWindow 判断当前运行环境中的窗口管理器是否支持 * \~chinese 模糊特效,使用 DPlatformWindowHandle::setWindowBlurAreaByWM 设置主窗口背景的模糊 * \~chinese 区域。如果在一个主窗口内同时使用了多个 DBlurEffectWidget 控件,则在更新主窗口模糊区域 * \~chinese 时会自动将所有控件的区域合并到 QVector 或者 QList * \~chinese (如果有任意一个控件设置了 DBlurEffectWidget::radius 属性)中统一设置。 * \~chinese 控件模糊效果的原理和 DClipEffectWidget 类似,在控件绘制时先使用 QPlatformBackingStore::toImage() * \~chinese 获取主窗口上控件对应区域内已经绘制的内容,此时获取的内容为此控件下层控件所绘制的内容,将 * \~chinese 获得的 QImage 对象使用软件算法进行模糊处理,然后再将模糊之后的图像绘制到控件上。由于实现 * \~chinese 原理限制,不适用于主窗口为OpenGL绘制模式的窗口(如:QOpenGLWindow ),且控件下面使用 * \~chinese OpenGL绘制的内容也生成模糊的效果(如 QOpenGLWidget ) */ /*! * \~chinese \property DBlurEffectWidget::radius * \~chinese \brief 模糊效果计算时的取样范围,模糊的原理为:将此像素点和周围像素点合成计算得到得到新的值, * \~chinese 此属性表示像素点周围 radius 距离的所有像素点参与计算 * \~chinese \note 可读可写 * \~chinese \note 只在模式为 DBlurEffectWidget::InWindowBlend 时有效 */ /*! * \~chinese \property DBlurEffectWidget::mode * \~chinese \brief 所采用的模糊算法,默认值为 \a GaussianBlur * \~chinese \note 可读可写 * \~chinese \note 只在模式为 DBlurEffectWidget::InWindowBlend 时有效 */ /*! * \~chinese \property DBlurEffectWidget::blendMode * \~chinese \brief 模糊的应用场景,默认会根据有没有父控件自动判断使用哪种模式 * \~chinese \note 可读可写 * \~chinese \note 父对象为空时设置模式为 DBlurEffectWidget::InWindowBlend 没有意义 */ /*! * \~chinese \property DBlurEffectWidget::blurRectXRadius * \~chinese \brief 模糊区域在x轴方向上的圆角半径,默认值为0 * \~chinese \note 可读可写 * \~chinese \see DBlurEffectWidget::blurRectYRadius DBlurEffectWidget::setMaskPath QPainterPath::addRoundedRect */ /*! * \~chinese \property DBlurEffectWidget::blurRectYRadius * \~chinese \brief 模糊区域在y轴方向上的圆角半径,默认值为0 * \~chinese \note 可读可写 * \~chinese \see DBlurEffectWidget::blurRectXRadius DBlurEffectWidget::setMaskPath QPainterPath::addRoundedRect */ /*! * \~chinese \property DBlurEffectWidget::maskColor * \~chinese \brief 画在控件模糊背景之上的颜色,此颜色的alpha通道值会被 \a maskAlpha 属性影响 * \~chinese 修改此属性会自动将颜色模式设置为 CustomColor,设置后将不能再自动根据窗口管理器是否 * \~chinese 支持混成和模糊来自动使用最佳的颜色 * \~chinese \note 可读可写 * \~chinese \see DBlurEffectWidget::blurRectXRadius DBlurEffectWidget::setMaskColor(MaskColorType) */ /*! * \~chinese \property DBlurEffectWidget::maskAlpha * \~chinese \brief maskColor 的alpha通道值。当前窗口管理器支持混成(窗口背景透明)时默认值为102,否则为204 * \~chinese \note 可读可写 * \~chinese \see DBlurEffectWidget::maskColor DPlatformWindowHandle::hasBlurWindow */ /*! * \~chinese \property DBlurEffectWidget::full * \~chinese \brief 如果值为true,将模糊此控件所在顶层窗口的整个背景,而无论控件的大小和位置,否则使用控件的位置和大小 * \~chinese 设置顶层窗口的模糊区域。需要注意的时,当控件本身就是顶层窗口且未设置 blurRectXRadius 和 blurRectYRadius * \~chinese 属性的情况下,无论 full 属性的值为多少,都将和值为 true 时的行为保持一致。 * \~chinese \note 可读可写 * \~chinese \note 此属性不影响蒙版的绘制区域 * \~chinese \note 只在模糊的混合模式为 BehindWindowBlend 时生效 * \~chinese \see DBlurEffectWidget::blurRectXRadius BlurEffectWidget::blurRectYRadius * \~chinese \see DBlurEffectWidget::maskColor * \~chinese \see DBlurEffectWidget::blendMode */ /*! * \~chinese \property DBlurEffectWidget::blurEnabled * \~chinese \brief 如果值为 true 则此控件的模糊设置生效,否则不生效 * \~chinese \note 可读可写 */ /*! * \~chinese \fn DBlurEffectWidget::radiusChanged * \~chinese \brief 信号会在 radius 属性的值改变时被发送 * \~chinese \fn DBlurEffectWidget::modeChanged * \~chinese \brief 信号会在 mode 属性的值改变时被发送 * \~chinese \fn DBlurEffectWidget::blendModeChanged * \~chinese \brief 信号会在 blendMode 属性的值改变时被发送 * \~chinese \fn DBlurEffectWidget::blurRectXRadiusChanged * \~chinese \brief 信号会在 blurRectXRadius 属性的值改变时被发送 * * \~chinese \fn DBlurEffectWidget::blurRectYRadiusChanged * \~chinese \brief 信号会在 blurRectYRadius 属性的值改变时被发送 * \~chinese \fn DBlurEffectWidget::maskAlphaChanged * \~chinese \brief 信号会在 maskAlpha 属性的值改变时被发送 * \~chinese \fn DBlurEffectWidget::maskColorChanged * \~chinese \brief 信号会在 maskColor 属性的值改变时被发送 */ /*! * \~chinese \enum DBlurEffectWidget::BlurMode * \~chinese DBlurEffectWidget::BlurMode 模糊算法 * * \~chinese \var DBlurEffectWidget::GaussianBlur DBlurEffectWidget::GaussianBlur * \~chinese \href{https://zh.wikipedia.org/wiki/高斯模糊,高斯模糊算法} */ /*! * \~chinese \enum DBlurEffectWidget::BlendMode * \~chinese DBlurEffectWidget::BlendMode 模糊模式 * \~chinese \image html blur-effect.png * * \~chinese \var DBlurEffectWidget::InWindowBlend DBlurEffectWidget::InWindowBlend * \~chinese 以窗口内部控件作为模糊背景 * * \~chinese \var DBlurEffectWidget::BehindWindowBlend DBlurEffectWidget::BehindWindowBlend * \~chinese 以外部的其它窗口作为模糊背景 */ /*! * \~chinese \enum DBlurEffectWidget::MaskColorType * \~chinese DBlurEffectWidget::MaskColorType 内置的几种颜色模式。分为三种情况: * \~chinese \arg \c A:模式为 DBlurEffectWidget::InWindowBlend 或当前窗口管理器支持混成且支持窗口背景模糊 * \~chinese \arg \c B:模式为 DBlurEffectWidget::BehindWindowBlend 窗口管理器不支持混成 * \~chinese \arg \c C:模式为 DBlurEffectWidget::BehindWindowBlend 窗口管理器不支持模糊 * \~chinese \see DBlurEffectWidget::maskAlpha * * \~chinese \var DBlurEffectWidget::DarkColor DBlurEffectWidget::DarkColor * \~chinese 深色,三种情况下的值分别为: * * \~chinese \arg \c A:\color{black,#000000}(alpha通道值为非定值) * \~chinese \arg \c B:\color{#373F47,#373F47} * \~chinese \arg \c C:\color{rgba(0\,0\,0\,0.8),#CC000000} * * \~chinese \var DBlurEffectWidget::LightColor DBlurEffectWidget::LightColor * \~chinese 浅色,三种情况下的值分别为: * \~chinese \arg \c A:\color{#FFFFFF,#FFFFFF}(alpha通道值为非定值) * \~chinese \arg \c B:\color{#FCFCFC,#FCFCFC} * \~chinese \arg \c C:\color{rgba(255\,255\,255\,0.8),#CCFFFFFF} * * \~chinese \var DBlurEffectWidget::CustomColor DBlurEffectWidget::CustomColor * \~chinese 自定义颜色,使用 DBlurEffectWidget::setMaskColor 设置的颜色 */ /*! * \~english \brief DBlurEffectWidget::DBlurEffectWidget constructs an instance of DBlurEffectWidget. * \~english \param parent is passed to QWidget constructor. */ /*! * \~chinese \brief 和普通控件使用方式一样,可以作为任何控件的子控件。默认会开启 Qt::WA_TranslucentBackground, * \~chinese 必须设置控件为背景透明,否则控件所在区域的内容重绘时,在此控件下方的区域不会被下层控件重新绘制 * \~chinese \param 当父对象为空时,默认使用 DBlurEffectWidget::BehindWindowBlend 模式,否则使用 DBlurEffectWidget::InWindowBlend 模式 */ DBlurEffectWidget::DBlurEffectWidget(QWidget *parent) : QWidget(parent) , DObject(*new DBlurEffectWidgetPrivate(this)) { setAttribute(Qt::WA_TranslucentBackground); if (!parent) { D_D(DBlurEffectWidget); d->addToBlurEffectWidgetHash(); } QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::windowManagerChanged, this, [this] { D_D(DBlurEffectWidget); d->updateWindowBlurArea(); }); QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasBlurWindowChanged, this, [this] { D_D(DBlurEffectWidget); d->setMaskColor(d->maskColor); }); QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasCompositeChanged, this, [this] { D_D(const DBlurEffectWidget); if (d->maskColorType != CustomColor) update(); }); } DBlurEffectWidget::~DBlurEffectWidget() { D_D(DBlurEffectWidget); if (d->isBehindWindowBlendMode()) { d->removeFromBlurEffectWidgetHash(); } } /*! * \~english \property DBlurEffectWidget::radius * \~english \brief This property holds the radius of the blur effect. * * \~english \note This property has no effect with the DBlurEffectWidget::blendMode set * \~english to DBlurEffectWidget::BehindWindowBlend. */ int DBlurEffectWidget::radius() const { D_DC(DBlurEffectWidget); return d->radius; } /*! * \~english \property DBlurEffectWidget::mode * \~english \brief This property holds which blur alghorithm to be used. * * \~english Currently it only supports DBlurEffectWidget::GaussianBlur. */ DBlurEffectWidget::BlurMode DBlurEffectWidget::mode() const { D_DC(DBlurEffectWidget); return d->mode; } /*! * \~english \property DBlurEffectWidget::blendMode * \~english \brief This property holds which mode is used to blend the widget and its background scene. */ DBlurEffectWidget::BlendMode DBlurEffectWidget::blendMode() const { D_DC(DBlurEffectWidget); return d->blendMode; } /*! * \~english \property DBlurEffectWidget::blurRectXRadius * \~english \brief This property holds the xRadius of the effective background. * * \~english The xRadius and yRadius specify the radius of the ellipses defining * \~english the corners of the effective background. * * \~english \see DBlurEffectWidget::blurRectYRadius */ int DBlurEffectWidget::blurRectXRadius() const { D_DC(DBlurEffectWidget); return d->blurRectXRadius; } /*! * \~english \property DBlurEffectWidget::blurRectYRadius * \~english \brief This property holds the yRadius of the effective background. * * \~english The xRadius and yRadius specify the radius of the ellipses defining * \~english the corners of the effective background. * * \~english \see DBlurEffectWidget::blurRectXRadius */ int DBlurEffectWidget::blurRectYRadius() const { D_DC(DBlurEffectWidget); return d->blurRectYRadius; } /*! * \~english \property DBlurEffectWidget::maskColor * \~english \brief This property holds the background color of this widget. * * \~english It returns predefined colors if the DBlurEffectWidget::maskColorType is set * \~english to DBlurEffectWidget::DarkColor or BlurEffectWidget::LightColor, returns * \~english the color set by DBlurEffectWidget::setMaskColor if * \~english DBlurEffectWidget::maskColorType is set to BlurEffectWidget::CustomColor. */ QColor DBlurEffectWidget::maskColor() const { D_DC(DBlurEffectWidget); switch ((int)d->maskColorType) { case DarkColor: { if (!d->isBehindWindowBlendMode()) { return QColor(0, 0, 0, d->maskAlpha); } if (DWindowManagerHelper::instance()->hasComposite()) { return QColor(0, 0, 0, DWindowManagerHelper::instance()->hasBlurWindow() ? d->maskAlpha : MASK_COLOR_ALPHA_DEFAULT); } else { return QColor("#373F47"); } } case LightColor: { if (!d->isBehindWindowBlendMode()) { return QColor(255, 255, 255, d->maskAlpha); } if (DWindowManagerHelper::instance()->hasComposite()) { return QColor(255, 255, 255, DWindowManagerHelper::instance()->hasBlurWindow() ? d->maskAlpha : MASK_COLOR_ALPHA_DEFAULT); } else { return QColor("#FCFCFC"); } } } return d->maskColor; } quint8 DBlurEffectWidget::maskAlpha() const { D_DC(DBlurEffectWidget); return d->maskAlpha; } /*! * \~english \brief DBlurEffectWidget::setMaskPath set custom area as the effective background. * \~english \param path a QPainterPath to be used as the effectvie background. */ /*! * \~chinese \brief 设置模糊区域的路径,当未调用过此接口时,模糊区域为整个控件所占据的空间,此路径坐标原点为控件左上角 * \~chinese \param path * \~chinese \warning 设置自定义路径之后,控件大小改变时不会再自动调整模糊区域大小 * \~chinese \see DBlurEffectWidget::blurRectXRadius DBlurEffectWidget::blurRectYRadius */ void DBlurEffectWidget::setMaskPath(const QPainterPath &path) { D_D(DBlurEffectWidget); if (d->maskPath == path) { return; } d->maskPath = path; update(); } bool DBlurEffectWidget::isFull() const { D_DC(DBlurEffectWidget); return d->full; } bool DBlurEffectWidget::blurEnabled() const { D_DC(DBlurEffectWidget); return d->blurEnabled; } void DBlurEffectWidget::setRadius(int radius) { D_D(DBlurEffectWidget); if (d->radius == radius) { return; } d->radius = radius; d->sourceImage = QImage(); update(); Q_EMIT radiusChanged(radius); } void DBlurEffectWidget::setMode(DBlurEffectWidget::BlurMode mode) { D_D(DBlurEffectWidget); if (d->mode == mode) { return; } d->mode = mode; Q_EMIT modeChanged(mode); } void DBlurEffectWidget::setBlendMode(DBlurEffectWidget::BlendMode blendMode) { D_D(DBlurEffectWidget); if (d->blendMode == blendMode) { return; } if (blendMode == BehindWindowBlend) { d->addToBlurEffectWidgetHash(); } else { if (blendMode == InWindowBlend) { d->maskColor.setAlpha(d->maskAlpha); } if (d->blendMode == BehindWindowBlend) { d->removeFromBlurEffectWidgetHash(); } } d->blendMode = blendMode; update(); Q_EMIT blendModeChanged(blendMode); } void DBlurEffectWidget::setBlurRectXRadius(int blurRectXRadius) { D_D(DBlurEffectWidget); if (d->blurRectXRadius == blurRectXRadius) { return; } d->blurRectXRadius = blurRectXRadius; update(); Q_EMIT blurRectXRadiusChanged(blurRectXRadius); } void DBlurEffectWidget::setBlurRectYRadius(int blurRectYRadius) { D_D(DBlurEffectWidget); if (d->blurRectYRadius == blurRectYRadius) { return; } d->blurRectYRadius = blurRectYRadius; update(); Q_EMIT blurRectYRadiusChanged(blurRectYRadius); } void DBlurEffectWidget::setMaskAlpha(quint8 alpha) { D_D(DBlurEffectWidget); if (alpha == d->maskAlpha) return; d->setMaskAlpha(alpha); Q_EMIT maskAlphaChanged(alpha); } void DBlurEffectWidget::setMaskColor(QColor maskColor) { D_D(DBlurEffectWidget); if (!maskColor.isValid()) { maskColor = Qt::transparent; } if (d->maskColor == maskColor) { return; } d->maskColorType = CustomColor; d->setMaskColor(maskColor); Q_EMIT maskColorChanged(maskColor); } /*! * \~chinese \brief 设置控件的颜色模式,默认值为 \a CustomColor * \~chinese \param type */ void DBlurEffectWidget::setMaskColor(DBlurEffectWidget::MaskColorType type) { D_D(DBlurEffectWidget); if (d->maskColorType == type) { return; } d->maskColorType = type; update(); } void DBlurEffectWidget::setFull(bool full) { D_D(DBlurEffectWidget); if (d->full == full) return; d->full = full; d->updateWindowBlurArea(); Q_EMIT fullChanged(full); } void DBlurEffectWidget::setBlurEnabled(bool blurEnabled) { D_D(DBlurEffectWidget); if (d->blurEnabled == blurEnabled) return; d->blurEnabled = blurEnabled; d->updateWindowBlurArea(); update(); Q_EMIT blurEnabledChanged(d->blurEnabled); } DBlurEffectWidget::DBlurEffectWidget(DBlurEffectWidgetPrivate &dd, QWidget *parent) : QWidget(parent) , DObject(dd) { } inline QRect operator *(const QRect &rect, qreal scale) { return QRect(rect.left() * scale, rect.top() * scale, rect.width() * scale, rect.height() * scale); } void DBlurEffectWidget::paintEvent(QPaintEvent *event) { D_D(DBlurEffectWidget); if (!d->blurEnabled) return; QPainter pa(this); if (d->blurRectXRadius > 0 || d->blurRectYRadius > 0) { QPainterPath path; path.addRoundedRect(rect(), d->blurRectXRadius, d->blurRectYRadius); pa.setRenderHint(QPainter::Antialiasing); pa.setClipPath(path); } if (!d->maskPath.isEmpty()) { QPainterPath path = pa.clipPath(); if (path.isEmpty()) { path = d->maskPath; } else { path &= d->maskPath; } pa.setClipPath(path); } if (d->isBehindWindowBlendMode()) { pa.setCompositionMode(QPainter::CompositionMode_Source); } else { int radius = d->radius; QPoint point_offset = mapTo(window(), QPoint(0, 0)); const QRect &paintRect = event->rect(); qreal device_pixel_ratio = devicePixelRatioF(); if (d->sourceImage.isNull()) { const QRect &tmp_rect = rect().translated(point_offset).adjusted(-radius, -radius, radius, radius); d->sourceImage = window()->backingStore()->handle()->toImage().copy(tmp_rect * device_pixel_ratio); d->sourceImage = d->sourceImage.scaledToWidth(d->sourceImage.width() / device_pixel_ratio); } else { QPainter pa_image(&d->sourceImage); pa_image.setCompositionMode(QPainter::CompositionMode_Source); for (const QRect &rect : event->region().rects()) { if (device_pixel_ratio > 1) { const QRect &tmp_rect = this->rect().translated(point_offset); const QImage &area = window()->backingStore()->handle()->toImage().copy(tmp_rect * device_pixel_ratio); pa_image.drawImage(rect.topLeft() + QPoint(radius, radius), area.scaledToWidth(area.width() / device_pixel_ratio).copy(rect)); } else { pa_image.drawImage(rect.topLeft() + QPoint(radius, radius), window()->backingStore()->handle()->toImage().copy(rect.translated(point_offset))); } } pa_image.end(); } QImage image = d->sourceImage.copy(paintRect.adjusted(0, 0, 2 * radius, 2 * radius)); QTransform old_transform = pa.transform(); pa.translate(paintRect.topLeft() - QPoint(radius, radius)); qt_blurImage(&pa, image, radius, false, false); pa.setTransform(old_transform); } pa.fillRect(rect(), maskColor()); } void DBlurEffectWidget::moveEvent(QMoveEvent *event) { D_D(DBlurEffectWidget); if (isTopLevel()) { return QWidget::moveEvent(event); } if (d->blendMode == DBlurEffectWidget::InWindowBlend) { d->sourceImage = QImage(); return QWidget::moveEvent(event); } d->updateWindowBlurArea(); QWidget::moveEvent(event); } void DBlurEffectWidget::resizeEvent(QResizeEvent *event) { D_D(DBlurEffectWidget); d->sourceImage = QImage(); if (!d->isBehindWindowBlendMode()) { return QWidget::resizeEvent(event); } d->updateWindowBlurArea(); QWidget::resizeEvent(event); } void DBlurEffectWidget::showEvent(QShowEvent *event) { D_D(DBlurEffectWidget); if (!d->isBehindWindowBlendMode()) { return QWidget::showEvent(event); } d->addToBlurEffectWidgetHash(); QWidget::showEvent(event); } void DBlurEffectWidget::hideEvent(QHideEvent *event) { D_D(DBlurEffectWidget); if (!d->isBehindWindowBlendMode()) { return QWidget::hideEvent(event); } d->removeFromBlurEffectWidgetHash(); QWidget::hideEvent(event); } void DBlurEffectWidget::changeEvent(QEvent *event) { D_D(DBlurEffectWidget); if (!d->isBehindWindowBlendMode()) { return QWidget::changeEvent(event); } if (event->type() == QEvent::ParentAboutToChange) { d->removeFromBlurEffectWidgetHash(); } else if (event->type() == QEvent::ParentChange) { d->addToBlurEffectWidgetHash(); } QWidget::changeEvent(event); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dblureffectwidget.h000066400000000000000000000101431352002233700215740ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBLUREFFECTWIDGET_H #define DBLUREFFECTWIDGET_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DBlurEffectWidgetPrivate; class LIBDTKWIDGETSHARED_EXPORT DBlurEffectWidget : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT // The "radius" property is only support for InWindowBlend. See property "blendMode" Q_PROPERTY(int radius READ radius WRITE setRadius NOTIFY radiusChanged) Q_PROPERTY(BlurMode mode READ mode WRITE setMode NOTIFY modeChanged) Q_PROPERTY(BlendMode blendMode READ blendMode WRITE setBlendMode NOTIFY blendModeChanged) Q_PROPERTY(int blurRectXRadius READ blurRectXRadius WRITE setBlurRectXRadius NOTIFY blurRectXRadiusChanged) Q_PROPERTY(int blurRectYRadius READ blurRectYRadius WRITE setBlurRectYRadius NOTIFY blurRectYRadiusChanged) // ###(zccrs): The alpha channel of the color is fixed. // The alpha channel is 102 if the DPlatformWindowHandle::hasBlurWindow() is true, otherwise is 204). Q_PROPERTY(QColor maskColor READ maskColor WRITE setMaskColor NOTIFY maskColorChanged) Q_PROPERTY(quint8 maskAlpha READ maskAlpha WRITE setMaskAlpha NOTIFY maskAlphaChanged) Q_PROPERTY(bool full READ isFull WRITE setFull NOTIFY fullChanged) Q_PROPERTY(bool blurEnabled READ blurEnabled WRITE setBlurEnabled NOTIFY blurEnabledChanged) public: // TODO: To support MeanBlur, MedianBlur, BilateralFilter enum BlurMode { GaussianBlur }; Q_ENUMS(BlurMode) enum BlendMode { InWindowBlend, BehindWindowBlend }; Q_ENUMS(BlendMode) enum MaskColorType { DarkColor, LightColor, CustomColor }; Q_ENUMS(MaskColorType) explicit DBlurEffectWidget(QWidget *parent = 0); ~DBlurEffectWidget(); int radius() const; BlurMode mode() const; BlendMode blendMode() const; int blurRectXRadius() const; int blurRectYRadius() const; bool isFull() const; bool blurEnabled() const; QColor maskColor() const; quint8 maskAlpha() const; void setMaskPath(const QPainterPath &path); public Q_SLOTS: void setRadius(int radius); void setMode(BlurMode mode); void setBlendMode(BlendMode blendMode); void setBlurRectXRadius(int blurRectXRadius); void setBlurRectYRadius(int blurRectYRadius); void setMaskAlpha(quint8 alpha); void setMaskColor(QColor maskColor); void setMaskColor(MaskColorType type); void setFull(bool full); void setBlurEnabled(bool blurEnabled); Q_SIGNALS: void radiusChanged(int radius); void modeChanged(BlurMode mode); void blendModeChanged(BlendMode blendMode); void blurRectXRadiusChanged(int blurRectXRadius); void blurRectYRadiusChanged(int blurRectYRadius); void maskAlphaChanged(quint8 alpha); void maskColorChanged(QColor maskColor); void fullChanged(bool full); void blurEnabledChanged(bool blurEnabled); protected: DBlurEffectWidget(DBlurEffectWidgetPrivate &dd, QWidget *parent = 0); void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; void moveEvent(QMoveEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; void changeEvent(QEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DBlurEffectWidget) }; DWIDGET_END_NAMESPACE #endif // DBLUREFFECTWIDGET_H dtkwidget-2.1.1/src/widgets/dborderlesswidget.cpp000066400000000000000000000732071352002233700221640ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dborderlesswidget.h" #include #include #include #include #include #include #include #include #include #include #include #include "dtitlebar.h" #include "private/dborderlesswidget_p.h" #ifdef Q_OS_LINUX #include "../platforms/x11/xutil.h" #endif #include "dwidgetutil.h" DWIDGET_BEGIN_NAMESPACE const int WindowGlowRadius = 40; const int WindowRadius = 4; const int WindowBorder = 1; const int WindowHandleWidth = 10; const QColor BorderColor = QColor(0, 0, 0, 60); const QColor BackgroundTopColor = QColor(255, 255, 255); const QColor BackgroundButtonColor = QColor(255, 255, 255); const QColor TipsBorderColor = QColor(255, 255, 255, 255 * 0.2); const QColor TipsBackground = QColor(0, 0, 0); /// shadow #define SHADOW_COLOR_NORMAL QColor(0, 0, 0, 255 * 0.15) #define SHADOW_COLOR_ACTIVE QColor(0, 0, 0, 255 * 0.3) DBorderlessWidgetPrivate::DBorderlessWidgetPrivate(DBorderlessWidget *q) : DObjectPrivate(q) { leftPressed = false; resizable = true; } void DBorderlessWidgetPrivate::init() { D_Q(DBorderlessWidget); dwindowFlags = Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint; m_NormalShadowWidth = WindowGlowRadius; m_ShadowWidth = WindowGlowRadius; shadowColor = SHADOW_COLOR_ACTIVE; shadowOffset = QPoint(0, 10); m_Radius = WindowRadius; m_Border = WindowBorder; m_ResizeHandleWidth = WindowHandleWidth; m_MousePressed = false; m_backgroundColor = BackgroundTopColor; rootLayout = new QVBoxLayout(q); rootLayout->setSpacing(0); updateContentsMargins(); windowWidget = new QWidget; QVBoxLayout *windowLayout = new QVBoxLayout(windowWidget); windowLayout->setMargin(0); windowLayout->setSpacing(0); rootLayout->addWidget(windowWidget); titlebar = new DTitlebar; contentWidget = new QWidget; QVBoxLayout *contentWidgetLayout = new QVBoxLayout; contentWidgetLayout->setSpacing(0); contentWidgetLayout->setMargin(0); contentWidget->setLayout(contentWidgetLayout); contentWidget->setContentsMargins(m_Border, 0, m_Border, m_Border); contentWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); windowLayout->addWidget(titlebar); windowLayout->addWidget(contentWidget); auto filter = new FilterMouseMove(windowWidget); windowWidget->installEventFilter(filter); filter->m_rootWidget = q; q->connect(titlebar, &DTitlebar::optionClicked, q, &DBorderlessWidget::optionClicked); q->connect(titlebar, &DTitlebar::mouseMoving, q, &DBorderlessWidget::moveWindow); q->connect(titlebar, SIGNAL(mousePressed(Qt::MouseButtons)), q, SLOT(_q_onTitleBarMousePressed(Qt::MouseButtons))); q->connect(qApp, &QGuiApplication::focusWindowChanged, q, [q] { if (q->isActiveWindow()) { q->setShadowColor(SHADOW_COLOR_ACTIVE); } else { q->setShadowColor(SHADOW_COLOR_NORMAL); } }); } QSize DBorderlessWidgetPrivate::externSize(const QSize &size) const { return QSize(size.width() + (m_ShadowWidth + m_Border) * 2, size.height() + (m_ShadowWidth + m_Border) * 2); } QMargins DBorderlessWidgetPrivate::externMargins() const { return rootLayout->contentsMargins() + contentWidget->contentsMargins(); } int DBorderlessWidgetPrivate::externWidth() const { return m_ShadowWidth + m_Border; } void DBorderlessWidgetPrivate::updateContentsMargins() { rootLayout->setContentsMargins(m_ShadowWidth + m_Border - shadowOffset.x(), m_ShadowWidth + m_Border - shadowOffset.y(), m_ShadowWidth + m_Border + shadowOffset.x(), m_ShadowWidth + m_Border + shadowOffset.y()); } void DBorderlessWidgetPrivate::_q_onTitleBarMousePressed(Qt::MouseButtons buttons) const { #ifdef Q_OS_LINUX D_QC(DBorderlessWidget); if (buttons != Qt::LeftButton) { XUtils::CancelMoveWindow(q, Qt::LeftButton); } #else Q_UNUSED(buttons); #endif } /*! * \~chinese @class DBorderlessWidget * * \~chinese @brief DBorderlessWidget 是DTK中用于提供无边框的功能的类,主要用于Windows。 * 在Windows和Linux图形环境下,窗口管理器都会附加一个标题栏,为了Deepin的设计,DTK的窗口不会使用系统提供的 * 样式,而是通过取消系统标题栏和自己提供阴影来达到效果。 * \~chinese - 通过设置窗口的WindowFlags为Qt::Window | Qt::FramelessWindowHint来实现 */ /*! * \~chinese \fn DBorderlessWidget::optionClicked() * \~chinese 会在标题栏被点击时触发 * \~chinese \fn DBorderlessWidget::backgroundColorChanged(QColor backgroundColor) * \~chinese 会在背景颜色发生改变时时触发 * \~chinese \fn DBorderlessWidget::shadowColorChanged(QColor shadowColor) * \~chinese 会在阴影颜色发生改变时触发 * \~chinese \fn DBorderlessWidget::shadowOffsetChanged(QPoint shadowOffset) * \~chinese 会在阴影偏移被设置时触发 */ /*! * \~chinese \enum DBorderlessWidget::DecorationFlag * \~chinese @brief DBorderlessWidget::DecorationFlag 定义了修饰的标志 */ /*! * \~chinese \var DBorderlessWidget::ShowTitlebarSeparator * \~chinese @brief 显示标题栏分隔栏 */ /*! * @brief 用于构建DBorderlessWidget实例的构造函数 * @param parent 接收QWidget的parent指针 */ DBorderlessWidget::DBorderlessWidget(QWidget *parent): DBorderlessWidget(*new DBorderlessWidgetPrivate(this), parent) { } /*! * \~chinese @brief 返回装饰标志 * \~chinese @return DBorderlessWidget::DecorationFlags */ DBorderlessWidget::DecorationFlags DBorderlessWidget::decorationFlags() { D_D(DBorderlessWidget); return d->decorationFlags; } /*! * \~chinese @brief 设置当前的修饰标志 * \~chinese @param flags 接收一个DBorderlessWidget::DecorationFlags的枚举 */ void DBorderlessWidget::setDecorationFlags(DBorderlessWidget::DecorationFlags flags) { D_D(DBorderlessWidget); d->decorationFlags = flags; if (flags & ShowTitlebarSeparator) { d->titlebar->setSeparatorVisible(true); } else { d->titlebar->setSeparatorVisible(false); } } /*! * \~chinese @brief 用于构建DBorderlessWidget实例的构造函数 * * \~chinese @param dd 接收私有类 * \~chinese @param parent 设置parent */ DBorderlessWidget::DBorderlessWidget(DBorderlessWidgetPrivate &dd, QWidget *parent) : QWidget(parent), DObject(dd) { D_D(DBorderlessWidget); d->init(); QWidget::setMouseTracking(true); QWidget::setAttribute(Qt::WA_TranslucentBackground, true); setWindowFlags(windowFlags()); setDecorationFlags(decorationFlags()); DBorderlessWidget::adjustSize(); #ifdef Q_OS_LINUX XUtils::SetMouseTransparent(this, true); #endif #ifdef DTK_TITLE_DRAG_WINDOW connect(d->titlebar, &DTitlebar::mousePosMoving, this, [ = ](Qt::MouseButton /*button*/, QPoint pos) { move(pos - d->m_LastMousePos); }); connect(d->titlebar, &DTitlebar::mousePosPressed, this, [ = ](Qt::MouseButtons /*button*/, QPoint pos) { // TODO: fix margin pos.setY(pos.y() - 10); d->m_LastMousePos = pos - this->mapToParent(this->pos()); }); #endif } void DBorderlessWidget::enterEvent(QEvent *e) { // qDebug() << "enterEvent" ; return QWidget::enterEvent(e); } void DBorderlessWidget::leaveEvent(QEvent *e) { // qDebug() << "leaveEvent"; return QWidget::leaveEvent(e); } void DBorderlessWidget::changeEvent(QEvent *event) { D_D(DBorderlessWidget); if (event->type() == QEvent::WindowStateChange) { d->updateContentsMargins(); } QWidget::changeEvent(event); } void DBorderlessWidget::mouseMoveEvent(QMouseEvent *event) { #ifdef Q_OS_LINUX D_D(DBorderlessWidget); const int x = event->x(); const int y = event->y(); if (d->resizingCornerEdge == XUtils::CornerEdge::kInvalid && d->resizable) { XUtils::UpdateCursorShape(this, x, y, d->externMargins(), d->m_ResizeHandleWidth); } #endif return QWidget::mouseMoveEvent(event); } void DBorderlessWidget::mousePressEvent(QMouseEvent *event) { #ifdef Q_OS_LINUX D_D(DBorderlessWidget); const int x = event->x(); const int y = event->y(); if (event->button() == Qt::LeftButton) { const XUtils::CornerEdge ce = XUtils::GetCornerEdge(this, x, y, d->externMargins(), d->m_ResizeHandleWidth); if (ce != XUtils::CornerEdge::kInvalid) { d->resizingCornerEdge = ce; XUtils::StartResizing(this, QCursor::pos(), ce); } } #endif return QWidget::mousePressEvent(event); } void DBorderlessWidget::mouseReleaseEvent(QMouseEvent *event) { #ifdef Q_OS_LINUX D_D(DBorderlessWidget); d->resizingCornerEdge = XUtils::CornerEdge::kInvalid; #endif return QWidget::mouseReleaseEvent(event); } /*! * \~chinese \brief 该方法会在Linux下调用XUtils::ShowMinimizedWindow(this, true); */ void DBorderlessWidget::showMinimized() { #ifdef Q_OS_LINUX XUtils::ShowMinimizedWindow(this, true); #endif QWidget::showMinimized(); } /*! * \~chinese @brief 该方法会在Linux下调用XUtils::ShowMaximizedWindow(this, true); */ void DBorderlessWidget::showMaximized() { #ifdef Q_OS_LINUX XUtils::ShowMaximizedWindow(this); #endif this->show(); this->activateWindow(); this->raise(); } /*! * \~chinese @brief 设置内部控件的外边距 * \~chinese * \~chinese @param left 设置左边缘的距离 * \~chinese @param top 设置上边缘的距离 * \~chinese @param right 设置右边缘的距离 * \~chinese @param bottom 设置下边缘的距离 */ void DBorderlessWidget::setContentsMargins(int left, int top, int right, int bottom) { D_D(DBorderlessWidget); d->contentWidget->setContentsMargins(left, top, right, bottom); } /*! * \~chinese @brief 重载的方法,接收QMargins对象来设置内部控件的外边距 * * \~chinese @param margins QMargins对象 */ void DBorderlessWidget::setContentsMargins(const QMargins &margins) { D_D(DBorderlessWidget); d->contentWidget->setContentsMargins(margins); } /*! * \~chinese @brief 获取内部控件的外边距 * * \~chinese @param left 左边距的指针 * \~chinese @param top 上边距的指针 * \~chinese @param right 右边距的指针 * \~chinese @param bottom 下边距的指针 */ void DBorderlessWidget::getContentsMargins(int *left, int *top, int *right, int *bottom) const { D_DC(DBorderlessWidget); d->contentWidget->getContentsMargins(left, top, right, bottom); } /*! * \~chinese @brief 获取内部控件的外边距 * * \~chinese @return QMargins 返回QMargins对象 */ QMargins DBorderlessWidget::contentsMargins() const { D_DC(DBorderlessWidget); return d->contentWidget->contentsMargins(); } /*! * \~chinese @brief 显示全屏 * \~chinese 会在Linux下调用XUtils::ShowFullscreenWindow(this, true); */ void DBorderlessWidget::showFullScreen() { #ifdef Q_OS_LINUX XUtils::ShowFullscreenWindow(this, true); #endif this->show(); this->activateWindow(); this->raise(); } /*! * \~chinese @brief 移动窗口 * \~chinese @param button 接收Qt::MouseButton枚举值 */ void DBorderlessWidget::moveWindow(Qt::MouseButton button) { #ifdef Q_OS_LINUX XUtils::MoveWindow(this, button); #endif } /*! * \~chinese @brief 切换窗口为最大化或者还原 * */ void DBorderlessWidget::toggleMaximizedWindow() { #ifdef Q_OS_LINUX XUtils::ToggleMaximizedWindow(this); #endif } /*! * \~chinese @brief 窗口将以标准模式显示 * */ void DBorderlessWidget::showNormal() { #ifdef Q_OS_LINUX XUtils::ShowNormalWindow(this); #endif } /*! * \~chinese @brief 删除当前的布局 * */ void DBorderlessWidget::removeLayout() { qDeleteAll(this->children()); } /*! * \~chinese @brief 返回当前的WindowFlags * * \~chinese @return Qt::WindowFlags Qt的窗口标志枚举值 */ Qt::WindowFlags DBorderlessWidget::windowFlags() { D_D(DBorderlessWidget); return d->dwindowFlags; } /*! * \~english @brief set the required flags for the window * * \~english @param type Qt::WindowFlags enum * * \~chinese @brief 设置窗口需要的标志位 * \~chinese @param type Qt::WindowFlags 枚举值 */ void DBorderlessWidget::setWindowFlags(Qt::WindowFlags type) { D_D(DBorderlessWidget); QWidget::setWindowFlags(type | Qt::FramelessWindowHint); d->dwindowFlags = type; d->titlebar->setWindowFlags(type &~ Qt::Window); } /*! * \~chinese @brief 返回标题栏的高度 * * \~chinese @return int 标题栏的高度 */ int DBorderlessWidget::titlebarHeight() const { D_DC(DBorderlessWidget); return d->titlebar->height(); } /*! * \~chinese @brief 设置标题栏的固定高度 * * \~chinese @param h 高度 */ void DBorderlessWidget::setTitlebarFixedHeight(int h) { D_D(DBorderlessWidget); d->titlebar->setFixedHeight(h); DBorderlessWidget::adjustSize(); } /*! * \~chinese @brief 设置标题 * * \~chinese @param t 标题内容 */ void DBorderlessWidget::setTitle(const QString &t) { D_D(DBorderlessWidget); d->titlebar->setTitle(t); } /*! * \~chinese @brief 设置标题栏的图标 * * \~chinese @param icon 图标对象 */ void DBorderlessWidget::setTitleIcon(const QPixmap &icon) { D_D(DBorderlessWidget); d->titlebar->setIcon(icon); } /*! * \~chinese @brief 返回标题栏对象 * * \~chinese @return DTitlebar* 标题栏对象指针 */ DTitlebar *DBorderlessWidget::titlebar() const { D_DC(DBorderlessWidget); return d->titlebar; } /*! * \~chinese @brief 设置标题栏菜单 * * \~chinese @param menu 菜单对象指针 */ void DBorderlessWidget::setTitlebarMenu(QMenu *menu) { D_D(DBorderlessWidget); d->titlebar->setMenu(menu); } /*! * \~chinese @brief 返回标题栏的菜单对象 * * \~chinese @return QMenu* 菜单对象的指针 */ QMenu *DBorderlessWidget::titleBarMenu() const { D_DC(DBorderlessWidget); return d->titlebar->menu(); } /*! * \~chinese @brief 设置标题栏的控件 * * \~chinese @param w 要添加在标题栏的QWidget控件 * \~chinese @param fixCenterPos 从中心偏移的距离 */ void DBorderlessWidget::setTitlebarWidget(QWidget *w, bool fixCenterPos) { D_D(DBorderlessWidget); d->titlebar->setCustomWidget(w, Qt::AlignCenter, fixCenterPos); } /*! * \~chinese @brief 重载的方法,增加了设置对齐方式的参数 * * \~chinese @param w 要添加在标题栏的QWidget控件 * \~chinese @param wflag 设置对齐方式 * \~chinese @param fixCenterPos 从中心偏移的距离 */ void DBorderlessWidget::setTitlebarWidget(QWidget *w, Qt::AlignmentFlag wflag, bool fixCenterPos) { D_D(DBorderlessWidget); d->titlebar->setCustomWidget(w, wflag, fixCenterPos); } /*! * \~chinese @brief 返回当前的布局 * */ // TODO: fix layout QLayout *DBorderlessWidget::layout() const { D_DC(DBorderlessWidget); return d->contentWidget->layout(); } /*! * \~chinese @brief 设置布局 * * \~chinese @param l 布局对象 */ void DBorderlessWidget::setLayout(QLayout *l) { D_D(DBorderlessWidget); qDeleteAll(d->contentWidget->children()); d->contentWidget->setLayout(l); d->contentWidget->adjustSize(); d->windowWidget->adjustSize(); DBorderlessWidget::resize(d->windowWidget->size()); } /*! * \~chinese @brief 返回控件的圆角半径 * * \~chinese @return int 半径 */ int DBorderlessWidget::radius() const { D_DC(DBorderlessWidget); return d->m_Radius; } /*! * \~chinese @brief 设置控件的圆角半径 * * \~chinese @param r 半径 */ void DBorderlessWidget::setRadius(int r) { D_D(DBorderlessWidget); if (r > d->m_Border * 2) { r = d->m_Border * 2; } d->m_Radius = r; } /*! * \~chinese @brief 返回阴影的宽度 * * \~chinese @return int 阴影宽度 */ int DBorderlessWidget::shadowWidth() const { D_DC(DBorderlessWidget); return d->m_Radius; } /*! * \~chinese @brief 设置阴影的宽度 * * \~chinese @param r 阴影的宽度 */ void DBorderlessWidget::setShadowWidth(int r) { D_D(DBorderlessWidget); if (d->m_ShadowWidth == r) { return; } d->m_Radius = r; d->m_ShadowWidth = r; d->updateContentsMargins(); drawShadowPixmap(); update(); } /*! * \~chinese @property DBorderlessWidget::backgroundColor * \~chinese @brief 返回背景颜色 * * \~chinese @return QColor 颜色对象 */ QColor DBorderlessWidget::backgroundColor() const { D_DC(DBorderlessWidget); return d->m_backgroundColor; } /*! * \~chinese @brief 返回阴影的颜色 * * \~chinese @return QColor 颜色对象 */ QColor DBorderlessWidget::shadowColor() const { D_DC(DBorderlessWidget); return d->shadowColor; } /*! * \~chinese @brief 返回阴影的偏移 * * \~chinese @return QPoint 坐标对象 */ QPoint DBorderlessWidget::shadowOffset() const { D_DC(DBorderlessWidget); return d->shadowOffset; } /*! * \~chinese @brief 设置背景颜色 * * \~chinese @param backgroundColor 颜色对象 */ void DBorderlessWidget::setBackgroundColor(QColor backgroundColor) { D_D(DBorderlessWidget); if (d->m_backgroundColor == backgroundColor) { return; } d->m_backgroundColor = backgroundColor; Q_EMIT backgroundColorChanged(backgroundColor); } /*! * \~chinese @brief 设置阴影颜色 * * \~chinese @param shadowColor 颜色对象 */ void DBorderlessWidget::setShadowColor(QColor shadowColor) { D_D(DBorderlessWidget); if (d->shadowColor == shadowColor) { return; } d->shadowColor = shadowColor; drawShadowPixmap(); update(); Q_EMIT shadowColorChanged(shadowColor); } /*! * \~chinese @brief 设置阴影的偏移 * * \~chinese @param shadowOffset 偏移的坐标对象 */ void DBorderlessWidget::setShadowOffset(QPoint shadowOffset) { D_D(DBorderlessWidget); if (d->shadowOffset == shadowOffset) { return; } d->shadowOffset = shadowOffset; d->updateContentsMargins(); update(); Q_EMIT shadowOffsetChanged(shadowOffset); } /*! * \~chinese @brief 绘制阴影的图像 * */ void DBorderlessWidget::drawShadowPixmap() { D_D(DBorderlessWidget); QPixmap pixmap(QWidget::size() - QSize(d->m_ShadowWidth * 2, d->m_ShadowWidth * 2)); pixmap.fill(Qt::black); d->shadowPixmap = QPixmap::fromImage(Dtk::Widget::dropShadow(pixmap, d->m_ShadowWidth, d->shadowColor)); } /*! * \~chinese @brief 返回边框的大小 * * \~chinese @return int 边框大小 */ int DBorderlessWidget::border() const { D_DC(DBorderlessWidget); return d->m_Border; } /*! * \~chinese @brief 设置边框的大小 * * \~chinese @param b 设置的大小 */ void DBorderlessWidget::setBorder(int b) { D_D(DBorderlessWidget); if (b < 0) { b = 0; } d->m_Border = b; if (d->m_Radius > b * 2) { d->m_Radius = b * 2; } } /*! * \~chinese @brief 返回背景的图像 * * \~chinese @return const QPixmap& 背景的图像对象 */ const QPixmap &DBorderlessWidget::backgroundImage() const { D_DC(DBorderlessWidget); return d->m_Background; } /*! * \~chinese @brief 设置背景的图像数据 * * \~chinese @param srcPixmap 图像数据 */ void DBorderlessWidget::setBackgroundImage(const QPixmap &srcPixmap) { D_D(DBorderlessWidget); int radius = d->m_Radius; int windowExtern = d->m_ShadowWidth + d->m_Border * 2; QRect windowRect = QWidget::rect().marginsRemoved( QMargins(windowExtern, windowExtern, windowExtern, windowExtern)); QSize sz = windowRect.size(); QPixmap backgroundPixmap = srcPixmap.scaled(sz, Qt::KeepAspectRatioByExpanding); QPixmap maskPixmap(sz); maskPixmap.fill(Qt::transparent); QPainterPath path; path.addRoundRect(QRectF(0, 0, sz.width(), sz.height()), radius / 2); QPainter bkPainter(&maskPixmap); bkPainter.setRenderHint(QPainter::Antialiasing); bkPainter.setPen(QPen(Qt::white, 1)); bkPainter.fillPath(path, QBrush(Qt::red)); QPainter::CompositionMode mode = QPainter::CompositionMode_SourceIn; QImage resultImage = QImage(sz, QImage::Format_ARGB32_Premultiplied); QPainter painter(&resultImage); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(resultImage.rect(), Qt::transparent); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.drawImage(0, 0, maskPixmap.toImage()); painter.setCompositionMode(mode); painter.drawImage(0, 0, backgroundPixmap.toImage()); painter.setCompositionMode(QPainter::CompositionMode_DestinationOver); painter.end(); d->m_Background = QPixmap::fromImage(resultImage); } /*! * \~chinese @brief 设置固定大小 * * \~chinese @param size 大小 */ void DBorderlessWidget::setFixedSize(const QSize &size) { D_D(DBorderlessWidget); d->resizable = false; d->titlebar->setMinimumWidth(size.width()); d->windowWidget->setFixedSize(size); d->contentWidget->setFixedSize(size.width(), size.height() - titlebarHeight()); QSize externSize = d->externSize(size); QWidget::setFixedSize(externSize); setWindowFlags(windowFlags() & ~ Qt::WindowMaximizeButtonHint); #ifdef Q_OS_LINUX XUtils::DisableResize(this); #endif } /*! * \~chinese @brief 重载的方法,设置固定大小 * * \~chinese @param w 固定的宽度 * \~chinese @param h 固定的高度 */ void DBorderlessWidget::setFixedSize(int w, int h) { DBorderlessWidget::setFixedSize(QSize(w, h)); } /*! * \~chinese @brief 设置固定宽度 * * \~chinese @param w 固定的宽度 */ void DBorderlessWidget::setFixedWidth(int w) { D_D(DBorderlessWidget); d->titlebar->setFixedWidth(w); d->windowWidget->setFixedWidth(w); QWidget::setFixedWidth(w + d->m_ShadowWidth + d->m_Border); } /*! * \~chinese @brief 调整控件的大小 * \~chinese - 可以调整的范围介于minimumSize和maxmumSize之间 * * @param width 设置宽度 * @param height 设置高度 */ void DBorderlessWidget::resize(int width, int height) { resize(QSize(width, height)); } /*! * \~chinese @brief 这是调整大小的重载方法,接收一个QSzie对象 * * \~chinese @param size 要调整的大小 */ void DBorderlessWidget::resize(const QSize &size) { D_D(DBorderlessWidget); d->windowWidget->resize(size); d->titlebar->resize(size.width(), d->titlebar->height()); QSize externSize = d->externSize(size); if (d->resizable) { QWidget::setMinimumSize(externSize); QWidget::resize(externSize); } else { QWidget::setMaximumSize(externSize); } } /*! * \~chinese @brief 立即调整大小 * */ void DBorderlessWidget::adjustSize() { D_D(DBorderlessWidget); d->windowWidget->adjustSize(); QSize externSize = d->externSize(d->windowWidget->size()); if (d->resizable) { QWidget::setMinimumSize(externSize); QWidget::resize(externSize); } else { QWidget::setMaximumSize(externSize); QWidget::resize(externSize); } } /*! * \~chinese @brief 返回控件当前的大小 * * \~chinese @return QSize */ QSize DBorderlessWidget::size() const { D_DC(DBorderlessWidget); return d->windowWidget->size(); } /*! * \~chinese @brief 移动控件到某一点 * * \~chinese @param x X坐标 * \~chinese @param y Y坐标 */ void DBorderlessWidget::move(int x, int y) { D_D(DBorderlessWidget); QWidget::move(x - d->externWidth(), y - d->externWidth()); } /*! * \~chinese @brief 这是重载的方法,接收一个坐标对象 * * \~chinese @param p 要移动到的坐标 */ void DBorderlessWidget::move(const QPoint &p) { DBorderlessWidget::move(p.x(), p.y()); } /*! * \~chinese @brief 返回当前的几何尺寸,包含阴影 * * \~chinese @return QRect 当前的几何大小 */ QRect DBorderlessWidget::frameGeometry() const { D_DC(DBorderlessWidget); return d->windowWidget->frameGeometry(); } /*! * \~chinese @brief 返回当前的几何尺寸,不包含阴影的区域 * * @return const QRect& 当前的几何大小 */ const QRect &DBorderlessWidget::geometry() const { D_DC(DBorderlessWidget); return d->windowWidget->geometry(); } /*! * \~chinese @brief 此方法返回窗口小部件的几何 * \~chinese - 对于子窗口和控件, 此方法始终包含空矩形 * * @return QRect */ QRect DBorderlessWidget::normalGeometry() const { D_DC(DBorderlessWidget); return d->windowWidget->normalGeometry(); } /*! * \~chinese @brief 返回当前的X坐标 * * \~chinese @return int */ int DBorderlessWidget::x() const { D_DC(DBorderlessWidget); return d->windowWidget->x(); } /*! * \~chinese @brief 返回当前的Y坐标 * * \~chinese @return int */ int DBorderlessWidget::y() const { D_DC(DBorderlessWidget); return d->windowWidget->y(); } /*! * \~chinese @brief 返回当前的坐标 * * \~chinese @return QPoint 相对于父窗口的坐标 */ QPoint DBorderlessWidget::pos() const { D_DC(DBorderlessWidget); return d->windowWidget->pos(); } /*! * \~chinese @brief 返回窗口外部框架的大小 * * \~chinese @return QSize 框架的大小 */ QSize DBorderlessWidget::frameSize() const { D_DC(DBorderlessWidget); return d->windowWidget->frameSize(); } /*! * \~chinese @brief 返回当前的宽度 * * \~chinese @return int 当前的宽度 */ int DBorderlessWidget::width() const { D_DC(DBorderlessWidget); return d->windowWidget->width(); } /*! * \~chinese @brief 返回当前的高度 * * \~chinese @return int 当前的高度 */ int DBorderlessWidget::height() const { D_DC(DBorderlessWidget); return d->windowWidget->height(); } /*! * \~chinese @brief 返回当前的大小 * * \~chinese @return QRect 当前的大小 */ inline QRect DBorderlessWidget::rect() const { D_DC(DBorderlessWidget); return d->windowWidget->rect(); } /*! * \~chinese @brief 返回内部控件的大小 * * \~chinese @return QRect 内部控件的大小 */ QRect DBorderlessWidget::childrenRect() const { D_DC(DBorderlessWidget); return d->windowWidget->childrenRect(); } /*! * \~chinese @brief 返回内部控件的区域大小 * * \~chinese @return QRegion 内部控件的区域大小 */ QRegion DBorderlessWidget::childrenRegion() const { D_DC(DBorderlessWidget); return d->windowWidget->childrenRegion(); } void DBorderlessWidget::showEvent(QShowEvent *e) { QWidget::showEvent(e); } void DBorderlessWidget::resizeEvent(QResizeEvent *e) { D_D(DBorderlessWidget); #ifdef Q_OS_LINUX int resizeHandleWidth = d->resizable ? d->m_ResizeHandleWidth : 0; XUtils::SetWindowExtents(this, d->externMargins(), resizeHandleWidth); #endif drawShadowPixmap(); d->titlebar->resize(e->size().width(), d->titlebar->height()); QWidget::resizeEvent(e); } void DBorderlessWidget::closeEvent(QCloseEvent *e) { QWidget::closeEvent(e); } void DBorderlessWidget::paintEvent(QPaintEvent * /*e*/) { D_D(DBorderlessWidget); int radius = d->m_Radius; //. TODO: border not part of window? int windowExtern = d->m_ShadowWidth + d->m_Border * 2; int contentExtern = d->m_ShadowWidth + d->m_Border * 2; QPainter painter(this); painter.drawPixmap(0, 0, d->shadowPixmap); QRect contentRect = QWidget::rect().marginsRemoved(QMargins(contentExtern, contentExtern, contentExtern, contentExtern)); QRect windowRect = QWidget::rect().marginsRemoved(QMargins(windowExtern, windowExtern, windowExtern, windowExtern)); contentRect.moveTopLeft(contentRect.topLeft() - d->shadowOffset); windowRect.moveTopLeft(windowRect.topLeft() - d->shadowOffset); if (! d->m_Background.isNull()) { painter.drawPixmap(contentRect, d->m_Background); } else { QPoint topLeft(windowRect.x(), windowRect.y()); QPoint bottomRight(windowRect.x() + windowRect.width(), windowRect.y() + windowRect.height()); QPainterPath border; border.addRoundedRect(windowRect, radius, radius); QLinearGradient linearGradient(topLeft, QPoint(topLeft.x(), bottomRight.y())); linearGradient.setColorAt(0.0, d->m_backgroundColor); linearGradient.setColorAt(0.2, d->m_backgroundColor); linearGradient.setColorAt(1.0, d->m_backgroundColor); QPen borderPen(BorderColor); painter.setRenderHint(QPainter::Antialiasing); painter.setBrush(QBrush(linearGradient)); painter.strokePath(border, borderPen); painter.fillPath(border, /*palette().background()*/QBrush(linearGradient)); } } FilterMouseMove::FilterMouseMove(QObject *object) : QObject(object) { } FilterMouseMove::~FilterMouseMove() { } bool FilterMouseMove::eventFilter(QObject *obj, QEvent *event) { switch (event->type()) { case QEvent::Enter: { if (qobject_cast(obj) != qobject_cast(this->parent())) { break; } if (m_rootWidget) { #ifdef Q_OS_LINUX XUtils::ResetCursorShape(m_rootWidget); #endif } break; } default: { } } return QObject::eventFilter(obj, event); } DWIDGET_END_NAMESPACE #include "moc_dborderlesswidget.cpp" dtkwidget-2.1.1/src/widgets/dborderlesswidget.h000066400000000000000000000135561352002233700216320ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DABSTRACTWIDGET_H #define DABSTRACTWIDGET_H #include #include #include class QMenu; DWIDGET_BEGIN_NAMESPACE class DBorderlessWidgetPrivate; class DTitlebar; class LIBDTKWIDGETSHARED_EXPORT DBorderlessWidget : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: enum DecorationFlag { ShowTitlebarSeparator = 0x01 }; Q_DECLARE_FLAGS(DecorationFlags, DecorationFlag) Q_FLAGS(DecorationFlags) explicit DBorderlessWidget(QWidget *parent = 0); Q_PROPERTY(int radius READ radius WRITE setRadius) Q_PROPERTY(int shadowWidth READ shadowWidth WRITE setShadowWidth) Q_PROPERTY(int border READ border WRITE setBorder) Q_PROPERTY(int titlebarHeight READ titlebarHeight WRITE setTitlebarFixedHeight) Q_PROPERTY(QPixmap backgroundImage READ backgroundImage WRITE setBackgroundImage) Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged) Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged) Q_PROPERTY(QPoint shadowOffset READ shadowOffset WRITE setShadowOffset NOTIFY shadowOffsetChanged) DecorationFlags decorationFlags(); void setDecorationFlags(DecorationFlags flags); Qt::WindowFlags windowFlags(); void setWindowFlags(Qt::WindowFlags type); void setTitle(const QString &); void setTitleIcon(const QPixmap &icon); DTitlebar *titlebar() const; void setTitlebarMenu(QMenu *); QMenu *titleBarMenu() const; void setTitlebarWidget(QWidget *, bool fixCenterPos = false); void setTitlebarWidget(QWidget *w, Qt::AlignmentFlag wflag, bool fixCenterPos = false); int titlebarHeight() const; void setTitlebarFixedHeight(int h); QLayout *layout() const; void setLayout(QLayout *); int radius() const; void setRadius(int r); int shadowWidth() const; void setShadowWidth(int w); int border() const; void setBorder(int b); const QPixmap &backgroundImage() const; void setBackgroundImage(const QPixmap &srcPixmap); void setContentsMargins(int left, int top, int right, int bottom); void setContentsMargins(const QMargins &margins); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QMargins contentsMargins() const; void setFixedSize(const QSize &); void setFixedSize(int w, int h); void setFixedWidth(int w); // void setFixedHeight(int h); void resize(int width, int height); void resize(const QSize &); void removeLayout(); void adjustSize(); void move(int x, int y); void move(const QPoint &); QRect frameGeometry() const; const QRect &geometry() const; QRect normalGeometry() const; int x() const; int y() const; QPoint pos() const; QSize frameSize() const; QSize size() const; int width() const; int height() const; QRect rect() const; QRect childrenRect() const; QRegion childrenRegion() const; QSize minimumSize() const; QSize maximumSize() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; void setMinimumSize(const QSize &); void setMinimumSize(int minw, int minh); void setMaximumSize(const QSize &); void setMaximumSize(int maxw, int maxh); void setMinimumWidth(int minw); void setMinimumHeight(int minh); void setMaximumWidth(int maxw); void setMaximumHeight(int maxh); QColor backgroundColor() const; QColor shadowColor() const; QPoint shadowOffset() const; protected: void mouseMoveEvent(QMouseEvent *) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; void showEvent(QShowEvent *) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; void closeEvent(QCloseEvent *) Q_DECL_OVERRIDE; void enterEvent(QEvent *)Q_DECL_OVERRIDE; void leaveEvent(QEvent *)Q_DECL_OVERRIDE; void changeEvent(QEvent *event) Q_DECL_OVERRIDE; public Q_SLOTS: void showMinimized(); void showMaximized(); void showFullScreen(); void showNormal(); void moveWindow(Qt::MouseButton button); void toggleMaximizedWindow(); void setBackgroundColor(QColor backgroundColor); void setShadowColor(QColor shadowColor); void setShadowOffset(QPoint shadowOffset); protected: explicit DBorderlessWidget(DBorderlessWidgetPrivate &dd, QWidget *parent = 0); virtual void drawShadowPixmap(); Q_SIGNALS: void optionClicked(); void backgroundColorChanged(QColor backgroundColor); void shadowColorChanged(QColor shadowColor); void shadowOffsetChanged(QPoint shadowOffset); private: D_PRIVATE_SLOT(void _q_onTitleBarMousePressed(Qt::MouseButtons) const) D_DECLARE_PRIVATE(DBorderlessWidget) }; class FilterMouseMove : public QObject { Q_OBJECT public: explicit FilterMouseMove(QObject *object = nullptr); ~FilterMouseMove(); bool eventFilter(QObject *obj, QEvent *event); //private: QWidget *m_rootWidget = nullptr; }; DWIDGET_END_NAMESPACE #endif // DABSTRACTWIDGET_H dtkwidget-2.1.1/src/widgets/dborderlesswindow.cpp000066400000000000000000000055461352002233700222110ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dborderlesswindow.h" #include #include #include #include #include "dtitlebar.h" #include "private/dborderlesswidget_p.h" DWIDGET_BEGIN_NAMESPACE class DBorderlessWindowPrivate: public DBorderlessWidgetPrivate { D_DECLARE_PUBLIC(DBorderlessWindow) public: explicit DBorderlessWindowPrivate(DBorderlessWindow *q); void init(); QMenu *m_menu = nullptr; QWidget *m_parent = nullptr; }; DBorderlessWindowPrivate::DBorderlessWindowPrivate(DBorderlessWindow *q): DBorderlessWidgetPrivate(q) { } void DBorderlessWindowPrivate::init() { D_Q(DBorderlessWindow); m_menu = new QMenu(q); q->setTitlebarMenu(m_menu); const DApplication *dapp = qobject_cast(qApp); if (dapp) { q->setWindowTitle(dapp->productName()); } else { q->setWindowTitle(qApp->applicationDisplayName()); } } /*! * \~chinese @class DBorderlessWindow * \~chinese @brief DBorderlessWindow 是DBorderlessWidget的派生类,提供了简化的接口 * * \~chinese @param parent */ DBorderlessWindow::DBorderlessWindow(QWidget *parent): DBorderlessWidget(*(new DBorderlessWindowPrivate(this))) { D_D(DBorderlessWindow); setParent(parent); d->init(); } /*! * \~chinese @brief 修改当前的parent * * \~chinese @param parent */ void DBorderlessWindow::setParent(QWidget *parent) { D_D(DBorderlessWindow); d->m_parent = parent; QObject::setParent(parent); } /*! * \~chinese @brief 获取当前的父窗口对象 * * \~chinese @return QWidget* 父窗口对象 */ QWidget *DBorderlessWindow::parentWidget() const { D_DC(DBorderlessWindow); return d->m_parent; } /*! * \~chinese @brief 设置内部的布局 * * \~chinese @param l 布局对象 */ void DBorderlessWindow::setContentLayout(QLayout *l) { DBorderlessWidget::setLayout(l); } /*! * \~chinese @brief 设置内部控件 * * \~chinese @param w */ void DBorderlessWindow::setContentWidget(QWidget *w) { QHBoxLayout *l = new QHBoxLayout; l->setSpacing(0); l->setMargin(0); l->addWidget(w); l->setAlignment(w, Qt::AlignCenter); setContentLayout(l); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dborderlesswindow.h000066400000000000000000000025101352002233700216420ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOW_H #define DWINDOW_H #include #include #include #include "dborderlesswidget.h" class QMenu; DWIDGET_BEGIN_NAMESPACE class DBorderlessWindowPrivate; class DBorderlessWindow : public DBorderlessWidget { Q_OBJECT public: explicit DBorderlessWindow(QWidget *parent = Q_NULLPTR); void setContentLayout(QLayout *l); void setContentWidget(QWidget *w); void setParent(QWidget *parent); QWidget *parentWidget() const; protected Q_SLOTS: private: D_DECLARE_PRIVATE(DBorderlessWindow) Q_DISABLE_COPY(DBorderlessWindow) }; DWIDGET_END_NAMESPACE #endif // DWINDOW_H dtkwidget-2.1.1/src/widgets/dboxwidget.cpp000066400000000000000000000161751352002233700206110ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include "dthememanager.h" #include "dboxwidget.h" #include "private/dboxwidget_p.h" DWIDGET_BEGIN_NAMESPACE /*! \~english \class DBoxWidget \~english \brief The DBoxWidget widget provides a Adaptive child widget size when child widget size changed. */ DBoxWidgetPrivate::DBoxWidgetPrivate(DBoxWidget *qq): DObjectPrivate(qq), layout(new QBoxLayout(QBoxLayout::TopToBottom)) { } void DBoxWidgetPrivate::init() { Q_Q(DBoxWidget); layout->setMargin(0); layout->setSpacing(0); q->setLayout(layout); q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } /*! * \~english \class DBoxWidget * \~english \brief The DBoxWidget class provides widget born with QBoxLayout set. * * \~english Since an widget with QBoxLayout set is very common use case in Qt * \~english programming, yet very tedious, DBoxWidget is built to ease that pain. * * \~english Also, DBoxWidget will calculate the size it needs automatically, so you don't * \~english need to set width for DHBoxWidget or height for DVBoxLayout. * * \~english \see DHBoxWidget and DVBoxWidget */ /*! * \~chinese \class DBoxWidget * \~chinese \brief DBoxWidget提供了一个自适应子控件大小的Widget. * * \~chinese 在Qt编程中,使用QBoxLayout设置控件是很常见的,DBoxWidget提供了方便的封装,会根据需要的大小自动 * 设置DBoxWidget的宽高。 */ /*! * \~english \brief DBoxWidget::DBoxWidget constructs an instance of DBoxWidget. * \~english \param direction is the direction used by the internal QBoxLayout. * \~english \param parent is passed to QFrame constructor. */ /*! * \~chinese \brief DBoxWidget的构造函数 * * \~chinese \param direction 是设置内部QBoxLayout使用的方向 * \~chinese \param parent 传递给QFrame的构造函数 */ DBoxWidget::DBoxWidget(QBoxLayout::Direction direction, QWidget *parent): QFrame(parent), DObject(*new DBoxWidgetPrivate(this)) { DThemeManager::registerWidget(this); d_func()->layout->setDirection(direction); d_func()->init(); } /*! * \~english \property DBoxWidget::direction * \~english \brief This property holds the direction of the internal QBoxLayout. */ /*! * \~chinese \property DBoxWidget::direction * \~chinese 这个属性返回当前QBoxLayout使用的方向 * \return QBoxLayout::Direction 当前的方向 */ QBoxLayout::Direction DBoxWidget::direction() const { Q_D(const DBoxWidget); return d->layout->direction(); } /*! * \~english \property DBoxWidget::layout * \~english \brief This property holds the internal layout object. * * This property can be used to get the internal layout, so you can set * some extra properties on the layout to match the custom needs. */ /*! * \~chinese \property DBoxWidget::layout * \~chinese \brief 这个属性会返回当前使用的布局对象 * \return QBoxLayout* */ QBoxLayout *DBoxWidget::layout() const { Q_D(const DBoxWidget); return d->layout; } /*! * \~english \brief DBoxWidget::addWidget adds widget to the internal layout. * \~english \param widget is the widget to be added. */ /*! * \~chinese \brief 调用QBoxLayout的addWidget方法将QWidget添加到布局中 * * \param widget 要添加的QWidget对象 */ void DBoxWidget::addWidget(QWidget *widget) { layout()->addWidget(widget); } /*! * \~chinese \brief 设置QBoxLayout当前的方向 * * \param direction */ void DBoxWidget::setDirection(QBoxLayout::Direction direction) { Q_D(DBoxWidget); if (d->layout->direction() == direction) return; d->layout->setDirection(direction); Q_EMIT directionChanged(direction); } /*! * \~chinese \brief 当方向是QBoxLayout::TopToBottom或者QBoxLayout::BottomToTop时, * 固定高度将使用传入的高度,并设置最小宽度为传入的宽度。 * 否则将使用传入的宽度当做固定宽度,高度为最小高度。 * \param size */ void DBoxWidget::updateSize(const QSize &size) { if(direction() == QBoxLayout::TopToBottom || QBoxLayout::BottomToTop) { setFixedHeight(size.height()); if(size.width() > minimumWidth()) setMinimumWidth(qMin(size.width(), maximumWidth())); } else { setFixedWidth(size.width()); if(size.height() > minimumHeight()) setMinimumHeight(qMin(size.height(), maximumHeight())); } } /*!\reimp */ bool DBoxWidget::event(QEvent *ee) { Q_D(const DBoxWidget); if(ee->type() == QEvent::LayoutRequest) { if(size() != d->layout->sizeHint()) { updateSize(d->layout->sizeHint()); updateGeometry(); } } else if(ee->type() == QEvent::Resize) { Q_EMIT sizeChanged(size()); } else if(ee->type() == QEvent::ChildAdded) { updateSize(d->layout->sizeHint()); } else if(ee->type() == QEvent::ChildRemoved) { updateSize(d->layout->sizeHint()); } else if(ee->type() == QEvent::Show) { updateSize(d->layout->sizeHint()); } return QWidget::event(ee); } /*! * \~english \brief DBoxWidget::sizeHint reimplemented from QWidget::sizeHint(). * \~english \return the recommended size of this widget. */ /*!\reimp */ QSize DBoxWidget::sizeHint() const { Q_D(const DBoxWidget); return d->layout->sizeHint(); } /*! * \~english \class DHBoxWidget * \~english \brief The DHBoxWidget class is DBoxWidget with DBoxWidget::direction set to * QBoxLayout::LeftToRight. */ /*! * \~english \brief DHBoxWidget::DHBoxWidget constructs an instance of DHBoxWidget. * \~english \param parent is passed to DBoxWidget constructor. */ /*! * \~chinese \class DHBoxWidget * \~chinese \brief 是设置成水平方向的DBoxWidget */ /*! * \~chinese \brief DHBoxWidget的构造函数 * * \param parent */ DHBoxWidget::DHBoxWidget(QWidget *parent): DBoxWidget(QBoxLayout::LeftToRight, parent) { } /*! * \~english \class DVBoxWidget * \~english \brief The DVBoxWidget class is DBoxWidget with DBoxWidget::direction set to * QBoxLayout::TopToBottom. */ /*! * \~english \brief DVBoxWidget::DVBoxWidget constructs an instance of DVBoxWidget. * \~english \param parent is passed to DBoxWidget constructor. */ /*! * \~chinese \class DVoxWidget * \~chinese \brief 是设置成垂直方向的DBoxWidget */ /*! * \~chinese \brief DVBoxWidget的构造函数 * * \param parent */ DVBoxWidget::DVBoxWidget(QWidget *parent): DBoxWidget(QBoxLayout::TopToBottom, parent) { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dboxwidget.h000066400000000000000000000036041352002233700202470ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBOXWIDGET_H #define DBOXWIDGET_H #include "dtkwidget_global.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DBoxWidgetPrivate; class DBoxWidget : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QBoxLayout::Direction direction READ direction WRITE setDirection NOTIFY directionChanged) public: explicit DBoxWidget(QBoxLayout::Direction direction, QWidget *parent = 0); QBoxLayout::Direction direction() const; QBoxLayout *layout() const; void addWidget(QWidget *widget); QSize sizeHint() const Q_DECL_OVERRIDE; public Q_SLOTS: void setDirection(QBoxLayout::Direction direction); Q_SIGNALS: void sizeChanged(QSize size); void directionChanged(QBoxLayout::Direction direction); protected: virtual void updateSize(const QSize &size); bool event(QEvent *ee) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DBoxWidget) }; class DHBoxWidget : public DBoxWidget { Q_OBJECT public: explicit DHBoxWidget(QWidget *parent = 0); }; class DVBoxWidget : public DBoxWidget { Q_OBJECT public: explicit DVBoxWidget(QWidget *parent = 0); }; DWIDGET_END_NAMESPACE #endif // DBOXWIDGET_H dtkwidget-2.1.1/src/widgets/dbuttonlist.cpp000066400000000000000000000154221352002233700210160ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbuttonlist.h" #include "dthememanager.h" #include "dconstants.h" #include #include #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE DIconButton::DIconButton(const QString &Icon, const QString &text, QWidget *parent): QPushButton(text, parent), m_icon(Icon), m_text(text) { initIconLabel(); initConnect(); } void DIconButton::initConnect(){ connect(this, SIGNAL(toggled(bool)), m_iconLabel, SLOT(setVisible(bool))); } void DIconButton::initIconLabel(){ m_iconLabel = new QLabel(this); setIconLeftMargin(20); m_iconLabel->hide(); QImage image(m_icon); m_iconLabel->setPixmap(QPixmap::fromImage(image)); m_iconLabel->setFixedSize(image.size()); } void DIconButton::setIconLeftMargin(int leftMargin){ m_iconLabel->move(leftMargin, y()); } void DIconButton::resizeEvent(QResizeEvent *event){ int height = event->size().height(); m_iconLabel->move(m_iconLabel->x(), (height - m_iconLabel->height())/ 2 ); QPushButton::resizeEvent(event); } void DIconButton::setIconLabel(const QString &icon){ m_icon = icon; QImage image(m_icon); m_iconLabel->setPixmap(QPixmap::fromImage(image)); m_iconLabel->setFixedSize(image.size()); } void DIconButton::hideIconLabel(){ m_iconLabel->hide(); } void DIconButton::updateStyle(){ style()->unpolish(this); style()->polish(this); update(); } void DIconButton::enterEvent(QEvent *event){ Q_EMIT mouseEntered(text()); QPushButton::enterEvent(event); } void DIconButton::leaveEvent(QEvent *event){ Q_EMIT mouseLeaved(text()); QPushButton::leaveEvent(event); } /*! * \class DButtonList * * \~chinese \brief 已废弃,请考虑配合 QButtonGroup 使用 QRadioButton 来替代。 * \~english \brief Deprecated. Consider use QRadioButton with QButtonGroup instead. * * \~chinese \deprecated 请考虑配合 QButtonGroup 使用 QRadioButton 来替代。 * \~english \deprecated Consider use QRadioButton with QButtonGroup instead. */ DButtonList::DButtonList(QWidget *parent) : QListWidget(parent) { DThemeManager::registerWidget(this); setSelectionMode(DButtonList::NoSelection); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollMode(ScrollPerItem); setResizeMode(Adjust); setItemSize(200, BUTTON_HEIGHT); m_buttonGroup = new QButtonGroup(this); m_buttonGroup->setExclusive(true); initConnect(); } void DButtonList::initMargins(int leftMargin, int rightMargin, int imageLeftMargin){ m_leftMargin = leftMargin; m_rightMargin = rightMargin; m_imageLeftMargin = imageLeftMargin; } DButtonList::~DButtonList() { } void DButtonList::initConnect(){ connect(m_buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(setButtonChecked(int))); } void DButtonList::setItemWidth(int width){ setGridSize(QSize(width, gridSize().height())); setFixedWidth(gridSize().width()); } void DButtonList::setItemHeight(int height){ setGridSize(QSize(gridSize().width(), height)); } void DButtonList::setItemSize(int width, int height){ setItemSize(QSize(width, height)); } void DButtonList::setItemSize(QSize size){ setGridSize(size); setFixedWidth(gridSize().width()); for(int i=0; i< count(); i++){ itemWidget(item(i))->setFixedHeight(size.height()); } } void DButtonList::addButton(const QString &label){ int index = count(); addButton(label, index); } void DButtonList::addButton(const QString &label, int index){ DIconButton* button = new DIconButton(":/images/dark/images/tick_hover.png", label, this); button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); button->setCheckable(true); connect(button, SIGNAL(mouseEntered(QString)), this, SIGNAL(buttonMouseEntered(QString))); connect(button, SIGNAL(mouseLeaved(QString)), this, SIGNAL(buttonMouseLeaved(QString))); QFrame* borderFrame = new QFrame; borderFrame->setObjectName("BorderFrame"); QVBoxLayout* borderLayout = new QVBoxLayout; borderLayout->addWidget(button); borderLayout->setSpacing(0); borderLayout->setContentsMargins(m_leftMargin, 0, m_rightMargin, 0); borderFrame->setLayout(borderLayout); m_buttonGroup->addButton(button, index); QListWidgetItem* item = new QListWidgetItem(this); addItem(item); setItemWidget(item, borderFrame); setItemSize(gridSize()); } void DButtonList::addButtons(const QStringList &listLabels){ for(int i= 0; i< listLabels.length(); i++) { addButton(listLabels.at(i), i); } } void DButtonList::setButtonChecked(int id){ if (id < m_buttonGroup->buttons().length()){ DIconButton* button = reinterpret_cast(m_buttonGroup->button(id)); button->setChecked(true); if (m_buttonGroup->buttons().length() == 1){ button->setProperty("state", "OnlyOne"); button->hideIconLabel(); }else{ button->setProperty("state", "normal"); } button->updateStyle(); Q_EMIT buttonCheckedIndexChanged(id); Q_EMIT buttonChecked(button->text()); } } void DButtonList::checkButtonByIndex(int index){ if (index < m_buttonGroup->buttons().length()){ DIconButton* button = reinterpret_cast(m_buttonGroup->button(index)); button->click(); } } DIconButton* DButtonList::getButtonByIndex(int index){ if (index < m_buttonGroup->buttons().length()){ DIconButton* button = reinterpret_cast(m_buttonGroup->button(index)); return button; }else{ qWarning() << "There is no this index:" << index; } return NULL; } void DButtonList::clear(){ Q_FOREACH (QAbstractButton* button, m_buttonGroup->buttons()) { // qDebug() << static_cast(button)->text(); static_cast(button)->disconnect(); m_buttonGroup->removeButton(static_cast(button)); } QListWidget::clear(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dbuttonlist.h000066400000000000000000000051771352002233700204710ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBUTTONLIST_H #define DBUTTONLIST_H #include #include #include "dtkwidget_global.h" class QButtonGroup; class QLabel; class QPoint; class QResizeEvent; class QEvent; DWIDGET_BEGIN_NAMESPACE class DIconButton : public QPushButton { Q_OBJECT public: DIconButton(const QString &Icon, const QString &text, QWidget *parent = Q_NULLPTR); void initIconLabel(); void initConnect(); void setIconLeftMargin(int leftMargin); void setIconLabel(const QString &icon); void hideIconLabel(); void updateStyle(); Q_SIGNALS: void mouseEntered(QString label); void mouseLeaved(QString label); protected: void resizeEvent(QResizeEvent *event); void enterEvent(QEvent *event); void leaveEvent(QEvent *event); private: QLabel *m_iconLabel; QString m_icon; QString m_text; }; class LIBDTKWIDGETSHARED_EXPORT DButtonList : public QListWidget { Q_OBJECT public: Q_DECL_DEPRECATED explicit DButtonList(QWidget *parent = Q_NULLPTR); ~DButtonList(); void initMargins(int leftMargin, int rightMargin, int imageLeftMargin); DIconButton *getButtonByIndex(int index); public Q_SLOTS: void addButton(const QString &label); void addButton(const QString &label, int index); void addButtons(const QStringList &listLabels); void setItemHeight(int height); void setItemWidth(int width); void setItemSize(int width, int height); void setItemSize(QSize size); void checkButtonByIndex(int index); void clear(); private Q_SLOTS: void setButtonChecked(int id); Q_SIGNALS: void buttonChecked(QString label); void buttonCheckedIndexChanged(int index); void buttonMouseEntered(QString label); void buttonMouseLeaved(QString label); private: QButtonGroup *m_buttonGroup = NULL; void initConnect(); int m_leftMargin = 10; int m_rightMargin = 10; int m_imageLeftMargin = 10; }; DWIDGET_END_NAMESPACE #endif // DBUTTONLIST_H dtkwidget-2.1.1/src/widgets/dcircleprogress.cpp000066400000000000000000000174021352002233700216350ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dcircleprogress.h" #include "private/dcircleprogress_p.h" #include #include #include #include DWIDGET_USE_NAMESPACE DCircleProgressPrivate::DCircleProgressPrivate(DCircleProgress *q) : DObjectPrivate(q) { m_topLabel.setAttribute(Qt::WA_TranslucentBackground); m_topLabel.setAlignment(Qt::AlignCenter); m_topLabel.setObjectName("TopLabel"); m_bottomLabel.setAttribute(Qt::WA_TranslucentBackground); m_bottomLabel.setAlignment(Qt::AlignCenter); m_bottomLabel.setObjectName("BottomLabel"); m_bottomLabel.hide(); QBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addStretch(); mainLayout->addWidget(&m_topLabel); mainLayout->addWidget(&m_bottomLabel); mainLayout->addStretch(); mainLayout->setSpacing(0); mainLayout->setMargin(0); q->setLayout(mainLayout); } void DCircleProgressPrivate::paint(QPainter *painter) { Q_Q(const DCircleProgress); painter->setRenderHints(QPainter::Antialiasing); QPen pen(m_chunkColor); pen.setWidth(m_lineWidth); painter->setPen(pen); const QRect widgetRect = q->rect(); QRect outerCircleRect = widgetRect; outerCircleRect.setWidth(outerCircleRect.width() - (m_lineWidth - 1) * 2); outerCircleRect.setHeight(outerCircleRect.height() - (m_lineWidth - 1) * 2); if (outerCircleRect.width() < outerCircleRect.height()) outerCircleRect.setHeight(outerCircleRect.width()); else outerCircleRect.setWidth(outerCircleRect.height()); outerCircleRect.setTop((widgetRect.height() - outerCircleRect.height()) / 2); outerCircleRect.setLeft((widgetRect.width() - outerCircleRect.width()) / 2); const double percent = double(m_currentValue) / (m_maximumValue - m_minmumValue); const int splitPos = -percent * 16 * 360; painter->drawArc(outerCircleRect, 90 * 16, splitPos); pen.setColor(m_backgroundColor); painter->setPen(pen); painter->drawArc(outerCircleRect, 90 * 16, 16 * 360 + splitPos); } /*! \~chinese \class DCircleProgress \~chinese \brief 可以使用 DCircleProgress 类快速创建环形进度条控件。 \~chinese DCircleProgress 提供了一个可控制颜色并可以包含文字显示的环形进度条控件。可以快速创建底色为 backgroundColor ,进度颜色为 chunkColor 的环形进度条。 */ /*! \~english \class DCircleProgress \~english \brief Use DCircleProgress to create a circle progress display widget. \~english DCircleProgress provide a circle progress widget with configurable foreground color chunkColor and background color backgroundColor. You can also set text for display status or for other purpose. */ DCircleProgress::DCircleProgress(QWidget *parent) : QWidget(parent), DObject(*new DCircleProgressPrivate(this)) { DThemeManager::registerWidget(this); } /*! * \~english \brief Progress value of the progressbar. * \~chinese \brief 环形进度条的进度值。 * * \~english Maximum value is 100, minimum value is 0. * \~chinese 最大值为 100 ,最小值为 0 。 * * \sa setValue() */ int DCircleProgress::value() const { Q_D(const DCircleProgress); return d->m_currentValue; } /*! * \~english \brief Set the progress value of the progressbar. * \~chinese \brief 设置环形进度条的进度值。 * * \~english Maximum value is 100, minimum value is 0. * \~chinese 最大值为 100 ,最小值为 0 。将根据该值和最大值(100)的比例关系绘制进度。 * * \sa value() */ void DCircleProgress::setValue(int value) { Q_D(DCircleProgress); d->m_currentValue = value; update(); } /*! * \~english \brief Text display near the circle progressbar. * \~chinese \brief 环形进度条旁边的文字。 */ const QString DCircleProgress::text() const { Q_D(const DCircleProgress); return d->m_topLabel.text(); } /*! * \~english \brief Set the text display near the circle progressbar. * \~chinese \brief 设置环形进度条旁边的文字。 */ void DCircleProgress::setText(const QString &text) { Q_D(DCircleProgress); return d->m_topLabel.setText(text); } /*! * \~english \brief Background color of the circle progressbar. * \~chinese \brief 环形进度条的背景色。 * * \sa setBackgroundColor() */ const QColor DCircleProgress::backgroundColor() const { Q_D(const DCircleProgress); return d->m_backgroundColor; } /*! * \~english \brief Set the background color of the circle progressbar. * \~chinese \brief 设置环形进度条的背景色。 * * \sa backgroundColor() */ void DCircleProgress::setBackgroundColor(const QColor &color) { Q_D(DCircleProgress); d->m_backgroundColor = color; } /*! * \~english \brief Foreground color of the progressbar to indicate progress. * \~chinese \brief 环形进度条的前景色,用以标识进度。 * * \sa setChunkColor() */ const QColor DCircleProgress::chunkColor() const { Q_D(const DCircleProgress); return d->m_chunkColor; } /*! * \~english \brief Set the foreground color of the progressbar to indicate progress. * \~chinese \brief 设置用以标识进度环形进度条的前景色。 * * \sa chunkColor() */ void DCircleProgress::setChunkColor(const QColor &color) { Q_D(DCircleProgress); d->m_chunkColor = color; } /*! * \~english \brief circle line width of the circle progressbar. * \~chinese \brief 环形进度条的环形宽度。 * * \sa setLineWidth() */ int DCircleProgress::lineWidth() const { Q_D(const DCircleProgress); return d->m_lineWidth; } /*! * \~english \brief Set the circle line width of the circle progressbar. * \~chinese \brief 设置环形进度条的环形宽度。 * * \sa setLineWidth() */ void DCircleProgress::setLineWidth(const int width) { Q_D(DCircleProgress); d->m_lineWidth = width; } QLabel *DCircleProgress::topLabel() { Q_D(DCircleProgress); return &d->m_topLabel; } QLabel *DCircleProgress::bottomLabel() { Q_D(DCircleProgress); return &d->m_bottomLabel; } void DCircleProgress::paintEvent(QPaintEvent *e) { Q_D(DCircleProgress); QPainter p(this); d->paint(&p); QWidget::paintEvent(e); } void DCircleProgress::mouseReleaseEvent(QMouseEvent *e) { Q_UNUSED(e) Q_EMIT clicked(); } void DCircleProgress::enterEvent(QEvent *e) { Q_EMIT mouseEntered(); QWidget::enterEvent(e); } void DCircleProgress::leaveEvent(QEvent *e) { Q_EMIT mouseLeaved(); QWidget::leaveEvent(e); } /*! \fn DCircleProgress::clicked() \~english This signal is emitted when the user clicks the DCircleProgress widget. \~chinese 该信号将会在用户点击 DCircleProgress 控件时发出。 */ /*! \fn DCircleProgress::mouseEntered() \~english This signal is emitted when the user's mouse pointer entered the DCircleProgress widget. \~chinese 该信号将会在用户的鼠标指针移入 DCircleProgress 控件时发出。 */ /*! \fn DCircleProgress::mouseLeaved() \~english This signal is emitted when the user's mouse pointer leaved the DCircleProgress widget. \~chinese 该信号将会在用户的鼠标指针离开 DCircleProgress 控件时发出。 */ dtkwidget-2.1.1/src/widgets/dcircleprogress.h000066400000000000000000000043361352002233700213040ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DCIRCLEPROGRESS_H #define DCIRCLEPROGRESS_H #include "dtkwidget_global.h" #include "dthememanager.h" #include "dobject.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DCircleProgressPrivate; class LIBDTKWIDGETSHARED_EXPORT DCircleProgress : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor DESIGNABLE true) Q_PROPERTY(QColor chunkColor READ chunkColor WRITE setChunkColor DESIGNABLE true) Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth DESIGNABLE true) Q_SIGNALS: void clicked(); void mouseEntered(); void mouseLeaved(); public: explicit DCircleProgress(QWidget *parent = 0); int value() const; void setValue(int value); const QString text() const; void setText(const QString &text); const QColor backgroundColor() const; void setBackgroundColor(const QColor &color); const QColor chunkColor() const; void setChunkColor(const QColor &color); int lineWidth() const; void setLineWidth(const int width); QLabel *topLabel(); QLabel *bottomLabel(); Q_SIGNALS: void valueChanged(const int value) const; protected: void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void enterEvent(QEvent *e) Q_DECL_OVERRIDE; void leaveEvent(QEvent *e) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DCircleProgress) }; DWIDGET_END_NAMESPACE #endif // DCIRCLEPROGRESS_H dtkwidget-2.1.1/src/widgets/dclipeffectwidget.cpp000066400000000000000000000211231352002233700221120ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dclipeffectwidget.h" #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DClipEffectWidgetPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DClipEffectWidgetPrivate(DClipEffectWidget *qq); void updateImage(); QImage image; QRectF imageGeometry; QPainterPath path; QMargins margins; QWidgetList parentList; Q_DECLARE_PUBLIC(DClipEffectWidget) }; DClipEffectWidgetPrivate::DClipEffectWidgetPrivate(DClipEffectWidget *qq) : DObjectPrivate(qq) { } /*! * \~chinese \class DClipEffectWidget * \~chinese \brief 用于裁剪窗口的绘制内容 * * \~chinese 支持使用 QPainterPath 设置一个区域,位于区域外的窗口内容将被裁剪。被裁剪的对象 * \~chinese 是此控件的父控件, 且 DClipEffectWidget 会自动填充整个父控件,另外可以通过设置 * \~chinese \ref margins 控制有效的裁剪区域。如下图所示: * \htmlonly *

 * ┏━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┓
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃     A        m              ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃       ┏┅┅┅┅┅┅┷┅┅┅┅┅┅┓       ┃
 * ┃       ┋B ╭───────╮  ┋       ┃
 * ┃       ┋  │       │  ┋       ┃
 * ┃── m ──┋  │   C   │  ┋── m ──┃
 * ┃       ┋  │       │  ┋       ┃
 * ┃       ┋  ╰───────╯  ┋       ┃
 * ┃       ┗┅┅┅┅┅┅┯┅┅┅┅┅┅┛       ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃              m              ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┗━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━┛
 * 
* \endhtmlonly * \~chinese A为父控件区域, DClipEffectWidget 控件区域和父控件相同,B为有效的被裁剪区域,C * \~chinese 为 \ref clipPath 区域,m为 \ref margins ,则被裁剪掉的区域为: B - C,裁掉的部分将显示 * \~chinese 下层控件内容,如果下层没有其它控件,将显示主窗口背景。 * * \~chinese 此控件不接收任何输入事件,且不接受焦点 * \sa Qt::WA_TransparentForMouseEvents Qt::WidgetAttribute::NoFocus * \sa DGraphicsClipEffect */ /*! * \fn void DClipEffectWidget::marginsChanged(QMargins margins) * \~chinese 这个信号在 \ref margins 改变时被发送 */ /*! * \fn void DClipEffectWidget::clipPathChanged(QPainterPath clipPath) * \~chinese 这个信号在 \ref clipPath 改变时被发送 */ /*! * \brief 构造 DClipEffectWidget 对象,和普通 QWidget 一样,可以传入一个 QWidget 对象 * \~chinese 指针作为其父对象 * \~chinese \param 父对象 * \~chinese \warning 必须要传入一个有效的父对象,将此控件作为顶级窗口没有任何意义 */ DClipEffectWidget::DClipEffectWidget(QWidget *parent) : QWidget(parent) , DObject(*new DClipEffectWidgetPrivate(this)) { Q_ASSERT(parent); setAttribute(Qt::WA_TransparentForMouseEvents); setFocusPolicy(Qt::NoFocus); } /*! * \property DClipEffectWidget::margins * \~chinese \brief 用于调整控件的被裁剪区域,可以和 \ref clipPath 组合更加灵活的裁剪控件 */ QMargins DClipEffectWidget::margins() const { D_DC(DClipEffectWidget); return d->margins; } /*! * \property DClipEffectWidget::clipPath * \~chinese \brief 被裁剪的区域,控件真实裁剪区域 = \ref clipPath & (\ref rect() - \ref margins) * \~chinese \warning clipPath 必须是一个封闭的环状路径 * \sa QPainterPath::closeSubpath */ QPainterPath DClipEffectWidget::clipPath() const { D_DC(DClipEffectWidget); return d->path; } /*! * \~chinese \param margins */ void DClipEffectWidget::setMargins(QMargins margins) { D_D(DClipEffectWidget); if (d->margins == margins) return; d->margins = margins; update(); Q_EMIT marginsChanged(margins); } /*! * \~chinese \param path */ void DClipEffectWidget::setClipPath(const QPainterPath &path) { D_D(DClipEffectWidget); if (d->path == path) return; d->path = path; d->image = QImage(); Q_EMIT clipPathChanged(d->path); update(); } inline QRectF multiply(const QRectF &rect, qreal scale) { return QRectF(rect.topLeft() * scale, rect.size() * scale); } inline QRectF divide(const QRectF &rect, qreal scale) { return multiply(rect, 1.0 / scale); } bool DClipEffectWidget::eventFilter(QObject *watched, QEvent *event) { D_D(DClipEffectWidget); if (event->type() == QEvent::Move) { d->image = QImage(); } if (watched != parent()) return false; if (event->type() == QEvent::Paint) { const QPoint &offset = mapTo(window(), QPoint(0, 0)); const QImage &image = window()->backingStore()->handle()->toImage(); qreal scale = devicePixelRatioF(); d->imageGeometry = QRectF(image.rect()) & multiply(QRect(offset, size()), scale); if (d->image.isNull() || d->imageGeometry.size() != d->image.size()) { d->image = image.copy(d->imageGeometry.toRect()); d->image.setDevicePixelRatio(scale); } else { QPaintEvent *e = static_cast(event); QPainter p; // 此控件位置一直为 0,0,且大小和父控件一致,所以offset也是父控件相对于顶级窗口的偏移 const QRectF &rect = QRectF(image.rect()) & multiply(e->rect().translated(offset), scale); d->image.setDevicePixelRatio(image.devicePixelRatio()); p.begin(&d->image); p.setCompositionMode(QPainter::CompositionMode_Source); p.drawImage(rect.topLeft() - d->imageGeometry.topLeft(), image.copy(rect.toRect())); p.end(); d->image.setDevicePixelRatio(scale); } } else if (event->type() == QEvent::Resize) { resize(parentWidget()->size()); } return false; } void DClipEffectWidget::paintEvent(QPaintEvent *event) { D_DC(DClipEffectWidget); if (d->image.isNull()) return; qreal devicePixelRatio = devicePixelRatioF(); const QRectF &rect = QRectF(event->rect()) & QRectF(this->rect()).marginsRemoved(d->margins); const QPoint &offset = mapTo(window(), QPoint(0, 0)); const QRectF &imageRect = multiply(rect, devicePixelRatio) & d->imageGeometry.translated(-offset * devicePixelRatio); if (!imageRect.isValid()) return; QPainter p(this); QPainterPath newPath; newPath.addRect(this->rect()); newPath -= d->path; p.setRenderHint(QPainter::Antialiasing); p.setClipPath(newPath); p.setCompositionMode(QPainter::CompositionMode_Source); p.drawImage(imageRect.topLeft() / devicePixelRatio, d->image, imageRect); } void DClipEffectWidget::resizeEvent(QResizeEvent *event) { D_D(DClipEffectWidget); d->image = QImage(); QWidget::resizeEvent(event); } void DClipEffectWidget::showEvent(QShowEvent *event) { D_D(DClipEffectWidget); d->parentList.clear(); QWidget *pw = parentWidget(); while (pw && !pw->isTopLevel()) { d->parentList << pw; pw->installEventFilter(this); pw = pw->parentWidget(); } resize(parentWidget()->size()); QWidget::showEvent(event); } void DClipEffectWidget::hideEvent(QHideEvent *event) { D_D(DClipEffectWidget); for (QWidget *w : d->parentList) w->removeEventFilter(this); d->parentList.clear(); QWidget::hideEvent(event); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dclipeffectwidget.h000066400000000000000000000037041352002233700215640ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DCLIPEFFECTWIDGET_H #define DCLIPEFFECTWIDGET_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DClipEffectWidgetPrivate; class DClipEffectWidget : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QMargins margins READ margins WRITE setMargins NOTIFY marginsChanged) Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged) public: explicit DClipEffectWidget(QWidget *parent); QMargins margins() const; QPainterPath clipPath() const; public Q_SLOTS: void setMargins(QMargins margins); void setClipPath(const QPainterPath &path); Q_SIGNALS: void marginsChanged(QMargins margins); void clipPathChanged(QPainterPath clipPath); protected: bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; private: using QWidget::move; using QWidget::resize; using QWidget::setGeometry; D_DECLARE_PRIVATE(DClipEffectWidget) }; DWIDGET_END_NAMESPACE #endif // DCLIPEFFECTWIDGET_H dtkwidget-2.1.1/src/widgets/dconstants.h000066400000000000000000000026121352002233700202650ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DCONSTANTS_H #define DCONSTANTS_H #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE //basis width and height const int BUTTON_HEIGHT = 22; const int EXPAND_HEADER_HEIGHT = 30; const int CONTENT_HEADER_HEIGHT = 38; const int RADIO_ITEM_HEIGHT = 30; const int MENU_ITEM_HEIGHT = 24; const int MENU_ITEM_LEFT_MARGIN = 24; //NOT include the tick const int HEADER_LEFT_MARGIN = 14; const int HEADER_RIGHT_MARGIN = 14; const int TEXT_LEFT_MARGIN = 6; const int TEXT_RIGHT_MARGIN = 6; const int BUTTON_MARGIN = 8; const int TEXT_BUTTON_MIN_WIDTH = 70; const int IMAGE_BUTTON_WIDTH = 24; const int FONT_SIZE = 12; const int NORMAL_RADIUS = 3; DWIDGET_END_NAMESPACE #endif //DCONSTANTS_H dtkwidget-2.1.1/src/widgets/dcrumbedit.cpp000066400000000000000000000665031352002233700205730ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dcrumbedit.h" #include "dobject_p.h" #include #include #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE class CrumbObjectInterface : public QObject, public QTextObjectInterface { Q_OBJECT Q_INTERFACES(QTextObjectInterface) public: explicit CrumbObjectInterface(QObject *parent = 0) : QObject(parent) { } QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) Q_DECL_OVERRIDE; }; /*! \~english \class DCrumbTextFormat \~english \brief Text format for Tags/Crumbs inside DCrumbEdit \~english DCrumbTextFormat comes with properties to indicate the look of a tag/crumb inside a DCrumbEdit. \~english The text property is the main property which indicate the tag itself. Other properties include tag color, background color and background radius are also available to use. \~english Using DCrumbEdit::makeTextFormat() to create a DCrumbTextFormat object is always recommended, if you are going to craft your own DCrumbTextFormat object, don't forget to call the DCrumbTextFormat::setObjectType function(normally value should be `QTextFormat::UserObject + 1`). \~english \sa DCrumbEdit */ /*! \~chinese \class DCrumbTextFormat \~chinese \brief 表示标签输入控件所含标签的文字样式 \~chinese DCrumbTextFormat 包含了表示标签输入控件 DCrumbEdit 内所包含的标签的各种样式属性。 \~chinese 文字属性为标识一个标签的唯一重要属性,其他可用的属性包含标签背景颜色,标签文字颜色以及标签圆角程度等可供使用。 \~chinese 总是建议通过 DCrumbEdit::makeTextFormat() 来构造一个可供使用的 DCrumbTextFormat 对象,若希望自行构造, 请留意使用 DCrumbTextFormat::setObjectType 来设置必要的对象类型 (通常应为 `QTextFormat::UserObject + 1`). \~chinese \sa DCrumbEdit */ DCrumbTextFormat::DCrumbTextFormat() : QTextCharFormat(QTextFormat(QTextFormat::InvalidFormat)) { } QColor DCrumbTextFormat::tagColor() const { return colorProperty(QTextFormat::UserProperty); } /*! * \~chinese \brief 设置标签颜色 */ void DCrumbTextFormat::setTagColor(const QColor &color) { setProperty(QTextFormat::UserProperty, color); } QString DCrumbTextFormat::text() const { return stringProperty(QTextFormat::UserProperty + 1); } /*! * \~chinese \brief 设置文本内容(标签名称) */ void DCrumbTextFormat::setText(const QString &text) { setProperty(QTextFormat::UserProperty + 1, text); } QColor DCrumbTextFormat::textColor() const { return colorProperty(QTextFormat::UserProperty + 2); } /*! * \~chinese \brief 设置文本颜色 */ void DCrumbTextFormat::setTextColor(const QColor &color) { setProperty(QTextFormat::UserProperty + 2, color); } QBrush DCrumbTextFormat::background() const { return brushProperty(QTextFormat::UserProperty + 3); } /*! * \~chinese \brief 设置背景 */ void DCrumbTextFormat::setBackground(const QBrush &background) { setProperty(QTextFormat::UserProperty + 3, background); } int DCrumbTextFormat::backgroundRadius() const { return intProperty(QTextFormat::UserProperty + 4); } /*! * \~chinese \brief 设置背景圆角程度 */ void DCrumbTextFormat::setBackgroundRadius(int radius) { setProperty(QTextFormat::UserProperty + 4, radius); } DCrumbTextFormat::DCrumbTextFormat(int objectType) { setObjectType(objectType); setBackground(QColor("#76c1ff")); setTextColor(Qt::white); setVerticalAlignment(QTextCharFormat::AlignBaseline); } DCrumbTextFormat::DCrumbTextFormat(const QTextFormat &fmt) : QTextCharFormat(fmt) { } class DCrumbEditPrivate : public DCORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DCrumbEdit) public: DCrumbEditPrivate(DCrumbEdit *qq) : DObjectPrivate(qq) , object(new CrumbObjectInterface(qq)) { } void registerHandler(QAbstractTextDocumentLayout *layout) { D_Q(DCrumbEdit); for (int i = QTextFormat::UserObject + 1; ; ++i) { if (!layout->handlerForObject(i)) { objectType = i; break; } } layout->registerHandler(objectType, object); } bool canAddCrumb(const QString &text) const { return !formats.contains(text); } void makeCrumb(QTextCursor &cursor, const QString &text) { const QString tag_text = text.simplified(); if (tag_text.isEmpty()) return; if (!canAddCrumb(tag_text)) return; D_Q(DCrumbEdit); DCrumbTextFormat format = q->makeTextFormat(); format.setText(tag_text); cursor.insertText(QString(QChar::ObjectReplacementCharacter), format); } bool makeCrumb() { D_Q(DCrumbEdit); QString text = q->toPlainText().remove(QChar::ObjectReplacementCharacter); if (text.isEmpty()) return false; QTextCursor cursor = q->document()->find(text); if (cursor.isNull()) return false; if (splitter.isEmpty()) { makeCrumb(cursor, text); return true; } for (const QString &tag_text : text.split(splitter)) { makeCrumb(cursor, tag_text); } return true; } bool editCrumb(const QPoint &mousePos) { D_Q(DCrumbEdit); QTextCursor cursor = q->cursorForPosition(mousePos); if (cursor.charFormat().objectType() != objectType) return false; DCrumbTextFormat format(cursor.charFormat()); if (format.text().isEmpty()) return false; makeCrumb(); if (mousePos.x() < q->cursorRect().left()) cursor.setPosition(cursor.position() - 1, QTextCursor::KeepAnchor); else cursor.setPosition(cursor.position() + 1, QTextCursor::KeepAnchor); cursor.insertText(format.text()); return true; } QByteArray crumbMapToData(const QList &list) const { QJsonArray array; for (const DCrumbTextFormat &f : list) { if (!f.isValid() || f.isEmpty()) continue; QJsonObject object; object["text"] = f.text(); if (f.tagColor().isValid()) object["tag color"] = f.tagColor().name(); array.append(QJsonValue(object)); } QJsonDocument document; document.setArray(array); return document.toJson(QJsonDocument::Compact); } QList crumbListFromData(const QByteArray &format) const { const QJsonDocument &document = QJsonDocument::fromJson(format); const QJsonArray &array = document.array(); QList list; D_QC(DCrumbEdit); for (const QJsonValue &v : array) { const QJsonObject &object = v.toObject(); if (object.isEmpty()) continue; DCrumbTextFormat format = q->makeTextFormat(); format.setText(object["text"].toString()); if (object.contains("tag color")) format.setTagColor(QColor(object["tag color"].toString())); list << format; } return list; } void _q_onDocumentLayoutChanged() { D_Q(DCrumbEdit); if (!q->sender() || q->sender() == q->document()) registerHandler(q->document()->documentLayout()); } void _q_onCurrentPositionChanged() { D_QC(DCrumbEdit); QTextCursor cursor = q->textCursor(); if (cursor.atEnd()) { return; } cursor.setPosition(cursor.position() + 1); if (cursor.charFormat().objectType() != objectType) return; if (q->textCursor().charFormat().objectType() == objectType) makeCrumb(); } void _q_onTextChanged() { D_Q(DCrumbEdit); bool formatsChanged = false; QTextCursor cursor(q->document()); QSet crumbList; int last_pos = 0; cursor.setPosition(0); formatList.clear(); while (!cursor.atEnd()) { cursor.setPosition(last_pos + 1); if (last_pos == cursor.position()) break; last_pos = cursor.position(); DCrumbTextFormat format(cursor.charFormat()); if (format.objectType() == objectType) { const QString &text = format.text(); if (!text.isEmpty()) { crumbList << text; formatList << text; if (!formats.contains(text)) { formats[text] = format; formatsChanged = true; Q_EMIT q->crumbAdded(text); } } } } Q_FOREACH(const DCrumbTextFormat &f, formats) { if (!crumbList.contains(f.text())) { formats.remove(f.text()); formatsChanged = true; Q_EMIT q->crumbRemoved(f.text()); } } if (formatsChanged) Q_EMIT q->crumbListChanged(); } CrumbObjectInterface *object; int objectType; bool crumbReadOnly = false; int crumbRadius = 2; QString splitter = ","; QStringList formatList; QMap formats; bool dualClickMakeCrumb = false; }; QSizeF CrumbObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) { Q_UNUSED(doc) Q_UNUSED(posInDocument) const DCrumbTextFormat crumb_format(format); const QFontMetricsF font_metrics(crumb_format.font()); int radius = crumb_format.backgroundRadius(); if (crumb_format.tagColor().isValid()) return QSizeF(font_metrics.width(crumb_format.text()) + font_metrics.height() + radius + 2, font_metrics.height() + 2); return QSizeF(font_metrics.width(crumb_format.text()) + 2 * radius + 2, font_metrics.height() + 2); } void CrumbObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) { Q_UNUSED(doc) Q_UNUSED(posInDocument) const QRectF new_rect = rect.adjusted(1, 1, -1, -1); const DCrumbTextFormat crumb_format(format); const QFontMetricsF font_metrics(crumb_format.font()); const int radius = crumb_format.backgroundRadius(); QPainterPath background_path; QPainterPath tag_path; const QRectF tag_rect(new_rect.x() + 2, new_rect.y() + 2, font_metrics.height() - 4, font_metrics.height() - 4); tag_path.addEllipse(tag_rect); background_path.addRoundedRect(new_rect, radius, crumb_format.backgroundRadius()); painter->setRenderHint(QPainter::Antialiasing); painter->fillPath(background_path, crumb_format.background()); if (crumb_format.tagColor().isValid()) { painter->fillPath(tag_path, crumb_format.tagColor()); painter->setPen(crumb_format.textColor()); painter->drawText(new_rect.adjusted(tag_rect.width() + 2, 0, -radius, 0), crumb_format.text(), Qt::AlignVCenter | Qt::AlignRight); } else { painter->setPen(crumb_format.textColor()); painter->drawText(new_rect.adjusted(radius, 0, -radius, 0), crumb_format.text()); } } /*! \~english \class DCrumbEdit \~english \brief Tag Edit Widget \~english \image html DCrumbEdit.png \~english DCrumbEdit provide a edit widget as a container for user entered Tags (or say, Crumbs), and allow user edit the existed tags inside this widget. Tags comes with different text, each of the tags inside the same DCrumbEdit should have different text. \~english The tag, or say crumb, use its text as an identifier, and it comes with other properties like tag color and etc. \~english DCrumbEdit allowed user add a tag by providing a simple QString or provide a custom DCrumbTextFormat object. Refer to appendCrumb() and insertCrumb() to see the usage. To get a list of tags/crumbs, see crumbList() \~english \sa DCrumbTextFormat */ /*! \~chinese \class DCrumbEdit \~chinese \brief 标签输入控件。 \~chinese \image html DCrumbEdit.png \~chinese DCrumbEdit 提供了一个编辑框,编辑框内可包含若干个标签,并允许通过用户输入来编辑这些标签。编辑框所包含的标签可通过标签的文字 内容确定唯一的标签,即编辑框所包含的标签内容(字符串值)均不重复。 \~chinese 编辑框中包含的标签的主体为字符串,除文字外,每个标签可以对应其不同的颜色等样式,对于可供使用的样式请参见 DCrumbTextFormat 。 \~chinese DCrumbEdit 允许通过给定字符串的形式便捷的向其中添加一个默认样式的标签,也可以通过自行构建标签文字样式。请参见 insertCrumb() 和 appendCrumb() 的不同重载。可以通过 crumbList() 获得当前标签输入控件中包含的标签列表。 \~chinese \sa DCrumbTextFormat */ DCrumbEdit::DCrumbEdit(QWidget *parent) : QTextEdit(parent) , DObject(*new DCrumbEditPrivate(this)) { d_func()->registerHandler(document()->documentLayout()); connect(document(), SIGNAL(documentLayoutChanged()), this, SLOT(_q_onDocumentLayoutChanged())); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(_q_onCurrentPositionChanged())); connect(this, SIGNAL(textChanged()), this, SLOT(_q_onTextChanged())); } /*! * \~english \brief Insert new tag/crumb to the crumb edit widget at the given position. * * \~english \param format a DCrumbTextFormat. * \~english \param pos position to be inserted. * * \~english Insert new tag/crumb with the provided DCrumbTextFormat at the given position. To create a ready-to-use * DCrumbTextFormat object, call makeTextFormat(). * * \~english \return true if we appended a new tag into the crumb edit widget. * * \~english \sa makeTextFormat(), insertCrumb() */ /*! * \~chinese \brief 像标签编辑控件中插入新的标签 * * \~chinese \param format 一个 DCrumbTextFormat 对象. * \~chinese \param pos 待插入的位置. * * \~chinese 通过给定的 DCrumbTextFormat 对象所描述的属性创建新的标签并追加到标签编辑控件中。若要创建一个直接可供使用的 DCrumbTextFormat * 对象,可以考虑使用 makeTextFormat() 。 * * \~chinese \return 插入标签成功时返回 true,否则返回 false. * * \~chinese \sa makeTextFormat(), insertCrumb() */ bool DCrumbEdit::insertCrumb(const DCrumbTextFormat &format, int pos) { if (format.text().isEmpty()) return false; D_DC(DCrumbEdit); if (!d->canAddCrumb(format.text())) return false; QTextCursor cursor = textCursor(); if (pos >= 0) cursor.setPosition(pos); cursor.insertText(QString(QChar::ObjectReplacementCharacter), format); return true; } /*! * \~english \brief Append new tag/crumb to the crumb edit widget. * * \~english \param format a DCrumbTextFormat. * * \~english Append new tag/crumb with the provided DCrumbTextFormat. To create a ready-to-use DCrumbTextFormat object, * call makeTextFormat(). * * \~english \return true if we appended a new tag into the crumb edit widget. * * \~english \sa makeTextFormat(), insertCrumb() */ /*! * \~chinese \brief 像标签编辑控件中追加新的标签 * * \~chinese \param format 一个 DCrumbTextFormat 对象. * * \~chinese 通过给定的 DCrumbTextFormat 对象所描述的属性创建新的标签并追加到标签编辑控件中。若要创建一个直接可供使用的 DCrumbTextFormat * 对象,可以考虑使用 makeTextFormat() 。 * * \~chinese \return 插入标签成功时返回 true,否则返回 false. * * \~chinese \sa makeTextFormat(), insertCrumb() */ bool DCrumbEdit::appendCrumb(const DCrumbTextFormat &format) { if (format.text().isEmpty()) return false; D_DC(DCrumbEdit); if (!d->canAddCrumb(format.text())) return false; QTextCursor cursor = textCursor(); cursor.movePosition(QTextCursor::End); cursor.insertText(QString(QChar::ObjectReplacementCharacter), format); return true; } /*! * \~english \brief Insert new tag/crumb to the crumb edit widget. * * \~english \param text of the tag/crumb. * \~english \param pos position to be inserted. * * \~english Insert new tag/crumb with the provided text to the given position. * * \~english \return true if we appended a new tag into the crumb edit widget. * * \~english \sa appendCrumb() */ /*! * \~chinese \brief 像标签编辑控件中插入新的标签 * * \~chinese \param text 标签的文字内容. * \~chinese \param pos 待插入的位置. * * \~chinese 通过给定的文字创建新的标签并插入到标签编辑控件中的指定位置。 * * \~chinese \return 插入标签成功时返回 true,否则返回 false. * * \~chinese \sa appendCrumb() */ bool DCrumbEdit::insertCrumb(const QString &text, int pos) { DCrumbTextFormat format = makeTextFormat(); format.setText(text); return insertCrumb(format, pos); } /*! * \~english \brief Append new tag/crumb to the crumb edit widget. * * \~english \param text of the tag/crumb. * * \~english Append new tag/crumb with the provided text. * * \~english \return true if we appended a new tag into the crumb edit widget. * * \~english \sa insertCrumb() */ /*! * \~chinese \brief 像标签编辑控件中追加新的标签 * * \~chinese \param text 标签的文字内容. * * \~chinese 通过给定的文字创建新的标签并追加到标签编辑控件中。 * * \~chinese \return 插入标签成功时返回 true,否则返回 false. * * \~chinese \sa insertCrumb() */ bool DCrumbEdit::appendCrumb(const QString &text) { DCrumbTextFormat format = makeTextFormat(); format.setText(text); return appendCrumb(format); } /*! * \~chinese \brief 检查当前控件是否已经包含了 \a text 标签 * \~chinese \param text 待检查的标签文字名称 * \~chinese \return 如果包含,返回 true */ bool DCrumbEdit::containCrumb(const QString &text) const { D_DC(DCrumbEdit); return d->formats.contains(text); } /*! * \~english \brief Get a list of crumb/tags inside the crumb edit widget. */ /*! * \~chinese \brief 取得标签输入控件内已包含的标签列表 */ QStringList DCrumbEdit::crumbList() const { D_DC(DCrumbEdit); return d->formatList; } /*! * \~english \brief Get the DCrumbTextFormat matched the given tag \a text name. */ /*! * \~chinese \brief 根据标签名称取得对应的标签样式属性 DCrumbTextFormat 对象 */ DCrumbTextFormat DCrumbEdit::crumbTextFormat(const QString &text) const { D_DC(DCrumbEdit); return d->formats.value(text); } /*! * \~english \brief create a ready-to-use DCrumbTextFormat object. * \~english \return the created DCrumbTextFormat object */ /*! * \~chinese \brief 创建一个直接可用的 DCrumbTextFormat 对象. * \~chinese \return 创建的 DCrumbTextFormat 对象 */ DCrumbTextFormat DCrumbEdit::makeTextFormat() const { D_DC(DCrumbEdit); DCrumbTextFormat format(d->objectType); format.setFontFamily(font().family()); format.setBackgroundRadius(d->crumbRadius); return format; } /*! * \~english \brief create a ready-to-use DCrumbTextFormat object with the given color. * * \~english Create a ready-to-use DCrumbTextFormat object with the given color, and set its text * as the color name. * * \~english \return the created DCrumbTextFormat object */ /*! * \~chinese \brief 根据所给的标签类型(颜色)创建一个直接可用的 DCrumbTextFormat 对象. * * 将根据所给的(颜色)类型创建一个新的 DCrumbTextFormat 对象,并将其内文字属性设为颜色的名称。 * * \~chinese \return 创建的 DCrumbTextFormat 对象 */ DCrumbTextFormat DCrumbEdit::makeTextFormat(DCrumbEdit::CrumbType type) const { D_DC(DCrumbEdit); QString text; DCrumbTextFormat format = makeTextFormat(); switch (type) { case black: text = tr("Black"); break; case white: text = tr("White"); break; case darkGray: text = tr("Dark Gray"); break; case gray: text = tr("Gray"); break; case lightGray: text = tr("Light Gray"); break; case red: text = tr("Red"); break; case green: text = tr("Green"); break; case blue: text = tr("Blue"); break; case cyan: text = tr("Cyan"); break; case magenta: text = tr("Magenta"); break; case yellow: text = tr("Yellow"); break; case darkRed: text = tr("Dark Red"); break; case darkGreen: text = tr("Dark Green"); break; case darkBlue: text = tr("Dark Blue"); break; case darkCyan: text = tr("Dark Cyan"); break; case darkMagenta: text = tr("Dark Magenta"); break; case darkYellow: text = tr("Dark Yellow"); break; default: return format; } format.setTagColor(QColor(static_cast(type))); format.setText(text); return format; } bool DCrumbEdit::dualClickMakeCrumb() const Q_DECL_NOEXCEPT { D_DC(DCrumbEdit); return d->dualClickMakeCrumb; } bool DCrumbEdit::crumbReadOnly() const { D_DC(DCrumbEdit); return d->crumbReadOnly; } int DCrumbEdit::crumbRadius() const { D_DC(DCrumbEdit); return d->crumbRadius; } QString DCrumbEdit::splitter() const { D_DC(DCrumbEdit); return d->splitter; } /*! * \~chinese \brief 设置或取消设置标签编辑控件的只读状态 */ void DCrumbEdit::setCrumbReadOnly(bool crumbReadOnly) { D_D(DCrumbEdit); d->crumbReadOnly = crumbReadOnly; } /*! * \~chinese \brief 设置控件圆角角度 */ void DCrumbEdit::setCrumbRadius(int crumbRadius) { D_D(DCrumbEdit); d->crumbRadius = crumbRadius; } /*! * \~chinese \brief 设置分割符 * * \~chinese 设置表示划分标签边界的分割字符,可用于一次性输入多个以给定分隔符分割的标签 */ void DCrumbEdit::setSplitter(const QString &splitter) { D_D(DCrumbEdit); d->splitter = splitter; } // is that a typo? void DCrumbEdit::setDualClickMakeCrumb(bool flag) Q_DECL_NOEXCEPT { D_D(DCrumbEdit); d->dualClickMakeCrumb = flag; } /*!\reimp */ void DCrumbEdit::paintEvent(QPaintEvent *event) { QPainter p(viewport()); QStyleOptionFrame panel; initStyleOption(&panel); panel.rect = viewport()->rect(); style()->drawPrimitive(QStyle::PE_PanelLineEdit, &panel, &p, this); QTextEdit::paintEvent(event); } /*!\reimp */ void DCrumbEdit::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { D_D(DCrumbEdit); bool result = d->makeCrumb(); if (!result) event->ignore(); } else if (event->key() == Qt::Key_Escape) { event->ignore(); } else { QTextEdit::keyPressEvent(event); } } /*!\reimp */ void DCrumbEdit::mouseDoubleClickEvent(QMouseEvent *event) { D_D(DCrumbEdit); if (d->dualClickMakeCrumb && d->makeCrumb()) return; if (crumbReadOnly()) return QTextEdit::mouseDoubleClickEvent(event); if (!d->editCrumb(event->pos())) return QTextEdit::mouseDoubleClickEvent(event); } /*!\reimp */ void DCrumbEdit::focusOutEvent(QFocusEvent *event) { D_D(DCrumbEdit); d->makeCrumb(); QTextEdit::focusOutEvent(event); } /*!\reimp */ QMimeData *DCrumbEdit::createMimeDataFromSelection() const { D_DC(DCrumbEdit); QMimeData *mime = new QMimeData(); const QTextCursor &cursor = textCursor(); QStringList::const_iterator current_format = d->formatList.constBegin(); const QString &plain_text = toPlainText(); const QString &selected_text = cursor.selectedText(); int pos = -1; QString text; QList format_list; for (const QChar &ch : plain_text) { ++pos; if (pos >= cursor.selectionEnd()) break; if (ch == QChar::ObjectReplacementCharacter) { if (pos < cursor.selectionStart()) { ++current_format; continue; } const DCrumbTextFormat &f = d->formats.value(*current_format); ++current_format; if (f.text().isEmpty()) continue; if (!text.isEmpty()) text.append(" ").append(f.text()); else text.append(f.text()); format_list << f; } else if (pos < cursor.selectionStart()) { text.append(ch); } } mime->setText(text); mime->setData("deepin/dtkwidget-DCrumbTextFormat-data", selected_text.toUtf8()); mime->setData("deepin/dtkwidget-DCrumbTextFormat-list", d->crumbMapToData(format_list)); return mime; } /*!\reimp */ bool DCrumbEdit::canInsertFromMimeData(const QMimeData *source) const { if (source->hasFormat("deepin/dtkwidget-DCrumbTextFormat-data")) return true; return QTextEdit::canInsertFromMimeData(source); } /*!\reimp */ void DCrumbEdit::insertFromMimeData(const QMimeData *source) { if (!source->hasFormat("deepin/dtkwidget-DCrumbTextFormat-data")) QTextEdit::insertFromMimeData(source); const QString &plain_text = QString::fromUtf8(source->data("deepin/dtkwidget-DCrumbTextFormat-data")); if (plain_text.isEmpty()) return; D_DC(DCrumbEdit); const QList &list = d->crumbListFromData(source->data("deepin/dtkwidget-DCrumbTextFormat-list")); QList::const_iterator current_format = list.constBegin(); QString text; textCursor().beginEditBlock(); for (const QChar &ch : plain_text) { if (ch == QChar::ObjectReplacementCharacter) { if (!text.isEmpty()) { textCursor().insertText(text); text.clear(); } insertCrumb(*current_format); ++current_format; } else { text.append(ch); } } if (!text.isEmpty()) textCursor().insertText(text); textCursor().endEditBlock(); } DWIDGET_END_NAMESPACE #include "moc_dcrumbedit.cpp" #include "dcrumbedit.moc" dtkwidget-2.1.1/src/widgets/dcrumbedit.h000066400000000000000000000107521352002233700202330ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DCRUMBEDIT_H #define DCRUMBEDIT_H #include #include "dobject.h" #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DCrumbTextFormat : public QTextCharFormat { public: DCrumbTextFormat(); QColor tagColor() const; void setTagColor(const QColor &color); QString text() const; void setText(const QString &text); QColor textColor() const; void setTextColor(const QColor &color); QBrush background() const; void setBackground(const QBrush &background); int backgroundRadius() const; void setBackgroundRadius(int radius); protected: DCrumbTextFormat(int objectType); explicit DCrumbTextFormat(const QTextFormat &fmt); friend class CrumbObjectInterface; friend class DCrumbEdit; friend class DCrumbEditPrivate; }; class DCrumbEditPrivate; class LIBDTKWIDGETSHARED_EXPORT DCrumbEdit : public QTextEdit, public DCORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool crumbReadOnly READ crumbReadOnly WRITE setCrumbReadOnly) Q_PROPERTY(int crumbRadius READ crumbRadius WRITE setCrumbRadius) Q_PROPERTY(QString splitter READ splitter WRITE setSplitter) Q_PROPERTY(bool dualClickMakeCrumb READ dualClickMakeCrumb WRITE setDualClickMakeCrumb) public: enum CrumbType { black = Qt::black, white = Qt::white, darkGray = Qt::darkGray, gray = Qt::gray, lightGray = Qt::lightGray, red = Qt::red, green = Qt::green, blue = Qt::blue, cyan = Qt::cyan, magenta = Qt::magenta, yellow = Qt::yellow, darkRed = Qt::darkRed, darkGreen = Qt::darkGreen, darkBlue = Qt::darkBlue, darkCyan = Qt::darkCyan, darkMagenta = Qt::darkMagenta, darkYellow = Qt::darkYellow }; explicit DCrumbEdit(QWidget *parent = 0); bool insertCrumb(const DCrumbTextFormat &format, int pos = -1); bool insertCrumb(const QString &text, int pos = -1); bool appendCrumb(const DCrumbTextFormat &format); bool appendCrumb(const QString &text); bool containCrumb(const QString &text) const; QStringList crumbList() const; DCrumbTextFormat crumbTextFormat(const QString &text) const; DCrumbTextFormat makeTextFormat() const; DCrumbTextFormat makeTextFormat(CrumbType type) const; bool dualClickMakeCrumb() const Q_DECL_NOEXCEPT; bool crumbReadOnly() const; int crumbRadius() const; QString splitter() const; Q_SIGNALS: void crumbAdded(const QString &text); void crumbRemoved(const QString &text); void crumbListChanged(); public Q_SLOTS: void setCrumbReadOnly(bool crumbReadOnly); void setCrumbRadius(int crumbRadius); void setSplitter(const QString &splitter); void setDualClickMakeCrumb(bool flag) Q_DECL_NOEXCEPT; protected: void paintEvent(QPaintEvent *event) override; void keyPressEvent(QKeyEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; void focusOutEvent(QFocusEvent *event) override; QMimeData *createMimeDataFromSelection() const override; bool canInsertFromMimeData(const QMimeData *source) const override; void insertFromMimeData(const QMimeData *source) override; private: using QTextEdit::setDocument; using QTextEdit::document; using QTextEdit::setText; using QTextEdit::setHtml; using QTextEdit::setPlaceholderText; using QTextEdit::insertPlainText; using QTextEdit::insertHtml; using QTextEdit::append; D_DECLARE_PRIVATE(DCrumbEdit) Q_PRIVATE_SLOT(d_func(), void _q_onDocumentLayoutChanged()) Q_PRIVATE_SLOT(d_func(), void _q_onCurrentPositionChanged()) Q_PRIVATE_SLOT(d_func(), void _q_onTextChanged()) }; DWIDGET_END_NAMESPACE #endif // DCRUMBEDIT_H dtkwidget-2.1.1/src/widgets/ddialog.cpp000066400000000000000000000651621352002233700200540ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "private/ddialog_p.h" #include "dimagebutton.h" #include "dialog_constants.h" #include "ddialog.h" #include "dthememanager.h" #include "dboxwidget.h" #include "DAnchors" DWIDGET_BEGIN_NAMESPACE DialogButton::DialogButton(const QString &text, QWidget *parent) :QPushButton(text, parent) { } int DialogButton::buttonType() const { return m_buttonType; } void DialogButton::setButtonType(int buttonType) { if (m_buttonType == buttonType) return; m_buttonType = buttonType; Q_EMIT buttonTypeChanged(buttonType); } DDialogPrivate::DDialogPrivate(DDialog *qq) : DAbstractDialogPrivate(qq), fixedStyle(Q_NULLPTR) { } QBoxLayout *DDialogPrivate::getContentLayout() { return contentLayout; } void DDialogPrivate::init() { D_Q(DDialog); // TopLayout topLayout = new QHBoxLayout; topLayout->setContentsMargins(DIALOG::ICON_LAYOUT_LEFT_MARGIN, DIALOG::ICON_LAYOUT_TOP_MARGIN, DIALOG::ICON_LAYOUT_RIGHT_MARGIN, DIALOG::ICON_LAYOUT_BOTTOM_MARGIN); topLayout->setSpacing(DIALOG::ICON_LAYOUT_SPACING); // TopLayout--Icon iconLabel = new QLabel; iconLabel->hide(); iconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); topLayout->addWidget(iconLabel); // TopLayout--TextLabel titleLabel = new QLabel; titleLabel->setObjectName("TitleLabel"); titleLabel->hide(); titleLabel->setAttribute(Qt::WA_TransparentForMouseEvents); messageLabel = new QLabel; messageLabel->setObjectName("MessageLabel"); messageLabel->hide(); messageLabel->setAttribute(Qt::WA_TransparentForMouseEvents); QVBoxLayout *textLayout = new QVBoxLayout; textLayout->setContentsMargins(0, 0, 0, 0); textLayout->setSpacing(5); textLayout->addStretch(); textLayout->addWidget(titleLabel, 0, Qt::AlignLeft); textLayout->addWidget(messageLabel, 0, Qt::AlignLeft); textLayout->addStretch(); // TopLayout--ContentLayout contentLayout = new QVBoxLayout; contentLayout->setContentsMargins(0, 0, 0, 0); contentLayout->setSpacing(0); contentLayout->addLayout(textLayout); topLayout->addLayout(contentLayout); // TopLayout--Close button closeButton = new DImageButton(q); closeButton->setObjectName("CloseButton"); closeButton->adjustSize(); // closeButton->setFixedSize(DIALOG::CLOSE_BUTTON_WIDTH, DIALOG::CLOSE_BUTTON_HEIGHT); closeButton->setAttribute(Qt::WA_NoMousePropagation); DAnchorsBase::setAnchor(closeButton, Qt::AnchorRight, q, Qt::AnchorRight); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); // MainLayout--TopLayout mainLayout->addLayout(topLayout); // MainLayout--ButtonLayout buttonLayout = new QHBoxLayout; buttonLayout->setMargin(0); buttonLayout->setSpacing(0); buttonLayout->setContentsMargins(DIALOG::BUTTON_LAYOUT_LEFT_MARGIN, DIALOG::BUTTON_LAYOUT_TOP_MARGIN, DIALOG::BUTTON_LAYOUT_RIGHT_MARGIN, DIALOG::BUTTON_LAYOUT_BOTTOM_MARGIN); mainLayout->addLayout(buttonLayout); QAction *button_action = new QAction(q); button_action->setShortcuts(QKeySequence::InsertParagraphSeparator); button_action->setAutoRepeat(false); QObject::connect(closeButton, SIGNAL(clicked()), q, SLOT(close())); QObject::connect(button_action, SIGNAL(triggered(bool)), q, SLOT(_q_defaultButtonTriggered())); q->setLayout(mainLayout); q->addAction(button_action); q->setFocusPolicy(Qt::ClickFocus); q->setFocus(); } const QScreen *DDialogPrivate::getScreen() const { D_QC(DDialog); const QScreen *screen = qApp->screens()[qApp->desktop()->screenNumber(q)]; if(screen) return screen; screen = qApp->screens()[qApp->desktop()->screenNumber(QCursor::pos())]; return screen; } QString DDialogPrivate::trimTag(QString origin) const { return origin.replace(QRegularExpression("<.*?>"), ""); } QMap DDialogPrivate::scanTags(QString origin) const { QMap result; QRegExp re("<.*?>"); int index = origin.indexOf(re, 0); int matchLength = 0; while (index >= 0) { result[index] = re.cap(); matchLength = re.matchedLength(); index = origin.indexOf(re, index + matchLength); } return result; } // It's not a perfect solution to elide rich text, but it should be sufficient // for working with rich text only change text token color. QString DDialogPrivate::elideString(QString str, const QFontMetrics &fm, int width) const { QString trimmed = trimTag(str); if (fm.width(trimmed) > width) { QMap info = scanTags(str); QString elided = fm.elidedText(trimmed, Qt::ElideMiddle, width); int elideStart = elided.indexOf("…"); int elideLength = trimmed.length() - elided.length(); QList indexes = info.keys(); std::sort(indexes.begin(), indexes.end()); for (int index : indexes) { if (index <= elideStart) { elided.insert(index, info[index]); } else if (elideStart < index && index <= elideStart + elideLength) { elided.insert(elideStart, info[index]); elideStart += 1; } else { elided.insert(index - elideLength + 1, info[index]); } } return elided; } else { return str; } } void DDialogPrivate::updateSize() { D_Q(DDialog); if (!q->testAttribute(Qt::WA_Resized)) { QSize size = q->sizeHint(); size.setWidth(qMax(size.width(), DIALOG::DEFAULT_WIDTH)); size.setHeight(qMax(size.height(), DIALOG::DEFAULT_HEIGHT)); q->resize(size); q->setAttribute(Qt::WA_Resized, false); } } void DDialogPrivate::_q_onButtonClicked() { D_Q(DDialog); QAbstractButton *button = qobject_cast(q->sender()); if(button) { clickedButtonIndex = buttonList.indexOf(button); q->buttonClicked(clickedButtonIndex, button->text()); if(onButtonClickedClose) q->done(clickedButtonIndex); } } void DDialogPrivate::_q_defaultButtonTriggered() { D_QC(DDialog); QAbstractButton *button = qobject_cast(q->focusWidget()); if (button) button->click(); else if (defaultButton) defaultButton->click(); } /*! \~chinese \class DDialog \~chinese \brief 可以使用 DDialog 类快速创建符合 DDE 风格的简要对话框窗口。 \~chinese \ingroup dialog-classes \~chinese \ingroup abstractwidgets \~chinese DDialog 旨在提供简要的讯问式对话框的快速实现。提供了包含标题,对话框内容,默认图标,用以添加按钮的布局和一个可以自由添加内容的内容布局。 可以使用 addButton() , insertButton(), setDefaultButton() 等函数方便的给对话框插入按钮并进行管理,可以使用 addContent(), insertContent() 等函数操作内容布局。 \~chinese 此外, DDialog 还提供了一些额外的函数以供实现一些常见的需求。如,可以通过设置 setOnButtonClickedClose() 为 true 来使得用 户在点击任何对话框上的按钮后关闭对话框。 \~chinese 当你需要快速构建较为简单结构的对话框,你应当使用 DDialog ,对于较为复杂的需求,请参阅 DAbstractDialog 或 QDialog 相关文档。 \~chinese \sa DAbstractDialog, QDialog */ /*! \~english \class DDialog \~english \brief Use DDialog class to create quick dialog window matched DDE style. \~english \ingroup dialog-classes \~english \ingroup abstractwidgets \~english \section differences Differences with QDialog \~english DDialog is designed to provide a easy way to create information dialog which include title, dialog content, dialog icon, buttons. You can use addButton() , insertButton() and related functions to insert buttons to the dialog easily, and use addContent(), insertContent() and related functions to manage the dialog's built-in content layout. \~english DDialog also provided some extra function which maybe useful for some common use case, for example, you can set setOnButtonClickedClose() to \c true , then once user clicked a button, the dialog will got closed. \~english \sa DAbstractDialog, QDialog */ /*! * \~chinese \brief 构造一个 DDialog 对话框。 */ DDialog::DDialog(QWidget *parent) : DAbstractDialog(*new DDialogPrivate(this), parent) { DThemeManager::registerWidget(this); d_func()->init(); } /*! * \~chinese \brief 构造一个 DDialog 对话框。 * * \~chinese \param title 标题 * \~chinese \param message 对话框消息 * \~chinese \param parent 父控件 */ DDialog::DDialog(const QString &title, const QString &message, QWidget *parent) : DAbstractDialog(*new DDialogPrivate(this), parent) { DThemeManager::registerWidget(this); d_func()->init(); setTitle(title); setMessage(message); } /*! * \~chinese \brief 通过按钮文字获取按钮下标 * * \~chinese \param text 按钮文字 * * \~chinese \return 按钮下标 */ int DDialog::getButtonIndexByText(const QString &text) const { int i = -1; for(const QAbstractButton *button : getButtons()) { ++i; if(button->text() == text) return i; } return i; } /*! * \~chinese \brief 获得对话框包含的按钮数量 */ int DDialog::buttonCount() const { D_DC(DDialog); return d->buttonList.count(); } /*! * \~chinese \brief 获得对话框所含的所有内容控件的数量 */ int DDialog::contentCount() const { D_DC(DDialog); return d->contentList.count(); } /*! * \~chinese \brief 获得对话框的按钮列表 */ QList DDialog::getButtons() const { D_DC(DDialog); return d->buttonList; } /*! * \~chinese \brief 获得对话框所含的所有内容控件列表 */ QList DDialog::getContents() const { D_DC(DDialog); return d->contentList; } /*! * \~chinese \brief 获得指定下标所对应的按钮 * * \~chinese \param index 按钮下标 * \~chinese \return 对应的按钮 */ QAbstractButton *DDialog::getButton(int index) const { D_DC(DDialog); return d->buttonList.at(index); } QWidget *DDialog::getContent(int index) const { D_DC(DDialog); return d->contentList.at(index); } QString DDialog::title() const { D_DC(DDialog); return d->title; } QString DDialog::message() const { D_DC(DDialog); return d->message; } QIcon DDialog::icon() const { D_DC(DDialog); return d->icon; } QPixmap DDialog::iconPixmap() const { D_DC(DDialog); return *d->iconLabel->pixmap(); } Qt::TextFormat DDialog::textFormat() const { D_DC(DDialog); return d->textFormat; } /*! * \~chinese \brief 检查在点击任何按钮后是否都会关闭对话框。 */ bool DDialog::onButtonClickedClose() const { D_DC(DDialog); return d->onButtonClickedClose; } void DDialog::setContentLayoutContentsMargins(const QMargins &margins) { D_D(DDialog); d->topLayout->setContentsMargins(margins); } QMargins DDialog::contentLayoutContentsMargins() const { D_DC(DDialog); return d->topLayout->contentsMargins(); } /*! * \~chinese \brief 向对话框添加按钮 * * \~chinese \param text 按钮文字 * \~chinese \param isDefault 是否默认按钮 * \~chinese \param type 按钮类型 * * \~chinese \return 所添加的按钮的下标 */ int DDialog::addButton(const QString &text, bool isDefault, ButtonType type) { int index = buttonCount(); insertButton(index, text, isDefault, type); return index; } /*! * \~chinese \brief 向对话框添加按钮 * * \~chinese \param text 按钮文字 * * \~chinese \return 所添加的按钮的下标 */ int DDialog::addButtons(const QStringList &text) { int index = buttonCount(); insertButtons(index, text); return index; } /*! * \~chinese \brief 向对话框插入按钮 * * \~chinese \param index 下标 * \~chinese \param text 按钮文字 * \~chinese \param isDefault 是否是默认按钮 * \~chinese \param type 按钮类型 */ void DDialog::insertButton(int index, const QString &text, bool isDefault, ButtonType type) { DialogButton *button = new DialogButton(text); button->setObjectName("ActionButton"); button->setButtonType(type); button->setAttribute(Qt::WA_NoMousePropagation); button->setFixedHeight(DIALOG::BUTTON_HEIGHT); insertButton(index, button, isDefault); } /*! * \~chinese \brief 向对话框插入按钮 * * \~chinese \param index 下标 * \~chinese \param button 待插入的按钮 * \~chinese \param isDefault 是否是默认按钮 */ void DDialog::insertButton(int index, QAbstractButton *button, bool isDefault) { D_D(DDialog); QLabel* label = new QLabel; label->setObjectName("VLine"); label->setFixedWidth(1); label->hide(); if (index > 0 && index >= buttonCount()) { QLabel *label = qobject_cast(d->buttonLayout->itemAt(d->buttonLayout->count() - 1)->widget()); if(label) label->show(); } d->buttonLayout->insertWidget(index * 2, button); d->buttonList << button; d->buttonLayout->insertWidget(index * 2 + 1, label); connect(button, SIGNAL(clicked(bool)), this, SLOT(_q_onButtonClicked())); if (isDefault) { setDefaultButton(button); } const QString &text = button->text(); if (text.count() == 2) { for (const QChar &ch : text) { switch (ch.script()) { case QChar::Script_Han: case QChar::Script_Katakana: case QChar::Script_Hiragana: case QChar::Script_Hangul: break; default: return; } } button->setText(QString().append(text.at(0)).append(QChar::Nbsp).append(text.at(1))); } } /*! * \~chinese \brief 向对话框插入按钮 * * \~chinese \param index 下标 * \~chinese \param text 按钮文字 */ void DDialog::insertButtons(int index, const QStringList &text) { for(int i = 0; i < text.count(); ++i) { insertButton(index + i, text[i]); } } /*! * \~chinese \brief 从对话框移除按钮 * * \~chinese \param index 待移除按钮的下标 */ void DDialog::removeButton(int index) { D_D(DDialog); QLabel *label = qobject_cast(d->buttonLayout->itemAt(index * 2 + 1)->widget()); QAbstractButton * button = qobject_cast(d->buttonLayout->itemAt(index * 2)->widget()); if(label) { d->buttonLayout->removeWidget(label); label->deleteLater(); } if(button) { d->buttonLayout->removeWidget(button); button->deleteLater(); } if(index > 0 && index == buttonCount() - 1) { QLabel *label = qobject_cast(d->buttonLayout->itemAt(d->buttonLayout->count() - 1)->widget()); if(label) label->hide(); } d->buttonList.removeAt(index); } /*! * \~chinese \brief 从对话框移除按钮 * * \~chinese \param button 待移除的按钮 */ void DDialog::removeButton(QAbstractButton *button) { removeButton(getButtons().indexOf(button)); } /*! * \~chinese \brief 从对话框移除按钮 * * \~chinese \param text 待移除按钮的文本内容 */ void DDialog::removeButtonByText(const QString &text) { int index = getButtonIndexByText(text); if(index >= 0) removeButton(index); } /*! * \~chinese \brief 清除所有按钮 */ void DDialog::clearButtons() { D_D(DDialog); d->buttonList.clear(); while(d->buttonLayout->count()) { QLayoutItem *item = d->buttonLayout->takeAt(0); item->widget()->deleteLater(); delete item; } } /*! * \~chinese \brief 设置默认按钮 * * \~chinese \param index 要设置的默认按钮的下标 * * \~chinese \sa \ref default "默认按钮" */ bool DDialog::setDefaultButton(int index) { if(index < 0) return false; setDefaultButton(getButton(index)); return true; } /*! * \~chinese \brief 设置默认按钮 * * \~chinese \param str 要设置的默认按钮的文本内容 * * \sa \ref default "默认按钮" */ bool DDialog::setDefaultButton(const QString &str) { return setDefaultButton(getButtonIndexByText(str)); } /*! * \~chinese \brief 设置默认按钮 * * \~chinese \param button 要设置的默认按钮 * * \sa \ref default "默认按钮" */ void DDialog::setDefaultButton(QAbstractButton *button) { D_D(DDialog); d->defaultButton = button; } /*! * \~chinese \brief 添加控件到对话框内容布局 * * \~chinese \param widget 待添加的控件 * \~chinese \param alignment 对齐方式 */ void DDialog::addContent(QWidget *widget, Qt::Alignment alignment) { D_DC(DDialog); int index = d->contentLayout->count(); insertContent(index, widget, alignment); } /*! * \~chinese \brief 在对话框内容布局指定位置插入控件 * * \~chinese \param index 待插入的位置下标 * \~chinese \param widget 待插入的控件 * \~chinese \param alignment 对齐方式 */ void DDialog::insertContent(int index, QWidget *widget, Qt::Alignment alignment) { D_D(DDialog); d->contentLayout->insertWidget(index + DIALOG::CONTENT_INSERT_OFFSET, widget, 0, alignment); d->contentList << widget; } /*! * \~chinese \brief 从对话框内容布局中移除指定控件 * * \~chinese \param widget 待移除的控件 * \~chinese \param isDelete 是否执行删除 */ void DDialog::removeContent(QWidget *widget, bool isDelete) { D_D(DDialog); d->contentLayout->removeWidget(widget); if(isDelete) widget->deleteLater(); d->contentList.removeOne(widget); } /*! * \~chinese \brief 清空对话框内容布局中的所有内容 * * \~chinese \param isDelete 是否删除 */ void DDialog::clearContents(bool isDelete) { D_D(DDialog); for(QWidget *widget : d->contentList) d->contentLayout->removeWidget(widget); if(isDelete) { qDeleteAll(d->contentList); } d->contentList.clear(); } /*! * \~chinese \brief 设置对话框内容间隔 * * \~chinese 设置对话框的内容布局的间隔大小 * * \sa QBoxLayout::setSpacing */ void DDialog::setSpacing(int spacing) { D_D(DDialog); d->contentLayout->setSpacing(spacing); } /*! * \~chinese \brief 追加对话框内容间隔 * * \~chinese 在对话框的内容布局后追加一个非弹性,大小为 \a spacing 的间隔(一个 QSpacerItem )。 * * \sa QBoxLayout::addSpacing */ void DDialog::addSpacing(int spacing) { D_D(DDialog); d->contentLayout->addSpacing(spacing); } /*! * \~chinese \brief 插入对话框内容间隔 * * \~chinese 在对话框的内容布局的指定位置插入一个非弹性,大小为 \a spacing 的间隔(一个 QSpacerItem )。 * * \sa QBoxLayout::insertSpacing */ void DDialog::insertSpacing(int index, int spacing) { D_D(DDialog); d->contentLayout->insertSpacing(index, spacing); } /*! * \~chinese \brief 清除内容间隔 * * \~chinese 清除对话框内容布局中包含的所有 QSpacerItem 。 */ void DDialog::clearSpacing() { D_D(DDialog); for(int i = 0; i < d->contentLayout->count(); ++i) { QLayoutItem *item = d->contentLayout->itemAt(i); if(item->spacerItem()) { delete d->contentLayout->takeAt(i); } } } /*! * \~chinese \brief 设置按钮文字 * * \~chinese \param index 需要设置文字的按钮的下标 * \~chinese \param text 所需要设置的文字 */ void DDialog::setButtonText(int index, const QString &text) { QAbstractButton *button = getButton(index); button->setText(text); } /*! * \~chinese \brief 设置按钮图标 * \~chinese \param index 需要设置图标的按钮的下标 * \~chinese \param icon 所需要设置的图标 */ void DDialog::setButtonIcon(int index, const QIcon &icon) { QAbstractButton *button = getButton(index); button->setIcon(icon); } /*! * \~chinese \brief 设置对话框标题 */ void DDialog::setTitle(const QString &title) { D_D(DDialog); if (d->title == title) return; d->title = title; d->titleLabel->setText(title); d->titleLabel->setHidden(title.isEmpty()); Q_EMIT titleChanged(title); } /*! * \~chinese \brief 设置对话框消息内容 */ void DDialog::setMessage(const QString &message) { D_D(DDialog); if (d->message == message) return; d->message = message; d->messageLabel->setText(message); d->messageLabel->setHidden(message.isEmpty()); Q_EMIT messageChanged(message); } /*! * \~chinese \brief 设置对话框图标 * * \~chinese 注意:该接口将会在未来版本中废弃, * 请使用 setIcon(const QIcon &icon, const QSize &expectedSize) 这个重载。 */ void DDialog::setIcon(const QIcon &icon) { D_D(DDialog); d->icon = icon; if(!icon.isNull()) { auto size = QSize(64, 64); size = icon.availableSizes().value(0, size); auto pixmap = icon.pixmap(size); setIconPixmap(pixmap); } } /*! * \~chinese \brief 设置对话框图标 * * \~chinese 为对话框设置图标,同时可以指定一个期望的图标大小。 */ void DDialog::setIcon(const QIcon &icon, const QSize &expectedSize) { D_D(DDialog); d->icon = icon; if (icon.isNull()) { return; } QSize actualSize = expectedSize.isValid() ? expectedSize : QSize(64, 64); QPixmap pixmap = icon.pixmap(actualSize); setIconPixmap(pixmap); } /*! * \~chinese \brief 设置对话框位图图标 */ void DDialog::setIconPixmap(const QPixmap &iconPixmap) { D_D(DDialog); d->iconLabel->setPixmap(iconPixmap); if(iconPixmap.isNull()) { d->iconLabel->hide(); } else { d->iconLabel->show(); } } /*! * \~chinese \brief 设置文字格式 */ void DDialog::setTextFormat(Qt::TextFormat textFormat) { D_D(DDialog); if (d->textFormat == textFormat) return; d->textFormat = textFormat; d->titleLabel->setTextFormat(textFormat); d->messageLabel->setTextFormat(textFormat); Q_EMIT textFormatChanged(textFormat); } /*! * \~chinese \brief 设置是否在点击按钮后关闭对话框 * * \~chinese 当设置为 true 后,无论点击什么按钮,都会在点击后关闭对话框。 */ void DDialog::setOnButtonClickedClose(bool onButtonClickedClose) { D_D(DDialog); d->onButtonClickedClose = onButtonClickedClose; } /*! * \~chinese \brief 以模态框形式显示当前对话框 * * \~chinese 以 \l{QDialog#Modal Dialogs}{模态框} 形式显示当前对话框,将会阻塞直到用户关闭对话框,并返回 \DialogCode 结果。 * * \sa open(), show(), result(), setWindowModality() */ int DDialog::exec() { D_D(DDialog); d->clickedButtonIndex = -1; int code = DAbstractDialog::exec(); return d->clickedButtonIndex >= 0 ? d->clickedButtonIndex : code; } DDialog::DDialog(DDialogPrivate &dd, QWidget *parent) : DAbstractDialog(dd, parent) { DThemeManager::registerWidget(this); d_func()->init(); } /*!\reimp */ void DDialog::showEvent(QShowEvent *event) { D_D(DDialog); DAbstractDialog::showEvent(event); setAttribute(Qt::WA_Resized, false); d->updateSize(); Q_EMIT visibleChanged(isVisible()); } /*!\reimp */ void DDialog::hideEvent(QHideEvent *event) { DAbstractDialog::hideEvent(event); Q_EMIT visibleChanged(isVisible()); } void DDialog::closeEvent(QCloseEvent *event) { Q_UNUSED(event) Q_EMIT aboutToClose(); done(-1); Q_EMIT visibleChanged(isVisible()); Q_EMIT closed(); } void DDialog::childEvent(QChildEvent *event) { DAbstractDialog::childEvent(event); D_D(DDialog); if (event->added()) { if (d->closeButton) { d->closeButton->raise(); } QStyle *style = d->fixedStyle; if (!style) { style = QStyleFactory::create("dlight"); if (style) { d->fixedStyle = style; style->setParent(this); } } QWidget *child = qobject_cast(event->child()); if (child) { if (style) { child->setStyle(style); } // TODO(hualet): apply the rule to all dwidgets. // Just tried with no luck, DPsswordWidget's style goes wrong, // no time to deal with this detail, leave it alone for now. if (child->inherits("Dtk::Widget::DLineEdit")) { DThemeManager *dtm = DThemeManager::instance(); // NOTE(sbw): want to force reset to light theme. // FIXME(zccrs): fixation the DLineEdit widget theme to light. dtm->setTheme(child, "light"); } } } } void DDialog::resizeEvent(QResizeEvent *event) { DAbstractDialog::resizeEvent(event); D_D(DDialog); d->titleLabel->setWordWrap(false); int labelMaxWidth = maximumWidth() - d->closeButton->width() - d->titleLabel->x(); if (d->titleLabel->sizeHint().width() > labelMaxWidth) { d->titleLabel->setFixedWidth(labelMaxWidth); d->titleLabel->setWordWrap(true); d->titleLabel->setFixedHeight(d->titleLabel->sizeHint().height()); } d->messageLabel->setWordWrap(false); labelMaxWidth = maximumWidth() - d->closeButton->width() - d->messageLabel->x(); if (d->messageLabel->sizeHint().width() > labelMaxWidth) { d->messageLabel->setFixedWidth(labelMaxWidth); d->messageLabel->setWordWrap(true); d->messageLabel->setFixedHeight(d->messageLabel->sizeHint().height()); } } DWIDGET_END_NAMESPACE #include "moc_ddialog.cpp" dtkwidget-2.1.1/src/widgets/ddialog.h000066400000000000000000000113041352002233700175060ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DDIALOG_H #define DDIALOG_H #include #include "dabstractdialog.h" class QAbstractButton; class QButtonGroup; class QLabel; class QCloseEvent; class QVBoxLayout; DWIDGET_BEGIN_NAMESPACE class DDialogPrivate; class DDialog : public DAbstractDialog { Q_OBJECT Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) Q_PROPERTY(QString message READ message WRITE setMessage NOTIFY messageChanged) Q_PROPERTY(QIcon icon READ icon WRITE setIcon) Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap) Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat NOTIFY textFormatChanged) Q_PROPERTY(bool onButtonClickedClose READ onButtonClickedClose WRITE setOnButtonClickedClose) public: enum ButtonType { ButtonNormal, ButtonWarning, ButtonRecommend }; explicit DDialog(QWidget *parent = 0); explicit DDialog(const QString &title, const QString& message, QWidget *parent = 0); int getButtonIndexByText(const QString &text) const; int buttonCount() const; int contentCount() const; QList getButtons() const; QList getContents() const; QAbstractButton* getButton(int index) const; QWidget* getContent(int index) const; QString title() const; QString message() const; QIcon icon() const; QPixmap iconPixmap() const; Qt::TextFormat textFormat() const; bool onButtonClickedClose() const; void setContentLayoutContentsMargins(const QMargins &margins); QMargins contentLayoutContentsMargins() const; Q_SIGNALS: void aboutToClose(); void closed(); void buttonClicked(int index, const QString &text); void titleChanged(QString title); void messageChanged(QString massage); void textFormatChanged(Qt::TextFormat textFormat); void sizeChanged(QSize size); void visibleChanged(bool visible); public Q_SLOTS: int addButton(const QString &text, bool isDefault = false, ButtonType type = ButtonNormal); int addButtons(const QStringList &text); void insertButton(int index, const QString &text, bool isDefault = false, ButtonType type = ButtonNormal); void insertButton(int index, QAbstractButton* button, bool isDefault = false); void insertButtons(int index, const QStringList &text); void removeButton(int index); void removeButton(QAbstractButton *button); void removeButtonByText(const QString &text); void clearButtons(); bool setDefaultButton(int index); bool setDefaultButton(const QString &str); void setDefaultButton(QAbstractButton *button); void addContent(QWidget *widget, Qt::Alignment alignment = 0); void insertContent(int index, QWidget *widget, Qt::Alignment alignment = 0); void removeContent(QWidget *widget, bool isDelete = true); void clearContents(bool isDelete = true); void setSpacing(int spacing); void addSpacing(int spacing); void insertSpacing(int index, int spacing); void clearSpacing(); void setButtonText(int index, const QString &text); void setButtonIcon(int index, const QIcon &icon); void setTitle(const QString &title); void setMessage(const QString& message); Q_DECL_DEPRECATED void setIcon(const QIcon &icon); void setIcon(const QIcon &icon, const QSize &expectedSize); void setIconPixmap(const QPixmap &iconPixmap); void setTextFormat(Qt::TextFormat textFormat); void setOnButtonClickedClose(bool onButtonClickedClose); int exec() Q_DECL_OVERRIDE; protected: explicit DDialog(DDialogPrivate &dd, QWidget *parent = 0); void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; void closeEvent(QCloseEvent *event) override; void childEvent(QChildEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DDialog) Q_PRIVATE_SLOT(d_func(), void _q_onButtonClicked()) Q_PRIVATE_SLOT(d_func(), void _q_defaultButtonTriggered()) }; DWIDGET_END_NAMESPACE #endif // DDIALOG_H dtkwidget-2.1.1/src/widgets/denhancedwidget.cpp000066400000000000000000000162711352002233700215630ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "denhancedwidget.h" DWIDGET_BEGIN_NAMESPACE class DEnhancedWidgetPrivate { explicit DEnhancedWidgetPrivate(DEnhancedWidget *qq): q_ptr(qq) {} QSize old_size; QPoint old_pos; QWidget *target = NULL; bool enabled = true; DEnhancedWidget *q_ptr; Q_DECLARE_PUBLIC(DEnhancedWidget) }; /*! * \~chinese \brief DEnhancedWidget::DEnhancedWidget * \~chinese QWidget 中只有少量的信号用于通知和窗口相关的属性变化,常用的如 x y width height * \~chinese 等属性的改变只能通过继承重写对应的事件才能知晓。DEnhancedWidget 中通过使用事件 * \~chinese 过滤器监听目标控件的事件,收到对应事件之后转换为自身的信号发射出来,以此来实现对 * \~chinese QWidget 对象的信号扩展。 * \~chinese \param w * \~chinese \param parent * \~chinese \sa DAnchorsBase */ /*! * \~chinese \property DEnhancedWidget::target * \~chinese \brief 要监听的目标控件,每一个 DEnhancedWidget 对象只能关联到一个 QWidget 对象 * \~chinese 当 target 改变后,所有的信号和旧的 target 都不再有任何关系。 * \code * QWidget *w1 = new QWidget(); * w1->show(); * DEnhancedWidget *ew = new DEnhancedWidget(w1); * connect(ew, &DEnhancedWidget::xChanged, [] (int x) { * qDebug() << x; * }); * QWidget *w2 = new QWidget(); * ew.setTarget(w2); * w1->move(100, 100); * \endcode * \~chinese 移动控件 w1 时不会有任何打印 * \code * w2->show(); * w2->move(100, 100); * \endcode * \~chinese 移动控件 w2 时会有打印 * \~chinese 虽然将 target 设置为 w2 之前就已经连接了 x 改变的信号,不过 w2 位置改变时可以收到信号 * \~chinese \note 可读可写 */ /*! * \~chinese \property DEnhancedWidget::enabled * \~chinese \brief 值为 true 时过滤 target 控件的事件发送信号。否则卸载事件过滤器,控件属性 * \~chinese 改变时也不会发出信号。 * \~chinese \note 可读可写 */ /*! * \fn void DEnhancedWidget::xChanged(int x) * \~chinese 这个信号在目标控件的 x 坐标改变后被发送 */ /*! * \fn void DEnhancedWidget::yChanged(int y) * \~chinese 这个信号在目标控件的 y 坐标改变后被发送 */ /*! * \fn void DEnhancedWidget::positionChanged(const QPoint &point) * \~chinese 这个信号在目标控件的坐标改变后被发送 */ /*! * \fn void DEnhancedWidget::widthChanged(int width) * \~chinese 这个信号在目标控件的宽度改变后被发送 */ /*! * \fn void DEnhancedWidget::heightChanged(int height) * \~chinese 这个信号在目标控件的高度改变后被发送 */ /*! * \fn void DEnhancedWidget::sizeChanged(const QSize &size) * \~chinese 这个信号在目标控件的大小改变后被发送 */ /*! * \fn void DEnhancedWidget::targetChanged(QWidget *target) * \~chinese 这个信号在属性 DEnhancedWidget::target 被改变后发送 */ /*! * \fn void DEnhancedWidget::enabledChanged(bool enabled) * \~chinese 这个信号在属性 DEnhancedWidget::enabled 被改变后发送 */ /*! * \fn void DEnhancedWidget::showed() * \~chinese 这个信号在目标控件显示后发送 */ /*! * \~chinese \brief DEnhancedWidget::DEnhancedWidget * \~chinese \param w 初始时指定的 target 控件 * \~chinese \param parent 父对象,直接传递给基类 * \~chinese \sa DEnhancedWidget::target * \~chinese \sa QObject::parent */ DEnhancedWidget::DEnhancedWidget(QWidget *w, QObject *parent): QObject(parent), d_ptr(new DEnhancedWidgetPrivate(this)) { if (w) { Q_D(DEnhancedWidget); d->target = w; w->installEventFilter(this); } } DEnhancedWidget::~DEnhancedWidget() { delete d_ptr; } QWidget *DEnhancedWidget::target() const { Q_D(const DEnhancedWidget); return d->target; } bool DEnhancedWidget::enabled() const { Q_D(const DEnhancedWidget); return d->enabled; } /*! * \brief DEnhancedWidget::setTarget * \param target * \sa DEnhancedWidget::target */ void DEnhancedWidget::setTarget(QWidget *target) { Q_D(DEnhancedWidget); if (d->target == target) { return; } if (d->enabled && d->target) { d->target->removeEventFilter(this); } if (d->enabled && target) { target->installEventFilter(this); } d->target = target; Q_EMIT targetChanged(target); } /*! * \brief DEnhancedWidget::setEnabled * \param enabled * \sa DEnhancedWidget::enabled */ void DEnhancedWidget::setEnabled(bool enabled) { Q_D(DEnhancedWidget); if (d->enabled == enabled) { return; } if (d->target) { if (enabled) { d->target->installEventFilter(this); } else { d->target->removeEventFilter(this); } } d->enabled = enabled; Q_EMIT enabledChanged(enabled); } bool DEnhancedWidget::eventFilter(QObject *o, QEvent *e) { Q_D(DEnhancedWidget); if (o == d->target) { switch (e->type()) { case QEvent::Resize: { QResizeEvent *event = static_cast(e); if (event) { QSize size = event->size(); if (size.width() != d->old_size.width()) { Q_EMIT widthChanged(size.width()); } if (size.height() != d->old_size.height()) { Q_EMIT heightChanged(size.height()); } if (size != d->old_size) { Q_EMIT sizeChanged(size); } d->old_size = size; } break; } case QEvent::Move: { QMoveEvent *event = static_cast(e); if (event) { QPoint pos = event->pos(); if (pos.x() != d->old_pos.x()) { Q_EMIT xChanged(pos.x()); } if (pos.y() != d->old_pos.y()) { Q_EMIT yChanged(pos.y()); } if (pos != d->old_pos) { Q_EMIT positionChanged(pos); } d->old_pos = pos; } break; } case QEvent::Show: { Q_EMIT showed(); break; } default: break; } } return false; } DEnhancedWidget::DEnhancedWidget(DEnhancedWidgetPrivate *dd, QWidget *w, QObject *parent): QObject(parent), d_ptr(dd) { if (w) { w->installEventFilter(this); } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/denhancedwidget.h000066400000000000000000000036301352002233700212230ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DENHANCEDWIDGET_H #define DENHANCEDWIDGET_H #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DEnhancedWidgetPrivate; class DEnhancedWidget: public QObject { Q_OBJECT Q_PROPERTY(QWidget *target READ target WRITE setTarget NOTIFY targetChanged) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) public: explicit DEnhancedWidget(QWidget *target, QObject *parent = 0); ~DEnhancedWidget(); QWidget *target() const; bool enabled() const; public Q_SLOTS: void setTarget(QWidget *target); void setEnabled(bool enabled); Q_SIGNALS: void xChanged(int x); void yChanged(int y); void positionChanged(const QPoint &point); void widthChanged(int width); void heightChanged(int height); void sizeChanged(const QSize &size); void targetChanged(QWidget *target); void enabledChanged(bool enabled); void showed(); protected: bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE; private: explicit DEnhancedWidget(DEnhancedWidgetPrivate *dd, QWidget *w, QObject *parent = 0); DEnhancedWidgetPrivate *d_ptr; Q_DECLARE_PRIVATE(DEnhancedWidget) }; DWIDGET_END_NAMESPACE #endif // DENHANCEDWIDGET_H dtkwidget-2.1.1/src/widgets/dexpandgroup.cpp000066400000000000000000000116721352002233700211460ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dexpandgroup.h" DWIDGET_USE_NAMESPACE /** * \~chinese \class DExpandGroup * \~chinese \brief 封装了一组 DBaseExpand 控件(当然也可以是其子类), 并保证同一时间只有一个 DBaseExpand 处于展开状态 * \~chinese DExpandGroup 顾名思义是用来管理一组 DBaseExpand 控件的,提供了简单的新增,获取,移除的方法,用于统一管理多个 DBaseExpand 对象的展开和收起状态, * \~chinese DExpandGroup 会保证在同一时间只有一个 DBaseExpand 控件处于展开状态, 也就是说如果点击展开了组里的一个控件, DExpandGroup 会将组里其他控件设置为收起状态。 * \note 请注意,DExpandGroup 并不是控件, 只需要将需要管理的 DBaseExpand 添加进来即可 */ /** * \~chinese \brief 获取类实例 * \~chinese * \~chinese \param parent 作为实例的父对象 */ DExpandGroup::DExpandGroup(QObject *parent) : QObject(parent) { } /** * \~chinese \brief 获取所有正在管理的控件 * \~chinese * \~chinese \return 控件组成的列表 */ QList DExpandGroup::expands() const { return m_expandMap.values(); } /** * \~chinese \brief 获取处于已展开状态的 DBaseExpand 对象 * \~chinese * \~chinese \return 已展开状态的控件, 若没有已展开的控件则返回 NULL */ DBaseExpand *DExpandGroup::checkedExpand() const { if (m_checkedMap.isEmpty()) return NULL; else return m_checkedMap.first(); } /** * \~chinese \brief 获取指定 id 对应的控件 * \~chinese * \~chinese \param id 增加控件时指定的的id * \~chinese * \~chinese \return 根据 id 找到的控件 */ DBaseExpand *DExpandGroup::expand(int id) const { return m_expandMap.value(id); } /** * \~chinese \brief 增加一个控件 * \~chinese * \~chinese \param expand 要新增的控件对象 * \~chinese \param id 为要新增的控件对象指定id,id 应该是唯一值,如果没有给定 id ,则使用已有列表中最大的id自加1后的值 */ void DExpandGroup::addExpand(DBaseExpand *expand, int id) { if (m_expandMap.values().indexOf(expand) == -1){ if (id == -1){ int maxId = -1; Q_FOREACH (int tmp, m_expandMap.keys()) { maxId = qMax(tmp, maxId); } id = maxId + 1; } m_expandMap.insert(id, expand); connect(expand, &DBaseExpand::expandChange, this, &DExpandGroup::onExpandChanged); } } /** * \~chinese \brief 设置指定控件的id * \~chinese * \~chinese \param expand 要设置id的控件 * \~chinese \param id 要设置的id */ void DExpandGroup::setId(DBaseExpand *expand, int id) { int index = m_expandMap.values().indexOf(expand); if (index != -1){ m_expandMap.remove(m_expandMap.keys().at(index)); addExpand(expand, id); } } /** * \~chinese \brief 移除一个控件 * \~chinese * \~chinese \param expand 要移除的控件对象 */ void DExpandGroup::removeExpand(DBaseExpand *expand) { int index = m_expandMap.values().indexOf(expand); m_expandMap.remove(m_expandMap.keys().at(index)); } /** * \~chinese \brief 返回处于已展开状态控件的 id * \~chinese * \~chinese \return 如果当前没有处于展开状态的控件则返回 -1 */ int DExpandGroup::checkedId() const { if (m_checkedMap.isEmpty()) return -1; else return m_checkedMap.firstKey(); } /** * \~chinese \brief 获取指定控件的 id * \~chinese * \~chinese \param expand 指定控件对象 * \~chinese * \~chinese \return 指定控件对象的 id */ int DExpandGroup::id(DBaseExpand *expand) const { return m_expandMap.keys().at(m_expandMap.values().indexOf(expand)); } void DExpandGroup::onExpandChanged(bool v) { DBaseExpand *dSender = qobject_cast(sender()); if (!dSender || dSender == checkedExpand() || !v) return; m_checkedMap.clear(); int checkedIndex = m_expandMap.values().indexOf(dSender); m_checkedMap.insert(m_expandMap.keys().at(checkedIndex), dSender); QList expandList = m_expandMap.values(); for (int i = 0; i < expandList.count(); i ++){ DBaseExpand *target = expandList.at(i); if (target != dSender && target->expand()) target->setExpand(false); } } dtkwidget-2.1.1/src/widgets/dexpandgroup.h000066400000000000000000000027741352002233700206160ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef EXPANDGROUP_H #define EXPANDGROUP_H #include #include #include #include "dtkwidget_global.h" #include "dbaseexpand.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DExpandGroup : public QObject { Q_OBJECT public: explicit DExpandGroup(QObject *parent = 0); QList expands() const; DBaseExpand * checkedExpand() const; DBaseExpand * expand(int id) const; void addExpand(DBaseExpand *expand, int id = -1); void setId(DBaseExpand *expand, int id); void removeExpand(DBaseExpand *expand); int checkedId() const; int id(DBaseExpand *expand) const; private: void onExpandChanged(bool v); private: QMap m_expandMap; QMap m_checkedMap; }; DWIDGET_END_NAMESPACE #endif // EXPANDGROUP_H dtkwidget-2.1.1/src/widgets/dfilechooseredit.cpp000066400000000000000000000164571352002233700217700ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dfilechooseredit.h" #include "dthememanager.h" #include "private/dfilechooseredit_p.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DFileChooserEdit * \~chinese \brief 带有选择文件按钮的文本编辑框 * * \~chinese 本控件基本与 DLineEdit 相同,但同时在编辑框的右侧提供了一个按钮,点击按钮将会出现一个选择文件的对话框,当在对话框中选择完毕点击确定之后,选择的结果将会出现在文本编辑框中。 * \~chinese 另外还提供了设置对话框出现的位置,选择文件的类型,或设置文件名过滤器的方法以定制控件的功能。 * * \~chinese \sa DLineEdit QFileDialog */ /*! * \~chinese \enum DFileChooserEdit::DialogDisplayPosition * \~chinese \brief 这个枚举保存了对话框可以出现的位置 * * \~chinese \var DFileChooserEdit::DialogDisplayPosition DFileChooserEdit::FollowParentWindow * \~chinese 跟随父窗口 * * \~chinese \var DFileChooserEdit::DialogDisplayPosition DFileChooserEdit::CurrentMonitorCenter * \~chinese 鼠标所在的显示器的中心 */ // =========================Signals begin========================= /*! * \~chinese \fn DFileChooserEdit::fileChoosed * \~chinese \brief 这个信号在文件被选择且点击了对话框的确认按钮之后被调用 * \~chinese \param fileName 被选中的文件名,包含其绝对路径 */ /*! * \~chinese \fn DFileChooserEdit::dialogOpened * \~chinese \brief 这个信号在对话框即将显示时被调用 * \~chinese \note 注意,此时对话框并没有显示 */ /*! * \~chinese \fn DFileChooserEdit::dialogClosed * \~chinese \brief 这信号在对话框关闭时被调用,无论对话框是被点击了确认还是取消,都会调用本信号 * \~chinese \param 对话框的返回码,返回码表示了对话框是因为点击了取消还是确认而关闭的 * \~chinese \sa QDialog::DialogCode */ // =========================Signals end========================= /*! * \~chinese \brief 获取 DFileChooserEdit 的一个实例 * \~chinese \param parent 作为实例的父控件 */ DFileChooserEdit::DFileChooserEdit(QWidget *parent) : DLineEdit(*new DFileChooserEditPrivate(this), parent) { DThemeManager::registerWidget(this); D_D(DFileChooserEdit); d->init(); } /*! * \~chinese \property DFileChooserEdit::dialogDisplayPosition * \~chinese \brief 这个属性保存文件选择对话框将会出现的位置 * * \~chinese 可选值为枚举 DFileChooserEdit::DialogDisplayPosition 中的值 * * \~chinese Getter: DFileChooserEdit::dialogDisplayPosition , Setter: DFileChooserEdit::setDialogDisplayPosition * * \~chinese \sa DFileChooserEdit::DialogDisplayPosition */ DFileChooserEdit::DialogDisplayPosition DFileChooserEdit::dialogDisplayPosition() const { D_DC(DFileChooserEdit); return d->dialogDisplayPosition; } /*! * \~chinese \sa DFileChooserEdit::dialogDisplayPosition */ void DFileChooserEdit::setDialogDisplayPosition(DFileChooserEdit::DialogDisplayPosition dialogDisplayPosition) { D_D(DFileChooserEdit); d->dialogDisplayPosition = dialogDisplayPosition; } /*! * \~chinese \brief 设置文件选择模式 * \~chinese \param mode 要使用的模式 * \~chinese \sa DFileChooserEdit::fileMode */ void DFileChooserEdit::setFileMode(QFileDialog::FileMode mode) { D_D(DFileChooserEdit); d->fileMode = mode; } /*! * \~chinese \brief 获取对话框选择文件模式 * * \~chinese 有多种类型的选择模式,也就是说对话框可以有多种显示或行为,例如选择单个文件,选择多个文件亦或选择一个目录等,详细可以查阅:QFileDialog::FileMode * \~chinese \return 返回但前的选择模式 * \~chinese \sa QFileDialog::FileMode * \~chinese \note 目前本控件只支持选择单个文件,即便调用 DFileChooserEdit::setFileMode 设置了选择模式,当有多个文件在对话框中被选中时,取其第一个作为选择结果 */ QFileDialog::FileMode DFileChooserEdit::fileMode() const { D_DC(DFileChooserEdit); return d->fileMode; } /*! * \~chinese \brief 设置文件名过滤器 * \~chinese \param filters 要使用的文件名过滤器组成的列表 * \~chinese \sa DFileChooserEdit::nameFilters */ void DFileChooserEdit::setNameFilters(const QStringList &filters) { D_D(DFileChooserEdit); d->nameFilters = filters; } /*! * \~chinese \brief 文件名过滤器 * * \~chinese 默认此选项为空,即所有文件都可以被选择,当文件名过滤器被设置后,则只有文件名与过滤器匹配的文件可以被选择, * \~chinese 例如:设置了"*.txt",则表示只有后缀名为"txt"的文件可以被选择, * \~chinese 或者同时设置了多个过滤器:QStringList() << "text file (*.txt)" << "picture file (*.png); * \~chinese 则会在文件选择对话框的下方出现设置的多个过滤选项,只是需要注意,一次只能使用一个过滤选项,也就是说不能同时即允许选择txt文件又允许选择png文件 * \~chinese \return 返回当前的文件名过滤器组成的列表 * \~chinese \sa DFileChooserEdit::setNameFilters */ QStringList DFileChooserEdit::nameFilters() const { D_DC(DFileChooserEdit); return d->nameFilters; } DFileChooserEditPrivate::DFileChooserEditPrivate(DFileChooserEdit *q) : DLineEditPrivate(q) { } void DFileChooserEditPrivate::init() { D_Q(DFileChooserEdit); q->setTextMargins(0, 0, 24, 0); q->setReadOnly(true); q->setIconVisible(true); q->connect(q, SIGNAL(iconClicked()), q, SLOT(_q_showFileChooserDialog())); } void DFileChooserEditPrivate::_q_showFileChooserDialog() { D_Q(DFileChooserEdit); QFileDialog dialog(q); dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setFileMode(fileMode); dialog.setNameFilters(nameFilters); if (dialogDisplayPosition == DFileChooserEdit::CurrentMonitorCenter) { QPoint pos = QCursor::pos(); for (QScreen *screen : qApp->screens()) { if (screen->geometry().contains(pos)) { QRect rect = dialog.geometry(); rect.moveCenter(screen->geometry().center()); dialog.move(rect.topLeft()); break; } } } q->dialogOpened(); int code = dialog.exec(); if (code == QDialog::Accepted && !dialog.selectedFiles().isEmpty()) { const QString fileName = dialog.selectedFiles().first(); q->setText(fileName); Q_EMIT q->fileChoosed(fileName); } q->dialogClosed(code); } DWIDGET_END_NAMESPACE #include "moc_dfilechooseredit.cpp" dtkwidget-2.1.1/src/widgets/dfilechooseredit.h000066400000000000000000000035711352002233700214260ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFILECHOOSEREDIT_H #define DFILECHOOSEREDIT_H #include "dlineedit.h" #include DWIDGET_BEGIN_NAMESPACE class DFileChooserEditPrivate; class LIBDTKWIDGETSHARED_EXPORT DFileChooserEdit : public DLineEdit { Q_OBJECT Q_ENUMS(DialogDisplayPosition) Q_PROPERTY(DialogDisplayPosition dialogDisplayPosition READ dialogDisplayPosition WRITE setDialogDisplayPosition) public: enum DialogDisplayPosition{ FollowParentWindow, CurrentMonitorCenter }; DFileChooserEdit(QWidget *parent = nullptr); DialogDisplayPosition dialogDisplayPosition() const; void setFileMode(QFileDialog::FileMode mode); QFileDialog::FileMode fileMode() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; public Q_SLOTS: void setDialogDisplayPosition(DialogDisplayPosition dialogDisplayPosition); Q_SIGNALS: void fileChoosed(const QString &fileName); void dialogOpened(); void dialogClosed(int code); protected: Q_DISABLE_COPY(DFileChooserEdit) D_DECLARE_PRIVATE(DFileChooserEdit) Q_PRIVATE_SLOT(d_func(), void _q_showFileChooserDialog()) }; DWIDGET_END_NAMESPACE #endif // DFILECHOOSEREDIT_H dtkwidget-2.1.1/src/widgets/dfiledialog.cpp000066400000000000000000000130221352002233700207000ustar00rootroot00000000000000#include "dfiledialog.h" #include #include #include #ifndef foreach #define foreach Q_FOREACH #endif #include #include DWIDGET_BEGIN_NAMESPACE /*! \~english \class DFileDialog \~english \brief The DFileDialog class provides a dialog that allow users to select files or directories. \~english \image html dfiledialog.png \~english You can also add extra ComboBox and LineEdit widget via addComboBox() and addLineEdit() to allowed user fill more field when needed. Values of these extra fields can be accessed via getComboBoxValue() and getLineEditValue() . */ /*! \~chinese \class DFileDialog \~chinese \brief DFileDialog 类提供了一个可供用户选择文件或目录的对话框. \~chinese \image html dfiledialog.png \~chinese 你也可以通过 addComboBox() 和 addLineEdit() 来为文件选择框增加额外的输入内容控件,并通过 getComboBoxValue() 和 getLineEditValue() 来得到用户所输入的值。 */ DFileDialog::DFileDialog(QWidget *parent, Qt::WindowFlags f) : QFileDialog(parent, f) { } DFileDialog::DFileDialog(QWidget *parent, const QString &caption, const QString &directory, const QString &filter) : QFileDialog(parent, caption, directory, filter) { } /*! * \~english \brief Add an extra ComboBox widget to the DFileDialog * \~chinese \brief 为文件选择框追加一个下拉单选框 * * \~english \param text ComboBox description text (as key for getting value). * \~english \param data ComboBox options in a string list * * \~chinese \param text 追加选项的描述文字(作为键) * \~chinese \param data 多选框的选项列表 */ void DFileDialog::addComboBox(const QString &text, const QStringList &data) { if (data.isEmpty()) return; addComboBox(text, DComboBoxOptions { false, data, data.first() }); } /*! * \~english \brief Add an extra ComboBox widget to the DFileDialog * \~chinese \brief 为文件选择框追加一个下拉单选框 * * \~english \param text ComboBox description text (as key for getting value). * \~english \param options ComboBox data * * \~chinese \param text 追加选项的描述文字(作为键) * \~chinese \param options 多选框的属性信息 */ void DFileDialog::addComboBox(const QString &text, const DFileDialog::DComboBoxOptions &options) { QJsonObject json; json["text"] = text; json["editable"] = options.editable; json["data"] = QJsonArray::fromStringList(options.data); json["defaultValue"] = options.defaultValue; QStringList list = property("_dtk_widget_custom_combobox_list").toStringList(); list << QJsonDocument(json).toJson(QJsonDocument::Compact); setProperty("_dtk_widget_custom_combobox_list", list); } /*! * \~english \brief Add an extra LineEdit widget to the DFileDialog * \~chinese \brief 为文件选择框追加一个输入框 * * \~english \param text LineEdit description text (as key for getting value). * \~chinese \param text 追加选项的描述文字(作为键) */ void DFileDialog::addLineEdit(const QString &text) { addLineEdit(text, DLineEditOptions { -1, QLineEdit::Normal, QString(), QString(), QString() }); } /*! * \~english \brief Add an extra LineEdit widget to the DFileDialog * \~chinese \brief 为文件选择框追加一个输入框 * * \~english \param text LineEdit description text (as key for getting value). * \~english \param options LineEdit data * * \~chinese \param text 追加选项的描述文字(作为键) * \~chinese \param options 输入框的属性信息 */ void DFileDialog::addLineEdit(const QString &text, const DFileDialog::DLineEditOptions &options) { QJsonObject json; json["text"] = text; json["maxLength"] = options.maxLength; json["echoMode"] = options.echoMode; json["defaultValue"] = options.defaultValue; json["inputMask"] = options.inputMask; json["placeholderText"] = options.placeholderText; QStringList list = property("_dtk_widget_custom_lineedit_list").toStringList(); list << QJsonDocument(json).toJson(QJsonDocument::Compact); setProperty("_dtk_widget_custom_lineedit_list", list); } /*! * \~english \brief Get the added extra ComboBox value * \~chinese \brief 获得所追加的额外多选框的值 * * \~english \param text The description (key) of the ComboBox. * \~chinese \param text 所追加的多选框的描述名(作为键) * * \sa addComboBox() */ QString DFileDialog::getComboBoxValue(const QString &text) const { return property(QString("_dtk_widget_combobox_%1_value").arg(text).toUtf8()).toString(); } /*! * \~english \brief Get the added extra LineEdit value * \~chinese \brief 获得所追加的额外输入框的值 * * \~english \param text The description (key) of the ComboBox. * \~chinese \param text 所追加的多选框的描述名(作为键) * * \sa addLineEdit() */ QString DFileDialog::getLineEditValue(const QString &text) const { return property(QString("_dtk_widget_lineedit_%1_value").arg(text).toUtf8()).toString(); } void DFileDialog::setVisible(bool visible) { QFileDialogPrivate *d = static_cast(d_ptr.data()); if (d->canBeNativeDialog()) { QPlatformDialogHelper *helper = d->platformHelper(); if (helper) helper->setProperty("_dtk_widget_QFileDialog", reinterpret_cast(this)); } QFileDialog::setVisible(visible); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dfiledialog.h000066400000000000000000000024341352002233700203520ustar00rootroot00000000000000#ifndef DFILEDIALOG_H #define DFILEDIALOG_H #include #include #include DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DFileDialog : public QFileDialog { Q_OBJECT public: DFileDialog(QWidget *parent, Qt::WindowFlags f); explicit DFileDialog(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()); struct DComboBoxOptions { bool editable; QStringList data; QString defaultValue; }; struct DLineEditOptions { int maxLength; QLineEdit::EchoMode echoMode; QString defaultValue; QString inputMask; QString placeholderText; }; void addComboBox(const QString &text, const QStringList &data); void addComboBox(const QString &text, const DComboBoxOptions &options); void addLineEdit(const QString &text); void addLineEdit(const QString &text, const DLineEditOptions &options); QString getComboBoxValue(const QString &text) const; QString getLineEditValue(const QString &text) const; void setVisible(bool visible) override; }; DWIDGET_END_NAMESPACE #endif // DFILEDIALOG_H dtkwidget-2.1.1/src/widgets/dflowlayout.cpp000066400000000000000000000356601352002233700210220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "dflowlayout.h" #include "private/dflowlayout_p.h" DWIDGET_BEGIN_NAMESPACE DFlowLayoutPrivate::DFlowLayoutPrivate(DFlowLayout *qq) : DObjectPrivate(qq) { } QSize DFlowLayoutPrivate::doLayout(const QRect &rect, bool testOnly) const { D_QC(DFlowLayout); if(!testOnly) { if(!q->parentWidget() || q->parentWidget()->isHidden()) return QSize(); } else if(rect.width() <= 0){ return QSize(); } int left, top, right, bottom; q->getContentsMargins(&left, &top, &right, &bottom); QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); int x = q->parentWidget()->layoutDirection() == Qt::RightToLeft ? effectiveRect.right() :effectiveRect.x(); int y = effectiveRect.y(); QSize size_hint; if(flow == DFlowLayout::Flow::LeftToRight) { int maxWidth = 0; int lineHeight = 0; if(q->parentWidget()->layoutDirection() == Qt::RightToLeft) { for (QLayoutItem *item : itemList) { int nextX = x - item->sizeHint().width() - horizontalSpacing; if (nextX + horizontalSpacing < effectiveRect.x() && lineHeight > 0) { maxWidth = qMax(effectiveRect.right() - x, maxWidth); x = effectiveRect.right(); y = y + lineHeight + verticalSpacing; nextX = x - item->sizeHint().width() - horizontalSpacing; lineHeight = 0; } if (!testOnly) { QRect item_geometry; item_geometry.setSize(item->sizeHint()); item_geometry.moveTopRight(QPoint(x, y)); item->setGeometry(item_geometry); } x = nextX; lineHeight = qMax(lineHeight, item->sizeHint().height()); } size_hint = QSize(maxWidth, y + lineHeight - rect.y() + bottom); } else { for (QLayoutItem *item : itemList) { int nextX = x + item->sizeHint().width() + horizontalSpacing; if (nextX - horizontalSpacing > effectiveRect.right() && lineHeight > 0) { maxWidth = qMax(x, maxWidth); x = effectiveRect.x(); y = y + lineHeight + verticalSpacing; nextX = x + item->sizeHint().width() + horizontalSpacing; lineHeight = 0; } if (!testOnly) item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); x = nextX; lineHeight = qMax(lineHeight, item->sizeHint().height()); } size_hint = QSize(maxWidth, y + lineHeight - rect.y() + bottom); } } else { int maxHeight = 0; int lineWidth = 0; if(q->parentWidget()->layoutDirection() == Qt::RightToLeft) { for (QLayoutItem *item : itemList) { int nextY = y + item->sizeHint().height() + verticalSpacing; if(nextY - verticalSpacing > effectiveRect.bottom() && lineWidth > 0) { maxHeight = qMax(y, maxHeight); y = effectiveRect.y(); x = x - lineWidth - horizontalSpacing; nextY = y + item->sizeHint().height() + verticalSpacing; lineWidth = 0; } if (!testOnly) item->setGeometry(QRect(QPoint(x - item->sizeHint().width(), y), item->sizeHint())); y = nextY; lineWidth = qMax(lineWidth, item->sizeHint().width()); } size_hint = QSize(rect.right() - x + lineWidth + right + 1, maxHeight); } else { for (QLayoutItem *item : itemList) { int nextY = y + item->sizeHint().height() + verticalSpacing; if(nextY - verticalSpacing > effectiveRect.bottom() && lineWidth > 0) { maxHeight = qMax(y, maxHeight); y = effectiveRect.y(); x = x + lineWidth + horizontalSpacing; nextY = y + item->sizeHint().height() + verticalSpacing; lineWidth = 0; } if (!testOnly) item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); y = nextY; lineWidth = qMax(lineWidth, item->sizeHint().width()); } size_hint = QSize(x + lineWidth - rect.x() + right, maxHeight); } } if(!testOnly) { if(sizeHint != size_hint) { sizeHint = size_hint; Q_EMIT q->sizeHintChanged(sizeHint); } } return size_hint; } /*! \~english \class DFlowLayout \~english \brief The DFlowLayout class provides a flow list layout. \~english \image html dflowlayout.png \~english The above image is a classic use case of DFlowLayout. Notably the title text label in the example is not a part of DFlowLayout. */ /*! \~chinese \class DFlowLayout \~chinese \brief DFlowLayout 类提供了一个简便的流布局。 \~chinese \image html dflowlayout.png \~chinese 上方图片是一个 DFlowLayout 的典型应用场景。注意示例图中的标题文本并不是 DFlowLayout 的一部分。 */ DFlowLayout::DFlowLayout(QWidget *parent) : QLayout(parent), DObject(*new DFlowLayoutPrivate(this)) { } DFlowLayout::DFlowLayout() : QLayout(), DObject(*new DFlowLayoutPrivate(this)) { } DFlowLayout::~DFlowLayout() { QLayoutItem *item; while ((item = takeAt(0))) delete item; } /*! * \~chinese \brief 向布局中插入一个 QLayoutItem * \~english \brief Insert item to layout * * \~chinese \param index 插入到的位置 * \~chinese \param item 待插入的 QLayoutItem * * \~english \param index to be insert * \~english \param item the QLayoutItem to be insert * * \sa addItem() */ void DFlowLayout::insertItem(int index, QLayoutItem *item) { d_func()->itemList.insert(index, item); Q_EMIT countChanged(count()); } /*! * \~chinese \brief 向布局中插入一个 QWidget * \~english \brief Insert widget to layout * * \~chinese \param index 插入到的位置 * \~chinese \param widget 待插入的 QWidget * * \~english \param index to be insert * \~english \param widget the QWidget to be insert */ void DFlowLayout::insertWidget(int index, QWidget *widget) { addChildWidget(widget); insertItem(index, new QWidgetItemV2(widget)); } /*! * \~chinese \brief 向布局中插入一个 QLayout 子布局 * \~english \brief Insert a sub-layout to layout * * \~chinese \param index 插入到的位置 * \~chinese \param layout 待插入的 QLayout * * \~english \param index to be insert * \~english \param layout the QLayout to be insert */ void DFlowLayout::insertLayout(int index, QLayout *layout) { addChildLayout(layout); insertItem(index, layout); } /*! * \~chinese \brief 向布局中插入一个指定大小的占位符(QSpacerItem) * \~english \brief Insert a fixed \a size QSpacerItem to layout * * \~chinese \param index 插入到的位置 * \~chinese \param size 待插入的 QSpacerItem 的大小 * * \~english \param index to be insert * \~english \param size of the QSpacerItem to be insert */ void DFlowLayout::insertSpacing(int index, int size) { QSpacerItem *b; b = new QSpacerItem(size, 0, QSizePolicy::Fixed, QSizePolicy::Minimum); insertSpacerItem(index, b); } /*! * \~chinese \brief 向布局中插入一个扩充大小的占位符(QSpacerItem) * \~english \brief Insert a expanding QSpacerItem to layout * * \~chinese \param index 插入到的位置 * \~chinese \param stretch 没有作用的参数 * * \~english \param index to be insert * \~english \param stretch Unused argument */ void DFlowLayout::insertStretch(int index, int stretch) { Q_UNUSED(stretch); QSpacerItem *b; b = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); insertSpacerItem(index, b); } /*! * \~chinese \brief 向布局中插入一个占位符(QSpacerItem) * \~english \brief Insert a fixed \a size QSpacer to layout * * \~chinese \param index 插入到的位置 * \~chinese \param spacerItem 待插入的 QSpacerItem * * \~english \param index to be insert * \~english \param spacerItem to be insert * * \sa addSpacerItem() */ void DFlowLayout::insertSpacerItem(int index, QSpacerItem *spacerItem) { insertItem(index, spacerItem); } /*! * \~chinese \brief 向布局中追加一个固定大小的占位符(QSpacerItem) * \~english \brief Insert a fixed \a size QSpacerItem to layout * * \~chinese \param size 占位符大小 * \~english \param size of the QSpacerItem to be insert * * \sa insertSpacing() */ void DFlowLayout::addSpacing(int size) { insertSpacing(count(), size); } /*! * \~chinese \brief 向布局中追加一个扩充大小的占位符(QSpacerItem) * \~english \brief Insert a expanding QSpacerItem to layout * * \~chinese \param stretch 没有作用的参数 * \~english \param stretch Unused argument. * * \sa insertStretch() */ void DFlowLayout::addStretch(int stretch) { insertStretch(count(), stretch); } /*! * \~chinese \brief 向布局中追加一个的占位符(QSpacerItem) * \~english \brief Insert a QSpacerItem to layout * * \~chinese \param spacerItem 待插入的 QSpacerItem * \~english \param spacerItem to be insert. * * \sa insertSpacerItem() */ void DFlowLayout::addSpacerItem(QSpacerItem *spacerItem) { insertSpacerItem(count(), spacerItem); } /*! * \~chinese \brief 向布局中追加一个 QLayoutItem * \~english \brief Insert a QLayoutItem to layout * * \~chinese \param item 待插入的 QLayoutItem * \~english \param item to be insert. * * \sa insertItem() */ void DFlowLayout::addItem(QLayoutItem *item) { insertItem(count(), item); } /*! * \~chinese \brief 是否可以有固定高度 * \~english \brief check if layout can have a fixed height * * \sa heightForWidth() */ bool DFlowLayout::hasHeightForWidth() const { D_DC(DFlowLayout); return d->flow == DFlowLayout::Flow::LeftToRight; } /*! * \~chinese \brief 根据指定宽度获得对应高度 * \~english \brief set fixed height * * \sa heightForWidth() */ int DFlowLayout::heightForWidth(int width) const { D_DC(DFlowLayout); QWidget *parentWidget = this->parentWidget(); if(parentWidget && width == parentWidget->width()) { return d->sizeHint.height(); } return d->doLayout(QRect(0, 0, width, 0), true).height(); } /*! * \~chinese \brief 布局内的元素数量 * \~english \brief item count in layout */ int DFlowLayout::count() const { return d_func()->itemList.count(); } QLayoutItem *DFlowLayout::itemAt(int index) const { return d_func()->itemList.value(index); } /* * \reimp */ QSize DFlowLayout::minimumSize() const { D_DC(DFlowLayout); QSize size; for (QLayoutItem *item : d->itemList) size = size.expandedTo(item->minimumSize()); size += QSize(2 * margin(), 2 * margin()); return size; } /* * \reimp */ void DFlowLayout::setGeometry(const QRect &rect) { if(rect == geometry()) return; QLayout::setGeometry(QRect(rect.topLeft(), d_func()->doLayout(rect, false))); } /* * \reimp */ QSize DFlowLayout::sizeHint() const { return d_func()->sizeHint; } /*! * \~chinese \brief 移除并取得 \a index 位置的对应元素 * \~english \brief take the QLayoutItem at the given \a index . */ QLayoutItem *DFlowLayout::takeAt(int index) { D_D(DFlowLayout); if (index < 0 || index >= d->itemList.count()) { return 0; } QLayoutItem *item = d->itemList.takeAt(index); if (QLayout *l = item->layout()) { // sanity check in case the user passed something weird to QObject::setParent() if (l->parent() == this) l->setParent(0); } Q_EMIT countChanged(count()); return item; } Qt::Orientations DFlowLayout::expandingDirections() const { return Qt::Vertical; } /*! * \~chinese \brief 取得横横横向的元素疏密度(Spacing) * \~english \brief get flow spacing in horizontal direction. * * \sa setHorizontalSpacing() */ int DFlowLayout::horizontalSpacing() const { return d_func()->horizontalSpacing; } /*! * \~chinese \brief 取得纵横横向的元素疏密度(Spacing) * \~english \brief get flow spacing in vertical direction. * * \sa setVerticalSpacing() */ int DFlowLayout::verticalSpacing() const { return d_func()->verticalSpacing; } /*! * \~chinese \brief 取得流布局的方向 * \~english \brief get flow direction. * * \sa setFlow() */ DFlowLayout::Flow DFlowLayout::flow() const { D_DC(DFlowLayout); return d->flow; } /*! * \~chinese \brief 设置纵横横向的元素疏密度(Spacing) * \~english \brief set flow spacing in horizontal direction. * * \sa setSpacing(), setVerticalSpacing() */ void DFlowLayout::setHorizontalSpacing(int horizontalSpacing) { D_D(DFlowLayout); if(horizontalSpacing == d->horizontalSpacing) return; d->horizontalSpacing = horizontalSpacing; Q_EMIT horizontalSpacingChanged(horizontalSpacing); invalidate(); } /*! * \~chinese \brief 设置纵横纵向的元素疏密度(Spacing) * \~english \brief set flow spacing in vertical direction. * * \sa setSpacing(), setHorizontalSpacing() */ void DFlowLayout::setVerticalSpacing(int verticalSpacing) { D_D(DFlowLayout); if(verticalSpacing == d->verticalSpacing) return; d->verticalSpacing = verticalSpacing; Q_EMIT verticalSpacingChanged(verticalSpacing); invalidate(); } /*! * \~chinese \brief 设置纵横两个方向的元素疏密度(Spacing) * \~english \brief set flow spacing in horizontal and vertical direction. * * \sa setVerticalSpacing(), setHorizontalSpacing() */ void DFlowLayout::setSpacing(int spacing) { setHorizontalSpacing(spacing); setVerticalSpacing(spacing); } /*! * \~chinese \brief 设置布局方向 * \~english \brief set flow direction * * \sa QListView::Flow, flow() */ void DFlowLayout::setFlow(Flow direction) { D_D(DFlowLayout); if (d->flow == direction) return; d->flow = direction; Q_EMIT flowChanged(direction); invalidate(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dflowlayout.h000066400000000000000000000060661352002233700204650ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFLOWLAYOUT_H #define DFLOWLAYOUT_H #include "dtkwidget_global.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DFlowLayoutPrivate; class DFlowLayout : public QLayout, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(int horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing NOTIFY horizontalSpacingChanged) Q_PROPERTY(int verticalSpacing READ verticalSpacing WRITE setVerticalSpacing NOTIFY verticalSpacingChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) Q_PROPERTY(QSize sizeHint READ sizeHint NOTIFY sizeHintChanged) public: typedef QListView::Flow Flow; Q_ENUMS(Flow) explicit DFlowLayout(QWidget *parent); DFlowLayout(); ~DFlowLayout(); void insertItem(int index, QLayoutItem *item); void insertWidget(int index, QWidget *widget); void insertLayout(int index, QLayout *layout); void insertSpacing(int index, int size); void insertStretch(int index, int stretch = 0); void insertSpacerItem(int index, QSpacerItem *spacerItem); void addSpacing(int size); void addStretch(int stretch = 0); void addSpacerItem(QSpacerItem *spacerItem); void addItem(QLayoutItem *item) Q_DECL_OVERRIDE; bool hasHeightForWidth() const Q_DECL_OVERRIDE; int heightForWidth(int) const Q_DECL_OVERRIDE; int count() const Q_DECL_OVERRIDE; QLayoutItem *itemAt(int index) const Q_DECL_OVERRIDE; QSize minimumSize() const Q_DECL_OVERRIDE; void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; QSize sizeHint() const Q_DECL_OVERRIDE; QLayoutItem *takeAt(int index) Q_DECL_OVERRIDE; Qt::Orientations expandingDirections() const Q_DECL_OVERRIDE; int horizontalSpacing() const; int verticalSpacing() const; Flow flow() const; public Q_SLOTS: void setHorizontalSpacing(int horizontalSpacing); void setVerticalSpacing(int verticalSpacing); void setSpacing(int spacing); void setFlow(Flow flow); Q_SIGNALS: void horizontalSpacingChanged(int horizontalSpacing); void verticalSpacingChanged(int verticalSpacing); void countChanged(int count); void flowChanged(Flow flow); void sizeHintChanged(QSize sizeHint) const; private: D_DECLARE_PRIVATE(DFlowLayout) }; DWIDGET_END_NAMESPACE #endif // DFLOWLAYOUT_H dtkwidget-2.1.1/src/widgets/dforeignwindow.cpp000066400000000000000000000133311352002233700214650ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dforeignwindow.h" #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name // propertys DEFINE_CONST_CHAR(WmClass); DEFINE_CONST_CHAR(ProcessId); class DForeignWindowPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DForeignWindowPrivate(DForeignWindow *qq) : DObjectPrivate(qq) {} }; /*! * \~chinese \class DForeignWindow * \~chinese \brief 一个用于获取本地窗口信息的类,继承于 QWindow,支持 QWindow::geometry * \~chinese QWindow::x QWindow::y QWindow::width QWindow::height * \~chinese QWindow::title QWindow::flags QWindow::visibility QWindow::type * \~chinese QWindow::windowStates QWindow::windowState 等接口的使用,另外扩展 * \~chinese 增加了一部分接口,方面更加详细的获取窗口信息。依赖于 dxcb 插件,在未加载 * \~chinese dxcb 插件的应用中使用时结果未知 * \~chinese \sa DWindowManagerHelper::currentWorkspaceWindows * \~chinese \sa DApplication::loadDXcbPlugin * \~chinese \sa DApplication::isDXcbPlatform */ /*! * \~chinese \property DForeignWindow::wmClass * \~chinese \brief 窗口 WM_CLASS 的值 * \~chinese \note 只读 * \~chinese \sa \href{https://tronche.com/gui/x/icccm/sec-4.html#WM_CLASS,WM_CLASS} */ /*! * \~chinese \property DForeignWindow::pid * \~chinese \brief 窗口所属进程的 pid * \~chinese \note 只读 * \~chinese \sa \href{https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html,_NET_WM_PID} */ /*! * \~chinese \fn DForeignWindow::wmClassChanged * \~chinese \brief 信号会在 \a wmClass 属性改变时被发送 * \~chinese \fn DForeignWindow::pidChanged * \~chinese \brief 信号会在 \a pid 属性的值改变时被发送 */ /*! * \~chinese \brief DForeignWindow::DForeignWindow * \~chinese 直接构造一个 DForeignWindow 对象和使用 QWindow 对象没有区别 * \~chinese \param parent * \~chinese \sa DForeignWindow::fromWinId */ DForeignWindow::DForeignWindow(QWindow *parent) : QWindow(parent) , DObject(*new DForeignWindowPrivate(this)) { } /*! * \~chinese \brief DForeignWindow::fromWinId * \~chinese 使用这个窗口id创建一个 DForeignWindow 对象,此对象不会被加到 QGuiApplication::allWindows * \~chinese 中。一般应用在需要获取一个本地窗口信息的场景。示例: * \~chinese \code * // a.cpp * int main(int argc, char *argv[]) * { * DApplication a(argc, argv); * * QWidget w; * * w.setWindowTitle("deepin"); * w.show(); * * QFile app_win_id("/tmp/window_id.txt"); * if (app_win_id.open(QFile::WriteOnly)) { * app_win_id.write(QByteArray::number(w.winId())); * app_win_id.close(); * } * * return a.exec(); * } * \endcode * * \~chinese \code * // b.cpp * int main(int argc, char *argv[]) * { * DApplication::loadDXcbPlugin(); * DApplication a(argc, argv); * * DForeignWindow *fw = nullptr; * QFile app_win_id("/tmp/window_id.txt"); * if (app_win_id.open(QFile::ReadOnly)) { * fw = DForeignWindow::fromWinId(app_win_id.readAll().toInt()); * } * * if (fw) { * qDebug() << fw->title(); * * fw->connect(fw, &DForeignWindow::widthChanged, [&] { * qDebug() << fw->width(); * }); * } * * return a.exec(); * } * \endcode * * \arg \c 先启动应用 a * \arg \c 再启动应用 b * * \~chinese 在应用 b 启动后将看到如下输出: * \~chinese \code * "deepin" * \endcode * 当改变应用 a 中的窗口宽度时,在应用 b 中会看到宽度的输出 * \~chinese \param id * \~chinese \return * \~chinese \warning 不要尝试对由本应用创建的窗口调用此接口,可能会导致窗口行为发生不可逆转的变化 */ DForeignWindow *DForeignWindow::fromWinId(WId id) { if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ForeignWindows)) { qWarning() << "DForeignWindow::fromWinId(): platform plugin does not support foreign windows."; return 0; } DForeignWindow *window = new DForeignWindow; window->setFlags(Qt::ForeignWindow); window->setProperty("_q_foreignWinId", QVariant::fromValue(id)); window->create(); return window; } QString DForeignWindow::wmClass() const { return property(_WmClass).toString(); } quint32 DForeignWindow::pid() const { return qvariant_cast(property(_ProcessId)); } bool DForeignWindow::event(QEvent *e) { if (e->type() == QEvent::DynamicPropertyChange) { QDynamicPropertyChangeEvent *event = static_cast(e); if (event->propertyName() == _WmClass) { Q_EMIT wmClassChanged(); return true; } else if (event->propertyName() == _ProcessId) { Q_EMIT pidChanged(); return true; } } return false; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dforeignwindow.h000066400000000000000000000026701352002233700211360ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFOREIGNWINDOW_H #define DFOREIGNWINDOW_H #include "dobject.h" #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DForeignWindowPrivate; class DForeignWindow : public QWindow, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QString wmClass READ wmClass NOTIFY wmClassChanged) Q_PROPERTY(quint32 pid READ pid NOTIFY pidChanged) public: explicit DForeignWindow(QWindow *parent = 0); static DForeignWindow *fromWinId(WId id); QString wmClass() const; quint32 pid() const; Q_SIGNALS: void wmClassChanged(); void pidChanged(); protected: bool event(QEvent *) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DForeignWindow) }; DWIDGET_END_NAMESPACE #endif // DFOREIGNWINDOW_H dtkwidget-2.1.1/src/widgets/dgraphicsclipeffect.cpp000066400000000000000000000136001352002233700224300ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dgraphicsclipeffect.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DGraphicsClipEffectPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DGraphicsClipEffectPrivate(DGraphicsClipEffect *qq); QPainterPath clipPath; QMargins margins; Q_DECLARE_PUBLIC(DGraphicsClipEffect) }; DGraphicsClipEffectPrivate::DGraphicsClipEffectPrivate(DGraphicsClipEffect *qq) : DObjectPrivate(qq) { } /*! * \~chinese \class DGraphicsClipEffect * \~chinese \brief 用于裁剪窗口的绘制内容 * * \~chinese 支持使用 QPainterPath 设置一个区域,位于区域外的窗口内容将被裁剪,可以通过设置 * \~chinese \ref margins 控制有效的裁剪区域。如下图所示: * \htmlonly *
 * ┏━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━┓
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃     A        m              ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃       ┏┅┅┅┅┅┅┷┅┅┅┅┅┅┓       ┃
 * ┃       ┋B ╭───────╮  ┋       ┃
 * ┃       ┋  │       │  ┋       ┃
 * ┃── m ──┋  │   C   │  ┋── m ──┃
 * ┃       ┋  │       │  ┋       ┃
 * ┃       ┋  ╰───────╯  ┋       ┃
 * ┃       ┗┅┅┅┅┅┅┯┅┅┅┅┅┅┛       ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┃              m              ┃
 * ┃              │              ┃
 * ┃              │              ┃
 * ┗━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━┛
 * 
* \endhtmlonly * \~chinese A为被作用的控件区域,B为有效的被裁剪区域,C 为 \ref clipPath 区域,m为 * \~chinese \ref margins ,则被裁剪掉的区域为: B - C,裁掉的部分将显示 * \~chinese 下层控件内容,如果下层没有其它控件,将显示主窗口背景。 * * \warning 以这种方式实现对 QWidget 的剪切在性能上会有较大的影响,一般情况下,我们推荐使用 DClipEffectWidget * \sa DClipEffectWidget QWidget::setGraphicsEffect */ /*! * \fn void DGraphicsClipEffect::marginsChanged(QMargins margins) * \~chinese 这个信号在 \ref margins 改变时被发送 */ /*! * \fn void DGraphicsClipEffect::clipPathChanged(QPainterPath clipPath) * \~chinese 这个信号在 \ref clipPath 改变时被发送 */ /*! * \brief 构造 DGraphicsClipEffect 对象,和普通 QObject 一样,可以传入一个 QObject 对象 * \~chinese 指针作为其父对象 * \~chinese \param parent 父对象 */ DGraphicsClipEffect::DGraphicsClipEffect(QObject *parent) : QGraphicsEffect(parent) , DObject(*new DGraphicsClipEffectPrivate(this)) { } /*! * \property DGraphicsClipEffect::margins * \~chinese \brief 用于调整目标控件的被裁剪区域,可以和 \ref clipPath 组合更加灵活的裁剪控件 */ QMargins DGraphicsClipEffect::margins() const { D_DC(DGraphicsClipEffect); return d->margins; } /*! * \property DGraphicsClipEffect::clipPath * \~chinese \brief 被裁剪的区域,控件真实裁剪区域 = \ref clipPath & (\ref boundingRect() - \ref margins) * \~chinese \warning clipPath 必须是一个封闭的环状路径 * \sa QPainterPath::closeSubpath */ QPainterPath DGraphicsClipEffect::clipPath() const { D_DC(DGraphicsClipEffect); return d->clipPath; } /*! * \~chinese \param margins */ void DGraphicsClipEffect::setMargins(const QMargins &margins) { D_D(DGraphicsClipEffect); if (d->margins == margins) return; d->margins = margins; Q_EMIT marginsChanged(margins); } /*! * \~chinese \param clipPath */ void DGraphicsClipEffect::setClipPath(const QPainterPath &clipPath) { D_D(DGraphicsClipEffect); if (d->clipPath == clipPath) return; d->clipPath = clipPath; Q_EMIT clipPathChanged(clipPath); } void DGraphicsClipEffect::draw(QPainter *painter) { if (!painter->isActive()) { qWarning() << "DGraphicsClipEffect::draw: The painter is not active!"; drawSource(painter); return; } D_D(DGraphicsClipEffect); QPoint offset; Qt::CoordinateSystem system = sourceIsPixmap() ? Qt::LogicalCoordinates : Qt::DeviceCoordinates; QPixmap pixmap = sourcePixmap(system, &offset, QGraphicsEffect::PadToEffectiveBoundingRect); if (pixmap.isNull()) return; QPainter pixmapPainter(&pixmap); QPainterPath newPath; newPath.addRect(pixmap.rect().marginsRemoved(d->margins)); newPath -= d->clipPath; pixmapPainter.setRenderHints(painter->renderHints() | QPainter::Antialiasing); pixmapPainter.setCompositionMode(QPainter::CompositionMode_Clear); pixmapPainter.fillPath(newPath, Qt::transparent); painter->save(); if (system == Qt::DeviceCoordinates) painter->setWorldTransform(QTransform()); painter->drawPixmap(offset, pixmap); painter->restore(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dgraphicsclipeffect.h000066400000000000000000000032551352002233700221020ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DGRAPHICSCLIPEFFECT_H #define DGRAPHICSCLIPEFFECT_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DGraphicsClipEffectPrivate; class DGraphicsClipEffect : public QGraphicsEffect, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QMargins margins READ margins WRITE setMargins NOTIFY marginsChanged) Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged) public: explicit DGraphicsClipEffect(QObject *parent = Q_NULLPTR); QMargins margins() const; QPainterPath clipPath() const; public Q_SLOTS: void setMargins(const QMargins &margins); void setClipPath(const QPainterPath &clipPath); Q_SIGNALS: void marginsChanged(QMargins margins); void clipPathChanged(QPainterPath clipPath); protected: void draw(QPainter *painter) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DGraphicsClipEffect) }; DWIDGET_END_NAMESPACE #endif // DGRAPHICSCLIPEFFECT_H dtkwidget-2.1.1/src/widgets/dgraphicsgloweffect.cpp000066400000000000000000000103221352002233700224470ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dgraphicsgloweffect.h" QT_BEGIN_NAMESPACE extern Q_WIDGETS_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DGraphicsGlowEffect * \brief Draw a glow effect of widget, It's the default border effect of deepin windows. */ /*! * \~chinese \class DGraphicsGlowEffect * \brief 控件发散效果,同时也是Dtk默认的窗口特效。 */ /*! * \~english \brief Constructs a new DGraphicsGlowEffect instance having the specified parent. * \param parent */ /*! * \~chinese \brief 构造一个DGraphicsGlowEffect对象,并指定其父对象。 * \param parent */ DGraphicsGlowEffect::DGraphicsGlowEffect(QObject *parent) : QGraphicsEffect(parent), m_xOffset(0), m_yOffset(0), m_distance(4.0), m_blurRadius(10.0), m_color(0, 0, 0, 80) { } /*! * \~english \brief DGraphicsGlowEffect::draw set a blur effect image to painter. * \param painter */ /*! * \~chinese \brief 将控件的扩散效果绘制到指定的painter上。 * \param painter */ void DGraphicsGlowEffect::draw(QPainter *painter) { // if nothing to show outside the item, just draw source if ((blurRadius() + distance()) <= 0) { drawSource(painter); return; } PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect; QPoint offset; const QPixmap sourcePx = sourcePixmap(Qt::DeviceCoordinates, &offset, mode); // return if no source if (sourcePx.isNull()) { return; } qreal restoreOpacity = painter->opacity(); painter->setOpacity(m_opacity); // save world transform QTransform restoreTransform = painter->worldTransform(); painter->setWorldTransform(QTransform()); // Calculate size for the background image QSize scaleSize(sourcePx.size().width() + 2 * distance(), sourcePx.size().height() + 2 * distance()); QImage tmpImg(scaleSize, QImage::Format_ARGB32_Premultiplied); QPixmap scaled = sourcePx.scaled(scaleSize); tmpImg.fill(0); QPainter tmpPainter(&tmpImg); tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); tmpPainter.drawPixmap(QPointF(-distance(), -distance()), scaled); tmpPainter.end(); // blur the alpha channel QImage blurred(tmpImg.size(), QImage::Format_ARGB32_Premultiplied); blurred.fill(0); QPainter blurPainter(&blurred); qt_blurImage(&blurPainter, tmpImg, blurRadius(), false, true); blurPainter.end(); tmpImg = blurred; // blacken the image... tmpPainter.begin(&tmpImg); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmpImg.rect(), color()); tmpPainter.end(); // draw the blurred shadow... painter->drawImage(offset, tmpImg); // draw the actual pixmap... painter->drawPixmap(offset, sourcePx, QRectF()); // restore world transform painter->setWorldTransform(restoreTransform); painter->setOpacity(restoreOpacity); } /*! * \~english \brief Calc the effective bounding rectangle * \param rect is the widget rectangle * \return Effective bounding rectangle */ /*! * \~chinese \brief 有效的边界区域 * \param rect 为控件的几何区域 * \return 有效的边界区域 */ QRectF DGraphicsGlowEffect::boundingRectFor(const QRectF &rect) const { qreal delta = blurRadius() + distance(); return rect.united(rect.adjusted(-delta - xOffset(), -delta - yOffset(), delta - xOffset(), delta - yOffset())); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dgraphicsgloweffect.h000066400000000000000000000043071352002233700221220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DGRAPHICSGLOWEFFECT_H #define DGRAPHICSGLOWEFFECT_H #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DGraphicsGlowEffect : public QGraphicsEffect { Q_OBJECT public: explicit DGraphicsGlowEffect(QObject *parent = nullptr); void draw(QPainter *painter); QRectF boundingRectFor(const QRectF &rect) const; inline void setOffset(qreal dx, qreal dy) {m_xOffset = dx; m_yOffset = dy;} inline void setXOffset(qreal dx) {m_xOffset = dx;} inline qreal xOffset() const {return m_xOffset;} inline void setYOffset(qreal dy) {m_yOffset = dy;} inline qreal yOffset() const {return m_yOffset;} inline void setDistance(qreal distance) { m_distance = distance; updateBoundingRect(); } inline qreal distance() const { return m_distance; } inline void setBlurRadius(qreal blurRadius) { m_blurRadius = blurRadius; updateBoundingRect(); } inline qreal blurRadius() const { return m_blurRadius; } inline void setColor(const QColor &color) { m_color = color; } inline QColor color() const { return m_color; } // TODO: refactor with d-pointer; inline qreal opacity() const { return m_opacity; } inline void setOpacity(qreal opacity) { m_opacity = opacity; } private: qreal m_opacity = 1.0; qreal m_xOffset; qreal m_yOffset; qreal m_distance; qreal m_blurRadius; QColor m_color; }; DWIDGET_END_NAMESPACE #endif // DGRAPHICSGLOWEFFECT_H dtkwidget-2.1.1/src/widgets/dheaderline.cpp000066400000000000000000000063731352002233700207140ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dheaderline.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! \~chinese \class DHeaderLine \~chinese \brief 可以使用 DHeaderLine 类快速创建标题行控件。 \~chinese DHeaderLine 提供一个固定高度的控件可供显示标题或相关内容,其行内提供左对齐的文字和可选的位于右侧的控件。 \~chinese \image html DHeaderLine.png \~chinese 我们可以利用可选的内容控件为用户提供交互方式的提示,状态提示或其他类似的目的。上图中的例子,我们使用 DHeaderLine 并结合 DArrowButton 作为内容控件,构成了一个外观近似可折叠标题的标题行控件。 \~chinese \sa DBaseLine */ /*! \~english \class DHeaderLine \~english \brief Use DHeaderLine to create a widget for display header title. \~english DHeaderLine provide a fixed height header line to display header title or related stuff. Title are aligned left and you can also set an optional right aligned QWidget. \~english \image html DHeaderLine.png \~english We can use the optional content widget to provide interaction hint, status state hint or other propuse. The image above shows an use case which use DHeaderLine and combine DArrowButton as content widget to construct a foldable-like header line widget (you need implement the foldable logic by yourself). \~english \sa DBaseLine */ DHeaderLine::DHeaderLine(QWidget *parent) : DBaseLine(parent) { DThemeManager::registerWidget(this); setAlignment(Qt::AlignVCenter | Qt::AlignLeft); setFixedHeight(EXPAND_HEADER_HEIGHT); m_titleLabel = new QLabel(this); m_titleLabel->setObjectName("DHeaderLineTitle"); DBaseLine::setLeftContent(m_titleLabel); } /*! * \~english \brief Set the title of the header line. * \~chinese \brief 设置标题。 * * \sa title() */ void DHeaderLine::setTitle(const QString &title) { m_titleLabel->setText(title); } /*! * \~english \brief Set the content widget of the header line. * \~chinese \brief 设置内容控件。 * * \~english Content widget aligned right and the height is limited because of the fixed height. * \~chinese 内容控件将右对齐,且高度受限于 DHeaderLine 本身的固定高度。 */ void DHeaderLine::setContent(QWidget *content) { DBaseLine::setRightContent(content); setFixedHeight(CONTENT_HEADER_HEIGHT); } /*! * \~english \brief Title of the header line. * \~chinese \brief 获取标题。 * * \sa title() */ QString DHeaderLine::title() const { return m_titleLabel->text(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dheaderline.h000066400000000000000000000024131352002233700203500ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DHEADERLINE_H #define DHEADERLINE_H #include #include #include "dtkwidget_global.h" #include "dbaseline.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DHeaderLine : public DBaseLine { Q_OBJECT public: explicit DHeaderLine(QWidget *parent = 0); void setTitle(const QString &title); void setContent(QWidget *content); QString title() const; private: void setLeftContent(QWidget *content); void setRightContent(QWidget *content); private: QLabel *m_titleLabel = NULL; }; DWIDGET_END_NAMESPACE #endif // DHEADERLINE_H dtkwidget-2.1.1/src/widgets/dialog_constants.h000066400000000000000000000030541352002233700214410ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BUTTON_CONSTANTS_H #define BUTTON_CONSTANTS_H #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE namespace DIALOG { const int DEFAULT_WIDTH = 380; const int DEFAULT_HEIGHT = 120; const int BORDER_SHADOW_WIDTH = 0; const int BORDER_RADIUS = 4; const int CONTENT_INSERT_OFFSET = 2; const int BUTTON_HEIGHT = 28; const int CLOSE_BUTTON_WIDTH = 27; const int CLOSE_BUTTON_HEIGHT = 23; const int ICON_LAYOUT_TOP_MARGIN = 14; const int ICON_LAYOUT_BOTTOM_MARGIN = 14; const int ICON_LAYOUT_LEFT_MARGIN = 20; const int ICON_LAYOUT_RIGHT_MARGIN = 20; const int ICON_LAYOUT_SPACING = 20; const int BUTTON_LAYOUT_TOP_MARGIN = 0; const int BUTTON_LAYOUT_BOTTOM_MARGIN = 0; const int BUTTON_LAYOUT_LEFT_MARGIN = 0; const int BUTTON_LAYOUT_RIGHT_MARGIN = 0; } DWIDGET_END_NAMESPACE #endif // BUTTON_CONSTANTS_H dtkwidget-2.1.1/src/widgets/dialogs.pri000066400000000000000000000017601352002233700200750ustar00rootroot00000000000000HEADERS += \ $$PWD/dabstractdialog.h \ $$PWD/ddialog.h \ $$PWD/dialog_constants.h \ $$PWD/dinputdialog.h \ $$PWD/daboutdialog.h \ $$PWD/dsettingsdialog.h \ $$PWD/private/settings/buttongroup.h \ $$PWD/private/settings/combobox.h \ $$PWD/private/settings/content.h \ $$PWD/private/settings/contenttitle.h \ $$PWD/private/settings/navigation.h \ $$PWD/private/settings/navigationdelegate.h \ $$PWD/private/settings/shortcutedit.h \ $$PWD/dfiledialog.h SOURCES += \ $$PWD/dabstractdialog.cpp \ $$PWD/ddialog.cpp \ $$PWD/dinputdialog.cpp \ $$PWD/daboutdialog.cpp \ $$PWD/dsettingsdialog.cpp \ $$PWD/private/settings/buttongroup.cpp \ $$PWD/private/settings/combobox.cpp \ $$PWD/private/settings/content.cpp \ $$PWD/private/settings/contenttitle.cpp \ $$PWD/private/settings/navigation.cpp \ $$PWD/private/settings/navigationdelegate.cpp \ $$PWD/private/settings/shortcutedit.cpp \ $$PWD/dfiledialog.cpp dtkwidget-2.1.1/src/widgets/dimagebutton.cpp000066400000000000000000000442711352002233700211310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dimagebutton.h" #include "dconstants.h" #include "dthememanager.h" #include "private/dimagebutton_p.h" #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DImageButton * \~english \brief The DImageButton class provides an easy way to create image based buttons. * * A DImageButton has four states: normal, hover, pressed and checked, developers * should provide at least the normal state image to get it to work properly. */ /*! * \~english \brief DImageButton::DImageButton constructs an instance of DImageButton * \~english \param parent is the parent widget that the button will be attached to. */ /*! * \~chinese \class DImageButton * \~chinese \brief 在Deepin的程序设计中,用到了大量基于图片的按钮,而Qt的QPushButton不能方便的只使用图片, * 每个项目都存在相同的自绘图片的按钮控件,所以Dtk提供了基于图片来构建的按钮。 * * DImageButton 五个状态: * - 正常 DImageButton::State::Normal * - 鼠标移动在控件上 DImageButton::State::Hover * - 鼠标按下 DImageButton::State::Press * - 当前选中 DImageButton::State::Checked * - 禁用 DImageButton::State::Disabled * * \code * DImageButton *button = new DImageButton(":/normal.png", ":/hover.png", ":/press.png", this); * ... * connect(button, &DImageButton::clicked, ...); * \endcode * * \~chinese \enum DImageButton::State * DImageButton::State 定义了按钮可以使用的状态 * * \~chinese \var DImageButton::Normal * 按钮默认状态图片 DImageButton::setNormalPic * * \~chinese \var DImageButton::Hover * 鼠标在按钮上时的图片 DImageButton::setHoverPic * * \~chinese \var DImageButton::Press * 按钮按下时的图片 DImageButton::setPressPic * * \~chinese \var DImageButton::Checked * 按钮选中的图片 DImageButton::setCheckedPic * * \~chinese \var DImageButton::Disabled * 按钮被禁用时的图片 DImageButton::setDisabledPic */ /*! * \fn DImageButton::clicked * \~chinese \brief 当按钮被点击时会发出该信号 * \fn DImageButton::checkedChanged * \~chinese \brief 当按钮的选择状态发生改变时会发出该信号 * \fn DImageButton::stateChanged * \~chinese \brief 当按钮的状态发生变化时会发出该信号 */ /*! * \~chinese \brief DImageButton的默认构造函数 * * \param parent */ DImageButton::DImageButton(QWidget *parent) : QLabel(parent) , DObject(*new DImageButtonPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"checked", "state"})); D_D(DImageButton); d->updateIcon(); } /*! * \~english \brief DImageButton::DImageButton This is an overloaded function. * * It's convinient to provide the images that used at the initialize stage. * * \param normalPic is the path of image to be used as the normal state. * \param hoverPic is the path of image to be used as the hover state. * \param pressPic is the path of image to be used as the pressed state. * \param parent is the parent widget that the button will be attached to. */ /*! * \~chinese \brief 这是重载的构造函数 * * 通过图片来初始化按钮 * * \param normalPic 默认状态下的图片 * \param hoverPic 鼠标在控件上的图片 * \param pressPic 鼠标按下的图片 * \param parent */ DImageButton::DImageButton(const QString &normalPic, const QString &hoverPic, const QString &pressPic, QWidget *parent) : QLabel(parent) , DObject(*new DImageButtonPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"checked", "state"})); D_D(DImageButton); if (!normalPic.isEmpty()) { d->m_normalPic = normalPic; } if (!hoverPic.isEmpty()) { d->m_hoverPic = hoverPic; } if (!pressPic.isEmpty()) { d->m_pressPic = pressPic; } setCheckable(false); d->updateIcon(); } /*! * \~english \brief DImageButton::DImageButton This is an overloaded function. * * It's convinient to provide the images that used at the initialize stage. * * \param normalPic is the path of image to be used as the normal state. * \param hoverPic is the path of image to be used as the hover state. * \param pressPic is the path of image to be used as the pressed state. * \param checkedPic is the path of image to be used as the checked state. * \param parent is the parent widget that the button will be attached to. */ /*! * \~chinese \brief 这是重载的构造函数 * * 通过图片来初始化按钮 * * \param normalPic 默认的图片 * \param hoverPic 鼠标在控件上的图片 * \param pressPic 鼠标按下的图片 * \param checkedPic 选中时的图片 * \param parent */ DImageButton::DImageButton(const QString &normalPic, const QString &hoverPic, const QString &pressPic, const QString &checkedPic, QWidget *parent) : QLabel(parent) , DObject(*new DImageButtonPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"checked", "state"})); D_D(DImageButton); if (!normalPic.isEmpty()) { d->m_normalPic = normalPic; } if (!hoverPic.isEmpty()) { d->m_hoverPic = hoverPic; } if (!pressPic.isEmpty()) { d->m_pressPic = pressPic; } if (!checkedPic.isEmpty()) { d->m_checkedPic = checkedPic; } setCheckable(true); d->updateIcon(); } DImageButton::~DImageButton() { } void DImageButton::enterEvent(QEvent *event) { D_D(DImageButton); setCursor(Qt::PointingHandCursor); if (!d->m_isChecked && isEnabled()) { d->setState(Hover); } event->accept(); //QLabel::enterEvent(event); } void DImageButton::leaveEvent(QEvent *event) { D_D(DImageButton); if (!d->m_isChecked && isEnabled()) { d->setState(Normal); } event->accept(); //QLabel::leaveEvent(event); } void DImageButton::mousePressEvent(QMouseEvent *event) { D_D(DImageButton); if (event->button() != Qt::LeftButton) { return; } d->setState(Press); event->accept(); //QLabel::mousePressEvent(event); } void DImageButton::mouseReleaseEvent(QMouseEvent *event) { D_D(DImageButton); event->accept(); if (event->button() != Qt::LeftButton) { return; } if (!rect().contains(event->pos())) { return; } if (d->m_isCheckable) { d->m_isChecked = !d->m_isChecked; if (d->m_isChecked) { d->setState(Checked); } else { d->setState(Normal); } } else { d->setState(Hover); } Q_EMIT clicked(); } void DImageButton::mouseMoveEvent(QMouseEvent *event) { D_D(DImageButton); if (!d->m_isCheckable && !rect().contains(event->pos())) { d->setState(Normal); } } /*! * \~chinese \brief 设置是否启用按钮的功能 * * 该方法和 DImageButton::setDisabled() 方法的作用相反,设置为False时则按钮的功能不可用,不能被点击和选中。 * * \see DImageButton::setDisabled * \see DImageButton::isEnabled * \see DImageButton::enabled * * \param enabled */ void DImageButton::setEnabled(bool enabled) { D_D(DImageButton); if (!enabled) { d->setState(Disabled); } else { d->setState(Normal); } QWidget::setEnabled(enabled); } /*! * \~chinese \brief 设置是否禁用按钮的功能 * * 该方法和 DImageButton::setEnabled() 方法的作用相反,设置为True时则按钮的功能不可用,不能被点击和选中。 * * \see DImageButton::setEnabled * \see DImageButton::disabled * * \param disabled */ void DImageButton::setDisabled(bool disabled) { setEnabled(!disabled); } /*! * \~chinese \brief 设置按钮是否可以被选中 * * 该方法默认值为false,如果要开启选中效果,则需要设置为True。 * * \see DImageButton::checkable * \see DImageButton::isCheckable * * \param flag */ void DImageButton::setCheckable(bool flag) { D_D(DImageButton); d->m_isCheckable = flag; if (!d->m_isCheckable) { d->setState(Normal); } } /*! * \~chinese \brief 设置按钮的选中状态 * * 如果DImageButton::setCheckable()没有被设置为true,则当前方法不可用。 * * \param flag * * \see DImageButton::setCheckable * \see DImageButton::isChecked * \see DImageButton::checkedChanged */ void DImageButton::setChecked(bool flag) { D_D(DImageButton); if (d->m_isCheckable == false) { return; } d->m_isChecked = flag; if (d->m_isChecked) { d->setState(Checked); } else { d->setState(Normal); } Q_EMIT checkedChanged(d->m_isChecked); } /*! * \~english \property DImageButton::checked * \~english \brief This property indicates the DImageButton is in checked state of not. */ /*! * \~chinese \property DImageButton::checked * * \~chinese \brief 返回按钮现在是否为选中状态 * * \see DImageButton::setChecked * \see DImageButton::checkedChanged * * \return true 选中 * \return false 未选中 */ /*! * \~chinese \brief 返回按钮是否是选中状态 * * \see DImageButton::setChecked * \see DImageButton::checkedChanged * * \return true 选中状态 * \return false 不是选中状态 */ bool DImageButton::isChecked() const { D_DC(DImageButton); return d->m_isChecked; } /*! * \~english \property DImageButton::checkable * \~english \brief This property indicates the DImageButton can be checked or not. */ /*! * \~chinese \property DImageButton::checkable * * \~chinese \brief 这个方法会返回按钮是否可以被选中 * * \see DImageButton::setCheckable * \see DImageButton::isCheckable * * \return true 可以被选中 * \return false 不可以被选中 */ /*! * \~chinese \brief 这个方法会返回按钮是否可以被选中 * * \see DImageButton::setCheckable * \see DImageButton::checkable * * \return true * \return false */ bool DImageButton::isCheckable() const { D_DC(DImageButton); return d->m_isCheckable; } /*! * \~chinese \brief 该方法用来设置默认状态下的图片 * * \see DImageButton::normalPic * \see DImageButton::getNormalPic * * \param normalPicPixmap 图片的访问地址 */ void DImageButton::setNormalPic(const QString &normalPicPixmap) { D_D(DImageButton); d->m_normalPic = normalPicPixmap; d->updateIcon(); } /*! * \~chinese \brief 设置鼠标在控件上时的图片 * * \see DImageButton::hoverPic * \see DImageButton::getHoverPic * * \param hoverPicPixmap 图片的访问地址 */ void DImageButton::setHoverPic(const QString &hoverPicPixmap) { D_D(DImageButton); d->m_hoverPic = hoverPicPixmap; d->updateIcon(); } /*! * \~chinese \brief 设置鼠标按下的图片 * * \see DImageButton::pressPic * \see DImageButton::getPressPic * * \param pressPicPixmap 图片的访问地址 */ void DImageButton::setPressPic(const QString &pressPicPixmap) { D_D(DImageButton); d->m_pressPic = pressPicPixmap; d->updateIcon(); } /*! * \~chinese \brief 设置选中状态下的图片 * * \see DImageButton::checkedPic * \see DImageButton::getCheckedPic * * \param checkedPicPixmap 图片的访问地址 */ void DImageButton::setCheckedPic(const QString &checkedPicPixmap) { D_D(DImageButton); d->m_checkedPic = checkedPicPixmap; d->updateIcon(); } /*! * \~chinese \brief 设置禁用状态下的图片 * * \see DImageButton::disabledPic * \see DImageButton::getDisabledPic * * \param disabledPicPixmap 图片的访问地址 */ void DImageButton::setDisabledPic(const QString &disabledPicPixmap) { D_D(DImageButton); d->m_disabledPic = disabledPicPixmap; d->updateIcon(); } /*! * \~english \property DImageButton::getNormalPic * \~english \brief This property holds the path of the image used as the normal state. */ /*! * \~chinese \property DImageButton::normalPic * * \~chinese \brief 当前的默认状态图片 * * \see DImageButton::setNormalPic * \see DImageButton::getNormalPic * * \return const QString */ /*! * \~chinese \brief 返回默认状态的图片路径 * * \see DImageButton::setNormalPic * \see DImageButton::normalPic * * \return const QString 默认状态图片的路径 */ const QString DImageButton::getNormalPic() const { D_DC(DImageButton); return d->m_normalPic; } /*! * \~english \property DImageButton::getHoverPic * \~english \brief This property holds the path of the image used as the hover state. */ /*! * \~chinese \property DImageButton::hoverPic * * \~chinese \brief 返回鼠标在控件上时的图片路径 * * \see DImageButton::setHoverPic * \see DImageButton::getHoverPic * * \return const QString 图片路径 */ /*! * \~chinese \brief 返回鼠标在按钮上时的图片路径 * * \see DImageButton::setHoverPic * \see DImageButton::hoverPic * * \return const QString 图片路径 */ const QString DImageButton::getHoverPic() const { D_DC(DImageButton); return d->m_hoverPic; } /*! * \~english \property DImageButton::getPressPic * \~english \brief This property holds the path of the image used as the pressed state. */ /*! * \~chinese \property DImageButton::pressPic * * \~chinese \brief 设置的鼠标按下时的图片 * * \see DImageButton::setPressPic * \see DImageButton::getPressPic * * \return const QString 图片路径 */ /*! * \~chinese \brief 返回鼠标按下时的图片 * * \see DImageButton::pressPic * \see DImageButton::setPressPic * * \return const QString 图片路径 */ const QString DImageButton::getPressPic() const { D_DC(DImageButton); return d->m_pressPic; } /*! * \~english \property DImageButton::getCheckedPic * \~english \brief This property holds the path of the image used as the checked state. */ /*! * \~chinese \property DImageButton::checkedPic * * \see DImageButton::setCheckedPic * \see DImageButton::getCheckedPic * * \~chinese \brief 选中状态时的图片 * * \return const QString 图片路径 */ /*! * \~chinese \brief 返回选中状态时的图片 * * \see DImageButton::setCheckedPic * \see DImageButton::checkedPic * * \return const QString 图片路径 */ const QString DImageButton::getCheckedPic() const { D_DC(DImageButton); return d->m_checkedPic; } /*! * \~chinese \property DImageButton::disabledPic * * \~chinese \brief 禁用状态下的图片 * * \see DImageButton::setDisabledPic * \see DImageButton::getDisabledPic * * \return const QString 图片路径 */ /*! * \~chinese \brief 返回禁用状态下的图片 * * \see DImageButton::setDisabledPic * \see DImageButton::disabledPic * * \return const QString 图片路径 */ const QString DImageButton::getDisabledPic() const { D_DC(DImageButton); return d->m_disabledPic; } /*! * \~english \brief DImageButton::setState change the image by state * \~english \param state: see DImageButton::State */ /*! * \~chinese \brief 设置当前的按钮状态 * * \param state 当前的状态 * * \see DImageButton::getState * \see DImageButton::stateChanged */ void DImageButton::setState(DImageButton::State state) { D_D(DImageButton); d->setState(state); } /*! * \~english \brief DImageButton::getState * \~english \return the state that the DImageButton is in. */ /*! * \~chinese \brief 返回当前的按钮状态 * * \see DImageButton::setState * \see DImageButton::stateChanged * * \return DImageButton::State */ DImageButton::State DImageButton::getState() const { D_DC(DImageButton); return d->m_state; } DImageButton::DImageButton(DImageButtonPrivate &q, QWidget *parent) : QLabel(parent) , DObject(q) { DThemeManager::registerWidget(this, QStringList({"checked", "state"})); D_D(DImageButton); d->updateIcon(); } DImageButtonPrivate::DImageButtonPrivate(DImageButton *qq) : DObjectPrivate(qq) { } DImageButtonPrivate::~DImageButtonPrivate() { } void DImageButtonPrivate::updateIcon() { D_Q(DImageButton); switch (m_state) { case DImageButton::Hover: q->setProperty("state", "hover"); if (!m_hoverPic.isEmpty()) { q->setPixmap(loadPixmap(m_hoverPic)); } break; case DImageButton::Press: q->setProperty("state", "press"); if (!m_pressPic.isEmpty()) { q->setPixmap(loadPixmap(m_pressPic)); } break; case DImageButton::Checked: q->setProperty("state", "checked"); if (!m_checkedPic.isEmpty()) { q->setPixmap(loadPixmap(m_checkedPic)); } break; case DImageButton::Disabled: q->setProperty("state", "disabled"); if (!m_disabledPic.isEmpty()) { q->setPixmap(loadPixmap(m_disabledPic)); } break; default: q->setProperty("state", ""); if (!m_normalPic.isEmpty()) { q->setPixmap(loadPixmap(m_normalPic)); } break; } q->setAlignment(Qt::AlignCenter); Q_EMIT q->stateChanged(); } void DImageButtonPrivate::setState(DImageButton::State state) { if (m_state == state) { return; } m_state = state; updateIcon(); } QPixmap DImageButtonPrivate::loadPixmap(const QString &path) { D_Q(DImageButton); qreal ratio = 1.0; const qreal devicePixelRatio = q->devicePixelRatioF(); QPixmap pixmap; if (!qFuzzyCompare(ratio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(path); } return pixmap; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dimagebutton.h000066400000000000000000000064751352002233700206020ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DIMAGEBUTTON_H #define DIMAGEBUTTON_H #include #include #include #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DImageButtonPrivate; class LIBDTKWIDGETSHARED_EXPORT DImageButton : public QLabel, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QString normalPic READ getNormalPic WRITE setNormalPic DESIGNABLE true) Q_PROPERTY(QString hoverPic READ getHoverPic WRITE setHoverPic DESIGNABLE true) Q_PROPERTY(QString pressPic READ getPressPic WRITE setPressPic DESIGNABLE true) Q_PROPERTY(QString checkedPic READ getCheckedPic WRITE setCheckedPic DESIGNABLE true) Q_PROPERTY(QString disabledPic READ getDisabledPic WRITE setDisabledPic DESIGNABLE true) Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY checkedChanged) Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable) public: DImageButton(QWidget *parent = 0); DImageButton(const QString &normalPic, const QString &hoverPic, const QString &pressPic, QWidget *parent = 0); DImageButton(const QString &normalPic, const QString &hoverPic, const QString &pressPic, const QString &checkedPic, QWidget *parent = 0); ~DImageButton(); void setEnabled(bool enabled); void setDisabled(bool disabled); void setChecked(bool flag); void setCheckable(bool flag); bool isChecked() const; bool isCheckable() const; void setNormalPic(const QString &normalPic); void setHoverPic(const QString &hoverPic); void setPressPic(const QString &pressPic); void setCheckedPic(const QString &checkedPic); void setDisabledPic(const QString &disabledPic); const QString getNormalPic() const; const QString getHoverPic() const; const QString getPressPic() const; const QString getCheckedPic() const; const QString getDisabledPic() const; enum State { Normal, Hover, Press, Checked, Disabled }; void setState(State state); State getState() const; Q_SIGNALS: void clicked(); void checkedChanged(bool checked); void stateChanged(); protected: DImageButton(DImageButtonPrivate &q, QWidget *parent); void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(DImageButton) D_DECLARE_PRIVATE(DImageButton) }; DWIDGET_END_NAMESPACE #endif // DIMAGEBUTTON_H dtkwidget-2.1.1/src/widgets/dinputdialog.cpp000066400000000000000000000560601352002233700211310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include "dinputdialog.h" #include "private/dinputdialog_p.h" #include "dspinbox.h" #include "dlabel.h" #include "dpasswordedit.h" DWIDGET_BEGIN_NAMESPACE DInputDialogPrivate::DInputDialogPrivate(DInputDialog *qq) : DDialogPrivate(qq) { } void DInputDialogPrivate::init() { D_Q(DInputDialog); q->addButtons(QStringList() << QApplication::translate("DInputDialog", "Cancel") << QApplication::translate("DInputDialog", "Confirm")); q->setOnButtonClickedClose(false); q->setDefaultButton(1); cancelButton = q->getButton(0); okButton = q->getButton(1); lineEdit = new DLineEdit; spinBox = new DSpinBox; doubleSpinBox = new DDoubleSpinBox; comboBox = new QComboBox; q->addSpacing(10); q->addContent(lineEdit); q->addContent(spinBox); q->addContent(doubleSpinBox); q->addContent(comboBox); q->setInputMode(DInputDialog::TextInput); q->connect(lineEdit, &DLineEdit::textChanged, q, &DInputDialog::textValueChanged); q->connect(lineEdit, &DLineEdit::alertChanged, q, &DInputDialog::textAlertChanged); q->connect(comboBox, &QComboBox::currentTextChanged, q, &DInputDialog::textValueChanged); q->connect(comboBox, SIGNAL(currentTextChanged(QString)), q, SIGNAL(textValueChanged(QString))); q->connect(spinBox, SIGNAL(valueChanged(int)), q, SIGNAL(intValueChanged(int))); q->connect(doubleSpinBox, SIGNAL(valueChanged(double)), q, SIGNAL(doubleValueChanged(double))); q->connect(cancelButton, &QAbstractButton::clicked, q, [q] { q->done(QDialog::Rejected); q->cancelButtonClicked(); }); q->connect(okButton, &QAbstractButton::clicked, q, [q, this] { q->done(QDialog::Accepted); q->okButtonClicked(); switch (inputMode) { case DInputDialog::TextInput: q->textValueSelected(lineEdit->text()); break; case DInputDialog::ComboBox: q->textValueSelected(comboBox->currentText()); break; case DInputDialog::IntInput: q->intValueSelected(spinBox->value()); break; case DInputDialog::DoubleInput: q->doubleValueSelected(doubleSpinBox->value()); break; default: break; } }); } /*! * \~chinese \class DInputDialog * \~chinese \brief 快速创建一个获取可输入数据的对话框 * * \~chinese DInputDialog 一般直接调用其静态函数 DInputDialog::getText DInputDialog::getItem DInputDialog::getInt DInputDialog::getDouble 来直接获取文字,选项,整数,浮点数 */ /*! * \~chinese \fn DInputDialog::textValueSelected * \~chinese \brief 确认按钮被点击时调用此信号 * * \~chinese 如果InputMode是 DInputDialog::TextInput 或者 DInputDialog::ComboBox ,则确认按钮被点击时调用此信号发送当前文本输入框或多选框中当前的值 * * \~chinese \param value 要发送的值 */ /*! * \~chinese \fn DInputDialog::intValueSelected * \~chinese \brief 确认按钮被点击时调用此信号 * * \~chinese 如果InputMode是 DInputDialog::IntInput ,则确认按钮被点击时调用此信号发送当前的整数值 * * \~chinese \param value 要发送的值 */ /*! * \~chinese \fn DInputDialog::doubleValueSelected * \~chinese \brief 确认按钮被点击时调用此信号 * * \~chinese 如果InputMode是 DInputDialog::DoubleInput ,则确认按钮被点击时调用此信号发送当前的浮点数值 * * \~chinese \param value 要发送的值 */ /*! * \~chinese \fn DInputDialog::cancelButtonClicked * \~chinese \brief 取消按钮被点击时调用此信号 */ /*! * \~chinese \fn DInputDialog::okButtonClicked * \~chinese \brief 确认按钮被点击时调用此信号 */ /*! * \~chinese \brief 获取 DInputDialog::DInputDialog 实例 * \~chinese \param parent 作为 DInputDialog::DInputDialog 实例的父控件 */ DInputDialog::DInputDialog(QWidget *parent) : DDialog(*new DInputDialogPrivate(this), parent) { d_func()->init(); } /*! * \~chinese \sa DInputDialog::inputMode */ void DInputDialog::setInputMode(DInputDialog::InputMode mode) { D_D(DInputDialog); d->inputMode = mode; switch (mode) { case InputMode::TextInput: d->lineEdit->show(); d->comboBox->hide(); d->spinBox->hide(); d->doubleSpinBox->hide(); break; case InputMode::ComboBox: d->comboBox->show(); d->lineEdit->hide(); d->spinBox->hide(); d->doubleSpinBox->hide(); break; case InputMode::IntInput: d->spinBox->show(); d->lineEdit->hide(); d->comboBox->hide(); d->doubleSpinBox->hide(); break; case InputMode::DoubleInput: d->doubleSpinBox->show(); d->lineEdit->hide(); d->comboBox->hide(); d->spinBox->hide(); break; default: break; } } /*! * \~chinese \property DInputDialog::inputMode * \~chinese \brief 这个属性保存对话框当前的输入模式 * * \~chinese 查看 DInputDialog::InputMode 以了解对话框支持的多种输入模式 * * \~chinese Getter: DInputDialog::inputMode , Setter: DInputDialog::setInputMode * \~chinese \sa DInputDialog::InputMode */ DInputDialog::InputMode DInputDialog::inputMode() const { D_DC(DInputDialog); return d->inputMode; } /*! * \~chinese \sa DInputDialog::textValue */ void DInputDialog::setTextValue(const QString &text) { D_D(DInputDialog); if(inputMode() == ComboBox) d->comboBox->setCurrentText(text); else d->lineEdit->setText(text); } /*! * \~chinese \fn DInputDialog::textValueChanged * \~chinese \brief 当属性 DInputDialog::textValue 发生变化时调用此信号 * \~chinese \sa DInputDialog::textValue */ /*! * \~chinese \property DInputDialog::textValue * \~chinese \brief 这个属性保存对话框当前的输入文本 * * \~chinese 如果当前的输入模式是 DInputDialog::ComboBox 则返回当前已选择的ComboBox选项,否则返回输入框的内容 * * \~chinese Getter: DInputDialog::textValue , Setter: DInputDialog::setTextValue , Signal: DInputDialog::textValueChanged * * \~chinese \sa DInputDialog::InputMode */ QString DInputDialog::textValue() const { D_DC(DInputDialog); return inputMode() == ComboBox ? d->comboBox->currentText() : d->lineEdit->text(); } /*! * \~chinese \sa DInputDialog::textEchoMode */ void DInputDialog::setTextEchoMode(QLineEdit::EchoMode mode) { D_D(DInputDialog); if(mode == d->lineEdit->echoMode()) return; DLineEdit *edit; if(mode == DLineEdit::Normal) { edit = new DLineEdit; } else { edit = new DPasswordEdit; edit->setEchoMode(mode); } edit->setClearButtonEnabled(true); disconnect(d->lineEdit, &DLineEdit::alertChanged, this, &DInputDialog::textAlertChanged); disconnect(d->lineEdit, &DLineEdit::textChanged, this, &DInputDialog::textValueChanged); connect(edit, &DLineEdit::alertChanged, this, &DInputDialog::textAlertChanged); connect(edit, &DLineEdit::textChanged, this, &DInputDialog::textValueChanged); edit->setText(d->lineEdit->text()); insertContent(d->getContentLayout()->indexOf(d->lineEdit), edit); removeContent(d->lineEdit); d->lineEdit = edit; } /*! * \~chinese \property DInputDialog::textEchoMode * \~chinese \brief 这个属性保存对话框中的输入框文字显示模式 * * \~chinese Getter: DInputDialog::textEchoMode , Setter: DInputDialog::setTextEchoMode * * \~chinese \sa QLineEdit::EchoMode */ QLineEdit::EchoMode DInputDialog::textEchoMode() const { D_DC(DInputDialog); return d->lineEdit->echoMode(); } /*! * \sa DInputDialog::comboBoxEditable */ void DInputDialog::setComboBoxEditable(bool editable) { D_D(DInputDialog); d->comboBox->setEditable(editable); if (editable) connect(d->comboBox->lineEdit(), &QLineEdit::textChanged, this, &DInputDialog::textValueChanged, Qt::UniqueConnection); } /*! * \~chinese \property DInputDialog::comboBoxEditable * \~chinese \brief 这个属性表示对话框中的多选框是否可以编辑 * * \~chinese Getter: DInputDialog::isComboBoxEditable , Setter: DInputDialog::setComboBoxEditable */ /*! * \sa DInputDialog::comboBoxEditable */ bool DInputDialog::isComboBoxEditable() const { D_DC(DInputDialog); return d->comboBox->isEditable(); } /*! * \sa DInputDialog::comboBoxEditable */ void DInputDialog::setComboBoxItems(const QStringList &items) { D_D(DInputDialog); d->comboBox->clear(); d->comboBox->addItems(items); } /*! * \~chinese \property DInputDialog::comboBoxItems * \~chinese \brief 这个属性保存对话框中多选框的所有可选值 * * \~chinese Getter: DInputDialog::comboBoxItems , Setter: DInputDialog::setComboBoxItems */ /*! * \~chinese \sa DInputDialog::comboBoxItems */ QStringList DInputDialog::comboBoxItems() const { D_DC(DInputDialog); QStringList list; for(int i = 0; i < d->comboBox->count(); ++i) { list << d->comboBox->itemText(i); } return list; } /*! * \~chinese \fn DInputDialog::comboBoxCurrentIndexChanged * \~chinese \brief 当属性 DInputDialog::comboBoxCurrentIndex 发生变化时调用此信号 * \~chinese \sa DInputDialog::comboBoxCurrentIndex */ /*! * \~chinese \property DInputDialog::comboBoxCurrentIndex * \~chinese \brief 这个属性保存对话框中多选框当前的索引 * * \~chinese Getter: DInputDialog::comboBoxCurrentIndex , Setter: DInputDialog::setComboBoxCurrentIndex , Signal: DInputDialog::comboBoxCurrentIndexChanged */ int DInputDialog::comboBoxCurrentIndex() const { D_DC(DInputDialog); return d->comboBox->currentIndex(); } /*! * \~chinese \sa DInputDialog::comboBoxCurrentIndex */ void DInputDialog::setComboBoxCurrentIndex(int comboBoxCurrentIndex) { D_D(DInputDialog); d->comboBox->setCurrentIndex(comboBoxCurrentIndex); } /*! * \sa DInputDialog::intValue */ void DInputDialog::setIntValue(int value) { D_DC(DInputDialog); d->spinBox->setValue(value); } /*! * \~chinese \fn DInputDialog::intValueChanged * \~chinese \brief 当属性 DInputDialog::intValue 发生变化时调用此信号 * \~chinese \sa DInputDialog::intValue */ /*! * \~chinese \property DInputDialog::intValue * \~chinese \brief 这个属性保存对话框当前的整型值 * * \~chinese Getter: DInputDialog::intValue , Setter: DInputDialog::setIntValue , Signal: DInputDialog::intValueChanged */ int DInputDialog::intValue() const { D_DC(DInputDialog); return d->spinBox->value(); } /*! * \~chinese \sa DInputDialog::intMinimum */ void DInputDialog::setIntMinimum(int min) { D_D(DInputDialog); d->spinBox->setMinimum(min); } /*! * \~chinese \property DInputDialog::intMinimum * \~chinese \brief 这个属性保存对话框中的整形可选输入框SpinBox的最小值 * * \~chinese Getter: DInputDialog::intMinimum , Setter: DInputDialog::setIntMinimum * * \~chinese \sa DInputDialog::intMaximum */ int DInputDialog::intMinimum() const { D_DC(DInputDialog); return d->spinBox->minimum(); } /*! * \~chinese \sa DInputDialog::intMaximum */ void DInputDialog::setIntMaximum(int max) { D_D(DInputDialog); d->spinBox->setMaximum(max); } /*! * \~chinese \property DInputDialog::intMaximum * \~chinese \brief 这个属性保存对话框中的整形可选输入框SpinBox的最大值 * * \~chinese Getter: DInputDialog::intMaximum , Setter: DInputDialog::setIntMaximum * * \~chinese \sa DInputDialog::intMinimum */ int DInputDialog::intMaximum() const { D_DC(DInputDialog); return d->spinBox->maximum(); } /*! * \~chinese \brief 设置对话框中的整形可选输入框SpinBox的可选范围(最小值和最大值) * * \~chinese \sa DInputDialog::intMinimum DInputDialog::intMaximum */ void DInputDialog::setIntRange(int min, int max) { D_D(DInputDialog); d->spinBox->setRange(min, max); } /*! * \~chinese \sa DInputDialog::intStep */ void DInputDialog::setIntStep(int step) { D_D(DInputDialog); d->spinBox->setSingleStep(step); } /*! * \~chinese \property DInputDialog::intStep * \~chinese \brief 这个属性保存对话框中的可选输入框点击调增按钮时的步进值 * * \~chinese \brief 步进值即点击一次增大或减小多少 * * \~chinese Getter: DInputDialog::intStep , Setter: DInputDialog::setIntStep */ int DInputDialog::intStep() const { D_DC(DInputDialog); return d->spinBox->singleStep(); } /*! * \~chinese \sa DInputDialog::doubleValue */ void DInputDialog::setDoubleValue(double value) { D_D(DInputDialog); d->doubleSpinBox->setValue(value); } /*! * \~chinese \fn DInputDialog::doubleValueChanged * \~chinese \brief 当属性 DInputDialog::doubleValue 发生变化时调用此信号 * \~chinese \sa DInputDialog::doubleValue */ /*! * \~chinese \property DInputDialog::doubleValue * \~chinese \brief 这个属性保存对话框当前的浮点数值 * * \~chinese Getter: DInputDialog::doubleValue , Setter: DInputDialog::setDoubleValue , Signal: DInputDialog::doubleValueChanged */ double DInputDialog::doubleValue() const { D_DC(DInputDialog); return d->doubleSpinBox->value(); } /*! * \~chinese \sa DInputDialog::doubleMinimum */ void DInputDialog::setDoubleMinimum(double min) { D_D(DInputDialog); d->doubleSpinBox->setMinimum(min); } /*! * \~chinese \property DInputDialog::doubleMinimum * \~chinese \brief 这个属性保存对话框中的浮点型可选输入框SpinBox的最小值 * * \~chinese Getter: DInputDialog::doubleMinimum , Setter: DInputDialog::setDoubleMinimum * * \~chinese \sa DInputDialog::doubleMaximum */ double DInputDialog::doubleMinimum() const { D_DC(DInputDialog); return d->doubleSpinBox->minimum(); } /*! * \~chinese \sa DInputDialog::doubleMaximum */ void DInputDialog::setDoubleMaximum(double max) { D_D(DInputDialog); d->doubleSpinBox->setMaximum(max); } /*! * \~chinese \property DInputDialog::doubleMaximum * \~chinese \brief 这个属性保存对话框中的浮点型可选输入框SpinBox的最大值 * * \~chinese Getter: DInputDialog::doubleMaximum , Setter: DInputDialog::setDoubleMaximum * * \~chinese \sa DInputDialog::doubleMinimum */ double DInputDialog::doubleMaximum() const { D_DC(DInputDialog); return d->doubleSpinBox->maximum(); } /*! * \~chinese \brief 设置对话框中的浮点型可选输入框SpinBox的可选范围(最小值和最大值) * * \~chinese \sa DInputDialog::doubleMinimum DInputDialog::doubleMaximum */ void DInputDialog::setDoubleRange(double min, double max) { D_D(DInputDialog); d->doubleSpinBox->setRange(min, max); } /*! * \~chinese \sa DInputDialog::doubleDecimals */ void DInputDialog::setDoubleDecimals(int decimals) { D_D(DInputDialog); d->doubleSpinBox->setDecimals(decimals); } /*! * \~chinese \property DInputDialog::doubleDecimals * \~chinese \brief 这个属性保存对话框中的浮点型可选输入框SpinBox的精度 * * \~chinese 精度即处理多少位小数 * * \~chinese Getter: DInputDialog::doubleDecimals , Setter: DInputDialog::setDoubleDecimals */ int DInputDialog::doubleDecimals() const { D_DC(DInputDialog); return d->doubleSpinBox->decimals(); } /*! * \~chinese \sa DInputDialog::okButtonText */ void DInputDialog::setOkButtonText(const QString &text) { D_DC(DInputDialog); d->okButton->setText(text); } /*! * \~chinese \property DInputDialog::okButtonText * \~chinese \brief 这个属性保存对话框的确认按钮文字 * * \~chinese Getter: DInputDialog::okButtonText , Setter: DInputDialog::setOkButtonText */ QString DInputDialog::okButtonText() const { D_DC(DInputDialog); return d->okButton->text(); } /*! * \~chinese \brief 设置确认按钮是否可以点击 * \~chinese \param enable 为 true 即为可以点击,反之则反 */ void DInputDialog::setOkButtonEnabled(const bool enable) { D_DC(DInputDialog); d->okButton->setEnabled(enable); } /*! * \~chinese \brief 获取确认按钮是否可以点击 * \~chinese \return true 即为可以点击,反之则反 */ bool DInputDialog::okButtonIsEnabled() const { D_DC(DInputDialog); return d->okButton->isEnabled(); } /*! * \~chinese \sa DInputDialog::cancelButtonText */ void DInputDialog::setCancelButtonText(const QString &text) { D_DC(DInputDialog); d->cancelButton->setText(text); } /*! * \~chinese \property DInputDialog::cancelButtonText * \~chinese \brief 这个属性保存对话框的取消按钮文字 * * \~chinese Getter: DInputDialog::cancelButtonText , Setter: DInputDialog::setCancelButtonText */ QString DInputDialog::cancelButtonText() const { D_DC(DInputDialog); return d->cancelButton->text(); } /*! * \~chinese \sa DInputDialog::textAlert */ void DInputDialog::setTextAlert(bool textAlert) { D_D(DInputDialog); d->lineEdit->setAlert(textAlert); } /*! * \~chinese \fn DInputDialog::textAlertChanged * \~chinese \brief 当属性 DInputDialog::textAlert 发生变化时调用此信号 * \~chinese \sa DInputDialog::textAlert */ /*! * \~chinese \property DInputDialog::textAlert * \~chinese \brief 这个属性保存对话框是否处于警告状态 * * \~chinese 当对话框处于警告状态时,输入框的边框将会显示不同的颜色,一般警告告诉用户当前输入框的内容不合法 * * \~chinese Getter: DInputDialog::textAlert , Setter: DInputDialog::setTextAlert , Signal: DInputDialog::textAlertChanged */ /*! * \~chinese \sa DInputDialog::textAlert */ bool DInputDialog::isTextAlert() const { D_DC(DInputDialog); return d->lineEdit->isAlert(); } /*! * \brief 快速创建一个可以输入文字的对话框 * \param parent 作为对话框的父控件 * \param title 作为对话框的标题 * \param message 作为对话框提示信息 * \param echo 设置文本输入框文字的显示模式 * \param text 设置文本输入框文字默认的内容 * \param ok 用于获取对话框是否点击了确认的指针 * \param flags 设置对话框的窗口属性,一般无需设置 * \param inputMethodHints 设置输入法相关属性,一般无需设置 * \return 返回输入的字符串 */ QString DInputDialog::getText(QWidget *parent, const QString &title, const QString &message, QLineEdit::EchoMode echo, const QString &text, bool *ok, Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints) { DInputDialog dialog(parent); dialog.setTitle(title); dialog.setMessage(message); dialog.setTextEchoMode(echo); dialog.setTextValue(text); dialog.setWindowFlags(flags); dialog.setInputMethodHints(inputMethodHints); dialog.setInputMode(InputMode::TextInput); ok ? *ok = dialog.exec() == QDialog::Accepted : dialog.exec(); return dialog.textValue(); } /*! * \brief 快速创建一个多选框的对话框 * \param parent 作为对话框的父控件 * \param title 作为对话框的标题 * \param message 作为对话框提示信息 * \param items 设置所有可选项 * \param current 设置当前的可选项 * \param editable 设置多选框是否可编辑 * \param ok 用于获取对话框是否点击了确认的指针 * \param flags 设置对话框的窗口属性,一般无需设置 * \param inputMethodHints 设置输入法相关属性,一般无需设置 * \return 返回选中的项 */ QString DInputDialog::getItem(QWidget *parent, const QString &title, const QString &message, const QStringList &items, int current, bool editable, bool *ok, Qt::WindowFlags flags, Qt::InputMethodHints inputMethodHints) { DInputDialog dialog(parent); dialog.setComboBoxItems(items); dialog.setComboBoxEditable(editable); dialog.setComboBoxCurrentIndex(current); dialog.setTitle(title); dialog.setMessage(message); dialog.setWindowFlags(flags); dialog.setInputMethodHints(inputMethodHints); dialog.setInputMode(InputMode::ComboBox); ok ? *ok = dialog.exec() == QDialog::Accepted : dialog.exec(); return dialog.textValue(); } /*! * \brief 快速创建一个获取整数的对话框 * \param parent 作为对话框的父控件 * \param title 作为对话框的标题 * \param message 作为对话框提示信息 * \param value 设置默认的值 * \param minValue 设置最小值 * \param maxValue 设置最大值 * \param step 设置步进值 * \param ok 用于获取对话框是否点击了确认的指针 * \param flags 设置对话框的窗口属性,一般无需设置 * \return 返回整数值 */ int DInputDialog::getInt(QWidget *parent, const QString &title, const QString &message, int value, int minValue, int maxValue, int step, bool *ok, Qt::WindowFlags flags) { DInputDialog dialog(parent); dialog.setIntValue(value); dialog.setIntRange(minValue, maxValue); dialog.setIntStep(step); dialog.setTitle(title); dialog.setMessage(message); dialog.setWindowFlags(flags); dialog.setInputMode(InputMode::IntInput); ok ? *ok = dialog.exec() == QDialog::Accepted : dialog.exec(); return dialog.intValue(); } /*! * \brief 快速创建一个获取浮点数的对话框 * \param parent 作为对话框的父控件 * \param title 作为对话框的标题 * \param message 作为对话框提示信息 * \param value 设置默认的值 * \param minValue 设置最小值 * \param maxValue 设置最大值 * \param decimals 设置精度 * \param ok 用于获取对话框是否点击了确认的指针 * \param flags 设置对话框的窗口属性,一般无需设置 * \return 返回整数值 */ double DInputDialog::getDouble(QWidget *parent, const QString &title, const QString &message, double value, double minValue, double maxValue, int decimals, bool *ok, Qt::WindowFlags flags) { DInputDialog dialog(parent); dialog.setDoubleValue(value); dialog.setDoubleRange(minValue, maxValue); dialog.setDoubleDecimals(decimals); dialog.setTitle(title); dialog.setMessage(message); dialog.setWindowFlags(flags); dialog.setInputMode(InputMode::DoubleInput); ok ? *ok = dialog.exec() == QDialog::Accepted : dialog.exec(); return dialog.doubleValue(); } void DInputDialog::showEvent(QShowEvent *e) { DDialog::showEvent(e); Q_D(DInputDialog); d->lineEdit->setFocus(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dinputdialog.h000066400000000000000000000135201352002233700205700ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DINPUTDIALOG_H #define DINPUTDIALOG_H #include #include "ddialog.h" #include "dlineedit.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DInputDialogPrivate; class DInputDialog : public DDialog { Q_OBJECT Q_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode) Q_PROPERTY(QString textValue READ textValue WRITE setTextValue NOTIFY textValueChanged) Q_PROPERTY(int intValue READ intValue WRITE setIntValue NOTIFY intValueChanged) Q_PROPERTY(int doubleValue READ doubleValue WRITE setDoubleValue NOTIFY doubleValueChanged) Q_PROPERTY(DLineEdit::EchoMode textEchoMode READ textEchoMode WRITE setTextEchoMode) Q_PROPERTY(bool comboBoxEditable READ isComboBoxEditable WRITE setComboBoxEditable) Q_PROPERTY(QStringList comboBoxItems READ comboBoxItems WRITE setComboBoxItems) Q_PROPERTY(int comboBoxCurrentIndex READ comboBoxCurrentIndex WRITE setComboBoxCurrentIndex NOTIFY comboBoxCurrentIndexChanged) Q_PROPERTY(int intMinimum READ intMinimum WRITE setIntMinimum) Q_PROPERTY(int intMaximum READ intMaximum WRITE setIntMaximum) Q_PROPERTY(int intStep READ intStep WRITE setIntStep) Q_PROPERTY(double doubleMinimum READ doubleMinimum WRITE setDoubleMinimum) Q_PROPERTY(double doubleMaximum READ doubleMaximum WRITE setDoubleMaximum) Q_PROPERTY(int doubleDecimals READ doubleDecimals WRITE setDoubleDecimals) Q_PROPERTY(QString okButtonText READ okButtonText WRITE setOkButtonText) Q_PROPERTY(QString cancelButtonText READ cancelButtonText WRITE setCancelButtonText) Q_PROPERTY(bool textAlert READ isTextAlert WRITE setTextAlert NOTIFY textAlertChanged) public: enum InputMode { TextInput, ComboBox, IntInput, DoubleInput }; explicit DInputDialog(QWidget *parent = 0); Q_SLOT void setInputMode(InputMode mode); InputMode inputMode() const; Q_SLOT void setTextValue(const QString &text); QString textValue() const; Q_SLOT void setTextEchoMode(QLineEdit::EchoMode mode); QLineEdit::EchoMode textEchoMode() const; Q_SLOT void setComboBoxEditable(bool editable); bool isComboBoxEditable() const; Q_SLOT void setComboBoxItems(const QStringList &items); QStringList comboBoxItems() const; Q_SLOT void setComboBoxCurrentIndex(int comboBoxCurrentIndex); int comboBoxCurrentIndex() const; Q_SLOT void setIntValue(int value); int intValue() const; Q_SLOT void setIntMinimum(int min); int intMinimum() const; Q_SLOT void setIntMaximum(int max); int intMaximum() const; Q_SLOT void setIntRange(int min, int max); Q_SLOT void setIntStep(int step); int intStep() const; Q_SLOT void setDoubleValue(double value); double doubleValue() const; Q_SLOT void setDoubleMinimum(double min); double doubleMinimum() const; Q_SLOT void setDoubleMaximum(double max); double doubleMaximum() const; Q_SLOT void setDoubleRange(double min, double max); Q_SLOT void setDoubleDecimals(int decimals); int doubleDecimals() const; Q_SLOT void setOkButtonText(const QString &text); QString okButtonText() const; Q_SLOT void setOkButtonEnabled(const bool enable); bool okButtonIsEnabled() const; Q_SLOT void setCancelButtonText(const QString &text); QString cancelButtonText() const; Q_SLOT void setTextAlert(bool textAlert); bool isTextAlert() const; static QString getText(QWidget *parent, const QString &title, const QString &message, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone); static QString getItem(QWidget *parent, const QString &title, const QString &message, const QStringList &items, int current = 0, bool editable = true, bool *ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone); static int getInt(QWidget *parent, const QString &title, const QString &message, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0); static double getDouble(QWidget *parent, const QString &title, const QString &message, double value = 0, double minValue = -2147483647, double maxValue = 2147483647, int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = 0); protected: void showEvent(QShowEvent *e); Q_SIGNALS: // ### Q_EMIT signals! void textValueChanged(const QString &text); void textValueSelected(const QString &text); void intValueChanged(int value); void intValueSelected(int value); void doubleValueChanged(double value); void doubleValueSelected(double value); void cancelButtonClicked(); void okButtonClicked(); void comboBoxCurrentIndexChanged(int comboBoxCurrentIndex); void textAlertChanged(bool textAlert); private: D_DECLARE_PRIVATE(DInputDialog) }; DWIDGET_END_NAMESPACE #endif // DINPUTDIALOG_H dtkwidget-2.1.1/src/widgets/dinputdialog_p.h000066400000000000000000000014101352002233700211020ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DINPUTDIALOG_P_H #define DINPUTDIALOG_P_H #endif // DINPUTDIALOG_P_H dtkwidget-2.1.1/src/widgets/dipv4lineedit.cpp000066400000000000000000000357411352002233700212150ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include "dthememanager.h" #include "dipv4lineedit.h" #include "private/dipv4lineedit_p.h" DWIDGET_BEGIN_NAMESPACE #define RX_PATTERN_IP "^(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)?$" DIpv4LineEditPrivate::DIpv4LineEditPrivate(DIpv4LineEdit *parent) : DLineEditPrivate(parent) { } void DIpv4LineEditPrivate::init() { D_Q(DIpv4LineEdit); editMainWidget = new QWidget(q); QHBoxLayout *hbox_layout = new QHBoxLayout; hbox_layout->setSpacing(0); hbox_layout->setMargin(0); hbox_layout->addWidget(getEdit()); hbox_layout->addWidget(getLabel()); hbox_layout->addWidget(getEdit()); hbox_layout->addWidget(getLabel()); hbox_layout->addWidget(getEdit()); hbox_layout->addWidget(getLabel()); hbox_layout->addWidget(getEdit()); editMainWidget->setLayout(hbox_layout); q->DLineEdit::setReadOnly(true); q->setFocusProxy(editList.first()); q->setValidator(new QRegularExpressionValidator(QRegularExpression("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)?\\.){0,3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)?"), q)); QObject::connect(q, &DIpv4LineEdit::sizeChanged, editMainWidget, static_cast(&QWidget::resize)); QObject::connect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_setIpLineEditText(QString)), Qt::QueuedConnection); } QLabel *DIpv4LineEditPrivate::getLabel() { QLabel *label = new QLabel("."); label->setObjectName("DIpv4LineEdit_Label"); label->setCursor(Qt::IBeamCursor); return label; } QLineEdit *DIpv4LineEditPrivate::getEdit() { D_Q(DIpv4LineEdit); QLineEdit *edit = new QLineEdit; edit->setObjectName("DIpv4LineEdit_Edit"); edit->setValidator(new QRegularExpressionValidator(QRegularExpression(RX_PATTERN_IP), edit)); edit->setAlignment(Qt::AlignHCenter); edit->setAttribute(Qt::WA_InputMethodEnabled, false); edit->setContextMenuPolicy(Qt::NoContextMenu); edit->installEventFilter(q); editList << edit; QObject::connect(edit, SIGNAL(textEdited(QString)), q, SLOT(_q_updateLineEditText())); return edit; } void DIpv4LineEditPrivate::setFocus(bool focus) { if(this->focus == focus) return; this->focus = focus; Q_EMIT q_func()->focusChanged(focus); } void DIpv4LineEditPrivate::_q_updateLineEditText() { D_Q(DIpv4LineEdit); QString text; for(const QLineEdit *edit : editList) { text.append(".").append(edit->text()); } QObject::disconnect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_setIpLineEditText(QString))); if(text == "....") { if(!q->text().isEmpty()) { q->setText(""); Q_EMIT q->textEdited(q->text()); } } else { text = text.mid(1); if(text != q->text()) { q->setText(text); Q_EMIT q->textEdited(q->text()); } } QObject::connect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_setIpLineEditText(QString)), Qt::QueuedConnection); q->DLineEdit::setCursorPosition(q->cursorPosition()); } void DIpv4LineEditPrivate::_q_setIpLineEditText(const QString &text) { D_QC(DIpv4LineEdit); int pos = 0; if(q->validator()->validate(const_cast(text), pos) != QValidator::Acceptable) { _q_updateLineEditText(); return; } const QStringList text_list = text.split('.'); int min_count = qMin(editList.count(), text_list.count()); for(int i = 0; i < min_count; ++i ) { QLineEdit *edit = editList[i]; bool edit_blocked = edit->blockSignals(true); edit->setText(text_list[i]); edit->blockSignals(edit_blocked); } for(int i = min_count; i < editList.count(); ++i) { QLineEdit *edit = editList[i]; bool edit_blocked = edit->blockSignals(true); edit->clear(); edit->blockSignals(edit_blocked); } } /*! * \~chinese \class DIpv4LineEdit * \~chinese \brief 类DIpv4LineEdit是专门用于输入ipv4格式文本的编辑框。 * * \~chinese 此类内部由四个 \l QLineEdit 组合而成,输入框之间可以通过Tab/Shift+Tab快捷切 * \~chinese 换光标,输入字符"."时会自动跳到下一个输入框。在使用左右方向键移动光标时会自动跨 * \~chinese 越输入框,和在同一个输入框内光标的没有区别。和 \l QLineEdit 一样也可以使用快捷 * \~chinese 键方便的复制粘贴文本,在粘贴时会自动根据ipv4的规则过滤掉非法字符。每个输入框的文 * \~chinese 本内容必须要满足以下的正则规则: * \code{.unparsed} * ^(2[0-4]\d|25[0-5]|[01]?\d\d?)?$ * \endcode * \~chinese \warning 不能使用DLineEdit和QLineEdit中的功能性函数 */ /*! * \~chinese \property DIpv4LineEdit::selectedText * \~chinese \brief 选中的文本内容 * \~chinese \note 只读 * \~chinese \sa QLineEdit::selectedText */ /*! * \~chinese \property DIpv4LineEdit::placeholderText * \~chinese \brief 输入框未输入内容时的占位文本,通常显示为灰色,当输入任意字符后就会被隐藏 * \~chinese \note 只读。默认为空字符串 * \~chinese \sa QLineEdit::placeholderText */ /*! * \~chinese \property DIpv4LineEdit::clearButtonEnabled * \~chinese \brief 是否在输入框上显示清理按钮 * \~chinese \note 只读。默认为 false * \~chinese \sa QLineEdit::clearButtonEnabled */ /*! * \~chinese \brief 构造DIpv4LineEdit类,和普通 \l QWidget 一样,可以传入一个QWidget指 * \~chinese 针对象作为其父对象 * \~chinese \note 会调用 DThemeManager::registerWidget 注册为受 DThemeManager * \~chinese 管理的控件 * \~chinese \param parent */ DIpv4LineEdit::DIpv4LineEdit(QWidget *parent) : DLineEdit(*new DIpv4LineEditPrivate(this), parent) { DThemeManager::registerWidget(this); d_func()->init(); } /*! * \~chinese \property DIpv4LineEdit::displayText * \~chinese \brief 输入框显示的文本内容 * \~chinese * \~chinese 和 QLineEdit::displayText 不同,无论 \l echoMode 值为多少,都返回和 \l text 同样的内容 * \~chinese * \~chinese \note 可读可写 * \~chinese \sa QLineEdit::echoMode QLineEdit::text */ /*! * \~chinese \return */ QString DIpv4LineEdit::displayText() const { return text(); } /*! * \~chinese \property DIpv4LineEdit::cursorPosition * \~chinese \brief 当前光标所在位置 * \~chinese * \~chinese \note 可读可写 * \~chinese \sa QLineEdit::cursorPosition */ /*! * \~chinese \return */ int DIpv4LineEdit::cursorPosition() const { D_DC(DIpv4LineEdit); int cursorPosition = 0; for(const QLineEdit *edit : d->editList) { if(edit->hasFocus()) { cursorPosition += edit->cursorPosition(); break; } else { cursorPosition += edit->text().count() + 1; } } return cursorPosition; } /*! * \~chinese \property DIpv4LineEdit::alignment * \~chinese \brief 文本内容对齐方式 * \~chinese * \~chinese 固定为 \l Qt::AlignHCenter * \~chinese * \~chinese \note 只读 * \~chinese \sa QLineEdit::alignment */ /*! * \~chinese \return */ Qt::Alignment DIpv4LineEdit::alignment() const { return Qt::AlignHCenter; } /*! * \~chinese \property DIpv4LineEdit::acceptableInput * \~chinese \note 只读 * \~chinese \sa QLineEdit::acceptableInput */ /*! * \~chinese \return */ bool DIpv4LineEdit::hasAcceptableInput() const { D_DC(DIpv4LineEdit); bool has = true; for(const QLineEdit *edit : d->editList) { has = has && edit->hasAcceptableInput(); } return has; } /*! * \~chinese \property DIpv4LineEdit::readOnly * \~chinese \note 可读可写 * \~chinese \sa QLineEdit::readOnly */ /*! * \~chinese \return */ bool DIpv4LineEdit::isReadOnly() const { return d_func()->editList.first()->isReadOnly(); } /*! * \~chinese \param cursorPosition * \~chinese \sa cursorPosition */ void DIpv4LineEdit::setCursorPosition(int cursorPosition) { DLineEdit::setCursorPosition(cursorPosition); D_D(DIpv4LineEdit); for(QLineEdit *edit : d->editList) { if(cursorPosition > edit->text().count()) { cursorPosition -= edit->text().count(); --cursorPosition; } else { edit->setCursorPosition(cursorPosition); edit->setFocus(); break; } } } /*! * \~chinese \param readOnly * \~chinese \sa readOnly */ void DIpv4LineEdit::setReadOnly(bool readOnly) { D_D(DIpv4LineEdit); for(QLineEdit *edit : d->editList) { edit->setReadOnly(readOnly); } } /*! * \~chinese \brief 使用此方法选中文本时会把四个输入框当做一个看待 * \~chinese \param start * \~chinese \param length * \~chinese \sa QLineEdit::setSelection */ void DIpv4LineEdit::setSelection(int start, int length) { D_D(DIpv4LineEdit); for(QLineEdit *edit : d->editList) { if(edit->text().count() > start) { if(edit->text().count() < length + start) { int tmp_length = edit->text().count() - start; edit->setSelection(start, tmp_length); length -= tmp_length; } else { edit->setSelection(start, length); break; } } else { edit->setSelection(edit->cursorPosition(), 0); } start -= edit->text().count(); } DLineEdit::setSelection(start, length); } /*! * \~chinese \brief 选中所有输入框的全部内容 * \~chinese \sa QLineEdit::selectAll */ void DIpv4LineEdit::selectAll() { D_D(DIpv4LineEdit); for(QLineEdit *edit : d->editList) { edit->selectAll(); } DLineEdit::selectAll(); } bool DIpv4LineEdit::eventFilter(QObject *obj, QEvent *e) { if(e->type() == QEvent::KeyPress) { QLineEdit *edit = qobject_cast(obj); if(edit) { QKeyEvent *event = static_cast(e); if(event) { D_D(DIpv4LineEdit); if(event->key() <= Qt::Key_9 && event->key() >= Qt::Key_0) { if(edit->cursorPosition() == edit->text().count()) { QRegularExpression rx(RX_PATTERN_IP); const QString number = QString::number(event->key() - Qt::Key_0); if(!rx.match(edit->text().append(number)).hasMatch()) { int index = d->editList.indexOf(edit) + 1; if(index < d->editList.count()) { d->editList[index]->setFocus(); if(d->editList[index]->text().isEmpty()) { d->editList[index]->setText(number); d->_q_updateLineEditText(); } } return true; } } } else { if(event->key() == Qt::Key_Backspace) { bool accept = false; for(QLineEdit *edit : d->editList) { if(!edit->selectedText().isEmpty()) { edit->setText(edit->text().remove(edit->selectedText())); d->_q_updateLineEditText(); accept = true; } } if(accept) return true; } if(event->key() == Qt::Key_Left || (event->key() == Qt::Key_Backspace && edit->cursorPosition() == 0)) { setCursorPosition(cursorPosition() - 1); return true; } if(event->key() == Qt::Key_Right) { setCursorPosition(cursorPosition() + 1); return true; } if(event->key() == Qt::Key_Period || event->key() == Qt::Key_Space) { int index = d->editList.indexOf(edit) + 1; if(index < d->editList.count()) { d->editList[index]->setFocus(); } return true; } if(event->modifiers() == Qt::ControlModifier) { if(event->key() == Qt::Key_V) { QString clipboarg_text = qApp->clipboard()->text(); QString text = edit->text().insert(edit->cursorPosition(), clipboarg_text); QRegularExpression rx(RX_PATTERN_IP); if(rx.match(text).hasMatch()) { edit->setText(text); d->_q_updateLineEditText(); } else { int pos = 0; if(this->validator()->validate(clipboarg_text, pos) == QValidator::Acceptable) d->_q_setIpLineEditText(clipboarg_text); } return true; } else if(event->key() == Qt::Key_A) { selectAll(); } else if(event->key() == Qt::Key_X) { cut(); } else { DLineEdit::keyPressEvent(event); } return true; } } } } } else if(e->type() == QEvent::FocusIn) { QLineEdit *edit = qobject_cast(obj); if(edit) { DLineEdit::setCursorPosition(cursorPosition()); } d_func()->setFocus(true); } else if(e->type() == QEvent::FocusOut || e->type() == QEvent::MouseButtonPress) { D_D(DIpv4LineEdit); bool focus = false; for(QLineEdit *edit : d->editList) { edit->setSelection(edit->cursorPosition(), 0); focus = edit->hasFocus() | focus; } if(!focus) d_func()->setFocus(false); } return DLineEdit::eventFilter(obj, e); } DWIDGET_END_NAMESPACE #include "moc_dipv4lineedit.cpp" dtkwidget-2.1.1/src/widgets/dipv4lineedit.h000066400000000000000000000042471352002233700206570ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DIPV4LINEEDIT_H #define DIPV4LINEEDIT_H #include "dlineedit.h" DWIDGET_BEGIN_NAMESPACE class DIpv4LineEditPrivate; class LIBDTKWIDGETSHARED_EXPORT DIpv4LineEdit : public DLineEdit { Q_OBJECT Q_PROPERTY(QString displayText READ displayText) Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition) Q_PROPERTY(Qt::Alignment alignment READ alignment) Q_PROPERTY(QString selectedText READ selectedText) Q_PROPERTY(bool acceptableInput READ hasAcceptableInput) Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) Q_PROPERTY(QString placeholderText READ placeholderText) Q_PROPERTY(bool clearButtonEnabled READ isClearButtonEnabled) public: explicit DIpv4LineEdit(QWidget *parent = 0); QString displayText() const; int cursorPosition() const; Qt::Alignment alignment() const; bool hasAcceptableInput() const; bool isReadOnly() const; public Q_SLOTS: void setCursorPosition(int cursorPosition); void setReadOnly(bool readOnly); void setSelection(int start, int length); void selectAll(); protected: bool eventFilter(QObject *obj, QEvent *e) Q_DECL_OVERRIDE; private: void setPlaceholderText(QString placeholderText); void setClearButtonEnabled(bool clearButtonEnabled); D_DECLARE_PRIVATE(DIpv4LineEdit) Q_PRIVATE_SLOT(d_func(), void _q_updateLineEditText()) Q_PRIVATE_SLOT(d_func(), void _q_setIpLineEditText(const QString &)) }; DWIDGET_END_NAMESPACE #endif // DIPV4LINEEDIT_H dtkwidget-2.1.1/src/widgets/dlabel.cpp000066400000000000000000000042141352002233700176630ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dlabel.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DLabel * \~english \brief The DLabel class is a direct subclass of QLabel, styled by deepin to * provide better style unification. */ /*! * \~chinese \class DLabel * \~chinese \brief DLabel 是 QLabel 的子类,为 deepin 提供更好的的风格统一。 */ /*! * \~english \brief DLabel::DLabel constructs an instance of DLabel. * \~english \param parent is passed to QLabel constructor. * \~english \param f is passed to QLabel constructor. */ /*! * \~chinese \brief DLabel 的构造函数. * \~chinese \param parent * \~chinese \param f */ DLabel::DLabel(QWidget *parent, Qt::WindowFlags f) : QLabel(parent, f) { DThemeManager::registerWidget(this); } /*! * \~english \brief DLabel::DLabel constructs an instance of DLabel. * \~english \param text is used to initialize the content, passed to QLabel constructor. * \~english \param parent is passed to QLabel constructor. * \~english \param f is passed to QLabel constructor. */ /*! * \~chinese \brief DLabel 的重载构造函数 * \~chinese \param text 用于初始化本文内容,传递给 QLabel 构造函数 * \~chinese \param parent 初始化 QLabel 的构造函数 * \~chinese \param f 初始化 QLabel 的构造函数 */ DLabel::DLabel(const QString &text, QWidget *parent, Qt::WindowFlags f) : QLabel(text, parent, f) { DThemeManager::registerWidget(this); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dlabel.h000066400000000000000000000020551352002233700173310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLABEL_H #define DLABEL_H #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DLabel : public QLabel { Q_OBJECT public: DLabel(QWidget * parent = 0, Qt::WindowFlags f = 0); DLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0); }; DWIDGET_END_NAMESPACE #endif // DLABEL_H dtkwidget-2.1.1/src/widgets/dlineedit.cpp000066400000000000000000000216031352002233700204020ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dlineedit.h" #include "dthememanager.h" #include "private/dlineedit_p.h" #include "darrowrectangle.h" #include "dstyleoption.h" #include #include #include #define private public #ifndef slots #define slots Q_SLOTS #endif #include #undef private DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DLineEdit * \~english \brief The DLineEdit class provides a styled QLineEdit. * * \~english DLineEdit has an optional action button (DImageButton) at the right side which can be used * \~english to provide extra user interaction, for example: to change the echo mode of * the line edit. * * \~english Also, DLineEdit can be set on or off alert mode, warning the user of some * errors. */ /*! * \~english \brief DLineEdit::DLineEdit constructs an instance of DLineEdit. * \~english \param parent is passed to QLineEdit constructor. */ /*! * \~chinese \class DLineEdit * \~chinese \brief DLineEdit提供了一个修改过的QLineEdit样式 * * \~chinese DLineEdit右侧提供了可选的动作按钮,可以使用额外的用户交互,例如: 改变密码显示 */ /*! * \~chinese \brief DLineEdit的构造函数 * * \~chinese \param parent 调用QLineEdit的构造函数 */ DLineEdit::DLineEdit(QWidget *parent) : QLineEdit(parent), DObject(*new DLineEditPrivate(this)) { Q_D(DLineEdit); d->init(); } DLineEdit::DLineEdit(DLineEditPrivate &q, QWidget *parent) : QLineEdit(parent), DObject(q) { Q_D(DLineEdit); d->init(); } /*! * \~chinese \brief 设置是否显示警告 * * \~chinese @param isAlert 是否显示警告 */ void DLineEdit::setAlert(bool isAlert) { Q_D(DLineEdit); if (isAlert == d->m_isAlert) { return; } d->m_isAlert = isAlert; update(); Q_EMIT alertChanged(isAlert); } /*! * \~english\property DLineEdit::alert * \~english \brief This property shows whether the line edit is in alert mode or not. * * There'll be a extra frame colored in orage like color showing if the alert * mode is on, to remind the user that the input is wrong. */ /*! * \~chinese \property DLineEdit::alert * \~chinese \brief 该属性会返回当前是否处于警告模式 * * 将会有一个警告的颜色在额外的边框上显示,如果警告模式开启,将会提示用户输入错误 */ /*! * \~chinese \brief 返回当前是否处于警告模式 * * 将会有一个警告的颜色在额外的边框上显示,如果警告模式开启,将会提示用户输入错误 * @return true * @return false */ bool DLineEdit::isAlert() const { D_DC(DLineEdit); return d->m_isAlert; } /*! * \~chinese \brief 设置的文本会在警告模式下显示 * * @param text 警告的文本 * @param duration 显示的时间长度 */ void DLineEdit::showAlertMessage(const QString &text, int duration) { D_D(DLineEdit); if (!d->tooltip) { d->tooltip = new DArrowRectangle(DArrowRectangle::ArrowTop, this); d->tooltip->setObjectName("AlertTooltip"); QLabel *label = new QLabel(d->tooltip); label->setWordWrap(true); label->setMaximumWidth(width()); d->tooltip->setContent(label); d->tooltip->setBackgroundColor(DThemeManager::instance()->theme(this) == "light" ? Qt::white : Qt::black); d->tooltip->setArrowX(15); d->tooltip->setArrowHeight(5); QTimer::singleShot(duration, d->tooltip, [d] { d->tooltip->deleteLater(); d->tooltip = Q_NULLPTR; }); } QLabel *label = qobject_cast(d->tooltip->getContent()); if (!label) { return; } label->setText(text); label->adjustSize(); const QPoint &pos = mapToGlobal(QPoint(15, height())); d->tooltip->show(pos.x(), pos.y()); } /*! * \~chinese \brief 隐藏警告的消息框 * */ void DLineEdit:: hideAlertMessage() { Q_D(DLineEdit); if (d->tooltip) { d->tooltip->hide(); } } /*! * \~chinese \brief 设置图标是否可见 * * @param visible */ void DLineEdit::setIconVisible(bool visible) { Q_D(DLineEdit); if (visible == d->m_rightIcon->isVisible()) { return; } d->m_rightIcon->setVisible(visible); if (visible) { addAction(d->m_iconAction, TrailingPosition); #ifndef Q_OS_WIN QLineEditPrivate *d_d = reinterpret_cast(d_ptr.data()); if (d_d->trailingSideWidgets.size() > 1) { if ((*(d_d->trailingSideWidgets.end() - 1)).action == d->m_iconAction) { d_d->trailingSideWidgets.insert(d_d->trailingSideWidgets.begin(), *d_d->trailingSideWidgets.erase(d_d->trailingSideWidgets.end() - 1)); QResizeEvent resize_event(size(), size()); qApp->sendEvent(this, &resize_event); } } #endif } else { removeAction(d->m_iconAction); } } /*! * \~english \property DLineEdit::iconVisible * \~english \brief This property holds whether the action button can be seen. */ /*! * \~chinese \property DLineEdit::iconVisible * \~chinese 这个属性将会决定动作按钮的图标是否可见 */ bool DLineEdit::iconVisible() const { D_DC(DLineEdit); return d->m_rightIcon->isVisible(); } /*! * \~english \property DLineEdit::normalIcon * \~english \brief This property holds the image used as the normal state of the action button. */ /*! * \~chinese \property DLineEdit::normalIcon * \~chinese 该属性返回normal状态的图标 */ QString DLineEdit::normalIcon() const { D_DC(DLineEdit); return d->m_rightIcon->getNormalPic(); } /*! * \~chinese \brief 设置normal状态的图标 * * @param normalIcon */ void DLineEdit::setNormalIcon(const QString &normalIcon) { Q_D(DLineEdit); d->m_rightIcon->setNormalPic(normalIcon); } /*! * \~english \property DLineEdit::hoverIcon * \~english \brief This property holds the image used as the hover state of the action button. */ /*! * \~chinese \property DLineEdit::hoverIcon * \~chinese 该属性返回鼠标在动作按钮上时,按钮的图标 */ QString DLineEdit::hoverIcon() const { D_DC(DLineEdit); return d->m_rightIcon->getHoverPic(); } /*! * \~chinese \brief 设置鼠标在动作按钮上时,按钮的图标 * * @param hoverIcon 鼠标在动作按钮上时,按钮的图标的路径 */ void DLineEdit::setHoverIcon(const QString &hoverIcon) { Q_D(DLineEdit); d->m_rightIcon->setHoverPic(hoverIcon); } /*! * \~english \property DLineEdit::pressIcon * \~english \brief This property holds the image used as the pressed state of the action button. */ /*! * \~chinese \property DLineEdit::pressIcon * \~chinese 该属性返回鼠标按下时动作按钮的图标 */ QString DLineEdit::pressIcon() const { D_DC(DLineEdit); return d->m_rightIcon->getPressPic(); } /*! * \~chinese \brief 设置鼠标按下时动作按钮的图标 * * @param pressIcon 鼠标按下时动作按钮的图标路径 */ void DLineEdit::setPressIcon(const QString &pressIcon) { Q_D(DLineEdit); d->m_rightIcon->setPressPic(pressIcon); } void DLineEdit::focusInEvent(QFocusEvent *e) { Q_EMIT focusChanged(true); QLineEdit::focusInEvent(e); } void DLineEdit::focusOutEvent(QFocusEvent *e) { Q_EMIT focusChanged(false); QLineEdit::focusOutEvent(e); } void DLineEdit::resizeEvent(QResizeEvent *e) { QLineEdit::resizeEvent(e); Q_EMIT sizeChanged(e->size()); D_D(DLineEdit); d->m_rightIcon->setFixedHeight(e->size().height() - 2); } bool DLineEdit::eventFilter(QObject *watched, QEvent *event) { D_D(DLineEdit); if (watched == d->m_rightIcon) { if (event->type() == QEvent::Move) { d->m_rightIcon->move(width() - d->m_rightIcon->width() - 1, 1); } } return false; } DLineEditPrivate::DLineEditPrivate(DLineEdit *q) : DObjectPrivate(q) { } void DLineEditPrivate::init() { Q_Q(DLineEdit); m_rightIcon = new DImageButton(q); m_rightIcon->setObjectName("IconButton"); m_rightIcon->installEventFilter(q); m_iconAction = new QWidgetAction(q); m_iconAction->setDefaultWidget(m_rightIcon); m_rightIcon->hide(); q->connect(m_rightIcon, &DImageButton::clicked, q, &DLineEdit::iconClicked); } DWIDGET_END_NAMESPACE #include "moc_dlineedit.cpp" dtkwidget-2.1.1/src/widgets/dlineedit.h000066400000000000000000000047751352002233700200620ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLINEEDIT_H #define DLINEEDIT_H #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DLineEditPrivate; class DStyleOptionLineEdit; class LIBDTKWIDGETSHARED_EXPORT DLineEdit : public QLineEdit, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DLineEdit) D_DECLARE_PRIVATE(DLineEdit) Q_PROPERTY(bool alert READ isAlert WRITE setAlert NOTIFY alertChanged) Q_PROPERTY(QString normalIcon READ normalIcon WRITE setNormalIcon DESIGNABLE true) Q_PROPERTY(QString hoverIcon READ hoverIcon WRITE setHoverIcon DESIGNABLE true) Q_PROPERTY(QString pressIcon READ pressIcon WRITE setPressIcon DESIGNABLE true) Q_PROPERTY(bool iconVisible READ iconVisible WRITE setIconVisible) public: DLineEdit(QWidget *parent = 0); void setAlert(bool isAlert); bool isAlert() const; void showAlertMessage(const QString &text, int duration = 3000); void hideAlertMessage(); void setIconVisible(bool visible); bool iconVisible() const; QString normalIcon() const; QString hoverIcon() const; QString pressIcon() const; public Q_SLOTS: void setNormalIcon(const QString &normalIcon); void setHoverIcon(const QString &hoverIcon); void setPressIcon(const QString &pressIcon); Q_SIGNALS: void iconClicked() const; void alertChanged(bool alert) const; void focusChanged(bool onFocus) const; void sizeChanged(const QSize &size) const; protected: DLineEdit(DLineEditPrivate &q, QWidget *parent); void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; bool eventFilter(QObject *watched, QEvent *event) override; friend class DStyleOptionLineEdit; }; DWIDGET_END_NAMESPACE #endif // DLINEEDIT_H dtkwidget-2.1.1/src/widgets/dlinkbutton.cpp000066400000000000000000000030661352002233700210010ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dlinkbutton.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DLinkButton * \~english \brief The DLinkButton class provides a styled QPushButton to mini the style * and behavior of links displayed on the internet. */ /*! * \~english \brief DLinkButton::DLinkButton constructs an instance of DLinkButton. * \~english \param text is passed to QPushButton constructor. * \~english \param parent is passed to QPushButton constructor. */ /*! * \~chinese \class DLinkButton * \~chinese \brief 提供了一个QPushButton的样式,和显示在网页上的链接一样。 */ /*! * \~chinese \brief DLinkButton的构造函数 * * @param text 要显示的文字 * @param parent */ DLinkButton::DLinkButton(const QString &text, QWidget *parent) : QPushButton(text, parent) { DThemeManager::registerWidget(this); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dlinkbutton.h000066400000000000000000000020131352002233700204350ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLINKBUTTON_H #define DLINKBUTTON_H #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DLinkButton : public QPushButton { Q_OBJECT public: DLinkButton(const QString & text = QString(), QWidget * parent = 0); }; DWIDGET_END_NAMESPACE #endif // DLINKBUTTON_H dtkwidget-2.1.1/src/widgets/dlistview.cpp000066400000000000000000000464231352002233700204620ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "dthememanager.h" #include "dboxwidget.h" #include "dlistview.h" #include "private/dlistview_p.h" #include "dflowlayout.h" DWIDGET_BEGIN_NAMESPACE DVariantListModel::DVariantListModel(QObject *parent) : QAbstractListModel(parent) { } int DVariantListModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return dataList.count(); } QVariant DVariantListModel::data(const QModelIndex &index, int role) const { Q_UNUSED(role); return dataList.value(index.row()); } bool DVariantListModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (index.row() >= 0 && index.row() < dataList.size()) { dataList.replace(index.row(), value); Q_EMIT dataChanged(index, index, QVector() << role); return true; } return false; } bool DVariantListModel::insertRows(int row, int count, const QModelIndex &parent) { if (count < 1 || row < 0 || row > rowCount(parent)) return false; beginInsertRows(QModelIndex(), row, row + count - 1); for (int r = 0; r < count; ++r) dataList.insert(row, QVariant()); endInsertRows(); return true; } bool DVariantListModel::removeRows(int row, int count, const QModelIndex &parent) { if (count <= 0 || row < 0 || (row + count) > rowCount(parent)) return false; beginRemoveRows(QModelIndex(), row, row + count - 1); for (int r = 0; r < count; ++r) dataList.removeAt(row); endRemoveRows(); return true; } DListViewPrivate::DListViewPrivate(DListView *qq) : DObjectPrivate(qq) { } DListViewPrivate::~DListViewPrivate() { } void DListViewPrivate::init() { D_Q(DListView); q->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); q->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); } void DListViewPrivate::onOrientationChanged() { D_Q(DListView); bool isVerticalLayout = (q->orientation() == Qt::Vertical); if(headerLayout) { headerLayout->setDirection(isVerticalLayout ? QBoxLayout::TopToBottom : QBoxLayout::LeftToRight); if(isVerticalLayout) { headerLayout->resize(q->width(), headerLayout->sizeHint().height()); } else { headerLayout->resize(headerLayout->sizeHint().width(), q->height()); } headerLayout->layout()->update(); } if(footerLayout) { footerLayout->setDirection(isVerticalLayout ? QBoxLayout::TopToBottom : QBoxLayout::LeftToRight); if(isVerticalLayout) { footerLayout->resize(q->width(), footerLayout->sizeHint().height()); footerLayout->move(0, q->height() - footerLayout->height()); } else { footerLayout->resize(footerLayout->sizeHint().width(), q->height()); footerLayout->move(q->width() - footerLayout->width(), 0); } footerLayout->layout()->update(); } } // ====================Signals begin==================== /** * \~chinese \fn DListView::currentChanged * \~chinese \brief 这个信号当当前item发生改变时被调用 * * \~chinese listview会有一个始终表示当前item索引的 QModelIndex 对象, * \~chinese 当这个 QModelIndex 对象表示的位置发生改变时这个信号才会被调用,而不是当前item的内容发生改变时。 * \~chinese 当鼠标单机某一个item或者使用键盘切换item时, * * \~chinese \param previous 为之前的item的索引对象 * * \~chinese \sa QModelIndex QListView::currentChanged */ /** * \~chinese \fn DListView::triggerEdit * \~chinese \brief 这个信号当有新的item被编辑时被调用 * * \~chinese \param index 为正在编辑的item的索引对象 * * \~chinese \sa QModelIndex QAbstractItemView::EditTrigger */ // ====================Signals end==================== /** * \~chinese \class DListView * \~chinese \brief 一个用于展示一列数据的控件 * * \~chinese DListView 类似与 QListView 属于 Qt's model/view framework 的一个类,常被用来展示一列数据,当数据较多时可以滚动控件以显示跟多内容。 * \~chinese 但与 QListView 也有不同之处,DListView 提供了顶部控件和底部控件,它们始终显示在listview中,不会因为滚动而不可见,另外还提供了方便编辑 * \~chinese 数据的方法,如:addItem , addItems , insertItem , takeItem , removeItem , 以及一些开发中常用的信号。 */ /** * \~chinese \brief 获取一个 DListView 实例 * \~chinese \param parent 被用来作为 DListView 实例的父控件 */ DListView::DListView(QWidget *parent) : QListView(parent), DObject(*new DListViewPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } /** * \~chinese \brief 获取控件当前的状态 * * \~chinese 控件可以有正在被拖拽,正在被编辑,正在播放动画等状态,详细可以查阅:QAbstractItemView::State * * \~chinese \return 控件当前的状态 * * \~chinese \sa QAbstractItemView::State */ QAbstractItemView::State DListView::state() const { return QListView::state(); } void DListView::setFlow(QListView::Flow flow) { QListView::setFlow(flow); } void DListView::setWrapping(bool enable) { QListView::setWrapping(enable); } /*! * \~chinese \brief 获取一个顶部控件 * * \~chinese 顶部控件与item一样都会在listview中被显示出来,而且顶部控件会始终在所有item之上, * \~chinese 也就是说顶部控件与item不同的地方在于顶部控件始终显示在布局中,而不会因为鼠标滚动不可见。 * \~chinese 另外顶部控件可以有多个,它们的布局方式(方向)与item的布局方向相同 * * \~chinese \param index 指定要获取的顶部控件的索引 * \~chinese \return 返回在指定索引处的顶部控件对象 * * \~chinese \note 注意顶部控件并不是像 GridLayout 的表头,表头是始终在水平方向上布局的 * * \~chinese \sa DListView::getFooterWidget DListView::addHeaderWidget DListView::removeHeaderWidget DListView::takeHeaderWidget */ QWidget *DListView::getHeaderWidget(int index) const { return d_func()->headerList.value(index); } /*! * \~chinese \brief 获取一个底部控件 * \~chinese \param index 指定要获取的底部控件的索引 * \~chinese \return 返回在指定索引处的底部控件对象 * \~chinese \sa DListView::getHeaderWidget */ QWidget *DListView::getFooterWidget(int index) const { return d_func()->footerList.value(index); } /*! * \~chinese \brief 判断给定的 QRect 是否与 listview 的item可显示区域有重叠 * * \~chinese listview 的item可显示区域即为 listview 的 viewport , items只能在 viewport 显示,超出这一区域的 item 将不可见。 * * \~chinese \param rect 要对比的 QRect * \~chinese \return 返回两个矩形是否有重叠区域 * \~chinese \sa DListView::isVisualRect */ bool DListView::isActiveRect(const QRect &rect) const { // D_DC(DListView); const QRect &area = viewport()->geometry(); return area.intersects(rect); } /*! * \~chinese \brief 与 DListView::isVisualRect 相同 * \~chinese \sa DListView::isVisualRect */ bool DListView::isVisualRect(const QRect &rect) const { const QRect &area = viewport()->geometry(); return area.intersects(rect); } /** * \~chinese \fn DListView::rowCountChanged * \~chinese \sa DListView::count */ /** * \~chinese \property DListView::count * \~chinese \brief 这个属性保存共有多少行数据 * * \~chinese Getter: DListView::count , Signal: DListView::rowCountChanged */ int DListView::count() const { return model()->rowCount(rootIndex()); } /** * \~chinese \fn DListView::orientationChanged * \~chinese \sa DListView::orientation */ /** * \~chinese \property DListView::orientation * \~chinese \brief 这个属性保存listview中item的布局方式 * * \~chinese Getter: DListView::orientation , Setter: DListView::setOrientation , Signal: DListView::orientationChanged * * \~chinese \sa Qt::Orientation */ Qt::Orientation DListView::orientation() const { bool isVerticalLayout = isWrapping() ? flow() == QListView::LeftToRight : flow() == QListView::TopToBottom; return isVerticalLayout ? Qt::Vertical : Qt::Horizontal; } /*! * \~chinese \brief 设置 DListView 要使用的模型 * * \~chinese 模型用来为 listview 提供数据,以实现数据层与界面层分离的结构, 详细请查阅 Qt's model/view framework * * \~chinese \param model 模型对象 * \~chinese \sa QListView::setModel */ void DListView::setModel(QAbstractItemModel *model) { QAbstractItemModel *old_model = this->model(); if (old_model) { disconnect(old_model, &QAbstractItemModel::rowsInserted, this, &DListView::rowCountChanged); disconnect(old_model, &QAbstractItemModel::rowsRemoved, this, &DListView::rowCountChanged); } QListView::setModel(model); model = this->model(); if (model) { connect(model, &QAbstractItemModel::rowsInserted, this, &DListView::rowCountChanged); connect(model, &QAbstractItemModel::rowsRemoved, this, &DListView::rowCountChanged); } } /*! * \~chinese \brief 在列表底部新增一个item * \~chinese \param data 要新增的数据 * \~chinese \return 返回是否新增成功 */ bool DListView::addItem(const QVariant &data) { return insertItem(count(), data); } /*! * \~chinese \brief 一次性在列表底部新增多个item * \~chinese \param datas 要新增的数据组成的列表 * \~chinese \return 是否新增成功 */ bool DListView::addItems(const QVariantList &datas) { return insertItems(count(), datas); } /*! * \~chinese \brief 在指定行处新增一个item * \~chinese \param index 要增加item的行号 * \~chinese \param data 要增加的item的数据 * \~chinese \return 是否新增成功 */ bool DListView::insertItem(int index, const QVariant &data) { if(!model()->insertRow(index)) return false; return model()->setData(model()->index(index, 0, rootIndex()), data); } /*! * \~chinese \brief 在指定行处新增多个item * \~chinese \param index 要增加item的行号 * \~chinese \param datas 要增加的items的数据组成的列表 * \~chinese \return 是否新增成功 */ bool DListView::insertItems(int index, const QVariantList &datas) { if(!model()->insertRows(index, datas.count())) return false; for(int i = 0; i < datas.count(); ++i) model()->setData(model()->index(index + i, 0, rootIndex()), datas.at(i)); return true; } /*! * \~chinese \brief 移除指定位置的item * \~chinese \param index 要移除的item的行号 * \~chinese \return 是否移除成功 */ bool DListView::removeItem(int index) { return model()->removeRow(index); } /*! * \~chinese \brief 一次移除多个item * \~chinese \param index 开始移除item的行号 * \~chinese \param count 移除从 index 指定的行号开始,移除 count 个item * \~chinese \return 返回是否移除成功 */ bool DListView::removeItems(int index, int count) { return model()->removeRows(index, count); } /*! * \~chinese \sa DListView::getHeaderWidget */ int DListView::addHeaderWidget(QWidget *widget) { D_D(DListView); int index = d->headerList.indexOf(widget); if(index >= 0) return index; if(!d->headerLayout) { bool isVerticalLayout = (orientation() == Qt::Vertical); d->headerLayout = new DBoxWidget(isVerticalLayout ? QBoxLayout::TopToBottom : QBoxLayout::LeftToRight, this); if(isVerticalLayout) d->headerLayout->resize(width(), d->headerLayout->height()); else d->headerLayout->resize(d->headerLayout->width(), height()); connect(d->headerLayout, &DBoxWidget::sizeChanged, this, [this](const QSize &size) { bool isVerticalLayout = (orientation() == Qt::Vertical); QMargins margins = this->viewportMargins(); if(isVerticalLayout) margins.setTop(size.height()); else margins.setLeft(size.width()); setViewportMargins(margins); }); d->headerLayout->show(); } d->headerLayout->addWidget(widget); d->headerList << widget; return d->headerList.count() - 1; } /*! * \~chinese \sa DListView::getHeaderWidget */ void DListView::removeHeaderWidget(int index) { QWidget *widget = takeHeaderWidget(index); if(widget) widget->deleteLater(); } /*! * \brief 与 DListView::getHeaderWidget 类似,但返回要移除的顶部控件的对象 * \~chinese \sa DListView::getHeaderWidget */ QWidget *DListView::takeHeaderWidget(int index) { D_D(DListView); QWidget *widget = d->headerList.takeAt(index); d->headerLayout->layout()->removeWidget(widget); if(d->headerList.isEmpty()) { d->headerLayout->deleteLater(); d->headerLayout = nullptr; } return widget; } /*! * \~chinese \sa DListView::getFooterWidget */ int DListView::addFooterWidget(QWidget *widget) { D_D(DListView); int index = d->footerList.indexOf(widget); if(index >= 0) return index; if(!d->footerLayout) { bool isVerticalLayout = (orientation() == Qt::Vertical); d->footerLayout = new DBoxWidget(isVerticalLayout ? QBoxLayout::TopToBottom : QBoxLayout::LeftToRight, this); if(isVerticalLayout) d->footerLayout->resize(width(), d->footerLayout->height()); else d->footerLayout->resize(d->footerLayout->width(), height()); connect(d->footerLayout, &DBoxWidget::sizeChanged, this, [this](const QSize &size) { bool isVerticalLayout = (orientation() == Qt::Vertical); QMargins margins = this->viewportMargins(); D_D(DListView); if(isVerticalLayout) { margins.setBottom(size.height()); d->footerLayout->move(0, height() - d->footerLayout->height()); } else { margins.setRight(size.width()); d->footerLayout->move(width() - d->footerLayout->width(), 0); } setViewportMargins(margins); }); d->footerLayout->show(); } d->footerLayout->addWidget(widget); d->footerList << widget; return d->footerList.count() - 1; } /*! * \~chinese \sa DListView::getFooterWidget */ void DListView::removeFooterWidget(int index) { QWidget *widget = takeFooterWidget(index); if(widget) widget->deleteLater(); } /*! * \~chinese \sa DListView::getFooterWidget DListView::takeHeaderWidget */ QWidget *DListView::takeFooterWidget(int index) { D_D(DListView); QWidget *widget = d->footerList.takeAt(index); d->footerLayout->layout()->removeWidget(widget); if(d->footerList.isEmpty()) { d->footerLayout->deleteLater(); d->footerLayout = nullptr; } return widget; } /** * \~chinese \sa DListView::orientation */ void DListView::setOrientation(QListView::Flow flow, bool wrapping) { Qt::Orientation old_orientation = this->orientation(); setFlow(flow); setWrapping(wrapping); Qt::Orientation orientation = this->orientation(); if(old_orientation != orientation) { D_D(DListView); QMargins margins = viewportMargins(); if(old_orientation == Qt::Vertical) { if(d->headerLayout) margins.setTop(0); if(d->footerLayout) margins.setBottom(0); } else { if(d->headerLayout) margins.setLeft(0); if(d->footerLayout) margins.setRight(0); } setViewportMargins(margins); d->onOrientationChanged(); Q_EMIT orientationChanged(orientation); } } /*! * \brief 开始编辑一个item * \param index 指定要编辑的item的位置 */ void DListView::edit(const QModelIndex &index) { QListView::edit(index); } #if(QT_VERSION < 0x050500) void DListView::setViewportMargins(int left, int top, int right, int bottom) { D_D(DListView); d->left = left; d->top = top; d->right = right; d->bottom = bottom; QListView::setViewportMargins(left, top, right, bottom); } void DListView::setViewportMargins(const QMargins &margins) { setViewportMargins(margins.left(), margins.top(), margins.right(), margins.bottom()); } QMargins DListView::viewportMargins() const { D_DC(DListView); return QMargins(d->left, d->top, d->right, d->bottom); } #endif void DListView::resizeEvent(QResizeEvent *event) { QListView::resizeEvent(event); D_D(DListView); bool isVerticalLayout = (orientation() == Qt::Vertical); if(d->headerLayout) { if(isVerticalLayout) d->headerLayout->resize(width(), d->headerLayout->height()); else d->headerLayout->resize(d->headerLayout->width(), height()); } if(d->footerLayout) { if(isVerticalLayout) { d->footerLayout->resize(width(), d->footerLayout->height()); d->footerLayout->move(0, height() - d->footerLayout->height()); } else { d->footerLayout->resize(d->footerLayout->width(), height()); d->footerLayout->move(width() - d->footerLayout->width(), 0); } } } void DListView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { QListView::currentChanged(current, previous); Q_EMIT currentChanged(previous); } bool DListView::edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event) { if (QWidget *w = indexWidget(index)) { Qt::ItemFlags flags = model()->flags(index); if (((flags & Qt::ItemIsEditable) == 0) || ((flags & Qt::ItemIsEnabled) == 0)) return false; if (state() == QAbstractItemView::EditingState) return false; if (trigger == QAbstractItemView::AllEditTriggers) // force editing return true; if ((trigger & editTriggers()) == QAbstractItemView::SelectedClicked && !selectionModel()->isSelected(index)) return false; if(trigger & editTriggers()) { w->setFocus(); Q_EMIT triggerEdit(index); return true; } } bool tmp = QListView::edit(index, trigger, event); if(tmp) Q_EMIT triggerEdit(index); return tmp; } DWIDGET_END_NAMESPACE #include "moc_dlistview.cpp" dtkwidget-2.1.1/src/widgets/dlistview.h000066400000000000000000000073271352002233700201270ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLISTVIEW_H #define DLISTVIEW_H #include "dtkwidget_global.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DVariantListModel : public QAbstractListModel { public: explicit DVariantListModel(QObject *parent = 0); int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; bool setData(const QModelIndex &index, const QVariant &value, int role) Q_DECL_OVERRIDE; bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE; private: QList dataList; }; class DListViewPrivate; class LIBDTKWIDGETSHARED_EXPORT DListView : public QListView, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT /// item count. Q_PROPERTY(int count READ count NOTIFY rowCountChanged) /// list layout orientation Q_PROPERTY(Qt::Orientation orientation READ orientation NOTIFY orientationChanged) public: explicit DListView(QWidget *parent = 0); State state() const; QWidget *getHeaderWidget(int index) const; QWidget *getFooterWidget(int index) const; /// return true if rect intersects contentsVisualRect+qMax(cacheBuffer,cacheCount) bool isActiveRect(const QRect &rect) const; bool isVisualRect(const QRect &rect) const; int count() const; Qt::Orientation orientation() const; void setModel(QAbstractItemModel *model) Q_DECL_OVERRIDE; public Q_SLOTS: bool addItem(const QVariant &data); bool addItems(const QVariantList &datas); bool insertItem(int index, const QVariant &data); bool insertItems(int index, const QVariantList &datas); bool removeItem(int index); bool removeItems(int index, int count); int addHeaderWidget(QWidget *widget); void removeHeaderWidget(int index); QWidget *takeHeaderWidget(int index); int addFooterWidget(QWidget *widget); void removeFooterWidget(int index); QWidget *takeFooterWidget(int index); void setOrientation(QListView::Flow flow, bool wrapping); void edit(const QModelIndex &index); Q_SIGNALS: void rowCountChanged(); void orientationChanged(Qt::Orientation orientation); void currentChanged(const QModelIndex &previous); void triggerEdit(const QModelIndex &index); protected: #if(QT_VERSION < 0x050500) void setViewportMargins(int left, int top, int right, int bottom); void setViewportMargins(const QMargins &margins); QMargins viewportMargins() const; #endif void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) Q_DECL_OVERRIDE; bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event) Q_DECL_OVERRIDE; private: void setFlow(QListView::Flow flow); void setWrapping(bool enable); D_DECLARE_PRIVATE(DListView) }; DWIDGET_END_NAMESPACE #endif // DLISTVIEW_H dtkwidget-2.1.1/src/widgets/dlistwidget.cpp000066400000000000000000000524621352002233700207730ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include "dthememanager.h" #include "dlistwidget.h" #include "private/dlistwidget_p.h" DWIDGET_BEGIN_NAMESPACE DListWidgetPrivate::DListWidgetPrivate(DListWidget *qq): DScrollAreaPrivate(qq), itemWidth(-1), itemHeight(-1), checkMode(DListWidget::Radio), mainWidget(new DBoxWidget(QBoxLayout::TopToBottom)), visibleCount(0), checkable(false), toggleable(false), enableHorizontalScroll(false), enableVerticalScroll(false) { } DListWidgetPrivate::~DListWidgetPrivate() { } void DListWidgetPrivate::init() { Q_Q(DListWidget); mainWidget->setObjectName("MainWidget"); q->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); q->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); q->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); q->setAlignment(Qt::AlignHCenter); q->setFrameStyle(QFrame::NoFrame); q->setFrameShape(QFrame::NoFrame); q->setWidget(mainWidget); QObject::connect(mainWidget, &DBoxWidget::sizeChanged, q, &DListWidget::updateSize); } /** * \~chinese \class DListWidget * \~chinese \brief 基于widget的列表控件。 * \~chinese DListWidget是一个自定义的列表控件,与QListWidget相比它虽然也是基于item的一个列表控件但却更灵活,因为它可以设置任意QWidget类型的对象作为自己的item,同时提供了各种新增,插入,移除item的方法以及信号,另外还支持设置选择模式为单选或多选。 */ /** * \~chinese \enum DListWidget::CheckMode * \~chinese \brief 定义了列表的选择模式。 * \~chinese 其定义了以下两种模式: * \~chinese \var DListWidget::CheckMode DListWidget::Radio * \~chinese 单选模式。 * \~chinese \var DListWidget::CheckMode DListWidget::MultipleCheck * \~chinese 多选模式。 */ /** * \~chinese \fn DListWidget::checkedChanged * \~chinese \brief 某一项的选择状态发生了改变。 * \~chinese \param index 发生改变的项的位置。 * \~chinese \param checked 当前是否被选择。 */ /** * \~chinese \brief 获取一个 DListWidget 实例 * * \~chinese \param checkMode 指定列表控件的选择模式,默认为 DListWidget::CheckMode::Radio 。 * \~chinese \param parent 指定列表控件的父控件。 */ DListWidget::DListWidget(CheckMode checkMode, QWidget *parent) : DScrollArea(*new DListWidgetPrivate(this), parent) { DThemeManager::registerWidget(this); d_func()->checkMode = checkMode; d_func()->init(); } /** * \~chinese \brief 获取一个 DListWidget 实例 * * \~chinese \param direction 指定列表控件的内容布局方向。 * \~chinese \param checkMode 指定列表控件的选择模式,默认为 DListWidget::CheckMode::Radio 。 * \~chinese \param parent 指定列表控件的父控件。 */ DListWidget::DListWidget(QBoxLayout::Direction direction, DListWidget::CheckMode checkMode, QWidget *parent) : DScrollArea(*new DListWidgetPrivate(this), parent) { DThemeManager::registerWidget(this); d_func()->mainWidget->setDirection(direction); d_func()->checkMode = checkMode; d_func()->init(); } /** * \~chinese \brief 新增一个列表项。 * \~chinese * \~chinese \param w 要新增的列表项对象。 * \~chinese \param a 为要新增的列表项对象指定对齐方式, 默认为 Qt::AlignHCenter 。 * \~chinese * \~chinese \return 返回新增的列表项在整个列表中的位置。 */ int DListWidget::addWidget(QWidget *w, Qt::Alignment a) { insertWidget(-1, w, a); return count()-1; } /** * \~chinese \brief 一次新增多个列表项。 * \~chinese * \~chinese \param ws 要新增的多个列表项组成的QList。 * \~chinese \param a 为要新增的多个列表项对象指定对齐方式, 默认为 Qt::AlignHCenter 。 */ void DListWidget::addWidgets(const QList &ws, Qt::Alignment a) { insertWidgets(-1, ws, a); } /** * \~chinese \brief 在指定位置插入一个列表项。 * \~chinese * \~chinese \param index 要插入列表项的位置。 * \~chinese \param w 要插入的列表项对象。 * \~chinese \param a 为要插入的列表项对象指定对齐方式, 默认为 Qt::AlignHCenter 。 */ void DListWidget::insertWidget(int index, QWidget *w, Qt::Alignment a) { Q_D(DListWidget); if(w==NULL || d->widgetList.contains(w)) return; if(d->itemWidth>0){ w->setFixedWidth(d->itemWidth); } if(d->itemHeight>0){ w->setFixedHeight(d->itemHeight); } if(index < 0) { d->widgetList << w; d->mainWidget->layout()->addWidget(w, 0, a); } else { d->widgetList.insert(index, w); d->mainWidget->layout()->insertWidget(index, w, 0, a); } d->mapVisible[w] = true; setVisibleCount(d->visibleCount + 1); Q_EMIT countChanged(count()); } /** * \~chinese \brief 一次在指定位置插入多个列表项。 * \~chinese * \~chinese \param index 要插入列表项的位置。 * \~chinese \param w 要插入的多个列表项对象组成的QList。 * \~chinese \param a 为要插入的列表项对象指定对齐方式, 默认为 Qt::AlignHCenter 。 */ void DListWidget::insertWidgets(int index, const QList &ws, Qt::Alignment a) { if(index < 0) { Q_FOREACH (QWidget *w, ws) { insertWidget(-1, w, a); } } else { Q_FOREACH (QWidget *w, ws) { insertWidget(index++, w, a); } } } /** * \~chinese \brief 设置每一个列表项的宽高。 * \~chinese * \~chinese \param w 指定宽度。 * \~chinese \param h 指定高度。 */ void DListWidget::setItemSize(int w, int h) { Q_D(DListWidget); d->itemWidth = w; d->itemHeight = h; if(d->itemWidth <= 0 && d->itemHeight <= 0) return; Q_FOREACH (QWidget *w, d->widgetList) { if(d->itemWidth>0) w->setFixedWidth(d->itemWidth); if(d->itemHeight>0){ w->setFixedHeight(d->itemHeight); } } } /** * \~chinese \brief 清空当前列表中的所有列表项。 * \~chinese * \~chinese \param isDelete 是否释放列表项对象占用的内存空间。 */ void DListWidget::clear(bool isDelete) { Q_D(DListWidget); for(int i=0;imainWidget->layout()->takeAt(i); d->widgetList[i]->setParent(NULL); if(isDelete) d->widgetList[i]->deleteLater(); } d->mapVisible.clear(); d->widgetList.clear(); d->checkedList.clear(); resize(0, 0); setVisibleCount(0); Q_EMIT countChanged(count()); } /** * \~chinese \brief 移除指定位置的列表项。 * \~chinese * \~chinese \param index 指定的位置。 * \~chinese \param isDelete 是否释放被移除对象占用的内存空间。 */ void DListWidget::removeWidget(int index, bool isDelete) { Q_D(DListWidget); QWidget *w = getWidget(index); d->widgetList.removeAt(index); delete d->mainWidget->layout()->takeAt(index); d->checkedList.removeOne(index); if(d->mapVisible.value(w, false)){ setVisibleCount(d->visibleCount -1); } d->mapVisible.remove(w); w->setParent(NULL); if(isDelete) w->deleteLater(); Q_EMIT countChanged(count()); } /** * \~chinese \brief 显示指定位置的列表项。 * \~chinese * \~chinese \param index 指定的位置。 */ void DListWidget::showWidget(int index) { Q_D(DListWidget); QWidget *w = getWidget(index); if(!d->mapVisible.value(w, true)){ w->show(); d->mapVisible[w] = true; setVisibleCount(d->visibleCount+1); } } /** * \~chinese \brief 隐藏指定位置的列表项。 * \~chinese * \~chinese \param index 指定的位置。 */ void DListWidget::hideWidget(int index) { Q_D(DListWidget); QWidget *w = getWidget(index); if(d->mapVisible.value(w, false)){ w->hide(); d->mapVisible[w] = false; setVisibleCount(d->visibleCount-1); } } /** * \~chinese \brief 设置指定位置的列表项的选择状态。 * \~chinese * \~chinese \param index 指定的位置。 * \~chinese \param checked 为 true 则设置指定的项为被选择状态,反之则反。 */ void DListWidget::setChecked(int index, bool checked) { Q_D(DListWidget); if (!d->checkable || (checked && isChecked(index)) || (!checked && !isChecked(index))) return; if(d->checkMode == Radio && checked){ int checkedWidget = firstChecked(); if(checkedWidget>=0){ getWidget(checkedWidget)->setProperty("checked", false); d->checkedList.removeOne(checkedWidget); } } if(index>=0 && index < count()){ QWidget *w = getWidget(index); w->setProperty("checked", checked); } if(checked){ d->checkedList << index; }else{ d->checkedList.removeOne(index); } if(d->checkMode == Radio && checked){ Q_EMIT firstCheckedChanged(index); } Q_EMIT checkedChanged(index, checked); } /** * \~chinese \sa DListWidget::checkMode */ void DListWidget::setCheckMode(DListWidget::CheckMode checkMode) { Q_D(DListWidget); d->checkMode = checkMode; } /** * \~chinese \sa DListWidget::checkable */ void DListWidget::setCheckable(bool checkable) { Q_D(DListWidget); if (d->checkable == checkable) return; d->checkable = checkable; } /** * \~chinese \sa DListWidget::toggleable */ void DListWidget::setToggleable(bool enableUncheck) { Q_D(DListWidget); if (d->toggleable == enableUncheck) return; d->toggleable = enableUncheck; Q_EMIT toggleableChanged(enableUncheck); } /** * \~chinese \sa DListWidget::enableHorizontalScroll */ void DListWidget::setEnableHorizontalScroll(bool enableHorizontalScroll) { Q_D(DListWidget); if (d->enableHorizontalScroll == enableHorizontalScroll) return; d->enableHorizontalScroll = enableHorizontalScroll; updateSize(); Q_EMIT enableHorizontalScrollChanged(enableHorizontalScroll); } /** * \~chinese \brief 设置是否允许垂直方向滚动。 * \~chinese * \~chinese \param enableVerticalScroll 为 true 即为允许,反之则反。 */ void DListWidget::setEnableVerticalScroll(bool enableVerticalScroll) { Q_D(DListWidget); if (d->enableVerticalScroll == enableVerticalScroll) return; d->enableVerticalScroll = enableVerticalScroll; updateSize(); Q_EMIT enableVerticalScrollChanged(enableVerticalScroll); } /** * \~chinese \sa DListWidget::spacing */ void DListWidget::setSpacing(int spacing) { Q_D(DListWidget); d->mainWidget->layout()->setSpacing(spacing); } /** * \~chinese \sa DListWidget::direction */ void DListWidget::setDirection(QBoxLayout::Direction direction) { Q_D(DListWidget); d->mainWidget->layout()->setDirection(direction); } /** * \~chinese \fn DListWidget::countChanged * \~chinese \brief 当列表项数量发生改变时被调用。 * \~chinese \param count 当前列表项的数量。 * \~chinese \sa DListWidget::count */ /** * \~chinese \property DListWidget::count * \~chinese \brief 所有列表项数量。 * \~chinese Getter: DListWidget::count , Signal: DListWidget::countChanged */ int DListWidget::count() const { Q_D(const DListWidget); return d->widgetList.count(); } /** * \~chinese \brief 获取指定列表项对象所在的位置。 * \~chinese * \~chinese \param w 指定的列表项对象。 * \~chinese * \~chinese \return 指定对象的位置。 */ int DListWidget::indexOf(const QWidget* w) { Q_D(DListWidget); return d->widgetList.indexOf(const_cast(w)); } /** * \~chinese \brief 获取指定位置的列表项对象。 * \~chinese * \~chinese \param index 指定的位置。 * \~chinese * \~chinese \return 指定位置处的列表项对象。 */ QWidget *DListWidget::getWidget(int index) const { Q_D(const DListWidget); return d->widgetList[index]; } /** * \~chinese \fn DListWidget::firstCheckedChanged * \~chinese \brief 第一个被选择的列表项的位置改变时被调用。 * \~chinese \param index 当前第一个被选择的列表项的位置。 * \~chinese \sa DListWidget::firstChecked */ /** * \~chinese \property DListWidget::firstChecked * \~chinese \brief 第一个被选择的列表项的位置。 * * \~chinese Getter: DListWidget::firstChecked , Signal: DListWidget::firstCheckedChanged */ int DListWidget::firstChecked() const { Q_D(const DListWidget); return d->checkedList.count()>0 ? d->checkedList.first() : -1; } /** * \~chinese \brief 获取所有被选择项的位置组成的列表。 * \~chinese * \~chinese \return 所有被选择项的位置组成的列表。 */ QList DListWidget::checkedList() const { Q_D(const DListWidget); return d->checkedList; } /** * \~chinese \fn DListWidget::checkableChanged * \~chinese \sa DListWidget::checkable */ /** * \~chinese \property DListWidget::checkable * \~chinese \brief 这个属性表示列表控件中的项是否可以被选择。 * \~chinese Getter: DListWidget::checkable, Setter: DListWidget::setCheckable , Signal: DListWidget::checkableChanged */ bool DListWidget::checkable() const { Q_D(const DListWidget); return d->checkable; } /** * \~chinese \fn DListWidget::toggleableChanged * \~chinese \sa DListWidget::toggleable */ /** * \~chinese \property DListWidget::toggleable * \~chinese \brief 这个属性表示列表控件的所有项的选择状态是否可以切换。 * \~chinese 当设置为 true 时,鼠标点击某一个列表项,会根据当前的列表项的选择状态切换,如果当前是已选择状态则点击后切换到未选择状态,反之则反,此选项默认为 false 。 * \~chinese Getter: DListWidget::toggleable , Setter: DListWidget::setToggleable , Signal: DListWidget::toggleableChanged */ bool DListWidget::toggleable() const { Q_D(const DListWidget); return d->toggleable; } bool DListWidget::isChecked(int index) const { Q_D(const DListWidget); return d->checkedList.contains(index); } /** * \~chinese \fn DListWidget::visibleCountChanged * \~chinese \brief 当前列表中正在显示的所有列表项的数量发生改变时被调用。 * \~chinese \param visibleCount 当前列表中正在显示的所有列表项的数量。 * \~chinese \sa DListWidget::visibleCount */ /** * \~chinese \property DListWidget::visibleCount * \~chinese \brief 当前列表中正在显示的所有列表项的数量。 * \~chinese Getter: DListWidget::visibleCount ,Signal: DListWidget::visibleCountChanged */ int DListWidget::visibleCount() const { Q_D(const DListWidget); return d->visibleCount; } /** * \~chinese \property DListWidget::spacing * \~chinese \brief 这个属性是列表项之间的间隔大小。 * \~chinese 使用 DListWidget::setSpacing 设置这个属性。 */ int DListWidget::spacing() const { Q_D(const DListWidget); return d->mainWidget->layout()->spacing(); } /** * \~chinese \property DListWidget::direction * \~chinese \brief 这个属性是列表项布局的方向。 * \~chinese 使用 DListWidget::setDirection 设置这个属性。 */ QBoxLayout::Direction DListWidget::direction() const { Q_D(const DListWidget); return d->mainWidget->direction(); } /** * \~chinese \property DListWidget::checkMode * \~chinese \brief 这个属性表示列表控件的选择模式。 * \~chinese 当属性的值为 DListWidget::CheckMode::Radio 时,列表为单选模式,为 DListWidget::CheckMode::MultipleCheck 时列表为多选模式。 * \~chinese Getter: DListWidget::checkMode , Setter: DListWidget::setCheckMode */ DListWidget::CheckMode DListWidget::checkMode() const { Q_D(const DListWidget); return d->checkMode; } void DListWidget::mouseReleaseEvent(QMouseEvent *e) { if(!checkable()){ return DScrollArea::mouseReleaseEvent(e); } Q_D(DListWidget); QWidget *widget = childAt(e->pos()); while(widget && widget->parentWidget() != d->mainWidget) { widget = widget->parentWidget(); } int index = indexOf(widget); if(index>=0){ if(toggleable()) setChecked(index, !isChecked(index)); else setChecked(index, true); Q_EMIT clicked(index); } } void DListWidget::setVisibleCount(int count) { Q_D(DListWidget); if(d->visibleCount == count) return; d->visibleCount = count; Q_EMIT visibleCountChanged(count); } void DListWidget::updateSize() { Q_D(DListWidget); if(!d->enableHorizontalScroll) { if(direction() == QBoxLayout::LeftToRight || direction() == QBoxLayout::RightToLeft) setFixedWidth(d->mainWidget->width()); else setMinimumWidth(d->mainWidget->width()); } else { setMinimumWidth(qMin(d->mainWidget->width(), maximumWidth())); } if(!d->enableVerticalScroll) { if(direction() == QBoxLayout::TopToBottom || direction() == QBoxLayout::BottomToTop) setFixedHeight(d->mainWidget->height()); else setMinimumHeight(d->mainWidget->height()); } else { setMinimumHeight(qMin(d->mainWidget->height(), maximumHeight())); } } /** * \~chinese \brief 获取所有列表项对象。 * \~chinese * \~chinese \return 所有列表项对象组成的列表。 */ QList DListWidget::widgetList() const { Q_D(const DListWidget); return d->widgetList; } /** * \~chinese \brief 获取列表项的宽高。 * \~chinese * \~chinese \return 列表项的宽高。 */ QSize DListWidget::itemSize() const { Q_D(const DListWidget); return QSize(d->itemWidth, d->itemHeight); } /** * \~chinese \fn DListWidget::enableHorizontalScrollChanged * \~chinese \sa DListWidget::enableHorizontalScroll */ /** * \~chinese \property DListWidget::enableHorizontalScroll * \~chinese \brief 这个属性表示列表控件是否允许水平滚动。 * \~chinese Getter: DListWidget::enableHorizontalScroll , Setter:DListWidget::setEnableHorizontalScroll , Signal: DListWidget::enableHorizontalScrollChanged */ bool DListWidget::enableHorizontalScroll() const { Q_D(const DListWidget); return d->enableHorizontalScroll; } /** * \~chinese \fn DListWidget::enableVerticalScrollChanged * \~chinese \sa DListWidget::enableVerticalScroll */ /** * \~chinese \property DListWidget::enableVerticalScroll * \~chinese \brief 这个属性表示列表控件是否允许垂直滚动。 * \~chinese Getter: DListWidget::enableVerticalScroll , Setter:DListWidget::setEnableVerticalScroll , Signal: DListWidget::enableVerticalScrollChanged */ bool DListWidget::enableVerticalScroll() const { Q_D(const DListWidget); return d->enableVerticalScroll; } /** * \~chinese \brief 设置列表的内容与边框之间的间隔。 * \~chinese * \~chinese \param left 左边距。 * \~chinese \param top 上边距。 * \~chinese \param right 右边距。 * \~chinese \param bottom 下边距。 */ void DListWidget::setContentsMargins(int left, int top, int right, int bottom) { Q_D(DListWidget); d->mainWidget->layout()->setContentsMargins(left, top, right, bottom); } /** * \~chinese \brief 这是一个重载函数,设置列表的内容与边框之间的间隔。 * \~chinese * \~chinese \param margins 指定左上右下边距。 */ void DListWidget::setContentsMargins(const QMargins &margins) { Q_D(DListWidget); d->mainWidget->layout()->setContentsMargins(margins); } /** * \~chinese \brief 获取列表的内容与边框之间的间隔。 * \~chinese * \~chinese \param left 用于保存左边距的指针。 * \~chinese \param top 用于保存上边距的指针。 * \~chinese \param right 用于保存右边距的指针。 * \~chinese \param bottom 用于保存下边距的指针。 */ void DListWidget::getContentsMargins(int *left, int *top, int *right, int *bottom) const { Q_D(const DListWidget); d->mainWidget->layout()->getContentsMargins(left, top, right, bottom); } /** * \~chinese \brief 获取列表的内容与边框之间的间隔。 * \~chinese * \~chinese \return 列表的内容与边框之间的间隔。 */ QMargins DListWidget::contentsMargins() const { Q_D(const DListWidget); return d->mainWidget->layout()->contentsMargins(); } /** * \~chinese \brief 获取列表所有内容的大小。 * \~chinese * \~chinese \return 列表所有内容的大小。 */ QRect DListWidget::contentsRect() const { Q_D(const DListWidget); return d->mainWidget->layout()->contentsRect(); } QSize DListWidget::sizeHint() const { return minimumSize(); } DListWidget::DListWidget(DListWidgetPrivate &dd, QWidget *parent): DScrollArea(dd, parent) { DThemeManager::registerWidget(this); d_func()->init(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dlistwidget.h000066400000000000000000000110511352002233700204250ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLISTWIDGET_H #define DLISTWIDGET_H #include #include #include "dscrollarea.h" #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DListWidgetPrivate; class DListWidget : public DScrollArea { Q_OBJECT Q_PROPERTY(int firstChecked READ firstChecked NOTIFY firstCheckedChanged) Q_PROPERTY(int count READ count NOTIFY countChanged FINAL) Q_PROPERTY(int visibleCount READ visibleCount NOTIFY visibleCountChanged FINAL) Q_PROPERTY(int spacing READ spacing WRITE setSpacing) Q_PROPERTY(QBoxLayout::Direction direction READ direction WRITE setDirection) Q_PROPERTY(bool checkable READ checkable WRITE setCheckable) Q_PROPERTY(bool toggleable READ toggleable WRITE setToggleable NOTIFY toggleableChanged) Q_PROPERTY(bool enableHorizontalScroll READ enableHorizontalScroll WRITE setEnableHorizontalScroll NOTIFY enableHorizontalScrollChanged) Q_PROPERTY(bool enableVerticalScroll READ enableVerticalScroll WRITE setEnableVerticalScroll NOTIFY enableVerticalScrollChanged) Q_PROPERTY(CheckMode checkMode READ checkMode) Q_ENUMS(CheckMode) public: enum CheckMode{ Radio, MultipleCheck }; explicit DListWidget(CheckMode checkMode = Radio, QWidget *parent = 0); explicit DListWidget(QBoxLayout::Direction direction, CheckMode checkMode = Radio, QWidget *parent = 0); public Q_SLOTS: int addWidget(QWidget *w, Qt::Alignment a = Qt::AlignHCenter); void addWidgets(const QList &ws, Qt::Alignment a = Qt::AlignHCenter); void insertWidget(int index, QWidget *w, Qt::Alignment a = Qt::AlignHCenter); void insertWidgets(int index, const QList &ws, Qt::Alignment a = Qt::AlignHCenter); void setItemSize(int w, int h); void clear(bool isDelete = true); void removeWidget(int index, bool isDelete = true); void showWidget(int index); void hideWidget(int index); void setChecked(int index, bool checked); void setCheckMode(CheckMode checkMode); void setCheckable(bool checkable); void setToggleable(bool toggleable); void setEnableHorizontalScroll(bool enableHorizontalScroll); void setEnableVerticalScroll(bool enableVerticalScroll); void setSpacing(int spacing); void setDirection(QBoxLayout::Direction direction); public: int count() const; int indexOf(const QWidget* widget); QWidget *getWidget(int index) const; int firstChecked() const; QList checkedList() const; bool checkable() const; bool toggleable() const; bool isChecked(int index) const; int visibleCount() const; int spacing() const; QBoxLayout::Direction direction() const; CheckMode checkMode() const; QList widgetList() const; QSize itemSize() const; bool enableHorizontalScroll() const; bool enableVerticalScroll() const; void setContentsMargins(int left, int top, int right, int bottom); void setContentsMargins(const QMargins &margins); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QMargins contentsMargins() const; QRect contentsRect() const; QSize sizeHint() const Q_DECL_OVERRIDE; Q_SIGNALS: void firstCheckedChanged(int index); void checkedChanged(int index, bool checked); void countChanged(int count); void checkableChanged(bool checkable); void toggleableChanged(bool toggleable); void visibleCountChanged(int visibleCount); void clicked(int index); void enableHorizontalScrollChanged(bool enableHorizontalScroll); void enableVerticalScrollChanged(bool enableVerticalScroll); private Q_SLOTS: void updateSize(); protected: DListWidget(DListWidgetPrivate &dd, QWidget *parent); void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; void setVisibleCount(int count); private: Q_DISABLE_COPY(DListWidget) D_DECLARE_PRIVATE(DListWidget) }; DWIDGET_END_NAMESPACE #endif // DLISTWIDGET_H dtkwidget-2.1.1/src/widgets/dloadingindicator.cpp000066400000000000000000000341771352002233700221310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "dloadingindicator.h" #include "private/dloadingindicator_p.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE DLoadingIndicatorPrivate::DLoadingIndicatorPrivate(DLoadingIndicator *qq) : DObjectPrivate(qq) { } void DLoadingIndicatorPrivate::init() { D_Q(DLoadingIndicator); q->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); q->setScene(new QGraphicsScene(q)); q->setRenderHint(QPainter::SmoothPixmapTransform); q->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate); rotateAni.setDuration(1000); rotateAni.setEasingCurve(QEasingCurve::OutInQuad); rotateAni.setLoopCount(-1); rotateAni.setStartValue(QVariant(qreal(0.0))); rotateAni.setEndValue(QVariant(qreal(360.0))); q->connect(&rotateAni, SIGNAL(valueChanged(QVariant)), q, SLOT(setRotate(QVariant))); } void DLoadingIndicatorPrivate::setLoadingItem(QGraphicsItem *item) { D_QC(DLoadingIndicator); QSizeF itemSize = item->boundingRect().size(); item->setPos((q->width()-itemSize.width())/2, (q->height()-itemSize.height())/2); item->setTransformOriginPoint(itemSize.width()/2, itemSize.height()/2); q->scene()->clear(); q->scene()->addItem(item); } /*! * \~english \class DLoadingIndicator * \~english \brief The DLoadingIndicator class provides a widget that showing loading animation. * \~english * \~english DLoadingIndicator renders and rotates the source set by * \~english DLoadingIndicator::setWidgetSource or DLoadingIndicator::setImageSource, * \~english the rotation animation is runing in a given duration and at a given easing curve, * \~english those two properties can be accessed by DLoadingIndicator::aniDuration and * \~english DLoadingIndicator::aniEasingType . * * * \~chinese \class DLoadingIndicator * \~chinese \brief DLoadingIndicator 类提供了一种用来显示“加载中”动画的控件。 * \~chinese * \~chinese 使用者通过设置 DLoadingIndicator::imageSource 属性或者 * \~chinese DLoadingIndicator::widgetSource 属性来提供进行旋转动画的图像源, * \~chinese 通过 start 和 stop 来开始和停止动画。动画开始后图像源被不停进行旋转, * \~chinese 旋转的动画的周期和曲线可以通过 * \~chinese DLoadingIndicator::aniDuration 和 DLoadingIndicator::aniEasingType * \~chinese 两个属性进行分别控制。 * \~chinese * \~chinese \note DLoadingIndicator 基于 Qt Graphics View Framework 工作。 */ /*! * \~english \enum DLoadingIndicator::RotationDirection * \~english \brief The RotationDirection enum contains the possible rotation * \~english directions of the DLoadingIndicator widget * \~english \var DLoadingIndicator::RotationDirection DLoadingIndicator::Clockwise * \~english the animation will rotate clockwise. * \~english \var DLoadingIndicator::RotationDirection DLoadingIndicator::Counterclockwise * \~english the animation will rotate counterclockwise. * * * \~chinese \enum DLoadingIndicator::RotationDirection * \~chinese \brief DLoadingIndicator::RotationDirection 枚举类型包含“加载中”动画旋转的可选方向 * \~chinese \var DLoadingIndicator::RotationDirection DLoadingIndicator::Clockwise * \~chinese 顺时针旋转 * \~chinese \var DLoadingIndicator::RotationDirection DLoadingIndicator::Counterclockwise * \~chinese 逆时针旋转 */ /*! * \~english \brief DLoadingIndicator::DLoadingIndicator constructs an instance of DLoadingIndicator. * \~english \param parent is passed to QGraphicsView constructor. * * * \~chinese \brief DLoadingIndicator::DLoadingIndicator 函数是 DLoadingIndicator * \~chinese 的构造函数。 * \~chinese \param parent 指定了控件的父控件。 */ DLoadingIndicator::DLoadingIndicator(QWidget *parent) : QGraphicsView(parent), DObject(*new DLoadingIndicatorPrivate(this)) { d_func()->init(); // May crash if the scene is not set. DThemeManager::registerWidget(this); } DLoadingIndicator::~DLoadingIndicator() { D_DC(DLoadingIndicator); if(d->widgetSource) d->widgetSource->deleteLater(); } /*! * \~english \property DLoadingIndicator::backgroundColor * \~english \brief This property holds the background color of this widget. * * * \~chinese \property DLoadingIndicator::backgroundColor * \~chinese \brief DLoadingIndicator::backgroundColor 属性用来控制 DLoadingIndicator * \~chinese 控件的背景色。 */ QColor DLoadingIndicator::backgroundColor() const { return scene()->backgroundBrush().color(); } void DLoadingIndicator::setRotate(QVariant angle) { if(!scene()->items().isEmpty()) scene()->items().first()->setRotation(angle.toReal()); } void DLoadingIndicator::setWidgetSource(QWidget *widgetSource) { D_D(DLoadingIndicator); if(d->widgetSource) d->widgetSource->deleteLater(); d->widgetSource = widgetSource; QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget; proxy->setWidget(widgetSource); d->setLoadingItem(proxy); } void DLoadingIndicator::setImageSource(const QPixmap &imageSource) { D_D(DLoadingIndicator); QGraphicsPixmapItem * item = new QGraphicsPixmapItem(imageSource); if(d->smooth) item->setTransformationMode(Qt::SmoothTransformation); d->setLoadingItem(item); } void DLoadingIndicator::setAniEasingType(QEasingCurve::Type aniEasingType) { setAniEasingCurve(aniEasingType); } void DLoadingIndicator::setSmooth(bool smooth) { D_D(DLoadingIndicator); if(d->smooth == smooth) return; d->smooth = smooth; QGraphicsPixmapItem * item = nullptr; if(!scene()->items().isEmpty()) item = dynamic_cast(scene()->items().first()); if(smooth){ setRenderHints(QPainter::SmoothPixmapTransform | QPainter::Antialiasing); if(item) item->setTransformationMode(Qt::SmoothTransformation); }else{ setRenderHint(QPainter::SmoothPixmapTransform, false); setRenderHint(QPainter::Antialiasing, false); if(item) item->setTransformationMode(Qt::FastTransformation); } } void DLoadingIndicator::setDirection(DLoadingIndicator::RotationDirection direction) { D_D(DLoadingIndicator); if (d->direction == direction) return; d->direction = direction; if(direction == Clockwise) { d->rotateAni.setStartValue(QVariant(qreal(0.0))); d->rotateAni.setEndValue(QVariant(qreal(360.0))); } else { d->rotateAni.setStartValue(QVariant(qreal(0.0))); d->rotateAni.setEndValue(QVariant(qreal(-360.0))); } Q_EMIT directionChanged(direction); } void DLoadingIndicator::resizeEvent(QResizeEvent *e) { QGraphicsView::resizeEvent(e); setSceneRect(QRectF(rect())); for(QGraphicsItem *item : items()) { QSizeF itemSize = item->boundingRect().size(); item->setPos((width()-itemSize.width())/2, (height()-itemSize.height())/2); } } void DLoadingIndicator::setLoading(bool flag) { if (flag == true){ start(); } else { stop(); } } void DLoadingIndicator::setAniDuration(int msecs) { D_D(DLoadingIndicator); d->rotateAni.setDuration(msecs); } /*! * \~english \brief DLoadingIndicator::setAniEasingCurve sets an easing curve on the loading animation. * \~english \param easing * * \~english This property defines the easing curve of the animation. * \~english By default, a linear easing curve is used, resulting in linear interpolation. * \~english Other curves are provided, for instance, QEasingCurve::InCirc, * \~english which provides a circular entry curve. * \~english Another example is QEasingCurve::InOutElastic, * \~english which provides an elastic effect on the values of the interpolated variant. * * * \~chinese \brief DLoadingIndicator::setAniEasingCurve 是对 * \~chinese DLoadingIndicator::setAniEasingType 的补充,使用者除了使用 * \~chinese QEasingCurve::Type 中提供的几种预设的动画曲线,可以自定义 QEasingCurve 来 * \~chinese 实现更为灵巧的动画。 */ void DLoadingIndicator::setAniEasingCurve(const QEasingCurve & easing) { D_D(DLoadingIndicator); d->rotateAni.setEasingCurve(easing); } void DLoadingIndicator::setBackgroundColor(const QColor &color) { scene()->setBackgroundBrush(color); } /*! * \~english \property DLoadingIndicator::loading * \~english \brief This property holds the animation state. * * \~english It returns true if the animation is running, false otherwise, you can also * \~english set value on this property to run or stop the animation. * * * \~chinese \property DLoadingIndicator::loading * \~chinese \brief DLoadingIndicator::loading 属性用来控制动画是否开启。 * \~chinese * \~chinese 设置为 true 开始动画, false 停止动画。 * * * \sa start(), stop() */ bool DLoadingIndicator::loading() const { D_DC(DLoadingIndicator); return d->rotateAni.state() == QVariantAnimation::Running; } /*! * \~english \property DLoadingIndicator::widgetSource * \~english \brief This property holds the widget to be rendered as the content of the * \~english loading indicator. * * * \~chinese \property DLoadingIndicator::widgetSource * \~chinese \brief DLoadingIndicator::widgetSource 属性用来生成旋转动画中使用的图像。 * * \sa imageSource */ QWidget *DLoadingIndicator::widgetSource() const { D_DC(DLoadingIndicator); return d->widgetSource; } /*! * \~english \property DLoadingIndicator::imageSource * \~english \brief This property holds the image to be rendered as the content of the * \~english loading indicator. * * * \~chinese \property DLoadingIndicator::imageSource * \~chinese \brief DLoadingIndicator::imageSource 属性用来生成旋转动画中使用的图像。 * * \sa widgetSource */ QPixmap DLoadingIndicator::imageSource() const { QGraphicsPixmapItem * item = nullptr; if(!scene()->items().isEmpty()) item = dynamic_cast(scene()->items().first()); return item ? item->pixmap() : QPixmap(); } /*! * \~english \property DLoadingIndicator::aniDuration * \~english \brief This property holds the duration of the loading animation. * * * \~chinese \property DLoadingIndicator::aniDuration * \~chinese \brief DLoadingIndicator::aniDuration 属性用来控制旋转动画的周期。 */ int DLoadingIndicator::aniDuration() const { D_DC(DLoadingIndicator); return d->rotateAni.duration(); } /*! * \~english \property DLoadingIndicator::aniEasingType * \~english \brief This property holds the easing type of the easing curve used by the * \~english loading animation. * * * \~chinese \property DLoadingIndicator::aniEasingType * \~chinese \brief DLoadingIndicator::aniEasingType 属性用来控制旋转动画的动画曲线。 * * \sa setAniEasingCurve */ QEasingCurve::Type DLoadingIndicator::aniEasingType() const { D_DC(DLoadingIndicator); return d->rotateAni.easingCurve().type(); } QSize DLoadingIndicator::sizeHint() const { return scene()->sceneRect().size().toSize(); } /*! * \~english \property DLoadingIndicator::smooth * \~english \brief This property holds whether the rendered content are antialiased or * \~english smoothly filtered. * * \~english Smooth filtering gives better visual quality, but it may be slower on * \~english some hardware. * * * \~chinese \property DLoadingIndicator::smooth * \~chinese \brief DLoadingIndicator::smooth 属性代表是否要对控件启用平滑处理。 * \~chinese * \~chinese 平滑处理后,控件会被进行反锯齿或者进行遮罩以达到更好的显示效果,但是在性能较差 * \~chinese 的机器上会比较慢。 */ bool DLoadingIndicator::smooth() const { D_DC(DLoadingIndicator); return d->smooth; } /*! * \~english \property DLoadingIndicator::direction * \~english \brief This property holds the direction used while doing the rotation animation. * * * \~chinese \property DLoadingIndicator::direction * \~chinese \brief DLoadingIndicator::direction 用来控制旋转动画的旋转方向。 * \~chinese * \~chinese 默认为顺时针方向。 * \~chinese * * \sa DLoadingIndicator::RotationDirection */ /*! * \~chinese \copydoc DLoadingIndicator::direction */ DLoadingIndicator::RotationDirection DLoadingIndicator::direction() const { D_DC(DLoadingIndicator); return d->direction; } /*! * \~english \property DLoadingIndicator::rotate * \~english \brief This property holds the current rotation of the content. * * \~english This property is usually used to correct the rotation of the content after * \~english calling DLoadingIndicator::stop to stop the animation. * * * \~chinese \property DLoadingIndicator::rotate * \~chinese \brief DLoadingIndicator::rotate 属性用来控制当前控件内容旋转的角度。 * * * \~chinese \sa QGraphicsItem::rotation */ qreal DLoadingIndicator::rotate() const { if(!scene()->items().isEmpty()) return scene()->items().first()->rotation(); return 0; } /*! * \~english \brief DLoadingIndicator::start starts the loading animation. * * * \~chinese \brief DLoadingIndicator::start 启动旋转动画。 */ void DLoadingIndicator::start() { D_D(DLoadingIndicator); d->rotateAni.start(); } /*! * \~english \brief DLoadingIndicator::stop stops the loading animation. * * * \~chinese \brief DLoadingIndicator::stop 停止旋转动画。 */ void DLoadingIndicator::stop() { D_D(DLoadingIndicator); d->rotateAni.stop(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dloadingindicator.h000066400000000000000000000066611352002233700215730ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLOADINGINDICATOR_H #define DLOADINGINDICATOR_H #include #include #include #include #include #include #include #include #include #include #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DLoadingIndicatorPrivate; class LIBDTKWIDGETSHARED_EXPORT DLoadingIndicator : public QGraphicsView, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor DESIGNABLE true SCRIPTABLE true) Q_PROPERTY(bool loading READ loading WRITE setLoading) Q_PROPERTY(bool smooth READ smooth WRITE setSmooth) Q_PROPERTY(QPixmap imageSource READ imageSource WRITE setImageSource) Q_PROPERTY(QWidget* widgetSource READ widgetSource WRITE setWidgetSource) Q_PROPERTY(int aniDuration READ aniDuration WRITE setAniDuration) Q_PROPERTY(QEasingCurve::Type aniEasingType READ aniEasingType WRITE setAniEasingType) Q_PROPERTY(RotationDirection direction READ direction WRITE setDirection NOTIFY directionChanged) Q_PROPERTY(qreal rotate READ rotate WRITE setRotate NOTIFY rotateChanged) public: /*! * \brief The RotationDirection enum contains the possible rotation * directions of the DLoadingIndicator widget. */ enum RotationDirection{ Clockwise, /*!< the rotation is clockwise */ Counterclockwise /*!< the rotation is counterclockwise */ }; Q_ENUMS(RotationDirection) DLoadingIndicator(QWidget * parent = 0); ~DLoadingIndicator(); QColor backgroundColor() const; bool loading() const; QWidget* widgetSource() const; QPixmap imageSource() const; int aniDuration() const; QEasingCurve::Type aniEasingType() const; QSize sizeHint() const Q_DECL_OVERRIDE; bool smooth() const; RotationDirection direction() const; qreal rotate() const; public Q_SLOTS: void start(); void stop(); void setLoading(bool flag); void setAniDuration(int msecs); void setAniEasingCurve(const QEasingCurve & easing); void setBackgroundColor(const QColor &color); void setRotate(QVariant angle); void setWidgetSource(QWidget* widgetSource); void setImageSource(const QPixmap &imageSource); void setAniEasingType(QEasingCurve::Type aniEasingType); void setSmooth(bool smooth); void setDirection(RotationDirection direction); Q_SIGNALS: void directionChanged(RotationDirection direction); void rotateChanged(qreal rotate); protected: void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DLoadingIndicator) }; DWIDGET_END_NAMESPACE #endif // DLOADINGINDICATOR_H dtkwidget-2.1.1/src/widgets/dmainwindow.cpp000066400000000000000000000310171352002233700207610ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dmainwindow.h" #include "dplatformwindowhandle.h" #include "dapplication.h" #include "dtitlebar.h" #include "private/dmainwindow_p.h" #include "private/dapplication_p.h" #include #include #include #include #ifdef Q_OS_MAC #include "osxwindow.h" #endif /// shadow #define SHADOW_COLOR_NORMAL QColor(0, 0, 0, 255 * 35/100) #define SHADOW_COLOR_ACTIVE QColor(0, 0, 0, 255 * 60/100) DWIDGET_BEGIN_NAMESPACE DMainWindowPrivate::DMainWindowPrivate(DMainWindow *qq) : DObjectPrivate(qq) { titlebar = new DTitlebar(qq); if (DApplication::isDXcbPlatform()) { handle = new DPlatformWindowHandle(qq, qq); qq->setMenuWidget(titlebar); } else { qq->setMenuWidget(titlebar); #ifdef Q_OS_MAC OSX::HideWindowTitlebar(qq->winId()); #else titlebar->setEmbedMode(true); #endif } } void DMainWindowPrivate::init() { D_Q(DMainWindow); const DApplication *dapp = qobject_cast(qApp); if (dapp) { q->setWindowTitle(dapp->productName()); } else { q->setWindowTitle(qApp->applicationDisplayName()); } if (handle) { q->connect(handle, &DPlatformWindowHandle::borderColorChanged, q, &DMainWindow::borderColorChanged); q->connect(handle, &DPlatformWindowHandle::borderWidthChanged, q, &DMainWindow::borderWidthChanged); q->connect(handle, &DPlatformWindowHandle::clipPathChanged, q, &DMainWindow::clipPathChanged); q->connect(handle, &DPlatformWindowHandle::frameMarginsChanged, q, &DMainWindow::frameMarginsChanged); q->connect(handle, &DPlatformWindowHandle::frameMaskChanged, q, &DMainWindow::frameMaskChanged); q->connect(handle, &DPlatformWindowHandle::shadowColorChanged, q, &DMainWindow::shadowColorChanged); q->connect(handle, &DPlatformWindowHandle::shadowOffsetChanged, q, &DMainWindow::shadowOffsetChanged); q->connect(handle, &DPlatformWindowHandle::shadowRadiusChanged, q, &DMainWindow::shadowRadiusChanged); q->connect(handle, &DPlatformWindowHandle::windowRadiusChanged, q, &DMainWindow::windowRadiusChanged); q->connect(handle, &DPlatformWindowHandle::translucentBackgroundChanged, q, &DMainWindow::translucentBackgroundChanged); q->connect(handle, &DPlatformWindowHandle::enableSystemMoveChanged, q, &DMainWindow::enableSystemMoveChanged); q->connect(handle, &DPlatformWindowHandle::enableSystemResizeChanged, q, &DMainWindow::enableSystemResizeChanged); q->connect(handle, &DPlatformWindowHandle::enableBlurWindowChanged, q, &DMainWindow::enableBlurWindowChanged); q->connect(handle, &DPlatformWindowHandle::autoInputMaskByClipPathChanged, q, &DMainWindow::autoInputMaskByClipPathChanged); if (!handle->isEnableNoTitlebar(q->windowHandle())) { q->connect(qApp, &QGuiApplication::focusWindowChanged, q, [q] { if (q->isActiveWindow()) { q->setShadowColor(SHADOW_COLOR_ACTIVE); } else { q->setShadowColor(SHADOW_COLOR_NORMAL); } }); } } if (!help && DApplicationPrivate::isUserManualExists()) { help = new QShortcut(QKeySequence(Qt::Key_F1), q); help->setContext(Qt::ApplicationShortcut); QObject::connect(help, &QShortcut::activated, q, [ = ]() { DApplication *dapp = qobject_cast(qApp); if (dapp) { dapp->handleHelpAction(); } }); } } /*! * \class DMainWindow * \brief The DMainWindow class provides a main application window. * * A main window provides a framework for building an application's user * interface. DMainWindow has its own layout compared to QMainWindow, * it has only title bar and content area, simpler and cleaner. * * Developers can provide customized title bar and content to make the * application rich functional. */ /*! * \brief DMainWindow::DMainWindow constructs an instance of DMainWindow * \param parent is passed to QMainWindow construtor. */ DMainWindow::DMainWindow(QWidget *parent) : QMainWindow(parent) , DObject(*new DMainWindowPrivate(this)) { d_func()->init(); } /*! * \brief DMainWindow::titlebar * \return a DTitlebar instance used by the main window. */ DTitlebar *DMainWindow::titlebar() const { D_DC(DMainWindow); return d->titlebar; } /*! * \brief DMainWindow::isDXcbWindow * \return Whether this window is dxcb backended. * * Many features like blurred background and window clipping are supported * only if the window is using the dxcb Qt platform plugin. */ bool DMainWindow::isDXcbWindow() const { D_DC(DMainWindow); return d->handle; } /*! * \property DMainWindow::windowRadius * \brief This property holds the radius of the main window. */ int DMainWindow::windowRadius() const { D_DC(DMainWindow); if (!d->handle) { return 0; } return d->handle->windowRadius(); } /*! * \property DMainWindow::borderWidth * \brief This property holds the width of the main window's border. */ int DMainWindow::borderWidth() const { D_DC(DMainWindow); if (!d->handle) { return 0; } return d->handle->borderWidth(); } /*! * \property DMainWindow::borderColor * \brief This property holds the color of the main window's border. */ QColor DMainWindow::borderColor() const { D_DC(DMainWindow); if (!d->handle) { return QColor(); } return d->handle->borderColor(); } /*! * \property DMainWindow::shadowRadius * \brief This property holds the shadow radius of the main widnow. */ int DMainWindow::shadowRadius() const { D_DC(DMainWindow); if (!d->handle) { return 0; } return d->handle->shadowRadius(); } /*! * \property DMainWindow::shadowOffset * \brief This property holds the offset applied on the window shadow. */ QPoint DMainWindow::shadowOffset() const { D_DC(DMainWindow); if (!d->handle) { return QPoint(); } return d->handle->shadowOffset(); } /*! * \property DMainWindow::shadowColor * \brief This property holds the color of the window shadow. */ QColor DMainWindow::shadowColor() const { D_DC(DMainWindow); if (!d->handle) { return QColor(); } return d->handle->shadowColor(); } /*! * \property DMainWindow::clipPath * \brief This property holds the custom QPainterPath to be used to clip the window. * * By default DMainWindow is clipped as a corner-rounded rectangle, but you can * supply a custom QPainterPath to do custom shaped window. * * \see DMainWindow::frameMask */ QPainterPath DMainWindow::clipPath() const { D_DC(DMainWindow); if (!d->handle) { return QPainterPath(); } return d->handle->clipPath(); } /*! * \property DMainWindow::frameMask * \brief This property holds the mask to be applied on the window. * * For better clip quality, for example antialiasing, use property * DMainWindow::clipPath instead. */ QRegion DMainWindow::frameMask() const { D_DC(DMainWindow); if (!d->handle) { return QRegion(); } return d->handle->frameMask(); } QMargins DMainWindow::frameMargins() const { D_DC(DMainWindow); if (!d->handle) { return QMargins(); } return d->handle->frameMargins(); } /*! * \property DMainWindow::translucentBackground * \brief This property holds whether the window has translucent background. */ bool DMainWindow::translucentBackground() const { D_DC(DMainWindow); if (!d->handle) { return false; } return d->handle->translucentBackground(); } /*! * \brief DMainWindow::enableSystemResize * \return This property holds whether the window can be resized by the user. * * The default value of this property is true. * * You can set this property to false and implement the resize polizy of this * window by you self. */ bool DMainWindow::enableSystemResize() const { D_DC(DMainWindow); if (!d->handle) { return false; } return d->handle->enableSystemResize(); } /*! * \property DMainWindow::enableSystemMove * \brief This property holds whether the window can be moved by the user. * * The default value of this property is true. * * You can set this property to false and choose the effective area to drag and move. */ bool DMainWindow::enableSystemMove() const { D_DC(DMainWindow); if (!d->handle) { return false; } return d->handle->enableSystemResize(); } /*! * \property DMainWindow::enableBlurWindow * \brief This property holds whether the window background is blurred. */ bool DMainWindow::enableBlurWindow() const { D_DC(DMainWindow); if (!d->handle) { return false; } return d->handle->enableBlurWindow(); } /*! * \property DMainWindow::autoInputMaskByClipPath * \brief This property holds whether the user input is masked by the clip path. * * Sometimes you may want to handle events happening in the areas that are * visually clipped by the setting DMainWindow::clipPath. * * The default value of this property is true. */ bool DMainWindow::autoInputMaskByClipPath() const { D_DC(DMainWindow); if (!d->handle) { return false; } return d->handle->autoInputMaskByClipPath(); } void DMainWindow::setWindowRadius(int windowRadius) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setWindowRadius(windowRadius); } void DMainWindow::setBorderWidth(int borderWidth) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setBorderWidth(borderWidth); } void DMainWindow::setBorderColor(const QColor &borderColor) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setBorderColor(borderColor); } void DMainWindow::setShadowRadius(int shadowRadius) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setShadowRadius(shadowRadius); } void DMainWindow::setShadowOffset(const QPoint &shadowOffset) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setShadowOffset(shadowOffset); } void DMainWindow::setShadowColor(const QColor &shadowColor) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setShadowColor(shadowColor); } void DMainWindow::setClipPath(const QPainterPath &clipPath) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setClipPath(clipPath); } void DMainWindow::setFrameMask(const QRegion &frameMask) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setFrameMask(frameMask); } void DMainWindow::setTranslucentBackground(bool translucentBackground) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setTranslucentBackground(translucentBackground); } void DMainWindow::setEnableSystemResize(bool enableSystemResize) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setEnableSystemResize(enableSystemResize); } void DMainWindow::setEnableSystemMove(bool enableSystemMove) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setEnableSystemMove(enableSystemMove); } void DMainWindow::setEnableBlurWindow(bool enableBlurWindow) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setEnableBlurWindow(enableBlurWindow); } void DMainWindow::setAutoInputMaskByClipPath(bool autoInputMaskByClipPath) { D_D(DMainWindow); if (!d->handle) { return; } d->handle->setAutoInputMaskByClipPath(autoInputMaskByClipPath); } #ifdef Q_OS_MAC void DMainWindow::setWindowFlags(Qt::WindowFlags type) { QMainWindow::setWindowFlags(type); OSX::HideWindowTitlebar(winId()); } #endif DMainWindow::DMainWindow(DMainWindowPrivate &dd, QWidget *parent) : QMainWindow(parent) , DObject(dd) { d_func()->init(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dmainwindow.h000066400000000000000000000107631352002233700204330ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DMAINWINDOW_H #define DMAINWINDOW_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DMainWindowPrivate; class DTitlebar; class LIBDTKWIDGETSHARED_EXPORT DMainWindow : public QMainWindow, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(int windowRadius READ windowRadius WRITE setWindowRadius NOTIFY windowRadiusChanged) Q_PROPERTY(int borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged) Q_PROPERTY(int shadowRadius READ shadowRadius WRITE setShadowRadius NOTIFY shadowRadiusChanged) Q_PROPERTY(QPoint shadowOffset READ shadowOffset WRITE setShadowOffset NOTIFY shadowOffsetChanged) Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged) Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged) Q_PROPERTY(QRegion frameMask READ frameMask WRITE setFrameMask NOTIFY frameMaskChanged) Q_PROPERTY(QMargins frameMargins READ frameMargins NOTIFY frameMarginsChanged) Q_PROPERTY(bool translucentBackground READ translucentBackground WRITE setTranslucentBackground NOTIFY translucentBackgroundChanged) Q_PROPERTY(bool enableSystemResize READ enableSystemResize WRITE setEnableSystemResize NOTIFY enableSystemResizeChanged) Q_PROPERTY(bool enableSystemMove READ enableSystemMove WRITE setEnableSystemMove NOTIFY enableSystemMoveChanged) Q_PROPERTY(bool enableBlurWindow READ enableBlurWindow WRITE setEnableBlurWindow NOTIFY enableBlurWindowChanged) Q_PROPERTY(bool autoInputMaskByClipPath READ autoInputMaskByClipPath WRITE setAutoInputMaskByClipPath NOTIFY autoInputMaskByClipPathChanged) public: explicit DMainWindow(QWidget *parent = 0); DTitlebar *titlebar() const; bool isDXcbWindow() const; int windowRadius() const; int borderWidth() const; QColor borderColor() const; int shadowRadius() const; QPoint shadowOffset() const; QColor shadowColor() const; QPainterPath clipPath() const; QRegion frameMask() const; QMargins frameMargins() const; bool translucentBackground() const; bool enableSystemResize() const; bool enableSystemMove() const; bool enableBlurWindow() const; bool autoInputMaskByClipPath() const; public Q_SLOTS: void setWindowRadius(int windowRadius); void setBorderWidth(int borderWidth); void setBorderColor(const QColor &borderColor); void setShadowRadius(int shadowRadius); void setShadowOffset(const QPoint &shadowOffset); void setShadowColor(const QColor &shadowColor); void setClipPath(const QPainterPath &clipPath); void setFrameMask(const QRegion &frameMask); void setTranslucentBackground(bool translucentBackground); void setEnableSystemResize(bool enableSystemResize); void setEnableSystemMove(bool enableSystemMove); void setEnableBlurWindow(bool enableBlurWindow); void setAutoInputMaskByClipPath(bool autoInputMaskByClipPath); // TODO: remove it if there is an batter sulotion #ifdef Q_OS_MAC void setWindowFlags(Qt::WindowFlags type); #endif Q_SIGNALS: void windowRadiusChanged(); void borderWidthChanged(); void borderColorChanged(); void shadowRadiusChanged(); void shadowOffsetChanged(); void shadowColorChanged(); void clipPathChanged(); void frameMaskChanged(); void frameMarginsChanged(); void translucentBackgroundChanged(); void enableSystemResizeChanged(); void enableSystemMoveChanged(); void enableBlurWindowChanged(); void autoInputMaskByClipPathChanged(); protected: DMainWindow(DMainWindowPrivate &dd, QWidget *parent = 0); private: D_DECLARE_PRIVATE(DMainWindow) }; DWIDGET_END_NAMESPACE #endif // DMAINWINDOW_H dtkwidget-2.1.1/src/widgets/dmpriscontrol.cpp000066400000000000000000000212401352002233700213350ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dmpriscontrol.h" #include "private/dmpriscontrol_p.h" #include "private/mpris/dmprismonitor.h" #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DMPRISControl * \~chinese \brief DMPRISControl 封装了MPRIS协议,提供了上一曲、下一曲、暂停播放、恢复播放和显示歌曲名和封面的功能。 */ /*! * \fn DMPRISControl::mprisAcquired * \~chinese \brief 当第一次注册MPRIS接口时会发出该信号 * \fn DMPRISControl::mprisChanged * \~chinese \brief 当MPRIS接口列表发生变化时会发出该信号 * \fn DMPRISControl::mprisLosted * \~chinese \brief 当MPRIS接口中有退出的服务时会发出该信号 */ /*! * \~chinese \brief DMPRISControl::DMPRISControl 的构造函数 * * @param parent 初始化QFrame的构造函数 */ DMPRISControl::DMPRISControl(QWidget *parent) : QFrame(parent), DObject(*new DMPRISControlPrivate(this)) { D_D(DMPRISControl); d->init(); } /*! * \~chinese \brief 返回当前是否在工作状态 * * @return true * @return false */ bool DMPRISControl::isWorking() const { D_DC(DMPRISControl); return d->m_mprisInter; } /*! * \~chinese \brief 设置是否显示封面 * * @param visible */ void DMPRISControl::setPictureVisible(bool visible) { D_D(DMPRISControl); d->m_pictureVisible = visible; d->m_picture->setVisible(visible); } /*! * \~chinese \brief 设置封面大小 * * @param size */ void DMPRISControl::setPictureSize(const QSize &size) { D_D(DMPRISControl); d->m_picture->setFixedSize(size); } DMPRISControlPrivate::DMPRISControlPrivate(DMPRISControl *q) : DObjectPrivate(q), m_mprisInter(nullptr) { } void DMPRISControlPrivate::init() { D_Q(DMPRISControl); m_mprisMonitor = new DMPRISMonitor(q); m_titleScrollArea = new QScrollArea(q); m_title = new QLabel; m_picture = new QLabel; m_pictureVisible = true; m_controlWidget = new QWidget; m_prevBtn = new DImageButton; m_pauseBtn = new DImageButton; m_playBtn = new DImageButton; m_nextBtn = new DImageButton; m_tickEffect = new DTickEffect(m_title, m_title); m_title->setAlignment(Qt::AlignCenter); m_picture->setFixedSize(200, 200); m_prevBtn->setObjectName("PrevBtn"); m_pauseBtn->setObjectName("PauseBtn"); m_playBtn->setObjectName("PlayBtn"); m_nextBtn->setObjectName("NextBtn"); m_tickEffect->setDirection(DTickEffect::RightToLeft); m_tickEffect->setDuration(3000); m_titleScrollArea->setWidget(m_title); m_titleScrollArea->setObjectName("scrollarea"); m_titleScrollArea->setWidgetResizable(true); m_titleScrollArea->setFocusPolicy(Qt::NoFocus); m_titleScrollArea->setFrameStyle(QFrame::NoFrame); m_titleScrollArea->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); m_titleScrollArea->setContentsMargins(0, 0, 0, 0); m_titleScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_titleScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_titleScrollArea->setStyleSheet("background-color:transparent;"); #ifdef QT_DEBUG m_title->setText("MPRIS Title"); m_nextBtn->setNormalPic("://images/arrow_right_normal.png"); m_pauseBtn->setNormalPic("://images/arrow_left_white.png"); m_playBtn->setNormalPic("://images/arrow_right_white.png"); m_prevBtn->setNormalPic("://images/arrow_left_normal.png"); #endif QHBoxLayout *controlLayout = new QHBoxLayout; controlLayout->addWidget(m_prevBtn); controlLayout->addStretch(); controlLayout->addWidget(m_pauseBtn); controlLayout->addWidget(m_playBtn); controlLayout->addStretch(); controlLayout->addWidget(m_nextBtn); controlLayout->setContentsMargins(0, 10, 0, 0); m_controlWidget->setLayout(controlLayout); QVBoxLayout *centralLayout = new QVBoxLayout; centralLayout->addWidget(m_titleScrollArea); centralLayout->addWidget(m_picture); centralLayout->setAlignment(m_picture, Qt::AlignCenter); // centralLayout->addLayout(controlLayout); centralLayout->addWidget(m_controlWidget); centralLayout->setMargin(0); q->setLayout(centralLayout); q->connect(m_mprisMonitor, SIGNAL(mprisAcquired(const QString &)), q, SLOT(_q_loadMPRISPath(const QString &))); q->connect(m_mprisMonitor, SIGNAL(mprisLost(const QString &)), q, SLOT(_q_removeMPRISPath(const QString &))); q->connect(m_prevBtn, SIGNAL(clicked()), q, SLOT(_q_onPrevClicked())); q->connect(m_pauseBtn, SIGNAL(clicked()), q, SLOT(_q_onPauseClicked())); q->connect(m_playBtn, SIGNAL(clicked()), q, SLOT(_q_onPlayClicked())); q->connect(m_nextBtn, SIGNAL(clicked()), q, SLOT(_q_onNextClicked())); m_mprisMonitor->init(); } void DMPRISControlPrivate::_q_onPrevClicked() { if (!m_mprisInter) return; m_mprisInter->Previous(); } void DMPRISControlPrivate::_q_onPlayClicked() { if (!m_mprisInter) return; m_mprisInter->Play(); } void DMPRISControlPrivate::_q_onPauseClicked() { if (!m_mprisInter) return; m_mprisInter->Pause(); } void DMPRISControlPrivate::_q_onNextClicked() { if (!m_mprisInter) return; m_mprisInter->Next(); } void DMPRISControlPrivate::_q_onMetaDataChanged() { if (!m_mprisInter) return; const auto & meta = m_mprisInter->metadata(); const QString &title = meta.value("xesam:title").toString(); const QString &artist = meta.value("xesam:artist").toString(); const QUrl & pictureUrl = meta.value("mpris:artUrl").toString(); const QSize & pictureSize = m_picture->size(); const QPixmap &picture = QPixmap(pictureUrl.toLocalFile()) .scaled(pictureSize, Qt::IgnoreAspectRatio); if (title.isEmpty()) { m_title->clear(); m_tickEffect->stop(); } else { if (artist.isEmpty()) { m_title->setText(title); } else { m_title->setText(QString("%1 - %2").arg(title).arg(artist)); } m_title->adjustSize(); m_tickEffect->play(); } m_picture->setPixmap(picture); m_picture->setVisible(m_pictureVisible && !picture.isNull()); } void DMPRISControlPrivate::_q_onPlaybackStatusChanged() { const QString stat = m_mprisInter->playbackStatus(); if (stat == "Playing") { m_pauseBtn->setVisible(true); m_playBtn->setVisible(false); } else { m_pauseBtn->setVisible(false); m_playBtn->setVisible(true); } } void DMPRISControlPrivate::_q_loadMPRISPath(const QString &path) { D_Q(DMPRISControl); const bool hasOld = m_mprisInter; m_lastPath = path; // save paths if (!m_mprisPaths.contains(path)) m_mprisPaths.append(path); if (m_mprisInter) m_mprisInter->deleteLater(); m_mprisInter = new DBusMPRIS(path, "/org/mpris/MediaPlayer2", QDBusConnection::sessionBus(), q); m_controlWidget->setVisible(m_mprisInter->canControl()); q->connect(m_mprisInter, SIGNAL(MetadataChanged(QVariantMap)), q, SLOT(_q_onMetaDataChanged())); q->connect(m_mprisInter, SIGNAL(PlaybackStatusChanged(QString)), q, SLOT(_q_onPlaybackStatusChanged())); q->connect(m_mprisInter, SIGNAL(CanControlChanged(bool)), q, SLOT(_q_onCanControlChanged(bool))); _q_onMetaDataChanged(); _q_onPlaybackStatusChanged(); if (hasOld) Q_EMIT q->mprisChanged(); else Q_EMIT q->mprisAcquired(); } void DMPRISControlPrivate::_q_removeMPRISPath(const QString &path) { D_QC(DMPRISControl); m_mprisPaths.removeOne(path); if (m_lastPath != path) return; if (!m_mprisInter) return; if (!m_mprisPaths.isEmpty()) return _q_loadMPRISPath(m_mprisPaths.last()); m_mprisInter->deleteLater(); m_mprisInter = nullptr; Q_EMIT q->mprisLosted(); } void DMPRISControlPrivate::_q_onCanControlChanged(bool canControl) { m_controlWidget->setVisible(canControl); } DWIDGET_END_NAMESPACE #include "moc_dmpriscontrol.cpp" dtkwidget-2.1.1/src/widgets/dmpriscontrol.h000066400000000000000000000035261352002233700210110ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DMPRISCONTROL_H #define DMPRISCONTROL_H #include "dobject.h" #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DMPRISControlPrivate; class LIBDTKWIDGETSHARED_EXPORT DMPRISControl : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DMPRISControl) D_DECLARE_PRIVATE(DMPRISControl) public: explicit DMPRISControl(QWidget *parent = 0); bool isWorking() const; Q_SIGNALS: void mprisAcquired() const; void mprisChanged() const; void mprisLosted() const; public Q_SLOTS: void setPictureVisible(bool visible); void setPictureSize(const QSize &size); protected: D_PRIVATE_SLOT(void _q_onMetaDataChanged()) D_PRIVATE_SLOT(void _q_onPlaybackStatusChanged()) D_PRIVATE_SLOT(void _q_onPrevClicked()) D_PRIVATE_SLOT(void _q_onPlayClicked()) D_PRIVATE_SLOT(void _q_onPauseClicked()) D_PRIVATE_SLOT(void _q_onNextClicked()) D_PRIVATE_SLOT(void _q_loadMPRISPath(const QString &)) D_PRIVATE_SLOT(void _q_removeMPRISPath(const QString &)) D_PRIVATE_SLOT(void _q_onCanControlChanged(bool canControl)) }; DWIDGET_END_NAMESPACE #endif // DMPRISCONTROL_H dtkwidget-2.1.1/src/widgets/doption.cpp000066400000000000000000000100521352002233700201110ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "doption.h" #include "dtkwidget_global.h" #include "dthememanager.h" #include "private/doption_p.h" #include #include DWIDGET_BEGIN_NAMESPACE DOptionPrivate::DOptionPrivate(DOption *q) : DObjectPrivate(q) { } void DOptionPrivate::init() { D_Q(DOption); m_checkedIconLabel = new QLabel; m_checkedIconLabel->setMinimumSize(0, 0); m_checkedIconLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); m_optionIcon = new QLabel; m_optionIcon->setMinimumSize(0, 0); m_optionIcon->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); m_optionName = new QLabel; m_optionName->setObjectName("OptionName"); m_optionName->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_layout = new QHBoxLayout; m_layout->addWidget(m_checkedIconLabel); m_layout->addWidget(m_optionIcon); m_layout->addWidget(m_optionName); m_layout->setSpacing(5); m_layout->setContentsMargins(0, 0, 0, 0); q->setLayout(m_layout); } void DOptionPrivate::setIcon(const QString &iconName) { setIcon(QPixmap(iconName)); } void DOptionPrivate::setIcon(const QPixmap &icon) { m_optionIcon->setPixmap(icon); } const QString DOptionPrivate::name() const { return m_optionName->text(); } const QString DOptionPrivate::value() const { return m_optionValue; } bool DOptionPrivate::checked() const { return m_checked; } void DOptionPrivate::setChecked(bool checked) { if (m_checked == checked) return; m_checked = checked; D_QC(DOption); Q_EMIT q->checkedChanged(m_checked); } const QString DOptionPrivate::checkedIcon() const { return m_checkedIconName; } void DOptionPrivate::setCheckedIcon(const QString &icon) { if (icon == m_checkedIconName) return; m_checkedIconName = icon; m_checkedIconLabel->setPixmap(QPixmap(icon)); D_QC(DOption); Q_EMIT q->checkedIconChanged(icon); } void DOptionPrivate::sizeChanged(QResizeEvent *e) { D_Q(DOption); Q_EMIT q->sizeChanged(e->size()); } DOption::DOption(QWidget *parent) : QFrame(parent), DObject(*new DOptionPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"checked"})); D_D(DOption); d->init(); } void DOption::setName(const QString &name) { D_D(DOption); d->m_optionName->setText(name); } void DOption::setValue(const QString &value) { D_D(DOption); d->m_optionValue = value; } void DOption::setIcon(const QString &icon) { D_D(DOption); d->setIcon(icon); } void DOption::setIcon(const QPixmap &icon) { D_D(DOption); d->setIcon(icon); } const QString DOption::value() const { D_DC(DOption); return d->value(); } const QString DOption::name() const { D_DC(DOption); return d->name(); } bool DOption::checked() const { D_DC(DOption); return d->checked(); } void DOption::setChecked(bool checked) { D_D(DOption); d->setChecked(checked); } const QString DOption::checkedIcon() const { D_DC(DOption); return d->checkedIcon(); } void DOption::setCheckedIcon(const QString &icon) { D_D(DOption); d->setCheckedIcon(icon); } QHBoxLayout *DOption::layout() { D_D(DOption); return d->m_layout; } void DOption::resizeEvent(QResizeEvent *e) { QWidget::resizeEvent(e); D_D(DOption); d->sizeChanged(e); } DWIDGET_END_NAMESPACE #include "moc_doption.cpp" dtkwidget-2.1.1/src/widgets/doption.h000066400000000000000000000037371352002233700175720ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DOPTION_H #define DOPTION_H #include "dtkwidget_global.h" #include "dobject.h" #include #include DWIDGET_BEGIN_NAMESPACE class DOptionPrivate; class D_DECL_DEPRECATED_X("Remove useless old widget") LIBDTKWIDGETSHARED_EXPORT DOption : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DOption) D_DECLARE_PRIVATE(DOption) Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY checkedChanged) Q_PROPERTY(QString checkedIcon READ checkedIcon WRITE setCheckedIcon NOTIFY checkedIconChanged DESIGNABLE true) public: DOption(QWidget *parent = nullptr); void setName(const QString &name); void setValue(const QString &value); void setIcon(const QString &icon); void setIcon(const QPixmap &icon); const QString value() const; const QString name() const; bool checked() const; void setChecked(bool checked); const QString checkedIcon() const; void setCheckedIcon(const QString &icon); QHBoxLayout *layout(); protected: void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; Q_SIGNALS: void sizeChanged(const QSize &size) const; void checkedChanged(bool checked) const; void checkedIconChanged(const QString checkedIcon) const; }; DWIDGET_END_NAMESPACE #endif // DOPTION_H dtkwidget-2.1.1/src/widgets/doptionlist.cpp000066400000000000000000000070771352002233700210220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "doptionlist.h" #include "dtkwidget_global.h" #include "dthememanager.h" #include "private/doptionlist_p.h" #include DWIDGET_BEGIN_NAMESPACE DOptionListPrivate::DOptionListPrivate(DOptionList *q) : DObjectPrivate(q) { } void DOptionListPrivate::init() { D_Q(DOptionList); q->setSelectionMode(QAbstractItemView::SingleSelection); q->connect(q, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), q, SLOT(_q_currentItemChanged(QListWidgetItem*,QListWidgetItem*))); } void DOptionListPrivate::addOption(DOption *option) { QListWidgetItem *item = new QListWidgetItem; m_optionList.insert(item, option); D_Q(DOptionList); q->connect(option, &DOption::sizeChanged, [item] (const QSize &size) {item->setSizeHint(size);}); q->addItem(item); q->setItemWidget(item, option); } void DOptionListPrivate::insertOption(int pos, DOption *option) { QListWidgetItem *item = new QListWidgetItem; m_optionList.insert(item, option); D_Q(DOptionList); q->connect(option, &DOption::sizeChanged, [item] (const QSize &size) {item->setSizeHint(size);}); q->insertItem(pos, item); q->setItemWidget(item, option); } void DOptionListPrivate::setCurrentSelected(int pos) { D_Q(DOptionList); DOption *prevItem = m_optionList.value(q->currentItem(), nullptr); if (prevItem) prevItem->setChecked(false); QListWidgetItem *item = q->item(pos); q->setCurrentItem(item); DOption *currentItem = m_optionList.value(item, nullptr); if (currentItem) currentItem->setChecked(true); } void DOptionListPrivate::setCurrentSelected(const QString &value) { D_Q(DOptionList); const QList list = m_optionList.values(); for (DOption *option : list) if (option->value() == value) return setCurrentSelected(q->row(m_optionList.key(option))); } void DOptionListPrivate::_q_currentItemChanged(QListWidgetItem *current,QListWidgetItem *previous) { DOption *currentItem = m_optionList.value(current, nullptr); DOption *previousItem = m_optionList.value(previous, nullptr); if (currentItem) currentItem->setChecked(true); if (previousItem) previousItem->setChecked(false); } DOptionList::DOptionList(QWidget *parent) : QListWidget(parent), DObject(*new DOptionListPrivate(this)) { DThemeManager::registerWidget(this); D_D(DOptionList); d->init(); } void DOptionList::addOption(DOption *option) { D_D(DOptionList); d->addOption(option); } void DOptionList::insertOption(int pos, DOption *option) { D_D(DOptionList); d->insertOption(pos, option); } void DOptionList::setCurrentSelected(int pos) { D_D(DOptionList); d->setCurrentSelected(pos); } void DOptionList::setCurrentSelected(const QString &value) { D_D(DOptionList); d->setCurrentSelected(value); } DWIDGET_END_NAMESPACE #include "moc_doptionlist.cpp" dtkwidget-2.1.1/src/widgets/doptionlist.h000066400000000000000000000027421352002233700204610ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DOPTIONLIST_H #define DOPTIONLIST_H #include "dtkwidget_global.h" #include "dobject.h" #include "doption.h" #include DWIDGET_BEGIN_NAMESPACE class DOptionListPrivate; class D_DECL_DEPRECATED_X("Remove useless old widget") LIBDTKWIDGETSHARED_EXPORT DOptionList : public QListWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DOptionList) D_DECLARE_PRIVATE(DOptionList) public: explicit DOptionList(QWidget *parent = nullptr); void addOption(DOption *option); void insertOption(int pos, DOption *option); void setCurrentSelected(int pos); void setCurrentSelected(const QString &value); protected: D_PRIVATE_SLOT(void _q_currentItemChanged(QListWidgetItem*,QListWidgetItem*)) }; DWIDGET_END_NAMESPACE #endif // DOPTIONLIST_H dtkwidget-2.1.1/src/widgets/dpageindicator.cpp000066400000000000000000000211761352002233700214230ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dpageindicator.h" #include "private/dpageindicator_p.h" #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DPageIndicator * \~english \brief The DPageIndicator class provides indicator of which page is currently showing. * * \~english DPageIndicator is control that displays a horizontal series of dots, * \~english each of which corresponds to a page/widget may appear on top of it. * * \~english It's inspired by UIPageControl of Apple. * \~english See https://developer.apple.com/documentation/uikit/uipagecontrol. * * \~english \note The design of this control is that it's just used to display, not * \~english to control which page is currently visible. * * * \~chinese \class DPageIndicator * \~chinese \brief DPageIndicator 类提供了一种用来指示一组元素中当前可见元素索引的控件。 * \~chinese * \~chinese 控件会显示了一系列的点,代表一组元素。其中每一个点固定对应于元素组中 * \~chinese 的一个元素,元素组中的元素在一个时间点只能显示其中的一个( 如 \ref QStackedLayout ), * \~chinese 当前显示的元素所对应的点会被高亮以告知用户元素左右(或者上下)还有多少元素可以切换。 * \~chinese * \~chinese 例如下图中控制中心首页插件区域底部的指示器: * \~chinese \image html pageindicator.png * \~chinese * \~chinese \note 此控件只用来显示当前元素位置以及层叠关系,并不能用来实际操纵元素的显示行为。 */ /*! * \~english \brief DPageIndicator::DPageIndicator constructs an instance of DPageIndicator. * \~english \param parent is passed to QWidget constructor. * * * \~chinese \brief DPageIndicator::DPageIndicator 是 DPageIndicator 类的构造函数。 * \~chinese \param parent 指定了控件的父控件。 */ DPageIndicator::DPageIndicator(QWidget *parent) : QWidget(parent), DObject(*new DPageIndicatorPrivate(this), this) { } /*! * \~english \property DPageIndicator::pageCount * \~english \brief This property holds the number of pages that are represented by this widget. * * * \~chinese \property DPageIndicator::pageCount * \~chinese \brief DPageIndicator::pageCount 属性代表了控件显示的点的数量。 */ int DPageIndicator::pageCount() const { D_DC(DPageIndicator); return d->pageCount; } void DPageIndicator::setPageCount(const int count) { D_D(DPageIndicator); d->setPageCount(count); } /*! * \~english \brief DPageIndicator::nextPage highlights the next dot. * * * \~chinese \brief DPageIndicator::nextPage 将高亮位置移至下一个点。 * * \sa currentPage. */ void DPageIndicator::nextPage() { D_D(DPageIndicator); d->nextPage(); } /*! * \~english \brief DPageIndicator::previousPage hightlights the previous dot. * * * \~chinese \brief DPageIndicator::previousPage 将高亮位置移至前一个点。 * * \see currentPage. */ void DPageIndicator::previousPage() { D_D(DPageIndicator); d->previousPage(); } void DPageIndicator::setCurrentPage(const int index) { D_D(DPageIndicator); d->setCurrentPage(index); } /*! * \~english \property DPageIndicator::currentPage * \~english \brief This property holds the index of currently highlighted dot. * * * \~chinese \property DPageIndicator::currentPage * \~chinese \brief DPageIndicator::currentPage 属性代表了当前高亮的点在所有点中的索引。 */ int DPageIndicator::currentPageIndex() const { D_DC(DPageIndicator); return d->currentPage; } /*! * \~english \property DPageIndicator::pointColor * \~english \brief This property holds the color used to draw the highlighted dot. * * * \~chinese \property DPageIndicator::pointColor * \~chinese \brief DPageIndicator::pointColor 属性用来控制高亮点的颜色。 */ QColor DPageIndicator::pointColor() const { D_DC(DPageIndicator); return d->pointColor; } void DPageIndicator::setPointColor(QColor color) { D_D(DPageIndicator); d->pointColor = color; } /*! * \~english \property DPageIndicator::secondaryPointColor * \~english \brief This property holds the color used to draw the noraml dots. * * * \~chinese \property DPageIndicator::secondaryPointColor * \~chinese \brief DPageIndicator::secondaryPointColor 属性用来控制默认点的颜色。 */ QColor DPageIndicator::secondaryPointColor() const { D_DC(DPageIndicator); return d->secondaryPointColor; } void DPageIndicator::setSecondaryPointColor(QColor color) { D_D(DPageIndicator); d->secondaryPointColor = color; } /*! * \~english \property DPageIndicator::pointRadius * \~english \brief This property holds the radius of the highlighted dot. * * * \~chinese \property DPageIndicator::pointRadius * \~chinese \brief DPageIndicator::pointRadius 属性用来控制高亮点的大小(半径)。 */ int DPageIndicator::pointRadius() const { D_DC(DPageIndicator); return d->pointRadius; } void DPageIndicator::setPointRadius(int size) { D_D(DPageIndicator); d->pointRadius = size; } /*! * \~english \property DPageIndicator::secondaryPointRadius * \~english \brief This property holds the radius of the normal dot. * * * \~chinese \property DPageIndicator::secondaryPointRadius * \~chinese \brief DPageIndicator::secondaryPointRadius 属性用来控制普通点的大小(半径)。 */ int DPageIndicator::secondaryPointRadius() const { D_DC(DPageIndicator); return d->secondaryPointRadius; } void DPageIndicator::setSecondaryPointRadius(int size) { D_D(DPageIndicator); d->secondaryPointRadius = size; } /*! * \~english \property DPageIndicator::pointDistance * \~english \brief This property holds the distance between two dots. * * * \~chinese \property DPageIndicator::pointDistance * \~chinese \brief DPageIndicator::pointDistance 属性用来控制两个点之间的距离。 */ int DPageIndicator::pointDistance() const { D_DC(DPageIndicator); return d->pointDistance; } void DPageIndicator::setPointDistance(int distance) { D_D(DPageIndicator); d->pointDistance = distance; } void DPageIndicator::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); const int w = width(); const int h = height(); D_DC(DPageIndicator); const int total_w = d->pageCount * d->pointDistance; const QPoint offset = QPoint((w - total_w) / 2, h / 2); QColor currentPtColor = d->pointColor; QColor nonCurrentPtColor = d->secondaryPointColor; QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::transparent); for (int i(0); i != d->pageCount; ++i) { if (d->currentPage == i) { painter.setBrush(currentPtColor); painter.drawEllipse(offset + QPoint(d->pointDistance / 2 + d->pointDistance * i, 0), d->pointRadius, d->pointRadius); } else { painter.setBrush(nonCurrentPtColor); painter.drawEllipse(offset + QPoint(d->pointDistance / 2 + d->pointDistance * i, 0), d->secondaryPointRadius, d->secondaryPointRadius); } } } DPageIndicatorPrivate::DPageIndicatorPrivate(DPageIndicator *q) : DObjectPrivate(q), pageCount(0), currentPage(-1), pointColor(Qt::red) { } void DPageIndicatorPrivate::setPageCount(const int count) { pageCount = count; D_Q(DPageIndicator); q->update(); } void DPageIndicatorPrivate::nextPage() { currentPage = (currentPage + 1) % pageCount; D_Q(DPageIndicator); q->update(); } void DPageIndicatorPrivate::previousPage() { currentPage = (currentPage ? currentPage : pageCount) - 1; D_Q(DPageIndicator); q->update(); } void DPageIndicatorPrivate::setCurrentPage(const int index) { if (index < -1 || index >= pageCount) { qWarning() << "index out of bounds: " << index << ", max is " << pageCount; return; } currentPage = index; D_Q(DPageIndicator); q->update(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dpageindicator.h000066400000000000000000000045201352002233700210620ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPAGEINDICATOR_H #define DPAGEINDICATOR_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DPageIndicatorPrivate; class LIBDTKWIDGETSHARED_EXPORT DPageIndicator : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DPageIndicator) D_DECLARE_PRIVATE(DPageIndicator) Q_PROPERTY(QColor pointColor READ pointColor WRITE setPointColor DESIGNABLE true) Q_PROPERTY(QColor secondaryPointColor READ secondaryPointColor WRITE setSecondaryPointColor DESIGNABLE true) Q_PROPERTY(int pointRadius READ pointRadius WRITE setPointRadius) Q_PROPERTY(int secondaryPointRadius READ secondaryPointRadius WRITE setSecondaryPointRadius) Q_PROPERTY(int pageCount READ pageCount WRITE setPageCount) Q_PROPERTY(int currentPage READ currentPageIndex WRITE setCurrentPage) Q_PROPERTY(int pointDistance READ pointDistance WRITE setPointDistance) public: explicit DPageIndicator(QWidget *parent = 0); int pageCount() const; void setPageCount(const int count); void nextPage(); void previousPage(); void setCurrentPage(const int index); int currentPageIndex() const; QColor pointColor() const; void setPointColor(QColor color); QColor secondaryPointColor() const; void setSecondaryPointColor(QColor color); int pointRadius() const; void setPointRadius(int size); int secondaryPointRadius() const; void setSecondaryPointRadius(int size); int pointDistance() const; void setPointDistance(int distance); protected: void paintEvent(QPaintEvent *e) override; }; DWIDGET_END_NAMESPACE #endif // DPAGEINDICATOR_H dtkwidget-2.1.1/src/widgets/dpasswdeditanimated.cpp000066400000000000000000000353411352002233700224630ustar00rootroot00000000000000#include "dpasswdeditanimated.h" #include "dkeyboardmonitor.h" #include "private/dpasswdeditanimated_p.h" #include "DThemeManager" #include DWIDGET_BEGIN_NAMESPACE LoadSlider::LoadSlider(QWidget *parent) : QWidget(parent), m_loadSliderColor(Qt::gray) { } void LoadSlider::setLoadSliderColor(const QColor &color) { m_loadSliderColor = color; update(); } void LoadSlider::paintEvent(QPaintEvent *event) { QPainter painter(this); // painter.setOpacity(0.8); QLinearGradient grad(0, height() / 2, width(), height() / 2); grad.setColorAt(0.0, Qt::transparent); grad.setColorAt(1.0, m_loadSliderColor); painter.fillRect(0, 1, width(), height() - 2, grad); QWidget::paintEvent(event); } QColor LoadSlider::loadSliderColor() const { return m_loadSliderColor; } DPasswdEditAnimatedPrivate::DPasswdEditAnimatedPrivate(DPasswdEditAnimated *q) : DTK_CORE_NAMESPACE::DObjectPrivate(q) { } void DPasswdEditAnimatedPrivate::init() { D_Q(DPasswdEditAnimated); QHBoxLayout *mainHLayout = new QHBoxLayout(q); QVBoxLayout *passwdVBLayout = new QVBoxLayout; m_keyboard = new DImageButton; m_passwdEdit = new QLineEdit; m_caps = new DLabel; m_eye = new DImageButton; m_submit = new DImageButton; m_invalidTip = new DArrowRectangle(DArrowRectangle::ArrowTop, DArrowRectangle::FloatWidget); m_invalidMessage = new DLabel(m_invalidTip); m_invalidTip->setContent(m_invalidMessage); m_invalidTip->setMargin(10); m_loadSlider = new LoadSlider(q); m_loadSlider->hide(); m_loadSliderAnim = new QPropertyAnimation(m_loadSlider, "pos", m_loadSlider); m_loadSliderAnim->setDuration(1000); m_loadSliderAnim->setLoopCount(-1); m_loadSliderAnim->setEasingCurve(QEasingCurve::Linear); m_capsEnable = true; m_eyeEnable = true; m_submitEnable = true; m_loadAnimEnable = true; m_isLoading = false; m_alterBeforeHide = false; m_keyboard->setObjectName("KeyboardButton"); m_passwdEdit->setObjectName("PasswdEdit"); m_caps->setObjectName("Capslock"); m_eye->setObjectName("EyeButton"); m_submit->setObjectName("SubmitButton"); m_invalidMessage->setObjectName("InvalidMessage"); m_invalidTip->setObjectName("InvalidTip"); m_keyboard->setStyleSheet("background-color: transparent;"); m_passwdEdit->setStyleSheet("background-color: transparent;"); m_caps->setStyleSheet("background-color: transparent;"); m_eye->setStyleSheet("background-color: transparent;"); m_submit->setStyleSheet("background-color: transparent;"); m_passwdEdit->setEchoMode(QLineEdit::Password); m_passwdEdit->setFrame(false); m_passwdEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_passwdEdit->installEventFilter(q); q->setFocusPolicy(Qt::StrongFocus); q->setFocusProxy(m_passwdEdit); m_caps->setPixmap(QPixmap(":/images/light/images/capslock-hover.svg")); m_invalidMessage->hide(); m_invalidTip->hide(); // fix QLineEdit do not expand width in QHBoxLayout passwdVBLayout->setMargin(0); passwdVBLayout->setContentsMargins(0, 0, 0, 0); passwdVBLayout->setSpacing(0); passwdVBLayout->addWidget(m_passwdEdit); mainHLayout->addWidget(m_keyboard, 0, Qt::AlignLeft); mainHLayout->addLayout(passwdVBLayout, 1); mainHLayout->addWidget(m_caps, 0, Qt::AlignRight); mainHLayout->addWidget(m_eye, 0, Qt::AlignRight); mainHLayout->addWidget(m_submit, 0, Qt::AlignRight); mainHLayout->setContentsMargins(5, 5, 5, 5); q->setLayout(mainHLayout); DThemeManager::registerWidget(q, QStringList("alert") << "editFocus"); m_kbdMonitor = DKeyboardMonitor::instance(); m_kbdMonitor->start(QThread::LowestPriority); _q_resetCapslockState(); q->connect(m_kbdMonitor, SIGNAL(capslockStatusChanged(bool)), q, SLOT(_q_resetCapslockState())); q->connect(m_eye, SIGNAL(clicked()), q, SLOT(_q_onEyeButtonClicked())); q->connect(m_passwdEdit, SIGNAL(returnPressed()), q, SLOT(_q_inputDone())); q->connect(m_passwdEdit, SIGNAL(selectionChanged()), q, SLOT(hideAlert())); q->connect(m_submit, SIGNAL(clicked()), q, SLOT(_q_inputDone())); q->connect(m_keyboard, SIGNAL(clicked()), q, SLOT(_q_onKeyboardButtonClicked())); } void DPasswdEditAnimatedPrivate::_q_onEyeButtonClicked() { D_Q(DPasswdEditAnimated); if (m_passwdEdit->echoMode() == QLineEdit::Password) { q->setEchoMode(QLineEdit::Normal); return; } q->setEchoMode(QLineEdit::Password); } void DPasswdEditAnimatedPrivate::_q_inputDone() { D_Q(DPasswdEditAnimated); q->hideAlert(); QString input = m_passwdEdit->text(); if (input.length() > 0) { _q_showLoadSlider(); Q_EMIT q->submit(input); } } void DPasswdEditAnimatedPrivate::_q_onKeyboardButtonClicked() { D_Q(DPasswdEditAnimated); q->hideAlert(); Q_EMIT q->keyboardButtonClicked(); } void DPasswdEditAnimatedPrivate::_q_showLoadSlider() { D_Q(DPasswdEditAnimated); if (m_loadAnimEnable) { if (!m_isLoading) { m_isLoading = true; m_loadSlider->show(); m_loadSlider->setGeometry(0, 0, LoadSliderWidth, q->height()); m_loadSliderAnim->setStartValue(QPoint(0 - LoadSliderWidth, 0)); m_loadSliderAnim->setEndValue(QPoint(q->width(), 0)); m_loadSliderAnim->start(); } } } void DPasswdEditAnimatedPrivate::_q_hideLoadSlider() { if (m_isLoading) { m_isLoading = false; m_loadSliderAnim->stop(); m_loadSlider->hide(); } } void DPasswdEditAnimatedPrivate::_q_resetCapslockState() { if (m_capsEnable) { if (m_kbdMonitor->isCapslockOn()) { m_caps->setVisible(true); return; } } m_caps->setVisible(false); } /** * \~chinese \class DPasswdEditAnimated * \~chinese \brief 带有动画的密码输入框。 * * \~chinese DPasswdEditAnimated 一个带有动画,大小写标识,键盘布局按钮的密码输入框。 * * \~chinese 动画的效果是一个半透明滑块从左向右滑动, * \~chinese 可以通过 DPasswdEditAnimated::setLoadingEffectColor 来设置滑块的颜色。 * \~chinese 也可以通过 DPasswdEditAnimated::loadingAnimation 拿到 QPropertyAnimation 对象并设置其属性, * \~chinese 以改变动画的一些行为。 */ // ========================PROPERTY START======================== /** * \~chinese \property DPasswdEditAnimated::editFocus * \~chinese \brief 获取焦点的状态 */ // ========================PROPERTY END======================== // ========================SIGNAL START======================== /** * \~chinese \fn DPasswdEditAnimated::submit * \~chinese \brief 提交输入完成数据,一般是因为按下了回车或者点击了提交按钮。 * \~chinese \param input 输入的字符串。 */ /** * \~chinese \fn DPasswdEditAnimated::abort * \~chinese \brief 过程被终止。 */ /** * \~chinese \fn DPasswdEditAnimated::alertChanged * \~chinese \brief 属性 DPasswdEditAnimated::alert 属性发生改变。 */ /** * \~chinese \fn DPasswdEditAnimated::editFocusChanged * \~chinese \brief 属性 DPasswdEditAnimated::editFocus 发生改变。 */ /** * \~chinese \fn DPasswdEditAnimated::keyboardButtonClicked * \~chinese \brief 键盘布局按钮被点击。 */ // ========================SIGNAL END======================== /** * \~chinese \brief 构造一个 DPasswdEditAnimated 实例。 * \~chinese \param parent 为创建对象的父控件。 */ DPasswdEditAnimated::DPasswdEditAnimated(QWidget *parent) : QFrame(parent), DTK_CORE_NAMESPACE::DObject(*new DPasswdEditAnimatedPrivate(this)) { D_D(DPasswdEditAnimated); d->init(); d->m_invalidTip->setParent(parent); } /** * \~chinese \brief 获取输入框对象。 * * \~chinese 拿到QLineEdit类型的输入框对象后可对其进行一些常规设置,如设置最大输入长度等。 * \~chinese \return 输入框对象。 */ QLineEdit *DPasswdEditAnimated::lineEdit() { D_D(DPasswdEditAnimated); return d->m_passwdEdit; } /** * \~chinese \brief 获取警告信息。 * * \~chinese 可以用获取到对象来设置要显示的警告信息。 * \~chinese \return 警告信息对象。 */ QLabel *DPasswdEditAnimated::invalidMessage() { D_D(DPasswdEditAnimated); return d->m_invalidMessage; } /** * \~chinese \brief 获取动画对象。 * * \~chinese 可以用获取到的对象设置动画的属性。 * \~chinese \return 动画对象。 */ QPropertyAnimation *DPasswdEditAnimated::loadingAnimation() { D_D(DPasswdEditAnimated); return d->m_loadSliderAnim; } /** * \~chinese \brief 设置是否需要键盘布局按钮。 * * \~chinese \param value 为true表示需要,反之则反。 */ void DPasswdEditAnimated::setKeyboardButtonEnable(bool value) { D_D(DPasswdEditAnimated); d->m_keyboard->setVisible(value); } /** * \~chinese \brief 设置是否需要大小写指示器。 * * \~chinese \param value 为true表示需要,反之则反。 */ void DPasswdEditAnimated::setCapslockIndicatorEnable(bool value) { D_D(DPasswdEditAnimated); if (d->m_capsEnable != value) { d->m_capsEnable = value; d->_q_resetCapslockState(); } } /** * \~chinese \brief 设置是否需要切换密码隐藏状态的按钮。 * * \~chinese \param value 为true表示需要,反之则反。 */ void DPasswdEditAnimated::setEyeButtonEnable(bool value) { D_D(DPasswdEditAnimated); if (d->m_eyeEnable != value) { d->m_eyeEnable = value; d->m_eye->setVisible(d->m_eyeEnable); } } /** * \~chinese \brief 设置是否需要提交按钮。 * * \~chinese \param value 为true表示需要,反之则反。 */ void DPasswdEditAnimated::setSubmitButtonEnable(bool value) { D_D(DPasswdEditAnimated); if (d->m_submitEnable != value) { d->m_submitEnable = value; d->m_submit->setVisible(d->m_submitEnable); } } /** * \~chinese \brief 设置是否需要动画功能。 * * \~chinese \param value 为true表示需要,反之则反。 */ void DPasswdEditAnimated::setLoadAnimEnable(bool value) { D_D(DPasswdEditAnimated); d->m_loadAnimEnable = value; } /** * \~chinese \brief 设置是密码的显示状态。 * * \~chinese \param value 显示状态。 * * \sa QLineEdit::EchoMode */ void DPasswdEditAnimated::setEchoMode(QLineEdit::EchoMode mode) { D_D(DPasswdEditAnimated); d->m_passwdEdit->setEchoMode(mode); } /** \reimp */ bool DPasswdEditAnimated::eventFilter(QObject *watched, QEvent *event) { D_D(DPasswdEditAnimated); if (watched == d->m_passwdEdit) { switch (event->type()) { case QEvent::FocusIn: Q_EMIT editFocusChanged(true); break; case QEvent::FocusOut: Q_EMIT editFocusChanged(false); break; default: break; } } return false; } /*! * \reimp */ void DPasswdEditAnimated::showEvent(QShowEvent *event) { D_D(DPasswdEditAnimated); // show alert message if it is visible when widget is hidden if (d->m_alterBeforeHide) { showAlert(d->m_invalidMessage->text()); } QFrame::showEvent(event); } /*! * \reimp */ void DPasswdEditAnimated::hideEvent(QHideEvent *event) { D_D(DPasswdEditAnimated); // remember alert visible before hide d->m_alterBeforeHide = alert(); hideAlert(); QFrame::hideEvent(event); } /** * \~chinese \brief 显示警告信息。 * * \~chinese 弹出一个警告信息提示框。 * \~chinese \param message 要显示的信息。 */ void DPasswdEditAnimated::showAlert(const QString &message) { D_D(DPasswdEditAnimated); d->_q_hideLoadSlider(); d->m_invalidMessage->setText(message); d->m_invalidMessage->adjustSize(); d->m_passwdEdit->selectAll(); d->m_passwdEdit->setFocus(); if (isVisible() == false) { d->m_alterBeforeHide = true; return; } if (!d->m_invalidTip->isVisible()) { // focus BUG // d->m_invalidTip->setContent(d->m_invalidMessage); // d->m_invalidTip->adjustSize(); d->m_invalidTip->setContent(d->m_invalidMessage); updateAlertPosition(); Q_EMIT alertChanged(true); } } /** * \~chinese \brief 隐藏警告提示框。 */ void DPasswdEditAnimated::hideAlert() { D_D(DPasswdEditAnimated); if (d->m_invalidTip->isVisible()) { d->m_invalidTip->setVisible(false); Q_EMIT alertChanged(false); } } /** * \~chinese \brief 终止认证过程,同时会关闭警告提示框和停止动画。 */ void DPasswdEditAnimated::abortAuth() { D_D(DPasswdEditAnimated); if (d->m_isLoading) { d->_q_hideLoadSlider(); Q_EMIT abort(); } } /** * \~chinese \brief 更新警告提示框正确位置 */ void DPasswdEditAnimated::updateAlertPosition() { D_D(DPasswdEditAnimated); QPoint pos = mapToParent(rect().bottomLeft()); const int messageHalfWidth = d->m_invalidMessage->width() / 2; d->m_invalidTip->move(pos.x() + messageHalfWidth + 10, pos.y() + 5); const QPoint messagePos = d->m_invalidMessage->pos(); const int h = d->m_invalidTip->height() - d->m_invalidMessage->height() - 10; d->m_invalidMessage->move(messagePos.x(), h / 2); d->m_invalidTip->setArrowX(20); d->m_invalidMessage->show(); d->m_invalidTip->QWidget::show(); } /** * \~chinese \property DPasswdEditAnimated::alert * \~chinese \brief 警告信息的显示状态。 * \~chinese \return true 正在显示警告信息,反之则反。 */ bool DPasswdEditAnimated::alert() { D_D(DPasswdEditAnimated); return d->m_invalidTip->isVisible(); } /** * \~chinese \brief 设置提交按钮的图标。 * * \~chinese 参数可以是文件系统中的文件路径,也可以是资源系统中的路径。 * \~chinese \param normalPic 正常状态下的图标。 * \~chinese \param hoverPic 鼠标悬浮状态下的图标。 * \~chinese \param pressPic 鼠标按下状态下的图标。 */ void DPasswdEditAnimated::setSubmitIcon(const QString &normalPic, const QString &hoverPic, const QString &pressPic) { D_D(DPasswdEditAnimated); d->m_submit->setNormalPic(normalPic); d->m_submit->setHoverPic(hoverPic); d->m_submit->setPressPic(pressPic); } /** * \~chinese \property DPasswdEditAnimated::loadingEffectColor * \~chinese \brief 动画的颜色。 * \~chinese \sa DPasswdEditAnimated::setLoadingEffectColor */ QColor DPasswdEditAnimated::loadingEffectColor() { D_D(DPasswdEditAnimated); return d->m_loadSlider->loadSliderColor(); } /** * \~chinese \brief 设置动画的颜色。 * * \~chinese \param color 动画的颜色。 */ void DPasswdEditAnimated::setLoadingEffectColor(const QColor &color) { D_D(DPasswdEditAnimated); d->m_loadSlider->setLoadSliderColor(color); } DWIDGET_END_NAMESPACE #include "moc_dpasswdeditanimated.cpp" dtkwidget-2.1.1/src/widgets/dpasswdeditanimated.h000066400000000000000000000042341352002233700221250ustar00rootroot00000000000000#ifndef DPASSWDEDITANIMATED_H #define DPASSWDEDITANIMATED_H #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DPasswdEditAnimatedPrivate; class LIBDTKWIDGETSHARED_EXPORT DPasswdEditAnimated : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_DISABLE_COPY(DPasswdEditAnimated) Q_PROPERTY(bool alert READ alert NOTIFY alertChanged) Q_PROPERTY(bool editFocus READ hasFocus NOTIFY editFocusChanged) Q_PROPERTY(QColor loadingEffectColor READ loadingEffectColor WRITE setLoadingEffectColor DESIGNABLE true SCRIPTABLE true) public: DPasswdEditAnimated(QWidget *parent); Q_SIGNALS: void submit(const QString &input); void abort(); void alertChanged(bool alert); void editFocusChanged(bool focus); void keyboardButtonClicked(); public Q_SLOTS: void setKeyboardButtonEnable(bool value); void setCapslockIndicatorEnable(bool value); void setEyeButtonEnable(bool value); void setSubmitButtonEnable(bool value); void setLoadAnimEnable(bool value); void setEchoMode(QLineEdit::EchoMode mode); void setSubmitIcon(const QString &normalPic, const QString &hoverPic, const QString &pressPic); void setLoadingEffectColor(const QColor &color); void showAlert(const QString &message); void hideAlert(); void abortAuth(); void updateAlertPosition(); public: bool alert(); QLineEdit *lineEdit(); QPropertyAnimation *loadingAnimation(); QLabel *invalidMessage(); QColor loadingEffectColor(); protected: bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent *event) Q_DECL_OVERRIDE; protected: D_PRIVATE_SLOT(void _q_resetCapslockState()) D_PRIVATE_SLOT(void _q_onEyeButtonClicked()) D_PRIVATE_SLOT(void _q_showLoadSlider()) D_PRIVATE_SLOT(void _q_hideLoadSlider()) D_PRIVATE_SLOT(void _q_inputDone()) D_PRIVATE_SLOT(void _q_onKeyboardButtonClicked()) private: D_DECLARE_PRIVATE(DPasswdEditAnimated) }; DWIDGET_END_NAMESPACE #endif // DPASSWDEDITANIMATED_H dtkwidget-2.1.1/src/widgets/dpasswordedit.cpp000066400000000000000000000063021352002233700213140ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dpasswordedit.h" #include "dthememanager.h" #include "private/dpasswordedit_p.h" #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DPasswordEdit * \~english \brief The DPasswordEdit class provides a widget to let user input password. */ /*! * \~english \brief DPasswordEdit::DPasswordEdit constructs an instance of DPasswordEdit. * \~english \param parent is passed to DLineEdit constructor. */ /*! * \~chinese \class DPasswordEdit * \~chinese \brief DPasswordEdit提供了一个让用户输入的密码框 */ /*! * \~chinese \brief DPasswordEdit的构造函数 * * @param parent */ DPasswordEdit::DPasswordEdit(QWidget *parent) : DLineEdit(*new DPasswordEditPrivate(this), parent) { // This will do the trick refreshing your style sheet for you // after your registered property changed. DThemeManager::registerWidget(this, QStringList({"isEchoMode"})); D_D(DPasswordEdit); d->init(); } /*! * \~english \property DPasswordEdit::isEchoMode * \~english \brief This property holds whether the user input should be displayed directly * or show as dots. * * \see QLineEdit::EchoMode */ /*! * \~chinese \property DPasswordEdit::isEchoMode * \~chinese \brief 该属性会控制用户输入是否可见 * * \see QLineEdit::EchoMode */ bool DPasswordEdit::isEchoMode() const { return echoMode() == Normal; } /*! * \~chinese \brief 设置显示模式 * \see QLineEdit::EchoMode * @param mode */ void DPasswordEdit::setEchoMode(QLineEdit::EchoMode mode) { if (mode != echoMode()) { QLineEdit::setEchoMode(mode); // To inform the style sheet system that our style sheet needs // to be recalculated. Q_EMIT echoModeChanged(mode == Normal); } } DPasswordEditPrivate::DPasswordEditPrivate(DPasswordEdit *q) : DLineEditPrivate(q) { } void DPasswordEditPrivate::init() { D_Q(DPasswordEdit); q->setEchoMode(q->Password); q->setIconVisible(true); // FIXME: DPasswordEdit instances that initialized with a parent will fail // to load the little eye icon if we don't do the below thing. DUtil::TimerSingleShot(0, [q] { q->setStyleSheet(q->styleSheet()); }); q->connect(q, SIGNAL(iconClicked()), q, SLOT(_q_toggleEchoMode())); } void DPasswordEditPrivate::_q_toggleEchoMode() { D_Q(DPasswordEdit); if (q->isEchoMode()) { q->setEchoMode(q->Password); } else { q->setEchoMode(q->Normal); } } DWIDGET_END_NAMESPACE #include "moc_dpasswordedit.cpp" dtkwidget-2.1.1/src/widgets/dpasswordedit.h000066400000000000000000000024721352002233700207650ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPASSWORDEDIT_H #define DPASSWORDEDIT_H #include "dlineedit.h" DWIDGET_BEGIN_NAMESPACE class DPasswordEditPrivate; class LIBDTKWIDGETSHARED_EXPORT DPasswordEdit : public DLineEdit { Q_OBJECT Q_PROPERTY(bool isEchoMode READ isEchoMode NOTIFY echoModeChanged) public: DPasswordEdit(QWidget *parent = nullptr); bool isEchoMode() const; void setEchoMode(EchoMode mode); Q_SIGNALS: void echoModeChanged(bool echoOn); protected: Q_DISABLE_COPY(DPasswordEdit) D_DECLARE_PRIVATE(DPasswordEdit) Q_PRIVATE_SLOT(d_func(), void _q_toggleEchoMode()) }; DWIDGET_END_NAMESPACE #endif // DPASSWORDEDIT_H dtkwidget-2.1.1/src/widgets/dpicturesequenceview.cpp000066400000000000000000000174631352002233700227150ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dpicturesequenceview.h" #include "private/dpicturesequenceview_p.h" #include #include #include DWIDGET_BEGIN_NAMESPACE DPictureSequenceViewPrivate::DPictureSequenceViewPrivate(DPictureSequenceView *q) : DObjectPrivate(q) { } DPictureSequenceViewPrivate::~DPictureSequenceViewPrivate() { for (auto *item : pictureItemList) { scene->removeItem(item); delete item; } scene->deleteLater(); } void DPictureSequenceViewPrivate::init() { D_Q(DPictureSequenceView); scene = new QGraphicsScene(q); refreshTimer = new QTimer(q); refreshTimer->setInterval(33); q->setScene(scene); q->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); q->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); q->setFrameShape(QFrame::NoFrame); q->connect(refreshTimer, SIGNAL(timeout()), q, SLOT(_q_refreshPicture())); } void DPictureSequenceViewPrivate::play() { refreshTimer->start(); } QPixmap DPictureSequenceViewPrivate::loadPixmap(const QString &path) { D_Q(DPictureSequenceView); qreal ratio = 1.0; const qreal devicePixelRatio = q->devicePixelRatioF(); QPixmap pixmap; if (!qFuzzyCompare(ratio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(path); } return pixmap; } void DPictureSequenceViewPrivate::_q_refreshPicture() { QGraphicsPixmapItem *item = pictureItemList.value(lastItemPos++); if (item) item->hide(); if (lastItemPos == pictureItemList.count()) { lastItemPos = 0; if (singleShot) refreshTimer->stop(); D_QC(DPictureSequenceView); Q_EMIT q->playEnd(); } item = pictureItemList.value(lastItemPos); if (item) item->show(); } /*! * \~english \class DPictureSequenceView * \brief DPictureSequenceView draw a serial of picture as movie. It trigger picture update by an timer. */ /*! * \~english \property DPictureSequenceView::singleShot * \brief Animation is just refresh one time. */ /*! * \~english \property DPictureSequenceView::speed * \brief Update interval of refresh timer by ms. */ /*! * \~chinese \class DPictureSequenceView * \brief 将图片序列绘制为动画,通过定时器刷新来实现动画效果。 */ /*! * \~chinese \property DPictureSequenceView::singleShot * \brief 控制动画是否只播放一次。 */ /*! * \~chinese \property DPictureSequenceView::speed * \brief 动画更新时间间隔,单位为毫秒(ms)。 */ DPictureSequenceView::DPictureSequenceView(QWidget *parent) : QGraphicsView(parent), DObject(*new DPictureSequenceViewPrivate(this)) { D_D(DPictureSequenceView); d->init(); } /*! * \~english \brief Set picture source list by a uri template an range. * \param srcFormat is the source uri template, just like ":/images/Spinner/Spinner%1.png". * \param range for build source uris, it make an sequence of number. * \param fieldWidth string width when convert number to string, fill "0" if needed. * \param autoScale auto resize source image to widget size, default to false. */ /*! * \~chinese \brief 通过一个URI模板来设置图片序列 * \param srcFormat 图片源模板,例如":/images/Spinner/Spinner%1.png"。 * \param range 图片的序号范围,需要为一系列整数。 * \param fieldWidth 图片的序号转化为字符串时的宽度,通过‘0’来填充. * \param autoScale 是否自动缩放图片,默认不缩放。 */ void DPictureSequenceView::setPictureSequence(const QString &srcFormat, const QPair &range, const int fieldWidth, const bool autoScale) { QStringList pics; for (int i(range.first); i != range.second; ++i) pics << srcFormat.arg(i, fieldWidth, 10, QChar('0')); setPictureSequence(pics, autoScale); } /*! * \~english \brief Set picture source list by a QStringList. * \param sequence url list * \param autoScale auto resize source image to widget size, default to false. */ /*! * \~chinese \brief 通过URI列表来设置图片序列。 * \param sequence 图片源路径。 * \param autoScale 是否自动缩放图片,默认不缩放。 */ void DPictureSequenceView::setPictureSequence(const QStringList &sequence, const bool autoScale) { D_D(DPictureSequenceView); QList pixmapSequence; for (const QString &path : sequence) { pixmapSequence << d->loadPixmap(path); } setPictureSequence(pixmapSequence, autoScale); } /*! * \~english \brief Set picture source with pixmap array * \param sequence image data list. * \param autoScale auto resize source image to widget size, default to false. */ /*! * \~chinese \brief 通过位图数据序列来初始化图片序列。 * \param sequence 位图数据序列。 * \param autoScale 是否自动缩放图片,默认不缩放。 */ void DPictureSequenceView::setPictureSequence(const QList &sequence, const bool autoScale) { D_D(DPictureSequenceView); stop(); d->scene->clear(); d->pictureItemList.clear(); for (QPixmap pixmap : sequence) { if (autoScale) { pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); } d->pictureItemList << d->scene->addPixmap(pixmap); d->pictureItemList.last()->hide(); } if (!d->pictureItemList.isEmpty()) { d->pictureItemList.first()->show(); } setStyleSheet("background-color:transparent;"); } /*! * \~english \brief Start/resume update timer and show animation. */ /*! * \~chinese \brief 开始/恢复播放。 */ void DPictureSequenceView::play() { D_D(DPictureSequenceView); d->play(); } /*! * \~english \brief Pause animation and stay on current picture. */ /*! * \~chinese \brief 暂停播放并停止在当前图片上。 */ void DPictureSequenceView::pause() { D_D(DPictureSequenceView); d->refreshTimer->stop(); } /*! * \~english \brief Stop animation and rest to first picture. */ /*! * \~chinese \brief 暂停播放并停止在初始图片上。 */ void DPictureSequenceView::stop() { D_D(DPictureSequenceView); d->refreshTimer->stop(); if (d->pictureItemList.count() > d->lastItemPos) d->pictureItemList[d->lastItemPos]->hide(); if (!d->pictureItemList.isEmpty()) d->pictureItemList[0]->show(); d->lastItemPos = 0; } int DPictureSequenceView::speed() const { D_DC(DPictureSequenceView); return d->refreshTimer->interval(); } void DPictureSequenceView::setSpeed(int speed) { D_D(DPictureSequenceView); d->refreshTimer->setInterval(speed); } bool DPictureSequenceView::singleShot() const { D_DC(DPictureSequenceView); return d->singleShot; } void DPictureSequenceView::setSingleShot(bool singleShot) { D_D(DPictureSequenceView); d->singleShot = singleShot; } DWIDGET_END_NAMESPACE #include "moc_dpicturesequenceview.cpp" dtkwidget-2.1.1/src/widgets/dpicturesequenceview.h000066400000000000000000000037711352002233700223570ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPICTURESEQUENCEVIEW_H #define DPICTURESEQUENCEVIEW_H #include "dtkwidget_global.h" #include "dobject.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DPictureSequenceViewPrivate; class LIBDTKWIDGETSHARED_EXPORT DPictureSequenceView : public QGraphicsView, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(int speed READ speed WRITE setSpeed NOTIFY speedChanged) Q_PROPERTY(bool singleShot READ singleShot WRITE setSingleShot) public: DPictureSequenceView(QWidget *parent = nullptr); void setPictureSequence(const QString &srcFormat, const QPair &range, const int fieldWidth = 0, const bool autoScale = false); void setPictureSequence(const QStringList &sequence, const bool autoScale = false); void setPictureSequence(const QList &sequence, const bool autoScale = false); void play(); void pause(); void stop(); int speed() const; void setSpeed(int speed); bool singleShot() const; void setSingleShot(bool singleShot); Q_SIGNALS: void speedChanged(int speed) const; void playEnd() const; private: D_PRIVATE_SLOT(void _q_refreshPicture()) Q_DISABLE_COPY(DPictureSequenceView) D_DECLARE_PRIVATE(DPictureSequenceView) }; DWIDGET_END_NAMESPACE #endif // DPICTURESEQUENCEVIEW_H dtkwidget-2.1.1/src/widgets/dplatformwindowhandle.cpp000066400000000000000000001330271352002233700230410ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dplatformwindowhandle.h" #include "dapplication.h" #include "util/dwindowmanagerhelper.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name DEFINE_CONST_CHAR(useDxcb); DEFINE_CONST_CHAR(redirectContent); DEFINE_CONST_CHAR(netWmStates); DEFINE_CONST_CHAR(windowRadius); DEFINE_CONST_CHAR(borderWidth); DEFINE_CONST_CHAR(borderColor); DEFINE_CONST_CHAR(shadowRadius); DEFINE_CONST_CHAR(shadowOffset); DEFINE_CONST_CHAR(shadowColor); DEFINE_CONST_CHAR(clipPath); DEFINE_CONST_CHAR(frameMask); DEFINE_CONST_CHAR(frameMargins); DEFINE_CONST_CHAR(translucentBackground); DEFINE_CONST_CHAR(enableSystemResize); DEFINE_CONST_CHAR(enableSystemMove); DEFINE_CONST_CHAR(enableBlurWindow); DEFINE_CONST_CHAR(windowBlurAreas); DEFINE_CONST_CHAR(windowBlurPaths); DEFINE_CONST_CHAR(autoInputMaskByClipPath); // functions DEFINE_CONST_CHAR(setWmBlurWindowBackgroundArea); DEFINE_CONST_CHAR(setWmBlurWindowBackgroundPathList); DEFINE_CONST_CHAR(setWmBlurWindowBackgroundMaskImage); DEFINE_CONST_CHAR(setWindowProperty); DEFINE_CONST_CHAR(pluginVersion); DEFINE_CONST_CHAR(disableOverrideCursor); DEFINE_CONST_CHAR(enableDxcb); DEFINE_CONST_CHAR(isEnableDxcb); DEFINE_CONST_CHAR(setEnableNoTitlebar); DEFINE_CONST_CHAR(isEnableNoTitlebar); static void setWindowProperty(QWindow *window, const char *name, const QVariant &value) { if (!window) return; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) static QFunctionPointer setWindowProperty = qApp->platformFunction(_setWindowProperty); #else constexpr QFunctionPointer setWindowProperty = nullptr; #endif if (!setWindowProperty) { window->setProperty(name, value); return; } reinterpret_cast(setWindowProperty)(window, name, value); } /*! * \~chinese \class DPlatformWindowHandle * \~chinese \brief 一个和Qt dxcb平台插件交互的工具类,实质性的功能皆在dxcb插件中实现,此插件目前只 * \~chinese 支持X11平台,在其它平台上使用这个类不会有任何效果。关于dxcb:它介于Qt应用和Qt xcb平台 * \~chinese 插件之间,通过覆写xcb插件中某些对象的虚函数来改变它的一些行为,本质上来讲是Qt xcb插件的 * \~chinese 扩展,在X11平台上为DTK应用提供了一些改变窗口效果的功能(比如自定义窗口的边框)、其它和平 * \~chinese 台密切相关的实现(比如修复Qt应用在X11平台的一些bug),不能脱离Qt xcb插件独立运行。dxcb * \~chinese 通过重载 QPlatformNativeInterface 提供接口,DPlatformWindowHandle 中使用 * \~chinese QGuiApplication::platformFunction 调用这些接口。Application、dxcb、qt xcb 之间 * \~chinese 的关系: * \~chinese \htmlonly *
 *       ┏━━━━━━━━━━━━━━━━┓
 *       ┃   Application  ┃
 *       ┗━━━━━━━━━━━━━━━━┛
 *               ⇅
 *     ┏━━━━━━━━━━━━━━━━━━━━┓
 *     ┃     dxcb plugin    ┃
 *     ┗━━━━━━━━━━━━━━━━━━━━┛
 *               ⇅
 *  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
 *  ┃      qt xcb platform      ┃
 *  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 * 
* \endhtmlonly * \~chinese \sa \href{http://doc.qt.io/qt-5/qpa.html,QPA} * \~chinese \sa \href{https://github.com/linuxdeepin/qt5dxcb-plugin/,dxcb插件} * \~chinese \sa DApplication::loadDXcbPlugin * \~chinese \sa DApplication::isDXcbPlatform * \~chinese \sa QGuiApplication::platformNativeInterface * \~chinese \sa DMainWindow * \~chinese \sa DWindowManagerHelper * \~chinese \warning 使用此工具前要确保应用加载了dxcb插件 * \~chinese \warning 因为 QGuiApplication::platformFunction 是在 Qt 5.4.0 版本引入的新接口, * \~chinese 所以 DPlatformWindowHandle 不支持 Qt 5.4.0 以下版本。 */ /*! * \~chinese \property DPlatformWindowHandle::windowRadius * \~chinese \brief 窗口的圆角半径。默认情况下,窗口管理器支持混成时,圆角半径为4,否则为0,并且 * \~chinese 会随着窗口管理器开启/关闭混成效果而变化 * \~chinese \note 可读可写 * \~chinese \note 窗口为半屏、全屏或最大化状态时此值不生效 * \~chinese \warning 手动设置值后将无法再随着窗口管理器是否支持混成而自动更新边框宽度 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::borderWidth * \~chinese \brief 窗口的外边框宽度。默认情况下,窗口管理器支持混成时,边框宽度为1,否则对于可以 * \~chinese 改变大小的窗口其值为2,否则为1,并且会随着窗口管理器开启/关闭混成效果而变化 * \~chinese \note 可读可写 * \~chinese \warning 手动设置值后将无法再随着窗口管理器是否支持混成而自动更新边框宽度 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::borderColor * \~chinese \brief 窗口外边框的颜色。默认情况下,窗口管理器支持混成时,颜色为 QColor(0, 0, 0, 255 * 0.15), * \~chinese 否则为边框颜色和 #e0e0e0 的混合,并且会随着窗口管理器开启/关闭混成效果而变化 * \~chinese \note 可读可写 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::shadowRadius * \~chinese \brief 窗口的阴影半径。默认为 60 * \~chinese \note 可读可写 * \~chinese \note 窗口管理器不支持混成时此值无效 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::shadowOffset * \~chinese \brief 窗口阴影的偏移量。默认为 QPoint(0,16) * \~chinese \note 可读可写 * \~chinese \note 窗口管理器不支持混成时此值无效 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::shadowColor * \~chinese \brief 窗口阴影的颜色。默认为 QColor(0, 0, 0, 255 * 0.6) * \~chinese \note 可读可写 * \~chinese \note 窗口管理器不支持混成时此值无效 * \~chinese \sa DWindowManagerHelper::hasComposite */ /*! * \~chinese \property DPlatformWindowHandle::clipPath * \~chinese \brief 窗口的裁剪区域。处于路径内部的区域为窗口有效区域,非有效区域内的窗口内容 * \~chinese 将无法显示,并且无法收到鼠标和触摸事件。示例: * \~chinese \code * QWidget w; * QPainterPath path; * QFont font; * * font.setPixelSize(100); * path.addText(0, 150, font, "deepin"); * * DPlatformWindowHandle handle(&w); * * handle.setClipPath(path); * w.resize(400, 200); * w.show(); * \endcode * \~chinese \image html clip_window_demo.gif * \~chinese \note 可读可写 * \~chinese \note 窗口的阴影和外边框绘制和其有效区域密切相关 * \~chinese \warning 设置此属性后将导致 DPlatformWindowHandle::windowRadius 失效 */ /*! * \~chinese \property DPlatformWindowHandle::frameMask * \~chinese \brief 设置 Frame Window 的遮罩,和 \a clipPath 不同的是,它的裁剪包括阴影 * \~chinese 部分。示例: * \~chinese \code * QWidget w; * DPlatformWindowHandle handle(&w); * * // 为何更好的观察效果,此处将阴影改为蓝色 * handle.setShadowColor(Qt::blue); * w.resize(400, 200); * w.show(); * QRect frame_rect = w.rect() + handle.frameMargins(); * frame_rect.moveTopLeft(QPoint(0, 0)); * handle.setFrameMask(QRegion(frame_rect, QRegion::Ellipse)); * \endcode * \~chinese \image html frame_mask_demo.png * \~chinese \note 可读可写 * \~chinese \note 由于实现机制限制,使用此属性裁剪 Frame Window 时,无法去除边缘产生的锯齿 */ /*! * \~chinese \property DPlatformWindowHandle::frameMargins * \~chinese \brief Sub Window 相对于 Frame Window 的边距 * \~chinese \image html frame_margins.png * \~chinese \note 只读 * \~chinese \warning 在窗口隐藏时不保证此值的正确性 */ /*! * \~chinese \property DPlatformWindowHandle::translucentBackground * \~chinese \brief 如果此属性值为 true,则在更新窗口绘制内容之前会先清空要更新区域内的图像, * \~chinese 否则不清空,默认为 false * \~chinese \note 可读可写 */ /*! * \~chinese \property DPlatformWindowHandle::enableSystemResize * \~chinese \brief 如果此属性值为 true,则允许外界改变窗口的大小(如使用鼠标拖拽窗口边框), * \~chinese 否则不允许。默认为 true * \~chinese \note 无论属性值是多少,Qt::Popup 和 Qt::BypassWindowManagerHint 类型的 * \~chinese 窗口都不允许改变大小 * \~chinese \note 可读可写 * \~chinese \note 此属性仅仅控制 dxcb 中的行为,不会影响窗口管理器的行为 * \~chinese \sa QWidget::setFixedSize * \~chinese \sa QWindow::setMinimumSize * \~chinese \sa QWindow::setMaximumSize * \~chinese \sa DWindowManagerHelper::FUNC_RESIZE */ /*! * \~chinese \property DPlatformWindowHandle::enableSystemMove * \~chinese \brief 如果此属性值为 ture,则允许外界移动窗口的位置(如使用鼠标拖拽移动窗口), * \~chinese 否则不允许。默认为 true * \~chinese \note 无论属性值是多少,Qt::Popup 和 Qt::BypassWindowManagerHint 类型的 * \~chinese 窗口都不允许改变大小 * \~chinese \note 可读可写 * \~chinese \note 此属性仅仅控制 dxcb 中的行为,不会影响窗口管理器的行为 * \~chinese \sa DWindowManagerHelper::FUNC_MOVE */ /*! * \~chinese \property DPlatformWindowHandle::enableBlurWindow * \~chinese \brief 如果此属性为 true,则窗口有效区域内的背景将呈现出模糊效果,否则无特效。 * \~chinese 默认为 false * \~chinese \note 可读可写 * \~chinese \sa DPlatformWindowHandle::setWindowBlurAreaByWM */ /*! * \~chinese \property DPlatformWindowHandle::autoInputMaskByClipPath * \~chinese \brief 如果此属性值为 true,则窗口可输入区域跟随其 \a clipPath 属性,否则不 * \~chinese 跟随。默认为 true * \~chinese \note 可输入区域指可接收鼠标或触摸事件的区域 * \~chinese \note 可读可写 */ /*! * \~chinese \property DPlatformWindowHandle::realWindowId * \~chinese \brief Sub Window 的窗口 id,直接使用 QWindow::winId 或 QWidget::winId * \~chinese 获取到的是 Frame Window 的窗口 id * \~chinese \note 只读 */ /*! * \~chinese \fn DPlatformWindowHandle::frameMarginsChanged * \~chinese \brief 信号会在 frameMargins 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::windowRadiusChanged * \~chinese \brief 信号会在 windowRadius 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::borderWidthChanged * \~chinese \brief 信号会在 borderWidth 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::borderColorChanged * \~chinese \brief 信号会在 borderColor 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::shadowRadiusChanged * \~chinese \brief 信号会在 shadowRadius 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::shadowOffsetChanged * \~chinese \brief 信号会在 shadowOffset 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::shadowColorChanged * \~chinese \brief 信号会在 shadowColor 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::clipPathChanged * \~chinese \brief 信号会在 clipPath 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::frameMaskChanged * \~chinese \brief 信号会在 frameMask 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::translucentBackgroundChanged * \~chinese \brief 信号会在 translucentBackground 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::enableSystemResizeChanged * \~chinese \brief 信号会在 enableSystemResize 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::enableSystemMoveChanged * \~chinese \brief 信号会在 enableSystemMove 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::enableBlurWindowChanged * \~chinese \brief 信号会在 enableBlurWindow 属性的值改变时被发送 * \~chinese \fn DPlatformWindowHandle::autoInputMaskByClipPathChanged * \~chinese \brief 信号会在 autoInputMaskByClipPath 属性的值改变时被发送 */ /*! * \~chinese \struct DPlatformWindowHandle::WMBlurArea * \~chinese \brief 描述窗口背景模糊区域的数据结构,包含位置、大小、圆角半径等信息 * \var DPlatformWindowHandle::WMBlurArea::x * 水平方向的坐标 * \var DPlatformWindowHandle::WMBlurArea::y * 竖直方向的坐标 * \var DPlatformWindowHandle::WMBlurArea::width * 区域的宽度 * \var DPlatformWindowHandle::WMBlurArea::height * 区域的高度 * \var DPlatformWindowHandle::WMBlurArea::xRadius * 水平方向的圆角半径 * \var DPlatformWindowHandle::WMBlurArea::yRaduis * 竖直方向的圆角半径 */ /*! * \~chinese \brief DPlatformWindowHandle::DPlatformWindowHandle * \~chinese 将 \a window 对象传递给 enableDXcbForWindow * \~chinese \param window 要开启DTK风格的主窗口 * \~chinese \param parent DPlatformWindowHandle 对象的父对象 * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWindow *) */ DPlatformWindowHandle::DPlatformWindowHandle(QWindow *window, QObject *parent) : QObject(parent) , m_window(window) { enableDXcbForWindow(window); window->installEventFilter(this); } /*! * \~chinese \brief DPlatformWindowHandle::DPlatformWindowHandle * \~chinese 同 DPlatformWindowHandle::DPlatformWindowHandle(QWindow *window, QObject *parent), * \~chinese 这只是针对 QWidget 对象的重载,将 \a widget 对象传递给 enableDXcbForWindow * \~chinese \param widget 要开启DTK风格的主窗口 * \~chinese \param parent DPlatformWindowHandle 对象的父对象 * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWidget *) */ DPlatformWindowHandle::DPlatformWindowHandle(QWidget *widget, QObject *parent) : QObject(parent) , m_window(Q_NULLPTR) { enableDXcbForWindow(widget); m_window = widget->window()->windowHandle(); if (m_window) m_window->installEventFilter(this); } /*! * \~chinese \brief DPlatformWindowHandle::pluginVersion * \~chinese \return 返回dxcb插件的版本 * \~chinese \note 在旧版dxcb插件中未实现获取版本的接口,将会返回一个空的 QString 对象 */ QString DPlatformWindowHandle::pluginVersion() { QFunctionPointer pv = 0; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) pv = qApp->platformFunction(_pluginVersion); #endif if (Q_UNLIKELY(!pv)) return QString(); return reinterpret_cast(pv)(); } static QWindow *ensureWindowHandle(QWidget *widget) { QWidget *window = widget->window(); QWindow *handle = window->windowHandle(); if (!handle) { bool save_flag = qApp->testAttribute(Qt::AA_DontCreateNativeWidgetSiblings); qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true); window->setAttribute(Qt::WA_NativeWindow); handle = window->windowHandle(); window->setAttribute(Qt::WA_NativeWindow, false); // dxcb version >= 1.1.6 if (!DPlatformWindowHandle::pluginVersion().isEmpty()) { /// TODO: Avoid call parentWidget()->enforceNativeChildren(). qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, save_flag); } } return handle; } /*! * \~chinese \brief DPlatformWindowHandle::enableDXcbForWindow * \~chinese 这是一个针对 QWidget 类型主窗口的重载函数,此函数将设置 QWidget 对象的 Qt::WA_NativeWindow * \~chinese 标志,之后将其 QWidget::windowHandle 对象作为参数传递给 enableDXcbForWindow(QWindow *) * \~chinese \param widget * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWindow *window) */ void DPlatformWindowHandle::enableDXcbForWindow(QWidget *widget) { if (!DApplication::isDXcbPlatform()) return; QWindow *handle = ensureWindowHandle(widget); enableDXcbForWindow(handle); } /*! * \~chinese \brief DPlatformWindowHandle::enableDXcbForWindow * \~chinese 将 QWindow 的窗口装饰设置为 DTK 风格,这将使用 Qt::FramelessWindowHint 去除本地窗口管理器 * \~chinese 给窗口附加的边框修饰以及窗口阴影效果,并且,会创建一个对应的本地窗口(在X11平台就是指X Window) * \~chinese 作为此窗口的父窗口,父窗口(Frame Window)中将根据子窗口(Sub Window)的有效区域绘制阴影和边 * \~chinese 框等效果,默认情况下,子窗口的有效区域为一个圆角矩形,结构如下: * \~chinese \htmlonly *
 * ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
 * ┃    Frame Window             ┃
 * ┃                             ┃
 * ┃                             ┃
 * ┃     ╭┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╮     ┃
 * ┃     ┋    Sub Window   ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ┋                 ┋     ┃
 * ┃     ╰┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╯     ┃
 * ┃                             ┃
 * ┃                             ┃
 * ┃                             ┃
 * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 * 
* \endhtmlonly * * 但是,如果窗口管理器自身支持隐藏窗口标题栏,则此方法将优先调用 enableNoTitlebarForWindow 实现同样的效果。 * * 例子: * \~chinese \code * QWidget w1; * * w1.setWindowTitle("使用系统边框的窗口"); * w1.show(); * * DMainWindow w2; * QWidget w3; * * w2.titlebar()->setTitle("使用DTK风格边框带标题栏的窗口"); * w3.setWindowTitle("使用DTK风格边框没有标题栏的窗口"); * w2.show(); * * DPlatformWindowHandle::enableDXcbForWindow(&w3); * w3.show(); // 因为这个窗口没有标题栏,所以不会显示窗口标题 * * \endcode * \~chinese \image html dtk_and_system_window.jpeg * \~chinese 开启了dxcb的窗口,在窗口外边缘10像素的范围按下鼠标左键可以触发改变窗口大小的行为, * \~chinese 而且会自动将鼠标吸附到对应的窗口边缘,增强了拖拽改变窗口大小的体验。效果: * \~chinese \image html dtk_window_cursor_effect.gif * \~chinese 另外,所有到达主窗口的鼠标移动事件如果没有调用 QEvent::accepted ,则会触发主窗 * \~chinese 口的移动效果,默认情况下,一个没有子控件的DTK窗口,如果没有重写 QWidget::mouseMoveEvent , * \~chinese 则使用鼠标左键在窗口的任意地方按住并移动都会触发移动窗口的动作。如: * \~chinese \code * class Window : public QWidget * { * public: * explicit Window() { * * } * protected: * void mouseMoveEvent(QMouseEvent *event) override { * event->accept(); * } * }; * \endcode * \~chinese \code * Window w; * DPlatformWindowHandle::enableDXcbForWindow(&w); * w.show(); * \endcode * \~chinese 将无法使用鼠标移动窗口w * * \~chinese 窗口管理器(如X11平台上的Window Manager)是否支持混成会影响dxcb插件对窗口添加的默认装饰。 * \~chinese \note 在 Deepin 桌面环境中,打开窗口特效则支持混成,关闭窗口特效则不支持混成 * * \~chinese 支持混成: * \~chinese \image html enable_composite.png * \~chinese 不支持混成: * \~chinese \image html disable_composite.png * \~chinese 并且,在不支持混成的窗口管理器中,上述“窗口边缘的鼠标吸附”效果也会被禁用。可以使用 * \~chinese DWindowManagerHelper::hasComposite 或 QX11Info::isCompositingManagerRunning * \~chinese 判断当前运行的窗口管理器是否支持混成。 * \~chinese \param window * \~chinese \sa DPlatformWindowHandle::setEnableNoTitlebarForWindow */ void DPlatformWindowHandle::enableDXcbForWindow(QWindow *window) { // 优先使用窗口管理器中实现的no titlebar接口实现自定义窗口修饰器的效果 if (setEnableNoTitlebarForWindow(window, true)) { return; } if (!DApplication::isDXcbPlatform()) return; QFunctionPointer enable_dxcb = nullptr; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) enable_dxcb = qApp->platformFunction(_enableDxcb); #endif if (enable_dxcb) { (*reinterpret_cast(enable_dxcb))(window); } else if (window->handle()) { Q_ASSERT_X(window->property(_useDxcb).toBool(), "DPlatformWindowHandler:", "Must be called before window handle has been created. See also QWindow::handle()"); } else { window->setProperty(_useDxcb, true); } } /*! * \~chinese \brief DPlatformWindowHandle::enableDXcbForWindow * \~chinese 这只是一个重载函数 * \~chinese \param widget * \~chinese \param redirectContent * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWidget*) * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWindow *, bool) */ void DPlatformWindowHandle::enableDXcbForWindow(QWidget *widget, bool redirectContent) { enableDXcbForWindow(ensureWindowHandle(widget), redirectContent); } /*! * \~chinese \brief DPlatformWindowHandle::enableDXcbForWindow * \~chinese 功能上和 DPlatformWindowHandle::enableDXcbForWindow(QWindow *) 一致 * \~chinese \param window * \~chinese \param redirectContent 如果值为 true,Sub Window 将不可见,且它的绘制内容会 * \~chinese 被合成到外层的 Frame Window(它的父窗口),否则 Sub Window 和 Frame Window * \~chinese 会分开绘制和显示。默认情况下只需要使用 DPlatformWindowHandle::enableDXcbForWindow(QWindow *), * \~chinese dxcb插件中会自动根据窗口渲染类型选择使用更合适的实现方式,使用 OpenGL 渲染的窗口将开启 * \~chinese redirectContent 模式。 * \~chinese \note 如果窗口内嵌入了其它的本地窗口(如X11平台的X Window),默认情况下,这个窗口 * \~chinese 绘制的内容不受dxcb插件的控制,它的绘制内容可能会超过 Sub Window 的有效区域,这种 * \~chinese 情况下,应该使用此接口,并将 redirectContent 指定为 true。 * \~chinese \sa X11 Damage: https://www.x.org/releases/X11R7.5/doc/damageproto/damageproto.txt */ void DPlatformWindowHandle::enableDXcbForWindow(QWindow *window, bool redirectContent) { window->setProperty(_redirectContent, redirectContent); enableDXcbForWindow(window); } /*! * \~chinese \brief DPlatformWindowHandle::isEnabledDXcb * \~chinese 这只是一个重载函数,如果 widget 的 QWidget::windowHandle 为 nullptr 则返回 false, * \~chinese 否则返回 isEnabledDXcb(widget->windowHandle()) 的值 * \~chinese \param widget * \~chinese \return */ bool DPlatformWindowHandle::isEnabledDXcb(const QWidget *widget) { if (QWindow *handle = widget->windowHandle()) { return isEnabledDXcb(handle); } return false; } /*! * \~chinese \brief DPlatformWindowHandle::isEnabledDXcb * \~chinese \param widget * \~chinese \return 如果窗口开启了DTK风格的窗口修饰则返回 true,否则返回 false * \~chinese \sa DPlatformWindowHandle::isEnableNoTitlebar */ bool DPlatformWindowHandle::isEnabledDXcb(const QWindow *window) { if (isEnableNoTitlebar(window)) return true; QFunctionPointer is_enable_dxcb = nullptr; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) is_enable_dxcb = qApp->platformFunction(_isEnableDxcb); #endif if (is_enable_dxcb) { return (*reinterpret_cast(is_enable_dxcb))(window); } return window->property(_useDxcb).toBool(); } /*! * \~chinese \brief DPlatformWindowHandle::setEnableNoTitlebarForWindow * \~chinese 使用窗口管理器提供的方式隐藏窗口的标题栏,目前已适配 DDE KWin 窗管,在窗口管理器支持的前提下, * \~chinese 此方法将通过设置窗口属性 _DEEPIN_SCISSOR_WINDOW 的值为 1 来开启无标题栏效果。 * \~chinese \param window * \~chinese \param enable * \~chinese \sa DPlatformWindowHandle::enableDXcbForWindow(QWindow *) * \~chinese \sa DWindowManagerHelper::hasNoTitlebar */ bool DPlatformWindowHandle::setEnableNoTitlebarForWindow(QWindow *window, bool enable) { if (!DApplication::isDXcbPlatform()) return false; QFunctionPointer enable_no_titlear = nullptr; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) enable_no_titlear = qApp->platformFunction(_setEnableNoTitlebar); #endif if (enable_no_titlear) { return (*reinterpret_cast(enable_no_titlear))(window, enable); } return false; } /*! * \~chinese \brief DPlatformWindowHandle::isEnableNoTitlebar * \~chinese \param window * \~chinese \return 如果窗口使用窗管提供的方式隐藏了标题栏则返回 true,否则返回 false * \~chinese \sa DPlatformWindowHandle::isEnabledDXcb */ bool DPlatformWindowHandle::isEnableNoTitlebar(const QWindow *window) { QFunctionPointer is_enable_no_titlebar = nullptr; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) is_enable_no_titlebar = qApp->platformFunction(_isEnableNoTitlebar); #endif if (is_enable_no_titlebar) { return (*reinterpret_cast(is_enable_no_titlebar))(window); } return false; } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 这只是一个重载函数,如果 widget 的 QWidget::windowHandle 为 nullptr 则返回 false, * \~chinese 否则返回 setWindowBlurAreaByWM(wiget->windowHandle(), area) 的值。示例: * \~chinese \code * DMainWindow w; * QVector area_list; * DPlatformWindowHandle::WMBlurArea area; * * area.x = 50; * area.y = 50; * area.width = 200; * area.height = 200; * area.xRadius = 10; * area.yRaduis = 10; * area_list.append(area); * * DPlatformWindowHandle::setWindowBlurAreaByWM(&w, area_list); * * w.resize(300, 300); * w.setAttribute(Qt::WA_TranslucentBackground); * w.show(); * * \endcode * \~chinese \image html blur_widget_demo1.png * \~chinese \param widget * \~chinese \param area * \~chinese \return * \~chinese \note 需要对 \a widget 添加 Qt::WA_TranslucentBackground 使其背景透明 * \~chinese \sa QWidget::setAttribute */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(QWidget *widget, const QVector &area) { Q_ASSERT(widget); return widget->windowHandle() && setWindowBlurAreaByWM(widget->windowHandle(), area); } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 这只是一个重载函数,如果 widget 的 QWidget::windowHandle 为 nullptr 则返回 false, * \~chinese 否则返回 setWindowBlurAreaByWM(wiget->windowHandle(), paths) 的值。示例: * \~chinese \code * DMainWindow w; * QList path_list; * QPainterPath path; * QFont font; * * font.setPixelSize(100); * font.setBold(true); * path.addText(0, 150, font, "deepin"); * path_list.append(path); * * DPlatformWindowHandle::setWindowBlurAreaByWM(&w, path_list); * * QSurfaceFormat format = w.format(); * format.setAlphaBufferSize(8); * * w.setFormat(format); * w.resize(400, 300); * w.setAttribute(Qt::WA_TranslucentBackground); * w.show(); * * \endcode * \~chinese \image html blur_widget_demo2.png * \~chinese \param widget * \~chinese \param area * \~chinese \return * \~chinese \note 需要对 \a widget 添加 Qt::WA_TranslucentBackground 使其背景透明 * \~chinese \sa QWidget::setAttribute */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(QWidget *widget, const QList &paths) { Q_ASSERT(widget); return widget->windowHandle() && setWindowBlurAreaByWM(widget->windowHandle(), paths); } inline DPlatformWindowHandle::WMBlurArea operator *(const DPlatformWindowHandle::WMBlurArea &area, qreal scale) { if (qFuzzyCompare(scale, 1.0)) return area; DPlatformWindowHandle::WMBlurArea new_area; new_area.x = qRound64(area.x * scale); new_area.y = qRound64(area.y * scale); new_area.width = qRound64(area.width * scale); new_area.height = qRound64(area.height * scale); new_area.xRadius = qRound64(area.xRadius * scale); new_area.yRaduis = qRound64(area.yRaduis * scale); return new_area; } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 设置窗口背景的模糊区域,示例: * \~chinese \code * QWindow w; * QVector area_list; * DPlatformWindowHandle::WMBlurArea area; * * area.x = 50; * area.y = 50; * area.width = 200; * area.height = 200; * area.xRadius = 10; * area.yRaduis = 10; * area_list.append(area); * * DPlatformWindowHandle::setWindowBlurAreaByWM(&w, area_list); * * QSurfaceFormat format = w.format(); * format.setAlphaBufferSize(8); * * w.setFormat(format); * w.resize(300, 300); * w.show(); * * \endcode * \~chinese \image html blur_window_demo1.png * \~chinese \param window 目标窗口对象 * \~chinese \param area 模糊区域,此区域范围内的窗口背景将填充为窗口后面内容模糊之后的图像 * \~chinese \return 如果设置成功则返回 true,否则返回 false * \~chinese \note 对于需要显示模糊背景的窗口,需要将其 QSurfaceFormat 的 alpha 通道设置为8 * \~chinese \note 调用此接口设置窗口背景模糊区域后将覆盖之前所设置的区域,包括调用 * \~chinese setWindowBlurAreaByWM(QWindow *, const QList &) * \~chinese 所设置的区域 * \~chinees \note 建议使用 DBlurEffectWidget 实现窗口背景模糊效果 * \~chinese \note 此功能依赖于窗口管理器的实现,目前仅支持 deepin-wm 和 kwin 这两个窗口管理器 * \~chinese \sa DBlurEffectWidget * \~chinese \sa QSurfaceFormat::setAlphaBufferSize * \~chinese \sa QWindow::setFormat * \~chinese \sa DWindowManagerHelper::hasBlurWindow * \~chinese \sa DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *, const QList &) */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *window, const QVector &area) { if (!window) { return false; } if (isEnabledDXcb(window)) { setWindowProperty(window, _windowBlurAreas, QVariant::fromValue(*(reinterpret_cast*>(&area)))); return true; } QFunctionPointer setWmBlurWindowBackgroundArea = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) setWmBlurWindowBackgroundArea = qApp->platformFunction(_setWmBlurWindowBackgroundArea); #endif if (!setWmBlurWindowBackgroundArea) { qWarning("setWindowBlurAreaByWM is not support"); return false; } QSurfaceFormat format = window->format(); format.setAlphaBufferSize(8); window->setFormat(format); const qreal device_ratio = window->devicePixelRatio(); if (qFuzzyCompare(device_ratio, 1.0)) { return reinterpret_cast&)>(setWmBlurWindowBackgroundArea)(window->winId(), area); } QVector new_areas; new_areas.reserve(area.size()); for (const WMBlurArea &a : area) { new_areas.append(a * device_ratio); } return reinterpret_cast&)>(setWmBlurWindowBackgroundArea)(window->winId(), new_areas); } inline QPainterPath operator *(const QPainterPath &path, qreal scale) { if (qFuzzyCompare(1.0, scale)) return path; QPainterPath new_path = path; for (int i = 0; i < path.elementCount(); ++i) { const QPainterPath::Element &e = path.elementAt(i); new_path.setElementPositionAt(i, qRound(e.x * scale), qRound(e.y * scale)); } return new_path; } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 设置窗口背景的模糊区域,使用 QPainterPath 描述模糊区域,使用起来更加的灵活,可以 * \~chinese 实现任何形状,但是性能要低于使用 QVector * \~chinese 描述模糊区域。示例: * \~chinese \code * QWindow w; * QList path_list; * QPainterPath path; * QFont font; * * font.setPixelSize(100); * font.setBold(true); * path.addText(0, 150, font, "deepin"); * path_list.append(path); * * DPlatformWindowHandle::setWindowBlurAreaByWM(&w, path_list); * * QSurfaceFormat format = w.format(); * format.setAlphaBufferSize(8); * * w.setFormat(format); * w.resize(300, 300); * w.show(); * * \endcode * \~chinese \image html blur_window_demo2.png * \~chinese \param window 目标窗口对象 * \~chinese \param paths 模糊区域,此区域范围内的窗口背景将填充为窗口后面内容模糊之后的图像 * \~chinese \return 如果设置成功则返回 true,否则返回 false * \~chinese \note 调用此接口设置窗口背景模糊区域后将覆盖之前所设置的区域,包括调用 * \~chinese setWindowBlurAreaByWM(QWindow *, QVector &) * \~chinese 设置的窗口背景模糊路径 * \~chinese \note 对于需要显示模糊背景的窗口,需要将其 QSurfaceFormat 的 alpha 通道设置为8 * \~chinees \note 建议使用 DBlurEffectWidget 实现窗口背景模糊效果 * \~chinese \note 此功能依赖于窗口管理器的实现,目前仅支持 deepin-wm 和 kwin 这两个窗口管理器 * \~chinese \warning setWindowBlurAreaByWM(QWindow *, QVector &) * \~chinese 能满足需求请不要使用此接口 * \~chinese \sa DBlurEffectWidget * \~chinese \sa QSurfaceFormat::setAlphaBufferSize * \~chinese \sa QWindow::setFormat * \~chinese \sa DWindowManagerHelper::hasBlurWindow * \~chinese \sa DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *, QVector &) */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *window, const QList &paths) { if (!window) { return false; } if (isEnabledDXcb(window)) { setWindowProperty(window, _windowBlurPaths, QVariant::fromValue(paths)); return true; } QFunctionPointer setWmBlurWindowBackgroundPathList = Q_NULLPTR; #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) setWmBlurWindowBackgroundPathList = qApp->platformFunction(_setWmBlurWindowBackgroundPathList); #endif if (!setWmBlurWindowBackgroundPathList) { qWarning("setWindowBlurAreaByWM is not support"); return false; } QSurfaceFormat format = window->format(); format.setAlphaBufferSize(8); window->setFormat(format); const qreal device_ratio = window->devicePixelRatio(); if (qFuzzyCompare(device_ratio, 1.0)) { return reinterpret_cast&)>(setWmBlurWindowBackgroundPathList)(window->winId(), paths); } QList new_paths; new_paths.reserve(paths.size()); for (const QPainterPath &p : paths) { new_paths.append(p * device_ratio); } return reinterpret_cast&)>(setWmBlurWindowBackgroundPathList)(window->winId(), new_paths); } /*! * \~chinese \brief DPlatformWindowHandle::connectWindowManagerChangedSignal * \~chinese 将窗口管理器变化的信号链接到 object 对象的 slot 槽,建议使用 DWindowManager::windowManagerChanged * \~chinese \param object * \~chinese \param slot * \~chinese \return 如果链接成功则返回 true,否则返回 false * \~chinese \sa DWindowManager::windowManagerChanged */ bool DPlatformWindowHandle::connectWindowManagerChangedSignal(QObject *object, std::function slot) { if (object) { return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::windowManagerChanged, object, slot); } return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::windowManagerChanged, slot); } /*! * \~chinese \brief DPlatformWindowHandle::connectHasBlurWindowChanged * \~chinese 将窗口管理器是否支持背景模糊的信号链接到 object 对象的 slot 槽,建议使用 * \~chinese DWindowManager::hasBlurWindowChanged * \~chinese \param object * \~chinese \param slot * \~chinese \return 如果链接成功则返回 true,否则返回 false * \~chinese \sa DWindowManager::hasBlurWindowChanged */ bool DPlatformWindowHandle::connectHasBlurWindowChanged(QObject *object, std::function slot) { if (object) { return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasBlurWindowChanged, object, slot); } return QObject::connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasBlurWindowChanged, slot); } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 这只是一个重载的函数,将调用 setWindowBlurAreaByWM(QWindow *, const QVector &) * \~chinese 并将构造对象时传递的主窗口当做第一个参数 * \~chinese \param area * \~chinese \return * \~chinese \sa DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *, const QVector &) */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(const QVector &area) { return setWindowBlurAreaByWM(m_window, area); } /*! * \~chinese \brief DPlatformWindowHandle::setWindowBlurAreaByWM * \~chinese 这只是一个重载的函数,将调用 setWindowBlurAreaByWM(QWindow *, const QList &) * \~chinese 并将构造对象时传递的主窗口当做第一个参数 * \~chinese \param area * \~chinese \return * \~chinese \sa DPlatformWindowHandle::setWindowBlurAreaByWM(QWindow *, const QList &) */ bool DPlatformWindowHandle::setWindowBlurAreaByWM(const QList &paths) { return setWindowBlurAreaByWM(m_window, paths); } /*! * \~chinese \brief DPlatformWindowHandle::setDisableWindowOverrideCursor * \~chinese 如果 \a disable 为 true,则禁止窗口 \a window 改变光标样式,否则允许改变光标样式。 * \~chinese 窗口被禁止改变光标样式后,使用 QWindow::setCursor 将不会产生任何效果。 * \~chinese \param window * \~chinese \param disable */ void DPlatformWindowHandle::setDisableWindowOverrideCursor(QWindow *window, bool disable) { window->setProperty(_disableOverrideCursor, disable); } int DPlatformWindowHandle::windowRadius() const { return m_window->property(_windowRadius).toInt(); } int DPlatformWindowHandle::borderWidth() const { return m_window->property(_borderWidth).toInt(); } QColor DPlatformWindowHandle::borderColor() const { return qvariant_cast(m_window->property(_borderColor)); } int DPlatformWindowHandle::shadowRadius() const { return m_window->property(_shadowRadius).toInt(); } QPoint DPlatformWindowHandle::shadowOffset() const { return m_window->property(_shadowOffset).toPoint(); } QColor DPlatformWindowHandle::shadowColor() const { return qvariant_cast(m_window->property(_shadowColor)); } QPainterPath DPlatformWindowHandle::clipPath() const { return qvariant_cast(m_window->property(_clipPath)); } QRegion DPlatformWindowHandle::frameMask() const { return qvariant_cast(m_window->property(_frameMask)); } QMargins DPlatformWindowHandle::frameMargins() const { return qvariant_cast(m_window->property(_frameMargins)); } bool DPlatformWindowHandle::translucentBackground() const { return m_window->property(_translucentBackground).toBool(); } bool DPlatformWindowHandle::enableSystemResize() const { return m_window->property(_enableSystemResize).toBool(); } bool DPlatformWindowHandle::enableSystemMove() const { return m_window->property(_enableSystemMove).toBool(); } bool DPlatformWindowHandle::enableBlurWindow() const { return m_window->property(_enableBlurWindow).toBool(); } bool DPlatformWindowHandle::autoInputMaskByClipPath() const { return m_window->property(_autoInputMaskByClipPath).toBool(); } WId DPlatformWindowHandle::realWindowId() const { return qvariant_cast(m_window->property("_d_real_content_window")); } void DPlatformWindowHandle::setWindowRadius(int windowRadius) { setWindowProperty(m_window, _windowRadius, windowRadius); } void DPlatformWindowHandle::setBorderWidth(int borderWidth) { setWindowProperty(m_window, _borderWidth, borderWidth); } void DPlatformWindowHandle::setBorderColor(const QColor &borderColor) { setWindowProperty(m_window, _borderColor, QVariant::fromValue(borderColor)); } void DPlatformWindowHandle::setShadowRadius(int shadowRadius) { setWindowProperty(m_window, _shadowRadius, shadowRadius); } void DPlatformWindowHandle::setShadowOffset(const QPoint &shadowOffset) { setWindowProperty(m_window, _shadowOffset, shadowOffset); } void DPlatformWindowHandle::setShadowColor(const QColor &shadowColor) { setWindowProperty(m_window, _shadowColor, QVariant::fromValue(shadowColor)); } void DPlatformWindowHandle::setClipPath(const QPainterPath &clipPath) { setWindowProperty(m_window, _clipPath, QVariant::fromValue(clipPath)); } void DPlatformWindowHandle::setFrameMask(const QRegion &frameMask) { setWindowProperty(m_window, _frameMask, QVariant::fromValue(frameMask)); } void DPlatformWindowHandle::setTranslucentBackground(bool translucentBackground) { setWindowProperty(m_window, _translucentBackground, translucentBackground); } void DPlatformWindowHandle::setEnableSystemResize(bool enableSystemResize) { setWindowProperty(m_window, _enableSystemResize, enableSystemResize); } void DPlatformWindowHandle::setEnableSystemMove(bool enableSystemMove) { setWindowProperty(m_window, _enableSystemMove, enableSystemMove); } void DPlatformWindowHandle::setEnableBlurWindow(bool enableBlurWindow) { setWindowProperty(m_window, _enableBlurWindow, enableBlurWindow); } void DPlatformWindowHandle::setAutoInputMaskByClipPath(bool autoInputMaskByClipPath) { setWindowProperty(m_window, _autoInputMaskByClipPath, autoInputMaskByClipPath); } bool DPlatformWindowHandle::eventFilter(QObject *obj, QEvent *event) { if (obj == m_window) { if (event->type() == QEvent::DynamicPropertyChange) { QDynamicPropertyChangeEvent *e = static_cast(event); if (e->propertyName() == _windowRadius) { Q_EMIT windowRadiusChanged(); } else if (e->propertyName() == _borderWidth) { Q_EMIT borderWidthChanged(); } else if (e->propertyName() == _borderColor) { Q_EMIT borderColorChanged(); } else if (e->propertyName() == _shadowRadius) { Q_EMIT shadowRadiusChanged(); } else if (e->propertyName() == _shadowOffset) { Q_EMIT shadowOffsetChanged(); } else if (e->propertyName() == _shadowColor) { Q_EMIT shadowColorChanged(); } else if (e->propertyName() == _clipPath) { Q_EMIT clipPathChanged(); } else if (e->propertyName() == _frameMask) { Q_EMIT frameMaskChanged(); } else if (e->propertyName() == _frameMargins) { Q_EMIT frameMarginsChanged(); } else if (e->propertyName() == _translucentBackground) { Q_EMIT translucentBackgroundChanged(); } else if (e->propertyName() == _enableSystemResize) { Q_EMIT enableSystemResizeChanged(); } else if (e->propertyName() == _enableSystemMove) { Q_EMIT enableSystemMoveChanged(); } else if (e->propertyName() == _enableBlurWindow) { Q_EMIT enableBlurWindowChanged(); } else if (e->propertyName() == _autoInputMaskByClipPath) { Q_EMIT autoInputMaskByClipPathChanged(); } } } return false; } DWIDGET_END_NAMESPACE QT_BEGIN_NAMESPACE QDebug operator<<(QDebug deg, const DPlatformWindowHandle::WMBlurArea &area) { QDebugStateSaver saver(deg); Q_UNUSED(saver) deg.setAutoInsertSpaces(true); deg << "x:" << area.x << "y:" << area.y << "width:" << area.width << "height:" << area.height << "xRadius:" << area.xRadius << "yRadius:" << area.yRaduis; return deg; } QT_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dplatformwindowhandle.h000066400000000000000000000150211352002233700224770ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPLATFORMWINDOWHANDLE_H #define DPLATFORMWINDOWHANDLE_H #include "dtkwidget_global.h" #include #include #include #include #include QT_BEGIN_NAMESPACE class QWindow; class QWidget; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DPlatformWindowHandle : public QObject { Q_OBJECT Q_PROPERTY(int windowRadius READ windowRadius WRITE setWindowRadius NOTIFY windowRadiusChanged) Q_PROPERTY(int borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged) Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged) Q_PROPERTY(int shadowRadius READ shadowRadius WRITE setShadowRadius NOTIFY shadowRadiusChanged) Q_PROPERTY(QPoint shadowOffset READ shadowOffset WRITE setShadowOffset NOTIFY shadowOffsetChanged) Q_PROPERTY(QColor shadowColor READ shadowColor WRITE setShadowColor NOTIFY shadowColorChanged) Q_PROPERTY(QPainterPath clipPath READ clipPath WRITE setClipPath NOTIFY clipPathChanged) Q_PROPERTY(QRegion frameMask READ frameMask WRITE setFrameMask NOTIFY frameMaskChanged) Q_PROPERTY(QMargins frameMargins READ frameMargins NOTIFY frameMarginsChanged) Q_PROPERTY(bool translucentBackground READ translucentBackground WRITE setTranslucentBackground NOTIFY translucentBackgroundChanged) Q_PROPERTY(bool enableSystemResize READ enableSystemResize WRITE setEnableSystemResize NOTIFY enableSystemResizeChanged) Q_PROPERTY(bool enableSystemMove READ enableSystemMove WRITE setEnableSystemMove NOTIFY enableSystemMoveChanged) Q_PROPERTY(bool enableBlurWindow READ enableBlurWindow WRITE setEnableBlurWindow NOTIFY enableBlurWindowChanged) Q_PROPERTY(bool autoInputMaskByClipPath READ autoInputMaskByClipPath WRITE setAutoInputMaskByClipPath NOTIFY autoInputMaskByClipPathChanged) Q_PROPERTY(WId realWindowId READ realWindowId CONSTANT) public: explicit DPlatformWindowHandle(QWindow *window, QObject *parent = 0); explicit DPlatformWindowHandle(QWidget *widget, QObject *parent = 0); static QString pluginVersion(); static void enableDXcbForWindow(QWidget *widget); static void enableDXcbForWindow(QWindow *window); static void enableDXcbForWindow(QWidget *widget, bool redirectContent); static void enableDXcbForWindow(QWindow *window, bool redirectContent); static bool isEnabledDXcb(const QWidget *widget); static bool isEnabledDXcb(const QWindow *window); static bool setEnableNoTitlebarForWindow(QWindow *window, bool enable); static bool isEnableNoTitlebar(const QWindow *window); struct WMBlurArea { qint32 x = 0; qint32 y = 0; qint32 width = 0; qint32 height = 0; qint32 xRadius = 0; qint32 yRaduis = 0; }; static bool setWindowBlurAreaByWM(QWidget *widget, const QVector &area); static bool setWindowBlurAreaByWM(QWidget *widget, const QList &paths); static bool setWindowBlurAreaByWM(QWindow *window, const QVector &area); static bool setWindowBlurAreaByWM(QWindow *window, const QList &paths); static bool connectWindowManagerChangedSignal(QObject *object, std::function slot); static bool connectHasBlurWindowChanged(QObject *object, std::function slot); bool setWindowBlurAreaByWM(const QVector &area); bool setWindowBlurAreaByWM(const QList &paths); static void setDisableWindowOverrideCursor(QWindow *window, bool disable); int windowRadius() const; int borderWidth() const; QColor borderColor() const; int shadowRadius() const; QPoint shadowOffset() const; QColor shadowColor() const; QPainterPath clipPath() const; QRegion frameMask() const; QMargins frameMargins() const; bool translucentBackground() const; bool enableSystemResize() const; bool enableSystemMove() const; bool enableBlurWindow() const; bool autoInputMaskByClipPath() const; WId realWindowId() const; public Q_SLOTS: void setWindowRadius(int windowRadius); void setBorderWidth(int borderWidth); void setBorderColor(const QColor &borderColor); void setShadowRadius(int shadowRadius); void setShadowOffset(const QPoint &shadowOffset); void setShadowColor(const QColor &shadowColor); void setClipPath(const QPainterPath &clipPath); void setFrameMask(const QRegion &frameMask); void setTranslucentBackground(bool translucentBackground); void setEnableSystemResize(bool enableSystemResize); void setEnableSystemMove(bool enableSystemMove); void setEnableBlurWindow(bool enableBlurWindow); void setAutoInputMaskByClipPath(bool autoInputMaskByClipPath); Q_SIGNALS: void frameMarginsChanged(); void windowRadiusChanged(); void borderWidthChanged(); void borderColorChanged(); void shadowRadiusChanged(); void shadowOffsetChanged(); void shadowColorChanged(); void clipPathChanged(); void frameMaskChanged(); void translucentBackgroundChanged(); void enableSystemResizeChanged(); void enableSystemMoveChanged(); void enableBlurWindowChanged(); void autoInputMaskByClipPathChanged(); protected: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; private: QWindow *m_window; }; inline DPlatformWindowHandle::WMBlurArea dMakeWMBlurArea(quint32 x, quint32 y, quint32 width, quint32 height, quint32 xr = 0, quint32 yr = 0) { DPlatformWindowHandle::WMBlurArea a; a.x = x; a.y = y; a.width = width; a.height = height; a.xRadius = xr; a.yRaduis = yr; return a; } DWIDGET_END_NAMESPACE QT_BEGIN_NAMESPACE DWIDGET_USE_NAMESPACE QDebug operator<<(QDebug deg, const DPlatformWindowHandle::WMBlurArea &area); QT_END_NAMESPACE Q_DECLARE_METATYPE(QPainterPath) Q_DECLARE_METATYPE(QRegion) Q_DECLARE_METATYPE(QMargins) #endif // DPLATFORMWINDOWHANDLE_H dtkwidget-2.1.1/src/widgets/dpushbutton.cpp000066400000000000000000000103421352002233700210160ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dpushbutton.h" #include "private/dpushbutton_p.h" DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DPushButton * \~chinese \brief 封装了三种状态的QPushButton,可以自动在不同状态更换图标,不需要自己控制。 */ /*! * \~chinese \brief DPushButton的构造函数 * * @param parent */ DPushButton::DPushButton(QWidget *parent) : QPushButton(parent) , DObject(*new DPushButtonPrivate(this)) { } /*! * \~chinese \brief DPushButton的重载构造函数,初始化时接收不同状态的图标 * * @param normalIcon 正常状态下的图标 * @param hoverIcon 鼠标在按钮上时的图标 * @param pressIcon 鼠标按下时的图标 * @param parent 初始化QPushButton的构造函数 */ DPushButton::DPushButton(const QString &normalIcon, const QString &hoverIcon, const QString &pressIcon, QWidget *parent) : DPushButton(parent) { setNormalIcon(normalIcon); setHoverIcon(hoverIcon); setPressIcon(pressIcon); } /*! * \~chinese \property DPushButton::normalIcon * \~chinese \brief 该属性控制正常状态下的图标 */ const QString DPushButton::normalIcon() const { D_DC(DPushButton); return d->normalIconPath; } /*! * \~chinese \property DPushButton::hoverIcon * \~chinese \brief 该属性控制鼠标在按钮上时的图标 */ const QString DPushButton::hoverIcon() const { D_DC(DPushButton); return d->hoverIconPath; } /*! * \~chinese \property DPushButton::pressIcon * \~chinese \brief 该属性控制鼠标按下时的图标 */ const QString DPushButton::pressIcon() const { D_DC(DPushButton); return d->pressIconPath; } /*! * \~chinese \brief 设置正常状态下的图标 * * @param normalIcon */ void DPushButton::setNormalIcon(const QString &normalIcon) { D_D(DPushButton); setNormalIcon(QIcon(normalIcon)); d->normalIconPath = normalIcon; } /*! * \~chinese \brief 设置鼠标在按钮上时的图标 * * @param hoverIcon */ void DPushButton::setHoverIcon(const QString &hoverIcon) { D_D(DPushButton); setHoverIcon(QIcon(hoverIcon)); d->hoverIconPath = hoverIcon; } /*! * \~chinese \brief 设置鼠标按下时的图标 * * @param pressIcon */ void DPushButton::setPressIcon(const QString &pressIcon) { D_D(DPushButton); setPressIcon(QIcon(pressIcon)); d->pressIconPath = pressIcon; } /*! * \~chinese \brief 重载的方法 * \see setNormalIcon * @param normalIcon */ void DPushButton::setNormalIcon(const QIcon &normalIcon) { D_D(DPushButton); d->normalIconPath.clear(); d->normalIcon = QIcon(normalIcon); setIcon(d->normalIcon); } /*! * \~chinese \brief 重载的方法 * \see setHoverIcon * @param hoverIcon */ void DPushButton::setHoverIcon(const QIcon &hoverIcon) { D_D(DPushButton); d->hoverIconPath.clear(); d->hoverIcon = QIcon(hoverIcon); } /*! * \~chinese \brief 重载的方法 * \see setPressIcon * @param pressIcon */ void DPushButton::setPressIcon(const QIcon &pressIcon) { D_D(DPushButton); d->pressIconPath.clear(); d->pressIcon = QIcon(pressIcon); } void DPushButton::enterEvent(QEvent *e) { D_D(DPushButton); setIcon(d->hoverIcon); QPushButton::enterEvent(e); } void DPushButton::leaveEvent(QEvent *e) { D_D(DPushButton); setIcon(d->normalIcon); QPushButton::leaveEvent(e); } void DPushButton::mousePressEvent(QMouseEvent *e) { D_D(DPushButton); setIcon(d->pressIcon); QPushButton::mousePressEvent(e); } DPushButtonPrivate::DPushButtonPrivate(DPushButton *qq) : DObjectPrivate(qq) { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dpushbutton.h000066400000000000000000000041251352002233700204650ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPUSHBUTTON_H #define DPUSHBUTTON_H #include "dtkwidget_global.h" #include "dobject.h" #include #include DWIDGET_BEGIN_NAMESPACE class DPushButtonPrivate; class LIBDTKWIDGETSHARED_EXPORT DPushButton : public QPushButton, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(QString normalIcon READ normalIcon WRITE setNormalIcon DESIGNABLE true) Q_PROPERTY(QString hoverIcon READ hoverIcon WRITE setHoverIcon DESIGNABLE true) Q_PROPERTY(QString pressIcon READ pressIcon WRITE setPressIcon DESIGNABLE true) public: explicit DPushButton(QWidget *parent = 0); DPushButton(const QString &normalIcon, const QString &hoverIcon, const QString &pressIcon, QWidget *parent = 0); const QString normalIcon() const; const QString hoverIcon() const; const QString pressIcon() const; public Q_SLOTS: void setNormalIcon(const QString &normalIcon); void setHoverIcon(const QString &hoverIcon); void setPressIcon(const QString &pressIcon); void setNormalIcon(const QIcon &normalIcon); void setHoverIcon(const QIcon &hoverIcon); void setPressIcon(const QIcon &pressIcon); protected: void enterEvent(QEvent *e) Q_DECL_OVERRIDE; void leaveEvent(QEvent *e) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *e) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DPushButton) }; DWIDGET_END_NAMESPACE #endif // DPUSHBUTTON_H dtkwidget-2.1.1/src/widgets/dscrollarea.cpp000066400000000000000000000106641352002233700207410ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include "dscrollarea.h" #include "dthememanager.h" #include "dscrollbar.h" #include "private/dscrollarea_p.h" DWIDGET_BEGIN_NAMESPACE DScrollAreaPrivate::DScrollAreaPrivate(DScrollArea *qq): DObjectPrivate(qq), autoHideScrollBar(false), vBar(new DScrollBar), hBar(new DScrollBar), scrollBarAnimation(nullptr), timer(nullptr) { } DScrollAreaPrivate::~DScrollAreaPrivate() { vBar->deleteLater(); hBar->deleteLater(); if(scrollBarAnimation) scrollBarAnimation->deleteLater(); if(timer) timer->deleteLater(); } void DScrollAreaPrivate::init() { Q_Q(DScrollArea); q->setVerticalScrollBar(vBar); q->setHorizontalScrollBar(hBar); QObject::connect(vBar, &DScrollBar::valueChanged, q, [q, this]{ q->showScrollBar(vBar); }); QObject::connect(hBar, &DScrollBar::valueChanged, q, [q, this]{ q->showScrollBar(hBar); }); } DScrollArea::DScrollArea(QWidget *parent) : QScrollArea(parent), DObject(*new DScrollAreaPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } bool DScrollArea::autoHideScrollBar() const { Q_D(const DScrollArea); return d->autoHideScrollBar; } void DScrollArea::setAutoHideScrollBar(bool autoHideScrollBar) { Q_D(DScrollArea); if (d->autoHideScrollBar == autoHideScrollBar) return; d->autoHideScrollBar = autoHideScrollBar; if(autoHideScrollBar){ if(!d->scrollBarAnimation) d->scrollBarAnimation = new QPropertyAnimation(this, "windowOpacity"); if(!d->timer) d->timer = new QTimer(this); d->scrollBarAnimation->setDuration(300); d->timer->setSingleShot(true); d->vBar->hide(); d->hBar->hide(); connect(d->timer, &QTimer::timeout, [&]{ if(d->vBar->isVisible()) hideScrollBar(d->vBar); if(d->hBar->isVisible()) hideScrollBar(d->hBar); }); }else{ if(d->scrollBarAnimation) d->scrollBarAnimation->deleteLater(); if(d->timer) d->timer->deleteLater(); showScrollBar(d->vBar); showScrollBar(d->hBar); } Q_EMIT autoHideScrollBarChanged(autoHideScrollBar); } void DScrollArea::hideScrollBar(QScrollBar *bar) { Q_D(DScrollArea); if(bar->isHidden()) return; if(d->scrollBarAnimation){ connect(d->scrollBarAnimation, &QPropertyAnimation::finished, bar, &DScrollBar::hide); connect(d->scrollBarAnimation, &QPropertyAnimation::finished, bar, &DScrollBar::hide); d->scrollBarAnimation->setStartValue(1.0); d->scrollBarAnimation->setEndValue(0.0); d->scrollBarAnimation->start(); }else{ bar->hide(); } } void DScrollArea::showScrollBar(QScrollBar *bar) { Q_D(DScrollArea); if(bar->isVisible()) return; if(bar == d->vBar && verticalScrollBarPolicy() != Qt::ScrollBarAlwaysOff) d->vBar->show(); else if(bar == d->hBar && horizontalScrollBarPolicy() != Qt::ScrollBarAlwaysOff) d->hBar->show(); if(d->scrollBarAnimation){ disconnect(d->scrollBarAnimation, &QPropertyAnimation::finished, bar, &DScrollBar::hide); disconnect(d->scrollBarAnimation, &QPropertyAnimation::finished, bar, &DScrollBar::hide); d->scrollBarAnimation->setStartValue(1.0); d->scrollBarAnimation->setEndValue(0.0); d->scrollBarAnimation->start(); d->timer->start(1000); } } DScrollArea::DScrollArea(DScrollAreaPrivate &dd, QWidget *parent): QScrollArea(parent), DObject(dd) { DThemeManager::registerWidget(this); d_func()->init(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dscrollarea.h000066400000000000000000000032141352002233700203770ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSCROLLAREA_H #define DSCROLLAREA_H #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DScrollBar; class DScrollAreaPrivate; class D_DECL_DEPRECATED_X("Plase use QScrollArea") LIBDTKWIDGETSHARED_EXPORT DScrollArea : public QScrollArea, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool autoHideScrollBar READ autoHideScrollBar WRITE setAutoHideScrollBar NOTIFY autoHideScrollBarChanged) public: explicit DScrollArea(QWidget *parent = 0); bool autoHideScrollBar() const; public Q_SLOTS: void setAutoHideScrollBar(bool autoHideScrollBar); Q_SIGNALS: void autoHideScrollBarChanged(bool autoHideScrollBar); private Q_SLOTS: void hideScrollBar(QScrollBar *bar); void showScrollBar(QScrollBar *bar); protected: DScrollArea(DScrollAreaPrivate &dd, QWidget *parent = 0); private: D_DECLARE_PRIVATE(DScrollArea) }; DWIDGET_END_NAMESPACE #endif // DSCROLLAREA_H dtkwidget-2.1.1/src/widgets/dscrollbar.cpp000066400000000000000000000061331352002233700205710ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dscrollbar.h" #include "dthememanager.h" #include "private/dscrollbar_p.h" #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE DScrollBarPrivate::DScrollBarPrivate(DScrollBar *qq) : DObjectPrivate(qq) { } void DScrollBarPrivate::init() { D_Q(DScrollBar); timer = new QTimer(q); opacityTimer = new QTimer(q); timer->setInterval(1000); timer->setSingleShot(true); q->connect(timer, SIGNAL(timeout()), q, SLOT(_q_hidden())); q->connect(opacityTimer, SIGNAL(timeout()), q, SLOT(_q_updateOpacity())); q->connect(q, &DScrollBar::valueChanged, q, [this] { timer->start(); opacityTimer->stop(); setOpacity(1); }); } void DScrollBarPrivate::setOpacity(qreal opacity) { D_Q(DScrollBar); if (qAbs(this->opacity - opacity) < 0.001) { return; } this->opacity = opacity; this->canPaint = false; q->update(); } void DScrollBarPrivate::_q_hidden() { timer->stop(); opacityTimer->start(50); } void DScrollBarPrivate::_q_updateOpacity() { if (opacity < 0.01) { opacityTimer->stop(); } else { setOpacity(opacity - 0.05); } } DScrollBar::DScrollBar(QWidget *parent) : QScrollBar(parent) , DObject(*new DScrollBarPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } bool DScrollBar::autoHide() const { D_DC(DScrollBar); return d->autoHide; } void DScrollBar::setAutoHide(bool autoHide) { D_D(DScrollBar); if (d->autoHide == autoHide) return; d->autoHide = autoHide; Q_EMIT autoHideChanged(autoHide); update(); } void DScrollBar::enterEvent(QEvent *event) { D_D(DScrollBar); d->timer->stop(); d->opacityTimer->stop(); d->setOpacity(1); QScrollBar::enterEvent(event); } void DScrollBar::leaveEvent(QEvent *event) { D_DC(DScrollBar); d->timer->start(1000); QScrollBar::leaveEvent(event); } void DScrollBar::paintEvent(QPaintEvent *event) { D_D(DScrollBar); if (d->canPaint || !d->autoHide) { return QScrollBar::paintEvent(event); } QPixmap pixmap; QPainter painter(this); d->canPaint = true; setAttribute(Qt::WA_WState_InPaintEvent, false); pixmap = grab(); painter.setOpacity(d->opacity); painter.drawPixmap(QPoint(0, 0), pixmap); } DWIDGET_END_NAMESPACE #include "moc_dscrollbar.cpp" dtkwidget-2.1.1/src/widgets/dscrollbar.h000066400000000000000000000032161352002233700202350ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSCROLLBAR_H #define DSCROLLBAR_H #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DScrollBarPrivate; class D_DECL_DEPRECATED_X("Plase use QScrollBar") LIBDTKWIDGETSHARED_EXPORT DScrollBar : public QScrollBar, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool autoHide READ autoHide WRITE setAutoHide NOTIFY autoHideChanged) public: explicit DScrollBar(QWidget *parent = 0); bool autoHide() const; public Q_SLOTS: void setAutoHide(bool autoHide); Q_SIGNALS: void autoHideChanged(bool autoHide); protected: void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(DScrollBar) D_DECLARE_PRIVATE(DScrollBar) D_PRIVATE_SLOT(void _q_hidden()) D_PRIVATE_SLOT(void _q_updateOpacity()) }; DWIDGET_END_NAMESPACE #endif // DSCROLLBAR_H dtkwidget-2.1.1/src/widgets/dsearchedit.cpp000066400000000000000000000175111352002233700207230ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dsearchedit.h" #include "dthememanager.h" #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DSearchEdit * \~chinese \brief DSearchEdit 类提供了专门用来进行搜索的输入框控件。 * \~chinese * \~chinese 相比于一般的输入框控件,DSearchEdit 提供了搜索按钮指示,用户使用起来会更加自然。 * \~chinese 如图示: * \~chinese \image html searchedit.png * \~chinese * \~chinese \warning DSearchEdit 与 QLineEdit、DLineEdit 没有继承关系,功能不兼容。 */ /*! * \~chinese \fn DSearchEdit::textChanged * \~chinese \brief 信号在用户对输入框内容做了修改后触发。 */ /*! * \~chinese \fn DSearchEdit::returnPressed * \~chinese \brief 信号在用户输入完成敲击回车时触发。 */ /*! * \~chinese \fn DSearchEdit::editingFinished * \~chinese \brief 信号在用户敲击Enter或者回车键,以及输入框失去焦点是触发。 * \~chinese \see QLineEdit::editingFinished。 */ /*! * \~chinese \fn DSearchEdit::focusOut * \~chinese \brief 信号在输入框失去焦点时触发。 */ /*! * \~chinese \fn DSearchEdit::focusIn * \~chinese \brief 信号在输入框获得焦点时触发。 */ /*! * \~chinese \fn DSearchEdit::setText * \~chinese \brief 设置输入框内容。 * \~chinese \param text 为要设置的内容。 */ /*! * \~chinese \fn DSearchEdit::clear * \~chinese \brief 清空输入框内容。 */ /*! * \~chinese \fn DSearchEdit::setPlaceHolder * \~chinese \brief 为输入框设置占位内容,用来提示用户,如显示“搜索快捷键”。 * \~chinese \param text 为占位内容。 * */ /*! * \~chinese \brief DSearchEdit::DSearchEdit 是 DSearchEdit 类的构造函数。 * \~chinese \param parent 指定了控件的父控件。 */ DSearchEdit::DSearchEdit(QWidget *parent) : QFrame(parent) { DThemeManager::registerWidget(this); initInsideFrame(); m_searchBtn = new QLabel; m_searchBtn->setObjectName("SearchIcon"); m_searchBtn->setFixedSize(16, 16); m_clearBtn = new DImageButton; m_clearBtn->setObjectName("ClearIcon"); m_clearBtn->hide(); m_edt = new QLineEdit; m_edt->setObjectName("Edit"); m_placeHolder = new QLabel; m_placeHolder->setObjectName("PlaceHolder"); m_animation = new QPropertyAnimation(m_edt, "minimumWidth"); m_size = QSize(m_searchBtn->sizeHint().width() + m_edt->sizeHint().width() + m_clearBtn->sizeHint().width() + 6, qMax(m_searchBtn->sizeHint().height(), m_edt->sizeHint().height())); m_edt->setFixedWidth(0); m_edt->installEventFilter(this); QHBoxLayout *layout = new QHBoxLayout(m_insideFrame); layout->addStretch(); layout->addWidget(m_searchBtn); layout->setAlignment(m_searchBtn, Qt::AlignCenter); layout->addWidget(m_placeHolder); layout->setAlignment(m_placeHolder, Qt::AlignCenter); layout->addWidget(m_edt); layout->setAlignment(m_edt, Qt::AlignCenter); layout->addStretch(); layout->addWidget(m_clearBtn); layout->setAlignment(m_clearBtn, Qt::AlignCenter); layout->setSpacing(0); layout->setContentsMargins(3, 0, 3, 0); setAutoFillBackground(true); setFocusPolicy(Qt::StrongFocus); connect(m_clearBtn, &DImageButton::clicked, m_edt, static_cast(&QLineEdit::setFocus)); connect(m_clearBtn, &DImageButton::clicked, this, &DSearchEdit::clear); connect(m_edt, &QLineEdit::textChanged, [this] {m_clearBtn->setVisible(!m_edt->text().isEmpty());}); connect(m_edt, &QLineEdit::textChanged, this, &DSearchEdit::textChanged, Qt::DirectConnection); connect(m_edt, &QLineEdit::editingFinished, this, &DSearchEdit::editingFinished, Qt::DirectConnection); connect(m_edt, &QLineEdit::returnPressed, this, &DSearchEdit::returnPressed, Qt::DirectConnection); // connect(m_searchBtn, &DImageButton::clicked, this, &DSearchEdit::toEditMode); } DSearchEdit::~DSearchEdit() { m_animation->deleteLater(); } /*! * \~chinese \brief DSearchEdit::text 用于获取输入框中的内容。 * \~chinese \return 输入框中用户输入的内容。 */ const QString DSearchEdit::text() const { return m_edt->text(); } void DSearchEdit::mousePressEvent(QMouseEvent *e) { if (e->button() != Qt::LeftButton) return QFrame::mousePressEvent(e); toEditMode(); e->accept(); } void DSearchEdit::mouseReleaseEvent(QMouseEvent *e) { e->accept(); } bool DSearchEdit::eventFilter(QObject *o, QEvent *e) { if (o == m_edt && e->type() == QEvent::FocusOut && m_edt->text().isEmpty()) { auto fe = dynamic_cast(e); if (fe && fe->reason() != Qt::PopupFocusReason) { m_animation->stop(); m_animation->setStartValue(m_edt->width()); m_animation->setEndValue(0); m_animation->setEasingCurve(m_hideCurve); m_animation->start(); connect(m_animation, &QPropertyAnimation::finished, m_placeHolder, &QLabel::show); } } if (o == m_edt) { if (e->type() == QEvent::FocusOut) { Q_EMIT focusOut(); } if (e->type() == QEvent::FocusIn) { Q_EMIT focusIn(); } } return QFrame::eventFilter(o, e); } /*! * \~chinese \brief DSearchEdit::getLineEdit 用于获取控件中封装的 QLineEdit 实例, * \~chinese 使用者可以通过 QLineEdit 提供的函数对输入框进行进一步细节设置,如果输入规则等。 * \~chinese \return 控件中封装的 QLineEdit 实例 */ QLineEdit *DSearchEdit::getLineEdit() const { return m_edt; } void DSearchEdit::toEditMode() { // already in edit mode if (!m_placeHolder->isVisible()) { return; } disconnect(m_animation, &QPropertyAnimation::finished, m_placeHolder, &QLabel::show); m_animation->stop(); m_animation->setStartValue(0); m_animation->setEndValue(m_size.width() - m_searchBtn->width() - 6); // left + right margins = 6 m_animation->setEasingCurve(m_showCurve); m_animation->start(); m_placeHolder->hide(); m_edt->setFocus(); } //Bypassing the problem here //qss can't draw box-shadow void DSearchEdit::initInsideFrame() { m_insideFrame = new QFrame(this); m_insideFrame->raise(); m_insideFrame->setObjectName("DEditInsideFrame"); QHBoxLayout *insideLayout = new QHBoxLayout(this); insideLayout->setContentsMargins(0, 0, 0, 1); insideLayout->setSpacing(0); insideLayout->addWidget(m_insideFrame); } void DSearchEdit::resizeEvent(QResizeEvent *e) { m_size = e->size(); m_edt->setFixedHeight(m_size.height()); } bool DSearchEdit::event(QEvent *e) { if (e->type() == QEvent::FocusIn) { const QFocusEvent *event = static_cast(e); if (event->reason() == Qt::TabFocusReason || event->reason() == Qt::BacktabFocusReason || event->reason() == Qt::OtherFocusReason || event->reason() == Qt::ShortcutFocusReason) { toEditMode(); } } return QFrame::event(e); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsearchedit.h000066400000000000000000000046431352002233700203720ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSEARCHEDIT_H #define DSEARCHEDIT_H #include #include #include #include #include "dtkwidget_global.h" #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSearchEdit : public QFrame { Q_OBJECT public: explicit DSearchEdit(QWidget *parent = 0); ~DSearchEdit(); QSize sizeHint() const {return m_size;} QSize minimumSizeHint() const {return m_size;} const QString text() const; void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); bool eventFilter(QObject *o, QEvent *e); inline void setAniDuration(const int duration) {m_animation->setDuration(duration);} inline void setAniShowCurve(const QEasingCurve curve) {m_showCurve = curve;} inline void setAniHideCurve(const QEasingCurve curve) {m_hideCurve = curve;} QLineEdit *getLineEdit() const; public Q_SLOTS: void setText(const QString & text) {if (m_edt) m_edt->setText(text);} inline void clear() {m_edt->clear();} inline void setPlaceHolder(const QString &text) {m_placeHolder->setText(text);} Q_SIGNALS: void textChanged(); void returnPressed(); void editingFinished(); void focusOut(); void focusIn(); private Q_SLOTS: void toEditMode(); private: void initInsideFrame(); void resizeEvent(QResizeEvent *e); bool event(QEvent *e); private: QSize m_size; QLineEdit *m_edt; QLabel *m_searchBtn; DImageButton *m_clearBtn; QLabel *m_placeHolder; QFrame *m_insideFrame = NULL; QPropertyAnimation *m_animation; QEasingCurve m_showCurve = QEasingCurve::OutCubic; QEasingCurve m_hideCurve = QEasingCurve::InCubic; }; DWIDGET_END_NAMESPACE #endif // DSEARCHEDIT_H dtkwidget-2.1.1/src/widgets/dsegmentedcontrol.cpp000066400000000000000000000342731352002233700221700ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include "dsegmentedcontrol.h" #include "dthememanager.h" #include "dobject_p.h" #include "dgraphicsclipeffect.h" DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DSegmentedControlPrivate : public DObjectPrivate { public: DSegmentedControlPrivate(DSegmentedControl *qq) : DObjectPrivate(qq) , highlight(new DSegmentedHighlight(qq)) , clipEffect(new DGraphicsClipEffect(qq)) , hLayout(new QHBoxLayout(qq)) , highlightMoveAnimation(new QPropertyAnimation(highlight, "pos", qq)) , currentIndex(-1) { qq->setGraphicsEffect(clipEffect); } DSegmentedHighlight *highlight; // 此处不适用DClipEffectWidget是因为无法解决Qt浮点数高分屏缩放产生的细线问题 // DClipEffectWidget *clipEffect; DGraphicsClipEffect *clipEffect; QHBoxLayout *hLayout; QPropertyAnimation *highlightMoveAnimation; int currentIndex; QList tabList; D_DECLARE_PUBLIC(DSegmentedControl) }; /*! * \~chinese \class DSegmentedHighlight * \~chinese \brief DSegmentedHighlight 类代表了 DSegmentedControl 中当前选中(即高亮)的部分。 */ /*! * \~chinese \brief DSegmentedHighlight::DSegmentedHighlight 为 DSegmentedHighlight 类的构造函数。 * \~chinese \param parent 制定了控件的父控件。 * * \~chinese \note 一般使用者无需使用自己构造 DSegmentedHighlight 对象。 */ DSegmentedHighlight::DSegmentedHighlight(QWidget *parent) : QToolButton(parent) { } /*! * \~chinese \class DSegmentedControl * \~chinese \brief DSegmentedControl 类提供了一种类似标签页的控件。 * \~chinese 它由一系列的 Segment 构成,每一个 Segment 可以被设置标题和图标,也可以被选中, * \~chinese 它们之间的选中为互斥关系。 * \~chinese DSegmentedControl 更像是脱离于 QTabWidget 工作的 QTabBar 。 * \~chinese * \~chinese 它可以跟 QStackedLayout 搭配使用,达到切换标签页的功能,例如: * \~chinese \image html segmentedcontrol.png */ /*! * \~chinese \fn DSegmentedControl::currentChanged(int index) * \~chinese \brief 信号在当前选中(高亮)的 Segment 发生改变时触发。 */ /*! * \~chinese \fn DSegmentedControl::currentTitleChanged(QString title) * \~chinese \brief 信号在当前选中(高亮)的 Segment 发生改变时触发。 */ /*! * \~chinese \fn DSegmentedControl::animationDurationChanged(int animationDuration) * \~chinese \brief 信号在高亮动画的动画周期发生改变时触发。 */ /*! * \~chinese \brief DSegmentedControl::DSegmentedControl 为 DSegmentedControl 类的构造函数。 * \~chinese \param parent 制定了控件的父控件。 */ DSegmentedControl::DSegmentedControl(QWidget *parent) : QWidget(parent) , DObject(*new DSegmentedControlPrivate(this)) { setObjectName("DSegmentedControl"); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); D_D(DSegmentedControl); d->hLayout->setSpacing(1); d->hLayout->setMargin(0); d->hLayout->setObjectName("TabBar"); d->highlight->setObjectName("Highlight"); d->highlight->installEventFilter(this); DThemeManager::registerWidget(this); d->highlightMoveAnimation->setDuration(100); d->highlightMoveAnimation->setEasingCurve(QEasingCurve::InCubic); } /*! * \~chinese \property DSegmentedControl::count * \~chinese \brief count 属性代表了控件中 Segment 的数量。 */ int DSegmentedControl::count() const { D_DC(DSegmentedControl); return d->tabList.count(); } /*! * \~chinese \brief DSegmentedControl::highlight 用于获取当前选中(高亮)的 Segment 。 * \~chinese \return 控件中当前选中(高亮)的 Segmnet 。 */ const DSegmentedHighlight *DSegmentedControl::highlight() const { D_DC(DSegmentedControl); return d->highlight; } /*! * \~chinese \property DSegmentedControl::currentIndex * \~chinese \brief currentIndex 属性指示当前选中 Segment 在所有 Segment 中的位置。 */ int DSegmentedControl::currentIndex() const { D_DC(DSegmentedControl); return d->currentIndex; } /*! * \~chinese \brief DSegmentedControl::at 用于获取在特定位置上的 Segment。 * \~chinese Segment 目前由 QToolButton 充当。 * \~chinese \param index 为所要获取的 Segment 的索引。 * \~chinese \return 指定索引位置的 Segment。 */ QToolButton *DSegmentedControl::at(int index) const { D_DC(DSegmentedControl); return d->tabList[index]; } /*! * \~chinese \brief DSegmentedControl::getText 用于获取在特定位置上 Segment 的标题。 * \~chinese \param index 为所要获取的 Segment 的索引。 * \~chinese \return 指定索引位置上 Segment 的标题。 */ QString DSegmentedControl::getText(int index) const { const QToolButton *button = at(index); if(button){ return button->text(); } return ""; } /*! * \~chinese \brief DSegmentedControl::getIcon 用于获取在特定位置上 Segment 的图标。 * \~chinese \param index 为所要获取的 Segment 的索引。 * \~chinese \return 指定索引位置上 Segment 的图标。 */ QIcon DSegmentedControl::getIcon(int index) const { return at(index)->icon(); } /*! * \~chinese \property DSegmentedControl::animationDuration * \~chinese \brief animationDuration 属性用于控制控件中高亮部分移动动画的时间周期。 */ int DSegmentedControl::animationDuration() const { D_DC(DSegmentedControl); return d->highlightMoveAnimation->duration(); } /*! * \~chinese \brief DSegmentedControl::indexByTitle 用于通过 Segment 的标题内容获取 * \~chinese Segment 的索引。 * \~chinese \param title 指定 Segment 的标题内容。 * \~chinese \return 指定 Segment 的索引。 */ int DSegmentedControl::indexByTitle(const QString &title) const { D_DC(DSegmentedControl); int i=0; Q_FOREACH (QToolButton *button, d->tabList) { if(button->text() == title) return i; ++i; } return -1; } /*! * \~chinese \property DSegmentedControl::animationType * \~chinese \brief animationType 属性用于控制控件中高亮部分移动动画的动画曲线类型。 */ QEasingCurve::Type DSegmentedControl::animationType() const { D_DC(DSegmentedControl); return d->highlightMoveAnimation->easingCurve().type(); } /*! * \~chinese \brief DSegmentedControl::addSegmented 为控件添加 Segment,并指定标题。 * \~chinese \param title 为 Segment 的标题。 * \~chinese \return 新增加的 Segment 的索引。 * * * \sa insertSegmented, removeSegmented */ int DSegmentedControl::addSegmented(const QString &title) { D_D(DSegmentedControl); insertSegmented(d->hLayout->count(), title); return d->hLayout->count()-1; } /*! * \~chinese \brief DSegmentedControl::addSegmented 为控件添加 Segment,并指定标题和图标。 * \~chinese \param icon 为 Segment 的图标。 * \~chinese \param title 为 Segment 的标题。 * \~chinese \return 新增加的 Segment 的索引。 * * \sa insertSegmented, removeSegmented */ int DSegmentedControl::addSegmented(const QIcon &icon, const QString &title) { D_D(DSegmentedControl); insertSegmented(d->hLayout->count(), icon, title); return d->hLayout->count()-1; } /*! * \~chinese \brief DSegmentedControl::addSegmented 添加多个 Segment。 * \~chinese \param titleList 多个 Segment 的标题列表。 * * * \sa insertSegmented, removeSegmented */ void DSegmentedControl::addSegmented(const QStringList &titleList) { Q_FOREACH (const QString &title, titleList) { addSegmented(title); } } /*! * \~chinese \brief DSegmentedControl::addSegmented 添加多个 Segment。 * \~chinese \param titleList 为多个 Segment 的标题列表。 * \~chinese \param iconList 为多个 Segment 的图标列表。 * * * \sa insertSegmented, removeSegmented */ void DSegmentedControl::addSegmented(const QList &iconList, const QStringList &titleList) { for(int i=0;itabList.insert(index, button); button->setObjectName("Segmented"); button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); button->setText(title); button->setIcon(icon); connect(button, &QToolButton::clicked, this, &DSegmentedControl::buttonClicked); d->hLayout->insertWidget(index, button); if(d->currentIndex == -1){ setCurrentIndex(0); } button->installEventFilter(this); } /*! * \~chinese \brief DSegmentedControl::removeSegmented 用于移除特定位置上的 Segment。 * \~chinese \param index 指定了要移除的 Segment 的索引。 */ void DSegmentedControl::removeSegmented(int index) { D_D(DSegmentedControl); if(index == d->currentIndex) setCurrentIndex(-1); delete d->hLayout->takeAt(index); QToolButton *button = at(index); d->tabList.removeAt(index); if(button) button->deleteLater(); } /*! * \~chinese \brief DSegmentedControl::clear 清除所有 Segment 。 */ void DSegmentedControl::clear() { D_D(DSegmentedControl); for(int i=0; ihLayout->takeAt(i); QToolButton *button = at(i); if(button) button->deleteLater(); } d->tabList.clear(); } bool DSegmentedControl::setCurrentIndex(int currentIndex) { D_D(DSegmentedControl); if(currentIndex == d->currentIndex) return true; if(currentIndex<0||currentIndex>count()-1){ qErrnoWarning("index range over!"); return false; } d->currentIndex = currentIndex; Q_FOREACH (QToolButton *button, d->tabList) { button->setEnabled(true); } at(currentIndex)->setFocus(); at(currentIndex)->setEnabled(false); updateHighlightGeometry(); Q_EMIT currentChanged(currentIndex); Q_EMIT currentTitleChanged(at(currentIndex)->text()); return true; } /*! * \~chinese \brief DSegmentedControl::setCurrentIndexByTitle 设置标题为指定标题的 Segment 为当前选中(高亮)的 Segment。 * \~chinese \param title 为指定的标题。 * \~chinese \return 是否设置成功, true 为设置成功,否则为 false 。 */ bool DSegmentedControl::setCurrentIndexByTitle(const QString &title) { return setCurrentIndex(indexByTitle(title)); } /*! * \~chinese \brief DSegmentedControl::setText 用于给特定位置的 Segment 设置标题。 * \~chinese \param index 为指定 Segment 的索引。 * \~chinese \param title 为要设定的标题内容。 */ void DSegmentedControl::setText(int index, const QString &title) { at(index)->setText(title); } /*! * \~chinese \brief DSegmentedControl::setIcon 用于给特定位置的 Segment 设置图标。 * \~chinese \param index 为指定 Segment 的索引。 * \~chinese \param icon 为要设定的图标。 */ void DSegmentedControl::setIcon(int index, const QIcon &icon) { at(index)->setIcon(icon); } void DSegmentedControl::setAnimationDuration(int animationDuration) { D_D(DSegmentedControl); d->highlightMoveAnimation->setDuration(animationDuration); } void DSegmentedControl::setAnimationType(QEasingCurve::Type animationType) { D_D(DSegmentedControl); d->highlightMoveAnimation->setEasingCurve(animationType); } bool DSegmentedControl::eventFilter(QObject *obj, QEvent *e) { D_D(DSegmentedControl); if(d->currentIndex < 0) return false; QWidget *w = at(d->currentIndex); if (obj == w) { if(e->type() == QEvent::Resize){ updateHighlightGeometry(false); } } return false; } void DSegmentedControl::resizeEvent(QResizeEvent *event) { QPainterPath clip_path; clip_path.addRoundedRect(QRect(QPoint(0, 0), event->size()), 4, 4); D_D(DSegmentedControl); d->clipEffect->setClipPath(clip_path); return QWidget::resizeEvent(event); } void DSegmentedControl::updateHighlightGeometry(bool animation) { D_D(DSegmentedControl); if (d->currentIndex < 0) return; QRect tmp = at(d->currentIndex)->geometry(); d->highlight->resize(tmp.size()); if (d->currentIndex == 0) { tmp.setX(0); } tmp.setY(0); if (d->highlight->pos() == tmp.topLeft()) return; if (animation) { d->highlightMoveAnimation->setStartValue(d->highlight->pos()); d->highlightMoveAnimation->setEndValue(tmp.topLeft()); d->highlightMoveAnimation->start(); } else { d->highlight->move(tmp.topLeft()); } } void DSegmentedControl::buttonClicked() { D_D(DSegmentedControl); int i = d->tabList.indexOf(qobject_cast(sender())); if(i>=0){ setCurrentIndex(i); } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsegmentedcontrol.h000066400000000000000000000062231352002233700216270ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSEGMENTEDCONTROL_H #define DSEGMENTEDCONTROL_H #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSegmentedHighlight : public QToolButton { Q_OBJECT public: explicit DSegmentedHighlight(QWidget *parent = 0); }; class DSegmentedControlPrivate; class LIBDTKWIDGETSHARED_EXPORT DSegmentedControl : public QWidget, public DCORE_NAMESPACE::DObject { Q_OBJECT D_DECLARE_PRIVATE(DSegmentedControl) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) Q_PROPERTY(int count READ count) Q_PROPERTY(int animationDuration READ animationDuration WRITE setAnimationDuration) Q_PROPERTY(QEasingCurve::Type animationType READ animationType WRITE setAnimationType) public: explicit DSegmentedControl(QWidget *parent = 0); int count() const; const DSegmentedHighlight *highlight() const; int currentIndex() const; QToolButton *at(int index) const; QString getText(int index) const; QIcon getIcon(int index) const; int animationDuration() const; int indexByTitle(const QString &title) const; QEasingCurve::Type animationType() const; public Q_SLOTS: int addSegmented(const QString &title); int addSegmented(const QIcon &icon, const QString &title); void addSegmented(const QStringList &titleList); void addSegmented(const QList &iconList, const QStringList &titleList); void insertSegmented(int index, const QString &title); void insertSegmented(int index, const QIcon &icon, const QString &title); void removeSegmented(int index); void clear(); bool setCurrentIndex(int currentIndex); bool setCurrentIndexByTitle(const QString &title); void setText(int index, const QString &title); void setIcon(int index, const QIcon &icon); void setAnimationDuration(int animationDuration); void setAnimationType(QEasingCurve::Type animationType); private Q_SLOTS: void updateHighlightGeometry(bool animation = true); void buttonClicked(); Q_SIGNALS: void currentChanged(int index); void currentTitleChanged(QString title); void animationDurationChanged(int animationDuration); protected: bool eventFilter(QObject *, QEvent *) override; void resizeEvent(QResizeEvent *event) override; }; DWIDGET_END_NAMESPACE #endif // DSEGMENTEDCONTROL_H dtkwidget-2.1.1/src/widgets/dseparatorhorizontal.cpp000066400000000000000000000050511352002233700227160ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dseparatorhorizontal.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DSeparatorHorizontal * \~english \brief The DSeparatorHorizontal class provides an horizontal separator. * * \~english DSeparatorHorizontal has fixed two pixels in height. * * * \~chinese \class DSeparatorHorizontal * \~chinese \brief DSeparatorHorizontal 类提供了通用的横向分割线,可以应用在任何基于 * \~chinese QWidget 的控件上。 * * \~chinese DSeparatorHorizontal 固定高度为2px,如果是放置在 QVBoxLayout 中进行使用, * \~chinese 使用者无需手动指定 DSeparatorHorizontal 控件的宽度,控件会默认使用 QVBoxLayout * \~chinese 提供的最大宽度。否则,使用者需要手动指定控件宽度。 * * * \sa DSeparatorVertical */ /*! * \~english \brief DSeparatorHorizontal::DSeparatorHorizontal constructs an instance of DSeparatorHorizontal. * \~english \param parent is passed to QWidget constructor. */ /*! * \~chinese \brief DSeparatorHorizontal::DSeparatorHorizontal 函数是 * \~chinese DSeparatorHorizontal 类的构造函数。 * \~chinese \param parent 为控件的父控件。 */ DSeparatorHorizontal::DSeparatorHorizontal(QWidget *parent) : QWidget(parent) { DThemeManager::registerWidget(this); this->setFixedHeight(2); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_topRec = new QWidget(this); m_topRec->setObjectName("DSeparatorTopRec"); m_bottomRec = new QWidget(this); m_bottomRec->setObjectName("DSeparatorBottomRec"); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(0); mainLayout->setSpacing(0); mainLayout->addStretch(); mainLayout->addWidget(m_topRec); mainLayout->addWidget(m_bottomRec); mainLayout->addStretch(); this->setLayout(mainLayout); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dseparatorhorizontal.h000066400000000000000000000021651352002233700223660ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSEPARATORHORIZONTAL_H #define DSEPARATORHORIZONTAL_H #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSeparatorHorizontal : public QWidget { Q_OBJECT public: explicit DSeparatorHorizontal(QWidget *parent = 0); private: QWidget *m_topRec = NULL; QWidget *m_bottomRec = NULL; }; DWIDGET_END_NAMESPACE #endif // DSEPARATORHORIZONTAL_H dtkwidget-2.1.1/src/widgets/dseparatorvertical.cpp000066400000000000000000000050031352002233700223330ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dseparatorvertical.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DSeparatorVertical * \~english \brief The DSeparatorVertical class provides an vertical separator. * * \~english DSeparatorVertical has fixed two pixels in width. * * * \~chinese \class DSeparatorVertical * \~chinese \brief DSeparatorVertical 类提供了通用的纵向分割线,可以应用在任何基于 * \~chinese QWidget 的控件上。 * * \~chinese DSeparatorVertical 固定宽度为2px,如果是放置在 QHBoxLayout 中进行使用, * \~chinese 使用者无需手动指定 DSeparatorHorizontal 控件的高度,控件会默认使用 QHBoxLayout * \~chinese 提供的最大高度。否则,使用者需要手动指定控件高度。 * * * \sa DSeparatorHorizontal */ /*! * \~english \brief DSeparatorVertical::DSeparatorVertical constructs an instance of DSeparatorVertical. * \~english \param parent is passed to QWidget constructor. * * \~chinese \brief DSeparatorVertical::DSeparatorVertical 函数是 * \~chinese DSeparatorVertical 类的构造函数。 * \~chinese \param parent 为控件的父控件。 */ DSeparatorVertical::DSeparatorVertical(QWidget *parent) : QWidget(parent) { DThemeManager::registerWidget(this); this->setFixedWidth(2); this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); m_leftRec = new QWidget(this); m_leftRec->setObjectName("DSeparatorLeftRec"); m_rightRec = new QWidget(this); m_rightRec->setObjectName("DSeparatorRightRec"); QHBoxLayout *mainLayout = new QHBoxLayout(this); mainLayout->setMargin(0); mainLayout->setSpacing(0); mainLayout->addStretch(); mainLayout->addWidget(m_leftRec); mainLayout->addWidget(m_rightRec); mainLayout->addStretch(); this->setLayout(mainLayout); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dseparatorvertical.h000066400000000000000000000021531352002233700220030ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSEPARATORVERTICAL_H #define DSEPARATORVERTICAL_H #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSeparatorVertical : public QWidget { Q_OBJECT public: explicit DSeparatorVertical(QWidget *parent = 0); private: QWidget *m_leftRec = NULL; QWidget *m_rightRec = NULL; }; DWIDGET_END_NAMESPACE #endif // DSEPARATORVERTICAL_H dtkwidget-2.1.1/src/widgets/dsettingsdialog.cpp000066400000000000000000000121711352002233700216250ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dsettingsdialog.h" #include #include #include #include #include "dsettingswidgetfactory.h" #include "private/settings/content.h" #include "private/settings/navigation.h" #include "dthememanager.h" #include "dwindowclosebutton.h" #include "dspinbox.h" #include "dbuttonlist.h" #include "doptionlist.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DSettingsDialog * \brief DSettingsDialog provide an common setting ui for deepin style application. * It's depend Dtk::Widget::DSettingsWidgetFactory to auot build ui compent from json file. * \sa Dtk::Widget::DSettingsWidgetFactory * \sa Dtk::Core::DSettings */ /*! * \~chinese \class DSettingsDialog * \brief 为使用DSettings的Dtk程序提供一个通用的设置对话框,这个对话框可以通过json配置文件来自动生成。 * \sa Dtk::Widget::DSettingsWidgetFactory * \sa Dtk::Core::DSettings */ class DSettingsDialogPrivate { public: DSettingsDialogPrivate(DSettingsDialog *parent) : q_ptr(parent) {} Navigation *leftFrame; QFrame *rightFrame; QVBoxLayout *rightLayout; Content *content; DSettingsDialog *q_ptr; Q_DECLARE_PUBLIC(DSettingsDialog) }; DSettingsDialog::DSettingsDialog(QWidget *parent) : DAbstractDialog(parent), dd_ptr(new DSettingsDialogPrivate(this)) { Q_D(DSettingsDialog); DThemeManager::registerWidget(this); setObjectName("DSettingsDialog"); auto layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); d->leftFrame = new Navigation; d->leftFrame->layout()->setContentsMargins(0, 30, 0, 0); layout->addWidget(d->leftFrame); d->rightFrame = new QFrame; d->rightFrame->setObjectName("RightFrame"); d->rightLayout = new QVBoxLayout(d->rightFrame); d->rightLayout->setContentsMargins(1, 0, 0, 0); d->rightLayout->setSpacing(0); d->content = new Content; auto closeBt = new DImageButton; closeBt->setObjectName("DSettingsDialogClose"); d->rightLayout->addWidget(closeBt, 0, Qt::AlignVCenter | Qt::AlignRight); d->rightLayout->addWidget(d->content); layout->addWidget(d->rightFrame); setFixedWidth(680); connect(d->leftFrame, &Navigation::selectedGroup, d->content, &Content::onScrollToGroup); connect(d->content, &Content::scrollToGroup, d->leftFrame, [ = ](const QString & key) { d->leftFrame->blockSignals(true); d->leftFrame->onSelectGroup(key); d->leftFrame->blockSignals(false); }); connect(closeBt, &DWindowCloseButton::clicked, this, &DSettingsDialog::close); } DSettingsDialog::~DSettingsDialog() { } /*! * \~english \brief Return the widget build factory of this dialog. * Every instance of DSettingDialog has it own widgetfactory. * \return */ /*! * \~chinese \brief 获取当前对话框使用的控件构造工厂。 * 每一个设置对话框都有自己的构造工厂实例,这些实例并不会共享数据。 * \return */ DSettingsWidgetFactory *DSettingsDialog::widgetFactory() const { Q_D(const DSettingsDialog); return d->content->widgetFactory(); } /*! * \~english \brief Create all widget for settings options. * Warnning that you can only call the once. * \param settings Dtk::Core::DSettings object from json */ /*! * \~chinese \brief 根据settings数据来创建控件,该方法只能调用一次。 * \param settings 配置文件实例。 */ void DSettingsDialog::updateSettings(Dtk::Core::DSettings *settings) { // TODO: limit to call once updateSettings(QByteArray(), settings); } /*! * \~english \brief Create all widget for settings options with translate context * \param translateContext custom translate data for i18n. * \param settings Dtk::Core::DSettings object from json * \sa void DSettingsDialog::updateSettings(Dtk::Core::DSettings *settings) */ /*! * \~chinese \brief 根据settings数据来创建控件,并使用translateContext来进行国际化,该方法只能调用一次。 * \param translateContext 国际化使用的上下文。 * \param settings 配置文件实例。 * \sa void DSettingsDialog::updateSettings(Dtk::Core::DSettings *settings) */ void DSettingsDialog::updateSettings(const QByteArray &translateContext, Core::DSettings *settings) { Q_D(DSettingsDialog); d->leftFrame->updateSettings(translateContext, settings); d->content->updateSettings(translateContext, settings); adjustSize(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsettingsdialog.h000066400000000000000000000026531352002233700212760ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include #include "dabstractdialog.h" DWIDGET_BEGIN_NAMESPACE class DSettingsWidgetFactory; class DSettingsDialogPrivate; class LIBDTKWIDGETSHARED_EXPORT DSettingsDialog : public DAbstractDialog { Q_OBJECT public: DSettingsDialog(QWidget *parent = nullptr); ~DSettingsDialog(); DSettingsWidgetFactory* widgetFactory() const; public Q_SLOTS: void updateSettings(DTK_CORE_NAMESPACE::DSettings *settings); void updateSettings(const QByteArray &translateContext, DTK_CORE_NAMESPACE::DSettings *settings); private: QScopedPointer dd_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(dd_ptr), DSettingsDialog) }; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsettingswidgetfactory.cpp000066400000000000000000000535721352002233700232530ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dsettingswidgetfactory.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "private/settings/shortcutedit.h" #include "private/settings/buttongroup.h" #include "private/settings/combobox.h" DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DSettingsWidgetFactory * \~chinese \brief DSettingsWidgetFactory是一个用于构造Deepin风格的设置对话框的控件。\n * \~chinese 对于每种控件,均由一个id和对应的构造函数来组成,DSettingsWidgetFactory内置了许多基础的控件,包括:\n * \~chinese checkbox/lineedit/combobox/spinbutton/buttongroup/radiogroup/slider等。 * \~chinese */ /*! * \~chinese \typedef DSettingsWidgetFactory::WidgetCreateHandler * \~chinese \brief 自定义的控件构建函数,一般接受一个 Dtk::Core::DSettingsOption 作为参数。\n */ #define PRIVATE_PROPERTY_translateContext "_d_DSettingsWidgetFactory_translateContext" static inline QString tr(const QByteArray &translateContext, const char *sourceText) { if (translateContext.isEmpty()) { return QObject::tr(sourceText); } return qApp->translate(translateContext, sourceText); } /*! * \~chinese \brief DSettingsWidgetFactory::createTwoColumWidget 返回一个水平布局的控件, * \~chinese 左边为option的名称标签,右边为设置的自定义控件rightWidget * \~chinese \param option 设置项,包含改配置的名称 * \~chinese \param rightWidget 自定义控件 * \~chinese \return 生成的水平布局配置项控件 * \~chinese \sa Dtk::Widget::DSettingsWidgetFactory::createTwoColumWidget(const QByteArray &translateContext, Dtk::Core::DSettingsOption *option, QWidget *rightWidget) */ QWidget *DSettingsWidgetFactory::createTwoColumWidget(DTK_CORE_NAMESPACE::DSettingsOption *option, QWidget *rightWidget) { return createTwoColumWidget(QByteArray(), option, rightWidget); } /*! * \~chinese \brief DSettingsWidgetFactory::createTwoColumWidget 返回一个水平布局的控件, * \~chinese 左边为option的名称标签,右边为设置的自定义控件rightWidget, 可以通过translateContext设置翻译上下文。 * \~chinese \param translateContext 自定义的翻译上下文,参考 QCoreApplication::translate(); * \~chinese \param option 设置项,包含改配置的名称 * \~chinese \param rightWidget 自定义控件 * \~chinese \return 生成的水平布局配置项控件 * \~chinese \sa Dtk::Widget::DSettingsWidgetFactory::createTwoColumWidget(Dtk::Core::DSettingsOption *option, QWidget *rightWidget) */ QWidget *DSettingsWidgetFactory::createTwoColumWidget(const QByteArray &translateContext, DTK_CORE_NAMESPACE::DSettingsOption *option, QWidget *rightWidget) { auto optionFrame = new QFrame; optionFrame->setMinimumHeight(30); optionFrame->setObjectName("OptionFrame"); // optionFrame->setStyleSheet("QFrame{border: 1px solid red;}"); auto optionLayout = new QGridLayout(optionFrame); optionLayout->setContentsMargins(0, 0, 0, 0); optionLayout->setSpacing(0); rightWidget->setMinimumWidth(240); if (!option->name().isEmpty()) { optionLayout->setColumnMinimumWidth(0, 110); optionLayout->setHorizontalSpacing(20); optionLayout->setColumnStretch(0, 10); optionLayout->setColumnStretch(1, 100); auto trName = DWIDGET_NAMESPACE::tr(translateContext, option->name().toStdString().c_str()); auto labelWidget = new QLabel(trName); labelWidget->setContentsMargins(5, 0, 0, 0); labelWidget->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); labelWidget->setMinimumWidth(150); labelWidget->setFixedWidth(160); labelWidget->setObjectName("OptionLabel"); optionLayout->addWidget(labelWidget, 0, 0, Qt::AlignLeft | Qt::AlignVCenter); optionLayout->addWidget(rightWidget, 0, 1, Qt::AlignLeft | Qt::AlignVCenter); } else { optionLayout->setColumnMinimumWidth(0, 5); optionLayout->addWidget(rightWidget, 0, 1, Qt::AlignLeft | Qt::AlignVCenter); } return optionFrame; } QWidget *createShortcutEditOptionHandle(QObject *opt) { auto option = qobject_cast(opt); auto rightWidget = new ShortcutEdit(); rightWidget->setObjectName("OptionShortcutEdit"); auto updateWidgetValue = [rightWidget](const QVariant & optionValue) { switch (optionValue.type()) { case QVariant::List: case QVariant::StringList: { QStringList keyseqs = optionValue.toStringList(); if (keyseqs.length() == 2) { auto modifier = static_cast(keyseqs.value(0).toInt()); auto key = static_cast(keyseqs.value(1).toInt()); rightWidget->setShortCut(modifier, key); } break; } case QVariant::String: { rightWidget->setShortCut(optionValue.toString()); break; } default: qCritical() << "unknown variant type" << optionValue; } }; auto optionValue = option->value(); updateWidgetValue(optionValue); auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); // keep raw value type switch (optionValue.type()) { case QVariant::List: case QVariant::StringList: { option->connect(rightWidget, &ShortcutEdit::shortcutChanged, option, [ = ](Qt::KeyboardModifiers modifier, Qt::Key key) { QStringList keyseqs; keyseqs << QString("%1").arg(modifier) << QString("%1").arg(key); option->setValue(keyseqs); }); break; } case QVariant::String: { option->connect(rightWidget, &ShortcutEdit::shortcutStringChanged, option, [ = ](const QString & seqString) { option->setValue(seqString); }); break; } default: qCritical() << "unknown variant type" << optionValue; } option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { updateWidgetValue(value); rightWidget->update(); }); return optionWidget; } QWidget *createCheckboxOptionHandle(QObject *opt) { auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto option = qobject_cast(opt); auto value = option->data("text").toString(); auto trName = DWIDGET_NAMESPACE::tr(translateContext, value.toStdString().c_str()); // auto checkboxFrame = new QWidget; // auto checkboxLayout = new QHBoxLayout(checkboxFrame); // checkboxLayout->setSpacing(0); // checkboxLayout->setContentsMargins(0, 0, 0, 0); auto rightWidget = new QCheckBox(trName); // auto checkboxLabel = new QLabel(trName); // checkboxLabel->setWordWrap(true); // checkboxLabel->setMinimumWidth(320); // checkboxLayout->addWidget(rightWidget); // checkboxLayout->addSpacing(5); // checkboxLayout->addWidget(checkboxLabel); // checkboxLayout->addStretch(); rightWidget->setMinimumHeight(30); rightWidget->setObjectName("OptionCheckbox"); rightWidget->setChecked(option->value().toBool()); // auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, checkboxFrame); option->connect(rightWidget, &QCheckBox::stateChanged, option, [ = ](int status) { option->setValue(status == Qt::Checked); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setChecked(value.toBool()); rightWidget->update(); }); return rightWidget; // return optionWidget; } QWidget *createLineEditOptionHandle(QObject *opt) { auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto option = qobject_cast(opt); auto value = option->data("text").toString(); auto trName = DWIDGET_NAMESPACE::tr(translateContext, value.toStdString().c_str()); auto rightWidget = new QLineEdit(trName); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionLineEdit"); rightWidget->setText(option->value().toString()); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); option->connect(rightWidget, &QLineEdit::editingFinished, option, [ = ]() { option->setValue(rightWidget->text()); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setText(value.toString()); rightWidget->update(); }); return optionWidget; } QWidget *createComboBoxOptionHandle(QObject *opt) { auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto option = qobject_cast(opt); auto rightWidget = new ComboBox(); rightWidget->setFocusPolicy(Qt::StrongFocus); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionLineEdit"); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); auto initComboxList = [ = ](const QStringList & data) { for (auto item : data) { auto trName = DWIDGET_NAMESPACE::tr(translateContext, item.toStdString().c_str()); rightWidget->addItem(trName); } auto current = option->value().toInt(); rightWidget->setCurrentIndex(current); option->connect(rightWidget, static_cast(&QComboBox::currentIndexChanged), option, [ = ](int index) { option->setValue(index); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setCurrentIndex(value.toInt()); }); }; auto initComboxMap = [ = ](const QMap &data) { auto keys = data.value("keys").toStringList(); auto values = data.value("values").toStringList(); for (int i = 0; i < keys.length(); ++i) { auto trName = DWIDGET_NAMESPACE::tr(translateContext, values.value(i).toStdString().c_str()); rightWidget->addItem(trName, keys.value(i)); } auto currentData = option->value().toString(); auto currentIndex = rightWidget->findData(currentData); rightWidget->setCurrentIndex(currentIndex); option->connect(rightWidget, static_cast(&QComboBox::currentIndexChanged), option, [ = ](int index) { option->setValue(keys.value(index)); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { auto currentIndex = rightWidget->findData(value.toString()); rightWidget->setCurrentIndex(currentIndex); }); }; auto updateData = [ = ](const QString & dataType, const QVariant & data) { if ("items" != dataType) { return; } rightWidget->clear(); if (data.type() == QVariant::StringList) { initComboxList(data.toStringList()); } if (data.type() == QVariant::Map) { initComboxMap(data.toMap()); } rightWidget->update(); }; auto initData = option->data("items"); updateData("items", initData); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::dataChanged, rightWidget, [ = ](const QString & dataType, const QVariant & value) { updateData(dataType, value); }); return optionWidget; } QWidget *createButtonGroupOptionHandle(QObject *opt) { auto option = qobject_cast(opt); auto rightWidget = new ButtonGroup(); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionButtonGroup"); auto items = option->data("items").toStringList(); rightWidget->setButtons(items); rightWidget->setCheckedButton(0); auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); rightWidget->setParent(optionWidget); option->connect(rightWidget, &ButtonGroup::buttonChecked, option, [ = ](int id) { option->setValue(id); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setCheckedButton(value.toInt()); rightWidget->update(); }); return optionWidget; } QWidget *createRadioGroupOptionHandle(QObject *opt) { auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto option = qobject_cast(opt); auto items = option->data("items").toStringList(); auto rightWidget = new QGroupBox; rightWidget->setContentsMargins(0, 0, 0, 0); rightWidget->setObjectName("OptionRadioGroup"); rightWidget->setAlignment(Qt::AlignLeft); rightWidget->setFixedHeight(24 * items.length() + 8); auto rgLayout = new QVBoxLayout; rgLayout->setContentsMargins(0, 0, 0, 0); auto index = 0; QList buttonList; for (auto item : items) { auto rb = new QRadioButton(DWIDGET_NAMESPACE::tr(translateContext, item.toStdString().c_str())); rb->setFixedHeight(24); rb->setProperty("_dtk_widget_settings_radiogroup_index", index); rgLayout->addWidget(rb); ++index; option->connect(rb, &QRadioButton::clicked, option, [ = ](int) { auto index = rb->property("_dtk_widget_settings_radiogroup_index").toInt(); option->setValue(index); }); buttonList << rb; } rightWidget->setLayout(rgLayout); // auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); // rightWidget->setParent(optionWidget); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ buttonList ](const QVariant & value) { auto index = value.toInt(); if (buttonList.length() > index) { buttonList.value(index)->setChecked(true); } }); index = option->value().toInt(); if (buttonList.length() > index) { buttonList.value(index)->setChecked(true); } rightWidget->setStyleSheet("QGroupBox{border: 0px solid red;}"); // optionWidget->setFixedHeight(24 * items.length() + 8); // return optionWidget; return rightWidget; } QWidget *createSpinButtonOptionHandle(QObject *opt) { auto option = qobject_cast(opt); auto rightWidget = new QSpinBox(); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionDSpinBox"); rightWidget->setValue(option->value().toInt()); if (option->data("max").isValid()) { rightWidget->setMaximum(option->data("max").toInt()); } if (option->data("min").isValid()) { rightWidget->setMinimum(option->data("min").toInt()); } auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); option->connect(rightWidget, static_cast(&QSpinBox::valueChanged), option, [ = ](int value) { option->setValue(value); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setValue(value.toInt()); rightWidget->update(); }); return optionWidget; } QWidget *createSliderOptionHandle(QObject *opt) { auto option = qobject_cast(opt); auto rightWidget = new QSlider(); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionQSlider"); rightWidget->setOrientation(Qt::Horizontal); rightWidget->setMaximum(option->data("max").toInt()); rightWidget->setMinimum(option->data("min").toInt()); rightWidget->setValue(option->value().toInt()); auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); option->connect(rightWidget, &QSlider::valueChanged, option, [ = ](int value) { rightWidget->blockSignals(true); option->setValue(value); rightWidget->blockSignals(false); }); option->connect(option, &DTK_CORE_NAMESPACE::DSettingsOption::valueChanged, rightWidget, [ = ](const QVariant & value) { rightWidget->setValue(value.toInt()); rightWidget->update(); }); return optionWidget; } QWidget *createUnsupportHandle(QObject *opt) { auto option = qobject_cast(opt); auto rightWidget = new QLabel(); rightWidget->setFixedHeight(24); rightWidget->setObjectName("OptionUnsupport"); rightWidget->setText("Unsupport option type: " + option->viewType()); auto translateContext = opt->property(PRIVATE_PROPERTY_translateContext).toByteArray(); auto optionWidget = DSettingsWidgetFactory::createTwoColumWidget(translateContext, option, rightWidget); // optionWidget->setStyleSheet("QFrame{border: 1px solid red;}"); return optionWidget; } class DSettingsWidgetFactoryPrivate { public: DSettingsWidgetFactoryPrivate(DSettingsWidgetFactory *parent) : q_ptr(parent) { widgetCreateHandles.insert("checkbox", createCheckboxOptionHandle); widgetCreateHandles.insert("lineedit", createLineEditOptionHandle); widgetCreateHandles.insert("combobox", createComboBoxOptionHandle); widgetCreateHandles.insert("shortcut", createShortcutEditOptionHandle); widgetCreateHandles.insert("spinbutton", createSpinButtonOptionHandle); widgetCreateHandles.insert("buttongroup", createButtonGroupOptionHandle); widgetCreateHandles.insert("radiogroup", createRadioGroupOptionHandle); widgetCreateHandles.insert("slider", createSliderOptionHandle); } QMap > widgetCreateHandles; DSettingsWidgetFactory *q_ptr; Q_DECLARE_PUBLIC(DSettingsWidgetFactory) }; DSettingsWidgetFactory::DSettingsWidgetFactory(QObject *parent) : QObject(parent), dd_ptr(new DSettingsWidgetFactoryPrivate(this)) { } DSettingsWidgetFactory::~DSettingsWidgetFactory() { } /*! * \~chinese \brief DSettingsWidgetFactory::registerWidget 向Factory注册一种类型viewType。注册该类型后,可以通过在DSettings的DOption中,设置type为对应的viewType,这样Factory在构建viewType对应的控件时,会调用handler所指定的方法来构建。 * \~chinese \param viewType 控件类型,建议为全局唯一的字符串,且不要和内部类型重复,参考 Dtk::Widget::DSettingsWidgetFactory * \~chinese \param handler 自定义的控件构建函数, 参考 Dtk::Widget::DSettingsWidgetFactory::WidgetCreateHandler */ void DSettingsWidgetFactory::registerWidget(const QString &viewType, std::function handler) { Q_D(DSettingsWidgetFactory); d->widgetCreateHandles.insert(viewType, handler); } /*! * \~chinese \brief DSettingsWidgetFactory::createWidget 创建一个option对应的配置控件,一般是需要自定义控件时使用,可以通过translateContext设置翻译上下文。 * \~chinese \param option 需要构建的配置项 * \~chinese \return 根据option的type属性创建的配置控件 * \~chinese \sa Dtk::Widget::DSettingsWidgetFactory::createWidget(const QByteArray &translateContext, QPointer option) */ QWidget *DSettingsWidgetFactory::createWidget(QPointer option) { return createWidget(QByteArray(), option); } /*! * \~chinese \brief DSettingsWidgetFactory::createWidget 创建一个option对应的配置控件,一般是需要自定义控件时使用, * \~chinese \param translateContext 自定义的翻译上下文,参考 QCoreApplication::translate(); * \~chinese \param option 需要构建的配置项 * \~chinese \return 根据option的type属性创建的配置控件 * \~chinese \sa Dtk::Widget::DSettingsWidgetFactory::createWidget(QPointer option) */ QWidget *DSettingsWidgetFactory::createWidget(const QByteArray &translateContext, QPointer option) { option->setProperty(PRIVATE_PROPERTY_translateContext, translateContext); Q_D(DSettingsWidgetFactory); auto handle = d->widgetCreateHandles.value(option->viewType()); if (handle) { return handle(option.data()); } else { return createUnsupportHandle(option.data()); } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsettingswidgetfactory.h000066400000000000000000000035551352002233700227140ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include #include "dtkwidget_global.h" DCORE_BEGIN_NAMESPACE class DSettingsOption; DCORE_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DSettingsWidgetFactoryPrivate; class LIBDTKWIDGETSHARED_EXPORT DSettingsWidgetFactory : public QObject { Q_OBJECT public: typedef QWidget *(WidgetCreateHandler)(QObject *); explicit DSettingsWidgetFactory(QObject *parent = Q_NULLPTR); ~DSettingsWidgetFactory(); void registerWidget(const QString &viewType, std::function handler); QWidget *createWidget(QPointer option); QWidget *createWidget(const QByteArray &translateContext, QPointer option); static QWidget *createTwoColumWidget(DTK_CORE_NAMESPACE::DSettingsOption *option, QWidget *rightWidget); static QWidget *createTwoColumWidget(const QByteArray &translateContext, DTK_CORE_NAMESPACE::DSettingsOption *option, QWidget *rightWidget); private: QScopedPointer dd_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(dd_ptr), DSettingsWidgetFactory) }; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dshortcutedit.cpp000066400000000000000000000175221352002233700213330ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dshortcutedit.h" #include "dthememanager.h" #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE // static const variables const QString DShortcutEdit::DefaultTips = tr("Please input a new shortcut"); DShortcutEdit::DShortcutEdit(QWidget *parent) : QFrame(parent) { DThemeManager::registerWidget(this); m_keysEdit = new QLabel(DefaultTips); m_keysEdit->setObjectName("Edit"); m_keysEdit->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter); m_keysEdit->installEventFilter(this); m_keysEdit->setFocusPolicy(Qt::StrongFocus); m_keysEdit->hide(); m_keysLabel = new DShortcutEditLabel; m_keysLabel->setObjectName("Label"); m_keysLabel->setAlignment(Qt::AlignVCenter | Qt::AlignRight); m_keysLabel->installEventFilter(this); m_keysLabel->setFocusPolicy(Qt::NoFocus); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(m_keysEdit); layout->addWidget(m_keysLabel); layout->setSpacing(0); layout->setMargin(0); setLayout(layout); setFocusPolicy(Qt::NoFocus); // Meta+Ctrl+Alt+Shift+Backspace is longest shortcut keys setMinimumWidth(180); #ifdef QT_DEBUG // for test setShortcutKey("Meta+Ctrl+Alt+Shift+Backspace"); #endif m_keyMapping.insert("PgDown", "PageDown"); m_keyMapping.insert("PgUp", "PageUp"); m_blockedShortcutKeys.append(QRegExp("^Backspace$")); //connect(this, &DShortcutEdit::invalidShortcutKey, [this] () -> void {m_keysLabel->setEchoState(DShortcutEditLabel::Invalid);}); } bool DShortcutEdit::eventFilter(QObject *o, QEvent *e) { if (o == m_keysEdit && e->type() == QEvent::FocusOut && m_keysEdit->isVisible()) { toEchoMode(); } else if (o == m_keysLabel && e->type() == QEvent::MouseButtonRelease && m_keysLabel->isVisible()) { toInputMode(); } else if (o == m_keysEdit && e->type() == QEvent::KeyPress) { shortcutKeyPress(static_cast(e)); } return false; } void DShortcutEdit::clearShortcutKey() { setShortcutKey(QString()); } QSize DShortcutEdit::sizeHint() const { if (!m_keysLabel || !m_keysEdit) { return QSize(); } return QSize(qMax(m_keysLabel->sizeHint().width(), m_keysEdit->sizeHint().width()), qMax(m_keysLabel->sizeHint().height(), m_keysEdit->sizeHint().height())); } void DShortcutEdit::setShortcutKey(const QString &key) { if (key.isEmpty()) { m_keysLabel->setText(tr("None")); } else { m_keysLabel->setText(convertShortcutKeys(key)); } m_keysEdit->setText(convertShortcutKeys(key)); m_shortcutKeys = key; Q_EMIT shortcutKeysChanged(m_shortcutKeys); } void DShortcutEdit::setKeyMapping(const QMap &mapping) { m_keyMapping = mapping; } void DShortcutEdit::setBlockShortcutKeysList(const QList &kList) { m_blockedShortcutKeys = kList; } void DShortcutEdit::setInValidState() const { m_keysLabel->setEchoState(DShortcutEditLabel::Invalid); } void DShortcutEdit::setNormalState() const { m_keysLabel->setEchoState(DShortcutEditLabel::Normal); } const QMap &DShortcutEdit::getKeyMapping() const { return std::move(m_keyMapping); } const QList &DShortcutEdit::getBlockShortcutKeysList() const { return m_blockedShortcutKeys; } bool DShortcutEdit::isValidShortcutKey(const QString &key) { for (const QRegExp &k : m_blockedShortcutKeys) if (key.contains(k)) { return false; } /*const QStringList keys = key.split("+"); if (keys.size() == 1) { const QString firstKey = keys.first(); // F1 ~ F12 if (!firstKey.contains(QRegExp("^F(\\d|1[0-2])$"))) return false; } const QString lastKey = keys.last(); if (lastKey.size() == 2 && !lastKey.at(0).isLetter()) return false; if (lastKey == "Meta" || lastKey == "Ctrl" || lastKey == "Shift" || lastKey == "Alt") return false;*/ qWarning() << "isValidShortcutKey: " << key; return true; } void DShortcutEdit::toEchoMode() { m_keysLabel->show(); m_keysEdit->hide(); Q_EMIT shortcutKeysFinished(m_shortcutKeys); if (!m_shortcutKeys.isEmpty() && !isValidShortcutKey(m_shortcutKeys)) { Q_EMIT invalidShortcutKey(m_shortcutKeys); } } void DShortcutEdit::toInputMode() const { m_keysLabel->hide(); m_keysLabel->setEchoState(DShortcutEditLabel::Normal); m_keysEdit->show(); m_keysEdit->setFocus(); m_keysEdit->setText(DefaultTips); } void DShortcutEdit::shortcutKeyPress(QKeyEvent *e) { //qDebug() << e->key() << e->text() << e->count() << Qt::CTRL << e->nativeScanCode() << e->nativeVirtualKey(); m_shortcutKeys.clear(); int state = 0; if ((e->modifiers() & Qt::ShiftModifier) && (e->text().isEmpty() || !e->text().at(0).isPrint() || e->text().at(0).isLetterOrNumber() || e->text().at(0).isSpace())) { state |= Qt::SHIFT; } if (e->modifiers() & Qt::ControlModifier) { state |= Qt::CTRL; } if (e->modifiers() & Qt::MetaModifier) { state |= Qt::META; } if (e->modifiers() & Qt::AltModifier) { state |= Qt::ALT; } int key = e->key() | state; // qDebug() << "keys: " << QKeySequence(key, 0, 0, 0).toString(QKeySequence::NativeText); m_shortcutKeys = QKeySequence(key, 0, 0, 0).toString(QKeySequence::NativeText); //qDebug() << m_shortcutKeys << e->text() << e->key(); //qDebug() << "keys: " << int(e->key() & ~(Qt::SHIFT | Qt::ControlModifier | Qt::META | Qt::ALT)); // if pressed key is "Backspace", its means "clear all" if (m_shortcutKeys == "Backspace") { return clearShortcutKey(); } setShortcutKey(m_shortcutKeys); QString lastKey = m_shortcutKeys.split("+").last(); qDebug() << "last: " << lastKey << lastKey.size(); // if lastKey is not alt, shift, ctrl, meta, shortcut key is finished. if (lastKey.size() == 2 && !lastKey.at(0).isLetter()) { return; } if (lastKey != "Meta" && lastKey != "Ctrl" && lastKey != "Shift" && lastKey != "Alt") { toEchoMode(); } } QString DShortcutEdit::convertShortcutKeys(const QString &keys) { QString newKeys = keys; for (const QString &k : m_keyMapping.keys()) { newKeys.replace(k, m_keyMapping[k]); } return newKeys; } DShortcutEditLabel::DShortcutEditLabel(QWidget *parent) : QLabel(parent) { setEchoState(Normal); connect(this, &DShortcutEditLabel::colorSettingChange, [this]() -> void {setEchoState(m_state);}); } void DShortcutEditLabel::setEchoState(const DShortcutEditLabel::EchoState state) { QColor c = m_colorNormal; switch (state) { case Normal: c = m_colorNormal; break; case Hover: c = m_colorHover; break; case Invalid: c = m_colorInvalid; break; } setStyleSheet(QString("color:%1;").arg(c.name())); update(); m_state = state; } void DShortcutEditLabel::enterEvent(QEvent *) { if (m_state == Normal) { setEchoState(Hover); } } void DShortcutEditLabel::leaveEvent(QEvent *) { if (m_state == Hover) { setEchoState(Normal); } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dshortcutedit.h000066400000000000000000000060201352002233700207670ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSHORTCUTEDIT_H #define DSHORTCUTEDIT_H #include #include #include #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DShortcutEditLabel; class D_DECL_DEPRECATED_X("Remove useless old widget") LIBDTKWIDGETSHARED_EXPORT DShortcutEdit : public QFrame { Q_OBJECT public: DShortcutEdit(QWidget *parent = Q_NULLPTR); QSize sizeHint() const; bool eventFilter(QObject *o, QEvent *e); bool isValidShortcutKey(const QString & key); const QMap &getKeyMapping() const; const QList &getBlockShortcutKeysList() const; Q_SIGNALS: void shortcutKeysChanged(const QString & shortcutKeys); void shortcutKeysFinished(const QString & shortcutKeys); void invalidShortcutKey(const QString & shortcutKeys); public Q_SLOTS: void clearShortcutKey(); void setShortcutKey(const QString & key); void setKeyMapping(const QMap & mapping); void setBlockShortcutKeysList(const QList & kList); void setInValidState() const; void setNormalState() const; private Q_SLOTS: void toEchoMode(); void toInputMode() const; void shortcutKeyPress(QKeyEvent *e); private: QString convertShortcutKeys(const QString & keys); private: DShortcutEditLabel *m_keysLabel; QLabel *m_keysEdit; QString m_shortcutKeys; QList m_blockedShortcutKeys; QMap m_keyMapping; static const QString DefaultTips; }; class DShortcutEditLabel : public QLabel { Q_OBJECT Q_PROPERTY(QColor echoNormal MEMBER m_colorNormal NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true) Q_PROPERTY(QColor echoHover MEMBER m_colorHover NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true) Q_PROPERTY(QColor echoInvalid MEMBER m_colorInvalid NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true) public: enum EchoState {Normal = 1, Hover, Invalid}; public: DShortcutEditLabel(QWidget * parent = 0); void setEchoState(const EchoState state); Q_SIGNALS: void colorSettingChange(); private: void enterEvent(QEvent *); void leaveEvent(QEvent *); private: QColor m_colorNormal; QColor m_colorHover; QColor m_colorInvalid; EchoState m_state = Normal; }; DWIDGET_END_NAMESPACE #endif // DSHORTCUTEDIT_H dtkwidget-2.1.1/src/widgets/dsimplelistitem.cpp000066400000000000000000000044601352002233700216530ustar00rootroot00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; tab-width: 4 -*- * -*- coding: utf-8 -*- * * Copyright (C) 2011 ~ 2017 Deepin, Inc. * 2011 ~ 2017 Wang Yong * * Author: Wang Yong * Maintainer: Wang Yong * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dsimplelistitem.h" DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DSimpleListItem * \~chinese \brief DSimpleListItem 是 DSimpleListView 的接口,得到 DSimpleListView 传递过来的 QPainter、列信息、表格矩形数据后,由开发者完全控制行内容的绘制。 */ /*! * \~chinese \property DSimpleListItem::sameAs * \~chinese \brief 此接口是用来比较两个 item 的函数 */ /*! * \~chinese \property DSimpleListItem::drawBackground * \~chinese \brief drawBackground 用于绘制背景的接口函数。 * \~chinese \param rect 对应矩形区域行 * \~chinese \param painter 可以绘画出你想画的内容 * \~chinese \param index 索引值,可以根据索引绘制不同的行效果,例如斑马线 * \~chinese \param isSelect 当前项是否被选择 * \~chinese \param isHover 鼠标是否悬停在当前项 */ /*! * \~chinese \property DSimpleListItem::drawForeground * \~chinese \brief drawForeground 用于绘制内容的接口函数。 * \~chinese \param rect 对应矩形区域行 * \~chinese \param painter 可以绘画出你想画的内容 * \~chinese \param column 可以根据列索引绘制不同的列内容 * \~chinese \param index 索引值,可以根据索引绘制不同的效果 * \~chinese \param isSelect 当前项是否被选择 * \~chinese \param isHover 鼠标是否悬停在当前项 */ DSimpleListItem::DSimpleListItem() { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsimplelistitem.h000066400000000000000000000062251352002233700213210ustar00rootroot00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; tab-width: 4 -*- * -*- coding: utf-8 -*- * * Copyright (C) 2011 ~ 2017 Deepin, Inc. * 2011 ~ 2017 Wang Yong * * Author: Wang Yong * Maintainer: Wang Yong * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSIMPLELISTITEM_H #define DSIMPLELISTITEM_H #include #include #include DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSimpleListItem : public QObject { Q_OBJECT public: DSimpleListItem(); /* * The interface function that used to compare the two DSimpleListItem * The DSimpleListView requires this interface to keep the selected items unchanged when refreshed * * @item any subclass of DSimpleListItem, you can use static_cast in implementation to access any attribute to compare two items * @return return true if two items have same attribute, the compare method implement by subclass of DSimpleListItem */ virtual bool sameAs(DSimpleListItem *item)=0; /* * The interface function that used to draw background of DSimpleListItem. * Such as background and selected effect. * * @rect row corresponding to the drawing of the rectangular area * @painter the painter used to draw anything you want * @index the index of DSimpleListItem, you can draw different rows effect based on the index, such as the zebra crossing * @isSelect current item is selected, you can draw selected effect under content when isSelect is true * @isHover current item is hovered, you can draw hover effect under content when isHover is true */ virtual void drawBackground(QRect rect, QPainter *painter, int index, bool isSelect, bool isHover)=0; /* * The interface function that used to draw foreground of DSimpleListItem. * * @rect column corresponding to the drawing of the rectangular area * @painter the painter used to draw anything you want * @column the column of DSimpleListItem, you can draw different column content based on the column index * @index the index of DSimpleListItem, you can draw different rows effect based on the index, such as the zebra crossing * @isSelect current item is selected, you can draw selected effect under content when isSelect is true * @isHover current item is hovered, you can draw hover effect under content when isHover is true */ virtual void drawForeground(QRect rect, QPainter *painter, int column, int index, bool isSelect, bool isHover)=0; }; DWIDGET_END_NAMESPACE #endif dtkwidget-2.1.1/src/widgets/dsimplelistview.cpp000066400000000000000000001535011352002233700216700ustar00rootroot00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; tab-width: 4 -*- * -*- coding: utf-8 -*- * * Copyright (C) 2011 ~ 2017 Deepin, Inc. * 2011 ~ 2017 Wang Yong * * Author: Wang Yong * Maintainer: Wang Yong * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dsimplelistview.h" #include #include #include #include #include #include #include #include #include #include "dhidpihelper.h" DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DSimpleListViewPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DSimpleListViewPrivate(DSimpleListView *parent) : DObjectPrivate(parent) { } QList getSearchItems(QList items); int getItemsTotalHeight(); int getTopRenderOffset(); void sortItemsByColumn(int column, bool descendingSort); QPointer lastHoverItem; QPointer lastSelectItem; QPointer drawHoverItem; QPointer mouseHoverItem; QList *listItems; QList *renderItems; QList *selectionItems; QList columnTitles; QList *sortingAlgorithms; QList *sortingOrderes; QList columnWidths; QString searchContent; QTimer *hideScrollbarTimer; SearchAlgorithm searchAlgorithm; bool defaultSortingOrder; bool mouseAtScrollArea; bool mouseDragScrollbar; bool drawFrame; bool isKeepSelectWhenClickBlank; bool isSingleSelect; int alwaysVisibleColumn; int clipRadius; int defaultSortingColumn; int hideScrollbarDuration; int lastHoverColumnIndex; int oldRenderOffset; int renderOffset; int rowHeight; int scrollDistance; int scrollStartY; int scrollUnit; int scrollbarDefaultWidth; int scrollbarDragWidth; int scrollbarMinHeight; int scrollbarPadding; int titleArrowPadding; int titleHeight; int titleHoverColumn; int titlePadding; int titlePressColumn; D_DECLARE_PUBLIC(DSimpleListView) }; /*! * \~chinese \class DSimpleListView * \~chinese \brief DSimpleListView 是 deepin 基于 QWidget 从零绘制的列表控件。 * \~chinese \brief 开发者只要懂得怎么使用 QPainter 进行图形绘制,开发者就可以在 DSimpleListItem 中绘制任意行内容,包括文本、图片、任意控件甚至每行都可以画一个小电影,而代码的复杂度不会随着绘制行内容而发生变化,所有的行内容都源于怎么使用 QPainter。 */ DSimpleListView::DSimpleListView(QWidget *parent) : QWidget(parent), DObject(*new DSimpleListViewPrivate(this)) { D_D(DSimpleListView); // Init. installEventFilter(this); // add event filter setMouseTracking(true); // make MouseMove can response d->scrollDistance = 0; d->renderOffset = 0; d->titleHeight = 0; d->titleArrowPadding = 4; d->titlePadding = 14; d->rowHeight = 36; d->searchContent = ""; d->searchAlgorithm = NULL; d->titleHoverColumn = -1; d->titlePressColumn = -1; arrowUpDarkNormalImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_up_normal.svg"); arrowUpDarkHoverImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_up_hover.svg"); arrowUpDarkPressImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_up_press.svg"); arrowDownDarkNormalImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_down_normal.svg"); arrowDownDarkHoverImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_down_hover.svg"); arrowDownDarkPressImage = DHiDPIHelper::loadNxPixmap(":/images/dark/images/arrow_down_press.svg"); arrowUpLightNormalImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_up_normal.svg"); arrowUpLightHoverImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_up_hover.svg"); arrowUpLightPressImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_up_press.svg"); arrowDownLightNormalImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_down_normal.svg"); arrowDownLightHoverImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_down_hover.svg"); arrowDownLightPressImage = DHiDPIHelper::loadNxPixmap(":/images/light/images/arrow_down_press.svg"); arrowUpNormalImage = arrowUpLightNormalImage; arrowUpHoverImage = arrowUpLightHoverImage; arrowUpPressImage = arrowUpLightPressImage; arrowDownNormalImage = arrowDownLightNormalImage; arrowDownHoverImage = arrowDownLightHoverImage; arrowDownPressImage = arrowDownLightPressImage; d->listItems = new QList(); d->renderItems = new QList(); d->selectionItems = new QList(); d->lastSelectItem = NULL; d->lastHoverItem = NULL; d->lastHoverColumnIndex = -1; d->drawHoverItem = NULL; d->mouseHoverItem = NULL; d->mouseAtScrollArea = false; d->mouseDragScrollbar = false; d->drawFrame = false; d->isKeepSelectWhenClickBlank = false; d->isSingleSelect = false; d->scrollbarDefaultWidth = 4; d->scrollbarDragWidth = 8; d->scrollbarMinHeight = 30; d->scrollbarPadding = 4; d->hideScrollbarDuration = 2000; d->oldRenderOffset = 0; d->clipRadius = 0; d->hideScrollbarTimer = NULL; d->sortingAlgorithms = new QList(); d->sortingOrderes = new QList(); } DSimpleListView::~DSimpleListView() { D_D(DSimpleListView); delete d->lastHoverItem.data(); delete d->lastSelectItem.data(); delete d->drawHoverItem.data(); delete d->mouseHoverItem.data(); delete d->listItems; delete d->renderItems; delete d->selectionItems; delete d->sortingAlgorithms; delete d->sortingOrderes; delete d->hideScrollbarTimer; } /*! * \~chinese \brief 设置行高 */ void DSimpleListView::setRowHeight(int height) { D_D(DSimpleListView); d->rowHeight = height; d->scrollUnit = d->rowHeight; } /*! * \~chinese \brief 设置列标题信息 */ void DSimpleListView::setColumnTitleInfo(QList titles, QList widths, int height) { D_D(DSimpleListView); // Set column titles. d->columnTitles = titles; // Calculate column title widths. d->columnWidths.clear(); QFont font; font.setPointSize(titleSize); QFontMetrics fm(font); for (int i = 0; i < widths.length(); i++) { if (widths[i] == -1) { d->columnWidths << widths[i]; } else { int renderTitleWidth = fm.width(titles[i]) + d->titlePadding + arrowUpNormalImage.width() / arrowUpNormalImage.devicePixelRatio() + d->titleArrowPadding * 2; d->columnWidths << std::max(widths[i], renderTitleWidth); } } // Set title height. d->titleHeight = height; } /*! * \~chinese \brief 设置列隐藏标志 * \~chinese \param toggleHideFlags 用于控制列的隐藏标志,用于切换显示/隐藏。 * \~chinese \param visibleColumnIndex 列始终可见的列索引,默认值为 -1,表示列始终不可见。 */ void DSimpleListView::setColumnHideFlags(QList toggleHideFlags, int visibleColumnIndex) { D_D(DSimpleListView); Q_ASSERT_X(toggleHideFlags.contains(false), "toggleHideFlags", "at least have one 'false' in list."); Q_ASSERT_X(toggleHideFlags.count() == d->columnTitles.count(), "toggleHideFlags", "hide flags length is not same as titles list."); d->alwaysVisibleColumn = visibleColumnIndex; columnVisibles.clear(); for (int i = 0; i < toggleHideFlags.count(); i++) { columnVisibles.append(toggleHideFlags[i]); } } /*! * \~chinese \brief 设置列排序算法 */ void DSimpleListView::setColumnSortingAlgorithms(QList *algorithms, int sortColumn, bool descendingSort) { D_D(DSimpleListView); // Add sort algorithms. d->sortingAlgorithms = algorithms; for (int i = 0; i < d->sortingAlgorithms->count(); i++) { d->sortingOrderes->append(false); } // If sort column is -1, don't sort default. d->defaultSortingColumn = sortColumn; d->defaultSortingOrder = descendingSort; } /*! * \~chinese \brief 设置搜索算法 */ void DSimpleListView::setSearchAlgorithm(SearchAlgorithm algorithm) { D_D(DSimpleListView); d->searchAlgorithm = algorithm; } /*! * \~chinese \brief 设置圆角半径 */ void DSimpleListView::setClipRadius(int radius) { D_D(DSimpleListView); d->clipRadius = radius; } /*! * \~chinese \brief 设置边角细节 * \~chinese \param enableFrame 是否绘制边角 * \~chinese \param color 边角颜色 * \~chinese \param opacity 不透明度 */ void DSimpleListView::setFrame(bool enableFrame, QColor color, double opacity) { D_D(DSimpleListView); d->drawFrame = enableFrame; frameColor = color; frameOpacity = opacity; } /*! * \~chinese \brief 添加 DSimpleListItem 列表到视图中 */ void DSimpleListView::addItems(QList items) { D_D(DSimpleListView); // Add item to list. d->listItems->append(items); QList searchItems = d->getSearchItems(items); d->renderItems->append(searchItems); // If user has click title to sort, sort items after add items to list. if (d->defaultSortingColumn != -1) { d->sortItemsByColumn(d->defaultSortingColumn, d->defaultSortingOrder); } // Repaint after add items. repaint(); } /*! * \~chinese \brief 删除一个列表项 */ void DSimpleListView::removeItem(DSimpleListItem* item) { D_D(DSimpleListView); d->listItems->removeOne(item); d->renderItems->removeOne(item); if (d->renderOffset >= d->getItemsTotalHeight() - rect().height()) { d->renderOffset = adjustRenderOffset(d->renderOffset - d->rowHeight); } repaint(); } /*! * \~chinese \brief 删除所有列表项 */ void DSimpleListView::clearItems() { D_D(DSimpleListView); // NOTE: // We need delete items in QList before clear QList to avoid *MEMORY LEAK* . qDeleteAll(d->listItems->begin(), d->listItems->end()); d->listItems->clear(); d->renderItems->clear(); } /*! * \~chinese \brief 添加 DSimpleListItem 列表以在视图中选择效果 * \~chinese \param recordLastSelection 为 true 则清除最后一个选择项 */ void DSimpleListView::addSelections(QList items, bool recordLastSelection) { D_D(DSimpleListView); // Add item to selection list. d->selectionItems->append(items); // Record last selection item to make selected operation continuously. if (recordLastSelection && d->selectionItems->count() > 0) { d->lastSelectItem = d->selectionItems->last(); } } /*! * \~chinese \brief 移除所有选择项 */ void DSimpleListView::clearSelections(bool clearLastSelection) { D_D(DSimpleListView); // Clear selection list. d->selectionItems->clear(); if (clearLastSelection) { d->lastSelectItem = NULL; } } /*! * \~chinese \brief 获取所有选择项 */ QList DSimpleListView::getSelections() { D_D(DSimpleListView); return *d->selectionItems; } /*! * \~chinese \brief 刷新所有项 */ void DSimpleListView::refreshItems(QList items) { D_D(DSimpleListView); // Init. QList *newSelectionItems = new QList(); DSimpleListItem *newLastSelectionItem = NULL; DSimpleListItem *newLastHoverItem = NULL; // Save selection items and last selection item. for (DSimpleListItem *item:items) { for (DSimpleListItem *selectionItem:*d->selectionItems) { if (item->sameAs(selectionItem)) { newSelectionItems->append(item); break; } } } if (d->lastSelectItem != NULL) { for (DSimpleListItem *item:items) { if (item->sameAs(d->lastSelectItem)) { newLastSelectionItem = item; break; } } } if (d->lastHoverItem != NULL) { for (DSimpleListItem *item:items) { if (item->sameAs(d->lastHoverItem)) { newLastHoverItem = item; break; } } } d->lastHoverItem = NULL; // Update items. clearItems(); d->listItems->append(items); QList searchItems = d->getSearchItems(items); d->renderItems->append(searchItems); // Sort once if default sort column hasn't init. if (d->defaultSortingColumn != -1) { d->sortItemsByColumn(d->defaultSortingColumn, d->defaultSortingOrder); } // Restore selection items and last selection item. clearSelections(); addSelections(*newSelectionItems, false); d->lastSelectItem = newLastSelectionItem; d->lastHoverItem = newLastHoverItem; // Keep scroll position. d->renderOffset = adjustRenderOffset(d->renderOffset); // Render. repaint(); } /*! * \~chinese \brief 搜索 */ void DSimpleListView::search(QString content) { D_D(DSimpleListView); if (content == "" && d->searchContent != content) { d->searchContent = content; d->renderItems->clear(); d->renderItems->append(*d->listItems); } else { d->searchContent = content; QList searchItems = d->getSearchItems(*d->listItems); d->renderItems->clear(); d->renderItems->append(searchItems); } repaint(); } /*! * \~chinese \brief 设置单一选择 */ void DSimpleListView::setSingleSelect(bool singleSelect) { D_D(DSimpleListView); d->isSingleSelect = singleSelect; } /*! * \~chinese \brief 单击空白区域时保持选择项 */ void DSimpleListView::keepSelectWhenClickBlank(bool keep) { D_D(DSimpleListView); d->isKeepSelectWhenClickBlank = keep; } /*! * \~chinese \brief 选择所有列表项 */ void DSimpleListView::selectAllItems() { D_D(DSimpleListView); if (!d->isSingleSelect) { // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; // Select all items. clearSelections(); addSelections(*d->renderItems); // Scroll to top. d->renderOffset = d->getTopRenderOffset(); // Repaint. repaint(); } } /*! * \~chinese \brief 选择第一项 */ void DSimpleListView::selectFirstItem() { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; // Select first item. clearSelections(); QList items = QList(); items << d->renderItems->first(); addSelections(items); // Scroll to top. d->renderOffset = d->getTopRenderOffset(); // Repaint. repaint(); } /*! * \~chinese \brief 选择最后一项 */ void DSimpleListView::selectLastItem() { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; // Select last item. clearSelections(); QList items = QList(); items << d->renderItems->last(); addSelections(items); // Scroll to bottom. d->renderOffset = getBottomRenderOffset(); // Repaint. repaint(); } /*! * \~chinese \brief 移动到上一项 */ void DSimpleListView::selectPrevItem() { selectPrevItemWithOffset(1); } /*! * \~chinese \brief 移动到下一项 */ void DSimpleListView::selectNextItem() { selectNextItemWithOffset(1); } /*! * \~chinese \brief 从当前项选择到下一页的项 */ void DSimpleListView::shiftSelectPageDown() { D_D(DSimpleListView); if (!d->isSingleSelect) { shiftSelectNextItemWithOffset(getScrollAreaHeight() / d->rowHeight); } } /*! * \~chinese \brief 从当前项选择到上一页的项 */ void DSimpleListView::shiftSelectPageUp() { D_D(DSimpleListView); if (!d->isSingleSelect) { shiftSelectPrevItemWithOffset(getScrollAreaHeight() / d->rowHeight); } } /*! * \~chinese \brief 从当前项选择到末尾项 */ void DSimpleListView::shiftSelectToEnd() { D_D(DSimpleListView); if (!d->isSingleSelect) { // Select last item if nothing selected yet. if (d->selectionItems->empty()) { selectLastItem(); } // Select items from last selected item to last item. else { // Found last selected index and do select operation. int lastSelectionIndex = d->renderItems->indexOf(d->lastSelectItem); shiftSelectItemsWithBound(lastSelectionIndex, d->renderItems->count() - 1); // Scroll to bottom. d->renderOffset = getBottomRenderOffset(); // Repaint. repaint(); } } } /*! * \~chinese \brief 从当前项选择到起始项 */ void DSimpleListView::shiftSelectToHome() { D_D(DSimpleListView); if (!d->isSingleSelect) { // Select first item if nothing selected yet. if (d->selectionItems->empty()) { selectFirstItem(); } // Select items from last selected item to first item. else { // Found last selected index and do select operation. int lastSelectionIndex = d->renderItems->indexOf(d->lastSelectItem); shiftSelectItemsWithBound(0, lastSelectionIndex); // Scroll to top. d->renderOffset = d->getTopRenderOffset(); // Repaint. repaint(); } } } /*! * \~chinese \brief 从当前项选择到下一项 */ void DSimpleListView::shiftSelectToNext() { D_D(DSimpleListView); if (!d->isSingleSelect) { shiftSelectNextItemWithOffset(1); } } /*! * \~chinese \brief 从当前项选择到上一项 */ void DSimpleListView::shiftSelectToPrev() { D_D(DSimpleListView); if (!d->isSingleSelect) { shiftSelectPrevItemWithOffset(1); } } /*! * \~chinese \brief 滚动到下一页 */ void DSimpleListView::scrollPageDown() { D_D(DSimpleListView); selectNextItemWithOffset(getScrollAreaHeight() / d->rowHeight); } /*! * \~chinese \brief 滚动到上一页 */ void DSimpleListView::scrollPageUp() { D_D(DSimpleListView); selectPrevItemWithOffset(getScrollAreaHeight() / d->rowHeight); } void DSimpleListView::ctrlScrollPageUp() { D_D(DSimpleListView); d->renderOffset = adjustRenderOffset(d->renderOffset - getScrollAreaHeight()); repaint(); } void DSimpleListView::ctrlScrollPageDown() { D_D(DSimpleListView); d->renderOffset = adjustRenderOffset(d->renderOffset + getScrollAreaHeight()); repaint(); } void DSimpleListView::ctrlScrollToHome() { D_D(DSimpleListView); d->renderOffset = d->getTopRenderOffset(); repaint(); } void DSimpleListView::ctrlScrollToEnd() { D_D(DSimpleListView); d->renderOffset = getBottomRenderOffset(); repaint(); } void DSimpleListView::leaveEvent(QEvent * event) { D_D(DSimpleListView); d->lastHoverItem.clear(); d->drawHoverItem.clear(); d->mouseHoverItem.clear(); hideScrollbar(); QWidget::leaveEvent(event); } void DSimpleListView::hideScrollbar() { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->mouseAtScrollArea = false; d->oldRenderOffset = d->renderOffset; repaint(); } bool DSimpleListView::eventFilter(QObject *, QEvent *) { return false; } void DSimpleListView::keyPressEvent(QKeyEvent *keyEvent) { if (keyEvent->key() == Qt::Key_Home) { if (keyEvent->modifiers() == Qt::ControlModifier) { ctrlScrollToHome(); } else if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectToHome(); }else { selectFirstItem(); } } else if (keyEvent->key() == Qt::Key_End) { if (keyEvent->modifiers() == Qt::ControlModifier) { ctrlScrollToEnd(); } else if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectToEnd(); } else { selectLastItem(); } } else if (keyEvent->key() == Qt::Key_Up) { if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectToPrev(); } else { selectPrevItem(); } } else if (keyEvent->key() == Qt::Key_Down) { if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectToNext(); } else { selectNextItem(); } } else if (keyEvent->key() == Qt::Key_PageUp) { if (keyEvent->modifiers() == Qt::ControlModifier) { ctrlScrollPageUp(); } else if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectPageUp(); } else { scrollPageUp(); } } else if (keyEvent->key() == Qt::Key_PageDown) { if (keyEvent->modifiers() == Qt::ControlModifier) { ctrlScrollPageDown(); } else if (keyEvent->modifiers() == Qt::ShiftModifier) { shiftSelectPageDown(); } else { scrollPageDown(); } } else if (keyEvent->key() == Qt::Key_A) { if (keyEvent->modifiers() == Qt::ControlModifier) { selectAllItems(); } } } void DSimpleListView::mouseMoveEvent(QMouseEvent *mouseEvent) { D_D(DSimpleListView); // Scroll if mouse drag at scrollbar. if (d->mouseDragScrollbar) { int barHeight = getScrollbarHeight(); d->renderOffset = adjustRenderOffset((mouseEvent->y() - barHeight / 2 - d->titleHeight) / (getScrollAreaHeight() * 1.0) * d->getItemsTotalHeight()); repaint(); } // Update scrollbar status with mouse position. else if (isMouseAtScrollArea(mouseEvent->x()) != d->mouseAtScrollArea) { d->mouseAtScrollArea = isMouseAtScrollArea(mouseEvent->x()); repaint(); } // Otherwise to check titlebar arrow status. else { bool atTitleArea = isMouseAtTitleArea(mouseEvent->y()); if (atTitleArea) { int hoverColumn = -1; if (d->sortingAlgorithms->count() != 0 && d->sortingAlgorithms->count() == d->columnTitles.count() && d->sortingOrderes->count() == d->columnTitles.count()) { // Calculate title widths; QList renderWidths = getRenderWidths(); int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { if (mouseEvent->x() > columnRenderX && mouseEvent->x() < columnRenderX + renderWidth) { hoverColumn = columnCounter; break; } columnRenderX += renderWidth; } columnCounter++; } } if (hoverColumn != d->titleHoverColumn) { d->titleHoverColumn = hoverColumn; repaint(); } } else { int hoverItemIndex = (d->renderOffset + mouseEvent->y() - d->titleHeight) / d->rowHeight; // NOTE: hoverItemIndex may be less than 0, we need check index here. if (hoverItemIndex >= 0 && hoverItemIndex < (*d->renderItems).length()) { DSimpleListItem *item = (*d->renderItems)[hoverItemIndex]; QList renderWidths = getRenderWidths(); int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { if (mouseEvent->x() > columnRenderX && mouseEvent->x() < columnRenderX + renderWidth) { break; } columnRenderX += renderWidth; } columnCounter++; } if (d->drawHoverItem == NULL || !item->sameAs(d->drawHoverItem)) { d->drawHoverItem = item; repaint(); } // Emit mouseHoverChanged signal. mouseHoverChanged(d->mouseHoverItem, item, columnCounter, QPoint(mouseEvent->x() - columnRenderX, d->renderOffset + mouseEvent->y() - hoverItemIndex * d->rowHeight)); d->mouseHoverItem = item; if (d->lastHoverItem == NULL || !item->sameAs(d->lastHoverItem) || columnCounter != d->lastHoverColumnIndex) { d->lastHoverItem = item; d->lastHoverColumnIndex = columnCounter; changeHoverItem(this->mapToGlobal(mouseEvent->pos()), d->lastHoverItem, columnCounter); } } } } } void DSimpleListView::mousePressEvent(QMouseEvent *mouseEvent) { D_D(DSimpleListView); setFocus(); bool atTitleArea = isMouseAtTitleArea(mouseEvent->y()); bool atScrollArea = isMouseAtScrollArea(mouseEvent->x()); // Sort items with column's sorting algorithms when click on title area. if (atTitleArea) { if (mouseEvent->button() == Qt::LeftButton) { if (d->sortingAlgorithms->count() != 0 && d->sortingAlgorithms->count() == d->columnTitles.count() && d->sortingOrderes->count() == d->columnTitles.count()) { // Calculate title widths; QList renderWidths = getRenderWidths(); int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { if (mouseEvent->x() > columnRenderX && mouseEvent->x() < columnRenderX + renderWidth) { // If switch other column, default order is from top to bottom. if (columnCounter != d->defaultSortingColumn) { (*d->sortingOrderes)[columnCounter] = true; } // If user click same column, just switch reverse order. else { (*d->sortingOrderes)[columnCounter] = !(*d->sortingOrderes)[columnCounter]; } d->defaultSortingColumn = columnCounter; d->defaultSortingOrder = (*d->sortingOrderes)[columnCounter]; changeSortingStatus(d->defaultSortingColumn, d->defaultSortingOrder); d->sortItemsByColumn(columnCounter, (*d->sortingOrderes)[columnCounter]); if (columnCounter != d->titlePressColumn) { d->titlePressColumn = columnCounter; } repaint(); break; } columnRenderX += renderWidth; } columnCounter++; } } } else if (mouseEvent->button() == Qt::RightButton) { if (columnVisibles.count() == d->columnTitles.count()) { QMenu *menu = new QMenu(); menu->setStyle(QStyleFactory::create("dlight")); for (int i = 0; i < columnVisibles.count(); i++) { if (i != d->alwaysVisibleColumn) { QAction *action = new QAction(menu); action->setText(d->columnTitles[i]); action->setCheckable(true); action->setChecked(columnVisibles[i]); connect(action, &QAction::triggered, this, [this, action, i] { columnVisibles[i] = !columnVisibles[i]; changeColumnVisible(i, columnVisibles[i], columnVisibles); repaint(); }); menu->addAction(action); } } menu->exec(this->mapToGlobal(mouseEvent->pos())); } } } // Scroll when click on scrollbar area. else if (atScrollArea) { int barHeight = getScrollbarHeight(); int barY = getScrollbarY(); // Flag mouseDragScrollbar when click on scrollbar. if (mouseEvent->y() > barY && mouseEvent->y() < barY + barHeight) { d->mouseDragScrollbar = true; } // Scroll if click out of scrollbar area. else { d->renderOffset = adjustRenderOffset((mouseEvent->y() - barHeight / 2 - d->titleHeight) / (getScrollAreaHeight() * 1.0) * d->getItemsTotalHeight()); repaint(); } } // Select items. else { int pressItemIndex = (d->renderOffset + mouseEvent->y() - d->titleHeight) / d->rowHeight; if (pressItemIndex >= d->renderItems->count()) { if (!d->isKeepSelectWhenClickBlank) { clearSelections(); } repaint(); } else { if (mouseEvent->button() == Qt::LeftButton) { if (pressItemIndex < d->renderItems->count()) { // Scattered selection of items when press ctrl modifier. if (!d->isSingleSelect && mouseEvent->modifiers() == Qt::ControlModifier) { DSimpleListItem *item = (*d->renderItems)[pressItemIndex]; if (d->selectionItems->contains(item)) { d->selectionItems->removeOne(item); } else { QList items = QList(); items << item; addSelections(items); } } // Continuous selection of items when press shift modifier. else if (!d->isSingleSelect && (mouseEvent->modifiers() == Qt::ShiftModifier) && !d->selectionItems->empty()) { int lastSelectionIndex = d->renderItems->indexOf(d->lastSelectItem); int selectionStartIndex = std::min(pressItemIndex, lastSelectionIndex); int selectionEndIndex = std::max(pressItemIndex, lastSelectionIndex); shiftSelectItemsWithBound(selectionStartIndex, selectionEndIndex); } // Just select item under mouse if user not press any modifier. else { clearSelections(); QList items = QList(); items << (*d->renderItems)[pressItemIndex]; addSelections(items); } // Emit mousePressChanged signal. QList renderWidths = getRenderWidths(); int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { if (mouseEvent->x() > columnRenderX && mouseEvent->x() < columnRenderX + renderWidth) { break; } columnRenderX += renderWidth; } columnCounter++; } mousePressChanged((*d->renderItems)[pressItemIndex], columnCounter, QPoint(mouseEvent->x() - columnRenderX, d->renderOffset + mouseEvent->y() - pressItemIndex * d->rowHeight)); repaint(); } } else if (mouseEvent->button() == Qt::RightButton) { DSimpleListItem *pressItem = (*d->renderItems)[pressItemIndex]; bool pressInSelectionArea = false; for (DSimpleListItem *item : *d->selectionItems) { if (item == pressItem) { pressInSelectionArea = true; break; } } if (!pressInSelectionArea && pressItemIndex < d->renderItems->length()) { clearSelections(); QList items = QList(); items << (*d->renderItems)[pressItemIndex]; addSelections(items); repaint(); } if (d->selectionItems->length() > 0) { rightClickItems(this->mapToGlobal(mouseEvent->pos()), *d->selectionItems); } } } } } void DSimpleListView::mouseReleaseEvent(QMouseEvent *mouseEvent) { D_D(DSimpleListView); if (d->mouseDragScrollbar) { // Reset mouseDragScrollbar. d->mouseDragScrollbar = false; repaint(); } else { if (d->titlePressColumn != -1) { d->titlePressColumn = -1; repaint(); } } // Emit mouseReleaseChanged signal. int releaseItemIndex = (d->renderOffset + mouseEvent->y() - d->titleHeight) / d->rowHeight; if (releaseItemIndex >= 0 && releaseItemIndex < (*d->renderItems).length()) { QList renderWidths = getRenderWidths(); int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { if (mouseEvent->x() > columnRenderX && mouseEvent->x() < columnRenderX + renderWidth) { break; } columnRenderX += renderWidth; } columnCounter++; } mouseReleaseChanged((*d->renderItems)[releaseItemIndex], columnCounter, QPoint(mouseEvent->x() - columnRenderX, d->renderOffset + mouseEvent->y() - releaseItemIndex * d->rowHeight)); } } void DSimpleListView::wheelEvent(QWheelEvent *event) { D_D(DSimpleListView); if (event->orientation() == Qt::Vertical) { // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; qreal scrollStep = event->angleDelta().y() / 120.0; d->renderOffset = adjustRenderOffset(d->renderOffset - scrollStep * d->scrollUnit); repaint(); } event->accept(); } void DSimpleListView::paintEvent(QPaintEvent *) { D_D(DSimpleListView); // Init. QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); // Calculate title widths; QList renderWidths = getRenderWidths(); painter.setRenderHint(QPainter::Antialiasing, true); painter.setOpacity(0.05); int penWidth = 1; QPainterPath framePath; framePath.addRoundedRect(QRect(rect().x() + penWidth, rect().y() + penWidth, rect().width() - penWidth * 2, rect().height() - penWidth * 2), d->clipRadius, d->clipRadius); painter.setClipPath(framePath); // Draw title. if (d->titleHeight > 0) { QPainterPath titlePath; titlePath.addRect(QRectF(rect().x(), rect().y(), rect().width(), d->titleHeight)); painter.setOpacity(titleAreaOpacity); painter.fillPath(titlePath, QColor(titleAreaColor)); } int renderY = 0; int renderHeight = 0; if (d->titleHeight > 0) { int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { painter.setOpacity(1); QFont font = painter.font() ; font.setPointSize(titleSize); painter.setFont(font); painter.setPen(QPen(QColor(titleColor))); painter.drawText(QRect(columnRenderX + d->titlePadding, 0, renderWidth, d->titleHeight), Qt::AlignVCenter | Qt::AlignLeft, d->columnTitles[columnCounter]); columnRenderX += renderWidth; if (columnCounter < renderWidths.size() - 1) { painter.setOpacity(0.05); QPainterPath separatorPath; separatorPath.addRect(QRectF(rect().x() + columnRenderX - 1, rect().y() + 4, 1, d->titleHeight - 8)); painter.fillPath(separatorPath, QColor(titleLineColor)); } // Draw sort arrow. if (d->defaultSortingColumn == columnCounter) { painter.setOpacity(1); int arrowX = rect().x() + columnRenderX - d->titleArrowPadding - arrowUpNormalImage.width() / arrowUpNormalImage.devicePixelRatio(); int arrowY = rect().y() + (d->titleHeight - arrowDownNormalImage.height() / arrowUpNormalImage.devicePixelRatio()) / 2; if (d->defaultSortingOrder) { if (d->titlePressColumn == d->defaultSortingColumn) { painter.drawPixmap(QPoint(arrowX, arrowY), arrowDownPressImage); } else if (d->titleHoverColumn == d->defaultSortingColumn) { painter.drawPixmap(QPoint(arrowX, arrowY), arrowDownHoverImage); } else { painter.drawPixmap(QPoint(arrowX, arrowY), arrowDownNormalImage); } } else { if (d->titlePressColumn == d->defaultSortingColumn) { painter.drawPixmap(QPoint(arrowX, arrowY), arrowUpPressImage); } else if (d->titleHoverColumn == d->defaultSortingColumn) { painter.drawPixmap(QPoint(arrowX, arrowY), arrowUpHoverImage); } else { painter.drawPixmap(QPoint(arrowX, arrowY), arrowUpNormalImage); } } } } columnCounter++; } renderY += d->titleHeight; renderHeight += d->titleHeight; } // Draw background. painter.setOpacity(backgroundOpacity); QPainterPath backgroundPath; backgroundPath.addRect(QRectF(rect().x(), rect().y() + d->titleHeight, rect().width(), rect().height() - d->titleHeight)); painter.fillPath(backgroundPath, QColor(backgroundColor)); // Draw context. QPainterPath scrollAreaPath; scrollAreaPath.addRect(QRectF(rect().x(), rect().y() + d->titleHeight, rect().width(), getScrollAreaHeight())); int rowCounter = 0; for (DSimpleListItem *item:*d->renderItems) { if (rowCounter >= d->renderOffset / d->rowHeight) { // Clip item rect. QPainterPath itemPath; itemPath.addRect(QRect(0, renderY + rowCounter * d->rowHeight - d->renderOffset, rect().width(), d->rowHeight)); painter.setClipPath((framePath.intersected(scrollAreaPath)).intersected(itemPath)); // Draw item backround. bool isSelect = d->selectionItems->contains(item); bool isHover = d->drawHoverItem != NULL && item->sameAs(d->drawHoverItem); painter.save(); item->drawBackground(QRect(0, renderY + rowCounter * d->rowHeight - d->renderOffset, rect().width(), d->rowHeight), &painter, rowCounter, isSelect, isHover); painter.restore(); // Draw item foreground. int columnCounter = 0; int columnRenderX = 0; for (int renderWidth:renderWidths) { if (renderWidth > 0) { painter.save(); item->drawForeground(QRect(columnRenderX, renderY + rowCounter * d->rowHeight - d->renderOffset, renderWidth, d->rowHeight), &painter, columnCounter, rowCounter, isSelect, isHover); painter.restore(); columnRenderX += renderWidth; } columnCounter++; } renderHeight += d->rowHeight; if (renderHeight > rect().height()) { break; } } rowCounter++; } // Keep clip area. painter.setClipPath(framePath); // Draw search tooltip. if (d->searchContent != "" && d->renderItems->size() == 0) { painter.setOpacity(1); painter.setPen(QPen(QColor(searchColor))); QFont font = painter.font() ; font.setPointSize(20); painter.setFont(font); painter.drawText(QRect(rect().x(), rect().y() + d->titleHeight, rect().width(), rect().height() - d->titleHeight), Qt::AlignCenter, QObject::tr("No search result")); } // Draw frame. if (d->drawFrame) { QPen framePen; framePen.setColor(frameColor); painter.setOpacity(frameOpacity); painter.drawPath(framePath); } // Draw scrollbar. if (d->mouseAtScrollArea) { paintScrollbar(&painter); } else if (d->oldRenderOffset != d->renderOffset) { paintScrollbar(&painter); startScrollbarHideTimer(); } } void DSimpleListView::paintScrollbar(QPainter *painter) { D_D(DSimpleListView); if (d->getItemsTotalHeight() > getScrollAreaHeight()) { // Init scrollbar opacity with scrollbar status. qreal barOpacitry = 0; qreal barFrameOpacitry = 0; // Press. if (d->mouseDragScrollbar) { barOpacitry = scrollbarPressOpacity; barFrameOpacitry = scrollbarFramePressOpacity; } else { // Hover. if (d->mouseAtScrollArea) { barOpacitry = scrollbarHoverOpacity; barFrameOpacitry = scrollbarFrameHoverOpacity; } // Normal. else { barOpacitry = scrollbarNormalOpacity; barFrameOpacitry = scrollbarFrameNormalOpacity; } } int barWidth = (d->mouseAtScrollArea || d->mouseDragScrollbar) ? d->scrollbarDragWidth : d->scrollbarDefaultWidth; int barRadius = 4; int barY = getScrollbarY(); int barHeight = getScrollbarHeight(); painter->setOpacity(barOpacitry); QPainterPath path; path.addRoundedRect( QRectF(rect().x() + rect().width() - barWidth - d->scrollbarPadding, barY + barRadius, barWidth, barHeight - barRadius * 2), barRadius, barRadius); painter->fillPath(path, QColor(scrollbarColor)); QPen pen; pen.setColor(QColor(scrollbarColor)); pen.setWidth(1); painter->setOpacity(barFrameOpacitry); painter->setPen(pen); painter->drawPath(path); } } void DSimpleListView::selectNextItemWithOffset(int scrollOffset) { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; if (d->selectionItems->empty()) { selectFirstItem(); } else { int lastIndex = 0; for (DSimpleListItem *item:*d->selectionItems) { int index = d->renderItems->indexOf(item); if (index > lastIndex) { lastIndex = index; } } if (lastIndex != -1) { lastIndex = std::min(d->renderItems->count() - 1, lastIndex + scrollOffset); clearSelections(false); QList items = QList(); items << (*d->renderItems)[lastIndex]; addSelections(items); int itemIndex = lastIndex + 1; int itemOffset = adjustRenderOffset(itemIndex * d->rowHeight - rect().height() + d->titleHeight); if (((d->renderOffset + getScrollAreaHeight()) / d->rowHeight) < itemIndex) { d->renderOffset = itemOffset; } repaint(); } } } void DSimpleListView::selectPrevItemWithOffset(int scrollOffset) { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; if (d->selectionItems->empty()) { selectFirstItem(); } else { int firstIndex = d->renderItems->count(); for (DSimpleListItem *item:*d->selectionItems) { int index = d->renderItems->indexOf(item); if (index < firstIndex) { firstIndex = index; } } if (firstIndex != -1) { firstIndex = std::max(0, firstIndex - scrollOffset); clearSelections(); QList items = QList(); items << (*d->renderItems)[firstIndex]; addSelections(items); int itemIndex = firstIndex - 1; int itemOffset = adjustRenderOffset(itemIndex * d->rowHeight + d->titleHeight); if ((d->renderOffset / d->rowHeight) > itemIndex) { d->renderOffset = itemOffset; } repaint(); } } } void DSimpleListView::shiftSelectItemsWithBound(int selectionStartIndex, int selectionEndIndex) { D_D(DSimpleListView); // Note: Shift operation always selection bound from last selection index to current index. // So we don't need *clear* lastSelectionIndex for keep shift + button is right logic. clearSelections(false); QList items = QList(); int index = 0; for (DSimpleListItem *item:*d->renderItems) { if (index >= selectionStartIndex && index <= selectionEndIndex) { items << item; } index++; } // Note: Shift operation always selection bound from last selection index to current index. // So we don't need *record* lastSelectionIndex for keep shift + button is right logic. addSelections(items, false); } void DSimpleListView::shiftSelectPrevItemWithOffset(int scrollOffset) { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; if (d->selectionItems->empty()) { selectFirstItem(); } else { int firstIndex = d->renderItems->count(); int lastIndex = 0; for (DSimpleListItem *item:*d->selectionItems) { int index = d->renderItems->indexOf(item); if (index < firstIndex) { firstIndex = index; } if (index > lastIndex) { lastIndex = index; } } if (firstIndex != -1) { int lastSelectionIndex = d->renderItems->indexOf(d->lastSelectItem); int selectionStartIndex, selectionEndIndex; if (lastIndex == lastSelectionIndex) { selectionStartIndex = std::max(0, firstIndex - scrollOffset); selectionEndIndex = lastSelectionIndex; } else { selectionStartIndex = firstIndex; selectionEndIndex = std::max(0, lastIndex - scrollOffset); } shiftSelectItemsWithBound(selectionStartIndex, selectionEndIndex); if (d->renderOffset / d->rowHeight >= selectionStartIndex) { d->renderOffset = adjustRenderOffset((selectionStartIndex - 1) * d->rowHeight + d->titleHeight); } repaint(); } } } void DSimpleListView::shiftSelectNextItemWithOffset(int scrollOffset) { D_D(DSimpleListView); // Record old render offset to control scrollbar whether display. d->oldRenderOffset = d->renderOffset; if (d->selectionItems->empty()) { selectFirstItem(); } else { int firstIndex = d->renderItems->count(); int lastIndex = 0; for (DSimpleListItem *item:*d->selectionItems) { int index = d->renderItems->indexOf(item); if (index < firstIndex) { firstIndex = index; } if (index > lastIndex) { lastIndex = index; } } if (firstIndex != -1) { int lastSelectionIndex = d->renderItems->indexOf(d->lastSelectItem); int selectionStartIndex, selectionEndIndex; if (firstIndex == lastSelectionIndex) { selectionStartIndex = firstIndex; selectionEndIndex = std::min(d->renderItems->count() - 1, lastIndex + scrollOffset); } else { selectionStartIndex = std::min(d->renderItems->count() - 1, firstIndex + scrollOffset); selectionEndIndex = lastIndex; } shiftSelectItemsWithBound(selectionStartIndex, selectionEndIndex); if ((d->renderOffset + rect().height()) / d->rowHeight <= selectionEndIndex + 1) { d->renderOffset = adjustRenderOffset((selectionEndIndex + 1) * d->rowHeight + d->titleHeight - rect().height()); } repaint(); } } } QList DSimpleListView::getRenderWidths() { D_D(DSimpleListView); QList renderWidths; if (d->columnWidths.length() > 0) { if (d->columnWidths.contains(-1)) { for (int i = 0; i < d->columnWidths.count(); i++) { if (d->columnWidths[i] != -1) { if (columnVisibles[i]) { renderWidths << d->columnWidths[i]; } else { renderWidths << 0; } } else { if (columnVisibles[i]) { int totalWidthOfOtherColumns = 0; for (int j = 0; j < d->columnWidths.count(); j++) { if (d->columnWidths[j] != -1 && columnVisibles[j]) { totalWidthOfOtherColumns += d->columnWidths[j]; } } renderWidths << rect().width() - totalWidthOfOtherColumns; } else { renderWidths << 0; } } } } else { for (int i = 0; i < d->columnWidths.count(); i++) { if (columnVisibles[i]) { renderWidths << d->columnWidths[i]; } else { renderWidths << 0; } } } } // Return widget width if user don't set column withs throught function 'setColumnTitleInfo'. // Avoid listview don't draw item's foregound cause by emptry 'columnWidths'. else { renderWidths << rect().width(); } return renderWidths; } bool DSimpleListView::isMouseAtScrollArea(int x) { D_D(DSimpleListView); return (x > rect().x() + rect().width() - d->scrollbarDragWidth) && (x < rect().x() + rect().width()); } bool DSimpleListView::isMouseAtTitleArea(int y) { D_D(DSimpleListView); return (y > rect().y() && y < rect().y() + d->titleHeight); } int DSimpleListView::adjustRenderOffset(int offset) { return std::max(0, std::min(offset, getBottomRenderOffset())); } int DSimpleListViewPrivate::getItemsTotalHeight() { return renderItems->count() * rowHeight; } int DSimpleListView::getScrollAreaHeight() { D_D(DSimpleListView); return rect().height() - d->titleHeight; } int DSimpleListView::getScrollbarY() { D_D(DSimpleListView); int y = static_cast((d->renderOffset / (d->getItemsTotalHeight() * 1.0)) * getScrollAreaHeight() + d->titleHeight); return qMin(y, rect().height() - getScrollbarHeight()); } int DSimpleListView::getScrollbarHeight() { D_D(DSimpleListView); return std::max(static_cast(getScrollAreaHeight() / (d->getItemsTotalHeight() * 1.0) * rect().height()), d->scrollbarMinHeight); } int DSimpleListViewPrivate::getTopRenderOffset() { return 0; } QList DSimpleListViewPrivate::getSearchItems(QList items) { if (searchContent == "" || searchAlgorithm == NULL) { return items; } else { QList *searchItems = new QList(); for (DSimpleListItem *item : items) { if (searchAlgorithm(item, searchContent)) { searchItems->append(item); } } return *searchItems; } } int DSimpleListView::getBottomRenderOffset() { D_D(DSimpleListView); int itemsHeight = d->getItemsTotalHeight(); if (itemsHeight > rect().height() - d->titleHeight) { return d->getItemsTotalHeight() - rect().height() + d->titleHeight; } else { return 0; } } void DSimpleListViewPrivate::sortItemsByColumn(int column, bool descendingSort) { if (sortingAlgorithms->count() != 0 && sortingAlgorithms->count() == columnTitles.count() && sortingOrderes->count() == columnTitles.count()) { qSort(renderItems->begin(), renderItems->end(), [&](const DSimpleListItem *item1, const DSimpleListItem *item2) { return (*sortingAlgorithms)[column](item1, item2, descendingSort); }); } } void DSimpleListView::startScrollbarHideTimer() { D_D(DSimpleListView); if (d->hideScrollbarTimer != NULL) { d->hideScrollbarTimer->stop(); } d->hideScrollbarTimer = new QTimer(); connect(d->hideScrollbarTimer, SIGNAL(timeout()), this, SLOT(hideScrollbar())); d->hideScrollbarTimer->start(d->hideScrollbarDuration); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsimplelistview.h000066400000000000000000000221731352002233700213350ustar00rootroot00000000000000/* -*- Mode: C++; indent-tabs-mode: nil; tab-width: 4 -*- * -*- coding: utf-8 -*- * * Copyright (C) 2011 ~ 2017 Deepin, Inc. * 2011 ~ 2017 Wang Yong * * Author: Wang Yong * Maintainer: Wang Yong * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSIMPLELISTVIEW_H #define DSIMPLELISTVIEW_H #include "dobject.h" #include "dsimplelistitem.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE typedef bool (* SortAlgorithm) (const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort); typedef bool (* SearchAlgorithm) (const DSimpleListItem *item, QString searchContent); class DSimpleListViewPrivate; class LIBDTKWIDGETSHARED_EXPORT DSimpleListView : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DSimpleListView(QWidget *parent = 0); ~DSimpleListView(); // DSimpleListView interfaces. /* * Set row height of DSimpleListView. * * @height the height of row */ void setRowHeight(int height); /* * Set column titles, widths and height. * If you want some column use expand space, please set width with -1 * Only allowed one -1 to set in width list. * * @titles a list to contains titles * @widths the width of column, list length same as titles list * @height height of titlebar, don't display titlebar if set height with 0 */ void setColumnTitleInfo(QList titles, QList widths, int height); /* * Set column hide flags. * At least have false in hide flags list, and hide flags count must same as titles list. * * @toggleHideFlags the hide flags to control column wether toggle show/hide. * @alwaysVisibleColumn the column index that column is always visible, default is -1, mean no column can always visible. */ void setColumnHideFlags(QList toggleHideFlags, int alwaysVisibleColumn=-1); /* * Set column sorting algorithms. * Note SortAlgorithm function type must be 'static', otherwise function pointer can't match type. * * @algorithms a list of SortAlgorithm, SortAlgorithm is function pointer, it's type is: 'bool (*) (const DSimpleListItem *item1, const DSimpleListItem *item2, bool descendingSort)' * @sortColumn default sort column, -1 mean don't sort any column default * @descendingSort whether sort column descending, default is false */ void setColumnSortingAlgorithms(QList *algorithms, int sortColumn=-1, bool descendingSort=false); /* * Set search algorithm to filter match items. * * @algorithm the search algorithm, it's type is: 'bool (*) (const DSimpleListItem *item, QString searchContent)' */ void setSearchAlgorithm(SearchAlgorithm algorithm); /* * Set radius to clip listview. * * @radius the radius of clip area, default is 0 pixel. */ void setClipRadius(int radius); /* * Set frame details. * * @enableFrame draw frame if enableFrame is true, default is false * @color the frame color, default is black * @opacity the frame opacity, default is 0.1 */ void setFrame(bool enableFrame, QColor color=QColor("#000000"), double opacity=0.1); /* * Add DSimpleListItem list to ListView. * If user has click title to sort, sort items after add items to list. * * @items List of LiteItem* */ void addItems(QList items); /* * Remove DSimpleListItem from list. * * @item item to remove */ void removeItem(DSimpleListItem* item); /* * Clear items from DSimpleListView. */ void clearItems(); /* * Add DSimpleListItem list to mark selected effect in ListView. * * @items List of DSimpleListItem* to mark selected * @recordLastSelection record last selection item to make selected operation continuously, default is true */ void addSelections(QList items, bool recordLastSelection=true); /* * Clear selection items from DSimpleListView. * * @clearLastSelection clear last selection item if option is true, default is true */ void clearSelections(bool clearLastSelection=true); /* * Get selection items. * * @return List of DSimpleListItem* to mark selected */ QList getSelections(); /* * Refresh all items in DSimpleListView. * This function is different that addItems is: it will clear items first before add new items. * This function will keep selection status and scroll offset when add items. * * @items List of DSimpleListItem* to add */ void refreshItems(QList items); /* * Search */ void search(QString searchContent); /* * Set single selection. */ void setSingleSelect(bool singleSelect); /* * Keep select items when click blank area. */ void keepSelectWhenClickBlank(bool keep); // DSimpleListView operations. void selectAllItems(); void selectFirstItem(); void selectLastItem(); void selectNextItem(); void selectPrevItem(); void shiftSelectPageDown(); void shiftSelectPageUp(); void shiftSelectToEnd(); void shiftSelectToHome(); void shiftSelectToNext(); void shiftSelectToPrev(); void scrollPageDown(); void scrollPageUp(); void ctrlScrollPageDown(); void ctrlScrollPageUp(); void ctrlScrollToEnd(); void ctrlScrollToHome(); protected: virtual void leaveEvent(QEvent * event); QPixmap arrowDownDarkHoverImage; QPixmap arrowDownDarkNormalImage; QPixmap arrowDownDarkPressImage; QPixmap arrowDownHoverImage; QPixmap arrowDownLightHoverImage; QPixmap arrowDownLightNormalImage; QPixmap arrowDownLightPressImage; QPixmap arrowDownNormalImage; QPixmap arrowDownPressImage; QPixmap arrowUpDarkHoverImage; QPixmap arrowUpDarkNormalImage; QPixmap arrowUpDarkPressImage; QPixmap arrowUpHoverImage; QPixmap arrowUpLightHoverImage; QPixmap arrowUpLightNormalImage; QPixmap arrowUpLightPressImage; QPixmap arrowUpNormalImage; QPixmap arrowUpPressImage; QString backgroundColor = "#ffffff"; QString scrollbarColor = "#ffffff"; QString searchColor = "#000000"; QString titleAreaColor = "#ffffff"; QString titleColor = "#000000"; QString titleLineColor = "#000000"; QColor frameColor = QColor("#000000"); double backgroundOpacity = 0.03; double frameOpacity = 0.1; double titleAreaOpacity = 0.02; int titleSize = 10; qreal scrollbarFrameHoverOpacity = 0; qreal scrollbarFrameNormalOpacity = 0; qreal scrollbarFramePressOpacity = 0; qreal scrollbarHoverOpacity = 0.7; qreal scrollbarNormalOpacity = 0.5; qreal scrollbarPressOpacity = 0.8; Q_SIGNALS: void rightClickItems(QPoint pos, QList items); void changeColumnVisible(int index, bool visible, QList columnVisibles); void changeSortingStatus(int index, bool sortingOrder); void changeHoverItem(QPoint pos, DSimpleListItem* item, int columnIndex); void mouseHoverChanged(DSimpleListItem* oldItem, DSimpleListItem* newItem, int columnIndex, QPoint pos); void mousePressChanged(DSimpleListItem* item, int columnIndex, QPoint pos); void mouseReleaseChanged(DSimpleListItem* item, int columnIndex, QPoint pos); protected: bool eventFilter(QObject *, QEvent *event); void keyPressEvent(QKeyEvent *keyEvent); void mouseMoveEvent(QMouseEvent *mouseEvent); void mousePressEvent(QMouseEvent *mouseEvent); void mouseReleaseEvent(QMouseEvent *mouseEvent); void paintEvent(QPaintEvent *); void wheelEvent(QWheelEvent *event); void paintScrollbar(QPainter *painter); void selectPrevItemWithOffset(int scrollOffset); void selectNextItemWithOffset(int scrollOffset); void shiftSelectNextItemWithOffset(int scrollOffset); void shiftSelectPrevItemWithOffset(int scrollOffset); int getBottomRenderOffset(); int getScrollbarY(); int getScrollAreaHeight(); int getScrollbarHeight(); QList getRenderWidths(); void shiftSelectItemsWithBound(int selectionStartIndex, int selectionEndIndex); int adjustRenderOffset(int offset); void startScrollbarHideTimer(); bool isMouseAtScrollArea(int x); bool isMouseAtTitleArea(int y); QList columnVisibles; private Q_SLOTS: void hideScrollbar(); private: D_DECLARE_PRIVATE(DSimpleListView) }; DWIDGET_END_NAMESPACE #endif dtkwidget-2.1.1/src/widgets/dslider.cpp000066400000000000000000000376071352002233700201020ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include "dslider.h" #include "dthememanager.h" DWIDGET_BEGIN_NAMESPACE static const int CustomDrawingLeftPadding = 10; static const int CustomDrawingRightPadding = 10; static const int CustomDrawingScaleHeight = 6; // TODO: optimize for better vertical slider support class DSliderPrivate { DSliderPrivate(DSlider *q): m_hoverShowValue(false), m_handleHovering(false), m_hoverTimout(false), m_hoverShowValueInterval(-1), q_ptr(q) { m_hoverTimer.setSingleShot(true); } int m_handleType = DSlider::RoundHandle; QString m_leftTip; QString m_rightTip; QList m_scales; QColor m_tipColor = Qt::black; QColor m_scaleColor = Qt::black; QColor m_hoverValueColor; bool m_hoverShowValue; bool m_handleHovering; bool m_hoverTimout; bool mousePressed = false; int clickOffset = 0; int m_hoverShowValueInterval; QTimer m_hoverTimer; int getScalePosition(int value); int pixelPosToRangeValue(int pos) const; inline int pick(const QPoint &pt) const { Q_Q(const DSlider); return q->orientation() == Qt::Horizontal ? pt.x() : pt.y(); } DSlider *q_ptr; Q_DECLARE_PUBLIC(DSlider) }; /*! * \~english \class DSlider * \~english \brief The DSlider class provides an extended QSlider widget. * * \~english DSlider has optional vernier type handle type, scale marks that can be placed at * \~english any position and corresponding scale tips. * * \~english DSlider also supports showing texts, value of the slider, when * \~english user hovers on the slider handle. * * \~english \note This class relies on dstyle Qt style plugin to work properly. * * \~english \note This class is not working very well while orientation is set to vertical. */ /*! * \~chinese \class DSlider * \~chinese \brief DSlider 是基于 QSlider 之上扩展的控件。 * * \~chinese 当用户将鼠标悬停在滑块手柄上时,DSlider 还支持显示文本,滑块的值。 * * \~chinese \note 这个类依赖于 dstyle Qt 样式插件才能正常工作。 * * \~chinese \note 当方向设置垂直时,不能很好的工作。 */ /*! * \~chinese \enum HandleType * \~chinese \brief DSlider可以使用的句柄类型。 * \~chinese \var HandleType SharpHandler 箭头滑块 * \~chinese \var HandleType RoundHandle 圆形滑块 */ /*! * \~english \brief DSlider::DSlider constructs an instance of DSlider. * \~english \param parent is passed to QSlider constructor. */ /*! * \~chinese \brief DSlider 构造函数 * \~chinese \param parent */ DSlider::DSlider(QWidget *parent) : QSlider(parent), d_ptr(new DSliderPrivate(this)) { init(); } /*! * \~english \brief DSlider::DSlider constructs an instance of DSlider. * \~english \param orientation is passed to QSlider constructor. * \~english \param parent is passed to QSldier constructor. */ /*! * \~chinese \brief DSlider 的重载构造函数 * \~chinese \param orientation 初始化方向 * \~chinese \param parent */ DSlider::DSlider(Qt::Orientation orientation, QWidget *parent) : QSlider(orientation, parent), d_ptr(new DSliderPrivate(this)) { init(); } DSlider::~DSlider() { delete d_ptr; } /*! * \~english \property DSlider::handleType * \~english \brief This property holds the handle type used by this slider. * * \~english Default value is DSlider::RoundHandle. */ /*! * \~chinese \property DSlider::handleType * \~chinese \brief 滑块句柄类型 * * \~chinese 默认值是 DSlider::RoundHandle. */ int DSlider::handleType() const { Q_D(const DSlider); return d->m_handleType; } /*! * \~chinese \property DSlider::setHandleType * \~chinese \brief 设置滑块句柄类型 * \~chinese \brief 根据类型来显示滑块的样式,目前有箭头、圆形样式滑块 */ void DSlider::setHandleType(HandleType handleType) { Q_D(DSlider); d->m_handleType = handleType; } /*! * \~chinese \property DSlider::rightTip * \~chinese \brief 显示在滑块右侧的文本 */ QString DSlider::rightTip() const { Q_D(const DSlider); return d->m_rightTip; } /*! * \~chinese \property DSlider::setRightTip * \~chinese \brief 设置滑块右侧的文本 */ void DSlider::setRightTip(const QString &rightTip) { Q_D(DSlider); if (d->m_rightTip == rightTip) { return; } if (d->m_rightTip.isEmpty() || rightTip.isEmpty()) { d->m_rightTip = rightTip; updateGeometry(); } else { d->m_rightTip = rightTip; } repaint(); } /*! * \~english \property DSlider::leftTip * \~english \brief This property holds the text to be display on the left side of the slider. * * \~english DSlider::leftTip and DSlider::rightTip are used to help the user understand * \~english how the slider works, for example: leftTip set to Low and rightTip set to High * \~english tells the user that drag the handle to left lower the value and vice versa. */ /*! * \~chinese \property DSlider::leftTip * \~chinese \brief 显示在滑块左侧的文本 */ QString DSlider::leftTip() const { Q_D(const DSlider); return d->m_leftTip; } /*! * \~chinese \property DSlider::setLeftTip * \~chinese \brief 设置滑块左侧的文本 */ void DSlider::setLeftTip(const QString &leftTip) { Q_D(DSlider); if (d->m_leftTip == leftTip) { return; } if (d->m_leftTip.isEmpty() || leftTip.isEmpty()) { d->m_leftTip = leftTip; updateGeometry(); } else { d->m_leftTip = leftTip; } repaint(); } /*! * \~english \property DSlider::scaleColor * \~english \brief This property holds the color to paint the scale marks. */ /*! * \~chinese \property DSlider::scaleColor * \~chinese \brief 刻度线颜色 */ QColor DSlider::scaleColor() const { Q_D(const DSlider); return d->m_scaleColor; } /*! * \~chinese \property DSlider::setScaleColor * \~chinese \brief 设置刻度线颜色 */ void DSlider::setScaleColor(const QColor &scaleColor) { Q_D(DSlider); d->m_scaleColor = scaleColor; repaint(); } /*! * \~english \property DSlider::tipColor * \~english \brief This property holds the color to paint the scale tips. */ /*! * \~chinese \property DSlider::tipColor * \~chinese \brief 用于绘制刻度提示的颜色。 */ QColor DSlider::tipColor() const { Q_D(const DSlider); return d->m_tipColor; } /*! * \~chinese \property DSlider::setTipColor * \~chinese \brief 设置绘制刻度提示的颜色。 */ void DSlider::setTipColor(const QColor &tipColor) { Q_D(DSlider); d->m_tipColor = tipColor; repaint(); } /*! * \~english \brief DSlider::addScale adds a scale mark on the slider. * \~english \param value is the position that the scale mark to be added. * * \~english The scale added can be removed using DSlider::removeScale passing the * \~english value as the parameter. */ /*! * \~chinese \brief DSlider::addScale 在滑块上添加刻度标记 * \~chinese \param value 要添加刻度标记的位置 * * \~chinese 可以使用 DSlider::removeScale 将标记的位置值传入,删除相关的刻度标记。 */ void DSlider::addScale(int value) { Q_D(DSlider); d->m_scales.append(value); if (d->m_scales.count() == 1) { updateGeometry(); } repaint(); } /*! * \~english \brief DSlider::removeScale removes a scale mark on the slider. * \~english \param value is the value used to add the scale mark. */ /*! * \~chinese \brief DSlider::removeScale 删除滑块上的刻度标记。 * \~chinese \param value 要删除刻度标记的位置值 */ void DSlider::removeScale(int value) { Q_D(DSlider); d->m_scales.removeOne(value); if (d->m_scales.isEmpty()) { updateGeometry(); } repaint(); } void DSlider::mousePressEvent(QMouseEvent *event) { QAbstractSlider::mousePressEvent(event); if (event->button() == Qt::LeftButton) { if (orientation() == Qt::Vertical) { setValue(minimum() + ((maximum() - minimum()) * (height() - event->y())) / height()) ; } else { // FIXME // the value 10 is specified in DSlider.theme, it's ugly here, but I don't have any // good idea for now, maybe someone can help. setValue(minimum() + ((maximum() - minimum()) * (event->x() - 10)) / (width() - 10 - 10)) ; } event->accept(); Q_D(DSlider); QStyleOptionSlider opt; initStyleOption(&opt); setRepeatAction(SliderNoAction); QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); d->clickOffset = d->pick(event->pos() - sr.topLeft()); d->mousePressed = true; Q_EMIT sliderPressed(); } } void DSlider::mouseReleaseEvent(QMouseEvent *event) { QAbstractSlider::mouseReleaseEvent(event); if(event->button() == Qt::LeftButton) { d_func()->mousePressed = false; Q_EMIT sliderReleased(); } } void DSlider::paintEvent(QPaintEvent *event) { Q_D(DSlider); QPainter painter; painter.begin(this); // draw tips QFont font = painter.font(); font.setPixelSize(12); painter.setFont(font); QPen pen = painter.pen(); pen.setColor(d->m_tipColor); painter.setPen(pen); QRect tmp = rect().adjusted(CustomDrawingLeftPadding - 5, 0, -CustomDrawingRightPadding + 5, 0); QTextOption leftBottomOption; leftBottomOption.setAlignment(Qt::AlignLeft | Qt::AlignBottom); painter.drawText(tmp, d->m_leftTip, leftBottomOption); QTextOption rightBottomOption; rightBottomOption.setAlignment(Qt::AlignRight | Qt::AlignBottom); painter.drawText(tmp, d->m_rightTip, rightBottomOption); // draw scales pen.setColor(d->m_scaleColor); painter.setPen(pen); Q_FOREACH(int scale, d->m_scales) { int x = d->getScalePosition(scale); int y = height() - 8; painter.drawLine(x, y, x, y - CustomDrawingScaleHeight); } if (d->m_handleHovering && !d->m_hoverTimout) { QString str = QString::number(value()); int x = d->getScalePosition(value()) - painter.fontMetrics().width(str) / 2.0; painter.setPen(d->m_hoverValueColor); painter.drawText(x, 10, str); } painter.end(); QSlider::paintEvent(event); } void DSlider::mouseMoveEvent(QMouseEvent *event) { Q_D(DSlider); if(d->mousePressed) { int newPosition = d->pixelPosToRangeValue(d->pick(event->pos()) - d->clickOffset); setSliderPosition(newPosition); Q_EMIT sliderMoved(newPosition); } if (!d->m_hoverShowValue) { return; } QPoint pos = event->pos(); QRect rect(d->getScalePosition(value()) - CustomDrawingLeftPadding, 10, 20, 20); if (d->m_handleHovering) { d->m_handleHovering = rect.contains(pos); } else { d->m_handleHovering = rect.contains(pos); if (d->m_handleHovering) { d->m_hoverTimout = false; if (d->m_hoverShowValueInterval > 0) { d->m_hoverTimer.start(d->m_hoverShowValueInterval); } } } update(); } void DSlider::hoverTimout() { Q_D(DSlider); d->m_hoverTimout = true; update(); } void DSlider::init() { Q_D(DSlider); DThemeManager::registerWidget(this); setMouseTracking(true); connect(&d->m_hoverTimer, &QTimer::timeout, this, &DSlider::hoverTimout); } QSize DSlider::sizeHint() const { Q_D(const DSlider); QSize size = QSlider::sizeHint(); if (!d->m_leftTip.isEmpty() || !d->m_rightTip.isEmpty() || !d->m_scales.isEmpty()) { size.setHeight(size.height() + 25); } else { if (d->m_hoverShowValue) { size.setHeight(size.height() + 25); } else { size.setHeight(size.height() + 3); } } return size; } /*! * \~english \property DSlider::hoverShowValue * \~english \brief This property holds whether the value should be displayed when user * \~english hovers on the slider handle. */ /*! * \~chinese \property DSlider::hoverShowValue * \~chinese \brief 是否显示鼠标悬停在滑块上的值。 * \~chinese \brief 这个属性保存着当用户鼠标悬停在滑块时是否显示该值。 */ bool DSlider::hoverShowValue() const { Q_D(const DSlider); return d->m_hoverShowValue; } /*! * \~english \property DSlider::hoverValueColor * \~english \brief This property holds the color to be used to display the texts. */ /*! * \~chinese \property DSlider::hoverValueColor * \~chinese \brief 鼠标悬停在滑块上提示文本的颜色。 */ QColor DSlider::hoverValueColor() const { Q_D(const DSlider); return d->m_hoverValueColor; } /*! * \~english \property DSlider::hoverShowValueInterval * \~english \brief This property holds the interval of how long the value will be displayed * \~english if the user keeps hovering on the slider handle. */ /*! * \~chinese \property DSlider::hoverShowValueInterval * \~chinese \brief 鼠标悬停在滑块显示值的时间间隔。 */ int DSlider::hoverShowValueInterval() const { Q_D(const DSlider); return d->m_hoverShowValueInterval; } /*! * \~chinese \property DSlider::setHoverShowValue * \~chinese \brief 设置显示值的时间间隔。 */ void DSlider::setHoverShowValue(bool hoverShowValue) { Q_D(DSlider); if (d->m_hoverShowValue == hoverShowValue) { return; } d->m_hoverShowValue = hoverShowValue; d->m_handleHovering &= hoverShowValue; updateGeometry(); repaint(); } /*! * \~chinese \property DSlider::setHoverValueColor * \~chinese \brief 设置鼠标悬停在滑块上提示文本的颜色。 */ void DSlider::setHoverValueColor(QColor hoverValueColor) { Q_D(DSlider); d->m_hoverValueColor = hoverValueColor; } /*! * \~chinese \property DSlider::setHoverShowValueInterval * \~chinese \brief 设置悬停显示值的时间间隔。 */ void DSlider::setHoverShowValueInterval(int hoverShowValueInterval) { Q_D(DSlider); d->m_hoverShowValueInterval = hoverShowValueInterval; } DSlider::DSlider(DSliderPrivate &d): d_ptr(&d) { init(); } int DSliderPrivate::getScalePosition(int value) { Q_Q(DSlider); float valueRange = q->maximum() - q->minimum(); float posRange = q->width() - CustomDrawingLeftPadding - CustomDrawingRightPadding; return CustomDrawingLeftPadding + (value - q->minimum()) * posRange / valueRange; } int DSliderPrivate::pixelPosToRangeValue(int pos) const { Q_Q(const DSlider); QStyleOptionSlider opt; q->initStyleOption(&opt); QRect gr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, q); QRect sr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, q); int sliderMin, sliderMax, sliderLength; if (q->orientation() == Qt::Horizontal) { sliderLength = sr.width(); sliderMin = gr.x(); sliderMax = gr.right() - sliderLength + 1; } else { sliderLength = sr.height(); sliderMin = gr.y(); sliderMax = gr.bottom() - sliderLength + 1; } return QStyle::sliderValueFromPosition(q->minimum(), q->maximum(), pos - sliderMin, sliderMax - sliderMin, opt.upsideDown); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dslider.h000066400000000000000000000054131352002233700175350ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSLIDER_H #define DSLIDER_H #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DSliderPrivate; class LIBDTKWIDGETSHARED_EXPORT DSlider : public QSlider { Q_OBJECT Q_PROPERTY(int handleType READ handleType) Q_PROPERTY(QColor tipColor READ tipColor WRITE setTipColor) Q_PROPERTY(QColor scaleColor READ scaleColor WRITE setScaleColor) Q_PROPERTY(bool hoverShowValue READ hoverShowValue WRITE setHoverShowValue) Q_PROPERTY(QColor hoverValueColor READ hoverValueColor WRITE setHoverValueColor) Q_PROPERTY(int hoverShowValueInterval READ hoverShowValueInterval WRITE setHoverShowValueInterval) public: enum HandleType { SharpHandler, RoundHandle }; DSlider(QWidget *parent = 0); DSlider(Qt::Orientation orientation, QWidget *parent = 0); ~DSlider(); int handleType() const; void setHandleType(HandleType handleType); QString leftTip() const; void setLeftTip(const QString &leftTip); QString rightTip() const; void setRightTip(const QString &rightTip); QColor tipColor() const; void setTipColor(const QColor &tipColor); QColor scaleColor() const; void setScaleColor(const QColor &scaleColor); void addScale(int value); void removeScale(int value); bool hoverShowValue() const; QColor hoverValueColor() const; int hoverShowValueInterval() const; public Q_SLOTS: void setHoverShowValue(bool hoverShowValue); void setHoverValueColor(QColor hoverValueColor); void setHoverShowValueInterval(int hoverShowValueInterval); protected: DSlider(DSliderPrivate &d); void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; QSize sizeHint() const Q_DECL_OVERRIDE; private Q_SLOTS: void hoverTimout(); private: DSliderPrivate *d_ptr; void init(); Q_DECLARE_PRIVATE(DSlider) Q_DISABLE_COPY(DSlider) }; DWIDGET_END_NAMESPACE #endif // DSLIDER_H dtkwidget-2.1.1/src/widgets/dspinbox.cpp000066400000000000000000000201201352002233700202600ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include "dspinbox.h" #include "dthememanager.h" #include "dlineedit.h" #include "private/dspinbox_p.h" #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE DImageButton* DSpinBox_getButton(const QString &image_name) { const QString str = ":/images/" + DThemeManager::instance()->theme() + "/images/" + image_name; DImageButton *button = new DImageButton(str + "_normal.png", str + "_hover.png", str + "_press.png"); button->setObjectName("SpinBox_ImageButton"); return button; } DSpinBoxPrivate::DSpinBoxPrivate(DSpinBox *parent) : DObjectPrivate(parent) { } void DSpinBoxPrivate::init() { D_Q(DSpinBox); insideFrame = new QFrame(q); insideFrame->setObjectName("SpinBoxInsideFrame"); QHBoxLayout *h_layout = new QHBoxLayout(insideFrame); DImageButton *button_reset = DSpinBox_getButton("restore"); DImageButton *button_add = DSpinBox_getButton("spinner_increase"); DImageButton *button_sub = DSpinBox_getButton("spinner_decrease"); h_layout->setMargin(0); h_layout->setSpacing(0); h_layout->addStretch(); h_layout->addWidget(button_reset); h_layout->addWidget(button_add); h_layout->addWidget(button_sub); q->connect(button_reset, &DImageButton::clicked, q, [q, this] { if(defaultValue <= q->maximum() && defaultValue >= q->minimum()) q->setValue(defaultValue); else q->setValue(q->minimum()); }); q->connect(button_add, &DImageButton::clicked, q, &DSpinBox::stepUp); q->connect(button_sub, &DImageButton::clicked, q, &DSpinBox::stepDown); } void DSpinBoxPrivate::_q_resizeInsideFrame(const QSize &size) { insideFrame->setFixedWidth(size.width()); insideFrame->setFixedHeight(size.height() - 1); } /*! * \~english \class DSpinBox * \~english \brief The DSpinBox class provides deepin style QSpinBox. * * \~english Like DLineEdit, this widget can be set on alert to warn the user that the * \~english input is not correct. In addition, there's a DSpinBox::defaultValue property * \~english can be used to set a default value on the widget. */ /*! * \~chinese \class DSpinBox * \~chinese \brief Deepin风格的QSpinBox。 * * \~chinese 类似 DLineEdit ,这个控件也提供了警告功能,用于提醒用户当前输入的数据不正确,另外,还可以设置一个默认的值,并在默认值发生改变时发出信号。 * * \~chinese 如下图上面的是正常状态的控件, 下面的是处于警告状态的控件: * * \~chinese \image html DSpinBox.png */ // ========================SIGNAL START======================== /** * \~chinese \fn DSpinBox::alertChanged * \~chinese \brief 警告状态发生了变化。 * \~chinese \param alert 当前的警告状态。 */ /** * \~chinese \fn DSpinBox::defaultValueChanged * \~chinese \brief 默认值发生了变化。 * \~chinese \param defaultValue 控件的默认值。 */ // ========================SIGNAL END======================== /*! * \~english \brief DSpinBox::DSpinBox constructs an instance of DSpinBox * \~english \param parent is passed to QSpinBox constructor */ /*! * \~chinese \brief 构造一个 DSpinBox 实例。 * \~chinese \param parent 作为该实例的父控件。 */ DSpinBox::DSpinBox(QWidget *parent) : QSpinBox(parent), DObject(*new DSpinBoxPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"alert"})); d_func()->init(); } /*! * \~english \brief DSpinBox::lineEdit * \~english \return the QLineEdit used by this spin box. */ /*! * \~chinese \brief 获取输入框控件。 * \~chinese \return 返回正在使用的输入库控件对象。 */ QLineEdit *DSpinBox::lineEdit() const { return QSpinBox::lineEdit(); } /*! * \~english \property DSpinBox::alert * \~english \brief This property holds whether the widget on alert mode. */ /*! * \~chinese \property DSpinBox::alert * \~chinese \brief 表示当前控件是否处于警告状态的属性。 * * \~chinese 使用 DSpinBox::isAlert 获取属性当前状态,使用 DSpinBox::setAlert 设置属性的状态。 */ bool DSpinBox::isAlert() const { D_DC(DSpinBox); return d->alert; } /*! * \~english \property DSpinBox::defaultValue * \~english \brief This property holds the default value of this spin box. */ /*! * \~chinese \property DSpinBox::defaultValue * \~chinese \brief 这个属性的值是控件的默认值。 * * \~chinese 使用 DSpinBox::defaultValue 获取默认值,使用 DSpinBox::setDefaultValue 设置默认值, 点击控件上的 reset 按钮会设置为此值。 */ int DSpinBox::defaultValue() const { return d_func()->defaultValue; } void DSpinBox::setAlert(bool alert) { D_D(DSpinBox); if(alert == d->alert) return; d->alert = alert; Q_EMIT alertChanged(alert); } void DSpinBox::setDefaultValue(int defaultValue) { D_D(DSpinBox); if (d->defaultValue == defaultValue) return; d->defaultValue = defaultValue; Q_EMIT defaultValueChanged(defaultValue); } /** \reimp */ void DSpinBox::resizeEvent(QResizeEvent *e) { QSpinBox::resizeEvent(e); d_func()->_q_resizeInsideFrame(e->size()); } DDoubleSpinBoxPrivate::DDoubleSpinBoxPrivate(DDoubleSpinBox *parent) : DObjectPrivate(parent) { } void DDoubleSpinBoxPrivate::init() { D_Q(DDoubleSpinBox); insideFrame = new QFrame(q); insideFrame->setObjectName("SpinBoxInsideFrame"); QHBoxLayout *h_layout = new QHBoxLayout(insideFrame); DImageButton *button_reset = DSpinBox_getButton("restore"); DImageButton *button_add = DSpinBox_getButton("spinner_increase"); DImageButton *button_sub = DSpinBox_getButton("spinner_decrease"); h_layout->setMargin(0); h_layout->setSpacing(0); h_layout->addStretch(); h_layout->addWidget(button_reset); h_layout->addWidget(button_add); h_layout->addWidget(button_sub); q->connect(button_reset, &DImageButton::clicked, q, [q, this] { if(defaultValue < q->maximum() && defaultValue > q->minimum()) q->setValue(defaultValue); else q->setValue(q->minimum()); }); q->connect(button_add, &DImageButton::clicked, q, &DSpinBox::stepUp); q->connect(button_sub, &DImageButton::clicked, q, &DSpinBox::stepDown); } void DDoubleSpinBoxPrivate::_q_resizeInsideFrame(const QSize &size) { insideFrame->setFixedWidth(size.width()); insideFrame->setFixedHeight(size.height() - 1); } /*! * \~chinese \class DDoubleSpinBox * \~chinese \brief 类似 DDoubleSpinBox 。 */ DDoubleSpinBox::DDoubleSpinBox(QWidget *parent) : QDoubleSpinBox(parent), DObject(*new DDoubleSpinBoxPrivate(this)) { DThemeManager::registerWidget(this, QStringList({"alert"})); d_func()->init(); } bool DDoubleSpinBox::isAlert() const { D_DC(DDoubleSpinBox); return d->alert; } double DDoubleSpinBox::defaultValue() const { return d_func()->defaultValue; } void DDoubleSpinBox::setAlert(bool alert) { D_D(DDoubleSpinBox); if(alert == d->alert) return; d->alert = alert; Q_EMIT alertChanged(alert); } void DDoubleSpinBox::setDefaultValue(double defaultValue) { D_D(DDoubleSpinBox); if (d->defaultValue == defaultValue) return; d->defaultValue = defaultValue; Q_EMIT defaultValueChanged(defaultValue); } void DDoubleSpinBox::resizeEvent(QResizeEvent *e) { QDoubleSpinBox::resizeEvent(e); d_func()->_q_resizeInsideFrame(e->size()); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dspinbox.h000066400000000000000000000045311352002233700177350ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSPINBOX_H #define DSPINBOX_H #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DSpinBoxPrivate; class LIBDTKWIDGETSHARED_EXPORT DSpinBox : public QSpinBox, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool alert READ isAlert WRITE setAlert NOTIFY alertChanged) Q_PROPERTY(int defaultValue READ defaultValue WRITE setDefaultValue NOTIFY defaultValueChanged) public: explicit DSpinBox(QWidget *parent = 0); QLineEdit *lineEdit() const; bool isAlert() const; int defaultValue() const; public Q_SLOTS: void setAlert(bool alert); void setDefaultValue(int defaultValue); Q_SIGNALS: void alertChanged(bool alert); void defaultValueChanged(int defaultValue); protected: void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DSpinBox) }; class DDoubleSpinBoxPrivate; class DDoubleSpinBox : public QDoubleSpinBox, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool alert READ isAlert WRITE setAlert NOTIFY alertChanged) Q_PROPERTY(double defaultValue READ defaultValue WRITE setDefaultValue NOTIFY defaultValueChanged) public: explicit DDoubleSpinBox(QWidget *parent = 0); bool isAlert() const; double defaultValue() const; public Q_SLOTS: void setAlert(bool alert); void setDefaultValue(double defaultValue); Q_SIGNALS: void alertChanged(bool alert); void defaultValueChanged(double defaultValue); protected: void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DDoubleSpinBox) double m_defaultValue; }; DWIDGET_END_NAMESPACE #endif // DSPINBOX_H dtkwidget-2.1.1/src/widgets/dspinner.cpp000066400000000000000000000105111352002233700202570ustar00rootroot00000000000000#include "dspinner.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DSpinnerPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: explicit DSpinnerPrivate(DSpinner *qq); QList createDefaultIndicatorColorList(QColor color); QTimer refreshTimer; double indicatorShadowOffset = 10; double currentDegree = 0.0; QList> indicatorColors; D_DECLARE_PUBLIC(DSpinner) }; DSpinnerPrivate::DSpinnerPrivate(DSpinner *qq) : DObjectPrivate(qq) { } /*! \~chinese \class DSpinner \~chinese \brief 可以使用 DSpinner 类快速创建用于指示加载中状态的旋转等待图标动画控件。 \~chinese \image html DSpinner.gif \~chinese DSpinner 提供了一个用于指示加载中状态的旋转等待图标动画控件。在创建图标后,使用 start() 即可开始图标旋转的动画。 */ /*! \~english \class DSpinner \~english \brief Use DSpinner to create a widget with spinning animation for display a waiting state. \~english \image html DSpinner.gif \~english DSpinner provide a spinning animation widget to indicate a waiting state. Call start() to start the spinning animation. */ /*! * \~english \brief Create a DSpinner widget * \~chinese \brief 创建一个 DSpinner 控件 * * \~english \param parent Parent widget. * \~chinese \param parent 父控件 */ DSpinner::DSpinner(QWidget *parent) : QWidget(parent), DObject(*new DSpinnerPrivate(this)) { Q_D(DSpinner); d->indicatorColors << d->createDefaultIndicatorColorList(QColor(200, 46, 255)); d->indicatorColors << d->createDefaultIndicatorColorList(QColor(207, 225, 0)); d->indicatorColors << d->createDefaultIndicatorColorList(QColor(0, 255, 241)); d->refreshTimer.setInterval(30); connect(&d->refreshTimer, &QTimer::timeout, this, [ = ]() { d->currentDegree += 14; update(); }); } DSpinner::~DSpinner() { } /*! * \~english \brief Is the DSpinner spinning or not * \~chinese \brief DSpinner 是否正在播放旋转动画 */ bool DSpinner::isPlaying() const { Q_D(const DSpinner); return d->refreshTimer.isActive(); } /*! * \~english \brief Start spinning * \~chinese \brief 开始旋转动画 */ void DSpinner::start() { Q_D(DSpinner); d->refreshTimer.start(); } /*! * \~english \brief Stop spinning * \~chinese \brief 停止旋转动画 */ void DSpinner::stop() { Q_D(DSpinner); d->refreshTimer.stop(); } /*! * \~english \brief Set background color * \~chinese \brief 设置背景颜色 */ void DSpinner::setBackgroundColor(QColor color) { setAutoFillBackground(true); QPalette pal = palette(); pal.setColor(QPalette::Background, color); setPalette(pal); } void DSpinner::paintEvent(QPaintEvent *) { Q_D(DSpinner); QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing); auto degreeCurrent = d->currentDegree * 1.0; auto center = QRectF(rect()).center(); auto radius = qMin(rect().width(), rect().height()) / 2.0; auto indicatorRadius = radius / 2 / 2 * 1.1; auto indicatorDegreeDelta = 360 / d->indicatorColors.count(); for (int i = 0; i < d->indicatorColors.count(); ++i) { auto colors = d->indicatorColors.value(i); for (int j = 0; j < colors.count(); ++j) { degreeCurrent = d->currentDegree - j * d->indicatorShadowOffset + indicatorDegreeDelta * i; auto x = (radius - indicatorRadius) * qCos(qDegreesToRadians(degreeCurrent)); auto y = (radius - indicatorRadius) * qSin(qDegreesToRadians(degreeCurrent)); x = center.x() + x; y = center.y() + y; auto tl = QPointF(x - 1 * indicatorRadius, y - 1 * indicatorRadius); QRectF rf(tl.x(), tl.y(), indicatorRadius * 2, indicatorRadius * 2); QPainterPath path; path.addEllipse(rf); painter.fillPath(path, colors.value(j)); } } } QList DSpinnerPrivate::createDefaultIndicatorColorList(QColor color) { QList colors; QList opacitys; opacitys << 100 << 30 << 15 << 10 << 5 << 4 << 3 << 2 << 1; for (int i = 0; i < opacitys.count(); ++i) { color.setAlpha(255 * opacitys.value(i) / 100); colors << color; } return colors; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dspinner.h000066400000000000000000000011621352002233700177260ustar00rootroot00000000000000#ifndef DSPINNER_H #define DSPINNER_H #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DSpinnerPrivate; class LIBDTKWIDGETSHARED_EXPORT DSpinner : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DSpinner(QWidget *parent = 0); ~DSpinner(); bool isPlaying() const; public Q_SLOTS: void start(); void stop(); void setBackgroundColor(QColor color); protected: void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DSpinner) }; DWIDGET_END_NAMESPACE #endif dtkwidget-2.1.1/src/widgets/dstackwidget.cpp000066400000000000000000000343371352002233700211260ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "dthememanager.h" #include "dstackwidget.h" #include "private/dstackwidget_p.h" DWIDGET_BEGIN_NAMESPACE DAbstractStackWidgetTransitionPrivate::DAbstractStackWidgetTransitionPrivate(DAbstractStackWidgetTransition *qq): DObjectPrivate(qq), animation(new QVariantAnimation(qq)) { } DAbstractStackWidgetTransitionPrivate::~DAbstractStackWidgetTransitionPrivate() { } void DAbstractStackWidgetTransitionPrivate::init() { Q_Q(DAbstractStackWidgetTransition); QObject::connect(animation, &QVariantAnimation::valueChanged, q, &DAbstractStackWidgetTransition::updateVariant); } DAbstractStackWidgetTransition::DAbstractStackWidgetTransition(QObject *parent): QObject(parent), DObject(*new DAbstractStackWidgetTransitionPrivate(this)) { d_func()->init(); } void DAbstractStackWidgetTransition::beginTransition(const TransitionInfo &info) { Q_D(DAbstractStackWidgetTransition); d->info = info; } QVariantAnimation *DAbstractStackWidgetTransition::animation() const { Q_D(const DAbstractStackWidgetTransition); return d->animation; } DAbstractStackWidgetTransition::DAbstractStackWidgetTransition(DAbstractStackWidgetTransitionPrivate &dd, QObject *parent): QObject(parent), DObject(dd) { d_func()->init(); } const DAbstractStackWidgetTransition::TransitionInfo &DAbstractStackWidgetTransition::info() const { Q_D(const DAbstractStackWidgetTransition); return d->info; } DSlideStackWidgetTransition::DSlideStackWidgetTransition(QObject *parent): DAbstractStackWidgetTransition(parent) { } void DSlideStackWidgetTransition::beginTransition(const TransitionInfo &info) { DAbstractStackWidgetTransition::beginTransition(info); info.oldWidget->move(0, 0); if(info.type == Push) { info.newWidget->move(info.stackWidget->width(), 0); } else if(info.type == Pop) { info.newWidget->move(-info.stackWidget->width(), 0); } info.oldWidget->show(); info.newWidget->show(); animation()->setStartValue(0); animation()->setEndValue(-info.newWidget->x()); animation()->start(); } void DSlideStackWidgetTransition::updateVariant(const QVariant &variant) { int x = variant.toInt(); info().oldWidget->move(x, 0); if(info().type == Push) { info().newWidget->move(info().stackWidget->width() + x, 0); } else if(info().type == Pop) { info().newWidget->move(x - info().stackWidget->width(), 0); } } DStackWidgetPrivate::DStackWidgetPrivate(DStackWidget *qq): DObjectPrivate(qq) { } DStackWidgetPrivate::~DStackWidgetPrivate() { } void DStackWidgetPrivate::init() { Q_Q(DStackWidget); currentIndex = -1; currentWidget = nullptr; transition = nullptr; q->setTransition(new DSlideStackWidgetTransition(q)); } void DStackWidgetPrivate::setCurrentIndex(int index) { if(index == currentIndex) return; Q_Q(DStackWidget); if(index >= 0 && index < widgetList.count()){ currentIndex = index; currentWidget = widgetList[index]; } else { currentIndex = -1; currentWidget = nullptr; } q->currentIndexChanged(index); q->currentWidgetChanged(currentWidget); } /*! * \~chinese \class DStackWidget * \~chinese \brief 一个可定制切换动画的容器控件 * * \~chinese DStackWidget 在内容展示方面类似于一个使用了 QStackedLayout 布局的控件, 即在同一个位置展示不同的内容, 但 DStackWidget 提供了 * \~chinese 切换内容时的动画效果, 并且可进行自定义动画, 另外 DStackWidget 采用了栈的先入后出理念(不过也并没有完全遵守), 使用 DStackWidget::pushWidget 方法入栈新的内容, * \~chinese 使用 DStackWidget::popWidget 出栈当前内容并显示下层内容(如果有的话), 还有 DStackWidget::insertWidget 可以指定插入的位置. * * \~chinese 如果要自定义动画则需要继承 DAbstractStackWidgetTransition, 具体实现可参考 DSlideStackWidgetTransition 类, DSlideStackWidgetTransition 类是 DStackWidget 使用的默认动画即滑动. * \~chinese \image html DStackWidget.gif */ /** * \~chinese \fn DStackWidget::switchWidgetFinished * \~chinese \brief 当切换一次显示的内容后被调用(动画结束后) */ /*! * \~chinese \brief 构造一个 DStackWidget 实例 * \~chinese \param parent 为 DStackWidget 实例的父控件 */ DStackWidget::DStackWidget(QWidget *parent) : QWidget(parent), DObject(*new DStackWidgetPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } /** * \~chinese \fn DStackWidget::busyChanged * \~chinese \sa DStackWidget::busy */ /** * \~chinese \property DStackWidget::busy * \~chinese \brief 表示当前是否处于过渡动画过程中 * \~chinese Getter: DStackWidget::busy , Signal: DStackWidget::busyChanged */ bool DStackWidget::busy() const { Q_D(const DStackWidget); return d->transition->animation()->state() != QVariantAnimation::Stopped; } /** * \~chinese \fn DStackWidget::depthChanged * \~chinese \sa DStackWidget::depth */ /** * \~chinese \property DStackWidget::depth * \~chinese \brief 表示正在管理有多少层内容(从 1 开始计数) * \~chinese Getter: DStackWidget::depth , Signal: DStackWidget::depthChanged */ int DStackWidget::depth() const { Q_D(const DStackWidget); return d->widgetList.count(); } /** * \~chinese \fn DStackWidget::currentIndexChanged * \~chinese \sa DStackWidget::currentIndex */ /** * \~chinese \property DStackWidget::currentIndex * \~chinese \brief 表示当前内容在栈中的索引位置(从 0 开始计数) * \~chinese Getter: DStackWidget::currentIndex , Signal: DStackWidget::currentIndexChanged */ int DStackWidget::currentIndex() const { Q_D(const DStackWidget); return d->currentIndex; } /** * \~chinese \fn DStackWidget::currentWidgetChanged * \~chinese \sa DStackWidget::currentWidget */ /** * \~chinese \property DStackWidget::currentWidget * \~chinese \brief 表示当前内容的对象 * \~chinese Getter: DStackWidget::currentWidget , Signal: DStackWidget::currentWidgetChanged */ QWidget *DStackWidget::currentWidget() const { Q_D(const DStackWidget); return d->currentWidget; } /** * \~chinese \property DStackWidget::transition * \~chinese \brief 当前使用的动画对象 * * \~chinese如果没有调用过这个属性的 setter 方法, 那么将会返回默认使用的动画对象即 DSlideStackWidgetTransition 的一个实例 * \~chinese Getter: DStackWidget::transition , Setter: DStackWidget::setTransition */ DAbstractStackWidgetTransition *DStackWidget::transition() const { Q_D(const DStackWidget); return d->transition; } /** * \~chinese \property DStackWidget::animationDuration * \~chinese \brief 这个属性表示当前动画播放一次所需要的时间 * * \~chinese Getter: DStackWidget::animationDuration , Setter: DStackWidget::setAnimationDuration */ int DStackWidget::animationDuration() const { Q_D(const DStackWidget); return d->transition->animation()->duration(); } /** * \~chinese \property DStackWidget::animationType * \~chinese \brief 这个属性表示当前动画的类型 * * \~chinese Getter: DStackWidget::animationType , Setter: DStackWidget::setAnimationType * \~chinese \sa QEasingCurve::Type */ QEasingCurve::Type DStackWidget::animationType() const { Q_D(const DStackWidget); return d->transition->animation()->easingCurve().type(); } /** * \~chinese @brief DStackWidget::pushWidget 入栈一个新的内容控件 * \~chinese @param widget 新的内容控件对象 * \~chinese @param enableTransition 是否使用动画 * \~chinese @return 此对象在栈中的索引(从 0 开始计数) * \~chinese @sa DStackWidget::insertWidget */ int DStackWidget::pushWidget(QWidget *widget, bool enableTransition) { insertWidget(depth(), widget, enableTransition); return depth() - 1; } /** * \~chinese \brief DStackWidget::insertWidget 在指定的位置插入一个新的内容控件 * * \~chinese 需要注意的是如果第一个参数 index 不是栈的最后一个位置将不会显示动画 * * \~chinese \param index 要插入的索引 * \~chinese \param widget 要插入的控件 * \~chinese \param enableTransition 是否使用动画 * \~chinese @sa DStackWidget::pushWidget */ void DStackWidget::insertWidget(int index, QWidget *widget, bool enableTransition) { Q_D(DStackWidget); widget->setParent(this); d->widgetList.insert(index, widget); if(index == this->depth() - 1) setCurrentIndex(index, DAbstractStackWidgetTransition::Push, enableTransition); else d->setCurrentIndex(indexOf(currentWidget())); } /** * \~chinese @brief DStackWidget::popWidget 出栈指定的内容控件 * * \~chinese 如果所有参数都没有指定, 那么将只移除当前的内容控件, 一般是栈顶的控件. * \~chinese 如果指定了参数 widget 那么计数将从控件 widget 在栈中的索引开始往栈顶方向计算移除 count 个内容控件 * * \~chinese @param widget 指定要移除的控件 * \~chinese @param isDelete 是否删除控件对象 * \~chinese @param count 指定要移除的控件的数量 * \~chinese @param enableTransition 是否使用动画 */ void DStackWidget::popWidget(QWidget *widget, bool isDelete, int count, bool enableTransition) { Q_D(DStackWidget); int i = widget ? indexOf(widget) : currentIndex(); if(i < 0 || i >= depth()) return; bool current_widget_deleted = false; while(count-- > 0){ QWidget *tmp_widget = d->widgetList[i]; if(tmp_widget == currentWidget()) { current_widget_deleted = true; } else if(isDelete) { tmp_widget->deleteLater(); } d->widgetList.removeAt(i); } if(current_widget_deleted && isDelete){ if(enableTransition && depth()){ d->trashWidgetList << d->currentWidget; } else if(d->currentWidget) { d->currentWidget->deleteLater(); d->currentWidget = nullptr; } } setCurrentIndex(depth() - 1, DAbstractStackWidgetTransition::Pop, enableTransition && current_widget_deleted); } /** * \~chinese @brief DStackWidget::clear 移除所有控件(无动画) */ void DStackWidget::clear() { Q_D(DStackWidget); qDeleteAll(d->widgetList.begin(), d->widgetList.end()); d->widgetList.clear(); d->setCurrentIndex(-1); } /** * \chinese @brief DStackWidget::indexOf 获取指定控件的索引 * \chinese @param widget 指定的控件 * \chinese @return 通过控件找到的索引 */ int DStackWidget::indexOf(QWidget *widget) const { Q_D(const DStackWidget); return d->widgetList.indexOf(widget); } /** * \~chinese @brief DStackWidget::getWidgetByIndex 通过索引获取控件 * \~chinese @param index 指定索引 * \~chinese @return 通过索引找到的控件 */ QWidget *DStackWidget::getWidgetByIndex(int index) const { Q_D(const DStackWidget); return d->widgetList[index]; } /** * \~chinese \@brief DStackWidget::setTransition * \~chinese \sa DStackWidget::transition */ void DStackWidget::setTransition(DAbstractStackWidgetTransition *transition) { Q_D(DStackWidget); if(d->transition){ d->transition->deleteLater(); } transition->setParent(this); d->transition = transition; connect(transition->animation(), &QVariantAnimation::stateChanged, this, [this, d](QAbstractAnimation::State newState, QAbstractAnimation::State oldState){ if(newState == QVariantAnimation::Stopped) { busyChanged(false); qDeleteAll(d->trashWidgetList); d->trashWidgetList.clear(); Q_EMIT switchWidgetFinished(); } else if(oldState == QVariantAnimation::Stopped) { busyChanged(true); } }); } /** * \~chinese \@brief DStackWidget::setAnimationDuration * \~chinese \sa DStackWidget::animationDuration */ void DStackWidget::setAnimationDuration(int animationDuration) { Q_D(DStackWidget); d->transition->animation()->setDuration(animationDuration); } /** * \~chinese \@brief DStackWidget::setAnimationType * \~chinese \sa DStackWidget::animationType */ void DStackWidget::setAnimationType(QEasingCurve::Type animationType) { Q_D(DStackWidget); d->transition->animation()->setEasingCurve(animationType); } DStackWidget::DStackWidget(DStackWidgetPrivate &dd, QWidget *parent): QWidget(parent), DObject(dd) { DThemeManager::registerWidget(this); d_func()->init(); } void DStackWidget::setCurrentIndex(int currentIndex, DAbstractStackWidgetTransition::TransitionType type, bool enableTransition) { Q_D(DStackWidget); if(enableTransition && currentWidget() && currentIndex >= 0) { DAbstractStackWidgetTransition::TransitionInfo info; info.stackWidget = this; info.oldWidget = currentWidget(); info.newWidget = getWidgetByIndex(depth() - 1); info.type = type; d->setCurrentIndex(currentIndex); d->transition->beginTransition(info); } else { if(currentWidget()) { currentWidget()->hide(); } d->setCurrentIndex(currentIndex); if(currentWidget()) { currentWidget()->move(0, 0); currentWidget()->show(); } Q_EMIT switchWidgetFinished(); } } void DStackWidget::setCurrentWidget(QWidget *currentWidget, DAbstractStackWidgetTransition::TransitionType type, bool enableTransition) { setCurrentIndex(indexOf(currentWidget), type, enableTransition); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dstackwidget.h000066400000000000000000000115301352002233700205610ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSTACKWIDGET_H #define DSTACKWIDGET_H #include #include #include "dobject.h" #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DStackWidget; class DAbstractStackWidgetTransitionPrivate; class DAbstractStackWidgetTransition : public QObject, public DTK_CORE_NAMESPACE::DObject { public: enum TransitionType{ Push, Pop }; struct TransitionInfo{ TransitionType type; DStackWidget *stackWidget = nullptr; QWidget *oldWidget = nullptr; QWidget *newWidget = nullptr; }; explicit DAbstractStackWidgetTransition(QObject *parent = 0); virtual void beginTransition(const TransitionInfo &info); virtual QVariantAnimation *animation() const; protected: virtual void updateVariant(const QVariant& variant) = 0; protected: explicit DAbstractStackWidgetTransition(DAbstractStackWidgetTransitionPrivate &dd, QObject *parent = 0); const TransitionInfo &info() const; private: D_DECLARE_PRIVATE(DAbstractStackWidgetTransition) }; class DSlideStackWidgetTransition : public DAbstractStackWidgetTransition { Q_OBJECT public: explicit DSlideStackWidgetTransition(QObject *parent = 0); void beginTransition(const TransitionInfo &info) Q_DECL_OVERRIDE; private Q_SLOTS: void updateVariant(const QVariant &variant) Q_DECL_OVERRIDE; }; class DStackWidgetPrivate; class DStackWidget : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT ///busy is true if a transition is running, and false otherwise. Q_PROPERTY(bool busy READ busy NOTIFY busyChanged FINAL) ///The number of widgets currently pushed onto the stack. Q_PROPERTY(int depth READ depth NOTIFY depthChanged FINAL) Q_PROPERTY(int currentIndex READ currentIndex NOTIFY currentIndexChanged) Q_PROPERTY(QWidget* currentWidget READ currentWidget NOTIFY currentWidgetChanged) Q_PROPERTY(DAbstractStackWidgetTransition* transition READ transition WRITE setTransition) Q_PROPERTY(int animationDuration READ animationDuration WRITE setAnimationDuration) Q_PROPERTY(QEasingCurve::Type animationType READ animationType WRITE setAnimationType) public: explicit DStackWidget(QWidget *parent = 0); bool busy() const; int depth() const; int currentIndex() const; QWidget* currentWidget() const; DAbstractStackWidgetTransition* transition() const; int animationDuration() const; QEasingCurve::Type animationType() const; public Q_SLOTS: int pushWidget(QWidget *widget, bool enableTransition = true); void insertWidget(int index, QWidget *widget, bool enableTransition = true); /// If widget is nullptr, all widgets up to the currentIndex+count widgets will be popped. /// If not specified, all widgets up to the depthOf(widget)+count widgets will be popped. void popWidget(QWidget *widget = nullptr, bool isDelete = true, int count = 1, bool enableTransition = true); void clear(); int indexOf(QWidget *widget) const; QWidget* getWidgetByIndex(int index) const; void setTransition(DAbstractStackWidgetTransition* transition); void setAnimationDuration(int animationDuration); void setAnimationType(QEasingCurve::Type animationType); Q_SIGNALS: void busyChanged(bool busy); void depthChanged(int depth); void currentIndexChanged(int currentIndex); void currentWidgetChanged(QWidget* currentWidget); void widgetDepthChanged(QWidget *widget, int depth); void switchWidgetFinished(); protected: explicit DStackWidget(DStackWidgetPrivate &dd, QWidget *parent = 0); void setCurrentIndex(int currentIndex, DAbstractStackWidgetTransition::TransitionType type = DAbstractStackWidgetTransition::Push, bool enableTransition = true); void setCurrentWidget(QWidget* currentWidget, DAbstractStackWidgetTransition::TransitionType type = DAbstractStackWidgetTransition::Push, bool enableTransition = true); private: Q_DISABLE_COPY(DStackWidget) D_DECLARE_PRIVATE(DStackWidget) }; DWIDGET_END_NAMESPACE #endif // DSTACKWIDGET_H dtkwidget-2.1.1/src/widgets/dstyleoption.cpp000066400000000000000000000203101352002233700211700ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dstyleoption.h" #include "dlineedit.h" #include "private/dlineedit_p.h" #include DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DStyleOption * \brief DStyleOption is the base class of deepin style option, use for dxcb plugins * \param widget */ /*! * \~chinese \class DStyleOption * \brief dcxb插件通过DStyleOption来控制控件的样式 * \param widget */ /*! * \~english \class DStyleOptionSuggestButton * \brief DStyleOptionSuggestButton handle the style option of Dtk::Widget::DSuggestButton * \param widget */ /*! * \~english \enum DStyleOptionSuggestButton::ButtonFeature * \brief This enum extend types of features a Dtk::Widget::DSuggestButton can have */ /*! * \~english \var DStyleOptionSuggestButton::SuggestButton * \brief Default Button */ /*! * \~chinese \class DStyleOptionSuggestButton * \brief Dtk::Widget::DSuggestButton使用的样式配置 * \param widget */ /*! * \~chinese \enum DStyleOptionSuggestButton::ButtonFeature * \brief Dtk::Widget::DSuggestButton扩展的样式 */ /*! * \~chinese \var DStyleOptionSuggestButton::SuggestButton * \brief 默认样式 */ /*! * \~english \class DStyleOptionLineEdit * \brief DStyleOptionLineEdit handle the style option of Dtk::Widget::DLineEdit * \param widget */ /*! * \~english \var DStyleOptionLineEdit::None * \brief Default none style */ /*! * \~english \var DStyleOptionLineEdit::Alert * \brief Alert style */ /*! * \~english \var DStyleOptionLineEdit::IconButton * \brief Edit with an icon */ /*! * \~chinese \class DStyleOptionLineEdit * \brief Dtk::Widget::DLineEdit使用的样式配置 * \param widget */ /*! * \~chinese \enum DStyleOptionLineEdit::LineEditFeature * \brief Dtk::Widget::DSuggestButton扩展的样式 */ /*! * \~chinese \var DStyleOptionLineEdit::None * \brief 不使用自定义样式,保持Qt默认样式。 */ /*! * \~chinese \var DStyleOptionLineEdit::Alert * \brief 警告状态样式 */ /*! * \~chinese \var DStyleOptionLineEdit::IconButton * \brief 包含图标按钮的编辑框样式 */ /*! * \~english \brief Init style with widget. * \param widget */ /*! * \~chinese \brief 控件初始化样式时调用,可以用于重写控件样式。 * \param widget */ void DStyleOption::init(QWidget *widget) { Q_UNUSED(widget) } /*! * \~english \brief DStyleOptionSuggestButton::init set style option for Dtk::Widget::DSuggestButton * \param widget * \sa Dtk::Widget::DSuggestButton */ /*! * \~chinese \brief 初始化Dtk::Widget::DSuggestButton样式,设置为 DStyleOptionSuggestButton::SuggestButton 。 * \param widget * \sa Dtk::Widget::DSuggestButton */ void DStyleOptionSuggestButton::init(QWidget *widget) { Q_UNUSED(widget) features |= QStyleOptionButton::ButtonFeature(SuggestButton); } /*! * \~english \brief DStyleOptionSuggestButton::init set style option for Dtk::Widget::DLineEdit * \param widget * \sa Dtk::Widget::DLineEdit */ /*! * \~chinese \brief 根据Dtk::Widget::DLineEdit控件状态初始化样式 * \param widget * \sa Dtk::Widget::DLineEdit */ void DStyleOptionLineEdit::init(QWidget *widget) { if (const DLineEdit *edit = qobject_cast(widget)) { if (edit->isAlert()) { features |= Alert; } if (edit->iconVisible()) { features |= IconButton; iconButtonRect = edit->d_func()->m_rightIcon->geometry(); } } } void DStyleOptionBackgroundGroup::init(QWidget *widget) { backgroundRect = widget->geometry(); } class DPalettePrivate { public: QBrush br[DPalette::NColorGroups][DPalette::NColorRoles]; static QHash> map; static QSharedPointer appPalette; }; QHash> DPalettePrivate::map; QSharedPointer DPalettePrivate::appPalette = QSharedPointer::create(); DPalette::DPalette() : d(DPalettePrivate::appPalette) { } DPalette::DPalette(const QPalette &palette) : QPalette(palette) , d(DPalettePrivate::appPalette) { } DPalette::~DPalette() { } DPalette DPalette::get(const QWidget *widget, const QPalette &base) { DPalette pa = base; auto data = DPalettePrivate::map.value(widget); while (!data) { widget = widget->parentWidget(); if (!widget) { break; } data = DPalettePrivate::map.value(widget); } if (data) { pa.d = data; } return pa; } void DPalette::set(QWidget *widget, const DPalette &pa) { if (!DPalettePrivate::map.contains(widget)) { QObject::connect(widget, &QWidget::destroyed, [widget] { DPalettePrivate::map.remove(widget); }); } DPalettePrivate::map[widget] = pa.d; widget->setPalette(pa); } void DPalette::setGeneric(const DPalette &pa) { DPalettePrivate::appPalette = pa.d; } const QBrush &DPalette::brush(QPalette::ColorGroup cg, DPalette::ColorType cr) const { if (cr >= NColorTypes) { return QPalette::brush(cg, QPalette::NoRole); } if (cg == Current) { cg = currentColorGroup(); } else if (cg >= NColorGroups) { cg = Normal; } return d->br[cg][cr]; } void DPalette::setBrush(QPalette::ColorGroup cg, DPalette::ColorType cr, const QBrush &brush) { d->br[cg][cr] = brush; } class DFontSizeManagerPrivate { public: QList binderMap[DFontSizeManager::NSizeTypes]; quint16 fontPixelSize[DFontSizeManager::NSizeTypes] = {40, 30, 24, 20, 17, 14, 13, 12, 11, 10}; quint8 fontGenericSizeType = DFontSizeManager::T6; // 字号的差值 quint16 fontPixelSizeDiff = 0; void updateWidgetFont(DFontSizeManager *manager, DFontSizeManager::SizeType type) { for (QWidget *w : binderMap[type]) { w->setFont(manager->get(type, w->font())); } } }; DFontSizeManager *DFontSizeManager::instance() { static DFontSizeManager manager; return &manager; } void DFontSizeManager::bind(QWidget *widget, DFontSizeManager::SizeType type) { unbind(widget); d->binderMap[type].append(widget); widget->setFont(get(type, widget->font())); QObject::connect(widget, &QWidget::destroyed, [this, widget] { unbind(widget); }); } void DFontSizeManager::unbind(QWidget *widget) { for (int i = 0; i < NSizeTypes; ++i) { d->binderMap[i].removeOne(widget); } } quint16 DFontSizeManager::fontPixelSize(DFontSizeManager::SizeType type) const { if (type >= NSizeTypes) { return 0; } return d->fontPixelSize[type] + d->fontPixelSizeDiff; } void DFontSizeManager::setFontPixelSize(DFontSizeManager::SizeType type, quint16 size) { if (type >= NSizeTypes) { return; } if (d->fontPixelSize[type] == size) { return; } d->fontPixelSize[type] = size; d->updateWidgetFont(this, type); } void DFontSizeManager::setFontGenericPixelSize(quint16 size) { qint16 diff = size - d->fontPixelSize[d->fontGenericSizeType]; if (diff == d->fontPixelSizeDiff) return; d->fontPixelSizeDiff = diff; for (int i = 0; i < NSizeTypes; ++i) { d->updateWidgetFont(this, static_cast(i)); } } const QFont DFontSizeManager::get(DFontSizeManager::SizeType type, const QFont &base) const { QFont font = base; font.setPixelSize(fontPixelSize(type)); return font; } DFontSizeManager::DFontSizeManager() : d(new DFontSizeManagerPrivate()) { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dstyleoption.h000066400000000000000000000126071352002233700206470ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSTYLEOPTION_H #define DSTYLEOPTION_H #include #include QT_BEGIN_NAMESPACE class QGuiApplication; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DStyleOption { public: enum PrimitiveElement { PE_BACKGROUND = QStyle::PE_CustomBase + 1, }; virtual void init(QWidget *widget); }; class DStyleOptionSuggestButton : public QStyleOptionButton, public DStyleOption { public: enum ButtonFeature { SuggestButton = (CommandLinkButton << 1) }; void init(QWidget *widget) override; }; class DStyleOptionLineEdit : public DStyleOption { public: enum LineEditFeature { None = 0x0, Alert = 0x1, IconButton = 0x2 }; Q_DECLARE_FLAGS(LineEditFeatures, LineEditFeature) void init(QWidget *widget) override; LineEditFeatures features = None; QRect iconButtonRect; }; class DStyleOptionBackgroundGroup : public QStyleOption, public DStyleOption { public: enum BackgroundDirection { horizontal, vertical, }; enum ItemBackgroundPosition { Invalid, Beginning, Middle, End, OnlyOne }; using DStyleOption::DStyleOption; using QStyleOption::QStyleOption; void init(QWidget *widget) override; BackgroundDirection direction; ItemBackgroundPosition position; QRect backgroundRect; }; class DPalettePrivate; class DPalette : public QPalette { public: enum ColorType { ItemBackground, TextTitle, TextTips, TextWarning, TextLively, NColorTypes }; DPalette(); DPalette(const QPalette &palette); ~DPalette(); static DPalette get(const QWidget *widget, const QPalette &base); static inline DPalette get(const QWidget *widget) { return get(widget, widget->palette()); } static void set(QWidget *widget, const DPalette &pa); static void setGeneric(const DPalette &pa); inline const QColor &color(ColorGroup cg, ColorType ct) const { return brush(cg, ct).color(); } const QBrush &brush(ColorGroup cg, ColorType ct) const; inline void setColor(ColorGroup cg, ColorType ct, const QColor &color) { setBrush(cg, ct, color); } inline void setColor(ColorType ct, const QColor &color) { setColor(All, ct, color); } inline void setBrush(ColorType ct, const QBrush &brush) { setBrush(All, ct, brush); } void setBrush(ColorGroup cg, ColorType ct, const QBrush &brush); inline const QColor &color(ColorType ct) const { return color(Current, ct); } inline const QBrush &brush(ColorType ct) const { return brush(Current, ct); } inline const QBrush &itemBackground() const { return brush(ItemBackground); } inline const QBrush &textTiele() const { return brush(TextTitle); } inline const QBrush &textTips() const { return brush(TextTips); } inline const QBrush &textWarning() const { return brush(TextWarning); } inline const QBrush &textLively() const { return brush(TextLively); } private: QSharedPointer d; }; class DFontSizeManagerPrivate; class DFontSizeManager { public: enum SizeType { T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NSizeTypes }; static DFontSizeManager *instance(); void bind(QWidget *widget, SizeType type); void unbind(QWidget *widget); quint16 fontPixelSize(SizeType type) const; void setFontPixelSize(SizeType type, quint16 size); void setFontGenericPixelSize(quint16 size); const QFont get(SizeType type, const QFont &base = QFont()) const; inline const QFont t1(const QFont &base = QFont()) const { return get(T1, base); } inline const QFont t2(const QFont &base = QFont()) const { return get(T2, base); } inline const QFont t3(const QFont &base = QFont()) const { return get(T3, base); } inline const QFont t4(const QFont &base = QFont()) const { return get(T4, base); } inline const QFont t5(const QFont &base = QFont()) const { return get(T5, base); } inline const QFont t6(const QFont &base = QFont()) const { return get(T6, base); } inline const QFont t7(const QFont &base = QFont()) const { return get(T7, base); } inline const QFont t8(const QFont &base = QFont()) const { return get(T8, base); } inline const QFont t9(const QFont &base = QFont()) const { return get(T9, base); } inline const QFont t10(const QFont &base = QFont()) const { return get(T10, base); } private: DFontSizeManager(); QScopedPointer d; }; DWIDGET_END_NAMESPACE #endif // DSTYLEOPTION_H dtkwidget-2.1.1/src/widgets/dsuggestbutton.cpp000066400000000000000000000016221352002233700215210ustar00rootroot00000000000000#include "dsuggestbutton.h" #include "dstyleoption.h" #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DSuggestButton * \~chinese \brief 这个控件提供了DTK中默认的按钮样式. */ /*! * \~chinese \brief DSuggestButton的构造函数 * * @param parent */ DSuggestButton::DSuggestButton(QWidget *parent) : QPushButton(parent) { } /*! * \~chinese \brief DSuggestButton的重载构造函数,接收默认显示的文字 * * @param text 默认显示的文字 * @param parent */ DSuggestButton::DSuggestButton(const QString &text, QWidget *parent) : QPushButton(text, parent) { } void DSuggestButton::paintEvent(QPaintEvent *event) { QStylePainter p(this); DStyleOptionSuggestButton option; initStyleOption(&option); option.init(this); p.drawControl(QStyle::CE_PushButton, option); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dsuggestbutton.h000066400000000000000000000024511352002233700211670ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSUGGESTBUTTON_H #define DSUGGESTBUTTON_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DSuggestButton : public QPushButton, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DSuggestButton(QWidget *parent = nullptr); explicit DSuggestButton(const QString &text, QWidget *parent = nullptr); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; }; DWIDGET_END_NAMESPACE #endif // DSUGGESTBUTTON_H dtkwidget-2.1.1/src/widgets/dswitchbutton.cpp000066400000000000000000000137351352002233700213510ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dswitchbutton.h" #include #include #include #include #include #include #include "dthememanager.h" #include "private/dswitchbutton_p.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DSwitchButton * \~english \brief The DSwitchButton class provides switch like widget. * * User can put the switch on/off the turn some feature on/off. * * It's inspired by UISwitch of Apple, * see https://developer.apple.com/documentation/uikit/uiswitch. */ /*! * \~english \brief DSwitchButton::DSwitchButton constructs an instance of DSwitchButton. * \~english \param parent is passed to QFrame constructor. */ /*! * \~chinese \class DSwitchButton * * \~chinese \brief DSwitchButton提供了切换样式的控件 * 用户可以打开和关闭一些功能 * * 受到Apple的切换按钮的影响,查看https://developer.apple.com/documentation/uikit/uiswitch. */ /*! * \~chinese \brief DSwitchButton的构造函数 * * @param parent */ DSwitchButton::DSwitchButton(QWidget *parent) : QFrame(parent), DObject(*new DSwitchButtonPrivate(this)) { setObjectName("DSwitchButton"); setMaximumSize(36, 20); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); DThemeManager::registerWidget(this); D_D(DSwitchButton); d->init(); connect(d->animation, &QVariantAnimation::valueChanged, [&]() { this->update(); }); } /*! * \~english \property DSwitchButton::checked * \~english \brief This property holds whether the switch is on or off. * * True if the switch is on, otherwise false. */ /*! * \~chinese \property DSwitchButton::checked * \~chinese \brief 这个属性保持开关是否打开或关闭 * * True是开启,反之False */ bool DSwitchButton::checked() const { D_DC(DSwitchButton); return d->checked; } QSize DSwitchButton::sizeHint() const { return maximumSize(); } /*! * \~chinese \property DSwitchButton::disabledBackground * * \~chinese \brief 这个属性保持了禁用状态的背景色 */ QColor DSwitchButton::disabledBackground() const { D_DC(DSwitchButton); return d->disabledBackground; } /*! * \~chinese \property DSwitchButton::enabledBackground * \~chinese \brief 这个属性保持启用状态的背景色 */ QColor DSwitchButton::enabledBackground() const { D_DC(DSwitchButton); return d->enabledBackground; } /*! * \~chinese \brief 设置开启状态 * * @param arg */ void DSwitchButton::setChecked(bool arg) { D_D(DSwitchButton); if (d->checked != arg) { d->checked = arg; if (arg) { d->animation->setStartValue(d->animationStartValue); d->animation->setEndValue(d->animationEndValue); } else { d->animation->setStartValue(d->animationEndValue); d->animation->setEndValue(d->animationStartValue); } d->animation->start(); Q_EMIT checkedChanged(arg); } } /*! * \~chinese \brief 设置启用状态的背景色 * * @param enabledBackground */ void DSwitchButton::setEnabledBackground(QColor enabledBackground) { D_D(DSwitchButton); d->enabledBackground = enabledBackground; } /*! * \~chinese \brief 设置禁用状态的背景色 * * @param disabledBackground */ void DSwitchButton::setDisabledBackground(QColor disabledBackground) { D_D(DSwitchButton); d->disabledBackground = disabledBackground; } void DSwitchButton::paintEvent(QPaintEvent *e) { Q_UNUSED(e); D_D(DSwitchButton); QColor frontground = Qt::white; QColor background = d->enabledBackground; if (d->checked) { background = d->checkedBackground; } if (!isEnabled()) { background.setAlpha(255 * 55 / 100); frontground.setAlpha(255 * 55 / 100); } QPainter p(this); p.setRenderHints(QPainter::Antialiasing); QPainterPath path; path.addRoundedRect(rect(), height() / 2.0, height() / 2.0); path.closeSubpath(); p.setClipPath(path); double indicatorX = 0; if (d->animation->state() == QVariantAnimation::Stopped) { if (!d->checked) { indicatorX = d->animationStartValue; } else { indicatorX = d->animationEndValue; } } else { indicatorX = d->animation->currentValue().toDouble(); } int moveWidth = width() - height(); int border = 1 * 1; int btSize = height() - border * 2; QRectF btRect(moveWidth * indicatorX + border, border, btSize, btSize); QPainterPath btPath; btPath.addRoundedRect(btRect, btSize / 2.0, btSize / 2.0); btPath.closeSubpath(); p.fillPath(path, background); p.fillPath(btPath, frontground); } // for ABI compatibilities' sake. void DSwitchButton::mousePressEvent(QMouseEvent *event) { QFrame::mousePressEvent(event); } void DSwitchButton::mouseReleaseEvent(QMouseEvent *e) { D_D(DSwitchButton); if (e->button() == Qt::LeftButton) { setChecked(!d->checked); e->accept(); } } DSwitchButtonPrivate::DSwitchButtonPrivate(DSwitchButton *qq) : DObjectPrivate(qq) { init(); } DSwitchButtonPrivate::~DSwitchButtonPrivate() { animation->deleteLater(); } void DSwitchButtonPrivate::init() { checked = false; animation = new QVariantAnimation; animationStartValue = 0; animationEndValue = 1; } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dswitchbutton.h000066400000000000000000000037461352002233700210170ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSWITCHBUTTON_H #define DSWITCHBUTTON_H #include #include #include #include #include "dtkwidget_global.h" #include "dobject.h" DWIDGET_BEGIN_NAMESPACE class DSwitchButtonPrivate; class LIBDTKWIDGETSHARED_EXPORT DSwitchButton : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY checkedChanged) Q_PROPERTY(QColor enabledBackground READ enabledBackground WRITE setEnabledBackground) Q_PROPERTY(QColor disabledBackground READ disabledBackground WRITE setDisabledBackground) public: explicit DSwitchButton(QWidget *parent = Q_NULLPTR); bool checked() const; QColor enabledBackground() const; QColor disabledBackground() const; QSize sizeHint() const Q_DECL_OVERRIDE; public Q_SLOTS: void setChecked(bool arg); void setEnabledBackground(QColor enabledBackground); void setDisabledBackground(QColor disabledBackground); Q_SIGNALS: void checkedChanged(bool arg); protected: void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DSwitchButton) }; DWIDGET_END_NAMESPACE #endif // DSWITCHBUTTON_H dtkwidget-2.1.1/src/widgets/dswitchlineexpand.cpp000066400000000000000000000104051352002233700221540ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dswitchlineexpand.h" #include "dthememanager.h" #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DSwitchHeaderLine * \~chinese \brief DSwitchHeaderLine 类用于提供 DSwitchLineExpand 的标题栏。 */ /*! * \~chinese \fn checkedChanged(bool arg) * \~chinese \brief 信号在控件开关状态发生改变时触发。 */ /*! * \~chinese \brief DSwitchHeaderLine::DSwitchHeaderLine 为 DSwitchHeaderLine 的构造函数。 * \~chinese \param parent 指定了控件的父控件。 * \~chinese * \~chinese 一般情况下,无需手动创建 DSwitchHeaderLine 对象。 */ DSwitchHeaderLine::DSwitchHeaderLine(QWidget *parent) : DHeaderLine(parent) { m_switchButton = new DSwitchButton(this); connect(m_switchButton, &DSwitchButton::checkedChanged, this, &DSwitchHeaderLine::checkedChanged); setContent(m_switchButton); } /*! * \~chinese \brief DSwitchHeaderLine::setExpand 用于设置控件的开关状态。 * \~chinese \param value 为指定的开关状态,true 为开, false 为关。 */ void DSwitchHeaderLine::setExpand(bool value) { m_switchButton->setChecked(value); } void DSwitchHeaderLine::mousePressEvent(QMouseEvent *) { m_switchButton->setChecked(!m_switchButton->checked()); // Q_EMIT mousePress(); } /*! * \~chinese \class DSwitchLineExpand * \~chinese \brief DSwitchLineExpand 类提供了一种通过开关按钮来展开/合上显示内容的控件。 * \~chinese 控件由标题栏和内容两部分组成,标题栏左侧显示控件标题,右侧显示一个开关控件, * \~chinese 用户通过点击右侧的开关控件,来控制标题栏下面的内容部分展开还是合上。 * \~chinese * \~chinese \image html switchlineexpand.png */ /*! * \~chinese \brief DSwitchLineExpand::DSwitchLineExpand 为 DSwitchLineExpand 类 * \~chinese 的构造函数。 * \~chinese \param parent 指定了控件的父控件。 */ DSwitchLineExpand::DSwitchLineExpand(QWidget *parent) : DBaseExpand(parent) { m_headerLine = new DSwitchHeaderLine(this); m_headerLine->setExpand(expand()); connect(m_headerLine, &DSwitchHeaderLine::checkedChanged, [ = ](bool arg) { DBaseExpand::setExpand(arg); }); setHeader(m_headerLine); } /*! * \~chinese \brief DSwitchLineExpand::setTitle 用于设置控件的标题。 * \~chinese \param title 为所要设置的标题。 */ void DSwitchLineExpand::setTitle(const QString &title) { m_headerLine->setTitle(title); } /*! * \~chinese \brief DSwitchLineExpand::setExpand 用于控制控件是否展开。 * \~chinese \param value 为所要设置的展开状态,true 为展开,false 为合上。 * \~chinese * \~chinese \note 这个函数同时会影响标题栏中开关按钮的状态。 */ void DSwitchLineExpand::setExpand(bool value) { //Header's arrow direction change here m_headerLine->setExpand(value); } /*! * \~chinese \brief DSwitchLineExpand::header 用来获取标题栏控件。 * \~chinese \return 标题栏控件。 */ DBaseLine *DSwitchLineExpand::header() { return m_headerLine; } /*! * \~chinese \brief DSwitchLineExpand::setHeader 用于自定义标题栏的内容。 * \~chinese \param header 为自定义的标题栏内容。 * \~chinese * \~chinese \note 自定义的内容用于替代原来的标题显示部分,右侧的开关按钮不受影响。 */ void DSwitchLineExpand::setHeader(QWidget *header) { DBaseExpand::setHeader(header); } void DSwitchLineExpand::resizeEvent(QResizeEvent *e) { m_headerLine->setFixedWidth(e->size().width()); DBaseExpand::resizeEvent(e); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dswitchlineexpand.h000066400000000000000000000032251352002233700216230ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSWITCHLINEEXPAND_H #define DSWITCHLINEEXPAND_H #include #include "dtkwidget_global.h" #include "dbaseexpand.h" #include "dswitchbutton.h" #include "dheaderline.h" DWIDGET_BEGIN_NAMESPACE class DSwitchHeaderLine : public DHeaderLine { Q_OBJECT public: DSwitchHeaderLine(QWidget *parent = 0); void setExpand(bool value); Q_SIGNALS: void checkedChanged(bool arg); protected: void mousePressEvent(QMouseEvent *); private: void reverseArrowDirection(); DSwitchButton *m_switchButton = NULL; }; class LIBDTKWIDGETSHARED_EXPORT DSwitchLineExpand : public DBaseExpand { Q_OBJECT public: explicit DSwitchLineExpand(QWidget *parent = 0); void setTitle(const QString &title); void setExpand(bool value); DBaseLine *header(); private: void setHeader(QWidget *header); void resizeEvent(QResizeEvent *e); private: DSwitchHeaderLine *m_headerLine = NULL; }; DWIDGET_END_NAMESPACE #endif // DSWITCHLINEEXPAND_H dtkwidget-2.1.1/src/widgets/dtabbar.cpp000066400000000000000000001567631352002233700200600ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtabbar.h" #include "dobject_p.h" #include "dimagebutton.h" #include "dthememanager.h" #include #include #include #include #include #include #include #include #include #include #include #define private public #define protected public #include #include #include #undef private #undef protected #include "dapplication.h" DWIDGET_BEGIN_NAMESPACE inline static bool verticalTabs(QTabBar::Shape shape) { return shape == QTabBar::RoundedWest || shape == QTabBar::RoundedEast || shape == QTabBar::TriangularWest || shape == QTabBar::TriangularEast; } class DMovableTabWidget : public QWidget { public: explicit DMovableTabWidget(QWidget *parent = Q_NULLPTR); void setPixmap(const QPixmap &pixmap); protected: void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE; private: QPixmap m_pixmap; }; DMovableTabWidget::DMovableTabWidget(QWidget *parent) : QWidget(parent) { } void DMovableTabWidget::setPixmap(const QPixmap &pixmap) { m_pixmap = pixmap; update(); } void DMovableTabWidget::paintEvent(QPaintEvent *e) { Q_UNUSED(e) QPainter pa(this); pa.drawPixmap(0, 0, m_pixmap); } class DTabBarAddButton : public QToolButton { public: explicit DTabBarAddButton(QWidget *parent) : QToolButton(parent) {} private: void paintEvent(QPaintEvent *event) override; }; void DTabBarAddButton::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QStylePainter p(this); QStyleOptionToolButton opt; initStyleOption(&opt); p.drawControl(static_cast(QStyle::CE_CustomBase + 1), opt); } class DTabBarPrivate : public QTabBar, public DObjectPrivate { Q_OBJECT D_DECLARE_PUBLIC(DTabBar) public: explicit DTabBarPrivate(DTabBar* qq) : QTabBar(qq) , DObjectPrivate(qq) { startDragDistance = qApp->startDragDistance(); maskColor = flashColor = QColor(0, 0, 255, 125); addButton = new DTabBarAddButton(qq); addButton->setObjectName("AddButton"); addButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); addButton->setFixedWidth(48); connect(addButton, &DTabBarAddButton::clicked, qq, &DTabBar::tabAddRequested); connect(this, &QTabBar::tabMoved, this, [this] (int from, int to) { tabMinimumSize.move(from, to); tabMaximumSize.move(from, to); if (dd()->validIndex(ghostTabIndex)) { if (from == ghostTabIndex) ghostTabIndex = to; else if (to == ghostTabIndex) ghostTabIndex = from; } }); setAcceptDrops(true); setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); leftScrollButton = new QToolButton(qq); rightScrollButton = new QToolButton(qq); leftScrollButton->setVisible(d->leftB->isVisible()); leftScrollButton->setAutoRepeat(true); leftScrollButton->setArrowType(Qt::LeftArrow); leftScrollButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); rightScrollButton->setVisible(d->rightB->isVisible()); rightScrollButton->setAutoRepeat(true); rightScrollButton->setArrowType(Qt::RightArrow); rightScrollButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); d->leftB->setFixedSize(0, 0); d->leftB->installEventFilter(this); d->rightB->setFixedSize(0, 0); d->rightB->installEventFilter(this); connect(leftScrollButton, &QToolButton::clicked, d->leftB, &QToolButton::click); connect(rightScrollButton, &QToolButton::clicked, d->rightB, &QToolButton::click); QHBoxLayout *layout = new QHBoxLayout(qq); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); layout->addWidget(leftScrollButton); layout->addWidget(rightScrollButton); layout->addWidget(this); layout->addWidget(addButton); layout->addStretch(); qq->setFocusProxy(this); connect(this, &DTabBarPrivate::currentChanged, qq, &DTabBar::currentChanged); connect(this, &DTabBarPrivate::tabCloseRequested, qq, &DTabBar::tabCloseRequested); connect(this, &DTabBarPrivate::tabMoved, qq, &DTabBar::tabMoved); connect(this, &DTabBarPrivate::tabBarClicked, qq, &DTabBar::tabBarClicked); connect(this, &DTabBarPrivate::tabBarDoubleClicked, qq, &DTabBar::tabBarDoubleClicked); } void moveTabOffset(int index, int offset) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (!d->validIndex(index)) return; d->tabList[index].dragOffset = offset; layoutTab(index); // Make buttons follow tab update(); } struct TabBarAnimation : public QVariantAnimation { TabBarAnimation(QTabBarPrivate::Tab *t, QTabBarPrivate *_priv, DTabBarPrivate *_dpriv) : tab(t), priv(_priv), dpriv(_dpriv) { setEasingCurve(QEasingCurve::InOutQuad); } void updateCurrentValue(const QVariant ¤t) Q_DECL_OVERRIDE { dpriv->moveTabOffset(priv->tabList.indexOf(*tab), current.toInt()); } void updateState(State, State newState) Q_DECL_OVERRIDE { if (newState == Stopped) dpriv->moveTabFinished(priv->tabList.indexOf(*tab)); } private: //these are needed for the callbacks QTabBarPrivate::Tab *tab; QTabBarPrivate *priv; DTabBarPrivate *dpriv; }; bool eventFilter(QObject *watched, QEvent *event) override; QSize minimumSizeHint() const override; void paintEvent(QPaintEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; void dragEnterEvent(QDragEnterEvent *e) override; void dragLeaveEvent(QDragLeaveEvent *e) override; void dragMoveEvent(QDragMoveEvent *e) override; void dropEvent(QDropEvent *e) override; void showEvent(QShowEvent *e) override; QSize tabSizeHint(int index) const override; QSize minimumTabSizeHint(int index) const override; void tabInserted(int index) override; void tabRemoved(int index) override; void tabLayoutChange() override; void initStyleOption(QStyleOptionTab *option, int tabIndex) const; QTabBarPrivate *dd() const; Q_SLOT void startDrag(int tabIndex); void setupMovableTab(); void updateMoveingTabPosition(const QPoint &mouse); void setupDragableTab(); void slide(int from, int to); void layoutTab(int index); void moveTabFinished(int index); void layoutWidgets(int start = 0); void makeVisible(int index); void autoScrollTabs(const QPoint &mouse); void stopAutoScrollTabs(); void ensureScrollTabsAnimation(); void startTabFlash(); void setDragingFromOther(bool v); int tabInsertIndexFromMouse(QPoint pos); void startMove(int index); void stopMove(); QList tabMinimumSize; QList tabMaximumSize; bool visibleAddButton = true; DTabBarAddButton *addButton; QPointer drag; bool dragable = false; int startDragDistance; // 有从其它地方drag过来的标签页需要处理 bool dragingFromOther = false; // 记录当前drag过来的对象是否可以当做新标签页插入 bool canInsertFromDrag = false; // 为true忽略drag move事件 bool ignoreDragEvent = false; QColor maskColor; QColor flashColor; // 要闪动绘制的Tab qreal opacityOnFlash = 1; int flashTabIndex = -1; QToolButton *leftScrollButton; QToolButton *rightScrollButton; class FullWidget : public QWidget { public: explicit FullWidget(QWidget *parent = 0) : QWidget(parent) {} void paintEvent(QPaintEvent *) override { QPainter pa(this); pa.fillRect(rect(), color); } QColor color; } *topFullWidget = nullptr; QVariantAnimation *scrollTabAnimation = nullptr; // 备份启动tab move时的QTabBarPrivate中的这两个值 int scrollOffset; QPoint dragStartPosition; int ghostTabIndex = -1; }; void DTabBarPrivate::startDrag(int tabIndex) { Qt::DropAction action = drag->exec(Qt::MoveAction | Qt::CopyAction, Qt::CopyAction); Q_EMIT q_func()->dragEnd(action); if (action == Qt::IgnoreAction) { Q_EMIT q_func()->tabReleaseRequested(tabIndex); } else if (drag->target() != this) { if (DTabBarPrivate *tbp = qobject_cast(drag->target())) Q_EMIT q_func()->tabDroped(tabIndex, action, tbp->q_func()); else Q_EMIT q_func()->tabDroped(tabIndex, action, drag->target()); } drag->setProperty("_d_DTabBarPrivate_drity", true); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); // Be safe! if (d->dragInProgress && d->pressedIndex != -1) { d->hoverRect = QRect(); moveTabFinished(d->pressedIndex); } } void DTabBarPrivate::setupMovableTab() { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (!d->movingTab) d->movingTab = reinterpret_cast(new DMovableTabWidget(this)); int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0, this); QRect grabRect = tabRect(d->pressedIndex); grabRect.adjust(-taboverlap, 0, taboverlap, 0); QPixmap grabImage(grabRect.size() * devicePixelRatioF()); grabImage.setDevicePixelRatio(devicePixelRatioF()); grabImage.fill(Qt::transparent); QPainter p(&grabImage); p.initFrom(this); QStyleOptionTab tab; initStyleOption(&tab, d->pressedIndex); tab.rect.moveTopLeft(QPoint(taboverlap, 0)); q_func()->paintTab(&p, d->pressedIndex, tab); reinterpret_cast(d->movingTab)->setPixmap(grabImage); d->movingTab->setGeometry(grabRect); d->movingTab->raise(); // Re-arrange widget order to avoid overlaps if (d->tabList[d->pressedIndex].leftWidget) d->tabList[d->pressedIndex].leftWidget->raise(); if (d->tabList[d->pressedIndex].rightWidget) d->tabList[d->pressedIndex].rightWidget->raise(); if (d->leftB) d->leftB->raise(); if (d->rightB) d->rightB->raise(); d->movingTab->setVisible(true); } void DTabBarPrivate::updateMoveingTabPosition(const QPoint &mouse) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); bool vertical = verticalTabs(d->shape); int dragDistance; if (vertical) { dragDistance = (mouse.y() - d->dragStartPosition.y()); } else { dragDistance = (mouse.x() - d->dragStartPosition.x()); } if (!(d->pressedIndex == 0 && dragDistance < 0) && !(d->pressedIndex == d->tabList.count() - 1 && dragDistance > 0)) { d->tabList[d->pressedIndex].dragOffset = dragDistance; } else { d->tabList[d->pressedIndex].dragOffset = 0; } QRect startingRect = tabRect(d->pressedIndex); if (vertical) startingRect.moveTop(startingRect.y() + dragDistance); else startingRect.moveLeft(startingRect.x() + dragDistance); int overIndex; if (dragDistance < 0) overIndex = tabAt(startingRect.topLeft()); else overIndex = tabAt(startingRect.topRight()); if (overIndex != d->pressedIndex && overIndex != -1) { int offset = 1; if (isRightToLeft() && !vertical) offset *= -1; if (dragDistance < 0) { dragDistance *= -1; offset *= -1; } for (int i = d->pressedIndex; offset > 0 ? i < overIndex : i > overIndex; i += offset) { QRect overIndexRect = tabRect(overIndex); int needsToBeOver = (vertical ? overIndexRect.height() : overIndexRect.width()) / 2; if (dragDistance > needsToBeOver) { slide(i + offset, d->pressedIndex); } } } // Buttons needs to follow the dragged tab layoutTab(d->pressedIndex); update(); } void DTabBarPrivate::setupDragableTab() { if (!dragable) return; D_Q(DTabBar); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); QStyleOptionTab opt; initStyleOption(&opt, d->pressedIndex); QMimeData *mime_data = q->createMimeDataFromTab(d->pressedIndex, opt); if (!mime_data) return; if (drag) drag->deleteLater(); drag = new QDrag(this); QPoint hotspot = drag->hotSpot(); const QPixmap &grabImage = q->createDragPixmapFromTab(d->pressedIndex, opt, &hotspot); drag->setPixmap(grabImage); drag->setMimeData(mime_data); drag->setHotSpot(hotspot); qRegisterMetaType(); QMetaObject::invokeMethod(this, "startDrag", Qt::QueuedConnection, Q_ARG(int, d->pressedIndex)); QMetaObject::invokeMethod(q, "dragStarted", Qt::QueuedConnection); QMetaObject::invokeMethod(q, "dragActionChanged", Qt::QueuedConnection, Q_ARG(Qt::DropAction, Qt::IgnoreAction)); connect(drag, &QDrag::actionChanged, q, &DTabBar::dragActionChanged); } void DTabBarPrivate::slide(int from, int to) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (from == to || !d->validIndex(from) || !d->validIndex(to)) return; bool vertical = verticalTabs(d->shape); int preLocation = vertical ? tabRect(from).y() : tabRect(from).x(); setUpdatesEnabled(false); moveTab(from, to); setUpdatesEnabled(true); int postLocation = vertical ? tabRect(to).y() : tabRect(to).x(); int length = postLocation - preLocation; d->tabList[to].dragOffset -= length; if (!d->isAnimated()) { moveTabFinished(to); return; } QTabBarPrivate::Tab *tab = &d->tabList[to]; if (!tab->animation) tab->animation = reinterpret_cast(new TabBarAnimation(tab, d, this)); tab->animation->setStartValue(tab->dragOffset); tab->animation->setEndValue(0); tab->animation->setEasingCurve(QEasingCurve::OutCubic); tab->animation->setDuration(ANIMATION_DURATION); tab->animation->start(); } void DTabBarPrivate::layoutTab(int index) { Q_ASSERT(index >= 0); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); QTabBarPrivate::Tab &tab = d->tabList[index]; bool vertical = verticalTabs(d->shape); if (!(tab.leftWidget || tab.rightWidget)) return; QStyleOptionTab opt; initStyleOption(&opt, index); if (tab.leftWidget) { QRect rect = style()->subElementRect(QStyle::SE_TabBarTabLeftButton, &opt, this); QPoint p = rect.topLeft(); if ((index == d->pressedIndex) || d->paintWithOffsets) { if (vertical) p.setY(p.y() + d->tabList[index].dragOffset); else p.setX(p.x() + d->tabList[index].dragOffset); } tab.leftWidget->move(p); } if (tab.rightWidget) { QRect rect = style()->subElementRect(QStyle::SE_TabBarTabRightButton, &opt, this); QPoint p = rect.topLeft(); if ((index == d->pressedIndex) || d->paintWithOffsets) { if (vertical) p.setY(p.y() + tab.dragOffset); else p.setX(p.x() + tab.dragOffset); } tab.rightWidget->move(p); } } void DTabBarPrivate::moveTabFinished(int index) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); bool cleanup = (d->pressedIndex == index) || (d->pressedIndex == -1) || !d->validIndex(index); bool allAnimationsFinished = true; #ifndef QT_NO_ANIMATION for(int i = 0; allAnimationsFinished && i < d->tabList.count(); ++i) { const QTabBarPrivate::Tab &t = d->tabList.at(i); if (t.animation && t.animation->state() == QAbstractAnimation::Running) allAnimationsFinished = false; } #endif //QT_NO_ANIMATION if (allAnimationsFinished && cleanup) { if(d->movingTab) d->movingTab->setVisible(false); // We might not get a mouse release for (int i = 0; i < d->tabList.count(); ++i) { d->tabList[i].dragOffset = 0; } if (d->pressedIndex != -1 && d->movable) { d->pressedIndex = -1; d->dragInProgress = false; d->dragStartPosition = QPoint(); } layoutWidgets(); } else { if (!d->validIndex(index)) return; d->tabList[index].dragOffset = 0; } update(); } void DTabBarPrivate::layoutWidgets(int start) { for (int i = start; i < count(); ++i) { layoutTab(i); } } void DTabBarPrivate::makeVisible(int index) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (!d->validIndex(index)) return; const QRect tabRect = d->tabList.at(index).rect; const int oldScrollOffset = d->scrollOffset; const bool horiz = !verticalTabs(d->shape); const int extra_width = 2 * qMax(style()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, 0, this), QApplication::globalStrut().width()); const int available = (horiz ? width() : height()) - extra_width; const int start = horiz ? tabRect.left() : tabRect.top(); const int end = horiz ? tabRect.right() : tabRect.bottom(); if (start < d->scrollOffset) // too far left d->scrollOffset = start - (index ? 8 : 0); else if (end > d->scrollOffset + available) // too far right d->scrollOffset = end - available + 1; d->leftB->setEnabled(d->scrollOffset > 0); const int last = horiz ? d->tabList.last().rect.right() : d->tabList.last().rect.bottom(); d->rightB->setEnabled(last - d->scrollOffset >= available); if (oldScrollOffset != d->scrollOffset) { layoutWidgets(); } } void DTabBarPrivate::autoScrollTabs(const QPoint &mouse) { const QRect &rect = this->rect(); if (!rect.contains(mouse)) { return stopAutoScrollTabs(); } QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); bool vertical = verticalTabs(d->shape); const QSize &size_hint = this->sizeHint(); int scroll_distance = qMin(50, vertical ? rect.height() / 3 : rect.width() / 3); int start = 0; int end = 0; int scroll_end = 0; int scroll_speed = 0; if (vertical) { end = size_hint.height() - rect.height(); if (mouse.y() < scroll_distance) { if (d->scrollOffset <= start) return; // to up scroll_end = start; scroll_speed = mouse.y(); } else if (mouse.y() > rect.height() - scroll_distance) { if (d->scrollOffset >= end) return; // to down scroll_end = end; scroll_speed = rect.height() - mouse.y(); } else { return stopAutoScrollTabs(); } } else { end = size_hint.width() - rect.width(); if (mouse.x() < scroll_distance) { if (d->scrollOffset <= start) return; // to left scroll_end = start; scroll_speed = mouse.x(); } else if (mouse.x() > rect.width() - scroll_distance) { if (d->scrollOffset >= end) return; // to right scroll_end = end; scroll_speed = rect.width() - mouse.x(); } else { return stopAutoScrollTabs(); } } ensureScrollTabsAnimation(); if (scrollTabAnimation->state() == QVariantAnimation::Running) scrollTabAnimation->stop(); scrollTabAnimation->setDuration(qreal(qMax(qAbs(scroll_speed), 10)) / scroll_distance * (qAbs(scroll_end - d->scrollOffset) / 150) * 1000); scrollTabAnimation->setStartValue(d->scrollOffset); scrollTabAnimation->setEndValue(scroll_end); scrollTabAnimation->start(); } void DTabBarPrivate::stopAutoScrollTabs() { if (!scrollTabAnimation) return; scrollTabAnimation->stop(); scrollTabAnimation->deleteLater(); scrollTabAnimation = nullptr; } void DTabBarPrivate::ensureScrollTabsAnimation() { if (scrollTabAnimation) { return; } scrollTabAnimation = new QVariantAnimation(this); connect(scrollTabAnimation, &QVariantAnimation::valueChanged, this, [this] (const QVariant &value) { if (scrollTabAnimation->state() != QVariantAnimation::Running) return; bool ok = false; int v = value.toInt(&ok); if (!ok) return; QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); d->scrollOffset = v; if (d->dragInProgress && d->validIndex(d->pressedIndex)) { if (verticalTabs(d->shape)) { d->dragStartPosition.setY(dragStartPosition.y() + scrollOffset - v); } else { d->dragStartPosition.setX(dragStartPosition.x() + scrollOffset - v); } const QPoint bak_dragStartPosition = d->dragStartPosition; updateMoveingTabPosition(mapFromGlobal(QCursor::pos())); if (bak_dragStartPosition != d->dragStartPosition) { dragStartPosition = d->dragStartPosition; scrollOffset = d->scrollOffset; } } else { layoutWidgets(); update(); } }); connect(scrollTabAnimation, &QVariantAnimation::finished, this, [this] { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); d->leftB->setEnabled(d->scrollOffset > 0); d->rightB->setEnabled(d->scrollOffset < sizeHint().width() - width()); }); } void DTabBarPrivate::startTabFlash() { QVariantAnimation *animation = new QVariantAnimation(this); animation->setStartValue(1.0); animation->setEndValue(0.0); animation->setDuration(500); animation->setLoopCount(3); connect(animation, &QVariantAnimation::valueChanged, this, [this] (const QVariant &v) { opacityOnFlash = v.toReal(); update(); }); connect(animation, &QVariantAnimation::finished, this, [this, animation] { animation->deleteLater(); flashTabIndex = -1; }); connect(animation, &QVariantAnimation::currentLoopChanged, this, [animation] (int loop) { if (loop % 2) { animation->setStartValue(1.0); animation->setEndValue(0.0); } else { animation->setStartValue(0.0); animation->setEndValue(1.0); } }); animation->start(); } void DTabBarPrivate::setDragingFromOther(bool v) { if (v == dragingFromOther) return; dragingFromOther = v; if (!v) { if (topFullWidget) { topFullWidget->hide(); topFullWidget->deleteLater(); topFullWidget = nullptr; } return; } D_Q(DTabBar); if (!topFullWidget) topFullWidget = new FullWidget(q); topFullWidget->color = maskColor; topFullWidget->resize(q->size()); topFullWidget->show(); topFullWidget->raise(); } int DTabBarPrivate::tabInsertIndexFromMouse(QPoint pos) { if (pos.y() == height()) pos.setY(pos.y() - 1); if (pos.x() == width()) pos.setX(pos.x() - 1); int current = tabAt(pos); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); bool vertical = verticalTabs(this->shape()); if (!d->validIndex(current)){ if (vertical) current = pos.y() >= height() ? count() - 1 : 0; else current = pos.x() >= width() ? count() - 1 : 0; } const QRect ¤t_rect = tabRect(current); const QPoint ¢er = current_rect.center(); if (vertical) { return pos.y() <= center.y() ? current : current + 1; } else { return pos.x() <= center.x() ? current : current + 1; } } void DTabBarPrivate::startMove(int index) { if (dd()->dragInProgress) return; dd()->pressedIndex = index; makeVisible(index); const QRect &index_rect = tabRect(index); dd()->dragStartPosition = index_rect.center(); QVariantAnimation *mouse_animation = new QVariantAnimation(this); mouse_animation->setDuration(100); mouse_animation->setEasingCurve(QEasingCurve::OutSine); mouse_animation->setStartValue(QCursor::pos()); mouse_animation->setEndValue(mapToGlobal(index_rect.center())); connect(mouse_animation, &QVariantAnimation::valueChanged, this, [] (const QVariant &value) { const QPoint pos = value.toPoint(); QCursor::setPos(pos.x(), pos.y()); }); connect(mouse_animation, &QVariantAnimation::finished, this, [this, mouse_animation] { mouse_animation->deleteLater(); ignoreDragEvent = false; }); ignoreDragEvent = true; mouse_animation->start(); } void DTabBarPrivate::stopMove() { QMouseEvent event(QEvent::MouseButtonRelease, mapFromGlobal(QCursor::pos()), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); bool movable = isMovable(); setMovable(true); mouseReleaseEvent(&event); setMovable(movable); } bool DTabBarPrivate::eventFilter(QObject *watched, QEvent *event) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (watched == d->leftB) { switch (event->type()) { case QEvent::Show: leftScrollButton->show(); break; case QEvent::Hide: leftScrollButton->hide(); break; case QEvent::EnabledChange: leftScrollButton->setEnabled(d->leftB->isEnabled()); break; case QEvent::UpdateRequest: leftScrollButton->setArrowType(d->leftB->arrowType()); break; default: break; } } else if (watched == d->rightB) { switch (event->type()) { case QEvent::Show: rightScrollButton->show(); // ###(zccrs): 当主窗口从最大化还原后,此button的大小会被布局改为 0x40 (原因不明) QTimer::singleShot(100, rightScrollButton, [this] { rightScrollButton->resize(rightScrollButton->sizeHint().width(), rightScrollButton->height()); }); break; case QEvent::Hide: rightScrollButton->hide(); break; case QEvent::EnabledChange: rightScrollButton->setEnabled(d->rightB->isEnabled()); break; case QEvent::UpdateRequest: rightScrollButton->setArrowType(d->rightB->arrowType()); break; default: break; } } return QTabBar::eventFilter(watched, event); } QSize DTabBarPrivate::minimumSizeHint() const { const QSize &hint = sizeHint(); QSize size = QTabBar::minimumSizeHint(); size.setWidth(qMin(size.width(), hint.width())); size.setHeight(qMin(size.height(), hint.height())); return size; } void DTabBarPrivate::paintEvent(QPaintEvent *e) { Q_UNUSED(e) D_Q(DTabBar); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); QStyleOptionTabBarBase optTabBase; QTabBarPrivate::initStyleBaseOption(&optTabBase, this, size()); QStylePainter p(this); int selected = -1; // int cut = -1; // bool rtl = optTabBase.direction == Qt::RightToLeft; bool vertical = verticalTabs(d->shape); // QStyleOptionTab cutTab; selected = d->currentIndex; if (d->dragInProgress) selected = d->pressedIndex; for (int i = 0; i < d->tabList.count(); ++i) optTabBase.tabBarRect |= tabRect(i); optTabBase.selectedTabRect = tabRect(selected); if (d->drawBase) p.drawPrimitive(QStyle::PE_FrameTabBarBase, optTabBase); for (int i = 0; i < d->tabList.count(); ++i) { QStyleOptionTab tab; initStyleOption(&tab, i); // 强制让文本居中 tab.rightButtonSize = QSize(); if (d->paintWithOffsets && d->tabList[i].dragOffset != 0) { if (vertical) { tab.rect.moveTop(tab.rect.y() + d->tabList[i].dragOffset); } else { tab.rect.moveLeft(tab.rect.x() + d->tabList[i].dragOffset); } } if (!(tab.state & QStyle::State_Enabled)) { tab.palette.setCurrentColorGroup(QPalette::Disabled); } // If this tab is partially obscured, make a note of it so that we can pass the information // along when we draw the tear. // if (((!vertical && (!rtl && tab.rect.left() < 0)) || (rtl && tab.rect.right() > width())) // || (vertical && tab.rect.top() < 0)) { // cut = i; // cutTab = tab; // } // Don't bother drawing a tab if the entire tab is outside of the visible tab bar. if ((!vertical && (tab.rect.right() < 0 || tab.rect.left() > width())) || (vertical && (tab.rect.bottom() < 0 || tab.rect.top() > height()))) continue; optTabBase.tabBarRect |= tab.rect; if (i == selected) continue; q->paintTab(&p, i, tab); if (i == flashTabIndex) { p.setOpacity(opacityOnFlash); p.fillRect(tab.rect, flashColor); p.setOpacity(1); } } // Draw the selected tab last to get it "on top" if (selected >= 0) { QStyleOptionTab tab; initStyleOption(&tab, selected); // 强制让文本居中 tab.rightButtonSize = QSize(); if (d->paintWithOffsets && d->tabList[selected].dragOffset != 0) { if (vertical) { tab.rect.moveTop(tab.rect.y() + d->tabList[selected].dragOffset); } else { tab.rect.moveLeft(tab.rect.x() + d->tabList[selected].dragOffset); } } if (!d->dragInProgress) { q->paintTab(&p, selected, tab); if (selected == flashTabIndex) { p.setOpacity(opacityOnFlash); p.fillRect(tab.rect, flashColor); p.setOpacity(1); } } else { int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0, this); d->movingTab->setGeometry(tab.rect.adjusted(-taboverlap, 0, taboverlap, 0)); } } // Only draw the tear indicator if necessary. Most of the time we don't need too. // if (d->leftB->isVisible() && cut >= 0) { // cutTab.rect = rect(); // cutTab.rect = style()->subElementRect(QStyle::SE_TabBarTearIndicator, &cutTab, this); // p.drawPrimitive(QStyle::PE_IndicatorTabTear, cutTab); // } } void DTabBarPrivate::mouseMoveEvent(QMouseEvent *event) { QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); if (!d->movable && !d->validIndex(ghostTabIndex)) return; // Be safe! if (d->pressedIndex != -1 && event->buttons() == Qt::NoButton) moveTabFinished(d->pressedIndex); int offset_x = qAbs(event->x() - d->dragStartPosition.x()); int offset_y = qAbs(event->y() - d->dragStartPosition.y()); bool valid_pressed_index = d->validIndex(d->pressedIndex); if (verticalTabs(d->shape)) { std::swap(offset_x, offset_y); } // Start drag if (drag && drag->property("_d_DTabBarPrivate_drity").toBool()) { drag->deleteLater(); } if (!drag && valid_pressed_index) { if (offset_y > startDragDistance && !d->validIndex(ghostTabIndex)) { setupDragableTab(); } } // Start move if (!d->dragInProgress && valid_pressed_index) { if (offset_x > startDragDistance) { d->dragInProgress = true; setupMovableTab(); scrollOffset = d->scrollOffset; dragStartPosition = d->dragStartPosition; } } if (event->buttons() == Qt::LeftButton // 此条件会导致横向拖动时卡顿 // && offset_x > startDragDistance && valid_pressed_index) { updateMoveingTabPosition(event->pos()); scrollOffset = d->scrollOffset; dragStartPosition = d->dragStartPosition; // Auto scroll tabs autoScrollTabs(event->pos()); } } void DTabBarPrivate::mouseReleaseEvent(QMouseEvent *e) { QTabBar::mouseReleaseEvent(e); stopAutoScrollTabs(); } void DTabBarPrivate::dragEnterEvent(QDragEnterEvent *e) { if (e->source() == this) { e->acceptProposedAction(); QMouseEvent event(QEvent::MouseMove, e->posF(), Qt::LeftButton, e->mouseButtons(), e->keyboardModifiers()); mouseMoveEvent(&event); } else { int index = tabInsertIndexFromMouse(e->pos()); if (q_func()->canInsertFromMimeData(index, e->mimeData())) { setDragingFromOther(true); e->acceptProposedAction(); } } } void DTabBarPrivate::dragLeaveEvent(QDragLeaveEvent *e) { setDragingFromOther(false); stopAutoScrollTabs(); QTabBar::dragLeaveEvent(e); QTabBarPrivate *d = reinterpret_cast(qGetPtrHelper(d_ptr)); // clean hover state d->hoverRect = QRect(); } void DTabBarPrivate::dragMoveEvent(QDragMoveEvent *e) { if (e->source() == this) { e->acceptProposedAction(); QMouseEvent event(QEvent::MouseMove, e->posF(), Qt::LeftButton, e->mouseButtons(), e->keyboardModifiers()); mouseMoveEvent(&event); } else { autoScrollTabs(e->pos()); int index = tabInsertIndexFromMouse(e->pos()); if (q_func()->canInsertFromMimeData(index, e->mimeData())) { setDragingFromOther(true); e->acceptProposedAction(); } } } void DTabBarPrivate::dropEvent(QDropEvent *e) { if (e->source() == this) { e->acceptProposedAction(); QMouseEvent event(QEvent::MouseButtonRelease, e->posF(), Qt::LeftButton, e->mouseButtons(), e->keyboardModifiers()); mouseReleaseEvent(&event); } else { setDragingFromOther(false); int index = tabInsertIndexFromMouse(e->pos()); if (q_func()->canInsertFromMimeData(index, e->mimeData())) { e->acceptProposedAction(); e->setDropAction(Qt::MoveAction); q_func()->insertFromMimeData(index, e->mimeData()); } } stopAutoScrollTabs(); } void DTabBarPrivate::showEvent(QShowEvent *e) { updateGeometry(); QTabBar::showEvent(e); } QSize DTabBarPrivate::tabSizeHint(int index) const { D_QC(DTabBar); if (qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1)) return q->tabSizeHint(index); return q->DTabBar::tabSizeHint(index); } QSize DTabBarPrivate::minimumTabSizeHint(int index) const { D_QC(DTabBar); const QSize &min = qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1) ? q->minimumTabSizeHint(index) : q->DTabBar::minimumTabSizeHint(index); if (min.isValid()) return min; QSize size = QTabBar::tabSizeHint(index); const QSize &max = qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1) ? q->maximumTabSizeHint(index) : q->DTabBar::maximumTabSizeHint(index); if (max.isValid()) { size.setWidth(qMin(size.width(), max.width())); size.setHeight(qMin(size.height(), max.height())); } return size; } void DTabBarPrivate::tabInserted(int index) { D_Q(DTabBar); if (qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1)) q->tabInserted(index); else q->DTabBar::tabInserted(index); } void DTabBarPrivate::tabRemoved(int index) { D_Q(DTabBar); if (qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1)) q->tabRemoved(index); else q->DTabBar::tabRemoved(index); } void DTabBarPrivate::tabLayoutChange() { D_Q(DTabBar); if (qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1)) q->tabLayoutChange(); else q->DTabBar::tabLayoutChange(); } void DTabBarPrivate::initStyleOption(QStyleOptionTab *option, int tabIndex) const { QTabBar::initStyleOption(option, tabIndex); } QTabBarPrivate *DTabBarPrivate::dd() const { return reinterpret_cast(qGetPtrHelper(d_ptr)); } /*! * \~chinese \class DTabBar * \~chinese \brief DTabBar 是一个标签栏控件,是在 QTabBar 基础之上进行扩展增强。 * * \~chinese 增加了许多特性,比如:新建按钮,支持向外拖放事件...该控件目前被深度编辑器中所使用。 */ /*! * \~chinese \fn DTabBar::currentChanged() * \~chinese \brief 当前索引位置改变 * \~chinese \fn DTabBar::tabCloseRequested() * \~chinese \brief 点击关闭后发出 * \~chinese \fn DTabBar::tabMoved() * \~chinese \brief 索引位置发生变化 * \~chinese \fn DTabBar::tabIsInserted() * \~chinese \brief 新标签已插入 * \~chinese \fn DTabBar::tabIsRemoved() * \~chinese \brief 标签已删除 * \~chinese \fn DTabBar::tabBarClicked() * \~chinese \brief 点击索引标签 * \~chinese \fn DTabBar::tabBarDoubleClicked() * \~chinese \brief 双击索引标签 * \~chinese \fn DTabBar::tabAddRequested() * \~chinese \brief 新标签加入 * \~chinese \fn DTabBar::tabReleaseRequested() * \~chinese \brief 索引标签鼠标释放 * \~chinese \fn DTabBar::dragActionChanged() * \~chinese \brief 鼠标形状发生变化 * \~chinese \fn DTabBar::tabDroped() * \~chinese \brief 标签拖放 * \~chinese \fn DTabBar::dragStarted() * \~chinese \brief 开始拖起 * \~chinese \fn DTabBar::dragEnd() * \~chinese \brief 拖放结束 */ DTabBar::DTabBar(QWidget *parent) : QWidget(parent) , DObject(*new DTabBarPrivate(this)) { setAcceptDrops(true); } /*! * \~chinese \brief 设置索引标签的最小尺寸 */ void DTabBar::setTabMinimumSize(int index, const QSize &size) { D_D(DTabBar); if (d->tabMinimumSize.at(index) == size) return; d->tabMinimumSize[index] = size; QTabBarPrivate *dd = reinterpret_cast(qGetPtrHelper(d->d_ptr)); dd->layoutDirty = true; } /*! * \~chinese \brief 设置索引标签的最大尺寸 */ void DTabBar::setTabMaximumSize(int index, const QSize &size) { D_D(DTabBar); if (d->tabMaximumSize.at(index) == size) return; d->tabMaximumSize[index] = size; QTabBarPrivate *dd = reinterpret_cast(qGetPtrHelper(d->d_ptr)); dd->layoutDirty = true; } /*! * \~chinese \brief 新建标签栏按钮是否可见 */ bool DTabBar::visibleAddButton() const { D_DC(DTabBar); return d->visibleAddButton; } /*! * \~chinese \brief 标签栏形状 */ QTabBar::Shape DTabBar::shape() const { return d_func()->shape(); } /*! * \~chinese \brief 设置标签栏形状 */ void DTabBar::setShape(QTabBar::Shape shape) { D_D(DTabBar); bool old_vertical = verticalTabs(d_func()->shape()); bool new_vertical = verticalTabs(shape); d->setShape(shape); if (old_vertical != new_vertical) { if (QBoxLayout *layout = qobject_cast(this->layout())) { if (new_vertical) layout->setDirection(QBoxLayout::TopToBottom); else layout->setDirection(QBoxLayout::LeftToRight); } if (new_vertical) { d->leftScrollButton->setArrowType(Qt::UpArrow); d->rightScrollButton->setArrowType(Qt::DownArrow); d->leftScrollButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); d->rightScrollButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); d->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); d->addButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); d->addButton->setFixedHeight(48); d->addButton->setMinimumWidth(0); d->addButton->setMaximumWidth(9999); } else { d->leftScrollButton->setArrowType(Qt::LeftArrow); d->rightScrollButton->setArrowType(Qt::RightArrow); d->leftScrollButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); d->rightScrollButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); d->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding); d->addButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); d->addButton->setFixedWidth(48); d->addButton->setMinimumHeight(0); d->addButton->setMaximumHeight(9999); } } } /*! * \~chinese \brief 添加一个新的标签,返回新标签的索引 */ int DTabBar::addTab(const QString &text) { return d_func()->addTab(text); } /*! * \~chinese \brief 添加一个新的标签,包含图标、文本 */ int DTabBar::addTab(const QIcon &icon, const QString &text) { return d_func()->addTab(icon, text); } /*! * \~chinese \brief 插入一个文本标签 */ int DTabBar::insertTab(int index, const QString &text) { return d_func()->insertTab(index, text); } /*! * \~chinese \brief 插入一个图标文本标签 */ int DTabBar::insertTab(int index, const QIcon &icon, const QString &text) { return insertTab(index, icon, text); } /*! * \~chinese \brief 移除标签索引位置 */ void DTabBar::removeTab(int index) { d_func()->removeTab(index); } /*! * \~chinese \brief 移动标签索引位置 */ void DTabBar::moveTab(int from, int to) { d_func()->moveTab(from, to); } /*! * \~chinese \brief 是否启用标签索引位置 */ bool DTabBar::isTabEnabled(int index) const { return d_func()->isTabEnabled(index); } /*! * \~chinese \brief 设置标签索引位置启用状态 */ void DTabBar::setTabEnabled(int index, bool enable) { d_func()->setTabEnabled(index, enable); } /*! * \~chinese \brief 返回标签索引位置文本 */ QString DTabBar::tabText(int index) const { return d_func()->tabText(index); } /*! * \~chinese \brief 设置标签索引位置文本 */ void DTabBar::setTabText(int index, const QString &text) { d_func()->setTabText(index, text); } /*! * \~chinese \brief 返回标签索引位置图标 */ QIcon DTabBar::tabIcon(int index) const { return d_func()->tabIcon(index); } /*! * \~chinese \brief 设置标签索引位置图标 */ void DTabBar::setTabIcon(int index, const QIcon &icon) { d_func()->setTabIcon(index, icon); } /*! * \~chinese \brief 缩略模式 */ Qt::TextElideMode DTabBar::elideMode() const { return d_func()->elideMode(); } /*! * \~chinese \brief 设置缩略模式 */ void DTabBar::setElideMode(Qt::TextElideMode mode) { d_func()->setElideMode(mode); } #ifndef QT_NO_TOOLTIP /*! * \~chinese \brief 设置标签索引位置提示文本 */ void DTabBar::setTabToolTip(int index, const QString &tip) { d_func()->setTabToolTip(index, tip); } /*! * \~chinese \brief 返回标签索引位置提示文本 */ QString DTabBar::tabToolTip(int index) const { return d_func()->tabToolTip(index); } #endif #ifndef QT_NO_WHATSTHIS void DTabBar::setTabWhatsThis(int index, const QString &text) { d_func()->setTabWhatsThis(index, text); } QString DTabBar::tabWhatsThis(int index) const { return d_func()->tabWhatsThis(index); } #endif /*! * \~chinese \brief 设置标签索引位置数据 */ void DTabBar::setTabData(int index, const QVariant &data) { d_func()->setTabData(index, data); } /*! * \~chinese \brief 返回标签索引位置数据 */ QVariant DTabBar::tabData(int index) const { return d_func()->tabData(index); } /*! * \~chinese \brief 返回标签索引位置矩形 */ QRect DTabBar::tabRect(int index) const { QRect rect = d_func()->tabRect(index); rect.moveTopLeft(d_func()->mapToParent(rect.topLeft())); return rect; } /*! * \~chinese \brief 根据位置返回标签索引位置 */ int DTabBar::tabAt(const QPoint &pos) const { return d_func()->tabAt(d_func()->mapFromParent(pos)); } /*! * \~chinese \brief 当前的标签索引位置 */ int DTabBar::currentIndex() const { return d_func()->currentIndex(); } /*! * \~chinese \brief 标签总数 */ int DTabBar::count() const { return d_func()->count(); } void DTabBar::setDrawBase(bool drawTheBase) { d_func()->setDrawBase(drawTheBase); } bool DTabBar::drawBase() const { return d_func()->drawBase(); } /*! * \~chinese \brief 图标大小 */ QSize DTabBar::iconSize() const { return d_func()->iconSize(); } /*! * \~chinese \brief 设置图标大小 */ void DTabBar::setIconSize(const QSize &size) { d_func()->setIconSize(size); } bool DTabBar::usesScrollButtons() const { return d_func()->usesScrollButtons(); } void DTabBar::setUsesScrollButtons(bool useButtons) { d_func()->setUsesScrollButtons(useButtons); } /*! * \~chinese \brief 标签栏是否可关闭 */ bool DTabBar::tabsClosable() const { return d_func()->tabsClosable(); } /*! * \~chinese \brief 设置标签栏是否可关闭 */ void DTabBar::setTabsClosable(bool closable) { d_func()->setTabsClosable(closable); } void DTabBar::setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget) { d_func()->setTabButton(index, position, widget); } QWidget *DTabBar::tabButton(int index, QTabBar::ButtonPosition position) const { return d_func()->tabButton(index, position); } QTabBar::SelectionBehavior DTabBar::selectionBehaviorOnRemove() const { return d_func()->selectionBehaviorOnRemove(); } void DTabBar::setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior) { d_func()->setSelectionBehaviorOnRemove(behavior); } bool DTabBar::expanding() const { return d_func()->expanding(); } void DTabBar::setExpanding(bool enabled) { d_func()->setExpanding(enabled); } bool DTabBar::isMovable() const { return d_func()->isMovable(); } void DTabBar::setMovable(bool movable) { d_func()->setMovable(movable); } bool DTabBar::isDragable() const { return d_func()->dragable; } void DTabBar::setDragable(bool dragable) { d_func()->dragable = dragable; } bool DTabBar::documentMode() const { return d_func()->documentMode(); } void DTabBar::setDocumentMode(bool set) { d_func()->setDocumentMode(set); } bool DTabBar::autoHide() const { return d_func()->autoHide(); } void DTabBar::setAutoHide(bool hide) { d_func()->setAutoHide(hide); } bool DTabBar::changeCurrentOnDrag() const { return d_func()->changeCurrentOnDrag(); } void DTabBar::setChangeCurrentOnDrag(bool change) { d_func()->setChangeCurrentOnDrag(change); } int DTabBar::startDragDistance() const { return d_func()->startDragDistance; } QColor DTabBar::maskColor() const { return d_func()->maskColor; } QColor DTabBar::flashColor() const { return d_func()->flashColor; } QWindow *DTabBar::dragIconWindow() const { for (QWindow *w : qGuiApp->allWindows()) { if (w->inherits("QShapedPixmapWindow")) return w; } return nullptr; } /*! * \~chinese \brief 设置当前标签索引位置 */ void DTabBar::setCurrentIndex(int index) { d_func()->setCurrentIndex(index); } /*! * \~chinese \brief 设置新建标签按钮是否显示 */ void DTabBar::setVisibleAddButton(bool visibleAddButton) { D_D(DTabBar); d->visibleAddButton = visibleAddButton; d->addButton->setVisible(visibleAddButton); } /*! * \~chinese \brief 设置开始拖动距离 */ void DTabBar::setStartDragDistance(int startDragDistance) { d_func()->startDragDistance = startDragDistance; } /*! * \~chinese \brief 设置颜色 */ void DTabBar::setMaskColor(QColor maskColor) { d_func()->maskColor = maskColor; } void DTabBar::setFlashColor(QColor flashColor) { d_func()->flashColor = flashColor; } void DTabBar::startDrag(int index) { D_D(DTabBar); d->dd()->pressedIndex = index; d->setupDragableTab(); } void DTabBar::stopDrag(Qt::DropAction action) { if (QBasicDrag *drag = dynamic_cast(QDragManager::self()->m_platformDrag)) { drag->cancel(); drag->m_executed_drop_action = action; if (drag->m_eventLoop) drag->m_eventLoop->quit(); } } void DTabBar::dragEnterEvent(QDragEnterEvent *e) { D_D(DTabBar); if (e->source() == d) return QWidget::dragEnterEvent(e); int index = d->tabInsertIndexFromMouse(d->mapFromParent(e->pos())); if (canInsertFromMimeData(index, e->mimeData())) { d->setDragingFromOther(true); e->acceptProposedAction(); // 插入一个虚拟的标签 if (e->source() != d) { d->ghostTabIndex = index; insertFromMimeDataOnDragEnter(index, e->mimeData()); // 延时启动startMove, 此时tabbar的大小还没有更新 QTimer::singleShot(10, [d, index] { d->startMove(index); }); } } } void DTabBar::dragLeaveEvent(QDragLeaveEvent *e) { Q_UNUSED(e) D_D(DTabBar); d->setDragingFromOther(false); d->stopAutoScrollTabs(); if (d->dd()->validIndex(d->ghostTabIndex)) { d->stopMove(); d->removeTab(d->ghostTabIndex); d->ghostTabIndex = -1; } } void DTabBar::dragMoveEvent(QDragMoveEvent *e) { D_D(DTabBar); if (d->ignoreDragEvent) return; if (e->source() == d) return QWidget::dragMoveEvent(e); int index = d->dd()->validIndex(d->ghostTabIndex) ? d->ghostTabIndex : d->tabInsertIndexFromMouse(d->mapFromParent(e->pos())); bool canInsert = false; if (canInsertFromMimeData(index, e->mimeData())) { d->setDragingFromOther(true); e->acceptProposedAction(); canInsert = true; } else if (d->dd()->validIndex(d->ghostTabIndex)) { d->stopMove(); d->removeTab(d->ghostTabIndex); d->ghostTabIndex = -1; } if (e->source() != d) { if (canInsert) { if (d->dd()->validIndex(d->ghostTabIndex)) { QMouseEvent event(QEvent::MouseMove, d->mapFromParent(e->pos()), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); d->mouseMoveEvent(&event); } else { d->ghostTabIndex = index; insertFromMimeDataOnDragEnter(index, e->mimeData()); d->startMove(index); } } else { d->autoScrollTabs(d->mapFromParent(e->pos())); } } } void DTabBar::dropEvent(QDropEvent *e) { D_D(DTabBar); if (e->source() == d) return QWidget::dropEvent(e); d->setDragingFromOther(false); d->stopAutoScrollTabs(); int index = d->tabInsertIndexFromMouse(d->mapFromParent(e->pos())); if (canInsertFromMimeData(index, e->mimeData())) { e->acceptProposedAction(); e->setDropAction(Qt::MoveAction); if (d->dd()->validIndex(d->ghostTabIndex)) { d->stopMove(); { QSignalBlocker blocker(this); Q_UNUSED(blocker) d->removeTab(d->ghostTabIndex); } Q_EMIT tabIsRemoved(d->ghostTabIndex); insertFromMimeData(d->ghostTabIndex, e->mimeData()); d->ghostTabIndex = -1; } else { insertFromMimeData(index, e->mimeData()); } } } void DTabBar::resizeEvent(QResizeEvent *e) { D_D(DTabBar); if (d->topFullWidget) { d->topFullWidget->resize(e->size()); d->topFullWidget->raise(); } return QWidget::resizeEvent(e); } void DTabBar::startTabFlash(int index) { d_func()->flashTabIndex = index; d_func()->makeVisible(d_func()->flashTabIndex); d_func()->startTabFlash(); } void DTabBar::paintTab(QPainter *painter, int index, const QStyleOptionTab &option) const { Q_UNUSED(index) style()->drawControl(QStyle::CE_TabBarTab, &option, painter, this); } QPixmap DTabBar::createDragPixmapFromTab(int index, const QStyleOptionTab &option, QPoint *hotspot) const { Q_UNUSED(hotspot) QPixmap grabImage(option.rect.size() * devicePixelRatioF()); grabImage.setDevicePixelRatio(devicePixelRatioF()); grabImage.fill(Qt::transparent); QStyleOptionTab tab = option; int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0, this); tab.rect.moveTopLeft(QPoint(taboverlap, 0)); QPainter p(&grabImage); p.initFrom(d_func()); paintTab(&p, index, tab); return grabImage; } QMimeData *DTabBar::createMimeDataFromTab(int index, const QStyleOptionTab &option) const { Q_UNUSED(index) Q_UNUSED(option) QMimeData *data = new QMimeData(); data->setText(tabText(index)); data->setData("deepin/dtkwidget-DTabBar-tab", QByteArray()); return data; } bool DTabBar::canInsertFromMimeData(int index, const QMimeData *source) const { Q_UNUSED(index) return source->hasFormat("deepin/dtkwidget-DTabBar-tab"); } void DTabBar::insertFromMimeData(int index, const QMimeData *source) { startTabFlash(insertTab(index, source->text())); } void DTabBar::insertFromMimeDataOnDragEnter(int index, const QMimeData *source) { startTabFlash(insertTab(index, source->text())); } void DTabBar::tabInserted(int index) { D_D(DTabBar); d->tabMaximumSize.insert(index, QSize()); d->tabMinimumSize.insert(index, QSize()); d->QTabBar::tabInserted(index); Q_EMIT tabIsInserted(index); } void DTabBar::tabLayoutChange() { D_D(DTabBar); d->QTabBar::tabLayoutChange(); } void DTabBar::tabRemoved(int index) { D_D(DTabBar); d->tabMaximumSize.removeAt(index); d->tabMinimumSize.removeAt(index); d->QTabBar::tabRemoved(index); Q_EMIT tabIsRemoved(index); } QSize DTabBar::tabSizeHint(int index) const { D_DC(DTabBar); QSize size = d->QTabBar::tabSizeHint(index); QTabBarPrivate *dd = reinterpret_cast(qGetPtrHelper(d->d_ptr)); bool is_vertical = verticalTabs(dd->shape); if (is_vertical) { size.setWidth(qMax(size.width(), d->width())); } else { size.setHeight(qMax(size.height(), d->height())); } const QSize &min = qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1) ? minimumTabSizeHint(index) : DTabBar::minimumTabSizeHint(index); const QSize &max = qApp->buildDtkVersion() > DTK_VERSION_CHECK(2, 0, 8, 1) ? maximumTabSizeHint(index) : DTabBar::maximumTabSizeHint(index); size.setWidth(qMax(size.width(), min.width())); size.setHeight(qMax(size.height(), min.height())); if (max.isValid()) { size.setWidth(qMin(size.width(), max.width())); size.setHeight(qMin(size.height(), max.height())); } return size; } QSize DTabBar::minimumTabSizeHint(int index) const { D_DC(DTabBar); return d->tabMinimumSize.value(index); } QSize DTabBar::maximumTabSizeHint(int index) const { D_DC(DTabBar); return d->tabMaximumSize.value(index); } DTabBarPrivate *DTabBar::d_func() { return dynamic_cast(d_d_ptr.data()); } const DTabBarPrivate *DTabBar::d_func() const { return dynamic_cast(d_d_ptr.data()); } DWIDGET_END_NAMESPACE #include "dtabbar.moc" dtkwidget-2.1.1/src/widgets/dtabbar.h000066400000000000000000000161011352002233700175020ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTABBAR_H #define DTABBAR_H #include #include #include QT_BEGIN_NAMESPACE class QMimeData; QT_END_NAMESPACE DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DTabBarPrivate; class DTabBar : public QWidget, public DObject { Q_OBJECT Q_PROPERTY(bool visibleAddButton READ visibleAddButton WRITE setVisibleAddButton) Q_PROPERTY(QTabBar::Shape shape READ shape WRITE setShape) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentChanged) Q_PROPERTY(int count READ count) Q_PROPERTY(bool drawBase READ drawBase WRITE setDrawBase) Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode) Q_PROPERTY(bool usesScrollButtons READ usesScrollButtons WRITE setUsesScrollButtons) Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable) Q_PROPERTY(QTabBar::SelectionBehavior selectionBehaviorOnRemove READ selectionBehaviorOnRemove WRITE setSelectionBehaviorOnRemove) Q_PROPERTY(bool expanding READ expanding WRITE setExpanding) Q_PROPERTY(bool movable READ isMovable WRITE setMovable) Q_PROPERTY(bool dragable READ isDragable WRITE setDragable) Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode) Q_PROPERTY(bool autoHide READ autoHide WRITE setAutoHide) Q_PROPERTY(bool changeCurrentOnDrag READ changeCurrentOnDrag WRITE setChangeCurrentOnDrag) Q_PROPERTY(int startDragDistance READ startDragDistance WRITE setStartDragDistance) // on drag enter Q_PROPERTY(QColor maskColor READ maskColor WRITE setMaskColor) // on inserted tab from mime data Q_PROPERTY(QColor flashColor READ flashColor WRITE setFlashColor) public: explicit DTabBar(QWidget *parent = 0); void setTabMinimumSize(int index, const QSize &size); void setTabMaximumSize(int index, const QSize &size); bool visibleAddButton() const; QTabBar::Shape shape() const; void setShape(QTabBar::Shape shape); int addTab(const QString &text); int addTab(const QIcon &icon, const QString &text); int insertTab(int index, const QString &text); int insertTab(int index, const QIcon&icon, const QString &text); void removeTab(int index); void moveTab(int from, int to); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &text); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode mode); #ifndef QT_NO_TOOLTIP void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; #endif #ifndef QT_NO_WHATSTHIS void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; #endif void setTabData(int index, const QVariant &data); QVariant tabData(int index) const; QRect tabRect(int index) const; int tabAt(const QPoint &pos) const; int currentIndex() const; int count() const; void setDrawBase(bool drawTheBase); bool drawBase() const; QSize iconSize() const; void setIconSize(const QSize &size); bool usesScrollButtons() const; void setUsesScrollButtons(bool useButtons); bool tabsClosable() const; void setTabsClosable(bool closable); void setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget); QWidget *tabButton(int index, QTabBar::ButtonPosition position) const; QTabBar::SelectionBehavior selectionBehaviorOnRemove() const; void setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior); bool expanding() const; void setExpanding(bool enabled); bool isMovable() const; void setMovable(bool movable); bool isDragable() const; void setDragable(bool dragable); bool documentMode() const; void setDocumentMode(bool set); bool autoHide() const; void setAutoHide(bool hide); bool changeCurrentOnDrag() const; void setChangeCurrentOnDrag(bool change); int startDragDistance() const; QColor maskColor() const; QColor flashColor() const; QWindow *dragIconWindow() const; Q_SIGNALS: void currentChanged(int index); void tabCloseRequested(int index); void tabMoved(int from, int to); void tabIsInserted(int index); void tabIsRemoved(int index); void tabBarClicked(int index); void tabBarDoubleClicked(int index); void tabAddRequested(); void tabReleaseRequested(int index); void tabDroped(int index, Qt::DropAction action, QObject *target); void dragActionChanged(Qt::DropAction action); void dragStarted(); void dragEnd(Qt::DropAction action); public Q_SLOTS: void setCurrentIndex(int index); void setVisibleAddButton(bool visibleAddButton); void setStartDragDistance(int startDragDistance); void setMaskColor(QColor maskColor); void setFlashColor(QColor flashColor); void startDrag(int index); void stopDrag(Qt::DropAction action); protected: void dragEnterEvent(QDragEnterEvent *e) override; void dragLeaveEvent(QDragLeaveEvent *e) override; void dragMoveEvent(QDragMoveEvent *e) override; void dropEvent(QDropEvent *e) override; void resizeEvent(QResizeEvent *e) override; void startTabFlash(int index); virtual void paintTab(QPainter *painter, int index, const QStyleOptionTab &option) const; virtual QPixmap createDragPixmapFromTab(int index, const QStyleOptionTab &option, QPoint *hotspot) const; virtual QMimeData *createMimeDataFromTab(int index, const QStyleOptionTab &option) const; virtual bool canInsertFromMimeData(int index, const QMimeData *source) const; virtual void insertFromMimeData(int index, const QMimeData *source); virtual void insertFromMimeDataOnDragEnter(int index, const QMimeData *source); virtual void tabInserted(int index); virtual void tabLayoutChange(); virtual void tabRemoved(int index); virtual QSize tabSizeHint(int index) const; virtual QSize minimumTabSizeHint(int index) const; virtual QSize maximumTabSizeHint(int index) const; private: DTabBarPrivate* d_func(); const DTabBarPrivate* d_func() const; friend class DTabBarPrivate; }; DWIDGET_END_NAMESPACE #endif // DTABBAR_H dtkwidget-2.1.1/src/widgets/dtextbutton.cpp000066400000000000000000000025351352002233700210300ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtextbutton.h" #include "dthememanager.h" /** * \~chinese \class DTextButton * \~chinese \brief 一个 DDE 风格按钮控件。 * * \~chinese 继承自 QPushButton 并修改了样式使其更符合 DDE 风格, 其他功能与 QPushButton 一致, 可将其直接作为 QPushButton 使用 */ DWIDGET_BEGIN_NAMESPACE /*! * \brief 构造一个 DTextButton 实例。 * \param text 按钮需要显示的文字 * \param parent 用于作为按钮的父控件 */ DTextButton::DTextButton(const QString & text, QWidget * parent) : QPushButton(text, parent) { DThemeManager::registerWidget(this); } DTextButton::~DTextButton() { } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dtextbutton.h000066400000000000000000000020461352002233700204720ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTEXTBUTTON_H #define DTEXTBUTTON_H #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DTextButton : public QPushButton { Q_OBJECT public: DTextButton(const QString & text, QWidget * parent = 0); ~DTextButton(); }; DWIDGET_END_NAMESPACE #endif // DTEXTBUTTON_H dtkwidget-2.1.1/src/widgets/dtextedit.cpp000066400000000000000000000035601352002233700204410ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtextedit.h" #include "dthememanager.h" #include "private/dtextedit_p.h" #include "dscrollbar.h" #include DWIDGET_BEGIN_NAMESPACE DTextEditPrivate::DTextEditPrivate(DTextEdit *qq) : DObjectPrivate(qq) { } void DTextEditPrivate::init() { D_Q(DTextEdit); insideFrame = new QFrame(q); insideFrame->setObjectName("TextEditInsideFrame"); insideFrame->setFocusProxy(q); insideFrame->setAttribute(Qt::WA_TransparentForMouseEvents); q->setContextMenuPolicy(Qt::NoContextMenu); q->setVerticalScrollBar(new DScrollBar); q->setHorizontalScrollBar(new DScrollBar); } /*! * \~chinese \brief DTextEdit * \~chinese DTextEdit 提供 deepin 风格的多行编辑控件,是 QTextEdit 的子类。 */ DTextEdit::DTextEdit(QWidget *parent) : QTextEdit(parent), DObject(*new DTextEditPrivate(this)) { DThemeManager::registerWidget(this); d_func()->init(); } void DTextEdit::resizeEvent(QResizeEvent *event) { QTextEdit::resizeEvent(event); D_D(DTextEdit); const QSize &size = event->size(); d->insideFrame->setFixedHeight(size.height() - 1); d->insideFrame->setFixedWidth(size.width()); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dtextedit.h000066400000000000000000000022531352002233700201040ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTEXTEDIT_H #define DTEXTEDIT_H #include "dtkwidget_global.h" #include #include DWIDGET_BEGIN_NAMESPACE class DTextEditPrivate; class DTextEdit : public QTextEdit, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DTextEdit(QWidget *parent = 0); protected: void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DTextEdit) Q_DISABLE_COPY(DTextEdit) }; DWIDGET_END_NAMESPACE #endif // DTEXTEDIT_H dtkwidget-2.1.1/src/widgets/dthememanager.cpp000066400000000000000000000646231352002233700212530ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "dthememanager.h" #include "dapplication.h" DWIDGET_BEGIN_NAMESPACE class DThemeManagerStaticPrivate : public DThemeManager { }; Q_GLOBAL_STATIC(DThemeManagerStaticPrivate, DThemeManagerStatic) /*! * \~english \class DThemeManager * \~english \brief The DThemeManager class provides helper to manage theme files of widgets. * * \~english The DThemeManager is singleton class, DThemeManager::instance is used to * \~english get an instance of DThemeManager. * * \~english DThemeManager can be used to get the current application theme, find the * \~english corresponding theme file of a widget. * * * \~chinese \class DThemeManager * \~chinese \brief DThemeManager 类提供了管理控件主题文件的工具函数。 * \~chinese * \~chinese 在 DTK 中,目前只有 light 和 dark 两种风格的主题,主题文件是为单个控件所创建 * \~chinese 的 QSS 文件,并且以 .theme 结尾,每个控件都应该有对应的 light 和 dark 两套主题文件。 * \~chinese * \~chinese 主题在应用范围上分为程序级别的主题和控件级别的主题,程序中的控件默认使用程序级别的 * \~chinese 主题 theme(), 控件也可以使用 setTheme(QWidget *widget, const QString theme)单独设置不同的主题风格, * \~chinese 这种情况下控件的子控件都会继承其父控件设置的主题,而不再使用程序级别的主题。 * \~chinese * \~chinese \note DThemeManager 是单实例的,也就是说通常情况下使用者无法创建 DThemeManager 对象, * \~chinese 而是通过 DThemeManager::instance 方法来获取到全局的 DThemeManager 实例。 * \~chinese * \~chinese \warning 只有使用 DThemeManager::registerWidget 进行注册的控件才会纳入 DThemeManager * \~chinese 的正常管理流程。 */ /*! * * \~chinese \enum DThemeManager::ThemeType * \~chinese DThemeManager::ThemeType 主题的类型,分为“浅色”、“深色”两种类型。默认情况下,DApplication * \~chinese 会根据应用程序调色板中的窗口背景色自动设置应用程序的主题类型。 * * \~chinese \var DThemeManager::UnknownType DThemeManager::UnknownType * \~chinese 未知的主题类型 * * \~chinese \var DThemeManager::LightType DThemeManager::LightType * \~chinese 浅色主题 * * \~chinese \var DApplication::SingleScope DApplication::SystemScope * \~chinese 深色主题 * * \~chinese \sa DApplication * \~chinese \sa QPalette * \~chinese \sa QApplication::palette */ /** * \~chinese \property DThemeManager::themeType * \~chinese \brief themeType 属性表示应用程序主题的类型 */ /*! * \~chinese \fn DThemeManager::themeChanged * \~chinese \brief themeChanged 信号在程序主题发生改变时触发。 */ /*! * \~chinese \fn DThemeManager::widgetThemeChanged * \~chinese \brief widgetThemeChanged 信号在特定控件主题发生改变时触发。 */ /*! * \~chinese \fn DThemeManager::themeTypeChanged * \~chinese \param themeType 新的主题类型 * \~chinese \brief themeTypeChanged 信号在应用程序主题发生变化时触发。默认情况下,DApplication * \~chinese 会在处理 QEvent::ApplicationPaletteChange 事件时自动更新应用程序的主题类型,此操作可能 * \~chinese 会导致此信号的触发。 * * \~chinese \sa DThemeManager::setThemeType */ /*! * \~chinese \fn DThemeManager::windowThemeTypeChanged * \~chinese \param window 主题类型发生变化的顶级窗口 * \~chinese \param themeType 新的主题类型 * \~chinese \brief windowThemeTypeChanged 信号在窗口的主题类型发现变化时触发。默认情况下,DApplication * \~chinese 会在处理 QEvent::PaletteChange 事件时自动更新顶级窗口的主题类型,此操作可能会导致此信号的触发。 * \~chinese 另外,如果窗口未自定义过 QPalette 并且未指定主题类型,窗口的主题类型会跟随应用程序改变而改变。 * * \~chinese \sa QWidget::setPalette * \~chinese \sa DThemeManager::setThemeType(QWidget*, DThemeManager::ThemeType) */ /*! * \~chinese \brief DThemeManager::instance 用于获取 DThemeManager 的全局实例。 * \~chinese \return DThemeManager 全局实例。 */ DThemeManager *DThemeManager::instance() { // 正在初始化时返回空对象,否则会导致当前线程陷入死锁 if (Q_QGS_DThemeManagerStatic::guard.load() == QtGlobalStatic::Initializing) { return nullptr; } Q_QGS_DThemeManagerStatic::guard.testAndSetRelaxed(QtGlobalStatic::Uninitialized, QtGlobalStatic::Initializing); return DThemeManagerStatic; } static QString getObjectClassName(const QObject *obj) { const QString &type_name = QString::fromLocal8Bit(obj->metaObject()->className()); const QStringList &widget_type_list = type_name.split("::"); return widget_type_list.isEmpty() ? type_name : widget_type_list.last(); } // TODO: just for fix some bug, remove after 2.0.7 static QString getThemeNameByRawClassName(const QObject *obj) { return QString::fromLocal8Bit(obj->metaObject()->className()); } static QString getThemeNameByClassName(const QObject *obj) { QString type_name = QString::fromLocal8Bit(obj->metaObject()->className()); return type_name.replace("::", "--"); } static void emitThemeChanged(DThemeManager *manager, QWidget *widget, const QString &theme) { Q_EMIT manager->widgetThemeChanged(widget, theme); for (QObject *child : widget->children()) { if (QWidget *cw = qobject_cast(child)) { if (cw->property("_d_dtk_theme").isValid()) { continue; } emitThemeChanged(manager, cw, theme); } } } static void setStyle(QWidget *widget, QStyle *style) { widget->setStyle(style); for (QObject *child : widget->children()) { if (QWidget *cw = qobject_cast(child)) { if (cw->property("_d_dtk_theme").isValid()) { continue; } setStyle(cw, style); } } } static void inseritStyle(QWidget *widget, const QWidget *baseWidget) { if (widget == baseWidget) { return; } QStyle *base_style = baseWidget ? baseWidget->style() : qApp->style(); if (base_style->inherits("QStyleSheetStyle")) { base_style = static_cast(base_style)->base; } widget->setStyle(base_style); } static void updateWidgetTheme(DThemeManager *manager, QWidget *widget, QWidget *baseWidget, const QString &theme) { inseritStyle(widget, baseWidget); Q_EMIT manager->widgetThemeChanged(widget, theme); for (QObject *child : widget->children()) { if (QWidget *cw = qobject_cast(child)) { if (widget->property("_d_dtk_theme").isValid()) { return; } updateWidgetTheme(manager, cw, baseWidget, theme); } } } class DThemeManagerPrivate : public DCORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DThemeManager) QString themeName; QMap > watchedDynamicPropertys; DThemeManager::ThemeType themeType = DThemeManager::UnknownType; public: DThemeManagerPrivate(DThemeManager *qq) : DObjectPrivate(qq) {} QString getQssContent(const QString &themeURL) const { QString qss; QFile themeFile(themeURL); if (themeFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qss = themeFile.readAll(); themeFile.close(); } else { /// !!! if do not privode qss file, do not register it!!! qWarning() << "open qss file failed" << themeURL << themeFile.errorString(); } return qss; } bool themeFileExist(const QString &filename) const { QFileInfo fi(filename); return fi.exists(); } inline QString themeURL(const QString &themename, const QString &filename) const { if (themename.isEmpty() || filename.isEmpty()) { return ""; } return QString(":/%1/%2.theme").arg(themename).arg(filename); } QString fallbackWidgetThemeName(const QWidget *widget, QWidget **baseWidget = nullptr) const { QString theme; if (baseWidget) { *baseWidget = nullptr; } do { theme = widget->property("_d_dtk_theme").toString(); if (!theme.isEmpty()) { if (baseWidget) { *baseWidget = const_cast(widget); } break; } widget = widget->isWindow() ? 0 : widget->parentWidget(); } while (widget); return theme.isEmpty() ? themeName : theme; } QString fallbackWidgetThemeFilename(QWidget *w) const { QStringList fallbackList; QString overriveName = w->property("_d_dtk_theme_filename").toString(); if (!overriveName.isEmpty()) { fallbackList << overriveName; } QString className = getThemeNameByClassName(w); if (!className.isEmpty()) { fallbackList << className; } QString rawClassName = getThemeNameByRawClassName(w); if (!rawClassName.isEmpty()) { fallbackList << rawClassName; } auto themeName = fallbackWidgetThemeName(w, nullptr); for (auto filename : fallbackList) { if (themeFileExist(themeURL(themeName, filename))) { return filename; } } return ""; } void registerWidget(QWidget *widget, const QString &filename, const QStringList &propertys) { if (filename.isEmpty()) { qWarning() << "can not load qss with out filename" << widget; return; } auto themeurl = themeURL(fallbackWidgetThemeName(widget), filename); auto dtm = DThemeManager::instance(); widget->setStyleSheet(widget->styleSheet() + dtm->d_func()->getQssContent(themeurl)); widget->style()->polish(widget); auto reloadTheme = [this, dtm](QWidget * widget, const QString & filename, const QString & themename) { const char *baseClassReloadThemeProp = "_dtk_theme_base_calss_reload_theme"; auto themeurl = themeURL(fallbackWidgetThemeName(widget), filename); auto reloadTheme = widget->property(baseClassReloadThemeProp).toString(); if (reloadTheme != themename) { widget->setStyleSheet(dtm->d_func()->getQssContent(themeurl)); widget->setProperty(baseClassReloadThemeProp, themename); } else { widget->setStyleSheet(widget->styleSheet() + dtm->d_func()->getQssContent(themeurl)); } }; dtm->connect(dtm, &DThemeManager::themeChanged, widget, [reloadTheme, widget, filename](QString theme) { reloadTheme(widget, filename, theme); }); dtm->connect(dtm, &DThemeManager::widgetThemeChanged, widget, [reloadTheme, widget, filename](QWidget * w, QString theme) { if (widget == w) { reloadTheme(widget, filename, theme); } }); auto meta = widget->metaObject(); QMap dynamicPropertys; for (auto &prop : propertys) { auto propIndex = meta->indexOfProperty(prop.toLatin1().data()); if (propIndex < 0) { dynamicPropertys.insert(prop, prop); continue; } dtm->connect(widget, meta->property(propIndex).notifySignal(), dtm, dtm->metaObject()->method(dtm->metaObject()->indexOfMethod("updateQss()"))); } if (!dynamicPropertys.isEmpty()) { widget->installEventFilter(dtm); if (dtm->d_func()->watchedDynamicPropertys.contains(widget)) { QMap oldProps = dtm->d_func()->watchedDynamicPropertys.value(widget); for (auto &key : oldProps.keys()) { dynamicPropertys.insert(key, oldProps.value(key)); } } dtm->d_func()->watchedDynamicPropertys.insert(widget, dynamicPropertys); dtm->connect(widget, &QObject::destroyed, dtm, [ = ]() { dtm->d_func()->watchedDynamicPropertys.remove(widget); }); } } void setTheme(const QString theme) { D_Q(DThemeManager); if (themeName != theme) { QStyle *style = Q_NULLPTR; // TODO: remove this shit in the future. // It's just a trick to make all DApplications use dde qt5 styles, // if dlight or ddark style is set to default style of dde, those // ugly code will no longer needed. if (theme == "light") { style = QStyleFactory::create("dlight"); themeName = theme; } else if (theme == "dark") { style = QStyleFactory::create("ddark"); themeName = theme; } else if (theme == "semilight") { style = QStyleFactory::create("dsemilight"); themeName = "light"; } else if (theme == "semidark") { style = QStyleFactory::create("dsemidark"); themeName = "dark"; } if (style) { qApp->setStyle(style); } Q_EMIT q->themeChanged(themeName); } } void setTheme(QWidget *widget, const QString theme) { D_Q(DThemeManager); Q_ASSERT(widget); if (theme.isEmpty()) { QString old_theme = fallbackWidgetThemeName(widget); widget->setProperty("_d_dtk_theme", QVariant()); QWidget *baseWidget = nullptr; if (fallbackWidgetThemeName(widget, &baseWidget) != old_theme) { emitThemeChanged(q, widget, fallbackWidgetThemeName(widget)); } inseritStyle(widget, baseWidget); return; } const QString &old_theme = fallbackWidgetThemeName(widget); QStyle *style = Q_NULLPTR; // TODO: remove this shit in the future. // It's just a trick to make all DApplications use dde qt5 styles, // if dlight or ddark style is set to default style of dde, those // ugly code will no longer needed. if (theme == "light") { style = QStyleFactory::create("dlight"); widget->setProperty("_d_dtk_theme", theme); } else if (theme == "dark") { style = QStyleFactory::create("ddark"); widget->setProperty("_d_dtk_theme", theme); } else if (theme == "semilight") { style = QStyleFactory::create("dsemilight"); widget->setProperty("_d_dtk_theme", "light"); } else if (theme == "semidark") { style = QStyleFactory::create("dsemidark"); widget->setProperty("_d_dtk_theme", "dark"); } if (style) { setStyle(widget, style); } if (old_theme != theme) { emitThemeChanged(q, widget, theme); } } }; /*! * \~english \brief DThemeManager::theme * \~english \return the theme name currently be used by this application, the possible * \~english value are "light" and "dark". * * * \~chinese \brief DThemeManager::theme 用于获取当前程序使用的主题名称。 * \~chinese \return 程序使用的主题名称。 */ QString DThemeManager::theme() const { D_DC(DThemeManager); return d->themeName; } /*! * \~chinese \brief DThemeManager::theme 用于找到 widget 距离最近、并且设置了主题的上级控件, * \~chinese 并返回这个主题的名称。如果上级控件都没有设置主题,则返回程序级别的主题名称。 * \~chinese \param widget 目标控件。 * \~chinese \param baseWidget 待返回的上级控件。 * \~chinese \return 指定控件应该使用的主题名称。 */ QString DThemeManager::theme(const QWidget *widget, QWidget **baseWidget) const { D_DC(DThemeManager); return d->fallbackWidgetThemeName(widget, baseWidget); } /*! * \~english \brief DThemeManager::setTheme sets the application theme. * \~english \param theme is the theme name to be set. * * * \~chinese \brief DThemeManager::setTheme 用于设置当前程序的主题。 * \~chinese \param theme 为指定的主题名称。 */ void DThemeManager::setTheme(const QString theme) { D_D(DThemeManager); d->setTheme(theme); } /*! * \~english \brief DThemeManager::setTheme sets theme on a widget. * \~english \param widget is the target widget. * \~english \param theme is the name of theme to be set. * * * \~chinese \brief DThemeManager::setTheme 用于给特定的控件设置主题。 * \~chinese \note 控件的子控件也会继承设置的主题风格。 * \~chinese \param widget 为需要设置主题的控件。 * \~chinese \param theme 为指定的主题名称。 */ void DThemeManager::setTheme(QWidget *widget, const QString theme) { D_D(DThemeManager); d->setTheme(widget, theme); } /*! * \~chinese \brief DThemeManager::themeType 返回应用程序的主题类型。DApplication 对象构造时会 * \~chinese 调用 setThemeType 初始化应用程序的主题类型,未初始化时返回 UnknownType。 * \~chinese \return 主题类型的枚举值 * * \~chinese \sa \class DApplication * \~chinese \sa DThemeManager::setThemeType */ DThemeManager::ThemeType DThemeManager::themeType() const { D_DC(DThemeManager); return d->themeType; } /*! * \~chinese \brief DThemeManager::themeType 返回窗口的主题类型。当窗口未设置主题类型时,将返回 * \~chinese 应用程序的主题类型。 * \~chinese \param window 要获取主题类型的顶级窗口对象 * \~chinese \return 主题类型的枚举值 * * \~chinese \sa DThemeManager::setThemeType * \~chinese \sa DThemeManager::setThemeType(QWidget*, DThemeManager::ThemeType) */ DThemeManager::ThemeType DThemeManager::themeType(const QWidget *window) const { ThemeType type = static_cast(window->property("_d_dtk_theme_type").toInt()); if (type == UnknownType) { type = themeType(); } return type; } /*! * \~chinese \brief DThemeManager::setThemeType 设置窗口的主题类型。 * \~chinese \param window 要设置主题类型的顶级窗口对象 * \~chinese \param 要设置的主题类型枚举值,值为 UnknownType 时将清空 window 对象的主题类型设置 * * \~chinese \sa DThemeManager::setThemeType() * \~chinese \note 针对窗口设置的主题类型将存储在窗口对象的 "_d_dtk_theme_type" 属性中 */ void DThemeManager::setThemeType(QWidget *window, DThemeManager::ThemeType type) { ThemeType old_type = themeType(window); if (type == UnknownType) { window->setProperty("_d_dtk_theme_type", QVariant()); type = themeType(); } else { window->setProperty("_d_dtk_theme_type", type); } if (old_type != type) { Q_EMIT windowThemeTypeChanged(window, type); } } /*! * \~english \brief DThemeManager::getQssForWidget searches for the theme file of one class in a specific theme. * \~english \param className is the name of the class. * \~english \param theme is the name of the theme to be applied. * \~english \return The content of the theme file. * * \~english \note The class name should have no namespace prefixes. * * * \~chinese \brief DThemeManager::getQssForWidget 用于获取特定类在特定主题下的样式内容。 * \~chinese \param className 为指定的类名称,className 需要跟控件对应的主题文件名对应。 * \~chinese \param theme 为指定的主题名称。 * \~chinese \return 主题文件的内容。 */ QString DThemeManager::getQssForWidget(const QString className, const QString &theme) const { D_DC(DThemeManager); QString qss; QString themeName = theme.isEmpty() ? d->themeName : theme; QString themeURL = QString(":/%1/%2.theme").arg(themeName).arg(className); return d->getQssContent(themeURL); } QString DThemeManager::getQssForWidget(const QString className, const QWidget *widget) const { Q_ASSERT(widget); return getQssForWidget(className, theme(widget)); } /*! * \~english \brief DThemeManager::getQssForWidget This function is overloaded. * \~english \param widget is the target widget. * \~english \return The content of the theme file to be applied on the widget. * * * \~chinese \brief DThemeManager::getQssForWidget 控件的主题样式内容。 * \~chinese \param widget 为指定的控件。 * \~chinese \return 主题文件的内容。 */ QString DThemeManager::getQssForWidget(const QWidget *widget) const { return getQssForWidget(getObjectClassName(widget), widget); } /*! * \~chinese \brief DThemeManager::registerWidget 用于将控件注册到 DThemeManager 的管理范围内。 * \~chinese 只有通过 registerWidget() 注册的控件才会受到 DThemeManager 的自动管理, * \~chinese 通常注册的动作都会在实例的构造过程中完成。\ref propertys 参数用来注册属性, * \~chinese 注册的属性发生变化时 DThemeManager 会自动刷新控件的样式。 * \~chinese \param widget 需要注册的控件。 * \~chinese \param propertys 需要注册的控件属性。 */ void DThemeManager::registerWidget(QWidget *widget, QStringList propertys) { auto dtm = DThemeManager::instance(); auto fileName = dtm->d_func()->fallbackWidgetThemeFilename(widget); registerWidget(widget, fileName, propertys); } /*! * \~chinese \brief DThemeManager::registerWidget 用于将控件注册到 DThemeManager 的管理范围内。 * \~chinese \param widget 需要注册的控件。 * \~chinese \param filename 需要注册的控件所对应的主题文件名。 * \~chinese \param propertys 需要注册的控件属性。 * * * \sa registerWidget(QWidget *widget, QStringList propertys) */ void DThemeManager::registerWidget(QWidget *widget, const QString &filename, const QStringList &propertys) { auto dtm = DThemeManager::instance(); dtm->d_func()->registerWidget(widget, filename, propertys); } /*! * \~chinese \brief DThemeManager::toThemeType 获取颜色的明亮度,将其转换为主题类型的枚举值。 * \~chinese 转换的策略为:先将颜色转换为rgb格式,再根据 Y = 0.299R + 0.587G + 0.114B 的公式 * \~chinese 计算出颜色的亮度,亮度大于 191 时认为其为浅色,否则认为其为深色。 * \~chinese \param color 需要转换为主题的类型的颜色 * \~chinese \return 主题类型的枚举值 */ DThemeManager::ThemeType DThemeManager::toThemeType(const QColor &color) { QColor rgb_color = color.toRgb(); // 获取rgb颜色的亮度 float luminance = 0.299 * rgb_color.redF() + 0.587 * rgb_color.greenF() + 0.114 * rgb_color.blueF(); if (qRound(luminance * 255) > 191) { return LightType; } return DarkType; } /*! * \~english \brief DThemeManager::updateQss This slot repolishes the theme applied on * \~english the sender widget. * * \~english This slot is triggered when the property of a registered widget changes, * \~english it's useful because Qt has no support of repolishing the style if some * \~english custom properties used in the QSS file has changed. * * * \~chinese \brief DThemeManager::updateQss 槽函数会刷新信号发送者的样式。 */ void DThemeManager::updateQss() { QWidget *w = qobject_cast(sender()); if (w) { w->setStyleSheet(w->styleSheet()); } } DThemeManager::DThemeManager() : QObject() , DObject(*new DThemeManagerPrivate(this)) { setTheme("light"); } bool DThemeManager::eventFilter(QObject *watched, QEvent *event) { D_D(DThemeManager); if (event->type() != QEvent::DynamicPropertyChange) { return QObject::eventFilter(watched, event); } auto widget = qobject_cast(watched); if (!d->watchedDynamicPropertys.contains(widget)) { return QObject::eventFilter(watched, event); } auto propEvent = reinterpret_cast(event); if (!propEvent) { return QObject::eventFilter(watched, event); } auto props = d->watchedDynamicPropertys.value(widget); auto propName = QString::fromLatin1(propEvent->propertyName().data()); if (props.contains(propName) && widget) { widget->setStyleSheet(widget->styleSheet()); widget->style()->unpolish(widget); widget->style()->polish(widget); widget->update(); } return QObject::eventFilter(watched, event); } /*! * \~chinese \brief DThemeManager::updateThemeOnParentChanged 槽函数用于在控件的 * \~chinese 父控件发生改变时更新控件的主题样式。 * \~chinese \param widget 为待刷新样式的控件。 */ void DThemeManager::updateThemeOnParentChanged(QWidget *widget) { if (widget->property("_d_dtk_theme").isValid()) { return; } QWidget *base_widget = nullptr; const QString &theme = this->theme(widget, &base_widget); if (!base_widget) { return; } updateWidgetTheme(this, widget, base_widget, theme); } /*! * \~chinese \brief DThemeManager::setThemeType 设置应用程序的主题类型。 * \~chinese \param themeType 新的主题类型 */ void DThemeManager::setThemeType(DThemeManager::ThemeType themeType) { D_D(DThemeManager); if (d->themeType == themeType) return; d->themeType = themeType; Q_EMIT themeTypeChanged(themeType); // 未自定义主题类型的窗口应该跟随应用程序的主题类型改变,此处需要为这些窗口发送通知 for (QWidget *window : qApp->topLevelWidgets()) { if (!window->property("_d_dtk_theme_type").isValid()) { Q_EMIT windowThemeTypeChanged(window, themeType); } } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dthememanager.h000066400000000000000000000055401352002233700207110ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTHEMEMANAGER_H #define DTHEMEMANAGER_H #include #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DThemeManagerPrivate; class LIBDTKWIDGETSHARED_EXPORT DThemeManager : public QObject, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(ThemeType themeType READ themeType WRITE setThemeType NOTIFY themeTypeChanged) public: enum ThemeType { UnknownType, LightType, DarkType }; Q_ENUM(ThemeType) static DThemeManager *instance(); QString theme() const; QString theme(const QWidget *widget, QWidget **baseWidget = nullptr) const; void setTheme(const QString theme); void setTheme(QWidget *widget, const QString theme); ThemeType themeType() const; ThemeType themeType(const QWidget *window) const; void setThemeType(QWidget *window, ThemeType type); QString getQssForWidget(const QString className, const QString &theme = QString()) const; Q_DECL_DEPRECATED QString getQssForWidget(const QString className, const QWidget *widget) const; QString getQssForWidget(const QWidget *widget) const; static void registerWidget(QWidget *widget, QStringList propertys = QStringList()); // TODO: use blow instead, the only thing should do is rebuilding // static void registerWidget(QWidget *widget, const QStringList &propertys = QStringList()); static void registerWidget(QWidget *widget, const QString &filename, const QStringList &propertys = QStringList()); static ThemeType toThemeType(const QColor &color); public Q_SLOTS: void updateQss(); void updateThemeOnParentChanged(QWidget *widget); void setThemeType(ThemeType themeType); Q_SIGNALS: void themeChanged(QString theme); void widgetThemeChanged(QWidget *widget, QString theme); void themeTypeChanged(ThemeType themeType); void windowThemeTypeChanged(QWidget *window, ThemeType type); protected: DThemeManager(); bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; private: friend class DApplication; D_DECLARE_PRIVATE(DThemeManager) }; DWIDGET_END_NAMESPACE #endif // DTHEMEMANAGER_H dtkwidget-2.1.1/src/widgets/dtickeffect.cpp000066400000000000000000000144661352002233700207250ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtickeffect.h" #include "private/dtickeffect_p.h" #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class DTickEffect * \~chinese \brief 这个类提供了跑马灯效果,可以让控件的内容滚动起来 * * 注意: 该类目前只支持滚动可视区域,如果需要滚动完整的界面,需要使用QScrollarea封装一下 * * \~chinese \enum DTickEffect::Direction 滚动方向的枚举值 * \~chinese \var DTickEffect::Direction DTickEffect::LeftToRight * \~chinese \brief 从左往右滚动 * \~chinese \var DTickEffect::Direction DTickEffect::RightToLeft * \~chinese \brief 从右往左滚动 * \~chinese \var DTickEffect::Direction DTickEffect::TopToBottom * \~chinese \brief 从上往下滚动 * \~chinese \var DTickEffect::Direction DTickEffect::BottomToTop * \~chinese \brief 从下往上滚动 * * \~chinese \fn DTickEffect::finished 调用stop方法以后会发出该信号 * \~chinese \fn DTickEffect::stateChanged 当方向发生改变时会发出该信号 */ /*! * \~chinese \brief DTickEffect的构造函数 * * @param widget 设置动画绑定的对象 * @param parent */ DTickEffect::DTickEffect(QWidget *widget, QWidget *parent) : QGraphicsEffect(parent) , DObject(*new DTickEffectPrivate(this)) { D_D(DTickEffect); widget->setGraphicsEffect(this); widget->installEventFilter(this); d->content = widget; d->init(); setDirection(DTickEffect::LeftToRight); connect(d->runAnimation, &QVariantAnimation::valueChanged, this, &DTickEffect::update); connect(d->runAnimation, &QVariantAnimation::finished, this, &DTickEffect::finished); } void DTickEffect::draw(QPainter *painter) { D_D(DTickEffect); QPoint offset; QPixmap pixmap; if (sourceIsPixmap()) pixmap = sourcePixmap(Qt::LogicalCoordinates, &offset, QGraphicsEffect::NoPad); else pixmap = sourcePixmap(Qt::DeviceCoordinates, &offset, QGraphicsEffect::NoPad); const QPoint p { d->runAnimation->currentValue().toPoint() }; const QSize size { pixmap.size() / d->content->devicePixelRatioF() }; switch (d->direction) { case LeftToRight: offset = QPoint(-size.width() + p.x(), p.y()); break; case RightToLeft: offset = QPoint(size.width() + p.x(), p.y()); break; case TopToBottom: offset = QPoint(p.x(), -size.height() + p.y()); break; case BottomToTop: offset = QPoint(p.x(), size.height() + p.y()); break; default: break; } painter->drawPixmap(d->runAnimation->currentValue().toPoint(), pixmap); painter->drawPixmap(offset, pixmap); } bool DTickEffect::eventFilter(QObject *watched, QEvent *event) { D_D(DTickEffect); if (watched == d->content && event->type() == QEvent::Resize) { d->initDirection(); } return QGraphicsEffect::eventFilter(watched, event); } /*! * \~chinese \brief 开始播放 * */ void DTickEffect::play() { D_D(DTickEffect); d->runAnimation->start(); Q_EMIT stateChanged(); } /*! * \~chinese \brief 停止播放 * */ void DTickEffect::stop() { D_D(DTickEffect); d->runAnimation->stop(); Q_EMIT stateChanged(); } /*! * \~chinese \brief 暂停播放 * */ void DTickEffect::pause() { D_D(DTickEffect); d->runAnimation->pause(); Q_EMIT stateChanged(); } /*! * \~chinese \brief 恢复播放 * */ void DTickEffect::resume() { D_D(DTickEffect); d->runAnimation->resume(); Q_EMIT stateChanged(); } /*! * \~chinese \brief 设置滚动的方向 * * @param direction */ void DTickEffect::setDirection(DTickEffect::Direction direction) { D_D(DTickEffect); if (d->direction == direction) return; d->direction = direction; d->initDirection(); stop(); play(); } /*! * \~chinese \brief 设置滚动的时长 * * @param duration */ void DTickEffect::setDuration(const int duration) { Q_UNUSED(duration); } void DTickEffect::setFixedPixelMove(const int pixel) { D_D(DTickEffect); if (d->fixPixel == pixel) return; d->fixPixel = pixel; d->initDirection(); } DTickEffectPrivate::DTickEffectPrivate(DTickEffect *qq) : DObjectPrivate(qq) { } DTickEffectPrivate::~DTickEffectPrivate() { runAnimation->deleteLater(); } void DTickEffectPrivate::init() { runAnimation = new QVariantAnimation; runAnimation->setLoopCount(-1); fixPixel = 30; } void DTickEffectPrivate::initDirection() { switch (direction) { case DTickEffect::LeftToRight: runAnimation->setStartValue(QPoint(content->x(), content->y())); runAnimation->setEndValue(QPoint(content->width(), content->y())); runAnimation->setDuration((content->width() / fixPixel) * 1000); break; case DTickEffect::RightToLeft: runAnimation->setStartValue(QPoint(content->x(), content->y())); runAnimation->setEndValue(QPoint(-content->width(), content->y())); runAnimation->setDuration((content->width() / fixPixel) * 1000); break; case DTickEffect::TopToBottom: runAnimation->setStartValue(QPoint(content->x(), content->y())); runAnimation->setEndValue(QPoint(content->x(), content->height())); runAnimation->setDuration((content->height() / fixPixel) * 1000); break; case DTickEffect::BottomToTop: runAnimation->setStartValue(QPoint(content->x(), content->y())); runAnimation->setEndValue(QPoint(content->x(), -content->height())); runAnimation->setDuration((content->height() / fixPixel) * 1000); break; default: break; } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dtickeffect.h000066400000000000000000000032251352002233700203610ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTICKEFFECT_H #define DTICKEFFECT_H #include "dtkwidget_global.h" #include "dobject.h" #include DWIDGET_BEGIN_NAMESPACE class DTickEffectPrivate; class LIBDTKWIDGETSHARED_EXPORT DTickEffect : public QGraphicsEffect, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DTickEffect(QWidget *widget, QWidget *parent = 0); enum Direction{ LeftToRight, RightToLeft, TopToBottom, BottomToTop }; void play(); void stop(); void pause(); void resume(); void setDirection(Direction direction); D_DECL_DEPRECATED void setDuration(const int duration); void setFixedPixelMove(const int pixel); Q_SIGNALS: void finished(); void stateChanged(); protected: void draw(QPainter *painter) Q_DECL_OVERRIDE; bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DTickEffect) }; DWIDGET_END_NAMESPACE #endif // DTICKEFFECT_H dtkwidget-2.1.1/src/widgets/dtitlebar.cpp000066400000000000000000001003541352002233700204140ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtitlebar.h" #include #include #include #include #include #include #include #include "dwindowclosebutton.h" #include "dwindowmaxbutton.h" #include "dwindowminbutton.h" #include "dwindowoptionbutton.h" #include "dlabel.h" #include "dplatformwindowhandle.h" #ifdef Q_OS_LINUX #include "../platforms/x11/xutil.h" #endif #include "daboutdialog.h" #include "dapplication.h" #include "private/dapplication_p.h" #include "dthememanager.h" #include "util/dwindowmanagerhelper.h" #include "dmainwindow.h" DWIDGET_BEGIN_NAMESPACE const int DefaultTitlebarHeight = 40; const int DefaultIconHeight = 24; const int DefaultIconWidth = 24; class DTitlebarPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { protected: DTitlebarPrivate(DTitlebar *qq); private: void init(); QWidget *targetWindow(); // FIXME: get a batter salution // hide title will make eventFilter not work, instead set Height to zero bool isVisableOnFullscreen(); void hideOnFullscreen(); void showOnFullscreen(); void updateFullscreen(); void updateButtonsState(Qt::WindowFlags type); void updateButtonsFunc(); void handleParentWindowStateChange(); void handleParentWindowIdChange(); void _q_toggleWindowState(); void _q_showMinimized(); void _q_onTopWindowMotifHintsChanged(quint32 winId); #ifndef QT_NO_MENU void _q_addDefaultMenuItems(); void _q_helpActionTriggered(); void _q_aboutActionTriggered(); void _q_quitActionTriggered(); #endif QHBoxLayout *mainLayout; DLabel *iconLabel; DLabel *titleLabel; DWindowMinButton *minButton; DWindowMaxButton *maxButton; DWindowCloseButton *closeButton; DWindowOptionButton *optionButton; DImageButton *quitFullButton; QWidget *customWidget = Q_NULLPTR; QWidget *coustomAtea; QWidget *buttonArea; QWidget *titleArea; QWidget *titlePadding; QLabel *separatorTop; QLabel *separator; #ifndef QT_NO_MENU QMenu *menu = Q_NULLPTR; QAction *helpAction = Q_NULLPTR; QAction *aboutAction = Q_NULLPTR; QAction *quitAction = Q_NULLPTR; #endif QWindow *targetWindowHandle = Q_NULLPTR; Qt::WindowFlags disableFlags; bool mousePressed = false; bool embedMode = false; bool autoHideOnFullscreen = false; Q_DECLARE_PUBLIC(DTitlebar) }; DTitlebarPrivate::DTitlebarPrivate(DTitlebar *qq): DObjectPrivate(qq) { } void DTitlebarPrivate::init() { D_Q(DTitlebar); mainLayout = new QHBoxLayout; iconLabel = new DLabel; titleLabel = new DLabel; minButton = new DWindowMinButton; maxButton = new DWindowMaxButton; closeButton = new DWindowCloseButton; optionButton = new DWindowOptionButton; quitFullButton = new DImageButton; coustomAtea = new QWidget; buttonArea = new QWidget; titleArea = new QWidget; titlePadding = new QWidget; separatorTop = new QLabel(q); separator = new QLabel(q); optionButton->setObjectName("DTitlebarDWindowOptionButton"); minButton->setObjectName("DTitlebarDWindowMinButton"); maxButton->setObjectName("DTitlebarDWindowMaxButton"); closeButton->setObjectName("DTitlebarDWindowCloseButton"); quitFullButton->setObjectName("DTitlebarDWindowQuitFullscreenButton"); quitFullButton->hide(); mainLayout->setContentsMargins(6, 0, 0, 0); mainLayout->setSpacing(0); iconLabel->setFixedSize(DefaultIconWidth, DefaultIconHeight); iconLabel->setWindowFlags(Qt::WindowTransparentForInput); titleLabel->setText(qApp->applicationName()); // TODO: use QSS titleLabel->setStyleSheet("font-size: 12px;"); titleLabel->setContentsMargins(0, 0, DefaultIconWidth + 10, 0); titleLabel->setWindowFlags(Qt::WindowTransparentForInput); // q->setStyleSheet("background-color: green;"); separatorTop->setFixedHeight(1); separatorTop->setStyleSheet("background: rgba(0, 0, 0, 20);"); separatorTop->hide(); separatorTop->setWindowFlags(Qt::WindowTransparentForInput); separator->setFixedHeight(1); separator->setStyleSheet("background: rgba(0, 0, 0, 20);"); separator->hide(); separator->setWindowFlags(Qt::WindowTransparentForInput); QHBoxLayout *buttonAreaLayout = new QHBoxLayout; buttonAreaLayout->setContentsMargins(0, 0, 0, 0); buttonAreaLayout->setMargin(0); buttonAreaLayout->setSpacing(0); buttonAreaLayout->addWidget(optionButton); buttonAreaLayout->addWidget(minButton); buttonAreaLayout->addWidget(maxButton); buttonAreaLayout->addWidget(closeButton); buttonAreaLayout->addWidget(quitFullButton); buttonArea->setLayout(buttonAreaLayout); QHBoxLayout *titleAreaLayout = new QHBoxLayout; titleAreaLayout->setContentsMargins(4, 0, 10 + iconLabel->width(), 0); titleAreaLayout->setSpacing(0); titleAreaLayout->addWidget(iconLabel); titleAreaLayout->setAlignment(iconLabel, Qt::AlignLeft); titlePadding->setFixedSize(buttonArea->size()); titlePadding->setWindowFlags(Qt::WindowTransparentForInput); titleAreaLayout->addWidget(titlePadding); titleAreaLayout->addStretch(); titleAreaLayout->addWidget(titleLabel); titleAreaLayout->setAlignment(titleLabel, Qt::AlignCenter); titleAreaLayout->addStretch(); titleArea->setLayout(titleAreaLayout); titleArea->setWindowFlags(Qt::WindowTransparentForInput); QHBoxLayout *coustomAteaLayout = new QHBoxLayout; coustomAteaLayout->setMargin(0); coustomAteaLayout->setSpacing(0); coustomAteaLayout->addWidget(titleArea); coustomAtea->setLayout(coustomAteaLayout); mainLayout->addWidget(coustomAtea); mainLayout->addWidget(buttonArea); mainLayout->setAlignment(buttonArea, Qt::AlignRight | Qt::AlignVCenter); q->setLayout(mainLayout); q->setFixedHeight(DefaultTitlebarHeight); q->setMinimumHeight(DefaultTitlebarHeight); coustomAtea->setFixedHeight(q->height()); buttonArea->setFixedHeight(q->height()); q->connect(quitFullButton, &DImageButton::clicked, q, [ = ]() { bool isFullscreen = targetWindow()->windowState().testFlag(Qt::WindowFullScreen); if (isFullscreen) { targetWindow()->showNormal(); } else { targetWindow()->showFullScreen(); } }); q->connect(optionButton, &DWindowOptionButton::clicked, q, &DTitlebar::optionClicked); q->connect(DWindowManagerHelper::instance(), SIGNAL(windowMotifWMHintsChanged(quint32)), q, SLOT(_q_onTopWindowMotifHintsChanged(quint32))); } QWidget *DTitlebarPrivate::targetWindow() { D_Q(DTitlebar); return q->topLevelWidget()->window(); } bool DTitlebarPrivate::isVisableOnFullscreen() { D_Q(DTitlebar); return !q->property("_restore_height").isValid(); } void DTitlebarPrivate::hideOnFullscreen() { D_Q(DTitlebar); if (q->height() > 0) { q->setProperty("_restore_height", q->height()); } q->setFixedHeight(0); } void DTitlebarPrivate::showOnFullscreen() { D_Q(DTitlebar); if (q->property("_restore_height").isValid()) { q->setFixedHeight(q->property("_restore_height").toInt()); q->setProperty("_restore_height", QVariant()); } } void DTitlebarPrivate::updateFullscreen() { D_Q(DTitlebar); if (!autoHideOnFullscreen) { return; } bool isFullscreen = targetWindow()->windowState().testFlag(Qt::WindowFullScreen); auto mainWindow = qobject_cast(targetWindow()); if (!isFullscreen) { quitFullButton->hide(); mainWindow->setMenuWidget(q); showOnFullscreen(); } else { // must set to empty quitFullButton->show(); if (mainWindow->menuWidget()) { mainWindow->menuWidget()->setParent(nullptr); mainWindow->setMenuWidget(Q_NULLPTR); } q->setParent(mainWindow); q->show(); hideOnFullscreen(); } } void DTitlebarPrivate::updateButtonsState(Qt::WindowFlags type) { D_Q(DTitlebar); bool useDXcb = DPlatformWindowHandle::isEnabledDXcb(targetWindow()); bool isFullscreen = targetWindow()->windowState().testFlag(Qt::WindowFullScreen); bool forceShow = !useDXcb; #ifndef Q_OS_LINUX forceShow = false; #endif bool showTitle = (type.testFlag(Qt::WindowTitleHint) || forceShow) && !embedMode; if (titleLabel) { titleLabel->setVisible(showTitle); } if (iconLabel) { iconLabel->setVisible(showTitle); } // Never show in embed/fullscreen bool forceHide = embedMode || isFullscreen; bool showMin = (type.testFlag(Qt::WindowMinimizeButtonHint) || forceShow) && !forceHide; minButton->setVisible(showMin); bool allowResize = true; if (q->window() && q->window()->windowHandle()) { auto functions_hints = DWindowManagerHelper::getMotifFunctions(q->window()->windowHandle()); allowResize = functions_hints.testFlag(DWindowManagerHelper::FUNC_RESIZE); } bool showMax = (type.testFlag(Qt::WindowMaximizeButtonHint) || forceShow) && !forceHide && allowResize; // qDebug() << "max:" // << "allowResize" << allowResize // << "useDXcb" << useDXcb // << "forceHide" << forceHide // << "type.testFlag(Qt::WindowMaximizeButtonHint)" << type.testFlag(Qt::WindowMaximizeButtonHint); maxButton->setVisible(showMax); bool showClose = (type.testFlag(Qt::WindowCloseButtonHint) || forceShow) && !forceHide; closeButton->setVisible(showClose); buttonArea->adjustSize(); buttonArea->resize(buttonArea->size()); if (titlePadding) { titlePadding->setFixedSize(buttonArea->size()); } } void DTitlebarPrivate::updateButtonsFunc() { if (!targetWindowHandle) { return; } // 根据 disableFlags 更新窗口标志,而标题栏上具体按钮的开启/禁用状态只根据 // 窗口标志改变后做更新,且窗口标志改变后也会同步更新 disableFlags 的值, // 也就是说,实际上窗口按钮的状态只受窗口标志影响,而 setDisableFlags // 只是单纯的记录新的 disableFlags 的值,由于调用 setDisableFlags // 是应用中的主动行为,所以同时也会根据这个值更新窗口标志。 DWindowManagerHelper::setMotifFunctions( targetWindowHandle, DWindowManagerHelper::FUNC_MAXIMIZE, !disableFlags.testFlag(Qt::WindowMaximizeButtonHint)); DWindowManagerHelper::setMotifFunctions( targetWindowHandle, DWindowManagerHelper::FUNC_MINIMIZE, !disableFlags.testFlag(Qt::WindowMinimizeButtonHint)); DWindowManagerHelper::setMotifFunctions( targetWindowHandle, DWindowManagerHelper::FUNC_CLOSE, !disableFlags.testFlag(Qt::WindowCloseButtonHint)); } void DTitlebarPrivate::handleParentWindowStateChange() { maxButton->setMaximized(targetWindow()->windowState() == Qt::WindowMaximized); updateFullscreen(); updateButtonsState(targetWindow()->windowFlags()); } //! //! \brief DTitlebarPrivate::handleParentWindowIdChange //! Them WindowStateChnage Event will miss some state changed message, //! So use windowHandle::windowStateChanged instead void DTitlebarPrivate::handleParentWindowIdChange() { if (!targetWindowHandle) { targetWindowHandle = targetWindow()->windowHandle(); updateButtonsFunc(); } else if (targetWindow()->windowHandle() != targetWindowHandle) { // Parent change???, show never here qWarning() << "targetWindowHandle change" << targetWindowHandle << targetWindow()->windowHandle(); } } void DTitlebarPrivate::_q_toggleWindowState() { QWidget *parentWindow = targetWindow(); if (!parentWindow || disableFlags.testFlag(Qt::WindowMaximizeButtonHint)) { return; } if (parentWindow->isMaximized()) { parentWindow->showNormal(); } else if (!parentWindow->isFullScreen() && (maxButton->isVisible())) { maxButton->setState(DImageButton::Normal); parentWindow->showMaximized(); } } void DTitlebarPrivate::_q_showMinimized() { minButton->setState(DImageButton::Normal); targetWindow()->showMinimized(); } #if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) static Qt::WindowFlags &setWindowFlag(Qt::WindowFlags &flags, Qt::WindowType type, bool on) { return on ? (flags |= type) : (flags &= ~int(type)); } #endif void DTitlebarPrivate::_q_onTopWindowMotifHintsChanged(quint32 winId) { D_QC(DTitlebar); if (!DPlatformWindowHandle::isEnabledDXcb(targetWindow())) { q->disconnect(DWindowManagerHelper::instance(), SIGNAL(windowMotifWMHintsChanged(quint32)), q, SLOT(_q_onTopWindowMotifHintsChanged(quint32))); return; } if (winId != q->window()->internalWinId()) { return; } DWindowManagerHelper::MotifDecorations decorations_hints = DWindowManagerHelper::getMotifDecorations(q->window()->windowHandle()); DWindowManagerHelper::MotifFunctions functions_hints = DWindowManagerHelper::getMotifFunctions(q->window()->windowHandle()); if (titleLabel) { titleLabel->setVisible(decorations_hints.testFlag(DWindowManagerHelper::DECOR_TITLE)); } if (iconLabel) { iconLabel->setVisible(decorations_hints.testFlag(DWindowManagerHelper::DECOR_TITLE)); } updateButtonsState(targetWindow()->windowFlags()); minButton->setEnabled(functions_hints.testFlag(DWindowManagerHelper::FUNC_MINIMIZE)); maxButton->setEnabled(functions_hints.testFlag(DWindowManagerHelper::FUNC_MAXIMIZE) && functions_hints.testFlag(DWindowManagerHelper::FUNC_RESIZE)); closeButton->setEnabled(functions_hints.testFlag(DWindowManagerHelper::FUNC_CLOSE)); // sync button state #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) disableFlags.setFlag(Qt::WindowMinimizeButtonHint, !minButton->isEnabled()); disableFlags.setFlag(Qt::WindowMaximizeButtonHint, !maxButton->isEnabled()); disableFlags.setFlag(Qt::WindowCloseButtonHint, !closeButton->isEnabled()); #else setWindowFlag(disableFlags, Qt::WindowMinimizeButtonHint, !minButton->isEnabled()); setWindowFlag(disableFlags, Qt::WindowMaximizeButtonHint, !maxButton->isEnabled()); setWindowFlag(disableFlags, Qt::WindowCloseButtonHint, !closeButton->isEnabled()); #endif if (titlePadding) { titlePadding->setFixedSize(buttonArea->size()); } } #ifndef QT_NO_MENU void DTitlebarPrivate::_q_addDefaultMenuItems() { D_Q(DTitlebar); if (!menu) { q->setMenu(new QMenu(q)); } // add help menu item. if (!helpAction && DApplicationPrivate::isUserManualExists()) { helpAction = new QAction(qApp->translate("TitleBarMenu", "Help"), menu); QObject::connect(helpAction, SIGNAL(triggered(bool)), q, SLOT(_q_helpActionTriggered())); menu->addAction(helpAction); } // add about menu item. if (!aboutAction) { aboutAction = new QAction(qApp->translate("TitleBarMenu", "About"), menu); QObject::connect(aboutAction, SIGNAL(triggered(bool)), q, SLOT(_q_aboutActionTriggered())); menu->addAction(aboutAction); } // add quit menu item. if (!quitAction) { quitAction = new QAction(qApp->translate("TitleBarMenu", "Exit"), menu); QObject::connect(quitAction, SIGNAL(triggered(bool)), q, SLOT(_q_quitActionTriggered())); menu->addAction(quitAction); } } void DTitlebarPrivate::_q_helpActionTriggered() { DApplication *dapp = qobject_cast(qApp); if (dapp) { dapp->handleHelpAction(); } } void DTitlebarPrivate::_q_aboutActionTriggered() { DApplication *dapp = qobject_cast(qApp); if (dapp) { dapp->handleAboutAction(); } } void DTitlebarPrivate::_q_quitActionTriggered() { DApplication *dapp = qobject_cast(qApp); if (dapp) { dapp->handleQuitAction(); } } #endif /*! * \~english \class DTitlebar * \brief The DTitlebar class is an universal title bar on the top of windows. * \param parent is the parent widget to be attached on. * * Usually you don't need to construct a DTitlebar instance by your self, you * can get an DTitlebar instance by DMainWindow::titlebar . */ /*! * \~chinese \class DTitlebar * \brief Dtitlebar是Dtk程序通用的标题栏组件,用于实现标题栏的高度定制化。 * \param 父组件,一般为标题栏所在的窗口 * * 一般情况下,请使用Dtk::Widget::DMainWindow::titlebar()来获取已经自动初始化的标题栏, * 不要自己来创建这个标题栏。 */ /*! * \~english @brief DTitlebar::DTitlebar create an default widget with icon/title/and buttons * @param parent */ /*! * \~chinese @brief 创建一个DTitlebar对象,包含默认的窗口按钮。 */ DTitlebar::DTitlebar(QWidget *parent) : QFrame(parent), DObject(*new DTitlebarPrivate(this)) { if (DApplication::buildDtkVersion() < DTK_VERSION_CHECK(2, 0, 6, 1)) { setBackgroundTransparent(true); } DThemeManager::registerWidget(this, QStringList({"transparent"})); D_D(DTitlebar); d->init(); // 默认只在普通窗口中显示窗口菜单按钮 if (parent && parent->window()->windowType() != Qt::Window) { d->optionButton->hide(); } d->buttonArea->adjustSize(); d->buttonArea->resize(d->buttonArea->size()); d->titlePadding->setFixedSize(d->buttonArea->size()); } #ifndef QT_NO_MENU /*! * \~english @brief DTitlebar::menu holds the QMenu object attached to this title bar. * @return the QMenu object it holds, returns null if there's no one set. */ /*! * \~chinese @brief 获取和标题栏关联的应用查询菜单。 * @return 如该标题栏没有设置菜单,这里会返回空,但是如该使用 Dtk::Widget::DApplication , * 那么这里一般会自动创建一个程序菜单。 */ QMenu *DTitlebar::menu() const { D_DC(DTitlebar); return d->menu; } /*! * \~english @brief DTitlebar::setMenu attaches a QMenu object to the title bar. * @param menu is the target menu. */ /*! * \~chinese @brief 设置自定义的程序菜单 * @param 需要被设置的菜单 */ void DTitlebar::setMenu(QMenu *menu) { D_D(DTitlebar); d->menu = menu; if (d->menu) { disconnect(this, &DTitlebar::optionClicked, 0, 0); connect(this, &DTitlebar::optionClicked, this, &DTitlebar::showMenu); } } #endif /*! * \~english @brief DTitlebar::customWidget * @return the customized widget used in this title bar. * * One can set customized widget to show some extra widgets on the title bar. * \see Dtk::Widget::DTitlebar::setCustomWidget() */ /*! * \~chinese @brief 标题栏绑定的自定义控件 * @return 自定义控件 * * 可以通过自定义控件来在标题栏上显示复杂的组合控件 * * \see Dtk::Widget::DTitlebar::setCustomWidget() */ QWidget *DTitlebar::customWidget() const { D_DC(DTitlebar); return d->customWidget; } #ifndef QT_NO_MENU /*! * \~english \brief DTitlebar::showMenu pop the menu of application on titlebar. */ /*! * \~chineses \brief 弹出应用程序菜单 */ void DTitlebar::showMenu() { D_D(DTitlebar); if (d->menu) { d->optionButton->setState(DImageButton::Normal); d->menu->exec(d->optionButton->mapToGlobal(d->optionButton->rect().bottomLeft())); } } #endif void DTitlebar::showEvent(QShowEvent *event) { //fix the width issue and process menu D_D(DTitlebar); d->separatorTop->setFixedWidth(width()); d->separatorTop->move(0, 0); d->separator->setFixedWidth(width()); d->separator->move(0, height() - d->separator->height()); #ifndef QT_NO_MENU d->_q_addDefaultMenuItems(); #endif QWidget::showEvent(event); if (DPlatformWindowHandle::isEnabledDXcb(window())) { d->_q_onTopWindowMotifHintsChanged( static_cast(window()->internalWinId())); } } void DTitlebar::mousePressEvent(QMouseEvent *event) { D_D(DTitlebar); d->mousePressed = (event->buttons() == Qt::LeftButton); if (event->button() == Qt::RightButton) { DWindowManagerHelper::popupSystemWindowMenu(window()->windowHandle()); return; } #ifdef DTK_TITLE_DRAG_WINDOW Q_EMIT mousePosPressed(event->buttons(), event->globalPos()); #endif Q_EMIT mousePressed(event->buttons()); } void DTitlebar::mouseReleaseEvent(QMouseEvent *event) { D_D(DTitlebar); if (event->buttons() == Qt::LeftButton) { d->mousePressed = false; } } bool DTitlebar::eventFilter(QObject *obj, QEvent *event) { D_D(DTitlebar); if (obj == d->targetWindow()) { switch (event->type()) { case QEvent::ShowToParent: d->handleParentWindowIdChange(); d->updateButtonsState(d->targetWindow()->windowFlags()); break; case QEvent::Resize: if (d->autoHideOnFullscreen) { setFixedWidth(d->targetWindow()->width()); } break; case QEvent::HoverMove: { auto mouseEvent = reinterpret_cast(event); bool isFullscreen = d->targetWindow()->windowState().testFlag(Qt::WindowFullScreen); if (isFullscreen && d->autoHideOnFullscreen) { if (mouseEvent->pos().y() > height() && d->isVisableOnFullscreen()) { d->hideOnFullscreen(); } if (mouseEvent->pos().y() < 2) { d->showOnFullscreen(); } } break; } case QEvent::WindowStateChange: { d->handleParentWindowStateChange(); break; } default: break; } } return QWidget::eventFilter(obj, event); } void DTitlebar::resizeEvent(QResizeEvent *event) { //override QWidget::resizeEvent to fix button and separator pos. D_D(DTitlebar); d->optionButton->setFixedHeight(event->size().height()); d->minButton->setFixedHeight(event->size().height()); d->maxButton->setFixedHeight(event->size().height()); d->closeButton->setFixedHeight(event->size().height()); d->separatorTop->setFixedWidth(event->size().width()); d->separator->setFixedWidth(event->size().width()); return QWidget::resizeEvent(event); } /*! * \~english @brief DTitlebar::setCustomWidget is an overloaded function. * @param w is the widget to be used as the customize widget shown in the title * bar. * @param fixCenterPos indicates whether it should automatically move the * customize widget to the horizontal center of the title bar or not. */ /*! * \~chinese @brief 设置标题栏上的自定义控件 * @param w 需要显示的控件。 * @param fixCenterPos 是否需要自动修正控件位置,用于保持控件居中显示。 */ void DTitlebar::setCustomWidget(QWidget *w, bool fixCenterPos) { setCustomWidget(w, Qt::AlignCenter, fixCenterPos); } /*! * \~english @brief DTitlebar::setCustomWidget sets a customized widget to be used as the * central content of the title bar. * @param w is the widget to be used as the customize widget shown in the title * bar. * @param wflag is used to vertically align the widget. * @param fixCenterPos indicates whether it should automatically move the * customize widget to the horizontal center of the title bar or not. */ /*! * \~chinese @brief 设置标题栏上的自定义控件 * @param w 需要显示的控件。 * @param wflag 控件对齐方式。 * @param fixCenterPos 是否需要自动修正控件位置,用于保持控件居中显示。 */ void DTitlebar::setCustomWidget(QWidget *w, Qt::AlignmentFlag wflag, bool fixCenterPos) { D_D(DTitlebar); if (!w || w == d->titleArea) { return; } QSize old = d->buttonArea->size(); QHBoxLayout *l = new QHBoxLayout; l->setSpacing(0); l->setMargin(0); if (fixCenterPos) { d->titlePadding = new QWidget; d->titlePadding->setFixedSize(old); l->addWidget(d->titlePadding); } l->addWidget(w, 0, wflag); qDeleteAll(d->coustomAtea->children()); d->titleLabel = Q_NULLPTR; d->titleArea = Q_NULLPTR; d->iconLabel = Q_NULLPTR; d->titlePadding = Q_NULLPTR; d->coustomAtea->setLayout(l); d->buttonArea->resize(old); d->customWidget = w; w->resize(d->coustomAtea->size()); } /*! * \~english @brief DTitlebar::setFixedHeight change the height of the title bar to * another value. * @param h is the target height. */ /*! * \~chinese @brief 设置标题栏的高度,默认高度为40。 * @param h 需要设置的高度 */ void DTitlebar::setFixedHeight(int h) { D_D(DTitlebar); QWidget::setFixedHeight(h); d->coustomAtea->setFixedHeight(h); d->buttonArea->setFixedHeight(h); } /*! * \~english @brief DTitlebar::setBackgroundTransparent set the title background transparent * @param transparent is the targeting value. */ /*! * \~chinese @brief 设置标题栏背景是否透明,当为透明时标题栏直接叠加在下层控件上。 * @param transparent 是否透明 */ void DTitlebar::setBackgroundTransparent(bool transparent) { setProperty("transparent", transparent); } /*! * \~english @brief DTitlebar::setSeparatorVisible sets the bottom separator of the title * bar and the window contents to be visible or not. * @param visible is the targeting value. */ /*! * \~chinese @brief 设置菜单下面的分隔线是否可见,默认是可见的。 * @param 是否可见 */ void DTitlebar::setSeparatorVisible(bool visible) { D_D(DTitlebar); if (visible) { d->separator->show(); d->separator->raise(); } else { d->separator->hide(); } } /*! * \~english @brief DTitlebar::setTitle sets the title to be shown on the title bar. * @param title is the text to be used as the window title. */ /*! * \~chinese @brief 设置标题栏文本。 * @param 待设置内容 */ void DTitlebar::setTitle(const QString &title) { D_D(DTitlebar); if (d->titleLabel && !d->embedMode) { d->titleLabel->setText(title); } else if (parentWidget()) { parentWidget()->setWindowTitle(title); } } /*! * \~english @brief DTitlebar::setIcon sets the icon to be shown on the title bar. * @param icon is to be used as the window icon. */ /*! * \~chinese @brief 设置标题栏图标 * @param 待设置的图标 */ void DTitlebar::setIcon(const QIcon &icon) { D_D(DTitlebar); if (d->titleLabel && !d->embedMode) { d->titleLabel->setContentsMargins(0, 0, 0, 0); d->iconLabel->setPixmap(icon.pixmap(QSize(DefaultIconWidth, DefaultIconHeight))); } else if (parentWidget()) { parentWidget()->setWindowIcon(icon); } } void DTitlebar::toggleWindowState() { D_D(DTitlebar); d->_q_toggleWindowState(); } /*! * \~english @brief DTitlebar::buttonAreaWidth returns the width of the area that all the * window buttons occupies. */ /*! * \~chinese @brief 按钮区域大小,用于手动定位自定义控件时使用。 */ int DTitlebar::buttonAreaWidth() const { D_DC(DTitlebar); return d->buttonArea->width(); } /*! * \~english @brief DTitlebar::separatorVisible returns the visibility of the bottom * separator of the titlebar. */ /*! * \~chinese @brief 分隔线是否可见。 */ bool DTitlebar::separatorVisible() const { D_DC(DTitlebar); return d->separator->isVisible(); } /*! * \~english @brief DTitlebar::autoHideOnFullscreen returns if titlebar show on fullscreen mode. * separator of the titlebar. */ /*! * \~chinese @brief 全屏模式下标题栏是否自动隐藏 */ bool DTitlebar::autoHideOnFullscreen() const { D_DC(DTitlebar); return d->autoHideOnFullscreen; } /*! * \~english \brief DTitlebar::setAutoHideOnFullscreen set if titlebar show when window is fullscreen state. * \param autohide */ /*! * \~chinese \brief 设置全屏模式下是否需要自动隐藏标题栏 * \param 是否自动隐藏 */ void DTitlebar::setAutoHideOnFullscreen(bool autohide) { D_D(DTitlebar); d->autoHideOnFullscreen = autohide; } void DTitlebar::setVisible(bool visible) { D_D(DTitlebar); if (visible == isVisible()) { return; } QWidget::setVisible(visible); if (visible) { if (!d->targetWindow()) { return; } d->targetWindow()->installEventFilter(this); connect(d->maxButton, SIGNAL(clicked()), this, SLOT(_q_toggleWindowState())); connect(this, SIGNAL(doubleClicked()), this, SLOT(_q_toggleWindowState())); connect(d->minButton, SIGNAL(clicked()), this, SLOT(_q_showMinimized())); connect(d->closeButton, &DWindowCloseButton::clicked, d->targetWindow(), &QWidget::close); d->updateButtonsState(d->targetWindow()->windowFlags()); } else { if (!d->targetWindow()) { return; } d->targetWindow()->removeEventFilter(this); disconnect(d->maxButton, SIGNAL(clicked()), this, SLOT(_q_toggleWindowState())); disconnect(this, SIGNAL(doubleClicked()), this, SLOT(_q_toggleWindowState())); disconnect(d->minButton, SIGNAL(clicked()), this, SLOT(_q_showMinimized())); disconnect(d->closeButton, &DWindowCloseButton::clicked, d->targetWindow(), &QWidget::close); } } /*! * \~english @brief DTitlebar::setEmbedMode set a titlebar is in parent; */ /*! * \~chinese @brief 设置为嵌入模式,而不是替换系统标题栏,用于不支持dxcb的平台 */ void DTitlebar::setEmbedMode(bool visible) { D_D(DTitlebar); d->embedMode = visible; d->separatorTop->setVisible(visible); d->updateButtonsState(windowFlags()); } void DTitlebar::resize(int w, int h) { D_DC(DTitlebar); if (d->customWidget) { d->customWidget->resize(w - d->buttonArea->width(), h); } } void DTitlebar::resize(const QSize &sz) { DTitlebar::resize(sz.width(), sz.height()); } bool DTitlebar::menuIsVisible() const { D_DC(DTitlebar); return !d->optionButton->isVisible(); } void DTitlebar::setMenuVisible(bool visible) { D_D(DTitlebar); d->optionButton->setVisible(visible); } bool DTitlebar::menuIsDisabled() const { D_DC(DTitlebar); return !d->optionButton->isEnabled(); } void DTitlebar::setMenuDisabled(bool disabled) { D_D(DTitlebar); d->optionButton->setDisabled(disabled); } /*! * \~english \brief DTitlebar::setDisableFlags will disable button match flags. * \param flags */ /*! * \~chinese \brief 设置需要被禁用的按钮,仅仅是在界面上禁用按钮,还是可以通过事件等机制来调用对应接口。 * \param flags 需要被禁用的按钮标志位 */ void DTitlebar::setDisableFlags(Qt::WindowFlags flags) { D_D(DTitlebar); d->disableFlags = flags; d->updateButtonsFunc(); } /*! * \~english \brief DTitlebar::disableFlags return which button is disabled. */ /*! * \~chinese \brief 当前被禁用的按钮标志位。 */ Qt::WindowFlags DTitlebar::disableFlags() const { D_DC(DTitlebar); return d->disableFlags; } void DTitlebar::mouseMoveEvent(QMouseEvent *event) { Qt::MouseButton button = event->buttons() & Qt::LeftButton ? Qt::LeftButton : Qt::NoButton; if (event->buttons() == Qt::LeftButton /*&& d->mousePressed*/) { Q_EMIT mouseMoving(button); } #ifdef DTK_TITLE_DRAG_WINDOW D_D(DTitlebar); if (d->mousePressed) { Q_EMIT mousePosMoving(button, event->globalPos()); } #endif QWidget::mouseMoveEvent(event); } void DTitlebar::mouseDoubleClickEvent(QMouseEvent *event) { D_D(DTitlebar); if (event->buttons() == Qt::LeftButton) { d->mousePressed = false; Q_EMIT doubleClicked(); } } DWIDGET_END_NAMESPACE #include "moc_dtitlebar.cpp" dtkwidget-2.1.1/src/widgets/dtitlebar.h000066400000000000000000000066341352002233700200670ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTITLEBAR_H #define DTITLEBAR_H #include #include #include #include "dtkwidget_global.h" DWIDGET_BEGIN_NAMESPACE class DTitlebarPrivate; class LIBDTKWIDGETSHARED_EXPORT DTitlebar : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT public: explicit DTitlebar(QWidget *parent = Q_NULLPTR); #ifndef QT_NO_MENU QMenu *menu() const; void setMenu(QMenu *menu); #endif QWidget *customWidget() const; void setCustomWidget(QWidget *, bool fixCenterPos = false); void setCustomWidget(QWidget *, Qt::AlignmentFlag flag = Qt::AlignCenter, bool fixCenterPos = false); int buttonAreaWidth() const; bool separatorVisible() const; bool autoHideOnFullscreen() const; void setAutoHideOnFullscreen(bool autohide); void setVisible(bool visible) Q_DECL_OVERRIDE; void setEmbedMode(bool embed); void resize(int width, int height); void resize(const QSize &); bool menuIsVisible() const; void setMenuVisible(bool visible); bool menuIsDisabled() const; void setMenuDisabled(bool disabled); void setDisableFlags(Qt::WindowFlags flags); Qt::WindowFlags disableFlags() const; Q_SIGNALS: void optionClicked(); void doubleClicked(); void mousePressed(Qt::MouseButtons buttons); void mouseMoving(Qt::MouseButton button); #ifdef DTK_TITLE_DRAG_WINDOW void mousePosPressed(Qt::MouseButtons buttons, QPoint pos); void mousePosMoving(Qt::MouseButton button, QPoint pos); #endif public Q_SLOTS: void setFixedHeight(int h); void setBackgroundTransparent(bool transparent); void setSeparatorVisible(bool visible); void setTitle(const QString &title); void setIcon(const QIcon &icon); /// Maximized/Minumized void toggleWindowState(); private Q_SLOTS: #ifndef QT_NO_MENU void showMenu(); #endif protected: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DTitlebar) D_PRIVATE_SLOT(void _q_toggleWindowState()) D_PRIVATE_SLOT(void _q_showMinimized()) D_PRIVATE_SLOT(void _q_onTopWindowMotifHintsChanged(quint32)) #ifndef QT_NO_MENU D_PRIVATE_SLOT(void _q_addDefaultMenuItems()) D_PRIVATE_SLOT(void _q_helpActionTriggered()) D_PRIVATE_SLOT(void _q_aboutActionTriggered()) D_PRIVATE_SLOT(void _q_quitActionTriggered()) #endif }; DWIDGET_END_NAMESPACE #endif // DTITLEBAR_H dtkwidget-2.1.1/src/widgets/dtoast.cpp000066400000000000000000000124321352002233700177370ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * Author: Iceyer * * Maintainer: Iceyer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dtoast.h" #include #include #include #include #include #include #include "dthememanager.h" #include "dgraphicsgloweffect.h" #include "dhidpihelper.h" DWIDGET_BEGIN_NAMESPACE class DToastPrivate: public DTK_CORE_NAMESPACE::DObjectPrivate { public: DToastPrivate(DToast *qq); QIcon icon; QLabel *iconLabel = Q_NULLPTR; QLabel *textLabel = Q_NULLPTR; int duration = 2000; QPropertyAnimation *animation = Q_NULLPTR; DGraphicsGlowEffect *effect = Q_NULLPTR; void initUI(); private: D_DECLARE_PUBLIC(DToast) }; /** * \~chinese \class DToast * \~chinese \brief 提供应用内通知的 Tooltip,类似安卓的 Toast。 * \~chinese \image html DToast.gif * \~chinese \param parent */ DToast::DToast(QWidget *parent) : QFrame(parent), DObject(*new DToastPrivate(this)) { D_D(DToast); DThemeManager::registerWidget(this); d->initUI(); } DToast::~DToast() { } /*! * \~chinese \brief 显示的内容 */ QString DToast::text() const { D_DC(DToast); return d->textLabel->text(); } /*! * \~chinese \brief 显示的图标 */ QIcon DToast::icon() const { D_DC(DToast); return d->icon; } /*! * \~chinese \brief 显示时长 */ int DToast::duration() const { D_DC(DToast); return d->duration; } /*! * \~chinese \brief 不透明度 */ qreal DToast::opacity() const { D_DC(DToast); return d->effect->opacity(); } /*! * \~chinese \brief 设置文本内容 */ void DToast::setText(QString text) { D_D(DToast); d->textLabel->setVisible(true); d->textLabel->setText(text); } /*! * \~chinese \brief 设置图标 * \~chinese \param iconfile 从资源中加载图标 */ void DToast::setIcon(QString iconfile) { D_D(DToast); d->icon = QIcon(iconfile); d->iconLabel->setVisible(true); d->iconLabel->setPixmap(DHiDPIHelper::loadNxPixmap(iconfile)); } /*! * \~chinese \brief 设置图标 * \~chinese \param icon QIcon 对象导入图标 * \~chinese \param defaultSize 设置图标大小 */ void DToast::setIcon(QIcon icon, QSize defaultSize) { D_D(DToast); d->icon = icon; d->iconLabel->setVisible(true); d->iconLabel->setPixmap(d->icon.pixmap(icon.actualSize(defaultSize))); } /*! * \~chinese \brief 设置显示时长 * \~chinese \param duration */ void DToast::setDuration(int duration) { D_D(DToast); d->duration = duration; } /*! * \~chinese \brief 设置不透明度 * \~chinese \param opacity */ void DToast::setOpacity(qreal opacity) { D_D(DToast); d->effect->setOpacity(opacity); update(); } /*! * \~chinese \brief 弹出 */ void DToast::pop() { Q_D(DToast); adjustSize(); show(); if (d->animation) { return; } int _duration = d->duration < 0 ? 2000 : d->duration; d->animation = new QPropertyAnimation(this, "opacity"); d->animation->setDuration(_duration); d->animation->setStartValue(0); d->animation->setKeyValueAt(0.4, 1.0); d->animation->setKeyValueAt(0.8, 1.0); d->animation->setEndValue(0); d->animation->start(); d->animation->connect(d->animation, &QPropertyAnimation::finished, this, [ = ]() { hide(); d->animation->deleteLater(); d->animation = Q_NULLPTR; }); } /*! * \~chinese \brief 隐藏并销毁 */ void DToast::pack() { Q_D(DToast); hide(); if (d->animation) { d->animation->stop(); d->animation->deleteLater(); d->animation = Q_NULLPTR; } } void DToast::showEvent(QShowEvent *event) { Q_EMIT visibleChanged(true); return QWidget::showEvent(event); } void DToast::hideEvent(QHideEvent *event) { Q_EMIT visibleChanged(false); return QWidget::hideEvent(event); } DToastPrivate::DToastPrivate(DToast *qq) : DObjectPrivate(qq) { } void DToastPrivate::initUI() { D_Q(DToast); q->setAttribute(Qt::WA_TransparentForMouseEvents,true); q->setWindowFlags(q->windowFlags() | Qt::WindowStaysOnTopHint); auto layout = new QHBoxLayout(q); layout->setContentsMargins(10, 10, 10, 10); layout->setSpacing(12); iconLabel = new QLabel; iconLabel->setVisible(false); textLabel = new QLabel; textLabel->setVisible(false); layout->addWidget(iconLabel); layout->addWidget(textLabel); effect = new DGraphicsGlowEffect(q); effect->setBlurRadius(20.0); effect->setColor(QColor(0, 0, 0, 255 / 10)); effect->setOffset(0, 0); q->setGraphicsEffect(effect); q->hide(); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dtoast.h000066400000000000000000000034241352002233700174050ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * Author: Iceyer * * Maintainer: Iceyer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include #include "dtkwidget_global.h" #include DWIDGET_BEGIN_NAMESPACE class DToastPrivate; class LIBDTKWIDGETSHARED_EXPORT DToast : public QFrame, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity) Q_PROPERTY(qreal duration READ duration WRITE setDuration) public: explicit DToast(QWidget *parent = 0); ~DToast(); QString text() const; QIcon icon() const; int duration() const; Q_SIGNALS: void visibleChanged(bool isVisible); public Q_SLOTS: void pop(); void pack(); void showEvent(QShowEvent *event) override; void hideEvent(QHideEvent *event) override; void setText(QString text); void setIcon(QString icon); void setIcon(QIcon icon, QSize defaultSize = QSize(20, 20)); void setDuration(int duration); private: qreal opacity() const; void setOpacity(qreal); D_DECLARE_PRIVATE(DToast) }; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dvideowidget.cpp000066400000000000000000000425761352002233700211330ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dvideowidget.h" #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE /*! * \~chinese \class VideoFormatProxy * \~chinese \brief DVideoWidget使用的封装视频帧的代理类 * */ class VideoFormatProxy : public QAbstractVideoSurface { Q_OBJECT public: VideoFormatProxy(QObject *parent); QVideoFrame& currentFrame() const; protected: bool present(const QVideoFrame &frame); QList supportedPixelFormats( QAbstractVideoBuffer::HandleType handleType = QAbstractVideoBuffer::NoHandle) const; bool isFormatSupported(const QVideoSurfaceFormat &format) const; private: QVideoFrame m_currentFrame; QVideoFrame m_lastFrame; friend class DVideoWidget; Q_SIGNALS: void currentFrameChanged(); }; VideoFormatProxy::VideoFormatProxy(QObject *parent): QAbstractVideoSurface(parent) { } QVideoFrame& VideoFormatProxy::currentFrame() const { return const_cast(m_currentFrame); } bool VideoFormatProxy::present(const QVideoFrame &frame) { m_currentFrame = frame; if (frame.isValid()) m_lastFrame = frame; Q_EMIT currentFrameChanged(); return true; } QList VideoFormatProxy::supportedPixelFormats(QAbstractVideoBuffer::HandleType) const { return QList() << QVideoFrame::Format_RGB32 << QVideoFrame::Format_ARGB32 << QVideoFrame::Format_ARGB32_Premultiplied << QVideoFrame::Format_RGB565 << QVideoFrame::Format_RGB555; } bool VideoFormatProxy::isFormatSupported(const QVideoSurfaceFormat &format) const { return QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat()) != QImage::Format_Invalid; } class DVideoWidgetPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DVideoWidgetPrivate(DVideoWidget *qq); VideoFormatProxy *formatProxy; QPointer player; bool mirroredHorizontal = false; bool mirroredVertical = false; qreal scale = 1; Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio; int brightness = 0; int contrast = 0; int hue = 0; int saturation = 0; bool round = false; qreal ratio = 1; D_DECLARE_PUBLIC(DVideoWidget) }; DVideoWidgetPrivate::DVideoWidgetPrivate(DVideoWidget *qq) : DObjectPrivate(qq) , formatProxy(new VideoFormatProxy(qq)) { qq->connect(formatProxy, &VideoFormatProxy::currentFrameChanged, qq, static_cast(&DVideoWidget::repaint)); } /*! * \~english \class DVideoWidget * \~english \brief The DVideoWidget class provides a widget which presents video produced * by a media object. * * Since the last frame that played is preserved, it always has better user * experience looping some media. Also it supports video flip (both vertically * or horizontally), video scale and rounded video clip. * * It's usually used just to play video animations like the one presented in * dde-zone settings page. If you want to play video or other media objects, * please refer to QVideoWidget for better performance or support. * * \param parent is the parent widget to be attached on. */ /*! * \~chinese \class DVideoWidget * \~chinese \brief DVideoWidget类提供了呈现视频的小部件 * 为了给循环播放提供更好的用户体验,视频的最后一帧将会被保留,同时还支持视频垂直或水平翻转, * 视频缩放和圆形视频编辑。 * * 将QMediaPlayer添加到DVideoWidget中,DVideoWidget封装了QVideoWidget来提供视频或图像的输出。 * \note 注意: 一次只能将一个QMediaPlayer连接到DVideoWidget中。 * * \code * DVideoWidget *videoWidget = new DVideoWidget(this); * QMediaPlayer *mediaPlayer = new QMediaPlayer(this); * QMediaPlaylist *list = new QMediaPlaylist(this); * list->addMedia(QUrl("qrc:/test.mp4")); * list->setPlaybackMode(QMediaPlaylist::Loop); * videoWidget->setVideoOutput(mediaPlayer); * videoWidget->play(); * \endcode */ /*! * \fn DVideoWidget::mirroredHorizontalChanged * \~chinese \brief 当前的视频或画面发生水平翻转时会发出该信号 * \fn DVideoWidget::mirroredVerticalChanged * \~chinese \brief 当前的视频或画面发生垂直翻转时会发出该信号 * \fn DVideoWidget::scaleChanged * \~chinese \brief 当相对于视频或画面的原始大小的比例发生变化时会发出该信号 * \fn DVideoWidget::brightnessChanged * \~chinese \brief 当前的视频或画面的亮度发生变化时会发出该信号 * \fn DVideoWidget::contrastChanged * \~chinese \brief 当前的视频或画面的对比度发生变化时会发出该信号 * \fn DVideoWidget::hueChanged * \~chinese \brief 当前的视频或画面的色彩度发生变化时会发出该信号 * \fn DVideoWidget::saturationChanged * \~chinese \brief 当前视频或画面的饱和度发生变化时会发出该信号 * \fn DVideoWidget::roundChanged * \~chinese \brief 当前开启和关闭圆形效果时会发出该信号 */ /*! * \~chinese \brief DVideoWidget的构造函数 * * \param parent */ DVideoWidget::DVideoWidget(QWidget *parent) : QWidget(parent) , DObject(*new DVideoWidgetPrivate(this)) { } /*! * \~english \property DVideoWidget::mirroredHorizontal * \~english \brief indicates whether the video is horizontally flipped. */ /*! * \~chinese \property DVideoWidget::mirroredHorizontal * \~chinese \brief 返回当前视频或画面是否水平翻转画面 * * \see DVideoWidget::setMirroredHorizontal * \see DVideoWidget::mirroredHorizontalChanged * * \return bool 是否水平翻转画面 */ bool DVideoWidget::mirroredHorizontal() const { D_DC(DVideoWidget); return d->mirroredHorizontal; } /*! * \~english \property DVideoWidget::mirroredVertical * \~english \brief indicates whether the video is vertically flipped. */ /*! * \~chinese \property DVideoWidget::mirroredVertical * \~chinese \brief 返回当前视频或画面是否垂直翻转画面 * * \see DVideoWidget::setMirroredVertical * \see DVideoWidget::mirroredVerticalChanged * * \return bool 是否垂直翻转 */ bool DVideoWidget::mirroredVertical() const { D_DC(DVideoWidget); return d->mirroredVertical; } /*! * \~english \brief DVideoWidget::paint paints a specific QVideoFrame onto the widget. * \~english \param frame is the target video frame. */ void DVideoWidget::paint(const QVideoFrame &frame) { D_DC(DVideoWidget); QPainter painter(this); QImage image( frame.bits(), frame.width(), frame.height(), frame.bytesPerLine(), QVideoFrame::imageFormatFromPixelFormat(frame.pixelFormat())); painter.drawImage(0, 0, image.mirrored(d->mirroredHorizontal, d->mirroredVertical)); } /*! * \~english \property DVideoWidget::scale * \~english \brief the scale ratio used to paint the video frames. */ /*! * \~chinese \property DVideoWidget::scale * \~chinese \brief 返回当前视频或画面相对于原始大小的缩放比例 * * \see DVideoWidget::setScale * \see DVideoWidget::scaleChanged * * \return qreal 相对于原始大小的缩放比例 */ qreal DVideoWidget::scale() const { D_DC(DVideoWidget); return d->scale; } /*! * \~english \property DVideoWidget::aspectRatioMode * \~english \brief holds the current aspect ratio. */ /*! * \~chinese \property DVideoWidget::aspectRatioMode * \~chinese \brief 返回当前视频或画面的宽高比模式 * * \see DVideoWidget::setAspectRatioMode * * \return Qt::AspectRatioMode */ Qt::AspectRatioMode DVideoWidget::aspectRatioMode() const { D_DC(DVideoWidget); return d->aspectRatioMode; } /*! * \~chinese \brief 设置当前的视频或画面在HiDPI下的缩放系数 * * \param ratio * * \see DVideoWidget::sourceVideoPixelRatio */ void DVideoWidget::setSourceVideoPixelRatio(const qreal ratio) { D_D(DVideoWidget); d->ratio = ratio; } /*! * \~chinese \brief 返回视频在HiDPI下的缩放系数 * * \see DVideoWidget::setSourceVideoPixelRatio * * \return qreal */ qreal DVideoWidget::sourceVideoPixelRatio() const { D_DC(DVideoWidget); return d->ratio; } /*! * \~english \property DVideoWidget::brightness * \~english \brief returns the brightness adjust setting. * * \note * This property is not implemented. */ /*! * \~chinese \property DVideoWidget::brightness * \~chinese \brief 返回当前视频或画面的画面亮度 * * \note * 该属性暂未实现 * * \see DVideoWidget::setBrightness * \see DVideoWidget::brightnessChanged */ int DVideoWidget::brightness() const { D_DC(DVideoWidget); return d->brightness; } /*! * \~english \property DVideoWidget::contrast * \~english \brief returns the contrast adjust setting. * * \note * This property is not implemented. */ /*! * \~chinese \property DVideoWidget::contrast * \~chinese \brief 返回当前的视频或画面的对比度 * * \note * 该属性尚未实现 * * \see DVideoWidget::setContrast * \see DVideoWidget::contrastChanged */ int DVideoWidget::contrast() const { D_DC(DVideoWidget); return d->contrast; } /*! * \~english \property DVideoWidget::hue * \~english \brief returns the hue adjust setting. * * \note * This property is not implemented. */ /*! * \~chinese \property DVideoWidget::hue * \~chinese \brief 返回当前视频或画面的色调 * * \note * 该属性尚未实现 * * \see DVideoWidget::setHue * \see DVideoWidget::hueChanged */ int DVideoWidget::hue() const { D_DC(DVideoWidget); return d->hue; } /*! * \~english \property DVideoWidget::saturation * \~english \brief This property holds an adjustment to the saturation of displayed video. * * \note * This property is not implemented. */ /*! * \~chinese \property DVideoWidget::saturation * \~chinese \brief 返回当前的视频或画面的饱和度 * * \note * 该属性尚未实现 * * \see DVideoWidget::setSaturation * \see DVideoWidget::saturationChanged */ int DVideoWidget::saturation() const { D_DC(DVideoWidget); return d->saturation; } /** * \~english \brief DVideoWidget::currentFrame * \~english \return the current frame displaying. */ /*! * \~chinese \brief 返回当前的画面帧 * * \return const QVideoFrame* */ const QVideoFrame *DVideoWidget::currentFrame() const { D_DC(DVideoWidget); if (d->formatProxy) { return &d->formatProxy->currentFrame(); } return NULL; } /** * \~english \brief DVideoWidget::capture grabs the current frame. * \~english \return a QPixmap representing the current frame. */ /*! * \~chinese \brief 捕获当前的画面 * * \return QPixmap 当前的画面帧 */ QPixmap DVideoWidget::capture() { return grab(); } /*! * \~english \property DVideoWidget::round * \~english \brief controls whether the painted video frame are rounded or not. */ /*! * \~chinese \property DVideoWidget::round * \~chinese \brief 控制绘制的视频是否为圆形 * * \see DVideoWidget::setRound * \see DVideoWidget::roundChanged * * \return boo 是否为圆形 */ bool DVideoWidget::round() const { D_DC(DVideoWidget); return d->round; } /** * \~english \brief DVideoWidget::setSource sets a QCamera source to be tracked. * \~english \param source is the target camera source. */ /*! * \~chinese \brief 设置要跟踪的QCamera源 * * \param source */ void DVideoWidget::setSource(QCamera *source) { Q_ASSERT(source); D_DC(DVideoWidget); source->setCaptureMode(QCamera::CaptureStillImage); source->setViewfinder(d->formatProxy); } /** * \~english \brief DVideoWidget::setSource sets a QMediaPlayer source to be played. * \~english \param source is the target media player source. */ /*! * \~chinese \brief 设置要跟踪的QMediaPlayer源 * * \param source */ void DVideoWidget::setSource(QMediaPlayer *source) { Q_ASSERT(source); D_D(DVideoWidget); source->setVideoOutput(d->formatProxy); d->player = source; } /*! * \~chinese \brief 设置是否开启当前视频或画面水平翻转 * * \param mirroredHorizontal * * \see DVideoWidget::mirroredHorizontal * \see DVideoWidget::mirroredHorizontalChanged */ void DVideoWidget::setMirroredHorizontal(bool mirroredHorizontal) { D_D(DVideoWidget); if (d->mirroredHorizontal == mirroredHorizontal) return; d->mirroredHorizontal = mirroredHorizontal; Q_EMIT mirroredHorizontalChanged(mirroredHorizontal); } /*! * \~chinese \brief 设置是否开启当前的视频或画面的垂直翻转 * * \param mirroredVertical * * \see DVideoWidget::mirroredVertical * \see DVideoWidget::mirroredVerticalChanged */ void DVideoWidget::setMirroredVertical(bool mirroredVertical) { D_D(DVideoWidget); if (d->mirroredVertical == mirroredVertical) return; d->mirroredVertical = mirroredVertical; Q_EMIT mirroredVerticalChanged(mirroredVertical); } /*! * \~chinese \brief 设置相对于原始视频或画面大小的缩放 * * \see DVideoWidget::scale * \see DVideoWidget::scaleChanged * * \param scale */ void DVideoWidget::setScale(qreal scale) { D_D(DVideoWidget); if (d->scale == scale) return; d->scale = scale; Q_EMIT scaleChanged(scale); } /*! * \~chinese \brief 设置当前的视频或画面的缩放模式 * * \param mode * * \see DVideoWidget::aspectRatioMode */ void DVideoWidget::setAspectRatioMode(Qt::AspectRatioMode mode) { D_D(DVideoWidget); d->aspectRatioMode = mode; } /*! * \~chinese \brief 设置当前的视频或画面的亮度 * * \param brightness * * \see DVideoWidget::brightness * \see DVideoWidget::brightnessChanged */ void DVideoWidget::setBrightness(int brightness) { D_D(DVideoWidget); if (d->brightness == brightness) return; d->brightness = brightness; Q_EMIT brightnessChanged(brightness); } /*! * \~chinese \brief 设置当前视频或画面的对比度 * * \param contrast * * \see DVideoWidget::contrast * \see DVideoWidget::contrastChanged */ void DVideoWidget::setContrast(int contrast) { D_D(DVideoWidget); if (d->contrast == contrast) return; d->contrast = contrast; Q_EMIT contrastChanged(contrast); } /*! * \~chinese \brief 设置当前视频或画面的色彩度 * * \param hue * * \see DVideoWidget::hue * \see DVideoWidget::hueChanged */ void DVideoWidget::setHue(int hue) { D_D(DVideoWidget); if (d->hue == hue) return; d->hue = hue; Q_EMIT hueChanged(hue); } /*! * \~chinese \brief 设置当前的视频或画面的饱和度 * * \param saturation * * \see DVideoWidget::saturation * \see DVideoWidget::saturationChanged */ void DVideoWidget::setSaturation(int saturation) { D_D(DVideoWidget); if (d->saturation == saturation) return; d->saturation = saturation; Q_EMIT saturationChanged(saturation); } /*! * \~chinese \brief 设置是否开启视频圆形 * * \param round * * \see DVideoWidget::round * \see DVideoWidget::roundChanged */ void DVideoWidget::setRound(bool round) { D_D(DVideoWidget); if (d->round == round) return; d->round = round; Q_EMIT roundChanged(round); } void DVideoWidget::paintEvent(QPaintEvent *) { D_DC(DVideoWidget); QPainter painter(this); const QMediaPlaylist *pl = d->player ? d->player->playlist() : NULL; bool loop = pl && (pl->playbackMode() == QMediaPlaylist::Loop || pl->playbackMode() == QMediaPlaylist::CurrentItemInLoop); QVideoFrame frame = (!loop || d->formatProxy->m_currentFrame.isValid()) ? d->formatProxy->m_currentFrame : d->formatProxy->m_lastFrame; frame.map(QAbstractVideoBuffer::ReadOnly); QImage image( frame.bits(), frame.width(), frame.height(), frame.bytesPerLine(), QVideoFrame::imageFormatFromPixelFormat(frame.pixelFormat())); frame.unmap(); if (image.isNull()) { return; } image.setDevicePixelRatio(d->ratio); image = image.scaled(size() * d->scale * d->ratio, d->aspectRatioMode, Qt::SmoothTransformation); image = image.mirrored(d->mirroredHorizontal, d->mirroredVertical); if (d->round) { QPainterPath path; int diameter = qMin(width(), height()); path.addEllipse(width()/2.0-diameter/2.0, height()/2.0-diameter/2.0, diameter, diameter); painter.setRenderHint(QPainter::Antialiasing); painter.setRenderHint(QPainter::SmoothPixmapTransform); painter.setClipPath(path); } painter.drawImage(QRectF(rect()).center() - QRectF(image.rect()).center() / d->ratio, image); } DWIDGET_END_NAMESPACE #include "dvideowidget.moc" dtkwidget-2.1.1/src/widgets/dvideowidget.h000066400000000000000000000065421352002233700205710ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DVIDEOWIDGET_H #define DVIDEOWIDGET_H #include "dtkwidget_global.h" #include "dobject.h" #include QT_BEGIN_NAMESPACE class QCamera; class QMediaPlayer; class QVideoFrame; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DVideoWidgetPrivate; class LIBDTKWIDGETSHARED_EXPORT DVideoWidget : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(bool mirroredHorizontal READ mirroredHorizontal WRITE setMirroredHorizontal NOTIFY mirroredHorizontalChanged) Q_PROPERTY(bool mirroredVertical READ mirroredVertical WRITE setMirroredVertical NOTIFY mirroredVerticalChanged) Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged) Q_PROPERTY(Qt::AspectRatioMode aspectRatioMode READ aspectRatioMode WRITE setAspectRatioMode) Q_PROPERTY(int brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) Q_PROPERTY(int contrast READ contrast WRITE setContrast NOTIFY contrastChanged) Q_PROPERTY(int hue READ hue WRITE setHue NOTIFY hueChanged) Q_PROPERTY(int saturation READ saturation WRITE setSaturation NOTIFY saturationChanged) Q_PROPERTY(bool round READ round WRITE setRound NOTIFY roundChanged) public: explicit DVideoWidget(QWidget *parent = 0); bool mirroredHorizontal() const; bool mirroredVertical() const; void paint(const QVideoFrame& frame); qreal scale() const; Qt::AspectRatioMode aspectRatioMode() const; void setSourceVideoPixelRatio(const qreal ratio); qreal sourceVideoPixelRatio() const; int brightness() const; int contrast() const; int hue() const; int saturation() const; const QVideoFrame* currentFrame() const; QPixmap capture(); bool round() const; Q_SIGNALS: void mirroredHorizontalChanged(bool mirroredHorizontal); void mirroredVerticalChanged(bool mirroredVertical); void scaleChanged(qreal scale); void brightnessChanged(int brightness); void contrastChanged(int contrast); void hueChanged(int hue); void saturationChanged(int saturation); void roundChanged(bool round); public Q_SLOTS: void setSource(QCamera *source); void setSource(QMediaPlayer *source); void setMirroredHorizontal(bool mirroredHorizontal); void setMirroredVertical(bool mirroredVertical); void setScale(qreal scale); void setAspectRatioMode(Qt::AspectRatioMode mode); void setBrightness(int brightness); void setContrast(int contrast); void setHue(int hue); void setSaturation(int saturation); void setRound(bool round); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DVideoWidget) }; DWIDGET_END_NAMESPACE #endif // DVIDEOWIDGET_H dtkwidget-2.1.1/src/widgets/dwaterprogress.cpp000066400000000000000000000254001352002233700215130ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dwaterprogress.h" #include #include #include #include #include #include DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE struct Pop { Pop(double s, double xs, double ys): size(s), xSpeed(xs), ySpeed(ys) {} double size; double xSpeed; double ySpeed; double xOffset; double yOffset; }; class DWaterProgressPrivate: public DTK_CORE_NAMESPACE::DObjectPrivate { public: DWaterProgressPrivate(DWaterProgress *parent): DObjectPrivate(parent) { pops.append(Pop(7, -1.8, 0.6)); pops.append(Pop(8, 1.2, 1.0)); pops.append(Pop(11, 0.8, 1.6)); } void resizePixmap(QSize sz); void initUI(); void setValue(int v); void paint(QPainter *p); QImage waterFrontImage; QImage waterBackImage; QString progressText; QTimer *timer = Q_NULLPTR; QList pops; int interval = 33; int value; double frontXOffset = 0; double backXOffset = 0; bool textVisible = true; D_DECLARE_PUBLIC(DWaterProgress) }; /*! \~chinese \class DWaterProgress \~chinese \brief 可以使用 DWaterProgress 类快速创建圆形容器内水位高低指示进度的动画控件。 \~chinese \image html dwaterprogress.png \~chinese 可以使用 DWaterProgress 类快速创建圆形容器内水位高低指示进度的动画控件。并提供了可选的是否显示进度文字的选项。 */ /*! \~english \class DWaterProgress \~english \brief Use DWaterProgress to create an new water animation progress. \~english \image html dwaterprogress.png \~english Use DWaterProgress to create an new water animation progress. There is also an optional progress text can be set as visible via setTextVisible(). */ DWaterProgress::DWaterProgress(QWidget *parent) : QWidget(parent), DObject(*new DWaterProgressPrivate(this)) { D_D(DWaterProgress); d->initUI(); // apply effect auto effect = new QGraphicsDropShadowEffect(this); effect->setOffset(0, 6); effect->setColor(QColor(1, 153, 248, 255 * 5 / 20)); effect->setBlurRadius(12); this->setGraphicsEffect(effect); } DWaterProgress::~DWaterProgress() { } /*! * \~english \brief get the current progress value * \~chinese \brief 当前进度值 */ int DWaterProgress::value() const { D_DC(DWaterProgress); return d->value; } /*! * \~english \brief star water animation. * \~chinese \brief 开始水位动画 */ void DWaterProgress::start() { D_DC(DWaterProgress); d->timer->start(); } /*! * \~english \brief stop water animation. * \~chinese \brief 停止水位动画 */ void DWaterProgress::stop() { D_DC(DWaterProgress); d->timer->stop(); } /*! * \~english \brief set the current progress value (range: 0~100) * \~chinese \brief 设置当前进度值,(范围 0~100) */ void DWaterProgress::setValue(int value) { D_D(DWaterProgress); if (d->value == value) { return; } d->setValue(value); Q_EMIT valueChanged(); } /*! * \~english \brief set progress text visible or not * \~chinese \brief 设置是否显示进度 * * \~english set the progress text value(like 50% when value is 50) visible. * \~chinese 设置进度文字是否显示,如值为 50 时显示 50% 。 */ void DWaterProgress::setTextVisible(bool visible) { D_D(DWaterProgress); d->textVisible = visible; } void DWaterProgress::paintEvent(QPaintEvent *) { D_D(DWaterProgress); QPainter p(this); d->paint(&p); } void DWaterProgressPrivate::resizePixmap(QSize sz) { // resize water; auto waterWidth = 500 * sz.width() / 100; auto waterHeight = 110 * sz.height() / 100; auto waterSize = QSizeF(waterWidth, waterHeight).toSize(); if (waterFrontImage.size() != waterSize) { DSvgRenderer renderer(QString(":/images/light/images/water_front.svg")); QImage image(waterWidth, waterHeight, QImage::Format_ARGB32); image.fill(Qt::transparent); // partly transparent red-ish background QPainter waterPainter(&image); renderer.render(&waterPainter); waterFrontImage = image; } if (waterBackImage.size() != waterSize) { DSvgRenderer renderer(QString(":/images/light/images/water_back.svg")); QImage image(waterWidth, waterHeight, QImage::Format_ARGB32); image.fill(Qt::transparent); // partly transparent red-ish background QPainter waterPainter(&image); renderer.render(&waterPainter); waterBackImage = image; } } void DWaterProgressPrivate::initUI() { D_Q(DWaterProgress); q->setMinimumSize(100, 100); value = 0; timer = new QTimer(q); timer->setInterval(interval); resizePixmap(q->size()); frontXOffset = q->width(); backXOffset = 0; q->connect(timer, &QTimer::timeout, q, [ = ] { // interval can not be zero, and limit to 1 interval = (interval < 1) ? 1 : interval; // move 60% per second double frontXDeta = 40.0 / (1000.0 / interval); // move 90% per second double backXDeta = 60.0 / (1000.0 / interval); int canvasWidth = static_cast(q->width() * q->devicePixelRatioF()); frontXOffset -= frontXDeta *canvasWidth / 100; backXOffset += backXDeta *canvasWidth / 100; if (frontXOffset > canvasWidth) { frontXOffset = canvasWidth; } if (frontXOffset < - (waterFrontImage.width() - canvasWidth)) { frontXOffset = canvasWidth; } if (backXOffset > waterBackImage.width()) { backXOffset = 0; } // update pop // move 25% per second default double speed = 25 / (1000.0 / interval) /** 100 / q->height()*/; for (auto &pop : pops) { // yOffset 0 ~ 100; pop.yOffset += speed * pop.ySpeed; if (pop.yOffset < 0) { } if (pop.yOffset > value) { pop.yOffset = 0; } pop.xOffset = qSin((pop.yOffset / 100) * 2 * 3.14) * 18 * pop.xSpeed + 50; } q->update(); }); } void DWaterProgressPrivate::setValue(int v) { value = v; progressText = QString("%1%").arg(v); } void DWaterProgressPrivate::paint(QPainter *p) { D_Q(DWaterProgress); p->setRenderHint(QPainter::Antialiasing); qreal pixelRatio = q->devicePixelRatioF(); QRectF rect = QRectF(0, 0, q->width() * pixelRatio, q->height() * pixelRatio); QSize sz = QSizeF(q->width() * pixelRatio, q->height() * pixelRatio).toSize(); resizePixmap(sz); int yOffset = rect.toRect().topLeft().y() + (100 - value - 10) * sz.height() / 100; // draw water QImage waterImage = QImage(sz, QImage::Format_ARGB32_Premultiplied); QPainter waterPinter(&waterImage); waterPinter.setRenderHint(QPainter::Antialiasing); waterPinter.setCompositionMode(QPainter::CompositionMode_Source); waterPinter.fillRect(waterImage.rect(), QColor(43, 146, 255, 255 * 3 / 10)); waterPinter.setCompositionMode(QPainter::CompositionMode_SourceOver); waterPinter.drawImage(static_cast(backXOffset), yOffset, waterBackImage); waterPinter.drawImage(static_cast(backXOffset) - waterBackImage.width(), yOffset, waterBackImage); waterPinter.drawImage(static_cast(frontXOffset), yOffset, waterFrontImage); waterPinter.drawImage(static_cast(frontXOffset) - waterFrontImage.width(), yOffset, waterFrontImage); //drwa pop if (value > 30) { for (auto &pop : pops) { QPainterPath popPath; popPath.addEllipse(pop.xOffset * sz.width() / 100, (100 - pop.yOffset) * sz.height() / 100, pop.size * sz.width() / 100, pop.size * sz.height() / 100); waterPinter.fillPath(popPath, QColor(77, 208, 255)); } } double borderWidth = 2.0 * sz.width() / 100.0; auto outRect = QRectF(0, 0, sz.width(), sz.height()); QPainterPath pathBorder; auto factor = 0.5; auto margin = QMarginsF(borderWidth * factor, borderWidth * factor, borderWidth * factor, borderWidth * factor); pathBorder.addEllipse(outRect.marginsRemoved(margin)); waterPinter.strokePath(pathBorder, QPen(QColor(43, 146, 255, 255 * 7 / 10), borderWidth)); QPainterPath pathInnerBorder; auto interFactor = 1.5; auto innerMargin = QMarginsF(borderWidth * interFactor, borderWidth * interFactor, borderWidth * interFactor, borderWidth * interFactor); pathInnerBorder.addEllipse(outRect.marginsRemoved(innerMargin)); waterPinter.strokePath(pathInnerBorder, QPen(QColor(234, 242, 255, 255 * 5 / 10), borderWidth)); if (textVisible) { auto font = waterPinter.font(); font.setPixelSize(sz.height() * 20 / 100); waterPinter.setFont(font); waterPinter.setPen(Qt::white); waterPinter.drawText(rect, Qt::AlignCenter, progressText); } waterPinter.end(); QPixmap maskPixmap(sz); maskPixmap.fill(Qt::transparent); QPainterPath path; path.addEllipse(QRectF(0, 0, sz.width(), sz.height())); QPainter maskPainter(&maskPixmap); maskPainter.setRenderHint(QPainter::Antialiasing); maskPainter.setPen(QPen(Qt::white, 1)); maskPainter.fillPath(path, QBrush(Qt::white)); QPainter::CompositionMode mode = QPainter::CompositionMode_SourceIn; QImage contentImage = QImage(sz, QImage::Format_ARGB32_Premultiplied); QPainter contentPainter(&contentImage); contentPainter.setCompositionMode(QPainter::CompositionMode_Source); contentPainter.fillRect(contentImage.rect(), Qt::transparent); contentPainter.setCompositionMode(QPainter::CompositionMode_SourceOver); contentPainter.drawImage(0, 0, maskPixmap.toImage()); contentPainter.setCompositionMode(mode); contentPainter.drawImage(0, 0, waterImage); contentPainter.setCompositionMode(QPainter::CompositionMode_DestinationOver); contentPainter.end(); contentImage.setDevicePixelRatio(pixelRatio); p->drawImage(q->rect(), contentImage); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwaterprogress.h000066400000000000000000000027551352002233700211700ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWATERPROGRESS_H #define DWATERPROGRESS_H #include "dtkwidget_global.h" #include "dobject.h" #include #include DWIDGET_BEGIN_NAMESPACE class DWaterProgressPrivate; class LIBDTKWIDGETSHARED_EXPORT DWaterProgress : public QWidget, public DTK_CORE_NAMESPACE::DObject { Q_OBJECT Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) public: explicit DWaterProgress(QWidget *parent = 0); ~DWaterProgress(); int value() const; Q_SIGNALS: void valueChanged(); public Q_SLOTS: void start(); void stop(); void setValue(int value); void setTextVisible(bool visible); protected: void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; private: D_DECLARE_PRIVATE(DWaterProgress) }; DWIDGET_END_NAMESPACE #endif // DWATERPROGRESS_H dtkwidget-2.1.1/src/widgets/dwindowclosebutton.cpp000066400000000000000000000031111352002233700223700ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthememanager.h" #include "dwindowclosebutton.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DWindowCloseButton * \~english \brief The DWindowCloseButton class is used as the unified window close button. * * \~english It's actually a special DImageButton which has the appearance of close button. * * \~chinese \class DWindowCloseButton * \~chinese \brief DWindowCloseButton 类是 DTK 窗口统一的关闭按钮控件。 */ /*! * \~chinese \brief DWindowCloseButton::DWindowCloseButton 是 DWindowCloseButton 的构造 * \~chinese 函数,返回 DWindowCloseButton 对象,普通程序一般无需使用。 * \~chinese \param parent 为创建对象的父控件。 */ DWindowCloseButton::DWindowCloseButton(QWidget * parent) : DImageButton(parent) { DThemeManager::registerWidget(this); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwindowclosebutton.h000066400000000000000000000017601352002233700220450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWCLOSEBUTTON_H #define DWINDOWCLOSEBUTTON_H #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DWindowCloseButton : public DImageButton { Q_OBJECT public: DWindowCloseButton(QWidget * parent = 0); }; DWIDGET_END_NAMESPACE #endif // DWINDOWCLOSEBUTTON_H dtkwidget-2.1.1/src/widgets/dwindowgroupleader.cpp000066400000000000000000000174321352002233700223530ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dwindowgroupleader.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE #define DEFINE_CONST_CHAR(Name) const char _##Name[] = "_d_" #Name DEFINE_CONST_CHAR(groupLeader); DEFINE_CONST_CHAR(createGroupWindow); DEFINE_CONST_CHAR(destoryGroupWindow); DEFINE_CONST_CHAR(setWindowGroup); DEFINE_CONST_CHAR(clientLeader); class DWindowGroupLeaderPrivate { public: DWindowGroupLeaderPrivate(quint32 groupLeader) : groupLeader(groupLeader) { QFunctionPointer clientLeaderFun = qApp->platformFunction(_clientLeader); if (clientLeaderFun) { clientLeader = reinterpret_cast(clientLeaderFun)(); } } quint32 groupLeader; quint32 clientLeader = 0; bool groupLeaderFromUser = false; QList> windowList; void ensureGroupLeader(); bool setWindowGroupLeader(quint32 window, quint32 groupLeader); }; void DWindowGroupLeaderPrivate::ensureGroupLeader() { if (groupLeader != 0) return; QFunctionPointer createGroupWindow = qApp->platformFunction(_createGroupWindow); if (!createGroupWindow) return; groupLeader = reinterpret_cast(createGroupWindow)(); } bool DWindowGroupLeaderPrivate::setWindowGroupLeader(quint32 window, quint32 groupLeader) { QFunctionPointer setWindowGroup = qApp->platformFunction(_setWindowGroup); if (!setWindowGroup) { return false; } reinterpret_cast(setWindowGroup)(window, groupLeader); return true; } /*! * \~chinese \class DWindowGroupLeader * * \~chinese \brief DWindowGroupLeader 用于设置窗口所在的组,可以把多个窗口加到同一个组。在dxcb平台上,所有未指定组的 * \~chinese 窗口都会被分配到 DWindowGroupLeader::clientLeaderId 这个组,且在窗口对应的本地窗口被创建时,会对 * \~chinese Qt::Dialog、Qt::Sheet、Qt::Tool、Qt::SplashScreen、Qt::ToolTip、Qt::Drawer、Qt::Popup * \~chinese 类型的窗口设置 WM_TRANSIENT_FOR 属性,对于此类型的窗口,如果没有手动调用 QWindow::setTransientParent , * \~chinese 则会将其 WM_TRANSIENT_FOR 属性设置为所在组id,得到的效果就是:会保证此窗口显示到这个组所有其它窗口 * \~chinese 之上。例子: * \~chinese \code * DWindowGroupLeader leader; * QWindow wa, wb; * QWindow topWindow; * * leader.addWindow(&wa); * leader.addWindow(&wb); * leader.addWindow(&topWindow); * * wa.setTitle("窗口wa"); * wa.resize(300, 100); * wa.show(); * wb.setTitle("窗口wb"); * wb.resize(300, 100); * wb.show(); * topWindow.setTitle("窗口topWindow"); * topWindow.setFlag(Qt::Dialog); * topWindow.resize(300, 300); * topWindow.show(); * \endcode * \~chinese 窗口topWindow一直处于窗口wa和wb上层 * \~chinese \image html wa_wb_topWindow.gif * \~chinese 如果一个组内同时存在多个未设置过 QWindow::setTransientParent 的 Qt::Dialog(其它会自动设置 WM_TRANSIENT_FOR * \~chinese 属性的窗口也成立)类型的窗口,这些窗口之间不会互相影响显示顺序,具体的规则和 X11 ICCCM 标准一致。 * \~chinese \sa https://tronche.com/gui/x/icccm/sec-4.html#WM_TRANSIENT_FOR * \~chinese \sa DWindowGroupLeader::clientLeaderId * \~chinese \sa DApplication::loadDXcbPlugin */ /*! * \~chinese \brief DWindowGroupLeader::DWindowGroupLeader * \~chinese \param groupId 为0时会在需要时自动创建一个有效的 groupLeaderId * \~chinese \sa DWindowGroupLeader::groupLeaderId */ DWindowGroupLeader::DWindowGroupLeader(quint32 groupId) : d_ptr(new DWindowGroupLeaderPrivate(groupId)) { if (groupId != 0) d_ptr->groupLeaderFromUser = true; } /*! * \~chinese \brief DWindowGroupLeader::~DWindowGroupLeader * \~chinese 对象销毁时会释放由自己自动创建的 groupLeaderId * \~chinese \sa DWindowGroupLeader::groupLeaderId */ DWindowGroupLeader::~DWindowGroupLeader() { Q_D(DWindowGroupLeader); for (auto window : d->windowList) removeWindow(window); if (!d->groupLeaderFromUser) { QFunctionPointer destoryGroupWindow = qApp->platformFunction(_destoryGroupWindow); if (!destoryGroupWindow) return; reinterpret_cast(destoryGroupWindow)(d->groupLeader); } } /*! * \~chinese \brief DWindowGroupLeader::groupLeaderId * \~chinese \return 返回组的id,类似于 QWindow::winId * \~chinese \warning 如果没有一个有效的id,则会先创建一个新的组id */ quint32 DWindowGroupLeader::groupLeaderId() const { Q_D(const DWindowGroupLeader); const_cast(d)->ensureGroupLeader(); return d->groupLeader; } /*! * \~chinese \brief DWindowGroupLeader::clientLeaderId * \~chinese \return 返回应用程序默认的组id */ quint32 DWindowGroupLeader::clientLeaderId() const { Q_D(const DWindowGroupLeader); return d->clientLeader; } /*! * \~chinese \brief DWindowGroupLeader::addWindow * \~chinese 将窗口添加到这个组 * \~chinese \param window * \~chinese \warning 每个窗口只能有一个组,添加到新的组时,将不再受旧的组所带来的任何影响 */ void DWindowGroupLeader::addWindow(QWindow *window) { Q_ASSERT(window); Q_D(DWindowGroupLeader); d->ensureGroupLeader(); window->setProperty(_groupLeader, d->groupLeader); if (window->handle()) { d->setWindowGroupLeader(window->winId(), d->groupLeader); } d->windowList << window; } /*! * \~chinese \brief DWindowGroupLeader::removeWindow * \~chinese 将窗口从这个组中移除 * \~chinese \param window * \~chinese \warning 窗口被移除后将不再受此组带来的任何影响 */ void DWindowGroupLeader::removeWindow(QWindow *window) { if (!window) return; window->setProperty(_groupLeader, QVariant()); Q_D(DWindowGroupLeader); if (window->handle()) { d->setWindowGroupLeader(window->winId(), d->clientLeader); } } /*! * \~chinese \brief DWindowGroupLeader::addWindow * \~chinese 同 DWindowGroupLeader::addWindow(QWindow *),这只是针对不同类型窗口对象的重载函数, * \~chinese 将 window->windowHandle() 作为参数传递给 DWindowGroupLeader::addWindow(QWindow *) * \~chinese \param window * \~chinese \warning 不要对非顶层窗口设置组,否则它会被设置 Qt::WA_NativeWindow 标志 */ void DWindowGroupLeader::addWindow(QWidget *window) { Q_ASSERT(window); Q_ASSERT(window->isWindow()); if (!window->windowHandle()) { window->setAttribute(Qt::WA_NativeWindow); } return addWindow(window->windowHandle()); } /*! * \~chinese \brief DWindowGroupLeader::removeWindow * \~chinese 同 DWindowGroupLeader::removeWindow(QWindow *),这只是针对不同类型窗口对象的重载函数, * \~chinese 等价于 removeWindow(window->windowHandle()) * \~chinese \param window */ void DWindowGroupLeader::removeWindow(QWidget *window) { return removeWindow(window->windowHandle()); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwindowgroupleader.h000066400000000000000000000027231352002233700220150ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWGROUPLEADER_H #define DWINDOWGROUPLEADER_H #include QT_BEGIN_NAMESPACE class QWindow; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DWindowGroupLeaderPrivate; class DWindowGroupLeader { public: explicit DWindowGroupLeader(quint32 groupId = 0); ~DWindowGroupLeader(); quint32 groupLeaderId() const; quint32 clientLeaderId() const; void addWindow(QWindow *window); void removeWindow(QWindow *window); void addWindow(QWidget *window); void removeWindow(QWidget *window); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE(DWindowGroupLeader) }; DWIDGET_END_NAMESPACE #endif // DWINDOWGROUPLEADER_H dtkwidget-2.1.1/src/widgets/dwindowmaxbutton.cpp000066400000000000000000000061761352002233700220660ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "dthememanager.h" #include "dwindowmaxbutton.h" #include "private/dimagebutton_p.h" #include DWIDGET_BEGIN_NAMESPACE class DWindowMaxButtonPrivate : public DImageButtonPrivate{ public: DWindowMaxButtonPrivate(DWindowMaxButton* qq):DImageButtonPrivate(qq) { m_isMaximized = false; } private: bool m_isMaximized; Q_DECLARE_PUBLIC(DWindowMaxButton) }; /*! * \~english \class DWindowMaxButton * \~english \brief The DWindowMaxButton class is used as the unified window maximize button. * * \~english It's actually a special DImageButton which has the appearance of maximize button. * * \~chinese \class DWindowMaxButton * \~chinese \brief DWindowMaxButton 类是 DTK 窗口统一的最大化/恢复按钮控件。 * \~chinese 它有两种状态,一种表示窗口已经进入最大化状态,点击按钮窗口恢复为普通状态; * \~chinese 另一种表示窗口处于普通状态,点击按钮窗口进入最大化状态。 * * \sa isMaximized */ /*! * \~chinese \brief DWindowMaxButton::DWindowMaxButton 是 DWindowMaxButton 的构造 * \~chinese 函数,返回 DWindowMaxButton 对象,普通程序一般无需使用。 * \~chinese \param parent 为创建对象的父控件。 */ DWindowMaxButton::DWindowMaxButton(QWidget * parent) : DImageButton(*new DWindowMaxButtonPrivate(this), parent) { DThemeManager::registerWidget(this, QStringList({"isMaximized"})); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } /*! * \~chinese \fn DWindowMaxButton::maximizedChanged * \~chinese \brief isMaximizedChanged 信号在 isMaximized 属性发生变化时触发。 */ /*! * \~english \property DWindowMaxButton::isMaximized * \~english \brief isMaximized indicates whether the button state is maximized or not. * * \~english It's true if it's set to maximized, otherwise false. * * \~chinese \property DWindowMaxButton::isMaximized * \~chinese \brief isMaximized 属性标示了这个按钮当前所处于的状态。 * \~chinese 值为 true 表示按钮处于最大化状态,false 表示窗口处于正常状态。 */ bool DWindowMaxButton::isMaximized() const { D_DC(DWindowMaxButton); return d->m_isMaximized; } void DWindowMaxButton::setMaximized(bool isMaximized) { D_D(DWindowMaxButton); if (d->m_isMaximized == isMaximized) return; d->m_isMaximized = isMaximized; Q_EMIT maximizedChanged(isMaximized); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwindowmaxbutton.h000066400000000000000000000024761352002233700215320ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWMAXBUTTON_H #define DWINDOWMAXBUTTON_H #include #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class DWindowMaxButtonPrivate; class LIBDTKWIDGETSHARED_EXPORT DWindowMaxButton : public DImageButton { Q_OBJECT public: DWindowMaxButton(QWidget * parent = 0); Q_PROPERTY(bool isMaximized READ isMaximized WRITE setMaximized NOTIFY maximizedChanged) bool isMaximized() const; public Q_SLOTS: void setMaximized(bool isMaximized); Q_SIGNALS: void maximizedChanged(bool isMaximized); private: D_DECLARE_PRIVATE(DWindowMaxButton) }; DWIDGET_END_NAMESPACE #endif // DWINDOWMAXBUTTON_H dtkwidget-2.1.1/src/widgets/dwindowminbutton.cpp000066400000000000000000000030741352002233700220560ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthememanager.h" #include "dwindowminbutton.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DWindowMinButton * \~english \brief The DWindowMinButton class is used as the unified window minimize button. * * \~english It's actually a special DImageButton which has the appearance of minimize button. * * \~chinese \class DWindowMinButton * \~chinese \brief DWindowMinButton 类是 DTK 窗口统一的最小化按钮控件。 */ /*! * \~chinese \brief DWindowMinButton::DWindowMinButton 是 DWindowMinButton 的构造 * \~chinese 函数,返回 DWindowMinButton 对象,普通程序一般无需使用。 * \~chinese \param parent 为创建对象的父控件。 */ DWindowMinButton::DWindowMinButton(QWidget * parent) : DImageButton(parent) { DThemeManager::registerWidget(this); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwindowminbutton.h000066400000000000000000000017461352002233700215270ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWMINBUTTON_H #define DWINDOWMINBUTTON_H #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DWindowMinButton : public DImageButton { Q_OBJECT public: DWindowMinButton(QWidget * parent = 0); }; DWIDGET_END_NAMESPACE #endif // DWINDOWMINBUTTON_H dtkwidget-2.1.1/src/widgets/dwindowoptionbutton.cpp000066400000000000000000000033031352002233700225760ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthememanager.h" #include "dwindowoptionbutton.h" DWIDGET_BEGIN_NAMESPACE /*! * \~english \class DWindowOptionButton * \~english \brief The DWindowOptionButton class is used as the unified window option button. * * \~english It's actually a special DImageButton which has the appearance of option button. * * \~chinese \class DWindowOptionButton * \~chinese \brief DWindowOptionButton 类是 DTK 窗口统一的菜单按钮控件。 * \~chinese 点击按钮后,默认会显示程序主菜单,包含“关于”、“帮助”等项。 */ /*! * \~chinese \brief DWindowOptionButton::DWindowOptionButton 是 DWindowOptionButton 的构造 * \~chinese 函数,返回 DWindowOptionButton 对象,普通程序一般无需使用。 * \~chinese \param parent 为创建对象的父控件。 */ DWindowOptionButton::DWindowOptionButton(QWidget * parent) : DImageButton(parent) { DThemeManager::registerWidget(this); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/dwindowoptionbutton.h000066400000000000000000000017651352002233700222550ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWINDOWOPTIONBUTTON_H #define DWINDOWOPTIONBUTTON_H #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class LIBDTKWIDGETSHARED_EXPORT DWindowOptionButton : public DImageButton { Q_OBJECT public: DWindowOptionButton(QWidget * parent = 0); }; DWIDGET_END_NAMESPACE #endif // DWINDOWOPTIONBUTTON_H dtkwidget-2.1.1/src/widgets/dx11window.h000066400000000000000000000012711352002233700201120ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ dtkwidget-2.1.1/src/widgets/icons.qrc000066400000000000000000000015241352002233700175570ustar00rootroot00000000000000 images/arrow_right_white.png images/arrow_right_press.png images/arrow_right_normal.png images/arrow_right_hover.png images/arrow_left_white.png images/arrow_left_press.png images/arrow_left_normal.png images/arrow_left_hover.png images/deepin-logo.svg images/dialog_close_round_hover@2x.png images/dialog_close_round_hover.png images/dialog_close_round_press@2x.png images/dialog_close_round_normal@2x.png images/dialog_close_round_normal.png images/dialog_close_round_press.png dtkwidget-2.1.1/src/widgets/images/000077500000000000000000000000001352002233700172005ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/images/arrow_left_hover.png000066400000000000000000000004431352002233700232560ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHlH̙3߹sǟdf(^@hi@fY,L3M(Ѐe۷R 6SAΆ1LȆ,\<#4w.RG0qr>`\k"IENDB`dtkwidget-2.1.1/src/widgets/images/arrow_left_normal.png000066400000000000000000000005011352002233700234160ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHyxx˱0aaajjjLj.؅D`asssQhj@RRYiii#ӧ͛g/02W)40]A[nXjD k^ %KA Al$%e4C 1bGR ]2TNIENDB`dtkwidget-2.1.1/src/widgets/images/arrow_left_press.png000066400000000000000000000004431352002233700232670ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHlH̙3߹sǟdf(^@hi@fY,L3M(Ѐe۷R 6SAΆ1LȆ,\<#4w.RG0qr>`\k"IENDB`dtkwidget-2.1.1/src/widgets/images/arrow_left_white.png000066400000000000000000000004251352002233700232530ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?%.022ʂhrLh^n]˗/}*} D3N@u͚5}44ݻvyk|Ak *))ebbd}` e<'SqqqPI^ B Yj6ybr^00y\=h:IENDB`dtkwidget-2.1.1/src/widgets/images/arrow_right_hover.png000066400000000000000000000004721352002233700234430ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1RA, h`ƍ. E wYAx̙  )4XC1 5k֜b3 ``,T}V 700L0T0A!: ՌR4c5`… ŒP[ۗt̅ bs# H;AaOIENDB`dtkwidget-2.1.1/src/widgets/images/arrow_right_normal.png000066400000000000000000000005261352002233700236100ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1xxxRA, h %%hx>###HQ.Լ DI g#(voݺbժUqb k$%%6>}zn޼yxt`~U th/4bP D@f111Uь5~XH%5O` L@A|SYGHIENDB`dtkwidget-2.1.1/src/widgets/images/arrow_right_press.png000066400000000000000000000004721352002233700234540ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1RA, h`ƍ. E wYAx̙  )4XC1 5k֜b3 ``,T}V 700L0T0A!: ՌR4c5`… ŒP[ۗt̅ bs# H;AaOIENDB`dtkwidget-2.1.1/src/widgets/images/arrow_right_white.png000066400000000000000000000004361352002233700234400ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?%&022ʂhcB`|ѣGUM hX>[D0f#I! f͚>!py?|{n?6y&Qȷd}&&JJJoI D_qqq߿? $qj*b40 L^sqlOrT$IENDB`dtkwidget-2.1.1/src/widgets/images/deepin-logo.svg000066400000000000000000000124551352002233700221320ustar00rootroot00000000000000 logo Created with Sketch. dtkwidget-2.1.1/src/widgets/images/dialog_close_round_hover.png000066400000000000000000000011131352002233700247400ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH U1K@\RJkP8q;XD..7)m89,)DB{$]Qĭ.^޽"jǙqyW>];:})h4u]/q&c$= Xa ƿmQ65UU 7#`U(O3ɀqK*$ ^R"@;MVgw9|$@HS\m/" OWh.X"@0D'_27LBi"_ec=rMgiͦq;Us әX3mD'x8C*Ī'~/#v|UpBï9ϼ3{h=QZ"}rW>YA:lSb|T&9|ҞSn0֘WEvhŰw'gxR%53́Mw0p25n^z& #x=\uh>[0KgIENDB`dtkwidget-2.1.1/src/widgets/images/dialog_close_round_hover@2x.png000066400000000000000000000020721352002233700253170ustar00rootroot00000000000000PNG  IHDR00WsRGBIDAThYkAn>FۢbX/(D*(VGKUsBeUP%+@* ðqfp+B*아Uظq|4:aw N.B 5T-$l'߷E \53 .#!J}#jp)XؠYJ ,5>ULIsH]H-2dI8DV>ޤ1A xx޳7 x36GDIENDB`dtkwidget-2.1.1/src/widgets/images/dialog_close_round_normal.png000066400000000000000000000010671352002233700251150ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH U=kABb Bʄ Li "6),SHBH#x]8L K4QGM s;;^ 06ǹz,Gha<1m'&>[ WC+KKpzrl$ܕ$>xm dϝLoJ"J9/ NЙfF.wC\R`,$HRFRI"!x>1NOC%`q%)F1pI\P(ZA0ё0"c{&v\.g,ZN) }Ih63̄eEfZ5E>q•Z /% u(^ܛs68ec?le[A-fwm8jF^'TdN.(rnf8JMXH^=-o˶>vC5@=EyP(MB>rR |X vghIENDB`dtkwidget-2.1.1/src/widgets/images/dialog_close_round_normal@2x.png000066400000000000000000000020221352002233700254570ustar00rootroot00000000000000PNG  IHDR00WsRGBIDAThYKK[Am-5 %U$]EGq)t) ]*o Dk]ք[]f<8d8s͜y&%ZZvKhH)7_PA@ٴ4Mǁb z_/k )lc4kg2zW~[y/oRL˯|[y%9($~J (Kp:oЮv3R$ATڰS&mcN|+^ 6^`b;mКKm7z`ȝ~p# J ͦ: ) V'gbkddDLҥRP(}8E^; ء۠vRN=\<CJ}%%ZsVo1,JYXvSWn|=p1p2Wv&DH0d6(~: Շ$3P&ۙ?iJ:cIfKD E e$@F))$ @)y$N^Mb! prn1aY̋ J솺 C$1iM*`bK]MY _Zf$x!Qc}yJ<,$|U+uO{XW2]7.a! \#"1a7.UF>$D6;/dż'xXHp\z?g % ,7P(os+r"YvT}}NXB嬏_:9r0H}=='RE03`pg`` fru;~E.`1Oer6 ۉz1p`7S+5o%reϵ.B$  kGޘAZVQ}O}bFŖ0$$L]-rW!6Ľo̜NgHe8΍{]3k^%9?:j| doR:e<ۈ>+uc0Fl_j~lL?IENDB`dtkwidget-2.1.1/src/widgets/private/000077500000000000000000000000001352002233700174055ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/private/daboutdialog_p.h000066400000000000000000000031101352002233700225260ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DABOUTDIALOG_P_H #define DABOUTDIALOG_P_H #include "daboutdialog.h" #include "ddialog_p.h" DWIDGET_BEGIN_NAMESPACE class DAboutDialogPrivate : public DDialogPrivate { public: DAboutDialogPrivate(DAboutDialog *qq); void init(); void initWebsiteInfo(); void updateWebsiteLabel(); void updateAcknowledgementLabel(); void _q_onLinkActivated(const QString &link); QPixmap loadPixmap(const QString &file); static const QString websiteLinkTemplate; QPixmap windowIcon; QLabel *logoLabel; QLabel *productNameLabel; QLabel *versionLabel; QLabel *descriptionLabel; QLabel *licenseLabel; QLabel *companyLogoLabel; QLabel *websiteLabel; QLabel *acknowledgementLabel; QString websiteName; QString websiteLink; QString acknowledgementLink; Q_DECLARE_PUBLIC(DAboutDialog) }; DWIDGET_END_NAMESPACE #endif // DABOUTDIALOG_P_H dtkwidget-2.1.1/src/widgets/private/dabstractdialogprivate_p.h000066400000000000000000000031271352002233700246220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DABSTRACTDIALOG_P_H #define DABSTRACTDIALOG_P_H #include "dabstractdialog.h" #include class QLabel; class QBoxLayout; DWIDGET_BEGIN_NAMESPACE class DPlatformWindowHandle; class DBlurEffectWidget; class DAbstractDialogPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { protected: DAbstractDialogPrivate(DAbstractDialog *qq); QRect getParentGeometry() const; private: void init(); bool mouseMoved = false; /// 记录是否收到过鼠标移动事件. bool mousePressed = false; QPoint dragPosition; QColor backgroundColor; QColor borderColor; DAbstractDialog::DisplayPosition displayPosition = DAbstractDialog::Center; QLabel* windowTitle = Q_NULLPTR; DPlatformWindowHandle *handle = Q_NULLPTR; DBlurEffectWidget *bgBlurWidget = Q_NULLPTR; Q_DECLARE_PUBLIC(DAbstractDialog) }; DWIDGET_END_NAMESPACE #endif // DABSTRACTDIALOG_P_H dtkwidget-2.1.1/src/widgets/private/dapplication_p.h000066400000000000000000000045131352002233700225470ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DAPPLICATION_P_H #define DAPPLICATION_P_H #include #include "dapplication.h" #include "dpathbuf.h" #include class QLocalServer; class QTranslator; DCORE_USE_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DAboutDialog; class DApplicationPrivate : public DObjectPrivate { D_DECLARE_PUBLIC(DApplication) public: explicit DApplicationPrivate(DApplication *q); ~DApplicationPrivate(); QString theme() const; void setTheme(const QString &theme); bool setSingleInstanceBySemaphore(const QString &key); #ifdef Q_OS_UNIX bool setSingleInstanceByDbus(const QString &key); #endif bool loadDtkTranslator(QList localeFallback); bool loadTranslator(QList translateDirs, const QString &name, QList localeFallback); // 根据调色板中的窗口背景色重设程序的主题颜色“亮”/“暗”类型 void resetApplicationThemeType(); // 根据窗口自身的背景色重设其主题颜色的“亮”/“暗”类型 void resetWindowThemeType(QWidget *window); static bool isUserManualExists(); public: // int m_pidLockFD = 0; QLocalServer *m_localServer = nullptr; #ifdef Q_OS_UNIX QStringList m_monitoredStartupApps; #endif QString productName; QIcon productIcon; QString appLicense; QString appDescription; QString homePage; QString acknowledgementPage; bool acknowledgementPageVisible = true; bool visibleMenuShortcutText = false; bool visibleMenuCheckboxWidget = false; bool visibleMenuIcon = false; DAboutDialog *aboutDialog = Q_NULLPTR; }; DWIDGET_END_NAMESPACE #endif // DAPPLICATION_P_H dtkwidget-2.1.1/src/widgets/private/darrowrectangle_p.h000066400000000000000000000047701352002233700232700ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DARROWRECTANGLE_P_H #define DARROWRECTANGLE_P_H #include "darrowrectangle.h" #include #include #include "util/dwindowmanagerhelper.h" DWIDGET_BEGIN_NAMESPACE class DArrowRectanglePrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DArrowRectangle) public: explicit DArrowRectanglePrivate(DArrowRectangle::ArrowDirection direction, DArrowRectangle *q); void init(DArrowRectangle::FloatMode floatMode); virtual void show(int x, int y); void setContent(QWidget *content); void resizeWithContent(); void paintEvent(QPaintEvent *e); void resizeEvent(QResizeEvent *e); QPainterPath getLeftCornerPath(); QPainterPath getRightCornerPath(); QPainterPath getTopCornerPath(); QPainterPath getBottomCornerPath(); const QRect currentScreenRect(const int x, const int y); void verticalMove(int x, int y); void horizontalMove(int x, int y); void updateClipPath(); bool radiusEnabled(); public: int m_radius = 3; int m_arrowHeight = 8; int m_arrowWidth = 12; int m_margin = 5; int m_arrowX = 0; int m_arrowY = 0; qreal m_shadowBlurRadius = 20; qreal m_shadowDistance = 0; qreal m_shadowXOffset = 0; qreal m_shadowYOffset = 5; int m_shadowWidth = 5; //Abandoned int m_borderWidth = 1; QColor m_borderColor = QColor(0, 0, 0, 255 * 0.1); QColor m_backgroundColor = QColor(255, 255, 255, 255); DArrowRectangle::ArrowDirection m_arrowDirection; QPoint m_lastPos = QPoint(0, 0); DArrowRectangle::FloatMode floatMode = DArrowRectangle::FloatWindow; QPointer m_content; DPlatformWindowHandle *m_handle = NULL; DBlurEffectWidget *m_blurBackground = NULL; DWindowManagerHelper *m_wmHelper; }; DWIDGET_END_NAMESPACE #endif // DARROWRECTANGLE_P_H dtkwidget-2.1.1/src/widgets/private/dblureffectwidget_p.h000066400000000000000000000040261352002233700235700ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBLUREFFECTWIDGET_P_H #define DBLUREFFECTWIDGET_P_H #include #include "dblureffectwidget.h" DWIDGET_BEGIN_NAMESPACE class DBlurEffectWidgetPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DBlurEffectWidgetPrivate(DBlurEffectWidget *qq); DBlurEffectWidget::BlurMode mode = DBlurEffectWidget::GaussianBlur; QImage sourceImage; DBlurEffectWidget::BlendMode blendMode = DBlurEffectWidget::InWindowBlend; int radius = 10; int blurRectXRadius = 0; int blurRectYRadius = 0; quint8 maskAlpha = 102; bool full = false; bool blurEnabled = true; QColor maskColor = Qt::transparent; DBlurEffectWidget::MaskColorType maskColorType = DBlurEffectWidget::CustomColor; QPainterPath maskPath; bool isBehindWindowBlendMode() const; bool isFull() const; void addToBlurEffectWidgetHash(); void removeFromBlurEffectWidgetHash(); bool updateWindowBlurArea(); void setMaskColor(const QColor &color); void setMaskAlpha(const quint8 alpha); static QMultiHash blurEffectWidgetHash; static QHash windowOfBlurEffectHash; static bool updateWindowBlurArea(QWidget *topLevelWidget); private: D_DECLARE_PUBLIC(DBlurEffectWidget) }; DWIDGET_END_NAMESPACE #endif // DBLUREFFECTWIDGET_P_H dtkwidget-2.1.1/src/widgets/private/dborderlesswidget_p.h000066400000000000000000000043661352002233700236220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DWDIGET_P_H #define DWDIGET_P_H #include #include "dborderlesswidget.h" #include "../../platforms/x11/xutil.h" class QVBoxLayout; class QGraphicsDropShadowEffect; class DX11Widget; DWIDGET_BEGIN_NAMESPACE class DBorderlessWidgetPrivate: public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DBorderlessWidget) public: explicit DBorderlessWidgetPrivate(DBorderlessWidget *q); void init(); QSize externSize(const QSize &size) const; QMargins externMargins() const; int externWidth() const; void updateContentsMargins(); void _q_onTitleBarMousePressed(Qt::MouseButtons buttons) const; bool leftPressed; bool resizable; int m_ShadowWidth; int m_NormalShadowWidth; int m_Radius; int m_Border; int m_ResizeHandleWidth; bool m_MousePressed; QPoint m_LastMousePos; Qt::WindowFlags dwindowFlags; DBorderlessWidget::DecorationFlags decorationFlags; QColor m_backgroundColor; QColor shadowColor; QPoint shadowOffset; QPixmap m_Background; QPixmap shadowPixmap; QWidget *windowWidget = nullptr; QVBoxLayout *rootLayout = nullptr; DTitlebar *titlebar = nullptr; QWidget *contentWidget = nullptr; XUtils::CornerEdge resizingCornerEdge = XUtils::CornerEdge::kInvalid; }; DWIDGET_END_NAMESPACE #endif // DWDIGET_P_H dtkwidget-2.1.1/src/widgets/private/dboxwidget_p.h000066400000000000000000000020671352002233700222420ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBOXWIDGET_P_H #define DBOXWIDGET_P_H #include "dboxwidget.h" #include class QBoxLayout; DWIDGET_BEGIN_NAMESPACE class DBoxWidgetPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DBoxWidgetPrivate(DBoxWidget *qq); QBoxLayout *layout; void init(); Q_DECLARE_PUBLIC(DBoxWidget) }; DWIDGET_END_NAMESPACE #endif // DBOXWIDGET_P_H dtkwidget-2.1.1/src/widgets/private/dcircleprogress_p.h000066400000000000000000000025461352002233700232760ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DCIRCLEPROGRESS_P_H #define DCIRCLEPROGRESS_P_H #include "dcircleprogress.h" #include #include DWIDGET_BEGIN_NAMESPACE class DCircleProgressPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { Q_DECLARE_PUBLIC(DCircleProgress) public: DCircleProgressPrivate(DCircleProgress *q); private: void paint(QPainter *painter); private: int m_lineWidth = 3; int m_currentValue = 40; int m_minmumValue = 0; int m_maximumValue = 100; QLabel m_topLabel; QLabel m_bottomLabel; QColor m_chunkColor = Qt::cyan; QColor m_backgroundColor = Qt::darkCyan; }; DWIDGET_END_NAMESPACE #endif // DCIRCLEPROGRESS_P_H dtkwidget-2.1.1/src/widgets/private/ddialog_p.h000066400000000000000000000047331352002233700215070ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DDIALOG_P_H #define DDIALOG_P_H #include #include #include "ddialog.h" #include "dabstractdialogprivate_p.h" QT_BEGIN_NAMESPACE class QHBoxLayout; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DImageButton; class DVBoxWidget; class DHBoxWidget; class DialogButton : public QPushButton { Q_OBJECT Q_PROPERTY(int buttonType READ buttonType WRITE setButtonType NOTIFY buttonTypeChanged) public: explicit DialogButton(const QString &text, QWidget *parent = 0); int buttonType() const; public Q_SLOTS: void setButtonType(int buttonType); Q_SIGNALS: void buttonTypeChanged(int buttonType); private: int m_buttonType; }; class DDialogPrivate : public DAbstractDialogPrivate { protected: DDialogPrivate(DDialog *qq); QBoxLayout *getContentLayout(); private: bool onButtonClickedClose = true; QIcon icon; QString title; QString message; Qt::TextFormat textFormat; QLabel* iconLabel; QLabel* messageLabel; QLabel* titleLabel; DImageButton* closeButton = Q_NULLPTR; QHBoxLayout *iconLayout; QVBoxLayout *contentLayout; QHBoxLayout *buttonLayout; QHBoxLayout *topLayout; const QScreen *targetScreen = nullptr; QList buttonList; QList contentList; QPointer defaultButton; int clickedButtonIndex; QStyle *fixedStyle; void init(); const QScreen *getScreen() const; QString trimTag(QString origin) const; QMap scanTags(const QString origin) const; QString elideString(QString str, const QFontMetrics &fm, int width) const; void updateSize(); void _q_onButtonClicked(); void _q_defaultButtonTriggered(); Q_DECLARE_PUBLIC(DDialog) }; DWIDGET_END_NAMESPACE #endif // DDIALOG_P_H dtkwidget-2.1.1/src/widgets/private/dfilechooseredit_p.h000066400000000000000000000024671352002233700234220ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFILECHOOSEREDIT_P_H #define DFILECHOOSEREDIT_P_H #include "dlineedit_p.h" #include "dfilechooseredit.h" #include "dimagebutton.h" DWIDGET_BEGIN_NAMESPACE class DFileChooserEditPrivate : DLineEditPrivate { Q_DECLARE_PUBLIC(DFileChooserEdit) public: DFileChooserEditPrivate(DFileChooserEdit *q); void init(); public: void _q_showFileChooserDialog(); DFileChooserEdit::DialogDisplayPosition dialogDisplayPosition = DFileChooserEdit::FollowParentWindow; QFileDialog::FileMode fileMode = QFileDialog::ExistingFile; QStringList nameFilters; }; DWIDGET_END_NAMESPACE #endif // DFILECHOOSEREDIT_P_H dtkwidget-2.1.1/src/widgets/private/dflowlayout_p.h000066400000000000000000000024121352002233700224450ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DFLOWLAYOUT_P_H #define DFLOWLAYOUT_P_H #include "dflowlayout.h" #include class QLayoutItem; DWIDGET_BEGIN_NAMESPACE class DFlowLayoutPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DFlowLayoutPrivate(DFlowLayout *qq); QSize doLayout(const QRect &rect, bool testOnly) const; QList itemList; int horizontalSpacing = 0; int verticalSpacing = 0; mutable QSize sizeHint; DFlowLayout::Flow flow = DFlowLayout::Flow::LeftToRight; D_DECLARE_PUBLIC(DFlowLayout) }; DWIDGET_END_NAMESPACE #endif // DFLOWLAYOUT_P_H dtkwidget-2.1.1/src/widgets/private/dimagebutton_p.h000066400000000000000000000027131352002233700225620ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: kirigaya * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DIMAGEBUTTON_P_H #define DIMAGEBUTTON_P_H #include "dimagebutton.h" #include DWIDGET_BEGIN_NAMESPACE class DImageButtonPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: explicit DImageButtonPrivate(DImageButton *qq); ~DImageButtonPrivate(); void updateIcon(); void setState(DImageButton::State state); QPixmap loadPixmap(const QString &path); DImageButton::State m_state = DImageButton::Normal; bool m_isChecked = false; bool m_isCheckable = false; QString m_normalPic; QString m_hoverPic; QString m_pressPic; QString m_checkedPic; QString m_disabledPic; D_DECLARE_PUBLIC(DImageButton) }; DWIDGET_END_NAMESPACE #endif // DIMAGEBUTTON_P_H dtkwidget-2.1.1/src/widgets/private/dinputdialog_p.h000066400000000000000000000025551352002233700225670ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DINPUTDIALOG_P_H #define DINPUTDIALOG_P_H #include "dinputdialog.h" #include "ddialog_p.h" class QComboBox; DWIDGET_BEGIN_NAMESPACE class DLabel; class DLineEdit; class DSpinBox; class DDoubleSpinBox; class DInputDialogPrivate : public DDialogPrivate { DInputDialogPrivate(DInputDialog *qq); QAbstractButton *cancelButton = nullptr; QAbstractButton *okButton = nullptr; DLineEdit *lineEdit = nullptr; DSpinBox* spinBox = nullptr; DDoubleSpinBox *doubleSpinBox = nullptr; QComboBox *comboBox = nullptr; DInputDialog::InputMode inputMode; void init(); D_DECLARE_PUBLIC(DInputDialog) }; DWIDGET_END_NAMESPACE #endif // DINPUTDIALOG_P_H dtkwidget-2.1.1/src/widgets/private/dipv4lineedit_p.h000066400000000000000000000024241352002233700226430ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DIPV4LINEEDIT_P_H #define DIPV4LINEEDIT_P_H #include "dlineedit_p.h" #include "dipv4lineedit.h" DWIDGET_BEGIN_NAMESPACE class DIpv4LineEditPrivate : public DLineEditPrivate { DIpv4LineEditPrivate(DIpv4LineEdit *parent); void init(); QLabel *getLabel(); QLineEdit *getEdit(); void setFocus(bool focus); void _q_updateLineEditText(); void _q_setIpLineEditText(const QString &text); QList editList; QWidget *editMainWidget; bool focus = false; D_DECLARE_PUBLIC(DIpv4LineEdit) }; DWIDGET_END_NAMESPACE #endif // DIPV4LINEEDIT_P_H dtkwidget-2.1.1/src/widgets/private/dlineedit_p.h000066400000000000000000000024351352002233700220420ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLINEEDIT_P_H #define DLINEEDIT_P_H #include "dlineedit.h" #include "dimagebutton.h" #include #include QT_BEGIN_NAMESPACE class QWidgetAction; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DArrowRectangle; class DLineEditPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { Q_DECLARE_PUBLIC(DLineEdit) public: DLineEditPrivate(DLineEdit *q); void init(); public: bool m_isAlert = false; DImageButton *m_rightIcon; QWidgetAction *m_iconAction; DArrowRectangle *tooltip = Q_NULLPTR; }; DWIDGET_END_NAMESPACE #endif // DLINEEDIT_P_H dtkwidget-2.1.1/src/widgets/private/dlistview_p.h000066400000000000000000000025121352002233700221070ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLISTVIEW_P_H #define DLISTVIEW_P_H #include "dlistview.h" #include DWIDGET_BEGIN_NAMESPACE class DBoxWidget; class DListViewPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DListViewPrivate(DListView *qq); ~DListViewPrivate(); void init(); void onOrientationChanged(); DBoxWidget *headerLayout = nullptr; DBoxWidget *footerLayout = nullptr; QList headerList; QList footerList; #if(QT_VERSION < 0x050500) int left = 0, top = 0, right = 0, bottom = 0; // viewport margin #endif D_DECLARE_PUBLIC(DListView) }; DWIDGET_END_NAMESPACE #endif // DLISTVIEW_P_H dtkwidget-2.1.1/src/widgets/private/dlistwidget_p.h000066400000000000000000000026561352002233700224310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLISTWIDGET_P_H #define DLISTWIDGET_P_H #include "dscrollarea_p.h" #include "dlistwidget.h" #include "dboxwidget.h" class QVBoxLayout; DWIDGET_BEGIN_NAMESPACE class DListWidgetPrivate : public DScrollAreaPrivate { protected: DListWidgetPrivate(DListWidget *qq); ~DListWidgetPrivate(); private: void init(); int itemWidth; int itemHeight; QList widgetList; QList checkedList; DListWidget::CheckMode checkMode; DBoxWidget *mainWidget; int visibleCount; QMap mapVisible; bool checkable; bool toggleable; bool enableHorizontalScroll; bool enableVerticalScroll; D_DECLARE_PUBLIC(DListWidget) }; DWIDGET_END_NAMESPACE #endif // DLISTWIDGET_P_H dtkwidget-2.1.1/src/widgets/private/dloadingindicator_p.h000066400000000000000000000024551352002233700235610ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DLOADINGINDICATOR_P #define DLOADINGINDICATOR_P #include #include "dloadingindicator.h" DWIDGET_BEGIN_NAMESPACE class DLoadingIndicatorPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DLoadingIndicatorPrivate(DLoadingIndicator *qq); void init(); void setLoadingItem(QGraphicsItem *item); QVariantAnimation rotateAni; bool loading; QWidget *widgetSource = NULL; bool smooth = false; DLoadingIndicator::RotationDirection direction = DLoadingIndicator::Clockwise; D_DECLARE_PUBLIC(DLoadingIndicator) }; DWIDGET_END_NAMESPACE #endif // DLOADINGINDICATOR_P dtkwidget-2.1.1/src/widgets/private/dmainwindow_p.h000066400000000000000000000024401352002233700224150ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DMAINWINDOW_P_H #define DMAINWINDOW_P_H #include #include "dtkwidget_global.h" #include "dmainwindow.h" class QShortcut; DWIDGET_BEGIN_NAMESPACE class DPlatformWindowHandle; class DTitlebar; class DMainWindowPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DMainWindowPrivate(DMainWindow *qq); void init(); DPlatformWindowHandle *handle = Q_NULLPTR; DTitlebar *titlebar = Q_NULLPTR; QShortcut *help = Q_NULLPTR; private: D_DECLARE_PUBLIC(DMainWindow) }; DWIDGET_END_NAMESPACE #endif // DMAINWINDOW_P_H dtkwidget-2.1.1/src/widgets/private/dmpriscontrol_p.h000066400000000000000000000037501352002233700230010ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DMPRISCONTROL_P_H #define DMPRISCONTROL_P_H #include #include "dimagebutton.h" #include "dmpriscontrol.h" #include "dtickeffect.h" #include "private/mpris/dbusmpris.h" #include "private/mpris/dmprismonitor.h" #include DWIDGET_BEGIN_NAMESPACE class DMPRISControlPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DMPRISControl) public: explicit DMPRISControlPrivate(DMPRISControl *q); void init(); public Q_SLOTS: void _q_onPrevClicked(); void _q_onPlayClicked(); void _q_onPauseClicked(); void _q_onNextClicked(); void _q_onMetaDataChanged(); void _q_onPlaybackStatusChanged(); void _q_loadMPRISPath(const QString &path); void _q_removeMPRISPath(const QString &path); void _q_onCanControlChanged(bool canControl); public: DMPRISMonitor *m_mprisMonitor; DBusMPRIS * m_mprisInter; QScrollArea *m_titleScrollArea; QLabel * m_title; QLabel * m_picture; DTickEffect *m_tickEffect; QWidget * m_controlWidget; DImageButton *m_prevBtn; DImageButton *m_playBtn; DImageButton *m_pauseBtn; DImageButton *m_nextBtn; bool m_pictureVisible; QString m_lastPath; QStringList m_mprisPaths; }; DWIDGET_END_NAMESPACE #endif // DMPRISCONTROL_P_H dtkwidget-2.1.1/src/widgets/private/doption_p.h000066400000000000000000000032461352002233700215560ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DOPTION_P_H #define DOPTION_P_H #include "doption.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DOptionPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DOption) public: DOptionPrivate(DOption *q); void init(); void setIcon(const QString& iconName); void setIcon(const QPixmap& icon); const QString name() const; const QString value() const; bool checked() const; void setChecked(bool checked); const QString checkedIcon() const; void setCheckedIcon(const QString &icon); void sizeChanged(QResizeEvent *e); public Q_SLOTS: void _q_itemStateChanged(QListWidgetItem* item); public: bool m_checked = false; QString m_optionValue; QString m_checkedIconName; QLabel *m_checkedIconLabel; QLabel *m_optionIcon; QLabel *m_optionName; QHBoxLayout *m_layout; }; DWIDGET_END_NAMESPACE #endif // DOPTION_P_H dtkwidget-2.1.1/src/widgets/private/doptionlist_p.h000066400000000000000000000026611352002233700224520ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DOPTIONLIST_P_H #define DOPTIONLIST_P_H #include "doptionlist.h" #include "doption.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DOptionListPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DOptionList) public: DOptionListPrivate(DOptionList *q); void init(); void addOption(DOption *option); void insertOption(int pos, DOption *option); void setCurrentSelected(int pos); void setCurrentSelected(const QString &value); public Q_SLOTS: void _q_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); protected: QMap m_optionList; }; DWIDGET_END_NAMESPACE #endif // DOPTIONLIST_P_H dtkwidget-2.1.1/src/widgets/private/dpageindicator_p.h000066400000000000000000000025361352002233700230600ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPAGEINDICATOR_P_H #define DPAGEINDICATOR_P_H #include "dpageindicator.h" #include DWIDGET_BEGIN_NAMESPACE class DPageIndicatorPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DPageIndicator) public: DPageIndicatorPrivate(DPageIndicator *q); void setPageCount(const int count); void nextPage(); void previousPage(); void setCurrentPage(const int index); public: int pointRadius = 5; int secondaryPointRadius = 3; int pointDistance = 12; int pageCount; int currentPage; QColor pointColor; QColor secondaryPointColor; }; DWIDGET_END_NAMESPACE #endif // DPAGEINDICATOR_P_H dtkwidget-2.1.1/src/widgets/private/dpasswdeditanimated_p.h000066400000000000000000000030441352002233700241140ustar00rootroot00000000000000#ifndef DPASSWDEDITANIMATED_P_H #define DPASSWDEDITANIMATED_P_H #include "dpasswdeditanimated.h" #include "dimagebutton.h" #include "dlabel.h" #include "darrowrectangle.h" #include "dkeyboardmonitor.h" #include #include DWIDGET_BEGIN_NAMESPACE class LoadSlider : public QWidget { public: LoadSlider(QWidget *parent = 0); public: QColor loadSliderColor() const; void setLoadSliderColor(const QColor &color); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: QColor m_loadSliderColor; }; class DPasswdEditAnimatedPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DPasswdEditAnimated) public: DPasswdEditAnimatedPrivate(DPasswdEditAnimated *q); void init(); public Q_SLOTS: void _q_resetCapslockState(); void _q_onEyeButtonClicked(); void _q_showLoadSlider(); void _q_hideLoadSlider(); void _q_inputDone(); void _q_onKeyboardButtonClicked(); public: DImageButton *m_keyboard; DImageButton *m_eye; DImageButton *m_submit; DLabel *m_caps; DLabel *m_invalidMessage; DArrowRectangle *m_invalidTip; QLineEdit *m_passwdEdit; LoadSlider *m_loadSlider; QPropertyAnimation *m_loadSliderAnim; // to get capslock state DKeyboardMonitor *m_kbdMonitor; bool m_capsEnable; bool m_eyeEnable; bool m_submitEnable; bool m_loadAnimEnable; bool m_isLoading; bool m_alterBeforeHide; const int LoadSliderWidth = 40; }; DWIDGET_END_NAMESPACE #endif // DPASSWDEDITANIMATED_P_H dtkwidget-2.1.1/src/widgets/private/dpasswordedit_p.h000066400000000000000000000020711352002233700227510ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPASSWORDEDIT_P_H #define DPASSWORDEDIT_P_H #include "dlineedit_p.h" #include "dpasswordedit.h" DWIDGET_BEGIN_NAMESPACE class DPasswordEditPrivate : DLineEditPrivate { public: DPasswordEditPrivate(DPasswordEdit *q); void init(); void _q_toggleEchoMode(); protected: Q_DECLARE_PUBLIC(DPasswordEdit) }; DWIDGET_END_NAMESPACE #endif // DPASSWORDEDIT_P_H dtkwidget-2.1.1/src/widgets/private/dpicturesequenceview_p.h000066400000000000000000000027201352002233700243410ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPICTURESEQUENCEVIEW_P_H #define DPICTURESEQUENCEVIEW_P_H #include "dpicturesequenceview.h" #include #include #include #include DWIDGET_BEGIN_NAMESPACE class DPictureSequenceViewPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { D_DECLARE_PUBLIC(DPictureSequenceView) public: DPictureSequenceViewPrivate(DPictureSequenceView *q); ~DPictureSequenceViewPrivate(); void init(); void play(); QPixmap loadPixmap(const QString &path); public: void _q_refreshPicture(); public: int lastItemPos = 0; bool singleShot = false; QGraphicsScene *scene; QTimer *refreshTimer; QList pictureItemList; }; DWIDGET_END_NAMESPACE #endif // DPICTURESEQUENCEVIEW_P_H dtkwidget-2.1.1/src/widgets/private/dpushbutton_p.h000066400000000000000000000022331352002233700224540ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DPUSHBUTTON_P_H #define DPUSHBUTTON_P_H #include "dpushbutton.h" #include DWIDGET_BEGIN_NAMESPACE class DPushButtonPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: DPushButtonPrivate(DPushButton *qq); QIcon normalIcon; QIcon hoverIcon; QIcon pressIcon; QString normalIconPath; QString hoverIconPath; QString pressIconPath; D_DECLARE_PUBLIC(DPushButton) }; DWIDGET_END_NAMESPACE #endif // DPUSHBUTTON_P_H dtkwidget-2.1.1/src/widgets/private/dscrollarea_p.h000066400000000000000000000024021352002233700223660ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSCROLLAREA_P_H #define DSCROLLAREA_P_H #include "dtkwidget_global.h" #include "dscrollarea.h" #include class QPropertyAnimation; DWIDGET_BEGIN_NAMESPACE class DScrollAreaPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { protected: DScrollAreaPrivate(DScrollArea *qq); ~DScrollAreaPrivate(); private: void init(); bool autoHideScrollBar; DScrollBar *vBar; DScrollBar *hBar; QPropertyAnimation *scrollBarAnimation; QTimer *timer; D_DECLARE_PUBLIC(DScrollArea) }; DWIDGET_END_NAMESPACE #endif // DSCROLLAREA_P_H dtkwidget-2.1.1/src/widgets/private/dscrollbar_p.h000066400000000000000000000024661352002233700222340ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSCROLLBAR_P_H #define DSCROLLBAR_P_H #include "dscrollbar.h" #include QT_BEGIN_NAMESPACE class QGraphicsOpacityEffect; QT_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DScrollBarPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DScrollBarPrivate(DScrollBar *qq); void init(); void setOpacity(qreal opacity); void _q_hidden(); void _q_updateOpacity(); bool canPaint = true; bool autoHide = true; qreal opacity = 1; QTimer *timer = Q_NULLPTR; QTimer *opacityTimer = Q_NULLPTR; D_DECLARE_PUBLIC(DScrollBar) }; DWIDGET_END_NAMESPACE #endif // DSCROLLBAR_P_H dtkwidget-2.1.1/src/widgets/private/dspinbox_p.h000066400000000000000000000027521352002233700217310ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSPINBOX_P_H #define DSPINBOX_P_H #include "dspinbox.h" #include class QFrame; class QLabel; DWIDGET_BEGIN_NAMESPACE class DImageButton; class DSpinBoxPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DSpinBoxPrivate(DSpinBox *parent); void init(); void _q_resizeInsideFrame(const QSize &size); QFrame *insideFrame; bool alert = false; int defaultValue = 0; D_DECLARE_PUBLIC(DSpinBox) }; class DDoubleSpinBoxPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DDoubleSpinBoxPrivate(DDoubleSpinBox *parent); void init(); void _q_resizeInsideFrame(const QSize &size); QFrame *insideFrame; bool alert = false; double defaultValue = 0; D_DECLARE_PUBLIC(DDoubleSpinBox) }; DWIDGET_END_NAMESPACE #endif // DSPINBOX_P_H dtkwidget-2.1.1/src/widgets/private/dstackwidget_p.h000066400000000000000000000032301352002233700225500ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSTACKWIDGET_P_H #define DSTACKWIDGET_P_H #include "dstackwidget.h" #include class QStackedLayout; DWIDGET_BEGIN_NAMESPACE class DAbstractStackWidgetTransitionPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DAbstractStackWidgetTransitionPrivate(DAbstractStackWidgetTransition *qq); ~DAbstractStackWidgetTransitionPrivate(); QVariantAnimation *animation; DAbstractStackWidgetTransition::TransitionInfo info; void init(); D_DECLARE_PUBLIC(DAbstractStackWidgetTransition) }; class DStackWidgetPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DStackWidgetPrivate(DStackWidget *qq); ~DStackWidgetPrivate(); int currentIndex; QWidget *currentWidget; QList widgetList; QList trashWidgetList; DAbstractStackWidgetTransition* transition; void init(); void setCurrentIndex(int index); D_DECLARE_PUBLIC(DStackWidget) }; DWIDGET_END_NAMESPACE #endif // DSTACKWIDGET_P dtkwidget-2.1.1/src/widgets/private/dswitchbutton_p.h000066400000000000000000000026701352002233700230030ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * Author: kirigaya * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DSWITCHBUTTON_P_H #define DSWITCHBUTTON_P_H #include "dswitchbutton.h" #include DWIDGET_BEGIN_NAMESPACE class DSwitchButtonPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: explicit DSwitchButtonPrivate(DSwitchButton *qq); ~DSwitchButtonPrivate(); void init(); public: bool checked = false; QColor enabledBackground = qRgba(207, 214, 230, 255); QColor disabledBackground = qRgba(207, 214, 230, 255); QColor checkedBackground = qRgba(44, 167, 248, 255); QVariantAnimation *animation; double animationStartValue; double animationEndValue; public: D_DECLARE_PUBLIC(DSwitchButton) }; DWIDGET_END_NAMESPACE #endif // DSWITCHBUTTON_P_H dtkwidget-2.1.1/src/widgets/private/dtextedit_p.h000066400000000000000000000020341352002233700220720ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTEXTEDIT_P_H #define DTEXTEDIT_P_H #include "dtextedit.h" #include DWIDGET_BEGIN_NAMESPACE class DTextEditPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { DTextEditPrivate(DTextEdit *qq); void init(); QFrame *insideFrame; D_DECLARE_PUBLIC(DTextEdit) }; DWIDGET_END_NAMESPACE #endif // DTEXTEDIT_P_H dtkwidget-2.1.1/src/widgets/private/dthemehelper.cpp000066400000000000000000000016541352002233700225650ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthemehelper.h" DThemeHelper::DThemeHelper(QObject *parent) : QObject(parent) { } QString DThemeHelper::themeToQss(QString theme) { return theme; } QString DThemeHelper::trimThemeContents(QString qss) { return qss; } dtkwidget-2.1.1/src/widgets/private/dthemehelper.h000066400000000000000000000017301352002233700222250ustar00rootroot00000000000000/* * Copyright (C) 2015 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTHEMEHELPER_H #define DTHEMEHELPER_H #include class DThemeHelper : public QObject { Q_OBJECT public: explicit DThemeHelper(QObject *parent = 0); QString themeToQss(QString theme); QString trimThemeContents(QString qss); }; #endif // DTHEMEHELPER_H dtkwidget-2.1.1/src/widgets/private/dtickeffect_p.h000066400000000000000000000024501352002233700223510ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTICKEFFECTPRIVATE_H #define DTICKEFFECTPRIVATE_H #include "dtickeffect.h" #include #include #include DWIDGET_BEGIN_NAMESPACE class DTickEffectPrivate : public DTK_CORE_NAMESPACE::DObjectPrivate { public: explicit DTickEffectPrivate(DTickEffect *qq); ~DTickEffectPrivate(); void init(); void initDirection(); public: DTickEffect::Direction direction; int duration; int fixPixel; QVariantAnimation *runAnimation; QWidget *content; D_DECLARE_PUBLIC(DTickEffect) }; DWIDGET_END_NAMESPACE #endif // DTICKEFFECTPRIVATE_H dtkwidget-2.1.1/src/widgets/private/keyboardmonitor/000077500000000000000000000000001352002233700226155ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/private/keyboardmonitor/dkeyboardmonitor.cpp000066400000000000000000000147301352002233700267020ustar00rootroot00000000000000/* * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. * * Author: sbw * kirigaya * Hualet * * Maintainer: sbw * kirigaya * Hualet * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dkeyboardmonitor.h" #include #include #include #include #include #include #include #include DWIDGET_BEGIN_NAMESPACE static int xi2_opcode; int xinput_version(Display *display) { XExtensionVersion *version; static int vers = -1; if (vers != -1) return vers; version = XGetExtensionVersion(display, INAME); if (version && (version != (XExtensionVersion*) NoSuchExtension)) { vers = version->major_version; XFree(version); } /* Announce our supported version so the server treats us correctly. */ if (vers >= XI_2_Major) { const char *forced_version; int maj = 2, min = 2; forced_version = getenv("XINPUT_XI2_VERSION"); if (forced_version) { if (sscanf(forced_version, "%d.%d", &maj, &min) != 2) { fprintf(stderr, "Invalid format of XINPUT_XI2_VERSION " "environment variable. Need major.minor\n"); exit(1); } printf("Overriding XI2 version to: %d.%d\n", maj, min); } XIQueryVersion(display, &maj, &min); } return vers; } void select_events(Display* display) { XIEventMask m; m.deviceid = XIAllMasterDevices; m.mask_len = XIMaskLen(XI_LASTEVENT); m.mask = (unsigned char*)calloc(m.mask_len, sizeof(char)); // XISetMask(m.mask, XI_RawKeyPress); XISetMask(m.mask, XI_RawKeyRelease); // XISetMask(m.mask, XI_RawButtonPress); // XISetMask(m.mask, XI_RawButtonRelease); // XISetMask(m.mask, XI_RawMotion); // XISetMask(m.mask, XI_RawTouchBegin); // XISetMask(m.mask, XI_RawTouchUpdate); // XISetMask(m.mask, XI_RawTouchEnd); XISelectEvents(display, DefaultRootWindow(display), &m, 1); free(m.mask); XSync(display, False); } int DKeyboardMonitor::listen(Display *display) { Window root = DefaultRootWindow(display); int root_x, root_y, nouse; Window noused_window; unsigned int mask; while(1) { XEvent ev; XGenericEventCookie *cookie = (XGenericEventCookie*)&ev.xcookie; XNextEvent(display, (XEvent*)&ev); if (XGetEventData(display, cookie) && cookie->type == GenericEvent && cookie->extension == xi2_opcode) { XQueryPointer(display, root, &noused_window, &noused_window, &root_x, &root_y, &nouse, &nouse, &mask); XIRawEvent* event = static_cast(cookie->data); switch (cookie->evtype) { case XI_RawButtonPress: /*printf("Button press: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask);*/ break; case XI_RawButtonRelease: /*printf("Button release: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask);*/ break; case XI_RawKeyPress: break; case XI_RawKeyRelease: if (event->detail == 66) { // check if the key pressed is capslock first. Q_EMIT capslockStatusChanged(isCapslockOn()); } else if (event->detail == 77) { Q_EMIT numlockStatusChanged(isNumlockOn()); } /*printf("Key release: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask);*/ break; case XI_RawTouchBegin: // printf("Touch begin: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask); break; case XI_RawTouchUpdate: // printf("Touch update: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask); break; case XI_RawTouchEnd: // printf("Touch end: Detail(%d), X(%d), Y(%d), Mask(%u)\n", event->detail, root_x, root_y, mask); break; } } XFreeEventData(display, cookie); } return EXIT_SUCCESS; } DKeyboardMonitor::DKeyboardMonitor() : QThread() { } DKeyboardMonitor *DKeyboardMonitor::instance() { static DKeyboardMonitor *KeyboardMonitorInstance = nullptr; if (!KeyboardMonitorInstance) { KeyboardMonitorInstance = new DKeyboardMonitor; } return KeyboardMonitorInstance; } bool DKeyboardMonitor::isCapslockOn() { bool result; unsigned int n = 0; static Display* d = QX11Info::display(); XkbGetIndicatorState(d, XkbUseCoreKbd, &n); result = (n & 0x01) != 0; return result; } bool DKeyboardMonitor::isNumlockOn() { bool result; unsigned int n = 0; static Display* d = QX11Info::display(); XkbGetIndicatorState(d, XkbUseCoreKbd, &n); result = (n & 0x02) != 0; return result; } bool DKeyboardMonitor::setNumlockStatus(const bool &on) { Display* d = QX11Info::display(); bool result = XkbLockModifiers(d, XkbUseCoreKbd, Mod2Mask, on ? Mod2Mask : 0); XFlush(d); return result; } void DKeyboardMonitor::run() { Display* display = XOpenDisplay(NULL); int event, error; if (!XQueryExtension(display, "XInputExtension", &xi2_opcode, &event, &error)) { fprintf(stderr, "XInput2 not available.\n"); return; } if (!xinput_version(display)) { fprintf(stderr, "XInput2 extension not available\n"); return; } select_events(display); listen(display); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/private/keyboardmonitor/dkeyboardmonitor.h000066400000000000000000000030261352002233700263430ustar00rootroot00000000000000/* * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. * * Author: sbw * kirigaya * Hualet * * Maintainer: sbw * kirigaya * Hualet * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef KEYBOARDMONITOR_H #define KEYBOARDMONITOR_H #include #include #include DWIDGET_BEGIN_NAMESPACE class DKeyboardMonitor : public QThread { Q_OBJECT public: static DKeyboardMonitor *instance(); bool isCapslockOn(); bool isNumlockOn(); bool setNumlockStatus(const bool &on); Q_SIGNALS: void capslockStatusChanged(bool on); void numlockStatusChanged(bool on); protected: void run() Q_DECL_OVERRIDE; private: DKeyboardMonitor(); int listen(Display *display); }; DWIDGET_END_NAMESPACE #endif // KEYBOARDMONITOR_H dtkwidget-2.1.1/src/widgets/private/keyboardmonitor/keyboardmonitor.pri000066400000000000000000000002461352002233700265430ustar00rootroot00000000000000CONFIG += c++11 link_pkgconfig PKGCONFIG += xext x11 xi INCLUDEPATH += $$PWD HEADERS += \ $$PWD/dkeyboardmonitor.h SOURCES += \ $$PWD/dkeyboardmonitor.cpp dtkwidget-2.1.1/src/widgets/private/mpris/000077500000000000000000000000001352002233700205375ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/private/mpris/dbusinterface.cpp000066400000000000000000000025761352002233700240730ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbusinterface.h" /* * Implementation of interface class DBusInterface */ DBusInterface::DBusInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage))); } DBusInterface::~DBusInterface() { QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage))); } dtkwidget-2.1.1/src/widgets/private/mpris/dbusinterface.h000066400000000000000000000153021352002233700235270ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBUSINTERFACE_H #define DBUSINTERFACE_H #include #include #include #include #include #include #include #include /* * Proxy class for interface org.freedesktop.DBus */ class DBusInterface: public QDBusAbstractInterface { Q_OBJECT Q_SLOT void __propertyChanged__(const QDBusMessage& msg) { QList arguments = msg.arguments(); if (3 != arguments.count()) return; QString interfaceName = msg.arguments().at(0).toString(); if (interfaceName != "org.freedesktop.DBus") return; QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); Q_FOREACH(const QString &prop, changedProps.keys()) { const QMetaObject* self = metaObject(); for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) { QMetaProperty p = self->property(i); QGenericArgument value(QMetaType::typeName(p.type()), const_cast(changedProps[prop].constData())); if (p.name() == prop) { Q_EMIT p.notifySignal().invoke(this, value); } } } } public: static inline const char *staticInterfaceName() { return "org.freedesktop.DBus"; } public: DBusInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); ~DBusInterface(); public Q_SLOTS: // METHODS inline QDBusPendingReply<> AddMatch(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("AddMatch"), argumentList); } inline QDBusPendingReply GetAdtAuditSessionData(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("GetAdtAuditSessionData"), argumentList); } inline QDBusPendingReply GetConnectionSELinuxSecurityContext(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("GetConnectionSELinuxSecurityContext"), argumentList); } inline QDBusPendingReply GetConnectionUnixProcessID(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("GetConnectionUnixProcessID"), argumentList); } inline QDBusPendingReply GetConnectionUnixUser(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("GetConnectionUnixUser"), argumentList); } inline QDBusPendingReply GetId() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("GetId"), argumentList); } inline QDBusPendingReply GetNameOwner(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("GetNameOwner"), argumentList); } inline QDBusPendingReply Hello() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Hello"), argumentList); } inline QDBusPendingReply ListActivatableNames() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("ListActivatableNames"), argumentList); } inline QDBusPendingReply ListNames() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("ListNames"), argumentList); } inline QDBusPendingReply ListQueuedOwners(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("ListQueuedOwners"), argumentList); } inline QDBusPendingReply NameHasOwner(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("NameHasOwner"), argumentList); } inline QDBusPendingReply ReleaseName(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("ReleaseName"), argumentList); } inline QDBusPendingReply<> ReloadConfig() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("ReloadConfig"), argumentList); } inline QDBusPendingReply<> RemoveMatch(const QString &in0) { QList argumentList; argumentList << QVariant::fromValue(in0); return asyncCallWithArgumentList(QStringLiteral("RemoveMatch"), argumentList); } inline QDBusPendingReply RequestName(const QString &in0, uint in1) { QList argumentList; argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); return asyncCallWithArgumentList(QStringLiteral("RequestName"), argumentList); } inline QDBusPendingReply StartServiceByName(const QString &in0, uint in1) { QList argumentList; argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); return asyncCallWithArgumentList(QStringLiteral("StartServiceByName"), argumentList); } Q_SIGNALS: // SIGNALS void NameAcquired(const QString &in0); void NameLost(const QString &in0); void NameOwnerChanged(const QString &in0, const QString &in1, const QString &in2); // begin property changed signals }; namespace org { namespace freedesktop { typedef ::DBusInterface DBus; } } #endif dtkwidget-2.1.1/src/widgets/private/mpris/dbusmpris.cpp000066400000000000000000000025461352002233700232620ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dbusmpris.h" /* * Implementation of interface class DBusMPRIS */ DBusMPRIS::DBusMPRIS(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage))); } DBusMPRIS::~DBusMPRIS() { QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage))); } dtkwidget-2.1.1/src/widgets/private/mpris/dbusmpris.h000066400000000000000000000174441352002233700227320ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBUSMPRIS_H #define DBUSMPRIS_H #include #include #include #include #include #include #include #include /* * Proxy class for interface org.mpris.MediaPlayer2.Player */ class DBusMPRIS: public QDBusAbstractInterface { Q_OBJECT Q_SLOT void __propertyChanged__(const QDBusMessage& msg) { QList arguments = msg.arguments(); if (3 != arguments.count()) return; QString interfaceName = msg.arguments().at(0).toString(); if (interfaceName != "org.mpris.MediaPlayer2.Player") return; QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); Q_FOREACH(const QString &prop, changedProps.keys()) { const QMetaObject* self = metaObject(); for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) { QMetaProperty p = self->property(i); QGenericArgument value(QMetaType::typeName(p.type()), const_cast(changedProps[prop].constData())); if (p.name() == prop) { Q_EMIT p.notifySignal().invoke(this, value); } } } } public: static inline const char *staticInterfaceName() { return "org.mpris.MediaPlayer2.Player"; } public: DBusMPRIS(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); ~DBusMPRIS(); Q_PROPERTY(bool CanControl READ canControl NOTIFY CanControlChanged) inline bool canControl() const { return qvariant_cast< bool >(property("CanControl")); } Q_PROPERTY(bool CanGoNext READ canGoNext NOTIFY CanGoNextChanged) inline bool canGoNext() const { return qvariant_cast< bool >(property("CanGoNext")); } Q_PROPERTY(bool CanGoPrevious READ canGoPrevious NOTIFY CanGoPreviousChanged) inline bool canGoPrevious() const { return qvariant_cast< bool >(property("CanGoPrevious")); } Q_PROPERTY(bool CanPause READ canPause NOTIFY CanPauseChanged) inline bool canPause() const { return qvariant_cast< bool >(property("CanPause")); } Q_PROPERTY(bool CanPlay READ canPlay NOTIFY CanPlayChanged) inline bool canPlay() const { return qvariant_cast< bool >(property("CanPlay")); } Q_PROPERTY(bool CanSeek READ canSeek NOTIFY CanSeekChanged) inline bool canSeek() const { return qvariant_cast< bool >(property("CanSeek")); } Q_PROPERTY(QString LoopStatus READ loopStatus WRITE setLoopStatus NOTIFY LoopStatusChanged) inline QString loopStatus() const { return qvariant_cast< QString >(property("LoopStatus")); } inline void setLoopStatus(const QString &value) { setProperty("LoopStatus", QVariant::fromValue(value)); } Q_PROPERTY(double MaximumRate READ maximumRate NOTIFY MaximumRateChanged) inline double maximumRate() const { return qvariant_cast< double >(property("MaximumRate")); } Q_PROPERTY(QVariantMap Metadata READ metadata NOTIFY MetadataChanged) inline QVariantMap metadata() const { return qvariant_cast< QVariantMap >(property("Metadata")); } Q_PROPERTY(double MinimumRate READ minimumRate NOTIFY MinimumRateChanged) inline double minimumRate() const { return qvariant_cast< double >(property("MinimumRate")); } Q_PROPERTY(QString PlaybackStatus READ playbackStatus NOTIFY PlaybackStatusChanged) inline QString playbackStatus() const { return qvariant_cast< QString >(property("PlaybackStatus")); } Q_PROPERTY(qlonglong Position READ position NOTIFY PositionChanged) inline qlonglong position() const { return qvariant_cast< qlonglong >(property("Position")); } Q_PROPERTY(double Rate READ rate WRITE setRate NOTIFY RateChanged) inline double rate() const { return qvariant_cast< double >(property("Rate")); } inline void setRate(double value) { setProperty("Rate", QVariant::fromValue(value)); } Q_PROPERTY(bool Shuffle READ shuffle WRITE setShuffle NOTIFY ShuffleChanged) inline bool shuffle() const { return qvariant_cast< bool >(property("Shuffle")); } inline void setShuffle(bool value) { setProperty("Shuffle", QVariant::fromValue(value)); } Q_PROPERTY(double Volume READ volume WRITE setVolume NOTIFY VolumeChanged) inline double volume() const { return qvariant_cast< double >(property("Volume")); } inline void setVolume(double value) { setProperty("Volume", QVariant::fromValue(value)); } public Q_SLOTS: // METHODS inline QDBusPendingReply<> Next() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Next"), argumentList); } inline QDBusPendingReply<> OpenUri(const QString &Uri) { QList argumentList; argumentList << QVariant::fromValue(Uri); return asyncCallWithArgumentList(QStringLiteral("OpenUri"), argumentList); } inline QDBusPendingReply<> Pause() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Pause"), argumentList); } inline QDBusPendingReply<> Play() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Play"), argumentList); } inline QDBusPendingReply<> PlayPause() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("PlayPause"), argumentList); } inline QDBusPendingReply<> Previous() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Previous"), argumentList); } inline QDBusPendingReply<> Seek(qlonglong Offset) { QList argumentList; argumentList << QVariant::fromValue(Offset); return asyncCallWithArgumentList(QStringLiteral("Seek"), argumentList); } inline QDBusPendingReply<> SetPosition(const QDBusObjectPath &TrackId, qlonglong Position) { QList argumentList; argumentList << QVariant::fromValue(TrackId) << QVariant::fromValue(Position); return asyncCallWithArgumentList(QStringLiteral("SetPosition"), argumentList); } inline QDBusPendingReply<> Stop() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Stop"), argumentList); } Q_SIGNALS: // SIGNALS void Seeked(qlonglong Position); // begin property changed signals void CanControlChanged(bool value); void CanGoNextChanged(bool value); void CanGoPreviousChanged(bool value); void CanPauseChanged(bool value); void CanPlayChanged(bool value); void CanSeekChanged(bool value); void LoopStatusChanged(const QString & value); void MaximumRateChanged(double value); void MetadataChanged(const QVariantMap & value); void MinimumRateChanged(double value); void PlaybackStatusChanged(const QString & value); void PositionChanged(qlonglong value); void RateChanged(double value); void ShuffleChanged(bool value); void VolumeChanged(double value); }; namespace org { namespace mpris { namespace MediaPlayer2 { typedef ::DBusMPRIS Player; } } } #endif dtkwidget-2.1.1/src/widgets/private/mpris/dmprismonitor.cpp000066400000000000000000000027401352002233700241540ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dmprismonitor.h" #include DMPRISMonitor::DMPRISMonitor(QObject *parent) : QObject(parent), m_dbusInter(new DBusInterface("org.freedesktop.DBus", "/org/freedesktop/DBus", QDBusConnection::sessionBus(), this)) { } void DMPRISMonitor::init() { connect(m_dbusInter, &DBusInterface::NameOwnerChanged, this, &DMPRISMonitor::onNameOwnerChanged); for (const auto &name : m_dbusInter->ListNames().value()) onNameOwnerChanged(name, QString(), name); } void DMPRISMonitor::onNameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner) { Q_UNUSED(oldOwner); if (!name.startsWith("org.mpris.MediaPlayer2.")) return; if (newOwner.isEmpty()) Q_EMIT mprisLost(name); else Q_EMIT mprisAcquired(name); } dtkwidget-2.1.1/src/widgets/private/mpris/dmprismonitor.h000066400000000000000000000023061352002233700236170ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DMPRISMONITOR_H #define DMPRISMONITOR_H #include "dbusinterface.h" #include class DMPRISMonitor : public QObject { Q_OBJECT public: explicit DMPRISMonitor(QObject *parent = 0); void init(); Q_SIGNALS: void mprisAcquired(const QString &path) const; void mprisLost(const QString &path) const; private Q_SLOTS: void onNameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); private: DBusInterface *m_dbusInter; }; #endif // DMPRISMONITOR_H dtkwidget-2.1.1/src/widgets/private/mpris/org.freedesktop.DBus.xml000066400000000000000000000046371352002233700252300ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/private/mpris/org.mpris.MediaPlayer2.xml000066400000000000000000000063411352002233700254620ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/private/private.pri000066400000000000000000000026721352002233700216020ustar00rootroot00000000000000linux{ include(keyboardmonitor/keyboardmonitor.pri) include(startupnotifications/startupnotifications.pri) HEADERS += \ $$PWD/mpris/dmprismonitor.h \ $$PWD/mpris/dbusinterface.h \ $$PWD/dmpriscontrol_p.h \ $$PWD/mpris/dbusmpris.h SOURCES += \ $$PWD/mpris/dmprismonitor.cpp \ $$PWD/mpris/dbusinterface.cpp \ $$PWD/mpris/dbusmpris.cpp } HEADERS += \ $$PWD/dthemehelper.h \ $$PWD/dcircleprogress_p.h \ $$PWD/dlineedit_p.h \ $$PWD/dfilechooseredit_p.h \ $$PWD/dstackwidget_p.h \ $$PWD/dscrollarea_p.h \ $$PWD/dlistwidget_p.h \ $$PWD/dboxwidget_p.h \ $$PWD/dpasswordedit_p.h \ $$PWD/dabstractdialogprivate_p.h \ $$PWD/ddialog_p.h \ $$PWD/dloadingindicator_p.h \ $$PWD/dinputdialog_p.h \ $$PWD/dipv4lineedit_p.h \ $$PWD/dspinbox_p.h \ $$PWD/doptionlist_p.h \ $$PWD/doption_p.h \ $$PWD/dpicturesequenceview_p.h \ $$PWD/dflowlayout_p.h \ $$PWD/dlistview_p.h \ $$PWD/dtextedit_p.h \ $$PWD/dapplication_p.h \ $$PWD/dscrollbar_p.h \ $$PWD/dmainwindow_p.h \ $$PWD/dblureffectwidget_p.h \ $$PWD/dpageindicator_p.h \ $$PWD/daboutdialog_p.h \ $$PWD/darrowrectangle_p.h \ $$PWD/dpushbutton_p.h \ $$PWD/dtickeffect_p.h \ $$PWD/dswitchbutton_p.h \ $$PWD/dimagebutton_p.h \ $$PWD/dpasswdeditanimated_p.h \ $$PWD/dborderlesswidget_p.h SOURCES += \ $$PWD/dthemehelper.cpp dtkwidget-2.1.1/src/widgets/private/settings/000077500000000000000000000000001352002233700212455ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/private/settings/buttongroup.cpp000066400000000000000000000064531352002233700243510ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "buttongroup.h" #include #include #include class ButtonGroupPrivate { public: ButtonGroupPrivate(ButtonGroup *parent) : q_ptr(parent){} QHBoxLayout *layout = nullptr; QButtonGroup *group = nullptr; ButtonGroup *q_ptr; Q_DECLARE_PUBLIC(ButtonGroup) }; ButtonGroup::ButtonGroup(QWidget *parent) : QFrame(parent), d_ptr(new ButtonGroupPrivate(this)) { Q_D(ButtonGroup); setObjectName("ButtonGroup"); d->group = new QButtonGroup; d->layout = new QHBoxLayout(this); d->layout->setSpacing(0); d->layout->setMargin(0); connect(d->group,static_cast(&QButtonGroup::buttonReleased), this, [=](int){ Q_EMIT buttonChecked(d->group->checkedId()); }); } ButtonGroup::~ButtonGroup() { } void ButtonGroup::setCheckedButton(int id) { Q_D(ButtonGroup); if (d->group->button(id)) { d->group->button(id)->setChecked(true); } } void ButtonGroup::setButtons(const QStringList &texts) { Q_D(ButtonGroup); int i = 0; for (auto text: texts) { auto bt = new QPushButton(text); bt->setFixedWidth(36); bt->setFixedHeight(22); bt->setCheckable(true); if (texts.length() <= 1) bt->setObjectName("ButtonGroupSingle"); // bt->setStyleSheet("QPushButton{border: 1px solid red; border-radius: 4.0px}"); else { if (i == 0) bt->setObjectName("ButtonGroupBegin"); // bt->setStyleSheet("QPushButton{" // "border: 1px solid red;" // "border-top-left-radius: 4.0px;" // "border-bottom-left-radius: 4.0px;" // "}"); else if (i == texts.length() -1) { bt->setObjectName("ButtonGroupEnd"); // bt->setStyleSheet("QPushButton{" // "border: 1px solid red;" // "border-top-right-radius: 4.0px;" // "border-bottom-right-radius: 4.0px;" // "}"); } else { bt->setObjectName("ButtonGroupMiddle"); // bt->setStyleSheet("QPushButton{" // "border-top: 1px solid red;" // "border-bottom: 1px solid red;" // "}"); } } d->group->addButton(bt, i); d->layout->addWidget(bt); i++; } d->layout->addStretch(); } dtkwidget-2.1.1/src/widgets/private/settings/buttongroup.h000066400000000000000000000022201352002233700240020ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include class ButtonGroupPrivate; class ButtonGroup : public QFrame { Q_OBJECT public: explicit ButtonGroup(QWidget *parent = 0); ~ButtonGroup(); Q_SIGNALS: void buttonChecked(int id); public Q_SLOTS: void setCheckedButton(int id); void setButtons(const QStringList &texts); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), ButtonGroup) }; dtkwidget-2.1.1/src/widgets/private/settings/combobox.cpp000066400000000000000000000015761352002233700235720ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "combobox.h" ComboBox::ComboBox(QWidget *parent) : QComboBox(parent) { } void ComboBox::wheelEvent(QWheelEvent *e) { if (hasFocus()) { QComboBox::wheelEvent(e); } } dtkwidget-2.1.1/src/widgets/private/settings/combobox.h000066400000000000000000000015741352002233700232350ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include class ComboBox : public QComboBox { Q_OBJECT public: explicit ComboBox(QWidget *parent = 0); void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE; }; dtkwidget-2.1.1/src/widgets/private/settings/content.cpp000066400000000000000000000172111352002233700234250ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "content.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dsettingswidgetfactory.h" #include "contenttitle.h" DWIDGET_BEGIN_NAMESPACE class ContentPrivate { public: ContentPrivate(Content *parent) : q_ptr(parent) { widgetFactory = new DSettingsWidgetFactory; } QScrollArea *contentArea; QWidget *contentFrame; QVBoxLayout *contentLayout; QMap titles; QList sortTitles; DSettingsWidgetFactory *widgetFactory; Content *q_ptr; Q_DECLARE_PUBLIC(Content) }; Content::Content(QWidget *parent) : QFrame(parent), d_ptr(new ContentPrivate(this)) { Q_D(Content); setObjectName("RightFrame"); setContentsMargins(0, 0, 0, 0); auto layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); d->contentArea = new QScrollArea; d->contentArea->setContentsMargins(0, 0, 0, 0); d->contentArea->setWidgetResizable(true); d->contentArea->setStyleSheet("QScrollArea{border: none; background-color: transparent; }"); // d->contentArea->setStyleSheet("QFrame{border: 1px solid red;}"); // 设置列表支持触屏滚动 QScroller::grabGesture(d->contentArea); d->contentFrame = new QWidget(this); d->contentFrame->setObjectName("SettingsContent"); d->contentFrame->setStyleSheet("#SettingsContent{border: none; background-color: transparent; }"); d->contentLayout = new QVBoxLayout(d->contentFrame); d->contentLayout->setContentsMargins(20, 0, 0, 0); d->contentLayout->setSpacing(0); layout->addWidget(d->contentArea); d->contentArea->setWidget(d->contentFrame); connect(d->contentArea->verticalScrollBar(), &QScrollBar::valueChanged, this, [ = ](int value) { Q_D(Content); auto viewHeight = d->contentArea->height(); auto currentTitle = d->sortTitles.first(); QList visableTitleList; for (auto idx = 0; idx < d->sortTitles.length(); ++idx) { auto title = d->sortTitles[idx]; if (title->y() <= value) { if (idx < d->sortTitles.length() - 1) { auto nextTitle = d->sortTitles[idx + 1]; if (nextTitle->y() >= value) { visableTitleList.push_back(title); } } } else if (title->y() < (value + viewHeight)) { visableTitleList.push_back(title); } } if (!visableTitleList.isEmpty()) { auto lastTitle = d->sortTitles.last(); if (value + viewHeight + 180 >= lastTitle->y()) { currentTitle = visableTitleList.last(); } else { currentTitle = visableTitleList.first(); } } if (currentTitle) { Q_EMIT scrollToGroup(currentTitle->property("key").toString()); } }); } Content::~Content() { } DSettingsWidgetFactory *Content::widgetFactory() const { Q_D(const Content); return d->widgetFactory; } void Content::onScrollToGroup(const QString &key) { Q_D(Content); if (!d->titles.contains(key)) { return; } auto title = d->titles.value(key); this->blockSignals(true); d->contentArea->verticalScrollBar()->setValue(title->y()); this->blockSignals(false); // qDebug() << "onScrollToGroup" << key; } void Content::updateSettings(const QByteArray &translateContext, QPointer settings) { Q_D(Content); for (auto groupKey : settings->groupKeys()) { auto group = settings->group(groupKey); if (group->isHidden()) { continue; } auto trName = translateContext.isEmpty() ? QObject::tr(group->name().toStdString().c_str()) : qApp->translate(translateContext.constData(), group->name().toStdString().c_str()); auto title = new ContentTitle; title->setTitle(trName); title->setProperty("key", groupKey); // d->contentLayout->addSpacing(10); d->contentLayout->addWidget(title); d->contentLayout->addSpacing(8); d->sortTitles.push_back(title); d->titles.insert(groupKey, title); for (auto subgroup : settings->group(groupKey)->childGroups()) { if (subgroup->isHidden()) { continue; } if (!subgroup->name().isEmpty()) { auto title = new QLabel; title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); title->setObjectName("ContentSubTitleText"); title->setFixedHeight(20); auto trName = translateContext.isEmpty() ? QObject::tr(subgroup->name().toStdString().c_str()) : qApp->translate(translateContext.constData(), subgroup->name().toStdString().c_str()); title->setText(trName); title->setProperty("key", subgroup->key()); title->setStyleSheet("#ContentSubTitleText{font-weight: 520; " // "border: 1px solid red; " "}"); d->contentLayout->addWidget(title); d->contentLayout->addSpacing(10); d->sortTitles.push_back(title); d->titles.insert(subgroup->key(), title); } for (auto option : subgroup->childOptions()) { if (option->isHidden()) { continue; } auto widget = d->widgetFactory->createWidget(translateContext, option); if (widget) { // qDebug() << widget << widget->height(); d->contentLayout->addWidget(widget); widget->setParent(d->contentFrame); } } d->contentLayout->addSpacing(4); } } auto resetBt = new DSuggestButton(QObject::tr("Restore Defaults")); resetBt->setObjectName("SettingsContentReset"); resetBt->setFixedSize(310, 36); d->contentLayout->addSpacing(40); d->contentLayout->addWidget(resetBt, 0, Qt::AlignCenter); d->contentLayout->addSpacing(40); d->contentLayout->addStretch(); connect(resetBt, &QPushButton::released, this, [ = ]() { settings->reset(); }); } void Content::mouseMoveEvent(QMouseEvent *event) { // 事件来源为 MouseEventSynthesizedByQt 时认为此事件为Touch事件合成而来 // 由于支持触屏下对视图的滚动,所以此处接收没有被处理的move事件,防止事件泄露 // 到主窗口后触发窗口移动动作 if (event->source() == Qt::MouseEventSynthesizedByQt) { event->accept(); return; } } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/private/settings/content.h000066400000000000000000000030171352002233700230710ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include #include "dtkwidget_global.h" DCORE_BEGIN_NAMESPACE class DSettings; DCORE_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class DSettingsWidgetFactory; class ContentPrivate; class LIBDTKWIDGETSHARED_EXPORT Content : public QFrame { Q_OBJECT public: explicit Content(QWidget *parent = 0); ~Content(); DSettingsWidgetFactory* widgetFactory() const; Q_SIGNALS: void scrollToGroup(const QString &key); public Q_SLOTS: void onScrollToGroup(const QString &key); void updateSettings(const QByteArray &translateContext, QPointer settings); private: void mouseMoveEvent(QMouseEvent *event) override; QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), Content) }; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/private/settings/contenttitle.cpp000066400000000000000000000036731352002233700244760ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "contenttitle.h" #include #include class ContentTitlePrivate { public: ContentTitlePrivate(ContentTitle *parent) : q_ptr(parent) {} QLabel *titleLabel = nullptr; ContentTitle *q_ptr; Q_DECLARE_PUBLIC(ContentTitle) }; ContentTitle::ContentTitle(QWidget *parent) : QWidget(parent), d_ptr(new ContentTitlePrivate(this)) { Q_D(ContentTitle); setObjectName("ContentTitle"); auto layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(10); d->titleLabel = new QLabel(); d->titleLabel->setObjectName("ContentTitleText"); layout->addWidget(d->titleLabel, 0, Qt::AlignLeft); d->titleLabel->setStyleSheet("#ContentTitleText{font-weight: 550; font-size: 14px;}"); auto lineLabel = new QLabel; lineLabel->setObjectName("ContentTitleLine"); lineLabel->setFixedHeight(1); lineLabel->setStyleSheet("#ContentTitleLine{border: 1px solid rgba(0,0,0,0.1);}"); layout->addWidget(lineLabel); lineLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setFixedHeight(20); } ContentTitle::~ContentTitle() { } void ContentTitle::setTitle(const QString &title) { Q_D(ContentTitle); d->titleLabel->setText(title); } dtkwidget-2.1.1/src/widgets/private/settings/contenttitle.h000066400000000000000000000021171352002233700241330ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include class ContentTitlePrivate; class ContentTitle : public QWidget { Q_OBJECT public: explicit ContentTitle(QWidget *parent = 0); ~ContentTitle(); Q_SIGNALS: public Q_SLOTS: void setTitle(const QString &title); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), ContentTitle) }; dtkwidget-2.1.1/src/widgets/private/settings/navigation.cpp000066400000000000000000000131521352002233700241120ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "navigation.h" #include #include #include #include #include #include #include #include "navigationdelegate.h" DWIDGET_BEGIN_NAMESPACE class NavigationPrivate { public: NavigationPrivate(Navigation *parent) : q_ptr(parent) {} QListView *navbar = nullptr; QStandardItemModel *navbarModel = nullptr; Navigation *q_ptr; Q_DECLARE_PUBLIC(Navigation) }; Navigation::Navigation(QWidget *parent) : QFrame(parent), d_ptr(new NavigationPrivate(this)) { Q_D(Navigation); setObjectName("Navigation"); // setStyleSheet("#Navigation{border: none; border-right: 1px solid rgba(0,0,0,0.1);}"); setContentsMargins(0, 0, 0, 0); auto layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); d->navbar = new QListView(this); d->navbar->setObjectName("NavigationBar"); // d->navbar->setStyleSheet("#NavigationBar{border: none;}"); // d->navbar->setMinimumWidth(160); // d->navbar->setMaximumWidth(199); d->navbar->setContentsMargins(0, 0, 0, 0); d->navbar->setSelectionMode(QListView::SingleSelection); d->navbar->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); d->navbar->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); d->navbarModel = new QStandardItemModel; d->navbar->setModel(d->navbarModel); d->navbar->setEditTriggers(QAbstractItemView::NoEditTriggers); d->navbar->setItemDelegate(new NavigationDelegate); layout->addWidget(d->navbar); connect(d->navbar->selectionModel(), &QItemSelectionModel::currentChanged, this, [=] (const QModelIndex ¤t) { const QString &key = current.data(NavigationDelegate::NavKeyRole).toString(); if (!key.isEmpty()) { Q_EMIT selectedGroup(key); } }); // setMaximumWidth(200); d->navbar->setFixedWidth(190); setFixedWidth(190 + 1); } Navigation::~Navigation() { } void Navigation::onSelectGroup(const QString &key) { Q_D(Navigation); for (int i = 0; i < d->navbarModel->rowCount(); ++i) { auto index = d->navbarModel->index(i, 0); if (index.data(NavigationDelegate::NavKeyRole).toString() == key) { d->navbar->setCurrentIndex(index); return; } } } void Navigation::updateSettings(const QByteArray &translateContext, QPointer settings) { Q_D(Navigation); bool first = true; for (auto groupKey : settings->groupKeys()) { if (!first) { auto item = new QStandardItem; item->setData("", Qt::DisplayRole); item->setData(NavigationDelegate::Split, NavigationDelegate::NavLevelRole); d->navbarModel->appendRow(item); } first = false; auto group = settings->group(groupKey); if (group->isHidden()) { continue; } auto item = new QStandardItem; auto trName = translateContext.isEmpty() ? QObject::tr(group->name().toStdString().c_str()) : qApp->translate(translateContext.constData(), group->name().toStdString().c_str()); // qDebug() << settings->group(groupKey)->name() << trName; // QFont font(item->data(Qt::FontRole).value()); // QFontMetrics fm(font); // int width = fm.width(trName); // qDebug() << ">>>>>>>>>>> " << font << trName << width; item->setData(trName, Qt::DisplayRole); item->setData(NavigationDelegate::Level1, NavigationDelegate::NavLevelRole); item->setData(groupKey, NavigationDelegate::NavKeyRole); d->navbarModel->appendRow(item); for (auto subgroup : settings->group(groupKey)->childGroups()) { if (subgroup->isHidden()) { continue; } if (subgroup->name().isEmpty()) { continue; } auto item = new QStandardItem; auto trName = translateContext.isEmpty() ? QObject::tr(subgroup->name().toStdString().c_str()) : qApp->translate(translateContext.constData(), subgroup->name().toStdString().c_str()); // qDebug() << subgroup->name() << trName; // QFont font(item->data(Qt::FontRole).value()); // QFontMetrics fm(font); // int width = fm.width(trName); // qDebug() << "<<<<<<<<<<<< " << font << trName << width; item->setData(trName, Qt::DisplayRole); item->setData(NavigationDelegate::Level2, NavigationDelegate::NavLevelRole); item->setData(subgroup->key(), NavigationDelegate::NavKeyRole); d->navbarModel->appendRow(item); } } d->navbar->setCurrentIndex(d->navbarModel->index(0, 0)); // this->adjustSize(); // d->navbar->setMaximumWidth(200); // this->setFixedWidth(d->navbar->width() + 1); } DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/private/settings/navigation.h000066400000000000000000000026031352002233700235560ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include #include "dtkwidget_global.h" DCORE_BEGIN_NAMESPACE class DSettings; DCORE_END_NAMESPACE DWIDGET_BEGIN_NAMESPACE class NavigationPrivate; class LIBDTKWIDGETSHARED_EXPORT Navigation : public QFrame { Q_OBJECT public: explicit Navigation(QWidget *parent = 0); ~Navigation(); Q_SIGNALS: void selectedGroup(const QString &key); public Q_SLOTS: void onSelectGroup(const QString &key); void updateSettings(const QByteArray &translateContext, QPointer settings); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), Navigation) }; DWIDGET_END_NAMESPACE dtkwidget-2.1.1/src/widgets/private/settings/navigationdelegate.cpp000066400000000000000000000105101352002233700256000ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "navigationdelegate.h" #include #include class NavigationDelegatePrivate { public: NavigationDelegatePrivate(NavigationDelegate *parent) : q_ptr(parent) {} NavigationDelegate *q_ptr; Q_DECLARE_PUBLIC(NavigationDelegate) }; NavigationDelegate::NavigationDelegate(QWidget *parent) : QStyledItemDelegate(parent) , d_ptr(new NavigationDelegatePrivate(this)) { } NavigationDelegate::~NavigationDelegate() { } void NavigationDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { painter->save(); painter->setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); painter->setBrush(option.palette.foreground()); auto level = static_cast(index.data(NavLevelRole).toInt()); bool isSelected = option.state & QStyle::State_Selected; switch (level) { case Level1: case Level2: { if (isSelected) { auto brush = QColor("#d5edfe"); painter->fillRect(option.rect, brush); auto rect = option.rect; rect.setX(option.rect.x() + option.rect.width() - 3); brush = QColor("#2ca7f8"); painter->fillRect(rect, brush); } } case Split: case Level3: break; } switch (level) { case Level1: { auto pen = isSelected ? QColor("#2ca7f8") : QColor("#00162c"); painter->setPen(pen); auto rect = option.rect.marginsRemoved(QMargins(30, 0, 0, 0)); auto font = painter->font(); font.setPixelSize(16); font.setWeight(QFont::DemiBold); painter->setFont(font); QFontMetrics fm(font); auto text = fm.elidedText(index.data().toString(), Qt::ElideMiddle, 150); painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, text); break; } case Level2: { auto pen = isSelected ? QColor("#2ca7f8") : QColor("#303030"); painter->setPen(pen); auto font = painter->font(); painter->setFont(font); QFontMetrics fm(font); auto text = fm.elidedText(index.data().toString(), Qt::ElideMiddle, 135); auto rect = option.rect.marginsRemoved(QMargins(45, 0, 0, 0)); painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, text); break; } case Split: case Level3: break; } painter->restore(); } QSize NavigationDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { auto sh = QStyledItemDelegate::sizeHint(option, index); auto level = static_cast(index.data(NavLevelRole).toInt()); switch (level) { case Split: { sh.setHeight(20); break; } case Level1: case Level2: case Level3: sh.setHeight(30); break; } return sh; } QWidget *NavigationDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { return QStyledItemDelegate::createEditor(parent, option, index); } void NavigationDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const { QStyledItemDelegate::setEditorData(editor, index); } void NavigationDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { QStyledItemDelegate::setModelData(editor, model, index); } void NavigationDelegate::initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const { QStyledItemDelegate::initStyleOption(option, index); } dtkwidget-2.1.1/src/widgets/private/settings/navigationdelegate.h000066400000000000000000000036541352002233700252600ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include class NavigationDelegatePrivate; class NavigationDelegate: public QStyledItemDelegate { Q_OBJECT public: NavigationDelegate(QWidget *parent = 0); ~NavigationDelegate(); enum DataRole { NavLevelRole = Qt::UserRole + 100, NavKeyRole, }; enum NavLevel { Split = 1001, Level1, Level2, Level3 }; virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const; void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; void setEditorData(QWidget *editor, const QModelIndex &index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), NavigationDelegate) }; dtkwidget-2.1.1/src/widgets/private/settings/shortcutedit.cpp000066400000000000000000000163551352002233700245040ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "shortcutedit.h" #include #include #include #include namespace { const int MAX_WIDTH = 238; const int MAX_HEIGHT = 22 + 2 * 2; const double BORDER_RADIUS = 3.0; const QColor ACTIVE_BORDER_COLOR = QColor("#2ca7f8"); const QColor NORMAL_BORDER_COLOR = QColor(0, 0, 0, 255 * 8 / 100); } static bool isModifiersKey(int key) { QList keys; keys << Qt::Key_Shift; keys << Qt::Key_Control; keys << Qt::Key_Alt; keys << Qt::Key_Meta; return keys.contains(key); } class ShortcutEditPrivate { public: ShortcutEditPrivate(ShortcutEdit *parent) : q_ptr(parent) {} QSize stringSize(const QString &str) const; QRectF drawTextRect(const QRect &lastRect, const QString &str, QPainter &painter) const; Qt::KeyboardModifiers keyModifiers = Qt::NoModifier; Qt::Key key = Qt::Key_unknown; QStringList keyStringList; bool canSet = true; QColor borderColor = NORMAL_BORDER_COLOR; ShortcutEdit *q_ptr; Q_DECLARE_PUBLIC(ShortcutEdit) }; ShortcutEdit::ShortcutEdit(QWidget *parent) : QWidget(parent), d_ptr(new ShortcutEditPrivate(this)) { // Q_D(ShortcutEdit); setFixedSize(MAX_WIDTH, MAX_HEIGHT); setFocusPolicy(Qt::ClickFocus); } ShortcutEdit::~ShortcutEdit() { } void ShortcutEdit::setShortCut(Qt::KeyboardModifiers modifier, Qt::Key key) { Q_D(ShortcutEdit); d->keyModifiers = modifier; d->key = key; d->keyStringList.clear(); if (d->keyModifiers != Qt::NoModifier) { d->keyStringList << QKeySequence(d->keyModifiers).toString().split("+", QString::SkipEmptyParts); } if (d->key != Qt::Key_unknown) { d->keyStringList << QKeySequence(d->key).toString(); } } void ShortcutEdit::setShortCut(const QString &sequenceString) { Q_D(ShortcutEdit); // replcae ++ to sep_plus const QString sepString = "sep_str"; const QString plusString = "sep_plus"; QString formatSequenceString = QString(sequenceString).replace("++", plusString); formatSequenceString = formatSequenceString.replace("+", sepString); formatSequenceString = formatSequenceString.replace(plusString, sepString + "+"); d->keyStringList = formatSequenceString.split(sepString); } void ShortcutEdit::paintEvent(QPaintEvent *) { Q_D(const ShortcutEdit); QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); if (d->keyStringList.isEmpty()) { // Draw tips QRect tR(6, 5, width(), height()); QFont f; f.setPixelSize(11); painter.setFont(f); painter.setPen(QPen(QColor(48, 48, 48, 255 * 4 / 10))); painter.drawText(tR, tr("Please enter a new shortcut")); } else { QRectF lastRect(1, 0, 0, 0); for (QString key : d->keyStringList) { painter.save(); lastRect = d->drawTextRect(lastRect.toRect(), key, painter); painter.restore(); } } auto borderRadius = BORDER_RADIUS; auto penWidthf = 1.0; QPainterPath borderPath; QRectF borderRect = QRectF(rect()); QMarginsF borderMargin(penWidthf / 2, penWidthf / 2, penWidthf / 2, penWidthf / 2); borderRadius -= penWidthf / 2; borderRect = borderRect.marginsRemoved(borderMargin); borderPath.addRoundedRect(borderRect, borderRadius, borderRadius); QPen borderPen(d->borderColor); borderPen.setWidthF(penWidthf); painter.strokePath(borderPath, borderPen); } void ShortcutEdit::focusInEvent(QFocusEvent *e) { Q_UNUSED(e) Q_D(ShortcutEdit); d->borderColor = ACTIVE_BORDER_COLOR; this->update(); } void ShortcutEdit::focusOutEvent(QFocusEvent *e) { Q_UNUSED(e) Q_D(ShortcutEdit); d->borderColor = NORMAL_BORDER_COLOR; this->update(); } void ShortcutEdit::keyPressEvent(QKeyEvent *e) { Q_D(ShortcutEdit); if (e->key() != Qt::Key_Backspace) { if (isModifiersKey(e->key()) || ! d->canSet) { return; } d->canSet = true; if (e->key() == Qt::Key_Delete) { d->keyModifiers = e->modifiers(); d->key = static_cast(e->key()); } else { d->keyModifiers = e->modifiers(); d->key = static_cast(e->key()); } d->keyStringList.clear(); if (d->keyModifiers != Qt::NoModifier) { d->keyStringList << QKeySequence(d->keyModifiers).toString().split("+", QString::SkipEmptyParts); } if (d->key != Qt::Key_unknown) { d->keyStringList << QKeySequence(d->key).toString(); } } else { d->canSet = true; d->key = Qt::Key_unknown; d->keyModifiers = Qt::NoModifier; d->keyStringList.clear(); } notifyShortcutChanged(d->keyModifiers, d->key); this->update(); } void ShortcutEdit::mouseDoubleClickEvent(QMouseEvent *event) { Q_D(ShortcutEdit); if (event->button() == Qt::LeftButton) { d->canSet = true; d->key = Qt::Key_unknown; d->keyModifiers = Qt::NoModifier; notifyShortcutChanged(d->keyModifiers, d->key); } this->update(); } void ShortcutEdit::notifyShortcutChanged(Qt::KeyboardModifiers modifier, Qt::Key key) { QKeySequence modifierSeq(modifier); QKeySequence keySeq(key); QString seqString = modifierSeq.toString() + keySeq.toString(); Q_EMIT shortcutStringChanged(seqString); Q_EMIT shortcutChanged(modifier, key); } QSize ShortcutEditPrivate::stringSize(const QString &str) const { QFont f; f.setPixelSize(10); QFontMetrics fm(f); int w = fm.boundingRect(str).width(); int h = fm.height(); return QSize(w, h); } QRectF ShortcutEditPrivate::drawTextRect(const QRect &lastRect, const QString &str, QPainter &painter) const { const QSize ss = stringSize(str); QRectF r(lastRect.x() + lastRect.width() + 5, 2 + 2, ss.width() + 6 * 2, 18); QPainterPath bp; bp.addRoundedRect(r, BORDER_RADIUS, BORDER_RADIUS); painter.setClipPath(bp); painter.fillRect(r, QColor(105, 170, 255, 255 * 0.15)); // Draw inside border painter.setPen(QPen(QColor(95, 159, 217, 255 * 0.3), 1)); QPainterPathStroker stroker; stroker.setWidth(1.0); stroker.setJoinStyle(Qt::RoundJoin); QPainterPath borderPath = stroker.createStroke(bp); painter.drawPath(borderPath); // Draw text QRectF tR(r.x() + 6, 5, r.width(), r.height()); QFont f; f.setPixelSize(10); painter.setFont(f); painter.setPen(QPen(QColor("#434343"))); painter.drawText(tR, str); return r; } dtkwidget-2.1.1/src/widgets/private/settings/shortcutedit.h000066400000000000000000000034341352002233700241430ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include #include class ShortcutEditPrivate; class ShortcutEdit : public QWidget { Q_OBJECT public: explicit ShortcutEdit(QWidget *parent = 0); ~ShortcutEdit(); void setShortCut(Qt::KeyboardModifiers modifier, Qt::Key key); void setShortCut(const QString &sequenceString); Q_SIGNALS: // WARINNG: just connect one of this on one time // these two signal will send at them same time void shortcutChanged(Qt::KeyboardModifiers modifier, Qt::Key key); void shortcutStringChanged(const QString &sequenceString); protected: virtual void paintEvent(QPaintEvent *) Q_DECL_OVERRIDE; virtual void focusInEvent(QFocusEvent *e) Q_DECL_OVERRIDE; virtual void focusOutEvent(QFocusEvent *e) Q_DECL_OVERRIDE; virtual void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE; virtual void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void notifyShortcutChanged(Qt::KeyboardModifiers modifier, Qt::Key key); private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), ShortcutEdit) }; dtkwidget-2.1.1/src/widgets/private/startupnotifications/000077500000000000000000000000001352002233700237015ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/private/startupnotifications/startupnotificationmonitor.cpp000066400000000000000000000074201352002233700321310ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include "startupnotificationmonitor.h" class StartupNotificationMonitorSub : public StartupNotificationMonitor { }; Q_GLOBAL_STATIC(StartupNotificationMonitorSub, StartupNotificationMonitorInstance) static SnDisplay *display; static SnMonitorContext *context; static void monitor_event_func (SnMonitorEvent *event, void *user_data) { SnMonitorContext *context; SnStartupSequence *sequence; context = sn_monitor_event_get_context (event); sequence = sn_monitor_event_get_startup_sequence (event); const char* app_id = sn_startup_sequence_get_id(sequence); StartupNotificationMonitor *monitor = static_cast(user_data); switch (sn_monitor_event_get_type (event)) { case SN_MONITOR_EVENT_INITIATED: qDebug() << "startup notification initiated: " << app_id; Q_EMIT monitor->appStartup(app_id); break; case SN_MONITOR_EVENT_CHANGED: break; case SN_MONITOR_EVENT_COMPLETED: qDebug() << "startup notification completed: " << app_id; Q_EMIT monitor->appStartupCompleted(app_id); break; case SN_MONITOR_EVENT_CANCELED: qDebug() << "startup notification canceled: " << app_id; break; } } /*! * \class StartupNotificationMonitor * \brief The StartupNotificationMonitor class is used to monitor the startup of applications on the system. * * As the stated in https://specifications.freedesktop.org/startup-notification-spec/startup-notification-0.1.txt, \n * StartupNotificationMonitor monitors all the startup events on the system and notifies the user of application \n * startup and startup finish. */ StartupNotificationMonitor::StartupNotificationMonitor() : QObject() { int screen = 0; xcb_screen_t *s = xcb_aux_get_screen (QX11Info::connection(), screen); const uint32_t select_input_val[] = { XCB_EVENT_MASK_PROPERTY_CHANGE }; xcb_change_window_attributes (QX11Info::connection(), s->root, XCB_CW_EVENT_MASK, select_input_val); display = sn_xcb_display_new (QX11Info::connection(), NULL, NULL); context = sn_monitor_context_new (display, screen, monitor_event_func, this, NULL); qApp->installNativeEventFilter(this); } /** * @brief StartupNotificationMonitor::StartupNotificationMonitor::instance * @return an instance of the StartupNotificationMonitor instance. */ StartupNotificationMonitor* StartupNotificationMonitor::StartupNotificationMonitor::instance() { return StartupNotificationMonitorInstance; } StartupNotificationMonitor::~StartupNotificationMonitor() { qApp->removeNativeEventFilter(this); } bool StartupNotificationMonitor::nativeEventFilter(const QByteArray &eventType, void *message, long *) { if(Q_LIKELY(eventType == "xcb_generic_event_t")) { xcb_generic_event_t* event = static_cast(message); sn_xcb_display_process_event (display, event); } return false; } dtkwidget-2.1.1/src/widgets/private/startupnotifications/startupnotificationmonitor.h000066400000000000000000000031271352002233700315760ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2017 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef STARTUPNOTIFICATIONMONITOR_H #define STARTUPNOTIFICATIONMONITOR_H #include #include class StartupNotificationMonitor : public QObject, public QAbstractNativeEventFilter { Q_OBJECT public: static StartupNotificationMonitor* instance(); ~StartupNotificationMonitor(); Q_SIGNALS: /** * @brief appStartup is emitted when an application is starting up. * @param id is the startup id associated with the startup. */ void appStartup(QString id); /** * @brief appStartupCompleted is emitted when the start up process of an applciation is finished. * @param id is the startup id associated with the startup. */ void appStartupCompleted(QString id); protected: StartupNotificationMonitor(); bool nativeEventFilter(const QByteArray &eventType, void *message, long *result); }; #endif // STARTUPNOTIFICATIONMONITOR_H dtkwidget-2.1.1/src/widgets/private/startupnotifications/startupnotifications.pri000066400000000000000000000003641352002233700307140ustar00rootroot00000000000000CONFIG += c++11 link_pkgconfig PKGCONFIG += xcb-util libstartup-notification-1.0 INCLUDEPATH += $$PWD DEFINES += SN_API_NOT_YET_FROZEN HEADERS += \ $$PWD/startupnotificationmonitor.h SOURCES += \ $$PWD/startupnotificationmonitor.cpp dtkwidget-2.1.1/src/widgets/themes/000077500000000000000000000000001352002233700172205ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/000077500000000000000000000000001352002233700201415ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DAboutDialog.theme000066400000000000000000000007471352002233700255660ustar00rootroot00000000000000QLabel#ProductNameLabel { font-size:18px; color: black; } QLabel#VersionLabel { font-size:12px; color: #666666; } QLabel#WebsiteLabel { font-size:13px; color: #004EE5; } QLabel#AcknowledgementLabel { font-size:13px; color: #004EE5; } QLabel#DescriptionLabel { font-size:11px; font-weight: normal; color:#1A1A1A; border: none; } QLabel#LicenseLabel { font-size:11px; font-weight: normal; color:#1A1A1A; border: none; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DAbstractDialog.theme000066400000000000000000000002601352002233700262450ustar00rootroot00000000000000Dtk--Widget--DAbstractDialog { qproperty-backgroundColor: rgba(0, 0, 0, 0.8); qproperty-borderColor: rgba(0, 0, 0, 0.2); border-width: 1; border-radius: 4px; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DArrowButton.theme000066400000000000000000000031621352002233700256540ustar00rootroot00000000000000Dtk--Widget--ArrowButtonIcon { background-repeat: no-repeat; background-position: center; } QLabel#ArrowButtonIconNormal[arrowButtonDirection="0"] { background-image: url(:/images/dark/images/arrow_up_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="1"] { background-image: url(:/images/dark/images/arrow_down_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="2"] { background-image: url(:/images/dark/images/arrow_left_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="3"] { background-image: url(:/images/dark/images/arrow_right_normal.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="0"] { background-image: url(:/images/dark/images/arrow_up_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="1"] { background-image: url(:/images/dark/images/arrow_down_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="2"] { background-image: url(:/images/dark/images/arrow_left_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="3"] { background-image: url(:/images/dark/images/arrow_right_hover.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="0"] { background-image: url(:/images/dark/images/arrow_up_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="1"] { background-image: url(:/images/dark/images/arrow_down_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="2"] { background-image: url(:/images/dark/images/arrow_left_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="3"] { background-image: url(:/images/dark/images/arrow_right_press.png); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DBaseButton.theme000066400000000000000000000013601352002233700254320ustar00rootroot00000000000000Dtk--Widget--DBaseButton { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #272727, stop: 1.0 #191919); border-width: 1px; border-style: solid; border-radius: 3; border-color: rgba(0, 0, 0, 255); } Dtk--Widget--DBaseButton:pressed { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #181818, stop: 1.0 #282828); } Dtk--Widget--DBaseButton:flat { border: none; /* no border for a flat push button */ } QFrame#ButtonInsideFrame { background-color: transparent; border-top-width: 1px; border-style: solid; border-radius: 3; border-top-color: rgba(255, 255, 255, 26); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DBaseExpand.theme000066400000000000000000000000751352002233700254000ustar00rootroot00000000000000Dtk--Widget--ContentLoader { background-color: #1A1B1B } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DBaseLine.theme000066400000000000000000000001531352002233700250450ustar00rootroot00000000000000/*Dtk--Widget--DBaseLine { background-color: #252627 }*/ /*use default background color(transparent)*/ dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DBoxWidget.theme000066400000000000000000000000701352002233700252550ustar00rootroot00000000000000Dtk--Widget--DBoxWidget{ background: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DButtonList.theme000066400000000000000000000015161352002233700254760ustar00rootroot00000000000000Dtk--Widget--DButtonList { background-color: #1A1B1B; border: none; outline: none; } Dtk--Widget--DButtonList::item { border: none; outline: none; } Dtk--Widget--DButtonList QPushButton:hover{ color: white; } Dtk--Widget--DButtonList QFrame#BorderFrame{ background-color: transparent; } Dtk--Widget--DButtonList QPushButton{ background-color: transparent; color: #b4b4b4; border: none; border-radius:3px; text-align: left center; padding-left: 40px; } Dtk--Widget--DButtonList QPushButton:checked{ background-color: #66000000; color: #2ca7f8; } Dtk--Widget--DButtonList QPushButton:checked[state="OnlyOne"]{ background-color: transparent; color:#01BDFF; } Dtk--Widget--DButtonList QPushButton:checked[state="normal"]{ background-color: lightblack; color:#01BDFF; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DCircleProgress.theme000066400000000000000000000003171352002233700263130ustar00rootroot00000000000000Dtk--Widget--DCircleProgress { qproperty-backgroundColor:rgba(255, 255, 255, .2); qproperty-chunkColor:#26aeed; } Dtk--Widget--DCircleProgress #DisplayLabel { color:white; font-size:10px; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DDialog.theme000066400000000000000000000042231352002233700245640ustar00rootroot00000000000000Dtk--Widget--DDialog{ qproperty-backgroundColor: white; qproperty-borderColor: rgba(0, 0, 0, 0.2); } QFrame#ButtonFrame{ border:1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; } #CloseButton{ qproperty-normalPic: url(:/images/dialog_close_round_normal.png); qproperty-hoverPic: url(:/images/dialog_close_round_hover.png); qproperty-pressPic: url(:/images/dialog_close_round_press.png); } QPushButton#NormalButton{ background-color: transparent; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; color: white; text-align: center; } QPushButton#NormalButton:hover{ background-color: transparent; color: rgba(0, 0, 0, 0.5); } QPushButton#NormalButton:pressed{ background-color: transparent; color: #01bdff; } QPushButton#ActionButton{ background-color: transparent; border: 1px solid rgba(0, 0, 0, 0.1); border-right: none; border-left: none; border-bottom: none; font-size: 13px; color: #303030; text-align: center; outline: none; } QPushButton#ActionButton[buttonType="1"] {/*warning*/ color: #ff5a5a; font-weight: 500; } QPushButton#ActionButton[buttonType="2"] {/*recommend*/ color: #0087ff; font-weight: 500; } QPushButton#ActionButton:hover{ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #8ccfff, stop:1 #4bb8ff); color: #ffffff; } QPushButton#ActionButton:pressed{ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #0b8cff, stop:1 #0aa1ff); color: #ffffff; } QPushButton#ConflictButton{ background-color: transparent; border:none; color: white; text-align: center; } QPushButton#ConflictButton:checked{ background-color: #ff9327; } QLabel#VLine{ background-color:rgba(0, 0, 0, 0.1); } QLabel#TitleLabel{ padding-top: 2px; padding-bottom: 2px; color: #000000; } QLabel#MessageLabel{ padding-top: 2px; padding-bottom: 2px; color: #444444; } QLabel#TaskTitleLabel{ padding-top: 2px; padding-bottom: 2px; font-size: 10px; color: #b4b4b4; } QListWidget{ background-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DFileChooserEdit.theme000066400000000000000000000003661352002233700264010ustar00rootroot00000000000000Dtk--Widget--DFileChooserEdit { qproperty-normalIcon:url(:/images/dark/images/loadfile_normal.png); qproperty-hoverIcon:url(:/images/dark/images/loadfile_hover.png); qproperty-pressIcon:url(:/images/dark/images/loadfile_press.png); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DHeaderLine.theme000066400000000000000000000001041352002233700253570ustar00rootroot00000000000000QLabel#DHeaderLineTitle { color: #b4b4b4; font-size: 12px; }dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DImageButton.theme000066400000000000000000000001261352002233700256010ustar00rootroot00000000000000Dtk--Widget--DImageButton:disabled { border: none; background: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DIpv4LineEdit.theme000066400000000000000000000004071352002233700256250ustar00rootroot00000000000000#DIpv4LineEdit_Edit{ border: none; background: transparent; color: #fff; } #DIpv4LineEdit_Label{ color: #fff; } Dtk--Widget--DIpv4LineEdit{ color: transparent; selection-background-color: transparent; selection-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DLabel.theme000066400000000000000000000000751352002233700244050ustar00rootroot00000000000000Dtk--Widget--DLabel { color: #b4b4b4; font-size: 12px; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DLineEdit.theme000066400000000000000000000016721352002233700250670ustar00rootroot00000000000000Dtk--Widget--DLineEdit { min-height: 22px; color: #fff; border-radius: 3; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } Dtk--Widget--DLineEdit[alert="true"] QFrame#LineEditInsideFrame{ border-color: #FF8F00; } QFrame#LineEditInsideFrame {/*outside frame*/ background-color: rgba(0, 0, 0, 50); border: 1px solid; border-radius: 3; border-color: black; } Dtk--Widget--DLineEdit #IconButton { border: 0px solid; border-left: 1px solid rgba(0, 0, 0, 50); margin: 1px 0px 2px 0px; } Dtk--Widget--DLineEdit[alert="true"] #IconButton{ border-color: #FF8F00; } Dtk--Widget--DLineEdit #ClearButton { qproperty-normalPic: ":/images/dark/images/input_clear_normal.svg"; qproperty-hoverPic: ":/images/dark/images/input_clear_hover.svg"; qproperty-pressPic: "/images/dark/images/input_clear_press.svg"; margin-right: 4px; } #AlertTooltip QLabel { color: #FF8F00; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DLinkButton.theme000066400000000000000000000003001352002233700254460ustar00rootroot00000000000000Dtk--Widget--DLinkButton { background-color:transparent; border:none; color:#b4b4b4; } Dtk--Widget--DLinkButton:hover { color:#01BDFF; } Dtk--Widget--DLinkButton:pressed { } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DListView.theme000066400000000000000000000002111352002233700251240ustar00rootroot00000000000000QAbstractScrollArea{ border: none; background: transparent; } QAbstractScrollArea::corner{ background-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DLoadingIndicator.theme000066400000000000000000000001761352002233700266020ustar00rootroot00000000000000Dtk--Widget--DLoadingIndicator { background: transparent; qproperty-backgroundColor: transparent; border: none; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DOption.theme000066400000000000000000000007641352002233700246430ustar00rootroot00000000000000 Dtk--Widget--DOption { margin:0 10px; padding:0 10px; qproperty-checkedIcon:url(:/images/dark/images/tick_transparent.png); } Dtk--Widget--DOption[checked="true"] { background-color: lightblack; border-radius:3px; qproperty-checkedIcon:url(:/images/dark/images/tick_hover.png); } Dtk--Widget--DOption #OptionName { color: #b4b4b4; } Dtk--Widget--DOption #OptionName:hover { color: white; } Dtk--Widget--DOption[checked="true"] #OptionName { color: #2ca7f8; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DOptionList.theme000066400000000000000000000015241352002233700254720ustar00rootroot00000000000000Dtk--Widget--DOptionList { background-color: #1A1B1B; border: none; outline: none; } Dtk--Widget--DOptionList::item { border: none; outline: none; } /* Dtk--Widget--DOptionList QPushButton:hover{ color: white; } Dtk--Widget--DButtonList QFrame#BorderFrame{ background-color: transparent; } Dtk--Widget--DButtonList QPushButton{ background-color: transparent; color: #b4b4b4; border: none; border-radius:3px; text-align: left center; padding-left: 40px; } Dtk--Widget--DButtonList QPushButton:checked{ background-color: #66000000; color: #2ca7f8; } Dtk--Widget--DButtonList QPushButton:checked[state="OnlyOne"]{ background-color: transparent; color:#01BDFF; } Dtk--Widget--DButtonList QPushButton:checked[state="normal"]{ background-color: lightblack; color:#01BDFF; } */ dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DPasswdEditAnimated.theme000066400000000000000000000024761352002233700271070ustar00rootroot00000000000000Dtk--Widget--DPasswdEditAnimated { border-width: 1px; border-style: solid; border-radius: 3px; border-color: rgba(255,255,255,.1); background-color: #454647; } Dtk--Widget--DPasswdEditAnimated[editFocus="true"] { border-color: #2CA7F8; } Dtk--Widget--DPasswdEditAnimated[alert="true"] { border-color: #FF8F00; } Dtk--Widget--DPasswdEditAnimated #KeyboardButton { qproperty-normalPic: url(:/images/dark/images/keyboard-normal.svg); qproperty-hoverPic: url(:/images/dark/images/keyboard-hover.svg); qproperty-pressPic: url(:/images/dark/images/keyboard-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #PasswdEdit { } Dtk--Widget--DPasswdEditAnimated #Capslock { } Dtk--Widget--DPasswdEditAnimated #EyeButton { qproperty-normalPic: url(:/images/dark/images/pw-visible-normal.svg); qproperty-hoverPic: url(:/images/dark/images/pw-visible-hover.svg); qproperty-pressPic: url(:/images/dark/images/pw-visible-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #SubmitButton { qproperty-normalPic: url(:/images/dark/images/submit-normal.svg); qproperty-hoverPic: url(:/images/dark/images/submit-hover.svg); qproperty-pressPic: url(:/images/dark/images/submit-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #InvalidTip { qproperty-backgroundColor: rgba(255,255,255,.3); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DPasswordEdit.theme000066400000000000000000000023541352002233700260000ustar00rootroot00000000000000Dtk--Widget--DPasswordEdit { color: white; } Dtk--Widget--DPasswordEdit[isEchoMode="false"] #IconButton { border-radius: 2px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; qproperty-normalPic:url(:/images/dark/images/show_password_normal.svg); qproperty-hoverPic:url(:/images/dark/images/show_password_hover.svg); qproperty-pressPic:url(:/images/dark/images/show_password_press.svg); } Dtk--Widget--DPasswordEdit[isEchoMode="true"] Dtk--Widget--DImageButton { border-radius: 2px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; qproperty-normalPic:url(:/images/dark/images/hide_password_normal.svg); qproperty-hoverPic:url(:/images/dark/images/hide_password_hover.svg); qproperty-pressPic:url(:/images/dark/images/hide_password_press.svg); } Dtk--Widget--DPasswordEdit #IconButton[state="hover"] { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #8ccfff, stop: 1.0 #4bb8ff); } Dtk--Widget--DPasswordEdit #IconButton[state="press"] { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #0b8cff, stop: 1.0 #0aa1ff); } Dtk--Widget--DPasswordEdit[alert="true"] #IconButton{ border-color: #FF8F00; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DScrollArea.theme000066400000000000000000000002231352002233700254100ustar00rootroot00000000000000Dtk--Widget--DScrollArea{ border: none; background: transparent; } Dtk--Widget--DScrollArea::corner{ background-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DScrollBar.theme000066400000000000000000000014721352002233700252530ustar00rootroot00000000000000Dtk--Widget--DScrollBar::add-line,Dtk--Widget--DScrollBar::sub-line,Dtk--Widget--DScrollBar::add-page,Dtk--Widget--DScrollBar::sub-page{ background-color: transparent; } Dtk--Widget--DScrollBar{ max-width: 10; margin-right: 1px; background-color: transparent; } Dtk--Widget--DScrollBar::handle{ background-color: rgba(255,255,255,0.2); border-radius: 2px; margin: 4px 2px 4px 2px; } Dtk--Widget--DScrollBar::handle:vertical{ min-height: 20px; width: 8px; } Dtk--Widget--DScrollBar::handle:horizontal{ min-width: 20px; height: 8px; } Dtk--Widget--DScrollBar::handle:hover{ background-color: rgba(255,255,255,0.4); } Dtk--Widget--DScrollBar::add-line { border: none; background: none; } Dtk--Widget--DScrollBar::sub-line { border: none; background: none; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSearchEdit.theme000066400000000000000000000016611352002233700254030ustar00rootroot00000000000000Dtk--Widget--DSearchEdit { border-radius: 4px; } Dtk--Widget--DSearchEdit #SearchIcon { background-color:transparent; margin: 2 -1 2 4 px; border-image:url(:/images/dark/images/search.svg); } Dtk--Widget--DSearchEdit #ClearIcon { background-color:transparent; qproperty-normalPic:url(:/images/dark/images/input_clear_normal.svg); qproperty-hoverPic:url(:/images/dark/images/input_clear_hover.svg); qproperty-pressPic:url(:/images/dark/images/input_clear_press.svg); } Dtk--Widget--DSearchEdit #Edit { background-color:transparent; border-radius:0; color:#fff; padding-right:15px; padding-bottom: 1px; } Dtk--Widget--DSearchEdit QFrame#DEditInsideFrame { background-color: rgba(255,255,255,15%); border: 0px solid; border-radius: 4px; border-color: rgba(0, 0, 0, 0.08); } Dtk--Widget--DSearchEdit #PlaceHolder { color:white; margin:0 0 0 3px; font-size:12px; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSegmentedControl.theme000066400000000000000000000010551352002233700266410ustar00rootroot00000000000000Dtk--Widget--DSegmentedControl Dtk--Widget--DSegmentedHighlight#Highlight{ background-color: #2ca7f8; color: white; border: none; } Dtk--Widget--DSegmentedControl QToolButton{ color: white; background: rgba(255, 255, 255, 38); border: none; padding-bottom: 2px; } Dtk--Widget--DSegmentedControl QToolButton:hover{ background: rgba(255, 255, 255, 77); } Dtk--Widget--DSegmentedControl QToolButton:pressed{ background: rgba(255, 255, 255, 26); } Dtk--Widget--DSegmentedControl QToolButton:disabled{ color: white; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSeparatorHorizontal.theme000066400000000000000000000004201352002233700273720ustar00rootroot00000000000000Dtk--Widget--DSeparatorHorizontal QWidget#DSeparatorTopRec { background-color: #99000000; min-height: 1; max-height: 1; } Dtk--Widget--DSeparatorHorizontal QWidget#DSeparatorBottomRec { background-color: #0cffffff; min-height: 1; max-height: 1; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSeparatorVertical.theme000066400000000000000000000004101352002233700270110ustar00rootroot00000000000000Dtk--Widget--DSeparatorVertical QWidget#DSeparatorLeftRec { background-color: #99000000; min-width: 1; max-width: 1; } Dtk--Widget--DSeparatorVertical QWidget#DSeparatorRightRec { background-color: #0cffffff; min-width: 1; max-width: 1; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSettingsDialog.theme000066400000000000000000000025131352002233700263050ustar00rootroot00000000000000#DSettingsDialog{ qproperty-backgroundColor: white; qproperty-borderColor: rgba(0, 0, 0, 0.2); } #Navigation{ border: none; border-right: 1px solid rgba(0,0,0,0.1); } #NavigationBar{ border: none; } #ButtonGroupSingle { border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 4.0px; } #ButtonGroupBegin { border: 1px solid rgba(0, 0, 0, 0.08); border-top-left-radius: 4.0px; border-bottom-left-radius: 4.0px; } #ButtonGroupBegin:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #ButtonGroupMiddle { border-top: 1px solid rgba(0, 0, 0, 0.08); border-bottom: 1px solid rgba(0, 0, 0, 0.08); border-right: 1px solid rgba(0, 0, 0, 0.08); } #ButtonGroupMiddle:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #ButtonGroupEnd { border: 1px solid rgba(0, 0, 0, 0.08); border-left: none; border-top-right-radius: 4.0px; border-bottom-right-radius: 4.0px; } #ButtonGroupEnd:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #DSettingsDialogClose{ qproperty-normalPic: url(:/images/light/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/close_hover.svg); qproperty-pressPic: url(:/images/light/images/window/close_press.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DShortcutEdit.theme000066400000000000000000000004461352002233700260110ustar00rootroot00000000000000 Dtk--Widget--DShortcutEdit { border-radius:4px; } Dtk--Widget--DShortcutEdit #Edit { color:#fff; background-color:#2f2626; padding:4px 3px; } Dtk--Widget--DShortcutEdit #Label { qproperty-echoNormal:black; qproperty-echoHover:red; qproperty-echoInvalid:orange; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSlider.theme000066400000000000000000000033231352002233700246070ustar00rootroot00000000000000Dtk--Widget--DSlider { qproperty-tipColor: #505050; qproperty-scaleColor: #505050; qproperty-hoverValueColor: #B4B4B4; } /*************************************For Round Handle***************************************/ Dtk--Widget--DSlider::groove[handleType="1"] { margin-left: 10px; margin-right: 10px; border-width: 0px 2px 1px 2px; border-image: url(:/images/dark/images/slider_bg.png) 0 2 1 2 stretch; height: 8px; } Dtk--Widget--DSlider::handle[handleType="1"] { background: url(:/images/dark/images/slider_handle.svg); width: 18px; height: 18px; margin-top: -5px; margin-bottom: -5px; margin-left: -10px; margin-right: -10px; border-radius: 6px; } Dtk--Widget--DSlider::add-page:horizontal[handleType="1"] { border-width: 0px 2px 1px 2px; border-image: url(:/images/dark/images/slider_bg.png) 0 2 1 2 stretch; margin-right: 10px; height: 8px; } Dtk--Widget--DSlider::sub-page[handleType="1"] { border-width: 0px 2px 0px 2px; border-image: url(:/images/dark/images/slider_bg_active.png) 0 2 0 2 stretch; margin-top: 1px; margin-bottom: 2px; margin-left: 10; height: 6px; } /*************************************For Sharp Handle***************************************/ Dtk--Widget--DSlider::groove[handleType="0"] { margin-left: 9px; margin-right: 9px; border-width: 0px 2px 1px 2px; border-image: url(:/images/dark/images/slider_bg.png) 0 2 1 2 stretch; height: 8px; } Dtk--Widget--DSlider::handle[handleType="0"] { background: url(:/images/dark/images/slider_balance.png); width: 16px; height: 20px; margin-top: -6px; margin-bottom: -6px; margin-left: -9px; margin-right: -9px; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSpinBox.theme000066400000000000000000000016461352002233700247550ustar00rootroot00000000000000QAbstractSpinBox { min-height: 22px; color: #fff; border-radius: 3; padding-right: 53px; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } QFrame#SpinBoxInsideFrame {/*outside frame*/ background-color: rgba(0, 0, 0, 50); border: 1px solid black; border-radius: 3; } #SpinBox_ImageButton { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #50333333, stop: 1.0 #50000000); border-left: 1px solid #AA111111; } QAbstractSpinBox[alert="true"] QFrame#SpinBoxInsideFrame{ border-color: #FF8F00; } QAbstractSpinBox::up-button { border: none; background: transparent; } QAbstractSpinBox::up-arrow { border: none; background: transparent; } QAbstractSpinBox::down-button { border: none; background: transparent; } QAbstractSpinBox::down-arrow { border: none; background: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DStackWidget.theme000066400000000000000000000000721352002233700255740ustar00rootroot00000000000000Dtk--Widget--DStackWidget{ background: transparent; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DSwitchButton.theme000066400000000000000000000000541352002233700260200ustar00rootroot00000000000000Dtk--Widget--DSwitchButton#DSwitchButton{ } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DTextButton.theme000066400000000000000000000011021352002233700254760ustar00rootroot00000000000000Dtk--Widget--DTextButton { padding:0 5px; min-width:50px; color: #CCCCCC; outline:none; border-width:5px 5px 5px 5px; border-image:url(:/images/dark/images/dark_button_normal_bg.png) 5 5 5 5 stretch; background-color:transparent; } Dtk--Widget--DTextButton:hover { color: #AAA; border-image:url(:/images/dark/images/dark_button_hover_bg.png) 5 5 5 5 stretch; } Dtk--Widget--DTextButton:pressed { border-image:url(:/images/dark/images/dark_button_press_bg.png) 5 5 5 5 stretch; } Dtk--Widget--DTextButton:checked { color:#01BDFF; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DTextEdit.theme000066400000000000000000000006111352002233700251140ustar00rootroot00000000000000Dtk--Widget--DTextEdit { color: #fff; border-radius: 3; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } Dtk--Widget--DTextEdit[alert="true"] QFrame#TextEditInsideFrame{ border-color: #FF8F00; } QFrame#TextEditInsideFrame {/*outside frame*/ background-color: rgba(0, 0, 0, 50); border: 1px solid; border-radius: 3; border-color: black; } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DTitlebar.theme000066400000000000000000000014041352002233700251310ustar00rootroot00000000000000Dtk--Widget--DTitlebar { background: qlineargradient(x1:0 y1:0, x2:0 y2:1, stop:0 rgba(0,0,0,85%), stop:1 rgba(0,0,0,85%)); } Dtk--Widget--DTitlebar[transparent=true] { background: transparent; } Dtk--Widget--DWindowCloseButton { qproperty-normalPic: url(:/images/dark/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/close_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/close_press.svg); } #DTitlebarDWindowQuitFullscreenButton { qproperty-normalPic: url(:/images/dark/images/window/quit_fullscreen_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/quit_fullscreen_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/quit_fullscreen_press.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DToast.theme000066400000000000000000000001751352002233700244610ustar00rootroot00000000000000Dtk--Widget--DToast { border: 1px solid rgba(0,0,0,10%); border-radius: 4px; background: rgba(49,49,49, 100%); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DWindowCloseButton.theme000066400000000000000000000005241352002233700270160ustar00rootroot00000000000000Dtk--Widget--DWindowCloseButton { qproperty-normalPic: url(:/images/dark/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/close_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/close_press.svg); qproperty-disabledPic: url(:/images/dark/images/window/close_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DWindowMaxButton.theme000066400000000000000000000013521352002233700264760ustar00rootroot00000000000000Dtk--Widget--DWindowMaxButton[isMaximized=true] { qproperty-normalPic: url(:/images/dark/images/window/unmaximize_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/unmaximize_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/unmaximize_press.svg); qproperty-disabledPic: url(:/images/dark/images/window/unmaximize_disabled.svg); } Dtk--Widget--DWindowMaxButton[isMaximized=false] { qproperty-normalPic: url(:/images/dark/images/window/maximize_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/maximize_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/maximize_press.svg); qproperty-disabledPic: url(:/images/dark/images/window/maximize_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DWindowMinButton.theme000066400000000000000000000005361352002233700264770ustar00rootroot00000000000000Dtk--Widget--DWindowMinButton { qproperty-normalPic: url(:/images/dark/images/window/minimize_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/minimize_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/minimize_press.svg); qproperty-disabledPic: url(:/images/dark/images/window/minimize_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DWindowOptionButton.theme000066400000000000000000000005211352002233700272160ustar00rootroot00000000000000Dtk--Widget--DWindowOptionButton { qproperty-normalPic: url(:/images/dark/images/window/menu_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/menu_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/menu_press.svg); qproperty-disabledPic: url(:/images/dark/images/window/menu_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/Dtk--Widget--DWindowRestoreButton.theme000066400000000000000000000004251352002233700273740ustar00rootroot00000000000000Dtk--Widget--DWindowRestoreButton { qproperty-normalPic: url(:/images/dark/images/window/unmaximize_normal.svg); qproperty-hoverPic: url(:/images/dark/images/window/unmaximize_hover.svg); qproperty-pressPic: url(:/images/dark/images/window/unmaximize_press.svg); } dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/000077500000000000000000000000001352002233700215635ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/000077500000000000000000000000001352002233700230305ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/check_focus.png000066400000000000000000000003251352002233700260120ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cdhT^@6alϯ _gf+fb2`XXp{[lTf224|W1=L`g2D̄,F {xhE (ZfTU-??W70>XԤe?tIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_check.png000066400000000000000000000003071352002233700256140ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(͒1 E[/ .;p2b7kKC3ԳARJ>jW̑!2s~N9Wlg-:p`ۑ=>O l`1㭈92d :2 IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_check_checked.png000066400000000000000000000005171352002233700272650ustar00rootroot00000000000000PNG  IHDR Vu\sRGB IDAT(c?# 1+coZb###V eڠx.Ӂ~}l+> &LHa9 xyyY`l]]]fbb/01'L:5&Q^^hii}apSϝ;wݽlҤI>|x&KKKhA9::ے7$@6b&-гA 3Ɂ߂l )ie}saIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_check_checked_hover.png000066400000000000000000000006701352002233700304700ustar00rootroot00000000000000PNG  IHDR Vu\sRGBrIDAT(c````ebabb|ddžAr 5 @F]eB.n1@-@)$c^_94][ܢ@@E |j߯R2>P糽~yʠ^Rab102Xb@J{KXyY!f5010ܘQpwQ= V|l=íy5 Y`19v~ W n̬`KaP.Hu63\/:?wzj-J Lau/>޼ȠU598%+?X??°E=3M¯7sf#0(@z ' K}z|& y`I}~1IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_close_small_hover.png000066400000000000000000000003261352002233700302400ustar00rootroot00000000000000PNG  IHDRVsRGBIDATH R 0,}C,>}Ð%~-Krox<#1@j@)7]Ϡl^YzI" 2*c3Y3Yj aw|cIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_close_small_press.png000066400000000000000000000003261352002233700302510ustar00rootroot00000000000000PNG  IHDRVsRGBIDATH R;0rsvpv>,~ C[x=Rwy\k{yTt]^ 6}^w,,pPh""W)ImhD+lR#a Zw@9B$LIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_minimise_small_hover.png000066400000000000000000000002111352002233700307360ustar00rootroot00000000000000PNG  IHDR霝sRGBCIDATH c`!0!0B TEPD6gFo|jI,?zF5h8HLIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_minimise_small_normal.png000066400000000000000000000002161352002233700311100ustar00rootroot00000000000000PNG  IHDR霝sRGBHIDATH 1 @t,=@XIY[8(@v>R `f1uGVwWwا(@ a(IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/dark_minimise_small_press.png000066400000000000000000000002121352002233700307500ustar00rootroot00000000000000PNG  IHDR霝sRGBDIDATH c`!0!0BNne`d"m ̽e'I2j  )~IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/dialogs/images/user-trash-full.png000066400000000000000000000036621352002233700266020ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org</IDAThmpTW}f߲ !I"fHu:% t8NGqPEbP&qDQ0qݘ}9~Hnt?sΞ{<<ϽpO-qLV9!BueYJ)E R!kR^,R^B,ˊ=@DJ1M|<?q+CCC !5o*xoDI(_͈5F͇*;5ID9Hg613@`"Dd_ ~~tj bլ"~~pu~N:nd7l66I(uﻜaWh+ u';nxXsߗ'8ݍlulWi6G*m*Kpo5R婼nl# iy[٘QӮ@i1xrB['" `z\ݏWW|o_aMʂeSŀ Sh kٙ_Rbo5g]T'sglFuA%A{!} !.Y}?^ ?w_Ŕ?.33ui/~fM984EO}{F?9&-v^›5 [4?oI }՞0oM.9L<>jYv,}b.ӺllԦhT{OTժT25+[T\KA[2mrm'̨{wZ9 mۚٹs/R^(g`չ4~6nܨK)NH$ii90%ٵd2se]d>XQJy1cuL\<ȑnjɲHd535X `1ZRN-cn'|&&,jv IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/000077500000000000000000000000001352002233700214065ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/add_hover.png000066400000000000000000000012531352002233700240500ustar00rootroot00000000000000PNG  IHDRj cHRMz%u0`:o_FPLTE...;::<;;=<<100%%%&&&0//:99$$$###IIIHHH988877"""!!!766 444000655544///---433322211&%%%$$,q tRNS&&U6bKGDA pHYs  IDATeʋR0lJG%*цEL(ߜ8cOt @[;^SvJ0AFF vT&)Kd,$##e.y%sU*T ^)-de 8l(o*sT.O! ><IVrb|֟mv5ײ]&XERn,ؚC;%息%tEXtdate:create2014-06-20T14:58:50+08:00Z%tEXtdate:modify2014-06-20T14:58:50+08:00zIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/add_normal.png000066400000000000000000000012371352002233700242170ustar00rootroot00000000000000PNG  IHDRj cHRMz%u0`:o_FPLTE...;::<;;=<<100%%%&&&0//:99$$$###BBBAAA988877"""!!!766 000---655544,,,***433322211&%%%$$ tRNS&& pHYs  IDAT]ʍR@f"GbqQkg3,,۶lkkٻ{prw$ ttXE!Ȓ*SBӳL't8^2OQ~hJi==)))?>>***+++A@@,,,@??BAA---CBB...DCC///000EDD111999333222:::GFFHGGtRNS&&@ pHYs  %IDATeȋV@ၲoemf2ʼevAd)Jc'#CpQr~P=rSbIxRjR#UޓZZ]{uC7OϚ_|~5k(gfoہΛeZ&EΖOWۯhπ6؎mGc3vȐ!4Q)ٚ: /bI݋y"QiC4]Ъl%tEXtdate:create2014-06-20T14:58:52+08:00J%tEXtdate:modify2014-06-20T14:58:52+08:00;SIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_hover.png000066400000000000000000000002241352002233700254760ustar00rootroot00000000000000PNG  IHDRxUsRGBNIDATc)}FF5@n@-xK!0YF #X (?A@@K`aJTuLB K=,#IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_hover.svg000066400000000000000000000011571352002233700255170ustar00rootroot00000000000000 down_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_insensitive.svg000066400000000000000000000012211352002233700267240ustar00rootroot00000000000000 down_insensitive Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_normal.png000066400000000000000000000002451352002233700256460ustar00rootroot00000000000000PNG  IHDRxUsRGB_IDATcw^)}%%5@n@-x@,Tr#$H* ~bd-  Ew q L)B1\0tyIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_normal.svg000066400000000000000000000011611352002233700256570ustar00rootroot00000000000000 down_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_press.png000066400000000000000000000002671352002233700255160ustar00rootroot00000000000000PNG  IHDRxUsRGBqIDATc[񣔁05 H@o2100aު!0y622[+LL ь>$^+@VLf"G \r46 IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_press.svg000066400000000000000000000011571352002233700255300ustar00rootroot00000000000000 down_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_down_white.png000066400000000000000000000003711352002233700254760ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?%q `@ 5P`>qy#G\gHn\4Gd@x.Ch^C |a>͸ @1f|:B iNIy 0\ IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_left_hover.png000066400000000000000000000004431352002233700254640ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHlH̙3߹sǟdf(^@hi@fY,L3M(Ѐe۷R 6SAΆ1LȆ,\<#4w.RG0qr>`\k"IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_left_normal.png000066400000000000000000000005011352002233700256240ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHyxx˱0aaajjjLj.؅D`asssQhj@RRYiii#ӧ͛g/02W)40]A[nXjD k^ %KA Al$%e4C 1bGR ]2TNIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_left_press.png000066400000000000000000000004431352002233700254750ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1BCHlH̙3߹sǟdf(^@hi@fY,L3M(Ѐe۷R 6SAΆ1LȆ,\<#4w.RG0qr>`\k"IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_left_white.png000066400000000000000000000004261352002233700254620ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?1,CHgޡRH Gd} @  68 V3VHьՀׯ鄲xc}V1a+@yh/jDb2ܐg'+/ Er  @g&@~_ݠZIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_right_hover.png000066400000000000000000000004721352002233700256510ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1RA, h`ƍ. E wYAx̙  )4XC1 5k֜b3 ``,T}V 700L0T0A!: ՌR4c5`… ŒP[ۗt̅ bs# H;AaOIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_right_normal.png000066400000000000000000000005261352002233700260160ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1xxxRA, h %%hx>###HQ.Լ DI g#(voݺbժUqb k$%%6>}zn޼yxt`~U th/4bP D@f111Uь5~XH%5O` L@A|SYGHIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_right_press.png000066400000000000000000000004721352002233700256620ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 ADž1RA, h`ƍ. E wYAx̙  )4XC1 5k֜b3 ``,T}V 700L0T0A!: ՌR4c5`… ŒP[ۗt̅ bs# H;AaOIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_right_white.png000066400000000000000000000004311352002233700256410ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?2 @Dž1TTT gϞhHY{>ȑ Mp( \DyDB(B0_f"Ā022}Vxg rX@thjٳgHf\a FF IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_hover.png000066400000000000000000000002101352002233700251460ustar00rootroot00000000000000PNG  IHDRxUsRGBBIDATc`@d$!*H $+@q6## djqE0IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_hover.svg000066400000000000000000000013031352002233700251650ustar00rootroot00000000000000 up_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_insensitive.svg000066400000000000000000000013451352002233700264100ustar00rootroot00000000000000 up_insensitive Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_normal.png000066400000000000000000000002371352002233700253240ustar00rootroot00000000000000PNG  IHDRxUsRGBYIDATc`@ d$!$@>#ͨ4$"`@T8(cA1L  @:a ]@X4H 2'IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_normal.svg000066400000000000000000000013051352002233700253340ustar00rootroot00000000000000 up_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_press.png000066400000000000000000000002541352002233700251670ustar00rootroot00000000000000PNG  IHDRxUsRGBfIDATMA 0 Q7=E_Cb+(og8HCA!ȐMahL' ޺Tз&v{0V#IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_press.svg000066400000000000000000000013031352002233700251760ustar00rootroot00000000000000 up_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/arrow_up_white.png000066400000000000000000000003531352002233700251530ustar00rootroot00000000000000PNG  IHDRa pHYs  tEXtSoftwareAdobe ImageReadyqe<xIDATxb?%qpj6RÂO#Gl܆\(AbXLB@1NCi4f\X [ @ hF6T`Ot1 NvcSCIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/button_center_normal.png000066400000000000000000000017221352002233700263410ustar00rootroot00000000000000PNG  IHDRetEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp }NEIDATxbcdddQ_|a```bxP ,E >rX H1)-pIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/button_center_press.png000066400000000000000000000017311352002233700262050ustar00rootroot00000000000000PNG  IHDRetEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp EQLIDATxd1 PC:; ~N"|f $/AAD63#.uFCE ?w]Uvxe H 6IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/button_left_normal.png000066400000000000000000000021161352002233700260110ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp +IDATx|Q[ \iJ}O=Ky/6PwK@7)L;<_w_5 CDu 4%MӀ>$C ˒``n[1XjEV["`Xy\SqKa{Y I@;)981fu(;a9C۶gT_}) m:IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/button_left_press.png000066400000000000000000000021331352002233700256540ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp IDATxڄQ @ i!A':K7T ] }0Jk^ֶ~˲,=UUdY&f2cّ lC9 IDATxڜRK @ M.,<{W@u7=N/P DwrIDATxڌA 0E'1"uNp@u7=N/PzEPQ!Lk!8Vs*_~<1#5M#KtcLR;G0Y ]qN _aEӸkLL dtkwidget-2.1.1/src/widgets/themes/dark/images/capslock-hover.svg000066400000000000000000000023101352002233700250430ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/capslock-normal.svg000066400000000000000000000023101352002233700252100ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/checkbox_checked.png000066400000000000000000000006261352002233700253540ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  HIDAT(@?`쌥 X-.'pXkTWcP5B6]uff7 c\u]-$2rMb 5eYfp\^8@ >yn?t*ozoly e‚0~p0pXmȳgL?L>өZ#nz=ct:Z-8þ)$i`4mc6!c<,&{F#K Gafb޳u:yvHlW!ڲO~nS勢xK0MZi%g|nTUyH3 ϔX?_6qpIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/checkbox_checked_hover.png000066400000000000000000000007551352002233700265620ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  IDAT(RM(DQM=3A~j7H6ذca#E( dge1 YZIXL6$jXH"k4xo9ҭsNν /S~ b4nu݈D=j!~f2 l&mjp"Mު 4]@Jң5B7vf_lmlIBN)oBAU5WI Vu>d.'p å/gt'{8X-\f\R'6Wpd1nSK(1M- h/n>g yA ԩn`K);(Eh|M!'("i cϗ~_ rtlr<ߢ ".0@$^37eYi|=z:͔IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/checkbox_checked_insensitive.png000066400000000000000000000005571352002233700277770ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  !IDAT(j@EgyXUk b!buzGI>%XXZ"Nbb MfYgwV(xbSBwoeY~߫2yp?[۶)˲0W e˲#1_qw`g0 )sc``YyGia) @]ױ |gmi6JG4MY3IPq]lGa|-tTE4 _L+).?wpȎ8V@?O9ƌu&SIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/checkbox_unchecked.png000066400000000000000000000004531352002233700257150ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  IDAT( 0 EAL8T*puN8P?Z@Od<;&`X]חu],=Ȃ5M˲iBd-1s[.N>c-L^a躔3]-~&T=Y}lZŇa;FX>!Z Z6|%`\Us ۛRՖߺ {,7#V =O=WsDIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/checkbox_unchecked_insensitive.png000066400000000000000000000004161352002233700303340ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  IDAT(A EqxV{C5 ".1PFvfxR$c%/R[Y/|&o~Iaι~}y,;CQm[8rEP0 SFaFr?d6\uN8&臙rMxc ' ,Z8\كkOkIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/clear_white.png000066400000000000000000000005121352002233700244000ustar00rootroot00000000000000PNG  IHDR;mG pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb? 6ܽ{)%a߿@ h ٳgi(s> (=M@@e;wC$Ѓ. 0Jѹ,ıgĖؐGuuuR b+VXXom>a'Az0„Q·Cqxb ̟eT^IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/combobox_down_arrow.png000066400000000000000000000005521352002233700261670ustar00rootroot00000000000000PNG  IHDR tggAMA a cHRMz&u0`:pQ<bKGD̿tIME {a𣷟(d2Eȡjj6,g[Δw ٩]箪`$3$۶Mlv l``>S53%Yc2֚ 1"wǒ`HcFǐ缿!yukWFAp_TRW;R5#^O1|qy9 %z_9B*Oczq*+RN]Ű}\EbgL("b{L< +@vSP.Q4c>Il?NEQEγ, <`0Q֓K[)3Of]Yይ+.֙Co#[/{IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/dark_button_press_bg.png000066400000000000000000000007641352002233700263230ustar00rootroot00000000000000PNG  IHDR连sRGBIDAT8N`RG1)O89.n>>a Pi-_s.sҔ8*CV^?<5Klni84=7m6hX, Nm%X#aӢ't:~2|'fzZh(H|vG$  L"9< ZԘ45 }}J2L)35|DP2?#r!Ɣ$\kk(uP`!J0+ȈFEE-`?Ai2>"\*5Lwx~Ny|T跴K{@ZfzfY%",;NWO7x.Liw埕Fm_3ϭD::IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/delete_hover.png000066400000000000000000000010241352002233700245560ustar00rootroot00000000000000PNG  IHDRngAMA a cHRMz&u0`:pQ<bKGD̿ pHYs  IDAT(ύQJ@YBEK ަGi@SX  f#NH37J! ~'Φa7 'Ǔ.i8 $Y0ܼ"0/Q0#Xx2@[!D(]PF:[XK!KhJ@L,DP(k*z,v@C'sG)& ֡4K>W4w|}4e^/9s8R`^VG-Dj]v?N5hN%tEXtdate:create2014-06-20T14:58:52+08:00J%tEXtdate:modify2014-06-20T14:58:52+08:00;SIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/delete_multi_hover.png000066400000000000000000000010411352002233700257670ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8S=HBQ>RJQ$Ԑ`EnE ACcRC{ n4`'QIPZ>^{"Hw}{a)g X\N3\S>o?U<6LdjkɎ,]©r0Cd5Udwt:?Q4К(CHfu=r_gAmcɪ9ss@ Jb]o{=E5nec&ҁ5`Qf(gFٿUIXhq8s,.\C4d+_&Q2SZJ-u12~vHD TDU]Mڞ(.*I>*`!8 &P0U8̅Ғ$0LOD5B :Gd?8{89cХ;sZcI`w_\. [8c7^,TSO>dߺIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/delete_multi_normal.png000066400000000000000000000007671352002233700261520ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8S=OPQ 1Ä0VAfGG63$881M{6&}n=OT3鳖<68-koIQ%tؑH$4R~bi5O]qX@Τkrq7>o&g"~:ޅj쥠nyJ-bifDo FOm$rȖ>X vl< 5,8B Fٿ   I/9vQF`q~V{5P1H~VKD)Y*hAg;>!%k7f.pQA&A `u8 &A'0.Z'e|+nh g3\_z?|\cPeboi.U9:~IĜӱIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/delete_multi_press.png000066400000000000000000000010561352002233700260060ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8SMkQ&Q;LaJAH(Eą-)\ ݸ ?(tiR-BAh4mMaH2d^gJxM;=OgSMK9o4-vbg+zWWȔNnyt,p:X@N;1g Fe]?4?3}g8LzR|rLTI7[nQ`b.rpLt]j #Um6EСUm*+-Z22;KF "/$רw=gE[8c7d; ~s>҇+IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/delete_normal.png000066400000000000000000000010071352002233700247240ustar00rootroot00000000000000PNG  IHDRn cHRMz%u0`:o_FbKGD̿ pHYs  IDAT(υMj1 ?(!d?WBmr]B:tu1v3N+,= ?=Y`^k[7@05Ժme^*x#,Ar8B'O# % #9]k==)))?>>***A@@,,,+++@??BAA---CBB...DCC///000EDD111999333222:::GFFHGGtRNS&&@ pHYs  IDATe S@e)>XR#B $2-M3|Ӳ͙@*\+9RUEUT%Q%9vS=EuJ57cF)U/Qog4ߙipn[v´MnZh=8\uv #9pˑwf#]yN%E 00 {/[ph<}LO?3:+cyX 8S< +YlR1ݞݶ(Rl($4rOl%tEXtdate:create2014-06-20T14:58:51+08:00{-r%tEXtdate:modify2014-06-20T14:58:51+08:00 pIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/dock_preview_close_hover.png000066400000000000000000000022221352002233700271630ustar00rootroot00000000000000PNG  IHDRsRGBLIDAT8U{L[e?_{ ڂqC!fJ=s6l ffdb4QFc1#nhdq Scftڍ( r{n%hHԯ圞{_9~e+)@f[0J$!^,+/_zw' *}co>62000 i2y%[kV!IĬut,Z['! P f\u>ܓ?2qxG YB>EWo|b%< Nݾil!S+TUK3!9zxs% 1UT2Sl*! GIk^l.ӿkMGX$ M!0e4p[*GNxĔL_Jib5MP!>ܞC,ceK;{]ԲЮݧv.JUet:TYɤ.@nkBr2/ Әȸc)(0Bc)S#2z=%XL&nsU6e2* +;Y?f{B`>vpkJVofy J O껛KRtUQトFq S><sj%gI S_wCcub"m> l[ 0TNv]яǶs]ºU;Dr{'{2 É/^n1Od<1Lr''>A`$L{)>).i]Jt{z&LΔ02 eB>E*swG\飕(#Ctp-"1ptUH~"j/+ʮ.NRUwc ׇ'H͐ 3gj tʌ :GGɤ0q~ I"f_<''#,Vy]|X.Г;Ҋ,S}?yɜX&E$΁/y^I uI, BTqUeۨhNt5p-dL/.;?r z'\ )E(ͤUi6O jE+c9rl?H'4IE*3w%* 3m1ūRr"85cg輪:Eqkt..uЯ&z. P%,A/yD1Yy k׻mYY^!12C|mVm~Xq)y觟WN 9˾SnLJ rtP728# oluqA w\XrX,R.]M@F1M _ֽI^\?Sm+0//{;ҬKҪ4 ||ϝ_#6{9\IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/file_24.png000066400000000000000000000060411352002233700233410ustar00rootroot00000000000000PNG  IHDRw= pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FNIDATxԖ1n@E.KJڮFrWRn| !9 71AB̤0HVEFJDU"VJ)m^s6P{<r zP/@kfY ]{O>|vlKk"*D|Cns.Y,"ʕR{?HnC2UUH4neo""V-r}߿0h(X׵'qeY渓:}젮koC'o9`f A-"u cha8'tzyDNnqm ͹U*!A^ضrIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/folder_24.png000066400000000000000000000062211352002233700236750ustar00rootroot00000000000000PNG  IHDRw= pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxڴ@#FW^ nL^!0y y?y@\[F0㋴Hff4sfDU3*"r^q<8yH#>c@EUx<SUNcW{P4?sL$~8^[v=[Auk\ UU7Mcft\~O|>t Py~Ej5z_o+T""= 6OYqνrPUUl60u| ( Ƙ9+E,нnMx,c@|nUeEu]"Y=.(r%",F~ 9 C!i1<^$7VKKn8~/K*.lTIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/folder_up_24.png000066400000000000000000000063671352002233700244140ustar00rootroot00000000000000PNG  IHDRw= pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F$IDATxU=A=3YBK !B,vJH*?@D ?@+K+lRbRy?`-R8 l6/@/܁; ̙shqa!deR)Rt:UBRTWJ}^\k=bZIuGJR/<pu7! Q}gyn_0s۶o kX5 a4oFwLbԀbtz\~ LHZVbR;A(BRr΅myIcaǜ_)Bh4{\p@v<b|1Ml%OZpNG8TC @n I˲1 %.IO006xZ 04`8cϦiMPvL|_l ~o őyIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/hide_password_hover.svg000066400000000000000000000015631352002233700261720ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/hide_password_normal.svg000066400000000000000000000041341352002233700263340ustar00rootroot00000000000000 hide_password_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/hide_password_press.svg000066400000000000000000000012641352002233700262010ustar00rootroot00000000000000 hide_password_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/icon_view_hover.png000066400000000000000000000010741352002233700253030ustar00rootroot00000000000000PNG  IHDR!-sRGBIDATH U;n@]"(@$ P9F6e PٷC#̛t8_F yt.{X.fRl6T&QaZ29t^,V+_*t:U&:'AZr٦9o>$'!.et|ZEɉ̑Y\G҇1W"HvnVzdA8EżTc% pM,[ o\2 9]Ax?ҁ#3?>bXp]ѱمPy |{p5"v> " BшR+1T훁bFhƀsC&H.,mx44)ZN;:'.yT jZI{Z9˵Y0qV$agA߫*0fʮK6p>fOPP(tHA_C^&ɓb=Ky S<ռc]F>?(rkok4_ݹIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/icon_view_normal.png000066400000000000000000000011351352002233700254460ustar00rootroot00000000000000PNG  IHDR!-sRGBIDATH Un"A`!$ ]rB!#Hz) k۴S=5=ݳ/c|bhzl*[/RX,d2iL$1 * ϋuA3L|\9Œa'Dܺ% n1wVdvuu hD@>n}g?Z-:N(A' ;ݤl v]#ɐd#/ x`@kO;@4V؈[ժ;-rW{x"Cb\|'G*p~KFCzIɠZ&džd 0`pDb7$ޅC"rp8+uTN#ǹFy*fR>"<}kB`&雬O@OȤ_0|_7MYd܊ObN 00  ǺtU6xu1&؉0= 8Y*2W^-֢9QL jVv8;Z%^v~զv=} lt`cmJ۟Awsx`:Y峘MVv@KJHfIL`01$iY ^YI6 $-+ &?漞G68#WO>ղ3g   'c J l ⌇e9$Ec)8jCZP^5i &gv3-q/LQߟ޻p{(d$kI$ʁ%WU\RuqǷ/f)H=iɗ͗eodM\HwXwMV&E%їoCVYIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/input_clear_hover.svg000066400000000000000000000026511352002233700256430ustar00rootroot00000000000000 input_clear_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/input_clear_normal.svg000066400000000000000000000026151352002233700260100ustar00rootroot00000000000000 input_clear_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/input_clear_press.svg000066400000000000000000000026261352002233700256560ustar00rootroot00000000000000 input_clear_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/keyboard-clicked.svg000066400000000000000000000027161352002233700253310ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/keyboard-hover.svg000066400000000000000000000027161352002233700250560ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/keyboard-normal.svg000066400000000000000000000027161352002233700252230ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/list_view_hover.png000066400000000000000000000010601352002233700253210ustar00rootroot00000000000000PNG  IHDR!-sRGBIDATH UjA]7xCoC\ x!tm$)W9^ra.JϪy[} @ǣ}k|>O{\@n\.EDQ$j5!Sq*KT6q|<8 |by j(ơ-$@[-5unphe` Y& 8 vzĂ0mbJx{o9qrHsj"V+mEˣ= E+MCeE cقt|/|2HѾ"l6WhqؓI" m\Hr(DfĘ\sD Тz>'?"6!!un>ED$I8ɾHrJ9+jjs4{YVbІ(>lCTD֬IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/list_view_normal.png000066400000000000000000000010641352002233700254720ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH UKjA|\FEΐ뀇I!3d\ .DgpաMOG >hMe#"rR N)G5ăxVCnyDŹX,|d|v;YW I /|WMܫM^]M!WZ"(v+\N5lm牎ǣ({DC\Nfn֘Y5&:z=S;ݮ0Zn}ժ- -" LP(d23.Y4sвi"m}aR=3¢tcI8s tL[Nшt"Z-Ci65 -*ˉGF1 f<s=w" k>V[T*dZY 3s΃cE"Lf%͛ 8o0 %qr= fY T \[Dlr6|M?Ew?rIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/list_view_press.png000066400000000000000000000011331352002233700253330ustar00rootroot00000000000000PNG  IHDR!-sRGBIDATH UJQDg/Zh~6Z~61 "DkN0p=8gf">1iO'3N؜6@ ZfP* IY133w1fOoZh$gW0=gŴi N6H 3Y98 vۣk3S1ԱIr9RK'q&/(<3~g B'$dF|x_{ L hBغy#/H n_6xueR|>Ё]E.sEn /:_)M`״\IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/loadfile_hover.png000066400000000000000000000001741352002233700251000ustar00rootroot00000000000000PNG  IHDRĴl; pHYs  .IDAT8c`!0(aN"ćL0(=!0BIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/loadfile_normal.png000066400000000000000000000001741352002233700252450ustar00rootroot00000000000000PNG  IHDRĴl; pHYs  .IDAT8c`!0(laN"ćL0(=!0BIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/loadfile_press.png000066400000000000000000000001741352002233700251110ustar00rootroot00000000000000PNG  IHDRĴl; pHYs  .IDAT8c`!0(lll0I0u0 GC`4CͰ 5͎IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/multiselect_active_normal.png000066400000000000000000000010471352002233700273530ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8SKP&b[QmEܴ(8* 88(NnN$R(TIWj_Mݻw$-:X{Y5۝5gض"5ldzэhH,͊¯䕘QTld9/E&#NpEzOdb/(juz'Jl>a,Gv£rWp=,hP +Lr dqldv=d- F ba1Ԍcgv^c! `A+OɋYA,.X?ZfSffS.5HZ4_gn|aHt4=N#w`IaHf 8& C>5C1qJB՗%KeӔʢ\\2nٛ) hgs}CI2y!y`{Wm1B9?g{3 q9җrIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/multiselect_inactive_hover.png000066400000000000000000000005161352002233700275350ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8SA 0,|DU|7/}B{PH8wi -d73;$MyVź,Su7c̛Θ{g1۫0IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/pw-visible-clicked.svg000066400000000000000000000017441352002233700256120ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/pw-visible-hover.svg000066400000000000000000000017441352002233700253370ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/pw-visible-normal.svg000066400000000000000000000017441352002233700255040ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/radio_selected.png000066400000000000000000000006511352002233700250640ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  [IDAT(RjP>tp( E!A0soЩSC"s }A!RȐEAPfl:{s:de|<A>N(ﺮ11~DZe10ɲL~,ZH0NKl65l@u: :nbN'9 ] !OՏ#9rѻඖZeINP c!l<8'j;YQ7grg ڦ1<lp&/ԍׇ<>44J5b* v~ɭ3Kh.MxWJPISqpӮ๕aB:g< +ԂFW֎2 ?O{Q7>C]x s-Vj5[)b[U^e2!he)ڸK lN߳fDdYiIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/radio_selected_insensitive.png000066400000000000000000000006411352002233700275030ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  SIDAT(R1k`/~L""n?sgW,fRYD0h렱 {w/;&^9(+>8+R}t:=fYz&u$ry6 wb{"22 ,ˢp4'E1q4Qj|Ni0,o@3d 1yG^av%`AYV Eo:hGKxy `K\.wÁd&U*v\RBVl~8 xEA7MCr qJTz& 5\ӿ1a8DLIgmz}vc)FVR(1p}82m8_ M9IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/radio_unselected_hover.png000066400000000000000000000007051352002233700266320ustar00rootroot00000000000000PNG  IHDR Vu\gAMA a cHRMz&u0`:pQ< pHYs  ;IDAT(cdٮ`H ҆ _eϰTSaUm_0 K37󿘒III0WVɁԀ40Lp bR5axװ邖89,޵݉\׃4cx&g f&gZ&6ˏ/ LL & `$͂.Gg c d 8@ܫLp쒀Uș g/ LHTt᧊1VM 9Zp"- /b` d=_N^ON  /pp0|b| G$Iq1`>cIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/radio_unselected_insensitive.png000066400000000000000000000005721352002233700300510ustar00rootroot00000000000000PNG  IHDR Vu\ pHYs  ,IDAT(R1k@48 PsgWnN]Y BPU{^HShwywީWDQ8˲p0d&a,ˇyEQlP\(9NH0~Π~@Lh:dj8Ro՛䫐756Gik<\7]檙{g :EEVph{`Q@{ v U7_Z(@w/%:E˥X8ЗaIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/restore_normal.png000066400000000000000000000003671352002233700251550ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH c`!S LH{Sr-Ђ]@  ^@,@@#3C @' Ԍ!@ ^EC-Ǧ(ğYt90XgLRcC,H>+ᐆ/lJSj*NE I{yoZ3v|Id1deʑb Yh,՝@3tTcIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/search.svg000066400000000000000000000014361352002233700234000ustar00rootroot00000000000000 search Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/search_hover.png000066400000000000000000000005741352002233700245720ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8/NCAy}O#hHp&ABA&C`PX yy,ٙl$:yDL#=irm"P3ܢ~͒Ytpq8y:9w(V7(5H7ttw'[+#ʭ)"zkz1ϭ(W_&In .Qet{#8J܇E̱4sΎ6䯵Ӏ\PCΰ(l= 4`IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/search_normal.png000066400000000000000000000007731352002233700247400ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<xIDAT8kA.ĄUN Uqu˝ !1DL)q[*%(5{3{[0yߙ$ƘSm>|CQo4u g$oI!y j:v%lZ?O$*Y8: sBrjZ#95ƜT_IW6ݨ|M Pˆf<8v|soKtZ>n `+<<8/$MG'%Ͼ5NZs0Se$IJe9hLV,6i4eC$Irll腤3I+GW= 9^IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/search_press.png000066400000000000000000000010011352002233700245650ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<~IDAT81K\AϙHa#)RmN1N|`bEb#iXؤIc-4"))B˲w, o%e;~3Qސtw6Jo$c%58޿ M\s+`Iқ)B83;7Ifcf\;IoѼ@3;o.X'&{KZo]ZWs&jVn,RMu<-3_HxEQ>O3_UU!=ݺߏBx^!$]$wkx  show_password_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/show_password_normal.svg000066400000000000000000000045271352002233700264110ustar00rootroot00000000000000 show_password_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/show_password_press.svg000066400000000000000000000072201352002233700262460ustar00rootroot00000000000000 show_password_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/dark/images/slider_balance.png000066400000000000000000000360011352002233700250430ustar00rootroot00000000000000PNG  IHDRbw pHYs  9iTXtXML:com.adobe.xmp Adobe Photoshop CC (Macintosh) 2014-03-17T14:50:09+08:00 2014-03-17T14:55:45+08:00 2014-03-17T14:55:45+08:00 image/png 3 xmp.iid:fae3abff-00d9-4875-b330-33f2a5c69225 xmp.did:ca517e6f-2d61-4696-8e7f-678f8d782fd8 xmp.did:ca517e6f-2d61-4696-8e7f-678f8d782fd8 created xmp.iid:ca517e6f-2d61-4696-8e7f-678f8d782fd8 2014-03-17T14:50:09+08:00 Adobe Photoshop CC (Macintosh) saved xmp.iid:fae3abff-00d9-4875-b330-33f2a5c69225 2014-03-17T14:55:45+08:00 Adobe Photoshop CC (Macintosh) / 1 720000/10000 720000/10000 2 65535 16 20 ${ cHRMz%u0`:o_FIDATxڬAj@y3FjMc E/rz,Kt\weǕ&).DM |A)ZsY;,D$ep"j8^vl6!*Yh4"%/!b%8m"5x/z_9?i?sn\.RRhY,8@'{*u/@kMQxwFmGc}]]YB֔eI]ם1mG{qi×$IbUUlsk]8mմm;Ͳ91(hjEߪ{\i:Z~Gg|I_f2 Za}xp9B1}K1/N#f5DzY^.7%Y> AqxJA0]o.GO`_2#^\xfvϫXge5yD"9̨bb~F"N]y/ӃuIJ;%[7Y; h7c?,blsI*p8+;s:<'=S皿1)VVN;Wӣ4'S}ZOY||WiWth2{&AyW"'-yFtW'6IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/slider_handle.svg000066400000000000000000000030571352002233700247310ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_decrease.png000066400000000000000000000004521352002233700254260ustar00rootroot00000000000000PNG  IHDR pHYs  IDAT8K0 DIݔMٸ"*X`%d^)#sf# MR24N~ Zm9`ܐaۜQpm@u 229TXݡ/n`UU5Qn!zlÀCbSk.w]k(#Pהw\ /S=Tqu :~vO7c rsIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_decrease_hover.png000066400000000000000000000003171352002233700266310ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH c?3 1S|r0-02a*3.2A.PY@`H.4 "D,T$ N1iBԈn.h$ hDVPI+p@MIBd%D`IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_decrease_normal.png000066400000000000000000000001631352002233700267750ustar00rootroot00000000000000PNG  IHDR}\sRGB-IDATH c`!0!@0ar@cң!01>3wIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_decrease_press.png000066400000000000000000000003251352002233700266410ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH c?#/s1S ? <@LMr(LrZ. ld` G-(bA8$vi$. XIP3t4 "PF+V('NJKSsZIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_increase.png000066400000000000000000000003421352002233700254420ustar00rootroot00000000000000PNG  IHDR pHYs  IDAT8c`31TUUXYY=z5!,W2u g"To # tY >0,#W-F|7YdE@ 0Q(Auuu L)Tw!12!%fIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_increase_hover.png000066400000000000000000000003361352002233700266500ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH c?3 1S|r0-02a*3.2A.PY@`H.4҂xyP0 }/&,B`286A TD`PcԂKdzTw e3PiRa9/PIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_increase_normal.png000066400000000000000000000002101352002233700270040ustar00rootroot00000000000000PNG  IHDR}\sRGBBIDATH c`!@XDbrԎZ@0 %BYDˑb)H&4".U0C. SIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/spinner_increase_press.png000066400000000000000000000003421352002233700266560ustar00rootroot00000000000000PNG  IHDR}\sRGBIDATH c?#/s1S ? <@LMr(LrZ. ld` +~>p#=R"r46sZMR\aS?`HDVVN 5&>p"0IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/submit-clicked.svg000066400000000000000000000014151352002233700250270ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/submit-hover.svg000066400000000000000000000014151352002233700245540ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/submit-normal.svg000066400000000000000000000014151352002233700247210ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/tick_hover.png000066400000000000000000000005501352002233700242510ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?Y @ ĭvJ [xV~ ;~c oذfŰc=/Y@2l@*AA(*0p PhDu 3 <@q E_@Q5 xd 9tß_|| uLzȈP4'P&{ "$8l-#ilK/ xIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/tick_insensitive.png000066400000000000000000000005451352002233700254720ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?9Xl@J |" Fi/^0jh-A@#GLkj: 6Cm[330ȏ X/2D_JH5%`#FlF3<ySotIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/tick_normal.png000066400000000000000000000006021352002233700244140ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?Y @ III$((h%- c!Ujjj1M̜ZZZ@L 5Ŭ|||@6]nnngAҐ ** T*% kR3}d޽ @S_...EPC‶=߿o۶﯁9(> HA?:rKK4K [ 0q $`)KU5|-B>IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/tick_transparent.png000066400000000000000000000002031352002233700254620ustar00rootroot00000000000000PNG  IHDRH-bKGD pHYs  tIME : ~IDAT(c```8IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/transparent_button_left_hover.png000066400000000000000000000022731352002233700302710ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp S.IDATxtR=k@Y AC4)H*]?RZٜ Ȯnf;d1ޛ7(}"K"8 맾wM_M$0  An.IDATxtQNPwI\Il016*K+> K6  +,$' \.gǺA "a<CUUOxu]-n_ApEʲm۾:/(PuGb0nL39XZn7Ԡ|6(}9$ہp8 3,,X.`i]yC糭6$V+q(|t8DQ8X@m4n, 5Oi(\".I`81/gjIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/transparent_button_left_press.png000066400000000000000000000021471352002233700303020ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp rzIDATxڔ0Eyd6 ,NnN?އ5D\GPZkhЂ SY$IVXBl+<2 & vzlrIDATxT Ejq.`ݠk Q r<`IDATxDN C! 4<)PjYMS@h()xlt|VC7us眸=fJߒsyR Zkm (D)ewv1FaZ?1^%`O<ԻIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/transparent_button_middle_press.png000066400000000000000000000017021352002233700306020ustar00rootroot00000000000000PNG  IHDRMtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp ^5IDATxbd``Hbgg #{E/Cy"+c903$ IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/transparent_button_right_hover.png000066400000000000000000000023111352002233700304450ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp w: N 8IDATxlQj@]TH Ez+-=ijޚ?{o{E^EVf -d7μ78B xP_VO("a^;dfFܶ '!s&MѰ4 8,ˤ@LBDZ|Qa)N< qhmۊeYB:$ʲ2:y!&4MA?n';.(TPoq)OwYP@^6A'xgb-.0 g.Di>cZU"E|R_IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/transparent_button_right_press.png000066400000000000000000000022111352002233700304550ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<#iTXtXML:com.adobe.xmp GIDATxlR;n0[ [܁" X -RPHyZ"?i@~yc0og47u9,'/pyUUYk?a ۶qQ8?뺪}YdCC+(]GS}VQQE$ `BU`T v4M@H)]4;20UQVP(˒u-i銳m%ܶ<Ϗ ^(ށW~pOxQIENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/up_hover.png000066400000000000000000000011551352002233700237450ustar00rootroot00000000000000PNG  IHDRĴl;sRGB'IDAT8!Q%!x" J@(1 7#( Ua{UˮktsK$p8~`fxtIr9;Lb- ֶ-f3uݏh4^(RtڞNt:p[xo760f45L-S |NfHZ,|~ E L(VkMsi&1)?^11'G!K3lJc<"< IfIV>z=q*uPiO*6uT*<5 ᒫk -$m4TVi𦈇!w݀՟N'e`ZFPe28u;K*@EFXkCkȳ:K's!C$q0cv CֳL ֹ|*Yh%H'p8  J_qic"N\y@fjz9bCCЍؑ'-d:_Ǵ߶W! 5)|ױ8 }ec-A]UlŁG]._~mݙ|>#ra\Tӕ:!,4GE18qd,Z (R`^b7 hw}{8pq. M2ms9 ;oeyxlLp!bHWDz/Mɹ< H #J«F/&TK#5*wr=<ާReC 9v }4C 29$稀h4z|(Xl\b2_$Uj6ǣ tGU'G3斿cR"4˲$ CnѻOW!lV:ŤMӬj 1> Al i^M|c}Dz=kC:Wz}֙6^]Lo}04IENDB`dtkwidget-2.1.1/src/widgets/themes/dark/images/window/000077500000000000000000000000001352002233700227155ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/dark/images/window/close_disabled.svg000066400000000000000000000005751352002233700264010ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/close_hover.svg000066400000000000000000000011401352002233700257420ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/close_normal.svg000066400000000000000000000005751352002233700261220ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/close_press.svg000066400000000000000000000011501352002233700257540ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/fullscreen_hover.svg000066400000000000000000000004641352002233700270070ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/fullscreen_normal.svg000066400000000000000000000005461352002233700271550ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/fullscreen_press.svg000066400000000000000000000006521352002233700270170ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/maximize_disabled.svg000066400000000000000000000004541352002233700271130ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/maximize_hover.svg000066400000000000000000000005471352002233700264720ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/maximize_normal.svg000066400000000000000000000004541352002233700266340ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/maximize_press.svg000066400000000000000000000006251352002233700265000ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/menu_disabled.svg000066400000000000000000000006471352002233700262400ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/menu_hover.svg000066400000000000000000000010161352002233700256030ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/menu_normal.svg000066400000000000000000000006471352002233700257610ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/menu_press.svg000066400000000000000000000012351352002233700256170ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/minimize_disabled.svg000066400000000000000000000003271352002233700271100ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/minimize_hover.svg000066400000000000000000000004561352002233700264670ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/minimize_normal.svg000066400000000000000000000003311352002233700266240ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/minimize_press.svg000066400000000000000000000006751352002233700265030ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/quit_fullscreen_hover.svg000066400000000000000000000005701352002233700300470ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/quit_fullscreen_normal.svg000066400000000000000000000004021352002233700302060ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/quit_fullscreen_press.svg000066400000000000000000000010141352002233700300520ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/unmaximize_disabled.svg000066400000000000000000000004741352002233700274600ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/unmaximize_hover.svg000066400000000000000000000006031352002233700270260ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/unmaximize_normal.svg000066400000000000000000000004741352002233700272010ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dark/images/window/unmaximize_press.svg000066400000000000000000000006611352002233700270430ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/dui_theme_dark.qrc000066400000000000000000000317001352002233700226740ustar00rootroot00000000000000 dark/images/window/close_disabled.svg dark/images/window/close_hover.svg dark/images/window/close_normal.svg dark/images/window/close_press.svg dark/images/window/maximize_disabled.svg dark/images/window/maximize_hover.svg dark/images/window/maximize_normal.svg dark/images/window/maximize_press.svg dark/images/window/menu_disabled.svg dark/images/window/menu_hover.svg dark/images/window/menu_normal.svg dark/images/window/menu_press.svg dark/images/window/minimize_disabled.svg dark/images/window/minimize_hover.svg dark/images/window/minimize_normal.svg dark/images/window/minimize_press.svg dark/images/window/unmaximize_disabled.svg dark/images/window/unmaximize_hover.svg dark/images/window/unmaximize_normal.svg dark/images/window/unmaximize_press.svg dark/Dtk--Widget--DWindowRestoreButton.theme dark/Dtk--Widget--DWindowOptionButton.theme dark/Dtk--Widget--DWindowMinButton.theme dark/Dtk--Widget--DWindowMaxButton.theme dark/Dtk--Widget--DWindowCloseButton.theme dark/Dtk--Widget--DToast.theme dark/Dtk--Widget--DTitlebar.theme dark/Dtk--Widget--DTextEdit.theme dark/Dtk--Widget--DTextButton.theme dark/Dtk--Widget--DSwitchButton.theme dark/Dtk--Widget--DStackWidget.theme dark/Dtk--Widget--DSpinBox.theme dark/Dtk--Widget--DSlider.theme dark/Dtk--Widget--DShortcutEdit.theme dark/Dtk--Widget--DSettingsDialog.theme dark/Dtk--Widget--DSeparatorVertical.theme dark/Dtk--Widget--DSeparatorHorizontal.theme dark/Dtk--Widget--DSegmentedControl.theme dark/Dtk--Widget--DSearchEdit.theme dark/Dtk--Widget--DScrollBar.theme dark/Dtk--Widget--DScrollArea.theme dark/Dtk--Widget--DPasswordEdit.theme dark/Dtk--Widget--DOptionList.theme dark/Dtk--Widget--DOption.theme dark/Dtk--Widget--DLoadingIndicator.theme dark/Dtk--Widget--DListView.theme dark/Dtk--Widget--DLinkButton.theme dark/Dtk--Widget--DLineEdit.theme dark/Dtk--Widget--DLabel.theme dark/Dtk--Widget--DIpv4LineEdit.theme dark/Dtk--Widget--DImageButton.theme dark/Dtk--Widget--DHeaderLine.theme dark/Dtk--Widget--DFileChooserEdit.theme dark/Dtk--Widget--DDialog.theme dark/Dtk--Widget--DCircleProgress.theme dark/Dtk--Widget--DButtonList.theme dark/Dtk--Widget--DBoxWidget.theme dark/Dtk--Widget--DBaseLine.theme dark/Dtk--Widget--DBaseExpand.theme dark/Dtk--Widget--DBaseButton.theme dark/Dtk--Widget--DArrowButton.theme dark/Dtk--Widget--DAbstractDialog.theme dark/Dtk--Widget--DAboutDialog.theme dark/Dtk--Widget--DPasswdEditAnimated.theme dark/images/add_hover.png dark/images/add_normal.png dark/images/add_press.png dark/images/arrow_down_hover.png dark/images/arrow_down_normal.png dark/images/arrow_down_press.png dark/images/arrow_down_white.png dark/images/arrow_down_hover.svg dark/images/arrow_down_normal.svg dark/images/arrow_down_press.svg dark/images/arrow_down_insensitive.svg dark/images/arrow_left_hover.png dark/images/arrow_left_normal.png dark/images/arrow_left_press.png dark/images/arrow_left_white.png dark/images/arrow_right_hover.png dark/images/arrow_right_normal.png dark/images/arrow_right_press.png dark/images/arrow_right_white.png dark/images/arrow_up_hover.png dark/images/arrow_up_normal.png dark/images/arrow_up_press.png dark/images/arrow_up_white.png dark/images/arrow_up_hover.svg dark/images/arrow_up_normal.svg dark/images/arrow_up_press.svg dark/images/arrow_up_insensitive.svg dark/images/button_center_normal.png dark/images/button_center_press.png dark/images/button_left_normal.png dark/images/button_left_press.png dark/images/button_right_normal.png dark/images/button_right_press.png dark/images/checkbox_checked_hover.png dark/images/checkbox_checked_insensitive.png dark/images/checkbox_checked.png dark/images/checkbox_unchecked_hover.png dark/images/checkbox_unchecked_insensitive.png dark/images/checkbox_unchecked.png dark/images/input_clear_hover.svg dark/images/input_clear_normal.svg dark/images/input_clear_press.svg dark/images/clear_white.png dark/images/delete_hover.png dark/images/delete_multi_hover.png dark/images/delete_multi_normal.png dark/images/delete_multi_press.png dark/images/delete_normal.png dark/images/delete_press.png dark/images/file_24.png dark/images/folder_24.png dark/images/folder_up_24.png dark/images/icon_view_hover.png dark/images/icon_view_normal.png dark/images/icon_view_press.png dark/images/list_view_hover.png dark/images/list_view_normal.png dark/images/list_view_press.png dark/images/loadfile_hover.png dark/images/loadfile_normal.png dark/images/loadfile_press.png dark/images/multiselect_active_normal.png dark/images/multiselect_inactive_hover.png dark/images/multiselect_inactive_normal.png dark/images/hide_password_hover.svg dark/images/hide_password_normal.svg dark/images/hide_password_press.svg dark/images/show_password_hover.svg dark/images/show_password_normal.svg dark/images/show_password_press.svg dark/images/radio_selected_hover.png dark/images/radio_selected_insensitive.png dark/images/radio_selected.png dark/images/radio_unselected_hover.png dark/images/radio_unselected_insensitive.png dark/images/radio_unselected.png dark/images/restore_hover.png dark/images/restore_normal.png dark/images/restore_press.png dark/images/search_hover.png dark/images/search_normal.png dark/images/search_press.png dark/images/slider_balance.png dark/images/slider_handle.svg dark/images/spinner_decrease_hover.png dark/images/spinner_decrease_normal.png dark/images/spinner_decrease_press.png dark/images/spinner_decrease.png dark/images/spinner_increase_hover.png dark/images/spinner_increase_normal.png dark/images/spinner_increase_press.png dark/images/spinner_increase.png dark/images/tick_hover.png dark/images/tick_insensitive.png dark/images/tick_normal.png dark/images/transparent_button_left_hover.png dark/images/transparent_button_left_normal.png dark/images/transparent_button_left_press.png dark/images/transparent_button_middle_hover.png dark/images/transparent_button_middle_normal.png dark/images/transparent_button_middle_press.png dark/images/transparent_button_right_hover.png dark/images/transparent_button_right_normal.png dark/images/transparent_button_right_press.png dark/images/up_hover.png dark/images/up_normal.png dark/images/up_press.png dark/images/slider_bg.png dark/images/slider_bg_active.png dark/images/dark_button_press_bg.png dark/images/dark_button_normal_bg.png dark/images/dark_button_hover_bg.png dark/images/dock_preview_close_hover.png dark/images/dock_preview_close_normal.png dark/images/dock_preview_close_press.png dark/dialogs/images/check_focus.png dark/dialogs/images/dark_check_checked_hover.png dark/dialogs/images/dark_check_checked.png dark/dialogs/images/dark_check.png dark/dialogs/images/dark_close_small_hover.png dark/dialogs/images/dark_close_small_normal.png dark/dialogs/images/dark_close_small_press.png dark/dialogs/images/dark_minimise_small_hover.png dark/dialogs/images/dark_minimise_small_normal.png dark/dialogs/images/dark_minimise_small_press.png dark/dialogs/images/user-trash-full.png dark/images/combobox_up_arrow.png dark/images/combobox_down_arrow.png dark/images/tick_transparent.png dark/images/search.svg dark/images/window/close_disabled.svg dark/images/window/close_hover.svg dark/images/window/close_normal.svg dark/images/window/close_press.svg dark/images/window/maximize_disabled.svg dark/images/window/maximize_hover.svg dark/images/window/maximize_normal.svg dark/images/window/maximize_press.svg dark/images/window/menu_disabled.svg dark/images/window/menu_hover.svg dark/images/window/menu_normal.svg dark/images/window/menu_press.svg dark/images/window/minimize_disabled.svg dark/images/window/minimize_hover.svg dark/images/window/minimize_normal.svg dark/images/window/minimize_press.svg dark/images/window/unmaximize_disabled.svg dark/images/window/unmaximize_hover.svg dark/images/window/unmaximize_normal.svg dark/images/window/unmaximize_press.svg dark/images/window/quit_fullscreen_hover.svg dark/images/window/quit_fullscreen_normal.svg dark/images/window/quit_fullscreen_press.svg dark/images/capslock-clicked.svg dark/images/capslock-hover.svg dark/images/capslock-normal.svg dark/images/keyboard-clicked.svg dark/images/keyboard-hover.svg dark/images/keyboard-normal.svg dark/images/pw-visible-clicked.svg dark/images/pw-visible-hover.svg dark/images/pw-visible-normal.svg dark/images/submit-clicked.svg dark/images/submit-hover.svg dark/images/submit-normal.svg dtkwidget-2.1.1/src/widgets/themes/dui_theme_light.qrc000066400000000000000000000225351352002233700230700ustar00rootroot00000000000000 light/Dtk--Widget--DWindowRestoreButton.theme light/Dtk--Widget--DWindowOptionButton.theme light/Dtk--Widget--DWindowMinButton.theme light/Dtk--Widget--DWindowMaxButton.theme light/Dtk--Widget--DWindowCloseButton.theme light/Dtk--Widget--DWindow.theme light/Dtk--Widget--DToast.theme light/Dtk--Widget--DTitlebar.theme light/Dtk--Widget--DTextEdit.theme light/Dtk--Widget--DTextButton.theme light/Dtk--Widget--DSwitchButton.theme light/Dtk--Widget--DStackWidget.theme light/Dtk--Widget--DSpinBox.theme light/Dtk--Widget--DSlider.theme light/Dtk--Widget--DSettingsDialog.theme light/Dtk--Widget--DSeparatorVertical.theme light/Dtk--Widget--DSeparatorHorizontal.theme light/Dtk--Widget--DSegmentedControl.theme light/Dtk--Widget--DSearchEdit.theme light/Dtk--Widget--DScrollBar.theme light/Dtk--Widget--DScrollArea.theme light/Dtk--Widget--DPasswordEdit.theme light/Dtk--Widget--DLoadingIndicator.theme light/Dtk--Widget--DLinkButton.theme light/Dtk--Widget--DLineEdit.theme light/Dtk--Widget--DLabel.theme light/Dtk--Widget--DImageButton.theme light/Dtk--Widget--DHeaderLine.theme light/Dtk--Widget--DFileChooserEdit.theme light/Dtk--Widget--DDialog.theme light/Dtk--Widget--DButtonList.theme light/Dtk--Widget--DBoxWidget.theme light/Dtk--Widget--DBaseLine.theme light/Dtk--Widget--DBaseExpand.theme light/Dtk--Widget--DBaseButton.theme light/Dtk--Widget--DArrowButton.theme light/Dtk--Widget--DAbstractDialog.theme light/Dtk--Widget--DAboutDialog.theme light/Dtk--Widget--DPasswdEditAnimated.theme light/images/arrow_down_hover.png light/images/arrow_down_normal.png light/images/arrow_down_press.png light/images/arrow_down_hover.svg light/images/arrow_down_normal.svg light/images/arrow_down_press.svg light/images/arrow_down_insensitive.svg light/images/arrow_left_hover.png light/images/arrow_left_normal.png light/images/arrow_left_press.png light/images/arrow_right_hover.png light/images/arrow_right_normal.png light/images/arrow_right_press.png light/images/arrow_up_hover.png light/images/arrow_up_normal.png light/images/arrow_up_press.png light/images/arrow_up_hover.svg light/images/arrow_up_normal.svg light/images/arrow_up_press.svg light/images/arrow_up_insensitive.svg light/images/checkbox_checked_hover.png light/images/checkbox_checked_insensitive.png light/images/checkbox_checked.png light/images/checkbox_unchecked_hover.png light/images/checkbox_unchecked_insensitive.png light/images/checkbox_unchecked.png light/images/input_clear_hover.svg light/images/input_clear_normal.svg light/images/input_clear_press.svg light/images/delete_multi_hover.png light/images/delete_multi_normal.png light/images/delete_multi_press.png light/images/multiselect_active_normal.png light/images/multiselect_inactive_hover.png light/images/multiselect_inactive_normal.png light/images/hide_password_hover.svg light/images/hide_password_normal.svg light/images/hide_password_press.svg light/images/show_password_hover.svg light/images/show_password_normal.svg light/images/show_password_press.svg light/images/radio_selected_hover.png light/images/radio_selected_insensitive.png light/images/radio_selected.png light/images/radio_unselected_hover.png light/images/radio_unselected_insensitive.png light/images/radio_unselected.png light/images/restore_hover.png light/images/restore_normal.png light/images/restore_press.png light/images/search_hover.png light/images/search_normal.png light/images/search_press.png light/images/spinner_decrease_hover.png light/images/spinner_decrease_normal.png light/images/spinner_decrease_press.png light/images/spinner_increase_hover.png light/images/spinner_increase_normal.png light/images/spinner_increase_press.png light/images/tick_hover.png light/images/tick_insensitive.png light/images/tick_normal.png light/images/slider_bg_active.png light/images/slider_bg.png light/images/slider_round.png light/images/slider_sharp.png light/images/button_press_bg.png light/images/button_normal_bg.png light/images/button_hover_bg.png light/dialogs/images/light_minimise_small_hover.png light/dialogs/images/light_minimise_small_press.png light/dialogs/images/light_minimise_small_normal.png light/dialogs/images/light_close_small_normal.png light/dialogs/images/light_check.png light/dialogs/images/check_focus.png light/dialogs/images/light_close_small_hover.png light/dialogs/images/light_close_small_press.png light/dialogs/images/light_check_checked.png light/dialogs/images/light_check_checked_hover.png light/dialogs/images/user-trash-full.png light/images/combobox_arrow.png light/images/combobox_arrow_active.png light/images/search.svg light/images/water_back.svg light/images/water_front.svg light/images/window/close_disabled.svg light/images/window/close_hover.svg light/images/window/close_normal.svg light/images/window/close_press.svg light/images/window/maximize_disabled.svg light/images/window/maximize_hover.svg light/images/window/maximize_normal.svg light/images/window/maximize_press.svg light/images/window/menu_disabled.svg light/images/window/menu_hover.svg light/images/window/menu_normal.svg light/images/window/menu_press.svg light/images/window/minimize_hover.svg light/images/window/minimize_normal.svg light/images/window/minimize_press.svg light/images/window/minimize_disabled.svg light/images/window/unmaximize_disabled.svg light/images/window/unmaximize_hover.svg light/images/window/unmaximize_normal.svg light/images/window/unmaximize_press.svg light/images/loadfile_hover.svg light/images/loadfile_normal.svg light/images/loadfile_press.svg light/images/window/quit_fullscreen_hover.svg light/images/window/quit_fullscreen_normal.svg light/images/window/quit_fullscreen_press.svg light/images/capslock-normal.svg light/images/capslock-hover.svg light/images/capslock-clicked.svg light/images/submit-clicked.svg light/images/submit-hover.svg light/images/submit-normal.svg light/images/keyboard-clicked.svg light/images/keyboard-hover.svg light/images/keyboard-normal.svg light/images/pw-visible-clicked.svg light/images/pw-visible-hover.svg light/images/pw-visible-normal.svg dtkwidget-2.1.1/src/widgets/themes/light/000077500000000000000000000000001352002233700203275ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DAboutDialog.theme000066400000000000000000000007251352002233700257500ustar00rootroot00000000000000QLabel#ProductNameLabel { font-size:18px; } QLabel#VersionLabel { font-size:12px; color: #666666; } QLabel#WebsiteLabel { font-size:13px; color: #004EE5; } QLabel#AcknowledgementLabel { font-size:13px; color: #004EE5; } QLabel#DescriptionLabel { font-size:11px; font-weight: normal; color:#1A1A1A; border: none; } QLabel#LicenseLabel { font-size:11px; font-weight: normal; color:#1A1A1A; border: none; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DAbstractDialog.theme000066400000000000000000000002431352002233700264340ustar00rootroot00000000000000Dtk--Widget--DAbstractDialog { qproperty-backgroundColor: white; qproperty-borderColor: rgba(0, 0, 0, 0.2); border-width: 1; border-radius: 4px; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DArrowButton.theme000066400000000000000000000031761352002233700260470ustar00rootroot00000000000000Dtk--Widget--ArrowButtonIcon { background-repeat: no-repeat; background-position: center; } QLabel#ArrowButtonIconNormal[arrowButtonDirection="0"] { background-image: url(:/images/light/images/arrow_up_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="1"] { background-image: url(:/images/light/images/arrow_down_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="2"] { background-image: url(:/images/light/images/arrow_left_normal.png); } QLabel#ArrowButtonIconNormal[arrowButtonDirection="3"] { background-image: url(:/images/light/images/arrow_right_normal.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="0"] { background-image: url(:/images/light/images/arrow_up_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="1"] { background-image: url(:/images/light/images/arrow_down_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="2"] { background-image: url(:/images/light/images/arrow_left_hover.png); } QLabel#ArrowButtonIconHover[arrowButtonDirection="3"] { background-image: url(:/images/light/images/arrow_right_hover.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="0"] { background-image: url(:/images/light/images/arrow_up_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="1"] { background-image: url(:/images/light/images/arrow_down_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="2"] { background-image: url(:/images/light/images/arrow_left_press.png); } QLabel#ArrowButtonIconPress[arrowButtonDirection="3"] { background-image: url(:/images/light/images/arrow_right_press.png); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DBaseButton.theme000066400000000000000000000017411352002233700256230ustar00rootroot00000000000000Dtk--Widget--DBaseButton { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #3BC1FF, stop: 1.0 #079DFF); border-width: 1px; border-color: rgba(29, 130, 255, 0.30); border-style: solid; border-radius: 4px; font-size: 12px; color: white; } Dtk--Widget--DBaseButton:hover{ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #6EC9FF, stop: 1.0 #2DA9F6); } Dtk--Widget--DBaseButton:pressed{ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #0B8CFF, stop: 1.0 #0AA1FF); } Dtk--Widget--DBaseButton:disabled { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgba(59,193,255,0.50), stop: 1.0 rgba(7,157,255,0.50)); } Dtk--Widget--DBaseButton:flat { border: none; /* no border for a flat push button */ } QFrame#ButtonInsideFrame { background-color: transparent; border-top-width: 1px; border-style: solid; border-radius: 3px; border-top-color: rgba(255, 255, 255, 0.1); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DBaseExpand.theme000066400000000000000000000000751352002233700255660ustar00rootroot00000000000000Dtk--Widget--ContentLoader { background-color: #ffffff } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DBaseLine.theme000066400000000000000000000001531352002233700252330ustar00rootroot00000000000000/*Dtk--Widget--DBaseLine { background-color: #fafafa }*/ /*use default background color(transparent)*/ dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DBoxWidget.theme000066400000000000000000000000701352002233700254430ustar00rootroot00000000000000Dtk--Widget--DBoxWidget{ background: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DButtonList.theme000066400000000000000000000011421352002233700256570ustar00rootroot00000000000000Dtk--Widget--DButtonList { background-color: #ffffff; border: none; } Dtk--Widget--DButtonList QPushButton:hover{ color: black; } Dtk--Widget--DButtonList QFrame#BorderFrame{ background-color: transparent; } Dtk--Widget--DButtonList QFrame#BorderFrame[state="checked"]{ background-color: transparent; } Dtk--Widget--DButtonList QPushButton{ background-color: transparent; color: #b4b4b4; border: none; border-radius:3px; text-align: left center; padding-left: 40px; } Dtk--Widget--DButtonList QPushButton:checked{ background-color: white; color: #2CA7F8; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DDialog.theme000066400000000000000000000042231352002233700247520ustar00rootroot00000000000000Dtk--Widget--DDialog{ qproperty-backgroundColor: white; qproperty-borderColor: rgba(0, 0, 0, 0.2); } QFrame#ButtonFrame{ border:1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; } #CloseButton{ qproperty-normalPic: url(:/images/dialog_close_round_normal.png); qproperty-hoverPic: url(:/images/dialog_close_round_hover.png); qproperty-pressPic: url(:/images/dialog_close_round_press.png); } QPushButton#NormalButton{ background-color: transparent; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 2px; color: white; text-align: center; } QPushButton#NormalButton:hover{ background-color: transparent; color: rgba(0, 0, 0, 0.5); } QPushButton#NormalButton:pressed{ background-color: transparent; color: #01bdff; } QPushButton#ActionButton{ background-color: transparent; border: 1px solid rgba(0, 0, 0, 0.1); border-right: none; border-left: none; border-bottom: none; font-size: 13px; color: #303030; text-align: center; outline: none; } QPushButton#ActionButton[buttonType="1"] {/*warning*/ color: #ff5a5a; font-weight: 500; } QPushButton#ActionButton[buttonType="2"] {/*recommend*/ color: #0087ff; font-weight: 500; } QPushButton#ActionButton:hover{ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #8ccfff, stop:1 #4bb8ff); color: #ffffff; } QPushButton#ActionButton:pressed{ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #0b8cff, stop:1 #0aa1ff); color: #ffffff; } QPushButton#ConflictButton{ background-color: transparent; border:none; color: white; text-align: center; } QPushButton#ConflictButton:checked{ background-color: #ff9327; } QLabel#VLine{ background-color:rgba(0, 0, 0, 0.1); } QLabel#TitleLabel{ padding-top: 2px; padding-bottom: 2px; color: #000000; } QLabel#MessageLabel{ padding-top: 2px; padding-bottom: 2px; color: #444444; } QLabel#TaskTitleLabel{ padding-top: 2px; padding-bottom: 2px; font-size: 10px; color: #b4b4b4; } QListWidget{ background-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DFileChooserEdit.theme000066400000000000000000000003711352002233700265630ustar00rootroot00000000000000Dtk--Widget--DFileChooserEdit { qproperty-normalIcon:url(:/images/light/images/loadfile_normal.svg); qproperty-hoverIcon:url(:/images/light/images/loadfile_hover.svg); qproperty-pressIcon:url(:/images/light/images/loadfile_press.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DHeaderLine.theme000066400000000000000000000001031352002233700255440ustar00rootroot00000000000000QLabel#DHeaderLineTitle { color: #474747; font-size: 12px }dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DImageButton.theme000066400000000000000000000001261352002233700257670ustar00rootroot00000000000000Dtk--Widget--DImageButton:disabled { border: none; background: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DLabel.theme000066400000000000000000000000751352002233700245730ustar00rootroot00000000000000Dtk--Widget--DLabel { color: #474747; font-size: 12px; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DLineEdit.theme000066400000000000000000000017231352002233700252520ustar00rootroot00000000000000Dtk--Widget--DLineEdit { color: black; border-radius: 3; margin-left: 3px; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } Dtk--Widget--DLineEdit[alert="true"] QFrame#LineEditInsideFrame{ border-color: #FF8F00; } QFrame#LineEditInsideFrame {/*outside frame*/ background-color: rgba(255, 255, 255, 20%); border: 1px solid; border-radius: 3; border-color: rgba(0, 0, 0, 20%); } Dtk--Widget--DLineEdit #IconButton { border: 0px solid; border-left: 1px solid rgba(0, 0, 0, 20%); margin: 1px 0px 2px 0px; } Dtk--Widget--DLineEdit[alert="true"] #IconButton{ border-color: #FF8F00; } Dtk--Widget--DLineEdit #ClearButton { qproperty-normalPic: ":/images/light/images/input_clear_normal.svg"; qproperty-hoverPic: ":/images/light/images/input_clear_hover.svg"; qproperty-pressPic: "/images/light/images/input_clear_press.svg"; margin-right: 4px; } #AlertTooltip QLabel { color: #FF8F00; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DLinkButton.theme000066400000000000000000000003231352002233700256410ustar00rootroot00000000000000Dtk--Widget--DLinkButton { background-color:transparent; border:none; color:#0082fa; } Dtk--Widget--DLinkButton:hover { color:#01BDFF; } Dtk--Widget--DLinkButton:pressed { color:#0082fa; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DLoadingIndicator.theme000066400000000000000000000000641352002233700267640ustar00rootroot00000000000000Dtk--Widget--DLoadingIndicator { border: 0px; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DPasswdEditAnimated.theme000066400000000000000000000024701352002233700272670ustar00rootroot00000000000000Dtk--Widget--DPasswdEditAnimated { border-width: 1px; border-style: solid; border-radius: 3px; border-color: #E6E6E6; background-color: white; } Dtk--Widget--DPasswdEditAnimated[editFocus="true"] { border-color: #2CA7F8; } Dtk--Widget--DPasswdEditAnimated[alert="true"] { border-color: #FF8F00; } Dtk--Widget--DPasswdEditAnimated #KeyboardButton { qproperty-normalPic: url(:/images/light/images/keyboard-normal.svg); qproperty-hoverPic: url(:/images/light/images/keyboard-hover.svg); qproperty-pressPic: url(:/images/light/images/keyboard-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #PasswdEdit { } Dtk--Widget--DPasswdEditAnimated #Capslock { } Dtk--Widget--DPasswdEditAnimated #EyeButton { qproperty-normalPic: url(:/images/light/images/pw-visible-normal.svg); qproperty-hoverPic: url(:/images/light/images/pw-visible-hover.svg); qproperty-pressPic: url(:/images/light/images/pw-visible-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #SubmitButton { qproperty-normalPic: url(:/images/light/images/submit-normal.svg); qproperty-hoverPic: url(:/images/light/images/submit-hover.svg); qproperty-pressPic: url(:/images/light/images/submit-clicked.svg); } Dtk--Widget--DPasswdEditAnimated #InvalidTip { qproperty-backgroundColor: rgba(255,255,255,.3); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DPasswordEdit.theme000066400000000000000000000023621352002233700261650ustar00rootroot00000000000000Dtk--Widget--DPasswordEdit { color: black; } Dtk--Widget--DPasswordEdit[isEchoMode="false"] #IconButton { border-radius: 2px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; qproperty-normalPic:url(:/images/light/images/show_password_normal.svg); qproperty-hoverPic:url(:/images/light/images/show_password_hover.svg); qproperty-pressPic:url(:/images/light/images/show_password_press.svg); } Dtk--Widget--DPasswordEdit[isEchoMode="true"] Dtk--Widget--DImageButton { border-radius: 2px; border-top-left-radius: 0px; border-bottom-left-radius: 0px; qproperty-normalPic:url(:/images/light/images/hide_password_normal.svg); qproperty-hoverPic:url(:/images/light/images/hide_password_hover.svg); qproperty-pressPic:url(:/images/light/images/hide_password_press.svg); } Dtk--Widget--DPasswordEdit #IconButton[state="hover"] { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #8ccfff, stop: 1.0 #4bb8ff); } Dtk--Widget--DPasswordEdit #IconButton[state="press"] { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #0b8cff, stop: 1.0 #0aa1ff); } Dtk--Widget--DPasswordEdit[alert="true"] #IconButton{ border-color: #FF8F00; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DScrollArea.theme000066400000000000000000000001661352002233700256040ustar00rootroot00000000000000Dtk--Widget--DScrollArea{ border: none; } Dtk--Widget--DScrollArea::corner{ background-color: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DScrollBar.theme000066400000000000000000000014641352002233700254420ustar00rootroot00000000000000Dtk--Widget--DScrollBar::add-line,Dtk--Widget--DScrollBar::sub-line,Dtk--Widget--DScrollBar::add-page,Dtk--Widget--DScrollBar::sub-page{ background-color: transparent; } Dtk--Widget--DScrollBar{ max-width: 10; margin-right: 1px; background-color: transparent; } Dtk--Widget--DScrollBar::handle{ background-color: rgba(16,16,16,0.5); border-radius: 2px; margin: 4px 2px 4px 2px; } Dtk--Widget--DScrollBar::handle:vertical{ min-height: 20px; width: 8px; } Dtk--Widget--DScrollBar::handle:horizontal{ min-width: 20px; height: 8px; } Dtk--Widget--DScrollBar::handle:hover{ background-color: rgba(16,16,16,0.7); } Dtk--Widget--DScrollBar::add-line { border: none; background: none; } Dtk--Widget--DScrollBar::sub-line { border: none; background: none; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSearchEdit.theme000066400000000000000000000016541352002233700255730ustar00rootroot00000000000000Dtk--Widget--DSearchEdit { border-radius: 4px; } Dtk--Widget--DSearchEdit #SearchIcon { background-color:transparent; margin: 2 -1 2 4 px; border-image:url(:/images/light/images/search.svg); } Dtk--Widget--DSearchEdit #ClearIcon { background-color:transparent; qproperty-normalPic:url(:/images/light/images/input_clear_normal.svg); qproperty-hoverPic:url(:/images/light/images/input_clear_hover.svg); qproperty-pressPic:url(:/images/light/images/input_clear_press.svg); } Dtk--Widget--DSearchEdit #Edit { background-color:transparent; border-radius:0px; color:#303030; padding-right:15px; padding-bottom: 3px; } Dtk--Widget--DSearchEdit QFrame#DEditInsideFrame { background-color: white; border: 1px solid; border-radius: 4px; border-color: rgba(0, 0, 0, 0.08); } Dtk--Widget--DSearchEdit #PlaceHolder { color:#303030; margin:0 0 0 3px; font-size:12px; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSegmentedControl.theme000066400000000000000000000010111352002233700270170ustar00rootroot00000000000000Dtk--Widget--DSegmentedControl Dtk--Widget--DSegmentedHighlight#Highlight{ background-color: #2ca7f8; border: none; } Dtk--Widget--DSegmentedControl QToolButton{ color: black; background: rgba(0, 0, 0, 38); border: none; padding-bottom: 2px; } Dtk--Widget--DSegmentedControl QToolButton:hover{ background: rgba(0, 0, 0, 77); } Dtk--Widget--DSegmentedControl QToolButton:pressed{ background: rgba(0, 0, 0, 26); } Dtk--Widget--DSegmentedControl QToolButton:disabled{ color: white; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSeparatorHorizontal.theme000066400000000000000000000003131352002233700275610ustar00rootroot00000000000000QWidget#DSeparatorTopRec { background-color: #19000000; min-height: 1; max-height: 1; } QWidget#DSeparatorBottomRec { background-color: #19000000; min-height: 0; max-height: 0; }dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSeparatorVertical.theme000066400000000000000000000003071352002233700272040ustar00rootroot00000000000000QWidget#DSeparatorLeftRec { background-color: #19000000; min-width: 1; max-width: 1; } QWidget#DSeparatorRightRec { background-color: #19000000; min-width: 0; max-width: 0; }dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSettingsDialog.theme000066400000000000000000000025131352002233700264730ustar00rootroot00000000000000#DSettingsDialog{ qproperty-backgroundColor: white; qproperty-borderColor: rgba(0, 0, 0, 0.2); } #Navigation{ border: none; border-right: 1px solid rgba(0,0,0,0.1); } #NavigationBar{ border: none; } #ButtonGroupSingle { border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 4.0px; } #ButtonGroupBegin { border: 1px solid rgba(0, 0, 0, 0.08); border-top-left-radius: 4.0px; border-bottom-left-radius: 4.0px; } #ButtonGroupBegin:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #ButtonGroupMiddle { border-top: 1px solid rgba(0, 0, 0, 0.08); border-bottom: 1px solid rgba(0, 0, 0, 0.08); border-right: 1px solid rgba(0, 0, 0, 0.08); } #ButtonGroupMiddle:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #ButtonGroupEnd { border: 1px solid rgba(0, 0, 0, 0.08); border-left: none; border-top-right-radius: 4.0px; border-bottom-right-radius: 4.0px; } #ButtonGroupEnd:checked { background-color: #2ca7f8; border: solid 1px rgba(0, 90, 224, 0.22); } #DSettingsDialogClose{ qproperty-normalPic: url(:/images/light/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/close_hover.svg); qproperty-pressPic: url(:/images/light/images/window/close_press.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSlider.theme000066400000000000000000000031161352002233700247750ustar00rootroot00000000000000/*************************************For Round Handle***************************************/ Dtk--Widget--DSlider::groove[handleType="1"] { margin-left: 11px; margin-right: 11px; border-width: 0px 2px 0px 2px; height: 2px; } Dtk--Widget--DSlider::handle[handleType="1"] { background: url(:/images/light/images/slider_round.png); repeat: no-repeat; width: 22px; height: 22px; margin-top: -10px; margin-bottom: -11px; margin-left: -11px; margin-right: -11px; } Dtk--Widget--DSlider::add-page:horizontal[handleType="1"] { border-width: 0px 2px 1px 2px; border-image: url(:/images/light/images/slider_bg.png) 0 2 1 2 stretch; margin-right: 11px; height: 2px; } Dtk--Widget--DSlider::sub-page[handleType="1"] { border-width: 0px 2px 0px 2px; border-image: url(:/images/light/images/slider_bg_active.png) 0 2 0 2 stretch; margin-left: 11px; margin-bottom: -0.5px;/*Expand outside the groove */ margin-top: -0.5px;/*Expand outside the groove */ height: 2px; } /*************************************For Sharp Handle***************************************/ Dtk--Widget--DSlider::groove[handleType="0"] { margin-left: 11px; margin-right: 11px; border-width: 0px 2px 0px 2px; border-image: url(:/images/light/images/slider_bg.png) 0 2 0 2 stretch; height: 2px; } Dtk--Widget--DSlider::handle[handleType="0"] { background: url(:/images/light/images/slider_sharp.png); width: 20px; height: 22px; margin-top: -10px; margin-bottom: -10px; margin-left: -11px; margin-right: -11px; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSpinBox.theme000066400000000000000000000016461352002233700251430ustar00rootroot00000000000000QAbstractSpinBox { min-height: 22px; color: #fff; border-radius: 3; padding-right: 53px; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } QFrame#SpinBoxInsideFrame {/*outside frame*/ background-color: rgba(0, 0, 0, 50); border: 1px solid black; border-radius: 3; } #SpinBox_ImageButton { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #50333333, stop: 1.0 #50000000); border-left: 1px solid #AA111111; } QAbstractSpinBox[alert="true"] QFrame#SpinBoxInsideFrame{ border-color: #FF8F00; } QAbstractSpinBox::up-button { border: none; background: transparent; } QAbstractSpinBox::up-arrow { border: none; background: transparent; } QAbstractSpinBox::down-button { border: none; background: transparent; } QAbstractSpinBox::down-arrow { border: none; background: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DStackWidget.theme000066400000000000000000000000721352002233700257620ustar00rootroot00000000000000Dtk--Widget--DStackWidget{ background: transparent; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DSwitchButton.theme000066400000000000000000000000541352002233700262060ustar00rootroot00000000000000Dtk--Widget--DSwitchButton#DSwitchButton{ } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DTextButton.theme000066400000000000000000000010611352002233700256700ustar00rootroot00000000000000Dtk--Widget--DTextButton { padding:0 5px; min-width:60px; color:#333; outline:none; border-width:5px 5px 5px 5px; border-image:url(:/images/light/images/button_normal_bg.png) 5 5 5 5 stretch; background-color:transparent; } Dtk--Widget--DTextButton:hover { color:#111; border-image:url(:/images/light/images/button_hover_bg.png) 5 5 5 5 stretch; } Dtk--Widget--DTextButton:pressed { border-image:url(:/images/light/images/button_press_bg.png) 5 5 5 5 stretch; } Dtk--Widget--DTextButton:checked { color:#01BDFF; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DTextEdit.theme000066400000000000000000000006111352002233700253020ustar00rootroot00000000000000Dtk--Widget--DTextEdit { color: #fff; border-radius: 3; background-color: rgba(255, 255, 255, 26);/*use as outside border*/ } Dtk--Widget--DTextEdit[alert="true"] QFrame#TextEditInsideFrame{ border-color: #FF8F00; } QFrame#TextEditInsideFrame {/*outside frame*/ background-color: rgba(0, 0, 0, 50); border: 1px solid; border-radius: 3; border-color: black; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DTitlebar.theme000066400000000000000000000014031352002233700253160ustar00rootroot00000000000000Dtk--Widget--DTitlebar { background: qlineargradient(x1:1, y1:0, x2:1, y2:1, stop:0 #ffffff, stop:1 #f8f8f8); } Dtk--Widget--DTitlebar[transparent=true] { background: transparent; } Dtk--Widget--DWindowCloseButton { qproperty-normalPic: url(:/images/light/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/close_hover.svg); qproperty-pressPic: url(:/images/light/images/window/close_press.svg); } #DTitlebarDWindowQuitFullscreenButton { qproperty-normalPic: url(:/images/light/images/window/quit_fullscreen_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/quit_fullscreen_hover.svg); qproperty-pressPic: url(:/images/light/images/window/quit_fullscreen_press.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DToast.theme000066400000000000000000000001561352002233700246460ustar00rootroot00000000000000Dtk--Widget--DToast { border: 1px solid rgba(0,0,0,10%); border-radius: 4px; background: white; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindow.theme000066400000000000000000000004221352002233700250170ustar00rootroot00000000000000Dtk--Widget--DWindow { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #3BC1FF, stop: 1.0 #079DFF); border-width: 1px; border-color: rgba(29, 130, 255, 0.30); border-style: solid; border-radius: 3; font-size: 12px; color: white; } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindowCloseButton.theme000066400000000000000000000005301352002233700272010ustar00rootroot00000000000000Dtk--Widget--DWindowCloseButton { qproperty-normalPic: url(:/images/light/images/window/close_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/close_hover.svg); qproperty-pressPic: url(:/images/light/images/window/close_press.svg); qproperty-disabledPic: url(:/images/light/images/window/close_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindowMaxButton.theme000066400000000000000000000013621352002233700266650ustar00rootroot00000000000000Dtk--Widget--DWindowMaxButton[isMaximized=true] { qproperty-normalPic: url(:/images/light/images/window/unmaximize_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/unmaximize_hover.svg); qproperty-pressPic: url(:/images/light/images/window/unmaximize_press.svg); qproperty-disabledPic: url(:/images/light/images/window/unmaximize_disabled.svg); } Dtk--Widget--DWindowMaxButton[isMaximized=false] { qproperty-normalPic: url(:/images/light/images/window/maximize_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/maximize_hover.svg); qproperty-pressPic: url(:/images/light/images/window/maximize_press.svg); qproperty-disabledPic: url(:/images/light/images/window/maximize_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindowMinButton.theme000066400000000000000000000005421352002233700266620ustar00rootroot00000000000000Dtk--Widget--DWindowMinButton { qproperty-normalPic: url(:/images/light/images/window/minimize_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/minimize_hover.svg); qproperty-pressPic: url(:/images/light/images/window/minimize_press.svg); qproperty-disabledPic: url(:/images/light/images/window/minimize_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindowOptionButton.theme000066400000000000000000000005251352002233700274100ustar00rootroot00000000000000Dtk--Widget--DWindowOptionButton { qproperty-normalPic: url(:/images/light/images/window/menu_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/menu_hover.svg); qproperty-pressPic: url(:/images/light/images/window/menu_press.svg); qproperty-disabledPic: url(:/images/light/images/window/menu_disabled.svg); } dtkwidget-2.1.1/src/widgets/themes/light/Dtk--Widget--DWindowRestoreButton.theme000066400000000000000000000004301352002233700275560ustar00rootroot00000000000000Dtk--Widget--DWindowRestoreButton { qproperty-normalPic: url(:/images/light/images/window/unmaximize_normal.svg); qproperty-hoverPic: url(:/images/light/images/window/unmaximize_hover.svg); qproperty-pressPic: url(:/images/light/images/window/unmaximize_press.svg); } dtkwidget-2.1.1/src/widgets/themes/light/dialogs/000077500000000000000000000000001352002233700217515ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/000077500000000000000000000000001352002233700232165ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/check_focus.png000066400000000000000000000003251352002233700262000ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cdhT^@6alϯ _gf+fb2`XXp{[lTf224|W1=L`g2D̄,F {xhE (ZfTU-??W70>XԤe?tIENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_check.png000066400000000000000000000003071352002233700261700ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(͒1 E[/ .;p2b7kKC3ԳARJ>jW̑!2s~N9Wlg-:p`ۑ=>O l`1㭈92d :2 IENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_check_checked.png000066400000000000000000000005171352002233700276410ustar00rootroot00000000000000PNG  IHDR Vu\sRGB IDAT(c?# 1+coZb###V eڠx.Ӂ~}l+> &LHa9 xyyY`l]]]fbb/01'L:5&Q^^hii}apSϝ;wݽlҤI>|x&KKKhA9::ے7$@6b&-гA 3Ɂ߂l )ie}saIENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_check_checked_hover.png000066400000000000000000000006701352002233700310440ustar00rootroot00000000000000PNG  IHDR Vu\sRGBrIDAT(c````ebabb|ddžAr 5 @F]eB.n1@-@)$c^_94][ܢ@@E |j߯R2>P糽~yʠ^Rab102Xb@J{KXyY!f5010ܘQpwQ= V|l=íy5 Y`19v~ W n̬`KaP.Hu63\/:?wzj-J Lau/>޼ȠU598%+?X??°E=3M¯7sf#0(@z ' K}z|& y`I}~1IENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_close_small_hover.png000066400000000000000000000003261352002233700306140ustar00rootroot00000000000000PNG  IHDRVsRGBIDATH R 0,}C,>}Ð%~-Krox<#1@j@)7]Ϡl^YzI" 2*c3Y3Yj aw|cIENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_close_small_press.png000066400000000000000000000003261352002233700306250ustar00rootroot00000000000000PNG  IHDRVsRGBIDATH R;0rsvpv>,~ C[x=Rwy\k{yTt]^ 6}^w,,pPh""W)ImhD+lR#a Zw@9B$LIENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_minimise_small_hover.png000066400000000000000000000002111352002233700313120ustar00rootroot00000000000000PNG  IHDR霝sRGBCIDATH c`!0!0B TEPD6gFo|jI,?zF5h8HLIENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_minimise_small_normal.png000066400000000000000000000002161352002233700314640ustar00rootroot00000000000000PNG  IHDR霝sRGBHIDATH 1 @t,=@XIY[8(@v>R `f1uGVwWwا(@ a(IENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/light_minimise_small_press.png000066400000000000000000000002121352002233700313240ustar00rootroot00000000000000PNG  IHDR霝sRGBDIDATH c`!0!0BNne`d"m ̽e'I2j  )~IENDB`dtkwidget-2.1.1/src/widgets/themes/light/dialogs/images/user-trash-full.png000066400000000000000000000036621352002233700267700ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org</IDAThmpTW}f߲ !I"fHu:% t8NGqPEbP&qDQ0qݘ}9~Hnt?sΞ{<<ϽpO-qLV9!BueYJ)E R!kR^,R^B,ˊ=@DJ1M|<?q+CCC !5o*xoDI(_͈5F͇*;5ID9Hg613@`"Dd_ ~~tj bլ"~~pu~N:nd7l66I(uﻜaWh+ u';nxXsߗ'8ݍlulWi6G*m*Kpo5R婼nl# iy[٘QӮ@i1xrB['" `z\ݏWW|o_aMʂeSŀ Sh kٙ_Rbo5g]T'sglFuA%A{!} !.Y}?^ ?w_Ŕ?.33ui/~fM984EO}{F?9&-v^›5 [4?oI }՞0oM.9L<>jYv,}b.ӺllԦhT{OTժT25+[T\KA[2mrm'̨{wZ9 mۚٹs/R^(g`չ4~6nܨK)NH$ii90%ٵd2se]d>XQJy1cuL\<ȑnjɲHd535X `1ZRN-cn'|&&,jv IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/000077500000000000000000000000001352002233700215745ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_hover.png000066400000000000000000000002151352002233700256640ustar00rootroot00000000000000PNG  IHDR sRGBGIDATc`;l_L< xĒP|8U db~ >U@Xe) H IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_hover.svg000066400000000000000000000011631352002233700257020ustar00rootroot00000000000000 down_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_insensitive.svg000066400000000000000000000012251352002233700271160ustar00rootroot00000000000000 down_insensitive Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_normal.png000066400000000000000000000002741352002233700260360ustar00rootroot00000000000000PNG  IHDR sRGBvIDATc`+`444ڸϟ? f;P\ >ŋOKKK|ccc={v3#LA%@ .4P< j7\ %9IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_normal.svg000066400000000000000000000011651352002233700260510ustar00rootroot00000000000000 down_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_press.png000066400000000000000000000003051352002233700256750ustar00rootroot00000000000000PNG  IHDR sRGBIDATc`+`]߿kXχ_n֟0gcz1ۍ)ѿXx!#Lʟ ؙ~(R${LN9Og+~ R:0ZIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_down_press.svg000066400000000000000000000011631352002233700257130ustar00rootroot00000000000000 down_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_left_hover.png000066400000000000000000000002441352002233700256510ustar00rootroot00000000000000PNG  IHDR sRGB^IDATc`؁!0)&1# SȻ ĝ(H 9g"a0E0D`&ecp" 7uaȠ o*pbxg =IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_left_normal.png000066400000000000000000000003331352002233700260150ustar00rootroot00000000000000PNG  IHDR sRGBIDATc`<== C`RL0z3P)~8P Vi&@3 ##tq:; PN s#Me0&18qPh= 8r{III /E K83IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_left_press.png000066400000000000000000000003471352002233700256660ustar00rootroot00000000000000PNG  IHDR sRGBIDATc`9 >IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_hover.png000066400000000000000000000002161352002233700253420ustar00rootroot00000000000000PNG  IHDR sRGBHIDATc`P0h U@s@G@ J@  < db,f *(IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_hover.svg000066400000000000000000000013031352002233700253530ustar00rootroot00000000000000 up_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_insensitive.svg000066400000000000000000000013451352002233700265760ustar00rootroot00000000000000 up_insensitive Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_normal.png000066400000000000000000000002611352002233700255070ustar00rootroot00000000000000PNG  IHDR sRGBkIDATc`8```0Av o 僥Ӏ Ϟ=OT18wpk`@@h!P4ɱV6IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_normal.svg000066400000000000000000000013051352002233700255220ustar00rootroot00000000000000 up_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/arrow_up_press.png000066400000000000000000000002721352002233700253550ustar00rootroot00000000000000PNG  IHDR sRGBtIDATc`8 up_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/button_hover_bg.png000066400000000000000000000012061352002233700254670ustar00rootroot00000000000000PNG  IHDR连sRGB@IDAT8U=OTA- X!TFbbGj(m $Hb&XXh Q!>gff N~3g̾g^|.- Fˋd{R:Nf0ֳ\fLDk4k6p qUۣB~Y}w]lNezFRGA'4BbpfJzY"OS_Tjm8sT@2ESK"Fb$Bab&ʎݕAZbOHRZMwĄ" MzLbPɚc (TU=ەβZ^})OzKf;ׯ8\>6X_ƄF]9̿ղR87S7YyJA3~!>0wYIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/button_normal_bg.png000066400000000000000000000006511352002233700256370ustar00rootroot00000000000000PNG  IHDR连sRGBcIDAT81o@ ;e\{L҉Hu|;B(;S {{~8u]wq}hf},_8Y3k]\tB(GL\e E!,ѢTtdtkwidget-2.1.1/src/widgets/themes/light/images/capslock-hover.svg000066400000000000000000000023101352002233700252310ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/capslock-normal.svg000066400000000000000000000023101352002233700253760ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/checkbox_checked.png000066400000000000000000000004611352002233700255370ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(R;P\ T66>g\;@!T4p N` 'i#! 7;o!oGD;Yxj-El/Ix]= P^̪<~Br YQE4y4F @Mm5s X7y&(4Mx$uCr u͎p\U۶2l",K,k,@ZPp]-MӐom4}Zmks1$KIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/checkbox_checked_hover.png000066400000000000000000000007701352002233700267450ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(mR=hSQ{PZpMqDJUdrPEKlDJ!:5CR Q38CACy\.oU /7}$\1NPs-3wC (z~H5| ێ2 d0d heA`͟cDG6?'%$`-|ni81`_Z[x\$JP.̣RzͶt*eaf.** ++_t<ΝGeoc}.` tg4PXLeo '!~ :B^NO_ QLh@o`1خCx~IzP3 R(Bq gYCC$OcHUi(#+3yx2-+IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/checkbox_checked_insensitive.png000066400000000000000000000004721352002233700301610ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cd LP>:( 0 uɹqu׮]4}b M<<M 9ZP )i:iU$IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/checkbox_unchecked_hover.png000066400000000000000000000003201352002233700272770ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(c?W>of,,?Q1fg%_r?3l$C>|e9ցԀ2! @ gB O,@jIMZnNIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/checkbox_unchecked_insensitive.png000066400000000000000000000003101352002233700305130ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cd LP>:( 0 uɹqu׮]4}b M<<Gs8St&C~(^iЦ3g,XddytkGwG>Q$N&rb>$LG;({2!*?َ0j#X4/ށlXcAM\.~jkn ܂jސMU_񻠧L! ig/Kp0AXrNuHĉH8?65l6Qx[ړ?UB9#ߏ[}Οt%YIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/delete_multi_normal.png000066400000000000000000000006711352002233700263320ustar00rootroot00000000000000PNG  IHDRasRGBsIDAT8c`@wi/?0Ab@94 0 30pyiQy]' wN]a8Β1+HlX#_V003d```ypp^b`e/g!u͈ft@.FP0Ǧ ~badX.!^&*Ida<;  ӔJ@L /^'!TP/Ë{bH-(UR L Ja\%e 73R3r)#IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/delete_multi_press.png000066400000000000000000000006601352002233700261740ustar00rootroot00000000000000PNG  IHDRasRGBjIDAT8c`@?,u??Ab 94 0܂Yt~,Y!eeX8bb>w'-%JK$4xy=зF/_E߽ٶMd؀]bg4?~\fc-$dçpF\6r ʕY׍~̙/#%ES6(H = ,L""l>C̝; _j;>>p 2aUI ˿7o~[`6@zݿHH = A) 5Z^8Ai hide_password_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/hide_password_normal.svg000066400000000000000000000020251352002233700265170ustar00rootroot00000000000000 hide_password_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/hide_password_press.svg000066400000000000000000000020241352002233700263620ustar00rootroot00000000000000 hide_password_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/input_clear_hover.svg000066400000000000000000000026511352002233700260310ustar00rootroot00000000000000 input_clear_hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/input_clear_normal.svg000066400000000000000000000026151352002233700261760ustar00rootroot00000000000000 input_clear_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/input_clear_press.svg000066400000000000000000000026261352002233700260440ustar00rootroot00000000000000 input_clear_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/keyboard-clicked.svg000066400000000000000000000027161352002233700255170ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/keyboard-hover.svg000066400000000000000000000027161352002233700252440ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/keyboard-normal.svg000066400000000000000000000027161352002233700254110ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/loadfile_hover.svg000066400000000000000000000024331352002233700253010ustar00rootroot00000000000000 select-hover Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/loadfile_normal.svg000066400000000000000000000023541352002233700254500ustar00rootroot00000000000000 select-normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/loadfile_press.svg000066400000000000000000000024361352002233700253150ustar00rootroot00000000000000 select-press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/multiselect_active_normal.png000066400000000000000000000010221352002233700275320ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8c`@n/{_?Ab 94 0Vͅuf[θ_mҕ"|{ʅ,KK$4 J ?*aWBq6L?(>K/&ez5tQt9 = L ڠ#sBݷ{ l`AT& = Lڌ号~Yb)>PeUP"!2@Q@~atR KqB"(m'(!ȩ$RR r}g0UKʷZ3S/ _|g`ebePU`clXקW=ݫLc 5;b?IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/multiselect_inactive_hover.png000066400000000000000000000007401352002233700277220ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8SNPRE'6'WCtID$"OйO!%8+2 04)ti/HkHs$}sBNl>.JwbnqϗxX<8IѲC7={T*><sj"?$#K$IqqOm&r5I#VNFLi)ȁJcj BNp f'޺$c "Se²: w9 iHe]؅ r|t\ ]oU`NѤ)0Kf;amd0m'I<$%%$rqCTFۚU9(:MD ~%}],YsګIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/multiselect_inactive_normal.png000066400000000000000000000007541352002233700300740ustar00rootroot00000000000000PNG  IHDRasRGBIDAT8SNPh tr5Dd#a5 .|.$4 ,: qu` `iRiZҀUoҾw=OX^?KRx<FO6Ms^V}!h4J,kkIdDZgٳawjbLGL&sfsa۶ʏs1'H !? g BFF:΋Ͳ(_Ib͚?<H,x|.p4X,1c:C wd;%E9_1?mvp($eM=$\tb*#(e8 CTX,k]`n21)O/ s!U"Z4On۬;[& D~L[(m >g1۫0IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/pw-visible-clicked.svg000066400000000000000000000017441352002233700260000ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/pw-visible-hover.svg000066400000000000000000000017441352002233700255250ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/pw-visible-normal.svg000066400000000000000000000017441352002233700256720ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/radio_selected.png000066400000000000000000000003721352002233700252520ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(1 'hw&ΜƓ0y!ǦG $:to4>3jL?+ 4]νܙ-, L/trI4MO4݁C `m[uݣO}CES(:me8VUű$ɍ*u͂  5V¾B8ٶ͚<0{uiABߕ82 |YxV0 XC,9uݝiu]?ax!4/4߂sh5,IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/radio_unselected.png000066400000000000000000000003601352002233700256120ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cd@@.sAP Pl@J!;~ AlHAj@СC /H $AUaS jȹ F a2hZ& %**҉@p4@~!]P5@ϝ;wG?PI At1B,%ďIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/radio_unselected_hover.png000066400000000000000000000007361352002233700270240ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(MR=OA}(V8(J$*(4QF "R%Ei*h(awQw7{DHy7(ggq<^F)8ʣy%<+S6f[U6j J,Fu &YZ/vrˆSR`cX(rk*٪fqV2ett͏ pta ԉ~b>1xLE =r 6BA$(&/ ,F?4X:Hir9(&u|iȁb&,-5hYÚ[p-!#swk$R-ߑNW}tUÔNaTV,k?:4;TuK.Y\m5G([鼎r5[?;\"IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/radio_unselected_insensitive.png000066400000000000000000000004601352002233700302330ustar00rootroot00000000000000PNG  IHDR Vu\sRGBIDAT(cd@\@.@oP bJ0iᆆǏAlHAjA9rDZE%=z6P-HX3Te8##| ZJ0YO@VV,bbbBJPEjX`FiիwxԀj4|;w=Bj%)XA~͛7(TTT988X//=a*[[;IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/restore_hover.png000066400000000000000000000005701352002233700251720ustar00rootroot00000000000000PNG  IHDRĴl;sRGB2IDAT8c`3M6;\@lo.5I"ZQQBbX z##+kmCCt50>L- ?߿ 0 gw Ђ\\\@ևbkw ?Z^^^ Zʂ@|.I @|tt}(rss(www_okkfNcS,/06# 'Of23 +dbccSf4X0i\ t++z`#O"^8!YDi\mIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/restore_normal.png000066400000000000000000000005311352002233700253340ustar00rootroot00000000000000PNG  IHDRĴl;sRGBIDAT8c`3Mx39c d(Pn˿p'ΈMÇoŦ.w122k?- X vppjG:TS rj@4 ;h9Hp&VAx k-0:x`4$ &En@(PׯLWvl#: blŴـ|'OG6XTT h;wL ȊT8p@Cab`x \ĬǕPl zi_IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/restore_press.png000066400000000000000000000003361352002233700252030ustar00rootroot00000000000000PNG  IHDRĴl;sRGBIDAT8c`6L>Lm߁ } 4& cbׁx2 1d5 p3XJ ǡ (qS$ oPPu1(2e@' #:Ub7-끘K<IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/search.svg000066400000000000000000000022071352002233700235630ustar00rootroot00000000000000 search Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/search_hover.png000066400000000000000000000010051352002233700247460ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8kAofpR V6bqkwݒ\!66)KSrIBl^,n/l;_7{oFTkB&W"l?Tl6{?^"A$ey1pq!vG,x<<Lb(z 7Z{) "Ƙ=`F'"-iyn{6(:@r wk:@G N7k1 ;˲BpYjZ{ܬ]~4MHs_ʲ#KU +4};̷S/&Xdr5>1뚚Oy[:m~QIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/search_normal.png000066400000000000000000000010201352002233700251100ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8kAƿofHHo@? U۽2666V-REBk+}^C1͏}CUu/Ԅ dtkwidget-2.1.1/src/widgets/themes/light/images/show_password_normal.svg000066400000000000000000000025631352002233700265750ustar00rootroot00000000000000 show_password_normal Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/show_password_press.svg000066400000000000000000000025621352002233700264400ustar00rootroot00000000000000 show_password_press Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/slider_bg.png000066400000000000000000000001651352002233700242360ustar00rootroot00000000000000PNG  IHDR8sRGB/IDATH c>}V/ !0#0?i{ˣ!0h!ZIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/slider_bg_active.png000066400000000000000000000001521352002233700255650ustar00rootroot00000000000000PNG  IHDR{qosRGB$IDAT8cYc+#(!aQ#f/IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/slider_round.png000066400000000000000000000013001352002233700247650ustar00rootroot00000000000000PNG  IHDRĴl;sRGBzIDAT8jZQ5I1`}Jn+y|qBI6] Y v~376ts|sn$rE CWZi=z>ń^L&?V\.=regB4A\>Āx<+g|t:}@H \zD8OD d;3 *([Fw 0/R\K6E6;N=Z, jZ VΕ|f?[u4Fl>n{K4v.<2Ln߈N)o67pл3dtkwidget-2.1.1/src/widgets/themes/light/images/submit-hover.svg000066400000000000000000000014151352002233700247420ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/submit-normal.svg000066400000000000000000000014151352002233700251070ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/tick_hover.png000066400000000000000000000003551352002233700244420ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<zIDATxb?9?F"HMF, 4đJ&*@dLN@tנ;k §]3iDּWHK @`@ 0^B(IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/tick_insensitive.png000066400000000000000000000004151352002233700256540ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?9\L({'Hb55~(wF,``@ @=^ė0gxJ4Ckt@Cl>YH aNha @E g&BETʁ0``NPʮeIENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/tick_normal.png000066400000000000000000000004331352002233700246040ustar00rootroot00000000000000PNG  IHDRH- pHYs  tEXtSoftwareAdobe ImageReadyqe<IDATxb?9LB…  ) zf HC04BHC@g^@TpH hmr75M|$ C N@v #r<5l@!̉X5b t3bK9H5%` jFlx @i %i>@IENDB`dtkwidget-2.1.1/src/widgets/themes/light/images/water_back.svg000066400000000000000000000052771352002233700244320ustar00rootroot00000000000000 image/svg+xml water_back Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/water_front.svg000066400000000000000000000051601352002233700246510ustar00rootroot00000000000000 image/svg+xml water_front Created with Sketch. dtkwidget-2.1.1/src/widgets/themes/light/images/window/000077500000000000000000000000001352002233700231035ustar00rootroot00000000000000dtkwidget-2.1.1/src/widgets/themes/light/images/window/close_disabled.svg000066400000000000000000000006031352002233700265570ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/close_hover.svg000066400000000000000000000010151352002233700261310ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/close_normal.svg000066400000000000000000000005741352002233700263070ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/close_press.svg000066400000000000000000000010151352002233700261420ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/fullscreen_hover.svg000066400000000000000000000005301352002233700271670ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/fullscreen_normal.svg000066400000000000000000000003671352002233700273440ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/fullscreen_press.svg000066400000000000000000000005451352002233700272060ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/maximize_disabled.svg000066400000000000000000000004621352002233700273000ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/maximize_hover.svg000066400000000000000000000006041352002233700266520ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/maximize_normal.svg000066400000000000000000000004451352002233700270220ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/maximize_press.svg000066400000000000000000000006301352002233700266620ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/menu_disabled.svg000066400000000000000000000006551352002233700264250ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/menu_hover.svg000066400000000000000000000010441352002233700257720ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/menu_normal.svg000066400000000000000000000006351352002233700261440ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/menu_press.svg000066400000000000000000000010531352002233700260030ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/minimize_disabled.svg000066400000000000000000000003371352002233700272770ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/minimize_hover.svg000066400000000000000000000005071352002233700266520ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/minimize_normal.svg000066400000000000000000000003001352002233700270060ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/minimize_press.svg000066400000000000000000000005071352002233700266630ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/quit_fullscreen_hover.svg000066400000000000000000000005301352002233700302310ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/quit_fullscreen_normal.svg000066400000000000000000000003701352002233700304000ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/quit_fullscreen_press.svg000066400000000000000000000005451352002233700302500ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/unmaximize_disabled.svg000066400000000000000000000005021352002233700276360ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/unmaximize_hover.svg000066400000000000000000000006401352002233700272150ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/unmaximize_normal.svg000066400000000000000000000005011352002233700273560ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/themes/light/images/window/unmaximize_press.svg000066400000000000000000000006641352002233700272340ustar00rootroot00000000000000 dtkwidget-2.1.1/src/widgets/widgets.pri000066400000000000000000000140541352002233700201210ustar00rootroot00000000000000include(private/private.pri) include(dialogs.pri) include($$PWD/../platforms/platforms.pri) win32* { INCLUDEPATH += $$PWD/../platforms/windows } linux{ HEADERS += \ $$PWD/dmpriscontrol.h \ $$PWD/dpasswdeditanimated.h SOURCES += \ $$PWD/dmpriscontrol.cpp \ $$PWD/dpasswdeditanimated.cpp includes.files += \ $$PWD/DPasswdEditAnimated } mac{ HEADERS +=\ $$PWD/../platforms/mac/osxwindow.h OBJECTIVE_SOURCES += \ $$PWD/../platforms/mac/osxwindow.mm INCLUDEPATH += $$PWD/../platforms/mac LIBS += -framework Foundation -framework Cocoa } isEmpty(DTK_NO_MULTIMEDIA){ HEADERS += \ $$PWD/dvideowidget.h SOURCES += \ $$PWD/dvideowidget.cpp includes.files += \ $$PWD/DVideoWidget } HEADERS += $$PWD/dslider.h\ $$PWD/dbackgroundgroup.h \ $$PWD/dthememanager.h \ $$PWD/dapplication.h \ $$PWD/dconstants.h \ $$PWD/dseparatorhorizontal.h \ $$PWD/dseparatorvertical.h \ $$PWD/dbaseline.h \ $$PWD/dheaderline.h \ $$PWD/dbaseexpand.h \ $$PWD/darrowbutton.h \ $$PWD/darrowlineexpand.h \ $$PWD/dswitchlineexpand.h \ $$PWD/dbuttonlist.h \ $$PWD/dimagebutton.h \ $$PWD/dtextbutton.h \ $$PWD/dloadingindicator.h \ $$PWD/dsearchedit.h \ $$PWD/dswitchbutton.h \ $$PWD/dsegmentedcontrol.h \ $$PWD/dlineedit.h \ $$PWD/dwindowmaxbutton.h \ $$PWD/dwindowminbutton.h \ $$PWD/dwindowclosebutton.h \ $$PWD/dwindowoptionbutton.h \ $$PWD/dshortcutedit.h \ $$PWD/dsimplelistview.h \ $$PWD/dsimplelistitem.h \ $$PWD/dexpandgroup.h \ $$PWD/dlabel.h \ $$PWD/dlinkbutton.h \ $$PWD/dscrollbar.h \ $$PWD/dscrollarea.h \ $$PWD/darrowrectangle.h \ $$PWD/dgraphicsgloweffect.h \ $$PWD/dbasebutton.h \ $$PWD/dlistwidget.h \ $$PWD/dboxwidget.h \ $$PWD/dcircleprogress.h \ $$PWD/dstackwidget.h \ $$PWD/dfilechooseredit.h \ $$PWD/dpasswordedit.h \ $$PWD/dipv4lineedit.h \ $$PWD/dspinbox.h \ $$PWD/doptionlist.h \ $$PWD/doption.h \ $$PWD/dpicturesequenceview.h \ $$PWD/dflowlayout.h \ $$PWD/dlistview.h \ $$PWD/denhancedwidget.h \ $$PWD/dtextedit.h \ $$PWD/dtitlebar.h \ $$PWD/dplatformwindowhandle.h \ $$PWD/dmainwindow.h \ $$PWD/dblureffectwidget.h \ $$PWD/dpageindicator.h \ $$PWD/dclipeffectwidget.h \ $$PWD/dgraphicsclipeffect.h \ $$PWD/dforeignwindow.h \ $$PWD/dpushbutton.h \ $$PWD/dtickeffect.h \ $$PWD/dwaterprogress.h \ $$PWD/dsettingswidgetfactory.h \ $$PWD/dspinner.h \ $$PWD/dcrumbedit.h \ $$PWD/dtabbar.h \ $$PWD/dsuggestbutton.h \ $$PWD/dstyleoption.h \ $$PWD/dtoast.h \ $$PWD/danchors.h \ $$PWD/dwindowgroupleader.h \ $$PWD/dborderlesswidget.h \ $$PWD/dborderlesswindow.h SOURCES += $$PWD/dslider.cpp \ $$PWD/dbackgroundgroup.cpp \ $$PWD/dthememanager.cpp \ $$PWD/dapplication.cpp \ $$PWD/dseparatorhorizontal.cpp \ $$PWD/dseparatorvertical.cpp \ $$PWD/dbaseline.cpp \ $$PWD/dheaderline.cpp \ $$PWD/dbaseexpand.cpp \ $$PWD/darrowbutton.cpp \ $$PWD/darrowlineexpand.cpp \ $$PWD/dswitchlineexpand.cpp \ $$PWD/dbuttonlist.cpp \ $$PWD/dimagebutton.cpp \ $$PWD/dtextbutton.cpp \ $$PWD/dloadingindicator.cpp \ $$PWD/dsearchedit.cpp \ $$PWD/dswitchbutton.cpp\ $$PWD/dsegmentedcontrol.cpp \ $$PWD/dlineedit.cpp \ $$PWD/dwindowmaxbutton.cpp \ $$PWD/dwindowminbutton.cpp \ $$PWD/dwindowclosebutton.cpp \ $$PWD/dwindowoptionbutton.cpp \ $$PWD/dshortcutedit.cpp \ $$PWD/dsimplelistview.cpp \ $$PWD/dsimplelistitem.cpp \ $$PWD/dexpandgroup.cpp \ $$PWD/dlabel.cpp \ $$PWD/dlinkbutton.cpp \ $$PWD/dscrollbar.cpp \ $$PWD/dscrollarea.cpp \ $$PWD/darrowrectangle.cpp \ $$PWD/dgraphicsgloweffect.cpp \ $$PWD/dbasebutton.cpp \ $$PWD/dlistwidget.cpp \ $$PWD/dboxwidget.cpp \ $$PWD/dcircleprogress.cpp \ $$PWD/dstackwidget.cpp \ $$PWD/dfilechooseredit.cpp \ $$PWD/dpasswordedit.cpp \ $$PWD/dipv4lineedit.cpp \ $$PWD/dspinbox.cpp \ $$PWD/doptionlist.cpp \ $$PWD/doption.cpp \ $$PWD/dpicturesequenceview.cpp \ $$PWD/dflowlayout.cpp \ $$PWD/dlistview.cpp \ $$PWD/denhancedwidget.cpp \ $$PWD/dtextedit.cpp \ $$PWD/dtitlebar.cpp \ $$PWD/dplatformwindowhandle.cpp \ $$PWD/dmainwindow.cpp \ $$PWD/dblureffectwidget.cpp \ $$PWD/dpageindicator.cpp \ $$PWD/dclipeffectwidget.cpp \ $$PWD/dgraphicsclipeffect.cpp \ $$PWD/dforeignwindow.cpp \ $$PWD/dpushbutton.cpp \ $$PWD/dtickeffect.cpp \ $$PWD/dwaterprogress.cpp \ $$PWD/dsettingswidgetfactory.cpp \ $$PWD/dspinner.cpp \ $$PWD/dcrumbedit.cpp \ $$PWD/dtabbar.cpp \ $$PWD/dsuggestbutton.cpp \ $$PWD/dstyleoption.cpp \ $$PWD/dtoast.cpp \ $$PWD/danchors.cpp \ $$PWD/dwindowgroupleader.cpp \ $$PWD/dborderlesswidget.cpp \ $$PWD/dborderlesswindow.cpp RESOURCES += \ $$PWD/themes/dui_theme_dark.qrc \ $$PWD/themes/dui_theme_light.qrc \ $$PWD/icons.qrc INCLUDEPATH += $$PWD includes.files += $$PWD/*.h includes.files += \ $$PWD/DTitlebar \ $$PWD/DWindow \ $$PWD/DMainWindow \ $$PWD/DAboutDialog \ $$PWD/DApplication \ $$PWD/DBlurEffectWidget \ $$PWD/DClipEffectWidget \ $$PWD/DGraphicsDropShadowEffect \ $$PWD/DPlatformWindowHandle \ $$PWD/DGraphicsClipEffect \ $$PWD/DForeignWindow \ $$PWD/DExpandGroup \ $$PWD/DArrowButton \ $$PWD/DArrowLineExpand \ $$PWD/DThemeManager \ $$PWD/DWaterProgress \ $$PWD/DSimpleListView \ $$PWD/DSimpleListItem \ $$PWD/DSearchEdit \ $$PWD/DPageIndicator \ $$PWD/DSettingsWidgetFactory \ $$PWD/DSettingsDialog \ $$PWD/DSpinner \ $$PWD/DCrumbEdit \ $$PWD/DTabBar \ $$PWD/DSuggestButton \ $$PWD/DStyleOption \ $$PWD/DToast \ $$PWD/DFileDialog \ $$PWD/DLineEdit \ $$PWD/DStyleOptionLineEdit \ $$PWD/DWindowGroupLeader \ $$PWD/DAnchors \ $$PWD/DSegmentedControl \ $$PWD/DSegmentedHighlight \ $$PWD/DBackgroundGroup dtkwidget-2.1.1/tools/000077500000000000000000000000001352002233700146365ustar00rootroot00000000000000dtkwidget-2.1.1/tools/svgc/000077500000000000000000000000001352002233700156005ustar00rootroot00000000000000dtkwidget-2.1.1/tools/svgc/main.cpp000066400000000000000000000066531352002233700172420ustar00rootroot00000000000000#include #include #include #include #include #include #include "DSvgRenderer" static int String2Int(QString str, int defaultValue) { bool ok = false; auto newValue = str.toInt(&ok); if (!ok || newValue <= 0) { return defaultValue; } return newValue; } static QSize parseSize(QString sizeString, QSize origin = QSize(128, 128)) { if (sizeString.startsWith("x")) { auto newHeight = String2Int(sizeString.remove("x"), origin.height()); auto newWidth = origin.width() * newHeight / origin.height(); return QSize(newWidth, newHeight); } else { auto wh = sizeString.split("x"); wh.removeAll(""); if (1 == wh.length()) { auto newWidth = String2Int(wh.value(0), origin.width()); auto newHeight = origin.height() * newWidth / origin.width(); return QSize(newWidth, newHeight); } if (2 == wh.length()) { auto newWidth = String2Int(wh.value(0), origin.width()); auto newHeight = String2Int(wh.value(1), origin.height()); return QSize(newWidth, newHeight); } } return origin; } int main(int argc, char *argv[]) { QApplication app(argc, argv); app.setOrganizationName("deepin"); app.setApplicationName("dtk-scgc"); QCommandLineParser parser; QCommandLineOption render = QCommandLineOption(QStringList() << "r" << "render", "svg render, DSvgRenderer/QSvgRenderer, default QSvgRenderer", "render", "QSvgRenderer"); QCommandLineOption factor = QCommandLineOption(QStringList() << "f" << "factor", "float scale factor, must > 0, default 1.0", "factor", "1.0"); QCommandLineOption size = QCommandLineOption(QStringList() << "s" << "size", "output size, widthxheight, e.g., 100x200, 100x, x200", "size", "1.0"); parser.addOption(render); parser.addOption(size); parser.addOption(factor); parser.addPositionalArgument("input", "input svg file"); parser.addPositionalArgument("output", "output png file"); parser.addHelpOption(); parser.process(app); auto input = parser.positionalArguments().value(0); auto output = parser.positionalArguments().value(1); if (input.isEmpty() || output.isEmpty()) { parser.showHelp(); } QString renderValue = parser.value("render"); QString sizeValue = parser.value("size"); double factorValue = parser.value("factor").toDouble(); auto inputImage = QImage(input); auto originSize = inputImage.size(); if (originSize.isEmpty()) { originSize = QSize(128, 128); } originSize = parseSize(sizeValue, originSize); auto outputSize = (QSizeF(originSize) * factorValue).toSize(); QImage outPutimage(outputSize, QImage::Format_ARGB32); outPutimage.fill(Qt::transparent); QPainter outputPainter(&outPutimage); if ("DSvgRenderer" == renderValue) { Dtk::Widget::DSvgRenderer renderer(input); renderer.render(&outputPainter); } else { QSvgRenderer renderer(input); renderer.render(&outputPainter); } outPutimage.save(output); return 0; } dtkwidget-2.1.1/tools/svgc/svgc.pro000066400000000000000000000023541352002233700172700ustar00rootroot00000000000000QT += gui svg QT += dtkcore TARGET = dtk-svgc CONFIG += c++11 CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 DEFINES += QT_MESSAGELOGCONTEXT !isEmpty(DTK_STATIC_LIB){ DEFINES += DTK_STATIC_LIB } SOURCES += main.cpp DTK_MODULE_NAME=dtkwidget load(dtk_build_config) target.path = $$TOOL_INSTALL_DIR INSTALLS += target win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release/ -ldtkwidget else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug/ -ldtkwidget else:unix: LIBS += -L$$OUT_PWD/../../src/ -ldtkwidget INCLUDEPATH += $$PWD/../../src INCLUDEPATH += $$PWD/../../src/util DEPENDPATH += $$PWD/../../src dtkwidget-2.1.1/tools/tools.pro000066400000000000000000000000441352002233700165160ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += svgc dtkwidget-2.1.1/tools/translate_generation.py000066400000000000000000000007431352002233700214240ustar00rootroot00000000000000#!env python import sys,os,fnmatch from subprocess import call translations_dir = os.getcwd() + "/translations" if (len(sys.argv) == 2): translations_dir = sys.argv[1] + "/translations" print("set translations dir:", translations_dir) tslist = fnmatch.filter(os.listdir(translations_dir), '*.ts') # This would print all the files and directories for tsfile in tslist: tspath = translations_dir + "/" + tsfile print ("process", tspath) call(["lrelease", tspath]) dtkwidget-2.1.1/tools/translate_generation.sh000077500000000000000000000003501352002233700214030ustar00rootroot00000000000000#!/bin/bash # this file is used to auto-generate .qm file from .ts file. # author: shibowen at linuxdeepin.com ts_list=(`ls translations/*.ts`) for ts in "${ts_list[@]}" do printf "\nprocess ${ts}\n" lrelease "${ts}" done

7S}RY?{?÷fP PRhLi=chgb𳸉!?;k-`~\(1f)v,p({V6lV)+*E2+@LC20+gB^DɂkND- ,2aY1-C@@F.AFd FGpU=qRG%qj"^PXo\H \4Gspi*tt^. Y .7sJ ``m`V]@ti:C31424E# A @a1|(46`brw}xdkclc8A P }`y`yXyp(z9AۆlPP7*!hR_"lRsS`?ZB$wfB%T$PbIe-R'SQ #==Euu&~~0)k"k؜V(p)AeVf(!8kK0VD*L8O*B)2+8EѨXҫG!bY1P -n"nȲ&/<+Wn0A,nF5Å.0but0Q\V0+.e<Zs@pr|3I7^Hs!22 _ srsĪHq_)u^1tt 6m`LaAp5u0ʠ ^l1cpx9w[V7籋6-~Gc1x#8Ak O8qwг<;|eWe]z[! .";'cb"S[;9pܙ<%"*h=[THb>8R|MHN:5nq1QUoʾ*x`*P 8PB *(( 8p᪇)]BgPHp:t2C,4ܹGZ aĈM45ر @pdYXL K&U(qbB}MKN$%+tXQw8p58 Oc_'8d(G&1xp2F !BH;&L5' !1&$d"5|@?F&dLbp'nLap'x؇L(4Bc?'@L!<QP"E!^bF Coj^l_qF.,%g$gb/g a+LҊ$Š. L2 0RBUNU4,%7@KX:CˆdXn`c`g ["`p]傃Ův!wpH{KC;$d0Lfa HK89Ofh0M* pSx@*N@I~݅'xBc#p<RT[D#ZrX@fp"8RCROxTdB+p` NT&X cp & *`>! Tj!ְ GRa*e ^bl;aYL]0CrUmXzcqXb0r+b fPu7hK ʖ]+#Dp{!_xIIځ"w>0M70ˤ&}PpW82@m @ Xb3Әrdz- eHd%:.MjG̲$`':) MD\u0ZVJ\< mi<@1Il,'˚"j _ߌUm_;>&mLEv"P[i ɓg*ʭѲA3% s8H=ER)`ݙ4'dBDc]1 zS;v]{6.xnq}38 I$2`0 aω`V*pT#i5xAjv$%I+bJ߁fMX+ :-joJ  6]G ,-}*’?!G!{BOM!+0`0-Aa2jS2521ba.1boIc1i9–b3:kӮr8xt1C{>p|I$x}>:C  ("@}؊ĪA,8@hȥUژ3 n  hzZEac2`'hs (*{S02Ȉʈ Ιx %}嘴Hk*JR.(4)ౝ8iہ4c1L8aJ#؎1ii4yJI^'1@tr(T؇̓3Y܅]0.j ʂX<-ZT6%ABH3ӹ>Fr$=C)! @ щx" ИȥX0nXV&@j Ј0`bb,p 9ț @r*fT !N% /['8G'r:k* a)@-۩>GT0@ !HH< َH)@*5W# #IR$ɑ!;>I,G8.2`$7y- 3ɂ<Ѡ"M2Z-UD:+/@TT6@h}P1P4#rLbiad#)+4*.oB4 .;–2w1C4<|I9P~Y㗅$x8McPčOgUSإѰEڇ HQ q Vz ;dN)(E9J4rLQѧ=156!Ga5=ݑ6Kn+5%1y Opu6N J-pF9S{ UfP,y0L Jҍ8J"j-\ݺ<N`U@}PJSBb8]#ga5#72Ñl^kiU7(_t9;P/hC`ÀbC5ͤsVQD`;# %o% 80p?/DB԰@a(h x v&m 9ta؇g11ț e$b$V#0 U}r`3DO$n\P1' PhcMpYQc >UT3>(evZi sj**H .>cPQG;HkN4!۞%?Б3HQ~e'\ÄbiH$GI*P]}D]VM{Ӫ@إN6؅NB// TP(@Q@O942Hv /x>UT-o5.*49*B%_w9}HCt1Fꃁ>@m2b׈@PTB i ~ &th x rfrd%u-  D\ܘ!w&0 X Ń ~|O=ftOkj%š@9t=O܃3 >l3NG0@1IфRk4?L ȞI N{5&cm?'q 5Ypde` Pa}|FiMT0D* <4+S\#J{߇.fjI/PDN0@Q݀3`92h92XBoyLxgz~bqp[g:pg/g,x)^݇7;99KhW)>pO/.L@a ' ޗ„ a*Hkaߔ)GB W6p@)ld wpи)X0> W}"p}&Lk=I,ƣ(Q}zGD?}{'_o<K0 +B KI NpR&80a_I >B >,I)Ƹ&%lAC԰b&\"H B>Cp| a!OC |eB>O !b&Dd0f_Cɐ4.)\1 d}I#&[ 'm| +4ְY Y 'M -'q`pP]Bх`lA@[d+IC uʆ9ˑE)j_L')4PC>‰**kXM!jT%guiaNEVeVv#p\z5a!<ȓeIq@ӘS$EAoaY\e'WntRvfMd >LPoƍ-i}UWva{㑧zpˍvy}LdW}͝}'w )<>8D(|=Ä>hÃaB舁#`,W 0ɖYOC8 PN Zfr&+6ʰIxNdhrQ3}ɗq=[i+"25{RvO 'b#u,t!81+0|[B6\W@Cb0$ SU؄l ߲ ML UXOІ5!(aqYq EA$*bi%-'yIrYsG\:,0m$F5`$6|!@f')h,\#Nr P |2F:R2Z l8%ϦȔ&m'NöF-=(|Ƴ;2ɞIs$\_*M' sbI~MpC2`^7wNMuQ#nE8*]& 'DdiS;z2x`((z?j!p›dd=!LsbQHA}OX" QGf !UYZR+lYڄA8( !/TRY+_Ij8F!DR脷0N PK0oE^2 dWSB/4k Š|%(kŅ eyCA/`ƓtL}aȗ;Ja[f(Ѯ%hKb]Mv ƷnSTmE|3)$1%Aޜ7q$YddW֜DfFmuY ]-1uESNF{|.34G\>, E`LȃL@͝Ba ]& ҘG 8H D1@ D +,Oͥɕhӕ؈8͹Hי]$Yt΋XK И]W㵐tYY aS͊d }D0$KqmYEЯ4D0A~P ,Hat@qH0L_\e S`dK hHqT`@1,I4Q>@OP~Oᛈ!Jae^P:S-DL VB Y K@#& eP%nbAdD<| }It' t_hAķB&VI0- °VtT4V1btY xVQZAČ>B%6^q#ucg'a;VFq`w h iL%]t[[?'[9#݆ih`xudB.{(h`}\dQ\  V5_`Be(a` PF؜rN6I@`0]\zS茏``“NpO(XM ]IHĝ 5!>\O]BĖ!TT@`|i_A 2܏fr_m\⣅@_ KV0PbTKW/: 3F_`AHL5^Eu`VuzrwEu@8E`sTͺw_sk_[`|F t~2%${W0 .-N``GᰀQI ZŠ,`8iNIN&dN\`…yh=pX X*b_I ;< (;񀏶 `XaXOMIYʖIJO }@ J%TKD`KN ^ΞYX)m($Di L>IU_ (P,#K\Vk.illnX1n26j1u-.jq5\@tjnI|@vذFe{6_LFf Fgngtco>>,addBB&vY6Ӏ $N Hh_P 6QJXah&h`! ƈf²a]Taa̤.IXXVaHIjOɺq\ZOpϡT )`)l %!9#iZy-& #*`tԁA˟>1E&Wd*_ZgK1Fpf4I_l.q`X`Ȗ9n\F&eXlccuuUlḛ~kyin|FC$`|MdF}nL$~S ,ha$ n&mhI TŽBW`"O&ߓLOh$ U6I+]"ܹI,YrRa`D)#:UD` WhzIx&.bXKCVVup/&m`uѡ.qZ 1;B31#R PYig_筪.e'9@y)ICfEjǭ J+-5(-In$`GG LOЫKΕ@(rUFT( ƮkOFF `̎ ZWNLM<1BY`\Rج0SETT3/p_lf^XկP)u>Ё*B- ojdj;3#l*Kg= -zQhZ-A+4o 8Bti_vrd.&Y"ŪFKCF29'_L ٜv뱿)b>/5(J`I Ql2ORh2Dr'xIΠBI9irap/X6LBINPTrXȔ\]_3Lu.P)rBJ/B RHHX95[A_`&_Df /R00b` k̕_2E " t6ox'_cLqqavyh`֘zF tO'${9_rP7}L.5ɍxeNҨT TV XoIX`-LT]M0`݉ǡ)?^_ZА6)A2rVI0PʔpQA3C>Z16DiEOQ>0I 1_Z^4qB91aĪjF8Fgyg;g]b\<gGF7fLW19BI :̥Ψw(Q,@ԀK⤃g)&F2aTIXvo2׬`6KJ)VF'``DP`Ip^q a)`m2R{%,q*/?CE-ǾȆlq{|r}kLr4_^s@~W FN4{gR3  @7 VŻ:_Hγ$ 7]MӘa!C9ٷ}*'D!ć8PȖ>!,~9ذKǎY}1eǗlĤ}lR />Ukh4m)ڧQ ANIt}nEf_3pgۻkϤ4i q7o..\t_˘9w4-P@j*`.hdw,  [@FQIhf!Ko >(j3 Zc5X=y~bGy߇czޑr "6#b2J꥖Zj T2 Z}(Q!;(P}8c/j4ˍR-7 CCȵRHPP0lܒ˃jH*88p& rS贃|s8xm.# q@PS鷢rHZT*UMάȸ;h>$"1k:Ƚ;hԢXd':.b#[#Z+U!&-363+dХ`UB8P%0\çP*r !R:0g_ft ܸ!3F#<1~̍%{#;ѸȲːE4 Qn}ZVe:TirV?Kܾ,UȹEC{F/KSZN:43'E@c}Yd=\$„X!$-XiAκ([;B[7iNTbcr5/aH"4:sIC,A֌uOZ --oVhER0k}A7jA+;3{ȏ(m+{넰ϡT{Z#AG-"H: `C2g<ĸ-TFwA&%*18eFh>V֝G=r:a d< XDw8g(gEIbG<0~a." "eK#Q3gT 36W@}&$b@(Rn0Y`leD/$.H)WBhrdH,A,%0 H%d*Du t:u(]ct>B򀇎ΈԦB8@(:3+fV |*B'wnMPм}h9;ӘwqA:n[CƊ3z< 賏 4_G67B6$F8Ґ\A TMJ ?xA*>0FG8A!1*!G4t_P%p_"t 26ɺMq:8Tr-j n5Lv (_4Oo(&SK4s 4nthDc*+B؎XgX-CנH+#EBBvq i,.)5JtE>Q+mdL&Hv)TM݇3T̍Y73TܱigG:D$*Ŗ4D3FrЄ3 A7kI!rG( !)ZR`fWU6!Td-匵c!XI*A \_iCe[*dUoD @2؎˜noxtcʘTe^Yֲ'X!=3/U]smݼ¢m!7\V&"hu!;ϝBj/9ɝjAX>S䳆\bģCs'C0$th)[7YKǫKK53 Dw'DZcho'/Xr+&Ѹ\X]tg0m$L[-Lhޠi~<qFh|rdPn[CARёSèe 6%S%,*fԮ=s$VȠ;4lmqdxחh$ĂN x} ŊB$'H{)b3A35#8p.%3Wt*+]0\e( %ʿ<Cg\m{ę) !PpdrKrJ?#%fBʌ`0 qwPWQ(TA(c|ް, G!B3ZK|0p8c ;1.gTqy331h-wx/[VV2 8Bp|1]2!Z 2x9Ja/ ޖ&!CK'Rqn-1.Yqw1CzA QD_P%Bw#!t!rG c:)("ijx$)Ui3¥3dOi(z3ܚ@ P%,=C+;0 !, H*\ȰÇ#J(}-.jȱǏ C\৅4&`73b&vqA:0 JхA戸ӅS> XAr*2+— k3lA}YЌ׷p=K\wף{Pp]C&`KZUbd0ˢ-׀͑S0z4P&ԸClx!1ipKNO33;VPtس#d]q_^Q_{-S  {z drSՑYEGSQ | ia՞@68R_aVzDCNXAS"EA W tXEcV^!Xg|!)Ђ*tP2^D#%uYGCWqALS&wn[N%P?(@'fAw ܉0DYD)TYYYh&ڑvYכG9AliM6Ј ցzhljvJ\ *z5չOձ!bD4hZ PPP`-A@kPdsYP@b A)ħ @P)< P_@`^ @Q& P_@PY;5KPla jZ>STNi+P @L+Z[Q 1 kC'TDdXw34ͭ/`6dA2 DaL bB sPW'3M>eYdTB<#~Okj4QV#dK/.a @]@?JGԷ-չ/x %VxAA*>} ܵĄ8HL?HW@U]8T,QC%X>6ϡ:CH:!#PgY)ZmP>P45!A# b z B H\50m> æ iHABr׼}(q^H! ab?}L4q6H'.DXA0q2 H5c}s# cș̑ah;B@0A3h8@H8-eP#VVCЅ!@DXKkRc!pH# r|k% J&q.$9G2;D QRAy\,eN 16I4䂙&jNK >$i9dZzAV,K)OzP>iղ F!MȃƵC@INdoޔX΂t!e$!w:_U1*_f9SA"cĿ~u B[΃-!JI`BT|lQX5% f> Ѡ8P҂ (JgցADIن(o9>D<$ ^8zamڊ-#!cJW4׊)v'[ f%JՃzSRT>:V S\DqeJBI2sGd *ȺgAsnN K3!ua&Ѐ“4$}Q h7سZA0knf[dMlJGm-+>h@! Ab|}rAM*KDMØ |ꊰ$d%S!x O?tC33 |BQXgGCpIOH֠PX-ZEYOM ry V֬H"`X׌M(b?[LC%쁠SVtJ>.s[rAFp]  @) `zJL Ÿ2cUKV]Y:MEh&:х#h~ai1beܴLCN`Mښ~xV@deӂi6Er7}X;8w* *A7xuab-,bR>pp49;$n9h y%l^7Gsvi8a ?'" %a`O-3 A*~uS3hq:5cpdootEpAah y%*K!5c!<2tC('ă5K0ELq+U5QQ{#τs@E.DcrugGeR4ERd\0 #f7O/at3u~8u{!u{~ vE^@ 1G=0G"e~bFq, ,3@B!*!wB,3(5:,'hWЂ-p7xyPcPp=s" a5zaPh{ q<;B7tf6 /4b adXBLse0.WC-;sOSDw1d[f&Qi,Pu7zCuYtPf=A൉ !VfN)WCVm&B'_<(Ggfnv7m3с!*5q'o`)x]Ae0WIW:PvIpAh$pdSija>VrBG{,$5(׏t5M5ԏ67TRfܳlPE1~4?=Q>q7dlYֹS8s^ 1?64!!rO0/ٓutr6й$S "c@f(cӌ4h)XXDcg4(prIp Upl: e;Qa=sBsay0討56"b `6)CY5ERpz1.v--)-P5†F!D;T󥽣R0q&gR}*P?b10%P,07F[e9\[> 9AU8Pg'8iUm%VWqwvX! %y#\7Nx0%!*[|W]o+Hd c@ A]oXظhXbXqɖWPA%BaQ>`i4ZTqYCfc Zsp@ /#CIjDrX3J+6Cq. 93է|!)ޥ -)}qF6S&C)p8!NX'mbT$2)0*F)e*^'qRs&Rg v2*gg1X2@x/! }]I|x:~[~o&pkodܘIq ˬA+-1anhpE;eYiFcrp$b+ip<ôc!D@DJ$E#6+ģ[HB4`/5O{=tژ .*-ZVR]0"E-Pd{({b:' eS&{Sv SE'7GsRv!q88jU+Gm]]u޹!"Q2<$'F3O1I:0<n+!+2`1Qy:,j%z/{cd*J:glIfWIP硕h=7HJK`dzZ£zC5ꏴf- jRsr<.{ 0R 7;9D9:gV2^L<^K"ACGJA +a,)UQGg`Y09c(+X]c=5-ř8ցGQƭpت3a% ..iBp;ϣ9JK5%[ڒRR:D<l.(56"/jC ˗K*bcCJs!ق0.U.7.]Ssq=} E'^4#u107ee8TL O ž)Oؗ@cBC?1'#5aq`&&9 >F$0&L%qTr}) hIM}t?x؈G}66 $Q@Z6>:$t4w-{ /Y'e/]ke3m]ҹMWJb4daMF+If- խލ9ͬQf_CFqtCsٵoޝf$'8 $8 7О|̻OA%+? Ȁ( # (, < H Xdq,  0 )8ƒ."9`#ѱD L蠃A , *r,` * L 8[0L8{!$3(x^J8OpA(P#ĔTFHa& PzBJipXHB(ABg#~`H%Ez2 R"(RB$(TpȧѝuU*Tdbb O{P*zpW ~݇~ya!jba! L t Ё.-,. LJGK1kV4,." hch+. M+gvi+|i{iWy6ն^ 3X 1Cx;1;㆛hF{oo|p 7pW|qwq#|r+r)F} ø}t-(|u[wuc}vkvۣi7F{7{t')pW~ywy裗~z֕ڸ8/Mnx(@=sû=$uPvΧP4 o=O=zWU{k_WV%la {XUHF=a&٘Fe-; jîxAcQhuG6hq Рeэ"@le{Wi\!zl[b!`F2Sq`2clu{]fW۵6.]N~%sCT|#&AJ}(n}{_淰M6Qγ@ \V8A΂fn6lXa p2^$C4 Oap,3LnDhpc;ծ֮$8^\.\ W=2dƒ2fWҜ#% bL3m=Ijkfs\Z+]4`QF@a iP%p'X-=_e` ba!ѝy!ƍqZcplCћNאB!!jǀjSsf\jD8ƴqYm`7g#Պ*5>Ky1}`=fw Xv:ء:9{p3AFq3bywfl‹ZQ#YtJYfPڲ~F "m6J؈+2>l !q2ZJ{!A2! QNhsn'N+ӫ+6ծ,kŁ gʷ!uj Rzff .ߵg$ڸiSj 'Zа+!1+N!1z+ (B)B*B+B,B-B.B/B0 C1L 1x7<aKv4DCx02K7T@3JCLؿ?c0vX- c.=@D 2w 0)P3?dxbMd,Q4Jժ"ڂw:԰7B7C_E` FaF0+4`23*Bᶲ1 q}0b GqGr,GsLκ,mtĻ4]C C9L(41к3huXs@EMd4 4|=|) 1tX=xxf0<0 08]@`=VY)0T,\ˆZ=Y M\]ysJ, 0hJP:p{/NmJ(YNN_/ ?BC~7˝lu84:IڳƢ4Gkp8;^+Ԇ4P{Lmw[.?=ۄKMCMCYlU E#OtA C F:",gL>oC#(6 1{}iB :xQ(O/d4l}3Bf^L1=c?Gfh7\ˌ< !kf7gHĈ7`|0Ɗ {d5K.=rP:U@Jwd!CSPm۔RR-մ\Z$ <7` Br:؇^5# 0Ufms䬛Kth0 Cu_u\ъdMK(6P@Hp`0LWCWme PlP.CjTcEAXlX^E8T~l08gX}6 -+$7ՔhJ(Ա &\YYYYY ZZ-Z=ZZp؆Zo膦}ڦr@UvYڜUZ [[-[mڏ2mZA5:/}")989J[*hƒ:Vq*š8-\=\M\]\m\}\ȍ\Mڴep!7Ž7*Ҏkd)A4C3lm]}]؍]ٝ]ڭ]=-NEgR> Z %])]^^^-wr-m(h%"%%>H____(}U[ 3PA-R&\$Y( ` ` ` ` ```aa.a>aNa^ana~aa ~8/&"SB@3 %^b&nb'~b(b)b*b+b&Q]9';اB n9꫏4b9c:c;c}B1^1`ARFy_:jocKdLdMdNd+&/p5@c逃8p([IF]Oe]e^e_)e7IUf*{h$`fkflfmdaQ-75`+:Q0;Iygzg{g|g}g~gghh.h>hNh^hnh~hhyb].g"hA–/lhni~iiiiin6iܬG6-j0 Pijjjjjβ5&r"Z^8@` Iփ kkkyB"}"_ ㇨ b筴¡kɞlʮl˾lnh l& g f6#>8J>̮m۾mmݮ_ ;@n#V^y5ܦ mnnnyUY"}[Y_#(; n~ool/ȍ& *cV`goT@Np_po f.gZ=c rf~fl:&Y8(qq/qnޞ25)3ftKhNۇqqm-NbR%P-&e#s;X&q,r-rm f0U >t3n| r9s:k=%8`:fo&P^"+;otGtH,g}Pe8s@]"HOuU_u,t}[SF)132촶qDlbu`vaWIYiBH)BN@348vkvlr-F!)Ҟ76loHLtR&olwyw JU ё}> "ZSq8Yzoxa\|jRe~N'tLjmbeqF?yOɍp6wNOlTorpmxPyzOQ Dy1uhvmL4->-5^t+z{>zU jҖzhSRiE0.{Gx66:p>뀒b{H;xF9pT{ʯ|lJa3UU'P/;uƦ]|_}Vga[b70#' 0t`wyg}?~;_'f7 }@f(mO_(Ndmjo~qR~@e.tGR _ lUT8q $N} 2lBJ0p@D@"G,i$ʔ*Wl%̘2gҬi&Μ:w'РBEvB5d$M7ācS(LW ;U8 8-ܸrҭk.޼zrJѬQ8Ya#«TX = /ԪWn5;nqYa\Z1wrhVcȮn:ڷs[ԯRQ`q&zTh`&.Gliu7 x RF%oq@fC-$G|`}PPu "-"vqRf*J;mW+Me%К-T{$E1dpR.ʫ_JgFaцzmC2$.f.}1 J<1&c`Ub>+{1d aǰtxr|39]Q晱+wBr ujpG2[|5YkMPԍp $pd/!)Vtm2hVo=7uK`KS%6WstYRm\@v;8SUz;4uđ:*ER n =ߺx"\x~<[Wd뵣hrT09K`g+>L-bmv|\R; %vF`Y[,>9@$i 0ͻ1^{CLT+<\ -ۼ'>E0rTU?t62z0:5xŝ?0b|RQՔFByR<<9{Z'Ȣ.})B0+q$39Ņt.ǂ)'NZӥ2UA߉]„(󊹪dCD죝3hNPj*Z:y5uM)9е_Qĸ0%|&66 dR6F!r#%؆"es(@N, ’A,NmUH+9SD(p:c*Ty[L+/Fa#̓VȊb"ՐG`dR( `j q+ޟLz#bG>vPL!GmT/6E  4[q$=0irIyl\BU!xCWR[EpbC85"(.@E"%9ء]R8"%)PDY%ĸ}Jϓ8HFWt#Շ?)r2>aI5/o]SJyq]ЇY*_އm˴:TF63}w F'V=M,k)QBH Ѧ/F*R3.䐇]T̰Q"#R X%uI>5M~2Rʵ3fPqp?jnE0DK?H:@qoPE!XکAs":d(j5nӔ}5 W;|=< \\w|`v"s/)>p "@uX![lm#}ķu Ml~.~ᙠ^rC}L!xj`s]lȿF5䙮ܡqʹ >p>|0Ɲ#^Tq| 9[d{}$ <{O.C~U ~=$.p`!   |cOy{Vf}evm=$X4KD2fW-=ȼįIоO}) nc"kG!r08Ϗ>W8}۬WTCl-De _)(D)EDGЇhQ1hIEe` {TA qIAC4 (,C.X"/IwMš5 )#;f \s-ƕ !̣ ae76D8sࠉtA\;.ͼ=dGa4f ,# W:A!PKs,κ̔"C^襟Grxr"0NYZ.&!=e%A4#!Tֵ^R$|^9IU 1&kJe4#> !WɁ#x&Bh^/B xQC܉!ZkFgݺ=d",&"$#,BO)!"$C^ wK:J'} l p]&^y x_nNKCG|ćPO}F(ܧza^U#A!uZB/BMMwσΧ(P(\4!ʍ"hq$$`.jC EIg>)xkRh+&%TV(CX"%dtaaƒG.()te Aeiuq&*h8bQbY Fj}^Leffg6)NbFd9}T@sJJ@i~Uu菂i!Bgؒӌ#,DЫ>kw߹ hB#֖e>,^#CQrF| QAf\A \ߦveff.D~kC^F  rLC+VG~ zH!"hd>!\v"(!E4sFD,̾F+F"Bkq_=.^Ƈ`^0YV|D.jidkU"l. Y C mӞ킨i df*vRWB"PWbgl8:8*t̮ H p'+)#>x#C먪$(_EnL64f"m"4B"x #u#D+DR$@-m~&[H-ndf"n=#,z^yYhB!/feCn6'ilBe.B`.D,i"ɀ5RClD@hDUi2 V#B#.BD5Qiz֝LDeB"j0Yon#f0Zȝ$$r,_50 'q Ff ¾BmB:†*`n%q^"+ϧI)6o4k kV1)(B?~ʼnzQ@ 7rK0qg"P1fyky߈ChC{@S ;+E$l䒂* '*6/FC!vUp@ +7sIq$/!Z%"a.!zeW ?* ]*:^r>op, `mKWFo&UqXeyJw)A*YN ]>o"8P)Qq;^6'4ߞXh"%I- \CQ!$rdW 8 j,o7r>B[%ByeCi|sG0oW 3 ^p_2)Ԯ-6D3%%Z 9F5}|lңʜ?}k-+†#dz !p9BW 9X2rB꣟[ (-mئ#t8i20.[Glu&R/xT!-[{yI!/~,q#G9aNK 5J;a_)yۢo9% Y1 IavWԴ*'X*GA,d9W 5eXXk %b,|lY*R*CLC) (tH]5ɣ;|"AҷpgBF8Vԇm{~ Jɯ$t޼5z^#h^ӔޡC1(=ї=4Zw-Oz˼=B# )BC8;M5p'әG|iႁG2pݕu &pdG~`{z`+!Y;R MxC /P€} 0I}D0fL3iִygN;yhPC5ziRK6ujԘ]+V9ip+W:{C>H62EHn PٰLTŋ7vrdɓ)WK5Y 3BEfD}ڶV.ŏ ].M2rpÉ7~yrJdYk\ uUN,=cQ%WF Q>*$@`. ry~ʬ깬*,9¢CYJhY jH4m .!(@}   ]|eFn9YM6h0\EB,p 4 * :0@=s<4\5p29DSD"$9R}ʃdAGˆR*l2ٜJ-ShNl#<∣+9#<:}|$ʳHchђT , Qd]6 :CA;Î=HC!N`nPI9H5!K}֛)(.'L0m%r IZ5P+@@@~g$}]6|sPQZ?Vտ(!Yz] \)B- ,݁_=׌52J hc8;O2"ed#jHΓ, D.@]TVs̀u+AJިWj+iJpa"EvH`K %¨OAe&3*Gl'ڍxZ aMV OJ"Ԇ%DT٨ +W?l+B╶0<D$pms&^m$))q__0*9 'G0"j7ZdD. k1Y0%IӢJdIP͡nPV>)unH!4f.6RT`]+YNs'ĔȲB76A JU&=Gj,^ Í0@`At>%fNA []=rlBa̼VŲ,Rd|:O"ZSM"L MxiR U^6! y]E5A @خ}%HB zS~]UȰ2v(F+DB bH8!eybhMBm·`Ub{'V2į VF"ሆLO铐jjҪ-kbzs4q/ali;|%:PfU9B[{5! (0v1:0U=Ѕ)d'SB?w 0$J"\P4@7]DRp46@NH"!Aˑ.TeZfSN AM2`xY:5:<@UypDuA 4L(.%R]mQ\DT1*(V)Nvf2t٨EWBY֖׌B89a\&Q3rXCUGH!-ăZJJC4m)zWxкQ:hDVX)u<>v4]Kqi]k`Z}εHE"KEkģQŪjևݑu ъ8TY[ QD)qq)df/a(l)@hnTRXjLBVNlw3S!d5R-6Unp)mCi90QNb,ZTyZ6v>sDcnGx(DzI,ʙtrDkD CԾq1=.d:LGF0Urdq;Oܤ}J:;gDԸ!hj˽ '6{+.7U*R98!6do*k((B76֠. B m:%`+;J&oH!Ik0Ba#kPN DDbaoPf&\4|Z#QfҒvM:A@᧪o[z.#`HdFf ]҈ pͪB_E+B#G0BVh  !F!h#f%CQzϘ<:ã@&n!bk (>gX!::.!r`  pIG!NY b6."t #Bhp1"lc~QmJ_ j"! Po.JgS [,AZe@-FOmakQn##jV1@~DIؑ!ml[pJVKZ*2'j@3<! ,ڀPiʯaХxJh.'t,Yr"#&\Z:# %N77 *!+$+4bP:҂VolfP\dHD $lh¿d-0>/;SЃt`:JU6A 6FZßd%}C$$`'Rɡ<7mRN:Ʀ%!F=)GaL #ĬD,/DD>cR73@+‹<¸.5Za0.4‡~ ]*<}$+PZX#~452X#.6;K. Q(/Nb ]΃@Ot}.'hP P! r[]9+%OؑP-(2M>j%jFUҕ` +9R,4Ze,HFA-,Cg]#c*l.T%`GY@LTH!( "I!(U!*E2HWJ̇d6YUEHcf_fßN'U%RBdl-%InGBp^1"%{0dҲ^JDuDBd㛀F,lvRhuDA:n !U# E#x%8K>QB&eMVsoE>$jdX!-m{hT"P?.>G6Wwkdl_ UOfYwfI6_ B$E*&߸iw7Fs]e(5oTc~NNL#Σ:B~%.z?6*fw@aObMf$B.ZcDhv{@Gׂe_WIfODJIaupv& Db cek8?T4Z Aړ!QبtZ h#K,2I5$ʿVdˆ8.//oF fgDD&ț&Dd8pw (ܠAio5ڋ6|{%D#J3ژ혒-{FZ:آuag CT0lSD @=*ٖ'#I=#p7EN^D"$EiID̜9BX3Bf=jp7%`k^06Y(@XD#gTx?5\ٞC C.Dwp,F[嘗Ĥ$ꂛ#}!$3_uZI8I-Ia"Ym4bxb]ɁslS4ZBE9c .$HpQwɈIbLD%&`6@<~0D4w|zGIA| {ZNш"wډ=%(: Bpq !G !9 6:DjR!Ů+(B#Yj15Mpmq !BOaD.$-[ec3(?x^QbP7q{̴/+srv\\y'Vq4;ᔸw"Hj.>ֈOEENq [ik!aHZQ0C{JP0q6d>cx:Zuf YEx1"gW%T=%z\s6">xf@B!D:B>%`;A<*=eVP"om ״%gDit|᧘JfܸU 5r{tcxq'ɨܹ1m>w)T,¤+!(x,XÕ'\~6Le{a o:-Yz#e\DH;} ʪ@&I%-}bBӎ0rD 7B w_+FaF!g)kƩvݲ UIFZb>E[pO2x}O0bk0\.r\ڭ 'ڃ !s{5[&ڥ&@1zu7sO;p#]9rt}=i&w`PJZ(z 6رd˚=6mו*_ن\tic ifL׵1G=ayT "i]")Zf+&:Yk*^AFjo%Grٓv}i]\x!@=އAd nְfLjf'O>͑WR2mEh{tωypeJpnOLºdmh tЙ6l΋]=IoArPJo%|4^BMvfE.ŋ]C&#>xZ[9gx⊧Ħm jrAgsSP6H^.`8sz󘱛{L$BIx^}R-PszOi[);v^ܘ.KgP>,⯓!uRè(epߏ4Am^* _%h}e<Ӷ U\7a{t+>4EK 5d+Su>|+\b gnHG31pD,Yt$h 1 _C97:T0A(C0Y38ψllG&/hL^3=A{> Ovj(BJp2G }HJr",Q[e.q Őį([ bHL"ա-oyK6AӤ/à)p|1 KE"*hʬF5:odD5$!7a #DȤ("'(׬=g.dlS 4ɦL Vrxysmjv%hHLcAmsQ*+1/2Tt45߲o6-SXIoÌ%ZQTLsSZD m^2:c0jRo(:n^&Pm[Ebep/8 j]NE,V}A!,P3{c) i9pjK"N%2j4*mkT 2F uSKm;xٕO3  Q1}s; fMljvU@v(mC F*@R4G^*9;po>vuBҟ1Q w iOIHu _Cߕ=yiizvbBL< |HpARahxDˁL5^_: rea0${Z0$qEM}v 0`bBC4I X0=)" @sigm%XC]ơM k79qn%QAz牏FUvsfޮ4Rtq`I `#dME5|31β2̣Wdc{ۤ.84ZWv:݀;<8w e:-g:ďίiC!FuINrơSròȗ?FY#TK!H |+a C6 Nb פ]t5:Pmey,-z%/Ah+01dPSk51̇Q'yS)p H g 4@!>+@HJ!}<jv:@M;`}J+.)` Ξ{CD41:Ͱzڠpx`pz IiPwBW:1>ogF<5M-%'xM0 7 (xW@W!avc7RRPQHa%DFMK0 6g 7Ks;CBRw]#rXDF2:Σ"(q8IP(7}W fY ` 5c]!R08L6p%arhoD`zPXȇU=x~1GwCrA4Cq3.wphD}ƐSaK-fE_C@} t@XP-`""J7#(00¨"D ˸E0a@~6$%Gx`Bl/<Rp" PZ" +wI=8 ɑ8lx\nsprw`ظp&%!)U!5S`铋C90S` Ym`;Ņf'h-}q@-R%(%a.%TAR2(3t 3_SqH^(4a&JL3 3$#q)#)@$ 2RRqɖﱖY0Y#))8%p)PyW#)ٚ988͉<ММ101 ٜ5P10:)CBP4< 099< <`C`6`9?21ٜ 4*ʠ ʠI 4P@` $ڜ$(Z4@59JP3>A*BZY`AH6=`A A$jWYJYz`^ڥX _z[ʥ\iʦVpo qz]V7pP-D9G9=.$@s`eh5"p9I՚Y?ů{{<| k)=tk}2:&=/zkFڼiɕ8]Y:-4нK6Ӗl{:z>K> ~,v(t+y2IaaT\&6qz6sb (a-OLŒJ@^uDjT+TO%i|AӤ*z&@4<Ϻ/ڪiVLڜ2Ю yڝ=j< jם ٜ=Iߝ9?"ǧͰ~ȫ~^@0I\`:8߼^,ǻ<>@ /;K&V&G9u`5cyw=c:|!5r%k(U+˴֕]:M'o.= ,9.zڗ#}W>\Yg)#@ 1|C @6ǐ=c`Ȃ( #,[޼FB@A @@@=@ 0@B6@B(  '@ ;? a H`-D"(@FGPDIсE?1D[,1FC]`G[,!\L!HD!ZdRGlHIpb h j((hBI&XH"/A"8i \Ϣ)h*(DU !Z **+ \J,ԩP0<)+8uTaLЋ0K \:ƀM,XkLeeV&23l oh#RÃ8X dcuu7^yۧ}$3`  O 8; Hا+`. N L* BCK•' LQ QF?TDhTQm|GZ$q)r$$r"qʔZ'aI-SH-$H:s bR"ȦmP;y(gz'MrR4?R 5'bjMjVZYUH TLR ws=Vf b҂b+ fzfﯸ6|m557P#;@׎:xwvJ*qD~<(rP& x?Np$(B@3 *pudc ZgB4$!Db .Ԟ e$TD#QҔ(h'QH5)*WsmZ.ЯGds n0E} <+GL vd) BC~ ,0D$ƨePK@H%Q Gg [Ƨ"8[8,%*bF9j a[֒d"R0@uVB",nZ2AH홮A /)sL2(FQA9%]T|%l˝"-eU\H5"<+YK2aL0.lVEiX׿f72[d0ҷ7ȡxptu 6+'PAÝhh Xw\HC|x?34xl݉O3 1 (bPӝ= D& Tv܉%PMզ&5Y5o v, hV&$ U|َVʦW=H/ЂRڲfg9kf 'Z% Xj^]L=N5!ov:pA6ns2Nlh²C :| Uhx2΀W L `"@P b,@!x@ )x1181*"#(# C&!{#0Aj ҁ`.-3Cʈ=,Ȅxs> 縍{ !H)А (X 7> 8`0g\? XCbb@ؙ){"3ȟ2 ʑI2$2#@\2qIDp0 h}GM„$-/$?:"?pi¸ʠ,"Lhʿ 614 `<ѤLr41- K-14<Q󝫈%#- [ UC,؂<;\F{5IaɊ. h`0ſLQ m*E`CE8EkaEڻ ZnٌnI[8t:a>aFb$ب}  y2 ((ȐX>hLǂt! a p 9ANx{8 y4889& 21yA"Ě (i%I&1'`A+3'+I9 /ٰ{*RP (  Ѡ/ hABumK8s=TGbyWv l1~LP#bXU.2c؄u؋5#I%-Yۘ}Ɓ'8Y :#/#-8:F1EBɹҳ*͈!aZ'#г01A$0=b [}[,meRFKY<<|TiFI;̂+hD4U L<$dI\\ͼP0cP+@dYМOdUlЕ뉽\ &]5=M>tjixl7{z6YА}M(:t6 (>yGI)+m(ƸMA 8- `}0H6"ۙ-NX荦("a9)ؐA0ٔ`afQ'Baģ@:! 1:/S hA#b4=c,&$)ā( % bA8 SDG;KEF3]-3 ٢-L OƄ%Ľ[X509l" MZlMDNJ/ȼHNІdDž̝N@O00C5&-D i.MȮ.T֤ =2x 15@4X 5oU'6l;>Hߌ>fcฏؐ(وfxfy  2O^6Ž_ؘwLi(?᭨  8#yx̡ԀV~6VPPchGP.2X ָޱ`hTd@"a- $X*i}8Yͺ}pJC+|~{:..+ }*p¾+?+'NkZդVdҹt0~=41Jk3gcB}|2* -TWr@-dŵLecCĽE΂.cu[OJQ0LXM P0 -@6.hmm1emEjvW1 w5pn2PڬE/4Z;p YmV Pz!尗7x?N o p >0X䍂}8"p:(m7 kpm؂cqG`lqgwhmgh"KؐP-*΢.'d'790YYfIB@S S B]3:)dj$B<01R8b$I2@$DD=1F[RGtrϺCF ۳4/NtmAnSO\^2̿[}dYR Ơ/uTfR,׶P0Lu3pPn 1`1M+N'ŘLwem+@nfUtGuUF #g`9uܱS>uٷ/Ċ/b̨qcE /(@E%T ! PlL  (p'X0`>:X5%@! M<9{ a $H qBLY)L@0AkMg"^&V0&?^\b2ʖ'a˓#O z)J@ KpH["ɈG2dd?x&Owq}g!F5tA#5/]5H#1ij/!C0D&NrǃPa<Ԁw!j!~ 4>n6v-b2c8fO`dѤK6I$\l44d[r$Mr[V_\~Enr~IZaŋ>Zh '` : Hj]bb\icXхfify]1bAv jb1jakq lGAusC 9T|H[J4&e>dWP AW 2.SLpp WEdEE$P/WU\_y0YG;{ ŀQ`{}0am>-r L`͗hL ݶ,)Ff[qp[m?h3q?d& qȝyA3bOyŠ QD⧛<Ȁ5퓉|`7wJdDZwNtR:|FD2eT.TC@0ቅh Fq"nzOޒ >Ot)n(T'.II[0,la Z iڤ&~A SB# 0G(>*MaT'ʼnr  HMujUZ+}BVBæ .H %C;"ΪB$brDE\,c/R(,:>$w5 0LaǸҲE GN&p<*& Ex1n;*'c#Xlk0 bb>CFe+Hcl3Ke&`0)(8mPld}7W+\w˫)MmhUzРad=tHVT?Hj>B(s)y>>'hm\OHD7VR4NfdOH`1`t"L|"oC5 IyҏfM\oM$rU4m}Kp&GMiӜVi/}S4T?uoj&f6XOAQ'-@Ӕf9jrPh¸^ ^݇ZUWOspkyj1hh5A 1@hh< k>GC,mc]b P;R8XH'[ܢO,ݶ)sGl`e'Xɺq,S)^(\q)&XƢE0bd["&T\3x)D.y6)ҎVl?PoW b|_=ѹ0V7hH|*ω4^&MDY(*<]0,BUP P^ , x' *<H,Vi ]Je|< ɊeՕZ]㬅A%AME [EnmE@D<>p>( l$@E$Y\TQeVDUeޛoIH]LK&h@ "Rdbu]yQ&i\Zu͠`$Q q)9qG8.!rDnPa%RztHv8n XBt^ET|d$F)~Y~>+\D8ALEFT]GyX%نԈ'>Mb&dAeBM$Q@*DXڝO(^IQG%EIQ HĞYO3BcCåT甅*dQ|TI xx>8>J}ZXʪ[y(XՁhX\A(( IZA B2A\ VBD Fhe]`hN>eZTGV^|G p`PQi}  EEE !b$a&>@e}t!bXTRE &i >M %IE `D rԆ*moGx\_bEX_ڔac& 5MD+0%NĀ~\;SA%N e!"x(ݰNi6fީȇ1؇)*nH!ؔt* |MDДlFAE5M%IbMk wڞ lu^\>@'tB1 'hcE*8`ʩXA;Zm ]IʕW> Uȶ|ZxhA PLaI`qEh^Rmeʅ,DDdƔAqeIN$ E` y@ 셸}`tqE$`!RkF&dgLe&\EngfX Fl%~aD-\[S ~G8 R&@wݧSmnx&rxdDx&  zXq+}& zȁ%fblCϝB)*ޜaϏpYE\O^"j 'Taʜ1TGgIDwTw6#`HUI@J8>թǢAAA>Zl 0] J;ڬAξC_(m EWDFs5\tź @WLGHCVQKȤxdi˽ۺq1EEȜߺd$)\HDk@ #/̀VUbD>%jiL$EW8xp`DeHExb2Y_ySl݌Fv] ETӪ*V&h>"< !b"QpݨHׁE#쀢>YآLea^OE jIZ24^I@Z1B 0OEt^g5Q}A󤧊$I'(bU0 Aʆ A ,0E_􁬯Е̚ Э D;>,EhDC\Bߌ^bQ1UTsYW_GDUhOu} Z[\݋[pWn QmTiE EF_ 5tE©cvMƜ&cTf ,:"FW@![=*rB&s<7܉"yk3γ=_"=gl /r0rd/ XO9pEl(7'Xt 'O?'xE@Z(VKǶKA ɰ dMpB׸ PpdQ3 K35D&9_EHu%lu_eYVK\ IZ[(HRĘSQO&OP ׂh_/XL`Eh&4jP%^dLuIz ` @dKj$n mFiDaEe*Gr)WDR݂n}drEؔ_JZ3Y3'f!n{yhDhxȀ*-fG6FS&9aS vUSMhN9WT})S@NM@8LE7DNm&#fjXDǴƮmH%B+Fc_kEϾFL? TBG@i_A0`>0]F, ‚ ei%ET8ܧKN ϋ*(ӆ5hp!3͘}9qI3FCǜSMR5gx9t_Rň!77I>hM7>;ts}ԙwbaÇ'Vb L`>8(pIH09r}/ B +6zcС` /Pz„,|>7qxzA&؇J{}">?(aNJ})R/&zL ,x~ ! j8g :Ăb(h !Ȱ!J,,Fb`ecĄ$$1!AM>G)ܧI'od!Icn8 3$ 8;:,9Ȋ,Ό2( +όq .آE' ͢ЄbP0 "J hc *,dST.Li0fR (H1z'28N7G p4 *n*,UWx:<}K;3W^&g8,{!`mhHn̓(nZ+. :v9&CϺ󲃯mһkX.[°SD0,'p!B t0$Dj-0 ۢ.# c@ KxiTug(iGG4"D' &i'M 3 L + E2# 40}h*x<-h60,I BFO /J3ⵧ1|Ť j(cYÍ`m[Gޅ>1x'yML}&r$^(BA.`+axa#6yM|=|rHf G9+ w(gxv)J u^ &2GO+֢V`CZ3Ӣd8m261@Djǂ8j345$ asBahd coF2=NzD5Ht*n!IA1J܆Cfe, 6uӝxI=fOv'Ĩ#55L>DzYԨ>E*Py3Bp,|Fv]Xm(fR.aPK+x2>'bA J T;thA$-U8]h4Z:a1xIQ0+}$а S zSh@1*3z}|>irz&+UD3}Wr4,++L$[f aڢ8reR<ԁY>`}!c\#e lXO r"|p"q&l5pAjS"N@KSzUQ%u3iD[L 00MsPbh5Q1J䄀ւ`8ḂpVAxUl,wb\|Oڴ{ZLT0}M҉SKJ:). \(apNXd!D*rM Dp(6s,Bʼn6 ^gWXCW.'IJY"!Wgl% \t.}`IH҂~oC P‚ @dFfz0bqo~*geƙ>BTYu"+UU`,ND=/ yv8jƧVj}f/UCLzB#6X"8^3։|-^ډ3D{x45~3b=>27N1֕z +mr͍ $® C 0G$D:g njf F*ꌱ@p 1Zɴ$ʬ0PLCfJs$M*mfgB^.PD)0I"("6$R!zBpVJ MW|'J0~*b[ "  nB Bab 4./0\0$0/'(VJ&bc C(``:1:^:BdOh^^c,7ZCê>#ۃ夈>V>όlfiF AL Hd1 lNdF C#BLF+$NdU|~)!h1 Ր B`% 0A Ce i #Q<wN~mV&  lb")'j(&(֋۔-WR2W c -&-.ʥ ( $1)%01(%X,120(b1n&Bdhc #0>x0CqC;lP: !1f$in"31 :DfD.$x}@lBAF :Dllq )CG&3QDD FTG1j2n PRRM!2/y"f0T\b1v"E' +"W+'kٖ'l 't[zR.a](@)&CP*1@#9Pj1(&,10>=phT.7d¢Č00CE8ImhE$3|GC 3!S0cJli&1N$m1D >g8'3р`HKD"M.NR$tJy#`RV41: _#7STdGpt@ NV׶ @C -YGWK a*^ܺ -00s"Ҥ6sS&`.H15(5n@&NU9e CT'T'j27h1.F[*1NTς;^nh cψYΐ51Bt"@U5&3A'vìCt*E05dCuL`D3 mPsCi!7JUD\ #Q_PN1 OU0as ȋ Y&W+N kٔS:u`-T'LR(#r`w00TKf0?A0o+^fuW'A B.B:. `^U113[50hmn%Z}\mKD~/sWp O]pw Vs 7&BTR_ B$Mk Y@;m 5ٰ;m"p'y'R)`x= vw,c1҇US:W, 1&;CDW0tU^֒xr$D(:}+L@,[q1v~g 3M8kKH$+0_ 16 "c ГJs bPS |vQ1 Q̅ExWSyX)@0V51(.nbcaÆwhx1vjz)Ws`- eόgRjP #%tpvc^9kx1ˎf,0+!MLK\G.O LR%s琿􁹕 '0oT#$ $y1*|uIp"d 51<(01`9]ډ$?[cy Cazi[8T&^1#-Gh1&[2^Dn츎7A &2k~Dc( ś֘5Ct$!D$JTJ17)X3^"! #Y71r'U/8vb #Wbt?ֿ~@QA0hR)c1_<`J#&]cNb1.N{h0P{ղ0`>L.0k[xf/#EĚ8m8rn$ĵ5tUo[e M1*81ZL9'8aלˁ1N'4#%UFZ:ږ`/b@)@z"`ġ3& t`fcp c1 oA^C^>4!'*0:1bt"QFSJMY_-H ;-N qH0w0L+Y1RDuK  Tϓ@+/06ņM06&Q|-̅A}c璆RDkDӜ@&О@*qf1ۘxi1Ļ0Tp(1-奰 rE3s'!c1* ]6ݝ>=E])Y0ե[6DD~ D7먺ufm0ݎ'M ['$ؙ:p0`%^1KpG<1]Tb]1 *+,Rc޼)7w{ޅ>f}ԙzCc˱49:"'M1100H=s1Ͻw5}ν@>jv.1ʖS7pKCٗw !'^}P^{$ ;cv~' "~O<ޕ2%1-1 u1>n)- -OjP j~"$AYc ,_ITM Dը3' HA5D#aB@'`'B`G CIIHY˗!k͛,3d&?mri'{)A5k j3K[L"ЮC@j$3DsL8:<|,Xⵐ#KLY2M( I%;ph= T=ϨT!)XU fSSeҬډݧ d"lIxnyh0IPSiAC$hw']HPT&Ai)NpuŇgLM{gŎFoxZ9PC-W(-[V V\JXZO D#Zi D/rzuoC Kw!, H*\ȰÇ#JHŋ3jȱǏ CyM(S\ɲ˗0cʜI͎mnɳϟ@ JѣH*]ʴӧPJJիX!ʵׯ`Ê(gٳhӪ];t+۷pʝK7aκx۾ LÈǐ#KVw˘3}FϠC9ѨS^0װcvݰ۸sͻofhahȓ+_ΜЛKN=ݨqS#L`i>oqūO_6A(ɱ_ 6hC :hᅒ!`Akl vD TBp⊆si(gAPN6dnApqDֈhL.P8PhMfTtO4$䙐[iT^~nyxp2Iل|ƔϟDCwQP碌h>d I)襘v(mS~{d*ꨚB$GYjBꞪjʙ[(B*ϠI Ъh,>l 5R6,4I&y gzIѦ &-AK~o)ЪK nMؔㅋPU,=̃=U= Bln&B6|Q=HcL2)[ J(gS4P3̼23E@#*C3-s=@_rAYc [4L2r=2E7fa H6( C4Ayד# STᬳ6T6"mȝ8Dyϊ',Qv6ppS5:2$SHcE2O1N<);~z3V:,7^vInj<6d>y~}jN8<757xxoP~+^K10iEo:p{@hCn;0lh5&R y kax@"[ 9NؚV h0u`}8/A WŞ>|^ˁ: jRj 6cw TA҉0wx9Ä{nT śD (ZtcfRNȝ4,1W-0q9kYVl@(3!BXʛ1ac M]1xԡjS7sT%D_"{-}{ =BŮ:"erP¨_oCq{K=:ޭNPo\ "p]d; >/@}yS!pn02v==@f$h2Qe`Yt jFi4ΘoFXzZ#x[EuNFܚ.Ĕѓa)&>A L~RסJWH# f2h#pwysqdpwvg PL S apnC 45 lw{\D٠ \?]d#C9&ap T9vg/ ]3 'vW~!Uu/ !#~P @Uxd]/P}Gc4@k6RBVdkzpI{Xч!~4)ad8pXkP !W%Q"kp'D&rWC(+k [H'xQX!*Q%qyxX,R˒WdXMx(Hk 2$Axۈ~A%kA.k8%&j"wBxXBx,(!~7H\P*e1ّ!eUUG,*i IkfX\"U紒8i1 [.9Y}&Sr,! qFYoa#*AVi&x0UueQu\(p;^@dS|sً }Yc1)hIÎᕆY\%<r2WJI/%2N,/xR)dcZ2E+wpٛW1ؓd8DkV򕾹QAF.j@Uɜ;YyٌgDƖdيٓ $YGf홟?1]yxR iZ)yYg9!dU~Q&܁'1o**Ibp1 .'A&!+)ٌhQ% 3qptT?z9іIʱtJ C+۬Z_Ja% 8ڬ͘#wڰSZ%T1[!4 +<* [ڮn|`7*~3 )Rj:K< # l9LTkj챱ꨊ{i_Ϻ0x-)>o $ [Gqf[ vzr ?&!+qiZkk0_ sx:*{˻w궙r'ny"x)M;"2j9Di<:Xk~/1!xkBڽѸN+Zk˵82T! L粜ُ /ʋ %]%ҏneQ+h$\K*29)2<4lŒᶖJKx.*v #,9!AJi"A%cTR&뙾bʻe\iwOl < )(opr ~̜<8%r'*Doqpyp8{AɅ9H@2/tпR)Ϲ#r!RYB\r˾ҬКrHrԬɜIH2\X2^ !\?qBǼ~LX79u̳Fн9E#9, M}iѳb)' A F*9(M8q -ݑʍ1(*:%x ڙ9b)mp(`ɟ^P9˨nAR,QVMikŵklrag=iSJD-ssYZ[myq̊%u2o0J*^׊mIʂ*,o+Cq x", @ȟۙP&)= mi؄xR+ `Ҕ ~MJJ0|-ݩMp]m"Ͻ=7덓ݏi=ߪت.0]?oٽ@qn~*d| RK]m͡-^%(ⅈս^?^r4=#L5q}o݄W%ZݟaȔB.l)ݽM`zhYU ^?N]?ŇQq{ȟ0"?ѡ91qwg$ (3Mߍ%AkK-ÉR2wnW%M0vP d}1}mE}賮N]\ZM(m?1t>mǎ윎. QQ 8-ĎЙa]rdNǨr선7nN&krۄ}NTMc>=ԞQ ;/(*,1a 7^u&^?̄@DHoňP㄀,}XI>NRŐ f i'*:\2^Ȉ@~F9AaքOn'2AmeNui# 9]prڊ0.‚PԜ>pt<#Q /"tτ/໼%OeL(ܹMC$Q> ^LjSQNZUYn-S_ÞC4aCCiCR\Υ[]y皡zxV (c%_ȑ%O\e~{ %K(öiԩUfuEא8zk2'^8j^X'[g#ow)벼6f`I}#饋r9hDL@:HLIB 3)< Y ĆP!RmCcqF!/Ķn}nѥ\j4H$n5@tn,9S=nG!E;H, sL2˴+9@l@XK+:83sO>J 0DI܌r,sQFuT+4{J@m%<SP Rig67k38䰲DZ:%PkV <jǟCİWdUQ chuYlն;&h=^c"mUw]F=,iR ]Svw_b{Ipk+4bgU-eB~vahs+Db3Z.cC(&{7چujǍI>|ER"@,Rz=g֯-!xΑ{n=%y❠t98U{pǼS58m r)`}r3VBMZ8Ss[͉E_F #(t}wDsG\}(~-yKiHL҉[-bE"22yJT~$6cdCІBɡqb*myK >@%Fl7R apG;*U@IQʊ)”2L𙍌&(j N%nrW(ʊ '$<ɻeWlqwXW7rv23K GMC9oMVucw -6/4:0R$e iJ%{ jlOTDBK,c` ;Jbhx0lKsz˗aIWeKb₨hMtS|cd5] $"(_mȐ4c$I Ԣ4J, /?|e#5䀘Ŝ!-ͬ$b3m6%G>s#ةu(a11_񡳝 Xd ;l!DIyhL')舫e7tDG3}<5K0k[}9".Ej\wa QJ4EIs}$gb Aħ5]MnJPig*_[ӿB4"%.ӆ1q|s0#>jJ!Zy/.B P ϋPL 0_Z!N"Z7qy-!S\5'?y`f;Y|3PA4q)96_QsϢ"2eɝ9:tRDa7HDH1.)tD8FH7B77ǂŐT?P ȑtI4**b𑸸I3r ҈6C3&I}"(56r X+ʴ; hA ")AEM뻅F)[#!(a'H>Cd˩̍(y{74&RL 2 iƊ@ՂLS9(r?H"۔YLӱ;Lj "+JDM˻0)iFM$#g$2|(i AR(:D"3'T;-+#"`ϙ1Bܩ6d3|IhA_z Jd: :-+)|4R 8ۇ"pʊJ bЙ8%QC;S#< 륿l m"5ҠH dY"ֻ+蟒žh"vR1uN",XZ*8ks:ax)7R@=J2RQ %mTqT ڞԀ;s˞":A<#QG$FФs),EFxT(jhJJ*S`5b谡RB\!5fT2"O 58TRGVkɄX97eWo43X0APձ1 R Xԙ0}%+w|!(ipVeq~dvNg;Ӂȃ8 ;}Phޑhb6}ȇ&hNܵMi>gif3ևrir邎eIiRƊHb\jj|hqmjjj\ekcnj.l>lNl^lnl~lȎlɞlʮl˾llll&fch&i"TX:PԆh:k(Hmmmnn.n>nl6ihn&h$2ZJ8]}H pX ((Ho^o}(.%}xoH  pk ^ oeonۆp(؇8(/ q08q/q؇hP}H}("PO߇(O%h}؇/0o}`}6p=s.τhs9o/꨾E ptGG߇JK t `sI4tRMxt@uu}[ׂ0 _ׁ}Ђ L`e_v+tfvh}vjfW+vmvPB+teqe^B.8t']e'ly/ |nۆopx}h0x@Pxpx'*Or"s0s=43w(t37U'Ghythvmv+h}u~;Hluw@jPdv x ߇ /8pxr Dy߇o{yF߈/0hyW|s Z `|`w}|T'JoeIj p({xPqeox H{p~xsA G|y8 ӷ`}TGuey+^)X4} 2d G7Ns8c;G,iI (?8`KPi`ˁ5Hps}9[,3>BM@1A??~:uG$_p@@I#t +ZgӲmKr[H_j}$OHpxe?>dGz}+`c]5|&h#p_uc1IMcEuG r$Vfif:hgihc[/$Zi<@ IRlWd!@($M*Io1Qp+ͱϖ-U IUERTPAu+-jՙO} T_^'`\)8>WVhG(׆}4d大8XX"g:piףVWIVFC-qSvGXV@u1kIJ*{K|T&I>9@7`M%rͩ@9RNEyէI懕{ZI{\RZ&i`c%XX]Ȫc>;sr48H[tf4 د%6F,%A}G;IԅAW1a>j TQu$q9V@]@Rv]ILq2yMG<ge9[@)tl-#YJ5~<* Ibb/ʼU#S&Y%Lq1@KotT3-䏴,Y#9RmcmG$FZ{DI 0*LCWIӰ N,Sg0AdFBLf'Y)܍$CzbluHURՈ f=.p0҇)u4Li0-"hS~䣣XIf>!YmY#l7 fBf6m"ҟE#dnqJ"/rWOJҒ8?)s6IGn@xr >Jx,;+D) -8XP#JS B6te"A'aHF(Ih-oH͠эa NFBjrwpID23KRd Y,Kh"Na2aP)Q%hVÈF4ޯ2MDQҵ7d@@\l W0, p|s\&[jڦT^o*'d#MdS;4"@NO^:E,Y9-˕%!œj29Q@ ]Q"'Tv k\aE4B6̕lU] (3g_s{ǚmM~qHGsBCsDٖHyc>2c>nTI#X@$} :Y Kg T`o{ tP:۔@N텀CéQebD挊e*|9߇*>>(.>cE׆m1u5Z z_p\ RU$ }&2W'M7}*qC<[T,\#\f vFon[ceO";7 2M#{<̓d/0s<|#[Yj.{$Eάqx[rEm{PO@, !TkoK"'0L=O D%$ NIr,c=y Jਠ|Qu ^Xbb-\Ԁ[ UIt aȨDD8_  xI؊8Vܚh4S1V^ XИmjPQ뜆Z7ma 8 iB]FkhM㡞LѯlAOD9!\M5k|n m@DTr-_I DKNpԄ\XIęJIs$Xި˾Y T (ʩ%Q @X1@<] bIUu -m`EZ @9 pb"i̫ A1zLc PI`cm`ӱyӅecHh0u&l<^Ԅm6^6.!k:l}HpeJ[մMdQFi@ƘeD]E!IH0J HxIREH wUOWuM( D{xQL~G&!rdMP{)-GPx\)XB Ѣ d ,~ε*rL X(JE-A }SF:35Ҡ0Hl 6]AxfxehpŊgl>@Q[lf^xaլku@D ;ZLE@UmFvDHNHEpHΉpRG ")F\MHYudb&R@p"wRLV \ Y%}ZZ>hƂ\iAa7:fO6|cNZaN>_,]7:`qFsBid'lg8^` ik0ɣӄؒNFF&sFE=Dq">h^qİ-&(lf zCZ# fZ\ր>^~X݌*}֛p2g(P/r)IlfvDZF)-p ?RvFqC'GG&w'M̤YRp_!uDKH׺JD߂b̗L|+5[|(J[& RF뺫ɤ ĿCbrI a(VzSP[6.JPg01[gmZQ3)~&F:e;[ɓg<›o/@pA kiuME$oyTaFY}!I8H,GuYMɑDu2 J$N->mW~>DVLeZXM.]a0 zbLDFlI⚔dEF~D>fbV7g A;ae >Xg)>ԉx/[1As5wrfB&ͱ6G2l/̯DFٔH}DJm%+[IljۖWZ2yrRDÜGWDTMkZn[H2bY]V_ @e,P C:L gT6>OQۂ1=+tAPb܅54ͮ-_.ՈRj ԰1#}iIkL>0dKvŎD񜎱]p/G-j *eik טl\t(Ko/#F]睒@HG~wL+\F\%@HpTI)hI'VR M (.> u,߳2UsI0p+>xZG3bIu`@:WeY8/Mc ]a5q# J@]["i!f>)<ϒ[dB`YiK:9d\AJH/ [mj7Tor FY"3Gm.@,$o'wwQ pϸw PĪCTwkOKUṳVLRx 3#1 sX-nI@hII438lDwOI3ĿB_`_ЀAଣDLC@IHI^1Њ6sαmg9I1Jk߱yksgGtrGmFφ/I/,2w˹GY!GNO@2ۆɺOvŧNODMWV:j+IYghPzg bE }o O1# p}jF9#Gڱ#g_8u@|0b4YgN;yx 'pBGYyӝRk*DάU\zlؚ?|R'\#pMq[u!N1E<[TO(+fీzDWA[6gCka 'Ƀ4D+1j!9sB5Ќk*jqP3-K^{"e0I*, !TI Zi2+ g8!02H#)_eG ns_l&,$<>Ş,&ȊR˲'U[ ӝ- F$nB+PahN8 QX\z$#u:R¾ '9CKO8YC,q!i Lp}Є%7jPC)O.SiHXEQĵ=cM3:frVޮĉoȮR;m 愮gbQoJ$V hHlN":wӁ[h1"̱5s9_gps 7WA@A{?N(x' nCy[r аx!3HtƆ2}ˆGR5YNbb!0aƞ 6a@gߚ8Y Ύ9K, [e'CQ񆉕V S.}@  .T at}^UN̓ukI&B3lw'~H A"o4!.sNC7 +MLd$=ɯ$aN'Hm"zشއ'.-NqUq jL g㎰z#-eהx罐!,BM6iuh‡;E5OF+ Wp?kn|>`!;!Vpb囝pNӚrNNbEK[cs>]v@@xH~Huys"5st֤dLYuĩ'ַrPK3kp5q+e>P0D \ Zt30V*qm}q'*]9y~|Ӿyo Kj#831u*xU,-i=m1h qϚfz>Ppډ~YDC`Qa8' dSTaf f p⦷b1A2!Db@ -e' #Ozbʂ  'xB P:N rfrg.毾)Qd ,̎P-©v Ā.$LAh'Dh & /1Oc6k6o`7{7888a699:S:::;S;;;7 <3:@ s*a<>S>>>q=<71׎&HgPrc¢$ 'F'2H RG(@cFpSg!RvhVT'; F@@@/zDbDsbHqq4BqpVIx0'ZJS's!, H*\ȰÇ#JHŋ3jȱǏ C>$S\ɲ˗0cʜI͛$ɳϟ@ JL6 5ʴӧPJJeKjʵׯ`ÊKٳhӪ]˶۷p\Fݻx˷߿UsUÈ+^̸ǐd˘3kifϠCV\xӨS,װ3ASҍͻouMoУq UQ g ]]I(,wۉ4DqFWu!u^WDkF&@STeXfdNNdf&Gci暎8I`n?4T"|IVӹI}Mwm1Hѥ@vtVʖgq晣݆kX@yXjgejPvAd()ZBe믿FlWWTD6+Fӆhq͑v*с@z;Fu GB粫3tiqNw+)'쒿:eUg𻙆nq$: Ql0?r>՜G%$[13>@¡hChM=I-4ʨ;'hG5`ڈS@=Qh][i%h3n>dݙgӂ><Z@t=/ý8]8\}ȕT#1#%t4Sy=̼;3E@HO63G wSO6$ *ϵW;\as;L2"XC 3vྌُ{8&=WN99.rK׼I І֘7Ѕ1 cpp0 ! udҰB28qCw(|Q(A;a 2E+^"\S"z  >0xAa dEpd,p`0K1! *(q T8DΈ#4葍*SF o;cC+%BnQ"!Fj\|֘3\0 xJH5$cD+0z٬'Iy2ʑLeK="}

Sե 3v-PFTQ8/vg䘭TUN ;VL7b}y[<5{dIPҿm{2oiFoA#f8cc\e{DЅvZ?__ ?ޮO犿٫X|Qyw_gI cNEu^8{V>b%Pwp8ȭ?''ddrXχ`` p3]XYyyrO'݉\W?ƺ{oOJ~<f*mX`t&F?gHa|޵?O_OBg:p^?6G= -˻빎N28  Ǎw+ujy+8^:/zs;guoZ Vovpxz|(TG_]٫Zq w8_Vo_Z̩+(O{gc!Rz~?yď!lnA4m]O-[Q_656j-$H 1Z$,K$r1#Y~UAʱ ;~?ZL~ m+t8<5Emk^Lib7:VwO?U' rsաZsբM3r I! d@HW+ 1,c]pᮣGt?%&_W24,KnJJzVccjlH|Fck/ٿ!]ŏZDW?'xOy3"8oH^efo<#'Ajm?ay:}#̷:-4+2),I'h'EN[SZȿo\AZ@?p⴩/ScW5NNKg9[<u?ׇT?‹i,9sJ[vPdj"ISK!;oz= 6w 8@Y Zd.4J!W_:ubB2O*!t-3gMITUR@r nˆ-1A^Inq}]Bt5#x 6T[@-Ey"ONs225c$uHt~?sSA5eRDVW2sg'o2X>\9#ךW>GeymiT~˴mWs@ \[E\ ^knD;B5ڔIȣ B&}1%L3FA?(v|cI{SȏI/ =+ҵd'->$eKym$Is <1fe'$ʸ7_v>{F\U1{6q+;"^%b@_?Eu!i% kvC:{[]ޕX"1yvn1ZԺf#>giym7Q%0?O_y8v[g*=VWf#F-y )ej߱ʷe^ZPd#8u m h+-ɉ(F=z3y_R3]\+Z'Cz#֥{K IvX$8#r3W *@8^U k8=J ?CW*ҎǭKdI=><۞?K)#'ֺM&9<Թ;*+^R-YnV  !_fچ~FmB꧁j]ƨqʆjFxkQGqkwʬpPozqoʪFrAqցGqot/rHy"KyqL54D5dWSNE$PP$9%TApLE}Q` @AMAVy`[ՁEV`$`EopX 0Ʌ4BF 2qBa: Pa1` eB`>0yI y )B1Q`P,~!bãp(1~ëHU5j0*6J lժІfJ }#,6 قEVˑբV#f+oȤI;Au,P]C= X!0G(aVɁ` N60D D`$ceHN&XD6)jE1$-,`'iRlm)YR6=*@܂!UYQ G l12TG(a,px&(SLVXfG"˄F2.Θ@3X 98eBtR`<';smXP<ӍzS 9#x#'zyAB |'9+n hOF}AhFY;- J$`<-|>::HB 0"1$ebA2!%. LZP!j laOMb ePAB.(1 wS U(L]_TȨ.P`T/^/ QfT*Z ٫86[o6Zc7 iP -nqPJMKY¤5/wks0}arDEAr EHdU!3;>!L@&cؼ I.@21S &\f<H2P%;@g&P%of a><70h9J&ѧP5s`β n-_BL-F1Z LO+c ,B @7NV:GwK0Z` d G}Lᆪ7c bGV6(;qNsc8#AqF>(tGO^y-?8bEY3N( NT -Q!|"8`qJ\Ȅ]r5̄8&QACOtatuDLQYPExà'-xZ{^.׽mՆSu#MQV|<*gɁT~VF^2W&>qa^)rgd ^d/wxhb0D+񀈆+x̯?8B B!$!\6&.ϔLY :!E2C-\t]YMvqά$:[J;u Tm%fZH_ƒ0P@1U3SjFQhtF!71809V98e AT#pTPl3alWUv &>!;a% كU6 LʣVUa "KHWl#"N5=> ) ?ڣ?nO/ZO-b"(7$@s$2$.# AE#;>z*>ƠD=8>Ko⑃)T"U=~e=!! YvQx=a!l5;rY!=ܡ)9 W@|<O@82r?hr@ Ȉ0[ P[[\ Գi[pC` `p%`N%ȠQ ` U@` X u:'^(U`6*2av`f*f`tFR+X`y۶ ,,k IIbbH3HHn-0F/K3=0K?f`J$00QQ|j)!2WaL"#7e&4fN^a`7w0f;33E hgVWRRڒ56G@5 X1&8TQPrs$E8x)vr?`:JT3Z3,$܂="lφSЛlꚄ1VcV(;.V@ ›#2jo&nî&%WQ=:%XC@\E#O`ֹ#@,%{#5Z  E#Gr[[`\`s%_ `g%\0^[ \@0&A$JR'5B'=DA$'Das),`m@Gl`~v`l$G}*mԶ6x~;,3,b,R,x.jIuycR| /䒹/&//IB {B ]:0Je2LN@9q3&f*3%3)1io镞zQO|&29,eNo36@sCc7Q EQMYz14qj8ks!pn1Q!@99pPsSK>!f&!=Af9*$ ,05=Wˡ ư\X?[ذn֑Tn.y<XʼnUv%=c.|Ŕ2(Ź! ߡU_8@'Dr?q@#,YӉ@8#4T# A-ZqsB[(f2^5`&fg&Չ4 ` `GfCV0^]%H)`tݞފB)Eu(]ho_}߷+췫+-,D,a\b3-TzzH.ʜ/zcdHc0\dy3aŧ7451 \!&YQIqQiN3V!1+}Q1/PAe12O~aj_1P&iVo6]N?k~CokT7V! WP?-!@k{ ,c1*0%@1V955ζ,ͱl)m<Uy=D8p#MyA&ƞ0d!qS! x':HG2LCp Q#J1~Ƀ55,be˗LZҦiT\B+VXlikN`~لY̥[`ۅM]pĈ$nWa/] O āͬ!wq>98NħUy8Ef'l8nX N۷y&qܩSGu9rXs:z9k硓gR+#x9ٴ#GH@( @ @ 8 0`00@$$ *`"<"*H  *`1HP(   8): d1. <2)`. @)&'b#<4@@)HĜM (ؓ#Z}> 0ȴ x >8@T`@}"(: (X%RXpH~e"`XR1J_qUgj֡]12h}"H!t#e5a٭cm5u_S'Xh!eb_ :H#h3D Hx'T b򁨌{ɦjd`)0V0j ,, ,+z hH+()0j$R+닭1˲43pl6,mHm<۳56{25@MNKM .5n-6l{8┓c8;2T袳3/EK/Gңc!;:D`'E=^ Hx_@0Bsx',B9ho t }%E|2?.0rO2IE/M( lJNr.@x@Rprh)NDʠ&p8y -p8M*QSU X *V! S0 T0 9P(ފ^U jerU\y//2AalVqq!b5D Q/v%"cU*b! #"FT@"A 򈃂L"2+4D$A 1hl&;G`d! <', x…(\2iRϺ,(mhMQ ^6 ebzIEda `PҬE.sZ)6\21Ccc101LvɐA7<0IaT;QMl(J95ĩ&"wrӜa+ yJG;b::'==X"@A ~*ʟplH~U}<CTeх$իt'Y?;:@ENHDY.0JKpЃ":gb$B5o+8'ZгrXp ^@hU W bM1S*@܃ 8urg)` V0cJXH#XꣲAƉC$\6ɶ|޴YBeRpSBp `e6)q ("D )#U:"B{0YdO|EF@ݕ,1w[.c]RZ? tYu u-D伪J/F~*L/$tx$AI+mN8a CLld"4i1P01eP pLΥ|AĊZ4ԣ 5@rW0(y+2,r -29hfLȀ;p7ml|5| +\JS6`ю̟7 9'C}:s!ZJ:9":Xy?arG*(Q3 1|x3>I 1HXFӨQ7+)ʜ4ב@ *I*9 @A * HH7z1R;P ѐ p Z1L&Ġi, B9!*<21y !!/B>Ah%9C/93j#-9OUٖ8σ(&`.$Á+PUa..KʣYZڗx/rqi#.?"p x"x#@"L Rg$;ۗ;FM: !0%0Q Mf\ H<(Vt1c" "v̄O!OC Q .=!'L~ԁ.3G0Rf`Q|Q.&/t I,54Π'3;S5X>@+63ˎ?)`Q3@0T7ȃhJ4<>Ή<hDA@d]S{ *hTA@c+6j"9쪨J9XBhL W 5 BIMl* 2++Q," L+,\L,89!N=Y0X+J;C),-hhj`l8{97y(.U\c`PH$9;BR99HP`eSEjqg0oż/A¹:Fv0f $MɢHHM9QHuȢ}jtch(fdғ8aX*]`Ң\v4v < ,8NROP -, q9UN8^3 P . tjH3ݛ 5ߑ$Ҹ 8FPm>TIB‰> 40U aUWm LݾY ?ϩH)Hپ4AeFx?(< ؄bX=Pď ,6c[4̅L: #Aom;AA8:?9V6@# #M˜%"QL@ (V!+ 9cГ: B9bLc{cEPNA9dPA- hI!Si[ުCQx`"B(.Bzp%D\HsABjejY& UZq;cP>/@:A0ZFy!0q.qy$<99OLJbdӔITSʈVQsjV%~' 8 Y<%%&1zV؝<.Rf  R.c` OPO%'nh0㽾 3ݧƘh(4II1 C Л(9@(Eʤ7p>U;pJSK[889)?D0GR`MlK.n)).m; lT+.M Mu A#aW)~%4ڑ2"I\aKnk+2!L EA$B-*D!cb1I!u "BH-<ƭxYQYNc &0B {$VI\I0b9IE9SN(e6S.gd ;haEFzqHJ," ŤT0ha" OŁa1y0ܘqhl1@LhR)' a&`GvT .Ȃ6 -2]<.i~OG#3ioz=t^ޣ ai靮V''B(Lmջj?;1jrZU ȁݨH{縜uk9 <@fUB)4aDPF҃a@*  6iR:ِz7w[B d@b Φ@ӔI* XZvl{ 41XL&2)1 X B ",Bz ,m??&I,Hzܺ!BoQQMCPJz"e$ZpOLc[%#h[b.R_[ٹdR"SE&0d#q/['HPp|[-ǽ%/'&xOMZ"j"Lr9HR` cN טcSznz13RR- ǘ*eU6-1|00ń0]}^6ws-^;+0Բx"3BwITL}IEOt@˛1y<?Z=`;V`9xెpdEBBu:܄?b@W  $H pˆH@ +pF  00`$*\8ȼpwr^! \0 &\(,LMdRC#(Lz  & jA:L!D [)LAÀ-BZ -0Oa2D r0iaΘU0I8`xOR `[@ &ğ,1&{:ٕGg$EOVޛES0\7эB?ANn=IoF q9̆ LHlŅ Jho9{O{?dI-Ċ,_#1c=3CCD11HHf%udɖpE&h*@ @pF&aC`ŝ[Ԑ'vnE]_tAClta:(WtaFvQfPƤfᩧ)Aƫkajz뭶!+j!qцslpAѾV;uvQnrxǯrȑG꺛" 2+GrAt+!b/{A#{l&{r )4@ C %"P9GP<@M8$LX$&IPUq`AX p`T,}U7]d\PYSpLZPMUaWuU[}ad!4BA L5A wFyfLC `& ᳱzO@qSPo-o\tŇᄽrgqLlLnɦ]'8߀ ߀ 无#(h io_? w h)no\V!Dg2A b`(Iaҍ2H̠N~@,PD20dpEZ./ NiR\%3aM`ڂ-`Xd'; ]ȂGARjԧЅHA 4S E. H+\ɊXjCl= T@gMЀl>ɠu"g|ړ$֧FNBD$f\gEQl4Ì+Iā K\d/q‡`!0 eеlZk1AD"P2DAu c8p\.APڢZS fnR*WjlT+9JXpd8y]t& ZU`F糞QQT@+^` "cb5x%"胊Elz`$"\J z` H'DgmZ#N_"'-dNhZ;t{/Mj؅+8呺¨H1(wcfFWA kC(RUF٘*AȒo%2-5:E=b]z`I lCTbX"!x{}r A:$b+KL$ /)59q!A3'1m,m+DֈMbP''q U0oKELDB،=j:I@0MTEeD7)M0DVD<8@LIS)]E0ᨓŜZx`@:QPVCV|N hIINEu@jLL@@X$W  |`PlG,駱mt Q@( U~p`O ^岥@u\ȃtfGUH@aH^apO_b Ad٦4ɍۉH ]Ɋ@@!I j&d "j# "!N$PbL|"(W +*& hQix" Jzr,q Ȧ@~ }p8{hBpZ&}L`jĕ $ZHO-[կXṩH 0PÉ<"g5YV +5  , j,Ѐj $.b P\&'| Xb*uWtQXi4פtmW+Ѝ'ͩʭ`i*-|d]Q5Kׅ]~}խxhhR$=#K%ATAۭh\غ!) 9^9!D)Q@DddD2 ͒D FtNYJl N9dST LDh) |?DST RM@ʤh;QŜ^3@b=1h0Ec=o^ |@_0e4fHS2KMD@ipGgRIthsB2@ oNOp bH* A$A-m0P1-\ӚQt'2W}*bʬ, `u-Wz5#~A%mٍK3XNAL5C"ɋ%!#("Xn()"Ōy=$?EӏddDP@DƸaD^BڄCQx \|$PW܄:Y9HPyi_@:AE[HWFOELo[\`a @c\TF5He5TQi@P%f ƃİG,`o}F~4a)ut[TeZÇ{ĚrĆvfbp_=; @=P[(`&XȈtXGg|@3[pহG& C%a HPHH!,ɺ2nA34CH3$4L 0E> 0 , .8@* uVY :ȵ H@T `).b9#еT M蠃 @ , &궅`)&(q[Hbʝw(&r02_p)#nR'Ig+oZX%R !G#6`:R2b*Fji'p)~(gPi8krd :#:'Ljx聈z뉶!ʄ!a0!  @ M.tha¶j :s0D }"70bڟ{N匋=}"v|WW ㎺K5ۏ5 5[p_0;䰃 B;<?C Q8DQG A@DdD BH>zT!Ht .,'i)Ny"dȉ8LP YB1 iXC9yCAXD#IT 6{ӫ|@g7T2!!CxD"6Bnl8$7 F)BP?QH;!@ ̊Iq & PJRRDO~(IYJST%A(ZjA^|h~@L43@dcXHE ,DDTS#D50I4y[2:U PФ)>O2^ )b/AڥϊvOäCYΒng} lddJNABRȤ*ʼnNTO :PRT>QTZU^YVU~aXZViUkWǎÞE[@L_P V(zhG;TX9A `Fr8 "AGQ AҔP6NvV N=@Pә' Jy:Zi[[ny[ OPP/R4ChAl=qٴIcD#Y6n?z$Mlu6uPd"@ V`?`΁ KR@ކG[8X(~BAy`/c(,M8A:')D%ALt-$ZK7\e+_Ym6Ah]GYJ{fjWBL7Dye7@K/7M;H}"MO8x2:z*M9iOԡumףā yhYȋq ?m0~&$8( I+dH:Ѣ RlbJt@AKj QV.7;l2%#ba㫦v;?̔!֘1&^HAo6hBLJٞ2 Sr1i^s9ysAЉ^tIWҙtsu]uZ໶)vĽg߫^ѽ uDBuKD00>H Ki@a*]4Jo3W{sH%2/;sHiD#5mSE0S7S.A2`6/ms7"yS/SJ /6qB3kmvZ i3i9s%#vM+v%a9C &L @ M'7l'}+m|Cˤ( G$H.gzPD:.OM0(Mr2,mJ4W{$/2 r5 R0m 6k @`a5G2,pۑD7EYv#r3mY5ִK]!ppA6L17` n?Us񄹷$sIײ18H%3uc:9e7O/*FJN}8d,ˤj/Gڀ6操kmPv Aט؍X瘎؎XA.VlAK;3a+Sus~!ա|C B *01t1X5i a AZVJu#tt_! Y9QSC:V=C(,?hb7׾fK'~~g}Qyx5&h6AM6(8>vQ* &JCZGY.` R^n/13ѡy7r3Y.a9F7P1aWwz 03g!_ .5SZcZ$ X!0TZqW3.Rq9^0j9oz yzٍA7Mʹt9c  9 @6dk%j+gF*8 Et6>:3)T7hb˯{۷X.6rOa5YkS0kK-q[3Q._!^yQ[ v YA0@`K` Z#)vI7b[A9L?@" CpPHd{)ADkHضy I3vq+Jt6@pP 4H£\ʧ\0 x۾uW\<36Er-WAc<^[ AλFoThZ]RV"~]$t V3ˋT11}?C]1b`mM;\ SNMz,vn aĺiX2gxƂ]zGuzK0~jL@Կܧ\.?q {DqBZܮ#,ҙ z7G8`TaWa:07 F#.1s!I7r!.92o3[0ӑ;_b:g{{VbWrZ9[v@e7˺*C +f )*ڈ԰ۍ*Ұk^>ѱ^!!"Y9Pӣn@qKUB! -Yry3ҙA\˝4 TJ!HaZ:CQ_k?uY8ԑ:XcNH񠞣 ؍`k`Ŗ]xIaa )yK۳&Kbu <0… :|1ĉ+Z<nE޺m`9tidȃF| 3̙4kB6-Ν;9r%h2Dɬy&6LʉGΛTرg>Zڱj'Nx(HCJDJ\:!Eg޿zڳG^C@d p@@@ 6[~ ;ٴk۾;n8y32Ç1T7R׮JuMnJJaNsZBy1/#9m^E~("?)(Yh 4@vj$``[na~b"Vԛo9pbjRAtSAF]uUWTVyq\UxG%rTˆy1`r,2XtGHB "`{ )f hfj)xfY6Zhՙڈzg~ h 5;QM9 f<\R5Ր8HE7#Xk sfAVXɁ&sС , &B$dWX \kh H@ "NKm^퇌苑XS7ZVR}TDUأzl*7%2!I RBcY*"Kg b6S<@gHdZCr&r*r. s2Ls6ߌs:s> tBMtΌRjȸvmj6 X^U]oıwqVz`LɁWSz0^eq㻉^eD(A@Ex/x?yO!RqF4fz.WEEcT̝[]aiQJZytIR}S:#B"^e)W"xڄ17_}o}ΌtRmlݧ;uH?XqСGyO\-, K#AY jYJw˛T!0hNp$, Oظsrs1"]⠣B~ҚK{;E/Y"T.itN!P4qll'5'9m]Q J7:+S]`8*ˑbD0-F>w5*_4Q4neLyDNol+_ X{uR=a#y*AR׉-a3U"J1KO^A 4NQ*)d4; xs=|s? Ѐ t-AЄ*t mC*/||R!)S䡏< k26ۙD+ʁJD.R"kؕq 0,PڄN<(@$ШJuTUլju\TN)\vD!+ ~}ZҥI."YjV#IZ=BUU`/ ibw؜$H@; Њv-iO -ڈ=\3ҹoJU:9zy !1ԤL9GTUthYBTYm3(yϋwm{ w}w x.~Yڥ4weAҐuLcI$6+)$&c,Uҽ&w:*GcXQFO yD.$+yL$V:l3ƾjQkP {AC/0$fg&: #0LL  pfoۜNS8y&oMn HKzҔdRvdO皣Rq* $z ׏G0׈h;;0 pK#Y)Љ1NKXZTB~T3Adx, LԮlk{FtdD36TmZH /:$0 .+C30 ȉU,!|,Y1#d1o(nK|/q!_!) ŷ{\aD]3tCZ.e X!RTU_MDDit IH5ȸկk}MG;{y~9dǬNq"$_E$'9+E|8VP8lЇ>hxdb )HCU.6$C|C*>9aC'Di`yWr%CEoUSw;0z2j4jK.;L)4hQ+GtExTubg()y x,j_gxS!.QQw$Cu9CeuLQ*qpkaM)q(=2hX#!MUu"s1?*ê^"!9$wQW#T)->heHx%WKIBE9WMXI'G JuyH-بɪz4[Cnk.} efFDqh027jXPxSV$TD!4SW1N / y6G4kGqw95qٳzlj/Bl@;6~qot+9kgu&: vxEɲ id@A9 #)GHe]Hv?f5)H;vL-jCSg78MEE;g;ZTD%>gm x]BNU**#8Hes' u2\eIW9VIESSK gece˷7v٫W@ ۬H!.w&ZC^!&/DCD4 IM+x8:}v Sp ,` F Y+,^GWv9W[)fȡaA6CbBbkp;x\*ctK f0$y胮f I}K(AalՈ:G,v[W+z#4S;a0p;:0I:E @=bHJI J,ȃL؏❎:Had[cC 1GL5DD"`oSSE 4@[ ǂFNZ CxĄ˽|qLanQwJ;@7l e.şc,۱75nA;LRf)8X&CtNlvz\Ybq 1;DYa迎xʚT^S:q󝷊zo izs`o&\ NA:5/˵  E`劇ly!~C\qe@o1hpM:qԱ08p\xb; cǏr'O9aHD!26tH"gD*% $RHI*P.Z?p |M@`WP80B8>uśW^}X`… FXbƍ?YdʉXY3Ys#, Ǎ F!LgO˙{6|CR% x)Z%v@ %(0!Aǟ_~0@Ll7:;("96z:&;p!h㶋P$9GHqEz:k ePhc!ʥHC/IPCo@-K/3L1T@! "ȨިMg-%e8MrKTK I آ@+"V[o5W]w?$#: 5\3 5SC.@O:lBZ:JTkQd%GyE!E\敷>ER$7:0.AiCWB$8 9]%TZ5M5U* `:kk0 \(!K[ 4!VCB)ÑibD;dYC YWJ9) ix]E+ +OG=uWg}/,X| "\m8"B~?B꣏ɣ0( @*D;Z) Q]/ @QtN_f)˒cSτf4ɫ_ ID*51(iJ0yӉ~lFxD<%J){P2)| d./*+S\g-KfD%:Q@]&2("BF9L6iǥ"X &EX!dpߛW煊SB Te-i`W`'EhVUWcF7I-d3LfD؁+9N=0J(m؄rflNS$G r*OLmj UvֳY(g0Y,lҦ4fT,@Xjr95SӒFZ Q8I -;H  эNXjzLا]ZF :6 HSO1,! 0ȗ,$+`AT5&4ȑ6H+B1I I+xӧB`ƙ6>4!QS ` _AbW 8 (#ќz(P00"5-SL"P2Ɏ PHy0ؑ @TԺt^d̊9+;1Ȓs@^HTǏH;0F;YCy%S@BKl@ F]]HSTEF97p[, 8 [_{U 0Űʑ@ԋhNA/CuA xA#+FoK jX, ˊ!١x} |uٗ ΰ&'Z"V 'ʃ5% )R".,0ϫBؔQ4,M[:͙u pQ%۲ LYl; 5عLg=XX"tI 0ROGR,b9T[Byԃ (l(mY\u9~\[:PApM8AcQMâ!"!\1.10jM״o^2?)/ i4{M.03XxR7Hݸ5XK@7J逡: E;]2DSC/&Xr`$n뜸0 D* b#i3؁xP']-6X)cX/x%$Й*|_:Y wDG,c%JpJ+E.R1rm_ǨD)B8p>I6d8E()NaJ bb~0 dL] +B rYG/^ $D6f<^cd ,H,qyLc畆._pA@A0cU ر3*D8֪c@|\F ۅ_ˡr`@Ay͊S9e$UP}7j13̜ m&hG K㕲 #>aㅗK,3* 9Uf 4A0(@i\{FBsC~Aԥ piD- [3ݺ#c' \fT״=X}]МYezv0VRi϶\ AHm%}cQ5?!z(ѣRHC"GZD(] ABTBrjCm)eϢj[,Pj]h=CMhjSS $H $!  h tęONz5֮_-t.dpSAo6bTF%KJE>ZԢGN\r?+RA{]@=%E .]~˗ԬmVf@D4hAlRXbrRmFOm!")q0R"3:2#qT#$]ۙuVyg"^w{` (פ)B.Tam|Ze\fAQPh@ءsYw'kbN>HG(b&yR@!SJHttT)Z\sg".O{x)ޝ," _:%-b+I Y,D  Q SlLR[biх;D"{!w=RI"T$">$Y\n%$a)P:S"+G/TB&kC A,LC /3gmt졇`#%ȎsYUJ,B_GK~_e0R|QhBV@ dB,/@-ܷymn8.A"̈]9%#TT٫]rp[EI\F"/$)bݰ`kٛ1c&@A *HCkX:ᬘSFx#@@"l*$::)/rwW5_EwhXC /EV|"4_BwdyJF0"aH`!nDmH1=9"#baM!D t:,]#StVT,L᥌?QgQ0e0j\#wBjo7"f=O$i`IH (OAd'LA 6-eU0;R)svPEK.Nѵik{de1|+Z=ՔȉpCg̼@@k"7݉vFȁ2|X r,򔆖VM.~hT3%;*(ؔ)*! /uR7!@$Smy]ir ^o["A, ]j.D،IH.8Z ZM<+k=zًЇsE* *)1Ecь!l+cOn\9 BIVgڽ"t-@ '!H?}_ j;eL QS$DS@ xe^䣎.[>(jл1X"qsf)a$=_cbs G dcdrpr"h:cg^ƥ.}2Ɩ8PђΟKSЊwv<(Xy\*Gy_\-jɗ`h@DEOSh` &ysJt mB.aL ^ \Ll؋EiM㍇{<$B|X{ŞYl%}, xHC P  S!|ćQmBD QGիdJxxG){YyGi|lGlvT,dؔ^CH< De*=&̚`ȚBxeX!f (P5]w4ÑG]MVĘ,< -!_P0YAb:I ġ ! UńTR$#TJWБB̨tzFl!> )ؕ%pƱ(-:H:JNO;]X q͚|H \Gyx`@d5ї%W`biu h] C )KeZ̖yA?BL AE\$)/ !GZL!⿴A{_/L~-P~Ր@BAPDF5ejL.(lܼćH {$y,EA.eYDR.|NZ$<4ϰdؘhॹ x#*l¼HT A,HJ" dyA~5#D"J`_ 8ALX Dl,eޔgheM.?TȚn"ec$,vy!,z#@}iFB)ȂPL@IHWVHȈiNK_T sB$9Tž\%,(@\WV mMi%4"'(Gf%YXKhQA(BDȹ騒*k(,HTH .́0,.`)}TxVFA`i؂%]SWHh.^q: ]@h,Ț+DjkL#xT(iSO A0e`(N1BJ()Wt,X,,BU,v !O Ȣ h빢lʞk*( g{ ܭ|l"kw%%EaI#$-!]d¢aD]̊B͂  f (DXWVfĩ̶nٸ("Av~#^ǥ$QB½_B3^S)P)Ô(pnb.h .At;MؔB9Y@\m.&.QR,ϸ㔈Ri4#%Pn E(-ĂPb.\.B8݂&ne Teiү힧T!R8nݬ]~fNI"(_ |OY Xd,hy8Y @x=6o l^,ˌD~ .\՜ձ-*jSTA|%M)p/A@MB؁,1G 5&^ BRX$Bm<8o>Ô w-XFٞ}d҃Ӈ3|8lO8Aj#xB\ QZЅrc[EW$. LI}J&.hZMnADʠݴx!˲b0 aAwx%|wjG`T$w\0JXfiEJq|(ZVp /(uk  J@2yß&A#A#A>T"x$) l!fdG#wsǕcfA.Dx+ۢaސ;쭁eæo 9ā܁. \ I% 0[W)hB&}.tRpv%. n79Fʬ~m}}Ё.DAM@@ڗG4Dۣ~1lJ*{,=,{&-;WTDkcj)B=tIi F *~ΊA,A,PBpMձ2(u?"fO`;AÂ@3p8СCV)Yh*U.-ؐ֩Sh",NTf,\bŨҟ=st ֭0`8%p@ $P 0ӺkW_;lYgѦUm[oƕ;n]w֋״I$GNt$0N<ܹ3G2:x:%@0hEKB,Q9l8^\n)j @( xrq xO%l'R)/?c?+CF #7byD=Hap$ZYHe ae\::єR@8#"XL D]p%XlĎJLESj <: xl(Z( WaUYiV/Ò,l2ɾd#H i'R!P:@6uC8\_8YbO0J(N5;2@»!X)/W/9cV9c> d$>C!E E^i]@"OH1C"5ѓLJz2ɗo:#N[^Xn r306#>C=Y( ':ePCZ=qSPH$ 45c?C8|Z/զ[^/k3S;?b1#;sRR rK!d@9<1kyYfahFgc_ŖXІX'F9NS` 8QA n|@$KmӘldG8b <È)"4tXHCoY@{ 8$M7"DbmD,=b͙-*)_B9@RL: 6Αu’.Jvۖ5df#&<؁, +DI0R ]C Hh3Yb9!2p#="0!:,j+fЃԯ j PR$ E!Le.#`H-ѡ1B#>v Mbgs"3}I.v>0d6%:\)B#-~/â`XH_F@;R5GiAKa<0"!70M 5R@C2dBq-4Տ)Ń)Q8D-J +Niv( Td1s RmMHͰf?_Ã=\SprM3,ZEHsE5E*>B bg͈F7M8qj~(&T TfU"ti '-ڝ\Ģ iQ7.3L:Slwe7(bTnF0Ԅ+!c@qqf܌|DPlO} 88+"L ʀp/Ѐ H϶ͫt$Gbnk)B0 /h  Nbze Z sH(C!#47HsX Xb'jQjQ|afPrD.o4l¡mlpP >Xdaq`'hZc!/>gVD~HDDpB`gD (6 ~D1*Q*b) 0 ` a \9d`Nfn %nKsh`BL&&ftXO~ F%͡v)4k0(-"}c! ahʛ(pd`E&45!nFB<}6$j%LDt^ C1da).ez!p"*LGޮkzGG&G0r+RX#  az ]*4q$r!,B@B:} Pv!Bb9Gi8f%Q^B~*Cn'v HFT24ESH0,c~ ! 9frl4NJgRL!Df$H !R:ڎw(_s;(CAtxWγ eo ]'D| "v e͘.N"l}1$6Gd2"b)Kdp8H!⠖tTsCȅ(:$6,)5ʈ|LHprBOf${E !T|$rܲTtR)Vqy2F!eZepN6!fmft* wmԧ4FT؊%1I1j#@_m$( `G+y$K9"+YUJ|>8cqU!N 9˥§\|hAg A^ZE$j]q"7&Ӏ4G¶)H` u$Z!6bDIZ$q@@l$~\A5ao"#"];Ϯ _btJRu||Az!x"Ӝ*. )oƭk64uKb6jR7ZUs 4}jR;"4gACiJ^*9Ѕ lR\~w")"5 +y ςjZZO$[|6"7q&Bt#$u)Dh$r6!jvbb &dΎQhA`))8H2;+53; +@>Fhr0>U\0pMv6eA>Cv5RRL[6$N+5^sf5(:~"1%!9( `z2,*X cKk Cz#3\vA!f~C~ç$?!!h#VB#麊 4ftt)`'VI oF8k'`x ܈Ʀ"  wydm,Zg "TDL8F54z3:sNn&f$~!h}c9p%X Ok6&RG&bF%)֙j&WO!Zcb]Ad{~7ͮPhҜyf5L^ʅ Q&+jYێ:,``}/H`a 桡:j9 d3Sgh!džCr9@W"يH{q}\@^q~ (B j))`(9*`(Ӣbϓ#ÔUfq4U]fmYhAth׀H}F 5ċ5|7wNR^Ia9H5‎o(GPn w H@TR/D3FA#A[6nMmOf /6XfrRLC27'K:"Rpdu&oQp`Q*<`YPHYDCI!Lq n\phrL /W#P7UfD1t_U:q \Ҍ>.{% *`zh l?t-V=\t ] blA &;T!T?#g`̥6 4 UF;+4{a  gPbbdƧF(-ZjCNP5dHg5F`Q X?Z8͕;HN;&@=عrD;2o8ֺמ%Z|$<'z#,"3sf.”R||lЈ2 _f`zuO;;*flC"#zɷQ {igHZ&îEkn}ذKfv"j t7^{۠qTi`Yޙ9qC%zz }>}fh$8X[0G0' %k"galAh_B!d$`)lv*> u%y ~ɱpgHMF5ΧĖCB5~f,D`BOdD$AbF5 ]˂[+|ziA&dA3Yl!Dlae#8,B.Շd" ̄U_pc dbtxkU)``K`p?ot? # a :dR$K#RI,USri,%ԩ]4:]h\IYq$W- l}.6x]#JHP[>µmS)7Y4_5(P2mo4~,(:\m&v:tJE X _L2NPe*k\ּK/AaA{;!) "I*2-4{)(' C!17.%Ǐ B``Rt,{/t*QQsƼ$:L6 par%:LEċUH?THS$GπwJЛldg:A$HGIq9h`\^2asJq+tQƳOqgMy ^\;>tQF7ZyBGHK7т)JL p'ل)tf.3d/^mċ:t']zIQ 67,nps{"8NuF!h'"B&H>AQ!>lWؐv?1":@ yO4*pS97nٚYAVp+Rv~](,w ,wy"t{<Z&zˆ!.Vv2,Ɂ343(nE46S\5$!@ه$FaJ9;V`YyE/py7eқn)7fPsUxbm>Y>In> WX9\=OF D90t7Mj S4Zcf@ \%]bg! Л} B7ϖuAbuˉ!"SRk ":~$n$ {@&"@14u@6zx*+ gRFVPz1ٛqq l E , )CĴ!r)M6@A V{ Hh k"F ZSqi@Qx\W|e&P&ue79,rzp5'wh+c'q2.P@&3y V!#"))* As?5(5z`Ng%nugXu}Y H  !t|"3sbnl52$K+V®afEZ6WYң7t`B;,h,AK5llgL-{U!iA-m72΂>H GnD:Nc)[#HE#]rz}-8^sulUr^1/`a0+ @;x pη̻W0^`,W(0q|FdBE-+s'm " A"lR] 4D4*@*F!b_I[6%⿼r!W5&Y9=ɌZ&-L(W%7a "Knn@@WoVW1Fhf-P+fw g芽w&b=[tаPJ>CUDmW /]PQ؈+ndм*o4 $4SP3Ug=6ɧ%rFʺ#KѰ9]EԒC3דY(_*'b4 *5Qw;A5Yt]5IYks0]ɣsgɄSveW34L4N(n#V0oBo; 5gL!>+cB&t 2ȼva4R<-"AOP6"s'>DcBñiTqZDOS}[QXgm-W)\qB=;Z-"3i +dI "aDOx{?n֩ N*lV0$ 4Y+ɻ`^@ C,Jsw(赨:Yn$M,tY_\v[{:rH J4.2nm0#ZEI]D/E*M~w,]Pl@ 3bzq^sCK+B|ePە[-ÄQ w9 jQebUJ/DM;۞ixDz fO=  uUEUw(wry@o''K;j` $0*0SKB@&b'Ȼ}t`sspf+y :-\epOm gMC>l֌&Ő v`O9"$HQӕ)҅Z_9?kMqë} } L m@^z&!R9HrbIw9)*&]Pd@rQaou\Nc$eI+y`Hd͚tYۧ^TPBfWmĴy MgW`pEKAH"e.S8 P0@ $FTdK1eΤYM9uOA%ZQI1O۴3M9Y3'yG,Mzn3Mt Z"BJ-ZDhG -U ڛ њ6LrAR7 5,R1  Xႇ^mF o'^qN/z5VY̙zu:wy'Z{ٓ z481.\ 1E=")s,Ev,C@H!StK(p 5 ((C@nDK4DSTqER5ȊN8ʭ9C.N<:(KǷÑ=,sD0 I$dy۲.]@HA0([ 8 %@*b . EDUtQFu 22C|>YrO1Hd!7wic Zp) 3iA37c)ȣ 8;$ 'HۓbK` HUw]vuޔ낌.ѹ8ҪOKQ:=ʑ=JMFYM61CLÂ50ڌMYhQZ6EгY&J$` ;5B`$:W7x{gZ+y,Q-PCPCHsLat7%XW\sOWZ…C S435/ fKj_K@" g 0#(`h#|r+5,c7ps9 ȯz9=ɷ2k.DH.&KYmPlEDZ~77? <5(\ Hr7|VR9dAp:@ю_:jHNAp#DԊ?$䳘,b!YC)1%dmcȯ.M Ep (N#SFw %",D8 \h ƏH !RӤf5I :Ub}aS r؃8b.C!!1BLhѻ++?V^qy`" x 5F2Dq5 kT#%)pX$pD9i; uBA+M:D /uQPJ)͇xD* :(>GI u#P4)hˣ4:m URUs1$56g бNG;vդVAH`) !bPXK #\A1z!ch85bƗL, ׂnut`}FP |k@JWW"F֔yeniXa.ހ?ሤ:bu+;#vqP\S/۰C@0 [#}v #(8NF6VUCp~;\GX拆]1 b^i_`D>+xhZ\b"E70r~W ?ØDM^,lQ c0IGPUi L3 3+͟d+[oWZ8=)C P pܘv4N.`f6ɼ@uH<5z4[ t447Ga6A2-@#@[k@#t`@@*P[ Df L#pqA p vA ? ";A&~;㎁ ۀv΃xӀ1x h\8-&?y]x#8;r&Ss@9k94t 9_u,dOz׷>/UO:ؙ^u:@ԙnM9~w]{;JS*|n2]$ :9JV6wig"0|}G_-beV/3 6#AEҁx+Л,.#H UfFCl\t)ABf菹Gz Pޟ !Np@ ufxJDGS3N umT6i#6m{۶{[eXL6L@qPrnKn7k7l+vÁh+sz7 s{#8vs9 “۸X9!ЙLџa.(BHh+a "*) YEHD.. #X@ VԈȈ2ؓ (X+=ȁh]AŎ* +3Bg#_>@kS-Nk=!5#5V` 6m۵GoKNy\@ǁd6,7iDA͑777Α\IO',9s(08븐s8 8I A ш[ ݚ9FLm8EM(Ss# b؊iW; G2* 8 9|J7ʒ6/ШX "eYA +5[ A[.( %ҜF3@`L*?CA\f T7-8[F޴M>\KׄME}PGu̵]LUj6^ab6GǵāPvU k]+s:W%Y pU1TzAUʅXEh)`X\"_R`,ӈ++Ր_@1S+ؖ^@ #?CS*7gLP4i7Slhāf?=WټM8stTƵ  LSwz.8PMG]6]۶@Q-iC贵@Unkq{mp#\}sHn'7xk+$LcHA[4hz#Vz3ֹO76ɒ4PhmƵܙ+ТBLĹn73B.Kj$j9΂,(;#c.㼃 ;Iw!5 xG:P({};攨Q,$R^qr,(GHDpݦ!0RU Zل^Xe:q=R" _3i|𣊐mYQ-=ʙgf#@fʓ3!LWIK?PWYL?VZ،?VZn>yG^8gO}SU[S@T>Hm[ x8c恏<\Aov`E{9{sH$&MGIv>Bi#pOGp\4N9 {cEx˂-Ⱥx-U]od?q 2]y8{ kMr;>ʃ<(((+.˰ȏ .Q(j-4J ( 14s԰ϼL@Y@@Ld-C(ז-fʽ35Dm (S{?sgV#PwTqٿ5aci[ 5ض`GUNTvLv6ar[^oN^8YuH[ADOk~i(!h3vO\L][:.` pSxJBck;-+,3x@F+Za „ 0lxE2fִycQNhXN:"3))r͛8)đǥ;}8"DrJD'GJhQ)H!*DhɒU6M%XbSB&)S p "xK@B ҭ7 `q8P7@}0AДHPrȧOЌyB 6lޏy. m  O{ 101 a 2!aC@ؠ 1hÉA8 A=PC4p8$1#BF a1 a5BhdZI%`bŎ\4BX&A% :d'YԉYdqE:)~jA(|ICeJjx^AuJ@8Z@W(B9D]11QF"ʇ"݁Tbɱz!7E{N!F4"(B" U !X%KNYbEJ,Z b ,T AC c$nPn=vvEr XioLQuIeF@l-nj&X&ZpPo6 m\]-=4mYtuA @&t] |W ~_׶z}b8qO>T!dXa8a%'򐉋8bO*9^ \IG9z B)KZx_vfTFx%B)f sIB\DJg+)wJ=:^A!hkZyezZЩzj*+;ԅhlJZ"@awCHJ,ء$x 찓8aͲI;%yP#A 'tx !pJQdnU)pRH1 h%,6=(0<-IZclƈoM[Ҵ1I]H_B2@ x Rl2kFXm8{Z԰5P`hњ4I9ء >aGhLжg!Oޓm*PV $@r ?| qZd@@hJ&"ɈDҊB78iaG?RZxUH~*jVfEp+e W HHz>Y 8>A&C5'HAj+'< !nhC *7Ż6ì",H!XHHL])i5!"Ch   tbD;ȯ OicLhw) `s1)4z&Vʲ 3@ JKgAo}q<9%!A2824ehG>Џ )3BS %dH!NY%NtS~Fx\Ļi t2h$e -rpQ!< z`Pz*4(HoP.UdR?Y#.ZR2S4c0Q&L9zcPg: РW, H茼& ;ȁx Z@p須P&6ATsUG0+XVX(b^A <k"]jhKi`E28(E(ƈDdK\@ VlQbBf8O4"ЬV,2HL," k r&dOsx>0*2d42/v@"ءؙ]:AI)ՀɌNڱX lA!ԑtdJр I&d @b^T \JO* 1v 5chL AA^͞7٫J|LUUa<"U%AMp#P# 0 W|BZd"<#@ yWBV̋#K@eQ]X`fEѳ`@bp9WY[MAk0Fk`(FnF(pa[n s5 \H ! bMqX@ NX]o`b<'2'yD阑d("g\ٕtEΕ^Ā5IAY4#JQ22KOA#4YAA&t17~#N@cCdAXFQЯDW 8dB>F )o2 +"~>eb'Z'X&ib;AO( 9}'d) e T:qADɉHʕuҀdAD}祤,th xg~q"O ap'p d1((c8#BX\ЊAAUPAفRPUXH%"շO$P$lGVrfz^T]<[T@NzD8KfÜN]r[tAѵ][LcTBF [Tv^\j$ #ug}'>a4&$CvG ti@eL&ǩyw8a/( jyﰖ &c&d{,SLgFhrbbK 8kElxX "`j+o.>B"8Dl; "'di2X r#%VODKIX gDM K@Ԣ J$/^0z/|fX|ATgC d4'4"64mZ8CACh((R!PtT;PH؁\ڰPrDuZIDȁ!TBlH ZZQi_=Hh]$@ F X-ox@m| `LeKBa}.g1Hc($Ek jldj 4Vƥvaynƨ`yh\\ 'M@y* @oc,A-G+caGH,] +8&d A')0`ԱDYdXžp&peCb&"&Y DD%AqJ `,%Z ]J1`B&^I Jug8O}6ƊA|,~R6,|&d] U}(hAv A|1 3DPJ#JJn^(C2!S J"S}Auٺ=-"N| fƒ}N@@&@&A!~0̡Uk"qft+Wss װoXT{>qAzmA]qIƒl\,+ I `IaE6\ @~6fl~TApB(C}3:`s*(Crv8{C$nJ7:C2Aw1zDIUBA#-ȁ`wHW|x$#_|#¨-!BݷhEl$ёc[؅8[ $ FX@f06 3 uQr)gmp.^.\EҸnIGb%ta=wX,3*QwXYv\j~V~@QvyoZV9{tǬ F˽dzΜ\!c+͕( 46 Nˎ&' 'fu h+80h<+0 Z z g\gg٪3&Ia+1pȺbpb;Ia¯ 4FLY 1-\r0K+ 3vF+1KH+`t1%Sn Nȴb%/@EKLAj1cC\ V+V^WcɖjZYG2sŐQs͛:qڱ'^|.7Ν9sSO>xC';xSNJx2$'t,E{ҳg=yVCG6=H)Rh"R@m pYf5dJT @.TH  A/0@ $;(@ &>( &H** 4DO?K !B 滠> <`A0q C :&@h`ZqzD@!?(J*?P.$r&0LKJ܄r`JXPN:KH('HODdAp@Kp xAdT'2!2Ty@LjSk!!b!|p0W4M}ZlRn%[f!]ZrDžpVwY5h0h~1a tk@(-FOd"|SA2" d6 (.'Ve/I 8%b )g.*ɥ2>k,+-1*ê 2иk 6x#/ ;̯:X FcMd7GG Er*ID8RPDYeYőG#X`udЃ =K `Aȯ@?#I2?9(k^; ( jDZB *4| , ~鿱 G`HPbR@di!8TRJP 40AFh RƤp0jԦ<)s '<` O`'iwԝA=Nԣ` `Y` <1WB4u*ԀB a)kU? 2a-'d">Xqz#eDmAX/yT dh͊ B!DD)ȹ>0X"`DȕYma @Pqe II/W$O<d#_ef0 % ̔uAfIIp@#B& cd:O0(ilZ"-kQUİ1.vAM !o;r;~;D?5@ D˃#XVMoQ@h G=*`mkv`TGɁ!@8Y4Kr&P6 ) Kx `bkQOA a >8خ0]4ЕzHLJWp` B(ceBuq#ZZ-w$V`,RݺX$a W!+* RaOZZ11c.T2cP}_!&P^ 9kfCFpv%<~ʼn5` dK9O1 b[=ټ6o&^l~^`ύ BЈ˩H2'8@.rVc7\`J#szCvK?DdyPDA'JA$Z` F';}BC@mCFEC~KE *B臯zijH@ dIBBG:k KDI2h MdLdKIRMF`b X tJ. PRE|.fX@EkeZ%(URVF!V%Ǝ0>2W ~Xdݮ,Zܮ^.qb%\[ea_RTP%aoV*a2`"^̥#d#R&d`/$B,^oʸ>%n >3 z ʰ--&i+B # `袝FRl R2%"nP-3/ 5q @(o&)(/ ! 86'*Wj7b!*!7Xuzi`?}|$, D}G.5cm-p><\ĭ 2:P\C->}Ey.|'~?G@ | H>2+FJ0 <@ * 9hLL@JJ$ `@DV@~w >$>|ʊD\53 .HHͰ J3I˂Ps0 J `Kp M D|@jK_ ` :` :K@JRSGP7񉞨Ub b@bJSNZ1due 3x pYpW:Z1hAB֥QCE(,^ " b X@ FaID_J\z>$ǂm 5C~0SF-ߘ|uBDGdFlF$><$@8\?ӳ&( `5t=+99! ָ 6:oNe j aiȇ.dO%ekSdK1NVVUcAqh3ꚥY܎e(!X@@hh!Hi[XA%R .l),\sV"`8","`^ɓ 6 lTo}t,JnOG%Ri"p"f2!@!fBDrbL曆yr #"fk `tƞ4NWwx/@cIxw x4xj(n@c(j>J36:6f6 a5:ӤRtvS+T)d'F @>mzC?G(-.=X9h_d *F*E'Ċc@C4?VEBm>.XDȱbD -D` 0uj3 a IN8$KX_K`+N7ekv P OTa[NhHjheo<W`F1U=[u%U2EU_eZ"VhZ6ZDǎl@ֈ8Z֏x_Fq]h[ Cj%9iu B!3`) V"#@gxd f$ؠeSֺiǂ)#T)hq3A &M/W#Aپ盝"LT)%`VlCm/vm Oß'qL9x%`x 45N#+W6ZnrF-sZ8Rw:`:l֭?yҲ?6Zx|}Xx oApĭ$2RG|׮hDؒ ׄJM FcIrZ+ܕ[' d_KJJN~SKhhNhķvP$Pp :P ˈ6626 [jHreUL%i2蘿pqZJ[v^TAiDž _=龜T>!"0 $ avb[ f@gvf)e~&o`)lel H3Ta"2AʝMs;T/+)r/Ml/@?#vAnf3ޙQYpLp>#O <-\* 6Bu8{ov:?ڃ~F xh=ZZڂF§ZGV=pvǮ2pmʯ -{\ @ HHvW}3GHdIJF -ߐMP8߀3N8aO8 `QP`9g Q4 Ψ=UJ=jes HeUDVS(DV)“/;%@}ZN]lQN]L@Ġ!`54 - tX5hИa%,YF Y/_NiEe.%аrș;{Z$R%;4EfϤ1&e˗6`Hf *-iLNf҅bƌa+r-ѝbSW+Wu;FM5cЌ!s 5ɨy 8'NusgΝѤıNԫTgΤC{N?_vN>}v(NF}8ʃhOR{ɳG=?bm,X<H`B О *H8`@` @y@p0A R@z@(ML"X,6 <8A>N _Ixx@_GhVZi•baVPZ@YfY `f9e dYpe tNpp, @ O cSB 8(LDBĤOh"@ 88 5 f &B D 2jE C` C BȐ >81xeC4 m&Np>-B;D BBbB^TkCaG [JP&[dUI7e(GEUIHmQs_ 2mORTQE]bEhEA[e`AVesVrW[l]y%RWu`bhAeqmɆm1ZxևjzV ipopSQ #A"tl^y߅z ,R$<فlmv2 b"!,"a$Ep!#op# ! "@e"$Q%nZqYc%A'GA#$[gD&'}2.r'r0=T+0uw(t+\C4DJ)b`P*"*"*Zu+"+"E 1+`FmT8G0G>`b R`|ӨDDn4F`.-vaRIHx[D/"/A1K0C\yaz2R{BFFA]` c!c! Pp29,2a!S! Eb>EP20"#k$-U:҆F>!eE$C$B2#4GbVOV? $!!UZleb&?9&zR(rrv"('t҉BK0Psx-JsJtO( t*)%v-8,%EҡE#EMEMD\DE`T 2.oTF<-O GDPqg-~dx_D`C@I^O/HxHBbgrB /q7#gLdITd0m  ` kUz6l`9fY HOa|9Q.:`@ a ʠ0`0yqWp~rgDTdC6Zgf`67q3iȀqs38nR19qW3VQ&l7|#k۱{ Sp:u=9msIP #V" `#iu@-PsWPXH$ K!zuuU .B$ #P(VE &%g$$Ar$!!`Xi~ȝ,BHq) Z5!A\M;msP@E'sEtsJ[O˩(SEDtD<* *b+ ,^^x2+e*.&R,m4GjW,fGւ`*c*s4Hc-d.B+tJFE xLJJdv01m!zG# `z!M`` 01  d2&|,!cL#>31!2۽AsdxA` ` GNʠ Z@_~bh#6L~OG~\f7qp։h7Q9"!SqiQRQ \ vCw½k^7:=f]!::5x0>== ` bn҃pa(ܦUS X\>\5%YU.!"1m}eUy;S ob(&HR%G ٳ!׳\ɔ&q9[Bn9Br'a+Xˀ(80P))b]U׋Nڡ#^yU+5 ,NTN,tLD`+ly̘]wx~?7xO$ݸ^xt2 fIY.аzԥ]J16d JI`0 Vќ1ݴK-aLK43-[O:-MIJMqn ˾p+ޒ$NL]Qxg>u&Oq6A 5hƌFM2jּM7oTFΜ;wTS;v屓%SG?YVǎueJdiOJ(&@NaXA>VX"V(!B2(;&<@:J&>d%ƒ,<-=Hq$X``@$ R#` .dϠ`R.`( @,3)`t v椓m9;vzCS?Z0ϽP@?c?JHA?< N@l p(p+ЈL!(*1FG8xšpt#'FB #qiRB&`0))y 0!2Q`"p!0!!dBdLr"h&#M[$$\X&d E B5"Y U[RhH)OՀ pl(\ shPXW.pEkYۢ&6 XY'RK~01: U V@䷸/^aKYzW`مb} r-,80-h 18@8 f`CҐ eB` c ̜DǺP3 $YAn8 2(> FB kWCNX0 l@ Ӝ֑oZ`9!C@4Tsp=`(@9cXB RH-zeX3H`r)$7H@l5 >ÁLLgCgÁ"A7s^"TrF앯td3DGz^G|;A7}3Oן ;l3YƇ?,h =pA 6Ą (2TPF.zL@QPy%5Qj]0Jz .ݩHFPL1`!QD V!Oh$"J0FMJUkD8*ڒpGNjXԤU+pؐDVUp!&ߵoqBh&uI0"2щaN%I!!\|ؠ-`Ѳɸ%&7a6A D0,-p * 0 lBnfMeA\fN7lf+ rxA!.B@C;$rCA&"nIHpҵ%HAJGPЬ%}ELb­[V={|OL h9{C`4PN@ƈCfdLA?.pjET.IH*0 ԥN*JDĸ$IRo1A7L$1ƈ $>IR:S\c*:0]MiSR =*UդxdMjfe/hY'X܆]+Ś.wKBoyj ƒVud0 IvWt9K+Y<21g 2'3 TP9DȴOmA ms5o6}atC< h7 h_&N4Boi8 Q F? 2 h4>?x )Ϙ@P h9 Ƙ 0m#j+ڱ7RΈAx 0# и (62Y,.ê)80 C{8+8`@aCCz  E̹5LЄLcpD18R!3:+뢁#4ұD "F)/;+Y#Q,7@p >4qAʹ?JyG M؄z ,MX GZ+֠ (b P28+b̨8pЍƙI( x ) *L+؜*CY,쀡 2 {P,b` -٬;CXЂY9D\!I!'ЄLNM'IIMy! (:" T2[4";^\!0+:E0%B"+;7/VE'/;F&FˣhL#;XQI<[ZqZ0JQ<)BڂMʼ6,dYڋZrGhѤe] R/( + {=y1wCqah374dnr@3<ӦI8$5si>>T= 4(J`4`49HxVʢ4? 0 X;>pJx0KɊF@( cUE+ۡQ+ @+d*Ȍ(ʌe+i+m،fM- Θ*Č)H dS`Xh`kTCPΑ돑c&`,<̢aPcl%xY%'9EY944" A#m|Q|+q-CA):A/y%E%"+;R'Y'2b%:j̔J 3-ZÕYO e`(\ENS`![$d+TaI]\)(M$,n 3.]2$w)g闊U2NNNUT/PU@R2kSp'Z&&> 3h?-A{R7 y58_A3l J9@ي4`'K.5?<(&J؄V5샯JX :A:`Lxp `bLƈH9q*܉ 渫! xf% ip+W} MPPX4\8Ci,c +#Māg`㐛٤%OFΑF9K| L(.3%O«_/01O`!#)V&4Q]tV~/":/$*"1;!{`dTFͣ0#TQg#4#XFKOJVړ\ɼSrMKڍ Ncx-Zd.G!OфKdQP:e䡧=&Osf.K.<:!": d893iB-UF$&bMH2"R+f;7Ҕ {#iDiF<T,1\]f;la1yɼTii= k.8qE Ö2-3I2R[*0]5NH QP@ Ȁ2h@kCET60-:KF7:jQ)!UVs@(;(W H#)􈪮?EO_GJtG?jR͈*zlø XW̝1H И6l`p㑋 ) x:{hsV !X|Ywv(6c;8a+8,@J`f%PU5ّzn¹Hy3$&9SU# [$ڡ7OhYd"^F.LH%jZ1YdGQfSfRQ<ʮ]EOIEXGR$QQ f%f//-.`ȕnZZHXZ(?nv$n,%ۓ]ٗ]teM,TN200SIF_=^ J=T5k?:^ԓ@FNm4򈮡UeS5(JlijX ߗ(Zit_~>`(Md#e͹k\u(+Ů_g q*Ҫ j-!@Hi4k֙jl!ZHҶ Snx#FC``cx>$S&3 dLƀ;Q"j=7_Ȗpʤ +5(iՐE4p2\dYl'[2ņ`8&_`|7~ĸ `E`$7vqcG#mq#QB lE mpb*ʠ2$`*Yt'?(mak{gggh'bFcFiovj%GvjvZG*vj%uZxG2zl%0l,8 K,P4QA \ЁB?HhtTT nj.!4L\pL@Д0D$Q0AQtB?Z0mN2Zk}PPC1YMBZWq]5T`YB sTTP]QBZ8,+ܕ_K~UN8C`)_i2 Uftհ{+[@șhFo`]tBL2fL&Chb eC DaB>W]']tA}z9u_XC| +'E[`DB*|GHVpT#Ld kBRd!iHF5љ:M$HCҋMiIM+ QB%etB#7M*:&5b jh2 QBDRI]OӥАCqSr@%l*UPZuøhaU[jYкXEH>\mu;J`1qYwD FqU)щ.d # ʈecF63 xLad HhG@0 .;B !@:" g>OpegCA@3 d(J>|%[cݾ~~,?B@oi3KB8A[p \_I1Opbc' >(\uFu |P٬Rjj`"#SL8 G7)Êx6<07[ v>]o{G>P~55hp O52?. @T(E"rPD1@OD:Z*f$@Bc@'ɃFra#F G%L-ذ SX]D-da$a90M키p'3a kMeQR`2H jb u?5SaG-IXz>62Ga|5 2V}`b5`8.8<*;}P擝Ջ B)He ZL 1ͦd$Z!S(B,A@80w3%'HL| -E)gRY$?Fϣ)CWfeՊB"7m]QJ[얮f[.HeŤJE*mLd@ tKMkHC=)g4t)ubpFP< ;ԙ\XSVn'83v?j]+[룽ۼ?zCu/64+' .C2#؀h~Vj(IYlR B$%I.8#L-h@vFMRJ.@ %$CiMCP wD2!qɰDDMQSQ3D1 {ԞE=!*H7e*dʾt#quN ֱX!ÂDzW}Y}&LG>#X!'`vZ)z]_`V @ lfX1%Ђ)$E(M$@WL<`4fDr , <ΟdTe.gI_{Nfs U\k]q[з5nL C)N@ WP|JW]Bcʉ-b4T,}T}U6- 33DKIL5Gݨ-Q F/h&@d_xPŀc.d[vhF ·9&H&u|P\p`F <O^qhBV&ԀUrg0âBxz`&Hd|t5ho&qH@lK/Ye &0 ,%")ְFC_Ǒۈ"̦6̲i08ʒEKLa€ 'N`(C &e3hШ:U5Pոq&\B=挛3SI1PѬ 8ZyF^qSϟJv1a|ܩTJ-#f;GҤ~#NȤ/sO;qÉp'NL&$0ar@A.T.B  `=@ "ȔN$:*!HMQe@@f5INn C 2F裎C TpI*+*J5b+ 12+Z3 5ֈ# ks,> J38 1;:+2j+FF-nKrXnC0<`G 9 L:$؝@`B>@  X; (κ.p@)BX/,4DMTB@UP!Ep䱅)4)=Gѕ2!@(KҘJ%+M%9 bBV LQԣjJR h0*T\B  cL ZD 8bh!mC``.QKT o-xbiPYްA/ZKf:3#V8"2n72pnsY33P2MjxsVdHw}sI`=X(rJdxv:<݁9!@8 ݑ$ppHRgB|,t @@G!o@$)tr*?lDtBYEZoGC X 6H"l Wlt)LL>yrSf+79[8`E8 JV-J=j_CDbB \E|{٫R'&;rX˺!e $JVzԳcjN`!];9AX<`my0?+"Qe≃`чA2/G>1"Yx"ɂia ;Nb]bXL( c '01@l"`Xfb[>de/x%mD.4(;+G pgP.U8m@5*n&ٲr1S e63ҩέĊҗ΁L`І~A#Pd3c wU. @4VHZ กn(9J:5鉾*.DJ:0羨{ (p.<0Xg aY59qϗ -'zMQ $&$,V>:dy ր J %H>%ilb8V<2tޔ-e¼P5Q)Mhae;/cxMo072`5dxE0&4,,p p*RWFc dɅ e,+JIL$A&zܒ,Р QTVȲaP*q+hjfrKqeXbfi09 l dMd%ns[\Xq̞?&1|+B?yN f5m\2@c?O2cƃռDC@-ECwƪ;<`z<% ، u#9v BzB Jd0D·Tg2}MuE&*&`IHG qG kGrG, $L:KVកMPnQP6WjOJ(%`@+ qX^2Y܋"T%QEX(OO%R04pTx@~l@ ~ TY[hT I8 $Fa%lif$} ؀aRLfv!) hF R (va8(6atf `TB Fk/.l" @t/,.$n`%pf2V t,*2$c0Fr`L#65(Cq@42<0"s5"#$ EC9TPDDc C?,d @`JxBJFhm9`>Bl'{(>zj(d XC|g_5Z\?GcIPHJg q KHDJ&+5G$P: ` N%|Nδ Nb%PbsT0FoHTSj` ER@V@)SUL.VAT%`>pXO>iz@f.KPB\E@\ %BE"$`F5 L"v"nKF!KmL [%TF-O vA Ǯ$xF q xT!NL Kb ހl̦L,Jkb$i$Kifmi/0j 1cPo4Or4LC&'r&5SR2:uB5*`A7`@ؠRj$;$F Aj;0P@2XNEe z`WehV֤NHh9؇tkE_`_IS^(‘l#B!n$ BIb,lbLib$6R,ff$\i r•Z!:oel fN!fqm *wg>A lf&'2g)8A,f@@˸b,&M qc'o1bR40/.#t"Jz+r$ 6 ('C'QEbHJ7|ؐCVWܰc2 >#Aw,`<u#/v撦`m( @6DC.$@*Bu nBWGzRDM(h DG kި$uJ 4H(L8 6V Dk xE8 NDPSث䶲bR1kQsBeUPSrvı9SQRqe\\.hToB!^4 .9`ގfJ4f0o', RJ 8foooQPjhbFbw)%BbG R(| r TȌ((BK+A teM#kmF".n7nf&4 q yϾoO @-BC)Y#z3R:jqWq0'0'|##|:t;D\3$;~CRC&Z@>d A(wcCX `m2>9@VpXaTPuF1SZ~JB* -6G5]z](GGD˃@0qP\ Na>PQd q+^(%_^NET_2B\DERS`SNkU2a+\dXVYVtVWt_۷/11lTE{B[E̒ llF Xɕ>a\ټdGefxT$~Y$oA@KBh(L%t+&lT,n.F̼N{mt51 %n0`abCV2&R-ќwrr>5NJsS7—*+tgR:*j4$;~@=@@*>>r?W aM_AM@{9lЮB7]0 Ix"ȬGVx 'J6 I;e:ȑY1E=^HYLNSXathS>UN"?# x`!0FL<"i!"ć!@2^!EB`tӖB@YcJ+.c$ 2OnbsK1l0&0]~(ժ`5&W0\ɲ\DON_8mӶmrw޽]8Ŵi]0@h &K2W)/TFը6^#ioиY7ibsFiqj>#F ֪cQ͛j?y;ǡGv*U֦;s=|*թħ;woUu_|p`%6\sPɀNItXLtxb%zb$ AP0@T@0@ @ 0dSTYX0)z)r_1Gq#)iAo"Yw -0A -LagĢL@裎¤9Hʄ-B * &L*Li9D ,,,8>? 0D2l&>$`10D 2&5 1d5nK$ . ^R&rEՐP`JBdR#PC5 DB`.I J& DVR,G)+/4LEI8dN5O.TLV[_t?3[Y,X[V` '\uV}\wŕ{ ^(m`L^tqEmtQw*aTV\qlFZjqnZ呧lvZqhǹ\pzѽ!|؁T^|w|}̧~}އvU G ph7W`~h_X X pb_It8Ue @@)eI Q)d`$H JG t MV #X?F7H&7:=HP-&)\LQ(@Q9P @M(Hb6E(RQRJpĪJA r%\OpB&82Y}ȝvW 5<?ħ;>Ow=A? zuuoACxA:O;ΗBtUF;J(` OKgLD$ T@D X H` $A$@?  JRDWL`ej!V (&ߛnXCei9ӎB9 PL0"[pGe b< 26L-JK8 &UY*uFhAV>D| ;⠏d! sk% A&')xՀ %.E ! e <"JeĈJ0$cH&# %4iL7IINbR )5}dXegV6+ta@7N%EI<5dm-`)(9v{kKR6 ]8/! MBތF 88pb)㚍JNٜKo66M==v{jAjxi'>yhx#UzAr UkGUn{g T35ҖL]HG)^"aԁ'@~*=D@:@+% ֛g80']7%IekہY w n5QGXTX*1WS*IKGITZńʼm#p}W?A Cdŭ@ʠ[2c '}%,]%ֽ֥ī_*ȀaOTXr^ s'Xa x@aʆ14 ~Y_vD$ldcFMe(ɉ'ܒ=eC>K\nJ0G&_/M'GWGb0"1H0t. #I 4@IbIry.#s2)Q`duG1aBwB p{Q#W5i{WfZ{\ghObcm7zcer!Q p Y0^ ph% b@c~c3R(e%59#RWg1E:r ;oP}kU}|FT=qavb=1^I;T oYUSn py#?{yW`B$>$D &'n?R%p&hr"tp\rv?Y%EP9r"!^7&&&&+hBxvѵ#-]Cp8(U(rryLFU4)R(80ELG0)楈H,N+__s$uu+wz_"GQa1$a-R.bLJ.BO, '!0(\ `8 4r 1\@xW2(Sy!эYiq `0֎;&Zz$e H < wCYl !)& Q5/G7D|N 0gVx7{aPCe40{1m ֧`bpii3SRѓ9!US_q#;P S [ETQ;1UH 1lg#ZlFQQRa i@T㖗5% %&#-Z P0@?$ EP" %jB=!?%%B B1(2nc""q]šxqq(r'pDDE Dȹ\"E& )I*;*ٙ+,tG,; -ƒ1̒uYW"WCM.qu`Ra-B0/1@2.u\&I4I` A _KD`8f .J3Fa 8yxzش: 4̰3`@N4 4 kEtg4kOhבf:P_mfl M l Rq 8 \Qau3 # p6R%R<965k&R磽:lKmY ~Px !lTRՁH_ievV=k\p #GV&ȀA;ZH(W{$#|inPZ"XO%A5""YSo;?%qpEKW'$&'wno[q-qW)(ĉ\0/s7)(%*ɀ bE5EO@FhL'_oD_50 qu$!Gt r_1 u416a /.[```.( 0.u-BK/`"Kq/̔c(Ѣ0zv̠ 14V 5zKFٍ!P.S:`  ]a0{ Y YFO { VPPP_mЧ$|6uIap `\ !P{0' t0kwRU9>9ʡh:GUũv`ܑTkb ~;Syk>*_= HwP!_UUFUuW Om q"e9&hW:rm}?\"X(?yCAt?Xuq&Xx̺$ 'LX%pH!p=$̮lR[Cq5S P'pRD)jH*KE.w[Ǚs:) ST%s+*KO+H,3kv|0s+s40 |12H Ÿ.1_/j'Mm5a`$v.. f0z|bPWJTxy/Kh*LQy0˴HJڍRyҤM[*$q&QOa0c4 iQ5QcQg5v+%%{\;em+ 7]7}c7j` % m@l#a9i`9i( ,R ::Uw:wkV xTx!H8Ć; ־H=ᑫ=lzN>"R~@|u?Vmp>'Wccr?fn9?1n%"@"#'#R'grBί^UP%@~?F5tCGUqe8(Dŗ(`]T)'"E7'*`sS8*L` &0YKPsmP@+,EWG5`b,4-r ,K?GgKI.´6aI"5Rd̴../Fb6<0꽡*]0 q s+d4;˙ b"1 41M<5/5{ 1vԤpzԍ{_ fxPg; 5Pkg_`eEs6X͌7] X_+`hu5m ma~-ah~'e^lSVM n9]Eyj !Z!d WO-S ¶>`uP "ɟVQS@"ӚZX 2$!P@|"3&_p֖嬪XSo"g.PP &A (\x;x1 @f q([LЂʗ-[41 &X` ;y"GGs0S-`)%L2yǒ]ȐIL>|8y֭BrVF]Bj`26D0522I1e2&[0+fse!@jwK\(dVay+,-& -6!FH? O$Ѳ0$1?>Dq%#}؄M6ab&O%.x (Xq ^BvNX$3 gPA0i•iқĦ6a)NqXCf'AI#&(C*Q#Rp E(>ԁêLOjX蔧HaꢪثWj:c*!:Wg΄v!)~[ BBoE+\H@@2nEB%%@r2= i:L"*9c ERi1"XH:"$k&-8K^V0$?Ml$(5KZP5g7IT0gWIRMāYډ.siqd#MG? ?hJL0p0P.@yR57Mmי4.1gx@;6GU#;DTσT=h!@&j-BOA1MRHFxBR9j+*-*:WL]:K4zDNI:]qBy3"./X0Y3d<3 0d;d i4}=nh ū$ =!"h$ _ң= aej#ౕ (Hșl&l y0 8%-I) :> M@z4!8'' 5LɁzЌ @)ьf`2YBʙ !0Lq hX ׹A@ ةO0Ў!(Y";hC`F;/Xd:W#㊺42/b]|#.J/X(;m!m/)ȃJe"&:&"E>Z*r`$`TWL.bڮROa9zYqХ#1$dHIKK[dBnaQPqL0$)P0@JCS%u»$nw%` M=[@a 2 C òHH x2>M&d'(k> {'x'y ( S5 ȩ3I3ؐK  Ř iEިUCK4'pKq Hc0CK܂KY}LP*Lif6bhWd/0ڏ/ UP T(xMITXa.pv] T1Q*n`b/ 8 U] 6Q-٠9=Õ-D7A*A=!b9:Ov" ЄGEʼ6#_9 D4@ DXY J{ YeX 4LSV@e OLvژ5I뉏aFaLuBeW.+Ȅ'Tp&+q;M,byQ-:M8x+ Rh 1]P%@6 cR!C3 ϊSTb!8!<>< >!#JM "CyQan3Un/9`]J7 ҺU[V!0i144K 卺,ʼ߭8PQUR`KG "VR0KIt O''sV(Tb`IVR[ Ø N]sAuZOleÄ AO W#WP_W%BŞ.²+5؅R,b+TmoD11Ym 8Pvm5΍!j:.n<>ȃ嶃Phi݋ =4G˳x900h 8 ]p.^0sp9Ԗ  LЌT  B (US`s_3i'=K?(*@S3+LȁA|LN/Z5[Feßsfy O+oW{-0!0i!C_|qeS6*̦6m62eKFRktƋ6 Kڐy'7n~9P1AոQcM%7qRUСV+vvƐv5d?O`O>}&Jw+fXyTSgu./fsuRS猛7w`㺳p0*\p@ S@A:P`Å <I0  L@` 8콟v &t|-paS$qp%0EuhA-_S|ApćSLL D +2b-0# ,B9 &` )B I >Q 5ԐB81`2>d'f &Bpqnf 4fB`I@4j)"(&1d&J C q` tfÜ  L2 [lQ&ʺ'EB|*r :Ģ~1ZaEŹ l{_ o )[Т q(¡z,Aa*A1TqC#mHs(mTDmqʾ-rFFB)TE%%EUSAUPi0A ujt%VfuuqXr!hvġZ}0ˆ`RK_#u`X|g%VG͘eP%uh\á&,\Òps`v 'pL{XG%Z`SH@pPm 1xUsyP!{{ AϞWA/7T^x"}b4` ,ZQ r(H l T)H $$iG3@#+KX—p/ 8 Ә|'7IMNկ|P(!ȠMA 1NJd)8ijMz:J9QS@v,QʄbA U2F &c ԪP\@1 c<Mh&E-A Q5&4YePߚEri dj|W%J| lBML!IH8 .aQ(61. '<1AYL +d@ ! 6! -CDbLQԐuR b@ٔM J0Pj_I iе4uCẐP;-vC^X/mc^nc*!-z_2sP˄2.Ulf sq&Xc7P2f:S n@cHBNT0g 9P߳Z` Hw3 h (v(eG#a:ωv7B^^XСD- A&"6BA$ƨIeA Lk9)G&tҒ^ '$N%. C$4Ѱ'7I1dX\?%i,RzV(E7"Qe$!jP=L3kr$(^JTrt8f !:dMxYJd= !'Tnڤ&1y}\%Pyz ``/VD2rQLi L !,w 7 `L[>3pEf+]ilC4jʕ|ڈl,0F@>xdNiqÜ;{ ,qfQ uPt ӎ+5)Un[ O[٩o6;wۮ"NmTQzL/\s)^X%| K' &;43BJELnifL'uʞ=}!,w($ ܧO*\xC 21b\!C"Ç fcS^fI(#,؅eɗA^暛8ʔhϠ0e,Hf K'SljN*Ԗ@zMYcS:%sjZkB}e˃k\KQ+B.x|@2H)GhxpaGŚ7\M3 ЖteWvMc Wsh @m L6[_ ׶ʧ /nӨ/wW#Hn6zi|2[sdDۻz]bWyA'   Q]!, ( ۬AbB>ܷ. J\Fξ6,NäR;lᛛ7soЖ'>[|SQNHtp;Sb6LLsU֨?|mCUղfX3Z}CuޫB*KUZ9MkfY4t\YhmdnϣImA b@Wm!vܓiղtj Ҧ$ktK |TU0%sפT\i[rإSӚW :"Y}[uTHSCOG05,irŎ╈STA.A ViC'sCSD 9 !,ɑ;"5r*;ڱf_33y0LJ%1P[%@K4bjS3>}a!E|M @GHDj3:U镐OEwW:X݊/!Y١iS]ґGK C@y @>C4W!+mA\tiHѕ}6Fh=BǚD ($ Ѡ6v !, 'g)ch ʱP3@|)] *MLJ y&˓@ , @[Ρ4h i5Ft5UONsUWRY `lֲgiRm)vӭ\Cp~؅ X(53V+:б3h!͚YKtM -ܗ>"1hQ#\i;-/1JA_\-D]xlD ܔۉ U2t /G ѸQ>{!,Xf 0PN‡k\c!71l3ȢA44T"xDhR[h!!m(i(a4SN#9=PS[j95MD]z8zDiBfb)٦>:h0 \k%<{E4W:׵o7ˠFW=Aw ^IHAko>!,X#Gξ[`! $1!f zXa>uO58Z-Ɍ*2VrFr)NAcpQ`Myўꐣi}GB(«0KMkfRtt>F,Рdq `MGrw]7" O.m_`#hE1x+.t!A R!, #A.ּ9p 6,r& ⚌1᠐+FPCx L:XcAh 9y~Nӆs_ѣ \*`Qr0mӡD\kP| fhfӚT>]iF?#4HߎFk R҆ې"%QaMT{8tD 9ب;A !,X#ྃk`; #2lHPĄo4ŃkkF񍜏vGrA3jǒ A1ж&5N& ->})PxMiG J"BNAW("jlpH؅R MKZoR:xK'/IK hmȍsSe!^u+=JA5lh7.A hȁ?jit>HbH9!,ɑX#‡ *lv!8J|S> 5ۇ2#Dx9XQ[8}IA:8BhgNW(zhRSc7mM| i͌Ճ+^m,8M}d4BU|ܷ6rxP.m ιtD. ^BT١!,Gg׸h‡pFECh 9v0j׌㛋EגAbЖ&GAj6'9 O>cZDdP4MFcHNFW:ժã]-:9)ƃ]=RٴMODs6jq}DA]ѣ]v+QE;JMQr\\yih tE:tvqQ"H F'e!,H`6m\O v|A P}6#'ceE EbdoK7o$ǂ:yCN,I5 GӉ>`tIDpZ3c6j D%n#`\7M`m6^AmŃ.G ?l#p`e4T8!! ,׸X#Gξ`A 7 Ą5$x!|+v|k]-ɍ 4Ewkb"8M}>u14@ѝGtQ=\SMLxѣӚB/e75mj(X"ly+tѽ2B.`m@҆ξ+lS0< ]q贉(a@!,G\#!5\cǡA׼ihqf l@fZOJo9-ˌd&7;h O>chhd izM 5:FAB:ʚj+r=8h4h2R(jD-zH("bWtpF#XrArJDtFH,GϾ+.hxȑ{ѡӦ E !,#Am&6;o6vWA r͚;jG 8 ꜹ59h O>c>m`6O1D*SYu}W65OX^87H5V*}4h\@VH ` "ERu]: z)ߋm R:mxlaEdA:mh !,׬Gk\{#XHQƂ(C5h#D$!mdAbIѦp3bŌM@R*JcRdzŐKӲhM[Z/" :]i#f+jk*"RFG5d{JiQdPՓF.>lcҧ # ^)Bq6 !,k#G]SC 8Dhq;Q!Ì+D`Em*qP 4i8#ʳHA 2]cH`iJpM}Wg53V>,L>EݲDXa+4`JArEFQBQ \qA ?Oj!, |#GIp}k)P kּySE;h; kQ˔H"Bl򦶘;iDig8}H*gi?SJMSd@=*A Yh}WOV|pPĶͦMG>W1،>K3spA"|Y1}4hK't8`6t>Ctqŋ+l,C@NF::*lӆP€!,X |!B/i0a3+Bq#Ô#]ap @eA2io' 9t iШ;S'r :5 jٴf5xEYBʓ>Ay^,HD-5RU:{%dZmtqe +ll'6mႆGg!,GA.ּ9p`B bfZ$cŠF|0(iA,j 14 YfN:2iMH}HwE"`U Nkf}4t%Tm8y3UD |j* EQ+^v⠋+kִNpA ! |`@!,  (0 \b ‡@@3Mpaď-taqm(z Qd3]LyeD^VIfA|@6S'Ϛ,-\G̗1իVi}R%Kx+֩>c(!ٱ=J2] %Դ4Ȭy1_NcW}p6mGv44XYXȐ͜xSd+25K.h69-Zε=\ʕ}dQupۓG kh6$01׈]w!ŧ|Л W݆NA=:yg|^ѡH!^ptǠ@jI8GRHdq(HJ8P@!",~ (01/]bMe f\qq`MD}l6&i L$K0[̇o`=m0o)Ž%Wr5.KO ˦4ּwqZʤa՘Wi=)\:f Je}?ZƗP w W?L!.CRv Y iܷXg f@2tBcFyKE!,} (0z]b 0e}Mp!D6}hxY.O\06.D9c>|iۉsgJ/-xr}2i ͗1G}]F /㴏MZ5ӧ5~lv)Y9n{X(YB0 ' R Z.#4tmq_H B%"n<3uƚ]祋BW`VlQ`+4ue{ !;,w H|g} 5f֬iFa=ƴ!ķ44l4f}&̷n6}(Uj2f3IcΝ cjR}EjU|t +G[36,75#U|{𡾻?k+^i/$Q}A6ڭGْ\չ3RcCМk8̺ƆBE|t blͳ]Nsiz8`L rH=<inuӚKUم !,w H>}g^>KBӖO>ͦbQaM% +Rp,]¼8e39_^P zr4P}ENkLdW(ϓ3[rpN:c!'qNHGw7MӘ@d!,x (PA} 3.pf A `!5Mp"ƌѥ"m090dv2&KlԖŕ: ḟ)zz6L/A3(Q>r"澐UP_N,mC+p]J-q}ج=5@{m#Ϙe!MMVޚK r"i U5&gy}4?eg\gY%^}WHgk2ŷ#}; !,}) (P5טYM#JhPB ʹ8NJ 12lĊ]F ieA)WtyM}drHM]ɱ羟7"@6-*9%Vte5U_]g*IJJ2!fmBEKW|x%5'ʔfL @[>y[>/ʋ1jTU4Ơ$4mPZvo^ @GBN;0vn,J>qyh~%˛M]kfn:tx1r3̵vHkn'b@<}Mrm@ya A.tц"h|NC.EoJ6P@!,ycghǎC`Ĉ'RǍ~Ś5!G9 ŕY ˋ#iM yl O?  >4*ӆ7jA g$t6]BBHN 1N]ct=葎=yxN;kW^|)٣u Bh0m0ڻG1=6w_w4)9Mkf^:t\JnY6H(sD|ɑh+W8O/ = mn)5 ^<ކ n4x1G X{!,!Ho\OΚ5 1bāj>8sQ5" BQN#Fը=`*TJ7#H*UtJ=DzZQD -*Ep)D.T\+ف[ pfeJG syKf[RMm dfb*ڴ>x0HDЖ/4NWg[Noct,H4۾㽓/SPu[>:Mkfp4t(?}3܆z`W\4GPs] Y4G6wЄu 4wYAH!,'!Rh*<!.B(!B32L4hG5"#!"㑔˓)"Z#H*LxRO0w|4IFb ݧh#Y=*!B(ɤr8#>DJ}lZY\ )Q]Rtѡ垽7)&)0XAXq{bʳt16C MR xM{ܴ! u۷rl]afʛ# :ҩk6h^o>A|w1!~ɂڄf)4S:(6Hps1"m Srdqł\aLԹpi@ C$ ^Q[`!nq 4$q #B!,"Сi"ȑ"ک董G3!+G#"iHRyB&sd,*:ڣ'VIE4ؐ:6ډ2#="%'G٧ 2}h&@mB u"\GC҂0Mu}l\~;w߃g$DyZBȾ=>|43M3ԓ:d!XDk8y0ZAX`D(@ WdQYd])$HJrA^`sAd^N B!,& "$kҡEh !U! IY"ƃtd*%֮]Ѣ(?R.ZN}CGѢAnĸI!J*U*LBhAfӄ= "ɕi^_yP%TM|W,`zz ^8Ȧ ^ \34cL=ѠWx֟6յAH 8aP@ )Epw %B~M5qx @r :aAjXHB!,1 C ,hPC: 0aAB&R(VEKPDZdHT"K2Ue)YeYq!-U:2!!HsBRdtn.ڥ)RrJ "dl}.TeRv((Qc>fݡ@< KO9h)b)Jg̹<,ĥ"'+4YЀpw7M3 :萅gw~ܵ Q6"Dh@-W7 W(nWR\4x!"5]( TA\kdrO!,,AGJ-Zt!!BdjhPR 1BHqGga")!$+dD)ҡ% bE:h"H -.y-"EQ{] :TMF5+)ZbTOZLi)o=#G*k>=.֮+,ekAS%%i֟@!WR?eTASu2MՏGVtQ>B\8w@q7!|cj4Xז9 ͹2G .0;y}u&ľ؇&F43M3c :TE(53{\F r[ !!m[W@*vEE[AEh8"W@9Dcz!,++%Jɪt>R -" )RUXjGIu A*U)?tEJ]i⣎@:s,B^$eɂ-'$Dh-ZKTrE@-K`G\2m2AY,(R\Jԩ!TT$5e$a&ʺY\Q#]*]Xs:ТҮ&TԠ|c >4-q4V7tsR1:\z0zw}Ï/+V޺wW(!z!~Lӌ1|G zA tmAM  Aw'@mv Z h|W@rFH!,-' *`‡Jtq"HKɒUq E*qEH5$Urc eH"B _𑢘 IzIOd=aME\šXWYO;kJpϚN%GD)*!Hruo"H全E!%!=9zD]٧E}{ ,\shMoJ ہt4]6|O, Onm^C̭-q;s*NwcГ?,=w}uxNHyЕ0ߗ>w|(`4Sx4Р]gni^T m1W@4]((jƐfsd =G" t 4xdBsy@!,?ѡl}sQM{(0992NqÉ#!DhCtd2H(eA@-@m-J)t@Jj==* k$tfSdth}k)#9Em>4@Bt0>mvc6^Ux# h r 0Mrg}hs0ͧQtɞ\c}M:Mkf^j4t\BhYCNJp"5!l+4lvϵ+4Z`]`cqrGAq\ ^'WP@!,I-C:ɑǡA:y졣H}{q##܉&m!I9`nhOGĨ!fBCh":!IN)6yut>mP j㪖#fXA:6:!$װ1WxLn_ȋ01}@'w0jԖ&j*>Om<"$N}~Vs iEB@X>jC7Wʛ:xI-34!K>w6cyU5o” @$}DE]ǫH ?9uq%(c$AX`c>}lC+׊ ]T;mѓZ`@!,dhgξSŚ  M;NlְMх8#$ k Ɉkhc#7qNAc5Q&9m}Hi EFqij`׫aᣘG8Mkf^T]ؙwŦ5 zA"vȃV% B.[ᚔ޸r  |8V\ ᜠA !,cG.9p_.ęӰ \s⾋ Xb.Ը<}(R<|0ЈEm/Yg`#hLg;/Nt_SLUZjp&Ň 53Vj.O6ۇq5 ۖH]dT:х^AK0c5B|cԡ+]`CH?!NJ x;6&!,c wgָX/N,t6$XТ$#85BM/:/OЖ&q9f'M43`QmI5SӴGKf*u_W9w4E9-Vęç ۱2x%>|6X4hbSVbն5۩^D0JQfb}r4N-ъ7 dS@7.yylv>oeΝnئ><|! ,cG]GPC(@h6 9s@Bu>" O_}.iP|6PLjZiS+G՘8wTY&NL"N ;l7|*+osgT|77<"MkfXcO$}G QM)8}fZM`+V4O5hh&Z! D5M+%ŕJJ<׼Ԋ WZaAu,!,c۸h@† 6Pa>j(* jdE8R,(2\} 0mfNa4 DhhM(UOU]t'jĉSLPgN;wr.`it1 +jmBWǹW5uY3v+.yPNuܬy#Am0 !,bk#ָX#!Bk''N9  Eh&q C:!#koa6q2F:tbB-_M4\i06?Z$*h8}Pi(iGJci>+_ENÊT_YVܠU+Gĩ3bi͌Jƾ+pUmhasN>"I@d03wĹkYsDzFWl2J߸BM+lV5Fudx!,bgPS06\0$hp fiX@>Pt>+zԖ%kHrHmt ->nEqS#FJ]:tھG'N_ÈJAͦ53VO.f6T˖H]ftakսVT@t#sM5o\`Ԁ~#Њ xQ;5k!,}R"& 7 *Lh 1me} 3BH \L @37vQ[=G˧i(+ٰ>:oM2rl̩o)m?u8}uI}X^ͺfAR#WN,Ve 3]x.:geE>+˔ߋ%CJBiCÅ 6;tȷ4YףvvհI 8f;{q]nXWGeM͇Ƒc= l_|B9o֬#yɓ/r{q7^{q{- yuQ^v9Hqa^.G x!whH}'uX(|!VR|vx"rO"QK!,|Q 7 3|i(p" Wh्fKEm]/6"ilI}&o†8oG`}6D'/OsTQrW]#`>fRвi6;wZ۬4xp߿lB[rwzt9՘4\w Ę5R𴥠C6y.RZ̙itم۶'| }V&[nʕƍw1#+t.F5m!',{Q 7 *4|Ұp Ë#6`.kLF i#`Ɇ62\M.mFņ>] 3rlԼi˥/U͒]U$ר WR4Og>efw@pʊg*1'@}3mD BpqE i ds.PP:iX陑| >|u_&6ԃ5ɕ;Q"N˗-ѨWaԦјǏSueEi\A ϠCsƃX5S%|G]ȞM6 omx.|ߕ㛻 !,vD. H \ȰAkJHp o(jdhňCB"W"Jk %E@M*IOA[jg9GZ&t=\u6V$h+ٲWN:)+t*wRLǿoҝoһ INkfV!l0JL6q- !x!L#xMg&BH ҞLG ,r G )"K~6rH 6xt,Ȇ (""cBD"8)LƒaA> H"І%!,= h%rT‡p!bB9&xf8c>1">4ڬ|/Р69cZDd3tLHG%!!ڌFMz'«ӞE LMfŗ-,^^m6zSu%@bنBnK/fr鴲N]qOer+.hxQ=џrZ+M Nȓ+_<;~COUaQxzoˢNowÈ$w 3joq8pc٧}A Dlqaѱxx8xᇃHxxr4>'y!xaGKn(!7!A=AdfBRI1H,NtzA匌C[-{,$vTfl&Dy'" ָC _iP@!,=۸hfbM‡k0t &V4x1_Ɔr*O5v Ж$!FV%Gj m9fO}?aPџ: GhM8)>`qZ3cXEfj{FNHI ` d%^tZ֩ɺf!Z8.F) @4=hGBBGo\ͺװc˞M۸s#YZ35"Ya \GWD$#L?TDJ#R iGHG9=5':)0V<˓"D )wPmRmbPGǀaؕw"'#8vT#0!Ё{_ex], #BGIOryzIJGrC:t(>1g{HqyqP@!,z0óPCkXV<57D.gF5c F1WҤ!Lm 5V&GӴGËI eZgA9H.jEPH/6X4vA@3HU]Hd`,+VV2X~tŕxQա\qAcg{>{EɺװcC'r :լٱkCo .F^σ[ >P8Px]ylGhzr?xr;-Bd~s1"!tg " B{ "G~<!!w>hH%=b!"$҈CYHmh!hԨ"gvd#8s(H$#92"!,a/Xf0PÃk040b.p<<} ׈|(54dLqX 18+0MM}?:lYgO@X$Z(T+jFįh8zIi#ƌDUCWjˆpA ÈX JN]X!ćo\5xƊ ]6>ܼ/]8#S^ͺ:S qĹ=Rw;vXM6n]rvޛr8Zo< py۠팗S>t𰏃A;r3{楗ylov0RrPo'|Up}ؑxtPzja`AVa~}D!~#vPy !#!,G/XL‡`H"B3Qx0|r,kp\-ɍY|IC4ʛiOBs,ӦӄezeP@U53V(W~̨1d֤T0#W"e8:ʕzB\J\dE08ڀ5V\H;#CMir켡:kҮcNբܹN:wlV blڮ&r;(ϧ?}vܹ+Lp|ulG<7w޵ ֯ 쎷}-})ss6X~g>VCm!,5'PpA ‡d,$yS|]X"<}!אT-J#j;ʇ,i ͊ܩτA$jӄ } *'++r *l6zFitlƤ>ɬcW"hD* |^\g55ŕs/}qpAJG9q ;7N5qycdA;ȑӚַWx;wlL={6{fMaF8{lڸvj3i"JmV2lp m*e0s1p@&Fp7ÌI.mjtԤ95jsZT|ei͌kJmDh5FNGd-QNl+QbwAvC4.ti !/ 4H/8rxT&9kR('orM;{?fMko'T;NqFhvosu;5S{m䖮^_?tN<9r7oG[EI`@!,G]AȐ .4dĉ4hcA60#xD|)!.eL 14 D`6~hC(ϞI-pQQ_ůtqZ3c~ԇ͚+m 2B `. Ӥ 3ʌ#ǠVܒ9l8k&F]By#Z`5dƉÚ7iϦ]۠P5m p+q^]`^5Cp rѩ#,m]+tMَGo4!,Xfp%}k,$af+ ь#C*Wb"pV@!ia&τBy"$s+.5O}g@}͌邆+ a5]yGSf N]Wξn)VȼYcef.%(g P5o\A2f̬p ஁Zh!,׸Xp} 6|h f ɴo |]<}!P-ʅ#2oکYL>+]Tb_7]@V $yi44\p 5jИ&cwMsM7ɂ!,Gk\9Ȑ ]4ᚁ 6`.t$Pɕ4N6 O>ch<8e͛9eI'N {#h(FDU53V( Wns.ftXHW]yWr[ /kpB(a+dԼa3Ր!sQ~FNf5dh 8jtF!,۸ k5 th f/y,Q[ǂ4( i0eÒD3}FB-fC5w澞(UGUWāQ)O4Y&N} 5XDkuߴi`UxŋS |SŕNm6CjZ֠h!Mox>!,Xf K‡BĄf仈0#<} fԶ1>2}&.^}isɑLN6/G]9b3cbҘJʚMqFk޴HԆoĉcaWMBV, ` B5xѱF_2o^=HEU5U|0 !,k#ոX`8k4#J,H"}aQ*'5%/}jƍD$0jh'Te704Dٴ CpLC9M˗0aa͚7)Y ]֬p#+4*]O+] m#!+<'^q 47qlB1gra&5[|ԶQ蛶s56?i}+TWH\0b޴0fM8N8j:0^z/+Bn-vkدK5o cpcͲy tmyc]luDj-DBb cʹ d߬tc%'To!NlG60 mȁFà!> 5PlF [FP@!#,u[B0c f #Np>4khP+]Zx@84B1s@QZ\iǘh4ajhe~ ԗ_N)s)>mO ypMH黚%WW\< P25ωth)6fI@dݤP׌?!ksDM֮ 9[+ fWqޑ͆Ojm1{to̷K!,v f@YhÂq aF@3.hȱ㾆MId}W Ԧ˗.!ӱ}BgO>}&h>F H1#ԘIJcխR]63@d3|Ъe+SkNcK鴭y b5^Gih=6fc# 0͚qŌu{SKO4Z}{zN!/,v HP`}qi 3fHF8mڨX -ٸP͛5ՐRMĊ QC1K2]ᾚfX$نe8>5jŅ,/&}իVк*d4FY|x6}.kfzU+pvo>c#:lƷVc > c~{| 4F7Ùi F0fpiMZ6mڅmX[czf wU~usn>[>γ[ r|w꫱c&'_ol,4ڬ#1Yuwdaf X_34Dx A 6ӌ654\qwrOA($XЊ!,x H7͸0P }bvЬaiD6EIr>xPȲ|-f9p31 ϖ՛tfӧIV`>6sukׁm6>f{UK}rIF`ڵv{>l4nK|+6x֨4hۦ1uj%5mvm>,z;t_3m[z.TiC (7|_@!,y[ƅ>2fhi\Y# ,&ԧ.ypaW# o}4h,IC&|Ewe'+IXB8/_z6 /6T)I|!u~5R՚6;IV:>jyͻYVcPuOiN4>| %`elLP؊W/>ʹSBfQZ4Xܡ@| 7]r]b ^@{!,{& ܷF͚5 gÇYck1xˆ 'Vc"ƋrP\Dv!eg.L7q>Ǵ)hpĈTRXX D=_| W0&Ёi4Su4tHڥc va : Ŋ,B$V04э W!6i A 2@B!,#")G|‡ 6\Nċ'Ɖjpq"E9I>\8-׼Q K5o椙P 5qrɳ2_XO qI:ɠ9n9:7#6ɐv*ϣk~FmGlY6^m!C/NTcڔd psA͛;{,ϟ+b$jY|7W @[4D|;]4%WƣO~o0Z';>_ߑfMA=OJ_צD@fġw݅Ip@ķ|!0hrfԶV@ÄfA!,7.;G*T#FtƎċ ROƏ ڱIoih&Y9r$L WE;rZX8-ur|'ш}ٴ˧ :fU [rg٦`Nզo5(vlU{آ{rS(Yq:< R#ǩc "{Y2Bz;MӨS^ͺװc5WOp;X.@;pc4mtqmҵӏhCp^si[O#7_cz\Fy>5X {4S}:@eqjkS}5Hą{ ^Ahb"w.pH5Gȡ 4t$i)a@!,\AGǎ‡H">q3ǢG9v0ҡѢ7o`ӱBSÓ 1ii'٩'Oς?dh9G Ԩ4Αgא A=ժ9qPzc%J?cg5l9ilC&̩JTrئމJsf9yaDD9O3JYOVX=C;*A ͻ Nȓ+_μУ$"p9 O {4N8!(;xԗb۽|ջmCyM8$h~(L`,(R`S(Jh!MM!>7M3Գ :txE 4pJ(+_#E_wZhQ"Ybev^r^Đ4xQA^`gz$K(kT.FB-!,C " i Jr!R]X@JѢőPd*KCP,Y:+CZrZrw@='4`$)Gz ^E4S{:p^D\qi (nEa\^HW7{ȉBm(gnB6zCJ.c[!,: H\ *\0R #2$DT.*UVGZ%z$EkDŽ!v<$)z%Ș_ԩyƧR3*J4KEϊr!crݺUg7SɶgJZ˖Ek&N&wͅyuYBIc֢FBӅP4S:p\3 RQ2b"+0HP9Wx!>EΩ! Óe R%T"W@AH 0S@!,8 H>R*,HH)P #|Dċ-RTĆ em&RN."iKSt6m"IJ`XN$@D.c$U>:h)bDREkt%T9fr~Eti 淟τԣ Sއ_Zϊ,ϋnxV7͍8(>lx ]5#3bU ~L~$X> c*f[Y8$|dHÖO8  Vto9 4:o)y]AFtX!>W4(etE^c!,pH$% HAB9#Jw@2 Bȑ +kvEƎ?V|DRkb.ʜ9Pϟ5tҥFX:qL"U i+]̴!e$JK+v!6S+Zjk2]dhZLƔ#ׯx^i3[k0XJ˚6q>6Xsk&tL}1i׎}ٴf4u  /76sѕc^ӻ{}/~;u& .`_o>li76=~Jys<xM=6$h"!Or=⌰8~.;`#O>ehc!,bX!, HA}\pa‡ #|PEA1F =f!Ƒ$ 4r0H͛4I&Λ1_hP)uyT}5}:Θ3ڔզ]9"YCϾ4PU ^z݈.6@B} @^+|X0x#-_dÎA,U3y&iE{Z[hՍ[Z9z3ѱI^`veX=.[rw­I[24tDXNu6_.h#~zLl7_}c!,Kn&! HV*\aÇYI-jĘQcD=6xH 'ʕ IZ$̋\&A<{tdIAK"dD1.wbS 10T:hU.j|dj4smKt!ն;śU[e!v̘Ц܇_pBK@Ǩ [0rh}]dxc5Yk:l[W ϬZçyqMkf^l.hX,2:YLR:>9z=٥9 s_)F+?.}o7qg Y!FN]0O@!,/z+ H \Ȱ!A+V8H1!ĊB0ǁW"^qWBҠHb$T`eˇs$J.7c䘳 jmIӁZK%S/#>`ZթS`&}Ҍ:a3F Zkc8fLLX6H[ڝ :R"g le:0 >5{Nl/Y S,Is14nƄͦ5W/q4hX2141VQ&4hml RۛB#8 1TYfL= BaĠC A 4xqDha!,& H@\Ȱ>cZ(t"CZ2iLC\4FXiEȁ\8qA@^yIN3 _N]),`dX xZ%U[|YA䊖0 d,ִ.xvR2P9qBl8}L٧NZ ;4mw)O)Fcc2=) .F ɔc.:9̭i4ɘNs $2m|k ouYl)0sZ3cAc='?U9/8s%`.o)#r^aaeBWa+k Ock]XH\LAr}.Xa@4`k(rB^>&ٙmA!,G.] *4~PaCXyH"A BIE}Y&v2LE7QL h˧SAlNVh PT-А%iik>V&&eÆ$ZZV>g&l]4vٺW..e&Smt9zYckY:Mn26鲺+A/|6FTL#&ܘ!aD..`@lhٴ&"‚_hDO +J2'L!, `A+*,Vt!0aC HRb3. FK}} qb'ӷF+_V@[> #|Bfu1ԥIYzG>M8-)U}eV0Nk6ma5괮JeukZ0^theS٦(Mkf4"cfi틡.6%  cY޲!K7vK6'}_ enZEWܹO Z.HE >i !,ط &`VJhň LǐJ.h˷G TYK 11 ix;J%NB-6K>*+V0u:M+ilShi͌;}/RlV}1Ɔ`Nmj^/bN 6~)L4\$)0i0 !,G } X f\LR1a>)vO_3Vpl mLfe×%eҥg˗ 56ir#JMM  P T>]x!eT|#Ski͌#ݵN9mqR1 /˗6}4"lzqz`4laٴ )5#pކyw\`@!,}G@BV6 /WEČiG+)J]R,iDm4 MӴӧDAs$ڳ˃`',m&!(NkfO1b\uچ ,+"k+V4\DBܴ.xQ._z+ H>% /F0 #Kol0gCtsC¹iuv14ŭ!,xGi@Ä >tB 'Ϣ bHHlf8}8틡 i1qYMt|L}I4إp".f" VVSY+p-"b%-,1dKÆnX`؅5lʒp/.P [̗} `0m0A0YLa{KelZO&g#_9M>}f!,uاC i Ϣ 7Í򑼘$||2}ɤ9͜LfABNA j OB&+NkfN`idmLaOVҦݷѢB"^٪]{E ӂεF]dc6V$@`}V|r1_|ar-i; _6mh/ iSFٚ!,qaA.6LaiWCQ|#DtQȔ+ 1NV&9iIsϘM;xT} i͌ջE P`'.VXmFHL vap*KiKU]M+nZ1T=e6lwl"/_yPƢdl5F!,puGA8p_†ih |VO_łaP[ǏؾLL,JI}*:D͌s" 488t6PhebQ"KEC4h6 @Tbi+قY|QkTz߲Z(x_!,nGA\H#…bA$H<}l@>"I<r;i @ L3} wС6-$63VϧEi +4N ȾLU;q"w~-eW+Mt k ٷZ 1Ȗ B>xa!,iG D0† 4{ |VO_Fh"DK(2l`bD6`YfǠ9ef9X'>ؙٴft5bfm1u*Ӊh@L@XVݧTYN͛w}c,K[Ay)?n0b_tB ћ6y#MIdža@!,hG*,pB>'!<} bF.tc8I0m,Ȓˊ5e]BX=.\PŊ]$ԘӫWecaUi*ubUm+Ǫ0u[.YP6 Fm <+A`;X6$_P ꢲ˖cH@hOϣIZuK4`g"أaHc+Yz^\+V)YRW/ys]D9ؚ^m])zt#J~\ 8 )H *!,V (0|*41m*ٴf0Hpixr7oI lirLXxSfN -i+ɰӘd:}(@c! ԗ>:Ɛ)1f ]İ*QBx`qEέ)^R688pTʹ)^xtTJ>.F̹Z.BMzoչS65ldY!,U /|*41m*ٴf0Hpixr7oI lirLXxSfN -i+ɰӘd:}xRXˇE|;%֬a HԆņ.΢8bY.hQSݸz :,aa+j[̸1ibne}]:cM^@|!<,R /|*41m*ٴfIL4}xA3zo^<;M[ݟhpq#d @CƎ;n˖1y]8(9}1\^ͺ5bΨiĈm:}7lݾ{# !,R OA}&ԗa> @ј6| bl6>3[Pȓ(SyP_WIƦ})NPM4r|2jJ$g8-^G^%t @\$A#]9=s.EN lÈ#:Y-I%L9h}1\̹sN!,S. OA}&5@ڸ.-0_}c-p`Y @ʦifӚ؅鵟66U B3-А Fƈ`4\AF.;Bh1V0 !,xѰ D0 JD4|EbA =pEa3.,deL gSfŃ3Am;yiMDmI-}ӐJg YnJiYJ%{6,SlZ3cVJKYf_DdpJAO`J\ Y`,'Id!,}YZAȰ &|EbADl` v"CEȧ%HW3K`m f-ϕxy fPm;Ȓ ]ؾVjl4\f˗,jۚ 5{6jW:n;_ܑl6zvuof*~ lphfD ҅SH6TiAx%܂[bHj_'6LL + Zeǃ!,YGAV\E P VT",#" `#aȅ8Am*e|YP[8})͜0K?I5/*0)u*X N}~58zBcff bZ.ZjEW+5Mk0 F`bfYdN9FM3!,"Xra*tixD40(@316Yb#|ceA0"K h/,? bN}@r 'ӆ> G&UVjk50`ݧթ>chdavZp\ԛET}A5ƾr z,gč5&B#! u]҈X=.h%F6ɠˈ4\rc !,y GAk8DϢ #ȐhW Ul4 LӴgHr$ dM@e4aԤ lSi͌I#S:&R"ҞYhpHEݗV $F}AfҐ-.؊Ø-`nX! 6̗Ō º 1X ,6 `>13fST&%S'ca2>],\O\t9Sr:/gv ̖5nš/URLU !{yEieEi`H]z] m^4i`hAWP@!,qG}4|@3Y( E@4Oǐ"hg )lBEi%̇ܩ As-43y`P 8*AӚgt^XOOV/$R/T+xJ*VhX .\ˌ`"ʗˌ f䄷.YgDheb_jBK7QdU2 NBeKTffyU|PU6β # es (rjn%ef_0=~A0P0!,nGb\X@B 4`A&ax&(P[\p\QH*n>}8q>x6q<ϚAs,H4o*-X(ptcf4҆4>MIÊ,VJJ^}mߺ(F xk<0ᄆtJS)̲mMK6h/_ڶ9_6Yam&!,iG@q@@LĂUQ"<}]P[>\А#J,ili-g꫹ N:k48 K ,- ml6z]hs_8S;5*zJPVEŲUҰBH1ؐ[Po .\׊,űl䂏 Zb`_^,fM!',U) /|*h Cc-\@i,jpi@Dq`!M#YrIDl)eʙ4mTR!z@9 P|=:\ sґ&/#p!RWe#בat"Fɇ0mRܹn:ut/!iL0i Zʸ>tC4 1s[ϗH iL 4$vB.YP&Ko YVfYt6FX0c By-`bpA4%P:j ϕs=-5Jebr%Gy-nmDrV@'BVzIrV,}@е}HCDC}fE(T>Yqn:&!T,P /|&41m&ٴfI$4"ܸGƦhr>}!U,e̕so_J14xC!dذa¦+ؾ=ˇE|U*0) 7}. vdO!w6C;Mjϭֵyqf{I>!!?&1˘/< ͰPA~>ԧU{v1El1rǠACܼw .@y8wz҇>޹p\9o?p!,^H#H!,Xy -Y*\ %RbBS(B$ ƌ 9N81Ä"LbB.Œ)Ȕ4XO A$cH&Ϥӧ&+q*TmشjGB[FźL!,P 8PA}*wB >$h0|'41mj܇o_iLjqBm#c.lXn!ƌ#$hlM&@ϟW[dCW|99vבjY5@dH}11DzSlʔ">br_c(w P @B1 b`㞓[|Yb װcÞ@ ^!Ѕ $+_Ѹ 5Xu5 1tEr <\hh_!,S OA}&c2ӆa}5L6)˗)~x>hɒMIhlMЦ`@SWDe,z4T5`f V"aY# דd$bР!)p.2xS#CIm3klh3 ciӂ0b uA: dcՖ!, H*\ȰÇ#JHŋ3jȱǏ CIR)ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKT9t˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+ngУKNسkνËO9_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vd FhfIkpEA'Ix9z矀^@q&.裐F*QӜf馜ZhV/*ꪬ꫰*무>j>kޔW:Z쎛Vkfv+"$쳈@sJ)풛#Қ$J $ @ 7G,Wlgw ,$l(,0,4l8<@-DmH'od,PG(RsGuQVn^-ub'gAٍYAhhPE_5=ހ6->볜h7.m]<޲-] 8O! c  >'4خMU:ir~BY;ōsyOtOG,3褫}A'K.8$>~A^>x0yNiۜ oBAB Z̠7z GH(L WB0F(>xkwd {`D<!&:Phձn3>:j#T E4O 6p ˱:c\0n;9QB;AG n@HJZ̤:n.#Mel>)6 "-S)w^׍(02'Hak@ń @ 0 c8<,$x*`8@Pw C+@pMo@;qDq2hB R}-D PjO|f :PSohG;:F;g Z0Ý#%i @`AQ!#*j }V*M*Xq8H 2iZƒ}5sYծk]"`ElbiX*6 i, jXZv", PJ-d[\.XfKNwy ^`Hp2\@0rK]@=pXxKM%/wϋ^.q`+Bę8 @9ҁ IXD{@2 H&szp 2K1 DR˂sgsax 0AJ\bU Kk`LxDjWU 28Y2BZuK"YW2Ax XnA0ڊ/$nemqcZÂlgĕ CpRbJa r8ԸG@6rBsh$ot XomI_iR4Q\K8aIٴAF OgzRV) jmd"^H9"ur-31B hcAhz˄- ~YBǗ>6T!qBTآh$ +cv(:`ʓ &X pA|r"]ךTXƮq ssAm E>e׊?"6 ڝ_^He&ׁ~ .ufh<#y>g=bye2}䳎l mff,W:,z8@Dqڭ: Pd- 69 s?L?D(0ӷf9}uN?F}gudF!z9vvUERvrwms%seWI6DWfvemn w< pсxWgڅd0pvxUhAzqXY[:Yy[zApep [NHpN`6b4m<tn qOUdcfOrdihXf7Gj6N)&7thQ#bj},gQ%P`X`-SbXplVEcuWu:&uo7T^T``vuvWkUntGv1Pb6w1@(|wwaw# eBwZf\|]E7w:X[sXE:gyGp pehk`'qA7[hz#zNdXw}ORSc77ڸs6OFOs`!G85;tqP\GЈ!SSL7SwXEU( d\7V5Ud\'cf= r0X6jHV'(nR6W"ȁFgèwhB8vƕueѨȘdI]f)!V9P$$PiIhń \ gyB̅\[6zzYWz^#7'q~#q@{3#7oxRuDjFΗN |@p*pD`dSskG`#)s`hbb,kJT/Ir'`b/ S6l;VXT9vu_% 1UUVUXWfnI1@fxdRd6n3WFψdexvte5w: (WdUee'fl6LA*u qXU\炤pKhi]u]@Eg w\ڥOxFuddJ״rJ'1<{%N{OdOQ PPw FL|y7dox #iV}aVbS7}{ T#*R56S'}52TU6u$cU) uFc)`1U#V9^iUXx@5aWUwnR&xXef>ZSV cG(Zjxj>zzHvY9[;SvxgńYe%Ńu]D1[YЃwMz^g\X`Y^W;] 8h=Xfi&&`~-YSv)Eve(j4W&|GR:'zsE0N"NPSGgRdˈH7f7$QVQ:\S kJu\el-%cVH%#U_g8JRSZU) fx5Xh&k%v!eD`fw-jѸaZEj7*(fE+9`]?]ʅK8g Q@PZ@X\1PE]Y^X!;p)W9CKF(q:4]h~SP9P\5st4f9QD|D{J熁:kfQQwNķQ0\SeS atJ8j!cUWuTL8PXcLETɺHָuͪqfk~UKsXIvʨX nU;wXv*:Xgo.>0edcd<6vxW(W2_CXb_Xqi?2 H~쮼)*loi)\fFxXZK 6?(уwFEY#[Z@Y jPFD0J=t]]Rz3dqMh/+#*ϻ+FH«!?3J2pH\04 ?qA~oad1'CĽrI6k!S!dpJCh4P3/!ɡ#-IM 5;P;9bК uiP}V(*hA9|3Mڔ T+̄ U#A'r! b|-t " C_r}`"[261" 4U㡮L+Eַ x@p( C@Q&7*ЗE\I`H@2A&69 i`Be5bf4ƯV= PUQ% f W񕱔–H8!Z8H / ˻֗EX^bU` qyN`F5$,k8 4-`6<=&0| 2B&6R No&lj̙Z)Ay;Hh rZ}AB!plńJl! A1YhoBp"ȕMQpwr'L{$*T94!RS i3>5/J0]H}pz]ϭTǓPGF!. لdxn$H08CA&JcpP+E*r(e.\A BC}a 2J&+]J\!ā0]!R,.q,z\[r `@^ac0C8Wfu-sMp:R&/ya|E.^'6-5ɵ_<;bhfGP4v, JGsa~X}L@) “1s>RYH#lԵL>l1m*IIH?9Z+ۇ4IQ+l) !yu>74wԡI:{T6I-3#᭓G &tz&IKh"|7(衤zY8OU+6XSB~Cǰ? c`ARJiظ[SFHtZ`" e܅ ,F@` @MB "a0/-K#!q>,^! _ؚ}'N藸<#Ŗ*#n|$G>t|٦6zոƵQHgl)r}0T?AV(&5iHR>=w!T'/ݽnDy:GA6zr&uǺ6JRjT~t$гUoD@_Q ]qz00 .0؇ٟ5Pf 9`9[Y!r){ @v' ȱÐ ˠ*wY* ʍ)* ؇ 8;h@paҸ h"+("a,)C4H{ʉD:z@TT1z:Cʼn kBs}+hs®?K8hEk,낫 \00+(9 e!c1* A}18' " Q x)Cؘ1B⋵j)02 :B;h3 ȺB~ɺ:33 BC5"I@#<:P2Cl3)D 5ѓ˜Pˏ4=-Y7:s:'= S?ԟG,0㰎۰nߔԒ@4(NL iǘ P1:0\isLoG0d 11P}`)s dZ] ) 9U[cVH0D:9 l3ˢ,;[h3[",\`1;Ľh}xQ8'X\}.KL3X<4)R3WC hŮLaҕ. {WL݉݇EѺXZt;vNȝ2&̨!9hdC nlXA ȔyfC 09ԹA.6/"sKNYY!PJ ZٷUw"L O@Ò=X*UK~ז,]%hنh҅ 1W,c 1+xoƉCϾ9|ѡ3Л;컰AH h}xFpY%@h艶EG8Xab{8gL)LV8VhuYXSqUC`4AW5H]^]_4E[ qIC1EiqtY2"E5aghDFP|ɱf&9$Y5dIP4t%AtBvn֐Pl6[l]"dAa9ПMaA(*t& dA aאu-I \xwuQ H%CEdJQ"7ADA~0ݺ6$y;uHZ ,B0WHI Yа B_4бaYE2kbKe!SBPK RUc!F^!$`Bd iFYkcA tGYGBy1hqjgnLPqk I^}է ('BC1A*eh] M 0У#Q7JDw<'DbަmAlOS9T5A\ԔVu7zK!'rȁC|P{3O';Y ͉nV c'h:3GΙCб(hP@JtM>IvX5b7\->HCS!"Y>|5@Yj_eLhB.qTU!f!$RA! I@soeeC~ 0L|#)b/1\!uz^%2Sb ),8'F(}ΛHr2${@BFecě0c{dp(E%|c#}v #[Yv"⌒D0qY I *[ |.&$DCPD{BR!f!d8#(/s1u!C> <䠠%="d 8қ9dm"podQYHs!BtBC2/# BJiIAb?@24r=NbGD* .gExKY Bh ʀ r/,[! n kH[^}lS]`z9~M*b)^#np3 }Xd5 9iɛlӏ1' |ƐaAO B?3%a hшy1)eò'Jzַte#-erWNnYj\yjI6V 0I]v\UCA:bhd}HI8EAӉXĵSY$ $Dx7~#8йЍbC"YWBtQl.ķV!0b8|"!I" ĕ_4 CxC6"ĎZY lB@qCEz8OX\^NMX,'(9N9 HΆD>Y0#B@. 0B@G0~O9CFe6Wze TY$Bq_FhqPdG`vi=&x 䰼 M" %|F[Y)hPxAHCH؎q?N=^AX}v$C:#9Tbl@C.PDZGDX&Vd ,-cQ1mwND@F$vM>,B!ĚaŘ9=j%i YP֒:N_"AX}[ŢԦWM-B @cza͏uvbD4JDxp&xrDbbWQR{N>0׆()0eqdAg0OxKǡgeDДEMP1hᜣVo))0))Ʃ))橞))**&.*6>*FN*V*ƠDaj")ΌXA ̪]DaC`k^Ϲ׺LTSDE>Wh`Q< 񦥎iZ:{ĩEJN;6D ݴOOXeYfC cl]Xr̡.+n|Ū)kfkŗEȶ'|E:BK(+G+_tAH컚AtuE|aȂƴ~Fʎ9gkMF+_"OYnz-|ĨlMz^)Yn%'urDх氖k^pDņb@!,X (PA}*ԗa> @ј6|bl6>3 \Pȓ(STyP_WIƦᾉ(R&P(+7Xȁ5@#F|Ίp DrKHb:RaDxAHC_d@TCh˴t͜Nш:I,D/o'7G/WogSDBD3M8lo2KMPPoH1@@|(@!o&)ԯ̠7zzHB)$CWh(k[6הC%+ Ç?>Ƴ|nB"4$<#hr(PH)"ql00@Q9`J#ǒQV L:D@XG-"@ CFz> N$AFINC*Fr)H 8 v䠗8+as< Fdb1f l0䘪A0q`΄Р 更<繏y!'=r.D<9P ĞB h<t<0̓Ҡ1x@@2t:ȂJ' 4 A: s iMCQT 3@t&ԢZ9Q}(O*R:ԅ n0,ג2A4s BEdRU s4mkfŴP~hW ׾lE62S!tW#RтT'ӌe{"΅d LCn mDIRxӢ]hOہ )hȐ8l5(-Z׃͆YjX4slYc 7*h` ;9ֺieBǖWӝ0kf IlpYFľ8ː:$%-2!=0B6ӿhA#LV!AmrlB}'ōA|}d`7\j8 kBp\2s0@^ ]@ -ctJ@eT ft:wȳ\&A2j> H5R ,gF^˄ӶvIik7$uq7Ani8")^ XQ <>90xϚ*dbܸα2^l @Ȳ]iUr]3Bܟʹ?9Mx3g,Р I-ѳ-vg #BkKԶhg@RY\:n'y'͛!%Is*u1.bsfƘ%xRƙ=оkD̸)x L}f1AЙ|ٌB36A4_kNm{ x ljN` [#Z Aw 4 4+vu!µ.q@~UwV=xQ@89)cdaKW0VPQ2 _i< Nm޴=MG_fENE|mt|e{ay`טZ5`t_hYZBQ;RyS9vuO^ZY{D}O}Z}E5WU49q&u<6fU;&0AGhyj-Q#jg cXU!@dHNCwDI{dDq%ic4idt4CIy$LJWXe#JJ:{Dk*pLi$K(jɔ1f|PI?qF9<iW뇅6JQP'Y2z9Z8}i>YYu_h&ŏRv4S4a9Cp:ӛy'hG djokМ4q!f8Vk%sUES0uDDjkp6JIgdN6G:y$FiW5DIT ]jd q&I\}5r(Gfը]J4]Ht! gw_U`f(`)On1`s:%a(OpI[IaagזaiR ax[.%dP㜚y'x6Vz zL蔫eL$Jkk>idYU{dX,Os{wh$a4Jgt6uOKO7}`WSj`4@A0_~xs8eW!E?5~&6SAS+{MbSʮNUU TbhoÜ[k<ԉqIEP*WbC<#kTOIR9TG]VLi :%ȳ7H3(e4SqJ7>({#PaFKDxC$Ja' NecY#X.4N4On+E_@:M8 )3:{;MQwt{kQL+<”%PU OwfSuFP\ ~R|qj.YQ?%Qpygt(lQ0U[`00k7S'Z{\TbK>0bq: #!Dۼtu%xRttt`H'Pe4GC\ۉ*q sp*F ku4Uk4HcFǼ gGLGè8t르$*pLJK 4޼rXEk1`_a-}WQw_Nld2  LZ*PG| m3 I|I|hɔLVYԚdGw[ftHWPϴEOQPt([Y` ZZRM(U8AUQqUW d07һU10 qoiP$F@\˨@Y@]` @LE5pyl#qkql4l5WI߉dlTC~98 06qEH<̍qZ2_DeZ6K*] -L8$㌍K`fs!btxiNoĢ4wiU(sQsNܲچ5ޖ6Vi}ÄPCO1@RuފP Eދ6P VYpghi4[~O0d6BaS0Z[<z@FǶT, 7q 7q{@QC80=^DbKW VldX2бiCpHlipB)?YH 'I8Kě?a <(@%#^=,^#GJm,',\?L1sFDz&`?Mf6,TQ|N䘌(ї^ߊåUDwPg@ yuTNhhIZia* P35UɐAP4OmbnseT,:j w˜sSoX.#7;BPEN3)C5YDVbtclD@$?> k.dٻ&\D9Ԃ Wy19?tkJ,`zqK)P1s~fYs>{5<0V < 1Gc0c҈Y&M)o%N/p%L1arɁGM20e@3 ϧNnũ,4MFVq*U6 \|Bd_Y%rÅ>l+KF҅r}ffߚq:ҦUNPI&)~}A>`> /a cP )OB Z'@}`t &SgxBt7_@5 @JJ*aJPAAZ`aMB*T0GT(Ϋ?x4 (B-!pT$JHx.*ACJxAhL2!#}$p$Z.i$q$:Q%RrJx *jު䁄Z&kP2m ,P kll.-GI5 >-ԁ1ƨl 2Vq- 9LdWM,z `*O&7MV9wZK=v)X/H(<&_6=|>2AD.bAM>Ù;exES,$Ε=Z}jyG6ҙ޳;i)&TĒ(BP'.bLRF)@R𔨷l)8YJ0&k[ \-!{q009TL>}\BbG81pJP;8%a||$ίvSxZsLnw$XyiGvQL&?Dx aǯD d* @dpil+)K1-!!܇*)ÑZn H7 (t'8G*D~(QRraRJ"ٛK4Jn XₒXGa9`B)'ԉYV ky /dA:[IЃdZf>uC&"0uUKH6a4i@DS; DNCWDt%JxC,_1mZÁ ;9@u&6U8R7QOI0`Uxa@y 0+``P&9Ʉ<,D ɁSL]L+7di 7 $?(YGpg32W5'ň,JaI4e+@b0Z8Y˧l hBb{*m%I:ʼnC %>ХR 򷁨M\B45J[,Q\4'@ˡN5$6"`ǜD'>Oy X^|A)%Ml, zrE%^>!- &"⪤#f* D"7fL Szl~V1?_~ֳOJWJl3 "MJ)jN/ YR.Vf\j {xf29aO6"qc0 xݑ"-)R]@IHMFT…wS @|s b4DXl0L  sdVHC&U@N Y)Tr[2H4dС3{ǫ,eiܳfOcVBd}r!d;0̗娸ERAEŹafQKmdāhƺyJSz8xWt3 #}tN *Va3&W3P\М ) \*}ەX0~܇s)2 "0+ (&9L(C>T\@o,>ܶ<'x<@7ĻrMЂʄS-lHYDɘ EK8@́H\yVL4vԠʂ즪P< LɓHIMx@Ӏl3S) 7隳:3NM+<?؇>J"*ę2P(Ÿb["NHb1F6B7^.Hx$*b#>AMP8dG0YVܔ!@@ >ᱵpɚFX~ڔagʀ|VyD0%nO E>"28́a4U ׻b .^^^mN^xc@0 5;֒>Κ  ] vy5l2wWdFMX"Qއv4 %~3X|jhbW|iE@h%V 뢜͵Rjޔ̳e7Pհ-@ۀԁPMxh@^ Zޕj@R) ]Ȇb 1k V._:&d]1<ˆϸl(۔ k@7T*zܒMm_.24[~ۣ$ԐօK`]Ak[\m]*vSmiӠĿHN}X[d<6o W¨WLV n}ڕnэ4S EߓYEa6iȞE[KyY0ҳjm6ZR䙚c  eExoM1؃vVP|\N:ȃޔV ݃)U =蠗SOͤ]Ai`NGgըi|dh੸&6(IնëT=>XLVvXI5"Ot%"^!n$cXK@$AYbtLKߕtuC&tu=FGi3m*Z{R7o5 뵩_՘[LME76Q\ބoCގ4W 7>wqVttw)t't 2ylVw tBzޕho}&. ]yw(vt@^&nw@;Dk(M!uȹ8|7m(oRsx֯҂dR͖h,t7]x}Pozzzzizzzz)Dzxl/ ,{O{_{>c^0\F()"`NQ R8fo| - x#좄e~-&~jW RO3ǧ8е/_+QQΓ = Y% %rG~8( U ޔSWx74@?_L 4TW2NKQG?I`*R:TdmSw^ub; ,1l!,8P".jPƐɒUE Kj q@1q`B-j(ҤJ2MzW ,QRD}< FMWCȲEK Ѱ> Y%H6o/Ɓ) h1bFRl2̚7s왠VL!} zE-WnX ;6A>xLHIFL\c'n:qs;Ǔ/o<׳o=7G}? x *hހ : J8!Zx!j!G!!8"%x")"-"F=ύ0Ў8]u4D&<]5I,9V_@s%eL/%EXP`t&SdQl65y"[HSzn_\>41'QeAf2ЖѤ%IELuzԏ^}'c%P zؕt(d"%h6=Juuy)D =JC`qf!,Y Hp *\h!B :`R$ƴKq }ͦ5Cd}j{Ir 3jxi:w X4~=XPzPET|zQ}\?&Ֆ`9$" ' ӆVb>mm 7!)EO>GEL!tʶ\hLCaɀ)LF͝ Xha iM6i\n:1^@ƅ-q| N^Pr4 Lxg%xi#= !, H*\ȰÇ#JHŋ3jȱǏ CIyctr0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx^5߿ LÈ+^̸ǐ#KL˘3kY}v:MӨS^ͺװc˞M۸sͻ Nȓ+_μУ -سkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlyn)'^ixygU%矀*蠄j衈&袌6裐F*S~Nj饘f^)GWꨤjꩨR꫰*무>c+k&6F+Vkf.A",Z A@#n+k,l' 7G,Wlgw ,$l(,0,4l8ok@<@jL!F'L'FPG-5^ 0\k(\w@Y/B[L}]u0c | >evEV܋>L mq>}P ՔeTxksPd86P+4kc:ALznHݤS0@':Sp<|ӷ6Fv4%S/o H~)ތ6 Bw ZTB6 { GH(L kgyˇ6 H܅c8! `gq@"HLȿn$c/[ࡸpwLb a" >ד)D  H@G@ }<`9G8#`4`5@ T> P D*K I@HJIK 9HLaDRR( f` )8i>R` *fA)LP> DA D2D<@~ `1@{0  ZxĞ BpT GAt x` ChFkfԤ%MS*'IiԚt\Ls0`S04:HV}`ɂXUfu@kW d!j\֟bAZ:^ V(H`Xv=lbؿ26lE08(V[@bGI gx.D؄g㠯5`A& mrP 2IPHr1́v꼧C[:t -v;>T!6)E|*^$`]<ڐĽ)BSKU1$(=^){ZV$E/a1Xwh+R)dV >)< ±!B4LV l?Y`ӹ-Hkc\\p%H#f4M<s!Bp0ы=S٪e{`Ӎ#[E@^ZIQˬ+ [i)D`ƛU$Xa$~6{[q/~(7 L:!0qwbpnڄ-l{\R6A"GVm>r݄$9O+-WW6BKe4CN<_cD6Oj bS:xsBx ; )>PhpQd6tm1BbΪ+  |Ƹ垕I!V.7Gf8EFYƒ[##msY!- D^Xmu#jAjU :;!ΖsN}tyGDuيTZ  ‚d{#Y6Gs[z|q]7ҏ~@vye ^?g}& b"?DRBt–AT.O4/=Jl$񧰉͐!`>ie!MZh:'N)mtg FuS)bhBq^-"G?rtwM@+!04h6v \Gy;fߤͅjyq!NNvPQd>%Qre@Q^OQ^_1l6r0z2O-@DXEXtXu |^2} VEut[QD f6`RR:u}QXg7Y'fPu`x7rGF4ybgF~bFs{cbeHvH{xwHE]Qpbf3VN Qyq[tGk5k5k d+WG^7T؃=e`kk6PȘ^WS7mtLWHeO[ڸJW}Q&uQ;%Q(X!Yp^Dn 1u%v Aha!~c5D'Ypdw7T5[pGG}\J1DcyGN% MQ[[fc:)SSk(뵃eՋ>x.Ae6TX[kes'|qUƧGft*(gӗS:SGo X_F~_0hoGQ43~G6pBIu$KGyH[pHEyIKJ!i/gJ 0LeiuP[&ceMHqąyFNM5[r<)6I5e"eo0VOeO]1pkR&w{S>U-xsYsܦQ5UXmBŔNy`[S= _U9x|@N'h8g VzVTimHWVF7j)WE8Sk`Uuh3oЗb4Z `x)Hpdd~YIG~FE-YnoH4z]3T|i56K @va=ca[\u)0>SB@>PbqQdEdSץ(h^3ا]6"ׂJeI:OAXO>աa {2Hsge:P#U3[YeO[ `SMgyA H`QJ5T+e1Peb%PgUr: ^H r|J{Ķ_3 ;eiShYSZSń95 u6PzGժUͪU_U|jRYrSLgܚ$zufP='kиqGpGJ(' Vcntt}DHeg~v8HUI@~bJP {vn)vPđ{7iEipLwpg7K]yjϴLH[$NْQ89I<඾؉*zQ*rΩPidKQLj'x}UE ZoS[UIJBsQE4 ` Q:LU_QP^uWwUJ^uX!JqTʎwXqcdAua!!avS)Yn GCA5E~ ;hGei4Kُ$DLv[ H`]+Y,N*`!KwPȹ>REdyNiO>5k@eSZ0Ͱfk}]eyr$P1U ^u&P[O@>Q!|J%N.<('O3O%P P3x#R'RfOJRS^$a)T?5,|4">^::u7T+ jyK9Kgr. ]hudM5u4Ҍ'IECSHZŹY+IHZ\8Fp!]ӻTJKKKwCH]LKԌ0dJm/M 9*0 HL%O c0V!wy2S>y*پ4kO>NO/1Ԩ.P2O5 Z$*ܧ "D0C 5' zc9XFtz&hFSlrK 0ʹt*(ڹʣ0N4* #䌪5+BO BK>1JIA}K}VX!+t5fc,hmZ0T%ȇLS-_ ҭn\o WhSk4ig`+XW#\֝+#bU܃ &.2GAtLBCW~ b`F$ YC/b}!)ߊcw`e3;#*@9'%Q l=IB܏?ȏ.A19gUj}#J@[V$.O6%B< ª$$"*W]$6E'uɁrX[ b)k е%n?p#[mV}sJG=d|Lg!+,/$  A('J8O Zx zps儆Jy{ HB$}ȗ#H,[:A}q~4U(f7 7ve|@v# -H5\sF4J'L6ɨIR:VY6l2]E_qK")Bݪ <aSSuk?&-#H5Np0!`C#!/^᱐y(GTT[pG ϥM}WU _z!er0:!σ` Ya†D1tA_Av_ce%3S.O"ii":be3*k61R⶝!&f&U"xl3ڇ4i 8H:uJUݾ. 5[Kit!d 9sSg+OT bO+^씨> #Bx^=Cx^:_x--ч C}0XOZ 8{+NZ BivDCF^0+RDd8vG6ĐLlEȤ, .0.+B@sy⤂TFM =+5F) Sdf 4(.T&5d^^*zw4BR0x!8`b M_2O+ $ueRt .@ӛt؄jkƑ.9BhO`ٺ^C0 _pz҅Fu O* Rb|#CmN($YUȑ,[e]O"  @`4 JAg}Bܗv?G GhO\/"EHQ,g) 1tPDMt sšyn8TEOj=s!)Bעr:ԑseoX ?!?!eQyӖׁ LhOJ"ֻ$p1{L6yͫQy1\2#6@38xr+s:p|R4SZ H='Aӳ@ D[;4> B#Iьɺs .ZȉK֑a(퐐0s,(@HcpI |6۱1}@ۇ#;A6%<V CX)0iTkMXVa k 5vLO1^{{)Ska%[DQ3}XD#BKF{Lak%"pۺNَ?+L E{)L`ɂ9*wd*%o;Pֹc=Ǵ,LL$M1,Cȇq<5@$uq'5:E$fpqqqwRacf\1v(w>8DR(q Ig?*=ɽB$_Prg(/p wsuC1n`M$gNQo6*AHgӳs*ӭ,ݏE s{f骹֫f xn%)+:Y"fXF3rVt&noFw^ !Nެݣ]Jw<jLj8ߎN;uS~RMfѝ[G&{' SϞSë́{cegJ?RvqNքrljk}=/oG*unG B(4EE}g4qy52j$4r XX< ^$q.fЂ8N)H&2PaiΊRVw]}| |jt﬩;Z"oh`g7AT)G{!A_I/UCgj=u&fb6Ngp*^Ï/WOk&s[Gg_@ͷ\:mbJ})}~~~~ aC?O_Vtݹo Byv}Vh „ 2l!B %㰯B/t0 E>@` :@0YSqG0k 'РB-j(ҤJneQ.ݷ))4iu}b1x,B4Uײm;ҡ&R0IDhf%vk0Ċ3T!}S!~y**, TCvZiv +04hgj= ^ӦM %0`P¾y^X@#١c.>gS!PBJ VP@8ɠ?e`j,T ?=&Pd Q9tABPdex)yiPl5Zj[%j8#5hy%O? W~H |BC 7 'b D@ PS%d@hA&q9'rւG:Vi|<*^nA@uOd@b &DlY'**:kcvz+++ ;,j*,:,B;-Z{-?I-z-{.骻..nA{//A mZ QDMB%[efrP EC*cGy $3OpUG:3c*5@b,P8t)}M/$>m d&?'2QzFrC(<|P4@g6qoVL>YPֵrme @f!, H*\ȰÇ#JHŋ3jȱǏ Cyq ɓ(S\ɲ˗0cʜIfB6sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶6nʝKݻx˷߿ LÈ+^̸ǐ#KL˘3krϠC#WI^ͺװc˞M۸s&Hj Nȓ+_μ'ANt鈪kνËOӫ_ϾOϿ(h& 6F(VhdR@$AX,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔V剖f馜v駠*Y@jNꪬ9A*무j뭸j@%zkq e+wGPlpAddzIPIFTd޶iIX>Ǯ@A nA ԨAs/icoDCоMMk4M2!ՁM4$l(,0,4l8='LOʡR "7\w`-@#0E2ԃp]s4{EX>J>n@ HO@@C@f@xHи4@@<0W~-(0w` z>*L{춏j<.; 0 `@C0?P柯>8p> p~Aǯ>9`· <؇ D_c1p p X1~ Р /A "Cpa iXp]"PC>j}5i8EЊIl- D^RUiܮz鼂 Dy/8&CIA@!]HF B2sM43ˁT Ҵ W8ZP͉73ho6Ħ ِrciHڐ: eNy 4HI=MUeALݓCAˬju=)*9MCxv ?0zk&Px }:0,O/X ,$YaHvrK @ G|qLA`@ bf=\l P.z(tkЄT5{˨YŗaҏEnّJāe@W*$C!6(@N!LQcDp _lDt*R#Je| 9u!j>_Tnq%Hk86-,?[ z;֠%uhCt ')JĹ?D@0(^ B}@%J{}̴!٦x$P]|!E.B8łѽ0 x_ P%^f\DTYD\U#@ [ ݊F in M]б,WxbLA+JuKZQ! ln9hкKNcec8T5LS"OX1e%׍>ܵB8bOvFlomFvLVx:+` U s~~ X /jRtXCa]>@RiƓnHꚥ^Υ:#4c0CdU[W!@)l.FqNB#$9#K#{Fg;jp+8< A"Mj@b"EȁyQ >8ql3<8щN%,bX,+&[0prO]i yrpuoWZ]ЎgUks[~WM#ԟ Qvh/M06%'dWUyudvEsWkq'qME$ETDW{6Dt sB8u$s`@m,lt@XC6ŧtҖN'wS`emQ1޷UaT38@nzY#P]oAt:o0'`vve:h;K⃇Q^cqp?Wdcua萛&iDi>&V{p9pte2 UR$i@N@c^6V tϩ1 ]9|5CӉktGMdTK84(cUD5kQYN]li4G0lCIѦBmN+Aa P`QA`zH[yW8sT9X7Z[ma<7óA4h6 fPE\ŴQSQ;5b9AM1P I;`*?j=H] ԥ4Br {w'S˨A50rl@4yHTb2Ta:@\@]%jHNBhYmam ~0#ZnQ982UPܖg%}Y؅7#Ut%kAP pI+*awnzxz>*9iw@ JB :FEq˙Bx@B: *CFSXAZ| 8r6r\BAC@MCOzلXk{?N$|h>q^K I]o0/oYfDT8K7؆wV;䨘j`&]W 8hɏK8<mٴs*= Kþ֚:]bٜ+V Ķ-وh?W(yBvX(x=*-{HMPTtN$D!CBPG-gf5` 1b:D|(Ê4CQ$?Ԅ^8H''B,ėuYKf`;m`m,, }*8 ,s`C]Vyg! wi+P%>pw| @9B8Yebّ*&KpQ=$)Mv&G rUNGAW `iCgYT2B(2D{G/t7N,M9,̜3lVp?eE86HFlL9t15!3Jڴ _ڽ[i਻"a+ KmFw0Pao;k< jG=#mĚG)Ȋ(<L; q?@<!>Ldc Ȁ@DCX:DRF?5{* МD%/اzvlq:Dt^1d=8-B\s|LtV`˖Jk`TSsŎju(T,[gM[Y;JJ33"k=iV& w c |L(@2plKc'D^@N,CX2 >$ylGM[ ʪ,|Y4G=|WtBX߰I̘GGg͂d [{gaTsap7ܬtlr,TbSJalJE-{8\([J][}T*p0a <[Z}Qfb8P+P WK09Q~X̍ZDZy'dڔ D/LK} ѕV4݀I| d9h/cs ~$Z@aаhiny,c*S0QOϙɆdMeKl Ne{OꆆѱUavz?S> Q+pTNLV,c'Bdܣ6cr=y]W x q L]sY DM$YI0{%MtgD_".DIwC,Җj`p9ġV.7Ni8G`ֳ7 .n5nmô;ղ9^کJ O i%LdQS>, !{<8-OWOt qVªvs嵗Dd-sIAU-T{x'[l0LEOmjzt_}_+*n?(3 PAMt<J&qLaTCW6N >b!c߾.dȃG}5jHEBq!8x$ca$× Ã7fYHR'CC$JKQIf KaPLNTʵOWJ.cn#v̾1eaf8͋s]&L>  p1b/xpx ga_HSxy߅/\c΂# }Ya% 0 *0Q 0xGRR#ƐT'ZàH/2cE14ɑ}Q.ClSq‰'N3p(t!‹q!+:tꨱ*Ã`c2#C[lP2,2[̃ jK3&h5i4d8l[J(Ұ\hˤt a@*T}Cʉ:7WjS?7$=L+hprB!6S(Zw> )J;Ҡ^0(v $]h؇ҋ,)b(OQ B)1ZT*C+D]hßzkXQ  rW m0qG$`h&'V(@mklx,X ٨$L[p8I\:CЬ]% Ϗ+J' IrI20KcOZ01hXV)Ťiݧ^\W8l:{0԰Nm`LH?92~|B!?r.| ~0y9OY!!%dI\ U($bZC"܌!Q( h &%v8<|+$}8QAbo@BD NHaA](:B!I '0!TcDǡu Y@V(QNpHrۇџŐ"rTĉnv+ي0rXenaJHƙ# J]^p$%p!,%t7@iXŢ`!Z3t|A'a߸"p)aǤH(}." 1 Jy;gT0A ZؕǐG ,INl(KR<1 ͓+[٪/u )BS(pqbh Iz%R<#=$HAB(*hfdJCJ: tEGM q$vڧv}u^تg:QKsFiQ#>H704e lqē6T BEB".6P!i؇'=Y3e,gHJf}0.E!WW8mqagsmaruE 9b ՕMBX R]` =ʺA|4t!r!K&R'ށӧI BjvJ$ {D767"7N']YxƖH,\Ի$=X<5]E x p) dΐx!M-NHhS4JfZav-D`L0YAĥi2}+v7G+>qJ0M^ 'Xc/ ;\aܓlr"'LȺ9$r!UI Qx"'"qAhx8{aHb,.N c$U ԇ%#H\-s_0R-p R8{pcrϊ z+a<@ft 7.t"#5KAT$k09BĻd2DɹZm5! .BMq&UW`33g4^3M>_N h(Rjb %Z F*8$K[D 2Rȸ(yC 2A m'zKƮ((%zaK[:3uRNK'EX_ٴJm1~.3|R~l⼑LPV;C|vb1CcI5R"y (`){խL\Le⩬xL ;X ?. 3 RȆ~l*^I5,n?'.<=y.C m"|u 3Q6\|a@'{ |9N8}K;>42) n $RCSǃ4u‰}N脃}PH 8XäC[ߩ$]T:5^3iܞg  =" g%=Ę% 111Bb 잣|,cTQ i5 "C: IAhK8Eds>*ĉ۾Qs̐9HR1AA1[$\lą\DLz=>L;o;V\MY`4LlM|M،Ml#MMMT"eM,N @ј6| bl6>3[Pȓ(SyP_WIƦ})NPM4r|"Bd-*bE^G` L60ЏHԦvߔwI1@"@oDѠ1PǐY-IU9(c-HM˚bP!, H*\ȰÇ#JHŋ3jȱǏ CI ɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊK6hӪ]˶۷pʝKݻx˷߿ L0M +^̸ǐ#KLt.k̹ΠCMӨS^ͺװc˞M۸Y*ͻ Nȓ+_μ<2vNֳkνËOeJϾ咊OϿ(h& 6F(VH" Z!ph(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈~e@6裐F*餔Vj饘f馜v駠*ꨤ8@)jW Elgj뭸kOn&j +e$OF1Dk6\…>L XaZ͹i[A 3/ALS;ԩˑ>ԣ6L#£0>ˮVA(CmG+2c1AB@tE@kL DtmjD#P*TGL43_66盏6;o8@ AdttJ@BĜhlp-tmx|S-W7x4DDQI#f;w砇.vӯߒoʤ.(@ SU>$ `$>b` >  P@|"P|ɣ@O~$HUoHWG4ɪ-`g@`-@Ld*؇ Y( %( R #AC~D! A{}0 1G}D)Fq< ƒ,JQ Q x`1?ba&8AlEU#BhPq ~ >IHBA RtH$d\!# A HDbrdP7"b @nIX%2]dYХ/R D1Q.ಒ  V(@`+x 89q :L C@28zIZ6"=ğC0Ȫ9 ,!.DD y(@b+dh@9]a#LA&Sfr!7KN!҅ B1dIBυ MEQY Ī9 bчD@0´0P`! eCÉx HEHUՐ@@Z34(*%% +҆d'KY:L!;@R&T}v UW C x٧EφuY ӷ+a Xv `︒ %bs̭m.A<FBFzG8D`9yI$ ߂Q.ǽBZ$CO8 "W5RZFỦyCbn!;(cPA|8 /f2LN%֭HPN9mBU;#SmBNu*Z ji; !=!ALCX! 0rr1O!bso|!=/E DAH>#p?K_٩QPJ3vts,rV@DG XmAS Z`ٷ!(j[D s5BքE-\ 5ģ56l7f_gҚU"Hƶr+BP7?y/94 $7ނp!?݇-}1n/!^A<)K2 0f8UFQ ?ajDĈ> ؛Y 2`6E.( ԥ@=b$>B Na [|_@@낸֪@,VO \)W9~"DksXE"5-u(Ywyw$s_oԮv}C} /%0˂Q+p(';y+WO1a3kȳO#Sǀ@4E>XOPz &`D &0zBC>tVC4l{\Wl75P&uWMdRvut4{|IS|Q}Z1gT9 c$oZd}DJTWJHJHGunXbj; MU$yP/c<7Zbѣq3@$+05ecUV2I&U&fUł!\a^F@ăpD/$DXshE{sWCG^E?QDz$^6t[(wX\nbT|VWxInFsS7h5qSdhX ikXpW&Gބdc; !0b.tp?*R6eZu<Ãr (ZAd[rSDkQfd$CUgdXVz7wJBfwVuE˥R>og 1nǔiGBG UG߈|wmQIwwnvH AwY]I=AMwuHAƷtaR|Yqȏ@;^C -UP@ÀCO(TOZ < Xc$1>M>XZ)>hQF*e _O)s0i$ayAPcsfZ _Mƣ%j - ج ZőӤ)Ax* z6O*)69G`JC6d_\rcE\tWքХG2o荢W^~t|ٞtY0@$^n汊T HHi^HV~4RH3Mb]S qrOi_4qV2ld ģţ(<"ژ'[$Hv6ԯ~4cY`/۩x~J: ]vנ/ewĩ#r-5cx6ACXIcڪzSOy/@1ڣ6ǴU>J!p %+ڤʊfv\QGTi?*\$EagW iE۔H'ECH6 B ˆK'4}+9 kJSՆtJ]pp16\0 aM a_q`4Azv<yZ*(! 'ApFh` =#2sC`_@[|U6B"`e3:e,TWsle {+0*lGGwzIJz.N@{G#5ᖹUEjqrÚe>It=xWJ7flIgJ]͂g~sp ڠ@Р1cWNl|xdzJTBAz"yaO ` X@ҽ(EPZ&ڵz MejD8'4de>dǶ8K@]3l>NE1jJ!M$CFH׷۸Xz*k?ײ cRbtH솑tq4N;|p-pXsdSAc@pԃ= a:|pl) ˜r׿JOLAYk% U=:UD}X\ X%40.> pW<LI1AfkʿxWMlc'vIDvM;EMΟ` ~+^NY>0΃ vǩTƬh qvq:x,Pj͡ᢿcTi`ˬ,_;z,Y,m*Ȯzd F]EQQQ l]l:?mC\1E>l}t^p78υq|p_`gW^}J$π$Q[`3kwK9;1]0dWj w ?Q9?рX C=AٻoOAZ6榷.]vFƥF oρ[dvMv !ŸD\< tٹqLm-0?<񘱊 T71'~L_Mna挠 Q:,ÏV ,2xcZE!ȼ*HΑONW0p_}4o ZHAņ0^p>/B0HR% A@H,%9fț q(O@Nc }<g΁<~ $SE:M_O D(O!Bia _6D}x Xc,[ZK[ ZP>+p qE pņ7݀‹/^8M88}&o,`di?$ZA%( P"hsb Hˆb B}2g''h*7KRK"ҋ'C E2-l2L1x46h, sRHf3GFk N .B|͠nJ6ۮM6Œۦ܇Ƞ 5+n6A4PD)}H$QsoKORT=LCNQR ?HUI>JUUOZQ$"$2Q^y!L9[+02[+$brV+Z0BU.jV.B{63&lN\0X0(M2,S2ew+mz5O1ߋ80H^vx*9N'輆@ ӆ,fء( ;@}X%F}`OQTJ`b}6@zfiBr)H"L/P$n-jd2H/h-fqVd2 uaƄ|܇OqyZ-Mʋ5[pM!8EcDM1FwɧO2aЁP_@J9 AS0mH%=h+ Fǣ<5Zf2Zh(~(UAdZI_oU* 5)WR$0ƽ noW yR+$I%l[ʁ'0qi3F Ô"ׅ1t f>@4 ;`Du|5NW1KD&~͹_r+M4F>pʶ,B"Oβ'Yp% p H.Бn  J$@ٍ47@ t+xɓg<({v w3s2" n D'zlo{E@(=jQ91•q"H𲸩}6|_bؗC1 < 42ᦾ$bL0QW@ `/0FvC1I"hpOs5Ē!& ʓ6A<@D1<>}^=]ǖ.G T;}l-~[`J]02].ULo b}afe>2)XxU(IC91bM#n!yc%d0i91T2AE Wˑf3 $}O !@zX'ڝ)3Xl 9^: P=`E(P"aIRS'z=mCNА*VYʐ&ʠDOF\ӆ B@p?49Xԯ%4H(՘@q k1ܾ&`Mܠ f h$ ^ \"yW V5ay"*d%"AF4ʃe bKbT3x\&LYV>h 3Ho! 9twɟ 2}A" CqssDyݥrw/K: Pr^62Μ@G/E$WmZx*"6"#̊Fe[h 9܈΁xAb]N禾CoXj7rz؆ЯNC;]C(P Ϥ-N̮UF eVsشWbnRipX MX+4m(,؜`~?Q;V">|JJpu_">9P]mTU/}c\Dx,CbyD;\"COՎ"PH-D0*1¨2S hx@@0 90<<ۏa   jb9ПC[3&x{Ҷ77. ht10&L@@7,1;X!3ؓ5'Π >/lc6 < á8A)*a)jjR<0z>3Á@}HҨ7hn:'>*l+;)a8 /9# Q1 bD=#'#\@h&L#5.|cC0STL5c"]$`۹c|Gc4}L mFrjj#oȋ(`HD>W|GH II,ɍ(L}=<,ڽ 逐,- (xyl<$#{pIx(1ևNumWw}WxWyWzW{W|W}WC~W XQ-X=XMX]XmX}XX XXXXXXXX Xσr><tRxpYLBˑq.h ,L}`8uK.T>i8HGגГ]-I ȍPف LZZ)[YJDʸ![h,׍HP3ұ$@>Ć@TZ !, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵ+^ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCvӨS^ͺװc˞M[kڸsͻ NȓTУKNسkνË߽ӫ_Ͼ˟OϿ(h& 6F(VhfvIDȇ$nI(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6Z`F*iLjɵцO`駙妢jꩨFj iJ>\%P&{,l>Dzmc  >RK#>43M3j-rz:iNZoHɖsƶƾg%3 6B 4L8t.O=k40<i?<Ъbѵ!c+rC.STε(l>@O4$KE4D8SMD(*T Ilp-tmx|߀.ow>[k -<*-6ÄG.G2TL6w砇.褗l2L> K. l2FmU:P A@0@OP Pc@%${k_@o?p> O? ? @x@ @>F@#G ~P#؇ R8A JP$ a7 8@d0"`D# ORLS ~IA``6lp3BDhE+րx̣>汊CpG Đ >?Ҡw<$HCZxթ$YF@"Y@t V @Xe+u@, eA\X!$H,u-S 4A0AȂ)+샚ל6lr g7ta=[CπBd|0C {ibzS! P>z. qARġ ȁ@t%bĸt"UfFR4fLJ҆-I@z JX25 H;]ӂT{GEZĩ DZ BkDZJnī"1KBVrĈh6J׺dAK]rD MqXKdB;)O! υTv!GAZ TNH@Ճ@Q-VP7v YaE⠭+Lю @*_un_ K ׵.E֔#D,O؇4!CmgRRY%!)j=1Ԃ `|E " mmcv %\D Hh Ensܶv[Y!-A&`N2%&a16C k@CA"v/ #|)=@zilPdW!mh Yʯ@*TJj/ [0 $KE 2Rm La RyukYI@B1pVV!Y0#'"i5}bX!d"ޗ7"`1ePzu f pW?֛/}nnVTɟ5fAQ(>qZb&@->-F7:ӕ4FSZqFqgz W~nwDˑ-\s̥<.ĈxETfR;=-hԍwo ^RJk8O =YƪfP Bق0fߍX 6m1R;f9.mihZǽJC$>qv9o ]x40O\H)LJ ^BA*SoHy"1l"r/_b},Z>?]/0:o}C¢{aƨEmo<3`,JuG$z m.%a;W!^~ 89A _2}`g ΋ʒg<3=fks>ڃ>yX dP@[FZkO{B#A`WEUx8bZfPcV1udoO0}7FʤRvUggdu2i#G6G}Շ|HM(~7N<% >e4=@rOccy1zSX@?[vjUhFI4 1E`a?@y5X!DBdeD%pƵud%p?XQQ:ĕuRSUggV7:6DngL(~p&FIG2\Gj?kHo(yYH%TI6z'r'_r;Y@vUOÃO6>8T8wVG*m V %[GamEUYgDWDG5C5Egn({Qw}aoa^]eK0]1IH%aoOJ2V~wOw݈5850Ejaq%6P>CR a?Xe V3h?Re#les~8`TtVؑ%%Z Q!f]DfgHLOsw1QB [TeynJDn*ln5uMě#5QVILIԓFHy6iԕWf]Ig̥ApF P)A w& 1a40)a/ ;O5YlqhS@SXT#fhT ?eey-@ӁAhs 5tW`BsI_O%P2]= FE&V6P |eFpD`WE4Pwu)|֥h8إVUXiGaETE}FSMit9+aʎO0TxlG<Lr*=%jcCS_} e.Wp_܃ 8g Pq“UECIP)T*BAUf&f`6fY1Ju\QF?CpR4N\&2\;RW)eśQGUJ *uGjK9Xuo\zOhS5R\J9ZQ7CZeEFO x2sQz=j,rY> = POgY7@d$)@q_ 5  s1ىP@B%9vC}DXZ fH5QYG!O?hEFoۤC¥M$q/G~\gH…D4EEKؕw&d[p4`[J`Kt ǹ* ;xF}:7yt:3>s_/W)S? p(0>U?;>(zX ԴB_B{9ЊZFN:HroznV`<0X8`!5tC6eHPɹwfG<7H1PLč!,IDhGqaMez|t~K7K@ ل;]0Ax.;6SPxrȡ׆#y)K;?Ň=P?w} d)x>q+#t QPuQ:Z Q %V1  Hp#\~1HDu<?Pe8@Skn;8!rW=i}IZ5$QH۷_@~`!<++i)Yw{K}eVP,LDL{æYr^ٞjr9c}v([CO,*I)_]X)ʛ2S?_h = ዢAB5JB%NC/ZU F\1|BZCRC>oD1 !GrQ=Fu+H`W wlvDՑ[w38ɴa,V[}KxaMՓGE_`S0epk=F֊ (|h:i,M4̱d9,\็m\M]ٰVSĞ'0jkm`xq8qT3܎)xEeLl'QPqh=Y @ pDZSѪe9ΆZ8%KMg{\dPFK%dSdSF`@YNӳto`X}uW^1H+UE@ap&|$S}fhH͚֔qx$qZ!^A f T$7 185pz^%0#&ԾJXKB) Qk<DfVj[{u'= v q,gN׸}fx4 :+\ĞP,`i;AMQd [b^jDc;6ns@sO' xEFB"Gi+('d khrqT$>_AcF}^|VEYR^sⅎDB$dɼTՉ6Iagշ|W a`$$`F J\`+aM30nă7+l_ģft /@WgC%NXq߀<$xX)!"!@p@-, π}d^@xsB FxSŊ"b:da%"āuׅ[%P}2c}5B}p1sv? d"}8B<.AG@&Cy@XrB؆6]Li-~X9 .e>ںm1V|_Wq<0S&Zi}!ŃOoC䣏(}}]!LjE# H< "@" I}xi ` _ DD觉2B*_\HFEq 2" !"*!H#m z-&c!2& )20Ŝhj !+zȅ58A: <&Zn|7j.BȻ|H:+"Hۃ(7*+s/:<2uGTS}J-鈇*Eb-4#% v%v`eBFQE }}r 4Ί|-!"/z"'EL.H~˒vhT7.D7U"|!r Eh}(c-ш>Ӆ5o4 |IJlݧBHz$* ? (ND(Pz}4vVv!&X6ٟ }Xm+(R.xrŠlܭ!|̴'}(M}#ST=TG(fO 䶃[hۜ[nD+}Ί@Hy-4}Y[HGӯh-Z 8W 5\j "親[I%"ӍT)I^KHu0f3;ZHHJ4 'g19  D<"Ҩ'y3{3MJiYQ aOh)Uhq Bԅ՘K=8MU&3AY[)XxjT5pC©p F_Y2TD/LiIC@NĐy^20yȽx'54t)a-}L=aFM`,<)EhرZx2-eqlchX+a gHO["djD&LPQ88NGFݳ="ۚX5DbEJ Q9E7£:iYcQ8iBBa4}t!C`E-daf4#'ZYb!%b2N/hDЉ *F=mg;?9F"bE H7~XnY8ƊĪIӒ9G`!y+/7Y) ǜ*>F$Y>"'EG8/WĞ 2?i>?T#(![H,7}D_H#xWE!n)w!QN4E(9- Ry"62&z {6:ܨt;)o)܁  y dH? VཷPNZpTuxa,f2A)= 3DB$1ׯ%r)F ZFN`Ҿ'/߉1nk}x{!o+4S7r}H:SH!SDF6+zBXk[/:1ftF8Tv:n"[H i6_| hn;a (=wj(XZߖuX"_DEk.Uke>"mV>rHQdQDza݈8>ګ1Be*Ez[h"veEX (k(';ڸ8,;Z8}&q19PK* S:!ã:%Z1p)Ra fZ˕x&z0 (5 +;(1 Ȓ0@*:{0 r@;pdBcA @:AP33`qk*ႢcAcj:JL BŠ#tc"!3$ VD j>-0h[\Xz8 @)4HʱbD8`7J\*KFjFkFlFmQ7u (IJ4lAxj<3Jx4r 13AtCCCTHXòN6@GT1?pqTA|pMxbNJ#E;Dے39L$Ȳ Sėf̏F`LJ\JlJ|J kt LT2M M)# ়q;3!@hI*T+: ,SD46!CC5pȌE܇ ʠ34F-̼ʣkQ+ A4j ai5b1shLMIkL0M-&{C#퓶* Ӎ|D.TTȊNZɴOdA3đ9Gy¼,lj9`LE|đ,OFOTTđdOz)̧Ÿ`Pph-ZK@9Oڱ`X-5X|<墣QQQQ$  R!R"-RcbȊ #}R(R)RDp)R,R-^[FDR,U/ػ NUq')Ѕ08.S;EYJ@C3ӅHACL{'M # 0`\5ӀQSTR˘!ò`f,Z :@]ӁpDMUaUD2 _+ *!5. a KڹVs=W,|+K'W\X8@Iz}7 b8L} !y,EW]XmX}XXXԊXXXXXX YY-Y=YMY]YEajYYU8pYYYY"Jqy ) FEPV9Eiۇ-Q:04`х8!2`YpLա]wT m, u!Ɗ3ߠ9{"}Ze%,[ ۗ<|[[Uʀ!, H*\ȰÇ#JHŋ3jȱǏ CI ɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJ皪XjʵWWKٳ4۠]˶۷pʝKݻx˷߿ LÈ+^̸cKL˘3k̹ryyӨS^tְc˞M۸s= Nȓ+_μУKN]j}{kN7ËOӫ_Ͼ˟/4>ߏv(h& 6F(Vhfv" >tJ))BH),<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨꪓ*kEF뭸gEk& e6F۠>:O>Cmhc  >n34֦K:i]5M /D, GT>m){ Q0YSd4\;GC.2*l&;<Bp'sTθ\@VT3B>MV:3Rg4Ӯ\ [dFGu$߀.n'7G.Ww74- ,l褗nz4^0MUL.nNm2S>KhS>'>P0$ACL@Km@~$P@@> O4(o؞ },'P=G'$Y&@}0! &0@Tc!P#  G$H R >doh `8@b" <>bP^4>ƁĠ <@l-A/[D(Ѐ ܇!FRH$3rH<򑐄##F4@c!I5H$Rylez%:yJIRɂpK < ,3,2L 2aB`]us 7INq Lg9 ND!cH& HHOj{ >Ђ4"G B,{C ``I2QQ#0 $AEBYңцLgJәv"J3ST#.HN%OȪiqT`6.4@!k LmHB9J}vdVgQr1 ]HGъV! ]kGVlt!?%HV)rǃ@Yܣ_Iҕ,Yjؖ5!"iAj*r";HP+X L;/ WeVՄ6T#TZb:"@ѭv ɨCz&wHb"ѥ@8<`5Gvd6)mbZ$\0څ mAw"aN8ӢV)*S[Ȑ cuA noU0 DmQ(@^#mq\W.DFz:_}˪4Eh &BFG؅ U^/}dEIi rI,;VwH${? ۺ/;r,q&mAl+\,  ݪ cعqsOR6Yl5"҂tAoE1kTnf]՚E+}w5eN]\Ҁ5c^،=$͆vG^Aq^8^޺;ɬ@K="^$9FԴ1I'9}@LƓ7#ψ|= xմIyfKfIyjNUضG1m>BA!PQ[PEtV7s,:sz|WnnQGtPgo\ DlEvFY9Eep}Gd}g~Wx&muyTdeYveR$IJ-׆,7JRm s0jp3oZZ6mq%P{ A]pa3>@es76UcLJBs|V Ճ0ElEWq&Az*F]E_T_cE~dE%xW}H|_Gdx|tI4PHgq5BX5f=urrRhKtrQm:j0=1Qht/0 Lså3n(=QS[6\1h[E\d5{@DžbBitB$5*'>0P_WohEGh]yRx׍WC%ddׇ^TJ}qyW1K1\^oĎҴ'X hN-h8jqT 1s6npPR' ouՋA%faH"=? iuOTFhn$)|ܣuQoV-I2oE2P]TD\D])ATiwiѓgT]%ygoc%oԔDCRv^x$j6I`wE6IYS捆E.Gv0ntHeay r J\CYMX8faGZY [zQ`郡32YnJw {ʼnCDfu!%EWDI5fv8G^pw&RD@G`(Icʝc 8~˖(yfIaXJV K4``=\Ų:4!fAOc?q.CcPJ 652:U>@V$(%ĕ|fQؚjWb#`avK^WVZ:t]8P> }]ϩ] ќՙEHdijRʈ2 v-荫q~.eHoI5r8} l aYPfDmdy-eZAeY\P0a`0gzd@{9g/gz EuF2ÊO/y v[#Pa@ @uQAgu{| \bѵPI4 !RL דB ^R o4YČМXrTjxtTNE氐GSy:X{YhRhy$e$[/;2lKK ShfH-K;JVY7;L**B,]0l+ *Z$*uvYkL%P?AJmݖ>2:(ú)ᘾ@v| C A~kbw%\Q8E)]dʓkty~ʞ czF+e&,K_Ԝ1  gE_GFzFl<`+h[HJ̻b$y8Kl3+63TBLP|FĖ C5TZ^p&hջK4 N1w =r`C+E+ q22HX>/4U*֫aʘ+2JBRUGna(t@@  [8VoP6Pi)[dvfc*pQcK~D9`ڕrpPGIlDr|vFR8[ńiLŢS»Z yIaLLtr s$y$=zKqXg:ZyFB5{&PiSmegQPlCxLiLEoԬ2IOEba}+UYhbQ:E>fiڵ^(>_id{uqGK\JKH'j앣Ĉ([{]+$(LdqZYbļ.߄fyx7Jam(ZC0h?=AmU`̝BOXn鳘o:h& Um[N[DD$!pdf$?XYxyڸ5pN'7?XɥVHݱRz: y=П察 I[hه[<xL`\ Yxb<W=&YfJWJGmT$s;͘Qʍݦ/ɂ[l b%d1މ~ChꤓN_7++@\$icOg }~_ ~q7\X w@cIhD4G5IpQxl}z]H^ٗ}AϮVLeLۮKjY`ѩЃ1]pZKҡZ3/=! ! o /Zm:ݜ( ÚSM%Ab\maDELtv+ܸPŮw1qcįy:\h-ǒE(EO?L^JN.J l_jq:`퓇OnqODn婥,cb~x aU8!` EO?ssA6OuT Z3Hg V(D,ba5VY@d0F qyL/G{_$y~X`MZ`aK-k[^melLze fxW $ϊA ,5m yNE5n' Qa}*R8/>XpaϝLX  ZXǁt‡D_v¾ Kl41,DZҲX1m) ;."e<}d B~!<p2FCЯ "#5c(*H; <.z:}h)Hi!x'*hQ&Z!Ҡð ȁTPˡ<"|*"ʁ"jL2A/+(#,4 ¯xm#!M=bl`# N8N9Jk؄/#ι: t B>b,+#Wcg 2,A$ܧrZj jqEJD$ ([n"1(oB}j"Hz1H$ T (̈݌H.φ,베(Q ˶4HAbN};8#v# }:b9 2Z!0P99A*jϡ.}@[^HVS a0áC7 tH(ܱʦp3 lRlJ$&@}&`W&x,jwH߹$(' q ֨cT1102rJw3І6/4 !fsy 5oX.!`zN Et/3~C{&ա /#熀H\s%?邀2 2 c}H F?)x #IA5#!r`G '%ud,TB\[1`Mב; jR&܈0Wx wְ#V M 7 q*}#ǹe5P@bAR塧aDTLk_3c X>ʸb#~`-Z0j8eDFP,#wmdڨ$7jpqt#0=.b a+:Z8ġnuTYqWO01\3)V)SA@AW=eAs.2#C`!qx,:0ҍ܈!7b@@!7moAdTع}i/#HgyAs /N6DL˝0Fسn53CGRgmѨFǑ?C~,'HTU=^ NlZs*ְh8RZ+H9j L. 5E/+8rgF8hD\:Dcv#<L0*F0>ˌ{p>R; Dm1B| UȌrC<%W$჆*Ms,Jz3ū!G7>(}[# H%L*g;`Ksca2!pb sCƲ#vCȽmťengֈ7'g}:C5D cPxd} ]w0pj-\#RQ[(pFR*BψnT^:E9AAڐp@TOQF2>x4HUsRvŴ}6)W$fH}U|]>䟺Z Ĺ@{I^$Y:X| _{jQvdԵɿ-<7wYtUyZY@ϟIWڙ?[7{~7Ј>;@7:7b 8@܈+A䮎Xh>ÿs6P8:[;X9&1,>CA)& n(< }<i }{XC(6a,{P:$ :ck;s 0X-F"@i $+Z2)D@㪞p>Ո59j+2$Y$_k3EFFql<0!?AՋC~*}̈$` )lpIć:lu|itǁF1H|l|K{P R!R"-R#`÷k<2}Ҧ4S?& UT+ 8MZЌ }ZTY=|"jN&s'}(>aYMVB$xD'{h<(ͨÇÁ(CiYWe&GxWyյ')VÔ}\E乓# l݇8}Pk!N=a:ۇհ+鶛:ʎpyY-Y=YMY]YmY7JYY}ʚYYYYY ZZ-Z=ZɃmZ}ZrZZʓZZZŘIЧUU ؘ[dΆx6ixώ@[жQ[W)3́1ъ6SIIUj e$-݇pч(y !, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈGI̸ǐ#KLyʘ3k̹ϠCMӨS^ͺװc˞M۸ ͻ Nȓ[t[УKNسkν+7Oӫ_Ͼ˟O<=(h& 6F(Vhfv fEHAh(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlp)tix|矀*蠄j衈J@6裱u餔Vj ]*avꩅk|*ꨤjꩨW-무J>ck>>`1¾l34imc6vkކ+lVs>#/3 <&N#l>P^TN0,4*kqQ6|>@nXLUSp,rD3 OdTHL3Kk=%`@*ۛDPN$G`-dmhlp-tm7+hS>wnGcA),P p#$ T93E @>$d> `zӻ_ Lz3P_zS>_@;? @#?@1$8@:p>8Ao)> @` 0x`p