readme.txt000064400000050274150211770060006551 0ustar00=== Custom Sidebars - Dynamic Sidebar Classic Widget Area Manager === Contributors: WebFactory Tags: sidebar, widget, custom sidebar, dynamic widgets, classic widgets Requires at least: 4.6 Tested up to: 6.7 Stable tag: 3.38 Requires PHP: 5.6 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Flexible sidebars for custom classic widget configurations on any page or post. Create custom sidebars with ease! == Description == **Manage and replace sidebars and other classic widget areas on your site with Custom Sidebars, a flexible widget area manager.** Make custom sidebar configurations and be able to choose what classic widgets display on each page or post of your site. * Need to make a **widget sticky** or fixed? Try our free WP Sticky Anything plugin. Custom Sidebars works ONLY with the classic widgets screen that was used in WordPress before version 5.8. If you want to use it with version 5.8 (and above) you have to install the official Classic Widgets plugin, or enable the classic widgets interface yourself. Once the classic widgets screen is activated the plugin will work the same as before. * Having problems setting up SSL or generating an SSL certificate? Install the free WP Force SSL plugin. = Display Different Sidebars on Pages and Posts = Custom Sidebars allows you to dynamically display custom widget configurations on any page, post, category, post type, or archive page. ★★★★★ > "Custom Sidebars will go on my "essential plugins" list from now on. I am pleased by how easy it was to figure out and by how many options are available in the free version." - [monkeyhateclean](https://profiles.wordpress.org/monkeyhateclean) ★★★★★ > "This plugin does exactly what it says. It's light, integrates well into WordPress and gives you tons of possibilities." - [DarkNova](https://profiles.wordpress.org/darknova11) Every part of Custom Sidebars integrates seamlessly with the Widgets menu for simplicity and control. No confusing settings pages or added menu items, just simple core integration. #### A Simple Flexible Sidebar Manager ** Custom Sidebars Includes: ** * Unlimited custom widget configurations * Set custom widgets for individual posts and pages, categories, post types, and archives * Seamless integration with the WordPress Widgets menu * Works with well-coded themes and doesn't slow down your site * Set individual widget visibility – for guests, by user role, by post type, for special pages or categories * Author specific sidebars – display a custom sidebar for each of your authors * Clone and sync widget settings – quickly edit complex configurations * Import and export custom sidebars – backup and share sidebars Install Custom Sidebars and see for yourself why it's the most popular widget extension plugin available for WordPress with over 200,000 active installs. == Screenshots == 1. Set custom sidebars for individual posts and pages or by category, post-type, or archive. 2. Create new sidebars without confusing settings. 3. Integrates with WordPress core Widgets menu. == Installation == There are two ways of installing the plugin: **From the [WordPress plugins page](http://wordpress.org/extend/plugins/)** 1. Download the plugin, extract the zip file. 2. Upload the `custom-sidebars` folder to your `/wp-content/plugins/` directory. 3. Active the plugin in the plugin menu panel in your administration area. **From inside your WordPress installation, in the plugin section.** 1. Search for custom sidebars plugin. 2. Download it and then active it. Once you have the plugin activated you will find all new features inside your "Widgets" screen! There you will be able to create and manage your own sidebars. [youtube https://www.youtube.com/watch?v=q05O9OFEYHM] == Frequently Asked Questions == = Why can't I see a widget menu? = This plugin requires your theme to have widget areas enabled, if you don't have widget areas enabled you probably need to use a different theme that does! = Where do I set my sidebars up? = You have a sidebar box when editing a entry. Also you can define default sidebars for different posts and archives. = Why do I get a message 'There are no replaceable sidebars selected'? = You can create all the sidebars you want, but you need some sidebars of your theme to be replaced by the ones that you have created. You have to select which sidebars from your theme are suitable to be replaced in the Custom Sidebars settings page and you will have them available to switch. = Everything is working properly on Admin area, but the custom sidebars are not displayed on the site. Why? = You are probably using a theme that doesn't load dynamic sidebars properly or doesn't use the wp_head() function in its header. The plugin replaces the sidebars inside that function, and many other plugins hook there, so it is [more than recommended to use it](http://josephscott.org/archives/2009/04/wordpress-theme-authors-dont-forget-the-wp_head-function/). = It appears that only an Admin can choose to add a sidebar. How can Editors (or any other role) edit customs sidebars? = Any user that can switch themes, can create sidebars. Switch_themes is the capability needed to manage widgets, so if you can’t edit widgets you can’t create custom sidebars. There are some plugins to give capabilities to the roles, so you can make your author be able to create the sidebars. Try [User role editor](http://wordpress.org/extend/plugins/user-role-editor/) = Can I use the plugin in commercial projects? = Custom Sidebars has the same license as WordPress, so you can use it wherever you want for free. Yay! == Changelog == = 3.38 = * 2025-03-04 * Bug fix related to notice on Dashboard page causing a fatal error = 3.37 = * 2025-03-01 * Minor security and compatibility fixes = 3.36 = * 2022-11-26 * Minor security fixes = 3.35 = * 2022-01-11 * Improved the classic widgets screen detection - "Classic Widgets" plugin is no longer necessary if you add appropriate filters via some other plugin or theme = 3.32 = * 2021-07-18 * Added notice for WP 5.8 = 3.31 = * 2021-01-30 * Minor fixes * Added action link to plugins table = 3.3 = * 2021-01-13 * Minor fixes * WebFactory took over development = 3.2.4 = * Added deprecation notice = 3.2.3 = * Added "custom_sidebars_allowed_pages_array" filter to allow pages where Custom Sidebars can be loaded. * Fixed problem with double function declaration when Gutenberg is in use. * Removed "Sidebar Location" from build-in/theme sidebars to avoid misunderstandings. * Updated "WPMU Dev code library" to version 3.1.0. = 3.2.2 = * Fixed a unclosed A tag. = 3.2.1 = * Fixed a problem with sidebar replacement on front page. = 3.2.0 = * Added ability show/hide widgets depend on screen size, using CSS media queries. * Added integration with "WP Multilang" - now you can choose a sidebar to depend on "WP Multilang" language. * Allow using categories and tags for pages. * Improved plugin initialization now, plugin classes are loaded only on necessary admin pages. * Improved UX for Custom Sidebars Metabox on special pages: "Front Page", "Blog Page" and "WooCommerce Shop Page". * Updated "WPMU Dev code library" to version 3.0.9. = 3.1.6 = * Fixed an export problem on PHP 5.2, json_encode() have only one parameter. = 3.1.5 = * Fixed a problem with saving an entry sidebars replacement. * Added ability to allow change sidebars by an entry author. = 3.1.4 = * Fixed a problem with widgets display on IE11. * Handle custom taxonomies. * Updated "WPMU Dev code library" to version 3.0.6. = 3.1.3 = * Added version to scripts, to avoid browser cache problem. * Fixed problems with widgets alignment on mobiles. * Improved custom sidebar edit modal, now it remembers "Advanced Edit" status. * Load JavaScript templates only on the widgets page. = 3.1.2 = * Added integration with Polylang - now you can choose sidebar depend on Polylang language. * Added integration with WPML - now you can choose sidebar depend on WPML language. * Added check to avoid warnings when user delete term which is assigned to "Sidebar Location". * Updated "WPMU Dev code library" to version 3.0.5. = 3.1.1 = * Improved assets directories. * Improved widgets on very small screens. * Fixed bulk edit problem with resetting sidebars. * Fixed few notices on import screen. = 3.1.0 = * Added a quick and a bulk edit to custom post types. * Added nonce check for set location, import & export actions to avoid CSRF vulnerability. * Fixed a problem with getting sidebars settings for nested pages with more than 2 levels. * Fixed a problem with widget visibility on taxonomy archive page. * Fixed a typo on Import/Export screen. = 3.0.9 = * Added ability to turn off "Custom Sidebars" for certain roles. * Fixed a problem with a category, category archive, and post in category replacement. * Fixed a problem with removed "Category Archive" from "For Archives" options. * Fixed build in taxonomies problem on "Sidebar Location" edit window. = 3.0.8.1 = * Fixed CSRF vulnerability. Props for [qasuar](https://wordpress.org/support/users/qasuar/). = 3.0.8 = * Added bulk sidebars edit. * Fixed category archive and entry in category replaceable. * Visibility of "Custom Explain" link is limited only to front-end. = 3.0.7.1 = * Fixed visibility of Custom Explain - now it is visible only for administrators. = 3.0.7 = * Added ability to replace sidebars for category archive. * Added ability to replace sidebars for custom taxonomy archive. * Added ability to turn on Custom Sidebars Explain mode from Admin Bar. * Fixed a replacement problem on 404 pages. * Improved "Sidebar Location" popup - added a message when we do not have any replaceable sidebar. * Refactored "Column Sidebars" on post list screen. = 3.0.6 = * Added width to "Custom Sidebars" column on entries list screen to avoid uncontrolled column width. * Added ability to add new sidebar using the only keyboard, after you fill name just push enter to move to the description field. Hit enter on description field to add a new sidebar. * Fixed "WPMUDEV Frash" message for pro version. = 3.0.5 = * Improved columns display on post list screen - now "Custom Sidebars" column is hidden by default. * Prevent to load assets on front-end. * Updated "WPMU Dev code library" to version 3.0.4. * Fixed a CSS glitch on media library. * Fixed a JavaScript conflicting with CiviCRM plugin. * Fixed a problem with taxonomies. = 3.0.4 = * Improved "Create a custom sidebar to get started." box. * Upgraded "WPMU Dev code library" to version 3.0.3. * Fixed a problem with empty taxonomies, now we can see all taxonomies, including empty. * Fixed fetching posts. * Fixed a problem on the Customizer page - removed clone option. * Fixed Widgets Screen for Right to Left languages. = 3.0.3 = * Removed WP Checkup banner. = 3.0.2 = * Fixed compatibility issue with uBlock Origin and AdBlock Plus. * Fixed getting started box not appearing. = 3.0.1.0 = * Added the "Create custom sidebar to get started." box. * Fixed a problem with the link to disable accessibility mode. * Fixed UX problem with "plus" icon on visibility options. * Show advertising for "WP Checkup" in the whole admin area. = 3.0.0.1 = * Fixed a problem with `wp_enqueue_script()` which was called too early. * Fixed a problem with advertising, which should stay close when you close it. = 3.0.0.0 = * Fixed a conflicting with other plugins. * Improved functionality, free and pro versions have now the same functionality. The only difference is that the free version includes ads. = 2.1.2.0 = * Fixed a problem with empty selectors. * Remove unnecessary HTTP header - it is only needed when we run cs-explains. * Update Dash notice. = 2.1.1.9 = * Fixed export problem, when two or more widget has the same name. * Fixed problem with import widgets created before Custom Sidebars plugin was installed. * Fixed problem with sidebars on Front Page. = 2.1.1.8 = * Added support and widgets links on the plugins page. * Fixed export problem, when two or more widget has the same name. * Fixed few "Undefined index" warnings. * Improved import preview screen. * Improved RTL languages on widgets screen. = 2.1.1.7 = * Rollback last change with front page. = 2.1.1.6 = * Fixed a bug when we try to use to get property of non-object in "maybe_display_widget()". * If front page is a page, then we have now the same rules like we have on on page. = 2.1.1.5 = * Added new filter "cs_replace_post_type" to filter post type inside function "determine_replacement()". = 2.1.1.4 = * Fixed problem with sorting and filtering. = 2.1.1.3 = * Added check if there the function `mb_strtolower()`. = 2.1.1.2 = * Sidebars are now sorted by name. = 2.1.1.1 = * Fixed a problem with unclickable items on widgets admin screen. = 2.1.1.0 = * Fixed undefined index in Sidebars Editor. = 2.1.0.9 = * Fixed issue with broken link icon for cloned widgets. = 2.1.0.8 = * Small improvements in the admin UI: Better scrolling, fix JavaScript errors and PHP notices. * Update third party libraries. * Small improvements in code. = 2.1.0.4 = * Fix missing text-domain in translation. = 2.1.0.3 = * Fix incompatibility with PopUp plugin. = 2.1.0.2 = * Close possible security hole (XSS vulnerability). = 2.1.0.1 = * Fix incompatibility with PopUp plugin. = 2.1.0.0 = * Fixed: Sidebars could not be created on certain webserver setups. = 2.0.9.9 = * Fixed: Minified CSS files included now. = 2.0.9.8 = * Better: Add context-guide how to changes settings for static front-page. = 2.0.9.7 = * New: Assign a Sidebar to 404 pages via the Sidebar Location dialog. = 2.0.9.6 = * Fixed: In some browsers the "Add sidebar" popup was partially hidden. * Fixed: Sometimes the dropdown list of a multiselect list stayed open. * Fixed: Plugin now correctly loads the .po files to translate to other languages. * Some other small improvements. = 2.0.9.4 = * Fixed: For some users the plugin was not loading anymore after updating to 2.0.9.1. = 2.0.9.3 = * Fixed: Z-index issue in Dashboard where wide widgets where covered by the main-menu. * Fixed: Added compatibility for static front-page sidebars with version 2.0.9. = 2.0.9.2 = * Fixed: Sidebar Locations "Front Page" and "Post Index" now work correctly. = 2.0.9.1 = * Fixed: Sidebars now support unicode-text in name/description. * Minor: New debugging output that explains why a sidebar/widget is displayed. = 2.0.9 = * Fixed: Fixed issue with WP sidebar chooser right after creating a new sidebar. * Fixed: Fixed various issues when flagging a sidebar s replaceable. * Fixed: Plugin will not load in accessibility mode but display a notice instead. * Minor fix: Make code compatible with PHP 5.2.4. * Minor fix: Slight improvement of AJAX stability. * Minor fix: Plugin now requires capability "edit_theme_options". = 2.0.8 = * Fixed: Fixed issue with settings not being saved correctly. = 2.0.7 = * Fixed: Fixed issue with some people losing some sidebar settings after update. = 2.0.6.1 = * Minor fix: Use WordPress core functions to get URL to JavaScript files. * Minor fix: Refactor function name to avoid misunderstandings. = 2.0.5 = * Fixed: Meta box in post editor did show missing sidebars (e.g. after switching the theme). * Fixed: PHP warning about strict standards. = 2.0.3 = * Fixed: JavaScript errors on Windows servers are fixed. = 2.0.2 = * Fixed: Dashboard notification is now removed when clicking "dismiss". = 2.0.1 = * PHP 5.2 compatibility layer. = 2.0 = * Complete UI redesign! * Many small bugfixes. = 1.6 = * Added: WordPress filter "cs_sidebar_params" is called before a custom sidebar is registered. * Added: Add setting "CUSTOM_SIDEBAR_DISABLE_METABOXES" in wp-config.php to remove custom-sidebar meta boxes. = 1.5 = * Added: Custom sidebars now works with BuddyPress pages. = 1.4 = * Fixed: Individual post sidebar selection when default sidebars for single posts are defined. * Fixed: Category sidebars sorting. * Added: WP 3.8 new admin design (MP6) support. = 1.3.1 = * Fixed: Absolute paths that leaded to the outdated browser error. * Fixed: Stripped slashes for the pre/post widget/title fields. = 1.3 = * Fixed: A lot of warnings with the PHP debug mode on. * Improved: Styles to make them compatible with WP 3.6. * Fixed: Creation of sidebars from the custom sidebars option. * Fixed: Missing loading icons in the admin area. * Removed: Donate banner. Thanks to the ones that have be supporting Custom Sidebar so far. = 1.2 = * Fixed: Searches with no results shows default sidebar. * Added: RTL support (thanks to Dvir http://foxy.co.il/blog/). * Improved: Minor enhancements in the interface to adapt it to WordPress 3.x. * Fixed: Slashes are added to the attributes of before and after title/widget. = 1.1 = * Fixed: Where lightbox not showing for everybody (Thanks to Robert Utnehmer). * Added: Default sidebar for search results pages. * Added: Default sidebar for date archives. * Added: Default sidebar for Uncategorized posts. = 1.0 = * Fixed: Special characters make sidebars undeletable. * Added: Child/parent pages support. * Improved interface to handle hundreds of sidebars easily. * Added: Ajax support for creating an editing sidebars from the widget page. = 0.8.2 = * Fixed: Problems with Spanish translation. * Fixed: Some CSS issues with WordPress 3.3. = 0.8.1 = * Fixed: You can assign sidebars to your pages again. = 0.8 = * Fixed: Category hierarchy is now handled properly by the custom sidebars plugin. * Added: Sidebars can be set for every custom post type post individually. * Improved the way it replace the sidebars. * Improved some text and messages in the back-end. = 0.7.1 = * Fixed: Now the plugin works with themes like Thesis that don't use the the_header hook. Changed the hook where execute the replacement code to wp_head. * Fixed: When a second sidebar is replaced with the originally first sidebar, it is replaced by the first sidebar replacement instead. = 0.7 = * Fixed: Bulk and Quick editing posts and pages reset their custom sidebars. * Changed capability needed to switch_themes, and improved capability management. = 0.6 = * New interface, more user friendly. * Added the possibility of customize the main blog page sidebars. * Added the sidebars by category, so now you can personalize all the post that belongs to a category easily in a hierarchical way. * Added the possibility of customize the authors page sidebars. * Added the possibility of customize the tags page sidebars. * Added, now it is possible to edit the sidebars names, as well as the pre-widget, post-widget, pre-title, post-title for a sidebar. * Added the possibility of customize the sidebars of posts list by category or post-type. = 0.5 = * Fixed a bug that didn't allow to create new bars when every previous bars were deleted. * Fixed a bug introduced in v0.4 that did not allow to assign bars per post-types properly. * Added an option to remove all the Custom Sidebars data from the database easily. = 0.4 = * Empty sidebars will now be shown as empty, instead of displaying the theme's default sidebar. = 0.3 = * PHP 4 Compatible (Thanks to Kay Larmer). * Fixed a bug introduced in v0.2 that did not allow to save the replaceable bars options. = 0.2 = * Improved security by adding wp_nonces to the forms. * Added the pt-widget post type to the ignored post types. * Improved i18n files. * Fixed screenshots for documentation. = 0.1 = * Initial release. == Upgrade Notice == = 1.0 = *Caution:* Version 1.0 needs WordPress 3.3 to work. If you are running an earlier version *do not upgrade*. = 0.7.1 = Now custom sidebars works with Thesis theme and some minor bugs have been solved. = 0.7 = This version fix a bug of v0.6 and before that reset the custom sidebars of posts and pages when they are quick edited or bulk edited, so upgrade is recommended. This version also changes the capability for managing custom sidebars to 'switch_themes' the one that allows to see the appearance menu in the admin page. I think the plugin is more coherent this way, but anyway it is easy to modify under plugin edit. = 0.6 = This version adds several options for customize the sidebars by categories and replace the default blog page sidebars. Now it's possible to edit sidebar properties. Also fixes some minor bugs. == Contact and Credits == Original development completed by [Javier Marquez](http://marquex.es/). views/widgets-editor.php000064400000006033150211770060011345 0ustar00

Justin Tadlock Blog. Do not use these fields if you are not sure what you are doing, it can break the design of your site. Leave these fields blank to use the theme sidebars design.', 'custom-sidebars')); ?>
views/quick-edit.php000064400000001746150211770060010460 0ustar00
views/widgets-location.php000064400000023242150211770060011670 0ustar00". * @param string $class Optinal classname added to the wrapper element. */ if ( ! function_exists( '_show_replaceable' ) ) { function _show_replaceable( $sidebar, $prefix, $cat_name, $class = '' ) { $base_id = 'cs-' . $prefix; $inp_id = $base_id . '-' . $sidebar['id']; $inp_name = '___cs___' . $prefix . '___' . $sidebar['id']; $sb_id = $sidebar['id']; $class = (empty( $class ) ? '' : ' ' . $class); ?>

...

Post or Page & set it up via the sidebars metabox.', 'custom-sidebars'), admin_url( 'edit.php' ), admin_url( 'edit.php?post_type=page' ) )); ?>


$details ) { $cat_name = __( 'categories', 'custom-sidebars' ); _show_replaceable( $details, 'cat', $cat_name ); } ?>
$details ) { $cat_name = __( 'Post Types', 'custom-sidebars' ); _show_replaceable( $details, 'pt', $cat_name ); } ?>
$taxonomy ) { echo '
'; foreach ( $sidebars as $sb_id => $details ) { _show_replaceable( $details, $taxonomy_slug, $taxonomy->label ); } echo '
'; } ?>


$details ) { $cat_name = __( 'Archive Types', 'custom-sidebars' ); _show_replaceable( $details, 'arc', $cat_name ); } ?>
$details ) { $cat_name = __( 'Category Archives', 'custom-sidebars' ); _show_replaceable( $details, 'arc-cat', $cat_name ); } ?>
$details ) { $cat_name = __( 'Author Archives', 'custom-sidebars' ); _show_replaceable( $details, 'arc-aut', $cat_name ); } ?>



$one ) { printf( '%s', esc_attr( $id ), esc_attr( implode( ' ', $classes ) ), esc_html( $one['title'] ) ); $classes = array( 'tab' ); } ?>

$one ) { printf( '
', esc_attr( $id ), esc_attr( implode( ' ', $classes ) ) ); foreach ( $sidebars as $sb_id => $details ) { _show_replaceable( $details, $id, $one['cat_name'] ); } echo '
'; $classes = array( 'tab' ); } ?>
views/widgets.php000064400000012664150211770060010070 0ustar00

| | |
views/metabox.php000064400000010452150211770060010052 0ustar00'; printf( '%s', sprintf( /* translators: %s is replaced with the Page Name */ esc_html__( 'To change the sidebar for %s', 'custom-sidebars' ), esc_html( $page_name ) ) ); echo ''; echo '

'; $url = esc_url( CSB_IMG_URL . 'metabox/' . $img . '?version=3.2.4' ); printf( '', esc_url( $url ), esc_url( $url ) ); } } /** * show */ if ( $is_front ) { $page_name = esc_html__( 'Front Page', 'custom-sidebars' ); custom_sidebars_replace_not_allowed( $page_name, 'frontpage-info.png' ); } elseif ( $is_blog ) { $page_name = esc_html__( 'Blog Page', 'custom-sidebars' ); $archive = esc_html__( 'Post Index', 'custom-sidebars' ); custom_sidebars_replace_not_allowed( $page_name, 'blogpage-info.png', $archive ); } elseif ( $is_woo_shop ) { $page_name = esc_html__( 'WooCommerce Shop', 'custom-sidebars' ); $post_type_object = get_post_type_object( 'product' ); /* translators: %s is replaced with the Archive name */ $archive = sprintf( esc_html__( '%s Archives', 'custom-sidebars' ), $post_type_object->label ); custom_sidebars_replace_not_allowed( $page_name, 'wooshop-info.png', $archive ); } else { echo '

'; esc_html_e( 'Here you can replace the default sidebars. Simply select what sidebar you want to show for this post!', 'custom-sidebars' ); echo '

'; if ( ! empty( $sidebars ) ) { global $wp_registered_sidebars; $available = CustomSidebars::sort_sidebars_by_name( $wp_registered_sidebars ); foreach ( $sidebars as $s ) { ?>

'; /* translators: %s is replaced with the URL of the Widgets page */ CustomSidebars::wp_kses_wf(sprintf(__( 'All sidebars have been locked, you cannot replace them. Go to the widgets page to unlock a sidebar.', 'custom-sidebars' ), admin_url( 'widgets.php' ))); echo '

'; } } views/widgets-delete.php000064400000001200150211770060011310 0ustar00
views/bulk-edit.php000064400000002434150211770060010274 0ustar00
views/widgets-export.php000064400000003103150211770060011373 0ustar00



views/import.php000064400000031605150211770060007730 0ustar00 $to_id ) { $from = $theme_sidebars[ $from_id ]; $to = array(); if ( isset( $theme_sidebars[ $to_id ] ) ) { $to = $theme_sidebars[ $to_id ]; } else { $to = $import['sidebars'][ $to_id ]; } ?>

 

views/col-sidebars.php000064400000004164150211770060010765 0ustar00%s', esc_html( $content ) ); } } /** * prepare */ if ( $is_front ) { custom_sidebars_col_sideber_not_available( __( 'Home Page', 'custom-sidebars' ) ); } elseif ( $is_blog ) { custom_sidebars_col_sideber_not_available( __( 'Blog Page', 'custom-sidebars' ) ); } else if ( $is_woo_shop ) { custom_sidebars_col_sideber_not_available( __( 'WooCommerce Shop', 'custom-sidebars' ) ); } else { global $wp_registered_sidebars; $available = CustomSidebars::sort_sidebars_by_name( $wp_registered_sidebars ); $content = ''; foreach ( $sidebars as $s ) { $sb_name = $available[ $s ]['name']; $replaced = ! empty( $available[ $selected[ $s ] ] ); $class = $replaced ? 'cust' : 'def'; if ( $replaced ) { $content .= sprintf( '
', esc_attr( $s ), isset( $selected[ $s ] )? esc_attr( $selected[ $s ] ):'', esc_attr( $class, 'custom-sidebars' ) ); $content .= esc_html( $sb_name ); $content .= '
'; $content .= '
'; $content .= esc_html( $available[ $selected[ $s ] ]['name'] ); $content .= '
'; } } if ( empty( $content ) ) { echo '-'; } else { echo '
'; CustomSidebars::wp_kses_wf( $content ); echo '
'; } } assets/css/cs-cloning.css000064400000002001150211770060011374 0ustar00/** * CSS rules for the cloning module. */ .inactive-sidebar .csb-clone { display: none; } .widget-control-actions .csb-clone-button { margin: 0 5px 0 0; } .csb-marker { position: relative; box-shadow: 0 0 0px 1px rgba(0, 0, 0, 0.3); } .csb-marker .widget-top, .csb-marker .widget-inside { opacity: .5; } .csb-marker:before { content: attr(data-group); position: absolute; top: 50%; left: 5px; right: 5px; text-align: center; margin-top: -1em; line-height: 2em; height: 2em; font-size: 20px; z-index: 1001; background: rgba(255, 255, 255, 0.2); } .csb-marker:after { content: ''; position: absolute; left: 1px; top: 1px; right: 1px; bottom: 1px; background: url(../img/stripes.png); opacity: .05; z-index: 1000; cursor: default; } h4.csb-group { padding-left: 45px; position: relative; } h4 .btn-clone-group { position: absolute; top: 50%; margin-top: -10px; left: 15px; cursor: pointer; opacity: .6; } h4 .btn-clone-group:hover { opacity: 1; } assets/css/cs-cloning.min.css000064400000001417150211770060012170 0ustar00.inactive-sidebar .csb-clone{display:none}.widget-control-actions .csb-clone-button{margin:0 5px 0 0}.csb-marker{position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.3)}.csb-marker .widget-inside,.csb-marker .widget-top{opacity:.5}.csb-marker:before{content:attr(data-group);position:absolute;top:50%;left:5px;right:5px;text-align:center;margin-top:-1em;line-height:2em;height:2em;font-size:20px;z-index:1001;background:rgba(255,255,255,.2)}.csb-marker:after{content:'';position:absolute;left:1px;top:1px;right:1px;bottom:1px;background:url(../img/stripes.png);opacity:.05;z-index:1000;cursor:default}h4.csb-group{padding-left:45px;position:relative}h4 .btn-clone-group{position:absolute;top:50%;margin-top:-10px;left:15px;cursor:pointer;opacity:.6}h4 .btn-clone-group:hover{opacity:1}assets/css/cs-visibility.css000064400000006472150211770060012152 0ustar00/** * CSS rules for the visibility module. */ .inactive-sidebar .csb-visibility { display: none; } .widget-control-actions .button { margin: 0 0 0 5px; } @media screen and (max-width: 782px) { .widget-control-actions .csb-visibility-button .dashicons { line-height: normal; height: auto; font-size: 19px; } } @media screen and (max-width: 782px) and (max-width: 400px) { .widget-control-actions .csb-visibility-button .dashicons { display: none; } } @media screen and (max-width: 782px) { .widget-control-actions .alignright, .widget-control-actions .alignleft { float: none; } .widget-control-actions .alignright { padding-top: 10px; text-align: right; } .widget-control-actions .alignright .button { margin-bottom: 5px; } } .csb-visibility { margin: 0 -15px 15px; } .csb-option-row { margin: 0 -15px; padding: 0 15px 12px; position: relative; } .csb-visibility-inner { border: 1px solid #E5E5E5; border-left: 0; border-right: 0; padding: 12px 15px 0; background: #FAFAFA; } .csb-visibility-inner .toggle-action { display: block; margin: -15px -15px 0; padding: 15px 15px 0; cursor: pointer; border: 0; /*color: #0074A2;*/ } .csb-visibility-inner .csb-option-row:hover { background: #F4F4F4; } .csb-visibility-inner .csb-option-row:hover.csb-always:hover { background: transparent; } .csb-visibility-inner .csb-option-row.csb-action .action { top: 15px; } .csb-visibility-inner .csb-option-row .clear-filter:hover { color: #C00; } .csb-visibility-inner .csb-option-row .action { position: absolute; right: 15px; top: 7px; z-index: 1; color: #AAA; cursor: pointer; font-size: 20px; } .csb-visibility-inner .csb-option-row .action:hover { color: #000; } .csb-visibility-inner .csb-action { margin-bottom: 0; } .csb-visibility-inner .csb-action label { cursor: default; } .csb-visibility-inner .csb-action b { padding: 5px; border: 1px solid transparent; cursor: pointer; margin-left: -6px; } .csb-visibility-inner .csb-action:hover b { padding: 5px; background: #FFF; border: 1px solid #DDD; } .csb-visibility-inner .csb-always { padding-bottom: 0; text-align: center; font-style: italic; } .csb-visibility-inner .csb-always label { margin-bottom: 0; color: #AAA; cursor: default; } .csb-visibility-inner .csb-and { margin-right: 10px; font-weight: bold; } .csb-visibility-inner label { display: block; border-top: 1px solid #E8E8E8; margin: 0 -15px 5px; padding: 5px 15px; } .csb-visibility-inner .csb-detail-row label { border: 0; margin-bottom: 0; padding-bottom: 0; } .csb-visibility-inner .csb-detail-row .detail { margin-top: 10px; } .csb-visibility-inner .chosen-container { display: block !important; width: 100% !important; } .csb-visibility-inner .dropdown { position: absolute; z-index: 2; background: #FFF; border: 1px solid #DDD; right: 10px; top: 20px; color: #555; box-shadow: 0 1px 10px rgba(0, 0, 0, 0.15); } .csb-visibility-inner .dropdown li { padding: 5px 15px; cursor: pointer; margin: 0; } .csb-visibility-inner .dropdown li:hover { color: #000; background: #EEE; } .csb-visibility-inner .dropdown li.csb-group, .csb-visibility-inner .dropdown li.csb-group:hover { color: #999; font-weight: bold; background: #F8F8F8; padding-left: 5px; cursor: default; } assets/css/cs.css000064400000043200150211770060007753 0ustar00/** * ============================================================================= * == FREE VERSION ONLY * ============================================================================= */ .module-export .pro-layer { position: absolute; left: 0; top: 0; right: 0; bottom: 0; z-index: 99999; background: rgba(255, 255, 255, 0.8); text-align: center; font-size: 26px; font-weight: 100; padding-top: 120px; line-height: 1.5; } .module-export .pro-layer a { margin-top: 20px; display: inline-block; background: #2EA2CC; color: #FAFAFA; text-decoration: none; padding: 10px 20px; font-size: 18px; font-weight: bold; } .module-export .pro-layer a:hover, .module-export .pro-layer a:focus, .module-export .pro-layer a:active { background: #1E8CBE; color: #FFF; } .frm-location .pro-layer { padding: 10px; text-align: center; font-size: 26px; font-weight: 100; line-height: 1.5; } .frm-location .pro-layer a { margin-top: 20px; display: inline-block; background: #2EA2CC; color: #FAFAFA; text-decoration: none; padding: 10px 20px; font-size: 18px; font-weight: bold; } .frm-location .pro-layer a:hover, .frm-location .pro-layer a:focus, .frm-location .pro-layer a:active { background: #1E8CBE; color: #FFF; } .frm-location table.form-table { margin-bottom: 10px; } .frm-location table.form-table td, .frm-location table.form-table th { padding: 5px; } .frm-location table.form-table td.num .dashicons-trash { cursor: pointer; color: #a00; } .frm-location table.form-table .num { width: 3em; text-align: center; } .csb-pro-layer { float: left; position: relative; opacity: .5; margin-right: 10px; } .csb-pro-layer .pro-info { position: absolute; left: 0; top: 0; right: 0; bottom: 0; opacity: 0; background: rgba(96, 96, 96, 0.75); z-index: 99999; text-align: center; text-decoration: none; line-height: 28px; font-size: 16px; font-weight: 100; color: #FFF; text-decoration: underline; padding: 0; margin: 0; overflow: hidden; } .csb-pro-layer:hover { opacity: 1; } .csb-pro-layer:hover .pro-info, .csb-pro-layer:hover .pro-info:hover, .csb-pro-layer:hover .pro-info:active, .csb-pro-layer:hover .pro-info:focus { line-height: 48px; left: -10px; top: -10px; right: -5px; bottom: -10px; opacity: 1; } .csb-pro-layer .button { margin: 0 5px 0 0; float: left; } .csb-pro-layer .button .dashicons { line-height: 26px; height: 26px; float: left; margin-right: 6px; } /** * ============================================================================= * == PLUGIN STYLES * ============================================================================= */ #defaultsidebarspage p.submit { padding: 0 0 10px; clear: both; } #poststuff.defaultsdetailscontainer h2 { border-bottom: 0; margin-bottom: 5px; } #defaultsforposts, #defaultsforpages { padding: 0 10px; background: #fcfcfc; overflow: hidden; } .defaultsSelector { margin-bottom: 30px; } .cscolright { clear: right; float: right; margin: 0; overflow: hidden; padding: 0; width: 49%; } .cscolleft { margin: 0; overflow: hidden; padding: 0; width: 49%; } .widgets-php .widget-liquid-left { width: 100%; } .widgets-php .cs-wrap .widget-liquid-right .widget.open { z-index: 9999 !important; } .widgets-php .widget-liquid-right { padding: 0 0 75px 0; margin: -10px -214% 0 0; width: 210%; background: #e4e4e4; /* https://app.asana.com/0/11388810124414/15066782299785 */ -webkit-user-select: none; -ms-user-select: none; user-select: none; } @media screen and (max-width: 480px) { .widgets-php .widget-liquid-right { width: 100%; } } .widgets-php .widget-liquid-right #widgets-right { margin: 20px; } .widgets-php .widget-liquid-right .overview { list-style: none; position: absolute; left: 0; top: 0; width: auto; right: 0; padding-left: 20px; border-left: 1px solid #DDD; } .widgets-php #wpcontent { position: relative; } .widgets-php #wpcontent .wrap .cs-wrap { margin-right: 68%; padding-top: 1em; position: relative; } @media screen and (max-width: 480px) { .widgets-php #wpcontent .wrap .cs-wrap { position: static; margin: 0; } } .widgets-php #wpcontent #screen-meta-links { position: relative; z-index: 10; } .widgets-php #wpcontent #screen-meta { position: relative; z-index: 10; } .widgets-php #widgets-left { margin-right: 0 !important; } .widgets-php #footer { background: #fff; margin-right: 0px; padding-right: 20px; } .widgets-php .sidebars-column-1 .custom-sidebars-add-new { background-color: #fff; padding: 15px; } .widgets-php .sidebars-column-1 .custom-sidebars-add-new p { border-radius: 4px; border: 3px dashed #ddd; color: #777; cursor: pointer; font-weight: bold; margin: 0; padding: 90px 10px; text-align: center; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-box { border-radius: 4px; margin: 55px 0 16px 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront { background-color: #f9c200; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner { min-height: 145px; margin-right: -16px; background: url(../img/devman.png) no-repeat 100% 50%; padding: 50px 120px 45px 20px; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner p { font-size: 1.4em; color: #000; margin-top: 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner p:last-of-type { margin-bottom: 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner .button { background-color: #00a7e6; color: #fff; font-weight: bold; height: auto; padding: 15px 16px; text-transform: uppercase; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup { background-color: #e4e4e4; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner { font-size: 1.2em; padding: 20px 20px 20px 20px; background: #ffde66; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner.cs-wpfssl { background: #fff; border: 3px solid #42982e; margin-bottom: 25px; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner.cs-wpfssl img { max-width: 90%; margin: 25px 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner h4 { color: #222; font-size: 1.2em; line-height: 1.3; margin: 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner p { color: #c1272c; padding-top: 16px; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form { border-radius: 4px; background-color: #fafafa; display: -ms-flexbox; display: flex; -ms-flex-wrap: nowrap; flex-wrap: nowrap; -ms-flex-pack: justify; justify-content: space-between; margin: 24px 30px 0 30px; padding: 0; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input { background-color: transparent; border: 0; font-size: 1em; margin: 0; padding: 10px 15px; text-align: center; } .sticky-logo { text-align: center; padding: 20px 0; } .sticky-logo img { max-height: 100px; } .install-sticky { border-radius: 0 4px 4px 0; background-color: #00a7e6; color: #fff; min-width: 3em; } .textcenter { text-align: center; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text] { color: #aaa; -ms-flex-positive: 1; flex-grow: 1; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text]:active { box-shadow: none; } @media screen and (max-width: 590px) { .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form { background-color: transparent; display: block; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text] { background-color: #fafafa; } .widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=submit] { border-radius: 4px; display: block; margin: 10px 0 0 auto; width: auto; } } #cs-options .cs-action { line-height: 26px; margin-right: 20px; } #cs-options .cs-action.btn-export { white-space: nowrap; } #cs-options .cs-filter { float: right; } @media screen and (max-width: 700px) { #cs-options .cs-filter { float: none; margin-top: 5px; } } .sidebar-form { margin: 0 15px; } .sidebar-form label { display: block; } .sidebar-form .submit { text-align: right; margin: 0; padding: 1em 0; } .sidebar-form .description { margin-top: 5px; text-align: right; } .sidebar_name, .sidebar_description { width: 100%; } div#widgets-right .sidebar-name > h3 { padding: 15px; } div#widgets-right .widgets-sortables .sidebar-name > h3 { padding: 15px 7px; } .widgets-holder-wrap.closed > div:nth-child(2) { display: none; } #defaultsidebarspage .hndle { cursor: pointer; } #customsidebarspage #col-right { width: 62%; } .widgets_access .widget-liquid-right { position: static; } #oldbrowsererror { display: none; } #defaultsidebarspage .postbox { position: static; } #defaultsidebarspage .inside { position: static; } body.appearance_page_customsidebars .wrap h2 { float: none; } body.appearance_page_customsidebars #poststuff h2 { margin-top: 0; } .widget.ui-draggable-dragging { z-index: 10001 !important; } /** * ============================================================================= * == POPUP WINDOW: Add/Edit sidebar * ============================================================================= */ .csb-more-content { display: none; } .csb-has-more .csb-more-content { display: block; } /** * ============================================================================= * == Custom elements on widget screen * ============================================================================= */ #cs-widgets-extra { display: none; } #cs-title-options { zoom: 1; background: #E8E8E8; margin: -20px -20px 0 -20px; padding: 10px 20px 20px; border-bottom: 1px solid #DDD; } .cs-title h3 { font-weight: 100; } .cs-title h3 .cs-icon { margin-left: 10px; color: #999; } .replaceable { position: relative; } .replaceable .replace-marker { position: absolute; left: 0; top: 0; bottom: 0; width: 5px; margin: 0 5px 0 0; border-left: 2px solid #05c944; z-index: 10; } .replaceable .replace-marker:hover:before { content: attr(data-label); background: #333; color: #EEE; font-size: 13px; white-space: nowrap; padding: 5px; position: absolute; top: 7px; right: 13px; line-height: 20px; } .replaceable .replace-marker:hover:after { content: ''; position: absolute; top: 16px; right: 3px; border: 6px solid transparent; border-left-color: #333; } /** * ============================================================================= * == Message box * * @todo: Check if this is used at all?? * * ============================================================================= */ .cs-message { margin: .5em 0; padding: 10px; position: absolute; left: 0; right: 0; box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2); z-index: 100; } .cs-message .close { position: absolute; top: .5em; right: .5em; opacity: .3; color: #000; cursor: pointer; text-decoration: none; font-size: 14px; line-height: 26px; width: 26px; text-align: center; background: rgba(0, 0, 0, 0.1); } .cs-message .close:hover, .cs-message .close:focus, .cs-message .close:active { opacity: 1; } .cs-update { background: lightYellow; border: 1px solid #E6DB55; } .cs-error { background: #FFEBE8; border: 1px solid #C00; } /** * ============================================================================= * == Toolbar * ============================================================================= */ .cs-toolbar { color: #333; padding: 0; background: #FCFCFC; border-top: 1px solid #E5E5E5; } .cs-toolbar:after { display: table; content: ''; clear: both; } .closed .cs-toolbar { display: none; } .cs-toolbar .cs-tool { text-decoration: none; line-height: 40px; height: 40px; padding: 0 10px; white-space: nowrap; background: #FFF; position: relative; overflow: hidden; } .cs-toolbar .dashicons { line-height: 40px; } .cs-toolbar .cs-separator { border-left: 1px solid #E5E5E5; width: 1px; padding: 0; margin: 0; height: 40px; overflow: hidden; display: inline-block; color: #ddd; } .cs-custom-sidebar .cs-tool, .cs-custom-sidebar .cs-separator { float: right; } .cs-theme-sidebar .cs-tool, .cs-theme-sidebar .cs-separator { float: left; } .cs-toolbar .delete-sidebar { color: #a00; } .cs-toolbar .delete-sidebar:hover, .cs-toolbar .delete-sidebar:focus, .cs-toolbar .delete-sidebar:active { color: #F00; } .cs-toolbar .cs-tool.btn-replaceable { color: #555; } .cs-toolbar .cs-tool.btn-replaceable:hover { color: #333 !important; } .replaceable .cs-toolbar .cs-tool.btn-replaceable { background: #edfff3; color: #333; } .replace-tip-box { float: left; } .replace-tip { width: 200px; } /** * ============================================================================= * == Button styles * ============================================================================= */ .csb .button { outline: 0; } .csb .button > .dashicons, .csb .button-primary > .dashicons, .csb .button-secondary > .dashicons { opacity: .75; line-height: 26px; margin-right: 5px; transition: opacity .2s; } .csb .button:hover > .dashicons, .csb .button-primary:hover > .dashicons, .csb .button-secondary:hover > .dashicons { opacity: 1; } /** * ============================================================================= * == RTL Styles * ============================================================================= */ .rtl div.widget-liquid-right { float: left; right: auto; left: 0; } .rtl.widgets-php #wpcontent .wrap .cs-wrap { margin-right: 2px; margin-left: 68%; } .rtl.widgets-php .widget-liquid-right { margin: -10px 0 0 -214%; } .rtl.widgets-php #widgets-left { margin-left: 0 !important; } .rtl.widgets-php.folded #wpcontent, .rtl.widgets-php.folded #wpfooter { margin-left: 325px; margin-right: 52px; } .rtl #cs-title-options h2 { margin-right: 5px; } .rtl #cs-options .cs-filter { float: left; } .rtl #cs-options .cs-action { margin-right: 0; margin-left: 20px; } .rtl .sidebar-form .submit { text-align: left; } .rtl #TB_ajaxWindowTitle { float: right; } .rtl #TB_closeAjaxWindow { float: left; } /** * ============================================================================= * == Export/Import * ============================================================================= */ .csb-export-head { min-width: 450px; } .csb-export-head th { vertical-align: top; text-align: right; color: #679; width: 150px; } .csb-export-head tr:hover { background: #FAFAFA; } .csb-export-head ul { margin: 0; } .csb-export-head .dashicons.hint { font-size: 12px; line-height: 22px; } .csb-form { padding-left: 15px; } .csb-form h2, .csb-form h3, .csb-form .form-buttons, #poststuff .csb-form h2, #poststuff .csb-form h3, #poststuff .csb-form .form-buttons { padding-left: 0; margin-left: -15px; } .form-buttons { clear: both; } .show-infos { position: relative; display: inline-block; margin: 0 5px; } h2 .show-infos { top: 4px; } .show-infos .export-infos { position: absolute; top: -5px; left: 30px; font-size: 13px; line-height: 1.4em; font-weight: normal; background: #FFF; box-shadow: 0 1px 8px rgba(0, 0, 0, 0.2); border: 3px solid #FAFAFA; padding: 5px; z-index: 10; } .show-infos .export-infos:before, .show-infos .export-infos:after { content: ''; position: absolute; left: -17px; top: 5px; border: 7px solid transparent; border-right-color: #FAFAFA; z-index: 1; } .show-infos .export-infos:after { left: -18px; top: 5px; border-right-color: rgba(0, 0, 0, 0.15); z-index: 0; } .show-infos:hover .export-infos { display: block !important; } .export-infos .section { font-weight: bold; margin: 10px 0 5px -2px; color: #666; } /** * ============================================================================= * == Location popup * ============================================================================= */ .cs-half { float: left; width: 49%; margin-right: 1%; } .cs-replaceable { margin-bottom: 5px; } .cs-replaceable > .details { display: none; margin: 5px 0; } .cs-replaceable.open > .details { display: block; } .popup-content .message.no-sidebars { font-size: 1.4em; } @media screen and (max-width: 480px) { .wpmui-popup .buttons { height: 80px; text-align: left; } .wpmui-popup .buttons label { float: none; display: block; margin-bottom: .5em; } .wpmui-popup .buttons .btn-save { float: right; } } /** * ============================================================================= * == Post list * ============================================================================= */ @media screen and (max-width: 782px) { #wpbody-content .wp-list-table.fixed .column-cs_replacement { display: none; } } #wpbody-content .wp-list-table .column-cs_replacement { width: 10%; } #wpbody-content .wp-list-table .column-cs_replacement dt { opacity: .8; color: #666; } #wpbody-content .wp-list-table .column-cs_replacement dd { margin-left: 10px; } #wpbody-content .wp-list-table .inline-edit-row fieldset.cs-quickedit { border-top: 1px solid #eee; margin-top: 10px; padding-top: 10px; } #wpbody-content .wp-list-table .inline-edit-row fieldset.cs-quickedit label span.title { display: block; float: left; min-width: 5em; white-space: nowrap; padding-right: 10px; width: auto; } #wpbody-content .wp-list-table .inline-edit-row-page .inline-edit-col-right { float: right; } assets/css/cs-scan.min.css000064400000001322150211770060011456 0ustar00.custom-sidebars-wp-checkup{border-radius:4px;-ms-flex-align:center;align-items:center;background:#fff url(../img/heart.png) no-repeat 0 50%;border:0;display:-ms-flexbox;display:flex;min-height:100px;padding-left:135px;-ms-flex-pack:justify;justify-content:space-between}.custom-sidebars-wp-checkup form{white-space:nowrap}.custom-sidebars-wp-checkup form input{border:0;border-radius:4px}.custom-sidebars-wp-checkup form input[type=text]{background-color:#f2f2f2;padding:15px 14px}.custom-sidebars-wp-checkup form input[type=submit]{background-color:#17a8e3;color:#fff;padding:15px 35px;text-transform:uppercase;margin-left:10px}.custom-sidebars-wp-checkup p{font-size:1.2em}.custom-sidebars-wp-checkup p b{color:#840006}assets/css/cs-scan.css000064400000001522150211770060010676 0ustar00.custom-sidebars-wp-checkup { border-radius: 4px; -ms-flex-align: center; align-items: center; background: #fff url(../img/heart.png) no-repeat 0 50%; border: 0; display: -ms-flexbox; display: flex; min-height: 100px; padding-left: 135px; -ms-flex-pack: justify; justify-content: space-between; } .custom-sidebars-wp-checkup form { white-space: nowrap; } .custom-sidebars-wp-checkup form input { border: 0; border-radius: 4px; } .custom-sidebars-wp-checkup form input[type=text] { background-color: #f2f2f2; padding: 15px 14px; } .custom-sidebars-wp-checkup form input[type=submit] { background-color: #17a8e3; color: #fff; padding: 15px 35px; text-transform: uppercase; margin-left: 10px; } .custom-sidebars-wp-checkup p { font-size: 1.2em; } .custom-sidebars-wp-checkup p b { color: #840006; } assets/css/cs-visibility.min.css000064400000005346150211770060012733 0ustar00.inactive-sidebar .csb-visibility{display:none}.widget-control-actions .button{margin:0 0 0 5px}@media screen and (max-width:782px){.widget-control-actions .csb-visibility-button .dashicons{line-height:normal;height:auto;font-size:19px}}@media screen and (max-width:782px) and (max-width:400px){.widget-control-actions .csb-visibility-button .dashicons{display:none}}@media screen and (max-width:782px){.widget-control-actions .alignleft,.widget-control-actions .alignright{float:none}.widget-control-actions .alignright{padding-top:10px;text-align:right}.widget-control-actions .alignright .button{margin-bottom:5px}}.csb-visibility{margin:0 -15px 15px}.csb-option-row{margin:0 -15px;padding:0 15px 12px;position:relative}.csb-visibility-inner{border:1px solid #e5e5e5;border-left:0;border-right:0;padding:12px 15px 0;background:#fafafa}.csb-visibility-inner .toggle-action{display:block;margin:-15px -15px 0;padding:15px 15px 0;cursor:pointer;border:0}.csb-visibility-inner .csb-option-row:hover{background:#f4f4f4}.csb-visibility-inner .csb-option-row:hover.csb-always:hover{background:0 0}.csb-visibility-inner .csb-option-row.csb-action .action{top:15px}.csb-visibility-inner .csb-option-row .clear-filter:hover{color:#c00}.csb-visibility-inner .csb-option-row .action{position:absolute;right:15px;top:7px;z-index:1;color:#aaa;cursor:pointer;font-size:20px}.csb-visibility-inner .csb-option-row .action:hover{color:#000}.csb-visibility-inner .csb-action{margin-bottom:0}.csb-visibility-inner .csb-action label{cursor:default}.csb-visibility-inner .csb-action b{padding:5px;border:1px solid transparent;cursor:pointer;margin-left:-6px}.csb-visibility-inner .csb-action:hover b{padding:5px;background:#fff;border:1px solid #ddd}.csb-visibility-inner .csb-always{padding-bottom:0;text-align:center;font-style:italic}.csb-visibility-inner .csb-always label{margin-bottom:0;color:#aaa;cursor:default}.csb-visibility-inner .csb-and{margin-right:10px;font-weight:700}.csb-visibility-inner label{display:block;border-top:1px solid #e8e8e8;margin:0 -15px 5px;padding:5px 15px}.csb-visibility-inner .csb-detail-row label{border:0;margin-bottom:0;padding-bottom:0}.csb-visibility-inner .csb-detail-row .detail{margin-top:10px}.csb-visibility-inner .chosen-container{display:block!important;width:100%!important}.csb-visibility-inner .dropdown{position:absolute;z-index:2;background:#fff;border:1px solid #ddd;right:10px;top:20px;color:#555;box-shadow:0 1px 10px rgba(0,0,0,.15)}.csb-visibility-inner .dropdown li{padding:5px 15px;cursor:pointer;margin:0}.csb-visibility-inner .dropdown li:hover{color:#000;background:#eee}.csb-visibility-inner .dropdown li.csb-group,.csb-visibility-inner .dropdown li.csb-group:hover{color:#999;font-weight:700;background:#f8f8f8;padding-left:5px;cursor:default}assets/css/cs.min.css000064400000031637150211770060010550 0ustar00.module-export .pro-layer{position:absolute;left:0;top:0;right:0;bottom:0;z-index:99999;background:rgba(255,255,255,.8);text-align:center;font-size:26px;font-weight:100;padding-top:120px;line-height:1.5}.module-export .pro-layer a{margin-top:20px;display:inline-block;background:#2ea2cc;color:#fafafa;text-decoration:none;padding:10px 20px;font-size:18px;font-weight:700}.module-export .pro-layer a:active,.module-export .pro-layer a:focus,.module-export .pro-layer a:hover{background:#1e8cbe;color:#fff}.frm-location .pro-layer{padding:10px;text-align:center;font-size:26px;font-weight:100;line-height:1.5}.frm-location .pro-layer a{margin-top:20px;display:inline-block;background:#2ea2cc;color:#fafafa;text-decoration:none;padding:10px 20px;font-size:18px;font-weight:700}.frm-location .pro-layer a:active,.frm-location .pro-layer a:focus,.frm-location .pro-layer a:hover{background:#1e8cbe;color:#fff}.frm-location table.form-table{margin-bottom:10px}.frm-location table.form-table td,.frm-location table.form-table th{padding:5px}.frm-location table.form-table td.num .dashicons-trash{cursor:pointer;color:#a00}.frm-location table.form-table .num{width:3em;text-align:center}.csb-pro-layer{float:left;position:relative;opacity:.5;margin-right:10px}.csb-pro-layer .pro-info{position:absolute;left:0;top:0;right:0;bottom:0;opacity:0;background:rgba(96,96,96,.75);z-index:99999;text-align:center;text-decoration:none;line-height:28px;font-size:16px;font-weight:100;color:#fff;text-decoration:underline;padding:0;margin:0;overflow:hidden}.csb-pro-layer:hover{opacity:1}.csb-pro-layer:hover .pro-info,.csb-pro-layer:hover .pro-info:active,.csb-pro-layer:hover .pro-info:focus,.csb-pro-layer:hover .pro-info:hover{line-height:48px;left:-10px;top:-10px;right:-5px;bottom:-10px;opacity:1}.csb-pro-layer .button{margin:0 5px 0 0;float:left}.csb-pro-layer .button .dashicons{line-height:26px;height:26px;float:left;margin-right:6px}#defaultsidebarspage p.submit{padding:0 0 10px;clear:both}#poststuff.defaultsdetailscontainer h2{border-bottom:0;margin-bottom:5px}#defaultsforpages,#defaultsforposts{padding:0 10px;background:#fcfcfc;overflow:hidden}.defaultsSelector{margin-bottom:30px}.cscolright{clear:right;float:right;margin:0;overflow:hidden;padding:0;width:49%}.cscolleft{margin:0;overflow:hidden;padding:0;width:49%}.widgets-php .widget-liquid-left{width:100%}.widgets-php .cs-wrap .widget-liquid-right .widget.open{z-index:9999!important}.widgets-php .widget-liquid-right{padding:0 0 75px 0;margin:-10px -214% 0 0;width:210%;background:#e4e4e4;-webkit-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:480px){.widgets-php .widget-liquid-right{width:100%}}.widgets-php .widget-liquid-right #widgets-right{margin:20px}.widgets-php .widget-liquid-right .overview{list-style:none;position:absolute;left:0;top:0;width:auto;right:0;padding-left:20px;border-left:1px solid #ddd}.widgets-php #wpcontent{position:relative}.widgets-php #wpcontent .wrap .cs-wrap{margin-right:68%;padding-top:1em;position:relative}@media screen and (max-width:480px){.widgets-php #wpcontent .wrap .cs-wrap{position:static;margin:0}}.widgets-php #wpcontent #screen-meta-links{position:relative;z-index:10}.widgets-php #wpcontent #screen-meta{position:relative;z-index:10}.widgets-php #widgets-left{margin-right:0!important}.widgets-php #footer{background:#fff;margin-right:0;padding-right:20px}.widgets-php .sidebars-column-1 .custom-sidebars-add-new{background-color:#fff;padding:15px}.widgets-php .sidebars-column-1 .custom-sidebars-add-new p{border-radius:4px;border:3px dashed #ddd;color:#777;cursor:pointer;font-weight:700;margin:0;padding:90px 10px;text-align:center}.widgets-php .sidebars-column-1 .inner .custom-sidebars-box{border-radius:4px;margin:55px 0 16px 0}.widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront{background-color:#f9c200}.widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner{min-height:145px;margin-right:-16px;background:url(../img/devman.png) no-repeat 100% 50%;padding:50px 120px 45px 20px}.widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner p{font-size:1.4em;color:#000;margin-top:0}.widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner p:last-of-type{margin-bottom:0}.widgets-php .sidebars-column-1 .inner .custom-sidebars-upfront .cs-inner .button{background-color:#00a7e6;color:#fff;font-weight:700;height:auto;padding:15px 16px;text-transform:uppercase}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup{background-color:#fff}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner{background:url(../img/hand-with-heart.png) no-repeat 100% 100%;font-size:1.2em;min-height:227px;padding-bottom:10px}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner h4,.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner p{margin:0;padding:0 120px 0 30px;font-size:1.1em}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner h4{color:#222;font-size:1.2em;padding-top:50px}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner p{color:#c1272c;padding-top:16px}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form{border-radius:4px;background-color:#fafafa;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between;margin:24px 30px 0 30px;padding:0}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input{background-color:transparent;border:0;font-size:1em;margin:0;padding:10px 15px;text-align:center}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=submit]{border-radius:0 4px 4px 0;background-color:#00a7e6;color:#fff;min-width:3em;text-transform:uppercase}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text]{color:#aaa;-ms-flex-positive:1;flex-grow:1}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text]:active{box-shadow:none}@media screen and (max-width:590px){.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form{background-color:transparent;display:block}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=text]{background-color:#fafafa}.widgets-php .sidebars-column-1 .inner .custom-sidebars-checkup .cs-inner form input[type=submit]{border-radius:4px;display:block;margin:10px 0 0 auto;width:auto}}#cs-options .cs-action{line-height:26px;margin-right:20px}#cs-options .cs-action.btn-export{white-space:nowrap}#cs-options .cs-filter{float:right}@media screen and (max-width:700px){#cs-options .cs-filter{float:none;margin-top:5px}}.sidebar-form{margin:0 15px}.sidebar-form label{display:block}.sidebar-form .submit{text-align:right;margin:0;padding:1em 0}.sidebar-form .description{margin-top:5px;text-align:right}.sidebar_description,.sidebar_name{width:100%}div#widgets-right .sidebar-name>h3{padding:15px}div#widgets-right .widgets-sortables .sidebar-name>h3{padding:15px 7px}.widgets-holder-wrap.closed>div:nth-child(2){display:none}#defaultsidebarspage .hndle{cursor:pointer}#customsidebarspage #col-right{width:62%}.widgets_access .widget-liquid-right{position:static}#oldbrowsererror{display:none}#defaultsidebarspage .postbox{position:static}#defaultsidebarspage .inside{position:static}body.appearance_page_customsidebars .wrap h2{float:none}body.appearance_page_customsidebars #poststuff h2{margin-top:0}.widget.ui-draggable-dragging{z-index:10001!important}.csb-more-content{display:none}.csb-has-more .csb-more-content{display:block}#cs-widgets-extra{display:none}#cs-title-options{zoom:1;background:#e8e8e8;margin:-20px -20px 0 -20px;padding:10px 20px 20px;border-bottom:1px solid #ddd}.cs-title h3{font-weight:100}.cs-title h3 .cs-icon{margin-left:10px;color:#999}.replaceable{position:relative}.replaceable .replace-marker{position:absolute;left:0;top:0;bottom:0;width:5px;margin:0 5px 0 0;border-left:2px solid #05c944;z-index:10}.replaceable .replace-marker:hover:before{content:attr(data-label);background:#333;color:#eee;font-size:13px;white-space:nowrap;padding:5px;position:absolute;top:7px;right:13px;line-height:20px}.replaceable .replace-marker:hover:after{content:'';position:absolute;top:16px;right:3px;border:6px solid transparent;border-left-color:#333}.cs-message{margin:.5em 0;padding:10px;position:absolute;left:0;right:0;box-shadow:0 1px 10px rgba(0,0,0,.2);z-index:100}.cs-message .close{position:absolute;top:.5em;right:.5em;opacity:.3;color:#000;cursor:pointer;text-decoration:none;font-size:14px;line-height:26px;width:26px;text-align:center;background:rgba(0,0,0,.1)}.cs-message .close:active,.cs-message .close:focus,.cs-message .close:hover{opacity:1}.cs-update{background:#ffffe0;border:1px solid #e6db55}.cs-error{background:#ffebe8;border:1px solid #c00}.cs-toolbar{color:#333;padding:0;background:#fcfcfc;border-top:1px solid #e5e5e5}.cs-toolbar:after{display:table;content:'';clear:both}.closed .cs-toolbar{display:none}.cs-toolbar .cs-tool{text-decoration:none;line-height:40px;height:40px;padding:0 10px;white-space:nowrap;background:#fff;position:relative;overflow:hidden}.cs-toolbar .dashicons{line-height:40px}.cs-toolbar .cs-separator{border-left:1px solid #e5e5e5;width:1px;padding:0;margin:0;height:40px;overflow:hidden;display:inline-block;color:#ddd}.cs-custom-sidebar .cs-separator,.cs-custom-sidebar .cs-tool{float:right}.cs-theme-sidebar .cs-separator,.cs-theme-sidebar .cs-tool{float:left}.cs-toolbar .delete-sidebar{color:#a00}.cs-toolbar .delete-sidebar:active,.cs-toolbar .delete-sidebar:focus,.cs-toolbar .delete-sidebar:hover{color:red}.cs-toolbar .cs-tool.btn-replaceable{color:#555}.cs-toolbar .cs-tool.btn-replaceable:hover{color:#333!important}.replaceable .cs-toolbar .cs-tool.btn-replaceable{background:#edfff3;color:#333}.replace-tip-box{float:left}.replace-tip{width:200px}.csb .button{outline:0}.csb .button-primary>.dashicons,.csb .button-secondary>.dashicons,.csb .button>.dashicons{opacity:.75;line-height:26px;margin-right:5px;transition:opacity .2s}.csb .button-primary:hover>.dashicons,.csb .button-secondary:hover>.dashicons,.csb .button:hover>.dashicons{opacity:1}.rtl div.widget-liquid-right{float:left;right:auto;left:0}.rtl.widgets-php #wpcontent .wrap .cs-wrap{margin-right:2px;margin-left:68%}.rtl.widgets-php .widget-liquid-right{margin:-10px 0 0 -214%}.rtl.widgets-php #widgets-left{margin-left:0!important}.rtl.widgets-php.folded #wpcontent,.rtl.widgets-php.folded #wpfooter{margin-left:325px;margin-right:52px}.rtl #cs-title-options h2{margin-right:5px}.rtl #cs-options .cs-filter{float:left}.rtl #cs-options .cs-action{margin-right:0;margin-left:20px}.rtl .sidebar-form .submit{text-align:left}.rtl #TB_ajaxWindowTitle{float:right}.rtl #TB_closeAjaxWindow{float:left}.csb-export-head{min-width:450px}.csb-export-head th{vertical-align:top;text-align:right;color:#679;width:150px}.csb-export-head tr:hover{background:#fafafa}.csb-export-head ul{margin:0}.csb-export-head .dashicons.hint{font-size:12px;line-height:22px}.csb-form{padding-left:15px}#poststuff .csb-form .form-buttons,#poststuff .csb-form h2,#poststuff .csb-form h3,.csb-form .form-buttons,.csb-form h2,.csb-form h3{padding-left:0;margin-left:-15px}.form-buttons{clear:both}.show-infos{position:relative;display:inline-block;margin:0 5px}h2 .show-infos{top:4px}.show-infos .export-infos{position:absolute;top:-5px;left:30px;font-size:13px;line-height:1.4em;font-weight:400;background:#fff;box-shadow:0 1px 8px rgba(0,0,0,.2);border:3px solid #fafafa;padding:5px;z-index:10}.show-infos .export-infos:after,.show-infos .export-infos:before{content:'';position:absolute;left:-17px;top:5px;border:7px solid transparent;border-right-color:#fafafa;z-index:1}.show-infos .export-infos:after{left:-18px;top:5px;border-right-color:rgba(0,0,0,.15);z-index:0}.show-infos:hover .export-infos{display:block!important}.export-infos .section{font-weight:700;margin:10px 0 5px -2px;color:#666}.cs-half{float:left;width:49%;margin-right:1%}.cs-replaceable{margin-bottom:5px}.cs-replaceable>.details{display:none;margin:5px 0}.cs-replaceable.open>.details{display:block}.popup-content .message.no-sidebars{font-size:1.4em}@media screen and (max-width:480px){.wpmui-popup .buttons{height:80px;text-align:left}.wpmui-popup .buttons label{float:none;display:block;margin-bottom:.5em}.wpmui-popup .buttons .btn-save{float:right}}@media screen and (max-width:782px){#wpbody-content .wp-list-table.fixed .column-cs_replacement{display:none}}#wpbody-content .wp-list-table .column-cs_replacement{width:10%}#wpbody-content .wp-list-table .column-cs_replacement dt{opacity:.8;color:#666}#wpbody-content .wp-list-table .column-cs_replacement dd{margin-left:10px}#wpbody-content .wp-list-table .inline-edit-row fieldset.cs-quickedit{border-top:1px solid #eee;margin-top:10px;padding-top:10px}#wpbody-content .wp-list-table .inline-edit-row fieldset.cs-quickedit label span.title{display:block;float:left;min-width:5em;white-space:nowrap;padding-right:10px;width:auto}#wpbody-content .wp-list-table .inline-edit-row-page .inline-edit-col-right{float:right}assets/img/stripes.png000064400000004705150211770060011026 0ustar00PNG  IHDR@@.$iCCPICC Profile8UoT>oR? XGůUS[IJ*$:7鶪O{7@Hkk?<kktq݋m6nƶد-mR;`zv x#=\% oYRڱ#&?>ҹЪn_;j;$}*}+(}'}/LtY"$].9⦅%{_a݊]hk5'SN{<_ t jM{-4%TńtY۟R6#v\喊x:'HO3^&0::m,L%3:qVE t]~Iv6Wٯ) |ʸ2]G4(6w‹$"AEv m[D;Vh[}چN|3HS:KtxU'D;77;_"e?Yqxl+ pHYs  $iTXtXML:com.adobe.xmp 1 5 72 1 72 64 1 64 2014-06-16T18:06:68 Pixelmator 2.1.1 IDATXn01 |=T!xzA2Z;/ 'xɅ>`72;9( G$a:2z9l6XD~E+`w'Pkxe_Je_Je_A@Y? gZ *_>9?)O )777ٟo Z<fX.-mV2c' I/ 1& }W {S Pu]~JC.V ]?m;t3#=;ٖ Dm;YzA&ߦix@5xԡwhCq:GRvZP#?KxչS&!/'{o4M1LPaٲ'7!Ȃ@]9s`Μ}ovl6KQpr5xP@Q3Y>>>P*;Ƕ2ps "=@, Z-DEg$x0]Ůݤi&D t%@@@@@@@@@@@@@@@@":mƵk9`2,Fi=Ch  5akTTT02pBDFF~7=&hih /G:?!ŕ+W$;v"??_PZL9sfHtdff NT*n8z'F=1cF#..H<*8F'G BPNeeex͂ӯY6 ((8'`0P_o ,3vvGZtJRtWgWd5sΣF}CaGph4»2 >x .]$*\.%_~ًlAie2-XVV'Zz==#y@^?].:lܰQpE``ݱӧN֭jHn]tv޽r\@֯ۀFa1uTc͕\O?Up9!g,C>xCIe@k/UϬlu,/7fsGEgϞjHnDڽIL&McXW .sʔٳg'NTGw9Z3Wj} 7XV|ǒ#7<:<پb'A:;!Z%(WV^y~\>o\ޓ˞phW~:.^(@Rut\GX5 N9hѦu^zee > eggR0b}ݻIyd\.G@`wJX|M4#ڵkY|'O$%%ᩧbG&A4vooBh4HLLlӳlx@ pQ__`.rc/\΂߉h41{GpAwTPMTܰA>syjt^t׭쩫R1]`: ncR)EJz=~GAM>}J۳gOc>ឺV˛L_wĄx{{Qq#l)mDDfؒ͞KID*&7GXٳ???NK'1tJ@.-ZJo߾]TWZ)8;dxuZjǴ  8Pq  ˲N]HŒ)gN 7ܹ \!&&vEd0Mi)LFC.W =ӻ7탁V-FK<Ŭ BRa٭J _,ќQ ^}u-#PIQr9r(cG $(H?3_ThA뇉/Ճ6C x,+^nݺbƌϹbӒq/IHeG DV rƜs,q "=zΧD-\r6Փ;%V&[H^0vXLɶ$88fϒK_U*zv%&w,\!9'qXaĹ4'997d.Vjj 9-½d`@!/)_HR*XRsz`Eh D-r_@{?E[<)<8/'Zx@5j5̙-(Xo㮻&~Nn=ׯml{q>g WV^jkk='xX΀GY 6.G\!T,+?)ԴT`k6ʗK, %% قC>q0`*̷%}ܜ\ ESb`q;T}cYG vx .L&`40gl";+_5 [8s5,y|psrr89̪ ǃ3GG g6d’ǗroXrq.ȦM~pyŚj@1ZP˗QRR™o@f3شu444˗=+Wr9q{+ł'XC^NC>7^dYK_+ #&&mȾ}]uKŚs6GBI≏k-S`Yi~k׮Nt:<|siC3 ˲nE^r hWw'TW ,pt؁Dmbcc~L&r1qшE nvx$. h4r*W\LRƛ#99YPgeeO?4o˱lR<{nZ J|ޜeY8P!mlZs qV<\xuCBBohh@;^_%h4DĊ+y_&skbի&9V{5fggs{:444NX̛7ӦMu I Ν0inي11( fjDH΅Noƙ&>!A`i?=jۼeXia̝3u=111yyy/dW/66ֿ / x)>ϘNw"d 'sێ):qM!""={F.Wף3gܾKmW01cF㧟~7RR`ܸqHH;ߤxdNJ\.xKL:͕|mHR7 2srr3g`Ѣm*+÷-W띞 jխlhh?Yٳx;"00L3wuѣT` 8PQ9cRR4%O(;wDztDeyMUr_CqvoBBBC3aȐ!3w`q\\ . J{%hb;D5j{Y]_,J}78.JJJ8rX(|{G.)|zcҹrdg䨑&$ct$!Cu7BTUUI7ivFi)~ٻ,۽nj$-| MHk^s$xyygݷwdB]]|.(C|93!!v***PSSYjnN.Usl?qę3gsNЭ[WlظOG  orFVt>Ʉ,/P/ۖ?[ėh4rt钠bY/Q[[˛B\^*~]]PpS]- ذq=.\| 8T\.CmOΝ00eVLc&OB;E6L2%#sA=|W!X F۷mbqŒѴih_ 2R,m366C%DFF¨ѣ ٌ/ ;; -˯pٳg!;+V= {oK[<Fj x^!___A-}(NO$xFAϞ=q,w[]7J?m*??`1]t}p~)x\u;Q 1H?N+x`\L&u놾.h4qϝ.Ea kuo|ʼGplzmS{dL`hh\"\ mtW?Js/68 tqrZƦ79t8}3Ucǎѣ$GV ի(/M\7,q\szj\ҥϩgh;N=*++qy2pڊ$Y!zgjB@ΜvfVk R^~9;4XieM q[:̞=%Ic9#xu7#""Z-1bĭ%\H+>i F|4 w++W` |tZX <4T=&&&bu"<:|'[9,l7/e燏L& Y[ $7&Od/p˲8KtHM_NCqwƖjvL3tw||<x{ X^< yga׶7޽;V@Q}cXRBpp00hP$k#lv_E,Xń_èQ~AQa?ZkGVVΜ9kWhlE`Y(#""c 4`hQ#ASmR À)Θ}[lEjXs JNjRRSjE ۼ`@ TWW㡙7n4ؘ2:]@<a`2ZZE&!x,Z2v 7DmlIBXT*,Y@d2iM1e<_~ك=7J1@O@`?\Za"킰p- !8 !.Hp[P]!%_}ł?ڰN@h\GEDpBS D&a۶p-@V'fh,lEQ6,< ^TȨ4Ei (S(JA@A,U TV0/ZHHH(h e‚+q@M&# ه $(0Z7V+@+P]+ó3pGr*iq{ N(7㽭xPw=Dj4[P2Z}VW7#> PP+XSN h4uSUQe@CJ(9ʮ{tBCZBؤLQ,V `IAh:@J%oA` uFLb) T[-V+" f2~˲(7,T"jzu:$$=Y_A.gQ\BH\LEQvQ( J*)ҀIAp,CWk ևXbZa6ou,V ƒ ~1LBƢF:9 #-M0|Z `hͪb nBbp2g.yCem:R]`\nZE*闁d P~Ho.ZB⭮A U@5h(``m&fX0;v0\ZZzh|5 BM@#MMhWn@UPQQѡ,))ASM-VZ/ h̀ʚ~( Sx VQFxss#x kmg.4j(**BuChZQXXo7  I Bp# k56b>u cRƴ{/?"x{BS,7JBEp r(VlEd4d-8p@㨪?&] -:" U-xn")iov'|||ڵ{@Hh jIh,YnKpAMYZvkn4  |||p9l̙;*YTtǎG`P @`a4Su  wPP(m6ݛ$͸)eO>3f<_vΝ;QYQ^{ք6haL/oIMI `:4 SյnNlV bQVDMZ` ]wqoьwb-M0 ز?H6 'OrkExMO>` [F46P zTG@0)i< ZZ?Err[*zI<0m:BCCT*QQ+G?r @"+4<2箨c7K4#35AԔ۴7@Qz1bKp=`W48,y++a7+9-a}rFfzTG ̀ͲݵkW,ٳ/rY=ug +.P!%'^6D?YoFdހr \" 8`JlEEj`j`Y;wիW&s1w<={kEe4M' VTHAh;,n@Gu]AP#X8}SS&7MӰX,(..Fxx8Nuغe+6oz}-zƵJ>X|Ն'BTu$f7SY @W°uO0A S˖͌E-|RS@tѨՠF""1rH5 wՠƞ= '']vV+L fbK@KIޕD#3,l) *%NiAZ@hRL_8W)5%/lAv) uuB@Hh{F#00jfEEE(..^Gmq*he0mT,A.I kMZnF#*ݠi[+JW+QXƥk^h4R`V̀ij-L_LoQjJ iUEjш:=f3؛Vpjhn1ouS`ej%,.p)a]@,|V3XGE>lLD}fSS< ay NB9 { ;&lC/22ӫfjs+60w@[ Q22ӳ_IENDB`assets/img/heart.png000064400000002606150211770060010436 0ustar00PNG  IHDRd,@`PLTE    %"%(%,.325:A5ɦOeVPz,S%(61a)w+WRD]e9[/Dbu6-F& hbĵt+kOfQ7G_--/@t\R.ʤ~h~J͉kdnCtcՒ*se4ֈ591"'A"1!I"DUQ=KGDdO #[:KlND1c<<y}fwՇ 6\NY q6X /򰃘@~鬦ҿ 3FBc^F5qB]e!X![ѕUP I!8?Nu A DssW36詆$nkZQUU鹿\1Z)'֬"[JffEx&/ZzX(b*~'^~Z^clv_TE^1k0OCMk[bRcZե[qkIy_y:|r1aH%8UGE;-0[f 2n;I{ڞgyw&zv(D fBUi=*EHqoI2-QȮgLIuGZǧf{w5A(qh$cϬcjt8V=g9$2`i{j73M?6Xޘ"ey|MkjfqtϘJa1(=9[y*mx|=U,=s"c?.#1rtˡP(5wA|ƙ{7 2ڬKblt"UQq ;M5 u~`džydsz}<)'ܦ0>=F7J6oYtVw!07ǂdä ]?I'8g=[ ]gxv.]4b @ @ @ @ @}&<“IENDB`assets/img/devman.png000064400000032174150211770060010610 0ustar00PNG  IHDRimV pHYs"s"s*tIME1#bKGD4 IDATxXSǃ@ Y2VV[eU찭VQQĽREeƅ((?KHȽ!o$$$'s^W_5js( Y[[x52FAx] B='8`ee-Z`+G@QQB0TE]եl`#)eggԸ8@JA^ `A2t=!2A@YVOcBr:;;*.:V ( 5A>D-DAAH٨èP*8񤏷eB:0pzB5HU"jUerrr&|tpL0ʘ8YkOUPM;Xh* ;eFy:j#vmccj}XkQ~x c4PǥH omW(rJVtT*Y0$@ ˲CPSKGUJ%TsiGp@9)ELѸqrLs!xZt54AwF%(",(u  Cc&@v@])mH$jsM!ڨHP/T[AG^$k~CE#$A?醻1tDAW #$h0ayyy@3\={{ A/b:[B").wfi-vktdg{Y -!7IYFEabvm1LW]OټP}15LW^/U(_h T&b M|j#}]~ 4[b#0ٔ`#1ݡ`٭شn@io }@gDTs9pT%!=A`e= $',R̂BqЬ0l[wde J[+P ;ptG9 ~3(ɠB[BWy qi2Y^b"&)(@諿 [wxZra؂#&p-z~&2̚eJ D Eڗ ZBةu`(jPfaR(2 |Eߑޘ\}J30N :*`:cրU>%8:9( [.RAQl‚R5Ԁ5"y Y,h)זBr(^s7jyO8QjD=A_z", ]s͚5+pW¹֧_^>r[ߎO?$T;mNEvrĠ Pi&ðil=` rQ~_9ɖ*ܭ0~坸(WT]"r1ug`bqv]XˬJeڊ3PU^jlT$Ul j^+Dn7j\搜\mQY@oYiʲ z^@MxH<5>na߷UhұԾ!.L곲B6m ͛7gl1&ZNy0>*^ A[Q D9!Cm zO6.-x 駟?Cpu8p|嗅4/Z.TYrF]  e[nb]Fh|޹ BŠҗuGn&l ̰a ""233ARÇAĉK.QulθtD 7`מȋ UKyP\|a>/?_"yCVXYYYSx9/gΜaLq]i&ރ f\t妱X]|\.6Z|4Dn!9;;~às0yd8wh<~N: b)P\9> -o!0'"+K1Yt1L{\1E͔=*XҡCBzz:PzKJJoҧes09u@Đn,v^:bl$t ]v~_\=j) v~?{9 ˘h/;c I~l1mѴP$jkHQDm6xI!@?(m$=E@# 7qy:(|wx!H B2`~f1EvLz:hσ|n'aC?ߩS'HHH:S*vxT}ܴT {Cv"@uЙDNz G AlCP8?q Ʈ8zgI(hsKiQaWWW߿?L6 Ξ=6tYn@j)m.d{gQpM4:B`vx(ELgbT\ mÒ!j"Z!ݑ/f 'nݺApp0k[pNI!9{0?Wσ-ѣh*kiچ^U\$5`nJ 鱞 q>k 몏ti@tv߾n ܄z"jZzx`"j_8ntzߴtw\O{_f[nK xr_-5 BhE5 BCL8=N( GȌoL6̍ˈ( VNTGRDsRvR)|Y:R7/kkD8 p\EF 0rp?pi ֠1VWJ'Ů0"|o QSP"ðmg i4Em_>4iٵOֺC`i+PmgXNf9pNZRH^wE:Pk̏_!X2]Hr"ס@z|HLR 4D͇ՓeCiP] Z@7- 6hή=%=hK %G}%;u dp`b@/fO G>K~3v9B"V\ʻ]a /8JEH_;ی[vdETayԁ!HŻe,bí= *>~L003etian֘ ߸ @$A"H:puT9LV\(8iiAFGkjᮢER3TPEK7Z.f(@[vd;8جGD`\PQ(Ω7 5F?KXjYWuat8.̐k:FT#<ֳ0jX9gz)AL^/(>ZOd(J8Y5XҺuBW#T5[@PA  -۷x4.(U(6swְ*s-ap/N@zӍ RH|2Mhh~"!CuEI*-ō?3'ws|DּǶ rEo-`Ct @NU)7tc Bh h"Bu 6לX^1- Vj }YE ai* "5b%%֨'a5So,sk'hy'itv&e G0+`c=$̅csUIT9u $U23*Ir$! cn䭳z\(MDY>H|?GfzӜQBҨ%Ls#K+-ڳݨ?% T(!UG4A.,}C ,Hy5Ԑ(#a nEg/ͥXu램\%j[g2>[RK,YGޓ t:e_,.ꎔ;59EEu"n]]!}hxz4G@yeّi<)^*sntGQ ]@@ ,2t J!9#-Qa923)+ PFgl.Ѫ277cg(cW"(߷]!Dyy |wds1A2EM7 ؒY1E&ܪF7֫BFpyU(m!O#.=&ⵧɌ?y(l1 3q8-0=\$fLdT?w}Lxj-ѝp0\"iu$j $J)Aph?scUUq8 jEr")52umK:nDG7-e;k[V0&HPZ:m])w6 rN *t78E֖ 1bXz-ĚR7?}~?tsO8(NtsEAZ%}^N_&l, 8bN}9ԻN=u4_S쾼AƸHFa0ˈ~-'M)<GxUOv3:AόNV2qQ;^7;#zz"uX.k*eP}.9in韠jm)>5E5R(s{%4P פ(-n;sQ+=]tK=DcLwu]<ޢ}@ۊ1PIg(¨v46 * +;z Yhrij#;]4Oj'/P_&!9Oa{ķ{bjB*bՐQw5#~=Ǝ83jlR"fup/v?_G!D }P4ENnKk>}0 ,MpyNG C E|]5.рc:9-Do| +#Q.ȯaW{b#COѯ8TFi xx] p*_3Ze-Edg739AT$@N̗ HgwjvZhYRX˱EOJr .*O Zf4a=P9~;^WC-AHU0!Ȓj!Ś뜬Y|=9jyEh~5g({ԀP* T:*Eч:ÞAvp-ş㿂ag۶)*eb~{"rnΡNN:C;:|Av!A1UқCEt in|Nnt] *3'35.+P5%|k1 Ԟ(,(:eHJ!aYxe }gF†P/diZT&Qs=cg???/vݮ/ x &͡dB N@CBue-*詄2cd#4^?Lߒ}n2Z~( ;1&}{nYC~Nm[z O򪰆sN!*hw2D-iuVЪ7xyy)@N~0kNM԰.;kNnekY>$w5zj ڜY^ &7>gg"<w§ : pۖp31>PFS?TAҏ 60byzzC^>к `nKgX@UuDux;jTyBs4tFrJ/6(MGe ;8Efh7Y+" Z<oƐA0oq0QgNPZS@vB <|Q(B@B^s[ru!LS& T=;C_2vR#AuP,Kx_*ϋ{7j, EG™c\)HS ~fǢGWZ&WWi3<2]QM>996xx)V׽˷ tOd7@B4q8ԼCzoZu.jyhW w..>t5t)"s3!98|0 V'ٕIJhG|h\4ŠE%XʼTB Niޗ3↲TGEÅ/v+xtsZBx9y>fwYk ;xYۛ9TmhO1oɎQu@]0ZHި+!D}\tfX~FB SÁpx}h ~\=4iI=ߦW£Sx[>ԝ'k'Pb 5^@B4a,>h c@aZ ek ]}^h>"SR֍j0l  Bu(hl zC\t#;Nk Y o]Ēxÿ}G@J4zH$ry87mq ]Q ;N6fTĈj@b#ڵ{%_>C MO<뽍km3xm 'ڳ9M3k'/^Cr=* ArD֥qV]ݕP.Fւ}­:̵-]jRWkq3 64eкJϜ5Z("1kVXk"b/Z"  Ҫ71\duI3JT-xHڗؔEґ} ٥ xwdhߞbZ|w&|6 }aX'&SEh7ˬ-_lQd^"HP"OU(H@L 18j _t)2' ΝrӪ?%Я]!r _\c;v1kW[zF8_ĂL#oɊ]9iԦyHT+,R DD.af0{%h G1P{tm šClaח7ҙ@4!nnrfi R p-!"!%szx]o[ Y:*Ļ=MzH=ԄNnE /); F h  qgNi lyMPeV9UQJ<%tn ߺB}oV'zMuR2uyA [!Ų %sw1kxrbV5N)4[ؽMYDmk:R l k7߶ɓX?8n4Qz 7(sy^nZ9BZxDKTCtP$0x5fnCR ĥHЗC]1U|u+5.k0N DW'|FBV$2+qoLwcņuZq` $o h`{g/G}tmOLh]du_h)c+ބ Mia}SbX\ ۷CjC>EvQwagx[*p8cEg83gv+'4/ZF?ʏYWݒsZj k@Jh%thU$^ ,om;{I\\7|7"jxf㙱ϘS3RY7&{_:|3j3LtuM`0:yߍ~v|a&Q{9oefo__XԌm$w Ό55 i@EJyRh.37ea ּ ׿=~mSG**gՀ:{coX9Ĭ _~`ߴ1Û*ݫ C( >^"ZEK8 #a50ԟͿ\G'i ü ;mȀ VʹY5g'Vm`\ [?ZD+FD#-6R Uo#M[pq߸BnP!Zg7߇5{{GC!M]Dujf}&UᎄkRTo6Ю'—l8dۙ6 .m{woWYB7OZFV@.ޒ?Cr'0M+WO1<B DkQӢt gia0~|5P B^Уۃ>qg&CDp]tp5`M-Ko+tP3cZIťQmxs>]{Y`KpC gօyu!v]V bWVM ꃦtRJoILj1PJ B/ע3SE}]s-YukNs2Kqvh\ v,Δ*$)8**uT5X4O(4%_R1 .*4Qga`PX9ׁ`3_QԀP>: <|=JH5+a@͊MC*bilg4ȞOS bj,)8.7^{7b)++4R@{ :juuGu2z!q/"K VjѢZR@ \zH4 hDċAl9+3ŵV L 5Z>G'gM@(,--Qa)@8=QmN2EHDSJ uDž@QeH㘺h(Ȭs@ ǔJe5B:ENsqnA Zr2+PimՕKj-*EWۃAig#U| -%ye: dӿ@.}@io[c<\#,C|BNF,+JL&66adݒ@8z#~xU-t}uF*`(\ +u,}&GBӮF 03 + 9  L'(smɩ!Kå% R)Idh^ܛL`gPPuP* 4O c6\AL 3vP*I4^ G "3@2uC9̴ m1RuboAUZ8#ѫƧHh ,qjZҪ7< I8ʎEimwju$FP,JBmT\!EP[5ۣ;<Q܆gu`ծ8ZY2aVCMp<9-9Xw`` .@h%XťA>kwy wv%fEj}Yhw[d$,?"+*#,{N9Z<5a]XtskUnv 󴖴0F[L(싵jX^tWO &IYQh|Ms" x'= 9E$`qh?˅b"X;/hfEZ/O)DkޒBHs<==+I |q{{vev ?P sO)4+,͛:!W05oa55 551b^^RUprBs9:QV(}RTژ‚_Hw0 BE"0f͚UBǽ9$.0`=@ѓ*RVZs MZE+-E֫WH1ͣ5~ֹkhZÔ> 5߫(Kf3v,@s[_{48ORn&Ah9ěS4h{l.HW:eH躢"b6!p[PjXW/ AEʲ4:_O& d)/Vx<Qw<7J҉ n Up@&oRjT`S*әĆ"x47-(4F=fZX4/1&])23vw-8mh=E)maKMؕ4I#s͝;AƮdH>q:@+1(b9F"pmE ;(t;u{`| =鬉[n '˴-mR+Β7|{p0s`8@ bLQ{P{d X:s? q!က I8qu֣fDC3LsKɽ_i5~==E&CtFeq%ty q ן+q~:]D&&C#P[Ep{~X"%j; ,SZPTVvUes074;QY技XIeB<#vFX_K RyDa!mM&ӱeG+HhAGūtF?U g@sRhܦ}vSԯ ?8rWҠj*Vszث, ! 򰪣BPi[Y_(U9X]IENDB`assets/img/wp-force-ssl.png000064400000056601150211770060011660 0ustar00PNG  IHDRX pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FRIDATxwՇ_{ݍ 6^M5'IzMD'|@hL1ދ#w5.f%43HϣeF3{s9<!B!Q!B!D8)IVZu~  `0|,T3-B!D| n\+$ʶ:tsQ_0%L<󐃁;9Wfc;|^f߁X Lf9T2QQHO!BQ% r @W_wFP.VNvU'wv?o{Έ:*6 \Mߵ|R4!B!d`1jOa^@W.v J&(wBv>J&UuZ1ں߼88V}7>cSS2B!BT匩Θ 4g1YżN't.P[#0=S}w"0Ӏk1w_@]SS"FB!BTU<3+c QaM ^ x|y(B!d`̨ l>cj~`م-p`lmc*]=Q98Sཅs! !B!4U{LyoL|L} .T2єa[9k*4AMd.z;O30xx *Lm(B!d`EcTu0LXĮ>qjqcm0OWkŀS˨[dwf7xOc5I%u !Bj57x^R1˛j^FW*_.j^e1[6Lږz_cW0܏B!DC!<&`pdW3+Ww:p_}z[W@/< oB!2`ltdt]rQʲmVsk۱0 B!DX [u(W5kQ*2lS{*t̲O]il>g_ u !Br08`L]W 6v U?9lB!Ck,=_jWEծd$ad p䮇5#˶*Cw31!B!ba`\\MXUkLv@ϽmMdAo_5 pp3VX!BXI@fzx2K3ew}& zc*wGbÁu !BbX#n2z$ibmr|? 9dVW&F/5,B!" kgQLmM<[5ʲAX_c7;QLƽ5VrgBƵj!B8%4UP">Ibrn[u[V 9FPL!B!2ҢwI&XH M.sHojrYsSŠ{ dQ?Ǜ^_Sl"\dXsŅϢPXx$lLQu/)bd^\ Q(n3S-< \i<߾a;kP\j-nL,-k`#x`Z yjVG6S7jHip ܋+XqG'La"ou7O/,0=vrRhxpQd"?$pVG[ݔ+cqRK%M X"Iofgf'p cd׺Wcuw嗢-%~!تj\M:7c> nGi]>VV~L鿯GˀW1aӌTLʵ8_C||t1&6=ýC?I酅2-5f`5%d"[X`0M${8Vg;KJ&7xk[5W~ҫE4S~]0uа׈wt8hO ;ml",/dW?͗ rC,7 ?j'SYOMvP}ZwToٯŸ5Xnzx !u׮ab^Xg!{F&88<{ySN~ݔoXXJy){?"ml,EXb1%@F>7٭>=[%L^KXU"-PZc2>O\枩;~ 빶cH:S 1ΰoy4{=w_d`lM ,Ů{^*4j\ soVK`9[ L/Mr5B|Q[ĈX,,Zล%}x|ֽknxDX>W "0lr?P}R[G*8P`n0sS=N%` B:nK- V+|후pëd콄7uJ$,) rRy.2'47oݪ;Mk,Xݪx,ÔC±V$XC-VٖZ}y{{ '`%]Dkgf秒L1=|{XRs.NĒ3qn%{`T3͍ث}VX_c!p‰_`"B8EX_)<0_gcYKOJ7_*ޛ^F%yݵDhĂ[. Oi!6}9fc:%81?2T2Yx迉+2ҢdG UTw2&~P XE%OAO6J\&AXhjۈr,&9tz,pM~]XUKh͍qUZ`uwǬfO,%;ufX!Ͽa"kljh+O}.KTFAP̆Xi\(.%wa[X3ũd"Twsʭhܭ"-_kU#L,t+=$*x[\Va)Vs%([lE3lV#azU#x>Քs ^ϟۚur+&.q`!tJՓ521 _N=cҞOEh`jT3/cAţSW!`*u@)H%G  x@,t a9qLv"ct׫b舭M\kFH7B|hS@ж;tMwDf0ÞU:N~ӛpgaauW5lN%~a93W'TqЫ ds<д K:>[byL`y,aURF~P:!*5|%6ăB3 P^xc cGxT{{-E!-.Ssal@8#xhCnO%$[xb \+ad0Xzz,sP`3y!}L>Jܜ%N .kx3M <:<ҋ~Nel,$?ꅊ۩OJjSmݮ6 ?6Dc ]Uf]/蹙GqMs:o br5V1t7!Tg\.Wca3/! .c$) ,䢅71d9=CA~fV+vP>B`ޞ87ttWoDRJp$xWia%)i\%T2!|OC*sf4\J&&`ްj=+Z]Zik׳H0X2Dw ]7\3pz~t[0 <&WC:,i gQp 0<+ZT5Gɞꟻv>ݜk] 6ף Tz`wle}xEm݅zgUؿ`8Q Pcc ?6c; -^wX>@%T219p\-mƤ`sw#C`*ht+>|ZMO] E?rPEl bMɋI|V܋fX~!/۶"BMEaX}#&3[$*t1yOwžCUÁ00x#X-{U6%VM#}η$r3k)u*VE 9ڙ /p3BD_{Z /@ :Qy&pC(& (a}tZW9x[x8ayDRχ<"]`yM5 -r'R`&/mOYū sSļ,7>0Nܥq匧l޸{>G+:mJU82$Zg8R(b0 h"{xݓ Nvm/Wkizxc9h猪^DvȪ픳wy шǥC̃w.<"i`1i]*O, ;Wo L6Ok1Jh5 `adپs{R^O0ŏi=1n|Wnk{Qs7YEtvuiy{b#c{WN:;5- 5(=lGv( IÛV]P{[aE3{8d,\8ܫƧb! d~9b b9<)^7[T){bŻobu p"\C^yEHc gi`c`>c$ ,n[-\D^  ߢ4@>.J&>Ͳ/X8S.Ey \^؊N }x6#XR=_V%s)\vB<LMp G V\ s)pT X8z-N\?bjp\ {\ Vf2c V7>W̓"':T r4+Q9&~~= QS?B Ǽga;=hn6um3kzx.˵(t?Z.#1A aAhޥ#Eys%l ##%Vu2SD)>"T9FYT2mby`V98nX}U(OLcŴ 5boFd/4 6Lqp4]Ma?7\6]u[^t, ͶjQBl.1OM..%xBcZɶ"J&Z&˕/R}.lO,ڽ| eG7;8^UxI?&3Y+t>;xcCtZt#xHHڒ#5f8+x AWU9*pck8km#'T/ϕi?o<M`!By-"XhAolqy%X]jaoA[YXTL8([-TzTytYݣ}y :6 鱙G!򢛦B ec2P 4Eic;؊a2]祒Y_HB 1N(_璧?7[*}tsnBT3a[,m@c<z{`Nhg&]҄-݊MTTgbQgxӍW7{:,)LAt^9f~H77Qaq{?\=R/pQ%Yۖoz쫝ðd\ $Fc:ɱXֵmL%o7x7Ps\։Խ7/CĢP} ] XBy%ǘW g7Iss5%=V~{xԴ>cl;L|(n,n~;kcWAWS ɠ9wW.VX-.r1秒L/Y\("\c;5_O70%QV{`ox Ls?E{2vbS1Onb1=wEus3x~ln.yA6Fń@lqsc4bUqA~nnsR9=Ϗ xN12CX`M>-5lŔrqӰpɻr,$Lo)o < WA^Ů#\D7i, `n|>NM7r`ռq?|(}i.^Lj n+V(J<;[ om4ĠsF%rzMFo\e@ *b0,/ oV֏jR"_RXvE>3Y(q(纉z>EnB=~έ:8ywޔN3p VO/Md*W^ "z1: ,dh{79W,"=J Gv?LX\J&64<:X*.Oc\Kcա :x*=Pv(2`!~Fx69%`Csk>r~!YǑ:X+fѿHb [_:](WM~KF>\W8x@bG,g+>g^@ aŭ#6`ꁭ]1~ 'žc&;̣2^YU"''&\=Qn" 2xaTgQ yLvLEDd`ZǑfT2I{HwqcKʲ"$Yx{m csS[dG녓zq.=Y34Sv辮9>X^wg$,,;wtF| \wxwSx9?tNw3]H ooCd"m_Rݹ9oYeS'7NDa`VVPoȚMC&knz47rTZ ^<&B}ˀ!s #NX.QԂLƁg­3Z  _ q_ 5 #sȾRi"Zק!g`q1}XR:>&QGtGi !Y-Syiynօ7+vVĠ^ń6 {ox:7 Q1񆨹S AXnke: G^5?/A3nb]2Ld] k<Llu[ۘJ&7xb q3E3Rv[|ޛ5uorx+OV s֞9;=_ʰNgm5MxZ</ॹf;̣WIà}Z??a3# G0R<*uvg:./sܼ|D3f=;4wr8VM_K.J%S3lK`s#E\ݹڸZ N%\EMQnyeM%/bbx%?@Ӊv`I/NhL~/T(,fa9]UyDžel"|~ k`M,祒m eK; sGgb`j܈j'*5WV_GD#^mф N$a!DFsJa6au@8 ke|)*JS)S1Lb\=V1L&n ӖoJ`,(R-h28 !2έ2yi#q43&HQION^ xn+R,OB$wy6s`bᖭT21͵y~V瑐=1FB 0AezoahϪ+3r7ȠBK? +-n`b4֏G|\enU"T7Y_ kD'yQ,>$bcQx6L2[aX-4&TFnK '2mXvVd* [7A>;Lβ9de6Fu}^\HU6XFҵd"S?H7j؞ :? ݣD4a j@4őy\yx$L=9衘GX1e;J X#$9Lfbޒs Vsb `T2-&yw`hـ,^T2b}ݱ#xp(a<Q7\A1Kؑ$ʗ&&.Uݕ7XA$$0\Egcۡhh`:s001Lxy~"@ ﱢv8M.'d0K(Y ^o`7g,D&o_ u 3 f$D%2 f  .5O`b/{q651ѳ)^do@˞C!i`(c*&LL(cdR`T215LܚJ&I=X%B|ɷ]< Mc[,m6>\l-"ʸ H ᾘ@Jy[PͳJŏXd\zViST2XKxhg``܏?9Q*x+Lν g1( :y,r1&w;|?[n6Bot(yM˽)êcV4 t׀MٓLc^C05(i[Ϙa=绉D>黁SSDX~>%"|遴] bh=[ཁ d5JWNy ]?G")rUCpxaӮˇAUE< ǒSB&>.Icu>'LX tfu%\5|{+;`Va1G7Fr(7^)ž+m|iޏT2f-1w.t!G: +.ЩGX}<r|mg$nD'S(K\di6u+[ᡕVv/q i)=(@77uF<`wna[,BgrLV9m 8˅ n\=1v`"7>8#w=}scOR%cA dj,4'yZl AMO'|L#:O. ?w/NwkMg#L\M℻X!yIT2qFn> 5~C=юx.,rBZJ p,K M?~DP ƵcwL068>L\X$aZ2w3wt(~IՔnڌ )|opv *H+B! "8[v3rr18K[>=ip=&GoM:M8ޣXUT«$B!D^2֥Ŋg0-oK(%c6tX^XXg?%m !BQ=K:\cB}p-H&33-/`aK}K):^fuB!(wk dO)u.5SQ2w):LB0\߯c$B!(k ̋c갊F$-E𽏋[,/+[CXX`\nB!``>nffX(iUqh9%kbVA?sB!(Kk!p* Idw&w1\Q8budLAP!B,ۺa ǚ(IxwC@?K7W_c/e<ţGB!D\)y>I23 8!a'[CcuBHg@}Պqp>7V:b/!B!bI\Ɗe`3XB! }s]Ǿ8잏:k| W!Bĕb`-cGKsuel |Xw>˱ϲjb!BQV7 qԌYyC`-L!5H?y.w&7| !*0=@fbVoNuO C%L̰ϗ"[ Tw!2~agPnu 3s2-<ܣ]y/upo<[cǜYe[o>\g`nn(V D!s.0ɡXmPcv8N>R !E:_ghE]$;`_iv"f 0v!Vn, L{\L„,6ng3a zQ] lMDn,91Q(|AQ<ǼkrSm C ghm.(9.,tսXr0պ܄}y$ 7x lUuy,]J&їOׇܟEX\ ZcLPV`qRJr})RBTUߐw$y'󤬡 4.dQg!D8>1ĨDj1d\ !AM=d\ Qj !D3V`'0N10a!6zgbm͡VM"(3– a2ᝀY m1EB pum\>=&*P^!+:b `!E% 'ۀij!DP |܎򼃅HJFfc& *؈W!)E,W7X׵X^NTjBV +ayr(Xo0uH!#k_aŋlkƄ{w! &ө m㎘_';ji,_abX=\tp{ܻI!Fs >f zW7JUIY#[=[{=1H!(}M_ jeƕ@>ot}? NB q`bۿuEXx@w,?VϪ0vtO#CVl [m\ *BbM ds=<Հ:ӝ{<U,MXyV|`sߐjB`q`a|y#ٻx+JQDz4rA#p3¼a.%}N=ױ[G5ԅ2~R忥^B|e0/r4= Ԉydĵ,}bIc?)EfQOj2! yD]T܌,Bb33}0%.𻽁Áϱb6 ?!wʞW%f.%kQkX۶Xj8?y](XM5"n)0ŹQlvp,Ɉ8x]"i(" 7FG1[1H]H>ban9Y`#U ot.X}5#\տz[ou~%8v8ƽ:/ˊ4R󙚢L85}9pZ?8}bnwQx\94y¦&'p3l-Wul( lA, ,0 PYqp!Q3-fs!04  ˀOϟs|^Y8}^„H-WUtMދc' ȟEjQ"@s̮ipN|ajƸbk,d zUC@r7U՗g*9CM!)0 bntż:+TA{/7XBbR;Fua9xG 93Šx]0Oˀ*1d"BVnFg c՘Jmژ_Xxјx1X {p'g\*96@BDDm%MZUƊPU\%+K{ӄk;3KbޖaJrsKL*iL>%=1ݒL` ^)D1iLc-!_12Φh3քBOnPij!D3x8_CLV\dn]l뗭fBʏ1o(byI& VW<7S0S42MWFx`BQƴzE>:j=uvqAC^!+ǒ'#cpJ+%X#8ǘڭ_j+^@f!>BX]QAiƤnG)e10e_aQ +enX~MXtءg.dfuuܥfB9`H-P7*,oj1S+n[̠J8%̫ObBV0hxP T (s~yUZ;+0 S[9yN0WAmX&=: 0+*iBDK*݁ 偸AQnǼ+ ?+0W'p_&_.Qܹ )/;yVS̯=oWHjX4 BR=^^B2p aGa/8Cg`y[=y^8gNsvX.8s;X! O|gDu`9s{y]wٍDh\BVs":X]/b+BQba {ܱ;:#wY!VsE/{{SǿyU:pzX",3%V:oa3B2PL%0 :XW:p+ J[>YX5ʦca8(KT-X b.26Bݟ)j !D&̿i /6őkt!d`E,wXh=j !D9xc̮LܡRޯ3ct]/vBX2Yk1;5Ǹ\]Sq0x528 !d`\Q ?&0 !D%s9p0Dp B`GL`jB a/ !/U<UW_)UDtP̓H dIE<bh u! YPݞѮ h8!!:o"~`k*kXMu3#C5XnX6Ld*&R g5 \m H\sUI*?k|B!BXf*V82Á= B!BXe"LoC˹B!BV9r1WkS B!B*[^) T7!B!R:7B!Uih7B!Bde}'8CK!B!yEfߗռB!B6&',dp/`g,K!B!*iv-`VjN!B!d` x)<>B!BXiQ YOi  !B!d`Ş`yZ]^ !B!d`rcURxB!Qf:5+B!B!?@xIENDB`assets/img/metabox/frontpage-info.png000064400000103075150211770060013712 0ustar00PNG  IHDR; bKGD pHYs+tIME#O IDATxwXV7 pEP\Qf43[ZiYG9r(@6Ȇ|C0-u]\sgs90 EDD  )pU ""r' ""(@DDD"""(@DDD""" (@DDD""" Q(@DD1;:mV|M.^iҀ]:uda888gW@EDRۗ޾-k4fq} x {}r/>M(7݉j S} ~=BCD177`0277gcf{R~c~^&-ܨ1DFEoPvxӹ{//XDNNi;t/Ϛ͘_¯C4n֚W'EZZ /UNKv-_~ |`ҮSw}yU;F0KgʟеuѽW_> PFFi 6'iЄm:2vD._^("wdCcb;7Mff&q<@o-,rw C[yrʟWQZ5jPϧ.Ozԭ] --g8SF ټeǎ`Úprr"pV^si烃9w|u/G>VDEG1p3ÚSb "Rl!.ˎ߸rG }2j8ӕͯ<7^cgb\qrrbm N9#tJN>gYz> G}?vCr,|/Oό(o |6`qpoiܜHYo Pf vBЁ=x['78y Aw[χd)L%+~&77KWص`(W,S޹qѽ+޵k0fH[4~۵:޵M˶l w4o#GS@Ӗ>+]ڍ= @jj.b_#%54ߵRS8|g 6U[4IOqW䩼1yjm_#BDm݆@bcL_i uj =D7n}\\<ʕ5}fiiյaai-?ܕ}/N-yah?c^]qsse萧q/]Gvv6D1Qo ֥3yWVEGKvݗ3ҕ>oʺr!zqrq&))) 6h4%k)R7²WܵoA6oNDTtqrr4}yIc_OIGVff&V8b%͚;Z4oƕe+X~Fj|5pO͊.[+**&E;?}N2F綶ԬQsw졦ٲOM7ʊLs>ErXv=SL"R$+++&2ٟ4@5[GGtuަjti7\Sٿ{Gyӛ]9ϿP?q ƼSiڲ-y^ApuueG:}6biiȟ3g)@D_)reӲ|;..ΘQˋW&iox}>ժVښ<|]:wFп'xCSv|0*W5}1?7p>39JC`iiCMohӪz똅zxx&UkѶu+\\ILLd5jTg㚟UA" gDn MMxq*HDX K\<  |P6n DDDD(@DDD""" QDDDD""" QDDD """ Q Vb NKLJ"*:m+Z))N;s<u :O`4t_ZGVV/Ί*oq͞574O8qt{/=ISQqcFCGݕ¬ߴzuPp򄻶.bO:o{ֹkYg?EZwm;;w鳌|nHi|4e˸ӱ}[|} Ny˓0!T| ]}Vw0 y*^jx}T`Q~L&VVFN:+p<7}_ ő7q1yj㸗vccV@6oa4fQfu鍭m69_-?DNNko`lllQju=w57@MKWp)aj֨6Z2kHnԪY뉼GkӒdsC(o޹ ,qu?y7p=Or}+ټ2F3FDF2`5WCqqv{p=iϠsv}?fѦUsڶno[999lڼ=K]Z<"d&OzGrsszu ۵cbXWLviܰpcƐŋyPAw'O\%p/Qz5=8LVDZ}V4IHOO#6.7R ~j ΜeS|90+xHGz]ӺE3:wlw s^zM>6慏0[ZZR߯\G}PVظxjըFRr }iPRN:#1vs$EE%tډ)^͵KWS6_?ZxXJZZ|1Z4k´)xICӲ)62 .^ƣ{[QˋE?.7_X5V#=ym'WʻS&ѫGW~X$rss!^=o۶`o&ÕڳOq/mzp%4̌Lk,.j[eee1T`/X^^sM;qCNyujӵsSxpaC cj- y <@6nT/йC;zNDD$ ~XJ<oSkL< mۉcOһG7jT)28q*:6nsCɉR.ԬQ(˜:}:޵,.j[ @fF&w턭 իVEwD}0ڵ6ɫr%cc{{*xz_ߗ'Oаp^zMׂ7޸8spck?Ԅpq=uښU`oOttl[ҫo2iʻlB>\b}3eؾ 666ԭStw\zۇ03[_c/;p/F]pss-vu;_}=s sڷiEfM ř'-sssVY+f}ټu;iii:}Nݶ.I*窻+gΞ/Q*&ffd䐔LNN3ny0 P߯^ɟܲo(]:o;gLߙ,7()o&%T]MIAbZ/7l@FF+ְr՚|; ׯ6`@>] 8 qrt$2*?ORū2YYټ%.krr VV $999޻,fڔIyrg''"nsVV sss.]œS'N<׹U\\X\`‹qrtdN<=~bcSm벨6UR.$\NNN11q89:޳䈙^@R.wm..9&6㧨HRb- [yudeeS7*TK{i<6x ʖq!pqv*t:޵=LS|"YQ}͕dOoT^7R,,,,C?n::m$lmmҺϘ2L_Y4Oѽ3>uU9rGx })ӦD~9N{m|mQ :up|bL/Ħ}T[&t"(,`l>ɱ9Rg]{r":-Jmdk\O+]l;ɔa+٣ ҋ6`O3u &ťDӳ2o' +"쭞|XCƯ>–syV c-9]8X߮=o]56mh}{kKQO?|=\rw0|6ܙ͇f̷b Ɯ荅zl>ԦYKmk/gxCmF4JYG^iWN36fpwsrnZoLhSDendPhezzp2zҥV9荕9Yٷݟl;Erfӻ`nFj<ߢ:s^'{|c{q6*x&7uQܡA +3aeħ`}C;QikITt¼_x5!V-ml˵?f07Al;EtrFMɯJ ;7=$gdN%;4K s&u.&z^1R?x&e0fdŅ=]{*@DH1[_GƒJ/EKpTt%<1\ m4_+ w./K.w %!-/-fp).tG{+f?'7g"XOR\MH%;'tRI|!!O]{H Uu';'?jB*Yl:$U,g^0g3$Yu"#a {ΖS%p=׿__ΘsȤt.ť0cY`nrœWz.xenc)ʼ Kڤ ff%Vg˹HR29^\Ycoe ;7 VwڒOndWH s\٦U˶]{ުrDzefƖymq~,j;uF4dam0gՐ [~ct1MP5ӳn"ys64MoZɕvsvNzdz=U]OhT!q)._1nvVL}yiQfn&;''V⃇}pa&[}C)~^&iծ> A9z,rW2gk ALL,5{nFf޾|8sFcRn}Yiֺ=7gȰ\dƖmyw_oLNj޷m"W7Dm| ύÁsHKK%X^uc836l$h7߭Y*> oۚOř_'\)]ڍ]٩C{~߷'NFFrqgܯ)Fٻo? IFFC.1 $%'3fɧ,]R=NDi+99޾{xg@{}9?zl Ǝc7ѸQCcF#̿٬^[[[wcYllAΝ{z|˫2?_ĞL??95'Ocݡԭ㍇GyN$$$п-[F@@W\a%#66͛/bmm]va_5k㱲b֭PBۇ+cƌ߿Dm>ʠAHHH`ƌ;vJ*₍M駟r5IHH}ٳgѯ\BjXd ?0)X^uԩׯ'O&55n:fϞ͢EHJJb_Mpp0+W,pGeРA5'N9zhuN:GGGVXo9w̜9 7|g}Ftt4 .d̟?SNk4ox7Xp!7ndΜ9̛7cǎ믿v⩧bҥxbW_}9[l߿:U&M ݻcǎQF \\\ҕ3ꫯfɒ%%jC1o<͛ӧYzizHH[ftܙS\6UQzj̬Y~zXj͛7ga֬YdffꫯRF .]ʸq3g*Hvh߾=6m"'''ɓ,[ ׳j*NʢE310m4ƌO?Dz>}:ժU3](|' 2y,--^z^z?ӭ[7M ;w.'OfѢE\v O>\.\K/T3~Q`ɴhтN:qy: { UTk׮X[[ӪU+ȑ#$''OcggGǎ)UǏښ 䭷2_~八+=v*p:tE)S裏HFh۶m7nG*T˗McRJ8;;3zhjԨAzz: ÇŅ5jЮ]<ӧ4nz聳3˗N::tvѴiS^Z`UDž޽{8p`iҤ_=zTR+WRv֭ӧOtҔ)SFbŊh{{{=G)Qߪڹs'} 777zQ: "--g}ݻ7֭+pliܸ18p <^z899/ofթS>Ӿ}{ ~׮]4iT;}۷DZsSP;s_qssRJ 84ƍׯ5kёcryBBB0  .^HJJ w)x >3t邍 ;w&%%<Æ ???\\\ h4w^}Y\\\R鎭  x'yT^tWX}߳!,333+h_N.]M==z4+WߧA34//0-S[]Vo2eʘNO&%%4i^OOO<== ';;ÇYW۶m "uܜb}s?-<_TT111:to;vp=ʄ Z_)]4qqq%jg KHHH0 ʔ)C||| k?+66e˖ܱ+W4D P|y_6lUVXXX`aaA˖-ٰaM6-/Kgڶm˼yHNNf<#=Jnݺ8::r!>L֭M)..D՟qJ*Edd$UTg,^OOOGeřҒs1m4S0<I||>ҥKXE= ¸SlY~|sΤ駟駟2}t2dH%^Aڵkz-ɓqtt󚲻{u%$$pej׮-%.ǝ$uǏ?HJLW%6m">>Zjݵ>iw.n9oΙ3WWW+՟YGam^/]tO7OfQQQpS]:::ҠA6nHHH):Jzy5{qyo[eʔs+ 2uTYf oyfg+W;hG>bnnNttUqھyME'%%+W{˞={x7h4bee~0lذK@rr2b׮]j*۴4e݄@:vʕ+z*III̞=-[`mmM֭={6111W_q۝ƆPQu\0i޼9-[dժU4lذЫZv-DDDb -yq˙-gr̐!ChѢE@o߾XWo%ѬY3i߾}Z*) ; ~:-[tܙ$LB||X"oiyfϞMTT酝ۛ}2i$ {Ғa4hЀ˛Yh}WEEEv17)))W[l>|_dС'O4hР]vCfff۹sgwa?&##@rssVƍǾ}HOOgڵ\~?cP?e\x_=ߐ ܹsr *Ubʔ)},,,,WDDD!,QDDD ""QDDD ""DDD ""(@DDD ""(@DDD"""p/W)UUzQ.@_T\7rCNNP#(@DDD""" Q(@DDD""";}ffj{-7Wu "Xz! aDDD wM\\:u⥗^*p9r~ٛW<Ȳeˈ7-%%@Μ9* 6l2U]bwnҤI߿QFѧO{x1we}:u*tZ6lr10 燽m ܜ޽{ef͚5dffҹs{DIII!==?wvɵkhР5k,r~'q{ &L`„ wm}=)mFrhٲ%v~̨X"YYYGΝz Fff&!!!$@p?JKK#""/(@? 7o&''J*q%Ξ=KZ;w.+WO>l۶SF >s; ]veynNX":۷s2vX:t(aaa\;;;{6mڄhߟ^x<=bΝ;Ƕmۨ\鳄t邫+K,駟&""SjU ۛ'RL ~xx8gĉЪU+Fy_O>MNN͛7bŊ;vӧOJժU9{,ϟ'-- |}}$ tR^l<8q)[, 6ȡCvVVVEǎqssŋ>}tL2F~gݱ ##\xqpp`)ǭBBB033ޞ˗/燅O'&&RZ5BBBxILLȑ#$&&bggOo>Q>>>űe*WLժUپ};^^^4mڔtV^MRܹ3qqqu =JRR666ԬY<9ׯ_'..WWWP߅ h׮eʔɓ8qf͚qС|Ǐ% 4Pp~7TBLL ˗^zFNNAq> ښ#GiӦoOf8pN:ŋ,sEhذ!ΝcyemmM&Mʕ+pUqttd,]*UСCv͌3JT&!$$P]JŋTTFĬYG}DPP=-[dڵ_P|yg5k֤m۶s59'##{Aƍ1 XYYѬY3,--9y$O ///8pG˸Alli8psssWNjj*;w$114Ott4SBM']^DDDNʕ$,,,Ӆ #==;wFf޽y%22ʕ+cnnɓ'Lpwwt~ߊ+Ύ;~:իW‚}hd׮]deeѰaC *?ҥK ׯo:F~sе:t}#$$9s /^rξ}tO;qaaa4oޜ 9r$֦ƌC^ptԉ$><LJqƑEnݸtRiӆ]vqalmmhժp᛭-ӦMʊXvMjj*vvv.[6m bݺukի3qD́0En?99 ߿?zﮂF# r666HMtׯ_B RJ\pKKKZna4r VVVisss23vu( IDAT3M@qvvՕ={pej׮ =]v`0ĉ'LFŊe˖ɓN:̹sӇN:aggGZZݓӇ: ɸtwܑ&L&ޞtJKK%ppp ++ Z+>,DGGIϞ=E&I'Zݢ[PXXȝ;wBAVV{nԥvCtkomXYYIv#ygYlٓQHܽ{WdBXXX`bb"] pB=OI'!prr_~O\ L佷5m66tRW`{EEEbddĀ033{.?~\ lܸnn0&""GGGve+J @bb"Jwwẃ_[UUիEbmmݢ377ݝdr5޺^ӭ[$al|KKKYl>|P#y2Om۶%''|)|eRSSׯ+WУGuƅ CNLr9Ji***h4z"ddd۷{.fffTTT, .p&WEFF6]\\|BR^^Nnn.666-.Fee%;w<)Ν;כ+ 022ח{qEnܸ#ך3g8sL=:;;K^ophZ6ѣ$77gϒ/,TWWөS'+?tϟbuԩ;wؘ,Ξ=믿"ѹ'Oرc/سgnnn\v RɪUZ|C%))zeB37n[n鉁A/[#yפ'mԳgOrssqpp ==2222$u~BݻwIJJgK.pE:t@II zzzx{{DZZ'N\tiNNOcǎܼy\젩ZdJ'v tnܸѨK;wɡœa.5d2U֭[uTf700`m65j3fxCTBK.OEE:t 33Sջč7֭>,zzzseLMMիnnnjnݺŽ{077B;vd\|4LMMԴgtaFWjl8p`AF2dϟիiӆjN-,,AА~7oj6 4/Rw>q+77z^L&dddУG)tWSS]_hm4& ܹsڵO>Orrrܾ})?ZͤIҥnQUUرcڵ+~cCݯ6zh4IrQ5j4'NPXXȸqxhn6Ox -aaaTTT0l0a@ZZ/^k׮TTTPTTD۶m[%E[n,C q>|xGGGz*sxãUyUUUq gWAa=-w a ~[DIEQ@ oՊwVv?M @ @@ ψ,''G[5R[詪ZB <)HM6BC#BX@ "! @ "! @ @ @ @@ @@ @@ ߚ/EU@ <0eFLR@ <T*G&=TzVKMM,100B?BQ5O!֯_/RoI(--mp___f̘Py >Ç?FFF2m4^~e222~{o0mڴ'&߿___RRϜ9úuĻO"ɐd1{[߽g ƞ={iU]7mÇMLLppp`ĉ&>q\~\NϞ=9s&={gx 999ҵkWtÇɚ5k[L}AAAtMB@,"uoАo +Yr -- J3ܹ3̺u배ڵk100o߾TUUq9RRRё͛7aMff&Z &/^Bbcc!//&L iƍcĐ122Zd! Z- "y: koQ( wJk=:x aaaĜ9sh2aÆI)00j]vq߿OϞ=Y`\zO>,t邾>l޼zybcʏaL2bkڶm htz*\vm2f&NXσψM6̙3^xTv+W$Q‚Pv㉏{,_\s߾}aKvڅF!44(իo&NNNL4 '''|2opMϛ7oĥKh׮'Nd̘1犊 >SN:Rۛsbhh@DD_5oߦs믿ӧ>|8߻v"//GGGϟ|deePhwNnn._DD:t???&Mhwgϲe ߿?.J?pCpp0 ۷RIQQ~~~?MG>}ϩ /жm[xc֬Y,_DÙ5k;wĄ3g`iiɛoIK8pոpB:tЪ~/x|xɉ%x4 9eұ3esinZomm-GۛqƑϟgӇ+VrJwii)8884f֭ݻsssILLwޡZͪUHOO[nr,O7#E5 ÇAK.DEE...;v-Zĕ+W>^?޽{cjj* 13gΤkr]BCCٹs'̝;4VZVU^z a)(ϴ| ms Z:SZZʰapssJE޽֋/+ǣV388X=< #G_FOOAzz7&MDzz4;_'RVV+¡CYL&c۶m}vˑ#G>}:򪩩aȑ;w^˪UhӦMVVVfooO׮]Q߿}/FR1n8lmm 57w?ccc)--':ubذa$$$xfIIIK^FF111,Xp,--Y|9zzz۳zj222L",,,X|9ٓYf ǩSlFP3ߺun upevIZZwh0 vuum Mq- zڵk1KKFC7 n~yz pvvW^ݻkKKKی9Aٺkѣt_zձ <cccz聃 } ڐTVV6(Ξ=Fܹsxyy!h7cc_';;L&y:zе<󩨨ɓ6yk m ȍ76333ٱc'Nͭn]CvBڷoe՛{"::Ν+&88J̙3^sun)f֭ر###iAAvk)0J!']J%C~/x=$喓qPѴo??3\ݻGXXxxx? ˥Gʕ+TUU  95HԩS2zhJ%۷'))w}FS/TKLYd }d2Y`Ĉ.]"00/J8\.W_%$$m۶_LMM!٧Oټy3rƎ+= xxxBɉbdd8q"+V࣏>|wdgg[oIkc\]]qtt$$$Z\/--%>>C2jԨz3T*aرb 9x 555Yp!_5NK.lذAڂ:k,صk#F͍+W–-[h׮]@WXƍ ___bbb)66Zm_}U;Tք ٭5v]Ӯ]]II * KKK}]ieԩhZi ɉ%KT*N-mSצR} C<100Hhڟw5k׮aooO6m>SN@RVVƔ)S={vuI&agg`)@b~|jjYn … )C .QQQd2kB@C&o{n066f̘1ҾuigҥnvIք@ /@ @ @@ @@ OL~һ2@ 䡹v^$Vx@ Z#{-x+a.OdbP-*TUUFvv6w`oo0@ HUUqqqҥK%R6l0@ xbxiii(add#fff$'' ?deeѮ];aǀ) xHEE0@ s @ @ D B@@ D d,Y߿c)_׷R˱bРA( z'c6ЕJVwygggZ-7odܹs^{M@ qŝ;wxg())~SSy/_O?D˴iP*TWW3sL9BAAݺuc޼yʩSXzuu722ʄ  aƌDFFs]1cj 077gԨQ޽>[[[ݻW_}EBB 27@ <&#Uvv6Q^^Nbb"EEE-K.ѵkWyb,]lv];*9 IDATsrJ 8t޽M֤x4B@Ѡj9rlٲ>3)mdd$)))[;\p^^)//g͚5[ƊV)_~\rׯS[[K~033kv޽ݻWӓ_=z0vX駟Xv-vvvoW^iӦ ~zAѐCDDrK޽i۶->>>=z 9~8Gzzz kZjjjYurcczT*ǎc8::ʕ+ ͭg(=@ xM@s]veРAqY[-fffVE0nJ>}ҥ p) ڶm͛7c:EWZͭ[P*ҿ^@ <boo3ݺǔ~Ѿ}{i5зo_vI~~>nbkkԔtn߾ݪ:tؑd233IOO'$$P :._L^^aaaۻwovIff&ܹ^@ xMBXu)8Ϟ=PVZcԩ#Fc SK3f |GmۖÇAaa!VVV9"6oތ^^^={V k͙3P֯_V͍W^yEJ@@mїΞ=K߾}"{2x`aVחBe׮]??а>}I&I?۷_ٻw/}mx^z0/_\.],B@Mbjjܹs!K@ ؘJa@eeeϢB@)**V} ?@]R^^NVVD瑕EYYnnn .iӆ{k׮k4;;;<==1W@t"&f@ !j~:Z B*D j@T!o' SL~\vůV( z%'O1b D B@@ D B@@ D ! @ "! @ cЪ TBG{^X^ F\2Fp&)EX] fQ*#{hZjjjOB@100B?]:}}}aDdd$ӦM_&##woiӞ____jkkߏ/)){gΜaݺuHO"ɐdƒdh4V`سg666M8|p:t 44Wɓ'?꒓Crr2.\ 99˗ӳg&ҵkW4Çɚ5k[L u&F;# :aShVuʌ PT̘1W]lΝx"oJaa!3g|hZ&L/(Zu :{n숍%44|5k f :HpvvӦM͛G>} … M^Ӿ}`Æ |ڵ FChh(QQQӫW/|M4iNNNse_/_Z9vjر#7o$((K.Ѯ];&NȘ1ccEE~)NBTܹs144 ""۷oӹsgחl{iNtt]ё@zz:1YYYR[[ѣGfܸqsyټy3}aŊ\Vyw9y$=zښvb0o<9uׯ!CPTTʕ+Mo>Z-_OĄI&ѹszn>>>Ҡ0c -[] ˋ Ò%KgÒ{iӦpBRSS0Ryy9-\\\ l2fN>̙3;v,ܹ@u… bҥyfr9...lڴ dV^=( -[Fqq1>lO3?CyFbСճCu#G0j(9q FV @bbtAvk XXX/ӻwoLMM%366f̙TVVvZ޽ @hh(;wחs璖ƪUj HaÆ憉 *޽{H_|WWWGV7gpp4[XhFFFdeeѿ>#4 ;wWƌ×_~&M`޽[.]|JbRׯ_~NVVV8::`ooO׮]Q߿}/FR1n8lmm A׮]ȈÇӦM@Mii)?ԩÆ #!!\/W?Ǐ혘,X@xx8,_===Yz5xzz`ff | ,_}}}zɬYɉ\fϞ͔)SԩSM( |||xgĉ >^آEsjjޢ_~j9իW=h HLLd$&&bff֢Y\QQQɽ{2d[nmۖ?'N0l0fْGuVnܸѪ~(򛄯@.3tP9B@@mڴۛ0/^L~d.Lr cǎ$%%H!\iii\rfϷk׮A9 :[u_+Mq-- y5阥e0rHΜ9ۛɓ'#ɤAc޼y ]ڠ pvvFOOON#--۷o3re뮥G_{~2x`ѣDGG7K.k݇ 711ÃgϢh8w^^^ظEmLJ(F&I:t&//|***8y$ lޚ~(X)++#>>1kkkvILL lݺ0$a@t-놊4V7y~6mHǁuwd?AcbbbGRի%[lذAZmj֥={viRL&kkL-K,wR <:/رc;v@bkkdZR2d7oɓܹsGdք͉'77WW&7H/>>>L8^:{{{LMM[B@+GYfann. !::#Fp!)\1aT*7nܹsnLJ _DCVtkz=rɓ'_fHJJ">>GL~.,IԿiDzz:ׯ_o  -Ϟ=Ǐj*YbM%u4h.]"##CJ;Jo?v777V\Fa˖-9r3gҳgOd2+VΎn޼٤`R[[+_&wp=έ c567g֠uճgTgggJJJؾ};:ԩS1c/_O>,YR,''GT)TO '$4ZZMl܏x߁2LٳyW&MΎ-[# ~Vl܏zǏL&V }Dx#??K6A h a @ ^i+! @ "! @ "@ @ @ @@ E~=J*T@ <0eFLR@ <T*luhZjjjOB@100B?]:}}}aDdd$ӦM_&##woiӞ____jkkߏ/)){gΜaݺuTWWF+xz=LL&{0L&C,٤PYYl VM [nb<97VmU -- JŌ3~v{{{o '$''P(2d߿FC@@@hZ&L/(Zu :{n숍%44|5k f :Hpvvwߡjgȑdff2{l}߾}aKvڅF!44(իo&NNNL4 '''|2ﯗZf;v Z t7oĥKh׮'Nd̘1ڽO?SNT*fܹ_۷ܹ3K=}4Ç'::Z{׮]qss ==?,\\\*tM%::DDDȫʡCcҤIֹ{Ξ=˖-[((((J>sٳg$$$o>J%EEE1~xh7}> /@۶mHJJϏYf|r g֬YtΜ9%o&&aaa8pj\\\Xp!:thU?yxbѣx{{3n89tl޼>}b V\IqqqQռlO3?CyFbСճCu.++9rQF͉'l7jd[Kpww‚xM?޽{cjj* 13gΤkr]BCCٹs'̝;4VZV}dP T*ϗ_~=kPN:I5 }@3|+++k׮jO߾}/FR1n8lmm A׮]ȈÇӦM@Mii)?ԩÆ #!!\/W?Ǐ혘,X@xx8,_===Yz5xzz`ff | ,_}}}zɬYɉ\fϞ͔)SԩSMÇP(g!""'N0|zc-jΩRz~V9rW^mPA#11[fr9^^^DEEQXXHff&cȐ!Rnݺoжm[>CN8at֭[qF@o\СC9rioooXx1ӓ705; @r9nnnqJJJ=߮]大4nݪש_ȹsF]Ӆtu bǎJˋիWKذaP`K;{JL 2 [[[,YR︥4x\u^c8vX=ֶ:1d6oɓ's4?n cOnn.Mn"ѵ_|||8qbt $LZZ2^ <={w^w·~آARɥKcJXsر[[[fΜ̙3ٸq#*Rfye-**fߧ===q\Nff&;v`ĉ5MݺFʅo;;;y=o sΕUWWJb̙~:uVv؁ ]KRQSS Z7 bccR$33=zHSSGB@i}5 }wr=¨Ã~\^o7鉳3,^{;={D<𼡡!%%%Y9sڵkٲe $(lllؾ}tW^kjxW a۶m8;;SSaoE`iiɕ+Wܜºq̔?J,4Wϒ'+yP"gC%餎Rd0Rȟh8L=p=g3~癢"-,,httTZSqqqptHff$(9N0 +++KKKK:>>Vkkx"UUUikkK*))ٙ544t%&&v*͍677¯U־4*???8z|#77WiJWWjUEEfff۫mookssS?<􏪰@%Q{_spp b$HRp!AG===:>>a22Svvtxx`E[755)66V;;;Pgg 566Jp{kuKuu*++x4>> ޗ6kjjJNSbQLLInv]a@ijllLjnn$vrjj`` XZ__{MOO+##C]]]z||ښꔚ*"0dvutt20}"dki~ԿnJMMf:599YךPDD,ժȈ|>C|LPs ~Maaa;_ '=<7"#HQQ$Gŗ;ΘW&Ҹ. 2~=^b|uꆳ'>;eG-GG.5kֆ^Sv_&wb4tY+?-L4FhѦ/\s>c'Le?ѺmG5aK{/7Ҷc7\<;p(/2q2ZѤy+MpI]{ٍ.bxxv>cgxxǏW_[K4 Mfrr8!1`Рshkkcnnάؿ/!##2c^xxgBυxig~jeЅ^ >R} _{+bbbTvvvϼB<2_ZiGBB"͚zqY~5m}[֤yQ|9ݻvӌ|'JŨq8\tTpnP-֠W֤>d|4xu144ݭQBӖU**JN sQ(?`6ÇfGYnzdhki~C^Enn.( ~~ vDמ}y:6[Ń&OQ Xfs?^yT* ٱm5;sa >Gǚ=.:bjjR[_9G@_Rg~^Xv635=Dgݎ~±fu^0/# MQE\{$$$R;v(:斘hȕ8w8|Z0og!ux,( \'5!JciY׷wO.==;v&zuuZ^<ǠHJJfއpR}2qDFK =ɥӼ4lKT^3>5j/m݊g gd~f32lᢢz~/% Ϊ5&yY(J\n˫M%2/w_/,%'sq٪sO˖P(HIMemrYyy߼ J>9U|JRBh텷W rDk++lmmko0vH044dkSH#" ԮEϷ5-[4Nؗ⣄TvF__GǚʧEѲ4rm 7V޳G77D32S=MFYț7K޼tMVv11 6===,-|<>okN9Kvv6ϥnCw<[C/n/{6^63SS9xgS'NڡIVԯݏءZZJ|[³GJ6ٵ{II=PXɓk8}&o&4_ccc.]P?$lSXRBrrQ+STZ]FTbh`@zFFx/:ttΩvkԨ^v*4=+7XNk$jMGJIoܼUzΝzz?|#?敉܏ïMkzs:Jv~0hVve=.>d|| ?5uewv'Oxvf ĘڵHȠ^wozzzQ4vW_}>Y+IIM%#3S=ojjKjY47~F$;vR8~"Nx|ȠE"o೅AB]̍:wPߏYr: /^G?Rvv8vFIM}Ȉ1й{o~eͼԣ >'&6BG?xP~q#&ko_#++}~y3f[Ouð޵3e X+KoVݳ%#o9@{_!==#FTT>ufsYf|)opjAaa C`nn72ωr]W(\vk+R1m φ{W&N.~fMiƍcڿ?cu[X3__97{n w;KCg/?9nŚ_~ySoݍMQa - +KK տ ٸ4,6 07a7{ų[7S@AzuhxcJv҉eK MMM i׆kW3jK&EKKMYr|[*{`kCP^{uV!|D!Bg"SXB!LB<3 ! B!$@BH!B!$@BH!B!"BD!B!"_ sw=JKABsV8222|]`׋{;uޟZG~~>3~_fշ]#ǃO%[eyW\|E>"1ʖ鿉>{"\#+;֙5edff]ikh`jjBS/O:ҟpsSYm|ZȇyHe|jnݎҲ/ e5 ;ȃF4p)iPωzWj}v4voD),,dg^ΆGWWujXǵ7Tj9d>EM6prFݝzuFp?. ssJzuI}>8y,_z{#ozF>].^ h~R>Ά}zagkSϞcQjI}%`;c151[|Am >y |[įMR*,,dC:JŹ>!A_}ٳ024DR1O׻'\m˧A+D{оm4A)[JCe/G\>ܽǾILJSF R$779"mMMKSZ܎O]͕׮Ӡ~]@ڵz=INNֆSwhN$iLMMսzs/&*lRPP@ZZ:wEceYAp1\1S΄'RDZӓ>&|[jg_Q"ί Z4cC-y63g9rSOm[#%58:ff444`{#ƧYlȕkŷm}+-=u; ++KleİG=AAAnR %͵7ԡ-gallGKzN3uf5,v;厇RU^0_} {ezuȜٳ07cI)6loڧ9@VV9,a9>-2ol7mªu(,,,qXYV+=sXv#}{ޡ#m*U.&>[vЯOOޙ90}bj9գ k6lѣ4T*S2/{"R8tW݈7&3sdދx)lp7:ܜ\ԫ-+᧕8,]~#R]&RW| }<=\6KqF`)Dr|z)#}k:^}˼OU#Rm}[s nGs33Yf۷[xyz_uߴm;)=c*'FM8 jr,mmmmߝM)]ob``7K՘Ím;eҀy^XT?-Ȯ=yQ^t #Í_p!2&7>R{6vc:n/ K}oN̨CIOmc׻'5}}=osXaa!t*E+n@__Cس 1l޺wߚ}.@Ʉ!L77xX9Kī;5;CyXyyܿRdKC˜Ǯl hӪ6VѲYb^¨_.. ѡK\Inn.6V8Ofr=JMM6&hkiդ1<||ݣ+vE4$66:wlǸQ/*~2 ѰA}h[ƨx$%'sޞ9}O _.n\Qjͼʘ116Ԅzu@c7/q* 룭Ua[V]InN.ݻtDOOڵiьSgt }6:9֬ABB";Nn140O7.^\j#AWѰA}l%)9wxq\ -7Ɗ.ͅKcc#,,٭3!fkpwsOnP˱&,@~~>Wѵs UΐSgm k+ mӊKe \n8)Wů_Ov:զ_\QZZԇx9oYĘGiihjjr/:k7D~~+B '5|jshii1a(bY͂:caa^:ѰAw M ƧE2˚T0=pG7"oLyzr>-+affZb9Wݨ1TWO4 IKK/}W{5svW^7_np;z4U+ُ$JZ~0'3htkh_,''RYvCjjjie{yFQ;WqZz:&&тj$%%W͟{^>DI,S&[곦קqYZz#'@R4XD*U!T*LM>>$pG;ԯJ Iԩw9`[wQ\r&Ƥ>|Xn x7i\3cpc##$ik cGcM xÏfcF!yZ͙]`blL?期OJj*BCC;wY ;cNq)q؅ >uFFlߵG}B07ގ'OLږAqff>|Haa/#cc# gMj?NhùA}ΆipNLJ3S )X[F[KOxqK;=K[ PC֓5xm8tuu035G\ɍJLc:ƥ> ))Eu4 kiӺ%G EOOO ԇQӵsEc#|S/@KUMʖkވc G8rUw._+r-oڪ2@r8r 9!;' ]]s>y誣PUuy(J4 ps%5\NVVZ:Z!CPPh߂CH/Eȥ:sASC1\YjÍйzeE}Ǔ{";;Qw8q4ͼT8&))E=:hȅwQhiGG,|ڎ\rNu_7nBOO +^&r:"ޏýJ&ٱkHNNa4nBE3Sس g}v6pTUm&b[NΆz,)Tԇs CWOi)kEߡ$h~jתbyDrrrեP+$&%SXBSSF.LbqB#&9p(1>@>-HI}W-%?/Gǚ ˵hMbR2.=]]\] 5#fϾ^ s33zt>lr`ldȨKaUhjhӲJTUVVww۴GҰCJ5bKhYfX*JƎ|ص{FFt ;[\fF& .BPЭsR7kzu†ۘB;QN}da=%*jˊ=!M&ɖ|83 ֹ.U>yyz&~LIa1د7we׋/35?G5P(p)6C>藇k>n،%IH_ص/}Ga&ѵzzhvCzN ⹶SUU|7%+3 3+׻GףP(xu(oe5 cN5?QQ?ڲm;qpgؠU` pm[kRRSߧlObiY +V^GZZ:5kTg@ߞQ!<^<6zzj]o3Gظ%mBxfv 7q IDAT߅%*'++}HCܹG#77Qwp SR>l!VVyy4Oޯ [wa ڹB*),!LD!B ! B!$@B ! B!$@BH!B!$@BH!B!"BD!B!"BD!B !BD!B ! B!$@B ! B!$@BH!B!$@BH!B!"BD!B!"BD!B!"BD!B ! B!B ! B!$@BH! B!$@BH!B!"BH!B!"BD!B!"BD!B ! B!B ! B!$@BH! B!^<%@llBϊMMMiXBl$@BH!B!"˓B!#!4OPH?P $@Dd K!B !Rܾ}uv&ؘ3cP-"b99q.s݆DBX4nL΃%^?ҪU_ }yd"?o+(,O]' ;r'_S~!9~_^*<*Rx@d2kW8"0+f|Í5-/`NVhn=흏M뫃>F?weu644tGz`XW fc˾NFkVTBKKX1/~YDg0vYT}:Z<E~[]p0OirU/ g:TyZp(G۶\wSw;vzћ Zpqf'\mL8s/CNz<.oH+}Ov3ڻ[ãNzV9ʿUԟ;JջC_~{ B=45RS؇Y8,>u, s5{ OO !D"*c0բ>pcxG>( &z>ʢPB`Ǽ9Mָ(\BŹ7:bkHSn3#tth+nO,uB=WPR3)(TOʑؖj[PPbҶsK$;W㸞Wue}CWyGǤG"Iav?ŧ_|l359t̽^O^*5yɳ&3vln'giZ y`X\'#7Ǯ350 -MEc@fRzу%F:Z|8~;7۬?֟UTo_R(80 HO]KC~E%N:J G0nY>;ru7U?yeĥeӼK7Q߬9m%Q6{#_tg38fxU7vrFuYoM,Ɍp_BÛnۙrhSm?ϭt״D?4 .v4|?;mM oͤ簟j|͕>kW<֦nYo| KϊM2 1t6+bcc?Ob˜9O|$66V&1 ƥ^=t*5Z_,BK+>/۞@BH!QJ~ZJH!'&!d K!B ! B!$@B ! B!ry]!D} B!LBH!B!"BD!B!"BD!B1U&B!NZB!DB ! B!$@BH! B!$@B唕*PHK(* ^$i_!)B!<H#!HI-\+V.O>o#C!^D܏٭[?\r5Nnt76Z(rd!S(J%;/񚃃s;y6/5ƌ70)rT!ċ<_~^_3o/6mF=qmܔsF~'g7YfXaSvWbfj %/o=?m;ڸ)ݻ͐Fޤ9M 11 o89Eȳ\# lW܎믽ʨ'PĨ*(!-BF B!$@B !/ӟROھHrC 9 !(La !B!"BD!B!"PHK!zIK!B!"BD!B !BD!B ! B!$@B ! B!$@BH!B!$@BL0qMF``%HJJݻ;w~^~eN8u3g0ptUZoY|9C, \{ǏprM&Mľ}^8@TTo^DWÇu̜9Rɂ ~ڹӧ?}~y?;@S<==+l'F͸q!;;~`HMMelܸ޽s?D˖-:u*:::BVXAPPhт7xmmm>>L2T*6m" l7n믿9Ǐg$&&RNL oa=zteԩS… ֖'EBBÆ cʔ)lڴ ˈ#HMM/ <<5j`jjnWtW'_$55vѳgrD{.uatޝN,. 6dӦM 82339s voeդb G@@ ,$22-[ .0b&NXT*zNq̙X .Zܹs122bͼXׯcXp!+W$--˗7ߐUgŊDDDכyXj{aҥ,[p;V?~^z 6`aaڵkׯ=8pOO ۸Mٳg  <:ť/CNNhiiAAA 8GGG0`Ǐ/s۷++ D߾}122 ??2;m4&M>888pQ&&&L4u뒝Ç?~<ԭ[mۖX~000SSSz聉 4lؐJտ}4h}}}5kƽ{lڸ aС%iӦѣfff0du]*]veTV +++Pzu|||000`p*yqׯJ~ptt‚=zT bرN޽ٵkWO|8l'''h~aSX B *!!ҹsѣ&Mb˖-,Xƍ3yd/feʻY_|mvڥR8W_IFFz %%KKKuY{{{퉍ǗX_Wdŧj444(((TO#77r]fݻwӺuk455ԤUV޽f͚yw\Vcٲes UU`ddDhh(ΝM6Ey\8HJJ*OZX`6mbڵ3~xʼ(LY---_μy<(ORRRPTt?+~JJ ժU++j 屴ښ5k֔z/&&777:uDff&_5_5ҒѣGW8?\u߿|@Ȩcʖ%֕ʝ;whР իW*Y_6κuQd޽P~vLǫ+['SK.ܜ^=EG*r/8ʶjժ||r2{nll-x={BJd(s:.+FFF4nܘ={pmuXU ŋy7-,,,\=M񾶲*9&%%sssRSScܹc>JvLٻw_GJ^^}}>ABBUe?+ھIII%'*j5_~!##w'Dpp0qqq塭r͚5ݻٰaßiݺuYYYR8qHزe #--oC6moILL$))sUݞGCqYXAAAlVZH&MʽJ;wB\\7oV+[ό P*\vsΕK&88 6mDfffO󪴿[nݻ$%%SVܿ\W.]bΝtڵr{F8p@oڲ IDAT2UqYU۷gժUhB}TsUi#GKꧪ~GRRc޽;6m͛djԨAݺugԩ\x\Q*^WWZ1>ܹLFO:)O?Cn޼7Zꊖ֭S?oE@ttt?>/fȐ!;l?a}sewÍE+\KM1̧̥4Ӗ5-[݊leYZJsTBQP\@TeE}|!@Ѵ,K=Ys:u3caa#ptt&''gy^O׮]yyYY ..](OEwg<䓨j|I|||FYW^yO>O?ڴiCNN#FW^y̙3'5>cM^'00;RRRrcrNNN0uT/^|2n(|sҫW?\:uٳ'((HytO{1a<==s7ݻyqttdXZZ*7:7S=偝Ɩ5ܹ3cƌa޼yh4FV%''N*!fR껛]ti4MXݿXh˗/ᆪ[nnZYg坑aWxCIIAsDEEz)9#&M2K.… op*##УiB!H K!!@BHB!D!"BB B!$!"BHB!D!!@BHB!$!"BB B!$!@Bv;+WH yH=@s/\ΫMMMԙ?FrFBHB!D!!@B B!$!iPLi@T*iܤCB!D!ۦ48ڵL6MMUbccٸq#999敖ӧnٸqmwn޼y>|ӧ3z;+W^- it޸q2e=[󉏏FCQՌ9>j~'*++4h2jJKKg|2ݺuӳɟ w`ǎw,⋼⋷m}<vMV hٳJ+UUUSPPA055GgFFޑbccsǮQyy9YYY?GHdd$555qΜ9CǎOg޽^x:NcȐ!<u:2w\?>111|'̜9[[[&MDFFXXX_sNz=ݻwg֬Y履~gϲ{nݕi <[q/x'h۶-fffҹsgfϞM-nt|$&&ׯӦM夤$jjjxHOOm۶9ssQ^^>>>8;;?*ƍ5jZDRSSe˖N^ѣ\|SSS,,,ёϓDEE666ҢE z=?͛7Ąk׮a0(,,dXYYqaRSSGmT*,--x"(uvڑ)..caaWfddCUU:tˋpwwm۶xxxЧO***ؼy3 4r t8q%%%t:<==955 EEEࠤRRR8p -Zɓ$&&ҷo_=Z%$$V[n8;;+Itt4mڴ!//֭[M\\мyswޤ?];ӦM`Ν vO033c9rX~}Ϝ?zٳg/̌޽{˥K#--ݻcmm͗_~Ɇ hӦ ?޻cח:??OUUC… ́8vmܜ%K`jjJ~~> &[pp0qqq>|XWoߞٳgOpzuULLL033cܸq1⮻ j4r:N5ƍSppqqQ.l777RRRj@s%LMM FVSYYTCqE:u%C APRRBbbquus:'''Zlɓ'IMMU($$[[[Ξ=KUUݻwM68;;̵kהewN-PT:unT*\\\HIIP K.Kܹ3ըT*IT]3RRR3ZԔ4<5Toלq uQ)׀; ZbСº{j"::x@YEJ%kkk^}U!2^hZ࠹?biiZ&00^OQQÇ󙜜%%AAAZ#GjQTJZ"33n,[Lt҅s]MASUU\\zU $񤥥Q^^_z44cMMȆיWRR^AeZ^^+++^,cjj죵5vvv(RW XXXEiiinlYf4k /MTWWۮ)))dggVVVʱ&$$Pd DGGRpwwgϞw] J{1ƺQ]]}ݺa l׮])--%))$,,,ݻ7666@})w}N`@jw㍍)@EE[l͍:4y:޽{N[[[ෟ-//g…Jb0hٲM-ǣV5]|Y mޞΝ;wd|WJOn@FFJ$%%ѳgOjjj8s :uӓ02ZNJ0FRZZJMM jNʕ+\zJKK4 quu%!!g6Q֭[5^^^>@R\\Lff&Z5)++]vJO ]vuMMM)//‚]ɓ'p-[- 굦pa>\L=<C,,,6l?]u^0`jラ)۷'??lJKKiѢ.]R꽼… xzzҥKLLLHIIX[[ӵkW|||\|k׮akk2[nM޽9}4X[[uX z=h4S.,,$??i lj'8{,5a;;;Q533c?~/b0pvvV<۷/'Oȑ#t:prrW>>>uz}*ӧOJN]UUu7_ozuҫW/;٬Y3w~OUFFNU+WbO3vXڷo[3b:tG}t˹I6PTTݻcذaJzOnn.#Gn3w{ID=baJKK4hɓ'СpK8Hze<<<$x!s̒%KQTT1w96$^&5>3}tꫯhժ-Ν;[YYʘ1cS zsyj5;wfĉt33ߠUС8::c.ϢE67n͚5cݺuMߊt)++Cݖu.XC5:?,, OOOi]%8^Eȷ 4, Jrr2MoLvpqqx,Yw{,Wܹs888C1f̘:=?͙2e wIIIY3g(Amƌٱ~z FELL ;vd޼y:V^ [o_ڵkal۶bvʳ>;cǎFӧٴiScx"aaa:uf͚1fzsii)}DԩS133`˖-lܸ+WЮ];f̘Faڴi:tڵdeeO?))){դUDD;v$33:o˖-Z_رPƎ>w7eGeŊЫW/^z%t:| |W^#G?#44QF1cƌQݕ'%%}݇qqq˄2i$͛Gll,L4vaeeÇgW^o6l`TTTŬYhѢ-] G2iӋS<ܹ%=[zٽ{7AAA9lN8?q˗/{̟?^{K.2+W___bccCqq1z 'jFg#۳gTgΜΝ;y'-)(--ˋ{֙ٳ9s 駟m6e~|}}&++ ̙ɓ'>|8ݻ+VƦMʪ׻ VsvZ֭[G`` ӧO'##9sP^^^пz|Y\\ٳ),,d̙xyyjժF(-СCL8#FuV>s~WVZ'f͢W_}+++/_Zˋx.\ 3gԔs璟OMM :L0?ޤ^a0`uh>5k. FPPg֭^Wjll2Fv3|}}#&&F;q~~~X[[+Ғ'RVVŋz*ׯ?'$$Ŝ 0 wadCerJ+y,8֜)㩬6ڌ￵\hLL 4@Imx{{ӲeKbbbsݳG}aa!X[[裏e˖ѵkW-[JRj2~xN8ARRO?4m۶eС<[8^O2vXRRRcm۶Q^^δi3f EEE<#رC+WT|X[[駟߳k.&L͛uUUU1tP;Vgz 0773Q酹СCz=6mG̜9ggg^y"##9r$NNNj={(,,wޡM6 4#GE@@@Y\\3fPz{DEE1}tñg޼y… IMMwaggǼyh4tܙI&;J ++6Zw܉)mۖ-[z=̜9S6{9))IY瞣gϞzvٳgmo߾K޽ooMݕm6rsst׮]_~2 888o~ Dxx8AAALe3:8}49ɔԻ <se***v cE IDATsi ]pchc<QXXaaaR[iiixxx(k׮|[rr2W\aСm=z4;vI󭦦湺V9{,׮]̌<<>>|-ZPWͥy8;;+,޷ʊS****Xz5L8]ooV@@+Wd͚5XXX(7*eLcEFFRUUU)'cɉVZt:uRGnn.wax9qŤ^)c.in}|>""͛ZN~"33k׮a֭ jZk.Μ9Cyy9GQJ9 6[2sL8x >NG͉㥗^N}Q>S̙C=ȑ#Tz!C}v>39ydFb޽<_:t(?@fΜI8pjxSSS4 NbժUh*;;;gJFv+پ}X|XXXпj5ƍ/dѢEGLL ׯ^ܥ4 hhz)t畁駟'-[i&?hCΝ;ǹs055Օ#G4h4ٳt>}M^h>IIIŋLg;GGG6mѣGQtؑG}Ts}#8c ֯_O\\Æ #<<\ߪU+}>SN.֭ˋӞ={&00z74׍VXۭ0>uBf ޞ^zIg?~<ACqwwgΜ9tRedd˽6f[V~@c0~{&ķ;wͩd7^UTTģ>ɓ;ggz{'{ K,w$$$PTT!am۶R $uJg/`۶mXZZC)ϭ qͫJ K!B!D!!@BHB!$!"BB B!nL*++B!Ν;k{BqoVEE!"BܼG=^ *4B@rIOOիRPVVV-!<}XXXH CGdd$ t[ѓM?nnn/"?&--f͚ICIOOBSZZ*={'RZZ*!!BB B!$!wg-'|N8!5[qi_4Z-[2tP3g?!!!].""7l2HY7ޠk׮5 _~͛7SPP+ǏGsA.\񧦦RPP@hh(;v쨳oL6|}q}7v);{,k׮%''OOOz)llld߾}Y f̘`#44}ͺuHNNёQFѻwo^ʺuHLLDлwoƍVFIc Cyy9 dffѤϛRUU?66|SVV[oEfXt)'Ofݻ;>x ̙375j,[  Zjc=h0>۷/$''[&>>)S6k9ett4SL^#'';v[g^HHH@pyڵk;tЁ~ѣGgŒ/^?6@͛|٢+O|||nsIHHСC)CBB͍ &LoooFɶm8rZPZhAϞ=޽{}#FϏ&}_~j۷/?~<4o޼I|Օ޽{szڵ+&&&>}Ǐ퍹9F1j(ٳ'^^^>|,ڶm#̚5 ///bn Օ011Z`И8qbtVHH<2v%-- :ڵk7|õkj5M˗/3p:ӦN>z(iFIɽ曌?33z۬@fbbB=ۛ8 KȨS 6>T|}}ݻ7r!FVV*N8AϞ=ڃZNCh4uCmƴWCLLLP_[&==^CetOc]aÆ]'ץKf͚UouؑcǎGxx8< ݺuF祰rssIHHܜJnnn_nmm 3.\FjՊ:kܜJ ~IvI0";; }~~>O7>P< ͛ѥK*++ټy3]vUprrҥKT*t::VVE׳g  /@@@QQQr!bggGfݻ7x{{䄳^?o+WĖ-[2d{FߒKll,GXڵCjj2?$$_~X^Jdd$?ܬIIIʕ+ >ڴi۷/O&''c6oգGի2o߾hZ֮]K~~>/_7رch4录BrssIKKUVr!VU5޵߮Tg櫯_ښaÆ)gnn̙3/K.Ke1a6o̦MC;tĉٸq#W\ݝٳgckk !CXf k 7ТE 8p2&QXǍӇI_t:^|E֯_Ϝ9s077_~Rxyj##<##` oGңGZkQO@@=СC;VB{|B B!$!"B XZZRVV&z)++R B  yyyR|\\\ tЁbҤ'r<(**b !n닄Ư*9wu~\XYY쌿@n_R!oo!{.i<B܈" fffI !=얾sW !g1SSSv*'0B!D!!@BHB!$!"BB[zp[h B{1Z}s%J !Ľ@t:U`0PUU%%.<hjhZLMMǸFCnc=ƃ>Hjj_/< =]Q.K.%$$?e{6m"$$Ć{ڇfɒ%ET*T*UX*&Vj>}:|WjgΝhт,((`ܸqe]eddOBB̛7Ν;7UС8::c*gѢEwlŌ7f͚nݺ[MNbb"eeet۲ pСF燅){101.TCۮ];\\\ݕ'%77'6yK.a0=z4꛴g">>__;ѣG3zۺΑ#GҧOHLL駟-[Iw_"""055cǎDFFN ھ};6lwwwLBn]ߠAx9v:Nuggg3m4rrr /ٙ={~zqqqaҤI[clݺ0<<<177穧{1^zkRSSٶmtڕg}wwwƎ;ӧOiӦ:|ݻ^3f̠u\x0N:Ef3f =PXZZG}t1uTزe 7nʕ+k׎3fh=t&""Bڵk͍~RRRxHKK˫I:vHff&uȖ-[Xj׿رc;}رGb rrrի/:O>p+V^͑#GtʨQ1c ͨ{ʿHLL8^~eBCC4i#66p&MDvҫW/pÆ l޼ 5k-ZPsܵTWW{n9r$ٜ8qB /_Nݙ?>7^K/āԩ-[d,^0aVVVsBBB:u*,XpۮC!=*&&B VVVDFF~iٲ%111F׹zjn`XXXF^x7aƌ;vgϒz!k,,,;v,=K,}DGGO?lҥ#nnnСCz=6mG̜9ggg^y"##9r$NNNjܹsXXX0x`ͱ$55"""(,,wޡM6 4#GE@@@={8f̘QF;**ӧ=.\Hjj*w}Cйsg&MDtt4dff2yd}Q8x`sNLMM m۶lٲ3x:͜9S6{9))IY瞣gϞzvٳgmo߾K޽ooM%m6rsst׮]_~2 888o~ Dxx8AAAL}XVVVoVVVt֍GRSSñc DV߰,--oNm6bbbHOOGR)=~MVVٔrBBB\BUTTDLL .}1dZlNTTGaʕlذ0[ޔ1㖵SE555>| 1 /`nnLo( }1Mf۷/k֬!**"## d…JY[@mcqɓ'tTz)QT8991gΜ:핛jݻ{ 89957ӯ_?/_΁())Qۭlmm!33ooF"1֑3f̘:˹`mm}סrG޽j&M2}ݺuDDD0dvء+FMdd$.ǎ#882^'$$0n8 T<<<76X~IÃdT*TLk -[8u2͘^iӦMֱf8q"'Nw%22Bѣۃo^^rg[YYIEE&&&qjjjP\t5k0f|||5Zh w}Y\5k`aa ߨn1IUUUj6'''ZjNҥKtI9X[[߶PH͛Z/5O?ɵkذat֍_~Z]iÃ^y]Frr2tܙ733E1eBCCYx1+V 66UʝV׿źuoں^1`ooϙ3gptt֖ÇEVw1bev:[nlٲSSSپ};,]1c0||MzO?Dzz:=ϙ3gزe Ç'44X^}UFMVV=޸n:jjIDATot` a۾};QQQ< ~z|:WvvvxyyV}v:+c0^QՌ7/EH\\111_]=e$jOeo$%% P'O̾}X`̟?_yLf%Kзo_N:Ejj* P(igy?NEEg޼yqArrr2eʟzG6~x}Qիiݺ5~}={6d͚5,]{{{|MT*ּ۴k׎aݺuӇ#F4s}}v>,--ygӧfӬXZ[o<:i$*++Yv-kQSSÊ+صk'NsΨT*ϟ3֭ŋ={P]]ԩ׳F>JFzv+O]uܹ^:Ã>S?ӧOl2Ο?Ϝ9s{wU?p+ʃ@(Pʴb( h:(!iƀf4c)ibRD91Qb$*AS(HJhio@˓d5޽ps]h47ٳr} '; 4& @a4^!/^d̙0c eyxx8$''K%&UX|@jODQQT*Aqs㏩#>>BtGRXB!K[!@BHB!D!!BB B!$!"BB!D!!@BTq/A?@FiQc49XV..hٚL&]&5.kkklll:2ogee%5'ٹs'fo-˓O>ɬYHhh(oNhh(m<Ț5khjjVw{ * Jե4Jh4v҂ `˖-߿[e]~=~*8-[ё@bbbh4۞={N"##qqqל'NߟUViǸtӇn]U]]Myy9W\i+Vvק2h ډN1c2(+++@1gΜ?8w''rylll رcl߾H\\UUUL&¸䬾N\vZ9°acvC9uTF@AA̟?[[[\]]MgƆxG[}>}:=P~e|MۇF!00yѳgOrrr駟8p XYY)u~&NH~~͛ӓ SxW9s ZK|LMM HNN)))<|gDFFf믿&99zF3|2AAA?˗hhh`۶mL&L&S2͚5$ƎEœ9sxؼy3`Ξ=ҥK_[aCCrYfh";.]ŋill$..VKJJJiUV~2e ;wdӦMJ.%%Ah"~W㱷')) ZVeJlʕxxx =.\h4 /P]]ٳoR/wɄP\\ܪ>S ƭn/^lk.&OL`` {aΝ `0pJJJ6lNNNz>|0w}7J#**+Wzj~233ٴi̛7 VXdaPH4662a|}}Gqw(C^`0ϴ4n`rFڵk1RZZɓ'kw}}}==>uV֬YwAqq1/:+OLLd۔F#o@w...xzzwމ``{Jݝ%K:u*nnnbmmm[[[&NH^H~~>vmL0CQPP1cZɓ˴iӔvAA , ;;ggg-[F=`ʕTVV@޽j|G899l2!::b!&&3gP[[˾}='>slllo'''={0qV)/^f;lSO1|p vɓ=z4=z#GRRRB޽:thv]wj5r9z*AAA6 駟[n_dϞ=L0le #ٰa}ڡ򗤯\\\CV®]W^Œ%K>|8L6Áߏ 02%V'N>}XԩS lը Bii)cƌaҤI]&|||ewu̜ &M̞=@R)kjkk-c655T֙3gGJ9-OuQ[[-C Q>^naa!cƌΎ!Cp뭷o@Qͩ@yh}x_hjuVo#멮FR)=s9Mmm-uuu\|{jQiBȟŋz-rQQ?lڴ:Ć "55Uwe <ݲ؊h_TַO?M^mlܸ\Z-]`.sr4=z4trJ֭SjۻXh4T*^GT*nnn,]rgggf{wfݭDMM nnnzܑ ػw/?rQ޺rttDSSSСC۝Db>GZN~ f魶ۡ/hnn&::GGGeyFF|gJ",, N+Bii)]>yo%""ɤooo7_Z>$MEE*q)w-Sٲe [neupuuEpQe92=֑t܈"**W^yNGccRgW\{7ٹ=rgoD=h4V"==ӧk4S+;w}=Ǝޞy)˚HKKC:*3f 6l ==[[[e@z^4NڵkЖ)'s͍hbȐ!q9nX;@nho߾DFFZvAMM W^%++fꫯPխf3u?z,YիW`ذa`4;]߳gOXjs%22իWLII  ƍu3fhkbo7|iTWW'`4qvvĉ<@vv6III;wZG}Ĕ)S???rrrˋ}b0 @+VP]]MBB2Mz֬Yѣ9z((3J'w|74551vX-['svkQQWWg<#̜9"0`ׯ//fܸq3k׮ERK/yw`ԨQL2}%$$0~xxױc…5EqqQլ[No͛innח˗c4INNf׮]DEEJ"!!www222 477+ϳvgpuVںwToaucN7ҳgOyeGaΜ9?~^{ӧOtR4 k:{\o{ru_2>kkkd`0PX|@>Wŋ9s&111̘1CY;RIIa&aɪT*Aqs㏩#>>BtGRXB!K[!@BHB!D!!BB B!$!"BB!D!!@BHBVSS#D!@BHB!D!!BB B!$!"BB!D!!@BHBE\IENDB`assets/img/metabox/blogpage-info.png000064400000104155150211770060013505 0ustar00PNG  IHDR; bKGD pHYs+tIME# IDATxwx9{KBHH^E[UVmZ--(jTbF#vwNOdHܟ{|ƹ_IaaaBRR8::JK!(ptB< ! B!$@BH!B!$@BH!B!"BD!B!"BD!B !_~/-/r۷ԭwtuUѸaF?RMo|RbӋoAGGn„⵹!,,M>[m^ gddxӿ'}.#@!^Yn\@|'Ʊ{ϾUqn\ѣ[se!? :::T*LMMyݷCIIŮm.zO zxo¨s78_ ]y֡y,Z=T** kfN}ĩ3chٶ4hڒQc'|^lJ]YNz3Tv_Zwœo'55UFOLl?hzz>[}Qâ/^?.@TV'OeZ*U@DD$ Z <>B9f<=]YRf۫VqRWp`Nۓloj ٴn5W/㋩S7!xx`f_ɿؾe#FGGȨ(N:E+p]:w̷'O lՋg9oFF\qCG/x.Y٬߼FC8 J+UZˊVYh'OjOFBOW=-:~FKؾ^եu%>7oi7aUԭSvmZk/]NǮ=MwPgp; D{{LiڸQ}=NSӟЅ ܑ/x.}йѶM+~.= w?7U||OgT*Ӟ32QT\]td!(JFcDZb_F!&&F#&|)-7+~!3 󽖝_F J^dUrsBb"?"2 === %*:g:UAVO̚9۵`owHvvCg9##C4 ;@Lظٷewq7|u_~)s9weZ~ڇ O?&22иQ ^\ ʮ=VܫVp)%:/7OsjZ%+;[!nܺ}_~ cdd'6i6V1k63OCG`ނEܸq]&хDOOiS&6Bd#nj/=xлw(cCy/n7n^q n#55}kCEqttf\ /fx]q9zW]~h<ҪEsڶnCnT^cog'!ĿK&thז-R۫ȲǏaqsuEGG)mZg`og~z8+#c^ڷk|4r^@-vWw.>V޹J8bbc022A龎4kXF?#%%3%.P!ijB!"BD!B !BD!B ! B!$@B ! B!賍m;,9%蘘H ]vmf8py vϵ&}͊oI-Z Ǟ/KIE|^wUy?(5mlB=uϝHdToB*{~jVFzu^ gݦ-Ld \oRm[xa_WPT) %Šk|[[6;@tL 8~49TuL^144,-Z ^5iҨyyyܽs100R|۸y6;v#>! .קff }r&&7i>DDFameEJbR2_}=-7ԙspN Úuj?{5vObR2Neݣ[Wg]`?Φw|odT4>y9ڷӣIf.ڴĩ3(Pмi#Z4kR`_yyyϢh^z *:0c'hoս+5ٖO㻓!07ufԭ<U(Ny޽ v7| nܼ͘p?~$6.ʕ[T*ضs/]؈V͛ҨAbDzB=+Qhk7n{~pp(Cn)W<gvZ4ky<}=}2eoq)̗OE&\L93@xy\,TZetuu!,"JŠw:]r.ҬICaffJw|U\^}}}:mͭAd&+coGѸa}LMLtRɸS7zԩZ&5@.)䈮nTT* DΤ}V }._{U7U!- kx]㉋O{U><#bhhH7Wjy 0Zmԯ[渹V&2*Z\{koPͽ zŶeq}[Aw̢sPb7gK5Һe3m\;KVV.^kSZ\zm3/t.^FrZŵ@wӨA=q''76c``@jUݥI~r'.eVHn]\rJ VNbRW^cҧ_vxP\rff$&%uk{ѿo335%*:M[wR\>kjjzz yyy?yVeiN.ffDE?c999$$&ҷW7tttw?%\Y'~LL c`Q}^222'N?uxUu{j[ 1)>S" x07҂ϧLwLakYEW['MJZ˳&G:ATt )?yZ̻'.x:YYܾs<|VDFEs9Y?y4*WBBju&'Nyx)U]Y';'JR,pRQk7nr歇9tmj-N&+;BB]:q 5nq95F:}=}:JBBøtG&B{kq+V@__}Q3 wPnR#===wz֬Ζ;IJ~xc^nyz%$r>x^\yˁԙsGDR˳&;T*9L]/3'ՙꢧKB{zz[5ѮW DVyYJ ſi$$&1%dRzur %6.EK~ =^Y +KKtl=;9:pM6bfjЀҼicV\RGIFQT$$&bccS⺖+D.YɇlyL{솏WǻаTT|0]|wb?LMMԱeri|3o NhO$ֹ6oe(W֑rN'$پkoiڲ>xRdAlɗs؈NP{Q:ެY_9lHe]p199Ԭsٲ}<ntܡ@9;[6vflp@, lБ\"V~iܨ>!B~OQW ''MV6<!}7_}}=4lRěKqttxC=x044xm%?2s39ͧKvxԨh ̚FF ߅%J&#C)-7n͉SgHMK{HLLbeDEEf?Jx7w K<;ϡKܽti!hxԫ[_V&-= .[⅓),!&SXB!B ! B!$@BH! B!$@BH!B!"BH!B!"BD!B!"BD!B ! B!B ! B!$@BH! B!$@BH!B!"BH!B!"BD!B!"BD!B !BD!B ! B!$@B ! B!$@BH!B!$@BH!B!"BD!B!"BD!B !BD!B ! B!$@B ! B!$@BH!B!$@B|*pi !{{{i =JR 񆇇Bg#"BD!B !g7;;[D!܁! x B@65 91I_BB ! B!S53! B!˙Ab]<@_>!B2"3::뇚4S1{܁:n,ٹy.kAmTz޼]v.'ǽ1y?/G$G[£X ǎZBF̮k$edS%uAyk9$7z:1sz] O| Z;S;:Oǂ-+.ŮY+wiz-?,"3`94h8? f:wˎr}Jʚ14RTy,j6^oЦq>-K8͛a !^!qꉣ!5;1 LuGt?v(c |qu'Yp$+7 'ŕ*R2s-ˡ3;@Ox6<`_ I-gŒ޸ۛyǽtOZpv3jn>ˏ=ٍlD3+ۢT([$ɥ.kI,S /+J[f0v~ЄBh"c|i~l7šC,SXBCꉇ?⣭h^ɖkаurƒmQ(VGs2yI-7uU7SZVePW`DJؚЮJF&i[JU$u6/r~Bw]<$s:^݉Uyw:srzɑQ-03҈oxVE 'sC“3h)57dv9$`0\AÅ mq03`K$fd=WY{;TLU(gnDhR|Fq)oĩtr4ړrPl*E?i_#@(iQF$bRS2_.6*uslq1,Q|P]F@X"Il~9uo]R܋Oc(n2EW Es^]I;/&8>{0^ xۙߊ"-+yGn1n[JEc"WN\jm1e_ lDz>_㊫܁_R(ތ\fjk/}аuJm3t9;t6r.ޠz~5 [wmV\rd5j:FvdX IDATTnꔳN9KJ\yGn1ﱇFz^Ly yNmgc܍KAyklBQT6{uGj~C;=5eԖ 8څT5>~n̵|ܓ~? YAgEEEaooRYGCoLfUxxxz}=ͩ>sS~Bib~_ݸ4BLз+ݚdY3!xC::-*O@BH!xud Kh4 -^ BȉIןLa !B!"BD!B!"BD!+  !(}nZD!DB ! B!$@BH! B!$@BH!B_e"♨%BLa !B!"BD!B!"BD!+*Q)BZe8oj(r{}R2%BE͕FB \_7rIB2$"2UkA_zcꡧJ!OzU*ڷmﵲe^n \|O/1&Mˤ ceT!˺y?|_u䳕6Rë{x næBm][ȷJlK z5` /]ηރ}nkHNN?,XDfU =>sTUm;t2ڄ Ou~1Zj!|8r4gϝWǟnp:l0gמdeg(v|n۹Q*iբQkoؼkk+ll9v$?-YV`m[3\ $##u_YF<} 33=n")5SS_ȆM>2oJMM=/Q2rxujkˏ5F GWa}n ԡ=._ay0ڵWtU+R9~oF'5z_z5wzTN$m["-=6ammφ?_fz4Rɵ7022BM^3siӺ%wM\\qB)Έ?`ܤO`(6#=|}{YYYi.s0p0[mg ]w34djy *5kr!RGE0=X0g@nDx2Bhެ)FFlջ'>La !):w/bdh>?lml}y^7n۷wO>8S͕_3եm899^?ѣϞ}~8E|Wݼ߻ϘF{ȈB1aaaGGbJo}= +;! B!BhOھLCBBBH!B!"BD!B7^Ff̘3ocɨT*׾O;WA[=z0{ljԨ>_reu\,_*5--'NpY,X@hh( .2`ڵkWdݻFž}xMKթS'NпuV~:k֬!,, oooMÇgРAlڴ sssFIСC孷bܸq4k YfaiiIWM5i҄'O@ƍ;v,h46mڄ/j///ƌǎcŊRR%Ǝ #0ao6.lJ 7o#GRNbbbx;v,6m"--={2p@;w./_ l_ 7jՊ]/!zHH*Ubtܙ~I,SNZjlڴ}2c 9{,vbѢEYV\ |7/S/]9rdh49ɓ'rJ.]T`fԔ͛7_rJnݺ/Ga޼yZVX?HLL Wfƌ\k׮i͊+Yz5{eɒ%,_˗/sȑرclذkkk֮]K^Xt):::]l?^zp9N< ˗quu⹮ΝҥK buqy/_˹~:۷o.Yf]v1k,RSSK+oΉ'X`IIInc۶m4jԈ ŧ~+6l`,Yye˖jՊ}͛76mZ*v\0{l~W8tPm)SjժiDGGs}6mUI(J7o_=7?͛?z\4w\~G^ƍؽ{7۶mc֬YY###SZZgflٲ5k2g*UP?>.2224iݺuc֭tؑٳgà -[ƌ3Xf ̟?Fի4iRϨ?333fиqc֭[G۶m}vEK *СCiڴ)deeqERSSy022M6XZZr$((]]]Oݽ{7}+++ñc w֭iܸ1vvv={bjjJ:uhѢE?~LLL{ڵN"77ooo֭Zٳ 05kbffV|VZcUVcǨW-*VZqir b 맒+8;;3`m{ҷo_055e̘1ܾ}`T**wƠAꫯ )aYJŏ?H100]v-3tP‚P9y$|TPA{V~q $''wyccc5jDʕw{EKR(ڟuttWP111$%%Ѿ}|cbbҥ FLJo///F]xb/^]ﻸUXvvvړSX'((44 @BBڲNNN899Nnn.Æ ˷-ZyET%h'yxxO&66믿raBBBt'N|acƆRR& D4]QΎBO+..{{R;..2eh(8sLCӦMQ*(J4iž={_~㠨qY1ӢE /_Njj*ǏGO}_F155\pf͚iES|||WOn8XZZE oشik׮ɉaÆXEYIr-fϞ GGc>IHH@<{|lll mHQlmm?(,,, ڵkGzz: .d…̙3[[[\piW`(5}tz͌30551e[[|JLLTZB5k t~ddd,/M?9===Ynګ}@*U^ؘ;D,YK.NQ=IUGQ}^),::<7<<\OsΑݻdⰶ. %>FSSSػw/ڰ*}Uܣ+WYQ?Y[[z.PV2k,rssٱcӧO7_?jג ~૯Fdggӳgϧ:::h_c[[[o,>R\{/֬Y4BBB믉ĉ|DFFzzzګ?C{g6l\{חTΟ?ϱchڴih8~8;6mÃHIIaѢEOfXhűtR.\Pv{* ڽ{75I&l۶ڵkyXR;w$!!H6oެ%/i=044DRqM.\o.944'NƦMHOOpi}^oѢ[l!$$|b 돈H;6ٹs';v,޾}pvv_o888BUԸ,֭[zj6l+%y_fСCdffRz| Ҿl޼Yם;wfӦMܹs~gquu%**qqCRiǽaaa-LQcרQ]]]֭[ǣgŵ+gΜ9,^cddDnݰgϞDGG3j(^:&LΙ3sLVSϺGWg <Gaʔ),[˗ӨQ#*T@tt4ݺu#%%)SB˖-3fK.eĈdggӸqcTBJJJ6m 6lﰰ0UttM6xsk &}/2dիW_x? 8Ps1%U=Z:򻰄Lh4KƏӧQܹ~G%&̙3w2uS>:t(˖-#$$gggfΜ(4}4M!(La !B!"BD!B!"BD!B ! B!B ! B!$@BH! B!$@BH!B!"BH!xT/s 2ү⅏3ȿaJ&ёWP^^W~#Q! B!$@BH!B!$@BH!xTQ(/F#m xD_HBH!yai۶-&M*tʕ+1b7Z9w7n$::4q4T)ٳ7JC Mƙ3g9r$zz)HHH &&m_~ :?;|2T*lmmC_:ch׮KeV3cѣDDD兛[ p9w{}i2qD&N¶קOm0[nqAʗ/}-11ceexgРATX}}}qwwgّ[YhдiSFZ_N^^5\r\|ׯJŊy&o&##<<>+++Tߝ;whٲ%vvv\z@6l G\BPPxyy Fxx8*T 66j֬I@@aaaakkw3???1b+}}}f̘ٳgi۶-]6:w̌ڵks-VZo[ԫWBBBx{{cjjʪUذa*Tu?~s疪NxzzKpp0DDD᡽R{.ԩS,XP{iҤ ;wԆ"66knnnh[[["""x"FFFԪULN}ZÆ w֍E+ZknBOOCCCNʄ QZF.P*T*Q*1uTi_yy9W\{{{a;::>Æ COO Pb``r;wH;''!C`nnN9uW^W^0zh 7o$--MZGΟ?ONNTfI}}=K.ّ۷cGǎd\p7oJu@&aooOvv6888ZŅ~ ͥw444 ɤZ~kPZZ͛7SNG߾}[iе9;wZ7$2dԩcƌ!\.ӓXy:v(UXtB@.8i鉁III BVSYY qD >2Lԩ5E駟JO?ͲePV;wu$$Q[[7=j[QHlxxx}7oDVӾ}{ xmZ[[+SSSnݺ%c`` JJJ$oUccccn"NwkkkzjPΥYdggS\\Lqq1Jz9Ν;S҉Fjj*d20`cC&agg'yZCW7Z7tX`Cuu5餧cllڵ[N;vL |M4vu)@]]8::ҽ{[TARRJ777́^[[[˪UEbcc@gnnr)|k׮IZdggl2 9taaaڵKdڷoOAAR9##t FŋՋ=zp9С\R^d033C__j4 rs nݺEvnYΝ#33UII$Bh TfTUUQXXHNȶ0VVV555tUvdn``@mm-rmΟ?ϕ+Wy(Z8}4OnbSgggMK}>AFUUzbРAry煀V;v:tBٳR1]tk׮|wǙ3gxH@t'G>ak.\]]tJ+W>9> |r5<==o5e˖n:r94azMaa!?SPP dggPYYINN$o``[HII駟[nqy:vHyy9zzzx{{DVVǏ\tiAANs\z\~NS' jNlmml}}=\rE7oRPP@UUJ{Hu(gȐ!ܾ}GbeeEnݤqZxO}}=MlreJJJl 3|~nܭnܼy/^J%؅DGG0w\(m믿nq2].{ebccgԩOׅt[/DFF3fh9z{{yfsc:uDii)׏7|n:BBBزe ƌ;3g>VʊÇKa*}}}quunݺQVVFqq1tؑ\iTRHIIʕ+у~===̌>}Zڵkܾ}sss)ٹsg<<< ++ 333<==133k^ ]Z&??BAt89mllСC9{,1hР6-Չԩ3?rUZ-vvv“syQ*[[.|ddddC^]}}=vvvM7^oFK2p@:ׯ% 47nܸwcxV[nҼEmm-&L{|gJuw\FR:#GpuƎ+u)--eĉ}h47{y'<ݻwS]]ȑ#AYYY?ݻS]]i߾}C7Iz5xB@~;.^Hjj*FjqAHYYOww6U[[˕+WǮF zR֣㊸@ "_~DD,(@ .!,@ @ YAA j&JGS[[K]]0@ /.HH@ oDK B@@ D B@@ D ! @ "! @ "! @ @ @ EmQdw(q#'Q@}:?<999{י>}cU~ۇ/ii-{Ofڵ]dd{wi(u||ϟOVVvSNm* 8tLϯbǏ˗ݛYfѻwo ߁RPP@pp0ݻw++?L5j^QUUԩS&44OZZ555(ʇʕ+9uTCBBѣ][DoVs+}p!++ F׮]T֮]nnn\<֬Y>dغu+lܸwSirssjLdff駟GnP(qFT*UtaW_}I&5?66ٳg3m4i߾=#,, N:33[r%ڷo2eJ?'::###̙È#HOOg\xQ@,,, /dҤI$$$гgO/_.w^n ꫯعs'0"##O>,X'''prrBP}ݮիW … X[[3eƏu>ɓ(J;w.DDD_s vJ`` ^{ SN1j(;wGGG͛+|'R+tMϞ=),,$::I 88_|_eΜ9æM())a(Jή]غu+ݻRgҤIn:'}NOO'--#Fо}{RRRxw' ˗Dxx8tSSSN>% ,`OwfաRXp!;vlS<:~qr8EbAt~%9t?a\nCCGۛ'R\\ٳggϞeƍ׏+VRVVvϴ+**c6o̞={077͍$PUUZfʕdggӣGr9qOġC .Buu5*G6_RR¢Ex"C m۶)hqss?"Xd ϟgܸqqQ6m$}QTT̻:3gl2vIhh(^^^̟?,YBmmmkV^^ΰaÚݮgUU- T*QV^ͩS5k&Lر~`z… eҥqFr9* 6ʪU'((-[FYY{|f̘3?}ycǎe7憃CemÌ;ooo?΁ZjRR^v{ܰ !!A={}bff& f͢5kp-رc̝;,V\VE^z ӮQR}? *͍?; Z:޳m&$$PQQȑ#quuԔ }Y\\\!!!Zj[nF:}EE111 Rg}_ӇO?L&մK/ٳgIOOg޼yOPPvvv,^&N-!!!7;]ϸ8***裏ҥ #G$11X 3KII!00PrrreciiޞUV'ڵo /_Bw PTTɓ'[z)"""8~xEAAAҶEXt7xV9|0Ǐgȑٳ%d\rM^ g{TPII;G{#}*~Zato*jntt4VVV#>|8&((###ٽ{7/fxzz2iҤN<8x :T8t\rVKϞ=_.^(-G۷4B[]voȑ#DGGs9BBBO?mVBk׮]R?_vn u;͛F...ģ5]F]] O>\tIfii٢xF]O]ꫯ6|ZBBBpvvO>ٳsƍ3Y޺sիស{qqq 2zꅃC绕Y !}}} 555755ݝ3gΠhHNN \~O`|oHs</^$""qORRK.eg>\\\ptt$44Zد !!Ç3v&W^iw+nQbaaJ"55gyFeCTT\|W3l0r9SN'Wˋ kS<s9Z-r,{._,M6ˋo^yꈈ`߾}ٱb ihK\tK.a``'NkP(#??J%7ylذt틓W^m1燕̙3rzɴiӤ;@HIIaرK;uĆ ضmϟGT2zh̙177gtK_j<\^z%ܹáC8xt-~ĉz=?C>sT*a„ -b nJTTAXp!_5'O[n_^Z@HH;wdѸʦMnr+ ERKlll2ЀW_W+U涄RSSuw[[ЭںgW^^NLL >7|SB <(|w}}}lll3f ^^^8 |M֬YC_LLLDߋDO?@Vs9v܉B`РA $ j郉 Z{{{:tx333鳏YYY͛7޽;3gΤSNܺuPP(xxx0uT;2zhMvrZ JիWƆz)/ޞ]6}qq1deeaeeŤI𠴴˗3g<<?OV HEEׯ_'!!ZΝ;Gaa!{8t$ uaeeņ PqM֬Y_~G<ȑ#ٴik֬x舍eĈ|tؑ]vI 4 +W_Ҿ۷oGѽ{w>C&O_|A^^:t`„ ٳZMdd$7NH@ 1:tEzآ'\Ν;ǩS۷/Zh&LJښ3grmN> @QQO=VVV899pBT*U>rHС#F 77FCqq1SO1zhwOFT2i$,,,0`*J*ѣgϞ=:t3f``` j@ ́888PRRBQQzzz\ޢh̚5Knff/=7oƍtMگc_XZZJ'@}}=EEE( 7:\ =UWP0sL֯_π)@ H^^sY LDO7,}]kٓdRRR_L&Cv71>,\ɶe~zǼ@ UBX;w### xfffM~z%/_n\zj5qqq >z!C+uN:V),,i4鳭-d2J%J}}}H˜4i/_B[@ X[[ၑ...bggi;7ꫯBAtt4_5'266F.ߖhccO?Mhh(\|J>;wk׮ }044dL4֊)4F__LMM%O@71YYYڵN:6lСCͶwؑ_drNPjLAA;wT/_N޽[=688ݻ5 OOOV^򨪪bԩX[[ڦzz瓖FMM J򡤹rJN:z!z;# :ah5ZmeNNYYY0s_t]v^naaX^Rf͚ujH\\#kL<9qD @ll,iii̛7ccclllE<~򨉎={/Dؽ{78991g[Moȑ-6޲2lBrr2JOOOΝ]kPRR/_~%vvvFqq1!-,,>|8 $$gggɓ(J;w.DDD_s vJ`` BS5j;wRTT#l>PTgϞD@"""_b{)̙3lڴoR;ڵ[޽{Q*\~&MD``=_~t1b۷ %%wyX|9III@׮]155XZZ`( wCRpB:vئv(#GfĉsYiٳgٸq#cŊ=P>j~'NЫW/lllb͚5oeeŌ3055W_ܜ'On::t(ׯ_wm27Q^^޽{jh>ySSSڵ==7S9s&˖-`Ν)((`ɒ%6ayy9Æ kØ>}: .$==] #UUUh"*** BRje՜:uYf1a8;G,\Z.])7nD.RذaZ {{{000`ٲehxgƌ8;;?ޗ;vXN|||ؿ?nnn888Zo<|0cǎۛǏsfiz{{VIMM ))I~/=nnnXXX gҷo_$311a֬Y԰fnݺ@XX;vחs璕ʕ+j PIHH#Gꊩ)111@ m=쳸`ccCBBj4n*-Z1yyy 8>FC`` dffR\\ƏW_}1~~~ٳkҭ[7ya޼yR֭cNVVV8::`ooOQ۷/&&&'`kkKHHҽtƌ5 ###LLLAMEE}]taȑ$&&ː!CIJJ L4Iccc?>XZZ|rgժU @vPT|7XXX|r {& x(,,dL6 "N<٪:>>>|fy<=== ))vrO=(Q.ˋHJKK :T:G[oߞǏ3rHfْGyf\Ҧv(򫄯pwwG.3|p>LPPFFFx{{{n/^̀dҤIwHΝIIIB rWWWx"womm,lf ڵkM/ָvuuuM&uot钴ҲE3f OfƌxzzԩSdRꫯ6MQQQttdž,3zzzR9uYYYܸq1c4[w.zwSNEJ,~]g&Igggd<3ȴqQbccR… 6]xK.۱e֬Y̚5?***$п৅Ν;ա#W\A eL2WWfs@y;J˕KKKСvvvvEtt4̝;WVWW֭[iu% 2͛7}v {AхbbboqInSN(Jrssիt=JKK133{hP 䡆:t耿з~Kaa!of444\.o~ٙ/^۷͍޽{hАrV^͜9sg͚5lڴ$IKK\G\._$44-[̿o̚!Z#??h4,--x"VVV3n8ٸq#r&L =4NNNDEEall̺u2e +V>`|o?\xƍ?III,]ɓ'STTĞ={OpqqёP(++kubرc싊"66W^yޭ̗/_~keaaJ"55gyFeCTT@N4tuE77l0r9SN'Wˋ {hPҹD5>^dggsf^^^Dٳ9v+W$??+VHT]v-… 0|piEi׮?#uuu 6˗ɓ')))aΜ9쥗^bڴi;v[ҹsg6lp,Zgy۷n:,--dҵkWʠA0aBiX#F7LLLX` b…dddi&r9ׯpvICCh46mÇ5k{F&b  ի f\\ Ry=+))iu׽ܖ0VKtz,Lyy9۶mА˺uWo߾}ֲ}i֮]K]]'dd cd24}{+?>YYYڵN:6lСCͶwؑ_drNPj?]ooofϞRlvlAAt0tԨQxzzzGGUUSNښ6%??4jjjZmaʕ:u!!!CvG@tkh65ʜa̙dv튽ⱼ(Cξ}h45;>77VɓygE~@⨯TY^'Of5͉'2h bccIKKc޼y`cc#.GMtt4ٓ^~&Bݻ)//ɉ9sjz#Gl񖕕eQ*xzz2w\LMMﺿ^{ |}}/#..0' iTmaa9p!!!8;;Koj2frss={6ʾw^n ꫯعs'0"##O>,X'''prrBP}VٶmGEVR s\z.\5SLa-ڽ>'OT*fܹ_͍7ڵ+( ɶNbԨQDGGKwIQQ̛7WWWOCRW*::={RXXHttt 88_|_eٳ3gΰi&JJJ8p o6Jk.nJbb"{ETru4i~IIKKcĈoy `$%%N@@]vԔӧOciiɂ 8p4ܽ{7燐J… رcڡc{HCCGۛ'R\\ٳggϞeƍ׏+VRVV@j~mN8A^!**5ks3fԔW_}sssN<ɺu먮fС\~w}Dyy9{EբjilܸaÆI011iV~S9s&˖-`Ν)((`ɒ%6ayyOctYp!REQQQAPP*V(WԩS̚5 &pv!ꂃѣ .KbjjƍT*6l ygVޞ Xleeeh4{=1c;ÇF:ߏR:Ì;ooo?΁Z&55$i aaaABBTϞ=K߾}133ĄYfQSSÚ5kuaaaر___ΝKVV+WD>v(C%!! F+зo_)₍ Vܺu4ZXh1p@>4 $''IqqqKJJ?~<_}g֮]Kn݈#&&yI[4+g.]?ӽ{wj5RΎŋĉ%$$}}f^t cccF&&&h>.]0rHeȐ!M$%%@&M$uڱ̟?p,--Y|9zzz۳j*rrr]vT*,,,X|9 ޽{@||ǏgȑKsp:d\rMP W _YYY\.g>| f,^ɤI:19Ν; @r9deeqEںY>kך4̐!C3f}ڵkѻwoi[>}$aaii٢x3ӧO3c <==fO^IDATԩd2xWY:cCBB i===:n,nܸEEEҹKpϽܸ8  zfҡCʬ naMMMMMMqww̙3h4B.n-ywLJHG&I:tb9qlޖv(H$!!f رc=vAll,l޼ݻw"3[nxnEd-U[oadd$moIlƶmۈDRt^+sr0bl߾4qE9FXiH9_E/E go"M#V. iD'"PZ8먨TT50}W9gxwޕ_ӝR^^2|>455aժU8{촟}9x , n7hP[[ ARpi].](FQQѤ?t.\ŋo>@vv6ߏ^\.( SP+**022˗/#!33GA<aa4!N't:DQfgg'b|L8L8+>Ϧ5E}v i֕hPN5 D"hnnFJJ =*c׮]ŹsPUUR9g!O‡Fz9XpDzŏ?)7+p8PRR"/߱ct:\.Vçl=yB o+ A/oƧOP]]=d٘U Җ DD!""1@ DD!""1@BDD!""1@BDDmPBDD DD!""b DD!"" DD!"" MYM<IENDB`assets/js/cs.js000064400000131240150211770060007425 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ /*global window:false */ /*global console:false */ /*global document:false */ /*global wp:false */ /*global wpmUi:false */ /*global csSidebars:false */ /*global csSidebarsData:false */ /** * CsSidebar class * * This adds new functionality to each sidebar. * * Note: Before the first CsSidebar object is created the class csSidebars below * must be initialized! */ /* * http://blog.stevenlevithan.com/archives/faster-trim-javascript */ function trim( str ) { str = str.replace(/^\s\s*/, ''); for (var i = str.length - 1; i >= 0; i--) { if (/\S/.test(str.charAt(i))) { str = str.substring(0, i + 1); break; } } return str; } function CsSidebar(id, type) { var editbar; /** * Replace % to fix bug http://wordpress.org/support/topic/in-wp-35-sidebars-are-not-collapsable-anymore?replies=16#post-3990447 * We'll use this.id to select and the original id for html * * @since 1.2 */ this.id = id.split('%').join('\\%'); /** * Either 'custom' or 'theme' * * @since 2.0 */ this.type = type; this.sb = jQuery('#' + this.id); this.widgets = ''; this.name = trim(this.sb.find('.sidebar-name h2').text()); this.description = trim(this.sb.find('.sidebar-description').text()); // Add one of two editbars to each sidebar. if ( type === 'custom' ) { editbar = window.csSidebars.extras.find('.cs-custom-sidebar').clone(); } else { editbar = window.csSidebars.extras.find('.cs-theme-sidebar').clone(); } this.sb.parent().append(editbar); // Customize the links and label-tags. editbar.find('label').each(function(){ var me = jQuery( this ); window.csSidebars.addIdToLabel( me, id ); }); } /** * Returns the sidebar ID. * * @since 2.0 */ CsSidebar.prototype.getID = function() { return this.id.split('\\').join(''); }; /** * ============================================================================= * * * csSidebars class * * This is the collection of all CsSidebar objects. */ window.csSidebars = null; (function($){ window.csSidebars = { /** * List of all CsSidebar objects. * @type array */ sidebars: [], /** * This is the same prefix as defined in class-custom-sidebars.php * @type string */ sidebar_prefix: 'cs-', /** * Form for the edit-sidebar popup. * @type jQuery object */ edit_form: null, /** * Form for the delete-sidebar popup. * @type jQuery object */ delete_form: null, /** * Form for the export/import popup. * @type jQuery object */ export_form: null, /** * Form for the location popup. * @type jQuery object */ location_form: null, /** * Shortcut to '#widgets-right' * @type jQuery object */ right: null, /** * Shortcut to '#cs-widgets-extra' * @type jQuery object */ extras: null, /** * Stores the callback functions associated with the toolbar actions. * @see csSidebars.handleAction() * @see csSidebars.registerAction() * @type Object */ action_handlers: {}, /*====================================*\ ======================================== == == == INITIALIZATION == == == ======================================== \*====================================*/ init: function(){ if ( 'undefined' === typeof( csSidebarsData ) ) { // Inside theme customizer we load the JS but have no widget-data. return; } csSidebars .initControls() .initTopTools() .initSidebars() .initToolbars() .initColumns(); }, /** * ===================================================================== * Initialize DOM and find jQuery objects * * @since 1.0.0 */ initControls: function(){ csSidebars.right = jQuery( '#widgets-right' ); csSidebars.extras = jQuery( '#cs-widgets-extra' ); if ( null === csSidebars.edit_form ) { csSidebars.edit_form = csSidebars.extras.find( '.cs-editor' ).clone(); csSidebars.extras.find( '.cs-editor' ).remove(); } if ( null === csSidebars.delete_form ) { csSidebars.delete_form = csSidebars.extras.find( '.cs-delete' ).clone(); csSidebars.extras.find( '.cs-delete' ).remove(); } if ( null === csSidebars.export_form ) { csSidebars.export_form = csSidebars.extras.find( '.cs-export' ).clone(); csSidebars.extras.find( '.cs-export' ).remove(); } if ( null === csSidebars.location_form ) { csSidebars.location_form = csSidebars.extras.find( '.cs-location' ).clone(); csSidebars.extras.find( '.cs-location' ).remove(); } jQuery('#cs-title-options') .detach() .prependTo( csSidebars.right ); return csSidebars; }, /** * ===================================================================== * Arrange sidebars in left/right columns. * Left column: Custom sidebars. Right column: Theme sidebars. * * @since 2.0 */ initColumns: function() { var col1 = csSidebars.right.find( '.sidebars-column-1' ), col2 = csSidebars.right.find( '.sidebars-column-2' ), title = jQuery( '

' ), sidebars = csSidebars.right.find( '.widgets-holder-wrap' ); if ( ! col2.length ) { col2 = jQuery( '' ); col2.appendTo( csSidebars.right ); } function toggle_sort() { var me = jQuery( this ), col = me.closest( '.sidebars-column-1, .sidebars-column-2' ), dir = col.data( 'sort-dir' ); dir = ('asc' === dir ? 'desc' : 'asc'); csSidebars.sort_sidebars( col, dir ); } title .find( 'h2' ) .append( '' ) .css({'cursor': 'pointer'}); title .clone() .prependTo( col1 ) .click( toggle_sort ) .find('.cs-title-val') .text( csSidebarsData.custom_sidebars ); title .clone() .prependTo( col2 ) .click( toggle_sort ) .find( '.cs-title-val' ) .text( csSidebarsData.theme_sidebars ); col1 = jQuery( '
' ).appendTo( col1 ); col2 = jQuery( '
' ).appendTo( col2 ); sidebars.each(function check_sidebar() { var me = jQuery( this ), sbar = me.find( '.widgets-sortables' ); if ( csSidebars.isCustomSidebar( sbar) ) { me.appendTo( col1 ); } else { me.appendTo( col2 ); } }); }, /** * ===================================================================== * Initialization function, creates a CsSidebar object for each sidebar. * * @since 1.0.0 */ initSidebars: function(){ csSidebars.right.find('.widgets-sortables').each(function() { var key, sb, state = false, me = jQuery( this ), id = me.attr('id'); if ( me.data( 'cs-init' ) === true ) { return; } me.data( 'cs-init', true ); if ( csSidebars.isCustomSidebar( this ) ) { sb = csSidebars.add( id, 'custom' ); } else { sb = csSidebars.add( id, 'theme' ); // Set correct "replaceable" flag for the toolbar. for ( key in csSidebarsData.replaceable ) { if ( ! csSidebarsData.replaceable.hasOwnProperty( key ) ) { continue; } if ( csSidebarsData.replaceable[key] === id ) { state = true; break; } } csSidebars.setReplaceable( sb, state, false ); } }); return csSidebars; }, /** * ===================================================================== * Initialize the top toolbar, above the sidebar list. * * @since 1.0.0 */ initTopTools: function() { var btn_create = jQuery( '.btn-create-sidebar' ), btn_export = jQuery( '.btn-export' ), topbar = jQuery( '.cs-options' ), txt_filter = jQuery( '' ), data = {}; // Button: Add new sidebar. btn_create.click(function() { data.id = ''; data.title = csSidebarsData.title_new; data.button = csSidebarsData.btn_new; data.description = ''; data.name = ''; csSidebars.showEditor( data ); }); // Button: Export sidebars. btn_export.click( csSidebars.showExport ); // Add Sidebar filter. txt_filter .appendTo( topbar ) .attr( 'placeholder', csSidebarsData.filter ) .keyup( csSidebars.filter_sidebars ) .on( 'search', csSidebars.filter_sidebars ); return csSidebars; }, /** * ===================================================================== * Hook up all the functions in the sidebar toolbar. * Toolbar is in the bottom of each sidebar. * * @since 1.0.0 */ initToolbars: function() { function tool_action( ev ) { var me = jQuery( ev.target ).closest( '.cs-tool' ), action = me.data( 'action' ), id = csSidebars.getIdFromEditbar( me ), sb = csSidebars.find( id ); // Return value False means: Execute the default click handler. return ! csSidebars.handleAction( action, sb ); } csSidebars.registerAction( 'edit', csSidebars.showEditor ); csSidebars.registerAction( 'location', csSidebars.showLocations ); csSidebars.registerAction( 'delete', csSidebars.showRemove ); csSidebars.registerAction( 'replaceable', csSidebars.setReplaceable ); csSidebars.right.on('click', '.cs-tool', tool_action); return csSidebars; }, /** * Triggers the callback function for the specified toolbar action. * * @since 2.0 */ handleAction: function( action, sb ) { if ( 'function' === typeof csSidebars.action_handlers[ action ] ) { return !! csSidebars.action_handlers[ action ]( sb ); } return false; }, /** * Registers a new callback function that is triggered when the * associated toolbar icon is clicked. * * @since 2.0 */ registerAction: function( action, callback ) { csSidebars.action_handlers[ action ] = callback; }, /** * Displays a error notification that something has gone wrong. * * @since 2.0 * @param mixed details Ajax response string/object. */ showAjaxError: function( details ) { var msg = {}; msg.message = csSidebarsData.ajax_error; msg.details = details; msg.parent = '#widgets-right'; msg.insert_after = '#cs-title-options'; msg.id = 'editor'; msg.type = 'err'; wpmUi.message( msg ); }, /** * Sorts the sidebars in the specified column * * @since 2.0.9.7 * @param jQuery col Sidebar container/column. * @param string dir "asc|desc" */ sort_sidebars: function( col, dir ) { var sidebars = col.find( '.widgets-holder-wrap' ), icon = col.find( '.cs-title .cs-icon' ); sidebars.sortElements(function( a, b ) { var val_a = jQuery(a).find('.sidebar-name h2').text(), val_b = jQuery(b).find('.sidebar-name h2').text(); if ( dir === 'asc' ) { return val_a > val_b ? 1 : -1; } else { return val_a < val_b ? 1 : -1; } }); // Change the indicator. col.data( 'sort-dir', dir ); if ( 'asc' === dir ) { icon .removeClass( 'dashicons-arrow-down dashicons-sort' ) .addClass( 'dashicons-arrow-up' ); } else { icon .removeClass( 'dashicons-arrow-up dashicons-sort' ) .addClass( 'dashicons-arrow-down' ); } }, /** * Filters the sidebars by title * * @since 2.0.9.7 */ filter_sidebars: function( ev ) { var query = jQuery( 'input.cs-filter' ).val().toLowerCase(), all = csSidebars.right.find( '.widgets-holder-wrap' ); all.each(function(){ var sb = jQuery( this ), title = sb.find( '.sidebar-name h2' ).text(); if ( title.toLowerCase().indexOf( query ) !== -1 ) { sb.show(); } else { sb.hide(); } }); jQuery( window ).trigger( 'cs-resize' ); }, /*============================*\ ================================ == == == EDITOR == == == ================================ \*============================*/ /** * ===================================================================== * Show the editor for a custom sidebar as a popup window. * * @since 2.0 * @param Object data Data describing the popup window. * - id .. ID of the sidebar (text). * - name .. Value of field "name". * - description .. Value of field "description". * - title .. Text for the window title. * - button .. Caption of the save button. * * or a CsSidebar object. */ showEditor: function( data ) { var popup = null, ajax = null; if ( data instanceof CsSidebar ) { data = { id: data.getID(), title: csSidebarsData.title_edit.replace( '[Sidebar]', data.name ), button: csSidebarsData.btn_edit }; } // Hide the "extra" fields function hide_extras() { popup.$().removeClass( 'csb-has-more' ); popup.size( 782, 215 ); } // Show the "extra" fields function show_extras() { popup.$().addClass( 'csb-has-more' ); popup.size( 782, 545 ); } // Toggle the "extra" fields based on the checkbox state. function toggle_extras() { if ( jQuery( this ).prop( 'checked' ) ) { show_extras(); } else { hide_extras(); } } // Populates the input fields in the editor with given data. function set_values( data, okay, xhr ) { popup.loading( false ); // Ignore error responses from Ajax. if ( ! data ) { return false; } if ( ! okay ) { popup.destroy(); csSidebars.showAjaxError( data ); return false; } if ( data.sidebar ) { data = data.sidebar; } // Populate known fields. if ( data.id ) { popup.$().find( '#csb-id' ).val( data.id ); } if ( data.name ) { popup.$().find( '#csb-name' ).val( data.name ); } if ( data.description ) { popup.$().find( '#csb-description' ).val( data.description ); } if ( data.before_title ) { popup.$().find( '#csb-before-title' ).val( data.before_title ); } if ( data.after_title ) { popup.$().find( '#csb-after-title' ).val( data.after_title ); } if ( data.before_widget ) { popup.$().find( '#csb-before-widget' ).val( data.before_widget ); } if ( data.after_widget ) { popup.$().find( '#csb-after-widget' ).val( data.after_widget ); } if ( data.button ) { popup.$().find( '.btn-save' ).text( data.button ); } if ( data.advance ) { popup.$().find( '#csb-more' ).prop( 'checked', true ); show_extras(); } } // Close popup after ajax request function handle_done_save( resp, okay, xhr ) { var msg = {}, sb; popup.loading( false ); popup.destroy(); msg.message = resp.message; // msg.details = resp; msg.parent = '#widgets-right'; msg.insert_after = '#cs-title-options'; msg.id = 'editor'; if ( okay ) { if ( 'update' === resp.action ) { // Update the name/description of the sidebar. sb = csSidebars.find( resp.data.id ); csSidebars.updateSidebar( sb, resp.data ); } else if ( 'insert' === resp.action ) { // Insert a brand new sidebar container. csSidebars.insertSidebar( resp.data ); $('.cs-wrap .custom-sidebars-add-new').detach(); } } else { msg.type = 'err'; } wpmUi.message( msg ); } // Submit the data via ajax. function save_data() { var form = popup.$().find( 'form' ); if ( 0 < popup.$('#csb-more:checked').length ) { jQuery('').attr({ type: 'hidden', value: 'show', name: 'advance' }).appendTo(form); } // Start loading-animation. popup.loading( true ); ajax.reset() .data( form ) .ondone( handle_done_save ) .load_json(); return false; } // Show the EDITOR popup. popup = wpmUi.popup() .modal( true ) .title( data.title ) .onshow( hide_extras ) .content( csSidebars.edit_form ); hide_extras(); set_values( data, true, null ); // Create new ajax object to get sidebar details. ajax = wpmUi.ajax( null, 'cs-ajax' ); if ( data.id ) { popup.loading( true ); ajax.reset() .data({ 'do': 'get', 'sb': data.id, '_wpnonce': csSidebarsData._wpnonce_get }) .ondone( set_values ) .load_json(); } popup.show(); popup.$().find( '#csb-name' ).focus(); /** * handle enter key on new sidebar name */ popup.$().on( 'keypress', '#csb-name', function(e) { if ( 13 === e.keyCode ) { if ( 0 < $(this).val().length ) { $('#csb-description').focus(); } } }); /** * handle enter key on new sidebar description */ popup.$().on( 'keypress', '#csb-description', function(e) { if ( 13 === e.keyCode ) { popup.$('.btn-save').click(); } }); // Add event hooks to the editor. popup.$().on( 'click', '#csb-more', toggle_extras ); popup.$().on( 'click', '.btn-save', save_data ); popup.$().on( 'click', '.btn-cancel', popup.destroy ); return true; }, /** * Update the name/description of an existing sidebar container. * * @since 1.0.0 */ updateSidebar: function( sb, data ) { // Update the title. sb.sb .find( '.sidebar-name h2' ) .text( data.name ); // Update description. sb.sb .find( '.sidebar-description' ) .html( '

' ) .find( '.description' ) .text( data.description ); return csSidebars; }, /** * Insert a brand new sidebar container. * * @since 1.0.0 */ insertSidebar: function( data ) { var box = jQuery( '
' ), inner = jQuery( '
' ), name = jQuery( '' ), desc = jQuery( '' ), col = csSidebars.right.find( '.sidebars-column-1 > .inner:first' ); // Set sidebar specific values. inner.attr( 'id', data.id ); name .find( 'h2' ) .text( data.name ); desc .html( '

' ) .find( '.description' ) .text( data.description ); // Assemble the new sidebar box in correct order. name.appendTo( inner ); desc.appendTo( inner ); inner.appendTo( box ); // Display the new sidebar on screen. box.prependTo( col ); // Remove hooks added by wpWidgets.init() jQuery( '#widgets-right .sidebar-name' ).unbind( 'click' ); jQuery( '#widgets-left .sidebar-name' ).unbind( 'click' ); jQuery( document.body ).unbind('click.widgets-toggle'); jQuery('.widgets-chooser') .off( 'click.widgets-chooser' ) .off( 'keyup.widgets-chooser' ); jQuery( '#available-widgets .widget .widget-title' ).off( 'click.widgets-chooser' ); jQuery( '.widgets-chooser-sidebars' ).empty(); // Re-Init the page using wpWidgets.init() window.wpWidgets.init(); // Add the plugin toolbar to the new sidebar. csSidebars.initSidebars(); return csSidebars; }, /*============================*\ ================================ == == == EXPORT == == == ================================ \*============================*/ /** * Shows a popup window with the export/import form. * * @since 2.0 */ showExport: function() { var popup = null, ajax = null; // Download export file. function do_export( ev ) { var form = jQuery( this ).closest( 'form' ); ajax.reset() .data( form ) .load_http(); popup.destroy(); ev.preventDefault(); return false; } // Ajax handler after import file was uploaded. function handle_done_upload( resp, okay, xhr ) { var msg = {}; popup.loading( false ); if ( okay ) { popup .size( 900, 600 ) .content( resp.html ); } else { msg.message = resp.message; // msg.details = resp; msg.parent = popup.$().find( '.wpmui-wnd-content' ); msg.insert_after = false; msg.id = 'export'; //Change msg.class to msg['class']. Reserved words not allowed as unquoted properties in older version of javascript msg['class'] = 'wpmui-wnd-err'; msg.type = 'err'; wpmUi.message( msg ); } } // Upload the import file. function do_upload( ev ) { var form = jQuery( this ).closest( 'form' ); popup.loading( true ); ajax.reset() .data( form ) .ondone( handle_done_upload ) .load_json( 'cs-ajax' ); ev.preventDefault(); return false; } // Import preview: Toggle widgets function toggle_widgets() { var me = jQuery( this ), checked = me.prop( 'checked' ), items = popup.$().find( '.column-widgets, .import-widgets' ); if ( checked ) { items.show(); } else { items.hide(); } } // Import preview: Cancel. function show_overview() { popup.size( 782, 480 ); popup.content( csSidebars.export_form ); } // Import preview: Import the data. function do_import() { var form = popup.$().find( '.frm-import' ); popup.loading( true ); ajax.reset() .data( form ) .load_http( '_self' ); } // Show the EXPORT popup. popup = wpmUi.popup() .modal( true ) .size( 782, 480 ) .title( csSidebarsData.title_export ) .content( csSidebars.export_form ) .show(); ajax = wpmUi.ajax( null, 'cs-ajax' ); // Events for the Import / Export view. popup.$().on( 'submit', '.frm-export', do_export ); popup.$().on( 'submit', '.frm-preview-import', do_upload ); // Events for the Import preview. popup.$().on( 'change', '#import-widgets', toggle_widgets ); popup.$().on( 'click', '.btn-cancel', show_overview ); popup.$().on( 'click', '.btn-import', do_import ); return true; }, /*============================*\ ================================ == == == REMOVE == == == ================================ \*============================*/ /** * ===================================================================== * Ask for confirmation before deleting a sidebar */ showRemove: function( sb ) { var popup = null, ajax = null, id = sb.getID(), name = sb.name; // Insert the sidebar name into the delete message. function insert_name( el ) { el.find('.name').text( name ); } // Closes the delete confirmation. function close_popup() { popup.loading( false ); popup.destroy(); } // Handle response of the delete ajax-call. function handle_done( resp, okay, xhr ) { var msg = {}; popup.loading( false ); popup.destroy(); msg.message = resp.message; // msg.details = resp; msg.parent = '#widgets-right'; msg.insert_after = '#cs-title-options'; msg.id = 'editor'; if ( okay ) { // Remove the Sidebar from the page. csSidebars.right .find('#' + id) .closest('.widgets-holder-wrap') .remove(); // Remove object from internal collection. csSidebars.remove( id ); // show "Create a custom sidebar to get started." if it is // needed. if ( "delete" === resp.action ) { window.csSidebars.showGetStartedBox(); } } else { msg.type = 'err'; } wpmUi.message( msg ); } // Deletes the sidebar and closes the confirmation popup. function delete_sidebar() { popup.loading( true ); ajax.reset() .data({ 'do': 'delete', 'sb': id, '_wpnonce': $('#_wp_nonce_cs_delete_sidebar').val() }) .ondone( handle_done ) .load_json(); } // Show the REMOVE popup. popup = wpmUi.popup() .modal( true ) .size( 560, 160 ) .title( csSidebarsData.title_delete ) .content( csSidebars.delete_form ) .onshow( insert_name ) .show(); // Create new ajax object. ajax = wpmUi.ajax( null, 'cs-ajax' ); popup.$().on( 'click', '.btn-cancel', close_popup ); popup.$().on( 'click', '.btn-delete', delete_sidebar ); return true; }, /*==============================*\ ================================== == == == LOCATION == == == ================================== \*==============================*/ /** * ===================================================================== * Show popup to assign sidebar to default categories. * * @since 2.0 */ showLocations: function( sb ){ var popup = null, ajax = null, form = null, id = sb.getID(); /** * (_) add new rule * * @since 3.2.0 */ function _add_new_rule( data, table ) { var template = wp.template('custom-sidebars-new-rule-row'); $('tbody', table ).append( template( data ) ); $('tfoot', table).hide(); $('tbody .dashicons-trash', table).on( 'click', function() { $(this).closest('tr').detach(); if ( 0 === $('tbody tr', table ).length ) { $('tfoot', table).show(); } }); return false; } // Display the location data after it was loaded by ajax. function handle_done_load( resp, okay, xhr ) { var theme_sb, opt, name, msg = {}; // Only used in error case. popup.loading( false ); if ( ! okay ) { popup.destroy(); csSidebars.showAjaxError( resp ); return; } // Display the sidebar name. popup.$().find( '.sb-name' ).text( resp.sidebar.name ); var sb_id = resp.sidebar.id; /** * hide message */ popup.$().find('.message.no-sidebars').hide(); /** * Count sidebars */ var visible_sidebars = 0; // Only show settings for replaceable sidebars var sidebars = popup.$().find( '.cs-replaceable' ); sidebars.hide(); resp.replaceable = wpmUi.obj( resp.replaceable ); for ( var key0 in resp.replaceable ) { if ( ! resp.replaceable.hasOwnProperty( key0 ) ) { continue; } sidebars.filter( '.' + resp.replaceable[key0] ).show(); visible_sidebars++; } /** * no visible_sidebars - show information about it */ if ( 0 === visible_sidebars ) { popup.$().find( '.wpmui-box, .message, .button-primary' ).hide(); popup.$().find('.message.no-sidebars').show().parent().addClass('notice notice-error').removeClass('hidden'); } // Add a new option to the replacement list. function _add_option( item, lists, key ) { var opt = jQuery( '' ); opt.attr( 'value', key ).text( item.name ); lists.append( opt ); } // Check if the current sidebar is a replacement in the list. function _select_option( replacement, sidebar, key, lists ) { var row = lists .closest( '.cs-replaceable' ) .filter('.' + sidebar), option = row .find( 'option[value="' + key + '"]' ), group = row.find( 'optgroup.used' ), check = row.find( '.detail-toggle' ); if ( replacement === sb_id ) { option.prop( 'selected', true ); if ( true !== check.prop( 'checked' ) ) { check.prop( 'checked', true ); row.addClass( 'open' ); // Upgrade the select list with chosen. wpmUi.upgrade_multiselect( row ); } } else { if ( ! group.length ) { group = jQuery( '' ) .attr( 'label', row.data( 'lbl-used' ) ) .appendTo( row.find( '.details select' ) ); } option.detach().appendTo( group ); } } // ----- Category ---------------------------------------------- // Refresh list for single categories and category archives. var lst_cat = popup.$().find( '.cs-datalist.cs-cat' ); var lst_act = popup.$().find( '.cs-datalist.cs-arc-cat' ); var data_cat = resp.categories; lst_act.empty(); lst_cat.empty(); // Add the options for ( var key1 in data_cat ) { _add_option( data_cat[ key1 ], lst_act, key1 ); _add_option( data_cat[ key1 ], lst_cat, key1 ); } // Select options for ( var key2 in data_cat ) { if ( data_cat[ key2 ].single ) { for ( theme_sb in data_cat[ key2 ].single ) { _select_option( data_cat[ key2 ].single[ theme_sb ], theme_sb, key2, lst_cat ); } } if ( data_cat[ key2 ].archive ) { for ( theme_sb in data_cat[ key2 ].archive ) { _select_option( data_cat[ key2 ].archive[ theme_sb ], theme_sb, key2, lst_act ); } } } // ----- Post Type --------------------------------------------- // Refresh list for single posttypes. var lst_pst = popup.$().find( '.cs-datalist.cs-pt' ); var data_pst = resp.posttypes; lst_pst.empty(); // Add the options for ( var key3 in data_pst ) { opt = jQuery( '' ); name = data_pst[ key3 ].name; opt.attr( 'value', key3 ).text( name ); lst_pst.append( opt ); } // Select options for ( var key4 in data_pst ) { if ( data_pst[ key4 ].single ) { for ( theme_sb in data_pst[ key4 ].single ) { _select_option( data_pst[ key4 ].single[ theme_sb ], theme_sb, key4, lst_pst ); } } } // ----- Archives ---------------------------------------------- // Refresh list for archive types. var lst_arc = popup.$().find( '.cs-datalist.cs-arc' ); var data_arc = resp.archives; lst_arc.empty(); // Add the options for ( var key5 in data_arc ) { opt = jQuery( '' ); name = data_arc[ key5 ].name; opt.attr( 'value', key5 ).text( name ); lst_arc.append( opt ); } // Select options for ( var key6 in data_arc ) { if ( data_arc[ key6 ].archive ) { for ( theme_sb in data_arc[ key6 ].archive ) { _select_option( data_arc[ key6 ].archive[ theme_sb ], theme_sb, key6, lst_arc ); } } } // ----- Authors ---------------------------------------------- // Refresh list for authors. var lst_aut = popup.$().find( '.cs-datalist.cs-arc-aut' ); var data_aut = resp.authors; lst_aut.empty(); // Add the options for ( var key7 in data_aut ) { opt = jQuery( '' ); name = data_aut[ key7 ].name; opt.attr( 'value', key7 ).text( name ); lst_aut.append( opt ); } // Select options for ( var key8 in data_aut ) { if ( data_aut[ key8 ].archive ) { for ( theme_sb in data_aut[ key8 ].archive ) { _select_option( data_aut[ key8 ].archive[ theme_sb ], theme_sb, key8, lst_aut ); } } } // ----- 3rd part plugins ---------------------------------------------- var lst_3rd = popup.$().find( '.cs-3rd-part .cs-datalist' ); lst_3rd.each( function() { var data_3rd = resp[$(this).data('id')]; $(this).empty(); // Add the options for ( var key9 in data_3rd ) { opt = jQuery( '' ); name = data_3rd[ key9 ].name; opt.attr( 'value', key9 ).text( name ); $(this).append( opt ); } // Select options for ( var key10 in data_3rd ) { if ( data_3rd[ key10 ].archive ) { for ( theme_sb in data_3rd[ key10 ].archive ) { _select_option( data_3rd[ key10 ].archive[ theme_sb ], theme_sb, key10, $(this) ); } } } }); /** * ----- Custom Taxomies ---------------------------------------------- * @since 3.1.4 */ var lst_custom_taxonomies = popup.$().find( '.cf-custom-taxonomies .cs-datalist' ); lst_custom_taxonomies.each( function() { var data_custom_taxonomy = resp[$(this).data('id')]; $(this).empty(); // Add the options for ( var key_custom_taxonomy in data_custom_taxonomy ) { opt = jQuery( '' ); name = data_custom_taxonomy[ key_custom_taxonomy ].name; opt.attr( 'value', key_custom_taxonomy ).text( name ); $(this).append( opt ); } // Select options for ( var key_custom_tax in data_custom_taxonomy ) { if ( data_custom_taxonomy[ key_custom_tax ].single ) { for ( theme_sb in data_custom_taxonomy[ key_custom_tax ].single ) { _select_option( data_custom_taxonomy[ key_custom_tax ].single[ theme_sb ], theme_sb, key_custom_tax, $(this) ); } } } }); /** * ----- @media screen width ------------------------------------------ * * @since 3.2.0 */ var table = popup.$().find('.csb-media-screen-width table' ); $.each( resp.screen, function( size, value ) { $.each( value, function( minmax, mode ) { var data = { minmax: minmax, mode: mode, size: size }; _add_new_rule( data, table ); }); }); } // end: handle_done_load() // User clicks on "replace for " checkbox. function toggle_details( ev ) { var inp = jQuery( this ), row = inp.closest( '.cs-replaceable' ), sel = row.find( 'select' ); if ( inp.prop( 'checked' ) ) { row.addClass( 'open' ); // Upgrade the select list with chosen. wpmUi.upgrade_multiselect( row ); // Tell the select list to render the contents again. sel.trigger( 'change.select2' ); } else { row.removeClass( 'open' ); // Remove all selected options. sel.val( [] ); } } // After saving data via ajax is done. function handle_done_save( resp, okay, xhr ) { var msg = {}; popup.loading( false ); popup.destroy(); msg.message = resp.message; // msg.details = resp; msg.parent = '#widgets-right'; msg.insert_after = '#cs-title-options'; msg.id = 'editor'; if ( ! okay ) { msg.type = 'err'; } wpmUi.message( msg ); } // Submit the data and close the popup. function save_data() { popup.loading( true ); ajax.reset() .data( form ) .ondone( handle_done_save ) .load_json(); } /** * add new rule * * @since 3.2.0 */ function add_new_rule() { var table = $('table', $(this).parent()); var data = { minmax: 'max', mode: 'hide', size: 0 }; _add_new_rule( data, table ); return false; } // Show the LOCATION popup. popup = wpmUi.popup() .modal( true ) .size( 782, 560 ) .title( csSidebarsData.title_location ) .content( csSidebars.location_form ) .show(); popup.loading( true ); form = popup.$().find( '.frm-location' ); form.find( '.sb-id' ).val( id ); // Initialize ajax object. ajax = wpmUi.ajax( null, 'cs-ajax' ); ajax.reset() .data({ 'do': 'get-location', 'sb': id }) .ondone( handle_done_load ) .load_json(); // Attach events. popup.$().on( 'click', '.detail-toggle', toggle_details ); popup.$().on( 'click', '.btn-save', save_data ); popup.$().on( 'click', '.btn-cancel', popup.destroy ); popup.$().on( 'click', '.btn-add-rule', add_new_rule ); return true; }, /*======================================*\ ========================================== == == == REPLACEABLE FLAG == == == ========================================== \*======================================*/ /** * ===================================================================== * Change the replaceable flag * * @since 1.0.0 */ setReplaceable: function( sb, state, do_ajax ) { var ajax, theme_sb = csSidebars.right.find( '.sidebars-column-2 .widgets-holder-wrap' ), the_bar = jQuery( sb.sb ).closest( '.widgets-holder-wrap' ), chk = the_bar.find( '.cs-toolbar .chk-replaceable' ), marker = the_bar.find( '.replace-marker' ), btn_replaceable = the_bar.find( '.cs-toolbar .btn-replaceable' ); // After changing a sidebars "replaceable" flag. function handle_done_replaceable( resp, okay, xhr ) { // Adjust the "replaceable" flag to match the data returned by the ajax request. if ( resp instanceof Object && typeof resp.replaceable === 'object' ) { csSidebarsData.replaceable = wpmUi.obj( resp.replaceable ); theme_sb.find( '.widgets-sortables' ).each(function() { var _state = false, _me = jQuery( this ), _id = _me.attr( 'id' ), _sb = csSidebars.find( _id ); for ( var key in csSidebarsData.replaceable ) { if ( ! csSidebarsData.replaceable.hasOwnProperty( key ) ) { continue; } if ( csSidebarsData.replaceable[key] === _id ) { _state = true; break; } } csSidebars.setReplaceable( _sb, _state, false ); }); } // Enable the checkboxes again after the ajax request is handled. theme_sb.find( '.cs-toolbar .chk-replaceable' ).prop( 'disabled', false ); theme_sb.find( '.cs-toolbar .btn-replaceable' ).removeClass( 'wpmui-loading' ); } if ( undefined === state ) { state = chk.prop( 'checked' ); } if ( undefined === do_ajax ) { do_ajax = true; } if ( chk.data( 'active' ) === state ) { return false; } chk.data( 'active', state ); chk.prop( 'checked', state ); if ( state ) { if ( ! marker.length ) { jQuery( '
' ) .appendTo( the_bar ) .attr( 'data-label', csSidebarsData.lbl_replaceable ) .addClass( 'replace-marker' ); } the_bar.addClass( 'replaceable' ); } else { marker.remove(); the_bar.removeClass( 'replaceable' ); } if ( do_ajax ) { // Disable the checkbox until ajax request is done. theme_sb.find( '.cs-toolbar .chk-replaceable' ).prop( 'disabled', true ); theme_sb.find( '.cs-toolbar .btn-replaceable' ).addClass( 'wpmui-loading' ); ajax = wpmUi.ajax( null, 'cs-ajax' ); ajax.reset() .data({ 'do': 'replaceable', 'state': state, 'sb': sb.getID() }) .ondone( handle_done_replaceable ) .load_json(); } /** * This function is called by csSidebars.handleAction. Return value * False means that the default click event should be executed after * this function was called. */ return false; }, /*=============================*\ ================================= == == == HELPERS == == == ================================= \*=============================*/ /** * ===================================================================== * Find the specified CsSidebar object. * * @since 1.0.0 */ find: function(id){ return csSidebars.sidebars[id]; }, /** * ===================================================================== * Create a new CsSidebar object. * * @since 1.0.0 */ add: function(id, type){ csSidebars.sidebars[id] = new CsSidebar(id, type); return csSidebars.sidebars[id]; }, /** * ===================================================================== * Removes a new CsSidebar object. * * @since 2.0 */ remove: function(id){ delete csSidebars.sidebars[id]; }, /** * ===================================================================== * Returns true when the specified ID is recognized as a sidebar * that was created by the custom sidebars plugin. * * @since 2.0 */ isCustomSidebar: function( el ) { var id = jQuery( el ).attr('id'), prefix = id.substr(0, csSidebars.sidebar_prefix.length); return prefix === csSidebars.sidebar_prefix; }, /** * ===================================================================== * Append the specified sidebar ID to the label and input element. * * @since 2.0 */ addIdToLabel: function( $obj, id ){ if ( true !== $obj.data( 'label-done' ) ) { var prefix = $obj.attr('for'); $obj.attr( 'for', prefix + id ); $obj.find( '.has-label' ).attr( 'id', prefix + id ); $obj.data( 'label-done', true ); } }, /** * ===================================================================== * Returns the sidebar ID based on the sidebar DOM object. * * @since 2.0 * @param jQuery $obj Any DOM object inside the Sidebar HTML structure. * @return string The sidebar ID */ getIdFromEditbar: function( $obj ){ var wrapper = $obj.closest( '.widgets-holder-wrap' ), sb = wrapper.find( '.widgets-sortables:first' ), id = sb.attr( 'id' ); return id; }, /** * ===================================================================== * Show "Create a custom sidebar to get started." box. * * @since 3.0.4 */ showGetStartedBox: function() { if ( 0 === $(".sidebars-column-1 .inner .widgets-holder-wrap").length ) { var template = wp.template('custom-sidebars-new'); $(".sidebars-column-1 .inner").before( template() ); $(".custom-sidebars-add-new").on( "click", function() { $( "button.btn-create-sidebar" ).click(); }); } } }; jQuery(function($){ $('#csfooter').hide(); if ( $('#widgets-right').length > 0 ) { csSidebars.init(); } $('.defaultsContainer').hide(); $( '#widgets-right .widgets-sortables' ).on( "sort", function(event, ui) { var topx = $('#widgets-right').top; ui.position.top = - $('#widgets-right').css('top'); }); }); /** * add new sidebar placeholder */ jQuery(document).ready( function($) { window.setTimeout( function() { window.csSidebars.showGetStartedBox(); }, 1000); }); })(jQuery); /** * jQuery.fn.sortElements * -------------- * @param Function comparator: * Exactly the same behaviour as [1,2,3].sort(comparator) * * @param Function getSortable * A function that should return the element that is * to be sorted. The comparator will run on the * current collection, but you may want the actual * resulting sort to occur on a parent or another * associated element. * * E.g. $('td').sortElements(comparator, function(){ * return this.parentNode; * }) * * The 's parent () will be sorted instead * of the itself. * * @see http://james.padolsey.com/javascript/sorting-elements-with-jquery/ */ jQuery.fn.sortElements = (function(){ var sort = [].sort; return function(comparator, getSortable) { getSortable = getSortable || function(){return this;}; var placements = this.map(function(){ var sortElement = getSortable.call(this), parentNode = sortElement.parentNode, // Since the element itself will change position, we have // to have some way of storing its original position in // the DOM. The easiest way is to have a 'flag' node: nextSibling = parentNode.insertBefore( document.createTextNode(''), sortElement.nextSibling ); return function() { if (parentNode === this) { throw new Error( "You can't sort elements if any one is a descendant of another." ); } // Insert before flag: parentNode.insertBefore(this, nextSibling); // Remove flag: parentNode.removeChild(nextSibling); }; }); return sort.call(this, comparator).each(function(i){ placements[i].call(getSortable.call(this)); }); }; })(); /*global console:false */ /*global document:false */ /*global ajaxurl:false */ (function($){ jQuery(document).ready( function($) { $('#screen-options-wrap .cs-allow-author input[type=checkbox]').on( 'change', function() { var data = { 'action': 'custom_sidebars_allow_author', '_wpnonce': $('#custom_sidebars_allow_author').val(), 'value': this.checked }; $.post( ajaxurl, data ); }); }); })(jQuery); /*global console:false */ /*global document:false */ /*global ajaxurl:false */ /** * Handle "Custom sidebars configuration is allowed for:" option on * widgets screen options. */ (function($){ jQuery(document).ready( function($) { $('#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]').on( 'change', function() { var data = { 'action': 'custom_sidebars_metabox_custom_taxonomies', '_wpnonce': $('#custom_sidebars_custom_taxonomies').val(), 'fields': {} }; $('#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]').each( function() { data.fields[$(this).val()] = this.checked; }); $.post( ajaxurl, data ); }); }); })(jQuery); /*global console:false */ /*global document:false */ /*global ajaxurl:false */ /** * Handle "Custom sidebars configuration is allowed for:" option on * widgets screen options. */ (function($){ jQuery(document).ready( function($) { $('#screen-options-wrap .cs-roles input[type=checkbox]').on( 'change', function() { var data = { 'action': 'custom_sidebars_metabox_roles', '_wpnonce': $('#custom_sidebars_metabox_roles').val(), 'fields': {} }; $('#screen-options-wrap .cs-roles input[type=checkbox]').each( function() { data.fields[$(this).val()] = this.checked; }); $.post( ajaxurl, data ); }); }); })(jQuery); assets/js/retirement-admin-notice.js000064400000002131150211770060013537 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ /*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ ;(function ($) { if ( window.WPMUDEV_CS_AdminNotification ) { return; } window.WPMUDEV_CS_AdminNotification = { ajax_action: 'custom_sidebars_retirement_notice_dismiss', init () { document.addEventListener( 'click', function( event ) { if ( ! event.target.matches( '#wpmudev-cs-retirement-notice button.notice-dismiss' ) ) { return; } let _self = WPMUDEV_CS_AdminNotification; event.preventDefault(); _self.mark_dismissed(); }); }, mark_dismissed() { let _self = WPMUDEV_CS_AdminNotification, data = { action : _self.ajax_action, user_id : CS_Notice.user_id, nonce : CS_Notice.nonce } ; $.post( ajaxurl, data, function( response ) { if( response.success ){ document.querySelector( '#wpmudev-cs-retirement-notice' ).style.display = 'none'; } }); } } document.addEventListener( 'DOMContentLoaded', function() { WPMUDEV_CS_AdminNotification.init(); }); })(jQuery); assets/js/cs-cloning.js000064400000022731150211770060011060 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global wp:false */ /*global wpmUi:false */ jQuery(function init_cloning() { var $doc = jQuery( document ), $all = jQuery( '#widgets-right' ), is_cloning = false; /** * Updates all group_id values for the widget-templates to the next free id. */ var update_template_groups = function update_template_groups() { var $groups = jQuery( '#widgets-left input.csb-clone-group' ), next_id = parseInt( $groups.first().val() ); while ( $all.find( 'input.csb-clone-group[value="' + next_id + '"]' ).length ) { next_id += 1; } $groups.val( next_id ); }; /** * Clones the widget: * Add a new widget using default WordPress JS API and then update all the * input values of the new widget to match the original widget. */ var clone_widget = function clone_widget( ev ) { var $widget = jQuery( this ).closest( '.widget' ), $available = jQuery( '#widgets-left' ), $chooser = jQuery( '.widgets-chooser' ), $content = jQuery( '#wpbody-content' ); ev.preventDefault(); is_cloning = true; // 1. If the current widget is new then first save the current widget var state = $widget.find( 'input.csb-clone-state' ).val(); if ( 'new' === state ) { window.wpWidgets.save( $widget, 0, 0, 0 ); } // 2. Close any open chooser window.wpWidgets.clearWidgetSelection(); $chooser.slideUp( 200, function() { $chooser.hide(); $content.append( this ); }); // 3. Find the "widget-in-question". var class_name = $widget.find('input.id_base').val(), $base = $available.find('input.id_base[value="' + class_name + '"]'), $in_question = $base.closest( '.widget' ); $in_question.addClass( 'widget-in-question' ); // 4. Provide data about the origin widget. var group_id = $widget.find( 'input.csb-clone-group' ).val(), $contr = $in_question.find( '.widget-control-actions' ), $group = $in_question.find( 'input.csb-clone-group' ), $state = $in_question.find( 'input.csb-clone-state' ); $group.val( group_id ); $state.val( 'empty' ); // 5. Select the current sidebar in the chooser. var $sidebar = $widget.closest( '.widgets-sortables' ), sb_id = $sidebar.attr( 'id' ); $chooser.find ( '.widgets-chooser-selected' ).removeClass( 'widgets-chooser-selected' ); $chooser.find( 'li' ).each( function() { var $li = jQuery( this ); if ( sb_id === $li.data('sidebarId') ) { $li.addClass( 'widgets-chooser-selected' ).focus(); } }); // 6. Add the new widget to the sidebar. // This will directly trigger the ajax command to save the widget. window.wpWidgets.addWidget( $chooser ); // 7. Remove the custom elements and information again. window.wpWidgets.clearWidgetSelection(); update_template_groups(); is_cloning = false; return false; }; /** * Update all widgets belonging to the same group. */ var prepare_update_group = function prepare_update_group( ev ) { var $widget = jQuery( this ).closest( '.widget' ), group_id = $widget.find( 'input.csb-clone-group' ).val(), $members = $all.find( 'input.csb-clone-group[value="' + group_id + '"]' ).closest( '.widget' ).not( $widget ); $members.each(function() { var $item = jQuery( this ), $state = $item.find( 'input.csb-clone-state' ); $item.addClass('wpmui-loading').attr( 'data-reload', true ); }); }; /** * Moves the "Clone" button next to the save button. */ var init_widget = function init_widget( ev, el ) { var $widget = jQuery( el ).closest( '.widget' ), $btn = $widget.find( '.csb-clone-button' ), $target = $widget.find( '.widget-control-actions .widget-control-save' ), $spinner = $widget.find( '.widget-control-actions .spinner' ), $btn_save = $widget.find( '.widget-control-save' ); if ( $widget.data( '_csb_cloning' ) ) { return; } $spinner.insertBefore( $target ).css({ 'float': 'left' }); $btn.insertBefore( $target ).click( clone_widget ); $btn_save.click( prepare_update_group ); $widget.data( '_csb_cloning', true ); }; /** * Updates the group-counter when a widget is added. */ var update_group_counter = function update_group_counter( ev, el ) { // We do NOT want to change the group-id when we clone a widget... if ( is_cloning ) { return false; } var $widget = jQuery( el ).closest( '.widget' ), $widget_group = $widget.find( 'input.csb-clone-group' ), group_id = parseInt( $widget_group.val() ), check = null; do { check = $all.find( 'input.csb-clone-group[value="' + group_id + '"]' ); if ( ! check.length || ( 1 === check.length && check[0] === $widget_group[0] ) ) { break; } else { group_id += 1; } } while ( true ); $widget_group.val( group_id ); update_template_groups(); }; /** * Viually highlights all widgets of the same group. */ var mark_group = function mark_group( ev ) { var $widget = jQuery( this ).closest( '.widget' ), group_id = $widget.find( 'input.csb-clone-group' ).val(), $members = $all.find( 'input.csb-clone-group[value="' + group_id + '"]' ).closest( '.widget' ); if ( isNaN( group_id ) || group_id < 1 ) { return; } $members.addClass('csb-marker'); $widget.removeClass('csb-marker'); }; /** * Removes the visual highlighting of group widgets. */ var unmark_group = function unmark_group( ev ) { var $marked = jQuery( '.widget.csb-marker' ); $marked.removeClass('csb-marker'); }; /** * Remove widget from group/assign to group again (only works until widget * was saved.) */ var toggle_group = function toggle_group( ev ) { var $widget = jQuery( this ).closest( '.widget' ), $title = $widget.find( '.widget-title h4' ), $icon = $title.find( '.btn-clone-group' ), $group = $widget.find( 'input.csb-clone-group' ); ev.preventDefault(); ev.stopPropagation(); if ( $title.hasClass( 'group-active' ) ) { $title.removeClass( 'group-active' ); $icon.removeClass('dashicons-admin-links').addClass('dashicons-editor-unlink'); $group.data( 'group', $group.val() ); $group.val( 0 ); unmark_group(); } else { $title.addClass( 'group-active' ); $icon.addClass('dashicons-admin-links').removeClass('dashicons-editor-unlink'); $group.val( $group.data( 'group' ) ); mark_group.call( this, [ev] ); } return false; }; /** * Adds icons to all widgets that are inside a group. */ var init_group_icons = function init_group_icons() { var $groups = $all.find( 'input.csb-clone-group' ); $groups.each(function() { var group_id = jQuery( this ).val(), $members = $all.find( 'input.csb-clone-group[value="' + group_id + '"]' ).closest( '.widget' ), $titles = $members.find( '.widget-title h4, .widget-title h3' ), action = 'add'; if ( isNaN( group_id ) || group_id < 1 ) { action = 'remove'; } if ( $members.length < 2 ) { action = 'remove'; } // Always remove the icons from the group. $titles.removeClass( 'csb-group group-active' ) .find( '.btn-clone-group' ).remove(); $members.removeAttr( 'data-csb-icon' ); // If action is "add" then we add the icons again. if ( action === 'add' ) { $titles.addClass( 'csb-group group-active' ) .prepend( ' ' ); $titles.find( '.btn-clone-group' ) .hover( mark_group, unmark_group ) .click( toggle_group ); } }); }; /** * Saves the specified widget if the clone-state is "empty". */ var populate_widget = function populate_widget( $widget ) { var $state = $widget.find( 'input.csb-clone-state' ); if ( $state.val() === 'empty' ) { $widget.addClass( 'wpmui-loading' ); window.wpWidgets.save( $widget, 0, 1, 0 ); } }; /** * Update all widgets belonging to the same group. */ var update_group_widgets = function update_group_widgets( el ) { var $widgets = $all.find( '.widget[data-reload]' ); $widgets.each(function() { var $item = jQuery( this ), $state = $item.find( 'input.csb-clone-state' ); $state.val( 'empty' ); $item.removeAttr( 'data-reload' ); window.wpWidgets.save( $item, 0, 0, 0 ); }); }; /** * Global ajax observer reacts to all ajax responses. We need this to find * out when a new widget is saved for the first time. */ var ajax_observer = function ajax_observer( ev, xhr, opt, resp ) { var data = ( 'string' === typeof opt.data ? opt.data : '' ), find_action = data.match( /^.*&action=([^&]+).*$/ ), find_widget = data.match( /^.*&widget-id=([^&]+).*$/ ), action = (find_action && find_action.length === 2 ? find_action[1] : ''), widget = (find_widget && find_widget.length === 2 ? find_widget[1] : ''); if ( ! widget.length ) { return; } var $base = jQuery( '.widget input.widget-id[value="' + widget + '"]' ), $widget = $base.closest( '.widget' ); switch ( action ) { case 'save-widget': $widget.removeClass( 'wpmui-loading' ); if ( ! resp.length ) { // Populate widget with data from group, if required. populate_widget( $widget ); } else if ( resp.match( /^deleted:/ ) ) { // Widget was deleted and is removed with animation. window.setTimeout( init_group_icons, 400 ); } else { // Existing widget was updated. init_group_icons(); update_group_widgets( $widget ); } break; default: // Unrelated ajax event. } }; $all.find( '.widget' ).each( init_widget ); $doc.on( 'widget-added', init_widget ); $doc.on( 'widget-added', update_group_counter ); $doc.ajaxSuccess( ajax_observer ); init_group_icons(); update_template_groups(); }); assets/js/cs-visibility.js000064400000013770150211770060011621 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global wp:false */ /*global wpmUi:false */ jQuery(function init_visibility() { var $doc = jQuery( document ); /** * Removes the current filter row from the conditions */ var remove_filter = function remove_filter( ev ) { var $me = jQuery( this ), $row = $me.closest( '.csb-option-row' ), $widget = $me.closest( '.widget' ), sel = '.' + jQuery.trim( $row.attr( 'class' ).replace( 'csb-option-row', '') ), $add_item = $widget.find( '[data-for="' + sel + '"]' ), $input = $row.find( 'input, select, textarea' ); ev.preventDefault(); $add_item.show(); $row.fadeOut( 400, function clear_values() { // After row is hidden clear the input values. $input.val('').trigger('change.select2'); $widget.trigger('csb:update'); } ); return false; }; /** * Close the filter menu again. */ var hide_filter_menu = function hide_filter_menu( ev ) { jQuery( '.csb-action .dropdown:visible' ).hide(); }; /** * User clicks on a new filter option in the "Add filter" dropdown. * Show the filter row. */ var add_filter = function add_filter( ev ) { var $me = jQuery( this ), sel = $me.data( 'for' ), $widget = $me.closest( '.widget' ), $always = $widget.find( '.csb-always' ), $filter = $widget.find( sel ); ev.preventDefault(); $filter.show(); $me.hide(); $always.hide(); hide_filter_menu(); $widget.trigger('csb:update'); return false; }; /** * When a filter block is added or removed we need to show/hide some hints. */ var update_display = function update_display() { var $widget = jQuery( this ).closest( '.widget' ), $always = $widget.find( '.csb-always' ), $rows = $widget.find( '.csb-option-row:visible:not(.csb-action,.csb-always)' ); if ( $rows.length === 0 ) { $always.show(); } else { $always.hide(); $rows.find( '.csb-and' ).show(); $rows.first().find( '.csb-and' ).hide(); } wpmUi.upgrade_multiselect( $widget ); }; /** * Let user add a new filter. */ var show_filter_menu = function show_filter_menu( ev ) { var $me = jQuery( this ), $row = $me.closest( '.csb-option-row' ), $menu = $row.find( '.dropdown' ); ev.preventDefault(); $menu.show(); $doc.one( 'click', hide_filter_menu ); return false; }; /** * Shows or hides the visibility-options for the current widget. */ var toggle_section = function toggle_section( ev ) { var $me = jQuery( this ), $widget = $me.closest( '.widget' ), $section = $widget.find( '.csb-visibility-inner' ), $flag = $section.find( '.csb-visible-flag' ); ev.preventDefault(); if ( $flag.val() === '0' ) { $flag.val('1'); $section.show(); $widget.trigger('csb:update'); } else { $flag.val('0'); $section.hide(); } return false; }; /** * Toggles the widget state between "show if" / "hide if" */ var toggle_action = function toggle_action( ev ) { var $me = jQuery( this ).closest( 'label' ), $widget = $me.closest( '.widget' ), sel = '#' + $me.attr( 'for' ), $action = $widget.find( sel ), state = $action.val(), $lbl_show = $widget.find( '.lbl-show-if' ), $lbl_hide = $widget.find( '.lbl-hide-if' ); ev.preventDefault(); if ( 'show' !== state ) { $lbl_show.show(); $lbl_hide.hide(); $action.val( 'show' ); } else { $lbl_show.hide(); $lbl_hide.show(); $action.val( 'hide' ); } return false; }; /** * Used for the posttype filter: When user changes the "All posts" checkbox * the label will toggle between "All posts" and "Only these posts". */ var toggle_label = function toggle_label( ev ) { var $me = jQuery( this ).closest( 'label' ), $row = $me.closest( '.csb-detail-row' ), $inp = $me.find( 'input[type=checkbox]' ), $lbl = $me.find( '.lbl' ), $detail = $row.find( '.detail' ), $detail_inp = $detail.find( 'input,select,textarea' ); if ( $inp.prop( 'checked' ) ) { $lbl.text( $inp.data( 'lbl-single' ) ); $detail.show(); } else { $lbl.text( $inp.data( 'lbl-all' ) ); $detail.hide(); $detail_inp.val('').trigger('change.select2'); } }; /** * When the user changes the posttype-filter show or hide the detail-rows * for each posttype. */ var update_posttypes = function update_posttypes( ev ) { var $me = jQuery( this ), $row = $me.closest( '.csb-option-row' ), $types = $row.find( '.csb-detail-row' ), types = $me.val(), i; $types.addClass( 'csb-hide' ); if ( types ) { for ( i = 0; i < types.length; i += 1 ) { $types.filter( '.csb-pt-' + types[i] ).removeClass( 'csb-hide '); } } $types.each(function check_detail_row() { var $detail = jQuery( this ), $check = $detail.find( 'input[type=checkbox]' ); if ( $detail.hasClass( 'csb-hide' ) ) { $detail.hide(); $check.prop( 'checked', false ); toggle_label.call( $check ); } else { $detail.show(); } }); }; /** * Moves the "Visibility" button next to the save button. */ var init_widget = function init_widget( ev, el ) { var $widget = jQuery( el ).closest( '.widget' ), $btn = $widget.find( '.csb-visibility-button' ), $target = $widget.find( '.widget-control-actions .widget-control-save' ), $spinner = $widget.find( '.widget-control-actions .spinner' ); if ( $widget.data( '_csb_visibility' ) ) { return; } $spinner.insertBefore( $target ).css({ 'float': 'left' }); $btn.insertBefore( $target ).click( toggle_section ); $widget.on( 'click', '.toggle-action b', toggle_action ); $widget.on( 'csb:update', update_display ); $widget.on( 'click', '.clear-filter', remove_filter ); $widget.on( 'click', '.choose-filters', show_filter_menu ); $widget.on( 'click', '.add-filter', add_filter ); $widget.on( 'change', 'input[data-lbl-all][data-lbl-single]', toggle_label ); $widget.on( 'change', 'select.posttype', update_posttypes ); $widget.data( '_csb_visibility', true ); }; jQuery( '#widgets-right .widget' ).each( init_widget ); $doc.on( 'widget-added', init_widget ); }); assets/js/cs-visibility.min.js000064400000005546150211770060012405 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ jQuery(function(){var a=jQuery(document),b=function(a){var b=jQuery(this),c=b.closest(".csb-option-row"),d=b.closest(".widget"),e="."+jQuery.trim(c.attr("class").replace("csb-option-row","")),f=d.find('[data-for="'+e+'"]'),g=c.find("input, select, textarea");return a.preventDefault(),f.show(),c.fadeOut(400,function(){g.val("").trigger("change.select2"),d.trigger("csb:update")}),!1},c=function(a){jQuery(".csb-action .dropdown:visible").hide()},d=function(a){var b=jQuery(this),d=b.data("for"),e=b.closest(".widget"),f=e.find(".csb-always"),g=e.find(d);return a.preventDefault(),g.show(),b.hide(),f.hide(),c(),e.trigger("csb:update"),!1},e=function(){var a=jQuery(this).closest(".widget"),b=a.find(".csb-always"),c=a.find(".csb-option-row:visible:not(.csb-action,.csb-always)");0===c.length?b.show():(b.hide(),c.find(".csb-and").show(),c.first().find(".csb-and").hide()),wpmUi.upgrade_multiselect(a)},f=function(b){var d=jQuery(this),e=d.closest(".csb-option-row"),f=e.find(".dropdown");return b.preventDefault(),f.show(),a.one("click",c),!1},g=function(a){var b=jQuery(this),c=b.closest(".widget"),d=c.find(".csb-visibility-inner"),e=d.find(".csb-visible-flag");return a.preventDefault(),"0"===e.val()?(e.val("1"),d.show(),c.trigger("csb:update")):(e.val("0"),d.hide()),!1},h=function(a){var b=jQuery(this).closest("label"),c=b.closest(".widget"),d="#"+b.attr("for"),e=c.find(d),f=e.val(),g=c.find(".lbl-show-if"),h=c.find(".lbl-hide-if");return a.preventDefault(),"show"!==f?(g.show(),h.hide(),e.val("show")):(g.hide(),h.show(),e.val("hide")),!1},i=function(a){var b=jQuery(this).closest("label"),c=b.closest(".csb-detail-row"),d=b.find("input[type=checkbox]"),e=b.find(".lbl"),f=c.find(".detail"),g=f.find("input,select,textarea");d.prop("checked")?(e.text(d.data("lbl-single")),f.show()):(e.text(d.data("lbl-all")),f.hide(),g.val("").trigger("change.select2"))},j=function(a){var b,c=jQuery(this),d=c.closest(".csb-option-row"),e=d.find(".csb-detail-row"),f=c.val();if(e.addClass("csb-hide"),f)for(b=0;b '),d.find(".btn-clone-group").hover(i,j).click(k))})},m=function(a){"empty"===a.find("input.csb-clone-state").val()&&(a.addClass("wpmui-loading"),window.wpWidgets.save(a,0,1,0))},n=function(a){b.find(".widget[data-reload]").each(function(){var a=jQuery(this);a.find("input.csb-clone-state").val("empty"),a.removeAttr("data-reload"),window.wpWidgets.save(a,0,0,0)})},o=function(a,b,c,d){var e="string"==typeof c.data?c.data:"",f=e.match(/^.*&action=([^&]+).*$/),g=e.match(/^.*&widget-id=([^&]+).*$/),h=f&&2===f.length?f[1]:"",i=g&&2===g.length?g[1]:"";if(i.length){var j=jQuery('.widget input.widget-id[value="'+i+'"]'),k=j.closest(".widget");switch(h){case"save-widget":k.removeClass("wpmui-loading"),d.length?d.match(/^deleted:/)?window.setTimeout(l,400):(l(),n()):m(k)}}};b.find(".widget").each(g),a.on("widget-added",g),a.on("widget-added",h),a.ajaxSuccess(o),l(),d()}); assets/js/cs.min.js000064400000045130150211770060010211 0ustar00/*! Custom Sidebars - v3.2.3 * Copyright (c) 2020; * Licensed GPLv2+ */ function trim(a){a=a.replace(/^\s\s*/,"");for(var b=a.length-1;b>=0;b--)if(/\S/.test(a.charAt(b))){a=a.substring(0,b+1);break}return a}function CsSidebar(a,b){var c;this.id=a.split("%").join("\\%"),this.type=b,this.sb=jQuery("#"+this.id),this.widgets="",this.name=trim(this.sb.find(".sidebar-name h2").text()),this.description=trim(this.sb.find(".sidebar-description").text()),c="custom"===b?window.csSidebars.extras.find(".cs-custom-sidebar").clone():window.csSidebars.extras.find(".cs-theme-sidebar").clone(),this.sb.parent().append(c),c.find("label").each(function(){var b=jQuery(this);window.csSidebars.addIdToLabel(b,a)})}CsSidebar.prototype.getID=function(){return this.id.split("\\").join("")},window.csSidebars=null,function(a){window.csSidebars={sidebars:[],sidebar_prefix:"cs-",edit_form:null,delete_form:null,export_form:null,location_form:null,right:null,extras:null,action_handlers:{},init:function(){"undefined"!=typeof csSidebarsData&&csSidebars.initControls().initTopTools().initSidebars().initToolbars().initColumns()},initControls:function(){return csSidebars.right=jQuery("#widgets-right"),csSidebars.extras=jQuery("#cs-widgets-extra"),null===csSidebars.edit_form&&(csSidebars.edit_form=csSidebars.extras.find(".cs-editor").clone(),csSidebars.extras.find(".cs-editor").remove()),null===csSidebars.delete_form&&(csSidebars.delete_form=csSidebars.extras.find(".cs-delete").clone(),csSidebars.extras.find(".cs-delete").remove()),null===csSidebars.export_form&&(csSidebars.export_form=csSidebars.extras.find(".cs-export").clone(),csSidebars.extras.find(".cs-export").remove()),null===csSidebars.location_form&&(csSidebars.location_form=csSidebars.extras.find(".cs-location").clone(),csSidebars.extras.find(".cs-location").remove()),jQuery("#cs-title-options").detach().prependTo(csSidebars.right),csSidebars},initColumns:function(){function a(){var a=jQuery(this),b=a.closest(".sidebars-column-1, .sidebars-column-2"),c=b.data("sort-dir");c="asc"===c?"desc":"asc",csSidebars.sort_sidebars(b,c)}var b=csSidebars.right.find(".sidebars-column-1"),c=csSidebars.right.find(".sidebars-column-2"),d=jQuery('

'),e=csSidebars.right.find(".widgets-holder-wrap");c.length||(c=jQuery(''),c.appendTo(csSidebars.right)),d.find("h2").append('').css({cursor:"pointer"}),d.clone().prependTo(b).click(a).find(".cs-title-val").text(csSidebarsData.custom_sidebars),d.clone().prependTo(c).click(a).find(".cs-title-val").text(csSidebarsData.theme_sidebars),b=jQuery('
').appendTo(b),c=jQuery('
').appendTo(c),e.each(function(){var a=jQuery(this),d=a.find(".widgets-sortables");csSidebars.isCustomSidebar(d)?a.appendTo(b):a.appendTo(c)})},initSidebars:function(){return csSidebars.right.find(".widgets-sortables").each(function(){var a,b,c=!1,d=jQuery(this),e=d.attr("id");if(!0!==d.data("cs-init"))if(d.data("cs-init",!0),csSidebars.isCustomSidebar(this))b=csSidebars.add(e,"custom");else{b=csSidebars.add(e,"theme");for(a in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(a)&&csSidebarsData.replaceable[a]===e){c=!0;break}csSidebars.setReplaceable(b,c,!1)}}),csSidebars},initTopTools:function(){var a=jQuery(".btn-create-sidebar"),b=jQuery(".btn-export"),c=jQuery(".cs-options"),d=jQuery(''),e={};return a.click(function(){e.id="",e.title=csSidebarsData.title_new,e.button=csSidebarsData.btn_new,e.description="",e.name="",csSidebars.showEditor(e)}),b.click(csSidebars.showExport),d.appendTo(c).attr("placeholder",csSidebarsData.filter).keyup(csSidebars.filter_sidebars).on("search",csSidebars.filter_sidebars),csSidebars},initToolbars:function(){function a(a){var b=jQuery(a.target).closest(".cs-tool"),c=b.data("action"),d=csSidebars.getIdFromEditbar(b),e=csSidebars.find(d);return!csSidebars.handleAction(c,e)}return csSidebars.registerAction("edit",csSidebars.showEditor),csSidebars.registerAction("location",csSidebars.showLocations),csSidebars.registerAction("delete",csSidebars.showRemove),csSidebars.registerAction("replaceable",csSidebars.setReplaceable),csSidebars.right.on("click",".cs-tool",a),csSidebars},handleAction:function(a,b){return"function"==typeof csSidebars.action_handlers[a]&&!!csSidebars.action_handlers[a](b)},registerAction:function(a,b){csSidebars.action_handlers[a]=b},showAjaxError:function(a){var b={};b.message=csSidebarsData.ajax_error,b.details=a,b.parent="#widgets-right",b.insert_after="#cs-title-options",b.id="editor",b.type="err",wpmUi.message(b)},sort_sidebars:function(a,b){var c=a.find(".widgets-holder-wrap"),d=a.find(".cs-title .cs-icon");c.sortElements(function(a,c){var d=jQuery(a).find(".sidebar-name h2").text(),e=jQuery(c).find(".sidebar-name h2").text();return"asc"===b?d>e?1:-1:d").attr({type:"hidden",value:"show",name:"advance"}).appendTo(a),i.loading(!0),j.reset().data(a).ondone(g).load_json(),!1}var i=null,j=null;return b instanceof CsSidebar&&(b={id:b.getID(),title:csSidebarsData.title_edit.replace("[Sidebar]",b.name),button:csSidebarsData.btn_edit}),i=wpmUi.popup().modal(!0).title(b.title).onshow(c).content(csSidebars.edit_form),c(),f(b,!0,null),j=wpmUi.ajax(null,"cs-ajax"),b.id&&(i.loading(!0),j.reset().data({do:"get",sb:b.id,_wpnonce:csSidebarsData._wpnonce_get}).ondone(f).load_json()),i.show(),i.$().find("#csb-name").focus(),i.$().on("keypress","#csb-name",function(b){13===b.keyCode&&0

').find(".description").text(b.description),csSidebars},insertSidebar:function(a){var b=jQuery('
'),c=jQuery('
'),d=jQuery(''),e=jQuery(''),f=csSidebars.right.find(".sidebars-column-1 > .inner:first");return c.attr("id",a.id),d.find("h2").text(a.name),e.html('

').find(".description").text(a.description),d.appendTo(c),e.appendTo(c),c.appendTo(b),b.prependTo(f),jQuery("#widgets-right .sidebar-name").unbind("click"),jQuery("#widgets-left .sidebar-name").unbind("click"),jQuery(document.body).unbind("click.widgets-toggle"),jQuery(".widgets-chooser").off("click.widgets-chooser").off("keyup.widgets-chooser"),jQuery("#available-widgets .widget .widget-title").off("click.widgets-chooser"),jQuery(".widgets-chooser-sidebars").empty(),window.wpWidgets.init(),csSidebars.initSidebars(),csSidebars},showExport:function(){function a(a){var b=jQuery(this).closest("form");return h.reset().data(b).load_http(),g.destroy(),a.preventDefault(),!1}function b(a,b,c){var d={};g.loading(!1),b?g.size(900,600).content(a.html):(d.message=a.message,d.parent=g.$().find(".wpmui-wnd-content"),d.insert_after=!1,d.id="export",d.class="wpmui-wnd-err",d.type="err",wpmUi.message(d))}function c(a){var c=jQuery(this).closest("form");return g.loading(!0),h.reset().data(c).ondone(b).load_json("cs-ajax"),a.preventDefault(),!1}function d(){var a=jQuery(this),b=a.prop("checked"),c=g.$().find(".column-widgets, .import-widgets");b?c.show():c.hide()}function e(){g.size(782,480),g.content(csSidebars.export_form)}function f(){var a=g.$().find(".frm-import");g.loading(!0),h.reset().data(a).load_http("_self")}var g=null,h=null;return g=wpmUi.popup().modal(!0).size(782,480).title(csSidebarsData.title_export).content(csSidebars.export_form).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("submit",".frm-export",a),g.$().on("submit",".frm-preview-import",c),g.$().on("change","#import-widgets",d),g.$().on("click",".btn-cancel",e),g.$().on("click",".btn-import",f),!0},showRemove:function(b){function c(a){a.find(".name").text(j)}function d(){g.loading(!1),g.destroy()}function e(a,b,c){var d={};g.loading(!1),g.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b?(csSidebars.right.find("#"+i).closest(".widgets-holder-wrap").remove(),csSidebars.remove(i),"delete"===a.action&&window.csSidebars.showGetStartedBox()):d.type="err",wpmUi.message(d)}function f(){g.loading(!0),h.reset().data({do:"delete",sb:i,_wpnonce:a("#_wp_nonce_cs_delete_sidebar").val()}).ondone(e).load_json()}var g=null,h=null,i=b.getID(),j=b.name;return g=wpmUi.popup().modal(!0).size(560,160).title(csSidebarsData.title_delete).content(csSidebars.delete_form).onshow(c).show(),h=wpmUi.ajax(null,"cs-ajax"),g.$().on("click",".btn-cancel",d),g.$().on("click",".btn-delete",f),!0},showLocations:function(b){function c(b,c){var d=wp.template("custom-sidebars-new-rule-row");return a("tbody",c).append(d(b)),a("tfoot",c).hide(),a("tbody .dashicons-trash",c).on("click",function(){a(this).closest("tr").detach(),0===a("tbody tr",c).length&&a("tfoot",c).show()}),!1}function d(b,d,e){function f(a,b,c){var d=jQuery("");d.attr("value",c).text(a.name),b.append(d)}function g(a,b,c,d){var e=d.closest(".cs-replaceable").filter("."+b),f=e.find('option[value="'+c+'"]'),g=e.find("optgroup.used"),h=e.find(".detail-toggle");a===l?(f.prop("selected",!0),!0!==h.prop("checked")&&(h.prop("checked",!0),e.addClass("open"),wpmUi.upgrade_multiselect(e))):(g.length||(g=jQuery('').attr("label",e.data("lbl-used")).appendTo(e.find(".details select"))),f.detach().appendTo(g))}var h,j,k;if(i.loading(!1),!d)return i.destroy(),void csSidebars.showAjaxError(b);i.$().find(".sb-name").text(b.sidebar.name);var l=b.sidebar.id;i.$().find(".message.no-sidebars").hide();var m=0,n=i.$().find(".cs-replaceable");n.hide(),b.replaceable=wpmUi.obj(b.replaceable);for(var o in b.replaceable)b.replaceable.hasOwnProperty(o)&&(n.filter("."+b.replaceable[o]).show(),m++);0===m&&(i.$().find(".wpmui-box, .message, .button-primary").hide(),i.$().find(".message.no-sidebars").show().parent().addClass("notice notice-error").removeClass("hidden"));var p=i.$().find(".cs-datalist.cs-cat"),q=i.$().find(".cs-datalist.cs-arc-cat"),r=b.categories;q.empty(),p.empty();for(var s in r)f(r[s],q,s),f(r[s],p,s);for(var t in r){if(r[t].single)for(h in r[t].single)g(r[t].single[h],h,t,p);if(r[t].archive)for(h in r[t].archive)g(r[t].archive[h],h,t,q)}var u=i.$().find(".cs-datalist.cs-pt"),v=b.posttypes;u.empty();for(var w in v)j=jQuery(""),k=v[w].name,j.attr("value",w).text(k),u.append(j);for(var x in v)if(v[x].single)for(h in v[x].single)g(v[x].single[h],h,x,u);var y=i.$().find(".cs-datalist.cs-arc"),z=b.archives;y.empty();for(var A in z)j=jQuery(""),k=z[A].name,j.attr("value",A).text(k),y.append(j);for(var B in z)if(z[B].archive)for(h in z[B].archive)g(z[B].archive[h],h,B,y);var C=i.$().find(".cs-datalist.cs-arc-aut"),D=b.authors;C.empty();for(var E in D)j=jQuery(""),k=D[E].name,j.attr("value",E).text(k),C.append(j);for(var F in D)if(D[F].archive)for(h in D[F].archive)g(D[F].archive[h],h,F,C);i.$().find(".cs-3rd-part .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)j=jQuery(""),k=c[d].name,j.attr("value",d).text(k),a(this).append(j);for(var e in c)if(c[e].archive)for(h in c[e].archive)g(c[e].archive[h],h,e,a(this))}),i.$().find(".cf-custom-taxonomies .cs-datalist").each(function(){var c=b[a(this).data("id")];a(this).empty();for(var d in c)j=jQuery(""),k=c[d].name,j.attr("value",d).text(k),a(this).append(j);for(var e in c)if(c[e].single)for(h in c[e].single)g(c[e].single[h],h,e,a(this))});var G=i.$().find(".csb-media-screen-width table");a.each(b.screen,function(b,d){a.each(d,function(a,d){c({minmax:a,mode:d,size:b},G)})})}function e(a){var b=jQuery(this),c=b.closest(".cs-replaceable"),d=c.find("select");b.prop("checked")?(c.addClass("open"),wpmUi.upgrade_multiselect(c),d.trigger("change.select2")):(c.removeClass("open"),d.val([]))}function f(a,b,c){var d={};i.loading(!1),i.destroy(),d.message=a.message,d.parent="#widgets-right",d.insert_after="#cs-title-options",d.id="editor",b||(d.type="err"),wpmUi.message(d)}function g(){i.loading(!0),j.reset().data(k).ondone(f).load_json()}function h(){return c({minmax:"max",mode:"hide",size:0},a("table",a(this).parent())),!1}var i=null,j=null,k=null,l=b.getID();return i=wpmUi.popup().modal(!0).size(782,560).title(csSidebarsData.title_location).content(csSidebars.location_form).show(),i.loading(!0),k=i.$().find(".frm-location"),k.find(".sb-id").val(l),j=wpmUi.ajax(null,"cs-ajax"),j.reset().data({do:"get-location",sb:l}).ondone(d).load_json(),i.$().on("click",".detail-toggle",e),i.$().on("click",".btn-save",g),i.$().on("click",".btn-cancel",i.destroy),i.$().on("click",".btn-add-rule",h),!0},setReplaceable:function(a,b,c){function d(a,b,c){a instanceof Object&&"object"==typeof a.replaceable&&(csSidebarsData.replaceable=wpmUi.obj(a.replaceable),f.find(".widgets-sortables").each(function(){var a=!1,b=jQuery(this),c=b.attr("id"),d=csSidebars.find(c);for(var e in csSidebarsData.replaceable)if(csSidebarsData.replaceable.hasOwnProperty(e)&&csSidebarsData.replaceable[e]===c){a=!0;break}csSidebars.setReplaceable(d,a,!1)})),f.find(".cs-toolbar .chk-replaceable").prop("disabled",!1),f.find(".cs-toolbar .btn-replaceable").removeClass("wpmui-loading")}var e,f=csSidebars.right.find(".sidebars-column-2 .widgets-holder-wrap"),g=jQuery(a.sb).closest(".widgets-holder-wrap"),h=g.find(".cs-toolbar .chk-replaceable"),i=g.find(".replace-marker");g.find(".cs-toolbar .btn-replaceable");return void 0===b&&(b=h.prop("checked")),void 0===c&&(c=!0),h.data("active")!==b&&(h.data("active",b),h.prop("checked",b),b?(i.length||jQuery("
").appendTo(g).attr("data-label",csSidebarsData.lbl_replaceable).addClass("replace-marker"),g.addClass("replaceable")):(i.remove(),g.removeClass("replaceable")),c&&(f.find(".cs-toolbar .chk-replaceable").prop("disabled",!0),f.find(".cs-toolbar .btn-replaceable").addClass("wpmui-loading"),e=wpmUi.ajax(null,"cs-ajax"),e.reset().data({do:"replaceable",state:b,sb:a.getID()}).ondone(d).load_json()),!1)},find:function(a){return csSidebars.sidebars[a]},add:function(a,b){return csSidebars.sidebars[a]=new CsSidebar(a,b),csSidebars.sidebars[a]},remove:function(a){delete csSidebars.sidebars[a]},isCustomSidebar:function(a){return jQuery(a).attr("id").substr(0,csSidebars.sidebar_prefix.length)===csSidebars.sidebar_prefix},addIdToLabel:function(a,b){if(!0!==a.data("label-done")){var c=a.attr("for");a.attr("for",c+b),a.find(".has-label").attr("id",c+b),a.data("label-done",!0)}},getIdFromEditbar:function(a){return a.closest(".widgets-holder-wrap").find(".widgets-sortables:first").attr("id")},showGetStartedBox:function(){if(0===a(".sidebars-column-1 .inner .widgets-holder-wrap").length){var b=wp.template("custom-sidebars-new");a(".sidebars-column-1 .inner").before(b()),a(".custom-sidebars-add-new").on("click",function(){a("button.btn-create-sidebar").click()})}}},jQuery(function(a){a("#csfooter").hide(),a("#widgets-right").length>0&&csSidebars.init(),a(".defaultsContainer").hide(),a("#widgets-right .widgets-sortables").on("sort",function(b,c){a("#widgets-right").top;c.position.top=-a("#widgets-right").css("top")})}),jQuery(document).ready(function(a){window.setTimeout(function(){window.csSidebars.showGetStartedBox()},1e3)})}(jQuery),jQuery.fn.sortElements=function(){var a=[].sort;return function(b,c){c=c||function(){return this};var d=this.map(function(){var a=c.call(this),b=a.parentNode,d=b.insertBefore(document.createTextNode(""),a.nextSibling);return function(){if(b===this)throw new Error("You can't sort elements if any one is a descendant of another.");b.insertBefore(this,d),b.removeChild(d)}});return a.call(this,b).each(function(a){d[a].call(c.call(this))})}}(),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-allow-author input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_allow_author",_wpnonce:a("#custom_sidebars_allow_author").val(),value:this.checked};a.post(ajaxurl,b)})})}(jQuery),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_custom_taxonomies",_wpnonce:a("#custom_sidebars_custom_taxonomies").val(),fields:{}};a("#screen-options-wrap .cs-custom-taxonomies input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery),function(a){jQuery(document).ready(function(a){a("#screen-options-wrap .cs-roles input[type=checkbox]").on("change",function(){var b={action:"custom_sidebars_metabox_roles",_wpnonce:a("#custom_sidebars_metabox_roles").val(),fields:{}};a("#screen-options-wrap .cs-roles input[type=checkbox]").each(function(){b.fields[a(this).val()]=this.checked}),a.post(ajaxurl,b)})})}(jQuery); customsidebars.php000064400000011651150211770060010307 0ustar00=') == true) { CustomSidebars::wp_kses_wf('

🔥 IMPORTANT 🔥

Custom Sidebars plugin is NOT compatible with the new widgets edit screen (powered by Gutenberg).
Install the official Classic Widgets plugin if you want to continue using it.

'); } }); }, 1000, 0); license.txt000064400000043255150211770060006737 0ustar00 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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. inc/class-custom-sidebars-widgets.php000064400000003110150211770060013673 0ustar00 singleton. * * @since 2.0 */ private function __construct() { if ( is_admin() ) { add_action( 'widgets_admin_page', array( $this, 'widget_sidebar_content' ) ); add_action( 'admin_head-widgets.php', array( $this, 'init_admin_head' ) ); } add_action( 'widgets_admin_page', array( $this, 'add_div_start' ) ); add_action( 'sidebar_admin_page', array( $this, 'add_div_end' ) ); } public function add_div_start() { echo '
'; } public function add_div_end() { echo '
'; } /** * Adds the additional HTML code to the widgets section. */ public function widget_sidebar_content() { if ( false === self::$accessibility_mode ) { include CSB_VIEWS_DIR . 'widgets.php'; } } /** * Initialize the admin-head for the widgets page. * * @since 2.0.9.7 */ public function init_admin_head( $classes ) { add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) ); } /** * Add a class to the body tag. * * @since 2.0.9.7 */ public function admin_body_class( $classes ) { $classes .= ' no-auto-init '; return $classes; } }; inc/class-custom-sidebars-visibility.php000064400000103041150211770060014420 0ustar00 singleton. * * @since 2.0 */ private function __construct() { if ( is_admin() ) { // in_widget_form: Add our button inside each widget. add_action( 'in_widget_form', array( $this, 'admin_widget_button' ), 10, 3 ); // When the widget is saved (via Ajax) we save our options. add_filter( 'widget_update_callback', array( $this, 'admin_widget_update' ), 999, 3 ); $url = 'widgets.php'; if ( isset( $_SERVER['SCRIPT_NAME'] ) ) { $url = explode( '/', $_SERVER['SCRIPT_NAME'] ); $url = array_pop( $url ); } $javascript_file = 'cs-visibility.min.js'; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { $javascript_file = 'cs-visibility.js'; } lib3()->ui->add( CSB_JS_URL . $javascript_file, $url ); lib3()->ui->add( CSB_CSS_URL . 'cs-visibility.css', $url ); // Custom Sidebars Ajax request. add_action( 'cs_ajax_request_get', array( $this, 'handle_ajax' ) ); } else { // Filters the list of widget-areas and their widgets add_filter( 'sidebars_widgets', array( $this, 'sidebars_widgets' ) ); } } /** * Extracts and sanitizes the CSB visibility data from the widget instance. * * @since 2.0 * @param array $instance The widget instance data. * @return array Sanitized CSB visibility data. */ protected function get_widget_data( $instance ) { static $Condition_keys = null; $data = array(); if ( null === $Condition_keys ) { $tax_list = get_taxonomies( array( 'public' => true ), 'objects' ); $type_list = CustomSidebars::get_post_types( 'objects' ); $Condition_keys = array( 'guest' => array(), 'date' => array(), 'roles' => array(), 'pagetypes' => array(), 'posttypes' => array(), 'membership' => array(), 'membership2' => array(), 'prosite' => array(), ); foreach ( $type_list as $type_item ) { $Condition_keys[ 'pt-' . $type_item->name ] = array(); } foreach ( $tax_list as $tax_item ) { $Condition_keys[ 'tax-' . $tax_item->name ] = array(); } } if ( isset( $instance['csb_visibility'] ) ) { $data = $instance['csb_visibility']; } $valid_action = array( 'show', 'hide' ); if ( ! isset( $data['action'] ) || ! in_array( $data['action'], $valid_action ) ) { $data['action'] = reset( $valid_action ); } $conditions = isset( $data['conditions'] )? $data['conditions'] : array(); if ( ! is_array( $conditions ) ) { $conditions = array(); } $data['conditions'] = array(); $data['always'] = true; foreach ( $Condition_keys as $key => $def_value ) { $val = $def_value; if ( isset( $conditions[ $key ] ) && ! empty( $conditions[ $key ] ) ) { $data['always'] = false; $val = $conditions[ $key ]; } $data['conditions'][ $key ] = $val; } return $data; } /** * Action handler for 'in_widget_form' * * @since 2.0 */ public function admin_widget_button( $widget, $return, $instance ) { static $Loaded = false; static $tax_list = array(); static $type_list = array(); static $role_list = array(); static $membership_levels = array(); static $pagetype_list = array(); if ( false === $Loaded ) { $tax_list = get_taxonomies( array( 'public' => true ), 'objects' ); $type_list = CustomSidebars::get_post_types( 'objects' ); $role_list = array_reverse( get_editable_roles() ); $membership_levels = $this->get_membership_levels(); $membership2_items = $this->get_membership2_items(); $pagetype_list = array( 'frontpage' => __( 'Front Page', 'custom-sidebars' ), 'home' => __( 'Post Index', 'custom-sidebars' ), 'single' => __( 'Single Page', 'custom-sidebars' ), //'posts' => __( 'Posts page', 'custom-sidebars' ), "Posts page" is same as "Post Index"... 'archive' => __( 'Archives', 'custom-sidebars' ), 'search' => __( 'Search Results', 'custom-sidebars' ), 'e404' => __( 'Not Found (404)', 'custom-sidebars' ), 'preview' => __( 'Preview', 'custom-sidebars' ), 'day' => __( 'Archive: Day', 'custom-sidebars' ), 'month' => __( 'Archive: Month', 'custom-sidebars' ), 'year' => __( 'Archive: Year', 'custom-sidebars' ), ); // Remove taxonomies without values. if ( ! self::$filtered_tax_list ) { foreach ( $tax_list as $index => $tax_item ) { $tags = get_terms( $tax_item->name ); if ( empty( $tags ) ) { unset( $tax_list[ $index ] ); } } self::$filtered_tax_list = $tax_list; } else { $tax_list = self::$filtered_tax_list; } } $is_visible = ( isset( $_POST['csb_visible'] ) && '1' == $_POST['csb_visible'] ? 1 : 0); $data = $this->get_widget_data( $instance ); $action_show = ('show' == $data['action']); $cond = $data['conditions']; ?>
get_results( sprintf( 'SELECT id, level_title, level_active FROM %s ORDER BY id', MEMBERSHIP_TABLE_LEVELS ), ARRAY_A ); } else { $Result = false; } } return $Result; } /** * Integration with the WPMU Dev Membership2 plugin: * If the plugin is installed and active this function returns a list of * all membership levels. * * If the plugin is not active the return value is boolean false. * * @since 2.0 * @return bool|array */ public function get_membership2_items() { $Result = null; if ( null === $Result ) { $is_active_membership = apply_filters( 'ms_active', false ); if ( $is_active_membership ) { $Result = MS_Plugin::$api->list_memberships( true ); } } return $Result; } /** * When user saves the widget we check for the * * @since 2.0 * @param array $new_instance New settings for this instance as input by the user. * @param array $old_instance Old settings for this instance. * @return array Modified settings. */ public function admin_widget_update( $instance, $new_instance, $old_instance ) { $widget_data = map_deep( $_POST, 'sanitize_text_field' ); $data = $this->get_widget_data( $widget_data ); foreach ( $data['conditions'] as $key => $list ) { if ( ! is_array( $list ) ) { $list = explode( ',', $list ); $data['conditions'][ $key ] = $list; } } $instance['csb_visibility'] = $data; return $instance; } // == Front-end functions /** * Filter the list of widgets for a sidebar so that active sidebars work as expected. * * @since 2.0 * @param array $widget_areas An array of widget areas and their widgets. * @return array The modified $widget_area array. */ public function sidebars_widgets( $widget_areas ) { static $Settings = array(); static $Result = array(); $custom_sidebars_explain = CustomSidebarsExplain::instance(); $expl = $custom_sidebars_explain->do_explain(); if ( ! did_action( 'cs_before_replace_sidebars' ) ) { return $widget_areas; } $key = serialize( $widget_areas ); if ( ! isset( $Result[ $key ] ) ) { $expl && do_action( 'cs_explain', '

Filter widgets

', true ); foreach ( $widget_areas as $widget_area => $widgets ) { if ( empty( $widgets ) ) { continue; } if ( 'wp_inactive_widgets' == $widget_area ) { continue; } $expl && do_action( 'cs_explain', '
Sidebar "' . $widget_area . '"
', true ); foreach ( $widgets as $position => $widget_id ) { // Find the conditions for this widget. if ( preg_match( '/^(.+?)-(\d+)$/', $widget_id, $matches ) ) { $id_base = $matches[1]; $widget_number = intval( $matches[2] ); } else { $id_base = $widget_id; $widget_number = null; } if ( ! isset( $Settings[ $id_base ] ) ) { $Settings[ $id_base ] = get_option( 'widget_' . $id_base ); } $expl && do_action( 'cs_explain', 'Widget "' . $widget_id . '"', true ); // New multi widget (WP_Widget) if ( ! is_null( $widget_number ) ) { if ( isset( $Settings[ $id_base ][ $widget_number ] ) && false === $this->maybe_display_widget( $Settings[ $id_base ][ $widget_number ] ) ) { unset( $widget_areas[ $widget_area ][ $position ] ); } } elseif ( ! empty( $Settings[ $id_base ] ) && false === $this->maybe_display_widget( $Settings[ $id_base ] ) ) { // Old single widget. unset( $widget_areas[ $widget_area ][ $position ] ); } } } $Result[ $key ] = $widget_areas; } return $Result[ $key ]; } public function maybe_display_widget( $instance ) { global $post, $wp_query; static $Type_list = null; static $Tax_list = null; $show_widget = true; $condition_true = true; $action = 'show'; $explain = ''; // This is used to explain why a widget is not displayed. $custom_sidebars_explain = CustomSidebarsExplain::instance(); $expl = $custom_sidebars_explain->do_explain(); if ( empty( $instance['csb_visibility'] ) || empty( $instance['csb_visibility']['conditions'] ) ) { return $show_widget; } $cond = $instance['csb_visibility']['conditions']; $action = 'hide' != $instance['csb_visibility']['action'] ? 'show' : 'hide'; if ( $instance['csb_visibility']['always'] ) { $expl && do_action( 'cs_explain', 'Always ' . $action . '' ); return ( 'hide' == $action ? false : true ); } if ( null === $Type_list ) { $Tax_list = get_taxonomies( array( 'public' => true ), 'objects' ); $Type_list = get_post_types( array( 'public' => true ), 'objects' ); } // Filter for DATE-RANGE. if ( $condition_true && ! empty( $cond['date'] ) ) { // not implemented yet... } // Filter for GUEST STATUS. if ( $condition_true && ! empty( $cond['guest'] ) && is_array( $cond['guest'] ) ) { $expl && $explain .= '
GUEST ['; if ( is_user_logged_in() ) { if ( 'member' != $cond['guest'][0] ) { $expl && $explain .= 'user is logged in'; $condition_true = false; } } else { if ( 'guest' != $cond['guest'][0] ) { $expl && $explain .= 'user not logged in'; $condition_true = false; } } $expl && $explain .= '] '; } // Filter for USER ROLES. if ( $condition_true && ! empty( $cond['roles'] ) && is_array( $cond['roles'] ) ) { $expl && $explain .= '
ROLE ['; if ( ! is_user_logged_in() ) { $expl && $explain .= 'user not logged in'; $condition_true = false; } else { global $current_user; $has_role = false; foreach ( $current_user->roles as $user_role ) { if ( in_array( $user_role, $cond['roles'] ) ) { $expl && $explain .= 'ok:' . $user_role; $has_role = true; break; } } if ( ! $has_role ) { $expl && $explain .= 'invalid role'; $condition_true = false; } } $expl && $explain .= '] '; } // Filter for MEMBERSHIP Level. if ( $condition_true && ! empty( $cond['membership'] ) ) { $expl && $explain .= '
MEMBERSHIP ['; if ( class_exists( 'Membership_Factory' ) ) { $has_level = false; $wpuser = get_userdata( get_current_user_id() ); $is_admin = $wpuser && ( $wpuser->has_cap( 'membershipadmin' ) || $wpuser->has_cap( 'manage_options' ) || is_super_admin() ); if ( $is_admin ) { $expl && $explain .= 'is admin'; $has_level = true; } else { $factory = new Membership_Factory(); $user = $factory->get_member( get_current_user_id() ); $levels = $user->get_level_ids(); if ( ! is_array( $levels ) ) { $levels = array( $levels ); } foreach ( $cond['membership'] as $need_level_id ) { if ( empty( $need_level_id ) ) { continue; } foreach ( $levels as $the_level ) { if ( $the_level->level_id == $need_level_id ) { $expl && $explain .= 'ok'; $has_level = true; break; } } if ( $has_level ) { break; } } } if ( ! $has_level ) { $expl && $explain .= 'invalid user level'; $condition_true = false; } } $expl && $explain .= '] '; } // Filter for MEMBERSHIP2 Level. if ( $condition_true && ! empty( $cond['membership2'] ) ) { $expl && $explain .= '
MEMBERSHIP2 ['; if ( apply_filters( 'ms_active', false ) ) { $is_member = false; $member = MS_Plugin::$api->get_current_member(); if ( $member->is_admin_user() ) { $expl && $explain .= 'is admin'; $is_member = true; } else { foreach ( $cond['membership2'] as $membership_id ) { if ( $member->has_membership( $membership_id ) ) { $is_member = true; break; } } } if ( ! $is_member ) { $expl && $explain .= 'is no member'; $condition_true = false; } } $expl && $explain .= '] '; } // Filter for PRO-SITE Level. if ( $condition_true && ! empty( $cond['prosite'] ) ) { $expl && $explain .= '
PROSITE ['; // not implemented yet... $expl && $explain .= '] '; } // Filter for SPECIAL PAGES. if ( $condition_true && ! empty( $cond['pagetypes'] ) && is_array( $cond['pagetypes'] ) ) { $expl && $explain .= '
PAGETYPE ['; $is_type = false; foreach ( $cond['pagetypes'] as $type ) { if ( $is_type ) { break; } switch ( $type ) { case 'e404': $is_type = $is_type || is_404(); break; case 'single': $is_type = $is_type || is_singular(); break; case 'search': $is_type = $is_type || is_search(); break; case 'archive': $is_type = $is_type || is_archive(); break; case 'preview': $is_type = $is_type || is_preview(); break; case 'day': $is_type = $is_type || is_day(); break; case 'month': $is_type = $is_type || is_month(); break; case 'year': $is_type = $is_type || is_year(); break; case 'frontpage': if ( current_theme_supports( 'infinite-scroll' ) ) { $is_type = $is_type || is_front_page(); } else { $is_type = $is_type || ( is_front_page() && ! is_paged() ); } break; case 'posts': case 'home': $is_type = $is_type || is_home(); break; } $expl && $explain .= $type . ':' . ($is_type ? 'ok' : 'invalid'); } if ( ! $is_type ) { $condition_true = false; } $expl && $explain .= '] '; } // Filter for POST-TYPE. if ( $condition_true && ! empty( $cond['posttypes'] ) ) { $expl && $explain .= '
POSTTYPE-'; /** * Check for is singular or post type archive */ if ( is_singular( $cond['posttypes'] ) || is_post_type_archive( $cond['posttypes'] ) ) { $posttype = get_post_type(); $expl && $explain .= strtoupper( $posttype ) . ' ['; if ( ! in_array( $posttype, $cond['posttypes'] ) ) { $expl && $explain .= 'invalid posttype'; $condition_true = false; } else { // Filter for SPECIFIC POSTS. if ( ! empty( $cond[ 'pt-' . $posttype ] ) ) { if ( ! in_array( get_the_ID(), $cond[ 'pt-' . $posttype ] ) ) { $expl && $explain .= 'invalid post_id'; $condition_true = false; } } } if ( $condition_true ) { $expl && $explain .= 'ok'; } } else { $expl && $explain .= ' it is not singular or post type archive'; $condition_true = false; } $expl && $explain .= '] '; } if ( $condition_true ) { // TAXONOMY condition. $tax_query = null; if ( isset( $wp_query->tax_query ) ) { $tax_query = $wp_query->tax_query->queries; } $tax_type = $tax_terms = false; if ( ! empty( $tax_query ) && is_array( $tax_query ) ) { $tax_type = $tax_query[0]['taxonomy']; $tax_terms = $tax_query[0]['terms']; } foreach ( $Tax_list as $tax_item ) { if ( ! $condition_true ) { break; } $tax_key = 'tax-' . $tax_item->name; if ( isset( $cond[ $tax_key ] ) && ! empty( $cond[ $tax_key ] ) ) { $expl && $explain .= '
TAX-' . strtoupper( $tax_item->name ) . ' ['; $has_term = false; if ( $tax_type && $tax_type == $tax_item->name ) { // Check if we did filter for the specific taxonomy. foreach ( $tax_terms as $slug ) { $term_data = get_term_by( 'slug', $slug, $tax_type ); /** * check if term exists */ if ( ! is_a( $term_data, 'WP_Term' ) ) { continue; } if ( in_array( $term_data->term_id, $cond[ $tax_key ] ) ) { $expl && $explain .= 'ok:' . $term_data->term_id; $has_term = true; } } } else { // Check if current post has the specific taxonomy. foreach ( $cond[ $tax_key ] as $term ) { if ( has_term( $term, $tax_item->name ) ) { $expl && $explain .= 'ok:' . $term; $has_term = true; break; } } } if ( ! $has_term ) { $expl && $explain .= 'no match'; $condition_true = false; } $expl && $explain .= '] '; } } } if ( ( 'show' == $action && ! $condition_true ) || ( 'hide' == $action && $condition_true ) ) { $show_widget = false; } $expl && do_action( 'cs_explain', ($condition_true ? 'Do' : 'Dont') . ' ' . $action . ' - ' . $explain ); return $show_widget; } // // ========== AJAX Handler // /** * Ajax handler. If the action is processed the request is closed via die() * * @since 2.0.9.7 * @param string $action */ public function handle_ajax( $action ) { // The ajax request was not meant for us... if ( 'visibility' != $action ) { return false; } $data = array(); if ( isset( $_GET['tag'] ) ) { $data = $this->ajax_data_terms( @sanitize_text_field($_GET['tag']), @sanitize_text_field($_REQUEST['q']) ); } elseif ( isset( $_GET['posttype'] ) ) { $data = $this->ajax_data_posts( @sanitize_text_field($_GET['posttype']), @sanitize_text_field($_REQUEST['q']) ); } self::json_response( array( 'items' => $data ) ); } /** * Returns an array with tags that contain the specified search term. * * @since 2.0.9.7 * @param string $term_name Taxonomy type. * @param string $search Search term. * @return array */ protected function ajax_data_terms( $term_name, $search ) { $data = array(); $tags = get_terms( $term_name, array( 'hide_empty' => false, 'search' => $search, ) ); foreach ( $tags as $tag ) { $key = $tag->term_id; $name = $tag->name; $data[] = array( 'id' => $key, 'text' => esc_html( $name ), ); } return $data; } /** * Returns an array with post-titles that contain the specified search term. * * @since 2.0.9.7 * @param string $posttype Post-type to search. * @param string $search Search term. * @return array */ protected function ajax_data_posts( $posttype, $search ) { $data = array(); $posts = get_posts( array( 'post_type' => $posttype, 'order_by' => 'title', 'order' => 'ASC', 'numberposts' => '0', 's' => $search, ) ); foreach ( $posts as $post ) { $id = $post->ID; $text = $post->post_title; $data[] = array( 'id' => $post->ID, 'text' => esc_html( $text ), ); } return $data; } }; inc/class-custom-sidebars-editor.php000064400000134467150211770060013537 0ustar00 singleton. * * @since 2.0 */ private function __construct() { if ( ! is_admin() ) { return; } // Add the sidebar metabox to posts. add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) ); // Save the options from the sidebars-metabox. add_action( 'save_post', array( $this, 'store_replacements' ) ); // Handle ajax requests. add_action( 'cs_ajax_request', array( $this, 'handle_ajax' ) ); add_action( 'admin_init', array( $this, 'settings' ) ); } /** * Settings function * * @since 3.1.0 */ public function settings() { /** * metabox role */ add_filter( 'screen_settings', array( $this, 'add_capabilities_select_box' ), 10, 2 ); add_action( 'wp_ajax_custom_sidebars_metabox_roles', array( $this, 'update_custom_sidebars_metabox_roles' ) ); add_action( 'wp_ajax_custom_sidebars_metabox_custom_taxonomies', array( $this, 'update_custom_sidebars_metabox_custom_taxonomies' ) ); add_action( 'wp_ajax_custom_sidebars_allow_author', array( $this, 'update_custom_sidebars_allow_author' ) ); /** * Check user privileges */ $user_can_save = $this->current_user_can_update_custom_sidebars(); if ( ! $user_can_save ) { return; } // Add a custom column to post list. $posttypes = self::get_post_types( 'objects' ); foreach ( $posttypes as $pt ) { add_filter( 'manage_' . $pt->name . '_posts_columns', array( $this, 'post_columns' ) ); add_action( 'manage_' . $pt->name . '_posts_custom_column', array( $this, 'post_column_content' ), 10, 2 ); } /** This action is documented in wp-admin/includes/screen.php */ add_filter( 'default_hidden_columns', array( $this, 'default_hidden_columns' ), 10, 2 ); add_action( 'quick_edit_custom_box', array( $this, 'post_quick_edit' ), 10, 2 ); add_action( 'bulk_edit_custom_box', array( $this, 'post_bulk_edit' ), 10, 2 ); add_action( 'admin_footer', array( $this, 'post_quick_edit_js' ) ); /** * Bulk Edit save * * @since 3.0.8 */ add_action( 'save_post', array( $this, 'bulk_edit_save' ) ); } /** * Handles the ajax requests. */ public function handle_ajax( $action ) { $req = (object) array( 'status' => 'ERR', ); $is_json = true; $handle_it = false; $view_file = ''; $sb_id = ''; if ( isset( $_POST['sb'] ) ) { $sb_id = sanitize_key($_POST['sb']); } switch ( $action ) { case 'get': case 'save': case 'delete': case 'get-location': case 'set-location': case 'replaceable': $handle_it = true; $req->status = 'OK'; $req->action = $action; $req->id = $sb_id; break; } // The ajax request was not meant for us... if ( ! $handle_it ) { return false; } $sb_data = self::get_sidebar( $sb_id ); if ( ! current_user_can( self::$cap_required ) ) { $req = self::req_err( $req, __( 'You do not have permission for this', 'custom-sidebars' ) ); } else { $sidebar_data = map_deep( $_POST, 'sanitize_text_field' ); switch ( $action ) { // Return details for the specified sidebar. case 'get': /** * check nonce */ if ( ! isset( $sidebar_data['_wpnonce'] ) || ! wp_verify_nonce( $sidebar_data['_wpnonce'], 'custom-sidebars-get' ) ) { $req = self::req_err( $req, __( 'You do not have permission for this', 'custom-sidebars' ) ); } else { $sb_data['advance'] = false; $user_id = get_current_user_id(); if ( $user_id ) { $advance = get_user_option( 'custom-sidebars-editor-advance', $user_id ); if ( is_array( $advance ) && isset( $advance[ $sb_data['id'] ] ) ) { $sb_data['advance'] = $advance[ $sb_data['id'] ]; } } $req->sidebar = $sb_data; } break; // Save or insert the specified sidebar. case 'save': $req = $this->save_item( $req, $sidebar_data ); break; // Delete the specified sidebar. case 'delete': $req->sidebar = $sb_data; $req = $this->delete_item( $req, $sidebar_data ); break; // Get the location data. case 'get-location': $req->sidebar = $sb_data; $req = $this->get_location_data( $req ); break; // Update the location data. case 'set-location': $req->sidebar = $sb_data; $req = $this->set_location_data( $req ); break; // Toggle theme sidebar replaceable-flag. case 'replaceable': $req = $this->set_replaceable( $req ); break; } } // Make the ajax response either as JSON or plain text. if ( $is_json ) { self::json_response( $req ); } else { ob_start(); include CSB_VIEWS_DIR . $view_file; $resp = ob_get_clean(); self::plain_response( $resp ); } } /** * Saves the item specified by $data array and populates the response * object. When $req->id is empty a new sidebar will be created. Otherwise * the existing sidebar is updated. * * @since 2.0 * @param object $req Initial response object. * @param array $data Sidebar data to save (typically this is $_POST). * @return object Updated response object. */ private function save_item( $req, $data ) { /** * check nonce */ if ( ! isset( $data['_wpnonce'] ) || ! wp_verify_nonce( $data['_wpnonce'], 'custom-sidebars-edit-sidebar' ) ) { return self::req_err( $req, __( 'You have no permission to do this operation.', 'custom-sidebars' ) ); } $sidebars = self::get_custom_sidebars(); $sb_id = $req->id; $sb_desc = ''; if ( isset( $data['description'] ) ) { $sb_desc = stripslashes( trim( $data['description'] ) ); } $sb_name = isset( $data['name'] )? $data['name']:''; if ( function_exists( 'mb_substr' ) ) { $sb_name = mb_substr( stripslashes( trim( $sb_name ) ), 0, 40 ); } else { $sb_name = substr( stripslashes( trim( $sb_name ) ), 0, 40 ); } if ( empty( $sb_name ) ) { return self::req_err( $req, __( 'Sidebar-name cannot be empty', 'custom-sidebars' ) ); } if ( empty( $sb_id ) ) { // Create a new sidebar. $action = 'insert'; $num = count( $sidebars ); do { $num += 1; $sb_id = self::$sidebar_prefix . $num; } while ( self::get_sidebar( $sb_id, 'cust' ) ); $sidebar = array( 'id' => $sb_id, ); } else { // Update existing sidebar $action = 'update'; $sidebar = self::get_sidebar( $sb_id, 'cust' ); if ( ! $sidebar ) { return self::req_err( $req, __( 'The sidebar does not exist', 'custom-sidebars' ) ); } } if ( function_exists( 'mb_strlen' ) ) { if ( mb_strlen( $sb_desc ) > 200 ) { $sb_desc = mb_substr( $sb_desc, 0, 200 ); } } else { if ( strlen( $sb_desc ) > 200 ) { $sb_desc = substr( $sb_desc, 0, 200 ); } } // Populate the sidebar object. if ( 'insert' == $action || self::wpml_is_default_lang() ) { $sidebar['name'] = $sb_name; $sidebar['description'] = $sb_desc; } else { $sidebar['name_lang'] = $sb_name; $sidebar['description_lang'] = $sb_desc; } foreach ( array( 'before', 'after' ) as $prefix ) { foreach ( array( 'widget', 'title' ) as $sufix ) { $name = sprintf( '%s_%s', $prefix, $sufix ); $sidebar[ $name ] = ''; if ( isset( $_POST[ $name ] ) ) { $sidebar[ $name ] = stripslashes( trim( sanitize_text_field($_POST[ $name ]) ) ); } } } if ( 'insert' == $action ) { $sidebars[] = $sidebar; /* translators: %1$s is replaced with the sidebar name */ $req->message = sprintf(__( 'Created new sidebar %1$s', 'custom-sidebars' ),esc_html( $sidebar['name'] )); } else { $found = false; foreach ( $sidebars as $ind => $item ) { if ( $item['id'] == $sb_id ) { /* translators: %1$s is replaced with the sidebar name */ $req->message = sprintf(__( 'Updated sidebar %1$s', 'custom-sidebars' ),esc_html( $sidebar['name'] )); $sidebars[ $ind ] = $sidebar; $found = true; break; } } if ( ! $found ) { return self::req_err( $req, __( 'The sidebar was not found', 'custom-sidebars' ) ); } } // Save the changes. self::set_custom_sidebars( $sidebars ); self::refresh_sidebar_widgets(); $req->data = $sidebar; $req->action = $action; // Allow user to translate sidebar name/description via WPML. self::wpml_update( $sidebars ); $req->data = self::wpml_translate( $sidebar ); /** * save user preferences (advance). * * @since 3.1.3 */ $user_id = get_current_user_id(); if ( $user_id ) { $advance = get_user_option( 'custom-sidebars-editor-advance', $user_id ); if ( ! is_array( $advance ) ) { $advance = array(); } $advance[ $req->data['id'] ] = isset( $_POST['advance'] ) && 'show' === $_POST['advance']; update_user_option( $user_id, 'custom-sidebars-editor-advance', $advance ); } return $req; } /** * Delete the specified sidebar and update the response object. * * @since 2.0 * @since 3.0.8.1 Added the $data param. * * @param object $req Initial response object. * @param array $data Sidebar data to save (typically this is $_POST). * @return object Updated response object. */ private function delete_item( $req, $data ) { /** * check nonce */ if ( ! isset( $data['_wpnonce'] ) || ! wp_verify_nonce( $data['_wpnonce'], 'custom-sidebars-delete-sidebar' ) ) { return self::req_err( $req, __( 'You have no permission to do this operation.', 'custom-sidebars' ) ); } $sidebars = self::get_custom_sidebars(); $sidebar = self::get_sidebar( $req->id, 'cust' ); if ( ! $sidebar ) { return self::req_err( $req, __( 'The sidebar does not exist', 'custom-sidebars' ) ); } $found = false; foreach ( $sidebars as $ind => $item ) { if ( $item['id'] == $req->id ) { $found = true; /* translators: %1$s is replaced with the sidebar name */ $req->message = sprintf(__( 'Deleted sidebar %1$s', 'custom-sidebars' ),esc_html( $req->sidebar['name'] )); unset( $sidebars[ $ind ] ); break; } } if ( ! $found ) { return self::req_err( $req, __( 'The sidebar was not found', 'custom-sidebars' ) ); } // Save the changes. self::set_custom_sidebars( $sidebars ); self::refresh_sidebar_widgets(); return $req; } /** * Save the repaceable flag of a theme sidebar. * * @since 2.0 * @param object $req Initial response object. * @return object Updated response object. */ private function set_replaceable( $req ) { $state = @sanitize_text_field($_POST['state']); $options = self::get_options(); if ( 'true' === $state ) { $req->status = true; if ( ! in_array( $req->id, $options['modifiable'] ) ) { $options['modifiable'][] = $req->id; } } else { $req->status = false; foreach ( $options['modifiable'] as $i => $sb_id ) { if ( $sb_id == $req->id ) { unset( $options['modifiable'][ $i ] ); break; } } } $options['modifiable'] = array_values( $options['modifiable'] ); self::set_options( $options ); $req->replaceable = (object) $options['modifiable']; return $req; } /** * Populates the response object for the "get-location" ajax call. * Location data defines where a custom sidebar is displayed, i.e. on which * pages it is used and which theme-sidebars are replaced. * * @since 2.0 * @param object $req Initial response object. * @return object Updated response object. */ private function get_location_data( $req ) { $defaults = self::get_options(); $raw_posttype = self::get_post_types( 'objects' ); $raw_cat = self::get_all_categories(); $raw_taxonomies = array( '_builtin' => self::get_taxonomies( 'objects', true ), 'custom' => self::get_taxonomies( 'objects', false ), ); $archive_type = array( '_blog' => __( 'Front Page', 'custom-sidebars' ), '_search' => __( 'Search Results', 'custom-sidebars' ), '_404' => __( 'Not Found (404)', 'custom-sidebars' ), '_authors' => __( 'Any Author Archive', 'custom-sidebars' ), '_date' => __( 'Date Archives', 'custom-sidebars' ), ); /** * taxonomies * * @since 3.0.7 */ $default_taxonomies = array(); foreach ( $raw_taxonomies['_builtin'] as $taxonomy ) { $default_taxonomies[] = $taxonomy->labels->singular_name; switch ( $taxonomy->name ) { case 'post_format': break; case 'post_tag': /** * this a legacy and backward compatibility */ /* translators: %1$s is replaced with the taxonomy name */ $archive_type['_tags'] = sprintf( __( '%s Archives', 'custom-sidebars' ), $taxonomy->labels->singular_name ); break; case 'category': /* translators: %1$s is replaced with the taxonomy name */ $archive_type[ '_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), $taxonomy->labels->singular_name ); break; } } foreach ( $raw_taxonomies['custom'] as $taxonomy ) { if ( in_array( $taxonomy->labels->singular_name, $default_taxonomies ) ) { /* translators: %1$s is replaced with the taxonomy name */ $archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), ucfirst( $taxonomy->name ) ); } else { /* translators: %1$s is replaced with the taxonomy name */ $archive_type[ '_taxonomy_'.$taxonomy->name ] = sprintf( __( '%s Archives', 'custom-sidebars' ), $taxonomy->labels->singular_name ); } } /** * sort array by values */ asort( $archive_type ); $raw_authors = array(); $raw_authors = get_users( array( 'order_by' => 'display_name', 'fields' => array( 'ID', 'display_name' ), 'role' => 'author', ) ); // Collect required data for all posttypes. $posttypes = array(); foreach ( $raw_posttype as $item ) { $sel_single = @$defaults['post_type_single'][ $item->name ]; $posttypes[ $item->name ] = array( 'name' => $item->labels->name, 'single' => self::get_array( $sel_single ), ); } // Extract the data from categories list that we need. $categories = array(); foreach ( $raw_cat as $item ) { $sel_single = @$defaults['category_single'][ $item->term_id ]; $sel_archive = @$defaults['category_archive'][ $item->term_id ]; $categories[ $item->term_id ] = array( 'name' => $item->name, 'count' => $item->count, 'single' => self::get_array( $sel_single ), 'archive' => self::get_array( $sel_archive ), ); } // Build a list of archive types. $archives = array(); // Start with a copy of the posttype list. foreach ( $raw_posttype as $item ) { if ( $item->name == 'post' ) { $label = __( 'Post Index', 'custom-sidebars' ); } else { if ( ! $item->has_archive ) { continue; } /* translators: %1$s is replaced with the post type name */ $label = sprintf(__( '%1$s Archives', 'custom-sidebars' ),$item->labels->singular_name); } $sel_archive = @$defaults['post_type_archive'][ $item->name ]; $archives[ $item->name ] = array( 'name' => $label, 'archive' => self::get_array( $sel_archive ), ); } foreach ( $archive_type as $key => $name ) { $sel_archive = @$defaults[ substr( $key, 1 ) ]; $archives[ $key ] = array( 'name' => $name, 'archive' => self::get_array( $sel_archive ), ); } /** * Custom taxonomies archive * * @since 3.0.7 */ foreach ( $raw_taxonomies['custom'] as $t ) { $taxonomy = $t->name; if ( isset( $defaults['taxonomies_archive'] ) && isset( $defaults['taxonomies_archive'][ $taxonomy ] ) ) { /* translators: %1$s is replaced with the taxonomy name */ $name = sprintf( __( '%s Archives', 'custom-sidebars' ), $t->labels->singular_name ); if ( in_array( $t->labels->singular_name, $default_taxonomies ) ) { /* translators: %1$s is replaced with the taxonomy name */ $name = sprintf( __( '%s Archives', 'custom-sidebars' ), ucfirst( $taxonomy ) ); } $sel_archive = $defaults['taxonomies_archive'][ $taxonomy ]; $key = '_taxonomy_'.$taxonomy; $archives[ $key ] = array( 'name' => $name, 'archive' => self::get_array( $sel_archive ), ); } } /** * Custom taxonomies taxes * * @since 3.1.4 */ $allowed = get_option( $this->custom_taxonomies_name, array() ); foreach ( $allowed as $key ) { $t = get_terms( $key ); $terms = array(); foreach ( $t as $item ) { $sel_single = $sel_archive = array(); if ( isset( $defaults['taxonomies_single'] ) && isset( $defaults['taxonomies_single'][ $key ] ) && isset( $defaults['taxonomies_single'][ $key ][ $item->term_id ] ) ) { $sel_single = $defaults['taxonomies_single'][ $key ][ $item->term_id ]; } if ( isset( $defaults[ $key.'_archive' ] ) && isset( $defaults[ $key.'_archive' ][ $item->term_id ] ) ) { $sel_archive = $defaults[ $key.'_archive' ][ $item->term_id ]; } $terms[ $item->term_id ] = array( 'name' => $item->name, 'count' => $item->count, 'single' => self::get_array( $sel_single ), 'archive' => self::get_array( $sel_archive ), ); } $req->$key = $terms; } /** * Category archive. */ foreach ( $raw_taxonomies['_builtin'] as $t ) { if ( 'category' == $t->name ) { if ( isset( $defaults['category_archive'] ) ) { $sel_archive = $defaults['category_archive']; $archives['_category'] = array( /* translators: %1$s is replaced with the category name */ 'name' => sprintf( __( '%s Archives', 'custom-sidebars' ), $t->labels->singular_name ), 'archive' => self::get_array( $sel_archive ), ); } } } // Build a list of authors. $authors = array(); foreach ( $raw_authors as $user ) { $sel_archive = @$defaults['author_archive'][ @$user->ID ]; $authors[ @$user->ID ] = array( 'name' => @$user->display_name, 'archive' => self::get_array( $sel_archive ), ); } $req->authors = $authors; $req->replaceable = $defaults['modifiable']; $req->posttypes = $posttypes; $req->categories = $categories; $req->archives = $archives; /** * screen */ $screen = array(); if ( isset( $defaults['screen'] ) && isset( $defaults['screen'][ $req->id ] ) ) { $screen = $defaults['screen'][ $req->id ]; } $req->screen = $screen; /** * Allow to change data of locations. * * @since 3.1.2 * * @param object $req Object of avaialble data. * @pages $defaults Data from db. */ return apply_filters( 'custom_sidebars_get_location', $req, $defaults ); } /** * Save location data for a single sidebar and populate the response object. * Location data defines where a custom sidebar is displayed, i.e. on which * pages it is used and which theme-sidebars are replaced. * * @since 2.0 * @param object $req Initial response object. * @return object Updated response object. */ private function set_location_data( $req ) { /** * check nonce */ $sidebar_data = map_deep( $_POST, 'sanitize_text_field' ); if ( ! isset( $sidebar_data['_wpnonce'] ) || ! wp_verify_nonce( $sidebar_data['_wpnonce'], 'custom-sidebars-set-location' ) ) { return self::req_err( $req, __( 'You have no permission to do this operation.', 'custom-sidebars' ) ); } $options = self::get_options(); $sidebars = $options['modifiable']; $raw_posttype = self::get_post_types( 'objects' ); $raw_cat = self::get_all_categories(); $data = array(); $raw_taxonomies = array( 'custom' => self::get_taxonomies( 'names', false ), ); foreach ( $sidebar_data as $key => $value ) { if ( strlen( $key ) > 8 && '___cs___' == substr( $key, 0, 8 ) ) { list( $prefix, $id ) = explode( '___', substr( $key, 8 ) ); if ( ! isset( $data[ $prefix ] ) ) { $data[ $prefix ] = array(); } $data[ $prefix ][ $id ] = $value; } } $special_arc = array( 'blog', '404', 'tags', 'authors', 'search', 'date', ); $raw_authors = array(); $raw_authors = get_users( array( 'order_by' => 'display_name', 'fields' => array( 'ID', 'display_name' ), 'role' => 'author', ) ); // == Update the options foreach ( $sidebars as $sb_id ) { // Post-type settings. foreach ( $raw_posttype as $item ) { $pt = $item->name; if ( is_array( @$data['pt'][ $sb_id ] ) && in_array( $pt, $data['pt'][ $sb_id ] ) ) { $options['post_type_single'][ $pt ][ $sb_id ] = $req->id; } elseif ( isset( $options['post_type_single'][ $pt ][ $sb_id ] ) && $options['post_type_single'][ $pt ][ $sb_id ] == $req->id ) { unset( $options['post_type_single'][ $pt ][ $sb_id ] ); } if ( is_array( @$data['arc'][ $sb_id ] ) && in_array( $pt, $data['arc'][ $sb_id ] ) ) { $options['post_type_archive'][ $pt ][ $sb_id ] = $req->id; } elseif ( isset( $options['post_type_archive'][ $pt ][ $sb_id ] ) && $options['post_type_archive'][ $pt ][ $sb_id ] == $req->id ) { unset( $options['post_type_archive'][ $pt ][ $sb_id ] ); } } // Category settings. foreach ( $raw_cat as $item ) { $cat = $item->term_id; if ( is_array( @$data['cat'][ $sb_id ] ) && in_array( $cat, $data['cat'][ $sb_id ] ) ) { $options['category_single'][ $cat ][ $sb_id ] = $req->id; } elseif ( isset( $options['category_single'][ $cat ][ $sb_id ] ) && $options['category_single'][ $cat ][ $sb_id ] == $req->id ) { unset( $options['category_single'][ $cat ][ $sb_id ] ); } if ( is_array( @$data['arc-cat'][ $sb_id ] ) && in_array( $cat, $data['arc-cat'][ $sb_id ] ) ) { $options['category_archive'][ $cat ][ $sb_id ] = $req->id; } elseif ( isset( $options['category_archive'][ $cat ][ $sb_id ] ) && $options['category_archive'][ $cat ][ $sb_id ] == $req->id ) { unset( $options['category_archive'][ $cat ][ $sb_id ] ); } } foreach ( $special_arc as $key ) { if ( is_array( @$data['arc'][ $sb_id ] ) && in_array( '_' . $key, $data['arc'][ $sb_id ] ) ) { $options[ $key ][ $sb_id ] = $req->id; } elseif ( isset( $options[ $key ][ $sb_id ] ) && $options[ $key ][ $sb_id ] == $req->id ) { unset( $options[ $key ][ $sb_id ] ); } } // Author settings. foreach ( $raw_authors as $user ) { $key = $user->ID; if ( is_array( @$data['arc-aut'][ $sb_id ] ) && in_array( $key, $data['arc-aut'][ $sb_id ] ) ) { $options['author_archive'][ $key ][ $sb_id ] = $req->id; } elseif ( isset( $options['author_archive'][ $key ][ $sb_id ] ) && $options['author_archive'][ $key ][ $sb_id ] == $req->id ) { unset( $options['author_archive'][ $key ][ $sb_id ] ); } } /** * Custom taxonomies * * @since 3.0.7 */ foreach ( $raw_taxonomies['custom'] as $taxonomy ) { $key = '_taxonomy_'.$taxonomy; if ( isset( $data['arc'][ $sb_id ] ) && is_array( $data['arc'][ $sb_id ] ) && in_array( $key, $data['arc'][ $sb_id ] ) ) { $options['taxonomies_archive'][ $taxonomy ][ $sb_id ] = $req->id; } elseif ( isset( $options['taxonomies_archive'][ $taxonomy ][ $sb_id ] ) && $options['taxonomies_archive'][ $taxonomy ][ $sb_id ] == $req->id ) { unset( $options['taxonomies_archive'][ $taxonomy ][ $sb_id ] ); } /** * single custom taxonomy * * @since 3.1.4 */ foreach ( $raw_taxonomies['custom'] as $taxonomy ) { $key = '_taxonomy_'.$taxonomy.'_single'; $terms = get_terms( $taxonomy ); foreach ( $terms as $term ) { $term_id = $term->term_id; if ( isset( $data[ $taxonomy ][ $sb_id ] ) && is_array( $data[ $taxonomy ][ $sb_id ] ) && in_array( $term_id, $data[ $taxonomy ][ $sb_id ] ) ) { $options['taxonomies_single'][ $taxonomy ][ $term_id ][ $sb_id ] = $req->id; } elseif ( isset( $options['taxonomies_single'][ $taxonomy ][ $term_id ][ $sb_id ] ) && $options['taxonomies_single'][ $taxonomy ][ $term_id ][ $sb_id ] == $req->id ) { unset( $options['taxonomies_single'][ $taxonomy ][ $term_id ][ $sb_id ] ); } } } } /** * category Archive * * @since 3.0.7 */ if ( isset( $data['arc'][ $sb_id ] ) && is_array( $data['arc'][ $sb_id ] ) && in_array( '_category', $data['arc'][ $sb_id ] ) ) { $options['category_archive'][ $sb_id ] = $req->id; } elseif ( isset( $options['category_archive'][ $sb_id ] ) && $options['category_archive'][ $sb_id ] == $req->id ) { unset( $options['category_archive'][ $sb_id ] ); } } /** * screen size */ $size = array(); if ( isset( $_POST['cs-screen'] ) && isset( $_POST['cs-screen']['mode'] ) && isset( $_POST['cs-screen']['minmax'] ) && isset( $_POST['cs-screen']['size'] ) && is_array( $_POST['cs-screen']['mode'] ) && is_array( $_POST['cs-screen']['minmax'] ) && is_array( $_POST['cs-screen']['size'] ) ) { $screen_size = map_deep( $_POST['cs-screen'], 'sanitize_text_field' ); for ( $i = 0; $i < count( $screen_size['size'] ); $i++ ) { if ( ! empty( $screen_size['size'][ $i ] ) ) { $size[ $screen_size['size'][ $i ] ][ $screen_size['minmax'][ $i ] ] = $screen_size['mode'][ $i ]; } } krsort( $size ); } $options['screen'][ $req->id ] = $size; /* translators: %1$s is replaced with the sidebar name */ $req->message = sprintf(__( 'Updated sidebar %1$s settings.', 'custom-sidebars' ), esc_html( $req->sidebar['name'] )); /** * Allow to change data of locations before save. * * @since 3.1.2 * * @param array $options Current options to save. * @param string $req->id Sidebar * @param array $sidebars Allowed sidebars. * @oaram array $data Data send by request. */ $options = apply_filters( 'custom_sidebars_set_location', $options, $req->id, $sidebars, $data ); self::set_options( $options ); return $req; } /** * Registers the "Sidebars" meta box in the post-editor. */ public function add_meta_box() { global $post; /** * check capabilities */ $user_can_change_sidebars = $this->check_author_ability_to_replace(); if ( ! $user_can_change_sidebars ) { return; } $post_type = get_post_type( $post ); if ( ! $post_type ) { return false; } if ( ! self::supported_post_type( $post_type ) ) { return false; } /** * Option that can be set in wp-config.php to remove the custom sidebar * meta box for certain post types. * * @since 2.0 * * @option bool TRUE will hide all meta boxes. */ if ( defined( 'CUSTOM_SIDEBAR_DISABLE_METABOXES' ) && CUSTOM_SIDEBAR_DISABLE_METABOXES == true ) { return false; } $pt_obj = get_post_type_object( $post_type ); if ( $pt_obj->publicly_queryable || $pt_obj->public ) { add_meta_box( 'customsidebars-mb', __( 'Sidebars', 'custom-sidebars' ), array( $this, 'print_metabox_editor' ), $post_type, 'side' ); } } /** * Renders the Custom Sidebars meta box in the post-editor. */ public function print_metabox_editor() { global $post; $this->print_sidebars_form( $post->ID, 'metabox' ); } /** * Renders the sidebar-fields inside the quick-edit form. */ public function print_metabox_quick() { $this->print_sidebars_form( 0, 'quick-edit' ); } /** * Renders the Custom Sidebars form. * * @param int $post_id The post-ID to display * @param string $type Which form to display. 'metabox/quick-edit/col-sidebars'. */ protected function print_sidebars_form( $post_id, $type = 'metabox' ) { /** * check capabilities */ $user_can_change_sidebars = $this->check_author_ability_to_replace(); if ( ! $user_can_change_sidebars ) { return; } global $wp_registered_sidebars; $available = CustomSidebars::sort_sidebars_by_name( $wp_registered_sidebars ); $replacements = self::get_replacements( $post_id ); $sidebars = self::get_options( 'modifiable' ); $selected = array(); if ( ! empty( $sidebars ) ) { foreach ( $sidebars as $s ) { if ( isset( $replacements[ $s ] ) ) { $selected[ $s ] = $replacements[ $s ]; } else { $selected[ $s ] = ''; } } } switch ( $type ) { case 'col-sidebars': include CSB_VIEWS_DIR . 'col-sidebars.php'; break; case 'quick-edit': include CSB_VIEWS_DIR . 'quick-edit.php'; break; case 'bulk-edit': /** * @since 3.0.8 */ include CSB_VIEWS_DIR . 'bulk-edit.php'; break; default: include CSB_VIEWS_DIR . 'metabox.php'; break; } } public function store_replacements( $post_id ) { global $action; /** * check capabilities */ $user_can_change_sidebars = $this->check_author_ability_to_replace(); if ( ! $user_can_change_sidebars ) { return; } /* * Verify if this is an auto save routine. If it is our form has not * been submitted, so we dont want to do anything * (Copied and pasted from wordpress add_metabox_tutorial) */ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } /* * 'editpost' .. Saved from full Post-Editor screen. * 'inline-save' .. Saved via the quick-edit form. */ if ( ( isset( $_REQUEST['action'] ) && 'inline-save' != $_REQUEST['action'] ) && 'editpost' != $action ) { return $post_id; } // Make sure meta is added to the post, not a revision. if ( $the_post = wp_is_post_revision( $post_id ) ) { $post_id = $the_post; } $sidebars = self::get_options( 'modifiable' ); $data = array(); if ( ! empty( $sidebars ) ) { foreach ( $sidebars as $sb_id ) { if ( isset( $_POST[ 'cs_replacement_' . $sb_id ] ) ) { $replacement = map_deep( $_POST[ 'cs_replacement_' . $sb_id], 'sanitize_text_field' ); if ( ! empty( $replacement ) ) { $data[ $sb_id ] = $replacement; } } } } self::set_post_meta( $post_id, $data ); } // ========== WPML support. /** * Updates the WPML string register with the current sidebar string so the * user can translate the sidebar details using the WPML string translation. * * @since 2.0.9.7 * @param array $custom_sidebars List of the custom sidebars. */ static protected function wpml_update( $custom_sidebars ) { if ( ! function_exists( 'icl_register_string' ) ) { return false; } $theme_sidebars = self::get_sidebars(); // This is used to identify the sidebar-translations by WPML. $context = 'Sidebar'; // First do the theme sidebars, so they will be displayed in the // *bottom* of the translations list. foreach ( $theme_sidebars as $fields ) { self::wpml_update_field( $context, $fields['id'] . '-name', @$fields['name'], false ); self::wpml_update_field( $context, $fields['id'] . '-description', @$fields['description'], false ); } foreach ( $custom_sidebars as $fields ) { $name = isset( $fields['name_lang'] ) ? $fields['name_lang'] : $fields['name']; $description = isset( $fields['description_lang'] ) ? $fields['description_lang'] : $fields['description']; self::wpml_update_field( $context, $fields['id'] . '-name', $name, true ); self::wpml_update_field( $context, $fields['id'] . '-description', $description, true ); } } /** * Updates the WPML string register for a single field. * * @since 2.0.9.7 * @param string $context * @param string $field * @param string $value * @param bool $update_string If false then the translation will only be * registered but not updated. */ static protected function wpml_update_field( $context, $field, $value, $update_string = true ) { global $sitepress, $sitepress_settings; if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return false; } if ( ! function_exists( 'icl_t' ) ) { return false; } if ( ! icl_st_is_registered_string( $context, $field ) ) { // Register the field if it does not exist. icl_register_string( $context, $field, $value, false ); $active_languages = $sitepress->get_active_languages(); foreach ( $active_languages as $lang => $data ) { icl_update_string_translation( $field, $lang, $value, ICL_STRING_TRANSLATION_COMPLETE ); } $default_language = ! empty( $sitepress_settings['st']['strings_language'] ) ? $sitepress_settings['st']['strings_language'] : $sitepress->get_default_language(); icl_update_string_translation( $field, $default_language, $value, ICL_STRING_TRANSLATION_COMPLETE ); } else if ( $update_string ) { // Add translation. if ( defined( 'DOING_AJAX' ) ) { $current_language = $sitepress->get_language_cookie(); } else { $current_language = $sitepress->get_current_language(); } icl_update_string_translation( $field, $current_language, $value, ICL_STRING_TRANSLATION_COMPLETE ); } } /** * Returns boolean true, when site is currently using the default language. * * @since 2.0.9.7 * @return bool */ static protected function wpml_is_default_lang() { global $sitepress, $sitepress_settings; if ( empty( $sitepress ) || empty( $sitepress_settings ) ) { return true; } if ( ! function_exists( 'icl_t' ) ) { return true; } if ( defined( 'DOING_AJAX' ) ) { $current_language = $sitepress->get_language_cookie(); } else { $current_language = $sitepress->get_current_language(); } $default_language = ! empty( $sitepress_settings['st']['strings_language'] ) ? $sitepress_settings['st']['strings_language'] : $sitepress->get_default_language(); return $default_language == $current_language; } /** * Translates the text inside the specified sidebar object. * * @since 2.0.9.7 * @param array $sidebar Sidebar object. * @return array Translated sidebar object. */ static protected function wpml_translate( $sidebar ) { if ( ! function_exists( 'icl_t' ) ) { return $sidebar; } $context = 'Sidebar'; // Translate the name and description. // Note: When changing a translation the icl_t() function will not // return the updated value due to caching. if ( isset( $sidebar['name_lang'] ) ) { $sidebar['name'] = $sidebar['name_lang']; } else { $sidebar['name'] = icl_t( $context, $sidebar['id'] . '-name', $sidebar['name'] ); } if ( isset( $sidebar['description_lang'] ) ) { $sidebar['description'] = $sidebar['description_lang']; } else { $sidebar['description'] = icl_t( $context, $sidebar['id'] . '-description', $sidebar['description'] ); } return $sidebar; } // // ========== Custom column an Quick-Edit fields for post list. // http://shibashake.com/wordpress-theme/expand-the-wordpress-quick-edit-menu // /** * Adds a custom column to post-types that support custom sidebars. * * @since 2.0.9.7 * @param array $columns Column list. * @return array Modified column list. */ public function post_columns( $columns ) { // This column is added. $insert = array( 'cs_replacement' => _x( 'Custom Sidebars', 'Column name on entries list.', 'custom-sidebars' ), ); // Column is added after column 'title'. $insert_after = 'title'; $pos = array_search( $insert_after, array_keys( $columns ) ) + 1; $columns = array_merge( array_slice( $columns, 0, $pos ), $insert, array_slice( $columns, $pos ) ); return $columns; } /** * Display values in the custom column. * * @since 2.0.9.7 * @param string $column_name Column-Key defined in post_columns above. * @param int $post_id Post-ID */ public function post_column_content( $column_name, $post_id ) { switch ( $column_name ) { case 'cs_replacement': $this->print_sidebars_form( $post_id, 'col-sidebars' ); break; } } /** * Adds a custom field to the quick-edit box to select custom columns. * * @since 2.0.9.7 * @param string $column_name Column-Key defined in post_columns above. * @param string $post_type Post-type that is currently edited. */ public function post_quick_edit( $column_name, $post_type ) { if ( ! self::supported_post_type( $post_type ) ) { return false; } switch ( $column_name ) { case 'cs_replacement': $this->print_metabox_quick(); break; } } /** * Javascript to set the values of the quick-edit form. * * Note: There is only 1 quick-edit form on the page. The form is displayed * when the user clicks the quick edit action; all fields are then populated * with values of the corresponding post. * * @since 2.0.9.7 */ public function post_quick_edit_js() { global $current_screen; if ( ( $current_screen->base != 'edit' ) ) { return false; } if ( ! self::supported_post_type( $current_screen->post_type ) ) { return false; } ?> post_type ) && 'post' == $screen->post_type ) { $hidden[] = 'cs_replacement'; } return $hidden; } /** * Adds a custom field to the bulk-edit box to select custom columns. * * @since 3.0.8 * @param string $column_name Column-Key defined in post_columns above. * @param string $post_type Post-type that is currently edited. */ public function post_bulk_edit( $column_name, $post_type ) { if ( ! self::supported_post_type( $post_type ) ) { return false; } switch ( $column_name ) { case 'cs_replacement': $this->print_metabox_bulk(); break; } } /** * Renders the sidebar-fields inside the bulk-edit form. * * @since 3.0.8 */ public function print_metabox_bulk() { $this->print_sidebars_form( 0, 'bulk-edit' ); } /** * Bulk Edit save * * @since 3.0.8 */ public function bulk_edit_save( $post_id ) { if ( ! isset( $_REQUEST['custom-sidebars-editor-bulk-edit'] ) ) { return; } if ( ! wp_verify_nonce( $_REQUEST['custom-sidebars-editor-bulk-edit'], 'bulk-edit-cs' ) ) { return; } if ( null == $this->modifiable ) { $this->modifiable = CustomSidebars::get_options( 'modifiable' ); } if ( empty( $this->modifiable ) ) { return; } $update = false; $data = CustomSidebars::get_post_meta( $post_id ); foreach ( $this->modifiable as $key ) { $k = sprintf( 'cs_replacement_%s', $key ); $value = isset( $_REQUEST[ $k ] )? map_deep($_REQUEST[ $k ],'sanitize_text_field'):'-'; if ( '-' != $value ) { $update = true; $data[ $key ] = $value; } } if ( ! $update ) { return; } self::set_post_meta( $post_id, $data ); } /** * Add capabilities for options on widgets.php * * @param string $screen_settings Screen settings. * @param WP_Screen $screen WP_Screen object. */ public function add_capabilities_select_box( $screen_settings, $screen ) { if ( 'widgets' == $screen->base && current_user_can( 'manage_options' ) ) { $allowed = get_option( $this->metabox_roles_name, 'any' ); $roles = get_editable_roles(); $screen_settings .= '
'; $screen_settings .= wp_nonce_field( $this->metabox_roles_name, $this->metabox_roles_name, false, false ); $screen_settings .= sprintf( '%s', __( 'Custom sidebars configuration is allowed for:', 'custom-sidebars' ) ); foreach ( $roles as $role => $data ) { if ( isset( $data['capabilities'][ self::$cap_required ] ) && $data['capabilities'][ self::$cap_required ] ) { $checked = false; if ( is_string( $allowed ) && 'any' == $allowed ) { $checked = true; } else if ( is_array( $allowed ) && in_array( $role, $allowed ) ) { $checked = true; } $screen_settings .= sprintf( '', esc_attr( $role ), checked( $checked, true, false ), esc_html( $data['name'] ) ); } } $screen_settings .= '
'; /** * allow author to edit custom sidebars */ $screen_settings .= '
'; $screen_settings .= wp_nonce_field( $this->allow_author_name, $this->allow_author_name, false, false ); $screen_settings .= sprintf( '%s', __( 'Allowed to replace sidebars:', 'custom-sidebars' ) ); $checked = get_option( $this->allow_author_name, false ); $screen_settings .= sprintf( '', esc_attr( $role ), checked( $checked, true, false ), esc_html__( 'Allow entry author to change sidebars', 'custom-sidebars' ) ); $screen_settings .= '
'; /** * Custom taxonomies */ $taxonomies = CustomSidebars::get_custom_taxonomies(); if ( ! empty( $taxonomies ) ) { $allowed = get_option( $this->custom_taxonomies_name, array() ); $screen_settings .= '
'; $screen_settings .= wp_nonce_field( $this->custom_taxonomies_name, $this->custom_taxonomies_name, false, false ); $screen_settings .= sprintf( '%s', __( 'Allow Custom Taxonomies in Sidebar Location:', 'custom-sidebars' ) ); foreach ( $taxonomies as $taxonomy_slug => $taxonomy ) { $checked = in_array( $taxonomy_slug, $allowed ); $screen_settings .= sprintf( '', esc_attr( $taxonomy_slug ), checked( $checked, true, false ), esc_html( $taxonomy->label ) ); } $screen_settings .= '
'; $screen_settings .= sprintf( '

%s

', __( 'After turn on any Custom Taxonomy you need to reload this screen to be able choose it in Sidebar Location.', 'custom-sidebars' ) ); } } return $screen_settings; } /** * Update capabilities select box * * @since 3.0.9 */ public function update_custom_sidebars_metabox_roles() { $this->update_option_field( $this->metabox_roles_name ); } /** * Update custom taxoniomies select box * * @since 3.1.4 */ public function update_custom_sidebars_metabox_custom_taxonomies() { $this->update_option_field( $this->custom_taxonomies_name ); } /** * Helper for update metabox functions. * * @since 3.1.4 */ private function update_option_field( $name ) { /** * check required data */ if ( ! isset( $_REQUEST['_wpnonce'] ) || ! isset( $_REQUEST['fields'] ) ) { wp_send_json_error(); } /** * check nonce value */ if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $name ) ) { wp_send_json_error(); } $value = array(); foreach ( $_REQUEST['fields'] as $role => $status ) { if ( 'true' == $status ) { $value[] = $role; } } $status = add_option( $name, $value, '', 'no' ); if ( ! $status ) { update_option( $name, $value ); } wp_send_json_success(); } /** * Update entry author is allowed to change custom sidebars. * * @since 3.1.5 */ public function update_custom_sidebars_allow_author() { /** * check required data */ if ( ! isset( $_REQUEST['_wpnonce'] ) ) { wp_send_json_error(); } /** * check nonce value */ if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $this->allow_author_name ) ) { wp_send_json_error(); } $value = isset( $_REQUEST['value'] )? 'true' === $_REQUEST['value'] : false; $status = add_option( $this->allow_author_name, $value, '', 'no' ); if ( ! $status ) { update_option( $this->allow_author_name, $value ); } wp_send_json_success(); } /** * Check ability to save sidebars * * @since 3.0.9 */ public function current_user_can_update_custom_sidebars() { $allowed = get_option( $this->metabox_roles_name, 'any' ); if ( is_string( $allowed ) && 'any' == $allowed ) { return true; } else { $current_user = wp_get_current_user(); $current_user_roles = (array) $current_user->roles; foreach ( $allowed as $role ) { if ( in_array( $role, $current_user_roles ) ) { return true; } } } return false; } /** * Get allowed taxoniomies. * * @since 3.1.4 */ public function get_allowed_custom_taxonmies() { $value = get_option( $this->custom_taxonomies_name ); if ( empty( $value ) || ! is_array( $value ) ) { return array(); } return $value; } /** * Check author ability to change sidebars during entry edit * * @since 3.1.5 */ private function check_author_ability_to_replace() { global $post; if ( current_user_can( self::$cap_required ) ) { return true; } $checked = get_option( $this->allow_author_name, false ); if ( $checked ) { if ( current_user_can( 'edit_posts', $post->ID ) ) { return true; } } return false; } }; inc/class-custom-sidebars-export.php000064400000062033150211770060013557 0ustar00 singleton. * * @since 2.0 */ private function __construct() { add_action( 'admin_init', array( $this, 'admin_init' ) ); } /** * Admin Init * * @since 3.1.6 */ public function admin_init() { add_action( 'cs_widget_header', array( $this, 'widget_header' ) ); add_action( 'cs_ajax_request', array( $this, 'handle_ajax' ) ); } /** * Called by action 'cs_widget_header'. Output the export/import button in * the widget header. * * @since 2.0 */ public function widget_header() { ?> 'ERR', ); $is_json = true; $handle_it = false; $view_file = ''; switch ( $ajax_action ) { case 'export': case 'import': case 'preview-import': $handle_it = true; $req->status = 'OK'; $req->action = $ajax_action; break; } // The ajax request was not meant for us... if ( ! $handle_it ) { return false; } if ( ! current_user_can( self::$cap_required ) ) { $req = self::req_err( $req, __( 'You do not have permission for this', 'custom-sidebars' ) ); } else { switch ( $ajax_action ) { case 'export': $this->download_export_file(); break; case 'preview-import': $req = $this->read_import_file( $req ); if ( 'OK' == $req->status ) { ob_start(); include CSB_VIEWS_DIR . 'import.php'; $req->html = ob_get_clean(); } break; case 'import': $req = $this->prepare_import_data( $req ); break; } } // Make the ajax response either as JSON or plain text. if ( $is_json ) { self::json_response( $req ); } else { ob_start(); include CSB_VIEWS_DIR . $view_file; $resp = ob_get_clean(); self::plain_response( $resp ); } } /*============================*\ ================================ == == == EXPORT == == == ================================ \*============================*/ /** * Collects the plugin details for export. * * @since 2.0 */ private function get_export_data() { global $wp_registered_widgets, $wp_version; $theme = wp_get_theme(); $csb_info = get_plugin_data( CSB_PLUGIN ); $this->version = $csb_info['Version']; $data = array(); // Add some meta-details to the export file. $data['meta'] = array( 'created' => time(), 'wp_version' => $wp_version, 'csb_version' => $csb_info['Version'], 'theme_name' => $theme->get( 'Name' ), 'theme_version' => $theme->get( 'Version' ), 'description' => sanitize_text_field( @$_POST['export-description'] ), ); // Export the custom sidebars. $data['sidebars'] = self::get_custom_sidebars(); // Export the sidebar options (e.g. default replacement). $data['options'] = self::get_options(); // Export category-information. $data['categories'] = get_categories( array( 'hide_empty' => 0 ) ); /* * Export all widget options. * * $wp_registered_widgets contains all widget-instances that were placed * inside a sidebar. So we loop this array and fetch each widgets * options individually: * * Widget options are saved inside options table with option_name * "widget_"; the options can be an array, e.g. * "widget_search" contains options for all widget instances in any * sidebar. When we place 2 search widgets in different sidebars there * will be a list with two option-arrays. */ $data['widgets'] = array(); foreach ( self::get_sidebar_widgets() as $sidebar => $widgets ) { if ( 'wp_inactive_widgets' === $sidebar ) { continue; } if ( is_array( $widgets ) ) { $data['widgets'][ $sidebar ] = array(); foreach ( $widgets as $widget_id ) { if ( isset( $wp_registered_widgets[ $widget_id ] ) ) { $item = $wp_registered_widgets[ $widget_id ]; $cb = $item['callback']; $widget = is_array( $cb ) ? reset( $cb ) : false; $id = $widget_id; if ( ! isset( $data['widgets'][ $sidebar ][ $id ] ) ) { if ( preg_match( '/(\d+)$/', $widget_id, $matches ) ) { $id = $matches[1]; } } if ( isset( $data['widgets'][ $sidebar ][ $id ] ) ) { continue; } if ( is_object( $widget ) && method_exists( $widget, 'get_settings' ) ) { /** * set correct widget data */ $widget->id = $widget_id; $widget->number = $id; /** * get settings */ $settings = $widget->get_settings(); $data['widgets'][ $sidebar ][ $id ] = array( 'name' => @$widget->name, 'classname' => get_class( $widget ), 'id_base' => @$widget->id_base, 'description' => @$widget->description, 'settings' => $settings[ @$widget->number ], 'version' => 3, ); } else { /** * Widgets that are registered with the old widget API * have a different structure: * * - Not an object but a callback function. * - No standard options-form. * -> No widget settings to export. * -> No clone/visibility options to export. * - Only one instance * -> "id_base" is same as $widget_id */ $data['widgets'][ $sidebar ][ $widget_id ] = array( 'name' => @$item['name'], 'classname' => @$item['classname'], 'id_base' => @$item['id'], 'description' => @$item['description'], 'settings' => @$item['params'], 'version' => 2, ); } /** * remove empty settings */ if ( isset( $data['widgets'][ $sidebar ][ $id ]['settings']['csb_visibility']['conditions'] ) ) { foreach ( $data['widgets'][ $sidebar ][ $id ]['settings']['csb_visibility']['conditions'] as $condition_id => $condition_value ) { if ( empty( $condition_value ) ) { unset( $data['widgets'][ $sidebar ][ $id ]['settings']['csb_visibility']['conditions'][ $condition_id ] ); } } } } } } else { $data['widgets'][ $sidebar ] = $widgets; } } return $data; } /** * Generates the export file and sends it as a download to the browser. * * @since 2.0 */ private function download_export_file() { /** * check nonce */ if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'custom-sidebars-export' ) ) { $req = (object) array( 'status' => 'ERR', ); $req = self::req_err( $req, __( 'You do not have permission for export sidebars.', 'custom-sidebars' ) ); self::json_response( $req ); } /** * build filename */ $filename = $this->get_file_name(); $data = $this->get_export_data(); $content = ''; /** * Check PHP version, for PHP < 5.3 do not add options * * @since 3.1.6 */ $version = phpversion(); $compare = version_compare( $version, '5.3', '<' ); // Send the download headers. header( 'Pragma: public' ); header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header( 'Cache-Control: private', false ); // required for certain browsers header( 'Content-type: application/json' ); header( 'Content-Disposition: attachment; filename="' . $filename . '"' ); header( 'Content-Transfer-Encoding: binary' ); header( 'Content-Length: ' . strlen( wp_json_encode($data) ) ); /** * Finally send the export-file content. */ echo wp_json_encode($data); exit; } /** * Generate export file name dynamically. * * Generate a unique file name to export in json. * * @since 3.1.6 * * @return string File name. */ private function get_file_name() { /** * get version if it is needded */ if ( empty( $this->version ) ) { $csb_info = get_plugin_data( CSB_PLUGIN ); $this->version = $csb_info['Version']; } // Get site name. $site_name = sanitize_key( get_bloginfo( 'name' ) ); $site_name = empty( $site_name ) ? '' : $site_name . '.'; // Create export file name. $filename = sprintf( '%s.sidebars.%s.%s.json', $site_name, $this->version, gmdate( 'Y-m-d.H-i-s' ) ); return $filename; } /*=============================*\ ================================= == == == PREVIEW == == == ================================= \*=============================*/ /** * Checks if a valid export-file was uploaded and stores the file contents * inside self::$import_data. The data is de-serialized. * In error case the response object will be set to error status. * * @since 2.0 * @param object $req Initial response object for JSON response. * @return object Updated response object. */ private function read_import_file( $req ) { /** * check nonce */ if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'custom-sidebars-import' ) ) { $req = (object) array( 'status' => 'ERR', ); $req = self::req_err( $req, __( 'You do not have permission for export sidebars.', 'custom-sidebars' ) ); self::json_response( $req ); } if ( is_array( $_FILES['data'] ) ) { switch ( $_FILES['data']['error'] ) { case UPLOAD_ERR_OK: // This is the expeted status! break; case UPLOAD_ERR_NO_FILE: return self::req_err( $req, __( 'No file was uploaded', 'custom-sidebars' ) ); case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: return self::req_err( $req, __( 'Import file is too big', 'custom-sidebars' ) ); default: return self::req_err( $req, __( 'Something went wrong', 'custom-sidebars' ) ); } $content = file_get_contents( $_FILES['data']['tmp_name'] ); $data = json_decode( $content, true ); if ( is_array( $data['meta'] ) && is_array( $data['sidebars'] ) && is_array( $data['options'] ) && is_array( $data['widgets'] ) && is_array( $data['categories'] ) ) { $data['meta']['filename'] = $_FILES['data']['name']; $data['ignore'] = array(); self::$import_data = $data; // Remove details that does not exist on current blog. $this->prepare_data(); } else { return self::req_err( $req, __( 'Unexpected import format', 'custom-sidebars' ) ); } } else { return self::req_err( $req, __( 'No file was uploaded', 'custom-sidebars' ) ); } return $req; } /** * Loads the import-data into the self::$import_data property. * The data was prepared by the import-preview screen. * Populates the response object. * * @since 2.0 * @param object $req Initial response object for JSON response. * @return object Updated response object. */ private function prepare_import_data( $req ) { /** * check nonce */ if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'custom-sidebars-import' ) ) { $req = (object) array( 'status' => 'ERR', ); $req = self::req_err( $req, __( 'You do not have permission for import sidebars.', 'custom-sidebars' ) ); self::json_response( $req ); } $data = json_decode( base64_decode( @sanitize_textarea_field($_POST['import_data']) ), true ); if ( is_array( $data['meta'] ) && is_array( $data['sidebars'] ) && is_array( $data['options'] ) && is_array( $data['widgets'] ) && is_array( $data['categories'] ) ) { $data['ignore'] = array(); self::$import_data = $data; // Remove details that does not exist on current blog. $this->prepare_data(); // "selected_data" only contains the items that were selected for import. $this->selected_data = self::$import_data; unset( $this->selected_data['meta'] ); unset( $this->selected_data['categories'] ); unset( $this->selected_data['ignore'] ); if ( ! isset( $_POST['import_plugin_config'] ) ) { unset( $this->selected_data['options'] ); } if ( ! isset( $_POST['import_widgets'] ) ) { unset( $this->selected_data['widgets'] ); } else { foreach ( $this->selected_data['widgets'] as $id => $widgets ) { $key = 'import_sb_' . $id; if ( ! isset( $_POST[ $key ] ) ) { unset( $this->selected_data['widgets'][ $id ] ); } } } foreach ( $this->selected_data['sidebars'] as $id => $sidebar ) { $key = 'import_sb_' . $sidebar['id']; if ( ! isset( $_POST[ $key ] ) ) { unset( $this->selected_data['sidebars'][ $id ] ); } } // Finally: Import the config! $req = $this->do_import( $req ); } else { return self::req_err( $req, __('Something unexpected happened and we could not finish the import. Please try again.', 'custom-sidebars') ); } return $req; } /** * Loops through the import data array and removes configuration which is * not relevant for the current blog. I.e. posttypes that are not registered * or categories that do not match the current blog. * * @since 2.0 */ private function prepare_data() { global $wp_registered_widgets; $theme_sidebars = self::get_sidebars(); $valid_categories = array(); $valid_sidebars = array(); $valid_widgets = array(); // ===== // Normalize the sidebar list (change numeric index to sidebar-id). $sidebars_remapped = array(); foreach ( self::$import_data['sidebars'] as $sidebar ) { $sidebars_remapped[ $sidebar['id'] ] = $sidebar; } self::$import_data['sidebars'] = $sidebars_remapped; // ===== // Get a list of existing/valid sidebar-IDs. $valid_sidebars = array_merge( array_keys( $theme_sidebars ), array_keys( self::$import_data['sidebars'] ) ); // ===== // Check for theme-sidebars that do not exist. foreach ( self::$import_data['options']['modifiable'] as $id => $sb_id ) { if ( ! isset( $theme_sidebars[ $sb_id ] ) ) { if ( ! isset( self::$import_data['ignore']['sidebars'] ) ) { self::$import_data['ignore']['sidebars'] = array(); } self::$import_data['ignore']['sidebars'][] = $sb_id; unset( self::$import_data['options']['modifiable'][ $id ] ); } } // ===== // Remove invalid sidebars from the default replacement options. foreach ( array( 'post_type_single', 'post_type_archive', 'category_single', 'category_archive' ) as $key ) { foreach ( self::$import_data['options'][ $key ] as $id => $list ) { $list = $this->_remove_sidebar_from_list( $list, $valid_sidebars ); self::$import_data['options'][ $key ][ $id ] = $list; } } foreach ( array( 'blog', 'tags', 'authors', 'search', 'date' ) as $key ) { $list = self::$import_data['options'][ $key ]; $list = $this->_remove_sidebar_from_list( $list, $valid_sidebars ); self::$import_data['options'][ $key ] = $list; } // ===== // Check for missing/different categories. foreach ( get_categories( array( 'hide_empty' => 0 ) ) as $cat ) { $valid_categories[ $cat->term_id ] = $cat; } foreach ( self::$import_data['categories'] as $infos ) { $id = $infos['term_id']; if ( empty( $valid_categories[ $id ] ) || $valid_categories[ $id ]->slug != $infos['slug'] ) { if ( ! isset( self::$import_data['ignore']['categories'] ) ) { self::$import_data['ignore']['categories'] = array(); } self::$import_data['ignore']['categories'][] = $infos['name']; unset( self::$import_data['categories'][ $id ] ); // Remove the categories from the config array. unset( self::$import_data['options']['category_posts'][ $id ] ); unset( self::$import_data['options']['category_pages'][ $id ] ); } } // ===== // Remove missing widgets from import data. foreach ( $wp_registered_widgets as $widget ) { if ( is_array( $widget['callback'] ) ) { $classname = get_class( $widget['callback'][0] ); } else { $classname = $widget['classname']; } $valid_widgets[ $classname ] = true; } foreach ( self::$import_data['widgets'] as $sb_id => $sidebar ) { if ( ! is_array( $sidebar ) ) { continue; } foreach ( $sidebar as $id => $widget_instance ) { $version = $widget_instance['version']; $instance_class = $widget_instance['classname']; $exists = (true === @$valid_widgets[ $instance_class ]); if ( ! $exists ) { if ( ! isset( self::$import_data['ignore']['widgets'] ) ) { self::$import_data['ignore']['widgets'] = array(); } self::$import_data['ignore']['widgets'][] = $widget_instance['name']; unset( $sidebar[ $id ] ); } } self::$import_data['widgets'][ $sb_id ] = $sidebar; } } /** * Helper function that is used by prepare_data. * * @since 2.0 */ private function _remove_sidebar_from_list( $list, $valid_list ) { /** * do not process if $list is not an array or is an empty array */ if ( ! is_array( $list ) || empty( $list ) ) { return $list; } foreach ( $list as $id => $value ) { if ( ! in_array( $value, $valid_list ) ) { unset( $list[ $id ] ); } else if ( ! in_array( $id, $valid_list ) ) { unset( $list[ $id ] ); } } return $list; } /** * Returns the contents of the uploaded import file for preview or import. * * @since 2.0 */ static public function get_import_data() { return self::$import_data; } /*============================*\ ================================ == == == IMPORT == == == ================================ \*============================*/ /** * Process the import data provided in self::$import_data. * Save the configuration to database. * Populates the response object. * * @since 2.0 * @param object $req Initial response object for JSON response. * @return object Updated response object. */ private function do_import( $req ) { $data = $this->selected_data; $msg = array(); // ===================================================================== // Import custom sidebars $sidebars = self::get_custom_sidebars(); $sidebar_count = 0; // First replace existing sidebars. foreach ( $sidebars as $idx => $sidebar ) { $sb_id = $sidebar['id']; if ( isset( $data['sidebars'][ $sb_id ] ) ) { $new_sidebar = $data['sidebars'][ $sb_id ]; $sidebars[ $idx ] = array( 'name' => @$new_sidebar['name'], 'id' => $sb_id, 'description' => @$new_sidebar['description'], 'before_widget' => @$new_sidebar['before_widget'], 'after_widget' => @$new_sidebar['after_widget'], 'before_title' => @$new_sidebar['before_title'], 'after_title' => @$new_sidebar['after_title'], ); $sidebar_count += 1; unset( $data['sidebars'][ $sb_id ] ); } } // Second add new sidebars. foreach ( $data['sidebars'] as $sb_id => $new_sidebar ) { $sidebars[] = array( 'name' => @$new_sidebar['name'], 'id' => $sb_id, 'description' => @$new_sidebar['description'], 'before_widget' => @$new_sidebar['before_widget'], 'after_widget' => @$new_sidebar['after_widget'], 'before_title' => @$new_sidebar['before_title'], 'after_title' => @$new_sidebar['after_title'], ); $sidebar_count += 1; } if ( $sidebar_count > 0 ) { self::set_custom_sidebars( $sidebars ); $msg[] = sprintf( /* translators: %d is replaced with the number of custom sidebars imported */ _n('Imported %d custom sidebar!', 'Imported %d custom sidebars!', $sidebar_count, 'custom-sidebars'), $sidebar_count ); } // ===================================================================== // Import plugin settings if ( ! empty( $data['options'] ) ) { self::set_options( $data['options'] ); $msg[] = __( 'Plugin options were imported!', 'custom-sidebars' ); } // ===================================================================== // Import widgets $widget_count = 0; $def_sidebars = get_option( 'sidebars_widgets', array() ); $widget_list = array(); $orig_POST = $_POST; /** * First replace existing sidebars. */ if ( isset( $data['widgets'] ) && is_array( $data['widgets'] ) ) { foreach ( $data['widgets'] as $sb_id => $sidebar ) { // --- 1. Remove all widgets from the sidebar // @see wp-admin/includes/ajax-actions.php : function wp_ajax_save_widget() // Empty the sidebar, in case it contains widgets. $old_widgets = @$def_sidebars[ $sb_id ]; $def_sidebars[ $sb_id ] = array(); wp_set_sidebars_widgets( $def_sidebars ); // Also remove the widget-instances from wp-option table. if ( ! is_array( $old_widgets ) ) { $old_widgets = array(); } foreach ( $old_widgets as $widget_id ) { $id_base = preg_replace( '/-[0-9]+$/', '', $widget_id ); $_POST = array( 'sidebar' => $sb_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1', ); $this->_refresh_widget_settings( $id_base ); } // --- 2. Import the new widgets to the sidebar foreach ( $sidebar as $class => $widget ) { $widget_base = $widget['id_base']; $widget_name = $this->_add_new_widget( $widget_base, $widget['settings'] ); if ( ! empty( $widget_name ) ) { $def_sidebars[ $sb_id ][] = $widget_name; $widget_count += 1; } } } } $_POST = $orig_POST; if ( $widget_count > 0 ) { wp_set_sidebars_widgets( $def_sidebars ); $msg[] = sprintf( /* translators: %d is replaced with the number of imported widgets */ _n('Imported %d widget!', 'Imported %d widgets!', $widget_count, 'custom-sidebars'), $widget_count ); } $req->message = base64_encode( implode( '
', $msg ) ); // We return a HTTP header to refresh the widgets page. header( 'HTTP/1.1 302 Found' ); header( 'Location: ' . admin_url( 'widgets.php?cs-msg=' . $req->message ) ); die(); } /** * Helper function used by the "do_import()" handler. * Updates the widget-data in DB. * * @since 2.0 */ private function _refresh_widget_settings( $id_base ) { global $wp_registered_widget_updates; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name == $id_base ) { if ( ! is_callable( $control['callback'] ) ) { continue; } ob_start(); if ( is_object( $control['callback'] ) ) { $control['callback']->updated = false; } call_user_func_array( $control['callback'], $control['params'] ); ob_end_clean(); break; } } } /** * Helper function used by the "do_import()" handler. * Updates the widget-data in DB. * * @since 2.0 */ private function _add_new_widget( $id_base, $instance ) { global $wp_registered_widget_updates; $widget_name = false; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name == $id_base ) { if ( ! is_callable( $control['callback'] ) ) { continue; } if ( is_array( $control['callback'] ) ) { $obj = $control['callback'][0]; } else { // We cannot import data from old widgets API. break; } $obj->updated = false; $all_instances = $obj->get_settings(); // Find out what the next free number is. $new_number = 0; foreach ( $all_instances as $number => $data ) { $new_number = $number > $new_number ? $number : $new_number; } $new_number += 1; $widget_name = $id_base . '-' . $new_number; /** * reset previous data */ $keys = array( 'title', 'text', 'filter', 'csb_visibility', 'csb_clone' ); foreach ( $keys as $key ) { if ( isset( $_POST[ $key ] ) ) { unset( $_POST[ $key ] ); } } /** * set current values */ foreach ( $instance as $key => $value ) { $_POST[ $key ] = $value; } /** * Filter a widget's settings before saving. * * Returning false will effectively short-circuit the widget's ability * to update settings. * * @see wp-includes/widgets.php : function "update_callback()" * @since WordPress 2.8.0 * * @param array $instance The current widget instance's settings. * @param array $new_instance Array of new widget settings. * @param array $old_instance Array of old widget settings. * @param WP_Widget $this The current widget instance. */ $instance = apply_filters( 'widget_update_callback', $instance, $instance, array(), $obj ); if ( false !== $instance ) { $all_instances[ $new_number ] = $instance; } $obj->save_settings( $all_instances ); break; } } return $widget_name; } }; inc/class-custom-sidebars.php000064400000122535150211770060012244 0ustar00html->pointer() notification is based on current user... if ( ! did_action( 'set_current_user' ) ) { add_action( 'set_current_user', array( __CLASS__, 'instance' ) ); return null; } if ( null === $Inst ) { $Inst = new CustomSidebars(); } return $Inst; } /** * Private, since it is a singleton. * We directly initialize sidebar options when class is created. */ private function __construct() { add_action( 'init', array( $this, 'integrations' ) ); add_action( 'admin_init', array( $this, 'admin_init' ) ); // Extensions use this hook to initialize themselves. do_action( 'cs_init' ); /** * Add version to media files */ add_filter( 'wpmu_style_version', array( $this, 'wp_enqueue_add_version' ), 10, 2 ); add_filter( 'wpmu_script_version', array( $this, 'wp_enqueue_add_version' ), 10, 2 ); /** * Add retirement notice for Block Based Widget Screen */ add_action( 'admin_notices', array( $this, 'retirement_admin_notice' ) ); add_action( 'wp_ajax_custom_sidebars_retirement_notice_dismiss', array( $this, 'dismiss_retirement_notice' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'dismiss_retirement_notice_js' ) ); } /** * Add retirement admin notice * * @since 3.2.4 */ public function retirement_admin_notice() { if ( ! $this->can_user_see_notice() ) { return; } ?>

', '
', "remove_theme_support( 'widgets-block-editor' );", ); ?>

false, 'message' => __( 'Unauthorized', 'custom-sidebars' ), ) ); } update_user_meta( $user_id, 'wpmudev_sc_dismissed_notice', true ); $return = array( 'success' => true, /* translators: %1$s is replaced with the user ID */ 'message' => sprintf( esc_html__( 'Notice dismissed for user %d', 'custom-sidebars' ), $user_id ), ); wp_send_json( $return ); } /** * Enqueue js to dismiss the retirement notice * * @since 3.2.4 */ public function dismiss_retirement_notice_js() { if ( ! $this->can_user_see_notice() ) { return; } $file = 'retirement-admin-notice.js'; $csb_info = get_plugin_data( CSB_PLUGIN ); $version = $csb_info['Version']; $script_vars = array( 'nonce' => wp_create_nonce( "wpmudev_sc_dismissed_notice" ), 'user_id' => get_current_user_id(), ); if ( defined( 'WDEV_UNMINIFIED' ) && WDEV_UNMINIFIED ){ $file = str_replace( '.min.js', '.js', $file ); $version = time(); } wp_enqueue_script( 'customsidebars-retirement-notice', CSB_JS_URL . $file, array(), $version, true ); wp_localize_script( 'customsidebars-retirement-notice', 'CS_Notice', $script_vars ); } /** * Should the notice be visible or not * * @since 3.2.4 */ public function can_user_see_notice() { // for now we don't need this because WP 5.7 is not out return false; if ( is_null( $this->user_can_see_notice ) ) { $this->user_can_see_notice = true; if ( ! current_user_can( 'edit_theme_options' ) || get_user_meta( get_current_user_id(), 'wpmudev_sc_dismissed_notice', true ) ) { $this->user_can_see_notice = false; } } return $this->user_can_see_notice; } /** * Add version to media files * * @since 3.1.3 */ public function wp_enqueue_add_version( $version, $handle ) { if ( preg_match( '/^wpmu\-cs\-/', $handle ) ) { return '3.2.4'; } return $version; } /** * Admin init * * @since 3.0.5 */ public function admin_init() { $plugin_title = 'Custom Sidebars';/* end:free */ /** * ID of the WP-Pointer used to introduce the plugin upon activation * * ========== Pointer ========== * Internal ID: wpmudcs1 [WPMUDev CustomSidebars 1] * Point at: #menu-appearance (Appearance menu item) * Title: Custom Sidebars * Description: Create and edit custom sidebars in your widget screen! * ------------------------------------------------------------------------- */ $user_id = get_current_user_id(); $dismissed_wp_pointers = get_user_meta( $user_id, 'dismissed_wp_pointers', true ); $dismissed_wp_pointers = explode( ',', $dismissed_wp_pointers ); if ( in_array( 'wpmudcs1', $dismissed_wp_pointers ) || wp_is_mobile() ) { lib3()->ui->add( 'core', 'widgets.php' ); } else { lib3()->ui->add( 'core' ); lib3()->html->pointer( 'wpmudcs1', // Internal Pointer-ID '#menu-appearance', // Point at $plugin_title, /* translators: %1$s is replaced with the link to the Widgets screen */ sprintf(__('Now you can create and edit custom sidebars in your Widgets screen!','custom-sidebars'), admin_url( 'widgets.php' )) ); } // Find out if the page is loaded in accessibility mode. $flag = isset( $_GET['widgets-access'] ) ? sanitize_text_field($_GET['widgets-access']) : get_user_setting( 'widgets_access' ); self::$accessibility_mode = ( 'on' == $flag ); // We don't support accessibility mode. Display a note to the user. if ( true === self::$accessibility_mode ) { $nonce = wp_create_nonce( 'widgets-access' ); lib3()->ui->admin_message( /* translators: %1$s is replaced with the URL of the link to disable acessibility mode */ sprintf(__('Accessibility mode is not supported by the Custom Sidebars plugin.
Click here to disable accessibility mode and use the Custom Sidebars plugin!', 'custom-sidebars'), $plugin_title, admin_url( 'widgets.php?widgets-access=off&_wpnonce=' . urlencode( $nonce ) )), 'err', 'widgets' ); } else { /** * Main JavaScript file */ $javascript_file = 'cs.min.js'; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { $javascript_file = 'cs.js'; } // Load javascripts/css files lib3()->ui->add( 'select', 'widgets.php' ); lib3()->ui->add( CSB_JS_URL . $javascript_file, 'widgets.php' ); lib3()->ui->add( CSB_CSS_URL . 'cs.css', 'widgets.php' ); lib3()->ui->add( CSB_CSS_URL . 'cs.css', 'edit.php' ); // AJAX actions add_action( 'wp_ajax_cs-ajax', array( $this, 'ajax_handler' ) ); // Display a message after import. if ( ! empty( $_GET['cs-msg'] ) ) { $msg = base64_decode( sanitize_text_field($_GET['cs-msg']) ); // Prevent XSS attacks... $kses_args = array( 'br' => array(), 'b' => array(), 'strong' => array(), 'i' => array(), 'em' => array(), ); $msg = wp_kses( $msg, $kses_args ); if ( ! empty( $msg ) ) { lib3()->ui->admin_message( $msg ); } } } /** * add links on plugin page. */ add_filter( 'plugin_action_links_' . plugin_basename( CSB_PLUGIN ), array( $this, 'add_action_links' ), 10, 4 ); add_action( 'admin_footer', array( $this, 'print_templates' ) ); } // ========================================================================= // == DATA ACCESS // ========================================================================= /** * * ==1== PLUGIN OPTIONS * Option-Key: cs_modifiable * * { * // Sidebars that can be replaced: * 'modifiable': [ * 'sidebar_1', * 'sidebar_2' * ], * * // Default replacements: * 'post_type_single': [ // Former "defaults" * 'post_type1': , * 'post_type2': * ], * 'post_type_archive': [ // Former "post_type_pages" * 'post_type1': , * 'post_type2': * ], * 'category_single': [ // Former "category_posts" * 'category_id1': , * 'category_id2': * ], * 'category_archive': [ // Former "category_pages" * 'category_id1': , * 'category_id2': * ], * 'blog': , * 'tags': , * 'authors': , * 'search': , * 'date': * } * * ==2== REPLACEMENT-DEF * Meta-Key: _cs_replacements * Option-Key: cs_modifiable * * { * 'sidebar_1': 'custom_sb_id1', * 'sidebar_2': 'custom_sb_id2' * } * * ==3== SIDEBAR DEFINITION * Option-Key: cs_sidebars * * Array of these objects * { * id: '', // sidebar-id * name: '', * description: '', * before_title: '', * after_title: '', * before_widget: '', * after_widget: '' * } * * ==4== WIDGET LIST * Option-Key: sidebars_widgets * * { * 'sidebar_id': [ * 'widget_id1', * 'widget_id2' * ], * 'sidebar_2': [ * ], * 'sidebar_3': [ * 'widget_id1', * 'widget_id3' * ], * } */ /** * If the specified variable is an array it will be returned. Otherwise * an empty array is returned. * * @since 2.0 * @param mixed $val1 Value that maybe is an array. * @param mixed $val2 Optional, Second value that maybe is an array. * @return array */ public static function get_array( $val1, $val2 = array() ) { if ( is_array( $val1 ) ) { return $val1; } elseif ( is_array( $val2 ) ) { return $val2; } else { return array(); } } /** * Returns a list with sidebars that were marked as "modifiable". * Also contains information on the default replacements of these sidebars. * * Option-Key: 'cs_modifiable' (1) */ public static function get_options( $key = null ) { static $Options = null; $need_update = false; if ( null === $Options ) { $Options = get_option( 'cs_modifiable', array() ); if ( ! is_array( $Options ) ) { $Options = array(); } // List of modifiable sidebars. if ( ! isset( $Options['modifiable'] ) || ! is_array( $Options['modifiable'] ) ) { // By default we make ALL theme sidebars replaceable: $all = self::get_sidebars( 'theme' ); $Options['modifiable'] = array_keys( $all ); $need_update = true; } /** * In version 2.0 four config values have been renamed and are * migrated in the following block: */ /** * set defaults */ $keys = array( 'authors', 'blog', 'category_archive', 'category_pages', 'category_posts', 'category_single', 'date', 'defaults', 'post_type_archive', 'post_type_pages', 'post_type_single', 'search', 'tags', 'screen', ); foreach ( $keys as $k ) { if ( isset( $Options[ $k ] ) ) { continue; } $Options[ $k ] = null; } // Single/Archive pages - new names $Options['post_type_single'] = self::get_array( $Options['post_type_single'], // new name $Options['defaults'] // old name ); $Options['post_type_archive'] = self::get_array( $Options['post_type_archive'], // new name $Options['post_type_pages'] // old name ); $Options['category_single'] = self::get_array( $Options['category_single'], // new name $Options['category_posts'] // old name ); $Options['category_archive'] = self::get_array( $Options['category_archive'], // new name $Options['category_pages'] // old name ); // Remove old item names from the array. if ( isset( $Options['defaults'] ) ) { unset( $Options['defaults'] ); $need_update = true; } if ( isset( $Options['post_type_pages'] ) ) { unset( $Options['post_type_pages'] ); $need_update = true; } if ( isset( $Options['category_posts'] ) ) { unset( $Options['category_posts'] ); $need_update = true; } if ( isset( $Options['category_pages'] ) ) { unset( $Options['category_pages'] ); $need_update = true; } // Special archive pages $keys = array( 'blog', 'tags', 'authors', 'search', 'date' ); foreach ( $keys as $temporary_key ) { if ( isset( $Options[ $temporary_key ] ) ) { $Options[ $temporary_key ] = self::get_array( $Options[ $temporary_key ] ); } else { $Options[ $temporary_key ] = array(); } } $Options = self::validate_options( $Options ); if ( $need_update ) { self::set_options( $Options ); } } if ( ! empty( $key ) ) { return isset( $Options[ $key ] ) ? $Options[ $key ] : null; } else { return $Options; } } /** * Saves the sidebar options to DB. * * Option-Key: 'cs_modifiable' (1) * * @since 2.0 * @param array $value The options array. */ public static function set_options( $value ) { // Permission check. if ( ! current_user_can( self::$cap_required ) ) { return; } update_option( 'cs_modifiable', $value ); } /** * Removes invalid settings from the options array. * * @since 1.0.4 * @param array $data This array will be validated and returned. * @return array */ public static function validate_options( $data = null ) { $data = ( is_object( $data ) ? (array) $data : $data ); if ( ! is_array( $data ) ) { return array(); } $valid = array_keys( self::get_sidebars( 'theme' ) ); $current = array(); if ( isset( $data['modifiable'] ) ) { $current = self::get_array( $data['modifiable'] ); } // Get all the sidebars that are modifiable AND exist. $modifiable = array_intersect( $valid, $current ); $data['modifiable'] = $modifiable; return $data; } /** * Returns a list with all custom sidebars that were created by the user. * Array of custom sidebars * * Option-Key: 'cs_sidebars' (3) */ public static function get_custom_sidebars() { $sidebars = get_option( 'cs_sidebars', array() ); if ( ! is_array( $sidebars ) ) { $sidebars = array(); } // Remove invalid items. foreach ( $sidebars as $key => $data ) { if ( ! is_array( $data ) ) { unset( $sidebars[ $key ] ); } } return $sidebars; } /** * Saves the custom sidebars to DB. * * Option-Key: 'cs_sidebars' (3) * * @since 2.0 */ public static function set_custom_sidebars( $value ) { // Permission check. if ( ! current_user_can( self::$cap_required ) ) { return; } update_option( 'cs_sidebars', $value ); } /** * Returns a list of all registered sidebars including a list of their * widgets (this is stored inside a WordPress core option). * * Option-Key: 'sidebars_widgets' (4) * * @since 2.0 */ public static function get_sidebar_widgets() { return get_option( 'sidebars_widgets', array() ); } /** * Update the WordPress core settings for sidebar widgets: * 1. Add empty widget information for new sidebars. * 2. Remove widget information for sidebars that no longer exist. * * Option-Key: 'sidebars_widgets' (4) */ public static function refresh_sidebar_widgets() { // Contains an array of all sidebars and widgets inside each sidebar. $widgetized_sidebars = self::get_sidebar_widgets(); $cs_sidebars = self::get_custom_sidebars(); $delete_widgetized_sidebars = array(); foreach ( $widgetized_sidebars as $id => $bar ) { if ( substr( $id, 0, 3 ) == self::$sidebar_prefix ) { $found = false; foreach ( $cs_sidebars as $csbar ) { if ( $csbar['id'] == $id ) { $found = true; } } if ( ! $found ) { $delete_widgetized_sidebars[] = $id; } } } $all_ids = array_keys( $widgetized_sidebars ); foreach ( $cs_sidebars as $cs ) { $sb_id = $cs['id']; if ( ! in_array( $sb_id, $all_ids ) ) { $widgetized_sidebars[ $sb_id ] = array(); } } foreach ( $delete_widgetized_sidebars as $id ) { unset( $widgetized_sidebars[ $id ] ); } update_option( 'sidebars_widgets', $widgetized_sidebars ); } /** * Returns the custom sidebar metadata of a single post. * * Meta-Key: '_cs_replacements' (2) * * @since 2.0 */ public static function get_post_meta( $post_id ) { $data = get_post_meta( $post_id, '_cs_replacements', true ); if ( ! is_array( $data ) ) { $data = array(); } return $data; } /** * Saves custom sidebar metadata to a single post. * * Meta-Key: '_cs_replacements' (2) * * @since 2.0 * @param int $post_id * @param array $data When array is empty the meta data will be deleted. */ public static function set_post_meta( $post_id, $data ) { if ( ! empty( $data ) ) { update_post_meta( $post_id, '_cs_replacements', $data ); } else { delete_post_meta( $post_id, '_cs_replacements' ); } } /** * Returns a list of all sidebars available. * Depending on the parameter this will be either all sidebars or only * sidebars defined by the current theme. * * @param string $type [all|cust|theme] What kind of sidebars to return. */ public static function get_sidebars( $type = 'theme' ) { global $wp_registered_sidebars; $allsidebars = self::sort_sidebars_by_name( $wp_registered_sidebars ); $result = array(); // Remove inactive sidebars. foreach ( $allsidebars as $sb_id => $sidebar ) { if ( false !== strpos( $sidebar['class'], 'inactive-sidebar' ) ) { unset( $allsidebars[ $sb_id ] ); } } ksort( $allsidebars ); if ( 'all' == $type ) { $result = $allsidebars; } elseif ( 'cust' == $type ) { foreach ( $allsidebars as $key => $sb ) { // Only keep custom sidebars in the results. if ( substr( $key, 0, 3 ) == self::$sidebar_prefix ) { $result[ $key ] = $sb; } } } elseif ( 'theme' == $type ) { foreach ( $allsidebars as $key => $sb ) { // Remove custom sidebars from results. if ( substr( $key, 0, 3 ) != self::$sidebar_prefix ) { $result[ $key ] = $sb; } } } return $result; } /** * Returns the sidebar with the specified ID. * Sidebar can be both a custom sidebar or theme sidebar. * * @param string $id Sidebar-ID. * @param string $type [all|cust|theme] What kind of sidebars to check. */ public static function get_sidebar( $id, $type = 'all' ) { if ( empty( $id ) ) { return false; } // Get all sidebars $sidebars = self::get_sidebars( $type ); if ( isset( $sidebars[ $id ] ) ) { return $sidebars[ $id ]; } else { return false; } } /** * Get sidebar replacement information for a single post. */ public static function get_replacements( $postid ) { $replacements = self::get_post_meta( $postid ); if ( ! is_array( $replacements ) ) { $replacements = array(); } else { $replacements = $replacements; } return $replacements; } /** * Returns true, when the specified post type supports custom sidebars. * * @since 2.0 * @param object|string $posttype The posttype to validate. Either the * posttype name or the full posttype object. * @return bool */ public static function supported_post_type( $posttype ) { $Ignored_types = null; $Response = array(); if ( null === $Ignored_types ) { $Ignored_types = get_post_types( array( 'public' => false ), 'names' ); $Ignored_types['attachment'] = 'attachment'; } if ( is_object( $posttype ) ) { $posttype = $posttype->name; } if ( ! isset( $Response[ $posttype ] ) ) { $response = ! in_array( $posttype, $Ignored_types ); /** * Filters the support-flag. The flag defines if the posttype supports * custom sidebars or not. * * @since 2.0 * * @param bool $response Flag if the posttype is supported. * @param string $posttype Name of the posttype that is checked. */ $response = apply_filters( 'cs_support_posttype', $response, $posttype ); $Response[ $posttype ] = $response; } return $Response[ $posttype ]; } /** * Returns a list of all post types that support custom sidebars. * * @uses self::supported_post_type() * @param string $type [names|objects] Defines details of return data. * @return array List of posttype names or objects, depending on the param. */ public static function get_post_types( $type = 'names' ) { $Valid = array(); if ( 'objects' != $type ) { $type = 'names'; } if ( ! isset( $Valid[ $type ] ) ) { $all = get_post_types( array(), $type ); $Valid[ $type ] = array(); foreach ( $all as $post_type ) { $suports = self::supported_post_type( $post_type ); if ( $suports ) { $Valid[ $type ][] = $post_type; } } } return $Valid[ $type ]; } /** * Returns a list of all taxonomies that support custom sidebars. * * @since 3.0.7 * * @uses self::supported_post_type() * @param string $type [names|objects] Defines details of return data. * @return array List of posttype names or objects, depending on the param. */ public static function get_taxonomies( $type = 'names', $_builtin = true ) { $Valid = array(); if ( 'objects' != $type ) { $type = 'names'; } if ( ! isset( $Valid[ $type ] ) ) { $all = get_taxonomies( array( 'public' => true, '_builtin' => $_builtin, ), $type ); $Valid[ $type ] = array(); foreach ( $all as $one ) { $Valid[ $type ][] = $one; } } return $Valid[ $type ]; } /** * Returns an array of all categories. * * @since 2.0 * @return array List of categories, including empty ones. */ public static function get_all_categories() { $args = array( 'hide_empty' => 0, 'taxonomy' => 'category', ); return get_categories( $args ); } /** * Returns a sorted list of all category terms of the current post. * This information is used to find sidebar replacements. * * @uses self::cmp_cat_level() */ public static function get_sorted_categories( $post_id = null ) { static $Sorted = array(); // Return categories of current post when no post_id is specified. $post_id = empty( $post_id ) ? get_the_ID() : $post_id; if ( ! isset( $Sorted[ $post_id ] ) ) { $Sorted[ $post_id ] = get_the_category( $post_id ); usort( $Sorted[ $post_id ], array( __CLASS__, 'cmp_cat_level' ) ); } return $Sorted[ $post_id ]; } /** * Helper function used to sort categories. * * @uses self::get_category_level() */ public static function cmp_cat_level( $cat1, $cat2 ) { $l1 = self::get_category_level( $cat1->cat_ID ); $l2 = self::get_category_level( $cat2->cat_ID ); if ( $l1 == $l2 ) { return strcasecmp( $cat1->name, $cat1->name ); } else { return $l1 < $l2 ? 1 : -1; } } /** * Helper function used to sort categories. */ public static function get_category_level( $catid ) { if ( ! $catid ) { return 0; } $cat = get_category( $catid ); return 1 + self::get_category_level( $cat->category_parent ); } // ========================================================================= // == AJAX FUNCTIONS // ========================================================================= /** * Output JSON data and die() * * @since 1.0.0 */ protected static function json_response( $obj ) { // Flush any output that was made prior to this function call while ( 0 < ob_get_level() ) { ob_end_clean(); } header( 'Content-Type: application/json' ); echo json_encode( (object) $obj ); die(); } /** * Output HTML data and die() * * @since 2.0 */ protected static function plain_response( $data ) { // Flush any output that was made prior to this function call while ( 0 < ob_get_level() ) { ob_end_clean(); } header( 'Content-Type: text/plain' ); CustomSidebars::wp_kses_wf('' . $data); die(); } /** * Sets the response object to ERR state with the specified message/reason. * * @since 2.0 * @param object $req Initial response object. * @param string $message Error message or reason; already translated. * @return object Updated response object. */ protected static function req_err( $req, $message ) { $req->status = 'ERR'; $req->message = $message; return $req; } /** * All Ajax request are handled by this function. * It analyzes the post-data and calls the required functions to execute * the requested action. * * -------------------------------- * * IMPORTANT! ANY SERVER RESPONSE MUST BE MADE VIA ONE OF THESE FUNCTIONS! * Using direct `echo` or include an html file will not work. * * self::json_response( $obj ) * self::plain_response( $text ) * * -------------------------------- * * @since 1.0.0 */ public function ajax_handler() { // Permission check. if ( ! current_user_can( self::$cap_required ) ) { return; } // Try to disable debug output for ajax handlers of this plugin. if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { defined( 'WP_DEBUG_DISPLAY' ) || define( 'WP_DEBUG_DISPLAY', false ); defined( 'WP_DEBUG_LOG' ) || define( 'WP_DEBUG_LOG', true ); } // Catch any unexpected output via output buffering. ob_start(); $action = isset( $_POST['do'] ) ? sanitize_key($_POST['do']) : null; $get_action = isset( $_GET['do'] ) ? sanitize_key($_GET['do']) : null; /** * Notify all extensions about the ajax call. * * @since 2.0 * @param string $action The specified ajax action. */ do_action( 'cs_ajax_request', $action ); /** * Notify all extensions about the GET ajax call. * * @since 2.0.9.7 * @param string $action The specified ajax action. */ do_action( 'cs_ajax_request_get', $get_action ); } /** * This function will sort an array by key 'name'. * * @since 2.1.1.2 * * @param $a Mixed - first value to compare. * @param $b Mixed - secound value to compare. * @return integer value of comparation. */ public static function sort_sidebars_cmp_function( $a, $b ) { if ( ! isset( $a['name'] ) || ! isset( $b['name'] ) ) { return 0; } if ( function_exists( 'mb_strtolower' ) ) { $a_name = mb_strtolower( $a['name'] ); $b_name = mb_strtolower( $b['name'] ); } else { $a_name = strtolower( $a['name'] ); $b_name = strtolower( $b['name'] ); } if ( $a_name == $b_name ) { return 0; } return ( $a_name < $b_name ) ? -1 : 1; } /** * Returns sidebars sorted by name. * * @since 2.1.1.2 * * @param array $available Array of sidebars. * @return array Sorted array of sidebars. */ public static function sort_sidebars_by_name( $available ) { if ( empty( $available ) ) { return $available; } foreach ( $available as $key => $data ) { $available[ $key ]['cs-key'] = $key; } usort( $available, array( __CLASS__, 'sort_sidebars_cmp_function' ) ); $sorted = array(); foreach ( $available as $data ) { $sorted[ $data['cs-key'] ] = $data; } return $sorted; } /** * Add "support" and (configure) "widgets" on plugin list page * * @since 2.1.1.8 */ public function add_action_links( $actions, $plugin_file, $plugin_data, $context ) { if ( current_user_can( 'edit_theme_options' ) ) { $widgets = sprintf( '%s', esc_url( admin_url( 'widgets.php' ) ), __( 'Configure Custom Sidebars', 'custom-sidebars' ) ); array_unshift($actions, $widgets); } return $actions; } /** * Print JavaScript template. * * @since 3.0.1 */ public function print_templates() { if ( false == $this->check_screen() ) { return; } wp_enqueue_script( 'wp-util' ); ?> id ) { return false; } return true; } /** * get custom taxonomies * * @since 3.1.4 * * @returns array Array of object of custom, public taxonomies */ public static function get_custom_taxonomies( $state = 'all' ) { $args = array( 'public' => true, '_builtin' => false, ); $taxonomies = get_taxonomies( $args, 'objects' ); if ( empty( $taxonomies ) ) { return array(); } /** * if we need only allowed taxonomies, then remove not needed from * $taxonomies array */ if ( 'allowed' === $state ) { $editor = CustomSidebarsEditor::instance(); $allowed = $editor->get_allowed_custom_taxonmies(); if ( empty( $allowed ) ) { return array(); } foreach ( $taxonomies as $slug => $taxonomy ) { if ( in_array( $slug, $allowed ) ) { continue; } unset( $taxonomies[ $slug ] ); } } uasort( $taxonomies, array( __CLASS__, 'sort_by_label' ) ); return $taxonomies; } /** * Sort helper for get_custom_taxonomies() function. * * @since 3.1.4 */ private static function sort_by_label( $a, $b ) { return strcmp( $a->label, $b->label ); } public static function wp_kses_wf($html) { add_filter('safe_style_css', function ($styles) { $styles_wf = array( 'text-align', 'margin', 'color', 'float', 'border', 'background', 'background-color', 'border-bottom', 'border-bottom-color', 'border-bottom-style', 'border-bottom-width', 'border-collapse', 'border-color', 'border-left', 'border-left-color', 'border-left-style', 'border-left-width', 'border-right', 'border-right-color', 'border-right-style', 'border-right-width', 'border-spacing', 'border-style', 'border-top', 'border-top-color', 'border-top-style', 'border-top-width', 'border-width', 'caption-side', 'clear', 'cursor', 'direction', 'font', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'height', 'letter-spacing', 'line-height', 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'overflow', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'text-decoration', 'text-indent', 'vertical-align', 'width', 'display', ); foreach ($styles_wf as $style_wf) { $styles[] = $style_wf; } return $styles; }); $allowed_tags = wp_kses_allowed_html('post'); $allowed_tags['input'] = array( 'type' => true, 'style' => true, 'class' => true, 'id' => true, 'checked' => true, 'disabled' => true, 'name' => true, 'size' => true, 'placeholder' => true, 'value' => true, 'data-*' => true, 'size' => true, 'disabled' => true ); $allowed_tags['textarea'] = array( 'type' => true, 'style' => true, 'class' => true, 'id' => true, 'checked' => true, 'disabled' => true, 'name' => true, 'size' => true, 'placeholder' => true, 'value' => true, 'data-*' => true, 'cols' => true, 'rows' => true, 'disabled' => true, 'autocomplete' => true ); $allowed_tags['select'] = array( 'type' => true, 'style' => true, 'class' => true, 'id' => true, 'checked' => true, 'disabled' => true, 'name' => true, 'size' => true, 'placeholder' => true, 'value' => true, 'data-*' => true, 'multiple' => true, 'disabled' => true ); $allowed_tags['option'] = array( 'type' => true, 'style' => true, 'class' => true, 'id' => true, 'checked' => true, 'disabled' => true, 'name' => true, 'size' => true, 'placeholder' => true, 'value' => true, 'selected' => true, 'data-*' => true ); $allowed_tags['optgroup'] = array( 'type' => true, 'style' => true, 'class' => true, 'id' => true, 'checked' => true, 'disabled' => true, 'name' => true, 'size' => true, 'placeholder' => true, 'value' => true, 'selected' => true, 'data-*' => true, 'label' => true ); $allowed_tags['a'] = array( 'href' => true, 'data-*' => true, 'class' => true, 'style' => true, 'id' => true, 'target' => true, 'data-*' => true, 'role' => true, 'aria-controls' => true, 'aria-selected' => true, 'disabled' => true ); $allowed_tags['div'] = array( 'style' => true, 'class' => true, 'id' => true, 'data-*' => true, 'role' => true, 'aria-labelledby' => true, 'value' => true, 'aria-modal' => true, 'tabindex' => true ); $allowed_tags['li'] = array( 'style' => true, 'class' => true, 'id' => true, 'data-*' => true, 'role' => true, 'aria-labelledby' => true, 'value' => true, 'aria-modal' => true, 'tabindex' => true ); $allowed_tags['span'] = array( 'style' => true, 'class' => true, 'id' => true, 'data-*' => true, 'aria-hidden' => true ); $allowed_tags['style'] = array( 'class' => true, 'id' => true, 'type' => true ); $allowed_tags['fieldset'] = array( 'class' => true, 'id' => true, 'type' => true ); $allowed_tags['link'] = array( 'class' => true, 'id' => true, 'type' => true, 'rel' => true, 'href' => true, 'media' => true ); $allowed_tags['form'] = array( 'style' => true, 'class' => true, 'id' => true, 'method' => true, 'action' => true, 'data-*' => true ); $allowed_tags['script'] = array( 'class' => true, 'id' => true, 'type' => true, 'src' => true ); echo wp_kses($html, $allowed_tags); add_filter('safe_style_css', function ($styles) { $styles_wf = array( 'text-align', 'margin', 'color', 'float', 'border', 'background', 'background-color', 'border-bottom', 'border-bottom-color', 'border-bottom-style', 'border-bottom-width', 'border-collapse', 'border-color', 'border-left', 'border-left-color', 'border-left-style', 'border-left-width', 'border-right', 'border-right-color', 'border-right-style', 'border-right-width', 'border-spacing', 'border-style', 'border-top', 'border-top-color', 'border-top-style', 'border-top-width', 'border-width', 'caption-side', 'clear', 'cursor', 'direction', 'font', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'height', 'letter-spacing', 'line-height', 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'overflow', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'text-decoration', 'text-indent', 'vertical-align', 'width' ); foreach ($styles_wf as $style_wf) { if (($key = array_search($style_wf, $styles)) !== false) { unset($styles[$key]); } } return $styles; }); } }; inc/class-custom-sidebars-explain.php000064400000015522150211770060013677 0ustar00 singleton. * * @since 2.0.9.1 */ private function __construct() { $this->debug = false; $this->current_user_id = get_current_user_id(); if ( 0 == $this->current_user_id ) { $this->debug = apply_filters( 'custom_sidebars_explain', $this->debug ); } else { $this->debug = (boolean) get_user_meta( $this->current_user_id, 'custom_sidebars_explain', true ); $this->set_explain(); } add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 999 ); if ( false === $this->debug ) { return; } if ( is_admin() ) { return; } add_action( 'cs_explain', array( $this, 'add_info' ), 10, 2 ); add_action( 'wp_footer', array( $this, 'show_infos' ) ); add_action( 'dynamic_sidebar_before', array( $this, 'before_sidebar' ), 0, 2 ); add_action( 'dynamic_sidebar_after', array( $this, 'after_sidebar' ), 0, 2 ); add_action( 'wp_print_styles', array( $this, 'print_styles' ) ); } /** * Returns true if the "explain mode" is enabled. * Explain mode will display additional information in the front-end of the * website on why which sidebar/widget is displayed. * This is a per-user option (stored in current session) * * @since 2.0.9.1 * @return boolean */ public function do_explain() { return $this->debug; } /** * Sets the explain state * * @since 2.0.9.1 * @param string $state [on|off] */ public function set_explain() { if ( ! isset( $_GET['cs-explain'] ) ) { return; } if ( current_user_can( 'manage_options' ) && 'on' == $_GET['cs-explain'] ) { $this->debug = true; $result = add_user_meta( $this->current_user_id, 'custom_sidebars_explain', $this->debug, true ); if ( ! $result ) { update_user_meta( $this->current_user_id, 'custom_sidebars_explain', $this->debug ); } return; } $this->debug = false; delete_user_meta( $this->current_user_id, 'custom_sidebars_explain' ); } /** * Adds an info to the explanation output. * * @since 2.0.9.1 */ public function add_info( $info, $new_item = false ) { if ( $new_item || 0 === count( $this->infos ) ) { $this->infos[] = $info; } else { $this->infos[ count( $this->infos ) - 1 ] .= '
' . $info; } } /** * Outputs the collected information to the webpage. * * @since 2.0.9.1 */ public function show_infos() { ?>

Sidebar Infos

    infos as $info ) : ?>
' . '
%1$s
' . @$wp_registered_sidebars[ $index ]['before_widget']; $wp_registered_sidebars[ $index ]['after_widget'] = @$wp_registered_sidebars[ $index ]['after_widget'] . '
' . ''; ?>
'cs-explain', 'title' => __( 'Sidebar Debug', 'custom-sidebars' ), 'href' => add_query_arg( 'cs-explain', 'on' ), 'parent' => 'top-secondary', 'meta' => array( 'title' => __( 'Turn on Custom Sidebars explain mode.', 'custom-sidebars' ), 'class' => 'debug-is-off', ), ); if ( $this->debug ) { $args['href'] = add_query_arg( 'cs-explain', 'off' ); $args['meta'] = array( 'title' => __( 'Turn off Custom Sidebars explain mode.', 'custom-sidebars' ), 'class' => 'cs-explain-on', ); } $wp_admin_bar->add_node( $args ); } /** * Print style for debug * * @since 3.0.8 */ public function print_styles() { echo ''; } }; inc/integrations/class-custom-sidebars-integration.php000064400000002123150211770060017261 0ustar00key_name ] = array(); foreach ( $sidebars as $sb_id ) { if ( isset( $data[ $this->key_name ] ) ) { foreach ( $data[ $this->key_name ] as $sb_id => $value ) { if ( ! isset( $options[ $this->key_name ] ) ) { $options[ $this->key_name ] = array(); } foreach ( $value as $lang ) { $options[ $this->key_name ][ $lang ][ $sb_id ] = $id; } } } } return $options; } }; inc/integrations/class-custom-sidebars-integration-wpml.php000064400000005367150211770060020253 0ustar00 singleton. * * @since 3.1.2 */ private function __construct() { $languages = apply_filters( 'wpml_active_languages', array() ); if ( empty( $languages ) ) { return; } $this->key_name = 'wpml'; $this->languages = $languages; add_filter( 'custom_sidebars_integrations', array( $this, 'prepare' ) ); add_filter( 'custom_sidebars_get_location', array( $this, 'get_location' ), 10, 2 ); add_filter( 'custom_sidebars_set_location', array( $this, 'set_location' ), 10, 4 ); add_filter( 'cs_replace_sidebars', array( $this, 'replace' ), 10, 2 ); } /** * Save dismiss decision, no more show it. * * @since 3.1.2 */ public function prepare( $tabs ) { $tabs[ $this->key_name ] = array( 'title' => __( 'WPML', 'custom-sidebars' ), 'cat_name' => __( 'Language', 'custom-sidebars' ), ); return $tabs; } /** * Add languages * * @since 3.1.2 */ public function get_location( $req, $defaults ) { $req->wpml = array(); foreach ( $this->languages as $key => $lang ) { $req->wpml[ $key ] = array( 'name' => isset( $lang['translated_name'] )? $lang['translated_name']:$key, 'native' => isset( $lang['native_name'] )? $lang['native_name'] : '', 'archive' => array(), ); if ( isset( $defaults[ $this->key_name ] ) && isset( $defaults[ $this->key_name ][ $key ] ) ) { $req->wpml[ $key ]['archive'] = $defaults[ $this->key_name ][ $key ]; } } return $req; } /** * Replace sidebar * * @since 3.1.2 */ public function replace( $replacements, $options ) { if ( ! isset( $options[ $this->key_name ] ) ) { return $replacements; } $current_language = apply_filters( 'wpml_current_language', null ); if ( empty( $current_language ) ) { return $replacements; } foreach ( $replacements as $sb_id => $replacement ) { if ( ! empty( $replacement ) ) { continue; } if ( isset( $options[ $this->key_name ][ $current_language ] ) && isset( $options[ $this->key_name ][ $current_language ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options[ $this->key_name ][ $current_language ][ $sb_id ], $this->key_name, $current_language, ); } } return $replacements; } }; inc/integrations/class-custom-sidebars-integration-polylang.php000064400000006212150211770060021107 0ustar00 singleton. * * @since 3.1.2 */ private function __construct() { if ( ! defined( 'POLYLANG_VERSION' ) ) { return; } $this->key_name = 'polylang'; add_filter( 'custom_sidebars_integrations', array( $this, 'prepare' ) ); add_filter( 'custom_sidebars_get_location', array( $this, 'get_location' ), 10, 2 ); add_filter( 'custom_sidebars_set_location', array( $this, 'set_location' ), 10, 4 ); add_filter( 'cs_replace_sidebars', array( $this, 'replace' ), 10, 2 ); } private function check() { if ( ! function_exists( 'pll_the_languages' ) ) { return false; } if ( ! empty( $this->languages ) ) { return true; } $args = array( 'raw' => true, 'hide_if_empty' => false, ); $languages = pll_the_languages( $args ); if ( empty( $languages ) ) { return false; } $this->languages = $languages; return true; } /** * Save dismiss decision, no more show it. * * @since 3.1.2 */ public function prepare( $tabs ) { $tabs[ $this->key_name ] = array( 'title' => __( 'Polylang', 'custom-sidebars' ), 'cat_name' => __( 'Language', 'custom-sidebars' ), ); return $tabs; } /** * Add languages * * @since 3.1.2 */ public function get_location( $req, $defaults ) { $check = $this->check(); if ( ! $check ) { return $req; } $req->polylang = array(); foreach ( $this->languages as $key => $lang ) { $req->polylang[ $key ] = array( 'name' => $lang['name'], 'archive' => array(), ); if ( isset( $defaults[ $this->key_name ] ) && isset( $defaults[ $this->key_name ][ $key ] ) ) { $req->polylang[ $key ]['archive'] = $defaults[ $this->key_name ][ $key ]; } } return $req; } /** * Replace sidebar * * @since 3.1.2 */ public function replace( $replacements, $options ) { $check = $this->check(); if ( ! $check ) { return $replacements; } if ( ! isset( $options[ $this->key_name ] ) ) { return $replacements; } if ( ! function_exists( 'pll_current_language' ) ) { return $replacements; } $current_language = pll_current_language(); if ( empty( $current_language ) ) { return $replacements; } foreach ( $replacements as $sb_id => $replacement ) { if ( ! empty( $replacement ) ) { continue; } if ( isset( $options[ $this->key_name ][ $current_language ] ) && isset( $options[ $this->key_name ][ $current_language ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options[ $this->key_name ][ $current_language ][ $sb_id ], $this->key_name, $current_language, ); } } return $replacements; } }; inc/integrations/class-custom-sidebars-integration-wml.php000064400000005436150211770060020070 0ustar00 singleton. * * @since 3.2.0 */ private function __construct() { if ( ! function_exists( 'wpm_get_languages' ) ) { return; } $languages = wpm_get_languages(); if ( empty( $languages ) ) { return; } $this->key_name = 'wml'; $this->languages = $languages; add_filter( 'custom_sidebars_integrations', array( $this, 'prepare' ) ); add_filter( 'custom_sidebars_get_location', array( $this, 'get_location' ), 10, 2 ); add_filter( 'custom_sidebars_set_location', array( $this, 'set_location' ), 10, 4 ); add_filter( 'cs_replace_sidebars', array( $this, 'replace' ), 10, 2 ); } /** * Save dismiss decision, no more show it. * * @since 3.2.0 */ public function prepare( $tabs ) { $tabs[ $this->key_name ] = array( 'title' => __( 'WP Multilang', 'custom-sidebars' ), 'cat_name' => __( 'Language', 'custom-sidebars' ), ); return $tabs; } /** * Add languages * * @since 3.2.0 */ public function get_location( $req, $defaults ) { $req->wml = array(); foreach ( $this->languages as $key => $lang ) { $req->wml[ $key ] = array( 'name' => isset( $lang['name'] )? $lang['name'] : '', 'native' => isset( $lang['name'] )? $lang['name'] : '', 'archive' => array(), ); if ( isset( $defaults[ $this->key_name ] ) && isset( $defaults[ $this->key_name ][ $key ] ) ) { $req->wml[ $key ]['archive'] = $defaults[ $this->key_name ][ $key ]; } } return $req; } /** * Replace sidebar * * @since 3.2.0 */ public function replace( $replacements, $options ) { if ( ! isset( $options[ $this->key_name ] ) ) { return $replacements; } if ( ! function_exists( 'wpm_get_language' ) ) { return; } $current_language = wpm_get_language(); if ( empty( $current_language ) ) { return $replacements; } foreach ( $replacements as $sb_id => $replacement ) { if ( ! empty( $replacement ) ) { continue; } if ( isset( $options[ $this->key_name ][ $current_language ] ) && isset( $options[ $this->key_name ][ $current_language ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options[ $this->key_name ][ $current_language ][ $sb_id ], $this->key_name, $current_language, ); } } return $replacements; } }; inc/class-custom-sidebars-replacer.php000064400000062343150211770060014037 0ustar00 singleton. * * @since 2.0 */ private function __construct() { add_action( 'widgets_init', array( $this, 'register_custom_sidebars' ) ); // Support translation via WPML plugin. add_action( 'register_sidebar', array( $this, 'translate_sidebar' ) ); if ( ! is_admin() ) { // Frontend hooks. add_action( 'wp_head', array( $this, 'replace_sidebars' ) ); add_action( 'wp', array( $this, 'store_original_post_id' ) ); /** * print styles for media query * * @since 3.2.0 */ add_action( 'wp_print_styles', array( $this, 'add_custom_css_for_media' ) ); } } /** * Add css styles for custom media width * * @since 3.2.0 */ public function add_custom_css_for_media() { global $wp_registered_sidebars, $_wp_sidebars_widgets; $defaults = self::get_options(); $replacements = $this->determine_replacements( $defaults ); foreach ( $replacements as $sb_id => $replace_info ) { if ( empty( $replace_info ) || ! is_array( $replace_info ) ) { continue; } $replacement = array_shift( $replace_info ); if ( empty( $replacement ) || ! is_string( $replacement ) ) { continue; } if ( isset( $defaults['screen'] ) && isset( $defaults['screen'][ $replacement ] ) ) { $css = ''; $css_before = array(); foreach ( $defaults['screen'][ $replacement ] as $css_size => $css_data ) { if ( empty( $css_data ) ) { continue; } foreach ( $css_data as $css_minmax => $css_mode ) { if ( empty( $css_size ) ) { continue; } if ( ! isset( $_wp_sidebars_widgets[ $replacement ] ) || empty( $_wp_sidebars_widgets[ $replacement ] ) ) { continue; } $css_selectors = array_map( array( $this, 'convert_do_css_id' ), $_wp_sidebars_widgets[ $replacement ] ); $css_before[] = sprintf( '%s { display: none }', implode( ', ', $css_selectors ) ); if ( 'max' === $css_minmax ) { $css .= sprintf( '@media screen and ( %s-width: %dpx ) { %s { display: %s; } }', esc_attr( $css_minmax ), esc_attr( $css_size ), implode( ', ', $css_selectors ), 'hide' === $css_mode ? 'none':'initial' ); $css .= PHP_EOL; } else { $css = sprintf( '@media screen and ( %s-width: %dpx ) { %s { display: %s; } }%s%s', esc_attr( $css_minmax ), esc_attr( $css_size ), implode( ', ', $css_selectors ), 'hide' === $css_mode ? 'none':'initial', PHP_EOL, $css ); } } } if ( ! empty( $css ) ) { $css_before = array_unique( $css_before ); echo ''; echo PHP_EOL; } } } } /** * Tell WordPress about the custom sidebars. */ public function register_custom_sidebars() { $sb = self::get_custom_sidebars(); $sb = CustomSidebars::sort_sidebars_by_name( $sb ); foreach ( $sb as $sidebar ) { /** * Filter sidebar options for custom sidebars. * * @since 2.0 * * @param array $sidebar Options used by WordPress to display * the sidebar. */ $sidebar = apply_filters( 'cs_sidebar_params', $sidebar ); register_sidebar( $sidebar ); } } /** * Stores the original post id before any plugin (buddypress) can modify this data, to show the proper sidebar. */ public function store_original_post_id() { global $post; if ( isset( $post->ID ) ) { $this->original_post_id = $post->ID; } } /** * Replace the sidebars on current page with some custom sidebars. * Sidebars are replaced by directly modifying the WordPress globals * `$_wp_sidebars_widgets` and `$wp_registered_sidebars` * * What it really does it not replacing a specific *sidebar* but simply * replacing all widgets inside the theme sidebars with the widgets of the * custom defined sidebars. */ public function replace_sidebars() { global $_wp_sidebars_widgets, $wp_registered_sidebars, $wp_registered_widgets; $custom_sidebars_explain = CustomSidebarsExplain::instance(); $expl = $custom_sidebars_explain->do_explain(); $expl && do_action( 'cs_explain', '

Replace sidebars

', true ); do_action( 'cs_before_replace_sidebars' ); /** * Original sidebar configuration by WordPress: * Lists sidebars and all widgets inside each sidebar. */ $original_widgets = $_wp_sidebars_widgets; $defaults = self::get_options(); /** * Fires before determining sidebar replacements. * * @param array $defaults Array of the default sidebars for the page. */ do_action( 'cs_predetermine_replacements', $defaults ); // Legacy handler with camelCase do_action( 'cs_predetermineReplacements', $defaults ); $replacements = $this->determine_replacements( $defaults ); foreach ( $replacements as $sb_id => $replace_info ) { if ( ! is_array( $replace_info ) || count( $replace_info ) < 3 ) { $expl && do_action( 'cs_explain', 'Replacement for "' . $sb_id . '": -none-' ); continue; } // Fix rare message "illegal offset type in isset or empty" $replacement = (string) @$replace_info[0]; $replacement_type = (string) @$replace_info[1]; $extra_index = (string) @$replace_info[2]; $check = $this->is_valid_replacement( $sb_id, $replacement, $replacement_type, $extra_index ); if ( $check && isset( $original_widgets[ $replacement ] ) ) { $expl && do_action( 'cs_explain', 'Replacement for "' . $sb_id . '": ' . $replacement ); if ( sizeof( $original_widgets[ $replacement ] ) == 0 ) { // No widgets on custom sidebar, show nothing. $wp_registered_widgets['csemptywidget'] = $this->get_empty_widget(); $_wp_sidebars_widgets[ $sb_id ] = array( 'csemptywidget' ); } else { $_wp_sidebars_widgets[ $sb_id ] = $original_widgets[ $replacement ]; /** * When custom sidebars use some wrapper code (before_title, * after_title, ...) then we need to strip-slashes for this * wrapper code to work properly */ $sidebar_for_replacing = $wp_registered_sidebars[ $replacement ]; if ( $this->has_wrapper_code( $sidebar_for_replacing ) ) { $sidebar_for_replacing = $this->clean_wrapper_code( $sidebar_for_replacing ); $wp_registered_sidebars[ $sb_id ] = $sidebar_for_replacing; } } $wp_registered_sidebars[ $sb_id ]['class'] = $replacement; } else { // endif: is_valid_replacement $expl && do_action( 'cs_explain', 'Replacement for "' . $sb_id . '": -none-' ); } } // endforeach } /** * THIS IS THE ACTUAL LOGIC OF THE PLUGIN * * Here we find out if some sidebars should be replaced, and if it is * replaced we determine which custom sidebar to use. * * @param array $options Plugin options with the replacement rules. * @return array List of the replaced sidebars. */ public function determine_replacements( $options ) { global $post, $sidebar_category; $sidebars = self::get_options( 'modifiable' ); $replacements_todo = sizeof( $sidebars ); $replacements = array(); $custom_sidebars_explain = CustomSidebarsExplain::instance(); $expl = $custom_sidebars_explain->do_explain(); foreach ( $sidebars as $sb ) { $replacements[ $sb ] = false; } // 1 |== Single posts/pages -------------------------------------------- if ( is_singular() && ! is_home() && ! is_front_page() ) { $post_type = get_post_type(); $post_type = apply_filters( 'cs_replace_post_type', $post_type, 'single' ); $expl && do_action( 'cs_explain', 'Type 1: Single ' . ucfirst( $post_type ) ); if ( ! self::supported_post_type( $post_type ) ) { $expl && do_action( 'cs_explain', 'Invalid post type, use default sidebars.' ); return $options; } // 1.1 Check if replacements are defined in the post metadata. $reps = self::get_post_meta( $this->original_post_id ); foreach ( $sidebars as $sb_id ) { if ( is_array( $reps ) && ! empty( $reps[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps[ $sb_id ], 'particular', -1, ); $replacements_todo -= 1; } } // 1.2 Try to use the parents metadata. if ( $post->post_parent != 0 && $replacements_todo > 0 ) { $reps = self::get_post_meta( $post->post_parent ); foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( is_array( $reps ) && ! empty( $reps[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps[ $sb_id ], 'particular', -1, ); $replacements_todo -= 1; } } } // 1.3 If no metadata set then use the category settings. if ( $replacements_todo > 0 ) { $categories = self::get_sorted_categories(); $ind = sizeof( $categories ) -1; while ( $replacements_todo > 0 && $ind >= 0 ) { $cat_id = $categories[ $ind ]->cat_ID; foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( ! empty( $options['category_single'][ $cat_id ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['category_single'][ $cat_id ][ $sb_id ], 'category_single', $sidebar_category, ); $replacements_todo -= 1; } } $ind -= 1; } } // 1.4 Look for post-type level replacements. if ( $replacements_todo > 0 ) { foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( isset( $options['post_type_single'][ $post_type ] ) && ! empty( $options['post_type_single'][ $post_type ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['post_type_single'][ $post_type ][ $sb_id ], 'post_type_single', $post_type, ); $replacements_todo -= 1; } } } } elseif ( is_category() ) { // 2 |== Category archive ---------------------------------------------- $expl && do_action( 'cs_explain', 'Type 2: Category Archive' ); /** * 2.1 Category archive */ foreach ( $sidebars as $sb_id ) { if ( ! $replacements[ $sb_id ] && isset( $options['category_archive'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['category_archive'][ $sb_id ], 'category_archive', 0, ); } } /** * 2.2 Start at current category and travel up all parents */ $category_object = get_queried_object(); $current_category = $category_object->term_id; if ( 0 != $current_category && $replacements_todo > 0 ) { foreach ( $sidebars as $sb_id ) { if ( isset( $options['category_archive'] ) && isset( $options['category_archive'][ $current_category ] ) && isset( $options['category_archive'][ $current_category ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['category_archive'][ $current_category ][ $sb_id ], 'category_archive', $current_category, ); } } $current_category = $category_object->category_parent; if ( 0 != $current_category ) { $category_object = get_category( $current_category ); } } } elseif ( is_search() ) { // 3 |== Search -------------------------------------------------------- // Must be before the post-type archive section; otherwise a search with // no results is recognized as post-type archive... $expl && do_action( 'cs_explain', 'Type 3: Search Results' ); foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['search'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['search'][ $sb_id ], 'search', -1, ); } } } elseif ( ! is_tax() && ! is_404() && ! is_category() && ! is_singular() && get_post_type() != 'post' ) { // 4 |== Post-Tpe Archive ---------------------------------------------- // `get_post_type() != 'post'` .. post-archive = post-index (see 7) $post_type = get_post_type(); $post_type = apply_filters( 'cs_replace_post_type', $post_type, 'archive' ); $expl && do_action( 'cs_explain', 'Type 4: ' . ucfirst( $post_type ) . ' Archive' ); if ( ! self::supported_post_type( $post_type ) ) { $expl && do_action( 'cs_explain', 'Invalid post type, use default sidebars.' ); return $options; } foreach ( $sidebars as $sb_id ) { if ( isset( $options['post_type_archive'][ $post_type ] ) && ! empty( $options['post_type_archive'][ $post_type ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['post_type_archive'][ $post_type ][ $sb_id ], 'post_type_archive', $post_type, ); $replacements_todo -= 1; } } } elseif ( is_page() && ! is_front_page() ) { // 5 |== Page ---------------------------------------------------------- // `! is_front_page()` .. in case the site uses static front page. $post_type = get_post_type(); $post_type = apply_filters( 'cs_replace_post_type', $post_type, 'page' ); $expl && do_action( 'cs_explain', 'Type 5: ' . ucfirst( $post_type ) ); if ( ! self::supported_post_type( $post_type ) ) { $expl && do_action( 'cs_explain', 'Invalid post type, use default sidebars.' ); return $options; } // 5.1 Check if replacements are defined in the post metadata. $reps = self::get_post_meta( $this->original_post_id ); foreach ( $sidebars as $sb_id ) { if ( is_array( $reps ) && ! empty( $reps[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps[ $sb_id ], 'particular', -1, ); $replacements_todo -= 1; } } // 5.2 Try to use the parents metadata. $post_orginal = $post; while ( $replacements_todo > 0 && $post->post_parent > 0 ) { if ( $replacements_todo > 0 ) { $reps = self::get_post_meta( $post->post_parent ); foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( is_array( $reps ) && ! empty( $reps[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps[ $sb_id ], 'particular', -1, ); } } $post = get_post( $post->post_parent ); } } $post = $post_orginal; // 5.3 Look for post-type level replacements. if ( $replacements_todo > 0 ) { foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( isset( $options['post_type_single'][ $post_type ] ) && ! empty( $options['post_type_single'][ $post_type ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['post_type_single'][ $post_type ][ $sb_id ], 'post_type_single', $post_type, ); $replacements_todo -= 1; } } } } elseif ( is_front_page() ) { // 6 |== Front Page ---------------------------------------------------- /* * The front-page of the site. Either * - the post-index (default) or * - a static front-page. */ $expl && do_action( 'cs_explain', 'Type 6: Front Page' ); if ( ! is_home() ) { // A static front-page. Maybe we need the post-meta data... $reps_post = self::get_post_meta( $this->original_post_id ); $reps_parent = self::get_post_meta( $post->post_parent ); } foreach ( $sidebars as $sb_id ) { // First check if there is a 'Front Page' replacement. if ( ! empty( $options['blog'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['blog'][ $sb_id ], 'blog', -1, ); } else if ( ! is_home() ) { // There is no 'Front Page' reaplcement and this is a static // front page, so check if the page has a replacement. // 6.1 Check if replacements are defined in the post metadata. if ( is_array( $reps_post ) && ! empty( $reps_post[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps_post[ $sb_id ], 'particular', -1, ); $replacements_todo -= 1; } // 6.2 Try to use the parents metadata. if ( $post->post_parent != 0 && $replacements_todo > 0 ) { if ( $replacements[ $sb_id ] ) { continue; } if ( is_array( $reps_parent ) && ! empty( $reps_parent[ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $reps_parent[ $sb_id ], 'particular', -1, ); $replacements_todo -= 1; } } } } } elseif ( is_home() ) { // 7 |== Post Index ---------------------------------------------------- /* * The post-index of the site. Either * - the front-page (default) * - when a static front page is used the post-index page. * * Note: When the default front-page is used the condition 6 * "is_front_page" above is used and this node is never executed. */ $expl && do_action( 'cs_explain', 'Type 7: Post Index' ); foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['post_type_archive']['post'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['post_type_archive']['post'][ $sb_id ], 'postindex', -1, ); } } } elseif ( is_tag() ) { // 8 |== Tag archive --------------------------------------------------- $expl && do_action( 'cs_explain', 'Type 8: Tag Archive' ); foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['tags'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['tags'][ $sb_id ], 'tags', -1, ); } } } elseif ( is_author() ) { // 9 |== Author archive ------------------------------------------------ $author_object = get_queried_object(); $current_author = $author_object->ID; $expl && do_action( 'cs_explain', 'Type 9: Author Archive (' . $current_author . ')' ); // 9.1 First check for specific authors. foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['author_archive'][ $current_author ][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['author_archive'][ $current_author ][ $sb_id ], 'author_archive', $current_author, ); $replacements_todo -= 1; } } // 9.2 Then check if there is an "Any authors" sidebar if ( $replacements_todo > 0 ) { foreach ( $sidebars as $sb_id ) { if ( $replacements[ $sb_id ] ) { continue; } if ( ! empty( $options['authors'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['authors'][ $sb_id ], 'authors', -1, ); } } } } elseif ( is_date() ) { // 10 |== Date archive ------------------------------------------------- $expl && do_action( 'cs_explain', 'Type 10: Date Archive' ); foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['date'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['date'][ $sb_id ], 'date', -1, ); } } } elseif ( is_404() ) { // 11 |== 404 not found ------------------------------------------------ $expl && do_action( 'cs_explain', 'Type 11: 404 not found' ); foreach ( $sidebars as $sb_id ) { if ( ! empty( $options['404'][ $sb_id ] ) ) { $replacements[ $sb_id ] = array( $options['404'][ $sb_id ], '404', -1, ); } } } elseif ( is_tax() ) { // 12 |== Taxonomy Archive ---------------------------------------------- $current_term = get_queried_object(); $taxonomy = $current_term->taxonomy; $taxonomy = apply_filters( 'cs_replace_taxonomy', $taxonomy, 'archive' ); $expl && do_action( 'cs_explain', 'Type 12: ' . ucfirst( $taxonomy ) . ' Archive' ); foreach ( $sidebars as $sb_id ) { if ( isset( $options['taxonomies_archive'] ) && isset( $options['taxonomies_archive'][ $taxonomy ] ) && isset( $options['taxonomies_archive'][ $taxonomy ][ $sb_id ] ) ) { $expl && do_action( 'cs_explain', 'Replacement for custom taxonomy archive"' . $taxonomy ); $replacements[ $sb_id ] = array( $options['taxonomies_archive'][ $taxonomy ][ $sb_id ], 'taxonomies_archive', -1, ); } /** * replace for single taxonomy */ if ( isset( $options['taxonomies_single'] ) && isset( $options['taxonomies_single'][ $taxonomy ] ) && isset( $options['taxonomies_single'][ $taxonomy ][ $current_term->term_id ] ) && isset( $options['taxonomies_single'][ $taxonomy ][ $current_term->term_id ][ $sb_id ] ) ) { $expl && do_action( 'cs_explain', 'Replacement for custom taxonomy ("' . $taxonomy . ') - '.$current_term->name ); $replacements[ $sb_id ] = array( $options['taxonomies_single'][ $taxonomy ][ $current_term->term_id ][ $sb_id ], 'taxonomies_single', -1, ); } } } /** * Filter the replaced sidebars before they are processed by the plugin. * * @since 2.0 * @since 3.1.2 added param $options * * @param array $replacements List of the final/replaced sidebars. * @param array $options Custom Sidebars settings. */ $replacements = apply_filters( 'cs_replace_sidebars', $replacements, $options ); return $replacements; } /** * Makes sure that the replacement sidebar exists. * If the custom sidebar does not exist then the WordPress/Post options are * updated to remove the invalid option. * * @since 1.0.0 * @param string $sb_id The original sidebar (the one that is replaced). * @param string $replacement ID of the custom sidebar that should be used. * @param string $method Info where the replacement setting is saved. * @param int|string $extra_index Depends on $method - can be either one: * empty/post-type/category-ID * @return bool */ public function is_valid_replacement( $sb_id, $replacement, $method, $extra_index ) { global $wp_registered_sidebars; $options = self::get_options(); if ( isset( $wp_registered_sidebars[ $replacement ] ) ) { // Everything okay, we can use the replacement return true; } /* * The replacement sidebar was not registered. Something's wrong, so we * update the options and not try to replace this sidebar again. */ if ( 'particular' == $method ) { // Invalid replacement was found in post-meta data. $sidebars = self::get_post_meta( $this->original_post_id ); if ( $sidebars && isset( $sidebars[ $sb_id ] ) ) { unset( $sidebars[ $sb_id ] ); self::set_post_meta( $this->original_post_id, $sidebars ); } } else { // Invalid replacement is defined in wordpress options table. if ( isset( $options[ $method ] ) ) { if ( -1 != $extra_index && isset( $options[ $method ][ $extra_index ] ) && isset( $options[ $method ][ $extra_index ][ $sb_id ] ) ) { unset( $options[ $method ][ $extra_index ][ $sb_id ] ); self::set_options( $options ); } if ( 1 == $extra_index && isset( $options[ $method ] ) && isset( $options[ $method ][ $sb_id ] ) ) { unset( $options[ $method ][ $sb_id ] ); self::set_options( $options ); } } } return false; } /** * Returns an empty dummy-widget. This dummy widget is used when a custom * sidebar has no widgets. * * @since 1.0.0 */ public function get_empty_widget() { $widget = new CustomSidebarsEmptyPlugin(); return array( 'name' => 'CS Empty Widget', 'id' => 'csemptywidget', 'callback' => array( $widget, 'display_callback' ), 'params' => array( array( 'number' => 2 ) ), 'classname' => 'CustomSidebarsEmptyPlugin', 'description' => 'CS dummy widget', ); } /** * Checks if the specified sidebar uses custom wrapper code. * * @since 1.2 * @return bool */ public function has_wrapper_code( $sidebar ) { return ( strlen( trim( $sidebar['before_widget'] ) ) || strlen( trim( $sidebar['after_widget'] ) ) || strlen( trim( $sidebar['before_title'] ) ) || strlen( trim( $sidebar['after_title'] ) ) ); } /** * Clean the slashes of the custom sidebar wrapper code. * * @since 1.2 */ public function clean_wrapper_code( $sidebar ) { $sidebar['before_widget'] = stripslashes( $sidebar['before_widget'] ); $sidebar['after_widget'] = stripslashes( $sidebar['after_widget'] ); $sidebar['before_title'] = stripslashes( $sidebar['before_title'] ); $sidebar['after_title'] = stripslashes( $sidebar['after_title'] ); return $sidebar; } /** * Translates a sidebar using WPML right after it was registered. * * @since 2.0.9.7 * @param array $sidebar The sidebar that was registered */ public function translate_sidebar( $sidebar ) { if ( ! function_exists( 'icl_t' ) ) { return false; } global $wp_registered_sidebars; $context = 'Sidebar'; // Translate the name and description. $sidebar['name'] = icl_t( $context, $sidebar['id'] . '-name', $sidebar['name'] ); $sidebar['description'] = icl_t( $context, $sidebar['id'] . '-description', $sidebar['description'] ); $wp_registered_sidebars[ $sidebar['id'] ] = $sidebar; } /** * Convert to CSS ID. * * @since 3.2.0 */ private function convert_do_css_id( $v ) { return sprintf( '#%s', esc_attr( $v ) ); } }; inc/class-custom-sidebars-cloning.php000064400000022143150211770060013665 0ustar00 singleton. * * @since 2.0 */ private function __construct() { if ( is_admin() ) { // in_widget_form: Add our button inside each widget. add_action( 'in_widget_form', array( $this, 'admin_widget_button' ), 10, 3 ); // in_widget_form: Update data of widget-group (see notes below). add_action( 'in_widget_form', array( $this, 'update_widget_group' ), 10, 3 ); // When the widget is saved (via Ajax) we save our options. add_filter( 'widget_update_callback', array( $this, 'admin_widget_update' ), 9999, 4 ); // Load the javascript support file for this module. $javascript_file = 'cs-cloning.min.js'; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { $javascript_file = 'cs-cloning.js'; } lib3()->ui->add( CSB_JS_URL . $javascript_file, 'widgets.php' ); lib3()->ui->add( CSB_CSS_URL . 'cs-cloning.css', 'widgets.php' ); } } /** * Extracts and sanitizes the CSB cloning data from the widget instance. * Cloning data contains the parent widget. * * @since 2.0 * @param array $instance The widget instance data. * @return array Sanitized CSB cloning data. */ protected function get_widget_data( $instance ) { $data = array(); if ( isset( $instance['csb_clone'] ) ) { $data = $instance['csb_clone']; } if ( ! is_array( $data ) ) { $data = array(); } // group: ID of the group if ( isset( $data['group'] ) && is_numeric( $data['group'] ) && $data['group'] > 0 ) { $group = preg_replace( '/^.*-(\d+)$/', '$1', $data['group'] ); $state = @$data['state']; } else { $group = $this->new_group_id(); $state = 'new'; $data['group'] = intval( $group ); } // state: ok|empty|new if ( ! in_array( $state, array( 'ok', 'empty', 'new' ) ) ) { $state = 'new'; } $data['state'] = $state; return $data; } /** * Returns a new/unique group-ID. * * @since 2.0 */ protected function new_group_id() { global $wp_registered_widgets; static $Used_ids = null; $group_id = 1; if ( null === $Used_ids ) { $Used_ids = array(); // Loop though all widgets to fetch used IDs. foreach ( $wp_registered_widgets as $id => $data ) { if ( ! isset( $data['callback'] ) ) { continue; } if ( ! is_array( $data['callback'] ) ) { continue; } $widget = reset( $data['callback'] ); $settings = false; if ( is_object( $widget ) && method_exists( $widget, 'get_settings' ) ) { $settings = $widget->get_settings(); } // Check the database settings of the widget to find group IDs. if ( is_array( $settings ) ) { foreach ( $settings as $instance ) { if ( ! isset( $instance['csb_clone'] ) ) { continue; } if ( ! empty( $instance['csb_clone']['group'] ) ) { $group = $instance['csb_clone']['group']; if ( ! in_array( $group, $Used_ids ) ) { $Used_ids[] = $group; } } // endif: empty(group) } // endforeach } // endif: is_array() } // endforeach } // Find the first free group-ID. while ( in_array( $group_id, $Used_ids ) ) { $group_id += 1; } $Used_ids[] = $group_id; return $group_id; } /** * Finds the settings for the specified group inside the settings array. * * @since 2.0 */ protected function settings_for_group( $settings, $group ) { if ( is_numeric( $group ) && $group > 0 ) { foreach ( $settings as $data ) { $item_group = @$data['csb_clone']['group']; $item_status = @$data['csb_clone']['state']; if ( $group == $item_group && 'ok' == $item_status ) { return $data; } } } function_exists( 'wp_debug' ) && wp_debug( 'class-custom-sidebars-cloning.php:162', 'FAILED' ); return false; } /** * Action handler for 'in_widget_form' * * @since 2.0 */ public function admin_widget_button( $widget, $return, $instance ) { $data = $this->get_widget_data( $instance ); $is_linked = (0 != $data['group']); ?>
id ) ) : ?>
group_data. {@see update_linked_widgets} * * After the widget_update_callback filter is called the widget is rendered * again. Now the in_widget_form hook is called. It is not related to saving * the widget but provides a way to update the settings in chronolically * correct order, this is why we hijack it for saving settings... * * @since 2.0 */ public function update_widget_group( $widget, $return, $instance ) { if ( ! empty( $this->group_data ) ) { $widget->save_settings( $this->group_data ); } } /** * Apply cloning logic when user saves the widget. * * @since 2.0 * @param array $new_instance New settings for this instance as input by the user. * @param array $old_instance Old settings for this instance. * @param WP_Widget $widget The current widget instance. * @return array Modified settings. */ public function admin_widget_update( $instance, $new_instance, $old_instance, $widget ) { $data = $this->get_widget_data( $_POST ); $instance['csb_clone'] = $data; $settings = $widget->get_settings(); $my_id = $widget->number; switch ( @$instance['csb_clone']['state'] ) { case 'empty': return $this->populate_widget( $my_id, $settings, $instance, $widget ); break; case 'ok': return $this->update_linked_widgets( $my_id, $settings, $instance, $widget ); break; default: $instance['csb_clone']['state'] = 'ok'; return $instance; } } /** * This function returns the $instance data of a new clone. The data is * populated with the values of the widget-group. */ protected function populate_widget( $id, $settings, $instance, $widget ) { $instance['csb_clone']['state'] = 'ok'; if ( ! isset( $instance['csb_clone']['group'] ) ) { // Widget does not have any cloning information. return $instance; } $group = $instance['csb_clone']['group']; if ( empty( $group ) ) { // Widget does not have a group (anymore). return $instance; } $group_data = $this->settings_for_group( $settings, $group ); if ( empty( $group_data ) ) { // The specified group does not exist (anymore). return $instance; } // Success, fetch the config from group! $instance = $group_data; return $instance; } /** * Update ALL widgets in the same group as the specified widget. */ protected function update_linked_widgets( $id, $settings, $instance, $widget ) { $instance['csb_clone']['state'] = 'ok'; $group_data = $instance; $my_group = @$group_data['csb_clone']['group']; foreach ( $settings as $key => $the_inst ) { if ( ! isset( $the_inst['csb_clone']['group'] ) ) { // Widget does not have any cloning information. continue; } $group = $the_inst['csb_clone']['group']; if ( empty( $group ) ) { // Widget does not have a group (anymore). continue; } if ( $group != $my_group ) { // This widget does not belong to the current group. continue; } // Success, this widget needs to be updated! $settings[ $key ] = $group_data; } $settings[ $id ] = $group_data; $this->group_data = $settings; return $instance; } }; inc/class-custom-sidebars-checkup-notification.php000064400000010543150211770060016343 0ustar00 singleton. * * @since 3.0.0 */ private function __construct() { if ( ! is_admin() ) { return; } //add_action( 'admin_head', array( $this, 'init_admin_head' ) ); add_action( 'admin_head-widgets.php', array( $this, 'init_admin_head_in_widgets' ) ); add_action( 'wp_ajax_custom_sidebars_checkup_notification_dismiss', array( $this, 'dismiss' ) ); } /** * Save dismiss decision, no more show it. * * @since 3.0.0 */ public function dismiss() { /** * Check: is nonce send? */ if ( ! isset( $_GET['_wpnonce'] ) ) { die; } /** * Check: is user id send? */ if ( ! isset( $_GET['user_id'] ) ) { die; } /** * Check: nonce */ $nonce_name = $this->nonce_name . sanitize_key($_GET['user_id']); if ( ! wp_verify_nonce( $_GET['_wpnonce'], $nonce_name ) ) { die; } /** * save result */ $result = add_user_meta( sanitize_key($_GET['user_id']), $this->dismiss_name, true, true ); if ( false == $result ) { update_user_meta( sanitize_key($_GET['user_id']), $this->dismiss_name, true ); } die; } /** * Admin header * * @since 3.0.0 */ public function init_admin_head() { } /** * Admin header * * @since 3.0.1 */ public function init_admin_head_in_widgets() { add_action( 'admin_notices', array( $this, 'admin_notices' ) ); } /** * Admin notice! * * @since 3.0.0 */ public function admin_notices() { wp_enqueue_script( 'wp-util' ); $this->show_box( 'wf_ads' ); } /** * Show box. * * @since 3.0.4 * * @param string $template_name Template name. */ private function show_box( $template_name ) { $method = sprintf( 'show_box_%s', $template_name ); if ( ! method_exists( $this, $method ) ) { return; } ?>

Having problems with SSL?
Generate a free certificate & properly redirect to HTTPS with a few clicks

Need to make any element on your site sticky?
Header menu, a widget, or an image?

li { position: relative; } .fa-li { left: -2em; position: absolute; text-align: center; width: 2em; line-height: inherit; } .fa-border { border: solid 0.08em #eee; border-radius: .1em; padding: .2em .25em .15em; } .fa-pull-left { float: left; } .fa-pull-right { float: right; } .fa.fa-pull-left, .fas.fa-pull-left, .far.fa-pull-left, .fal.fa-pull-left, .fab.fa-pull-left { margin-right: .3em; } .fa.fa-pull-right, .fas.fa-pull-right, .far.fa-pull-right, .fal.fa-pull-right, .fab.fa-pull-right { margin-left: .3em; } .fa-spin { animation: fa-spin 2s infinite linear; } .fa-pulse { animation: fa-spin 1s infinite steps(8); } @keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .fa-rotate-90 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; transform: rotate(90deg); } .fa-rotate-180 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; transform: rotate(180deg); } .fa-rotate-270 { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; transform: rotate(270deg); } .fa-flip-horizontal { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; transform: scale(-1, 1); } .fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; transform: scale(1, -1); } .fa-flip-horizontal.fa-flip-vertical { -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; transform: scale(-1, -1); } :root .fa-rotate-90, :root .fa-rotate-180, :root .fa-rotate-270, :root .fa-flip-horizontal, :root .fa-flip-vertical { filter: none; } .fa-stack { display: inline-block; height: 2em; line-height: 2em; position: relative; vertical-align: middle; width: 2em; } .fa-stack-1x, .fa-stack-2x { left: 0; position: absolute; text-align: center; width: 100%; } .fa-stack-1x { line-height: inherit; } .fa-stack-2x { font-size: 2em; } .fa-inverse { color: #fff; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .fa-500px:before { content: "\f26e"; } .fa-accessible-icon:before { content: "\f368"; } .fa-accusoft:before { content: "\f369"; } .fa-address-book:before { content: "\f2b9"; } .fa-address-card:before { content: "\f2bb"; } .fa-adjust:before { content: "\f042"; } .fa-adn:before { content: "\f170"; } .fa-adversal:before { content: "\f36a"; } .fa-affiliatetheme:before { content: "\f36b"; } .fa-algolia:before { content: "\f36c"; } .fa-align-center:before { content: "\f037"; } .fa-align-justify:before { content: "\f039"; } .fa-align-left:before { content: "\f036"; } .fa-align-right:before { content: "\f038"; } .fa-allergies:before { content: "\f461"; } .fa-amazon:before { content: "\f270"; } .fa-amazon-pay:before { content: "\f42c"; } .fa-ambulance:before { content: "\f0f9"; } .fa-american-sign-language-interpreting:before { content: "\f2a3"; } .fa-amilia:before { content: "\f36d"; } .fa-anchor:before { content: "\f13d"; } .fa-android:before { content: "\f17b"; } .fa-angellist:before { content: "\f209"; } .fa-angle-double-down:before { content: "\f103"; } .fa-angle-double-left:before { content: "\f100"; } .fa-angle-double-right:before { content: "\f101"; } .fa-angle-double-up:before { content: "\f102"; } .fa-angle-down:before { content: "\f107"; } .fa-angle-left:before { content: "\f104"; } .fa-angle-right:before { content: "\f105"; } .fa-angle-up:before { content: "\f106"; } .fa-angrycreative:before { content: "\f36e"; } .fa-angular:before { content: "\f420"; } .fa-app-store:before { content: "\f36f"; } .fa-app-store-ios:before { content: "\f370"; } .fa-apper:before { content: "\f371"; } .fa-apple:before { content: "\f179"; } .fa-apple-pay:before { content: "\f415"; } .fa-archive:before { content: "\f187"; } .fa-arrow-alt-circle-down:before { content: "\f358"; } .fa-arrow-alt-circle-left:before { content: "\f359"; } .fa-arrow-alt-circle-right:before { content: "\f35a"; } .fa-arrow-alt-circle-up:before { content: "\f35b"; } .fa-arrow-circle-down:before { content: "\f0ab"; } .fa-arrow-circle-left:before { content: "\f0a8"; } .fa-arrow-circle-right:before { content: "\f0a9"; } .fa-arrow-circle-up:before { content: "\f0aa"; } .fa-arrow-down:before { content: "\f063"; } .fa-arrow-left:before { content: "\f060"; } .fa-arrow-right:before { content: "\f061"; } .fa-arrow-up:before { content: "\f062"; } .fa-arrows-alt:before { content: "\f0b2"; } .fa-arrows-alt-h:before { content: "\f337"; } .fa-arrows-alt-v:before { content: "\f338"; } .fa-assistive-listening-systems:before { content: "\f2a2"; } .fa-asterisk:before { content: "\f069"; } .fa-asymmetrik:before { content: "\f372"; } .fa-at:before { content: "\f1fa"; } .fa-audible:before { content: "\f373"; } .fa-audio-description:before { content: "\f29e"; } .fa-autoprefixer:before { content: "\f41c"; } .fa-avianex:before { content: "\f374"; } .fa-aviato:before { content: "\f421"; } .fa-aws:before { content: "\f375"; } .fa-backward:before { content: "\f04a"; } .fa-balance-scale:before { content: "\f24e"; } .fa-ban:before { content: "\f05e"; } .fa-band-aid:before { content: "\f462"; } .fa-bandcamp:before { content: "\f2d5"; } .fa-barcode:before { content: "\f02a"; } .fa-bars:before { content: "\f0c9"; } .fa-baseball-ball:before { content: "\f433"; } .fa-basketball-ball:before { content: "\f434"; } .fa-bath:before { content: "\f2cd"; } .fa-battery-empty:before { content: "\f244"; } .fa-battery-full:before { content: "\f240"; } .fa-battery-half:before { content: "\f242"; } .fa-battery-quarter:before { content: "\f243"; } .fa-battery-three-quarters:before { content: "\f241"; } .fa-bed:before { content: "\f236"; } .fa-beer:before { content: "\f0fc"; } .fa-behance:before { content: "\f1b4"; } .fa-behance-square:before { content: "\f1b5"; } .fa-bell:before { content: "\f0f3"; } .fa-bell-slash:before { content: "\f1f6"; } .fa-bicycle:before { content: "\f206"; } .fa-bimobject:before { content: "\f378"; } .fa-binoculars:before { content: "\f1e5"; } .fa-birthday-cake:before { content: "\f1fd"; } .fa-bitbucket:before { content: "\f171"; } .fa-bitcoin:before { content: "\f379"; } .fa-bity:before { content: "\f37a"; } .fa-black-tie:before { content: "\f27e"; } .fa-blackberry:before { content: "\f37b"; } .fa-blender:before { content: "\f517"; } .fa-blind:before { content: "\f29d"; } .fa-blogger:before { content: "\f37c"; } .fa-blogger-b:before { content: "\f37d"; } .fa-bluetooth:before { content: "\f293"; } .fa-bluetooth-b:before { content: "\f294"; } .fa-bold:before { content: "\f032"; } .fa-bolt:before { content: "\f0e7"; } .fa-bomb:before { content: "\f1e2"; } .fa-book:before { content: "\f02d"; } .fa-book-open:before { content: "\f518"; } .fa-bookmark:before { content: "\f02e"; } .fa-bowling-ball:before { content: "\f436"; } .fa-box:before { content: "\f466"; } .fa-box-open:before { content: "\f49e"; } .fa-boxes:before { content: "\f468"; } .fa-braille:before { content: "\f2a1"; } .fa-briefcase:before { content: "\f0b1"; } .fa-briefcase-medical:before { content: "\f469"; } .fa-broadcast-tower:before { content: "\f519"; } .fa-broom:before { content: "\f51a"; } .fa-btc:before { content: "\f15a"; } .fa-bug:before { content: "\f188"; } .fa-building:before { content: "\f1ad"; } .fa-bullhorn:before { content: "\f0a1"; } .fa-bullseye:before { content: "\f140"; } .fa-burn:before { content: "\f46a"; } .fa-buromobelexperte:before { content: "\f37f"; } .fa-bus:before { content: "\f207"; } .fa-buysellads:before { content: "\f20d"; } .fa-calculator:before { content: "\f1ec"; } .fa-calendar:before { content: "\f133"; } .fa-calendar-alt:before { content: "\f073"; } .fa-calendar-check:before { content: "\f274"; } .fa-calendar-minus:before { content: "\f272"; } .fa-calendar-plus:before { content: "\f271"; } .fa-calendar-times:before { content: "\f273"; } .fa-camera:before { content: "\f030"; } .fa-camera-retro:before { content: "\f083"; } .fa-capsules:before { content: "\f46b"; } .fa-car:before { content: "\f1b9"; } .fa-caret-down:before { content: "\f0d7"; } .fa-caret-left:before { content: "\f0d9"; } .fa-caret-right:before { content: "\f0da"; } .fa-caret-square-down:before { content: "\f150"; } .fa-caret-square-left:before { content: "\f191"; } .fa-caret-square-right:before { content: "\f152"; } .fa-caret-square-up:before { content: "\f151"; } .fa-caret-up:before { content: "\f0d8"; } .fa-cart-arrow-down:before { content: "\f218"; } .fa-cart-plus:before { content: "\f217"; } .fa-cc-amazon-pay:before { content: "\f42d"; } .fa-cc-amex:before { content: "\f1f3"; } .fa-cc-apple-pay:before { content: "\f416"; } .fa-cc-diners-club:before { content: "\f24c"; } .fa-cc-discover:before { content: "\f1f2"; } .fa-cc-jcb:before { content: "\f24b"; } .fa-cc-mastercard:before { content: "\f1f1"; } .fa-cc-paypal:before { content: "\f1f4"; } .fa-cc-stripe:before { content: "\f1f5"; } .fa-cc-visa:before { content: "\f1f0"; } .fa-centercode:before { content: "\f380"; } .fa-certificate:before { content: "\f0a3"; } .fa-chalkboard:before { content: "\f51b"; } .fa-chalkboard-teacher:before { content: "\f51c"; } .fa-chart-area:before { content: "\f1fe"; } .fa-chart-bar:before { content: "\f080"; } .fa-chart-line:before { content: "\f201"; } .fa-chart-pie:before { content: "\f200"; } .fa-check:before { content: "\f00c"; } .fa-check-circle:before { content: "\f058"; } .fa-check-square:before { content: "\f14a"; } .fa-chess:before { content: "\f439"; } .fa-chess-bishop:before { content: "\f43a"; } .fa-chess-board:before { content: "\f43c"; } .fa-chess-king:before { content: "\f43f"; } .fa-chess-knight:before { content: "\f441"; } .fa-chess-pawn:before { content: "\f443"; } .fa-chess-queen:before { content: "\f445"; } .fa-chess-rook:before { content: "\f447"; } .fa-chevron-circle-down:before { content: "\f13a"; } .fa-chevron-circle-left:before { content: "\f137"; } .fa-chevron-circle-right:before { content: "\f138"; } .fa-chevron-circle-up:before { content: "\f139"; } .fa-chevron-down:before { content: "\f078"; } .fa-chevron-left:before { content: "\f053"; } .fa-chevron-right:before { content: "\f054"; } .fa-chevron-up:before { content: "\f077"; } .fa-child:before { content: "\f1ae"; } .fa-chrome:before { content: "\f268"; } .fa-church:before { content: "\f51d"; } .fa-circle:before { content: "\f111"; } .fa-circle-notch:before { content: "\f1ce"; } .fa-clipboard:before { content: "\f328"; } .fa-clipboard-check:before { content: "\f46c"; } .fa-clipboard-list:before { content: "\f46d"; } .fa-clock:before { content: "\f017"; } .fa-clone:before { content: "\f24d"; } .fa-closed-captioning:before { content: "\f20a"; } .fa-cloud:before { content: "\f0c2"; } .fa-cloud-download-alt:before { content: "\f381"; } .fa-cloud-upload-alt:before { content: "\f382"; } .fa-cloudscale:before { content: "\f383"; } .fa-cloudsmith:before { content: "\f384"; } .fa-cloudversify:before { content: "\f385"; } .fa-code:before { content: "\f121"; } .fa-code-branch:before { content: "\f126"; } .fa-codepen:before { content: "\f1cb"; } .fa-codiepie:before { content: "\f284"; } .fa-coffee:before { content: "\f0f4"; } .fa-cog:before { content: "\f013"; } .fa-cogs:before { content: "\f085"; } .fa-coins:before { content: "\f51e"; } .fa-columns:before { content: "\f0db"; } .fa-comment:before { content: "\f075"; } .fa-comment-alt:before { content: "\f27a"; } .fa-comment-dots:before { content: "\f4ad"; } .fa-comment-slash:before { content: "\f4b3"; } .fa-comments:before { content: "\f086"; } .fa-compact-disc:before { content: "\f51f"; } .fa-compass:before { content: "\f14e"; } .fa-compress:before { content: "\f066"; } .fa-connectdevelop:before { content: "\f20e"; } .fa-contao:before { content: "\f26d"; } .fa-copy:before { content: "\f0c5"; } .fa-copyright:before { content: "\f1f9"; } .fa-couch:before { content: "\f4b8"; } .fa-cpanel:before { content: "\f388"; } .fa-creative-commons:before { content: "\f25e"; } .fa-creative-commons-by:before { content: "\f4e7"; } .fa-creative-commons-nc:before { content: "\f4e8"; } .fa-creative-commons-nc-eu:before { content: "\f4e9"; } .fa-creative-commons-nc-jp:before { content: "\f4ea"; } .fa-creative-commons-nd:before { content: "\f4eb"; } .fa-creative-commons-pd:before { content: "\f4ec"; } .fa-creative-commons-pd-alt:before { content: "\f4ed"; } .fa-creative-commons-remix:before { content: "\f4ee"; } .fa-creative-commons-sa:before { content: "\f4ef"; } .fa-creative-commons-sampling:before { content: "\f4f0"; } .fa-creative-commons-sampling-plus:before { content: "\f4f1"; } .fa-creative-commons-share:before { content: "\f4f2"; } .fa-credit-card:before { content: "\f09d"; } .fa-crop:before { content: "\f125"; } .fa-crosshairs:before { content: "\f05b"; } .fa-crow:before { content: "\f520"; } .fa-crown:before { content: "\f521"; } .fa-css3:before { content: "\f13c"; } .fa-css3-alt:before { content: "\f38b"; } .fa-cube:before { content: "\f1b2"; } .fa-cubes:before { content: "\f1b3"; } .fa-cut:before { content: "\f0c4"; } .fa-cuttlefish:before { content: "\f38c"; } .fa-d-and-d:before { content: "\f38d"; } .fa-dashcube:before { content: "\f210"; } .fa-database:before { content: "\f1c0"; } .fa-deaf:before { content: "\f2a4"; } .fa-delicious:before { content: "\f1a5"; } .fa-deploydog:before { content: "\f38e"; } .fa-deskpro:before { content: "\f38f"; } .fa-desktop:before { content: "\f108"; } .fa-deviantart:before { content: "\f1bd"; } .fa-diagnoses:before { content: "\f470"; } .fa-dice:before { content: "\f522"; } .fa-dice-five:before { content: "\f523"; } .fa-dice-four:before { content: "\f524"; } .fa-dice-one:before { content: "\f525"; } .fa-dice-six:before { content: "\f526"; } .fa-dice-three:before { content: "\f527"; } .fa-dice-two:before { content: "\f528"; } .fa-digg:before { content: "\f1a6"; } .fa-digital-ocean:before { content: "\f391"; } .fa-discord:before { content: "\f392"; } .fa-discourse:before { content: "\f393"; } .fa-divide:before { content: "\f529"; } .fa-dna:before { content: "\f471"; } .fa-dochub:before { content: "\f394"; } .fa-docker:before { content: "\f395"; } .fa-dollar-sign:before { content: "\f155"; } .fa-dolly:before { content: "\f472"; } .fa-dolly-flatbed:before { content: "\f474"; } .fa-donate:before { content: "\f4b9"; } .fa-door-closed:before { content: "\f52a"; } .fa-door-open:before { content: "\f52b"; } .fa-dot-circle:before { content: "\f192"; } .fa-dove:before { content: "\f4ba"; } .fa-download:before { content: "\f019"; } .fa-draft2digital:before { content: "\f396"; } .fa-dribbble:before { content: "\f17d"; } .fa-dribbble-square:before { content: "\f397"; } .fa-dropbox:before { content: "\f16b"; } .fa-drupal:before { content: "\f1a9"; } .fa-dumbbell:before { content: "\f44b"; } .fa-dyalog:before { content: "\f399"; } .fa-earlybirds:before { content: "\f39a"; } .fa-ebay:before { content: "\f4f4"; } .fa-edge:before { content: "\f282"; } .fa-edit:before { content: "\f044"; } .fa-eject:before { content: "\f052"; } .fa-elementor:before { content: "\f430"; } .fa-ellipsis-h:before { content: "\f141"; } .fa-ellipsis-v:before { content: "\f142"; } .fa-ember:before { content: "\f423"; } .fa-empire:before { content: "\f1d1"; } .fa-envelope:before { content: "\f0e0"; } .fa-envelope-open:before { content: "\f2b6"; } .fa-envelope-square:before { content: "\f199"; } .fa-envira:before { content: "\f299"; } .fa-equals:before { content: "\f52c"; } .fa-eraser:before { content: "\f12d"; } .fa-erlang:before { content: "\f39d"; } .fa-ethereum:before { content: "\f42e"; } .fa-etsy:before { content: "\f2d7"; } .fa-euro-sign:before { content: "\f153"; } .fa-exchange-alt:before { content: "\f362"; } .fa-exclamation:before { content: "\f12a"; } .fa-exclamation-circle:before { content: "\f06a"; } .fa-exclamation-triangle:before { content: "\f071"; } .fa-expand:before { content: "\f065"; } .fa-expand-arrows-alt:before { content: "\f31e"; } .fa-expeditedssl:before { content: "\f23e"; } .fa-external-link-alt:before { content: "\f35d"; } .fa-external-link-square-alt:before { content: "\f360"; } .fa-eye:before { content: "\f06e"; } .fa-eye-dropper:before { content: "\f1fb"; } .fa-eye-slash:before { content: "\f070"; } .fa-facebook:before { content: "\f09a"; } .fa-facebook-f:before { content: "\f39e"; } .fa-facebook-messenger:before { content: "\f39f"; } .fa-facebook-square:before { content: "\f082"; } .fa-fast-backward:before { content: "\f049"; } .fa-fast-forward:before { content: "\f050"; } .fa-fax:before { content: "\f1ac"; } .fa-feather:before { content: "\f52d"; } .fa-female:before { content: "\f182"; } .fa-fighter-jet:before { content: "\f0fb"; } .fa-file:before { content: "\f15b"; } .fa-file-alt:before { content: "\f15c"; } .fa-file-archive:before { content: "\f1c6"; } .fa-file-audio:before { content: "\f1c7"; } .fa-file-code:before { content: "\f1c9"; } .fa-file-excel:before { content: "\f1c3"; } .fa-file-image:before { content: "\f1c5"; } .fa-file-medical:before { content: "\f477"; } .fa-file-medical-alt:before { content: "\f478"; } .fa-file-pdf:before { content: "\f1c1"; } .fa-file-powerpoint:before { content: "\f1c4"; } .fa-file-video:before { content: "\f1c8"; } .fa-file-word:before { content: "\f1c2"; } .fa-film:before { content: "\f008"; } .fa-filter:before { content: "\f0b0"; } .fa-fire:before { content: "\f06d"; } .fa-fire-extinguisher:before { content: "\f134"; } .fa-firefox:before { content: "\f269"; } .fa-first-aid:before { content: "\f479"; } .fa-first-order:before { content: "\f2b0"; } .fa-first-order-alt:before { content: "\f50a"; } .fa-firstdraft:before { content: "\f3a1"; } .fa-flag:before { content: "\f024"; } .fa-flag-checkered:before { content: "\f11e"; } .fa-flask:before { content: "\f0c3"; } .fa-flickr:before { content: "\f16e"; } .fa-flipboard:before { content: "\f44d"; } .fa-fly:before { content: "\f417"; } .fa-folder:before { content: "\f07b"; } .fa-folder-open:before { content: "\f07c"; } .fa-font:before { content: "\f031"; } .fa-font-awesome:before { content: "\f2b4"; } .fa-font-awesome-alt:before { content: "\f35c"; } .fa-font-awesome-flag:before { content: "\f425"; } .fa-font-awesome-logo-full:before { content: "\f4e6"; } .fa-fonticons:before { content: "\f280"; } .fa-fonticons-fi:before { content: "\f3a2"; } .fa-football-ball:before { content: "\f44e"; } .fa-fort-awesome:before { content: "\f286"; } .fa-fort-awesome-alt:before { content: "\f3a3"; } .fa-forumbee:before { content: "\f211"; } .fa-forward:before { content: "\f04e"; } .fa-foursquare:before { content: "\f180"; } .fa-free-code-camp:before { content: "\f2c5"; } .fa-freebsd:before { content: "\f3a4"; } .fa-frog:before { content: "\f52e"; } .fa-frown:before { content: "\f119"; } .fa-fulcrum:before { content: "\f50b"; } .fa-futbol:before { content: "\f1e3"; } .fa-galactic-republic:before { content: "\f50c"; } .fa-galactic-senate:before { content: "\f50d"; } .fa-gamepad:before { content: "\f11b"; } .fa-gas-pump:before { content: "\f52f"; } .fa-gavel:before { content: "\f0e3"; } .fa-gem:before { content: "\f3a5"; } .fa-genderless:before { content: "\f22d"; } .fa-get-pocket:before { content: "\f265"; } .fa-gg:before { content: "\f260"; } .fa-gg-circle:before { content: "\f261"; } .fa-gift:before { content: "\f06b"; } .fa-git:before { content: "\f1d3"; } .fa-git-square:before { content: "\f1d2"; } .fa-github:before { content: "\f09b"; } .fa-github-alt:before { content: "\f113"; } .fa-github-square:before { content: "\f092"; } .fa-gitkraken:before { content: "\f3a6"; } .fa-gitlab:before { content: "\f296"; } .fa-gitter:before { content: "\f426"; } .fa-glass-martini:before { content: "\f000"; } .fa-glasses:before { content: "\f530"; } .fa-glide:before { content: "\f2a5"; } .fa-glide-g:before { content: "\f2a6"; } .fa-globe:before { content: "\f0ac"; } .fa-gofore:before { content: "\f3a7"; } .fa-golf-ball:before { content: "\f450"; } .fa-goodreads:before { content: "\f3a8"; } .fa-goodreads-g:before { content: "\f3a9"; } .fa-google:before { content: "\f1a0"; } .fa-google-drive:before { content: "\f3aa"; } .fa-google-play:before { content: "\f3ab"; } .fa-google-plus:before { content: "\f2b3"; } .fa-google-plus-g:before { content: "\f0d5"; } .fa-google-plus-square:before { content: "\f0d4"; } .fa-google-wallet:before { content: "\f1ee"; } .fa-graduation-cap:before { content: "\f19d"; } .fa-gratipay:before { content: "\f184"; } .fa-grav:before { content: "\f2d6"; } .fa-greater-than:before { content: "\f531"; } .fa-greater-than-equal:before { content: "\f532"; } .fa-gripfire:before { content: "\f3ac"; } .fa-grunt:before { content: "\f3ad"; } .fa-gulp:before { content: "\f3ae"; } .fa-h-square:before { content: "\f0fd"; } .fa-hacker-news:before { content: "\f1d4"; } .fa-hacker-news-square:before { content: "\f3af"; } .fa-hand-holding:before { content: "\f4bd"; } .fa-hand-holding-heart:before { content: "\f4be"; } .fa-hand-holding-usd:before { content: "\f4c0"; } .fa-hand-lizard:before { content: "\f258"; } .fa-hand-paper:before { content: "\f256"; } .fa-hand-peace:before { content: "\f25b"; } .fa-hand-point-down:before { content: "\f0a7"; } .fa-hand-point-left:before { content: "\f0a5"; } .fa-hand-point-right:before { content: "\f0a4"; } .fa-hand-point-up:before { content: "\f0a6"; } .fa-hand-pointer:before { content: "\f25a"; } .fa-hand-rock:before { content: "\f255"; } .fa-hand-scissors:before { content: "\f257"; } .fa-hand-spock:before { content: "\f259"; } .fa-hands:before { content: "\f4c2"; } .fa-hands-helping:before { content: "\f4c4"; } .fa-handshake:before { content: "\f2b5"; } .fa-hashtag:before { content: "\f292"; } .fa-hdd:before { content: "\f0a0"; } .fa-heading:before { content: "\f1dc"; } .fa-headphones:before { content: "\f025"; } .fa-heart:before { content: "\f004"; } .fa-heartbeat:before { content: "\f21e"; } .fa-helicopter:before { content: "\f533"; } .fa-hips:before { content: "\f452"; } .fa-hire-a-helper:before { content: "\f3b0"; } .fa-history:before { content: "\f1da"; } .fa-hockey-puck:before { content: "\f453"; } .fa-home:before { content: "\f015"; } .fa-hooli:before { content: "\f427"; } .fa-hospital:before { content: "\f0f8"; } .fa-hospital-alt:before { content: "\f47d"; } .fa-hospital-symbol:before { content: "\f47e"; } .fa-hotjar:before { content: "\f3b1"; } .fa-hourglass:before { content: "\f254"; } .fa-hourglass-end:before { content: "\f253"; } .fa-hourglass-half:before { content: "\f252"; } .fa-hourglass-start:before { content: "\f251"; } .fa-houzz:before { content: "\f27c"; } .fa-html5:before { content: "\f13b"; } .fa-hubspot:before { content: "\f3b2"; } .fa-i-cursor:before { content: "\f246"; } .fa-id-badge:before { content: "\f2c1"; } .fa-id-card:before { content: "\f2c2"; } .fa-id-card-alt:before { content: "\f47f"; } .fa-image:before { content: "\f03e"; } .fa-images:before { content: "\f302"; } .fa-imdb:before { content: "\f2d8"; } .fa-inbox:before { content: "\f01c"; } .fa-indent:before { content: "\f03c"; } .fa-industry:before { content: "\f275"; } .fa-infinity:before { content: "\f534"; } .fa-info:before { content: "\f129"; } .fa-info-circle:before { content: "\f05a"; } .fa-instagram:before { content: "\f16d"; } .fa-internet-explorer:before { content: "\f26b"; } .fa-ioxhost:before { content: "\f208"; } .fa-italic:before { content: "\f033"; } .fa-itunes:before { content: "\f3b4"; } .fa-itunes-note:before { content: "\f3b5"; } .fa-java:before { content: "\f4e4"; } .fa-jedi-order:before { content: "\f50e"; } .fa-jenkins:before { content: "\f3b6"; } .fa-joget:before { content: "\f3b7"; } .fa-joomla:before { content: "\f1aa"; } .fa-js:before { content: "\f3b8"; } .fa-js-square:before { content: "\f3b9"; } .fa-jsfiddle:before { content: "\f1cc"; } .fa-key:before { content: "\f084"; } .fa-keybase:before { content: "\f4f5"; } .fa-keyboard:before { content: "\f11c"; } .fa-keycdn:before { content: "\f3ba"; } .fa-kickstarter:before { content: "\f3bb"; } .fa-kickstarter-k:before { content: "\f3bc"; } .fa-kiwi-bird:before { content: "\f535"; } .fa-korvue:before { content: "\f42f"; } .fa-language:before { content: "\f1ab"; } .fa-laptop:before { content: "\f109"; } .fa-laravel:before { content: "\f3bd"; } .fa-lastfm:before { content: "\f202"; } .fa-lastfm-square:before { content: "\f203"; } .fa-leaf:before { content: "\f06c"; } .fa-leanpub:before { content: "\f212"; } .fa-lemon:before { content: "\f094"; } .fa-less:before { content: "\f41d"; } .fa-less-than:before { content: "\f536"; } .fa-less-than-equal:before { content: "\f537"; } .fa-level-down-alt:before { content: "\f3be"; } .fa-level-up-alt:before { content: "\f3bf"; } .fa-life-ring:before { content: "\f1cd"; } .fa-lightbulb:before { content: "\f0eb"; } .fa-line:before { content: "\f3c0"; } .fa-link:before { content: "\f0c1"; } .fa-linkedin:before { content: "\f08c"; } .fa-linkedin-in:before { content: "\f0e1"; } .fa-linode:before { content: "\f2b8"; } .fa-linux:before { content: "\f17c"; } .fa-lira-sign:before { content: "\f195"; } .fa-list:before { content: "\f03a"; } .fa-list-alt:before { content: "\f022"; } .fa-list-ol:before { content: "\f0cb"; } .fa-list-ul:before { content: "\f0ca"; } .fa-location-arrow:before { content: "\f124"; } .fa-lock:before { content: "\f023"; } .fa-lock-open:before { content: "\f3c1"; } .fa-long-arrow-alt-down:before { content: "\f309"; } .fa-long-arrow-alt-left:before { content: "\f30a"; } .fa-long-arrow-alt-right:before { content: "\f30b"; } .fa-long-arrow-alt-up:before { content: "\f30c"; } .fa-low-vision:before { content: "\f2a8"; } .fa-lyft:before { content: "\f3c3"; } .fa-magento:before { content: "\f3c4"; } .fa-magic:before { content: "\f0d0"; } .fa-magnet:before { content: "\f076"; } .fa-male:before { content: "\f183"; } .fa-mandalorian:before { content: "\f50f"; } .fa-map:before { content: "\f279"; } .fa-map-marker:before { content: "\f041"; } .fa-map-marker-alt:before { content: "\f3c5"; } .fa-map-pin:before { content: "\f276"; } .fa-map-signs:before { content: "\f277"; } .fa-mars:before { content: "\f222"; } .fa-mars-double:before { content: "\f227"; } .fa-mars-stroke:before { content: "\f229"; } .fa-mars-stroke-h:before { content: "\f22b"; } .fa-mars-stroke-v:before { content: "\f22a"; } .fa-mastodon:before { content: "\f4f6"; } .fa-maxcdn:before { content: "\f136"; } .fa-medapps:before { content: "\f3c6"; } .fa-medium:before { content: "\f23a"; } .fa-medium-m:before { content: "\f3c7"; } .fa-medkit:before { content: "\f0fa"; } .fa-medrt:before { content: "\f3c8"; } .fa-meetup:before { content: "\f2e0"; } .fa-meh:before { content: "\f11a"; } .fa-memory:before { content: "\f538"; } .fa-mercury:before { content: "\f223"; } .fa-microchip:before { content: "\f2db"; } .fa-microphone:before { content: "\f130"; } .fa-microphone-alt:before { content: "\f3c9"; } .fa-microphone-alt-slash:before { content: "\f539"; } .fa-microphone-slash:before { content: "\f131"; } .fa-microsoft:before { content: "\f3ca"; } .fa-minus:before { content: "\f068"; } .fa-minus-circle:before { content: "\f056"; } .fa-minus-square:before { content: "\f146"; } .fa-mix:before { content: "\f3cb"; } .fa-mixcloud:before { content: "\f289"; } .fa-mizuni:before { content: "\f3cc"; } .fa-mobile:before { content: "\f10b"; } .fa-mobile-alt:before { content: "\f3cd"; } .fa-modx:before { content: "\f285"; } .fa-monero:before { content: "\f3d0"; } .fa-money-bill:before { content: "\f0d6"; } .fa-money-bill-alt:before { content: "\f3d1"; } .fa-money-bill-wave:before { content: "\f53a"; } .fa-money-bill-wave-alt:before { content: "\f53b"; } .fa-money-check:before { content: "\f53c"; } .fa-money-check-alt:before { content: "\f53d"; } .fa-moon:before { content: "\f186"; } .fa-motorcycle:before { content: "\f21c"; } .fa-mouse-pointer:before { content: "\f245"; } .fa-music:before { content: "\f001"; } .fa-napster:before { content: "\f3d2"; } .fa-neuter:before { content: "\f22c"; } .fa-newspaper:before { content: "\f1ea"; } .fa-nintendo-switch:before { content: "\f418"; } .fa-node:before { content: "\f419"; } .fa-node-js:before { content: "\f3d3"; } .fa-not-equal:before { content: "\f53e"; } .fa-notes-medical:before { content: "\f481"; } .fa-npm:before { content: "\f3d4"; } .fa-ns8:before { content: "\f3d5"; } .fa-nutritionix:before { content: "\f3d6"; } .fa-object-group:before { content: "\f247"; } .fa-object-ungroup:before { content: "\f248"; } .fa-odnoklassniki:before { content: "\f263"; } .fa-odnoklassniki-square:before { content: "\f264"; } .fa-old-republic:before { content: "\f510"; } .fa-opencart:before { content: "\f23d"; } .fa-openid:before { content: "\f19b"; } .fa-opera:before { content: "\f26a"; } .fa-optin-monster:before { content: "\f23c"; } .fa-osi:before { content: "\f41a"; } .fa-outdent:before { content: "\f03b"; } .fa-page4:before { content: "\f3d7"; } .fa-pagelines:before { content: "\f18c"; } .fa-paint-brush:before { content: "\f1fc"; } .fa-palette:before { content: "\f53f"; } .fa-palfed:before { content: "\f3d8"; } .fa-pallet:before { content: "\f482"; } .fa-paper-plane:before { content: "\f1d8"; } .fa-paperclip:before { content: "\f0c6"; } .fa-parachute-box:before { content: "\f4cd"; } .fa-paragraph:before { content: "\f1dd"; } .fa-parking:before { content: "\f540"; } .fa-paste:before { content: "\f0ea"; } .fa-patreon:before { content: "\f3d9"; } .fa-pause:before { content: "\f04c"; } .fa-pause-circle:before { content: "\f28b"; } .fa-paw:before { content: "\f1b0"; } .fa-paypal:before { content: "\f1ed"; } .fa-pen-square:before { content: "\f14b"; } .fa-pencil-alt:before { content: "\f303"; } .fa-people-carry:before { content: "\f4ce"; } .fa-percent:before { content: "\f295"; } .fa-percentage:before { content: "\f541"; } .fa-periscope:before { content: "\f3da"; } .fa-phabricator:before { content: "\f3db"; } .fa-phoenix-framework:before { content: "\f3dc"; } .fa-phoenix-squadron:before { content: "\f511"; } .fa-phone:before { content: "\f095"; } .fa-phone-slash:before { content: "\f3dd"; } .fa-phone-square:before { content: "\f098"; } .fa-phone-volume:before { content: "\f2a0"; } .fa-php:before { content: "\f457"; } .fa-pied-piper:before { content: "\f2ae"; } .fa-pied-piper-alt:before { content: "\f1a8"; } .fa-pied-piper-hat:before { content: "\f4e5"; } .fa-pied-piper-pp:before { content: "\f1a7"; } .fa-piggy-bank:before { content: "\f4d3"; } .fa-pills:before { content: "\f484"; } .fa-pinterest:before { content: "\f0d2"; } .fa-pinterest-p:before { content: "\f231"; } .fa-pinterest-square:before { content: "\f0d3"; } .fa-plane:before { content: "\f072"; } .fa-play:before { content: "\f04b"; } .fa-play-circle:before { content: "\f144"; } .fa-playstation:before { content: "\f3df"; } .fa-plug:before { content: "\f1e6"; } .fa-plus:before { content: "\f067"; } .fa-plus-circle:before { content: "\f055"; } .fa-plus-square:before { content: "\f0fe"; } .fa-podcast:before { content: "\f2ce"; } .fa-poo:before { content: "\f2fe"; } .fa-portrait:before { content: "\f3e0"; } .fa-pound-sign:before { content: "\f154"; } .fa-power-off:before { content: "\f011"; } .fa-prescription-bottle:before { content: "\f485"; } .fa-prescription-bottle-alt:before { content: "\f486"; } .fa-print:before { content: "\f02f"; } .fa-procedures:before { content: "\f487"; } .fa-product-hunt:before { content: "\f288"; } .fa-project-diagram:before { content: "\f542"; } .fa-pushed:before { content: "\f3e1"; } .fa-puzzle-piece:before { content: "\f12e"; } .fa-python:before { content: "\f3e2"; } .fa-qq:before { content: "\f1d6"; } .fa-qrcode:before { content: "\f029"; } .fa-question:before { content: "\f128"; } .fa-question-circle:before { content: "\f059"; } .fa-quidditch:before { content: "\f458"; } .fa-quinscape:before { content: "\f459"; } .fa-quora:before { content: "\f2c4"; } .fa-quote-left:before { content: "\f10d"; } .fa-quote-right:before { content: "\f10e"; } .fa-r-project:before { content: "\f4f7"; } .fa-random:before { content: "\f074"; } .fa-ravelry:before { content: "\f2d9"; } .fa-react:before { content: "\f41b"; } .fa-readme:before { content: "\f4d5"; } .fa-rebel:before { content: "\f1d0"; } .fa-receipt:before { content: "\f543"; } .fa-recycle:before { content: "\f1b8"; } .fa-red-river:before { content: "\f3e3"; } .fa-reddit:before { content: "\f1a1"; } .fa-reddit-alien:before { content: "\f281"; } .fa-reddit-square:before { content: "\f1a2"; } .fa-redo:before { content: "\f01e"; } .fa-redo-alt:before { content: "\f2f9"; } .fa-registered:before { content: "\f25d"; } .fa-rendact:before { content: "\f3e4"; } .fa-renren:before { content: "\f18b"; } .fa-reply:before { content: "\f3e5"; } .fa-reply-all:before { content: "\f122"; } .fa-replyd:before { content: "\f3e6"; } .fa-researchgate:before { content: "\f4f8"; } .fa-resolving:before { content: "\f3e7"; } .fa-retweet:before { content: "\f079"; } .fa-ribbon:before { content: "\f4d6"; } .fa-road:before { content: "\f018"; } .fa-robot:before { content: "\f544"; } .fa-rocket:before { content: "\f135"; } .fa-rocketchat:before { content: "\f3e8"; } .fa-rockrms:before { content: "\f3e9"; } .fa-rss:before { content: "\f09e"; } .fa-rss-square:before { content: "\f143"; } .fa-ruble-sign:before { content: "\f158"; } .fa-ruler:before { content: "\f545"; } .fa-ruler-combined:before { content: "\f546"; } .fa-ruler-horizontal:before { content: "\f547"; } .fa-ruler-vertical:before { content: "\f548"; } .fa-rupee-sign:before { content: "\f156"; } .fa-safari:before { content: "\f267"; } .fa-sass:before { content: "\f41e"; } .fa-save:before { content: "\f0c7"; } .fa-schlix:before { content: "\f3ea"; } .fa-school:before { content: "\f549"; } .fa-screwdriver:before { content: "\f54a"; } .fa-scribd:before { content: "\f28a"; } .fa-search:before { content: "\f002"; } .fa-search-minus:before { content: "\f010"; } .fa-search-plus:before { content: "\f00e"; } .fa-searchengin:before { content: "\f3eb"; } .fa-seedling:before { content: "\f4d8"; } .fa-sellcast:before { content: "\f2da"; } .fa-sellsy:before { content: "\f213"; } .fa-server:before { content: "\f233"; } .fa-servicestack:before { content: "\f3ec"; } .fa-share:before { content: "\f064"; } .fa-share-alt:before { content: "\f1e0"; } .fa-share-alt-square:before { content: "\f1e1"; } .fa-share-square:before { content: "\f14d"; } .fa-shekel-sign:before { content: "\f20b"; } .fa-shield-alt:before { content: "\f3ed"; } .fa-ship:before { content: "\f21a"; } .fa-shipping-fast:before { content: "\f48b"; } .fa-shirtsinbulk:before { content: "\f214"; } .fa-shoe-prints:before { content: "\f54b"; } .fa-shopping-bag:before { content: "\f290"; } .fa-shopping-basket:before { content: "\f291"; } .fa-shopping-cart:before { content: "\f07a"; } .fa-shower:before { content: "\f2cc"; } .fa-sign:before { content: "\f4d9"; } .fa-sign-in-alt:before { content: "\f2f6"; } .fa-sign-language:before { content: "\f2a7"; } .fa-sign-out-alt:before { content: "\f2f5"; } .fa-signal:before { content: "\f012"; } .fa-simplybuilt:before { content: "\f215"; } .fa-sistrix:before { content: "\f3ee"; } .fa-sitemap:before { content: "\f0e8"; } .fa-sith:before { content: "\f512"; } .fa-skull:before { content: "\f54c"; } .fa-skyatlas:before { content: "\f216"; } .fa-skype:before { content: "\f17e"; } .fa-slack:before { content: "\f198"; } .fa-slack-hash:before { content: "\f3ef"; } .fa-sliders-h:before { content: "\f1de"; } .fa-slideshare:before { content: "\f1e7"; } .fa-smile:before { content: "\f118"; } .fa-smoking:before { content: "\f48d"; } .fa-smoking-ban:before { content: "\f54d"; } .fa-snapchat:before { content: "\f2ab"; } .fa-snapchat-ghost:before { content: "\f2ac"; } .fa-snapchat-square:before { content: "\f2ad"; } .fa-snowflake:before { content: "\f2dc"; } .fa-sort:before { content: "\f0dc"; } .fa-sort-alpha-down:before { content: "\f15d"; } .fa-sort-alpha-up:before { content: "\f15e"; } .fa-sort-amount-down:before { content: "\f160"; } .fa-sort-amount-up:before { content: "\f161"; } .fa-sort-down:before { content: "\f0dd"; } .fa-sort-numeric-down:before { content: "\f162"; } .fa-sort-numeric-up:before { content: "\f163"; } .fa-sort-up:before { content: "\f0de"; } .fa-soundcloud:before { content: "\f1be"; } .fa-space-shuttle:before { content: "\f197"; } .fa-speakap:before { content: "\f3f3"; } .fa-spinner:before { content: "\f110"; } .fa-spotify:before { content: "\f1bc"; } .fa-square:before { content: "\f0c8"; } .fa-square-full:before { content: "\f45c"; } .fa-stack-exchange:before { content: "\f18d"; } .fa-stack-overflow:before { content: "\f16c"; } .fa-star:before { content: "\f005"; } .fa-star-half:before { content: "\f089"; } .fa-staylinked:before { content: "\f3f5"; } .fa-steam:before { content: "\f1b6"; } .fa-steam-square:before { content: "\f1b7"; } .fa-steam-symbol:before { content: "\f3f6"; } .fa-step-backward:before { content: "\f048"; } .fa-step-forward:before { content: "\f051"; } .fa-stethoscope:before { content: "\f0f1"; } .fa-sticker-mule:before { content: "\f3f7"; } .fa-sticky-note:before { content: "\f249"; } .fa-stop:before { content: "\f04d"; } .fa-stop-circle:before { content: "\f28d"; } .fa-stopwatch:before { content: "\f2f2"; } .fa-store:before { content: "\f54e"; } .fa-store-alt:before { content: "\f54f"; } .fa-strava:before { content: "\f428"; } .fa-stream:before { content: "\f550"; } .fa-street-view:before { content: "\f21d"; } .fa-strikethrough:before { content: "\f0cc"; } .fa-stripe:before { content: "\f429"; } .fa-stripe-s:before { content: "\f42a"; } .fa-stroopwafel:before { content: "\f551"; } .fa-studiovinari:before { content: "\f3f8"; } .fa-stumbleupon:before { content: "\f1a4"; } .fa-stumbleupon-circle:before { content: "\f1a3"; } .fa-subscript:before { content: "\f12c"; } .fa-subway:before { content: "\f239"; } .fa-suitcase:before { content: "\f0f2"; } .fa-sun:before { content: "\f185"; } .fa-superpowers:before { content: "\f2dd"; } .fa-superscript:before { content: "\f12b"; } .fa-supple:before { content: "\f3f9"; } .fa-sync:before { content: "\f021"; } .fa-sync-alt:before { content: "\f2f1"; } .fa-syringe:before { content: "\f48e"; } .fa-table:before { content: "\f0ce"; } .fa-table-tennis:before { content: "\f45d"; } .fa-tablet:before { content: "\f10a"; } .fa-tablet-alt:before { content: "\f3fa"; } .fa-tablets:before { content: "\f490"; } .fa-tachometer-alt:before { content: "\f3fd"; } .fa-tag:before { content: "\f02b"; } .fa-tags:before { content: "\f02c"; } .fa-tape:before { content: "\f4db"; } .fa-tasks:before { content: "\f0ae"; } .fa-taxi:before { content: "\f1ba"; } .fa-teamspeak:before { content: "\f4f9"; } .fa-telegram:before { content: "\f2c6"; } .fa-telegram-plane:before { content: "\f3fe"; } .fa-tencent-weibo:before { content: "\f1d5"; } .fa-terminal:before { content: "\f120"; } .fa-text-height:before { content: "\f034"; } .fa-text-width:before { content: "\f035"; } .fa-th:before { content: "\f00a"; } .fa-th-large:before { content: "\f009"; } .fa-th-list:before { content: "\f00b"; } .fa-themeisle:before { content: "\f2b2"; } .fa-thermometer:before { content: "\f491"; } .fa-thermometer-empty:before { content: "\f2cb"; } .fa-thermometer-full:before { content: "\f2c7"; } .fa-thermometer-half:before { content: "\f2c9"; } .fa-thermometer-quarter:before { content: "\f2ca"; } .fa-thermometer-three-quarters:before { content: "\f2c8"; } .fa-thumbs-down:before { content: "\f165"; } .fa-thumbs-up:before { content: "\f164"; } .fa-thumbtack:before { content: "\f08d"; } .fa-ticket-alt:before { content: "\f3ff"; } .fa-times:before { content: "\f00d"; } .fa-times-circle:before { content: "\f057"; } .fa-tint:before { content: "\f043"; } .fa-toggle-off:before { content: "\f204"; } .fa-toggle-on:before { content: "\f205"; } .fa-toolbox:before { content: "\f552"; } .fa-trade-federation:before { content: "\f513"; } .fa-trademark:before { content: "\f25c"; } .fa-train:before { content: "\f238"; } .fa-transgender:before { content: "\f224"; } .fa-transgender-alt:before { content: "\f225"; } .fa-trash:before { content: "\f1f8"; } .fa-trash-alt:before { content: "\f2ed"; } .fa-tree:before { content: "\f1bb"; } .fa-trello:before { content: "\f181"; } .fa-tripadvisor:before { content: "\f262"; } .fa-trophy:before { content: "\f091"; } .fa-truck:before { content: "\f0d1"; } .fa-truck-loading:before { content: "\f4de"; } .fa-truck-moving:before { content: "\f4df"; } .fa-tshirt:before { content: "\f553"; } .fa-tty:before { content: "\f1e4"; } .fa-tumblr:before { content: "\f173"; } .fa-tumblr-square:before { content: "\f174"; } .fa-tv:before { content: "\f26c"; } .fa-twitch:before { content: "\f1e8"; } .fa-twitter:before { content: "\f099"; } .fa-twitter-square:before { content: "\f081"; } .fa-typo3:before { content: "\f42b"; } .fa-uber:before { content: "\f402"; } .fa-uikit:before { content: "\f403"; } .fa-umbrella:before { content: "\f0e9"; } .fa-underline:before { content: "\f0cd"; } .fa-undo:before { content: "\f0e2"; } .fa-undo-alt:before { content: "\f2ea"; } .fa-uniregistry:before { content: "\f404"; } .fa-universal-access:before { content: "\f29a"; } .fa-university:before { content: "\f19c"; } .fa-unlink:before { content: "\f127"; } .fa-unlock:before { content: "\f09c"; } .fa-unlock-alt:before { content: "\f13e"; } .fa-untappd:before { content: "\f405"; } .fa-upload:before { content: "\f093"; } .fa-usb:before { content: "\f287"; } .fa-user:before { content: "\f007"; } .fa-user-alt:before { content: "\f406"; } .fa-user-alt-slash:before { content: "\f4fa"; } .fa-user-astronaut:before { content: "\f4fb"; } .fa-user-check:before { content: "\f4fc"; } .fa-user-circle:before { content: "\f2bd"; } .fa-user-clock:before { content: "\f4fd"; } .fa-user-cog:before { content: "\f4fe"; } .fa-user-edit:before { content: "\f4ff"; } .fa-user-friends:before { content: "\f500"; } .fa-user-graduate:before { content: "\f501"; } .fa-user-lock:before { content: "\f502"; } .fa-user-md:before { content: "\f0f0"; } .fa-user-minus:before { content: "\f503"; } .fa-user-ninja:before { content: "\f504"; } .fa-user-plus:before { content: "\f234"; } .fa-user-secret:before { content: "\f21b"; } .fa-user-shield:before { content: "\f505"; } .fa-user-slash:before { content: "\f506"; } .fa-user-tag:before { content: "\f507"; } .fa-user-tie:before { content: "\f508"; } .fa-user-times:before { content: "\f235"; } .fa-users:before { content: "\f0c0"; } .fa-users-cog:before { content: "\f509"; } .fa-ussunnah:before { content: "\f407"; } .fa-utensil-spoon:before { content: "\f2e5"; } .fa-utensils:before { content: "\f2e7"; } .fa-vaadin:before { content: "\f408"; } .fa-venus:before { content: "\f221"; } .fa-venus-double:before { content: "\f226"; } .fa-venus-mars:before { content: "\f228"; } .fa-viacoin:before { content: "\f237"; } .fa-viadeo:before { content: "\f2a9"; } .fa-viadeo-square:before { content: "\f2aa"; } .fa-vial:before { content: "\f492"; } .fa-vials:before { content: "\f493"; } .fa-viber:before { content: "\f409"; } .fa-video:before { content: "\f03d"; } .fa-video-slash:before { content: "\f4e2"; } .fa-vimeo:before { content: "\f40a"; } .fa-vimeo-square:before { content: "\f194"; } .fa-vimeo-v:before { content: "\f27d"; } .fa-vine:before { content: "\f1ca"; } .fa-vk:before { content: "\f189"; } .fa-vnv:before { content: "\f40b"; } .fa-volleyball-ball:before { content: "\f45f"; } .fa-volume-down:before { content: "\f027"; } .fa-volume-off:before { content: "\f026"; } .fa-volume-up:before { content: "\f028"; } .fa-vuejs:before { content: "\f41f"; } .fa-walking:before { content: "\f554"; } .fa-wallet:before { content: "\f555"; } .fa-warehouse:before { content: "\f494"; } .fa-weibo:before { content: "\f18a"; } .fa-weight:before { content: "\f496"; } .fa-weixin:before { content: "\f1d7"; } .fa-whatsapp:before { content: "\f232"; } .fa-whatsapp-square:before { content: "\f40c"; } .fa-wheelchair:before { content: "\f193"; } .fa-whmcs:before { content: "\f40d"; } .fa-wifi:before { content: "\f1eb"; } .fa-wikipedia-w:before { content: "\f266"; } .fa-window-close:before { content: "\f410"; } .fa-window-maximize:before { content: "\f2d0"; } .fa-window-minimize:before { content: "\f2d1"; } .fa-window-restore:before { content: "\f2d2"; } .fa-windows:before { content: "\f17a"; } .fa-wine-glass:before { content: "\f4e3"; } .fa-wolf-pack-battalion:before { content: "\f514"; } .fa-won-sign:before { content: "\f159"; } .fa-wordpress:before { content: "\f19a"; } .fa-wordpress-simple:before { content: "\f411"; } .fa-wpbeginner:before { content: "\f297"; } .fa-wpexplorer:before { content: "\f2de"; } .fa-wpforms:before { content: "\f298"; } .fa-wrench:before { content: "\f0ad"; } .fa-x-ray:before { content: "\f497"; } .fa-xbox:before { content: "\f412"; } .fa-xing:before { content: "\f168"; } .fa-xing-square:before { content: "\f169"; } .fa-y-combinator:before { content: "\f23b"; } .fa-yahoo:before { content: "\f19e"; } .fa-yandex:before { content: "\f413"; } .fa-yandex-international:before { content: "\f414"; } .fa-yelp:before { content: "\f1e9"; } .fa-yen-sign:before { content: "\f157"; } .fa-yoast:before { content: "\f2b1"; } .fa-youtube:before { content: "\f167"; } .fa-youtube-square:before { content: "\f431"; } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sr-only-focusable:active, .sr-only-focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } inc/external/wpmu-lib/css/wpmu-card-list.3.css000064400000024571150211770060015216 0ustar00/** * WPMU Dev Card-List styles * (Philipp Stracker for WPMU Dev) * * @since 1.1.0 */ #wpwrap .wpmui-list-wrapper .wpmui-list, .wpmui-list-wrapper .wpmui-list { margin-left: -16px; } #wpwrap .wpmui-list-wrapper .wpmui-list:after, .wpmui-list-wrapper .wpmui-list:after { content: ''; display: table; clear: both; } #wpwrap .wpmui-list-wrapper .list-card, .wpmui-list-wrapper .list-card { float: left; margin: 0 0 16px 16px; width: 48%; width: -webkit-calc(50% - 16px); width: calc(50% - 16px); background-color: #fff; border: 1px solid #dedede; box-sizing: border-box; opacity: .8; } #wpwrap .wpmui-list-wrapper .list-card .badge-container, .wpmui-list-wrapper .list-card .badge-container { overflow: hidden; width: 100px; height: 100px; position: absolute; left: 0px; top: 0px; } #wpwrap .wpmui-list-wrapper .list-card .badge-active, .wpmui-list-wrapper .list-card .badge-active { display: none; } #wpwrap .wpmui-list-wrapper .list-card.active, .wpmui-list-wrapper .list-card.active { opacity: 1; background: #FFF; border: 1px solid #BBB; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); z-index: 20; } #wpwrap .wpmui-list-wrapper .list-card.active .desc, #wpwrap .wpmui-list-wrapper .list-card.active .name, .wpmui-list-wrapper .list-card.active .desc, .wpmui-list-wrapper .list-card.active .name { color: #333; } #wpwrap .wpmui-list-wrapper .list-card.active .badge-active, .wpmui-list-wrapper .list-card.active .badge-active { position: absolute; top: 15px; left: -35px; display: block; background-color: #6bbb1a; color: #FFF; transform: rotate(315deg); padding: 3px 40px; z-index: 20; border: 1px solid #FFF; } #wpwrap .wpmui-list-wrapper .list-card.active .item-icon, .wpmui-list-wrapper .list-card.active .item-icon { color: #3b8b08; } #wpwrap .wpmui-list-wrapper .list-card .item-icon, .wpmui-list-wrapper .list-card .item-icon { position: absolute; top: 20px; left: 20px; width: 128px; height: 128px; margin: 0 20px 20px 0; font-size: 100px; z-index: 16; } #wpwrap .wpmui-list-wrapper .list-card .item-icon i, .wpmui-list-wrapper .list-card .item-icon i { opacity: 0.8; font-size: 100px; } #wpwrap .wpmui-list-wrapper .list-card .desc, #wpwrap .wpmui-list-wrapper .list-card .name, .wpmui-list-wrapper .list-card .desc, .wpmui-list-wrapper .list-card .name { margin-left: 148px; margin-right: 120px; color: #777; } #wpwrap .wpmui-list-wrapper .list-card .action-links, .wpmui-list-wrapper .list-card .action-links { position: absolute; top: 20px; right: 20px; width: 120px; text-align: right; } #wpwrap .wpmui-list-wrapper .list-card .action-links .space, .wpmui-list-wrapper .list-card .action-links .space { display: block; line-height: 10px; height: 10px; padding: 0; margin: 0; } #wpwrap .wpmui-list-wrapper .list-card h4, .wpmui-list-wrapper .list-card h4 { margin: 0 0 12px; font-size: 18px; line-height: 1.3; } @media screen and (min-width: 1600px) { #wpwrap .wpmui-list-wrapper .list-card, .wpmui-list-wrapper .list-card { width: 30%; width: -webkit-calc(33.3333% - 16px); width: calc(33.3333% - 16px); } } #wpwrap .wpmui-list-wrapper .list-card-top, .wpmui-list-wrapper .list-card-top { position: relative; padding: 20px 20px 10px; height: 135px; overflow: hidden; } #wpwrap .wpmui-list-wrapper .list-card-top .fader, .wpmui-list-wrapper .list-card-top .fader { position: absolute; bottom: 0; height: 20px; left: 0; right: 0; z-index: 5; background: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 90%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(90%, white)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 90%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 90%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, rgba(255, 255, 255, 0) 0%, white 90%); /* IE10+ */ background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, white 90%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */ } #wpwrap .wpmui-list-wrapper .list-card-bottom, .wpmui-list-wrapper .list-card-bottom { clear: both; padding: 12px 20px; background-color: #fafafa; border-top: 1px solid #dedede; overflow: hidden; height: 45px; } #wpwrap .wpmui-list-wrapper .details, #wpwrap .wpmui-list-wrapper .is-detail, .wpmui-list-wrapper .details, .wpmui-list-wrapper .is-detail { display: none; } #wpwrap .wpmui-list-wrapper .is-no-detail, .wpmui-list-wrapper .is-no-detail { display: inline; } #wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper, #wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper, #wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper, .wpmui-list-wrapper .details .wpmui-html-text-wrapper, .wpmui-list-wrapper .details .wpmui-input-wrapper, .wpmui-list-wrapper .details .wpmui-select-wrapper, .wpmui-list-wrapper .details .wpmui-radio-wrapper, .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper { display: block; position: relative; padding: 10px; margin: 0 0 10px 0; background-color: #FFF; border: 1px solid #dedede; } #wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider, #wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider, #wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider, .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider, .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider, .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider, .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider, .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider { position: absolute; top: 10px; right: 10px; } #wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider.has-labels, #wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider.has-labels, #wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider.has-labels, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider.has-labels, #wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider.has-labels, .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider.has-labels, .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider.has-labels, .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider.has-labels, .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider.has-labels, .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider.has-labels { position: relative; top: 0; right: 0; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details:before, .wpmui-list-wrapper .wpmui-list-table.has-details:before { content: ''; background: #000; opacity: .3; position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 21; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .list-card, .wpmui-list-wrapper .wpmui-list-table.has-details .list-card { opacity: .7; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode, .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode { z-index: 25; opacity: 1; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-detail, .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-detail { display: inline; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-no-detail, .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-no-detail { display: none; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .list-card-top, .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .list-card-top { position: absolute; top: 0; bottom: 43px; height: auto; left: 0; right: 0; overflow: visible; } #wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .details, .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .details { display: block; position: absolute; overflow: auto; top: 135px; left: 0; right: 0; background: #FCFCFC; border-top: 1px solid #dedede; padding: 20px; bottom: 0; } #wpwrap .wpmui-list-wrapper .detail-mode, .wpmui-list-wrapper .detail-mode { position: absolute; top: 50px; left: 50px; right: 50px; width: auto; height: auto; z-index: 20; box-shadow: 0 1px 10px rgba(0, 0, 0, 0.3); opacity: 1; } #wpwrap .wpmui-list-wrapper .detail-mode .list-card, .wpmui-list-wrapper .detail-mode .list-card { border: 1px solid #999; } #wpwrap .wpmui-list-wrapper .detail-mode .list-card-bottom, .wpmui-list-wrapper .detail-mode .list-card-bottom { position: absolute; bottom: 0; left: 0; right: 0; } #wpwrap .wpmui-list-wrapper .toggle-details, .wpmui-list-wrapper .toggle-details { cursor: pointer; } #wpwrap .wpmui-list-wrapper .toggle-link, .wpmui-list-wrapper .toggle-link { float: right; color: #0074a2; } #wpwrap .wpmui-list-wrapper .toggle-link:hover, .wpmui-list-wrapper .toggle-link:hover { color: #2ea2cc; } #wpwrap .wpmui-list-wrapper .filter-links > li, .wpmui-list-wrapper .filter-links > li { line-height: 48px; height: 48px; } #wpwrap .wpmui-list-wrapper .filter-links > li a, .wpmui-list-wrapper .filter-links > li a { padding-top: 0; padding-bottom: 0; } #wpwrap .wpmui-list-wrapper .close-button, .wpmui-list-wrapper .close-button { position: absolute; top: -30px; right: -30px; border-radius: 15px; background: #FFF; } #wpwrap .wpmui-list-wrapper .close-button:after, .wpmui-list-wrapper .close-button:after { content: "\f335"; display: inline-block; width: 30px; height: 30px; font-size: 26px; line-height: 30px; font-family: dashicons; text-decoration: inherit; font-weight: 400; font-style: normal; vertical-align: top; text-align: center; -webkit-transition: color .1s ease-in 0; transition: color .1s ease-in 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } inc/external/wpmu-lib/css/animate.3.min.css000064400000156212150211770060014544 0ustar00/*! * https://github.com/daneden/animate.css/blob/master/animate.css * * Note: This is the unmodified, compiled CSS file from above repository. * * animate.css -http://daneden.me/animate * Version - 3.5.1 * Licensed under the MIT license - http://opensource.org/licenses/MIT * * Copyright (c) 2016 Daniel Eden */.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.39063deg) skewY(.39063deg);transform:skewX(.39063deg) skewY(.39063deg)}88.8%{-webkit-transform:skewX(-.19531deg) skewY(-.19531deg);transform:skewX(-.19531deg) skewY(-.19531deg)}}@keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.39063deg) skewY(.39063deg);transform:skewX(.39063deg) skewY(.39063deg)}88.8%{-webkit-transform:skewX(-.19531deg) skewY(-.19531deg);transform:skewX(-.19531deg) skewY(-.19531deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}inc/external/wpmu-lib/css/wpmu-ui.3.css000064400000065123150211770060013747 0ustar00/** * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This library provides a Javascript API via the global wpmuUI object. * * Content: * 00. Settings * 01. Modal overlays * 02. Popup Windows * 03. Messages * 04. Tooltips * 05. WordPress Pointers * 06. Form Layout * 07. Simple Grid * 08. WordPress Accordeon Box * 09. WordPress Tab-box * 10. Select2 * 11. On Off Switch * 12. Confirmation * 13. Progress Bar * 99. General Styles */ /** * ============================================================================= * == 00. SETTINGS * ============================================================================= */ /** * ============================================================================= * == 01. MODAL OVERLAYS * ============================================================================= */ .wpmui-loading { position: relative; } .wpmui-loading:after { content: ''; position: absolute; left: -1px; top: -1px; right: -1px; bottom: -1px; background: rgba(255, 255, 255, 0.8) url(../img/spinner.gif) center no-repeat; z-index: 1000; cursor: default; min-width: 20px; min-height: 20px; } .wpmui-loading-icon { display: inline-block; width: 20px; height: 20px; line-height: 20px; vertical-align: middle; background: transparent url(../img/spinner.gif) center no-repeat; } .wpmui-overlay { background: #000; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: -1; opacity: 0; transition: opacity 0.3s, z-index 0.3s step-end; } .wpmui-has-overlay .wpmui-overlay { z-index: 9999; opacity: 0.7; transition: opacity 0.3s, z-index 0.3s step-start; } .wpmui-has-overlay .wpmui-overlay.light { opacity: .25; } .wpmui-has-overlay #wpbody { -webkit-filter: blur(3px); -moz-filter: blur(3px); filter: blur(3px); } .wpmui-has-overlay.no-blur #wpbody { -webkit-filter: blur(0); -moz-filter: blur(0); filter: blur(0); } .wpmui-no-scroll { overflow: hidden; } .wpmui-blur { -webkit-filter: blur(3px) grayscale(75%); -moz-filter: blur(3px) grayscale(75%); filter: blur(3px) grayscale(75%); position: relative; } .wpmui-blur:before { content: ''; position: absolute; left: 0; top: 0; right: 0; bottom: 0; z-index: 10; } /** * ============================================================================= * == 02. POPUP WINDOWS * ============================================================================= */ .wpmui-popup { background: #F5F5F5; position: fixed; box-shadow: 0 2px 20px rgba(0, 0, 0, 0.4); z-index: 10000; top: 50%; left: 50%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .wpmui-popup .popup-title { position: absolute; left: 0; top: 0; right: 0; line-height: 50px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 70px 0 20px; border-bottom: 1px solid #E5E5E5; background: #F8F8F8; min-height: 50px; display: block; font-size: 23px; font-weight: 100; z-index: 5; } .wpmui-popup .popup-title .the-title { display: inline-block; padding-right: 71px; } .wpmui-popup.slidein.slidein-down .popup-title { top: auto; bottom: 0; border-top: 1px solid #E5E5E5; border-bottom: 0; } .wpmui-popup.slidein .popup-title { cursor: pointer; } .wpmui-popup .only-slidein { display: none; } .wpmui-popup.slideing .only-slidein { display: block; } .wpmui-popup .popup-close { position: absolute; top: 0; right: 0; width: 50px; line-height: 50px; height: 50px; text-align: center; text-decoration: none; color: #666; border-left: 1px solid #E5E5E5; cursor: pointer; z-index: 10; } .wpmui-popup .popup-close:hover, .wpmui-popup .popup-close:focus, .wpmui-popup .popup-close:active { background: #FCFCFC; color: #333; } .wpmui-popup .popup-close .dashicons { line-height: 50px; } .wpmui-popup .popup-content { position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: auto; padding: 20px 20px 20px 20px; z-index: 1; } .wpmui-popup .popup-content:after { content: ''; display: block; clear: both; padding: 50px 0 0 0; } .wpmui-popup.no-buttons .popup-content:after { padding-top: 0; } .wpmui-popup.no-close .popup-title { padding: 0 20px; } .wpmui-popup.no-close .popup-close { display: none; } .wpmui-popup hr { margin: 15px -20px; border: 0; border-top: 1px solid #E5E5E5; } .wpmui-popup .buttons { text-align: right; position: absolute; bottom: 0; right: 0; background: rgba(245, 245, 245, 0.8); padding: 10px 20px 10px; left: 0; height: 50px; border-top: 1px solid #E5E5E5; margin: 0; z-index: 2; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .popup.wdev-window, .popup.wdev-slidein { position: fixed; z-index: 10000; top: 50%; left: 50%; background: #FFF; box-sizing: border-box; } .popup.wdev-window.slidein .popup-title, .popup.wdev-slidein.slidein .popup-title { cursor: pointer; } /** * ============================================================================= * == 03. MESSAGES * ============================================================================= */ .wpmui-msg { position: relative; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .wpmui-msg .wpmui-close { float: right; margin-top: 8px; width: 20px; height: 20px; line-height: 20px; text-align: center; cursor: pointer; text-decoration: none; font-size: 16px; padding: 0; color: #CCC; } .wpmui-msg .wpmui-close:hover, .wpmui-msg .wpmui-close:focus, .wpmui-msg .wpmui-close:active { color: #333; } .wpmui-msg .debug { padding: 5px; color: #666; font-size: 12px; font-family: monospace; margin-bottom: 0.5em; background: #F8F8F8; } /** * ============================================================================= * == 04. TOOLTIPS * ============================================================================= */ .wpmui-tip-box { position: relative; } .wpmui-tip { position: absolute; display: none; padding: 8px; z-index: 100; background: #333; color: #EEE; box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4); border-radius: 2px; } .wpmui-tip.wpmui-visible { display: block; } .wpmui-tip:before { content: ''; position: absolute; border: 5px solid transparent; left: 50%; top: 50%; margin-left: -5px; margin-top: -5px; } .wpmui-tip.top:before { border-top-color: #333; bottom: -10px; top: auto; } .wpmui-tip.bottom:before { border-bottom-color: #333; top: -5px; } .wpmui-tip.left:before { border-left-color: #333; right: -10px; left: auto; } .wpmui-tip.right:before { border-right-color: #333; left: -5px; } /** * ============================================================================= * == 05. WORDPRESS POINTERS * ============================================================================= */ .wpmui-pointer.wp-pointer-left { margin-top: 30px; } .wpmui-pointer.wp-pointer-left h3 { background: transparent; color: #333; border: 0; margin: 0; padding: 13px 20px 5px; font-size: 13px; } .wpmui-pointer.wp-pointer-left h3:before { content: ''; display: none; } .wpmui-pointer.wp-pointer-left p { padding: 0 20px; margin: 2px 0; font-size: 12px; } .wpmui-pointer.wp-pointer-left .wp-pointer-content { background: #FAFDFF; border-radius: 4px; border: 1px solid #ccc; box-shadow: 0px 1px 8px -2px rgba(0, 0, 0, 0.35); padding: 0 0 15px; } .wpmui-pointer.wp-pointer-left.no-title { margin-top: 13px; } .wpmui-pointer.wp-pointer-left.no-title .wp-pointer-content { padding-top: 17px; } .wpmui-pointer.wp-pointer-left .wp-pointer-buttons { position: absolute; top: 0; right: 0; white-space: nowrap; padding: 5px 10px; } .wpmui-pointer.wp-pointer-left .wp-pointer-buttons a.close { font-size: 1px; color: transparent; width: 10px; padding: 0; } .wpmui-pointer.wp-pointer-left .wp-pointer-buttons a.close:before { position: static; float: right; line-height: 14px; margin: 3px 0 1px 5px; } .wpmui-pointer.wp-pointer-left .wp-pointer-arrow { border: 0; position: absolute; top: 50%; left: 0; margin: -6px 0 0; } .wpmui-pointer.wp-pointer-left .wp-pointer-arrow:before, .wpmui-pointer.wp-pointer-left .wp-pointer-arrow:after { content: ''; border: 6px solid transparent; margin: 0; left: -10px; position: absolute; top: 0; } .wpmui-pointer.wp-pointer-left .wp-pointer-arrow:before { border-right-color: #CCC; left: -11px; } .wpmui-pointer.wp-pointer-left .wp-pointer-arrow:after { border-right-color: #FAFDFF; } .wpmui-pointer.wp-pointer-left .wp-pointer-arrow-inner { display: none; } .wpmui-pointer.wp-pointer-left.wp-pointer-left { padding-left: 8px; margin-left: -12px; } .wpmui-pointer.wp-pointer-left.wp-pointer-left .wp-pointer-arrow { left: 8px; } /** * ============================================================================= * == 06. FORM LAYOUT * ============================================================================= */ .wpmui-form label { display: block; line-height: 26px; font-size: 14px; font-weight: 500; } .wpmui-form input[type='text'], .wpmui-form input[type='password'], .wpmui-form textarea, .wpmui-form select { width: 100%; margin: 0; display: block; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .wpmui-form .hint { color: #666; font-size: 12px; } .wpmui-form .button-link, .wpmui-popup .button-link { display: inline-block; text-decoration: underline; font-size: 13px; line-height: 26px; height: 28px; padding: 0 10px 1px; cursor: pointer; white-space: nowrap; color: #0074A2; background: transparent; border: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-box-shadow: 0 0 0 transparent; -moz-box-shadow: 0 0 0 transparent; box-shadow: 0 0 0 transparent; -webkit-transition-property: border, background, color; transition-property: border, background, color; -webkit-transition-duration: .05s; transition-duration: .05s; -webkit-transition-timing-function: ease-in-out; transition-timing-function: ease-in-out; } .wpmui-form .button-link:hover, .wpmui-form .button-link:active, .wpmui-form .button-link:focus, .wpmui-popup .button-link:hover, .wpmui-popup .button-link:active, .wpmui-popup .button-link:focus { color: #2EA2CC; } /** * ============================================================================= * == 07. SIMPLE GRID (modified) * Project Page - http://thisisdallas.github.com/Simple-Grid/ * Author - Dallas Bass * ============================================================================= */ .wpmui-grid-8 *, .wpmui-grid-12 *, .wpmui-grid-8 *:after, .wpmui-grid-12 *:after, .wpmui-grid-8 *:before, .wpmui-grid-12 *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .wpmui-grid-8 [class*='col-'], .wpmui-grid-12 [class*='col-'] { float: left; padding-right: 20px; position: relative; } .wpmui-grid-8 [class*='col-']:last-of-type, .wpmui-grid-12 [class*='col-']:last-of-type { padding-right: 0px; } .wpmui-grid-8, .wpmui-grid-12 { width: 100%; margin: 0; overflow: hidden; padding: 10px 0 0; } .wpmui-grid-8:after, .wpmui-grid-12:after { content: ''; display: table; clear: both; } .wpmui-grid-8 .col-8, .wpmui-grid-12 .col-12 { width: 100%; } .wpmui-grid-12 .col-11 { width: 91.66%; } .wpmui-grid-8 .col-7 { width: 87.5%; } .wpmui-grid-12 .col-10 { width: 83.333%; } .wpmui-grid-8 .col-6, .wpmui-grid-12 .col-9 { width: 75%; } .wpmui-grid-12 .col-8 { width: 66.66%; } .wpmui-grid-8 .col-5 { width: 62.5%; } .wpmui-grid-12 .col-7 { width: 58.33%; } .wpmui-grid-8 .col-4, .wpmui-grid-12 .col-6 { width: 50%; } .wpmui-grid-12 .col-5 { width: 41.66%; } .wpmui-grid-8 .col-3 { width: 37.5%; } .wpmui-grid-12 .col-4 { width: 33.33%; } .wpmui-grid-8 .col-2, .wpmui-grid-12 .col-3 { width: 25%; } .wpmui-grid-12 .col-2 { width: 16.667%; } .wpmui-grid-8 .col-1 { width: 12.5%; } .wpmui-grid-12 .col-1 { width: 8.33%; } @media handheld, only screen and (max-width: 767px) { .wpmui-grid-8, .wpmui-grid-12 { width: 100%; min-width: 0; margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; } .wpmui-grid-8 [class*='col-'], .wpmui-grid-12 [class*='col-'] { width: auto; float: none; margin-left: 0px; margin-right: 0px; margin-top: 10px; margin-bottom: 10px; padding-left: 20px; padding-right: 20px; } } /** * ============================================================================= * == 08. WORDPRESS ACCORDEON BOX * ============================================================================= * * Example: * *
*

*
* Title *

*
*

Content...

*
*
*/ .wpmui-box { margin-bottom: 10px; padding: 0; line-height: 1; position: relative; min-width: 255px; border: 1px solid #E5E5E5; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); background: #FFF; } .wpmui-box > h3 { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; border-bottom: 1px solid #EEE; cursor: pointer; } .wpmui-box > h3 .toggle { cursor: pointer; float: right; width: 36px; height: 36px; color: #AAA; text-decoration: none; margin: -8px -12px; text-align: center; position: relative; line-height: 36px; } .wpmui-box > h3:hover .toggle, .wpmui-box .toggle:hover, .wpmui-box .toggle:focus, .wpmui-box .toggle:active { color: #777; } .wpmui-box > h3 .toggle:before { content: '\f142'; font: 400 20px/36px dashicons; speak: none; display: inline-block; position: absolute; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; width: 100%; height: 100%; top: 0; right: 0; } .wpmui-box > .inside { margin: 6px 0 0; position: relative; padding: 0 12px 12px; line-height: 1.4em; font-size: 13px; } .wpmui-box > .inside:after { content: ''; display: table; clear: both; } .wpmui-box.closed > h3 .toggle:before { content: '\f140'; } .wpmui-box.closed > .inside { display: none; } .wpmui-box.static > h3 { cursor: default; } .wpmui-box.static > h3 .toggle { display: none; } .wpmui-box.static > .inside { display: block; } /** * ============================================================================= * == 09. WORDPRESS TAB-BOX * ============================================================================= * * Example: * *
* Config * Archive *
*
*
*
*
*/ .wpmui-tabs { border-bottom: 1px solid #EEE; padding-bottom: 0; padding-left: 10px; list-style: none; margin: 20px 0 0; } .wpmui-tabs .tab { border: 1px solid #EEE; background: #F0F0F0; color: #999; display: inline-block; text-decoration: none; margin: 0 4px -1px 0; padding: 0 12px; font-weight: 600; font-size: 13px; line-height: 34px; } .wpmui-tabs .tab:hover, .wpmui-tabs .tab:focus, .wpmui-tabs .tab:active { background: #F4F4F4; color: #777; } .wpmui-tabs .tab.active { border-bottom: 1px solid #FFF; background: #FFF; color: #444; } .wpmui-tab-contents { padding: 12px; } .wpmui-tab-contents .tab { display: none; } .wpmui-tab-contents .tab.active { display: block; } .wpmui-box > .inside > .wpmui-tabs { margin-left: -12px; margin-right: -12px; padding-left: 22px; } .wpmui-box > .inside > .wpmui-tab-contents { margin-left: -12px; margin-right: -12px; margin-bottom: -12px; } /** * ============================================================================= * == 10. SELECT2 * ============================================================================= */ .select2-container { /* The select element */ /* The dropdown list */ } .select2-container .wpmui-select2.select2-selection--single { height: 28px; } .select2-container .wpmui-select2.select2-selection--single, .select2-container .wpmui-select2.select2-selection--multiple { min-height: 28px; line-height: 27px; font-size: 14px; border-radius: 2px; border-color: #CCC; } .select2-container .wpmui-select2.select2-selection--single .select2-selection__arrow b, .select2-container .wpmui-select2.select2-selection--multiple .select2-selection__arrow b { border-top-color: #AAA; } .select2-container .wpmui-select2.select2-selection--single .select2-selection__rendered, .select2-container .wpmui-select2.select2-selection--multiple .select2-selection__rendered { display: block; margin-bottom: -1px; } .select2-container .wpmui-select2 .select2-search--inline { margin: 0; width: auto; } .select2-container .wpmui-select2 .select2-search--inline .select2-search__field { margin: 1px; background-image: none !important; } .select2-container.select2-container--focus .wpmui-select2 { border-color: #5897fb; } .select2-container.select2-container--disabled .wpmui-select2 { background: #DDD; font-weight: 200; opacity: .5; } .select2-container .select2-dropdown.wpmui-select2 { overflow: hidden; z-index: 1000500 !important; /* Thickbox modal background has 1000100 */ margin-top: -1px; box-shadow: 0 0 0 1px #5897fb inset; border: 0; border-radius: 0; } .select2-container .select2-dropdown.wpmui-select2 .select2-search { margin-bottom: -1px; padding: 1px; } .select2-container .select2-dropdown.wpmui-select2 .select2-search .select2-search__field { margin: 0; border: 0; font-size: 13px; border-bottom: 1px solid #5897fb; background-color: #FAFDFF; } .select2-container .select2-dropdown.wpmui-select2 .select2-results { padding: 0; margin: 0; font-size: 13px; } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option { margin: 0; white-space: nowrap; padding-left: 20px; position: relative; } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option:before { content: ''; background-color: transparent; background-position: center center; background-repeat: no-repeat; position: absolute; left: 1px; top: 1px; width: 20px; height: 28px; } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option[aria-selected=true] { color: #5897fb; background-color: #F5F9FF; margin: 1px; } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option[aria-selected=true]:before { /* blue check */ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTIgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxnIGlkPSJpY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNC4wMDAwMDAsIC0xMC4wMDAwMDApIiBzdHJva2U9Im5vbmUiIGZpbGw9IiM1ODk3ZmIiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuNzUwMDAwLCAxMC41MDAwMDApIj4KICAgICAgICAgICAgPHBhdGggZD0iTTguNzUsMCBMNC4zNzUsNC4zNzUgTDEuNzUsMS43NSBMMCwzLjUgTDQuMzc1LDcuODc1IEwxMC41LDEuNzUgTDguNzUsMCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==); } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted, .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted[aria-selected=true] { background-color: #5897fb; color: #FFF; } .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted:before, .select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted[aria-selected=true]:before { /* white check */ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTIgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxnIGlkPSJpY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNC4wMDAwMDAsIC0xMC4wMDAwMDApIiBzdHJva2U9Im5vbmUiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuNzUwMDAwLCAxMC41MDAwMDApIj4KICAgICAgICAgICAgPHBhdGggZD0iTTguNzUsMCBMNC4zNzUsNC4zNzUgTDEuNzUsMS43NSBMMCwzLjUgTDQuMzc1LDcuODc1IEwxMC41LDEuNzUgTDguNzUsMCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==); } .select2-container .select2-dropdown.wpmui-select2 .select2-results [aria-multiselectable=true] .select2-results__option--highlighted[aria-selected=true]:before { /* white cross */ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEwcHgiIGhlaWdodD0iMTBweCIgdmlld0JveD0iMCAwIDEwIDEwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgaWQ9Imljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjAwMDAwMCwgLTEwLjAwMDAwMCkiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI0ZGRkZGRiI+CiAgICAgICAgPHBhdGggZD0iTTEyLjc0MDAwMTcsMTAuMzAwMDAwMiBMMTAuMTI1LDEyLjkyNSBMNy41LDEwLjMgTDUuNzUsMTIuMDUgTDguMzcwMDAwODQsMTQuNjgwMDAwMyBMNS43NSwxNy4zMTk5OTk3IEw3LjUsMTkuMDY5OTk5NyBMMTAuMTE5OTk4OSwxNi40Mzk5OTk2IEwxMi43NDAwMDE3LDE5LjA2OTk5OTcgTDE0LjQ5MDAwMTcsMTcuMzE5OTk5NyBMMTEuODY5OTk4OSwxNC42ODAwMDAzIEwxNC40OTAwMDE3LDEyLjA1MDAwMDIgTDEyLjc0MDAwMTcsMTAuMzAwMDAwMiBaIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==); } /** * ============================================================================= * == 11. ON OFF SWITCH * ============================================================================= * * Example: * *
* * *
*/ .wpmui-toggle { position: relative; width: 26px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; } .wpmui-toggle-checkbox { display: none !important; } .wpmui-toggle-label { display: block; overflow: hidden; cursor: pointer; border: 1px solid #CCC; border-radius: 50px; } .wpmui-toggle-inner { display: block; width: 200%; margin-left: -100%; -moz-transition: margin 0.3s ease-in 0s; -webkit-transition: margin 0.3s ease-in 0s; -o-transition: margin 0.3s ease-in 0s; transition: margin 0.3s ease-in 0s; } .wpmui-toggle-inner:before, .wpmui-toggle-inner:after { display: block; float: left; width: 50%; height: 5px; padding: 0; line-height: 5px; font-size: 10px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; } .wpmui-toggle-inner:before { content: ""; padding-left: 5px; background-color: #0074A2; } .wpmui-toggle-inner:after { content: ""; padding-right: 5px; background-color: #EEEEEE; text-align: right; } .wpmui-toggle-switch { display: block; width: 14px; margin: -3.5px; background: #F8F8F8; border: 1px solid #CCC; border-radius: 15px; position: absolute; top: 0; bottom: 0; right: 20px; -moz-transition: all 0.3s ease-in 0s; -webkit-transition: all 0.3s ease-in 0s; -o-transition: all 0.3s ease-in 0s; transition: all 0.3s ease-in 0s; box-shadow: -1px 1px 2px rgba(0, 0, 0, 0.1); } .wpmui-toggle-checkbox:checked + .wpmui-toggle-label .wpmui-toggle-inner { margin-left: 0; } .wpmui-toggle-checkbox:checked + .wpmui-toggle-label .wpmui-toggle-switch { right: 0px; } /** * ============================================================================= * == 12. CONFIRMATION * ============================================================================= */ .wpmui-confirm-modal { left: 0; top: 0; right: 0; bottom: 0; z-index: 99998; background: #000; opacity: .4; } .wpmui-confirm-box { top: 25%; width: 580px; padding: 20px 20px 0; left: 50%; margin-left: -310px; /* Include the padding! */ z-index: 99999; background: #FFF; box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); } .wpmui-confirm-box .wpmui-confirm-btn { margin: 10px -20px 0px; padding: 10px 20px; text-align: right; background: #FAFAFA; border-top: 1px solid #E5E5E5; } .wpmui-confirm-box .wpmui-confirm-btn button { margin-left: 10px; } /** * ============================================================================= * == 13. PROGRESS BAR * ============================================================================= */ .wpmui-progress-wrap { position: relative; width: 100%; } .wpmui-progress-wrap .wpmui-progress-full { background: rgba(255, 255, 255, 0.7); width: 100%; border-radius: 2px; box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, 0.1); } .wpmui-progress-wrap .wpmui-progress { background: #369; border-radius: 2px; height: 28px; transition: width .25s; } .wpmui-progress-wrap .wpmui-progress-percent { position: absolute; left: 0; right: 0; top: 0; line-height: 28px; font-size: 13px; text-align: center; color: #FFF; text-shadow: 0 0 5px #264d73; } .wpmui-progress-wrap .wpmui-progress-percent:before { content: ''; position: absolute; left: 50%; width: 30px; height: 10px; top: 50%; border-radius: 5px; margin-top: -5px; margin-left: -15px; box-shadow: 0 0 8px 4px #264d73; background: #264d73; z-index: -1; opacity: .5; } .wpmui-progress-wrap .wpmui-progress-label { font-size: 12px; margin-top: 6px; color: #888; text-align: right; } /** * ============================================================================= * == 99. GENERAL STYLES * ============================================================================= */ .no-pad-top { padding-top: 0 !important; margin-top: 0 !important; } .no-pad-bottom { padding-bottom: 0 !important; margin-bottom: 0 !important; } .no-pad { padding-top: 0 !important; padding-bottom: 0 !important; margin-top: 0 !important; margin-bottom: 0 !important; } .dashicons.light { opacity: .5; } .cf:before, .cf:after { content: ''; display: table; } .cf:after { clear: both; } .wpmui-left { float: left; } .wpmui-right { float: right; } .button .dashicons, .button-primary .dashicons { line-height: 26px; height: 26px; float: left; margin-right: 6px; } inc/external/wpmu-lib/css/wpmu-card-list.3.min.css000064400000022046150211770060015773 0ustar00#wpwrap .wpmui-list-wrapper .wpmui-list,.wpmui-list-wrapper .wpmui-list{margin-left:-16px}#wpwrap .wpmui-list-wrapper .wpmui-list:after,.wpmui-list-wrapper .wpmui-list:after{content:'';display:table;clear:both}#wpwrap .wpmui-list-wrapper .list-card,.wpmui-list-wrapper .list-card{float:left;margin:0 0 16px 16px;width:48%;width:-webkit-calc(50% - 16px);width:calc(50% - 16px);background-color:#fff;border:1px solid #dedede;box-sizing:border-box;opacity:.8}#wpwrap .wpmui-list-wrapper .list-card .badge-container,.wpmui-list-wrapper .list-card .badge-container{overflow:hidden;width:100px;height:100px;position:absolute;left:0;top:0}#wpwrap .wpmui-list-wrapper .list-card .badge-active,.wpmui-list-wrapper .list-card .badge-active{display:none}#wpwrap .wpmui-list-wrapper .list-card.active,.wpmui-list-wrapper .list-card.active{opacity:1;background:#fff;border:1px solid #bbb;box-shadow:0 1px 3px rgba(0,0,0,.12);z-index:20}#wpwrap .wpmui-list-wrapper .list-card.active .desc,#wpwrap .wpmui-list-wrapper .list-card.active .name,.wpmui-list-wrapper .list-card.active .desc,.wpmui-list-wrapper .list-card.active .name{color:#333}#wpwrap .wpmui-list-wrapper .list-card.active .badge-active,.wpmui-list-wrapper .list-card.active .badge-active{position:absolute;top:15px;left:-35px;display:block;background-color:#6bbb1a;color:#fff;transform:rotate(315deg);padding:3px 40px;z-index:20;border:1px solid #fff}#wpwrap .wpmui-list-wrapper .list-card.active .item-icon,.wpmui-list-wrapper .list-card.active .item-icon{color:#3b8b08}#wpwrap .wpmui-list-wrapper .list-card .item-icon,.wpmui-list-wrapper .list-card .item-icon{position:absolute;top:20px;left:20px;width:128px;height:128px;margin:0 20px 20px 0;font-size:100px;z-index:16}#wpwrap .wpmui-list-wrapper .list-card .item-icon i,.wpmui-list-wrapper .list-card .item-icon i{opacity:.8;font-size:100px}#wpwrap .wpmui-list-wrapper .list-card .desc,#wpwrap .wpmui-list-wrapper .list-card .name,.wpmui-list-wrapper .list-card .desc,.wpmui-list-wrapper .list-card .name{margin-left:148px;margin-right:120px;color:#777}#wpwrap .wpmui-list-wrapper .list-card .action-links,.wpmui-list-wrapper .list-card .action-links{position:absolute;top:20px;right:20px;width:120px;text-align:right}#wpwrap .wpmui-list-wrapper .list-card .action-links .space,.wpmui-list-wrapper .list-card .action-links .space{display:block;line-height:10px;height:10px;padding:0;margin:0}#wpwrap .wpmui-list-wrapper .list-card h4,.wpmui-list-wrapper .list-card h4{margin:0 0 12px;font-size:18px;line-height:1.3}@media screen and (min-width:1600px){#wpwrap .wpmui-list-wrapper .list-card,.wpmui-list-wrapper .list-card{width:30%;width:-webkit-calc(33.3333% - 16px);width:calc(33.3333% - 16px)}}#wpwrap .wpmui-list-wrapper .list-card-top,.wpmui-list-wrapper .list-card-top{position:relative;padding:20px 20px 10px;height:135px;overflow:hidden}#wpwrap .wpmui-list-wrapper .list-card-top .fader,.wpmui-list-wrapper .list-card-top .fader{position:absolute;bottom:0;height:20px;left:0;right:0;z-index:5;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fff 90%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(255,255,255,0)),color-stop(90%,#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 90%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0,#fff 90%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0,#fff 90%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 90%)}#wpwrap .wpmui-list-wrapper .list-card-bottom,.wpmui-list-wrapper .list-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #dedede;overflow:hidden;height:45px}#wpwrap .wpmui-list-wrapper .details,#wpwrap .wpmui-list-wrapper .is-detail,.wpmui-list-wrapper .details,.wpmui-list-wrapper .is-detail{display:none}#wpwrap .wpmui-list-wrapper .is-no-detail,.wpmui-list-wrapper .is-no-detail{display:inline}#wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper,#wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper,#wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper,.wpmui-list-wrapper .details .wpmui-html-text-wrapper,.wpmui-list-wrapper .details .wpmui-input-wrapper,.wpmui-list-wrapper .details .wpmui-radio-slider-wrapper,.wpmui-list-wrapper .details .wpmui-radio-wrapper,.wpmui-list-wrapper .details .wpmui-select-wrapper{display:block;position:relative;padding:10px;margin:0 0 10px 0;background-color:#fff;border:1px solid #dedede}#wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider,#wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider,#wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider,.wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider,.wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider,.wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider,.wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider,.wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider{position:absolute;top:10px;right:10px}#wpwrap .wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider.has-labels,#wpwrap .wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider.has-labels,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider.has-labels,#wpwrap .wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider.has-labels,#wpwrap .wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider.has-labels,.wpmui-list-wrapper .details .wpmui-html-text-wrapper .wpmui-radio-slider.has-labels,.wpmui-list-wrapper .details .wpmui-input-wrapper .wpmui-radio-slider.has-labels,.wpmui-list-wrapper .details .wpmui-radio-slider-wrapper .wpmui-radio-slider.has-labels,.wpmui-list-wrapper .details .wpmui-radio-wrapper .wpmui-radio-slider.has-labels,.wpmui-list-wrapper .details .wpmui-select-wrapper .wpmui-radio-slider.has-labels{position:relative;top:0;right:0}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details:before,.wpmui-list-wrapper .wpmui-list-table.has-details:before{content:'';background:#000;opacity:.3;position:fixed;left:0;top:0;right:0;bottom:0;z-index:21}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .list-card,.wpmui-list-wrapper .wpmui-list-table.has-details .list-card{opacity:.7}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode,.wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode{z-index:25;opacity:1}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-detail,.wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-detail{display:inline}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-no-detail,.wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .is-no-detail{display:none}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .list-card-top,.wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .list-card-top{position:absolute;top:0;bottom:43px;height:auto;left:0;right:0;overflow:visible}#wpwrap .wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .details,.wpmui-list-wrapper .wpmui-list-table.has-details .detail-mode .details{display:block;position:absolute;overflow:auto;top:135px;left:0;right:0;background:#fcfcfc;border-top:1px solid #dedede;padding:20px;bottom:0}#wpwrap .wpmui-list-wrapper .detail-mode,.wpmui-list-wrapper .detail-mode{position:absolute;top:50px;left:50px;right:50px;width:auto;height:auto;z-index:20;box-shadow:0 1px 10px rgba(0,0,0,.3);opacity:1}#wpwrap .wpmui-list-wrapper .detail-mode .list-card,.wpmui-list-wrapper .detail-mode .list-card{border:1px solid #999}#wpwrap .wpmui-list-wrapper .detail-mode .list-card-bottom,.wpmui-list-wrapper .detail-mode .list-card-bottom{position:absolute;bottom:0;left:0;right:0}#wpwrap .wpmui-list-wrapper .toggle-details,.wpmui-list-wrapper .toggle-details{cursor:pointer}#wpwrap .wpmui-list-wrapper .toggle-link,.wpmui-list-wrapper .toggle-link{float:right;color:#0074a2}#wpwrap .wpmui-list-wrapper .toggle-link:hover,.wpmui-list-wrapper .toggle-link:hover{color:#2ea2cc}#wpwrap .wpmui-list-wrapper .filter-links>li,.wpmui-list-wrapper .filter-links>li{line-height:48px;height:48px}#wpwrap .wpmui-list-wrapper .filter-links>li a,.wpmui-list-wrapper .filter-links>li a{padding-top:0;padding-bottom:0}#wpwrap .wpmui-list-wrapper .close-button,.wpmui-list-wrapper .close-button{position:absolute;top:-30px;right:-30px;border-radius:15px;background:#fff}#wpwrap .wpmui-list-wrapper .close-button:after,.wpmui-list-wrapper .close-button:after{content:"\f335";display:inline-block;width:30px;height:30px;font-size:26px;line-height:30px;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}inc/external/wpmu-lib/css/jquery-ui.wpmui.3.min.css000064400000067364150211770060016231 0ustar00/*! jQuery UI - v1.11.4 - 2015-09-27 * http://jqueryui.com */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Roboto,"Open Sans",verdana;font-size:14px}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Roboto,"Open Sans",verdana;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(../img/jquery-ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(../img/jquery-ui/ui-bg_flat_75_cccccc_40x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(../img/jquery-ui/ui-bg_highlight-hard_75_e6e6e6_1x100.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #999;background:#dadada url(../img/jquery-ui/ui-bg_highlight-hard_75_dadada_1x100.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(../img/jquery-ui/ui-bg_highlight-hard_65_ffffff_1x100.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #484;background:#f4fff4 url(../img/jquery-ui/ui-bg_flat_0_f4fff4_40x100.png) 50% 50% repeat-x;color:#686}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#686}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #a44;background:#fff4f4 url(../img/jquery-ui/ui-bg_flat_0_fff4f4_40x100.png) 50% 50% repeat-x;color:#511}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#511}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#511}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(../img/jquery-ui/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(../img/jquery-ui/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(../img/jquery-ui/ui-icons_888888_256x240.png)}.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(../img/jquery-ui/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(../img/jquery-ui/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(../img/jquery-ui/ui-icons_484_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(../img/jquery-ui/ui-icons_A44_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:0}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:0}.ui-widget-overlay{background:#aaa url(../img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(../img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:2px}inc/external/wpmu-lib/css/animate.3.css000064400000214515150211770060013763 0ustar00/*! * https://github.com/daneden/animate.css/blob/master/animate.css * * Note: This is the unmodified, compiled CSS file from above repository. * * animate.css -http://daneden.me/animate * Version - 3.5.1 * Licensed under the MIT license - http://opensource.org/licenses/MIT * * Copyright (c) 2016 Daniel Eden */ .animated { -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .animated.infinite { -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; } .animated.hinge { -webkit-animation-duration: 2s; animation-duration: 2s; } .animated.flipOutX, .animated.flipOutY, .animated.bounceIn, .animated.bounceOut { -webkit-animation-duration: .75s; animation-duration: .75s; } @-webkit-keyframes bounce { from, 20%, 53%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 40%, 43% { -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -webkit-transform: translate3d(0, -30px, 0); transform: translate3d(0, -30px, 0); } 70% { -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -webkit-transform: translate3d(0, -15px, 0); transform: translate3d(0, -15px, 0); } 90% { -webkit-transform: translate3d(0, -4px, 0); transform: translate3d(0, -4px, 0); } } @keyframes bounce { from, 20%, 53%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 40%, 43% { -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -webkit-transform: translate3d(0, -30px, 0); transform: translate3d(0, -30px, 0); } 70% { -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -webkit-transform: translate3d(0, -15px, 0); transform: translate3d(0, -15px, 0); } 90% { -webkit-transform: translate3d(0, -4px, 0); transform: translate3d(0, -4px, 0); } } .bounce { -webkit-animation-name: bounce; animation-name: bounce; -webkit-transform-origin: center bottom; transform-origin: center bottom; } @-webkit-keyframes flash { from, 50%, to { opacity: 1; } 25%, 75% { opacity: 0; } } @keyframes flash { from, 50%, to { opacity: 1; } 25%, 75% { opacity: 0; } } .flash { -webkit-animation-name: flash; animation-name: flash; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes pulse { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 50% { -webkit-transform: scale3d(1.05, 1.05, 1.05); transform: scale3d(1.05, 1.05, 1.05); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes pulse { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 50% { -webkit-transform: scale3d(1.05, 1.05, 1.05); transform: scale3d(1.05, 1.05, 1.05); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .pulse { -webkit-animation-name: pulse; animation-name: pulse; } @-webkit-keyframes rubberBand { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes rubberBand { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .rubberBand { -webkit-animation-name: rubberBand; animation-name: rubberBand; } @-webkit-keyframes shake { from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } @keyframes shake { from, to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } .shake { -webkit-animation-name: shake; animation-name: shake; } @-webkit-keyframes headShake { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 6.5% { -webkit-transform: translateX(-6px) rotateY(-9deg); transform: translateX(-6px) rotateY(-9deg); } 18.5% { -webkit-transform: translateX(5px) rotateY(7deg); transform: translateX(5px) rotateY(7deg); } 31.5% { -webkit-transform: translateX(-3px) rotateY(-5deg); transform: translateX(-3px) rotateY(-5deg); } 43.5% { -webkit-transform: translateX(2px) rotateY(3deg); transform: translateX(2px) rotateY(3deg); } 50% { -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes headShake { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 6.5% { -webkit-transform: translateX(-6px) rotateY(-9deg); transform: translateX(-6px) rotateY(-9deg); } 18.5% { -webkit-transform: translateX(5px) rotateY(7deg); transform: translateX(5px) rotateY(7deg); } 31.5% { -webkit-transform: translateX(-3px) rotateY(-5deg); transform: translateX(-3px) rotateY(-5deg); } 43.5% { -webkit-transform: translateX(2px) rotateY(3deg); transform: translateX(2px) rotateY(3deg); } 50% { -webkit-transform: translateX(0); transform: translateX(0); } } .headShake { -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; -webkit-animation-name: headShake; animation-name: headShake; } @-webkit-keyframes swing { 20% { -webkit-transform: rotate3d(0, 0, 1, 15deg); transform: rotate3d(0, 0, 1, 15deg); } 40% { -webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg); } 60% { -webkit-transform: rotate3d(0, 0, 1, 5deg); transform: rotate3d(0, 0, 1, 5deg); } 80% { -webkit-transform: rotate3d(0, 0, 1, -5deg); transform: rotate3d(0, 0, 1, -5deg); } to { -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } } @keyframes swing { 20% { -webkit-transform: rotate3d(0, 0, 1, 15deg); transform: rotate3d(0, 0, 1, 15deg); } 40% { -webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg); } 60% { -webkit-transform: rotate3d(0, 0, 1, 5deg); transform: rotate3d(0, 0, 1, 5deg); } 80% { -webkit-transform: rotate3d(0, 0, 1, -5deg); transform: rotate3d(0, 0, 1, -5deg); } to { -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } } .swing { -webkit-transform-origin: top center; transform-origin: top center; -webkit-animation-name: swing; animation-name: swing; } @-webkit-keyframes tada { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 10%, 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes tada { from { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 10%, 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } to { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .tada { -webkit-animation-name: tada; animation-name: tada; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes wobble { from { -webkit-transform: none; transform: none; } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } to { -webkit-transform: none; transform: none; } } @keyframes wobble { from { -webkit-transform: none; transform: none; } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } to { -webkit-transform: none; transform: none; } } .wobble { -webkit-animation-name: wobble; animation-name: wobble; } @-webkit-keyframes jello { from, 11.1%, to { -webkit-transform: none; transform: none; } 22.2% { -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); transform: skewX(-12.5deg) skewY(-12.5deg); } 33.3% { -webkit-transform: skewX(6.25deg) skewY(6.25deg); transform: skewX(6.25deg) skewY(6.25deg); } 44.4% { -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); transform: skewX(-3.125deg) skewY(-3.125deg); } 55.5% { -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); transform: skewX(1.5625deg) skewY(1.5625deg); } 66.6% { -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); transform: skewX(-0.78125deg) skewY(-0.78125deg); } 77.7% { -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); transform: skewX(0.39063deg) skewY(0.39063deg); } 88.8% { -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); transform: skewX(-0.19531deg) skewY(-0.19531deg); } } @keyframes jello { from, 11.1%, to { -webkit-transform: none; transform: none; } 22.2% { -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); transform: skewX(-12.5deg) skewY(-12.5deg); } 33.3% { -webkit-transform: skewX(6.25deg) skewY(6.25deg); transform: skewX(6.25deg) skewY(6.25deg); } 44.4% { -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); transform: skewX(-3.125deg) skewY(-3.125deg); } 55.5% { -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); transform: skewX(1.5625deg) skewY(1.5625deg); } 66.6% { -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); transform: skewX(-0.78125deg) skewY(-0.78125deg); } 77.7% { -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); transform: skewX(0.39063deg) skewY(0.39063deg); } 88.8% { -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); transform: skewX(-0.19531deg) skewY(-0.19531deg); } } .jello { -webkit-animation-name: jello; animation-name: jello; -webkit-transform-origin: center; transform-origin: center; } @-webkit-keyframes bounceIn { from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes bounceIn { from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .bounceIn { -webkit-animation-name: bounceIn; animation-name: bounceIn; } @-webkit-keyframes bounceInDown { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } to { -webkit-transform: none; transform: none; } } @keyframes bounceInDown { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } to { -webkit-transform: none; transform: none; } } .bounceInDown { -webkit-animation-name: bounceInDown; animation-name: bounceInDown; } @-webkit-keyframes bounceInLeft { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: translate3d(-3000px, 0, 0); transform: translate3d(-3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } to { -webkit-transform: none; transform: none; } } @keyframes bounceInLeft { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: translate3d(-3000px, 0, 0); transform: translate3d(-3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } to { -webkit-transform: none; transform: none; } } .bounceInLeft { -webkit-animation-name: bounceInLeft; animation-name: bounceInLeft; } @-webkit-keyframes bounceInRight { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } from { opacity: 0; -webkit-transform: translate3d(3000px, 0, 0); transform: translate3d(3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } to { -webkit-transform: none; transform: none; } } @keyframes bounceInRight { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } from { opacity: 0; -webkit-transform: translate3d(3000px, 0, 0); transform: translate3d(3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } to { -webkit-transform: none; transform: none; } } .bounceInRight { -webkit-animation-name: bounceInRight; animation-name: bounceInRight; } @-webkit-keyframes bounceInUp { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } from { opacity: 0; -webkit-transform: translate3d(0, 3000px, 0); transform: translate3d(0, 3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes bounceInUp { from, 60%, 75%, 90%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } from { opacity: 0; -webkit-transform: translate3d(0, 3000px, 0); transform: translate3d(0, 3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .bounceInUp { -webkit-animation-name: bounceInUp; animation-name: bounceInUp; } @-webkit-keyframes bounceOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } to { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @keyframes bounceOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } to { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } .bounceOut { -webkit-animation-name: bounceOut; animation-name: bounceOut; } @-webkit-keyframes bounceOutDown { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @keyframes bounceOutDown { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } .bounceOutDown { -webkit-animation-name: bounceOutDown; animation-name: bounceOutDown; } @-webkit-keyframes bounceOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @keyframes bounceOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } .bounceOutLeft { -webkit-animation-name: bounceOutLeft; animation-name: bounceOutLeft; } @-webkit-keyframes bounceOutRight { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } @keyframes bounceOutRight { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } .bounceOutRight { -webkit-animation-name: bounceOutRight; animation-name: bounceOutRight; } @-webkit-keyframes bounceOutUp { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @keyframes bounceOutUp { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } .bounceOutUp { -webkit-animation-name: bounceOutUp; animation-name: bounceOutUp; } @-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fadeIn { -webkit-animation-name: fadeIn; animation-name: fadeIn; } @-webkit-keyframes fadeInDown { from { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInDown { from { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInDown { -webkit-animation-name: fadeInDown; animation-name: fadeInDown; } @-webkit-keyframes fadeInDownBig { from { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInDownBig { from { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInDownBig { -webkit-animation-name: fadeInDownBig; animation-name: fadeInDownBig; } @-webkit-keyframes fadeInLeft { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInLeft { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInLeft { -webkit-animation-name: fadeInLeft; animation-name: fadeInLeft; } @-webkit-keyframes fadeInLeftBig { from { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInLeftBig { from { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInLeftBig { -webkit-animation-name: fadeInLeftBig; animation-name: fadeInLeftBig; } @-webkit-keyframes fadeInRight { from { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInRight { from { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInRight { -webkit-animation-name: fadeInRight; animation-name: fadeInRight; } @-webkit-keyframes fadeInRightBig { from { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInRightBig { from { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInRightBig { -webkit-animation-name: fadeInRightBig; animation-name: fadeInRightBig; } @-webkit-keyframes fadeInUp { from { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInUp { from { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInUp { -webkit-animation-name: fadeInUp; animation-name: fadeInUp; } @-webkit-keyframes fadeInUpBig { from { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInUpBig { from { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } to { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInUpBig { -webkit-animation-name: fadeInUpBig; animation-name: fadeInUpBig; } @-webkit-keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } .fadeOut { -webkit-animation-name: fadeOut; animation-name: fadeOut; } @-webkit-keyframes fadeOutDown { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } @keyframes fadeOutDown { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } .fadeOutDown { -webkit-animation-name: fadeOutDown; animation-name: fadeOutDown; } @-webkit-keyframes fadeOutDownBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @keyframes fadeOutDownBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } .fadeOutDownBig { -webkit-animation-name: fadeOutDownBig; animation-name: fadeOutDownBig; } @-webkit-keyframes fadeOutLeft { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } @keyframes fadeOutLeft { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } .fadeOutLeft { -webkit-animation-name: fadeOutLeft; animation-name: fadeOutLeft; } @-webkit-keyframes fadeOutLeftBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @keyframes fadeOutLeftBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } .fadeOutLeftBig { -webkit-animation-name: fadeOutLeftBig; animation-name: fadeOutLeftBig; } @-webkit-keyframes fadeOutRight { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } @keyframes fadeOutRight { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } .fadeOutRight { -webkit-animation-name: fadeOutRight; animation-name: fadeOutRight; } @-webkit-keyframes fadeOutRightBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } @keyframes fadeOutRightBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } .fadeOutRightBig { -webkit-animation-name: fadeOutRightBig; animation-name: fadeOutRightBig; } @-webkit-keyframes fadeOutUp { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } @keyframes fadeOutUp { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } .fadeOutUp { -webkit-animation-name: fadeOutUp; animation-name: fadeOutUp; } @-webkit-keyframes fadeOutUpBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @keyframes fadeOutUpBig { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } .fadeOutUpBig { -webkit-animation-name: fadeOutUpBig; animation-name: fadeOutUpBig; } @-webkit-keyframes flip { from { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); transform: perspective(400px) rotate3d(0, 1, 0, -360deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 40% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 80% { -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); transform: perspective(400px) scale3d(0.95, 0.95, 0.95); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } to { -webkit-transform: perspective(400px); transform: perspective(400px); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } } @keyframes flip { from { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); transform: perspective(400px) rotate3d(0, 1, 0, -360deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 40% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 80% { -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95); transform: perspective(400px) scale3d(0.95, 0.95, 0.95); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } to { -webkit-transform: perspective(400px); transform: perspective(400px); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } } .animated.flip { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation-name: flip; animation-name: flip; } @-webkit-keyframes flipInX { from { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } to { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes flipInX { from { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } to { -webkit-transform: perspective(400px); transform: perspective(400px); } } .flipInX { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipInX; animation-name: flipInX; } @-webkit-keyframes flipInY { from { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } to { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes flipInY { from { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } to { -webkit-transform: perspective(400px); transform: perspective(400px); } } .flipInY { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipInY; animation-name: flipInY; } @-webkit-keyframes flipOutX { from { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } to { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } @keyframes flipOutX { from { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } to { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } .flipOutX { -webkit-animation-name: flipOutX; animation-name: flipOutX; -webkit-backface-visibility: visible !important; backface-visibility: visible !important; } @-webkit-keyframes flipOutY { from { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } to { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } @keyframes flipOutY { from { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } to { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } .flipOutY { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipOutY; animation-name: flipOutY; } @-webkit-keyframes lightSpeedIn { from { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } to { -webkit-transform: none; transform: none; opacity: 1; } } @keyframes lightSpeedIn { from { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } to { -webkit-transform: none; transform: none; opacity: 1; } } .lightSpeedIn { -webkit-animation-name: lightSpeedIn; animation-name: lightSpeedIn; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } @-webkit-keyframes lightSpeedOut { from { opacity: 1; } to { -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; } } @keyframes lightSpeedOut { from { opacity: 1; } to { -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; } } .lightSpeedOut { -webkit-animation-name: lightSpeedOut; animation-name: lightSpeedOut; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } @-webkit-keyframes rotateIn { from { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateIn { from { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: none; transform: none; opacity: 1; } } .rotateIn { -webkit-animation-name: rotateIn; animation-name: rotateIn; } @-webkit-keyframes rotateInDownLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInDownLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInDownLeft { -webkit-animation-name: rotateInDownLeft; animation-name: rotateInDownLeft; } @-webkit-keyframes rotateInDownRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInDownRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInDownRight { -webkit-animation-name: rotateInDownRight; animation-name: rotateInDownRight; } @-webkit-keyframes rotateInUpLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInUpLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInUpLeft { -webkit-animation-name: rotateInUpLeft; animation-name: rotateInUpLeft; } @-webkit-keyframes rotateInUpRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -90deg); transform: rotate3d(0, 0, 1, -90deg); opacity: 0; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInUpRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -90deg); transform: rotate3d(0, 0, 1, -90deg); opacity: 0; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInUpRight { -webkit-animation-name: rotateInUpRight; animation-name: rotateInUpRight; } @-webkit-keyframes rotateOut { from { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } @keyframes rotateOut { from { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } .rotateOut { -webkit-animation-name: rotateOut; animation-name: rotateOut; } @-webkit-keyframes rotateOutDownLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } } @keyframes rotateOutDownLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } } .rotateOutDownLeft { -webkit-animation-name: rotateOutDownLeft; animation-name: rotateOutDownLeft; } @-webkit-keyframes rotateOutDownRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } @keyframes rotateOutDownRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } .rotateOutDownRight { -webkit-animation-name: rotateOutDownRight; animation-name: rotateOutDownRight; } @-webkit-keyframes rotateOutUpLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } @keyframes rotateOutUpLeft { from { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } to { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } .rotateOutUpLeft { -webkit-animation-name: rotateOutUpLeft; animation-name: rotateOutUpLeft; } @-webkit-keyframes rotateOutUpRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 90deg); transform: rotate3d(0, 0, 1, 90deg); opacity: 0; } } @keyframes rotateOutUpRight { from { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } to { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 90deg); transform: rotate3d(0, 0, 1, 90deg); opacity: 0; } } .rotateOutUpRight { -webkit-animation-name: rotateOutUpRight; animation-name: rotateOutUpRight; } @-webkit-keyframes hinge { 0% { -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 20%, 60% { -webkit-transform: rotate3d(0, 0, 1, 80deg); transform: rotate3d(0, 0, 1, 80deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 40%, 80% { -webkit-transform: rotate3d(0, 0, 1, 60deg); transform: rotate3d(0, 0, 1, 60deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; opacity: 1; } to { -webkit-transform: translate3d(0, 700px, 0); transform: translate3d(0, 700px, 0); opacity: 0; } } @keyframes hinge { 0% { -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 20%, 60% { -webkit-transform: rotate3d(0, 0, 1, 80deg); transform: rotate3d(0, 0, 1, 80deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 40%, 80% { -webkit-transform: rotate3d(0, 0, 1, 60deg); transform: rotate3d(0, 0, 1, 60deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; opacity: 1; } to { -webkit-transform: translate3d(0, 700px, 0); transform: translate3d(0, 700px, 0); opacity: 0; } } .hinge { -webkit-animation-name: hinge; animation-name: hinge; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes rollIn { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } to { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes rollIn { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } to { opacity: 1; -webkit-transform: none; transform: none; } } .rollIn { -webkit-animation-name: rollIn; animation-name: rollIn; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes rollOut { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } @keyframes rollOut { from { opacity: 1; } to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } .rollOut { -webkit-animation-name: rollOut; animation-name: rollOut; } @-webkit-keyframes zoomIn { from { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 50% { opacity: 1; } } @keyframes zoomIn { from { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 50% { opacity: 1; } } .zoomIn { -webkit-animation-name: zoomIn; animation-name: zoomIn; } @-webkit-keyframes zoomInDown { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomInDown { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomInDown { -webkit-animation-name: zoomInDown; animation-name: zoomInDown; } @-webkit-keyframes zoomInLeft { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomInLeft { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomInLeft { -webkit-animation-name: zoomInLeft; animation-name: zoomInLeft; } @-webkit-keyframes zoomInRight { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomInRight { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomInRight { -webkit-animation-name: zoomInRight; animation-name: zoomInRight; } @-webkit-keyframes zoomInUp { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomInUp { from { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } 60% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomInUp { -webkit-animation-name: zoomInUp; animation-name: zoomInUp; } @-webkit-keyframes zoomOut { from { opacity: 1; } 50% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } to { opacity: 0; } } @keyframes zoomOut { from { opacity: 1; } 50% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } to { opacity: 0; } } .zoomOut { -webkit-animation-name: zoomOut; animation-name: zoomOut; } @-webkit-keyframes zoomOutDown { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } to { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomOutDown { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } to { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomOutDown { -webkit-animation-name: zoomOutDown; animation-name: zoomOutDown; } @-webkit-keyframes zoomOutLeft { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); } to { opacity: 0; -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); transform: scale(0.1) translate3d(-2000px, 0, 0); -webkit-transform-origin: left center; transform-origin: left center; } } @keyframes zoomOutLeft { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); } to { opacity: 0; -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); transform: scale(0.1) translate3d(-2000px, 0, 0); -webkit-transform-origin: left center; transform-origin: left center; } } .zoomOutLeft { -webkit-animation-name: zoomOutLeft; animation-name: zoomOutLeft; } @-webkit-keyframes zoomOutRight { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); } to { opacity: 0; -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); transform: scale(0.1) translate3d(2000px, 0, 0); -webkit-transform-origin: right center; transform-origin: right center; } } @keyframes zoomOutRight { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); } to { opacity: 0; -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); transform: scale(0.1) translate3d(2000px, 0, 0); -webkit-transform-origin: right center; transform-origin: right center; } } .zoomOutRight { -webkit-animation-name: zoomOutRight; animation-name: zoomOutRight; } @-webkit-keyframes zoomOutUp { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } to { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } @keyframes zoomOutUp { 40% { opacity: 1; -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } to { opacity: 0; -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); } } .zoomOutUp { -webkit-animation-name: zoomOutUp; animation-name: zoomOutUp; } @-webkit-keyframes slideInDown { from { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes slideInDown { from { -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .slideInDown { -webkit-animation-name: slideInDown; animation-name: slideInDown; } @-webkit-keyframes slideInLeft { from { -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes slideInLeft { from { -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .slideInLeft { -webkit-animation-name: slideInLeft; animation-name: slideInLeft; } @-webkit-keyframes slideInRight { from { -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes slideInRight { from { -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .slideInRight { -webkit-animation-name: slideInRight; animation-name: slideInRight; } @-webkit-keyframes slideInUp { from { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes slideInUp { from { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); visibility: visible; } to { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .slideInUp { -webkit-animation-name: slideInUp; animation-name: slideInUp; } @-webkit-keyframes slideOutDown { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } @keyframes slideOutDown { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } .slideOutDown { -webkit-animation-name: slideOutDown; animation-name: slideOutDown; } @-webkit-keyframes slideOutLeft { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } @keyframes slideOutLeft { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } .slideOutLeft { -webkit-animation-name: slideOutLeft; animation-name: slideOutLeft; } @-webkit-keyframes slideOutRight { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } @keyframes slideOutRight { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } .slideOutRight { -webkit-animation-name: slideOutRight; animation-name: slideOutRight; } @-webkit-keyframes slideOutUp { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } @keyframes slideOutUp { from { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } to { visibility: hidden; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } .slideOutUp { -webkit-animation-name: slideOutUp; animation-name: slideOutUp; } inc/external/wpmu-lib/css/wpmu-vnav.3.css000064400000006011150211770060014273 0ustar00/** * UI Pattern: Vertical navigation. * Version: 1.0.0 */ .lst-vnav { list-style: none; padding: 0; position: relative; } .lst-vnav-item { padding: 0; margin: 0; } .lst-vnav-sep { border-bottom: 1px solid #E8E8E8; padding: 0; margin: 0; padding-bottom: 5px; margin-bottom: 5px; } .lst-vnav-item h2, .lst-vnav-item h3 { width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 5px 5px; margin: 0; height: 22px; line-height: 22px; font-size: 15px; color: #0074A2; cursor: pointer; position: relative; z-index: 2; font-weight: normal; border: 1px solid transparent; } .lst-vnav-item h2:hover, .lst-vnav-item h3:hover { color: #2EA2CC; } .lst-vnav-item.active h2, .lst-vnav-item.active h3 { color: #333; background-color: #FDFDFD; border: 1px solid #DEDEDE; border-right-color: #FDFDFD; } .lst-vnav-item > .data { display: none; margin: 0; border: 1px solid #DEDEDE; padding: 10px; top: 0; right: 0; left: 191px; position: absolute; background-color: #FDFDFD; } .lst-vnav-item.active > .data { display: block; z-index: 1; } .lst-vnav-item .form-table tbody > tr:first-child > th, .lst-vnav-item .form-table tbody > tr:first-child > td { padding-top: 0; } .lst-vnav-item .form-table tbody > tr:last-child > th, .lst-vnav-item .form-table tbody > tr:last-child > td { padding-bottom: 0; } .lst-vnav-item .widefat thead > tr > th, .lst-vnav-item .widefat thead > tr > td, .lst-vnav-item .widefat tfoot > tr > th, .lst-vnav-item .widefat tfoot > tr > td { padding: 8px 10px; } /* Condense the tabs/setting-headers on small screens */ @media screen and (max-width: 1024px) { .lst-vnav-item h2, .lst-vnav-item h3 { width: 150px; } .lst-vnav-item > .data { left: 161px; padding: 5px; } .lst-vnav-item .form-table th { width: 170px; } } /* Change vertical nav to accordeon style on mobile screens */ @media screen and (max-width: 782px) { .lst-vnav { margin-bottom: 40px; } .lst-vnav-item h2, .lst-vnav-item h3 { width: auto; background-color: #F8F8F8; display: none; font-weight: bold; } .lst-vnav-item.active h2, .lst-vnav-item.active h3 { display: block; background-color: #F1F1F1; border-bottom-color: transparent; border-right-color: #DEDEDE; } .lst-vnav.open .lst-vnav-item h2, .lst-vnav.open .lst-vnav-item h3 { display: block; border-top-style: none; border-bottom-style: none; border-left-color: #999; border-right-color: #999; } .lst-vnav.open .lst-vnav-item:first-child h2, .lst-vnav.open .lst-vnav-item:first-child h3 { border-top: 1px solid #999; } .lst-vnav.open .lst-vnav-item:last-child h2, .lst-vnav.open .lst-vnav-item:last-child h3 { border-bottom: 1px solid #999; } .lst-vnav-item > .data { left: 0; top: 30px; border-top-style: none; min-height: 0 !important; } .lst-vnav-item .form-table th { width: auto; } .lst-vnav-item .form-table td { padding-left: 16px; } } inc/external/wpmu-lib/css/select2.3.min.css000064400000034765150211770060014477 0ustar00/*! * https://github.com/select2/select2/blob/master/dist/css/select2.css * * Select2 4.0.3 * https://select2.github.io * * Released under the MIT license * https://github.com/select2/select2/blob/master/LICENSE.md */.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}inc/external/wpmu-lib/css/wpmu-vnav.3.min.css000064400000004427150211770060015066 0ustar00.lst-vnav{list-style:none;padding:0;position:relative}.lst-vnav-item{padding:0;margin:0}.lst-vnav-sep{border-bottom:1px solid #e8e8e8;padding:0;margin:0;padding-bottom:5px;margin-bottom:5px}.lst-vnav-item h2,.lst-vnav-item h3{width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px 5px;margin:0;height:22px;line-height:22px;font-size:15px;color:#0074a2;cursor:pointer;position:relative;z-index:2;font-weight:400;border:1px solid transparent}.lst-vnav-item h2:hover,.lst-vnav-item h3:hover{color:#2ea2cc}.lst-vnav-item.active h2,.lst-vnav-item.active h3{color:#333;background-color:#fdfdfd;border:1px solid #dedede;border-right-color:#fdfdfd}.lst-vnav-item>.data{display:none;margin:0;border:1px solid #dedede;padding:10px;top:0;right:0;left:191px;position:absolute;background-color:#fdfdfd}.lst-vnav-item.active>.data{display:block;z-index:1}.lst-vnav-item .form-table tbody>tr:first-child>td,.lst-vnav-item .form-table tbody>tr:first-child>th{padding-top:0}.lst-vnav-item .form-table tbody>tr:last-child>td,.lst-vnav-item .form-table tbody>tr:last-child>th{padding-bottom:0}.lst-vnav-item .widefat tfoot>tr>td,.lst-vnav-item .widefat tfoot>tr>th,.lst-vnav-item .widefat thead>tr>td,.lst-vnav-item .widefat thead>tr>th{padding:8px 10px}@media screen and (max-width:1024px){.lst-vnav-item h2,.lst-vnav-item h3{width:150px}.lst-vnav-item>.data{left:161px;padding:5px}.lst-vnav-item .form-table th{width:170px}}@media screen and (max-width:782px){.lst-vnav{margin-bottom:40px}.lst-vnav-item h2,.lst-vnav-item h3{width:auto;background-color:#f8f8f8;display:none;font-weight:700}.lst-vnav-item.active h2,.lst-vnav-item.active h3{display:block;background-color:#f1f1f1;border-bottom-color:transparent;border-right-color:#dedede}.lst-vnav.open .lst-vnav-item h2,.lst-vnav.open .lst-vnav-item h3{display:block;border-top-style:none;border-bottom-style:none;border-left-color:#999;border-right-color:#999}.lst-vnav.open .lst-vnav-item:first-child h2,.lst-vnav.open .lst-vnav-item:first-child h3{border-top:1px solid #999}.lst-vnav.open .lst-vnav-item:last-child h2,.lst-vnav.open .lst-vnav-item:last-child h3{border-bottom:1px solid #999}.lst-vnav-item>.data{left:0;top:30px;border-top-style:none;min-height:0!important}.lst-vnav-item .form-table th{width:auto}.lst-vnav-item .form-table td{padding-left:16px}}inc/external/wpmu-lib/css/jquery-ui.wpmui.3.css000064400000110111150211770060015422 0ustar00/*! jQuery UI - v1.11.4 - 2015-09-27 * http://jqueryui.com */ /** * Notes: This is a branded version with following changes: * 1) Image path is modified * Move the images from "images/" to "../img/jquery-ui/" * Define SCSS variable $img_url * Search for "images/" and replace with variable img_url, remove quotes * * Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Roboto%2C%22Open%20Sans%22%2Cverdana&fwDefault=normal&fsDefault=14px&cornerRadius=0&bgColorHeader=%23cccccc&bgTextureHeader=flat&bgImgOpacityHeader=75&borderColorHeader=%23aaaaaa&fcHeader=%23222222&iconColorHeader=%23222222&bgColorContent=%23ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23e6e6e6&bgTextureDefault=highlight_hard&bgImgOpacityDefault=75&borderColorDefault=%23d3d3d3&fcDefault=%23555555&iconColorDefault=%23888888&bgColorHover=%23dadada&bgTextureHover=highlight_hard&bgImgOpacityHover=75&borderColorHover=%23999999&fcHover=%23212121&iconColorHover=%23454545&bgColorActive=%23ffffff&bgTextureActive=highlight_hard&bgImgOpacityActive=65&borderColorActive=%23aaaaaa&fcActive=%23212121&iconColorActive=%23454545&bgColorHighlight=%23f4fff4&bgTextureHighlight=flat&bgImgOpacityHighlight=0&borderColorHighlight=%23484&fcHighlight=%23686&iconColorHighlight=%23484&bgColorError=%23fff4f4&bgTextureError=flat&bgImgOpacityError=0&borderColorError=%23A44&fcError=%23511&iconColorError=%23A44&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=2px * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ /* usage: ../img/jquery-ui/ */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-clearfix { min-height: 0; /* support: IE7 */ } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter: Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; min-height: 0; /* support: IE7 */ font-size: 100%; } .ui-accordion .ui-accordion-icons { padding-left: 2.2em; } .ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-button { display: inline-block; position: relative; padding: 0; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; overflow: visible; /* removes extra width in IE */ } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2.2em; } /* button elements seem to need a little more width */ button.ui-button-icon-only { width: 2.4em; } .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /* button text element */ .ui-button .ui-button-text { display: block; line-height: normal; } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /* button icon element(s) */ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /* button sets */ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } /* workarounds */ /* reset extra padding in Firefox, see h5bp.com/l */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } .ui-dialog { overflow: hidden; position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 12px; height: 12px; right: -5px; bottom: -5px; background-position: 16px 16px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: none; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { position: relative; margin: 0; padding: 3px 1em 3px .4em; cursor: pointer; min-height: 0; /* support: IE7 */ /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; /* Support: IE7 */ overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-button { display: inline-block; overflow: hidden; position: relative; text-decoration: none; cursor: pointer; } .ui-selectmenu-button span.ui-icon { right: 0.5em; left: auto; margin-top: -8px; position: absolute; top: 50%; } .ui-selectmenu-button span.ui-selectmenu-text { text-align: left; padding: 0.4em 2.1em 0.4em 1em; display: block; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; } .ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* vertically center icon */ .ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } /* TR overrides */ .ui-spinner .ui-icon-triangle-1-s { /* need to fix icons sprite */ background-position: -65px -16px; } .ui-tabs { position: relative; /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; -webkit-box-shadow: 0 0 5px #aaa; box-shadow: 0 0 5px #aaa; } body .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .ui-widget { font-family: Roboto,"Open Sans",verdana; font-size: 14px; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Roboto,"Open Sans",verdana; font-size: 1em; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(../img/jquery-ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(../img/jquery-ui/ui-bg_flat_75_cccccc_40x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(../img/jquery-ui/ui-bg_highlight-hard_75_e6e6e6_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(../img/jquery-ui/ui-bg_highlight-hard_75_dadada_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited { color: #212121; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(../img/jquery-ui/ui-bg_highlight-hard_65_ffffff_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #484; background: #f4fff4 url(../img/jquery-ui/ui-bg_flat_0_f4fff4_40x100.png) 50% 50% repeat-x; color: #686; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #686; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #A44; background: #fff4f4 url(../img/jquery-ui/ui-bg_flat_0_fff4f4_40x100.png) 50% 50% repeat-x; color: #511; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #511; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #511; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter: Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter: Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter: Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url(../img/jquery-ui/ui-icons_222222_256x240.png); } .ui-widget-header .ui-icon { background-image: url(../img/jquery-ui/ui-icons_222222_256x240.png); } .ui-state-default .ui-icon { background-image: url(../img/jquery-ui/ui-icons_888888_256x240.png); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon { background-image: url(../img/jquery-ui/ui-icons_454545_256x240.png); } .ui-state-active .ui-icon { background-image: url(../img/jquery-ui/ui-icons_454545_256x240.png); } .ui-state-highlight .ui-icon { background-image: url(../img/jquery-ui/ui-icons_484_256x240.png); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url(../img/jquery-ui/ui-icons_A44_256x240.png); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 0; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 0; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 0; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 0; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa url(../img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(../img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ border-radius: 2px; } inc/external/wpmu-lib/css/wpmu-ui.3.min.css000064400000045554150211770060014537 0ustar00.wpmui-loading{position:relative}.wpmui-loading:after{content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;background:rgba(255,255,255,.8) url(../img/spinner.gif) center no-repeat;z-index:1000;cursor:default;min-width:20px;min-height:20px}.wpmui-loading-icon{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle;background:transparent url(../img/spinner.gif) center no-repeat}.wpmui-overlay{background:#000;position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:0;transition:opacity .3s,z-index .3s step-end}.wpmui-has-overlay .wpmui-overlay{z-index:9999;opacity:.7;transition:opacity .3s,z-index .3s step-start}.wpmui-has-overlay .wpmui-overlay.light{opacity:.25}.wpmui-has-overlay #wpbody{-webkit-filter:blur(3px);-moz-filter:blur(3px);filter:blur(3px)}.wpmui-has-overlay.no-blur #wpbody{-webkit-filter:blur(0);-moz-filter:blur(0);filter:blur(0)}.wpmui-no-scroll{overflow:hidden}.wpmui-blur{-webkit-filter:blur(3px) grayscale(75%);-moz-filter:blur(3px) grayscale(75%);filter:blur(3px) grayscale(75%);position:relative}.wpmui-blur:before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;z-index:10}.wpmui-popup{background:#f5f5f5;position:fixed;box-shadow:0 2px 20px rgba(0,0,0,.4);z-index:10000;top:50%;left:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpmui-popup .popup-title{position:absolute;left:0;top:0;right:0;line-height:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 70px 0 20px;border-bottom:1px solid #e5e5e5;background:#f8f8f8;min-height:50px;display:block;font-size:23px;font-weight:100;z-index:5}.wpmui-popup .popup-title .the-title{display:inline-block;padding-right:71px}.wpmui-popup.slidein.slidein-down .popup-title{top:auto;bottom:0;border-top:1px solid #e5e5e5;border-bottom:0}.wpmui-popup.slidein .popup-title{cursor:pointer}.wpmui-popup .only-slidein{display:none}.wpmui-popup.slideing .only-slidein{display:block}.wpmui-popup .popup-close{position:absolute;top:0;right:0;width:50px;line-height:50px;height:50px;text-align:center;text-decoration:none;color:#666;border-left:1px solid #e5e5e5;cursor:pointer;z-index:10}.wpmui-popup .popup-close:active,.wpmui-popup .popup-close:focus,.wpmui-popup .popup-close:hover{background:#fcfcfc;color:#333}.wpmui-popup .popup-close .dashicons{line-height:50px}.wpmui-popup .popup-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;padding:20px 20px 20px 20px;z-index:1}.wpmui-popup .popup-content:after{content:'';display:block;clear:both;padding:50px 0 0 0}.wpmui-popup.no-buttons .popup-content:after{padding-top:0}.wpmui-popup.no-close .popup-title{padding:0 20px}.wpmui-popup.no-close .popup-close{display:none}.wpmui-popup hr{margin:15px -20px;border:0;border-top:1px solid #e5e5e5}.wpmui-popup .buttons{text-align:right;position:absolute;bottom:0;right:0;background:rgba(245,245,245,.8);padding:10px 20px 10px;left:0;height:50px;border-top:1px solid #e5e5e5;margin:0;z-index:2;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.popup.wdev-slidein,.popup.wdev-window{position:fixed;z-index:10000;top:50%;left:50%;background:#fff;box-sizing:border-box}.popup.wdev-slidein.slidein .popup-title,.popup.wdev-window.slidein .popup-title{cursor:pointer}.wpmui-msg{position:relative;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpmui-msg .wpmui-close{float:right;margin-top:8px;width:20px;height:20px;line-height:20px;text-align:center;cursor:pointer;text-decoration:none;font-size:16px;padding:0;color:#ccc}.wpmui-msg .wpmui-close:active,.wpmui-msg .wpmui-close:focus,.wpmui-msg .wpmui-close:hover{color:#333}.wpmui-msg .debug{padding:5px;color:#666;font-size:12px;font-family:monospace;margin-bottom:.5em;background:#f8f8f8}.wpmui-tip-box{position:relative}.wpmui-tip{position:absolute;display:none;padding:8px;z-index:100;background:#333;color:#eee;box-shadow:0 1px 8px rgba(0,0,0,.4);border-radius:2px}.wpmui-tip.wpmui-visible{display:block}.wpmui-tip:before{content:'';position:absolute;border:5px solid transparent;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.wpmui-tip.top:before{border-top-color:#333;bottom:-10px;top:auto}.wpmui-tip.bottom:before{border-bottom-color:#333;top:-5px}.wpmui-tip.left:before{border-left-color:#333;right:-10px;left:auto}.wpmui-tip.right:before{border-right-color:#333;left:-5px}.wpmui-pointer.wp-pointer-left{margin-top:30px}.wpmui-pointer.wp-pointer-left h3{background:0 0;color:#333;border:0;margin:0;padding:13px 20px 5px;font-size:13px}.wpmui-pointer.wp-pointer-left h3:before{content:'';display:none}.wpmui-pointer.wp-pointer-left p{padding:0 20px;margin:2px 0;font-size:12px}.wpmui-pointer.wp-pointer-left .wp-pointer-content{background:#fafdff;border-radius:4px;border:1px solid #ccc;box-shadow:0 1px 8px -2px rgba(0,0,0,.35);padding:0 0 15px}.wpmui-pointer.wp-pointer-left.no-title{margin-top:13px}.wpmui-pointer.wp-pointer-left.no-title .wp-pointer-content{padding-top:17px}.wpmui-pointer.wp-pointer-left .wp-pointer-buttons{position:absolute;top:0;right:0;white-space:nowrap;padding:5px 10px}.wpmui-pointer.wp-pointer-left .wp-pointer-buttons a.close{font-size:1px;color:transparent;width:10px;padding:0}.wpmui-pointer.wp-pointer-left .wp-pointer-buttons a.close:before{position:static;float:right;line-height:14px;margin:3px 0 1px 5px}.wpmui-pointer.wp-pointer-left .wp-pointer-arrow{border:0;position:absolute;top:50%;left:0;margin:-6px 0 0}.wpmui-pointer.wp-pointer-left .wp-pointer-arrow:after,.wpmui-pointer.wp-pointer-left .wp-pointer-arrow:before{content:'';border:6px solid transparent;margin:0;left:-10px;position:absolute;top:0}.wpmui-pointer.wp-pointer-left .wp-pointer-arrow:before{border-right-color:#ccc;left:-11px}.wpmui-pointer.wp-pointer-left .wp-pointer-arrow:after{border-right-color:#fafdff}.wpmui-pointer.wp-pointer-left .wp-pointer-arrow-inner{display:none}.wpmui-pointer.wp-pointer-left.wp-pointer-left{padding-left:8px;margin-left:-12px}.wpmui-pointer.wp-pointer-left.wp-pointer-left .wp-pointer-arrow{left:8px}.wpmui-form label{display:block;line-height:26px;font-size:14px;font-weight:500}.wpmui-form input[type=password],.wpmui-form input[type=text],.wpmui-form select,.wpmui-form textarea{width:100%;margin:0;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpmui-form .hint{color:#666;font-size:12px}.wpmui-form .button-link,.wpmui-popup .button-link{display:inline-block;text-decoration:underline;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;cursor:pointer;white-space:nowrap;color:#0074a2;background:0 0;border:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 0 0 transparent;-moz-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.wpmui-form .button-link:active,.wpmui-form .button-link:focus,.wpmui-form .button-link:hover,.wpmui-popup .button-link:active,.wpmui-popup .button-link:focus,.wpmui-popup .button-link:hover{color:#2ea2cc}.wpmui-grid-12 *,.wpmui-grid-12 :after,.wpmui-grid-12 :before,.wpmui-grid-8 *,.wpmui-grid-8 :after,.wpmui-grid-8 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpmui-grid-12 [class*=col-],.wpmui-grid-8 [class*=col-]{float:left;padding-right:20px;position:relative}.wpmui-grid-12 [class*=col-]:last-of-type,.wpmui-grid-8 [class*=col-]:last-of-type{padding-right:0}.wpmui-grid-12,.wpmui-grid-8{width:100%;margin:0;overflow:hidden;padding:10px 0 0}.wpmui-grid-12:after,.wpmui-grid-8:after{content:'';display:table;clear:both}.wpmui-grid-12 .col-12,.wpmui-grid-8 .col-8{width:100%}.wpmui-grid-12 .col-11{width:91.66%}.wpmui-grid-8 .col-7{width:87.5%}.wpmui-grid-12 .col-10{width:83.333%}.wpmui-grid-12 .col-9,.wpmui-grid-8 .col-6{width:75%}.wpmui-grid-12 .col-8{width:66.66%}.wpmui-grid-8 .col-5{width:62.5%}.wpmui-grid-12 .col-7{width:58.33%}.wpmui-grid-12 .col-6,.wpmui-grid-8 .col-4{width:50%}.wpmui-grid-12 .col-5{width:41.66%}.wpmui-grid-8 .col-3{width:37.5%}.wpmui-grid-12 .col-4{width:33.33%}.wpmui-grid-12 .col-3,.wpmui-grid-8 .col-2{width:25%}.wpmui-grid-12 .col-2{width:16.667%}.wpmui-grid-8 .col-1{width:12.5%}.wpmui-grid-12 .col-1{width:8.33%}@media handheld,only screen and (max-width:767px){.wpmui-grid-12,.wpmui-grid-8{width:100%;min-width:0;margin-left:0;margin-right:0;padding-left:0;padding-right:0}.wpmui-grid-12 [class*=col-],.wpmui-grid-8 [class*=col-]{width:auto;float:none;margin-left:0;margin-right:0;margin-top:10px;margin-bottom:10px;padding-left:20px;padding-right:20px}}.wpmui-box{margin-bottom:10px;padding:0;line-height:1;position:relative;min-width:255px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.wpmui-box>h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;border-bottom:1px solid #eee;cursor:pointer}.wpmui-box>h3 .toggle{cursor:pointer;float:right;width:36px;height:36px;color:#aaa;text-decoration:none;margin:-8px -12px;text-align:center;position:relative;line-height:36px}.wpmui-box .toggle:active,.wpmui-box .toggle:focus,.wpmui-box .toggle:hover,.wpmui-box>h3:hover .toggle{color:#777}.wpmui-box>h3 .toggle:before{content:'\f142';font:400 20px/36px dashicons;speak:none;display:inline-block;position:absolute;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;width:100%;height:100%;top:0;right:0}.wpmui-box>.inside{margin:6px 0 0;position:relative;padding:0 12px 12px;line-height:1.4em;font-size:13px}.wpmui-box>.inside:after{content:'';display:table;clear:both}.wpmui-box.closed>h3 .toggle:before{content:'\f140'}.wpmui-box.closed>.inside{display:none}.wpmui-box.static>h3{cursor:default}.wpmui-box.static>h3 .toggle{display:none}.wpmui-box.static>.inside{display:block}.wpmui-tabs{border-bottom:1px solid #eee;padding-bottom:0;padding-left:10px;list-style:none;margin:20px 0 0}.wpmui-tabs .tab{border:1px solid #eee;background:#f0f0f0;color:#999;display:inline-block;text-decoration:none;margin:0 4px -1px 0;padding:0 12px;font-weight:600;font-size:13px;line-height:34px}.wpmui-tabs .tab:active,.wpmui-tabs .tab:focus,.wpmui-tabs .tab:hover{background:#f4f4f4;color:#777}.wpmui-tabs .tab.active{border-bottom:1px solid #fff;background:#fff;color:#444}.wpmui-tab-contents{padding:12px}.wpmui-tab-contents .tab{display:none}.wpmui-tab-contents .tab.active{display:block}.wpmui-box>.inside>.wpmui-tabs{margin-left:-12px;margin-right:-12px;padding-left:22px}.wpmui-box>.inside>.wpmui-tab-contents{margin-left:-12px;margin-right:-12px;margin-bottom:-12px}.select2-container .wpmui-select2.select2-selection--single{height:28px}.select2-container .wpmui-select2.select2-selection--multiple,.select2-container .wpmui-select2.select2-selection--single{min-height:28px;line-height:27px;font-size:14px;border-radius:2px;border-color:#ccc}.select2-container .wpmui-select2.select2-selection--multiple .select2-selection__arrow b,.select2-container .wpmui-select2.select2-selection--single .select2-selection__arrow b{border-top-color:#aaa}.select2-container .wpmui-select2.select2-selection--multiple .select2-selection__rendered,.select2-container .wpmui-select2.select2-selection--single .select2-selection__rendered{display:block;margin-bottom:-1px}.select2-container .wpmui-select2 .select2-search--inline{margin:0;width:auto}.select2-container .wpmui-select2 .select2-search--inline .select2-search__field{margin:1px;background-image:none!important}.select2-container.select2-container--focus .wpmui-select2{border-color:#5897fb}.select2-container.select2-container--disabled .wpmui-select2{background:#ddd;font-weight:200;opacity:.5}.select2-container .select2-dropdown.wpmui-select2{overflow:hidden;z-index:1000500!important;margin-top:-1px;box-shadow:0 0 0 1px #5897fb inset;border:0;border-radius:0}.select2-container .select2-dropdown.wpmui-select2 .select2-search{margin-bottom:-1px;padding:1px}.select2-container .select2-dropdown.wpmui-select2 .select2-search .select2-search__field{margin:0;border:0;font-size:13px;border-bottom:1px solid #5897fb;background-color:#fafdff}.select2-container .select2-dropdown.wpmui-select2 .select2-results{padding:0;margin:0;font-size:13px}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option{margin:0;white-space:nowrap;padding-left:20px;position:relative}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option:before{content:'';background-color:transparent;background-position:center center;background-repeat:no-repeat;position:absolute;left:1px;top:1px;width:20px;height:28px}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option[aria-selected=true]{color:#5897fb;background-color:#f5f9ff;margin:1px}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option[aria-selected=true]:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTIgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxnIGlkPSJpY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNC4wMDAwMDAsIC0xMC4wMDAwMDApIiBzdHJva2U9Im5vbmUiIGZpbGw9IiM1ODk3ZmIiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuNzUwMDAwLCAxMC41MDAwMDApIj4KICAgICAgICAgICAgPHBhdGggZD0iTTguNzUsMCBMNC4zNzUsNC4zNzUgTDEuNzUsMS43NSBMMCwzLjUgTDQuMzc1LDcuODc1IEwxMC41LDEuNzUgTDguNzUsMCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==)}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted,.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted[aria-selected=true]{background-color:#5897fb;color:#fff}.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted:before,.select2-container .select2-dropdown.wpmui-select2 .select2-results .select2-results__option--highlighted[aria-selected=true]:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEycHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTIgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxnIGlkPSJpY29uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNC4wMDAwMDAsIC0xMC4wMDAwMDApIiBzdHJva2U9Im5vbmUiIGZpbGw9IiNGRkZGRkYiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuNzUwMDAwLCAxMC41MDAwMDApIj4KICAgICAgICAgICAgPHBhdGggZD0iTTguNzUsMCBMNC4zNzUsNC4zNzUgTDEuNzUsMS43NSBMMCwzLjUgTDQuMzc1LDcuODc1IEwxMC41LDEuNzUgTDguNzUsMCBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==)}.select2-container .select2-dropdown.wpmui-select2 .select2-results [aria-multiselectable=true] .select2-results__option--highlighted[aria-selected=true]:before{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEwcHgiIGhlaWdodD0iMTBweCIgdmlld0JveD0iMCAwIDEwIDEwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgaWQ9Imljb24iIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01LjAwMDAwMCwgLTEwLjAwMDAwMCkiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI0ZGRkZGRiI+CiAgICAgICAgPHBhdGggZD0iTTEyLjc0MDAwMTcsMTAuMzAwMDAwMiBMMTAuMTI1LDEyLjkyNSBMNy41LDEwLjMgTDUuNzUsMTIuMDUgTDguMzcwMDAwODQsMTQuNjgwMDAwMyBMNS43NSwxNy4zMTk5OTk3IEw3LjUsMTkuMDY5OTk5NyBMMTAuMTE5OTk4OSwxNi40Mzk5OTk2IEwxMi43NDAwMDE3LDE5LjA2OTk5OTcgTDE0LjQ5MDAwMTcsMTcuMzE5OTk5NyBMMTEuODY5OTk4OSwxNC42ODAwMDAzIEwxNC40OTAwMDE3LDEyLjA1MDAwMDIgTDEyLjc0MDAwMTcsMTAuMzAwMDAwMiBaIj48L3BhdGg+CiAgICA8L2c+Cjwvc3ZnPg==)}.wpmui-toggle{position:relative;width:26px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.wpmui-toggle-checkbox{display:none!important}.wpmui-toggle-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #ccc;border-radius:50px}.wpmui-toggle-inner{display:block;width:200%;margin-left:-100%;-moz-transition:margin .3s ease-in 0s;-webkit-transition:margin .3s ease-in 0s;-o-transition:margin .3s ease-in 0s;transition:margin .3s ease-in 0s}.wpmui-toggle-inner:after,.wpmui-toggle-inner:before{display:block;float:left;width:50%;height:5px;padding:0;line-height:5px;font-size:10px;color:#fff;font-family:Trebuchet,Arial,sans-serif;font-weight:700;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;box-shadow:0 1px 0 rgba(0,0,0,.2) inset}.wpmui-toggle-inner:before{content:"";padding-left:5px;background-color:#0074a2}.wpmui-toggle-inner:after{content:"";padding-right:5px;background-color:#eee;text-align:right}.wpmui-toggle-switch{display:block;width:14px;margin:-3.5px;background:#f8f8f8;border:1px solid #ccc;border-radius:15px;position:absolute;top:0;bottom:0;right:20px;-moz-transition:all .3s ease-in 0s;-webkit-transition:all .3s ease-in 0s;-o-transition:all .3s ease-in 0s;transition:all .3s ease-in 0s;box-shadow:-1px 1px 2px rgba(0,0,0,.1)}.wpmui-toggle-checkbox:checked+.wpmui-toggle-label .wpmui-toggle-inner{margin-left:0}.wpmui-toggle-checkbox:checked+.wpmui-toggle-label .wpmui-toggle-switch{right:0}.wpmui-confirm-modal{left:0;top:0;right:0;bottom:0;z-index:99998;background:#000;opacity:.4}.wpmui-confirm-box{top:25%;width:580px;padding:20px 20px 0;left:50%;margin-left:-310px;z-index:99999;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.4)}.wpmui-confirm-box .wpmui-confirm-btn{margin:10px -20px 0;padding:10px 20px;text-align:right;background:#fafafa;border-top:1px solid #e5e5e5}.wpmui-confirm-box .wpmui-confirm-btn button{margin-left:10px}.wpmui-progress-wrap{position:relative;width:100%}.wpmui-progress-wrap .wpmui-progress-full{background:rgba(255,255,255,.7);width:100%;border-radius:2px;box-shadow:1px 1px 2px 0 rgba(0,0,0,.1)}.wpmui-progress-wrap .wpmui-progress{background:#369;border-radius:2px;height:28px;transition:width .25s}.wpmui-progress-wrap .wpmui-progress-percent{position:absolute;left:0;right:0;top:0;line-height:28px;font-size:13px;text-align:center;color:#fff;text-shadow:0 0 5px #264d73}.wpmui-progress-wrap .wpmui-progress-percent:before{content:'';position:absolute;left:50%;width:30px;height:10px;top:50%;border-radius:5px;margin-top:-5px;margin-left:-15px;box-shadow:0 0 8px 4px #264d73;background:#264d73;z-index:-1;opacity:.5}.wpmui-progress-wrap .wpmui-progress-label{font-size:12px;margin-top:6px;color:#888;text-align:right}.no-pad-top{padding-top:0!important;margin-top:0!important}.no-pad-bottom{padding-bottom:0!important;margin-bottom:0!important}.no-pad{padding-top:0!important;padding-bottom:0!important;margin-top:0!important;margin-bottom:0!important}.dashicons.light{opacity:.5}.cf:after,.cf:before{content:'';display:table}.cf:after{clear:both}.wpmui-left{float:left}.wpmui-right{float:right}.button .dashicons,.button-primary .dashicons{line-height:26px;height:26px;float:left;margin-right:6px}inc/external/wpmu-lib/css/wpmu-html.3.css000064400000023412150211770060014271 0ustar00/** * WPMU Dev HTML helper styles * (Philipp Stracker for WPMU Dev) * * This file is included by the WDev()->html->element() function. * * @since 1.1.0 */ /*** * GENERAL INPUT FIELDS * ***/ #wpwrap, body { /* Styles used to display input elements inside Widget Admin */ /* horizontal separator */ /* vertical separator */ } #wpwrap .wpmui-input-wrapper.wpmui-loading > *, body .wpmui-input-wrapper.wpmui-loading > * { opacity: 0.25; cursor: default; } #wpwrap .wpmui-input-wrapper.wpmui-loading .wpmui-field-input, body .wpmui-input-wrapper.wpmui-loading .wpmui-field-input { background-color: #E5E5E5; } #wpwrap .wpmui-input-wrapper.wpmui-loading:after, body .wpmui-input-wrapper.wpmui-loading:after { top: 5px; /* compensate for the field margin */ bottom: 5px; /* compensate for the field margin */ background-color: transparent; } #wpwrap .wpmui-field-description, body .wpmui-field-description { display: block; margin: 10px 4px 10px 0; color: #666; font-size: 0.9em; font-weight: normal; } #wpwrap .wpmui-field-input, #wpwrap .wpmui-field-button, body .wpmui-field-input, body .wpmui-field-button { margin-top: 6px; margin-bottom: 6px; vertical-align: top; display: inline-block; position: relative; } #wpwrap .wpmui-field-input.button, #wpwrap .wpmui-field-input.button-primary, #wpwrap .wpmui-field-button, body .wpmui-field-input.button, body .wpmui-field-input.button-primary, body .wpmui-field-button { margin-right: 6px; } #wpwrap .wpmui-field-label, body .wpmui-field-label { display: block; clear: both; margin: 2px 0; font-style: normal; color: #222; } #wpwrap .wpmui-field-label.inline-label, body .wpmui-field-label.inline-label { display: inline-block; margin: 6px 10px 6px 0; } #wpwrap h3.wpmui-field-label, body h3.wpmui-field-label { margin-bottom: 10px; } #wpwrap .wpmui-label-before, #wpwrap .wpmui-label-after, body .wpmui-label-before, body .wpmui-label-after { display: inline-block; margin: 6px; line-height: 28px; vertical-align: top; } #wpwrap .wpmui-label-before .wpmui-field-input, #wpwrap .wpmui-label-before .wpmui-field-button, #wpwrap .wpmui-label-after .wpmui-field-input, #wpwrap .wpmui-label-after .wpmui-field-button, body .wpmui-label-before .wpmui-field-input, body .wpmui-label-before .wpmui-field-button, body .wpmui-label-after .wpmui-field-input, body .wpmui-label-after .wpmui-field-button { margin-top: 0; margin-bottom: 0; } #wpwrap .wpmui-label-before, body .wpmui-label-before { margin-left: 0; } #wpwrap .widget-content .wpmui-wrapper, body .widget-content .wpmui-wrapper { display: block; margin: 1em 0; } #wpwrap .widget-content .wpmui-wrapper .wpmui-field-label, body .widget-content .wpmui-wrapper .wpmui-field-label { margin: 0; } #wpwrap .widget-content .wpmui-wrapper .wpmui-field-description, body .widget-content .wpmui-wrapper .wpmui-field-description { margin: 0; } #wpwrap .widget-content .wpmui-wrapper .wpmui-field-input, #wpwrap .widget-content .wpmui-wrapper .wpmui-field-button, body .widget-content .wpmui-wrapper .wpmui-field-input, body .widget-content .wpmui-wrapper .wpmui-field-button { margin-top: 4px; margin-bottom: 0; } #wpwrap .wpmui-separator, body .wpmui-separator { border-bottom: 1px solid #E5E5E5; margin: 15px 0; } #wpwrap .wpmui-divider, body .wpmui-divider { position: absolute; right: 20px; top: 0; bottom: 0; border-right: 1px solid #E5E5E5; } #wpwrap .wpmui-fa, body .wpmui-fa { font-family: Fontawesome440 !important; } #wpwrap .no-click, body .no-click { cursor: default; } /*** * HTML BLOCK (read only) * ***/ #wpwrap .wpmui-html-text-wrapper label, body .wpmui-html-text-wrapper label { cursor: default; } /*** * CHECKBOX * ***/ #wpwrap .wpmui-field-checkbox, body .wpmui-field-checkbox { margin: 6px 4px 0 0; position: absolute; left: 0; top: 0; } #wpwrap .wpmui-checkbox-wrapper, body .wpmui-checkbox-wrapper { margin: 6px auto; position: relative; display: inline-block; line-height: 28px; } #wpwrap .wpmui-checkbox-wrapper .wpmui-checkbox-caption, body .wpmui-checkbox-wrapper .wpmui-checkbox-caption { padding-left: 24px; font-weight: 500; } #wpwrap .wpmui-checkbox-list, body .wpmui-checkbox-list { border: 1px solid #e5e5e5; padding: 0 5px; background: #FFFFFF; max-height: 320px; overflow: auto; } #wpwrap .wpmui-checkbox-list .wpmui-checkbox-wrapper, body .wpmui-checkbox-list .wpmui-checkbox-wrapper { margin: 0; } #wpwrap .wpmui-checkbox-list .wpmui-no-checkbox .wpmui-checkbox-caption, body .wpmui-checkbox-list .wpmui-no-checkbox .wpmui-checkbox-caption { padding: 0; } #wpwrap .wpmui-checkbox-list .wpmui-group, body .wpmui-checkbox-list .wpmui-group { margin-bottom: 10px; } #wpwrap .wpmui-checkbox-list .wpmui-group .wpmui-parent .wpmui-checkbox-caption, body .wpmui-checkbox-list .wpmui-group .wpmui-parent .wpmui-checkbox-caption { font-weight: 600; } #wpwrap .wpmui-checkbox-list .wpmui-group .wpmui-child, body .wpmui-checkbox-list .wpmui-group .wpmui-child { margin-left: 24px; } /*** * RADIO SLIDER * ***/ #wpwrap .wpmui-radio-slider-wrapper, body .wpmui-radio-slider-wrapper { clear: both; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-field-label, body .wpmui-radio-slider-wrapper .wpmui-field-label { cursor: default; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-label-before, #wpwrap .wpmui-radio-slider-wrapper .wpmui-label-after, body .wpmui-radio-slider-wrapper .wpmui-label-before, body .wpmui-radio-slider-wrapper .wpmui-label-after { line-height: 18px; margin-top: 3px; margin-bottom: 3px; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider, body .wpmui-radio-slider-wrapper .wpmui-radio-slider { position: relative; display: inline-block; width: 40px; height: 18px; margin: 3px 0; border-radius: 10px; background: #b0b0b0; opacity: .8; overflow: visible; cursor: pointer; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider:hover, body .wpmui-radio-slider-wrapper .wpmui-radio-slider:hover { opacity: 1; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly], #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover, body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly], body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover { opacity: 0.5; cursor: default; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly] .wpmui-toggle, #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover .wpmui-toggle, body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly] .wpmui-toggle, body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover .wpmui-toggle { opacity: .7; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider.on, body .wpmui-radio-slider-wrapper .wpmui-radio-slider.on { background: #6BBB1A; /* rgb( 107, 187, 26 ) */ } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider.on .wpmui-toggle, body .wpmui-radio-slider-wrapper .wpmui-radio-slider.on .wpmui-toggle { left: 21px; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider .wpmui-toggle, body .wpmui-radio-slider-wrapper .wpmui-radio-slider .wpmui-toggle { position: absolute; display: inline-block; left: 0; width: 12px; height: 12px; margin: 3px; background: #F4F4F4; border-radius: 50%; transition: all .2s ease-in-out; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-label-before, body .wpmui-radio-slider-wrapper .wpmui-label-before { color: #000; } #wpwrap .wpmui-radio-slider-wrapper .wpmui-label-after, body .wpmui-radio-slider-wrapper .wpmui-label-after { color: #CCC; } #wpwrap .wpmui-radio-slider-wrapper.on .wpmui-label-before, body .wpmui-radio-slider-wrapper.on .wpmui-label-before { color: #CCC; } #wpwrap .wpmui-radio-slider-wrapper.on .wpmui-label-after, body .wpmui-radio-slider-wrapper.on .wpmui-label-after { color: #390; /* rgb( 51, 153, 0 ) */ } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-radio-slider, body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-radio-slider { background: #6BBB1A; /* rgb( 107, 187, 26 ) */ } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-before, body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-before { color: #390; /* rgb( 51, 153, 0 ) */ } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-after, body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-after { color: #CCC; } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-radio-slider, body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-radio-slider { background: #B0B0B0; } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-before, body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-before { color: #CCC; } #wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-after, body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-after { color: #000; } #wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper, body .wpmui-radio-slider-wrapper.inp-before-wrapper { position: relative; display: block; } #wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-field-label, body .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-field-label { margin-left: 50px; } #wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-radio-slider, body .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-radio-slider { position: absolute; left: 0; top: 0; } /*** * HTML TABLE * ***/ .wpmui-html-table { width: 100%; clear: both; margin: 10px 0; background: #FFF; border: 1px solid #e5e5e5; border-spacing: 0; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); } .wpmui-html-table td, .wpmui-html-table th { line-height: 24px; padding: 8px 6px; vertical-align: top; font-size: 12px; overflow: hidden; color: #555; } .wpmui-html-table thead tr th { border-bottom: 1px solid #e1e1e1; color: #333; } inc/external/wpmu-lib/css/fontawesome.3.min.css000064400000114555150211770060015461 0ustar00/*! * Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1,1)}.fa-flip-vertical{transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-book:before{content:"\f02d"}.fa-book-open:before{content:"\f518"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-excel:before{content:"\f1c3"}.fa-file-image:before{content:"\f1c5"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-fulcrum:before{content:"\f50b"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-meh:before{content:"\f11a"}.fa-memory:before{content:"\f538"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-moon:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-r-project:before{content:"\f4f7"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toolbox:before{content:"\f552"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}inc/external/wpmu-lib/css/wpmu-html.3.min.css000064400000020465150211770060015060 0ustar00#wpwrap .wpmui-input-wrapper.wpmui-loading>*,body .wpmui-input-wrapper.wpmui-loading>*{opacity:.25;cursor:default}#wpwrap .wpmui-input-wrapper.wpmui-loading .wpmui-field-input,body .wpmui-input-wrapper.wpmui-loading .wpmui-field-input{background-color:#e5e5e5}#wpwrap .wpmui-input-wrapper.wpmui-loading:after,body .wpmui-input-wrapper.wpmui-loading:after{top:5px;bottom:5px;background-color:transparent}#wpwrap .wpmui-field-description,body .wpmui-field-description{display:block;margin:10px 4px 10px 0;color:#666;font-size:.9em;font-weight:400}#wpwrap .wpmui-field-button,#wpwrap .wpmui-field-input,body .wpmui-field-button,body .wpmui-field-input{margin-top:6px;margin-bottom:6px;vertical-align:top;display:inline-block;position:relative}#wpwrap .wpmui-field-button,#wpwrap .wpmui-field-input.button,#wpwrap .wpmui-field-input.button-primary,body .wpmui-field-button,body .wpmui-field-input.button,body .wpmui-field-input.button-primary{margin-right:6px}#wpwrap .wpmui-field-label,body .wpmui-field-label{display:block;clear:both;margin:2px 0;font-style:normal;color:#222}#wpwrap .wpmui-field-label.inline-label,body .wpmui-field-label.inline-label{display:inline-block;margin:6px 10px 6px 0}#wpwrap h3.wpmui-field-label,body h3.wpmui-field-label{margin-bottom:10px}#wpwrap .wpmui-label-after,#wpwrap .wpmui-label-before,body .wpmui-label-after,body .wpmui-label-before{display:inline-block;margin:6px;line-height:28px;vertical-align:top}#wpwrap .wpmui-label-after .wpmui-field-button,#wpwrap .wpmui-label-after .wpmui-field-input,#wpwrap .wpmui-label-before .wpmui-field-button,#wpwrap .wpmui-label-before .wpmui-field-input,body .wpmui-label-after .wpmui-field-button,body .wpmui-label-after .wpmui-field-input,body .wpmui-label-before .wpmui-field-button,body .wpmui-label-before .wpmui-field-input{margin-top:0;margin-bottom:0}#wpwrap .wpmui-label-before,body .wpmui-label-before{margin-left:0}#wpwrap .widget-content .wpmui-wrapper,body .widget-content .wpmui-wrapper{display:block;margin:1em 0}#wpwrap .widget-content .wpmui-wrapper .wpmui-field-label,body .widget-content .wpmui-wrapper .wpmui-field-label{margin:0}#wpwrap .widget-content .wpmui-wrapper .wpmui-field-description,body .widget-content .wpmui-wrapper .wpmui-field-description{margin:0}#wpwrap .widget-content .wpmui-wrapper .wpmui-field-button,#wpwrap .widget-content .wpmui-wrapper .wpmui-field-input,body .widget-content .wpmui-wrapper .wpmui-field-button,body .widget-content .wpmui-wrapper .wpmui-field-input{margin-top:4px;margin-bottom:0}#wpwrap .wpmui-separator,body .wpmui-separator{border-bottom:1px solid #e5e5e5;margin:15px 0}#wpwrap .wpmui-divider,body .wpmui-divider{position:absolute;right:20px;top:0;bottom:0;border-right:1px solid #e5e5e5}#wpwrap .wpmui-fa,body .wpmui-fa{font-family:Fontawesome440!important}#wpwrap .no-click,body .no-click{cursor:default}#wpwrap .wpmui-html-text-wrapper label,body .wpmui-html-text-wrapper label{cursor:default}#wpwrap .wpmui-field-checkbox,body .wpmui-field-checkbox{margin:6px 4px 0 0;position:absolute;left:0;top:0}#wpwrap .wpmui-checkbox-wrapper,body .wpmui-checkbox-wrapper{margin:6px auto;position:relative;display:inline-block;line-height:28px}#wpwrap .wpmui-checkbox-wrapper .wpmui-checkbox-caption,body .wpmui-checkbox-wrapper .wpmui-checkbox-caption{padding-left:24px;font-weight:500}#wpwrap .wpmui-checkbox-list,body .wpmui-checkbox-list{border:1px solid #e5e5e5;padding:0 5px;background:#fff;max-height:320px;overflow:auto}#wpwrap .wpmui-checkbox-list .wpmui-checkbox-wrapper,body .wpmui-checkbox-list .wpmui-checkbox-wrapper{margin:0}#wpwrap .wpmui-checkbox-list .wpmui-no-checkbox .wpmui-checkbox-caption,body .wpmui-checkbox-list .wpmui-no-checkbox .wpmui-checkbox-caption{padding:0}#wpwrap .wpmui-checkbox-list .wpmui-group,body .wpmui-checkbox-list .wpmui-group{margin-bottom:10px}#wpwrap .wpmui-checkbox-list .wpmui-group .wpmui-parent .wpmui-checkbox-caption,body .wpmui-checkbox-list .wpmui-group .wpmui-parent .wpmui-checkbox-caption{font-weight:600}#wpwrap .wpmui-checkbox-list .wpmui-group .wpmui-child,body .wpmui-checkbox-list .wpmui-group .wpmui-child{margin-left:24px}#wpwrap .wpmui-radio-slider-wrapper,body .wpmui-radio-slider-wrapper{clear:both}#wpwrap .wpmui-radio-slider-wrapper .wpmui-field-label,body .wpmui-radio-slider-wrapper .wpmui-field-label{cursor:default}#wpwrap .wpmui-radio-slider-wrapper .wpmui-label-after,#wpwrap .wpmui-radio-slider-wrapper .wpmui-label-before,body .wpmui-radio-slider-wrapper .wpmui-label-after,body .wpmui-radio-slider-wrapper .wpmui-label-before{line-height:18px;margin-top:3px;margin-bottom:3px}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider,body .wpmui-radio-slider-wrapper .wpmui-radio-slider{position:relative;display:inline-block;width:40px;height:18px;margin:3px 0;border-radius:10px;background:#b0b0b0;opacity:.8;overflow:visible;cursor:pointer}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider:hover,body .wpmui-radio-slider-wrapper .wpmui-radio-slider:hover{opacity:1}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly],#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover,body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly],body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover{opacity:.5;cursor:default}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly] .wpmui-toggle,#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover .wpmui-toggle,body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly] .wpmui-toggle,body .wpmui-radio-slider-wrapper .wpmui-radio-slider[readonly]:hover .wpmui-toggle{opacity:.7}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider.on,body .wpmui-radio-slider-wrapper .wpmui-radio-slider.on{background:#6bbb1a}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider.on .wpmui-toggle,body .wpmui-radio-slider-wrapper .wpmui-radio-slider.on .wpmui-toggle{left:21px}#wpwrap .wpmui-radio-slider-wrapper .wpmui-radio-slider .wpmui-toggle,body .wpmui-radio-slider-wrapper .wpmui-radio-slider .wpmui-toggle{position:absolute;display:inline-block;left:0;width:12px;height:12px;margin:3px;background:#f4f4f4;border-radius:50%;transition:all .2s ease-in-out}#wpwrap .wpmui-radio-slider-wrapper .wpmui-label-before,body .wpmui-radio-slider-wrapper .wpmui-label-before{color:#000}#wpwrap .wpmui-radio-slider-wrapper .wpmui-label-after,body .wpmui-radio-slider-wrapper .wpmui-label-after{color:#ccc}#wpwrap .wpmui-radio-slider-wrapper.on .wpmui-label-before,body .wpmui-radio-slider-wrapper.on .wpmui-label-before{color:#ccc}#wpwrap .wpmui-radio-slider-wrapper.on .wpmui-label-after,body .wpmui-radio-slider-wrapper.on .wpmui-label-after{color:#390}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-radio-slider,body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-radio-slider{background:#6bbb1a}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-before,body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-before{color:#390}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-after,body .wpmui-radio-slider-wrapper.reverse-wrapper .wpmui-label-after{color:#ccc}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-radio-slider,body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-radio-slider{background:#b0b0b0}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-before,body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-before{color:#ccc}#wpwrap .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-after,body .wpmui-radio-slider-wrapper.reverse-wrapper.on .wpmui-label-after{color:#000}#wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper,body .wpmui-radio-slider-wrapper.inp-before-wrapper{position:relative;display:block}#wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-field-label,body .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-field-label{margin-left:50px}#wpwrap .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-radio-slider,body .wpmui-radio-slider-wrapper.inp-before-wrapper .wpmui-radio-slider{position:absolute;left:0;top:0}.wpmui-html-table{width:100%;clear:both;margin:10px 0;background:#fff;border:1px solid #e5e5e5;border-spacing:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.wpmui-html-table td,.wpmui-html-table th{line-height:24px;padding:8px 6px;vertical-align:top;font-size:12px;overflow:hidden;color:#555}.wpmui-html-table thead tr th{border-bottom:1px solid #e1e1e1;color:#333}inc/external/wpmu-lib/css/select2.3.css000064400000041620150211770060013701 0ustar00/*! * https://github.com/select2/select2/blob/master/dist/css/select2.css * * Select2 4.0.3 * https://select2.github.io * * Released under the MIT license * https://github.com/select2/select2/blob/master/LICENSE.md */ .select2-container { box-sizing: border-box; display: inline-block; margin: 0; position: relative; vertical-align: middle; } .select2-container .select2-selection--single { box-sizing: border-box; cursor: pointer; display: block; height: 28px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--single .select2-selection__rendered { display: block; padding-left: 8px; padding-right: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-selection--single .select2-selection__clear { position: relative; } .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 8px; padding-left: 20px; } .select2-container .select2-selection--multiple { box-sizing: border-box; cursor: pointer; display: block; min-height: 32px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--multiple .select2-selection__rendered { display: inline-block; overflow: hidden; padding-left: 8px; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-search--inline { float: left; } .select2-container .select2-search--inline .select2-search__field { box-sizing: border-box; border: none; font-size: 100%; margin-top: 5px; padding: 0; } .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-dropdown { background-color: white; border: 1px solid #aaa; border-radius: 4px; box-sizing: border-box; display: block; position: absolute; left: -100000px; width: 100%; z-index: 1051; } .select2-results { display: block; } .select2-results__options { list-style: none; margin: 0; padding: 0; } .select2-results__option { padding: 6px; user-select: none; -webkit-user-select: none; } .select2-results__option[aria-selected] { cursor: pointer; } .select2-container--open .select2-dropdown { left: 0; } .select2-container--open .select2-dropdown--above { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--open .select2-dropdown--below { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-search--dropdown { display: block; padding: 4px; } .select2-search--dropdown .select2-search__field { padding: 4px; width: 100%; box-sizing: border-box; } .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-search--dropdown.select2-search--hide { display: none; } .select2-close-mask { border: 0; margin: 0; padding: 0; display: block; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 99; background-color: #fff; filter: alpha(opacity=0); } .select2-hidden-accessible { border: 0 !important; clip: rect(0 0 0 0) !important; height: 1px !important; margin: -1px !important; overflow: hidden !important; padding: 0 !important; position: absolute !important; width: 1px !important; } .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 4px; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--default .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; } .select2-container--default .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; } .select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; } .select2-container--default.select2-container--disabled .select2-selection--single { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { display: none; } .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--default .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; } .select2-container--default .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; margin: 0; padding: 0 5px; width: 100%; } .select2-container--default .select2-selection--multiple .select2-selection__rendered li { list-style: none; } .select2-container--default .select2-selection--multiple .select2-selection__placeholder { color: #999; margin-top: 5px; float: left; } .select2-container--default .select2-selection--multiple .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-top: 5px; margin-right: 10px; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: #999; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--default.select2-container--focus .select2-selection--multiple { border: solid black 1px; outline: 0; } .select2-container--default.select2-container--disabled .select2-selection--multiple { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection__choice__remove { display: none; } .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--default .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; } .select2-container--default .select2-search--inline .select2-search__field { background: transparent; border: none; outline: 0; box-shadow: none; -webkit-appearance: textfield; } .select2-container--default .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--default .select2-results__option[role=group] { padding: 0; } .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--default .select2-results__option .select2-results__option { padding-left: 1em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option { margin-left: -1em; padding-left: 2em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -2em; padding-left: 3em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -3em; padding-left: 4em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -4em; padding-left: 5em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -5em; padding-left: 6em; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #5897fb; color: white; } .select2-container--default .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic .select2-selection--single { background-color: #f7f7f7; border: 1px solid #aaa; border-radius: 4px; outline: 0; background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic .select2-selection--single:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--classic .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-right: 10px; } .select2-container--classic .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--classic .select2-selection--single .select2-selection__arrow { background-color: #ddd; border: none; border-left: 1px solid #aaa; border-top-right-radius: 4px; border-bottom-right-radius: 4px; height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } .select2-container--classic .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { border: none; border-right: 1px solid #aaa; border-radius: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; left: 1px; right: auto; } .select2-container--classic.select2-container--open .select2-selection--single { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { background: transparent; border: none; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } .select2-container--classic .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; outline: 0; } .select2-container--classic .select2-selection--multiple:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--multiple .select2-selection__rendered { list-style: none; margin: 0; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__clear { display: none; } .select2-container--classic .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { color: #888; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { color: #555; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { float: right; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--classic.select2-container--open .select2-selection--multiple { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--classic .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; outline: 0; } .select2-container--classic .select2-search--inline .select2-search__field { outline: 0; box-shadow: none; } .select2-container--classic .select2-dropdown { background-color: white; border: 1px solid transparent; } .select2-container--classic .select2-dropdown--above { border-bottom: none; } .select2-container--classic .select2-dropdown--below { border-top: none; } .select2-container--classic .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--classic .select2-results__option[role=group] { padding: 0; } .select2-container--classic .select2-results__option[aria-disabled=true] { color: grey; } .select2-container--classic .select2-results__option--highlighted[aria-selected] { background-color: #3875d7; color: white; } .select2-container--classic .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; } inc/external/wpmu-lib/view/pointer.php000064400000004617150211770060014045 0ustar00html->pointer() * * @since 1.0.0 * * Variables: * - $pointer_id * - $html_el * - $title * - $body * - $once * - $modal * - $blur */ /** * Filter pointer classes * * @since 3.1.0 */ $class = implode( ' ', apply_filters( 'wpmui_pointer_classes', $classes ) ); if ( ! empty( $title ) ) { $title = '

' . $title . '

'; } else { $title = ''; $class .= ' no-title'; } $code = sprintf( '
%1$s

%2$s

', $title, $body, esc_attr( $class ) ); // Remove linebreaks to avoid JS errors $code = str_replace( array( "\r", "\n" ), '', $code ); ?> inc/external/wpmu-lib/view/list.php000064400000005755150211770060013344 0ustar00html->addon_list() * * @since 1.1.0 * * Variables: * - $items * - $lang * - $filters */ $item_fields = array( 'class', 'title', 'description', 'version', 'author', 'active', 'action', // Array 'details', // Array 'icon', 'footer', ); $current = 'current'; ?>
array->equip( $item, $item_fields ); if ( isset( $item->action ) && is_array( $item->action ) ) { $item->details = self::$core->array->get( $item->details ); } else { $item->action = array(); $item->details = array(); } $item_class = $item->active ? 'active' : ''; $item_class .= ' ' . $item->class; ?>
active_badge ); ?>
icon ); ?>

title ); ?>

title ); ?>

description ); ?>
details as $detail ) { if ( is_array( $detail ) ) { if ( isset( $detail['ajax_data'] ) && is_array( $detail['ajax_data'] ) ) { $detail['ajax_data']['_is_detail'] = true; } } self::$core->html->element( $detail ); } ?>
footer ); ?> details ) : ?> show_details ); ?> close_details ); ?>
inc/external/wpmu-lib/fonts/fontawesome440-webfont.woff2000064400000175720150211770060017225 0ustar00wOF2q?FFTM`j \X6$D r 7?webf[f!84ŒDإ UafGELn@UU_A{{))4c2i|IN/ljĨ:orAh$W<@3ƣc+VNtЇtz8h:: W6¼e'[T,d47na6nlsmcбliKwcf3&ۖڰ&Æm^ރO{-r蛲]~CkSMUfH>FGܧZ1XaY[(Xe_oS8s@՗깩oy5#dx*LTUwdT.W :9@( EBL0TP@{f=usF/tsn.\v]W_]3Ojۭ"H&~?ݜABs0֓?5;8(w1@X%A\8[R`ԈFFԎQ5hѣBJNP~D`$3 Wg,Wg{*Ȫ!ӌSHߏtץ?+ɖKdSL7Ol#&>щ@K<6u'﯑Wrq*TuF8 ǰ1f㘗T}UֶI<>"pxxy?`ByZm?*.XVnjS^ςjx39@7 t :gS[Y>&,8. 5)weeII 9^wjߌd;Ɍd')<$0[v ڲ~fz;NvJ]F*S=bIڗΟ7ukϙ)L\wknvq =#S=Lkx#k䃪!d̪/U+@6NDy֤t8ڜop_@U H % %TAT3I QG'ݯ)ٻvO*P@(&ىR'iѽiz՛buͩ}qiv{=鸇cۚ6Gt'8[z;Xзtv']Ex1;sԥ&|,EYP o9ڗ e7[veEh^YRu$c AC5dNV:ȹDmH+2"rlI?i_L5*$յmmb-ڨ((`"XD"@{BW>J<@[@D#ػϔavpixd0ȕ<]mr+r{B0_;c%`uC]lc9<4ό̿Zs>݂r'YǓg~G}.r{ JC'ީk @@b줂#ĝ\a6'Db)-g_?[͓NID`& bd*$ <[~k+xݴ$S*(?o]$iaRJOp~#|rKQ/ؿJńaIvۂ8?^ meRӑW,9M)bP.${i.4Vƙ2P{{7ܐ$#➨D-yF Ѱ i.Z-puLOnjWz=gSf!aoVEH쪞3"Yu:)?q!7;~OWkG7_}V9f(oujg;\ՂFj(( /T-AvwH!#L&v5{G<-w>̐e4c}>?_xwۖyxLa&&ZszG{||̖U%+i^jpśZq0CP1Npm9%*V#[5fc挧Ӷ4?0a8ݤ!,fߐ oѓgx}IP RmL:L+ۢݜ:Bt~]7]_1'm,uaU3+_s~<<<c@d)doe*27,!I8": v#>QkaS~#b=B=|9ee!d႖pפ4hhPP(1$[^d9;zY)Jn}!ܲ;qi+헄H"1$),&0,7z(٘5^7Vk2)AHDk?(Zqhю~f#Md0* ߢ)Α*UV(_jMKe͛s=i劈bp\Dk_VE,fNbSY1!Xvy Y57I,4 zcY=X0\K,M6GmiE6LH!HK]ZD˂kJ&G]]1`,#4Ǭ5iXi1+ID*-*^qgRr X߆o}[But_~D"2C2}7sS PxΩt™8 D,hcbP#w: 7Q}sü~D`kn|/|&*y0I(rlUaRWuTLi)$aCE.Nt_%tĥҀlE @pT0u0Ln\U:56q{cHj2~pImjh`pGbx0r,6juZ/ٱAxOahkhd&ܠ 7`NҵftS#vLU ͣѭkbn 751c Z2%HJGY!JR@0t_|f cjMkhc}++w&Ƕs8J{oAK&Q m~+LYjao2ܩz U'*"Mqs^ٙEZiȓʹhSiΖ3VVYkR<NF:(yPuue*Y:YcL579X{k Tx1 .^&WeU+^JcʚwQM)?)/)qHQT̑Ո5>%ͥF]Ϳ5n99 /8REGkw ͦ<ԎKp֫g 2Es%f %U> 1^鲊O[MEO_C9ѝƓv,P /t]*>F7U<*n&WM*'<%PXUl&Vq 6EDʌWjWApD4jjg>}k8\)-yO} ,%n?)/C}*PC%T.A"]{9\3Byfbd>Tm}ɴ}T+񊷶0TSYԽm |]DGF_$rňIW\q{I dzW`w4Ug<d"UPII UIԭC_GC+}%R!yC9Ηհ 냥},US馠mB~cH'SKYSy0ZƨYʛ~V+F<7Kh&mV=)kxqӇc4p_sfM8l.0qW k,幹l ?1#14N/?E.;Үt^oH 8X^6uCLdY;̀HCY`x8xca`0t@@|}RoVm%Yw?ėw: .^eZ̖-GeûϪ,7aý幩bU@ѪQӚ۹gm~bNkc,z/\M5,.&Z|pU=<5uL_[p&4vL9%Dr 9Ζ'o`ҋKFXcm 抜:SsnݏOj{4 D -VB/&8~ w\޳FGL 1墒;5uf(loN8 hKbZByCN@@ ~06.;TSNg-vWy  AއU8F;kȇ;?uW[}u,:r4QHE`SpAiǡGeͬÕ[d}6ZZj1qtfiPm!,k 6r GԹsm${,C])4`jKT/-Y &C{ ['ٲ6LG1Ly[hr؛:)hXT:æ"PPR<ś azoTQ+a-o9+f֞PćցMlͣS,}FD$sKm6tG$ ~?W p6<3#.NS\5И#|T\o0Cq$7EP"vI@֐RNiȯ= 7ܤpMkpFQ5--s@WC~Y Kk <7IF/{",D|,KsX2Z> 0F1g"'T6*VGV{ ٹd2Ry<H dS1)x¤2av0Ğ+B " ~VQJCLJNVR,Kc$ֳȄY8RpMG=|S 'Q`~ y4<JNܴi#f~#* uͥ򶆯 ;cL]tAGy|󡣃: W?7*D3ߔ* \)J)J[ @xӵ tvu18+ x9{, "t۷ܩ*\R ĈP:4̛2׉ۜBd{cՆ ZquEKD\Ru<:>[7ղԺڠjM\Ri

{K!d3_dz#(J𱔒@g odեw܆ķow.Fсp5 &cC#JX29[*]k_@\]C%A:dJ/CeG߮w[ZI4R]_IggæceM,y8( yйd;V(y\R B¢,z!+\FeSBU^8O\Lm{Zd4zZL%[+m8ќ.c8-8M[=M`±佯l8 ,K8LpPDd^Ps.`KT q'dQ(Y=LhNӴ-lEh1Ц!Sn`[@w Z-VehpO#%$8a'>d<=N-I ϼ ,$ #D]J ħ0`wXk?;Hܻy #nxw#RZ. TS+XzϨHw,ӏtWj ]ep)"7Dk(6 hh{+akUMeC:8S8a d8jsOzn)ś _ڂ1PlYղO 6^j= ~տ`iETgb+Ƅ s/kn be#-~r? (+ko99B\ut!VIҦrtV7ڢxAHp6C iֱ[l6|kϧsz[:hz{p/Je;P/p޳1}ﮇ],r'^k~U6-mpK"W\L )b+Lȥ_;/Mqr f'[wwѬ "V"D~L$C!jB K(*MDp< Es)RKn [@,؇VYy*A1e:a%rB~JHnbG\Ͻ*J]>! P¶'ԅqz*DJxPwnC<5yF%X4R1 )-ڧAzSO60U_lr &MJ .((\v# d@Tdw2~}^ m(Q@لR`iP f}j4z" kLBZKoDEvH<$GL3%FS>)B N EAbSŴma? :bz]IT3eϪp HR9K,>#g uL2ÐiZF%U#WYa@1nil-( 5nmH''MPj9 V  Cڀ4rl+Z#4E\־Yl8 btdXa?\u8g@ d_WNCɀ>+xH*/Ll<$ǔF0CK @0p6"mokw88JZadnUnrmY9T ]&U4Q 8JKd:1LN`@,%78r,*gm>i]ZN;ٛ\X%ɪvEc xP_.OG\QyI)3]0e]UطxweӢgKzpG`ӫjid,ߛTU[ni8o@-_Mgg'?/m,mz;:ޝJgؘ-TydITV,C askam'VG%̰HbI DDj8CYZU>8#COR<Ac8WKΰWw8ZI)FJIhOIW8,~zaB+ {AT!7lM<]\M7(Um{pka `"ޗYR(giĽ fq_:dGVzuh >(0ZZ3 XC?<$z& >^Bl ;MR!y2cnD'gǭoGY$di0EK'{_MaTTq_uW}`'Eg"z^;ṙX2F5zEоizzãK4I+(/woɥ})B" VO‹\(R_rQTIS ̄"D*孅b,`nlOOi#v<yWc> vǵ.Ża:@K(SX3U)s)1;Q{@ӛdVbv?%6-{,܇ B,Ϙߚ@Q::?b|m uςyK3>Z"|-4V¬i!<@l񉆔Sny\Lֻΐ!/HKZc $(Kږaf,O>K%.҄`)\ suBcS k*\kkmxfMq3]-:Ď{[iaYXpTerv9+-sr#Rˏz^HI?J76 I ^1P..>`FغPqqX.}b?Ec#(UmqW_/E&xdsISOĺؽw0U YLKa@ēp4ۢ˖ۜ*{johM wkٖ2QWQ:51|^T0z/;3y%Fҩ䭫tm!^Tn+6bUup &턆AAV=]]0 z fQ[M,⧞ܴYu:S+3ձ#1bQdC$ SLb aaZ5#MU\c9gH+@-hN~rwVמ)Cn[ZFpq(_oD _ ,J 9 7> %X!*RW>'XJb@Ͱ{haۋI,a\4K|/L20Kck^W/A±qklGXsJe4UHKS!at)CX̆!=VU{ B}{ Ċ\j f®oD3_-9<QN'UH[eaʌ=&޹8P d1h SmoّSN@/v5\G aan{S}7N} $n5i]zcs!3$2;[>bb])QE>>`Hq]esE]Y0Xq.Bt@y #-77~Rq}}EYk O"o?-gQtۿ1us(O(TljOe֬N+~eK؏mФӋ](:tǟ[MzxWob%tzKiMt?1w>(]1 4S&@R ڧat,yٹ"7Զ0 ;]FsfB)Ym sij_t@>ec.q]ϝ7`R !Ǝ8A%qNu δ 2@\pՎ&?я*;أ$н!̀ҳUg *B7!.;kA?DDJwF:5eȁg<̰!K&bX'%B',:sߘ3,vkEm̪VwK)&:RogˡZڽ*Zs,RFy*&om4|6> >\N:X 4=3'ᣓ|5TbXγ>pULRU+;GDyk5/*{1,Jmͤu?:$́;&CΌjRY>=% `Tۋ|kMNt@n`1D{wG rSZ#/25H9 +}>ac5֑玙d-Q/']f׹?z?}!A>z34idq}O7x,/.Yd3 pP"ktvk J8=F Mߵ>&ji7+9\p&qGrGOnב,l{`>؎fo8kff7(V  6kf+TvbD-ySMW~q,-;oCj=յ[f)̎LJɉ 9cI$UPR Y+E8;+,T=2&z~; 4Q_V|> ~j:=&6쁌ӼIQ jA?ns(NP3'(]SIsK88-y+.+l`0*!j%[M8w06;Q#cˢlurf)\΁ҊN`ŁթAwP XݝWtH֜ R H,Oђ0t@û-,7+8%NT|!ZefaUp¾y`nQYhh}qI5$(oZU]kB?~ߜ/D/5AzvNP, Cky"\=Y> 4T,mp/C>w 2M,=ddV?ALZftgXϘqM3]Ċ;g7^qDX eHC:U & @~;Qcpk+ضbQk,0mJ@@`9dn~ncb([[`uz|3ٓ2>C=n\AlZ6LWu҇G#ܮ$a)h 3LoT9&yܗ}(2>k!AH C| n&hd 5F?G{ bs9-_WK˝hii<>B/7R|Apۄp5k-29>4j*۳aeiv=JK|mkgC .CFh%|_#P,w}]2ްA&=67)V&gEt2o[ wXzQr;3ߛb!vLL3>8C+ E1ن(;tҌW>Au.%nRR@.Է/jy31zb^5BRa8|;ONsWKKBS|ӻV~Ëg*KGcB)wsY n_www)Y0jv~vNln5Q5Gҧ¡ uTɐ(bL q:CPWdIa"fT1A3<pJn&=Dz4=`&<Ņ>ë-,b3$✓];-I+5QF$dc٣ޓ+vs*Z^AX0g"YJz:V< U#xNOFuAy1^& y݅ g0S\6*Lh63S/Ym5aѡ,[^-Zv,ϔ~嵾DqHGJZ9v΍{FB5->g^ٹ-߲̑$oPׁ#Z֨Mstb[@j_1ˑ˥>fyIۚrbVe ݳ!z:SD_C%f^kvOtnyCjP?*t.{o88|p)깣EOPUs>1U0%X{5f#cmM&:%8?` v8q*+.g6+O[=6 !7_ɋFIWY˜/hLVLKDv =L2a"&c6+.JZk"]SnhFd=jfx&a"H8L1t.-y8GeYQẇ`40g`K%Oۀ|f40%*ꥼ-6] ӑ VsH۟2T rfȝ0g=0un~ӯrG#JIjSL|;)Hevqt1Q'[]zObȁC=^U@mg*nqCwX`z85RF#Dͫ*,z*$fZ,{4+ʄq8etp>K:rHR|*NRA5w #ZxR zrNeF"b; <LĩWYDċgz*{ڧ|,T@lQ&rF#fVݦ`E9OՍ>ScN c%S:tI,TnZ,A]2qJ?B) 74uaLzEߏ 5UB>ffҹ"*xR|w蠗L_$#2)I~ٯsJ&n~ꨐ=OcڇGtMPN;aWpW@!c {Zx?CT,>sEO^)O[?37R`ZSY˯ _8J,~'@vJ^'ʱf+QiWJjAt%jLb ?"u:u-\?QQ5@C#n{'ZQp<{>tΉ[ym^zѾh+ɚ>j3ɜM,ۯ<(74Fk;FWY+10.39tzhLxe[g# rO%=U¨ytg< 7(^BlR2!&\õ72O΅I%)KJ\6U\k%=[z]kvt|Ԍ/?l?:_|tT@'DZDv' PHbj7=aԬUUGsnʱ65cmҲUf6PC8U" e.oMÌ]9 Ⱥz:D^}d]qm$"*!:&4#HHs^.%"S-YXnw &= ˊ5uDw,7PbE{[@l~=)pk떔 f5Qqa$ Ī[YE!Zx\ãrx^ }jGJ2em#x<0BdC}0545S@ -p <3-~B\׶#7\ܖlgP.uL;_uOǗM]F\+#Soֵ*W~09Y4v߬u/?T:}Nc/?zo}H491l/%gs'oa Cdؓbl2ЇAip_Db6,qY̶Nh, A|`rۺBq%(@%-<\q @Tǽ)_9F95H>А2fz![5-J' QLJ^v8Wp%Ϻ" kcq_WIHJ"j <3tK8^lC ]߬U FX&xl|Z"qR|7p @̣Bx| 6Kh5?@P>4</\쓎<F}ĵwrc)uf҅6Oh)NBO@V 1&W}B/oO:k:o{F QLteL*xJ٣K(hJՇd\E$6wru hT ?V&JT)A] zD_ 6_Y;zL';Xpe}{OzoGUzL0Ѣ |eh&yȚGŵ~=rBP!8,lv0Kf_ N;L쐫Pƅ0YM>󭯾,#@!gAM_#{y_]Ĕ*Hˢ^R50 ^)qwf9 ??7) .:'on0Ga\/c > ʂ  U}C Aq@rMdZQӐ~"Qb< 8q''';Q-FdENr gSS;[XbC*_lsSuJ!ܭZ4hKUDlLu CLZ !lÜ"laj̏ʇڟ SD,L-,QpJ7`__-ݟWf0J(j>yi+SM i{IqƻG|J׫#r'gZYjLfhM9d#]E LKI-fzS 5,9 2aV0nD;}'QUu=lx`2xm ;pvM CMl?&c;5< n51uܤӻw4V&XQ!PT-OZ e{oX~Q?j7AץDGbP?.{:W7v)v"'jͦ,F>9`%Zy ;b2>/y:JAE_w > ;(XquXKwcٛ/?tcnUlAUJ(vdmOXf˕B ]3B=B-9,|! ߙ ,ݹ ;¼i-uubYŨ-S(G͆Qz]6&~9 <ŏ)WU;~u X}FFEc>G PBPal4!r, clH,BNQ-po `V^CI6/B8!\EpM>;{b:E w|*݌PTp^ qЉN. +*=PET b:Ut}O3U(Wpd^PPSvUi2,0՜2ٻ8pT/4g]S;**6 O6:h#ZGhB~iY:,lbܑp^u1फHp>h$fSR| <8?M:+2Q@"RNr~D7ivG;m,O*э5!M(_)6Hs)Y; F8u=:`'ʙrý]JI!t/&GiWoԂꗿt<%j3\_kziⰞM!$%K s(UC~]1g}g "'E}(ޘFJ<?l#Wx.^S2je(oѵhdꝻ5*_fdhuu?scEcI8cՋzExLG$'RE8SS  :nFg! 8Wef?|xF "-l Odau` WIa|sQxgkwFc@ͽ6G.4=*fj]dߤͷӚ%6UB= 6v 4RTӛwDARi8= %pUf- !C{Rݖhkp0/%Q@ Z s*k,Xj5 ıiӫMꢝPPcX9WwKNQ2 SdfγpKD㾀Oqf&A gfÌ+S8w3003R[TW/{/]#c.K?tmt3ɒT8-%d LNJځ腥Sd|DUO\sNv&I°4hJ%$PhMQjݸ{Ŝk0rNm6g(ӫ &/ :s9ԱtJ WhL9kNGKr:4|?#\ҫXB 4H=nAQ~d[}Ϡ1 M\#G, Bl, ܻ͞Npa~`GNk{Ƹ iN!N#2 *,u7aKPVNBHX= b^U, UiITc9֜Q9\FѯgGXsCʟF[JqG1Jʼ7墊&7ձdYX0D}O]f:F{y:9.@T1p Pxn u.O9> 8x*8P七R`bؗ$poOf%eݦ'<1%-ȓ=;-x6G==gI򘧄R%v9`;P h' K GCݮ>Ի_'[skC ZqxhqopVp2nտI>7]y!%+4TI(?4q܅H3AE¢JT^1vEhXElzNP2XTu}5ۅDc5`ߤ2)=!%.h[C; ifi}N2k3gzꬡ+s#l'%0rI.qs*z{ @hhE1S_/4QcH4?@y $0uV`AL=ֽϓTX*?z4&}W7k=5%H{$%n\4󌌃߿|WC9"g]XсOp L~EqZ JЕͭ0NX a 菺-VTbȖ`DS.ɀWWHth7yL,֋S}C l4]lO ݯC?c=5\JK)UpW»Dàbf~~Bkw'< jc64]F<'Cj0>i=Mټ DM>Ͷ/dU#yضD@7:_Ema#]=gON޷H1Wǘ-*HŴKQdR8Ims-" n?:\m߼[o|b1zCon~bU08 2,;w|CX~BQ`)a͹V UP+9 !hDf́E29pp 9'b̨b_L&QKI&a2bx a'a6]Qe8AP  U[ DwYx`P!.QvyT $Yޝ ׂܸPURGu:U`0)҉RYA.5뭢II@Di]b*vr"[e+Q_GO`(d+GAUxߵ- F9Sl=cԙluRX.&BjJ}َCٕƈ\]ucv~s>{V d^03 ֍ߚ{N֡G5MRJϪ[<߇`Ձ3D Cԟ;oR ]lZV{uBj-j ٭X4ͱ  3jK?r4i* L|ܬ0yrB$CFel/F@~X D * 8KV:j#d?yG)KAd|zu<{ a+Nc4:X0GW*S/cDax7[C7rŸރ VWoZ%s4EFN˽ mϢ\0ϲ) )9 ) ]%<}N5}tT]=[=jү__9Zwp,|nٸk (w*Ɨڌ {x ?)gc=HJ|NeR_MW&pU @DsjVoq MW2!;mٕic΢oD$E0]O$l$}VV;\~]S+ZZ[k&'ut<靺OWwm"*}YQf7PV8cje%btLb ߈Be}32 #2d.ش 3)B> 6U 0c;΍Rm=HU[5Xe$eZp hLR@~@t([SY9xW'bif € 8snߌ`uKG˷#4.Hj9xKhOe>nk+*k1օdX<[)ÙϖbRϕ֣z |ͫ< BG_OO'ž[OƹvyX+ݻW\RKXar]/TL鋜aam53¬qrn C`K'aθ"Ht)~=`w82[ADp&)$ &Ey>\x`ik=a8J"X>DCEny ǫ ! 9gg{r.! Vr Lv E;DI!!Nu ˫`n~ PE Sj }X} }.w(܃?n(𴖖4 !p`ѡPM0/̸$Oq%'DDPWM@ȝʽR) E%2(d ul #a@ZrCC>FNyT(Cա PSٓLp[Mz :l EN0ӓ`yzpU|P.ƳxЄDK__g|6VmCPg}+/OD8m͕>"t oH#=$vf;r `ef4X{yR|(;/_ެ8|B2=Ѽ?+K*c}7nĘؔC6*qz/yiP( Mr0*oEU8aE#cleߚ6; ݴLͭ+[P;ueUVtx( 98g.RYD]$3 j*B ^rDc2KR\A9 zpG߉WwAۃ(Vh)-<+U8ɫY}^6*;'WDh'q^<ܥ>&:bF򨆄O*\Q:|Xު xK7UJVj`e^zhRm%;WѬjMCRx孵3D3<,>'FIHe@jzR:rcw/% Zqjݖֵ%]I^󹣣l]5v 9&"41r眏;2+V&R.TJOhWzRMDuLKVOl)џPp.qF^ɪ9ѝ*[p(J3˪%и ) ֹլLLX jVx #G^rGMiv'sa|mo-TB_^^D˅>$rG^~IT\= != ^YߵNZM}I^.|2Pqgp؄ġX{]8Wrԛ:6<RMlt vvwavͪ%a^ R+%c}E /^@F*׮Sp&$:Tsr6G0=iŐ3}`h!z;S?][{ |IK$6_2b!ԧxT.?µE_{,$/2_#K=.2JZkshd*7޶LOwa&̌94JDe;\t8e@)$0mb}b{Wm?hks6Ua^{8mJ.;Ec+~рçb KwA}g\xnO'(2xl+~ʭသ : z7h:[Lv?u@ =+Kb%9-ԒFSz"JENKd%ebv,,MIKOP3gHOmj| ĕu5'w M H)|aCy'9:@(?o8/[T5!"uW YHSt^ts p9b-԰~x[rW4/ii nU0 R.Rn`0-Y o O|wijpR#\ЖT=c70_ 9juT,#f(~9JzDZcR 1)ܐDs۟fy2q'ga_ȍ{3?}{isb?_ftk%[S܀%$Mplӫ"K5Ӄ2 `"^)?hMAWel6m5r2{Lo)ɨp(C4+,hW]X]ցfhFKgD)GƎ9|)҄?}Lr zR? {T'۴ D=>$hA٤/B0bk򾘊  0Uҥ>sćFe^K)N3҃#]:7 S<ي./ 0g`^qic!G2(A͏6'hb9{ =nWỴbT/Ab4 $x4P{ԋsx={L܎.kxÜq]d8nzG,|%Tjoy!i ^] SK2gC5lj$(f䍌m 6si?&HXsOm .ҧ_7׉r0^#vO M HL$b~ Ê1~}^sCs`:o(lEbC n""P 'SYg¦,ׂ A|6Evм~ٻ?䴰/; RiI-An!?j_Ppz]|,pUW@8DUӕ[3[K䍎mcⲔn@1ЅbͲ[ݨUH-'>%4ŊZhuJoH0_& ߥAPd[Nܭtoi\ >Ї#P NYc 9_<yH긬hӛGys`nwwJyҩYKj"qOo feQtn+piX d$6Q_V,?Cb]L:2PuSHn[N2h%TT vN@?ۜ>7uf)uߛAX7kr9ؕQ'5:x0 yv%8-IxscHRYlF:[e}_TGƮ{;9 <2?4dX>39zO(j' =,rc_u+MP } F\t&ґhuѦ2.!-`  fC95DŽZ*jx=a<0QP{60̘)E|apNS-ґNku^롖Mh4*NmR9jEcJ6m~ќ_hbC|<(?LRB^l& !uNy2ۺZ\;r++}\(BqOjCC=( 0F]2(^8]alo(:&vE1jl@P`  LPb$h{,NFd,qbq 辶Sd!EE癬Kq.ybԂxjDX4;>b}/o6+\MmK^{#EםJ4f1ϣYšpXsЧUJ p=ϪY32KdJ%vsLb?BwNtDgq_l5ﲙ FO%ELqWE.A vyL7eR*jGp4HG+ׯ4+)[7ІĤq+U$?)9B?jQˏk?ţ4D cbqF`{~8?vBO'հ>fjG+ߺ!Tr*#qL+9`FY/N5l;Xȋ]hW&h{~hП bS&1x Pd~ %` .nd@EVi5b_34(ych~ Qɪ2"3 ܀V!ixgSP(+(""bXmн^  mMPVq"^d7 vgH_W& *B7btZٻbBg/Sz\ּFp # x)s=;}wFTԩf.(,[Mhp9-8?Z܄ ma=T1̸hҩ?u&i>*Lenj+n~%UnH4Nc 0|r!e`³ VYGW3kg5Wr`yhZζ\:}@c-7򸧎ZaGv2AͲsXi$#>m]9gٴxCT#0_ykΊ9<S!,`\d!Uփ F^}]j[E.I~*'&H=}k4RVuycoށvQnz%w `t яX2+`K cF-G[B#% :/:ɺ )qum숵JYEZ~4;rg;)+d'XW%/I[o?{*DY!׸EȜ"HM" #AW*A7RG+ꃸ8Zq޵P֘$c]2NxQRzfGU$sPC^ GhxsฃaSy7~=ߐDe8^jjemjSe.g7tyW+-Ӫ {@`Hʄ<;Ґừe1AX6$;/0M !<{Q؋́9j<$$w_=ۈG}X,Xqlp2r b\~mQ5" @>ݳukKneIfE16S=RW]l|5ءJΛQ<4L{DCkdۓMKEP^?"C"ARxeM"ĦuB 8褐[Es'U0MD|GdM ')`9J]{8~N\`ؘJ@.MM(`P@4~F@4ro?JP!k%&шRd+[LW^u$ J+b!XCiC*}P0 Dګ@q MS!utk]j=:vI\PGA#ES1 eK@ZELpe ѠPQ=(@{V:L~?L1D[,Sg̍!'b:檖NoiNMOknIG- )Ocb[13S!̄r:ZY6;E>U. w t0' ׭^cܣ}l_"j rXN`37nVbe8ozZ4J٦[ ߷rbS]r7Gw6pemu2G:fL8'R7ܰlQ Z>U- ל^d(߉U^Zn 3c!w[HbYwЫkk}Yo"kmv_@}k׻\2X !A?Cj3:i8P1: k6JFLY}_z;p/-0ApfW /R'ڛQUp-B3eY]ȃd/wt〘iW ?tp|>}ml< x NZmLZS'@Vè#uema;$;vInpK X(>/ 2Rpx2I-V;B:*?rgVL(ԗTEQHv ]NoA}##IY|Uz:\U#U*-F~L!)_;E@5!?[=T/`WY  T 9 Em>oe3[2wGwݲy@5ׯ'J̿ke'#n7-Xwb_%_=Z8xۭ<>;O% QyS?0:2c (oԬ[=}F$D(Mf(D|0F~\:s(X82OO؂H79TB5O4!s̙Q'hMYUkH#:eضY| 'Vn4*) MzE)jqOjh$$mPN`큭IO0\p#5P>#"3-N͕8iSRRYML ĨjǏqF#Th{ma!b7Wb"^Q(4fj/m ~ 8xGnF PjEfSMʧ Q]c5424)wvw TdGi]N3waY`Jq*'Vs ZW၃ n.:Aۡ⟠khQrq~AWZ#?p%-GkY&"fup$8h~ϚWyrH{Giʩ$ݑ8O3u\/K7Y`b3/ pvcyPP^ uۈlP1x#r+%(v 7-S/DڅN'8R(|]bbUo֫2a%ZᇋΏ+/!aݙ[f`_R! j[46sg0>#$Pȟ/o'>l`ӰASfht(皓Բny?Fz)Ɇcp>nv?a͛qͮq Cj͛ MX~^,kweF~=6ģ}) ?$ 'ܑ<M߷J\ nld}݊Aʖ [`hNTYRNjν/ڼͯ.C0AH18"l?Fx]CWZw{"c n+f=\=cjO;!"Rjc|ǐ&fDҎCO/H `kSe&7uH*%GHu.5r|o{A[-.>fzc®|Ʊ}Rw 4L2s!XT#)]T4i'3-!1~_ ls3Irf"CPm Pś&E/̡3_LVsD&*װ/xnjH?9TNC y%BO,eevnSO3޿[6=G4]0E-UؽXa,[*.4ذ^-8{ :BL|WgR6~gs?'Iynhlع~ b6O?xBZ߼:F)`7dN:}-AA7R}ie+iϧ )z>uK8jhWXf8'bn͝}[8f=/ŞAn`iR6j(Udɝ~0FZ'H3wb8E&VZoäitONQטeؓ%@-CP<= 4;xu5bs}>_4E]w,d*|×$e$km|a Us4l c3ܨy.LoN'9[rnmIpɜ ػbQn-(I&|NZΊ v]D|L[wհ71 Wؕ[uHY*I9 ,&~YG/:,f de;\߰bAM|6u JNO?cEE`(ljA6L!C;CH Iz2:^29mγCByB!}Al]J[VGJe'tkCV!T7o+/AY9 c6ok^ŕboj[ wlΧ3OΗt^X?p Q8m| _gN~Ei)[ މ%̳@,1gv~g1yFb+750E Ʌ^ 2L͗NJˎ &ϻn; cb;n2}"P)Pa1UYq84 DWkJB;OGl&pKsJEjC[WQ6Ȕc>^6 `lDi)$mowa,*/wآxxkG9IewE$fԹ+ ĵB g2}o׳Hev!-dgf""B'jO3M v2>hyRAKÙ_HN{fsaf^-vYY῎g1h 7w"0Q}??p-:z<:jۼ|D]:9QENȦeoFn TaoQHna 1CIB_Z9@#r{m]4"fkJ' T$f_Nt8}ȳ9w-->CW:x862yփ藠GLDvMu5g$P.hcT6Pdt' 2ݻ p 6u% AgVn@&;5 #e4vsgjB(ÚA^ 6# |pgGGl8l`d[o6D{ʾ- p EomV} ބDc˛ĭ7Q 8TL)kYؓ|E\(쿺Z^ , FPq-l8dJ"I`wt W`9žTcT-<497[uH"L׏7t'RE{a&LZ|s[*#S5v2 /:lP2~UZoӘbXvSG3]%5yUGwBzƓ; Ȇ Sy `!7ġWs #$d@ϢD ݢB~M_Lm;NT#7݆Guom-ApZ-^KQ(Ƚh/^6>;7"ߧr;TՔ@}4ZUVBΪJt8YB@vwXW۹.a}EĞ = FSd=Vp?꾋1}H=\ 8j_tkn;1;} g+W~Yk]\p`p.ZwlZ|+l!@]SNo?>$ɶ u4N*V8#7Rg^{;N]OQ\1痝MQh' =ÇLb7E5Z-f6D@[ 2VgC7lW?OEz}^ܡu`[t?G {f뢶%Ov=AgEԠj!v ,>Ǒn`tM7E~7b@t;m,kLOؑȧd.(69*&,pl4c(Ml;Q.I4lmܸe!,$N XrܨB0\V29XϋeUiʵɊ#Y&|0|4:=/ u_}w;W6B=ÇJi9ͪpȓ.d><}˜#WsũY?/YZ=K$bcY 9cEg y] P4VE-I͏.Im7oܜDB>tinPݹomA&%1K>]Iu$7&^]_#OS?,  Dt.LaӲ쎘P+r!u_ ۵a;%D*l_{aSﯱY"(UCd[sӯ8v3Ulp( )<=xc6WH&[ I,g-""MHޱGfZӂ{!"觤{mcTzZJS'cmUK3IOr'H6ėreK^Mkd!K Z“5)y<8`e 0yW+P L6hpT$Fy5Մ%jW_<^kc]D2"n^Qy̦J%s"9R)RbveHuS]g:?9Iޤ 3~Ox/>V>22þakz&uf72gPG﫣ԅyMC?׷HBn{6=gl8@WS<\_sNٚ; VnS6w/Ýj1#Uˇwj|@LZx7@]7vnw&Q- nڜ;F6+eg[8rc!~,Z #uyGϡK u#G,Yw42N~joe59/C*F|f5eq96r)dص(w)X3 [sqGĊ_+|_L۟EƠsr[aB),8\qSOSgKSPA)00kNYH- q6}GK$AEd5|ݿOMzROU/07E-xfA GGNŊ :|/GKu mͬ~+*v'. ^C)O !4_cL`*4*Wh)RtTi!Lj 8*<`]2FzDZ+*b?^ⴊ% H8h L^S)y ɞf!@e`ϊDn֤py5VUN AcqbeM'FgŮDqTfj6[ N$ 5>0bǮ[Uj,<|Zo5)t;ܭƃ$yB}@vHlsR??P_^}u۝zaף台4ȳBg1m$-nD?7{!( ZB۱>mW4|r" `bRxoCT嗘AtD]~pMճs.}<8 {橔I IU|>I+xL87n֍1bEԲЯxXF웨D&d5a{y-k<䙚x~3RܔTf8~d(/DS $U%RfyQzw37w3+|8`/k9k :m:gCmP;;8S}% ]ϓ'?˛pssUC>!a6da'>]77k[`~X|C?V3¯dG4k k|8JT]7b+FuFh#Z#1j!Z`]O{4 dRM0;xiQ_VPKe\Ѹg!rlQd'|"88#FR}Z=kI%9=~ys#ѧUo~{;F{Xv<m (Siq5A =lJTĭqH`a*7&C#@p(fM ܽH&NtS16(x4'ZF2cTo+k&`/yDu)9,Q,F)sb蠢pNlq"vIb!E/z}o2#n\ϡrL LwDR'FmŭqRSeŲ+cŠioHZ=T'/5ZLׁ  ?yrsm 5<DN΢qN"NNG"d7퇅/x8Ķ:'to1aI$>^KΏK}ud'Tx`b BJƯ?$ rUC?_WtXplfUcnPge?H̃q:mݧ۶[GYzq78bHdyTyQvLhT)+Qsf}W>il7^8zuy馲R: ܏ꎺgcޯZMGtGs?eSr |o?Z">HSK23; 5>{٫ه14pUkcI]iV.ƙc002L\ 㸌]yw_Eu14*/:p:Mظ5jH0Ӄ}Jď GfW2%UTwi|AqЏߵ!yk;z*8+u߇\u0@Τb(.\rl!ԍ3Ll,x^LFV"7^4v(7 MR7Y(kʓ.[LП#E6s b:#}}h(ޥ;T? DDp9X[z^;>yÛr1s]s،RjGނs+:15_or)/&Hͱۥ;_a7?RV]Bn%dXXB{԰fo |4Mk4e{QF+3U{rNI}ֿnP-;$qLܺ+T9>%w (vI-'@p!R0̯Tֆ~S`o ՜k7N` ewϣvSq[5%aant jD9vN,i+}7&GFCwx0Aq }u^[,=wGGFs%?lJ#3.Z/ɢGP7 4A&?e]tKtV;x/^u,` yXXyT]>E9}u rʏQ+xk?- N=Q*eKdm:{7bVN•3 ,qaooyRv;8Fƛ+S UT:LH k%Ɓl%qZh$ gxF|쿡TAItRJvHn4zt ,*.BM^:6J(,ӵ'gWëןh'Y*?0֩MNH֝#UU-QN-Qc*Z$>v d.<\2.Tlx(:54$}+.Y:*! 4-uڨAq!zT9YV-]pB*S#?'F' Tg~}{mr ݺI\w]Rf^uqը}ufV' /FcYܞPRp*KFYjWCs<.УfRAELvl~maURFH]y)[_#w1Q3s&U*6GX͸8'ğt_1m,x+KgTjJK}S`1I Ap,X1mOnYO/*]6=e0eHre/O' R@?ӯvk##XrX~6Cuib99Y |0rǩc G+#)\W}gh۵fۛ WU\6ulykC&^oty-vۉ'^Li6[Ըpes↥yYq ,੓ԍwB݈G"<"YBNpW5ԍ}zg<׾V:oKC?*M:\̷*_?֗3QmKm*|pfchVɨٲ}vfʏ1s=C: 2,-,ZOOw_peEUXC:,r酕[6WڜB[l먩gH&̓-[kUQ%*SlG$sa7n;I= v`qQ@gRA/ -u:6j&N͐ ^, L15X}]"Zř 9Gvz_!"R- zUv',C4H& f6`׬orzHZQ~@D@-RJ~G8P6A~ z^ó2$DKs^S|y *-cw\e@|1 BfVwmIA"jPmUy^{OU(a,͡8mw'2) b~3?W(B]D25G82?̉u5fg~8Jѐ[Y-q|14.D*t86hǎN>fh0Cw]|VEN]QCS`PԺ6{q6YA`}ޮN41j|-|FIFzhҌ޲v15s)W6^uR[Es|gC&& MO8rM!0EjcHn}sw'~+o0GClo fєJe& hJz<_ݛ%aݫE+'p2ʧ7V(Ɲj; =mb/@ͬnN#D~\W)\vF-*qnY]&-ًkJN0"hFTZm ۪3 owTvhvcvZ 76%F:^dFK)z*H=-[`ɩHʲ˱ik_.6 ހ]ϛ_y@$.aژo7xEcG(Ynͥ]A-G7qH*6 P^,/\(T:$v2ob(-O * |Pg~q.Ƽ>荝N9f(eh\F8#7ބ\ZN]{»# @ {pZ(y*L*g;Tx]ި,f最NH =E([3RBUi$"nE$~\u9{dgVי}177_u\G dHD]' e3!o9̉2 k^ Y;F!y^CgC۾㪳\8=FOzxh $-xP~;6yVs|aUn!|;!+.q9'$>4U`'R s'[1T(Zȋn\:?-a¯8˳;` zDт<^æ0hx#w8i5j.|Ei{ = $zїVz :ڵ6X˨0^p{/4{GE8#C}"ڊ`EF_,d8ͣ!'(p\.fk+j~ԏ2w>7v\"p%":߸څ|>vM-˅ 幃.@Тeog]"w@){ ]x;_ld.Q? 7R/_{Ƒ΍xxU/T'/^kӸ}g39b鍫:2&l٦t mŽ515Yo1ydb=>~Bс-Y&%mtL!b̙0 cqs7Az HAijcݹFP(]kNDG4fc&wkLuLekR=Q)8~l\  !B`0% T#I2v+lξ})A4 keGq?Fcu>W\oi *@zn(Gt:2~珮Ɩ-Ю(1kE"85LYsp*vv"WƸ?>5F{q~VuuY&أH5;IЈ8>-ĸL9,tX CArc?=[_w0vvX ?=ˍ|Ljt+&'[BW;v5?j ]pdi,Kxd*+K}yFap6.hbiM!pNlEȇ?l8f-U8b&㺁T"_ҷfxxrrӦ̅F\Mg5}|@|sj˻tM{X>S+LƄ#cESxs,`sz֘Ij$Uhar s5C_ J*h9dSςBi*!FD0s}Z욡|,[F{RZ?N3n'ݻk: )p<ueTO1(beΈZg 0 GwQJ(jn7_5{Q5p+Y_UY}~1 -T gz ՠ;>cЃn5l hEl1Cy.@So+qD-Rp SiiiU| :#6~]̫DVc팦`UkkuQTڱwqEg-QL\! ̕ <.UF}4=\̶ؙ+>Ya%_\E9ȿz_PQO=j7AJmwҞv[@ٸ]ŹYɜ[.͛8IlK7dRlZ6E'shZ|גijN|:a4=+=bsVvvq֍a5Tؒ(%=iUӹ=u(AxwKj {F{~6x+-:L>%Ɨ%t`u&QinM\*c*ѱJZ]j׀ncj}#  c *}ǏP#yk? FDuJ du:tPqkf`#2ۃ @W.Z] B1a9]UIKp6ý(8 *!խhE>nj=3^3H mbZXzLIu9$:XB{'s,cÄl9ҕr"']rwЁMc4|3M+ }>cٕ@wx1bZ})|$s,LhͲUJعXJڵ'܌%ٵxtud0Gp'eXW'2zUkXv@Vf{dš!m|JGD.H^膀L;gd7ê:ܞp;i*A9O`ܣ߸iytGV! RxxGuI(.$wmY\vcLyY& z:{(_wHyh 9V7'4EikhL& 7||^/q[3ӳ4ċgH-fԁW$sأ?I%nҧ=Nw#ajo5{=~Y K[,oq;qX]fffɨ٠_mcWHOjM!^w3:m#M[GYk=MM4]\[+gxsXµ9N FW onnv-2:I w A8z xUDq"y;8}5=>#:Y:N ů_o)9!Sh(DA0=l@R9]̈ Xh3gƒЧ0u0e^Zp$*V֥MяK'1$U $ +~<B-ID)(E ]u]}g^ƍZF/]3 8/i<_ qPPBVuoi /] I&iQ%2T͟4N#UzH/IAo+;ֹ_OG[6#'ue|YS[0~4ĿsFdBHrrjQk]v~֌uvJdӲveP1醆>dUDZJэQ)z򢁴zq#'qc>l{_IZ]#A֥AlHc=BL 7=4ȇm\U^ fqE,qy@"GRF|уg{=^Rӕ&&cgUNW_ZV%7д6y6X1W @_l'vo5>)M`ubbu EqyUF-:cXk\{.;3G/=M(?dHL(›n?*Y?RE񁄃A`CrD$i-oohZG(fFiÞ8Liia^ PV/ԣ/}3㎸b뽣xjq="܂=qD=/I(GS]0,lҐQ!q~L0?=ikmG',Y] d$a/ås^P-77/(n*OWQXsVNVCTu"\C^ k]SQKe d`݃ 8ŵ\Dn#scb];NqKmQπQ;K}#b8eGd\Ҕ>iq1@\ htD1eH@_wU􀃈`K/(2)Zanӈ$kU2wTցC (ΒGW "Keq;+grK=*hqp{hwίEfov 2 pDžܖnKAH-֭7kta'`oXG$&Pw-+qE쐄Rpe<{,hܧ3<?[m: -C R[Ҫ^3~emN0=`cB (jȋ&=*_Hm'6Jib4.':Q;}UL=v1`,klsWVGϴx?z2wy$mwe9]Q*l>-w"]=#hv{hMr#o4 2{Kk QU7"$t71mt c}J|9NG;ЦEv61 _GEs픐e XnnvCr_Z ]­hR,]}NR[LYGZzJƦx6׿ɒ94i G;%#Imǿ ?u7glZx}ofvZM^ Bj*C({g(jhJox&ۃ҇dBDV1WHo]Wx5B7AFGEp#9+?(B\LO%%4" ӹA^Vyѹ& 0i,/$p[f폯\>.޷O~8+!1 E4/f8?r+sdqz;uީ\-3'#) obնmU`c ܌je/] @/}BEͼ#ؽs N}>!X:03D1tCV8xco ]O\{`=DC}#,"O8r癓m/]/{ !#mXsVɽp,>||fޏ Lfy~c\{E_]ko ѹ zz燯t@ ]/+倾?DpDݲ\Řؖ'Z_dmZUm*6fQzA5O~ Aܼ\ѕȗƵ%ʂ㊛ػg+3JxcSUlxg̢N~G" hd+PPcߖF ~ܿڂ&n v{Z{AĻY&nQ! 9s]/7ڭܩ>lH\҇|d{e;R.:רwU'2xޢ1r:V0FˈuNH?EFgqմC[jn9x:7sDtOI-W 3"M"|6Kc_ARBZ~VcEʓZ+6lXZ?_ ]TްtLѳaw{aű,qwJu{ÛqڄꜶVզ:a7j7Of5C"3c, K:܍^ݷm{st|v[]VѐMGa>`l*O7W0fځ@nyO8r>pu\Pܭ--~I%@". NPy]V5'hSa07eZu_gC֛&T.*6*]vꔢ\>KWl Ucb+q"T85ZJtzk\ Ve5swpc%Ɣ#&Y 9 xEE(&hUiMH߳.Z8r9,;<#h]-iZ'>ӳsm˶muխWD>D-K tOxxN;:8PS8,EFp4ӣ19NpbHjYM+ "jRY411=e&o>"4rΟ~ (Kկy?{q#q癝QnDqCI%BG?BiDYh~Նfֿl%"L?\jcS+UjtW^YQyL-7U{]3>攐w[; "`UY:cxFF/D o_U b$ MF*.5du~-+*pm`y^>9..s}G Uքjoɂ übpY {W 6s6zUy[(=0,gDۀA{%"{Il=^5;L'12I+>YM׽)Z\ut}ہ,]*llFfԆ'6<nC.9Տ;%@~)%Ǭdo}fQS U7b֚@@mB?#џtBP6Wf: bGa`Yo3z+$RE_*X{Pp%-ً.ֿͦ Ң}qSlIH.]qhNW-38ՍY?:ww vg6D[U(ߵ׶ UJWx%d\Y 3<;8(GL#^g}\a؉s99۶P:l4)sF4>r.:rqq+ܨ~uH"/$4NK {+rv8r|mnOÁ0#4[O q6F0汦?XDSJ{JSrNSXnaBB+ZXdd @3\r})tR@MlKj*sg|@@19Ó(OoDsm"luϬ CCs~"O4u}9H N!VeA ϟ h00.Nlj{}8 tMhRTKPr:^WJD\''q\ 7ã xNtq x{pz|9!̥C?Tњc8E *u&SDO9PT-e_ts[8SAzGt*ti!;8;>6K]W*4A_CQ(>XRjkz?r45fvY..y An{;G3V!ijY{ Ju2M-1H4_bq<|n(|d0VQr3OL/Ci*  ߽C2_6!MPN.nTpG<@dv嵨r9}V~L6r2x]:sHρMQOQXHA5w-p,2fDoc-x`oݵcvݤ2)C;CUo$zv-/[E=Vk-"gR|HJ wX}]os$|3 |a>>143R\E7-gX[l\Q >*+@ &u5#" 14 i6;r.|uZK2QApycNMY]Af,j^I 01{KPf{} %D8ľ>~u H]i"K͑gut٠4Ԩ\0u BXH]Ec21?vz"ee|̷/+o}}9tޤs)=jxqRȴHM|dBNmV"\r沾5݃|ƈ>½jc,)Y\ Yp:*-C$v7z`}tuKeXW@4c `һ)ae]F +!{+##jq P@Dq?`xftQj#S h(YfTN/dZ9Ȉe=ʊe ϟƏ@o-į5iQ6qh êA ~͊>lֶ d+^+"4Ϋ5E :v_O8DRϜ< ħ}] ;'^R.d=c}Rw? |bµ=[j uo-3 $;8۹=d|&OogdStC&5)\H6&KB6(mMw׋Ň9%U'D)۳`JƪRLH |UP냘Օhr<[BUqoafDoSx蔼2ud =%@3TbXvED\{@4Yʅ=WHմ 5eX__ɺ؂n=FKnR<.͸yH$+tY1?XX|_D Z"!P/MПLPn;W챎~Ng+S(0oRnJ{j* ;[x^bF ܡ=^R2Lov30MGP0&Mwz@4ȠSWgg,ӘГ0C}}7\;`l "F.&?o*tZ^09GT~ok?a VSv[(托*vg~oA_7L# M[0H@`! 2T䛄t:~k}CD݀1|újk]h!D[=4/;sq}~ndfvT4+*

uSGIvy.d_eYT}ۥҐه4(|ONbE5U>CHBr-x"vFI_VQCXij'lxd>ދVM xz(dъ{!CU"d |tof/JH{g  "Z0#|,K&;+ 뻛E+ZzZxrQBtaEu-dk9 !.Uxڨi96%a7UmH~(Fm[I1NI"VWwc5Z1EacOޫ2+i˽{6MR2g0G؁w ]KI3m~aÊA;8n4ǖ|a0?v{e%("$);QO@ *J"uN,/ߗ[tY8 %Z[q^cB"FIpMbɝgZAη;xɳ EмÐ}PD|rC^o8|Iբ'/6C7вaTEjR\uh{TM\[G\+{@p{HqAeKn/&k_{;\dzocKQUCC7;a/CWszFc뿋;ߣ)$UfUnLNRov/ ::Ε졸{- 2] MD_Rns @u"*dP$So#=_IJ$GDfVo jU*{3DgV!/0}#R|`v[НT6"X$[It KҠLZ/$.lߤDL2+Ǧ<2ī؝ߓ&Ak-} _1o6cB F2%)S+d10H)f'E]t|YB+(wt$_@: X݈? ,n,=>ݒ2*OӘf 9\K:G;{EltHP`PqlV2IR~g҈ *_\pdu1DY%,P/=p=b-tBhI)>NxiBknKkKZЉ~}s@Z[CyZJ`pנnC9hS&2=+b-fʾ99}m8a}@)9Kҳ´sv%uq- %`B]:h_[<,, `}LHhcR10fkrEbHkRZyM|}dCe }uY68jB)a 9'(c~l*ۭ;O@S,Ng5vlNk<ظE *'ZN{PT3``/ m/fR6P.f`-o mжʶŶ*5n{:k U^!ꕯzTo|nblq~x H_0cΚh)=Lu7ፗx.}?đ_z dXb8rW㤡l:t%C]Hw g44tw@5OHN)99܏n3=^r %]|qs?(K,ɼ,ߐYZcdFfԩ?՘_Ep BoO>I\dM2=i8 „B*m $ae08Bc8lgOfp@VMƯV5mcJDi;$`1mDӒiFQ\&kȸ% h58z2 B8_ qT9 k|9{IhrAq2n6à7dΥ׌ϊi) ·z[xDGQ =1:]?7n}a3年Po[#u}s7E75h >q +޺0'^BępW.duKvFjkEBDmޠ/D]s)-@RD90 YD~G+-"91AįIua-3%J>FavշCsE-;P!M|bL˸zK) c0sETe@l=lKo$:䦣ԉ_9vYc}jj # ѬM[ 8Uhlnگ b?fG?;/v3*K~k%2Ր#ſ\lհCa*.1ۉhLR5Yp;uN#$a K49_CxuzN))]y+̆zramhNmqؕ >4K1#t L:Q/T#@qD?Ok,{9 ?ES⹑s`. \ܔBM Lwd:` 9&fǖl >8H?L HC%h9 _-} a#war%(\2nD[G(jz.c߲&,t{ΌR#c:+\7/ NK;Cװ~S9!Ż&_{K@qpwO,)!ðZY&J U?FT'8q=+8D4`WM{L4I?Uh~ V TF G( u8 rHW5vHOgv_`T5+mU([XQMXYVJZb s)wO ۥPX!H~lֳO4_}>wثѕL<56V.K.vl0מյ]w k%7$juIk"ejk*7D)ک<կ67tHYMc KHO$/ҚO&,o./2qXodIe濜ʣf?z(6ǷW?rՊjH[~BS .{>t"p0=gg90uymΦzo P TD2G}y(J#v:&/f:C qsTzk9n 4kǾ\%Zkޣ1葤b!f)"*)QgTiH"RJ)Zkc1@5  g@LOQ"AŁ33Zkmw~Dq.G`чStp ӻWinc/external/wpmu-lib/fonts/FontAwesome440.otf000064400000317424150211770060015227 0ustar00OTTO CFF LOS/22zR`cmap!wOheadHI6hhea Z$hmtxl maxpgPname&x`post g(_<QK  ZPg\33spyrs@  / /: /Q /Qc    ^ [ q . [ $ [  s  * <Copyright Dave Gandy 2015. All rights reserved.FontAwesomepyrs: FontAwesome: 2012Version 4.4.0 2015Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/Copyright Dave Gandy 2015. All rights reserved.FontAwesomeRegularpyrs: FontAwesome: 2012Version 4.4.0 2015Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/"" l@, !"""`>N^fin~'(.>N^n~>N^n~ !"""`!@P`gjp ()0@P`p!@P`p\QA0ޕR     jR  pv_]yn2@zZ@55 ZZ@,_@f@ @(@@@- MM- MM@@@ -b   5-8@D@,*@  mo)@@   'D9>dU*q    R     @ e ! %R FontAwesomeCuvv   U6U6 +T+|u\ ",04<>EGMT\_ehmqy}#)4>HT_lp{ '4=GRYfoy &,39COVcoz"/5;FPUZes}&+16<EOW_hmqv| )04=DPX\aju(,26GYhy %16;>EMUckox    $ 5 G V g l p v    & * - 0 3 6 9 < ? B F O _ c u     & 5 B Q a f m t y    ! % ) - 1 5 9 = A H L P T X \ ` d h l p t x |       % , 3 7 ; ? C G K O V Z ^ b f j n r v z ~   !%)-159=AEJNRVZ^bfjnrvz~ "&*.26:>BFJNRVZ^bfjnrvz~%0glassmusicsearchenvelopeheartstarstar_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflagheadphonesvolume_offvolume_downvolume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_heighttext_widthalign_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencilmap_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_rightplus_signminus_signremove_signok_signquestion_signinfo_signscreenshotremove_circleok_circleban_circlearrow_leftarrow_rightarrow_uparrow_downshare_altresize_fullresize_smallexclamation_signgiftleaffireeye_openeye_closewarning_signplanecalendarrandomcommentmagnetchevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontalbar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_altstar_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_signupload_altlemonphonecheck_emptybookmark_emptyphone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificatehand_righthand_lefthand_uphand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilterbriefcasefullscreennotequalinfinitylessequalgrouplinkcloudbeakercutcopypaper_clipsavesign_blankreorderulolstrikethroughunderlinetablemagictruckpinterestpinterest_signgoogle_plus_signgoogle_plusmoneycaret_downcaret_upcaret_leftcaret_rightcolumnssortsort_downsort_upenvelope_altlinkedinundolegaldashboardcomment_altcomments_altboltsitemapumbrellapastelight_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospitalambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_downangle_leftangle_rightangle_upangle_downdesktoplaptoptabletmobile_phonecircle_blankquote_leftquote_rightspinnercirclereplygithub_altfolder_close_altfolder_open_altexpand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcodereply_allstar_half_emptylocation_arrowcropcode_forkunlink_279exclamationsuperscriptsubscript_283puzzle_piecemicrophonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchorunlock_altbullseyeellipsis_horizontalellipsis_vertical_303play_signticketminus_sign_altcheck_minuslevel_uplevel_downcheck_signedit_sign_312share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfilefile_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexingxing_signyoutube_playdropboxstackexchangeinstagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightapplewindowsandroidlinuxdribbleskypefoursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614Copyright Dave Gandy 2015. All rights reserved.FontAwesome $(=  $*.48<DHL{!'+9>`g "&.26;?DKjs isw$7=FNUzRW^ejquy~ 4<DNY^ny P[`eisv{   % < @ G S l t {      ! ' M q v     - L U u ~  ( : K \ e j q y    # < U Y b m p w }  $).DZkx}  (,?RZclqv|#3AIOVZ`djrz$2@N\dmrz (-3>JRZ`fkpv{,! T <<BKH K\i " R t% l /@EXXE+y}}yKX= +EXXE ' 3 `T~~ 4gT@ 4 f  1 TR @D=  ' * << 2 2 T >  :T F  ya H T\ = 2 @@u 66% y}}yKy}}yTJ @ K1 @ c; D N  ' T& F  ]]H}t ""  hh  + X y} N   |zKz||zKz|K   ff T TT|zeU# & | w R + hnnh *  }yTy}}yT  V` * # `V EQ |z ` F ~ k 9 9 0 hn DRRD ~  1 TR 5 -   T tzuxu[Brlmyz~5qsU a RD` hnnhhnnh   y}}yKy}8 TT TT{ [ ;(=ZXWG/9;/_Mknmn9:YIƑP`q~d_i iii  h@@hh@@hh@@h 0: l . F/B[NPuc]T  }yvKyx}zy zr^``^?_  }D}} k K&  ^hnnhL  ) ; h@@hh@@hh@@h @ T1  + yy s p F  88'}  }t.+ݭG 4 1  ! _    - .   n\n 3/{V= @;~ ~~w~ fz\J$9:lA T}yT5T mm))mm) ~w]]w~ 05 H EYM @h !( !  S ZZ A 3 3C ~  z{ U f  ,, , ,  - .  hnnh \xcikvss]tRatyxx {Vv7+4 %MY tk 6~w~~  p    05 xyots{ tp OK+ yyrrrry +t 1(  )  = @ 3<  | T* 5 quuqqu;;uq QDnty t H t  >   r !5 $  arwwvyr/ w__c p] 44 x ]]9  h  &&{   F B i D$$D yy ; 6T u |z  <<<< `=db97 TT_Ld k nh ˻WL ETO > }|A E##EE##E ~w] ɽ s o"7l z &6 \   g O  +   << y}|z  f z{ 1 3 DR  $$ - 0 /  EQj b ~ ++P,   ,     z} XtxmihbW_) :z{  < T;   z t* E##E   tB h@  s%$ TɽYM qt{tsoy *10 ],y B ' !! V }jii `V '  ]   ] 6 wkz|| s} g +  h T   z 4X  \$"WT SZ rsyy'&  %t~ * i   ]]      }Yg,01 xeqZ  c ; B P j^ai4a8d Tk8b9[d&\PT P !F!""t"""#o$$%%&'G'()e)**O*+=++,9,{,,-q--.0 0112K2_233{34/4j566d7e8 8?8i899: :=:;W;<`<=>?@AB2BBC GzGH!H\HI/I1I3I5IK KgKMvNNOZObOvOPQSSyTTU8UVWXX X'XJXiXXXXYKYYZ[_[}[\W\]m]^__b_`ZaaGaabFb~c'cd_deEeeef&f9fGfUfrfffggcggghhhhi0ij;jjjk&kpkllm@nnnno}op,pqqr>rrs1t tStu1u9uvovvw&wawwx5yy4yyyz*z{&{<{q{|+|b|}*}}~~Q~q>BU3u4ih7` bN4vhok/wB*k%tAYqVOLlBXĀĹ)ƿCǪɓʥ4ͫlq9) Xִ,:ةq܃gL޵(K -7Z<c=R`  j     }p <}abT|lF7D) c    ! ![!"#$$v%&#&o''F'{''(*)3)+`,B-./019122p4+456%78e9 9: :;;<=>>*>x>>?(?@H@@A/ABB>CCCCC C CCCCCCCCCTt TT4d 4 z..ȮhKhh3c # ^uiƭRl  @. ? FMffMZnnw     d  `Vc~ofa[ Y  T?  @ suw#$L>$#69JX"!!`V+/EE+V1RFS _r@3CC3U f 5 p]  ksu[ztfU& q9 [[9:QQ:Mqksu[ztfU&l vVlXXlVv6*336q ) Ki l  i4Y@ zzzzf Q T0 Q `VV``VTV`ԛ  T0 f Q T0 TV``VT Q TV``VT TVTV``VT  ^y $% " hhjyy " "  ttBKH ttH K\tti tt ?  H K\i ? a tW&S:aR`S:a))6 z6)õ`a;R`W&tA ;;QEEQQEEQQ T T  @ h k zK}zaEV" nmloL{yry}{{OJNll~n|i&js^^[{m~mkNo|y|rz{Kpijki\f_i]QM[!|Lz~rǑ̒Ȫ'fgiM   ([po pHH4g l nnt- v .s~oJ,W`aGahc~v~AHH < 4t4tttZ 64$){|||| N g|5pp Ty~}y:y~T ppur5|gccn_Tz} y}}zT  Tdgf[wXX[fe ? tqTTTTTTv T~~/7 v ('T T7 h ,T,ThXhYm}}chhcqj}}iVgvL wxrwwvttv$d t !SY;;A ylD&)'C3 Y4T[ t} |}zcesd,.9/F-0T5 T"Q>W"SX5z|[,9FZ3{ T[ i #""T    @ ԪG@3CC3U TTT T+ kT^^^^Tkth]bt\i K^_=1lno1"-SKq~n}s{x}zsz6 ;3n L T T/WW/!(ZMj: kA TK+k+8V=_GxɁHKxMG_8+  MddN-hnog? ?go dN-hnog? ?go_QP ox}yCQ(Csyrp}t{xo_PQ_K n{}|zx8 S``*S8 qxozo||{}s}|{n6  K vvvu 'j  ʪʪꪫʪ骫kihvvvijiʌ oz 1z q w z z z 1{g1{{{{Q klloʀ oijivvviijn )n / _^X*DtcX_^sjii}jttjjhs! g|vtywxog`vf/TFw.qra\zzzaM{tswxyzzVc,sj|wut{tv\h2p]yx}xzuxWi:mY{pvzs~{sww}e_^#:/r8 s 4S4K4"Kme,,eBV4 K"44"4\t4T? 4t "T33333333T4tXr=EE=UIrXtv l O T, ie%/,xxx(((#Ɏ wR'VbgfVpoqqq{\/j}}Yh^?DFG@EatV@ha%-n<scsŔO5*VJM(0x[[_}~ %;AHW{'Qbgfg FIGf=R!Gv^]^z8'n\PuH#hPMqJK{-ЊxġMMN[ĐơϦԖУ!!!x$ǁΓmr;ni~GhftnOlFKwz6 ;p6p_ph6hpo;_}oh6h6}_yǏ\|}Cy ^^^LuZ q4I eptcCDC  yǐ]|zb||}3mrS 667W, "4I ~yv}u ] y]h vp|zwwzv {y{  |p hy : . : d . : [ y : .r : [ y0: .0: d .0: [ yE E E t  @  f tX>l TX f T1 H ke tX {tz{~'&9* TT& T| :''~)T>4444Tl  |z@ Y  4ka@@  j D~~UT44/ ~sjiij}st:944::!k CNLT_p’tR!u @MϠHGwwsr@umXXj:bkkcv`~:jX;Y;l-&@yyE i S+,,||~KK$ fccL+4444400f,,fMff// gl }{|y~wj$ |z) "L {zt{tqT4 7\3ulz* p4Tqtv l KK$ fccL{kkYkkkYkkkkYkBBk  {   + u  0vgs < UZ< Z SUZ< ZZ ZZrZ hlvlr|h@h|h d @^ F ^ [ h d @ Z;ZZ ZZrwhZd Z;Z@;}rrwS rZZ}   u . ::} zz zzr:: ' zz} ::  :: zzC bu  [nh !C hnn !h }2zz11z IIII{zzz1IIII IIII1zzz{IIII{zv! zz{z vv,+ 1zz6h 4y}}yTcTN T4,#Q?`\pnZtҫȧPKgjzx}wy\O~#7@TKT!h 4@ T1 4R +1 4R ;D44{44!`$$`$`$l $$v$`$: } #Zk==k##kZ==Zk#: #k==kZ#v#k==k#[ ]&&&&&&  &&kK$g %} ''} %%  ::!8$ %56&{SjjQh[=<<=>a>a ^CT}s@skiij}sst: jt x }sTӸ~ssjiik}ss@@stjtTC^OG GOTs: js@t  K/ sjiij~sts: ks@sTC^ǸTs KT/ @sjiij}ttTTtjiij}tsA@s: jt t !j_ t,Qa! KtkvqCth tԃh <<p+>|Ri/8Crb{Zja_qV Pi44T) V``V| N tY d  T f `d d  TT' noqqon' !5((5!Tft//tq:v++n+*mm*+n33" äyppv-)k ERQDEQQEERQDEQQE9},~ q 2srqt-}}N}}~ZTYprr~n pwefc~rrq/s~|~M}~,soppndmfnen s -}N1kmo/C C f l yQ n6$7dI.3Tfo1\s\k<^  U/Sk ?Ÿj-@  +6 7 Dɝ·lZ'#ik}ts')2OKebh`i_mdG1dq`d m]a"# e G.3GNOH 6  t@K̬-*osr^ ?<k篞 Y xxytR]ssvkc\k}\vs򺊧1fzk~rvdOJ.eY$n:mo`d q1d_`cJl2)t}ǏymD f @KM>M>KR4)<5Mnɿ<5)4RP p]5 dr3CT~ϧXԙT& ~ϧ4 {{{J{J IYU:=YϿڼWG j8Ke`bz|vw{ ̋{&,(i"z 4t4| TwN T480QEEQQEEQ086 (y{wA[ il $ T/TL^ADD EM DDsl  ,^GofC3T~ ^Go ^!Y1/)Yb1+ pԶ V``V Rzf|Xm}[YKKkK+++K+K&6+++k˙̚zfR_L<L aNi`ʆ ŕXP,! t\ r[t  ˷?ApDU88Dp? ? \` TTz{{z~TTTlTc!8ZZ.n82Y\uZHm{(r^-Ʒ֫Ϧ [ {wx^^]Up[c\ˀtbdee  $fb%aa>"ipuleǞëѯtC3$ 4,g3& t&;*226;*s qXsIm[FHNMo;otpлͩ&oxtt_Jdwry0Ayu{&Ay  (TQrLyJγʣMfEpB}P7.G$%Frrs3Xo[{TO(QVY`1(mpnnvww ."4X+prq/#>VK?ʹķSp.v/nQ1h% p%\ 8rwsp TTT]]S T4V+T - [ )  \@@ @GttZ Y   T>zi.],++,]i{{}zyjpnjry''{{~{y#joicciq#44J J 4 @ ԪG2t1v~z1vF4YtHAAHZEtYrtpԊ d 4TttgTEuFF6!1=۴ n_F( RD\\T$4 .G^SSG^J(@twT3fM V``V}~d3fTw@t(EQT]Th `wrPNxyprNV[Pwrqqyxyprrwwr[PNrpyxxyprNP[rwwrrpyxyprrwP[VNrpyxNPrw}PNVVNPxi4.TNl FPPFs\k >\V?Ckk++JL7 =3`?.Qm\ibgbjnG5[`d fuel# =  i.Gc4`C>[B atĹixFP+֫ঽtttuV]]B1f [GngimQ`?34=_`b    =acf}|}KKYS#L  KV?Ck1B]]Vvuut+PFxiԹta ?MQYKK}|}fca=    b`_=43?`QmigجnG[h ʰl ZB xxyatRt]ssvikcx\j_qFPPFGOLJ++kkC>[+ hnF Ԯnhkfuff `[5Gjnbgbi\m.Q?`3<    =؉ˠSL@ C QQ{z@e00- 0 {zz{QQM! 00LQQk QQ 0{z%  00{ QQbQQL {z  00k QQc QQ {zE݂v <<>Gww|&xjUt=N,BQ?F ;  {tqzu ~z t 44 44tU t ah w$$Tj Tqt{stoy$$$$tqT5 T6 $$jj$$T.T $$"Wn|`_]#v:[vVi\\iVv6*446Y Tq u܎v#6]_`uuu0n1W@^;Y  TT`4S2S@zyrrrrybcyjdK  djyddysqSUmtvwjoXV``VXojvwtnrry@dd5 ybcyrrUnTddUA??BnUU'&UVlA?>CTddUmի3STk@< ?BUbcTmԨ'&"J,>[KQtd_O>Kj}|},D!/G  #  # @*!! @i##flA\3T3T K"~xF͇F6)-1?pWSRWn?=%(EUmþBB_XS-(mU6EF(%=?VXp򎬇F˞y\&sqb]NENewdG&NS6}dNDwO0]bqNñџsSe&GF\}w~vt:4+q4CKtېE,- 4dYztdV4VAlff,,fflAV4ST? Vi?fflAV4K 444K 4|+fLdUS55TTd..Ġ ..||eWT6LL6UVe[o!"m\à B)%h;=h&)CMe0 04Vԙ 4 4S? 4{}~bx4 T ԪTGkmeeBV4@? h d h d Trrrf >l 4B 4F>l 4B 4FT 4F h $@7_H,`djXg]SˈScfzhebpR3^v"Om(;.?GdFjPyi7voMyyy4 @(!?:::  (l T@bTz|@>f @4 /{pkgGR[".__ušȟmNgG&߅ȂAP_ATeAa6226^%OLJnpsosxZWS]{`lcmcbnXzyY\a\^cbhnnpszf%_whY+W~ cv͉ΒИhv9!݉}t{D$p_Civ9U:j\ik==T6N#-j^AT36dC@,*ݶ8Q_39*w:8XkEK[=. =)Ҹưչtz}|}(JC9_4K4'KT,T" T(  N;Nh[NE"sxt .6-f.8CW8 orkOb.QE-]]d Md*SkC t& ŧH(PSb_ghPsY6gWb7E9@7M(m"mhhooi)^ u{r|sv>(T+J~ff~JJ~ff~Jv  O ^5 - [ o  mTT{zTTs_ TT TT c 4  g@@ To m To  mmjingr;<7 M7#?#77 <:fimU B4@ V7)0[/1/^//10#sEAA*,?m6"mF=(G`$.ƣ 0 a ;;YS<! / sjiel{ppmoy,,yrrUg[giyxtq]um~~~~mu]qtyxgi[gUrry,," omu pp{leijtt! vL TTL @u^9v:p%"M$%MڑhiL L TTL T&&&&@;$yz%:@ %% iT DddDWXYV_lw}v~v*AdDQ yo6$7n ^~ )?cwrvy~x]͈}|*YvvTF +TT? VԹ TT+V``VS? V+TT+ ? V+TT+ ?   XvvuuvvHNNHHN> +   1j j/V qV qeU>k.) $4S4 T ˪TGK4ime,,~V4T? #x:4tT.H pFF4KqHaZxuuvwtD6O'xODwuxaq\_ II_ \DD$2?? nzykjstz{ztsjmy}z{JlQeűťž̛{yn׭|zT|WT` t4`Tz| " tFTGtDts" 4z}|yt T ty}s tT4T> F N[cG=B^60 QEEQQE ]uI7#e  #7upjj_pB:' !5ܾئ_Wc[7+447q  5!' 7Ep> m;4U> ua[w RҢ&> & RD[apdu茆+ U;4mph]@ @h֦tFt  K=t B K $4 (@twT3fM V``V}~d3fTw@t(EQT]T)T' K5! O h@@h5 t{ T  .4\ 44\ 4:Bpmצ^ \tEQ < 44K&T/T+ttT4 T/T4 T/ t#"KT|zKz||zKz|GT|zKz||zKz||zKz||zKz|3 F,d @^5 - [ ?t#"3 ">,kST?  K + K ԪG+*G^UVT ^- [ )j L WWl2L 4  T05 4hZwrrlZZrrwZh4 !"""T[ 4^ 4̗ 4  Tt k=t4 4B k )tK +4Kk44Tt+kkTkTs TskkTkTt44Kk4 Ftˋ |g>DRTT˫kTTktkKh@@hTTi  Tbbc c 4  C b [M Z4 }]  }] ZxxD tI I D 4IIt] }YYY D I D I) Y |zY3C4KGfF .K )4ԏ TgTkFGT Ԃ `t4+V`@Ӷ+7_ 4 Ԃ TG TC3t d_gg_ d4 TGTT7EQ7 ԕ   Tu NT@"RDEQRDEQb@TT@QE`EQXx ~ 3C @T5!' 1(b '&G h !*j4a,t{ztC8qbbb{y{x{K  t44t) ) 4\<-7ʗ7-tD&c+zi0&H. 0,-##s& &2iGz@@RQT+c& &t  ^ d tV``V V`T* TTTB 4 & )^ |~aiEjVulѬo70 XDQ* 47mGGT4! & naxjigxi j(C(jgjixhi5'=='5G7 n5Y'=='5YihC ix7 T^ .T7)TT@ TTp TTCR TT< ;TTD KL M Cyy p< ZE )j ?p G  t+t  G 4  +  G  HG  G G G `++t $g f `d g pjM Pdioo '.X@Qh  @P  s]OT4 T)&Yffff zM{yz zyz  %tJjZ!! !"и$yf+/YkzX,Hn|}1d Z\IێĬ TTTpK =b$tO) 36mUzxwyysqggKgywxzpTmӨ'&h~zUB>>CnUU'&TUmC>>CTz~p5 y 7O) 36$+= } K6 Khnnh T- [ Pt- tohhonhhn S3@ 8< ;|#&%6Nkj3hW@x}pU3@ @8< Y;|$&%6Nli3hWy|p"9Iv]Yfh{osjeV]]nw uKJQT*FhltnݖݘƎqDA5%!*QTFhulstnl_a99:P~݀*Pk9okթ.  ]]  DjD D$$DB ?CI9..9~`n  S AENB^  T% 7;L9\XpqTT^5 9 $9 j # 4@_ T+}~| ~ knr]J'V{ke{ohc-# /&|~T+ `t{yS;RQPIODwt{K6Ktqn;<-y y =vvkhF@8h !!0 ZZ ZZ0%  !!h a!0 %  0ZZ !!0 0 % ZZ0ZZ !!0 ZZ 00% X!?6IY(uC XVYx\b66 PeSGQGz5:5'DN5(TKKT( T_ 4O~~'1 A3ZpT2 T7׷[v ,9_7XT5  / TZA1 ~P' ~e Q1  Q1.] TTt / F ]]9 kV Y CyyE 66% U TU TU U TU TU sL -w|a99az~zzw|33z}zz99S h <<$0K_|h)!LNMMNwK=KQx<rCu)k,##,)CrrutturӠ,#ˬ&~'+'}~~}} 4 4W+W 4 tl4}*UJ*d&?K&>G5#p)q M)? ==BRippiip!~b^^jcjc~9?>99>?9elleBel9Ble9Bd2222v< <e   h &]&8t#4#4-_G_G!r 9*Hb=gh`̀, ް5-"MM/8(x,(90KDzіɕOTOm̀ցQ\Y5Yy{))+)jxYhmG{IUsV7=o{vu! z'f@o&d1caaPEb4"f|aunO鿦ɯ˱nno5.OB\WQĦdRۛ~-aOpbKI2C@lU[s^Yoc`̄ƃ~ƒΑ~vD,@aD1"@3byЀѐl"k"rbsIr3p1o1]_qewG1('$:er)n'y*ԧӥؘؒ6;2]zt[uns PDcl|P~_q<}Nx0k<Nh pti"d-"`#69VѺDMV"TAK$ ~tW  t~~))~t  ttO t~򕃘t ~~t =t~qqPV]]tסжihhMD;ZQuItI[nt]FEQZ-[+@@*e-8;@@4uvǹߤ p7ZYCYCq5( >>>-r>->j7)1auabtavzyvvzyu:uzyvvzyvLR]]SBR]ĸB]Sx*.NZwR]ĹwwR]ĹwǼ|CNGCCG|pNC!C,313, q|]RS]^RBR]Ĺw$䔻kiᦿůI7Y=+kt}n~x?z}}}b;u{{~YP KS{TSm{qiTAsFGKiwzwo_ewkjZ˒lshztu|Цyu"5@'\ϊ؊sqٱ.&7e}|_g͗5|qD|unlaK]~diqqquzw|wʎó^=~Şv}M,7QupzTS(pzKYNGJ b/ѓcctup4K6gp1zyyr7Y}{w\@wxFis}txyoGqt sp^)X)iz=JFdf|oL{1$+#~[G0`SQRne*wXjsIx[Ͽ^d7,vX9 ZY deҦt.tE##E)o}}4u{zu\ O#nWvZh,lt:$4Zsj{rglb1XldvG'bQ^{yqa|x|{jjs}.Ӣѡ?IY–Kk.#4)sV 1| XRf 7n]Mw]^}ǟxwVo] ytyywyB A'!3EMM!#] ([B4WtImnxWxWtIWȇ$rzӎlQ3J>Rq_(%vv==)G/H{uAR6=zkwlkkwllaelj{RI7 A5ifsgffsh./gge0lF h miE#=[Z\Z#=EOiNQ@QyQ@QzE&}9ً܉{H[1N[GCJۋz"q*g2EKa"81&*a/rwxrrwT(v]*I0330H4Tz| 4$T|W2 T 4$ T> ~~TzwwvxT24JY 7 dp~ F47zw8,lr7RZ(x[ts[{+;f DK^Fxukrlqv}K ?(&PX+)#JU ^mmm jgenyiYW»ëP7iSպԤÎ˒rSppoG.B%r tTtTO4) Zdz{ IT4+. ^ tO*K+Z q ^ C3,L)4՘ΖT˫KT]HAF-"K g_yz}>Q~{{~؉}zy_gK飳ܩn_ZZp_bn:vkbA*t%ndʋ̫44m4tbm++44kkLJJl.d |{|8S"1ÞH=|}}6TV5wSLTT=g}}RIcZYccYZccYZccYZc \pcdwywxRj.j.Rcoͭ}t qZbZZcbYZc\L gSVIm D k.L.k?+llH\\HlZ釧鏼0K K kcthjz{{z7LvvK7isùĨwлQahaahhaai?Ul[Ĺ]SZ +)**MOvrqvvq 25 3 + qv6!Mr342oqv* !)```NW{WM}|XLyR]^SS]TTVQ~ùù]SS]^SS]WQURTTl 4''tTTttTTtT a`aa`aMk`|8aMakap`a9M<97Ba|8M97Ba|gg[o+@+CG%:`dhbgbۏ֯Ȱ:%G?G%;adhbgbN;%GH 7@ Q Yr3FZXaXxwx_blkx B) K%Lo3BJwu~kuxuk?Oz!xyxvzAY Ϲ[Djmhl|{{̡ԡԈ֊ j8ч5T&9E Z$j@b<r(B{]<6TY uZ|iJC^E,g_zsyubՖӪu^@q-1ݛzJ1jI1jgTiԻ EY}MF{M`@]~tvtz,~@Y=U/0Aqtתdz}PPxvtnos~}mzVz-cObPru[N S=)id<&li@XsŒՍ0ZZ6:3W4U_U266WBN@ h[aj6GUv@cLj^HI,+T(jjc+,54+,mmZZ;ZZ۽+,33m0vH9*/o⩩+,44>4 q{7$//)9wh 0m+,54+,44,,nZܼۋZ,,>'l4n,,44,,44,,mZ;ZZZZ;Z+,/o-D/#5>'}n00nm,,54,,44,,ۋZZ;ZZ+,jJѲ"^ z}i{ѧ錐zss^myzSvnnU{uuwz~˜ڦLvewe :rnwt]R{ϝȹ̯\jtazm|}l~~nh~uN?MamJ}fg^%llI%uXBlznxj|Z6{&1~\NULܿI4'6kZ6nNwauT t  `77lf,,fAV4 O W?tqB B B 44z @t 5 - .j <K T DK T<K T<K y}}yKy}}yT8:8y}}yKy}}yT8ttpfeOefxxxxeOeffeOe8  *`7Q `6w% Y4W%*% X4j%1g6` Q7*` D4 Y%*&4 X%WT#EE#\[^hnT^\z.}TNNNiYT}||||}TYyi[U\`uTT + @ 8TjMQMQMQWm[FN$l\TT{zzzz{TT\vl]X$FN\vl]X4[^vTtR TtR Vo8>A , '>&&2uQeGWn!eq=s)b?ɽX/c o E`(yk2@ /POlAAe  e1j*.Nz+8a{z{aY%#y=<==<=<<*```^+LPzlX1Az/-6D&@I`_B   4 4!3}|~jk/k;j:/d;jkjL`,Th uY54Y\55\Z56\~  q@-& T| kD>m2W._Z8nE 5<hLhLQRSu'/>0Agz8(ҒӑP0KC'ZL{o_uOn ɋ#xW{D ߥpBdȋeE)3 +57wp 44tT~  ~ 4'V . ; . :44 VT K. K. :' taXt Xta_ &'y&'Y  { Y&'{ y&'{ bKHJjp̃Έb[ aouwr~'89{={mx<*e>okjqpi{AR*7}xE|}jp]VY0-|xpaime{}ld""p*}|blv\&A}xfa)! po"_m3m"3s¿8~~}~hs׌ $zctc^_Pvv~w~yf{h{ Z~}}}}}||{|Z} z}{10df}itj\KMuTuzy~00h x x x <  !a!<Ǒml D4CPWhЌnjʕ|vw||ryIs7h3^1c:gJlXJU>]wD&_nr6Hgdalor@/K&``m}",y }z~|{@Ë)ҧ̞ȭBO`)y)o3hm^Zx:< 4i 1J{z~v$${z~J1 E8)3y{||y38)E1  4gVQG ?33A HWT! 5|x$5!~  4t/|h7S.1l~gd`;!Ъwgvph   4'TTT(5!' 1     PfAV S@? i lfPzz $d '44rn99l>SO~~zz K 4EQj1]  < 44v{v}JJ}X}w}vw}Xe}w}JJ}wevaʁӎyLzzyӈzzyuYaaff6&̶Q HyA~`Dޟ(#PgQ+<3%!!!S|BDMhߺ ђ.-.-.lHs-U7sH<JJJ?H&Urs&l~v~||||~v}~rrrr}d ^)[OK0-npq D:)rJ?t~rIFo9$"%9/iüIIR^rdclmkԧ2*:8)0\pFN[BA\ŸghgGDDl)3=A t D jRVVVTPQSyVVV:RjVVyVTPQSVxVVyÁ•VVRjh@@hh@@hh@@hxmŁyVVjR W FPp6pFM W%%%%v|y*|8 G}AIrw-u\? 5'p$ PY84I5K G3#T1!I%>HGUB&- -%bbd&-JRprvQiu,t~՗Ӣ9RMgĬx{}ާEvhrjplJ- ?&n@5dbbI,ueui`M6 fXPljiijlPXlf`M6`ZiRuL};pommop|;LRZM6`m[[ƗM6Ġ|}+vjS&zzgMRjhed9oICAA~CtIo}d{fxgj ;v+Iz5&o? mjhĬ7;jjjjjjjj D \O+:xOa_UTS˄@gftXRweWWk :{z{zzy"J<%wly}jhw|m'!+\! ոϡnMbx7tttpopyjef{m~ Ǻ iii yzyWuf^ V]g`[[f_\ `Ujf#b'^jTm4=yBF$3P:kS43g߫ޯG@pFAw@UMMM%O&iWtLXU_ogBF bWR?d/yH(#-:=;ra``^_^rrukedA~ R?‰“wnmm(?+RVB=jȕwS<;QE>?F X`X4! 55 pqsa_^U^HKʲJpwm7ųu~`//:q~iykkkkkkgfhopypoon0 +(\fmjő¡CB{gtzldg{S)ik-z/Rɮ٫ސq,Þ2=5qnYVL9+3zZ$;;#}MwzVqzvy^oyzzUggTUT¯¯gT{fggTgg¯ggUggUTUgTffgUgggg!Mm#[8ICnyy|죢Ԟ[TI&%7w ~~Tvtsrv61psYM w wpv~Tv~tsrvlUXqsk %]ra ;;YS<! tZ  t66I bXkC_}g555333g}cm6ﳽmv%f~~O~~~a}g767/./h~bn1lp.[Rh5kuZi/4oe ^Wf7h7jvWi'2nfz#zCpisL2r@;pEVP<Q;Odlwm #>m i ƭ4tt ttTtth 7>jVRH %HVjRHR>7E##EجHE##ER  ++ +  heXuS + þuh  + ++ SXe  %  +  9/ː/4Gj{fj}^11^rt|qj|$$P|jBGrbrrKK& j Sˤr(Ge~1~w~~w~1zz0v~ 0KO+) 3ET= @ +3< +~w~10  ddD mcFr@:}77:@ڳm-T0>2tM2V33V2Y&Lt>T0-KKKKKKKKTtQTQTQ@2 gn~QTQTQ$2  H~HfW T gnT<}~} 2TT~}</  O4tOf Y:YY%$~~$%YY:YZ$%**44ool8II8oo44**%$Zu*  +  uHd8lhTwwvym\_u5^/7hVfJC22C=+JVhX[<*N?Y3: ]#"S:Y3N%I%%%%F%"F%F%"mmm%@5z"mmmmFFVmyjjgwrPE]}~Su8ӗ)xm6 |uw}un]~')kp{u~ y nkuptogo>4y}Ϧ)Q4  gyr=7TRyytvz3*WJttx~8tA&ysjmm}՗  v\ T 5d 0fg ( eepZp %$ B((BP! (''$$ GG(GGs$$zhl?9%$ _{_{W 2$ L L L L L L EQQEEQQEL  b ~$ EQl  lT^_|_j-Z7BG:?)_s:y8CXccs{~syyyyzyoto֎~@,="H(`dine|Anq˗NJܨ,+@מaI Ɓ8%m^9^9&^5 LZ_mOMrqs7bh%7fUiU>!Vvj1 zA@LF){B90kMKpo}q4^i4c2!b˱̩,|l-ƒs|eW"}fڋ\GQ+L~bGDCd5.26J:#:t|mcUJmopmvn]TB4B@Dd$rvJL88˿}~=.|Նs=xzo<BY$lŖ›/¸le3k{ut~irgk{ut(ӥ`xnqx}p[!T77:_\\]k]: rZwxo_(|MfmWisu͐0|u~Lvkcpy}~uz{y\ƊosTuwurl{~CBm]SbVBMjʞwywkws~~zqXIHI}Ons@WJ-E`Ǜx|}jxĨ@6'r[vyo_|MgmWisu͐!t~~yqWIHI}!?|zvYaOD Vhx/Ym1V:FMFVmY%0DF/bbF9@O)nH4(nO9 Y"Ω̵i&L̔+`~tvqazpubw& SJZu\ek pkfY ,F):J\^GZgmn|@~~rNvƯri_z{wow{vy}psV1}nso(>}>ptlN[XKH[ͨ>"?4'::''::',Ah"ttLR AS1 Sc1J@ֶgLXpjZ  =PBBPOA AOD=̹|ͻMV˹$QG̟^ͫw_BG.O`IΤwϓRϺT}c 3" @"7<`ߊmQ1ryt 8spvu:@rfqvu:@r_F />L6L!+Ohhhh[Nc92;1 y,((, mm<}nik<ytgn(Bnlmv2gW@TPQ~wezuEu@ :PBBPNBG=_"Z*y@u!_M"_HDJiQwrSrNG2JDt( w\Dx]nrTrN:BNcTX.]^ggTW-|cQf@+((+ll>vII<5 YaqT;Qvy{QŷbZ Y`qT;Rwz{Q9RIPP(*/inW|ϊL/b\04]O__@@e,l,} v)@eiyz ) v?n ?r4 or^{g=Zip *>薚=v*0n 9 r3 os^{f=Z@ip E(J-I4i^xz xY~**)(!= xetpq@tJ͉yiiylHXzdipsl_~UGJhsxyW9Yӿwyk]]s}zw~{mh7k>Yi{ ztdYgrn|oM򹓝gptx*kSk*kl1wGb_]aTfvst+*r\zheN;h_hg__hh_ilu~~$rfP|KEUfav,ɼuaaP@YT@A  ~@7뀙v~6y uT4*<씒>?DB(DD(BzD)ANZȼxȼXN=h :jTRR;;PPQ2<;5 ,$()MU]()++\TMqqz΂34ypm1 .oQke^ 'uv& ^ekex#B9o=9B]:#/ݠ"\&"iRex hB RXD@ _* pX@RchE:dM+A * [ $qf]]]U9pttp.ptqtoq  AA lL6HpAOYKI++srs I0"/rIHqqIHrﷰg(7]F$ gVd p'7)28]8 j @ j j j @o]" -]" -]" .\#<]i|i|i|j|6 6}66 Fٯ 6Vg <( gwddddd;A A@ !A@!!@A! @9ŵwvmQuLflD^A94wHMZXaǂݏ,|) *) )* )* ** )* *) *) )[OCPZ[P55ZPCO[[PP[(ǻ@:M`edeSO[/:~~|yw{ >g7.iczdfptð+&4R l^vQBR{xxgd~y</Rc4jc'^dcvYXwrlO[MOO[Olr}twXPYv@c>kPS/k_`bjpN1kI7+447 c uU)4S'-{:d@Gl &zzEwvlmulchr]t bFs^[XVvN;mЋD1 %/O,jF?j}yykDjDB'wsxx l DjD l _>hjthhjbgSgT.  T譁bjh>n_KD;Df `- l2+ f suS&yprxo)nrR/Eoqwn썍c@ ";;dxpXBB}tq۽<Tdmlsur|jtZ ttq tt/t H ]] )\<A 4j , {uNvQ*33Q~Fu{uv+NR-XvT  vXRX, *6xllsvr}jP i )[=)R~[~w~5-!/5 A "~v_V=)[P -uqu f!D! }qquur|jtZ ttq ttA tt/tì|r PZ<:~ `Zvg $gJAv<ֽYi}=af44 )5Mk4444i ; ; TT; Tl T qT TH 4Ti T tTsR@6{@),\,)əEQT qs IIs~xxx{?+)])+8s~T@d Tj k F T@hh d t TTTTT//TTTlTT!5(5!' 4a4a4`Dqfe2sq4eessfjoFee2o2e d ״( ¯#wmݿbt@r|kj>Slst=Sls_tiqnv„Ņ3I`QnN^DyagTQ3I`nȜn;((5;!!6ryPqhn}.d9=k%)}|||{zvvuyyvvx}̖ҹ֐acrppxswzn}{wvvDӍ⟳͂pTlZxeyR{o|WbeVHquOz|n*)j4_SnNe]_\]“†gwkrmn nny{ʼnZlvTdp@JI4X@^xԉjwvw@~ny yorpmue{`nYnpr@^rss~~xvvyv}yuwz{{|z|{}{x}~yz~~} ; `ˉˬ7y88Siˎ; Lp` d|jK='t<[=: Yvk2 OTV0OUƀF ԫafob~hF Swk9&&  gY8>%˻XM,ɾYMr}QQ|Q'%`em_Jppuiuzzwɺ˿gYv*ʹ%q-u*+?q8$@q+ )5x}2#xww;Q" 7=YjyJAkttTtTg[ MCΫ MC1NNgZ´[VmJJ{K/oqwnb= ѵvj+^ v d^]  Kb[Քm)xyx^HCii}l\NJp" #kkgk ot c7/{{{ v zf+!v lln%0 ǓEt^+jffllɽYM{{}.}PHT/7qͻ]H{4cycq_MYɛǦsjZ\ !}Zcdznp% 0DRɹXNMTYNdkdEXÿ!0WV~Y6R}XcP^Zt|z+ za   }z!~q{yzp~"{}~{=UP? Q={~4Z]41YW36ЧubQEd]"+T&6/V,' t D 44'%YT84 9|2'8 (%XU74 9|3'9 4D tt++UUttttC<<4444vTT UUttttC++<<44f aJZZZZ44cTSc++TS33ZZ D DORKPKaXWaaXWaaWWabWWa 45! 54! 5 4!-..-......-..-..Xcccccccc0ɂь8`a@aNdC9sbccc@ccbcX9XE-JF,bH5@Y&nË49HbFs̷N{R{ `_`_`_`_9''''pqD-A&aa-D`qX_1`AMtCC%&*)GGbbIc~c͋%)Gc͋cBս_h 3PD33DD33DjKgl:VF_-zMWSRn\nnnn\nZECSSnn\nnӾN+F:g˝VC&&ӋlgZG%%GG%%GG%%GG%%GP8 X@ 6DD6srpsG4Tmmv)t~̩vVJk}ltu(vumm $O?$d`zw~y8Mva\tiN߶܎`4s~nkA["gwdLaG$lΥэv~{ҊꅮK-5%L .U |肙i54_:vxH|Q̋yPBCĻ*O8Qz }y2!v/>>>H>8*`F"]E4ѡ+E(7S\t"6% Ws& lhf%H;F Bdx;s6S: 6Sq%u?K La)an  Y T |z TYTt4 /t  KWWKKW#1bnZyOL/õB+ h'X=-k7yS[rWmK|CO]ew,i@RF˿WK7]o(Hq(H\^q(H(H_]Hf++AP[sHr8{3QB%W  0%$;K0Qfui{3iHw^Fyl}l 66xtm|cw&LL+dtjiJ4qq˚|O)xOpYpZ,,pWwT,JyIE7wt4vQ^6_ d tpK K Wl j T )  T )  @l TtTKtZ ttq tt/4O4 6t# +PPPP]w~PPPPQPQPSPQPQ[ k# ]w~PPppiP# f Tt 5 - .QQj 4tT_`b#v#b`_yyE Ct33| V22VN ' !!yrr0K+ -  !!e+vTTTrryy!!!!" @  yuw{{{s{sqvwl zz zm m`mmf t H @> 222%%WBS qg@\LP{|@)҅%i@@@%%  \h<;v-;ݯ].Sg9GFXVi_d:ftl\mM>U:\!-B o-Bvˌ{bє~8wp@  W]k .26:X\gnu"&*/?J~%)-1>BF  $K5:>*.QXr{  # ' 7 E K P T   * 3 ? X k v z      ' < Q Y ] b r {  & F P l z  $ . 9 C H [ c l o u 17<BHLSZ_jp~*@LQX_dy /BU^cir{(-3;K[kqw $38<AO]fty (4@LX]dltzfAV S@? i lfPzz d 4 T" 33T& l ttpK K Wl M  !33 )  33 y}}y 33 hnnh ]]]]9/ TS 6  V. ? C <  KTGTKBKH K\ b A _   RI < p R ; 5 - hnnhhnc }y nh K )  | y}}yy}}y] w ʆiimdod $@~ Kz&w{yyw}| |}xz{wa&zK $|'˒a %%%%%% 0: . ++ z||z ff} lTlTl Z $  }y ! T  [=r T , 0 w  +Z +q /+ VT. T? @h`h ^OG `E}n\>lF  ,*T+ |z@z||zTz||zz||zTz|Ժ @4F v ] b .j]^hYE֊ׅB ?Gߩмqٴ̟'(͔͂z'w!q=wVF7HJ?xs]C$ YPffEffM } 3CC N W} ' K& [  T%    tkOE;wOVVOcZwE;ɦL1H:  > 0 v !   1 TTL / _^X*D44D*Y_`t! ^ATT TT @ 1 | A j  lnl||}_zob^^bzM!a>9U G @M V``V}~d3fTw@t(suwN5~w}+}PV o {zF ( rcrr 3CC3 jih  '''G  *K+A zz 3')x~D&l&y;; Ky} _Ib \;COLD|yz|ru{A0% !h ! hn  r ] EQQE  1m M ff} 'T6 + 6 C3 5!tV`l K Tf( _ T+ - T  GCC8=<<8CGC V``V  :nh O: Q Q ! &&   H  z| LfeNzyz# u"=1?u՗  8 9 \buA Kxxtw~   BTH K\Ti   1 T MY;/a3 g 5} +   h & /]]1a nh e  ZZr g+ vvo @ ttttCTR tt S u4u {zu  -<<<< t  ; [8h 2j %% ~w~~w~    ;`L< xra 5 - OT   d zz   44  *<씒   yT +   ɷ ,$P++ 5 !4 e    }y  T f   zz{    ofZedZd H6*Ö )Wbit &m/ nh  Z   @  inc/external/wpmu-lib/fonts/fontawesome440-webfont.ttf000064400000415734150211770060017001 0ustar00`FFTMn2GDEF'~OS/26y(`cmapbgasptglyfɁ|head `6hhea j$hmtxF_ locav|maxpt name3<postvwebfaUmQQN wC33spyrs  n@. / _!"""`%>N^n~.>N^n~>N^n~ / _!"""`%!@P`p 0@P`p!@P`pd]YTC2 ߸ݺ w p7!!!@pp p1]!2#!"&463!&54>3!2+@&&&&@+$(($F#+&4&&4&x+#+".4>32".4>32467632DhgZghDDhg-iWDhgZghDDhg-iW&@ (8 2N++NdN+';2N++NdN+'3 8!  #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%=M%+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3%    @ :"7..7":6]^B@B^^BB^ $΄+0110+$ (   t1%%1+`B^^B@B^^"'.54632>324 #LoP$$Po>Z$_dC+I@$$@I+"#"'%#"&547&547%62V??V8<8y   b% I))9I  + % %#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[   2 b% I))9I '%#!"&54>322>32 &6 yy 6Fe= BSSB =eF6 >xx5eud_C(+5++5+(C_due> /?O_o54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B^^B@B^^/?#!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2L44LL44LL44LL44LL44LL44LL44LL44L4LL44LL4LL44LL4LL44LL4LL44LL /?O_o#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88/?O_#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!28((88(@(88((88(@(88(@(88((88((88(@(88(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88y"/&4?62 62,PP&PP,jPn#$"' "/&47 &4?62 62 PP&P&&P&P&P&&P&P#+D++"&=#"&=46;546;232  #"'#"$&6$   @    @  rK56$܏ooo|W@    @   rjK&V|oooܳ0#!"&=463!2  #"'#"$&6$   @ rK56$܏ooo|W@  @ rjK&V|oooܳ)5 $&54762>54&'.7>"&5462zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL/?O%+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2`r@@r@@n4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632Ԗ #H  ,/ 1)  ~'H  (C  ,/ 1)  $H ԖԖm 6%2X  % l2 k r6 [21 ..9Q $ k2 k w3 [20/;Cg+"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@@`0 o`^BB^`5FN(@(NF5 @@@L%%Ju  @LSyuS@%44%g5#!!!"&5465 7#"' '&/&6762546;2&&??>  LL >  X   &&&AJ A J Wh##!"&5463!2!&'&!"&5!(8((88((`x c`(8`((88(@(8(D 9 8( ,#!"&=46;46;2.  6 $$ @(r^aa@@`(_^aa2NC5.+";26#!26'.#!"3!"547>3!";26/.#!2W  .@   @.$S   S$@   9I   I6>  >%=$4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2&4&&4&&4&&48(@(88(ч::(8@6@*&&*4&&4&&4&&4& (88(@(8888)@)'&&@$0"'&76;46;232  >& $$ `  (r^aa` @`2(^aa$0++"&5#"&54762  >& $$ ^ ?  @(r^aa` ? (^aa #!.'!!!%#!"&547>3!2<<<_@`&& 5@5 @  &&>=(""='#"'&5476.  6 $$   ! (r^aaJ %%(_^aa3#!"'&?&#"3267672#"$&6$3276&@*hQQhwI mʬzzk)'@&('QнQh_   z8zoe$G!"$'"&5463!23267676;2#!"&4?&#"+"&=!2762@hk4&&&GaF * &@&ɆF * Ak4&nf&&&4BHrd@&&4rd  Moe&/?O_o+"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2 @  @  @  @  @  @  @    @    @    @   ^B@B^^BB^`@  @ @  @ @  @ @  @ @  @ @  @ 3@  MB^^B@B^^!54&"#!"&546;54 32@Ԗ@8(@(88( p (8jj(88(@(88@7+"&5&5462#".#"#"&5476763232>32@@ @ @KjKך=}\I&:k~&26]S &H&  &H5KKut,4, & x:;*4*&K#+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G< _bb_ 4.54632&4&&M4&UF &""""& F&M&&M&%.D.%G-Ik"'!"&5463!62#"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632&4&&M4&UF &""""& FU &'8JSSJ8'&  &'.${{$.'& &M&&M&%.D.%7;&'66'&;4[&$ [2[ $&[  #/37#5#5!#5!!!!!!!#5!#5!5##!35!!! #'+/37;?3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3???? ^>>~??????~??~??^??^^? ^??4&"2#"'.5463!2KjKKjv%'45%5&5L45&% jKKjK@5%%%%54L5&6'k54&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&% jKKjK@5%%%%54L5&6'45%%%54'&55&6'Tdt#!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM ,*$/ !'& JP$G] x6,& `   h `   "9Hv@WkNC<.  &k& ( "$p" . #u&#  %!' pJvwEF#  @   @  2#"' #"'.546763!''!0#GG$/!''! 8""8  X! 8" "8  <)!!#"&=!4&"27+#!"&=#"&546;463!232(8&4&&4 8(@(8 qO@8((`(@Oq8(&4&&4&@` (88( Oq (8(`(q!)2"&42#!"&546;7>3!2  Ijjjj3e55e3gr`Ijjjj1GG1rP2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03& K5!)V?@L' >R>e;&L::%P>vO 'h N_":- &+# : ' +a%3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$ $5.3b[F|\8!-T>5Fu\,,jn OrB,7676'5.'732>7"#"&#&#"$ zj=N!}:0e%  y + tD3~U'#B4 # g  '2 %/!: T bRU,7~}%2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6 ,,$$% *'  c2N  ($"LA23Yl !x!*%%%% pP,T NE Q7^oH!+( 3  *Ueeu  wga32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6 ,,Faw!*' =~Pl*  ($"LA23Yl  )!* <7@@7<  <7@@7<  pP,T MF Q747ƢHoH!+( 3  tJHQ6  wh',686,'$##$',686,'$##$/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?%#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&/?O_o%+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2        @     @   @   @   s  s    s    s  s  /?O#"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2     @     @   @  @          s  s  s  /?O#"&54632 #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`      @     @   @  @     @   s  s  s  #"'#!"&5463!2632' mw@www '*wwww."&462!5 !"3!2654&#!"&5463!2pppp@  @ ^BB^^B@B^ppp@@  @    @B^^BB^^k%!7'34#"3276' !7632k[[v  6`%`$65&%[[k `5%&&'4&"2"&'&54 Ԗ!?H?!,,ԖԖmF!&&!Fm,%" $$ ^aa`@^aa-4'.'&"26% 547>7>2"KjKXQqYn 243nYqQ$!+!77!+!$5KK,ԑ ]""]ً 9>H7'3&7#!"&5463!2'&#!"3!26=4?6 !762xtt`  ^Qwww@?6 1B^^B@B^ @(` `\\\P`tt8`  ^Ͼww@w 1^BB^^B~ @` \ \P+Z#!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8 pB^^B@B^ 'sw- 9*##;Noj' #ww@w "^BB^^B  *  "g`81T`PSA:'*4/D#!"&5463!2#"'&#!"3!26=4?632"'&4?62 62www@?6 1 B^^B@B^ @ BRnBBn^ww@w 1 ^BB^^B @ BnnBC"&=!32"'&46;!"'&4762!#"&4762+!54624&&4&&44&&4&&44&&44&&4&&44&&z6'&'+"&546;267: &&&& s @  Z&&&&Z z+6'&''&'+"&546;267667: : &&&&  s @  :  Z&&&&Z  : zz6'&''&47667S::s @  : 4 : r &546h!!0a   $#!"&5463!2#!"&5463!2&&&&&&&&@&&&&&&&&#!"&5463!2&&&&@&&&&z&54646&5-:s  :  :4:  z+&5464646;2+"&5&5-&&&&:s  :  : &&&& :  z&54646;2+"&5-&&&&s  : &&&&  62#!"&!"&5463!24 @ &&&&-:&&&& "'&476244444Zf "/&47 &4?62S44444#/54&#!4&+"!"3!;265!26 $$ &&&&&&&&@^aa@&&&&&&&&+^aa54&#!"3!26 $$ &&&&@^aa@&&&&+^aa+74/7654/&#"'&#"32?32?6 $$ }ZZZZ^aaZZZZ^aa#4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa:F%54&+";264.#"32767632;265467>$ $$ oW  5!"40K(0?i+! ":^aaXRd D4!&.uC$=1/J=^aa.:%54&+4&#!";#"3!2654&+";26 $$ ```^aa^aa/_#"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%&&&l m&&m l&&l m&&m ,&%&&%&&%&&%&#/;"/"/&4?'&4?627626.  6 $$ I     ͒(r^aaɒ    (_^aa , "'&4?6262.  6 $$ Z4f44fz(r^aaZ&4ff4(_^aa "4'32>&#" $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz@5K #!#"'&547632!2A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K5K #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#5K@!#"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'5K"#"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K',"&5#"#"'.'547!34624&bqb>#  5&44& 6Uue7D#  "dž&/#!"&546262"/"/&47'&463!2 &@&&4L  r&4  r L&& 4&&&L rI@& r  L4&& s/"/"/&47'&463!2#!"&546262&4  r L&& &@&&4L  r@@& r  L4&& 4&&&L r##!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8#!"&=463!28(@(88((8 (88((88m5'%+"&5&/&67-.?>46;2%6.@g.L44L.g@. .@g. L44L .g@.g.n.4LL43.n.gg.n.34LL4͙.n.g -  $54&+";264'&+";26/a^    ^aa fm  @ J%55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MMO4&#"327>76$32#"'.#"#".'.54>54&'&54>7>7>32&z&^&./+>*>J> Wm7' '"''? &4&c&^|h_bml/J@L@ #M6:D 35sҟw$ '% ' \t3#!"&=463!2'.54>54''  @ 1O``O1CZZ71O``O1BZZ7@  @ N]SHH[3`)TtbN]SHH[3^)Tt!1&' 547 $4&#"2654632 '&476 ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D# =CU%7.5474&#"2654632%#"'&547.'&476!27632#76$7&'7+NWb=嘧}(zVi\j1  z,X Y[6 $!%'FuJiys?_9ɍ?kyhun(}Vz YF  KA؉La  02-F"@Qsp@_!3%54&+";264'&+";26#!"&'&7>2    #%;"";%#`,@L 5 `   `  L`4LH` `   a 5 L@ #37;?Os!!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@ @ @  @  @  @  @ L44LL4^B@B^^B@B^4L  @@@@    @@   @@    M4LL44L`B^^B``B^^B`L7q.+"&=46;2#"&=".'673!54632#"&=!"+"&=46;2>767>3!546327>7&54>$32dFK1A  0) L.٫C58.H(Ye#3C $=463!22>=463!2#!"&5463!2#!"&5463!2H&&/7#"&463!2!2LhLLhLhLLh! &&&&& &4hLLhLLhLLhL%z< 0&4&& )17&4& &&#!"&5463!2!2\@\\@\\@\\\\ W*#!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\ @+32"'&46;#"&4762&&4&&44&&44&&4@"&=!"'&4762!54624&&44&&44&&4&& !!!3!!0@67&#".'&'#"'#"'32>54'6#!"&5463!28ADAE=\W{O[/5dI kDtpČe1?*w@www (M& B{Wta28r=Ku?RZ^GwT -@www$2+37#546375&#"#3!"&5463ww/Dz?swww@wS88 ww#'.>4&#"26546326"&462!5!&  !5!!=!!%#!"&5463!2B^8(Ԗ>@|K55KK55K^B(8ԖԖ€>v5KK55KKHG4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb '"+`N*(a;2̓c`." b PTY9ppP*)pppP*)b ".`(*Nͣ2ͣ`+"' b MRZB4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK "8w s%(  ")v  >  "8x s"+  ")v  <  3zLLz3 3>8L3)x3 3zLLz3 3>8L3)x3 ԖԖ4LL45KK54LL45KK #)0C wZ l/ Y N,& #)0C vZl. Y L0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq%O#"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2 $ |E~E<| $ 2$|ZV:(t}X(  &%(Hw쉉xH(%& (XZT\MKG<m$4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232&4&&4N2`@`%)7&,$)' %/0Ӄy#5 +1 &<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c=p4&"24&'>54'64&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2&4&&4+ 5#bW0/% ')$,&7)%`@``2Nh0##T3'"( 0;e$5KK5 tip<& 1&4&&4&#\=E2 JIURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!J@#"&547&547%6@?V8 b% I)94.""'." 67"'.54632>32+C`\hxeH>Hexh\`C+ED4 #LoP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+ (@%#!"&5463!2#!"3!:"&5!"&5463!462 ww@  B^^B  4&@&&&4 `  ww   ^B@B^ 24& && &%573#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www .4&"26#!+"'!"&5463"&463!2#2&S3 Ll&c4LL44LL4c@& &{LhLLhL'?#!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t  r &&`ww@w@^BB^^B@R&t r  4&&@"&5!"&5463!462 #!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw  @B^^B  @w4& && &3@w   ^BB^    I&5!%5!>732#!"&=4632654&'&'.=463!5463!2!2JJSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8%-3%'&76'&76''&76'&76'&6#5436&76+".=4'>54'6'&&"."&'./"?+"&5463!2  2  5    z<: Ʃw 49[aA)O%-j'&]]5r,%O)@a[9( 0BA; + >HCwww  5 /)  u    @wa-6OUyU[q ( - q[UyUP6$C +) (  8&/ &ww'?$4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762&4&&4&&4&&48(@(88(c==c(8*&&*6&4&&4&&4&&4& (88(@(88HH88`(@&&('@1d4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632   N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ  ,-[% 061I()W,$-7,oIX()oζA;=N0 eTZ  (O#".'&'&'&'.54767>3232>32 e^\3@P bMO0# 382W# & 9C9 Lĉ" 82<*9FF(W283 #0OMb P@3\^e FF9*<28 "L 9C9 & #!"3!2654&#!"&5463!2`B^^B@B^^ީwww@w^BB^^B@B^ww@w#!72#"' #"'.546763YY !''!0#GG$/!''!&UUjZ 8""8  X! 8" "8 EU4'./.#"#".'.'.54>54.'.#"32676#!"&5463!2G55 :8 c7 )1)  05.D <90)$9w@wwwW + AB 7c  )$+ -.1 9$)0< D.59@www,T1# '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}a u&,SXK &$f9s? _#"!#!#!54632V<%'ЭHH (ںR&=4'>54'6'&&"."&'./"?'&54$ 49[aA)O%-j'&]]5r,%O)@a[9( 0BA; + >HCaaoMa-6OUyU[q ( - q[UyUP6$C +) (  8&/ &fMa%+"&54&"32#!"&5463!54 &@&Ԗ`(88(@(88(r&&jj8((88(@(8#'+2#!"&5463"!54&#265!375!35!B^^BB^^B   `^B@B^^BB^  ` !="&462+"&'&'.=476;+"&'&$'.=476; pppp$!$qr % }#ߺppp!E$ rqܢ# % ֻ!)?"&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B @   2^B@B^\77\aB//B//B//B/@    ~B^^B@2^5BB52v.42##%&'.67#"&=463! 25KK5L4_u:B&1/&.- zB^^B4LvyKjK4L[!^k'!A3;):2*547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\xI/#"/'&/'&?'&'&?'&76?'&7676767676` (5 )0 ) *) 0) 5(  (5 )0 )))) 0) 5( *) 0) 5(  )5 )0 )**) 0) 5)  )5 )0 )*5h$4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2&4&&4N2$YGB (HGEG HQ#5K4Li!<;5KK5 A# ("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K J7R>@#zD<7?s%3#".'.'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2` #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"( #A  5K2*!Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>igR7J K5h4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326&4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K J7R>@#zD9eMZ4&&4&<#5K4LN2$YGB (HGEG HV;5KK5 A# ("/?&}vhi!<4<p4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*! Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J K55K;E@TƾH #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"( #A  5KK5;+54&#!764/&"2?64/!26 $$ & [6[[j6[&^aa@&4[[6[[6&+^aa+4/&"!"3!277$ $$ [6[ &&[6j[ ^aae6[j[6&&4[j[^aa+4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[ &&[^aa+4/&"4&+"'&"2? $$ [6&&4[j[6[j^aad6[&& [6[[j^aa   $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"      4   $!   #          .0"Y +  !       $     "  +       Α      ^aa                        P   ' -( # * $  "  !     * !   (         $      2 ~/$4&"2 #"/&547#"32>32&4&&4V%54'j&&'/덹:,{ &4&&4&V%%l$65&b'Cr! " k[G +;%!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2&&&&&&&&&&&&@&&&&&&&&&&&&#"'&5&763!2{' **)*)'/!5!#!"&5!3!26=#!5!463!5463!2!2^B@B^&@&`^B`8(@(8`B^ B^^B&&B^(88(^G 76#!"'&? #!"&5476 #"'&5463!2 '&763!2#"'c)'&@**@&('c (&*cc*&' *@&('c'(&*cc*&('c'(&@*19AS[#"&532327#!"&54>322>32"&462 &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe= BPPB =eF6 ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖp!Ci4/&#"#".'32?64/&#"327.546326#"/&547'#"/&4?632632(* 8( !)(A(')* 8( !USxySSXXVzxTTUSxySSXXVzxT@(  (8 *(('( (8 SSUSx{VXXTTSSUSx{VXXT#!"5467&5432632t,Ԟ;F`j)6,>jK?Q/!%#!"&7#"&463!2+!'5#8EjjE8@&&&&@XYY&4&&4&qDS%q%N\jx2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&l NnbSVZ bRSD zz DSRb)+USbn \.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` ` &4&&4r$#@B10M5TNT{L5T II T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$: $/ @@Qq`@"%3<2#!"&5!"&5467>3!263! !!#!!46!#!(88(@(8(8(`((8D<++<8(`(8(`8(@(88( 8((`(8((<`(8(``(8||?%#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs] = OfjL?R@T?"& > f?rRX=Edudsq = _MjiL?T@R?E& f > =XRr?b!1E)!34&'.##!"&5#3463!24&+";26#!"&5463!2 08((88(@(8  8((88((`(1  `(88((88(@  `(88(@(8(`#!"&5463!2w@www`@www/%#!"&=463!2#!"&=463!2#!"&=463!2&&&&&&&&&&&&&&&&&&&&&&&&@'7G$"&462"&462#!"&=463!2"&462#!"&=463!2#!"&=463!2ppppppp @   ppp @    @   Рpppppp  ppp    <L\l|#"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE @  k*Gj @   @   TP\BX-@8 C)5Xs J@$3T4+,:;39SG2S.7<  vcc)( %Ll}    5e2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo  T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-a[ $&P{<8[;:XICC>.'5oe71#.0(  l0&%,"J&9%$<=DTIcs&/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260% <4"VRt8<@< -#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@ v '|N;!/!$8:IObV;C#V  &   ( mL.A:9 !./KLwPM$@@ /?O_o%54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2@@@@@@@@@^BB^^B@B^NB^^B@B^^#+3 '$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb@M$4&"2!#"4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh LhLLhL! 'ԖԖ@' !&  ?&&LhLLhL hLLhL jjjj &@6/" &&J#"'676732>54.#"7>76'&54632#"&7>54&#"&54$ ok; -j=yhwi[+PM 3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch 0=Z٤W=#uY2BrUI1^Fk[|aL2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U ,iXբW<"uW1AqSH1bdww%S_o#".54>32#".54632?!"32732>54.4>54&'35#5##33#!"&5463!2=uQ)OH,2QS+ * $  JB;5P#@<5Q#jXUg^ (R/9%LI&D,.D#3!#'267654.#"2>54.'&#"3##5#5353@[Z@0HꟄ9%YJ .H?MpJL1EF1&P5"?j@*Q/+=Y6:k[7'9C 5hoS6Fq}kii$ECPNZSzsS`!9f:}R'!;e.ggR44^>0$/. 0$8];Fk;lll ,<!5##673#$".4>2"&5!#2!46#!"&5463!2rM* *M~~M**M~~M*jjj&&&&`P%挐|NN||NN|*jjjj@&&&&@ "'&463!2@4@&Z4@4&@ #!"&4762&&4Z4&&4@@ "'&4762&4@4&@&4&@ "&5462@@4&&44@&&@ 3!!%!!26#!"&5463!2`m` ^BB^^B@B^  `@B^^BB^^@ "'&463!2#!"&4762@4@&&&&44@4&Z4&&4@ "'&463!2@4@&4@4&@ #!"&4762&&4Z4&&4@:#!"&5;2>76%6+".'&$'.5463!2^B@B^,9j9Gv33vG9H9+bI\ A+=66=+A [">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^l+!+"&5462!4&#"!/!#>32]_gTRdgdQV?U I*Gg?!2IbbIJaaiwE3300 084#"$'&6?6332>4.#"#!"&54766$32z䜬m IwhQQhbF*@&('kz   _hQнQGB'(&*eoz(q!#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+~(  (h  &  \(  (  &  ~+54'k%5%l%%l$65+~  &  (  (\  &  h(  (~+%'!)19K4&"24&"26.676&$4&"24&"24&"2#!"'&46$ KjKKj KjKKje2.e<^P,bKjKKjKjKKj KjKKj##LlLKjKKjK jKKjK~-M7>7&54$ LhяW.{+9E=cQdFK1A  0) pJ2`[Q?l&٫C58.H(Y':d 6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK ~EVZ|$2 $ |: $ 2$|ZV:(t}hfR88T h̲X(  &%(Hw(%& (XZT\MKG{x!#"'.7#"'&7>3!2%632u  j H{(e 9 1bU#!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!2328((88(``(88((88(``(88((88(`L4`(88(@(88(`4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48OY"&546226562#"'.#"#"'.'."#"'.'.#"#"&5476$32&"5462И&4&NdN!>! 1X:Dx+  +ww+  +xD:X1 -U !*,*&4&hh&&2NN2D &  ..J< $$ 767#"&'"&547&547&547.'&54>2l4  2cKEooED ) ) Dg-;</- ?.P^P.? -/<;-gYY  .2 L4H|O--O|HeO , , Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq4#!#"'&547632!2#"&=!"&=463!54632  @  `     ` ?`   @  @  !    54&+4&+"#"276#!"5467&5432632   `  _ v,Ԝ;G_j)``    _ ԟ7 ,>jL>54'&";;265326#!"5467&5432632    v,Ԝ;G_j) `   `7 ,>jL>X`$"&462#!"&54>72654&'547 7"2654'54622654'54&'46.' &6 &4&&4&yy %:hD:FppG9Fj 8P8 LhL 8P8 E; Dh:% >4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw" A4*[s~>M4&"27 $=.54632>32#"' 65#"&4632632 65.5462&4&&4G9& <#5KK5!!5KK5#< &ܤ9Gpp&4&&4&@>buោؐ&$KjKnjjKjK$&jjb>Ppp %!5!#"&5463!!35463!2+32@\\8(@(8\@@\\@\(88(\@ 34#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\@"4&+32!#!"&+#!"&5463!2pP@@Pjj@@\@\&0pj \\&-B+"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4&L44L &=d4LL4 d=&&`&&&&`&&&&4LL4  &#3CS#!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x c`(8@@@`((88(@(8(D 9 8(`@@@@@/?O_o-=%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ &&&&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @   `&&&& /?O_o%+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2 @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ 8(@(8 @  @  @  @  @ &&&@8((8@&@  @ @  @  @  @ @  @ @  @ @  @ @  @ @  @ @  @  @  @  (88(  @  ``   `` -&&& (88(&@<c$4&"2!#4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKjKjKKj&ԖԖ&&@&&KjKKjK jKKjK .&jjjj&4&@@&&#'1?I54&+54&+"#";;26=326!5!#"&5463!!35463!2+32 \\8(@(8\ \\@\(88(\: #32+53##'53535'575#5#5733#5;2+3@E&&`@@` `@@`&&E%@`@ @ @      @ :#@!3!57#"&5'7!7!K5@   @5K@@@ #3%4&+"!4&+";265!;26#!"&5463!2&&&&&&&&w@www&&@&&&&@&&@www#354&#!4&+"!"3!;265!26#!"&5463!2&&&&&@&&@&w@www@&@&&&&&&@&:@www-M3)$"'&4762 "'&4762 s 2  .   2 w 2  .   2 w 2    2  ww  2    2  ww M3)"/&47 &4?62"/&47 &4?62S .  2 w 2   .  2 w 2  M . 2    2 .  . 2    2 .M3S)$"' "/&4762"' "/&47623 2  ww  2    2  ww  2    2 w 2   .v 2 w 2   .M3s)"'&4?62 62"'&4?62 623 .  . 2    2 .  . 2    2 .   2 w 2v .   2 w 2-Ms3 "'&4762s w 2  .   2 ww  2    2 MS3"/&47 &4?62S .  2 w 2  M . 2    2 .M 3S"' "/&47623 2  ww  2   m 2 w 2   .M-3s"'&4?62 623 .  . 2    2- .   2 w 2/4&#!"3!26#!#!"&54>5!"&5463!2  @ ^B && B^^B@B^ @  MB^%Q= &&& $$ (r^aa(^aa!C#!"&54>;2+";2#!"&54>;2+";2pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p!C+"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp@@ #+3;G$#"&5462"&462"&462#"&462"&462"&462"&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\  $$ ^aaQ^aa,#"&5465654.+"'&47623   #>bqb&44&ɢ5"  #D7euU6 &4&m 1X".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|x xXK--K|Mp<# )>dA{RXtfOT# RNftWQ,%4&#!"&=4&#!"3!26#!"&5463!2!28(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\ u'E4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\&8((88((8,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1. $4@"&'&676267>"&462"&462.  > $$ n%%/02 KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa$4@&'."'.7>2"&462"&462.  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y jKKjKKjKKjKffff@^aa +7#!"&463!2"&462"&462.  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa#+3C54&+54&+"#";;26=3264&"24&"2$#"'##"3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,, #/;GS_kw+"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2`````````````````````p`K55KK55Kp`````````````````````````5KK55KK@*V#"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK# ڗXF@Fp:f_ #WIpp&3z h[ 17q%q#::#5KKu't#!X: %#+=&>7p @ *2Fr56565'5&'. #"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ8 2.,#,fk*1x-!#@#KjK# ڗXF@Fp:f_ #WIpp&3z e`vo8t-  :5 [*#::#5KKu't#!X: %#+=&>7p  3$ "/&47 &4?62#!"&=463!2I.  2 w 2   -@). 2    2 . -@@-S$9%"'&4762  /.7> "/&47 &4?62i2  .   2 w E > u > .  2 w 2   2    2  ww !   h. 2    2 . ;#"'&476#"'&7'.'#"'&476' )'s "+5+@ա' )'F*4*Er4M:}}8 GO *4* (-/' #"'%#"&7&67%632B;>< V??V --C4 <B=cB5 !% %!b 7I))9I7 #"'.5!".67632y( #  ##@,( )8! !++"&=!"&5#"&=46;546;2!76232-SSS  SS``  K$4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,DS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*54&#"#"/.7!2<'G,')7N;2]=A+#H  0PRH6^;<T%-S#:/*@Z}   >h.%#!"&=46;#"&=463!232#!"&=463!2&&&@@&&&@&&&&&&&&&&&&f&&&&a#!"&=463!2#!"&'&63!2&&&&''%@% &&&&&&&&k"G%#/&'#!53#5!36?!#!'&54>54&#"'6763235 Ź}4NZN4;)3.i%Sin1KXL7觧* #& *@jC?.>!&1' \%Awc8^;:+54&#"'6763235 Ź}4NZN4;)3.i%PlnEcdJ觧* #& *-@jC?.>!&1' \%AwcBiC:D'P%! #!"&'&6763!2P &:&? &:&?5"K,)""K,)h#".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n  "h.=T#)#lQTv%.%P_ % %_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|'' 59%D-I)OY[R+P19-,##,-91P+R[YO)I-D%95%_P%.%v'3!2#!"&463!5&=462 =462 &546 &&&&&4&r&4&@&4&&4&G݀&&&&f s CK&=462 #"'32=462!2#!"&463!5&'"/&4762%4632e*&4&i76`al&4&&&&&}n  R   R zfOego&&5`3&&&4&&4& D R   R zv"!676"'.5463!2@@w^Cct~5  5~tcC&&@?JV|RIIR|V&&#G!!%4&+";26%4&+";26%#!"&546;546;2!546;232@@@@L44LL4^B@B^^B@B^4L  N4LL44L`B^^B``B^^B`LL4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632&4&&4  @ o&&}c ;pG=(  8Ai8^^.   &4&&4&` ` fs&& jo/;J!# 2 KAE*,B^^B! `  -4&"2#"/&7#"/&767%676$!28P88PQr @ U @ {`PTP88P8P`  @U @rQ!6'&+!!!!2Ѥ 8̙e;<*@8 !GGGQII %764' 64/&"2 $$ f3f4:4^aaf4334f:4:^aa %64'&" 2 $$ :4f3f4F^aa4f44f^aa 764'&"27 2 $$ f:4:f4334^aaf4:4f3^aa %64/&" &"2 $$ -f44f4^aa4f3f4:w^aa@7!!/#35%!'!%j/d jg2|855dc b @! !%!!7!FG)DH:&H dS)U4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f ]wq4qw] `dC&&:FԖF:&&Cd`4&&4& ]] `d[}&&"uFjjFu"&&y}[d#2#!"&546;4 +"&54&" (88(@(88( r&@&Ԗ8((88(@(8@&&jj'3"&462&    .  > $$ Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88((88((88((88((88/+"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((885E$4&"2%&'&;26%&.$'&;276#!"&5463!2KjKKj   f  \ w@wwwjKKjK"H   ܚ  f   @www   $64'&327/a^ ! ^aaJ@%% 65/ 64'&"2 "/64&"'&476227<ij6j6u%k%~8p8}%%%k%}8p8~%<@% %%  !232"'&76;!"/&76  ($>( J &% $%64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www/#5#5'&76 764/&"%#!"&5463!248` # \P\w@www4`8  #@  `\P\`@www)4&#!"273276#!"&5463!2& *f4 'w@www`&')4f*@www%5 64'&"3276'7>332#!"&5463!2`'(wƒa8! ,j.( &w@www`4`*'?_`ze<  bw4/*@www-.  6 $$  (r^aaO(_^aa -"'&763!24&#!"3!26#!"&5463!2yB(( @   w@www]#@##   @ @www -#!"'&7624&#!"3!26#!"&5463!2y((@B@u @   w@www###@  @ @www -'&54764&#!"3!26#!"&5463!2@@####@w@wwwB((@@www`%#"'#"&=46;&7#"&=46;632/.#"!2#!!2#!32>?6#  !"'?_  BCbCaf\ + ~2   }0$  q 90r p r%D p u?#!"&=46;#"&=46;54632'.#"!2#!!546;2D a__ g *`-Uh1    ߫}   $^L  %b+"&=.'&?676032654.'.5467546;2'.#"ǟ B{PDg q%%Q{%P46'-N/B).ĝ 9kC< Q 7>W*_x*%K./58`7E%_ ,-3  cVO2")#,)9;J) "!* #VD,'#/&>AX>++"''&=46;267!"&=463!&+"&=463!2+32Ԫ$   pU9ӑ @/*f o  VRfq f=SE!#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![       % )   "  Jg Uh BW&WX hU g 84&#!!2#!!2#!+"&=#"&=46;5#"&=46;463!2j@jo g|@~vv u n#467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ !mY Zga~bm] [o"U+, @h h@@X hh @83H\#5"'#"&+73273&#&+5275363534."#22>4.#2>ut 3NtRP*Ho2 Lo@!R(Ozh=,GID2F 8PuE>.'%&TeQ,jm{+>R{?jJrL6V @`7>wmR1q uWei/rr :Vr $7V4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F +>R{8PuE>.'%&TeQ,jm{?jJrL6 @`rr :Vr3>wmR1q uWei@ \%4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2&%%&&&& &7.' :@$LBWM{#&$h1D!  .I/! Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r@ \#"&546324&#!"3!26%#!#"'.'.'&'.'.546767>;&%%&&&& &i7qN !/I.  !D1h$&#{MWBL$@: '.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L  +=\d%54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%! B? )#!CC $)  54f"@@ B+,A  A+&+A  ZK35N # J!1331CCC $)w@www2"33FYF~(-&"o4*)$(* (&;;&&:LA3  8334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www  +=[c}#"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY .06 62+YY-06 R[!.'CD''EH$VVX::Y X;:Y fyd/%jG%EC&&CE%O[52. [$C-D..D^^* ly1%=^I86i077S 3 $EWgO%33%OO%35 EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R 7>%3!+}'+"&72'&76;2+"'66;2U &  ( P *'eJ."-dZ-n -'74'&+";27&+";276'56#!"&5463!2~} 7e  ۩w@www"  $Q #'!# @www/4'&327$ '.'.4>7>76 "!!jG~GkjGGk[J@&& @lAIddIAllAIddIA@ '5557 ,VWQV.RW=?l%l`~0~#%5!'#3! %% %=#y ?R'UaM|qByy[C#jXAAҷhUHG/?%##"547#3!264&#"3254&+";267#!"&5463!2R܂#-$䵀((((tQQttQvQtn?D~|D?x##))((QttQvQtt2#!"&54634&"2$4&"2ww@ww||||||w@www||||||| !3 37! $$ n6^55^h ^aaM1^aaO *Cg'.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7':Yi4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C ."!$28 h /" +p^&+3$ i0(w@www+.i6=Bn \C1XR:#"'jj 8Q.cAj57!? "0D$4" P[ & 2@wwwD~"%.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45/%'#.5!5!#"37>#!"&5463!2p>,;$4 5eD+WcEw@wwwK()F ,VhV^9tjA0/@www@#"'&76;46;23   &  ++"&5#"&7632  ^  c  & @#!'&5476!2 &  ^  b '&=!"&=463!546  &    q&8#"'&#"#"5476323276326767q'T1[VA=QQ3qpHih"-bfGw^44O#A?66%CKJA}} !"䒐""A$@C3^q|z=KK?6 lk)  %!%!VVuuu^-m5w}n7M[264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4.?4.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67 \ U7  J#!W! '  " ';%  k )"    '   /7*   I ,6 *&"!   O6* O $.( *.'  .x,  $CN      * 8   7%&&_f& ",VL,G$3@@$+ "  V5 3"  ""#dA++ y0D- %&n 4P'A5j$9E#"c7Y 6" & 8Z(;=I50 ' !!e  R   "+0n?t(-z.'< >R$A"24B@( ~ 9B9, *$        < > ?0D9f?Ae  .(;1.D 4H&.Ct iY% *  7      J  <    W 0%$  ""I! *  D  ,4A'4J" .0f6D4pZ{+*D_wqi;W1G("% %T7F}AG!1#%  JG 3  '.2>Vb%&#'32&'!>?>'&' &>"6&#">&'>26 $$ *b6~#= XP2{&%gx| .W)oOLOsEzG< CK}E $MFD<5+ z^aa$MWM 1>]|YY^D եA<KmE6<" @9I5*^aa>^4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV;267676&#!"&=463!267 #!"'&5463!26%8#! &&Z"M>2! ^I 7LRx_@>MN""`=&&*%I},  L7_jj9/%4&#!"3!264&#!"3!26#!"&5463!2  &&&&&&&&19#"'#++"&5#"&5475##"&54763!2"&4628(3- &B..B& -3(8IggI`(8+Ue&.BB.&+8(kk`%-"&5#"&5#"&5#"&5463!2"&4628P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ!%>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa'I4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛o ܴ   $ $ " $ $  ՛[[՛[[5` ^ ^ 2` `2 ^ ^ ` 1%#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn) 6<ׂf{z}))Ns3(@ +4&#!"3!2#!"&5463!2#!"&5463!2@&&&f&&&&@&&&&4&&4&@&&&&&&&& `BH+"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F Z4&w4) '' 5r&4&&4&&4I3#&/.#./.'&4?63%27>'./&'&7676>767>?>%6})N @2*&@P9A #sGq] #lh<* 46+(  < 5R5"*>%"/ +[>hy  e !/Ui%6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt -okQ//jo_  %&JՂYJA-.-- 9\DtT+X?*<UW3' 26$>>W0 {"F!"E    ^f`$"_]\<`F`FDh>CwlsJ@ ;=?s  :i_^{8+?` ) O`s2RDE58/Kr #"'>7&4$&5mī"#̵$5$"^^W=acE*czk./"&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3! G84&3Im<$/6X_D'=NUTL;2KPwtPt=  &ռ ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6[?5:NR=;.&1 +!"&=!!%!5463!2sQ9Qs***sQNQsBUw wUBFHCCTww%1#"&=!"&=463!54632.  6 $$     ` ?(r^aa    (_^aa%1#!#"'&47632!2.  6 $$   @  ` (r^aa  ?  @  (_^aa/#"'&476324&#!"3!26#!"&5463!2&@& @   w@www& @B@ &  @ @www"&462  >& $$ Ԗ*(r^aaԖԖ (^aa]6#"$54732>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ *>6߅r#! 3?^BEa߀#9#36'&632#"'&'&63232#!"&5463!2 Q,&U #+' ;il4L 92<D`w@www`9ܩ6ɽ ]`C477&@wwwD+"&5#"'&=4?5#"'&=4?546;2%6%66546;2  wwwwcB G]B Gty]ty #3C#!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w'/?P+5#"&547.467&546;532!764'!"+32#323!&ln@ :MM: @nY*Yz--zY*55QDDU9pY-`]]`.X /2I$ t@@/!!/@@3,$,3$p$00&*0&& !P@RV2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T7%>ww@ww!"5bBBb./ * 8(@(87)(8=%/' #?w@www#~$EE y &L(88e):8(%O r    O?GQaq47&67>&&'&67>&"$32#"#"'654  $&6 $6&$ CoL.*K  Px.* iSƓ i 7J ?~pi{_Я;lLUZ=刈刈_t'<Z :!   @! j`Q7  $ky, Rfk*4LlL=Z=刈&$&546$7%7&'5>]5%w&P?zrSF!| &0 ##!"&5#5!3!3!3!32!546;2!5463) );));;))&&&@@&&&  6 $&727"'%+"'&7&54767%&4762֬>4P t+8?::  ::A W` `EvEEvE<."e$IE&O &EI&{h.`m"&#"&'327>73271[ >+)@ (]:2+D?*%Zx/658:@#N C= E(oE=W'c:o0a%4.'&#"32>4.#"32676!##"&'&54676%.547#"&5467>'9C!5goS6/Kce3:k[7u">j@*Q.+=Y4%Q5pKL1FE1@Z[@1G렄:$YJ .H?L0$/. 0$8];8\;)4^;}R'!;e.ggR4!8HX?ZHsG;@"$ECPN[RzsS`;HQ.R)A)(-R6B@"N^ '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL#Qa"'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!2 55 **.>.-@-R.>.-@-<+*q6- -- 0OpoOxzRrqP6z~{{Prr^aa]054&"#"&5!2654632!#"&57265&'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![,7*  2(-#=  /~[(D?G  |,)"# +)O8,+'6 y{=@0mI#938OAE` -  )y_/FwaH8j7=7?%a % %!?)L J 9=5]~pj  %(1$",I  $@((  +!.S -L__$'-9L 5V+ 6 T+6.8- $ 0 + t |S 16]&#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@ "kb2)W+ ,5/1   #   Z -!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1  ! / ,   /--ST(::(ep4AM@=I>".)xΤlsY|qK@ %(YQ&N EHv~<Zx'#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A %%%h% %hJ%D,FZxULs TgxUJrVD %hJ%@/LefL.C %Jh%CV sNUxϠ@.FZyUHpVA %h&%% %Ji%CWpIUybJ/Uy^G,D %Jh%@U sMt UC %hJ%C-KfyEX[_gj&/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf' % :/d B 4@ }  &!0$?Jfdf-.=6(:!TO? !IG_U% . j+.=; 5gN_X "  ##  292Q41   *6nA;| BS N.  %1$ 6 #nk^ '7GWgw2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`( `(8^BB^^B@B^"vEj^B(8(`(8(/?O_o/?2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`% "&5#"&5&462!762$"&462B\B@B\B8PpP8.BB..BB.8$P88P広3CQ#".54>32#".546322#"&#"#"54>%".54>32%2#"&54> &X=L|<&X=M{2r_-$$-_rUU%&&5%ő'- "'.546762@FF$@B@$.&,&.]]|q#<<#(BB B%'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px p=`$>>$&@&@ @&p@ &.A!!"!&2673!"5432!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:%,AGK2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa| DH> I1q Fj?w@wwwsq*4p9O*¸Z^qh LE "(nz8B M'?"&4624&#"'.'324&#"3267##"&/632632.ʏhhMALR vGhг~~K „yO^   ʏʏВ*LM@!שwwȍde)qrOPqȦs:03=7'.?67'67%'>&%'7%7./6D\$>  "N,?a0#O 1G9'/P(1#00  ($=!F "9|]"RE<6 'o9%8J$\ :\HiTe<?}V#oj? d,6%N#" HlSVY]C =@C4&"2!.#!"4&"2+"&=!"&=#"&546;>3!232^^^Y ^^^`pppp`]ibbi]~^^^e^^^PppPPppP]^^]3;EM2+"&=!"&=#"&546;>;5463!232264&"!.#!"264&" ]`pppp`]ibbi^^^dY !^^^]@PppP@@PppP@]^^] ^^^e^^^ 3$#!#!"&5467!"&47#"&47#"&4762++&2 $$ 2&&&4&&Z4&&##&&4&4&44&m4&m+DP4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠) -g+^aaF s" +g (* 3#!| #/IK/%*%D= )[^aa !!!'!!77!,/,-a/G t%/;<HTbcq%7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632 #"/6327#"/6327#"/46321"&/462"&/>21"&/567632#!.547632632  *     X    ^  `    ^  b  c   fu U`59u  4J   l~ ~ F 2    m | O,           ru| u  " )9 $7 $&= $7 $&= $7 $&=  $&=46w`ww`ww`wb`VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv#^cu#!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&54&5&'67.'&'&#3274(8((88((`x c`(8!3;:A0?ݫY   ^U 47D$    74U3I  |L38wtL0`((88(@(8(D 9 8(Q1&(!;  (g- Up~R2(/{E(Xz*Z%(i6CmVo8 #Q#!"&5463!2!&'&!"&5!3367653335!3#'.'##'&'35(8((88((`x c`(8iFFZcrcZ`((88(@(8(D 9 8(kk" kkJ ! k#S#!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x c`(8-Kg kL#DCJg  jLD`((88(@(8(D 9 8(jj jjkk kk#8C#!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x c`(8 G]L*COJ?0R\wx48>`((88(@(8(D 9 8(jjRQxk !RY#*2#!"&5463!2!&'&!"&5!!57"&462(8((88((`x c`(8Pppp`((88(@(8(D 9 8(ppp  #*7JR5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"<(8((88((`x c`(8kޑcO"jKKjK`((88(@(8(D 9 8(SmmS?M&4&&4#9L^#!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x c`(8 6ddWW6&44`((88(@(8(D 9 8(. G5{{5]]$5995#3C#!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x c`(84LL44LL4l  `((88(@(8(D 9 8(L44LL44L  Z #7K[#!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x c`(8` 3  3  3  3 v  ?  `((88(@(8(D 9 8( & & - & &  ?   'j6#'. '!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H( ' gQWZc[ -%7' %'-'% %"'&54762[3[MN 3",""3,3"ong$߆]gn$+) ")")" x#Z#"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\ u_MK'̨|g? CM7MM5,QAAIQqAy{b& BL4PJ9+OABIRo?z.z n6'+s:zcIAC65D*DRRD*wya$, @B39E*DRRD*'/7  $&6$ 6277&47' 7'"' 6& 6'lLRRZB|RR>dZZLlLZRR«Z&>«|R! $&54$7 >54'_ff_L-ff`- c6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'  )-* h'N'!'Og,R"/!YQG54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92Z2&`9UW=N9:PO;:dhe\=R +)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X  #'#3#!"&5463!2) p*xeשw@www0,\8@www9I#"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4 &) @]v q#CO!~󿵂72765'./"#"&'&5 }1R<2" 7MW'$  ;IS7@5sQ@@)R#DvTA ; 0x I)!:> +)C 6.> !-I[4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R HMŰ9ou7ǖD䣣 R23('3_,--,R23('3_,--,NJ ?uWm%#"'%#"'.5 %&'&7632! ; `u%"(!]#c)(   #"'%#"'.5%&'&76 !  (%##fP_"(!)'+ʼn4I#"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2z䜬m IwhQQhbF*@&('k@z   _hQнQGB'(&*eozΘ@@`  >. $$ ffff^aafff^aa>"&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:! %]& %@2(/.+*)6! <.$..**"+8#  #Q3,,++#-:#"$$ /:yuxv)%$ /?CG%!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&&&& &&&&&&&&@&&&&&&&&&&&&%2 &547%#"&632%&546 #"'6\~~\h ~\h\ V V VV%5$4&#"'64'73264&"&#"3272#!"&5463!2}XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www/>LXds.327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,  *"T.D@Yooo@5D [  Z  Z  [ ``[ Z  2 ,l0 (T" .D5@oooY@D, Z  [  [  Z ``EZ  [ 5%!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYC L||L Y˄(E''E*( /?IYiy%+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P > P3&&rrr&&rrr he 4LKM:%%:MKL4WT&&%/9##!"&563!!#!"&5"&5!2!5463!2!5463!2&&&&&&  &&&i@&&@&7'#5&?626J%o;j|/&jJ%p&`Jj&p/|jţ%Jk%o% :g"&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[ gq# /3qFr2/ $rg%4 HffHJ4d#!#7!!7!#5!VFNrmNNN N!Q +?Ne%&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76 '6# <;11x# *# F-T93%/#0vNZ;:8)M:( &C.J}2 %0  ^*  JF &7'X"2LDM" +6 M2+'BQfXV#+] #' L/(eB9  #,8!!!5!!5!5!5!5#26%!!26#!"&5!5&4& &pPPp@@&&@!&@PppP@*  9Q$"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK NN Ud: xx 8    ,, |2222 MXXM ic,>>,   ̺  '/7?KSck{4&"2$4&"24&"24&"24&"24&"24&"24&"24&"264&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj&&&&KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK&&&&jKKjK4LL44LL'E!#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7' #$ &gpf5 O.PqZZdS -V"0kqzTxD!!8p8%'i_F?;kR(` !&)d.<\.'.>%#"'.7>.'&67632&'6'&' #"'.766.'&67632Z &+\cc:>'D> 6KD3W6,9(<*0-?")/SW7.Crb  :+OIX3'#C3:@ #*"-A%,1U=}AQfO$"|'"S*`H(:UܳJ?27sZy%+A07C~Ӗ5A"3 >IY#6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24  : @7vH%hEP{0&<'VFJo1,1.F6A#L44LL44L"% 7x'6 O\JYFw~v^fH$ ! "xdjD"!6`J4LL44LL $1Ol-#"326%356.#"#"326%4#"326%3#7#'#3%#7#"&546324>54#"47632&#"'"'473254&'&54323#327#"'47673#327#"546327&#7673>7&#"327#"&54632#7#"&54632654#"47632&#7673>73#7#"&54632.#"#&'#67&#"327&'3673326#!"&5463!2 />  0@[W,8 G'"5,Q4/&4/ $&J (W" +Tl +7o _7*#) 83 ( -5G8 .'3/$&I8 48+5%7%{,2,rr,2,x-2.jj.2-xL44LL44L[ < J 2)(*(8$e  '+ , 1)H/ 'H4/// ,~i6_7G*''4fE!%97+" ;=4FYqO" '+ , &2hh_ ,0(5N(ntggtnno__on4LL44LL  BWbjq}+532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32 !264&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA !M77MM77M3! 4erJ]&3YM(, ,%7(#)  ,(@=)M%A20C&Mee(X0&ĖjjjV 8Z8J9N/4$ 8NN88NN  #&:O[ $?b3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM ') ~PSPRm٘M77Mo7q @)U 8"E(1++NM77Mx378D62W74;9<-A"EA0:A F@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?* $\amcrVlOO176Nn23266&+"&#"3267;24&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,,  _3$$2%%M>AL Vb5)LDHeE:< EM j,K'-R M ~M>AR  Vb5)LEHeE:< E J ABI*'! ($rL44LL44Lv%1 %3!x*k $2 %3!;5h n a !(lI;F   rp p8;5h t a !(lI;F ` #k 4LL44LL  2HW[lt#"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#7532764&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * / 8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L44LL44LyE%# Vb;A !p &'F:Aq)%)#orgT$ v2 8)2z948/{ 8AB..B/q?@r<7(g/4LL44LL ?#!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ;U g3 T 2RX='8P8|5 4Ljj U;Ig@   `  "*\(88(]k  &N4#"&54"3 .#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT T 2RX='8P8|5  U;IgXu?bl3@4Ljja`   `  "*\(88(]k/7[%4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2@@@@@@0 o`^BB^`5FN(@(NF5@@@u  @LSyuS@%44%,<H#"5432+"=4&#"326=46;2  >. $$ ~Isy9"SgR8vHD w ffff^aam2N+ )H-mF+10*F +fff^aab4&#"32>"#"'&'#"&54632?>;23>5!"3276#"$&6$3 k^?zb=ka`U4J{K_/4^W&  vx :XB0܂ff ) fzzXlz=lapzob35!2BX G@8  ' '=vN$\ff  1 SZz8zX#("/+'547'&4?6276 'D^h  i%5@%[i  h]@]h  i%@5%[i  h^@@)2#"&5476#".5327>OFi-ay~\~;'S{s:D8>)AJfh]F?X{[TC6LlG]v2'"%B];$+l|%!2>7>232>7>322>7>32"&'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52-P&+F) $P.-P$'#+&PZP&+#"+&P-#) $P-.P$(#+$P.-P$'#+&P-.P$+#pP@@PpH85K"&ZH85K"&ZH85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :& !!3 ! @@@  #"$$3!!2"jaѻxlalxaaj!!3/"/'62'&63!2'y  `I  yMy `I y'[`#".'.#"32767!"&54>3232654.'&546#&'5&#" 4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8 oNU0 J1F@#) [%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn* -c1BWg4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$( 1$6]' !E3P|ad(2S;aF9'EOSej]m] <*rYshpt.#)$78L*khw@wwwB % $/$G6 sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www34."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhfffнQQнQQнQZZQffff#>3!2#!".2>4."fffнQQнQQffffQнQQн ,\!"&?&#"326'3&'!&#"#"'  5467'+#"327#"&463!!'#"&463!2632(#AHs9q ci<= #]$ KjKKjKKjKKjH#j#H&&&KjKKjKg V i jKKjKKjKKjK ..n(([5KK55KK5[poNv<+#"'#"&546;&546$32322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃ 2$#2UU1݃2 ,u54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%" *#͟O%GR=O&^opC8pP*bY _#$N Pb@6)?+0L15 "4$.Es  5IQ"!@ h "Y7e|J>ziPeneHbIlF>^]@n*9 6[_3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>! =39? 6'_ >29? 5'17m-VU--,bW.뮠@Fyu0HC$뮠@Fyu0HC$L= ?? <=! A <`;+"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@Ipp>Sc+"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0` !!!! #!"&5463!2ړ7H7jv@vvv':@vvvMUdkpu{#"'!"'!#"&547.547.54674&547&54632!62!632!#!6227'!%!"67'#77!63!!7357/7'%# %'3/&=&' 5#?&547 6!p4q"""6" 'h*[ |*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M "! O dX$k !! ! b [TDOi @6bxBAݽ5  ɝ:J +3,p x1Fi (R 463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C} )&54$32&'%&&'67"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn+;"'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk[/?\%4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i qfN-*#Sjt2"'qCB8!'> !%)-159=AEIMQUY]agkosw{! %! 5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#"Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'32#".543232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU 7#"&463!2!2&&4&&&&4&KjKKjKjKKj &&&%&& &&4&&&&4&&&5jKKjKKjKKjK%z 0&4&&3D7&4& %&'S4&"4&"'&"27"&462"&462!2#!"&54>7#"&463!2!2&4&4&4&4KjKKjKjKKj &&&%&& &&4&%&&ے&4"jKKjKKjKKjK%z 0&4&&3D7&4& %& & !'! !%!!!!%"'.763!2o]FooZY@:@!!gf//I62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@4SS4ZSS6SS4SS4SS4SS4SS4S@ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:= :+: =RRZSSSSSSSSSSSSSCv!/&'&#""'&#" 32>;232>7>76#!"&54>7'3&547&547>763226323@``` VFaaFV      $. .$     yy .Q5ZE$ ,l*%>>%*>*98(QO! L\p'.'&67'#!##"327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"' Dg OOG`n%ELL{@&&Nc,sU&&!Fre&&ss#/,<= #]gL oGkP'r-n&4&2-ir&&?o  4 _5OW! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@&&@&K55K`?e==e?1O6# ,  #$  , #6OO&&&&5KK?!"'&'!2673267!'. ."!&54632>321 4q#F""8'go#- #,"tYg>oP$$Po> Zep#)R0+I@$$@I++332++"&=#"&=46;.7>76$  @ ᅪ*r@@r'/2+"&5".4>32!"&=463  &@~[՛[[u˜~gr&`u՛[[՛[~~@r=E32++"&=#"&=46;5&547&'&6;22676;2  >``@``ٱ?E,,=?rH@``@GݧH`jjrBJ463!2+"&=32++"&=#"&=46;5.7676%#"&5   &@~``@``  vXr&@``@+BF`rks463!2+"&=32++"&=#"&=46;5&547'/.?'+"&5463!2+7>6 %#"&5   &@~``@``~4e  0  io@& jV  0  Z9r&@``@Gɞ5o , sp &@k^ , c8~~`r 8>KR_32++"&=!+"&=#"&=46;.767666'27&547&#"&'2#" @@ 'Ϋ'sggsww@sgg@@-ssʃl99OOr99FP^l463!2+"&=$'.7>76%#"&=463!2+"&=%#"&54'>%&547.#"254&' &@L?CuГP vY &@;"ޥ5݇ޥ5`&_ڿgwBF@&J_ s&&?%x%xJP\h463!2+"&='32++"&=#"&=46;5.7676632%#"&56'327&7&#"2#" &@L? ߺu``@``} ຒɞueeu9uee&_"|N@``@""|a~lo99r9@9;C2+"&5"/".4>327'&4?627!"&=463  &@Ռ .  N~[՛[[u˜N .  gr&`֌  . Ou՛[[՛[~N  . @r9A'.'&675#"&=46;5"/&4?62"/32+  '֪ \  . 4 .  \r|ݧ憛@\ .    . \@r9A"/&4?!+"&=##"$7>763546;2!'&4?62  m  - @ݧ憛@& -  @rm4 -  ٮ*   - r+"&5&54>2  @[՛[rdGu՛[[r  ".4>2r[՛[[՛r5՛[[՛[[$2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88 2#V#2L4>32#"&''&5467&5463232>54&#"#"'.Kg&RvgD $ *2% +Z hP=DXZ@7^?1 ۰3O+lh4`M@8'+c+RI2 \ZAhSQ>B>?S2Vhui/,R0+ ZRkmz+>Q2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_ pdddxO"2xxê_lx2X  !+'5>-pkW[C I I@50Oddd˥Mhfxx^ә #'+/7!5!!5!4&"2!5!4&"24&"2!!! 8P88P 8P88P88P88PP88P8 P88P88P88P8 +N &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`     `  L4Dgy 6Fe=OOU4L>   ` `  4L2y5eud_C(====`L43V &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>     %%Sy 6Fe=J%>     %65%Sy5eud_C(zz.!6%$!2!!!46;24&"2!54&#!"&&&@ԖV@&&@&&ԖԖ@&3!!! !5!'!53!! #7IeeI7CzCl@@@#2#!"&?.54$3264&"!@մppp((ppp#+/2#!"&?.54$3264&"!264&"!@մ^^^@^^^@((^^^^^^'%!53###3!532654&+5!3!#"3~E,,EG,+ob'q,5,'  #'#3!) p*xe0,\8L #/DM%2<GQ^lw &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7&"2654&57>&>&'5#%67>76$7&?5.''&'&'#'""#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9 W"-J0(/r V"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V  # 5X N"& . ) D>q J:102(z/=f*4!> S5b!%  (!$p8~5..:5I  ~T 4~9p# ! ) & ?()5F 1   d%{v*: @e s|D1d {:*dAA|oYk'&<tuut&v HCXXTR;w 71™  Z*&' 1  9? . $Gv 5k65P.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F& OܽsDD!/+``aa``a154&'"&#!!26#!"&5463!2    iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L44LL44L44%2"4:I;p!q4bb3p (P`t`P(6EC.7BI64LL44LL  .>$4&'6#".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL44LL44L')꽽)J)]wL`ֺ۪e4LL44LL;4&#!"3!26#!"&5463!2#54&#!";#"&5463!2  @ ^BB^^B@B^  B^^B@B^`@  MB^^B@B^^>  ^B@B^^5=Um ! !!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762?(``(?b|b?B//B/]]FrdhLhdrF]]FrdhLhdrF@@@(?@@ ?(@9GG9@/B//BaItB!!BtI Ѷ!!ь ItB!!BtI Ѷ!!ь-M32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsFFsMMsFFsMojjo@@jj@@<!(!!(!-3?32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ`  DqLLqDojjo@@jj@@B>=C-3;32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ`UVU96gg6ojjo@@jj@@β**ɍ-G32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsFFsMkkojjo@@jj@@<!(!33!(!9I2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7Aj"#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>3265K @0.B @0.B#6'&& l @0.B 2' .B A2TA9B;h" d mpPTlLc _4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E`1X"#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE& ԖPjjdXUGJ7!.B P2.B %2@ 7K5(B@KjKj?+fU E,5K~!1.>F.F,Q5*H$b2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$7654&#"#654&#"#.!"'.54632&5467>32>3200?t ='/@H@"+4K8"*!4dtB/&> c@0&=  =_JUD29i1"07 {x\YSgSSW]|t eyD0&0D/  I4C+) t .B3%h#/B0&&03|&p>i +#] WsgQT\QglU ]#-39oK_3[_cg"'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k cJ/4qG^\hB2.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5KG#!+"&5!"&=463!2+"&' +"' +"'&5>;2>76;2Y    M .x - N     u  , u ?  LW   #  *:J4'&+326+"'#+"&5463!2  $6& $&6$ UbUI-uu,uuڎLlLAX!Jmf\$ 6uuu,KLlL-[k{276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&  $&6]h - %Lb`J%E 5 ,5R- h - %Lb`J%E 5 ,5R-'uu,uulL/hR    dMLc  NhR   dMLc  N1uuu,LlL@  ' 7 '7 ``H ``H !``H ```H` '%  7' 7'7 ' $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL $ %/9ES[#"&54632$"&4624&"26$4&#"2%#"&462$#"&4632#"32&! 24>  !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,> nP/R U P酛n >,m'77'&77N77N6^Orqqqqqqt棣棣(~|| on[usј^~33pc8{y%cq33dqpd L 54 "2654"'&'"/&477&'.67>326?>< x ,  (-'sI  VCV  Hr'-(  $0@!BHp9[%&!@0$u  ]\\]-$)!IHV D V HI!)$-#36>N"&462."&/.2?2?64/67>&  #!"&5463!2]]]3 $; &|v;$ (CS31 =rM= 4TC(G zw@www]]]($-;,540= sL =45,; @www(2#"$&546327654&#" &#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|! gL&5&'.#4&5!67&'&'5676&'6452>3.'5A5RV[t,G'Q4}-&r! G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K r#"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^ u_x^h ;J݃HJǭ qE Dm! M G?̯' %o8 9U(F(ߎLlL&!&!SEm|[n{[<ɪ "p C Di% (K HCέ  pC B m8 @Kނ  HF(LlL "*6%&6$ 7&$5%%6'$2"&4}x3nQH:dΏX e8z' li=! 7So?vM '&7>>7'7>''>76.'6'El:Fg r *t6K3U Z83P)3^I%=9 )<}Jk+C-Wd &U-TE+]Qr-< Q#0 C+M8 3':$ _Q =+If5[ˮ&&SGZoMkܬc#2>.""$&6$32}L**L}}L**Lʸֶdd*~;;~\~~~ޚBPBdd N.'>!4&#"#6.!3267!!"''.>75>$732̏Ozv{kgw"+TgEۗE0[CWoG[SL#WN,:vDx93!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="# U<-M93#D@U8vk_Y [hD00DD00Dce-JF1 BDN&)@ /1 d 6/1'.#"932>74.#"932>7#"."#".5#".5332654&#"#!!2>22>232>32o'Ve-0F  F0-eW% F0-eW%'Ve-0F 0XWD_J-'F]KAuL9!=MtCGvO>"bMOohV.(, fZC&\|h=*1Hz^I((H_H\V,'L0+A56@+0M%*5A+0M%'L0+@NEsH0EF00EF0-?F1%6810A>A+7iQPq "GY):;)2GH22GH22GH2Ft>t%6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676= >vwd" l "3 /!,+ j2.|%& (N &wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])  u1V(k1S) - 0 B2* %M ;W(0S[T]I) A 5%R7&&=,Xq&&@X,LΒw%%;#!"&5463!546;2!2!+"&52#!"/&4?63!5! (&&@&&(&&@&&( (  &&@&&@&&&&  #''%#"'&54676%6%% hh @` !   !    #52#"&5476!2#"&5476!2#"'&546        @  @  @   84&"2$4&"2$4&"2#"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4" %!KjKKjKKjKKjKKjKKjK.٫8  !%00C'Z'.W"&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A  0) LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee    Y'w(O'RK$#"&#"'>7676327676#" b,XHUmM.U_t,7A3ge z9@xSaQBLb( VU  !!!==w)@T!!77'7'#'#274.#"#32!5'.>537#"6=4>5'.465! KkkK _5 5 #BH1`L I& v6S F!Sr99rS!`` /7K%s}H XV  P V  e  VpdQ*d    L     @ d  %RPBp<$H<TfT H R , D x 6 \ DLX*(2^n0|bX*Z >n@jDH. 4 n !>:>>?|@@>@xAVABBBBCRCDE:FFxFGVGHZHIJIhIIIIJ(JFJdJKKVKLpLMfMNNNOpOPPfPQZQQRRvRTUVRVW W8WWXXhXYY*YTY~YYZ>Z|ZZ[R[\\<\\]@]]]^^^_F`(`aJaabTbbc cd^dde,eef.fggzghhhiiBiijj4jZjk knkklbllm mhmmnn^nno6oopppqvqr0r~s"sst4tu*uv*vw&wx0y@z8z~z{({n{||J||} }}~F~p~~~FnƒbP4t:~臮P܊2~hʌ,(Tԏ2lr8ꔪ\`\.̚ ^Ɯ:؝݆0ޚF߄vDjz8r,d2pL b(< P2nrrrrrrrrrrrrrrrrx'@ ^ ^ t . & $     * < D 0Z   Copyright Dave Gandy 2015. All rights reserved.FontAwesomeRegularpyrs: FontAwesome: 2012FontAwesome RegularVersion 4.4.0 2015FontAwesomePlease refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/Webfont 1.0Tue Jul 28 11:23:12 2015keeporionFont Squirrelx      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq rstuvwxyz{|}~     " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefuni00A0uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni202Funi205Funi25FCglassmusicsearchenvelopeheartstar star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroad download_altdownloaduploadinbox play_circlerepeatrefreshlist_altlockflag headphones volume_off volume_down volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalic text_height text_width align_left align_center align_right align_justifylist indent_left indent_rightfacetime_videopicturepencil map_markeradjusttinteditsharecheckmove step_backward fast_backwardbackwardplaypausestopforward fast_forward step_forwardeject chevron_left chevron_right plus_sign minus_sign remove_signok_sign question_sign info_sign screenshot remove_circle ok_circle ban_circle arrow_left arrow_rightarrow_up arrow_down share_alt resize_full resize_smallexclamation_signgiftleaffireeye_open eye_close warning_signplanecalendarrandomcommentmagnet chevron_up chevron_downretweet shopping_cart folder_close folder_openresize_verticalresize_horizontal bar_chart twitter_sign facebook_sign camera_retrokeycogscomments thumbs_up_altthumbs_down_alt star_half heart_emptysignout linkedin_signpushpin external_linksignintrophy github_sign upload_altlemonphone check_emptybookmark_empty phone_signtwitterfacebookgithubunlock credit_cardrsshddbullhornbell certificate hand_right hand_lefthand_up hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter briefcase fullscreengrouplinkcloudbeakercutcopy paper_clipsave sign_blankreorderulol strikethrough underlinetablemagictruck pinterestpinterest_signgoogle_plus_sign google_plusmoney caret_downcaret_up caret_left caret_rightcolumnssort sort_downsort_up envelope_altlinkedinundolegal dashboard comment_alt comments_altboltsitemapumbrellapaste light_bulbexchangecloud_download cloud_uploaduser_md stethoscopesuitcasebell_altcoffeefood file_text_altbuildinghospital ambulancemedkit fighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down angle_left angle_rightangle_up angle_downdesktoplaptoptablet mobile_phone circle_blank quote_left quote_rightspinnercirclereply github_altfolder_close_altfolder_open_alt expand_alt collapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode reply_allstar_half_emptylocation_arrowcrop code_forkunlink_279 exclamation superscript subscript_283 puzzle_piece microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor unlock_altbullseyeellipsis_horizontalellipsis_vertical_303 play_signticketminus_sign_alt check_minuslevel_up level_down check_sign edit_sign_312 share_signcompasscollapse collapse_top_317eurgbpusdinrjpyrubkrwbtcfile file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_alt sort_by_ordersort_by_order_alt_334_335 youtube_signyoutubexing xing_sign youtube_playdropbox stackexchange instagramflickradnf171bitbucket_signtumblr tumblr_signlong_arrow_down long_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378 vimeo_square_380 plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614U`inc/external/wpmu-lib/fonts/fontawesome440-webfont.woff000064400000236604150211770060017142 0ustar00wOFF=FFTMDn2GDEF`'~OS/2=`6ycmapsbgasp4glyf<"R䨢Ɂhead%26 hhea%!$ jhmtx% F_loca(v|maxp- name-3DYTMj[ڥ?+t:.^kLќ6kK/C9PB5lm죅 ,fIX V:\^hJעZ-ѦUAX@yQFc ;h 52e-oE+[sܪ[vK[t/ۣ'Zݣ32-/$!q 1y.䩄eHB 5_/?;w+/ O|g|dmp,o^(߁ h8825M3['xڼ} |Te7oL&̚0kYlbDQTąQ) TFT}vVoEj[j7Ƕ~?[!?$$2}=s=<s[9DxperAyVQxGs8xX"MEpxgs]ղ:hɄ[zS,$.5n *F$gۅfyw3Iv6 ۸!jC #6{&]v' ϫw ]CT&_uq$ ?_u#ZIZb5ꏢ7z׿F'pq\D%^fF1ႱȝN3pd3nItz`ޣm]K> (f`V trf7_;--نofϯ=]W(.?mڴ='"gV>zYgێ<%LFwԑNhn1[qC§ ?vwP:䡔x!٪urՒpxUto]?܂,>!AQ U(f#J&VJt(NG u57N ~;UUMYgzmSSІZgDبN_KWSգDr;&o5JkWנ ]^fjY؁յ/L f&>0\ !n,@Ԗ  dn.O,wm 8%7@ݷΝ/`V9 Y\}#隒hV.vspqqB:mF brf 2/-4>c?[}GlgsQoan4FʩSLX$BUC9^ V ?=$IԇRsX[<xz>n=fjи;K/*⨓LzUM8gᣏ1,@inj8Vcή9x;e>83$h)G=o[C=Q{m ݁6Sϧ^(ʑv ⸰ÊĆѲ~l.GJVTJ~hRhE 7k:-!mnf AJ7syH12(Ȩs >֗ Cg?T!inIssmg@Gk@kŹjޏҹ/ȥ)fE>Iٌ% apZnM]'߫Į6_V6mزtW_eC5P|~OєN ߧzX. ,|Mrm˚-+"۠1۠PG.R H"ȏ얂(e9Q+27nt0}Y B;<1* :\ A>%H֨(jX1R4FQG!-&agg=j E-H ?ᓇćmo(|^ɲJ,Diw1Igo/f|Re{sc߭MYbc07&e"&!rrO6ܢ7^1MFښĴZ4--ӗLsÖĆIEKNvvpY FfpK5~Q5q^5GDiA8)%LQV+C[.o'\aÛա"ۯ1Dt?^hp+2epY`h Ū[pAuNqf@! Xr}BMiݝ 껲wv-Mdv i 8t_PSk6%5>-u;;f(Mhё}V s,Z?X;8feCJt|õo(6:ﺆuϨ?W [ G!B(5?z-Q30tOps^`) lYv]^Q+@8~p8oX]8h\jEz"ZKʚ:qi6MR-])'ϝkzEV *VGn ZgevK k#B-]s6g R(zo@pG0jv:cQ|}V4&K-!Nӏ> YZ!D1G5ןX1_SSvfƻPzkC=vVsÉ['~+st:Ci~A!FAt_Fp!9$4Ғ(HH/Jvs+|Fy.~4p40BQ)yS>3bgÙq̠ͥdHN*_ ?7Gzzf4YO?u_y]Wţ(aD@AT(1B6ETg,t Qo}j.Qa$Ftq-gMB=ƅ(ς-~ZC})談LP~458=6XI,Mڍf1[Q(-.I\=(%qrፋy\"3{GχyG:-.Q'G0CQ3`5 ẌMp;ɂ5Apl:#o>ܪ-gu-]ht[ 6[sHnBzë3E~v̱j{ɯ]!S}P([06p^`,TjBw-|^#D󐆻 <|G|9W#9F{2HA Ϲ(o >]] h =bGQ®*md_12DQSyJ*ӘKoTKGdM<x1m޼iwΣ(oY, N(g4Q3GC@y DN$RH1$}6Jt-5<}iy%xѺaU[Eԣ?ې[ԛeHn͈;C!Kȏn;G2X=ބOZ$5X cZ'F,9 6tǿEpNZLow,%:]N/丈+S$C#pGaNAVDI4H'NH< {9,XCĦYvmHv\7Da( Ň-I߀~{k'n\;+s?)L٬^i syCdJc5۳mf̉'k7{[=V?ku&Zάx+۱⦾ԪO.~9>ѥѦ<]9YBY(n,%M!-HCÓrEn!:ϲ`gF6#ObE ~񦎶w$q2v-OXͷv7cPS1r) Ui v/BaٹV;_;%Kخr7%\V&chSv F#Kxc8Bh>va~ );|FNaJQgDCvY|5hw耟=dIgL/Ü 7:-&c!VWSGlf$%C@τY$y{a t(ɒx_ʮaEH0:OY_<#K_}v7X;I x-M܍qMyǥkG1&p!)q n׸ALG頰AGi]c7NƎ$bCN t:p9 LQphBaSQȻT۹Bb.K.o#Xp'H#l|Ϧ7ufs粝&U < vØcģ@Ր/"Ƽ4{$}mۿy"餅fSѴcS#)lw̔3\8TvNi<1 v߹_&)"ZN31VS'r8gaT䒳8?[W$RO(K0h1c]=c/61!|7Y͇şS !B)=M3{Rv"+N~Љ{3TA;&A:ףbVz(fO>7= Q1 GgYu''crt+h& >n -A]xL}*u1̦Zzű܎cvŽc落dQQ,(ṟO Wh)I,k#IiLH4bgCQ86oܺuz*rX?D:% yMXPs`؀%pBI^p-^ `6&9N z4 >( 0Ae[k:A*V'K48\P"GՁL:VRmɓAMepTW h#GSc%Z>cDQ&:Tﱪh zM!% çhs8'Ȕ(TbSLq7R|N}u潡ƫ; EJg"2,  @ۅ9s$<@osԓjRwyWKQ>Dfsg(N={R~Vw|C_~^B?E\77Z&te2 6T_tEؔK0Lvdv 3('4f`H9k|n:ηHu4ŴB^JqFP(jB {o6C)6:To A)K*ț5l%4tO=tۥhw](DV= . r]n{gym5VzS[  X|g7–U`'!Xb |)Ǧӣ<Mϸlit`OK숹IRneRDJxҝLJ8v23Ω,?Qy h>^zelm?`2͎rʙ,*=_%)ULS9I/ 5e05FVDo_$հDX:K;&i$6y-FvyhKmIUj^լSQhmn`tGg}F-M5&HdbktөW[hs ~+3yBks U?W(SME˰[Z1Әryw6vJܥJ4~ >::raS#~9`a Je89|SJԮrklCЄh d4{T+TʘeV#=]DmˆiMʳ*KZpn6%/xh%k,VOkaMZmUzxjV/-Tm!sXkCW70:cāƬ$gdApf8ϊ8wU[{$M6m=`ǵ~"XyO*mq hK;. }WGO(1>wɸ.얁0& 3?Z`/;{bA+聴XbAR"@GH72_I *etl%-2/\A/gеQ=gߊC`nܕ4e쥀2!&iJ?1HiW% +בLqAװo<0ʇI%Mp3Uw=* PR+Eއ/Qv} O!,%BLO8CN`2T0M?#V-5?d;?Q'Q+: ԣIWQ.zFІ>]kL 1jfCh G"NzƅLϧ_/C&?] 4|$-Ji-v J(F Hq{,A(R̥fLk?JGDh3KC( Cvsi>!G5QcG;KݤKD5~Ŋbl&BKH[h[5"=,ԙ/~ԭ U[2 O)@T>Տt"qxRO_$ ƺEe/Px/rT"!(鞷ڃIL'j3I&+ٝ~o,TJv!T9wl1:dNʺ/E(&1ik;//?&֊x^4 WU4AZ^nm0{Kҳ/K_ȥ!&K3@z/ː#w 7Y;&k7y!&l>4a+.M?+ZY!՛`T*0D,}. u'f"|TRYAqW+4ӇyDMmg*=pJ{# Zo{i>tK_ۂ ԢA[R>_ џT_ajOBCdٯTbJLe?^( UBpe|e`v8av`oX`H Eq_4;t $tx`ﶠ]9̹Z^H$9tޗd7W8ŐdB(,fIJEBWomÿh7{oV=xL/LM}n;KW>ߵ-:l|}I;?>HѰ2Liچ=wۢZ/'cwNv{A΋? +')Y4 C'}g}vtXojq[/7] .7mOrsܥdv[fhvMR&ө<ẸYܹĚjmg )mq04J)_Zx~g, ڸy З}@u])j%d>om`a"ފ<:TpVfIt~z [h?U_9ͿJyPl_ m&Ů`v =srK?_^ʵ[s_;pv+ "gݓrI OD/;Zؕ׍Үd&\("h85̐#!ɝs;Iڃ~`Fɢf f3yTև(? :}[Rvq@l#` Sr r^2*ӂy@oVa#Fp[`cbß/Be@DČdˀK6B=J#:͘7 I6Q)]>%)ȸ7W7*]v\\dH VpQ@B(nZeJjP"?2T[O ^-5DovF) Հ.$#\&OqVתwXׯ{vjv~cc1 [|X_nh銝UOuoΞ+z\2dDŽh5KU]8EM!% Ech&J@!KM#t#D'q7%Դr-Od&,9=~#.{SEmE]vx+`]2?~7~n,͟dZNÊ'?~&摒ǿimv.kijY٪y!UV2L4Å}~Oc1.wQB/MZ^9ţ|r#RU!>SeSJZo*JVICQV?|x_@4hXn3:B54W-u1Z/MF2>8C3J<ZŠrJr֨s6VpV,0oWk7@hP,].5/{`D=w BySAo͢T?Ah|M5%W14JkLY ?d=6{fhLVc1䍦T!: 6*56OHf{3*E1n3#gܺ={!xu{`I>{*w*(G4j_;˪T*jI )5|iULý z\|!.?ѥJ7>nKCQm"/UD&[1 ;zq ]V]JZu sKWmPNHA|w/n΁Ӏ6n:c5Žc}|Q{ê:Eva.T[t|2c+:6.4LuSJzr26e|3Yh^:{Wϵw<Q|1(/GS Z]1jUT.QzUX{,mL9[4 \&AZ}^3$-c2GÇO>_7Նn'WQOq龾Oe}}/=:&4L^-n>sW^D'_ ]4@ZdA\[45*[Ko7p>m<9/gGH3rhٚ^X.̐ ;Ν=+*?1MTAL&IQ-9h=,{Q VUov^k%@NfgPDÑзO{ya];Hhxd6 6RII64W'ՙhRSm8ɞwa]pXuxx,'yl|R6?qӗ0$O0(jle0$ibc5|Ni9 7nFsp7uDD׬T{Q|M{ݷ&w~{mu\'DpF?q|O<⌊"yQņ$}|mfźw.ZfzsfMe|#zJILW7`E:`?AO颤9T4Z3G]Pr^Oѕ5S1[ `Եۄv}Ai5Мv<6:DOdoqGc{=f瓋:~0czuhvt(l/Eɪx 95]2Z>oa0hӵqѝOmq>繭/]sϿWdI-:0,6`UnGT]IRZ`2jXi{/lXB.bl(u5F<^O4X?陶Phd!n(m36տ1 _l/NO5J CrW͜D`{XY%C@BnufcQ#93# W:nh2}¢.EB01z3,xKЩi"U5t<{8Y qd nqЌ٤]ڍh鐋(;h?yGB(Y;lC']kfN% Go-@{дG՘&{3[)F*O4TBfmP`1¨LR.vړa0И$MVW/Fbr1u#x1fL"u&]i4}B{}46:ͮoDw~⸘53hT6xFZ( ᲄe\f,,Um)7I`P_S* XNIS!lԂ\D =*3E'P fKa?41(d1WAN OzאILNvz!vS~mԎHpop :_~+W7u]-0%fuEMWr8 @(3ow=O?'>wsLcâdf9e9kf39kvM_`\T.RK+yUort*Im\ApIb<=bQ R [ n:> ԞJ+n?2Hl!Wگ3:)z}Z1|A/ooSimr6y؎!2pf9ͱ/oK_S7%rNcµzg[L2pD{,j*/MF&I R$@F`DqI]`3bC0!uNN=sn;s^{<^10UZuI#kmn yXvG[͈磷Tܲm/!LvEQe%6d>缨 q]9瘑&*`I+G8j ;*G'1>~{;cт9<F֦qS]2{ Vm8KgX3䣥e5>&eZcMŎ?htVո<.υ5ߘ쥷lG7~o!lFWMxA~⇾JcBy=KSzk];ҷ=̴[⃍US\?G;R?RWwjwƫ~vk3gt-n3l\^6Ȳ%+@uai+"f? ?[ 5LuD3Ejbyѹqd~~âsBoKDͪZd+L5 9QwKޞtXs"AU5d7I$m/%k׭4:MuGgݮ4}GNe[55R؉ΦꁬͨȎcW>chhvFkvJDfn|0>sy3I-p窛5nd6R-.|M?u 0@pnRd^:-\{GMRL.r=Yli!o`lKdǝh6{cM6j2 f_qfJg﹈Ldn 7[ . Nm]CmF{iNl̂0%MM|}q,EJ﫵WrwlhQ>cF\1kO>7h}ܴŽ\־;7mcݪ򿮸ߏoP0)w/_W 8_c`m`$Op$f Q2vF(S#ȫ_8$s/zsxOy]F(~Q.Z?男OB8Zj_?u.!vwǚػQ:ɱn(F u ᓇF fՐBYVڳ)ǫ,~ /n]&eLn&4AtCtДT͊Wfx .j<4dVNs 55dJ[KҠuiLB=3 TB%s8)X^.7kN+ ܎a ӗߩ7&{ yאe~pkDs\8\s{]6~O:Pݗ(RsמN 4T=Hn{wYehBKc =Y<<%mmߕe%N ]ثeQkS[,7\MOO$z[JYX`o 8,lRx 9A/@Gr\?luW/ڗ^skgΰ\H^gT?]uu>; 8s(>;CNQ'cʞT$^b23ON=IٌgҞ47 iS}]smFTv_SƺzS?.Uc5MaflT~aL7:Os#PU?J^5?cK ɒ&l(k& 7R88Q,yz=y9/~w$>x1>88%6d8k-<3d7Doz҅fF:7s3tib>fB/;=]@Ι¬sYw.w#\da¤21-za'lqhPdhx|2T3fv0Ń˩wXXܟB}wpՊ^D4J/~.]M:ד7E{ZL:=n 8I4 Ҝ `5yyzcQ2_aOz.墥-`͘sz.=9{P{3 ʊ~~ HPs-ݳJv{(3v1fXu% }1\nQɺc:u4`<~(p>Y ʏp'uR6b錇B[x pRf`Z V؛Dvg*Jg+ĤR.WdӮ&s/Qɥ̤sYx暭sp q~ pu$`Ҡt-@/}8{,Q0#Ә͔$QOC8Rybp\QRkfp8zjUNx\S!zrAq)$O]&YVKME"m̰֗m(V'u,+9")=>nxF+!V]Zk/ų WERStk;"Ts٨ٮGgyF>L̈~=t,HJhጏRE12K)(fH ƒ,J'a`+%Q^\Lv]W&b)DwԂh -a.jNtIW*κQzZ딧uIvHnx% 5x,ٌf:ᇊXl(81f%ᡨG\W6cQ0KGIt6Ћne.*HnB \Юl*ueYvv#@RiȠt34+^L1(0Xd;Q7e1QH` Zg@ll f6M`z 6D": Wb$VAI@Vѥ-!'^"HFKz(k(&zdH*yA,Do dl!AjE fl5 HG6QlA'XD :$ajăIA/f3!"I:Ld9-xޤn"5a^^+JrŁENcAZ$ VV` Cg c^EXp ㄑ^F"!zm z!o1m< #E$`Cj= بtJȼSxíAЛ$Q'& ˄1鉌.B"6 QTa &Q0,&Xތay")J>w &$DQ`p!@ =D0RKqHyD^ -$u6^1OHpYkl b%N[*(ء=Yud˜Iz  At 6kg4Rol0Bspߴt!jtK0DY:sW<7 .*?5Efse5!<~o$/8&*.RBAWf!nST~DI_6֩JˌqS%f.}TAYrWZҷIU6 hl<4л^EN h,AڵA]^_-96u*32TF*H;e64#^t;K1{ExM8biE}2+ZwFh.RкEM䘝pMfr˹SN MRġ+ _`2?LR K.zطsƬ^hCw]k(}6zXmGV$LIp벽>T5cgx&@ K ݑ;I>1-$|Z_tKoYq77,R'm#[w 7dqHa?6 FdPxJ9,[! ikLG_R|7s ^ś$`Tk'A߉Ƹ8w^m>/?|ꕻvxu8?š7ykvI1)Q ڃ$ƻ.?Gwްrj(yd'2cs\p 5KH?(]sJ~$xt˻a4͘;p-Oco$݇7 RXsLG=H3j%fz Q,-d9O7iGȕSE9m]껎v>Ԡ{J]WV/G=֕Ga<:n3/ cd{C-p$ner ,캗aTж4a9Lnfvʢ>j aVБb)1cZ"fl).RNaX(mXz]f, o ]lm_ ZK]0Z&Zb /^e h9K,I?Cc^2/K؈Cҫ^l9@nѴEwW,^qCfzs3."uiE餜-voړ䞦0{cءkE?8S^=m֠ 6AeDw' &[_ѳ"D%m@u^v as}#ű﯌2kx57u8;  mVV.M`|vmmO6_}'of@5GY94Y[\ 2bOO۲^=kwtnKc7&r3 Q[[Rf/$LPޭm; *ˆՌVߍATLJ׽+v˹a;` )֍1> 2vgfĔLi;N()JlR> tͽӧMk̫Vl3mѢ X=,մ\бŸq[Ra]Ӽ;6 oWT֊%zWOtYvGV_kZs)ڎ%dk:ojcf+事.j|"n#՛*ƕTl/#$L2aU# T!l,Y-iJ!oNg5I w^L}n '^e0Z K"z5glΦadYz`UGK~=cAo֥ 8?\hkVL:@S>оvFfu;Z|.jcvZtm&|y?Fu#a5{ł*EIjdYYq9JUohCfEZnW],ޥFG.}MAo-#Ԟ˶w:3BqjkyV7a)YV/Zjlh%:z \q3wtvlrn x5%4%X37?ݸxFg} >uΆC+gr&+ ČfcBFFEWXZBMԭ幱s"1.=cՅ?ؤ{{lMSV)*nV 8Q'LzU_p% 9lV2Ea&7ZqӝIQ٢7Og/Hߧ~a?tw ?RHђ<,CB k>ߠ|)/`x?)o<ܢ[vjOxa!M(=?@d 5LL$Gf&"u%hJRJ6GbExb~Izyd4z "7ȼ|a-z?R 4%QfaŖ݈(iOtBuhKW$5~.]uMm-3T_ܴw_k, r2qw{Edtw:Kr$& WY6XnfsئtcA @P$%! ![3wSM?l_~_nn,Ŷe1IU3? 칤MYo|?bIo2WUEb+&YF6'Oϖȵ2#) .]dQ65<=K՘%+3Tr ^׀ gV6.ȏ=oP eqˆܬR[fMKyE}kr3+5nyXmj L+ L&@:f"yKhI HE")bh]gUu.(5`ү)ZDC׷TfM/64EuU 6RTWW*+sWc; pO+9.hhhKu/':.U#K#ʜjWc`=0?"&8aܨqh Zw ix^eH"VPA8ĩ&fHHq Ra>ҀDLXE#|?bybLӣVX6k?0]f6}?Ys*M<G}N[qYnV2[i;ڻuAl=7iycAOÌC.$Qd~y}-+1>qndOWS>qcW&%_~Bz˖?i;=+ƂPSTY-zTM~$&ZjQ r8D䩞0(hd#{HXwd(&&yӠ;0pqvGW\sy\#mHDK'FyL)M6"&l0 &0*hB Lr@JI5E'{%>q) l6HO"HAҽ * 1&ޛPڏ1Y$L0yy -&HwPl惙)0DtR`L'aDϝ ЀFp3=CIy)˰)F¸sU~\=jc^MLR=uvc2y<ͷǿ7IQvz2:ؙ- !0DiRHpv(ɘPV .qv3jf֖i/[Z &X:UBstG$ ^ڒʊ_\E\skuz7[HaiG,4cKbJ#+#`Sl\m:j͋L* 4X2ccW{AU58csߴ{ZI_Mr{Jcq܀GR(a"X3'̈9:e?JkcwӇ:;=ݻ6@t]{@iR@^t-z(E#&ٷ1g 8.up`19Đk֒iBaF(`35-CB[b=p,j9]@;Tvޮ)*{  I;JAiV VNv)iKk6-RޥFH Tfh5Q*z=kл&^r5ɥ{GRT(Vwbgh wNbaO +"5d3dA0-fQ7t2r&u_)N\ĨY` U 3G^{as*۰]+]쒮KC.,|~rWcqA2B,0=P1}X/F=Go}KMNk|}5ЙmL0gEgL~g췣a&$`?2`&mK+CuS5S4 ^&,3|ނ7 O}/􆫘d#nYh\Jm#/>N0?5 Ph HjHXɀ @7xUCM!4g>FkxwUf vp֡m-EJgk Wk(sDY" '=F۾$ɠrTM#RDk=ޜj(ǢjC"SՓUIeGSsS5I S2rQ60#bU&/-eYsvd&a (88jb%Qz@LjSn\_pbS-4"q&EYyfsW]gP8҇"0qvGdS$_N@PG mqXps@4z%۸#@]@L8s oclQvt=}A2 ɢZ%. 7hy8Ḿ$~x*APX8A=YÚv`:Bqy'!+ԗH(qIOu>OwbqC#uΉihz$/MI3ie# \T>`XcMr_/uʜJ\4@:2 u&O4N3=HL¸޳ ɣ$`M 2BEgT*Q )nV̰2J:7TQ!XPH,Ck:%ٮ0Fֆ{J?9._߇3v|))o)]Rs&&܍֍Dr\_LIqxE;sSfpJiWaUJ&=|#][ܭ߆lQQ^fp~܃ uùR^Ap0r8_s+`L}';DNW1?U~p))_Pv8. ~(_'-$᱉]36a<wsiQC\=ПO^Yd|Cm.={7}m̹@D3<7,G1YtI3c 5Hyu!Xd bO۝&PR2榉L1Lb7@g!چ^Dmp^#lU50sl4 yP +B$x_%!JHtϨ[^@=h3cA3{N LZk* ㇙Rebm AIT&~2% vɓ |k!W|Ԥ¼eǀ$)gI}283cZU.2aԯ1_!y6Bh}Q2_N6LPn>}*czX%Wul|ߒ.WΞMڝtR Kw3|MT6%#a'2@5-e2D/ujNX״fͷ"%5$wwEſr^`)|]b.5k&$+yIϖ"Zg-A5aK[$-oH!uҘyL(kXN0ik\h?\Cg27}(%]u]rxMb1xu ZwB4dgȭv[v}SR-l@[|G _:E@XnWWImFqv ܡde[dJUa[帬b?+[VK ۲H|C)gqEJiބIJ"Q3rHLӐ0z dLNMjy)*$La27R=zC|A' FRRdfK"x,! ϕ~3O4?%V|T&4rҡ4}7F?YOr( xG'z?Pa$0=t<ـw[nc ߡiuv;1FA?⫼Wd6@d:=N?"RQIWgJXZqIB8a: ĎLa#N^QuhpOy}>xxAY9Cg Ї)?޸tzAbz:^w|KWy {W+ߦ Z3Wg? uب+͆xzKr!?MЯfGe΢\BUQө8SL (RD e1r&jңo0 lJ|ef]fXRyα{zUWКү<짷5O,)d*\UȎ 3%]EbK/~ctad %Sk!ƣVZ@ۓtz.27 QHvaqH!24Z e ސxα׀[~3#ddo>M܎#ݸgOvp=3k]'(1"|7rLv);H)"TrT!m+av&WB:sm-ΣA oX̚-,6],^?0>.ajehntֶxԟ}x0/;aZbHO|QP =74J#24z Q>0(+R$'hxX6h4!  ,93'K!-tGɮa=qz) IwIfMc,P|C ;?<ݓgF@W{Oe@ 3Qգ|ƱGSLʎs&K$~ ei'ME{ƼLZv2Lt o7ѴG{B̧ {kʊ$+ ЌPqLWjZꛩ՚5|Lk_fo™ٲfpu%Br|ҩʦmv#H̄-=~KJz=nDRđr 1SAf1.I:r'^"Қ:D3w pɅ4ãŊfʋ] 0'h_C!"f1h<ġ~ĤCbu"QoZ4PnOˡ +ӴH3ϫ/MMg]V9{8(&Ľ}jįŷ/; D_ks +Sw鮯+mtHc>TߧLD2}zl:uٴf1);/;ljk u9u~fz!- H.-M4%>,Z 'ui*جGii&L;`*+-]2~}]3y9-Ps1٘L(+P!oԀCpCu܄ ӘcHChQl~q{y[,70}[: 8ÁG@]@?{QteWVn(Z~ډO])"QC _\^BBjܭFޖŘ$ʋGq;q:R7m;Τ,&$w!*>#qN$*X!Bµ$AD HA|\[lˎHLN(@ǂ0@8,$x@w/O 2p8cLLƱh9h: 0:P&ZL#knZw}F#c(k,5+LTc>Эa hJ߼GL聼jdj};V}ʪtϞ:/)åT< [&"mXbe+!E.iz#ۍP+&9Zа?eZE T=Bj$w v땃4#-`I-4nUB#ih ƂG{쵻G8jQ|E/ffxOJP5n )ftb p@୉~E" >xu0{:HxiaqԲ0TO`#р >pg4A6V/Љ5l2Ja4z:oXs]G`yPp,z{~ {|64y*84 o/_Xwݝwsɢ*C@j)4 ,yKE)l@< KQiQhvjqU -#7,ֵ~}$\M?Ƒu _fУ噏4< P{zJ'~݊=Fx)5{@N9>׸g:`O1ÉMf؀(;#dF`#9AΞ9oScmXҺH+ALovSz*w2; ̙x'pHDi !S .Z{Zkѡ =Igq&O'kH=iڝMMsxga8~~>&yoO(Ŗ֜ &$!a丙9!& ~Xk4hnyWxMRc~-Z׼VƑJp{CJQޏL 0Od9-liI Cu˅0~YFPhH?#>6>4 cN4n1]́55{r 0 3iAW㻪t@?ns>@7=cEZSUrzJ*.ՊI4 Ja%Q'd>**B*]I˧]jjBVQwOE)he =Hx$&=%卺 &HbM'NHڄ&>i "!+Uw)P1e7W)j@Ps[DIW0(y1!3>#`hCWn[9:n|S  ?m'Dok {|q \YPpSAGJ800{j4ߒN@7@}S=+79Yaڌ%'se@R L&OkxZ{ZD uuk%9GG+N!jYIE &@}zGpvj5J'3e}(R08EףHBͫ{[jZakvWW XSY?D_Ć &o6Cυ7pH< N L鿌PhEqLMɣNOt[,"e~\ p ',|cp<%}һo׸̫Jg4y"'o4"Y2r>/ʉx.C82*HIh&RL360үhe4Ձ>xWj\A-nřZ ܰRѥY0:} W(i+4 ^! yg ~WIϰoG&L_#cY}OlSxv-:,$ ha_nj]J ͠d9.Q}4zҎK.C0 6d5906-/hXK_8l3?Jz2?pY\DtjZ5O* `-cG[<[_Th.x-:M\E<3B7G8)/Cp&57Ih*4W#ffmpF\ j$._JW-!,~!7 T߾EܟWڢYvFXk{5l$ĺZCiAӫ Z^Fl^!ku1L~rqRҨp$Wؚ~N||G7kڪ9zs p&܀K2)5vlh= 'X<@ 逴FI}IJMr;:lS8p>;DGzķws֣V݋*x!Uxs2V38^++슭k1c(Eg3=L&h)-vСcɤMV+EZ%%YKuU Z_F'ޗokF(kTj&2cB-Ù|Qo3xQ7#) )RFLqtuѪ&ASi1W7ک"v^uKG-L9*^FsKW-m|Y6ai|.V95\f US9RVts \>c 332Dv79W5~ZU0X2ė Z\a Idb$]JqyS2C&6}_Mt`!h9V+j,ʃs{n73qZ< ?6.hN_>~=Ydֶg'Ƨ֌~f4*έ̀v$?L{dOP]DLd$ItȪ`f fwH0 fn '3՘"I#ĥ vuiK? LN|Wt*U?]13FU9Ozş,^o_yp7}Q_5#>_j\hٓ+}z}L鄓Bh 'T_Qg𺬖jǸqS|?܇qkR?IrEPdLVDd :.T f6e2 AH#ɨLpZ|YdW_Ri*!a⬰sOӕuzrhЕóU壼 xlOF6lA02 Šrً-/{M'y9'B!?8gSף$0Y1JjU oZOw}=>{eqj( ϜKPc͛oHE=hk Nry=ΨtBN7{Ny$3}fkzϖ_%K};PfLhݏM 5Zt!H4e-ׁ%NXa%ZcWĿf-|`K(Lp_WV񗠐+R'Bp)v/rÞl8')= M>p.=06Li]Pzqp6r ^z#HP~G`ҩGן8Ri/Xg~aObLl9 $عӓǗ 8)KS]{VxΔ⇏'/| ൢ:Թsg'svγem{߼Rms>xۇ!x=>|g^̌~(\i6P+I-r\0|l1|AcY 6g ;,b*xԁ˃P9Y|"9$HVj#ֱB8f':K#eP$g&$h^hHp #tg0Db B+*,[YdزRϰx˷u& AdWЅsqp>(A=s܆.7l^VpI&xçWTrJ r0o_nRAFo^q2o 佢Y]`t Պpԩ|`Ix`JJNF:%lAB}p.R-ꑤ+Tǂ!4PLI ^.)( -%_zW*`I:_UbuwwY:u* o8,0r_2^Q@?nu)hҰٸ[Rl\jtu:]2fYΖ듩ot So渧١SmWqN&kVsNte_jrO8NcmH擅abG r$hw5 6zM u\X[t}۾%v)+f?ab W`lqb=bwξLa*lYTvc| kĻR]#W3{h1J%H!!WchY6A3V0{I`! =\LFӻoN* +{0 o.Z[PTUOLfJԸ%XH؈d"7ֱ kLǨ2 fex~qC3?Q>aqáҒ0+?ޜ^2SkX=Ө9po()m` -9WJĮ҆R!!+[ gwz6_JJe&}Cz41͞4N(/A%$$>LTe9T('wH0nX)BXNbtXFMy4ѲY0jlP#E*)c? Y"(hAZ b.ZɐhƗ2I%7;)&4^IL<~iBr<ΏldhIKH3UM2elx)Ӣez?*gA2$U~>"pGIӜ4g, DJf2ךKhXTCR3Գ7 ++*[i1@ ( 1 zxT!&^Z0FUHW/̶@R#`37@QlQ)e3`аJY0Wa*T,Pev[ M z[!8e2 ̦3 2_Lnr3Pư?1z唗h!F#Q>2J +e&u~:/}') i ~`e֖ cJ5 2VC @ FƍfY-{P\]`-Jl0X6)(;!$VV Jbj#^j^/YMҼQyr>,>4ktHP)w -4yQP,/olNQZ]`PQVidbXV@sCު9J/WN9hlkgd \4u9fTvPU ,2)h^fj]2U P(j YE B+C9e.F`0: jS0 Ȳ怶V54gkV( \`W˥ ]Wmr Z¶VK!vM[E*X3J q U92~erѰ2U`Nk~}Z$z?~mĥ 9>7apD8 y#U7a=8=E&(X??&|Kjz`[:YP)m++jiKnm Zpx15YYRUX/6pt_š;2;;2qz0ZeaW ߬5"rwC黮9A~Ӏ}n>iG;DU6ć4Sm$)kc*B̳2%v N`HS줭e5`9H7̎*B.v9]9;̼_Y^У=v]n_ [Rp|.k0FBt8y/oS2 ޏ Ŷ^"/47 fbC :$Qb#s,Eɲ}&L|ƐTDžΰxj$ghX(RoA{%<nIكoZ)}#Hnl^jJzo_[Z@:pҚB+Hn,&taW5@[3$[r8gTMGMee CIn( *N[`偁~h>:/ioj,;D"W[o((Zh7Å=t)x`~_ nX^#ŮyIaTN\ $N "st檶6~b$dVZ5XؼCUU >塹Gn-f5{;vX۴(/sT픂0:Ekm'yBC̙<~Z5?}{ɷ\-(:3־?.?~k-8: n2ŞdXBcqUFq=ZuN8ͺ@,fʟѢenD 'K{voG_v(ٽt]sm'e/\11ZQS Fl2#/I[[6jhzR%ؽ*𓎝nZ){<嚲Y{T}4 5vL/0͕:y2Yۮlw,_`zLcW9Ks-.jt]YAXD_RCH█$_x`_e7bVNٹPIoG'=sp,- hv/jG0\ںp'a=A;Ksusq&,fYEe畗LQ,lkZDΗqоgU /7j;@"Qڠj6"̴.R/h37;\?ECdՊ-`=/fHd"~UdEB dУP=2G8TB<4~ٴ`Ճ5|\b.~s3^vۦ憮xQD bE]&sâ7mM3TRr'Py5'N<5{DBi?^+a=?eN=~ǠwD_OP 'h`:P13諏5?շkgp( v?\lA떍ltY߯-pRRAX}.36;t/ݛv;SIS8B?ငB)Y,>a>wTL 'o:JgMDwUX ѝĹd'>$3?C1zXm*113=I-ԔCLӫayyb,zdbq6 G9j oxo6$  yitzpM׋:-'B >HA"l\M'HTչIU}hRy$f9]k rG&U |~xh߬_V_|gSN (" ٪i⺅l%E6'0kL{8A&u_L3ӄNd&k3Z>Bbz^2g[5$0[nr!ɮ &Y֏㛷]X`Кw^ "I+umv<3 f,Kq5t ]Tw&t[>b舫 :ٵ|ݝ7xNE\T )1EѠ4O" (sP¦ x3-b:p3>0ш?VT Z&IFj%zI5=:Q5ĚKpL Gk^&}^2&_I1ˋ/ Y'RZH%> ,,nwI=?PkEY#z 45vW^ّeՔ=u q|+౉B;y3D)L&v 'J>h*Ѻ>s}*^*yLbl9d>q/1~/wPiSybW^ne{X z>|S|O$'G]P \97TۘoCYy9}'iͪqETV_gG\xLDll@]F l,@St7uY-nʽU`ą|1{ucnXsyp_bs\ұlBn̝s)vҢIz9ӟcNYLrTeG΀8~`#myХN?9tnEE.\p7wE#gN=U蛜|ĕ"t;ۛNI[`/89iKr'aI(+8W$MJ1=ZNYcן]z×6?y"Qu)m>O!եF@b|n+"Io~sqo_9}Vƽq =?O/(Qwј1!WsED5a &i /o$A8!26q愚6' P!U05hƫFԥ"xA  g:T xhL>ScF Kï>63rHJ{`0I87%N}[BHÊ}U֙K#rC0v1K46vΪ< \:/c0-*Vǩ%rNpPa6Pl*LJӏyVڧȕr0墨4OG:ٝf+\{IU*Z8 Jʢ glu!y?gk$Ѕ-r%j32 pN0yl5-OȵfmIn00%&LSTr@ t){iEٲZw'p*4dR3f@c+@S!sobcx)e|Sl+.BoiQH9 U\aezH"cߔӊ6٥!zD XW (T8I8h#H$ED/Mu]4Cf~'tDoceyײMIVp@?-=6Ss,e:3eZ5R9+7.9Imۇ[X~g}cUlmM_a[ Tsxg!nUyMeyG&B^mc r4sʭj\g1H9T1rFBCZ0JPhwanĠmMP5 zނ5oB͂w_:WK^3~VO\n}F_pw>WCkQҳ׌n^TbPƵs& -3[Ag42nbby5͞dkKcUW ԓ'6%O\jl(k3%bd Q)lju%u;g  Bi(;PbL?Ș(@UKJ S)tkf:]3`uG0~p-a%:A* ͛Lf!/k`GX7-i1nRt46E/g$(/u a mu֒RQIsʠe3@{ E~^Ot3GgyV T[ͻ=ڿʥ iu5;Np*(jk ^9dcpv d 3u xBJt,1:Jh} -@i262!)Ԩ%m0dJ9H?Ip;/Z NS7Ҫl+dx@0:$ߪd2 ! jEh`_܏@l'.QwRS;P`! @7/Buy^@gM{q^ɥavwY<.Mso\'¥a3ˀbA;UAMt%TFTC9`1Q MCL";vq\ 4gD snC ɳZ?Jv ;hGT{B)Aq㣏pE)HF`$@ 2'a|>/ bJ@$c*KZWղ[/Djm(U oM]n×5uǗZ5.XyI+93ZG5ni!&\9maxSDǪ;V/y*k1'Xum~eMq؁sVw4X&,oț2w˦CS{W;_ *h/L}{ߞ鷅r:6T\acS,)Jtc=w:G:a){$!|:jAJW飩pPRYJ]'KE%-Yl@xdΡ8y/BczU d^0 [ />@aPF A<1| 5&TЃ֤%YL#kA/tCKК;В~:]ړjIY[=Ip>d-yRx2^?+>RZ6rg^'G vf^;Q7tџk$`%䅝'@6h_ S̉e<9$CDG>

|֕yk?cڇaܯ"T9F0P> !x\ *=\ʵ׾޾k>b4djCȆi>Ye"X&_{晷vIrZZnGZ9p##G6>~@n:DpE{ Hy|קj [ &qs`ULG NMj[ۄ0YֳtiҮ,l-)\cD:MNO2F9ĉ*W?/o>cv:gˋ |5 !\3Ğ'ލzflYwR~yB0fLv-@x"͓:≦$K$a8%ADcD7h Ǿȼ-5S4rR_5qe1o- CA5t-ž"K^aRUFlФ}!:+!]gre{i"hġ;2L[N_sf8X ݯ5#5蚧`@)G/=6k2P/F c8^]HR*y[ EHn e1ߨin?=Du䭛C,M,$Ww/YGCZeci456\Ǥ-`)43vI7B_@!lr.sᱧÿkdRxRitj)Fc~f^̏ H/[V2c(nFҶm0; Ao!8NrP,(=m >!= s29@6%.V&d <䪉犅c >,u$S*LVrJT+UB"S+d3 P u:gAlIժCfT*e7%2A&QMCQi!f|2+8R4fqD%)/i4fZ5iR &zH$J()2JrN!T`AjL!%k|U7ex`~ +پTTOʸ>Ȑ .D[z}'U߁wxE|c4~NT~rZ%@ څ +ZsVTe+zZ#X>{P^ttoAҧUf hO੆Wc j1Z< 8 t F1ƌGgT=" gPçA{%a|)H~tXT Qp|vJS&q~ƩFۭ#.i׀TʆlAߪj4~` 9!'`ڐf 0YHAHΉ)TB-ਛߴI7Y݌:֨n;VBLRS$qyW|&d94Jt%ƘV0o1C2CLHqzje4+i Gzi d_|ѩk>B\^R rEN~Uͪ%+ U08ZM=1-&x, Q-}1)6Ըj.LGTx4j2_"A|ow;|%4cE1Y$9vL6B3%^ jHwgNmڹ3wmuwq[GKGq[thՠ-}QJAG}}{tpX7m{:e=ؤl} @Q ݐ ۜ@^s6f0Y.O u>O.$"@34 ~LpÌ+Β.; } @MTZ9u8=rXn_k5Dkk,oDmKky%NS򺖒ںak ~'@;=.㷢oXWvL7 Sc 9 9׮^c֟LEˆiϷ@OBy!?34$B-ϊ ~dY39ss؋\=ϝ9.X֋ d3z!.%"Kgx{ۉ6H)9&?P7!l07Y)za; W`y壞l}n( 5nH1L"bO66Ĭ$.hd `/0󉚊]R8/@NzaC#sZڐCcW9j՜P!OfLNw{ #La&+8[Rsp~{qCnhcgw:F8j"_)l4,sk?x,R9fUE^0{i%dwKh+ipڅ|O6Z994D/ -4b$ѣKec"s4!f}I5I5-jO-fsZ5v4X܅+i +"#/P x:.U r%h:t55j=^A59FXFoѪE}( ntјW@'p8'j$t淸‘wr߾ʊW?Wk}84fLS>3dݢkNyiNj]qJ!gݒKՔGJVV^Qn1g&=sW썏;lt,CoY7Qd^`,wXa3^τM~!W0PLKܗ]Q;bPˀƓ=|CMk7%Yo4-z$Ғ:>Ulyrҁ?CR_};ڎ,&6|G7Wv t,-j6̨2es ad?xzF3 yB,%nN10f(,YDʸmqoɐ=u†+FiZjRإW۶2u ֱ!̨3*[ #RȰǖHj4N_êQ!,Zb~X6` { ZSj[Y0w#%J`.n9E2UoY5x rBҊiCv=#^՘|N/`zym{,O8Ȑ zG4X" VZM![WM[a{~=XLHJݍ>؊흲PŇ@ ʕm no{yg$EG^ݑ0Ft@[3MWn}'隕oۿY-70@P GYu FVx3}ZW{K4Jc]3y `~:;ӽ2?\iyOO<Mwe 4퓤|O=?cF/<^i5pcϛwJ9ˉ|mԔQX;L$ =߁+ ֽ>:pze!W5Zn;<}ՈW==g+i!p>ݯwRPBes*JSwi ]B{؏ oZ6>YY g.|?9mh $ANJ4pxKpDd 0#ZFti-7R`u[WS-8j(@t# F@f8E { xa#9X"DLx}W?CA.bΔm8Pd]p8On9zQVx>9`X[|o8#Wd2M%OaQt2l,KYzRT2ƈAwxHΆGm*6&o}gp )O JXFf bt 8 WH5 L^49#a7WThs*P GwDu(e<77QbMq J%LJW2<(oRƞ+1 B\S'xD~ X!bs@mA)Ew(p}&ECLo秅R\s: {R((E2sN*;;G4 TP_̀%9r<@܎*y o K>;Lw ZJ/";񥟂 \'3R傧kb1e)f׋w :F$̙ߨKM܍G6 ]7nߵ3wȝ4!:16%-fk 谪֞5n圶1 z8mv3k9!ZKOg>l ЎWjըo;abzk+CB[m?-Qhn˞G KA#RX)/; JPNdžΚ54ݬp^ dK*F> Gİ< ;wόb =hB #䗖"~ӧ@m|w}&*XmL2KA%rhH`qQ _(H Bp'_P('l+b4 Xe(~֧bTbž.^x%+TO72[2hP|E`իmRG(/EI٠<,&کA/[@rK#2Ghݍ=UT69GcT͏4 )Y O'@OU ypC!"O ,0t `IP:M)W1=Tc Eg1eGSuԀ\^%^I_L2/͡T7F`,3j3*+QL.#k! gΥ3K;/[6n8} ?ލ3ʡn|+XR`V^P<6RBOd 2O7deG^J:n\\ ҹvm+qFv7H'_{IRh v3`T 5IMSy:<JiO76O;H{0} RÉ~xU8!Dh"=eN 7cQHz Ag16O 'E)pNϊY\k;4:MrrWHaz|@FPdS>y ([n fi Roy $ 1ZhO-f?dV̢4ôPҫfH@|'X4)nqKO.4͡S5Hh@W<2'a@4cb Csng(*pOT.^pEW>#K`+x'X0%aosO/gC U_Vq0!:6Wf Wh\;ƛ]8%tV~4Ė9saqѐ>*O*3ͯ gww֜;}CGc͚mn]$ٷeO9Ե6|VW{ϓ[[ZU{7$۽hKFJY0ER-8\&,GI|Q V*T('sƒ0HGQ9zJ]B3JZyzs" 4l^ `t\r]EИFy5yq M՚~x1RЕ2y<y|j'pSzܬN@2x 0>//6kڗ|!G2x|\BYDn f7TBoAQGdz._ I"- ygq{kĹ $ɂQ`CQpB:qhP8 f5o,o%C,)T;]\|@j2]x9MY2](2JF>JiSEn1m2}J"Ǘ}JRLFi5ۭFaʏ5^dTL0̎h!-äAjάӕҼјo.͍f;M<7E-Ç?N!mM~`޼HQ'd\40ߌÑ;'|?:߽2^*TlYP.YL)uR)gX(9ʔ ]r<ÆfɤK$rB,@? ՘Wt`99vj7` A FQ|4!昹$x≍u<}!x]Ԝ5 pqs_fȍoJs4f&0i'|O%ĸ>T?n;!|-iFr ΅gr5ȫDV{!Lvm&AX;0A+ѨwQҟ'<új "!Nl|XxjQ#'sD.Lu&o^nm\ѽhV_sXBlنg)ttwfbk~:r`6'Gˬֿ{;j=f>5$|8}MnKn&z8aF/K67|D c2]|ɪxXT>mZK1yC1}w/6lz#ޒ~_qKKK=@n oZ/o=qVeᛶp9R'. }Y{{q"޶Jϐ | .(D_*+'\.?hu?N'᪪@=ƬTXUU^?:5/p9)2eeU3ұsX&:tq,8qd>IMLO-Ow&bLU+PNU+zܪRVpD#uW_vU\?I?NƧb`|*0gr$F22{9K8BT(GK&7X,YX3.A 5 $@k3W ^JG ~F#| 8}#@0C fS~@*i1@=P&z4&)j0trGQ sRUcuYi(tp: 6V47T2?m ^MW5+u<<53 Ta?e}U8z|c;*b<#rN`%rOxFA)\&?W+cᲭJf.Q%@Z!+3Ǚ-dd`-Pj(^'`uu5u5F}qa̲e& ihQTbO(}\D el!C>$UBџafJǬw:c$Y:}}gkAQm}]tv(b{@WUWjTYrRm޽pQ~)nByuuCE݋kfVh˚r f'x>7vH';3퓊ZʤydCYfoegߥXE^^MgJQ6уO++)-L_bݧ(/'ϖ$.KU&³<_hJ}⾑P8'Gz3i gb#%X& 0('~/^f/1U}R{VΚD@Crt}FZQ*]L ܆s}%-` vlIRnG ݸYޜ D7MqѶ\=Lh#;7/[G-]zcĪ KH/ytۤZ\GbET|fڂ(JXMOTtV|M ȡD=PKqC#~H{-n!RQNE=/zuAX- 6M#=PKCJ=82rʑc 4DI('o`m~O:"̆aזW#gwjWi w4\#~I0Җ̞͛=4Vۘ[}/4r2KZ&jUay(xř-= kD/f^1IYܩ+ԕ̑B;TuE6rͺiUv%͗\3\sS lɷ>o^ cWRaYquEz_Y6i@3o?0O-XW%ViQbHݸAݽp juFZ/$j5R2!}?G1nBA4s@@JU!'TmkYtv?07?<>J[뿿b{9+G,t\\6(M.fan.n3ۮOz׳9F^|)5^? 澲obzڌ˖<#2mίۨ-:=^lƺր<J|&LBDH< h`I✟8~O}I!gHc=N G`dFsYhH{j̤>9ɠY6~Cs(LDiKs/urUU /hMqӰvsJ5l]Y/ybXEvŽ{)B"[(zjQO^A{3L*_*hA[mX}ի9O_6YTFԅCF\.dG (Ò=fy3k̑P^F> I 4 -ђbx8M? Yx ">!|~S&ʄZ4O>ڡ[ߺ۟ԗ eMkd[+MO@ *)joE}wCwl+G@TXbc ՘u}t|痣kv{^g.Q+yq i5P{xR8MC:[01l(fN\pQ;wbÇRNXԶrU*% W^ ?%yaYĘzBI=&(ʍไ}dCJ3+li|i˖&i bC@|]:. [L_T}woIuL4iAeB BX Z /?th9۶xz`}cHsta%eF33yL3~f3<. B^[L2x,`5 @ԃXRj<æOT-j֕"NSٳ4ysZzp6X+ԨlDEl}NtA^'`R\Xg3GG` CfA[9WvѻNxҧl>}Ɲ9.aWhc>@_5;j 3#^A0vq-ٿSp)CdF|xF*8Fё"U\Q&3L#Ndi<4aJq3`گe9GB &.ImMf Ggh{:'9 NTƒՠO^=*e(P);@߯>+Cށsћk/>[:! 1p~ ]މ9r#YQ^B .CAWMg OLLH"Яs hzo$1iZ{sᤊfD@FQx,7'l޻ 9mjކ2ЉǾj jxv3qY+QX\u iAs E7^x I.01ۉMijd‹y@7YakN}j~o; ۺV?fo>zmώ?uw϶.^}nٹOq+;eoBweܹUa۶ yVQ["?}!&rλAPPQ(8h;8]qcY}fgnr^?KAf3\$!4}kO=Esix7?W_=bw]KgF#sB"ڶ~LԓRgSƔ3UL-SLof&1S~Y¬z-` DD,EHވˠ  u)OZ>INpZfu Ԇ'TsL9}dTqz×Y2<3B[pGV "eܜ+hJ-}U('|,oc5\,a8<Ҿ;?H;h̿Q~ee>x&/ g+rm?Iؼh?Wq,2! h6_` `"{}R 7$5"GB\!}Ϟx僣Gf|4Kզ3k7~]7uSltL;X1{vqĕ/~ss+7nX91C^/2 &uJ`n:c>ֱfNmF0#&!m@]k M%~ˉ.3z32PU~<??BU82c_"i vIսߵv~>}$2V 'Twa{>blbRBF\[Hj džpP4O7<)3?Jlm;Pfo3.]4W3]u ;\@iOyمk0 (Oe*-d![\27<\΃`RlQjgc8i \ƣvn5FhX wpfQ>1܂}.+CYB _㱨yi4 ^ ӻhOwD:, u? ;z%0fȑFQpH>#?)U}v4".Eڌ Oׁ0 f8Ց# a} o˭-{=8'YExDV0a5iwj,`,Z*.w=6B+[jhPLAT]5 ~pSH` 8UH#'~RX%RU W) RY:W |PӭkLm8!ed+2l ,s8p!m&%{%Z[.^ oñc|Hg (h]y_y[1K+0Gm[ZpeBsL{&b">·cw8 F5wa&J6jNq!M 53dEUI^^|#:~8zA<ϴm*pZ[@]ךsyA+V͐p@$PDQU,,YY4#].]rѾMoUh* xq)QٱA) IdqW@_+/ Gwt&i^WmyҌrARyw!7D !nҿbӞknTޢ/cmRc n,&wn\@܈t{O\z ҫ;G=o ]R`B{V+5%3eVy,W0玉___i,i4Mym|͛0t͚jr)e*zf$]1CɍHBif hbʐx tD&8L,["AuߝD1Ӌ٧:{x0Ҷd֞=Б^sŊ;a%R{7G=H,7,1ocփףЏexX!4ÇkPiC8XkWeL#36g #H>6$.=̞P2* 6-֘Yt!|ۀGKk4g^x]R]ؼ7W;i$bG?ƿhӃ,Pd3H W @)M&+f||\2+6~ɩL-qIxZ2lJʝjT\N\o u8u̿EK*iۣ^ȣ%iqB;󟽼lu}v;,@r;L,ge/eb㣧=)_hs0Up> d8WOOfW8h{,P:D({)t)K =GP?G?[&a"tb~z\n'ms|vX?k?q\43&#> tdA](gw=>< BY"hD1\XⅫݥaW>yyAҦ@D+~{14 ٣4Fpw%B\'K CDnlXT ,M/>GyI.lj;E p⅗D*ǡ# ~ȗķDn\߆ȇD !3v]9/TA=Lug*Jbz'&O83t5gŠ]|֊ īx|`pҲa!QBu=*.v޶%[<s8>R8*Fֺ/cO c\L]T+Q, & !>F T =m}:emo A)JkygM\Ӽ3f}塳[CYtɛ!d%&b؋kXBC.S Qe&66v$2Dl  !(ى2uG=K,gGKp@M&I u@nJxbC4S) > &BUʀZ h'1{C `jfѐ`,7?Í ?+i8?zJ)e3 ֕?]SCIB7Z-T>5@D%4T*!{^y jbR櫻_ɶTjի2 IWL=dQ=`!=#*o{]oI|;I?VD`eDU'L4=GF `$x|t`BN@01? STS,2d&Ww#]`j.&u#gjmmC3^?ԅ7mm`b$aP-mcpp5.B9B1OC?U:˯OxZsgY/:\OƴHˋ)Mvb JG#L=}B7~?Lz?/ѯh8"hX0[;V:V,'m$ԯsETX9 ~kYLl& ztsR)/T [?|2O;-N;wΫgEe{^]oL9wHrKaqC.`jLH7 0L 8>_TCv<<i6HB4LAN$b`4Sx˕%<* 397uM!/篖@|X#kM#CY oI6B@<9q,uW0L`"ڦ8$B2 A&3h #ٓIO^=R?V\1EnœE@bd#ِ/! 1oހ%qKi^" p`VyRīfĉbϛ E:T/܇y3E|r,Y8%^BqݤTB0 "/Q|Pf5J=#pJ!54L5֙?dsavAb1>4gS7olnni X>~'5`B$X8{2h+$U&6%eB`B& NO:Y(#h,5bQ$eY |ZQaqӘSPQ 0, kq!}aA)j"G8mO8pL -j5M!,HnsT<[ s&v5HÐQJu5'{Yϐﳦ:U@ jǾ|,8w2e<9D܄)YV׾κ7cieuk?9T+5ps8M!~yJN7`u5>]-ANX`L'7FC#44JUkRj49jY&*O-ď[ձ1`V[<7%ǥUT.oϏv&j4?Uk1 39/пN"Ӣ+]4‚>;ʬTe \mTgHi꠼6ɭpT=g9$pБ\&d6Eͪ/TRJfנtS4juzdMYr؇W?1E+`Qt,]W6}&#>ý*-WeW39XT4Þ fn̑h3tUr.oz= zAj\.;xpR-1m9U vqpok~+R bQm{+TC* (9CJUET@f,JԧRed:mPk-W(F_,]T^e*', biW̲P8xRz礯Mwwp^@X1P.yo_\w?O:8L$BÇ,ߴe-%S45m/_^P>054ЗffL4У}]j˒GA.i*u*_zE-#fί7޿t-#3,JCDKʤ,I% *H6xst"(t b s=$ӉӘOyX\tlÆ@  JH(zZ]ֻ2=5BZNAO׿Ϣg&5Im>C{`2džiyW6\p-&ź[}#&_?I <{6z&7a3&1-g#,]4V*6 ϳ+T]Wڪ'OՓCXhފ"V[^yJS\+ Tp]V13%WqvV蕅XS<E~X9`0<5}o?sz/L˛ڙlݘjVϣ2!Szyx7)vr`A :ݷ_F cQ 4oVj d76-mj̖pkyV:fulUO Ԙ…uG]g9@åYFaa\0aMڇqP/}=3G@qɥ^|W* Ρw V<?<(|+VaޒEۯo6w*bPu%V";)pNZkk"$GsCO+x\ߪn`ʙ"!8vItܻƒ$p yBa\%ϫ+!:+DGfKIڰIϘv27A,F#;~4T6hP h SV;Kw˂!sw+n,gVYPgvՇ\T흜wlOwI"8<]cs<6]CPw0eěߋ*!PKbuo4[Xrs^nn%E}V(vZ]aZ]84{̸p}~-=V_7fvFqD&qS\]Jnܵ+p-d x!zbꑛKXbhɑ=\諦;z=Vr[U𡪘TUVo3>nIsc,r|tat/:7" T(arl/pdڛ' 2Ϗ$~GvV" R  _R ni Li1v4o\-R-.#$\-+UA2EX%ENcOWO ꉚm> |o%ms6k E+6b#վX3طט3@1<'ߞ6&sۦ$wA\4PdjMƕwu\E0ӈa̯D1K!wHqU$!2m2OwIT` i G^rfDsEGTZ*x9wL=ח{{eUF0I}j+zd2<wCuHou`TnOAOo"^VRSmE޶#}~.}}ݺ1ni=h:U18A%ⰬUbuWjpoUe y@GW1{#9uۺfQ;ܒ@rbVGa+M\?qd$jLg[vk r\,ys#46?>ml~ryNl]ҪFIۤدhjur&tp>L.LT[=" dqG”EIx\9zos}œӇϲ76_meU%3fzk:oiFӖ\mz*_ڛT%ޮYJi.&0V\ wYHIXWRHITF,GKX[BHf +֥roAcgnI})t_9J3.TȦ[7BOlڟؐ5/.='YhW +'7<8keIj6>RSVǶ?x k z}%k]ɀ\vؖOj_ߍfCZ]P]=y F`b} M+@ƕ2.%F揖odKC.s> $tI)tucjW.:v1{f%,h+,sJlyBeh!7jw~}_`T W[RFF-t ExcTCnSl fzˉԹ0(m_n6ЇzfNeЫTS2jR|JM+c@ܬˆ=FEUqȌTz}J=OoӫyR따5S:\͞P +)iK]žTW˘hg4-xYWOHQYL0^ %L" Y47zzpLjx(}}^-9{"7-{hA7X`9OC.:VGsMJ÷Lܕ%gDz J.w>5( .Ls ./uUk NzhZ/k1܆iMCܵZBTVJT/|{}e~~(׏TqPrJF)0=]Vf4pT;Tj_nPtoHQZ۩N #,WB2Ȁa;!t&D`d'gƚ9hGф":DgDdϛ@!;"$8MA,!yC2z7]xhqmM2d]y- Xp,cنWdqTÏ;oޠQyEg|ZfnU>>N|/Px/ѫZM%0kp9<=0@f8xC!'ĵBâE[qEK\ˁKgo8z;O!>:h;B\&5XW!uw㗍#퍗7EW* ׇ y{p2yE桍ۥ(t|S,už˖{prL 3rFWj^|{3563=L颁SPF3s %܎gq:ô(mA?9X h׿8Uvw:ٔc2D?dLbo~6N"* ;xc =pa\O+`Iׯ8)xZ~VGji0}f9i,x@Li<C0K<I -fB!nm$jpQ`Ip.B* FcL8;Dkwg~l6|9A&|)5S@]ŎTKA4[+b9fb6NSKi1L>/@o_k>?T, E tĐ)RLUm$l9,\$GfjN(k\tVI\ E*D>!=O ;yuFtJ1E-h>Hze6m¢ wOwfS9U!b@4H1p'g|ztqTqh TtA*e\z$eчk~@g7`zd1 Jn n]~BwAF%w6́nf?ߠa䵃}JAlcjՂR*\i"|mrG ꈚ'Adu+%f.zHuS 7Bo~2fmEWpk0b00t=䍾쌳^B߃)fҎG;Jxow'y͏͹ T ^nt}Q %GM8S׮w节z ">RO(X1!Xj^ f?>s Հc7?}P,V|4^Hje|fo\./铹w 9z\34;ppe= ԂIOjV7b1M)f?%X Z&^͂^%ePfgԠC`¡hzs5qʋ]QDfH]˒6oEY|A /ѐpx8"W3f x_~N\skz ],AWϢODA5h=3_B3"fDHc.M@?jp}wYr?c#G_'2_cVk3:?$XؙoorM_~ BO3n%&{~ao]Bagn}$YL|lD!Ħ όAuHJʘЅ(]hM1;Y';KFz%{&*$"qq>kcޟq,de'ke3ObΞ.qq{zs`iOͦ ʦo kj/A >>w^r1ghhU=2]:pG.8oߔ o&<5O!7v|YX>>3":N KA}3Iz[\]vDlzh*˕Pw PH/>K'؀QMV 2"[\., B񎙙_8ЮVw m[aʐ|w;뫖5C|x$\6tcx/;O[x4 Mͥz&]c)Eo~lO2x1y`{ s&S0[8m0hj\2v`!+I`iQffaUEU&4gӈE@qZ#lʹۯOʼnmMT>v\ f)6f@uTO<&*[\j6`.A3dp&3g5KPuv6T1?XԬD1kTlo~ypSI*m>TNN/3xÚgTKXbj!Q'{P{Vlپ~vE;V=+1/G_sNJ5 ɦ7{AU$à PT1a٤>2ܲgdW4Zn,XHBOfV(FolpԽn{R]t\[e@{d(#& w)3N/} 0ɲPDci^cI+7x|sQ',IetQ5&kΆ\#2ׁLCI>G!WMhw-j%;{?{ԏ"F)ٿƽD4&Q?HxDEg}1EnXk8&csLuen\Q =ۄ m s]~v6cD{W_-ǎɢjQxfJ .LR2x bV9j~elGLbWq: s4SmVLY{*0kt#xZ")(c󕸶vKflNXA$ jX<y4 )γtM[D^pa:O4gwt+v{:FN t?A%JdA e˷gwPJ-01 c-;}M qr_}[:?Wk8"ym"NNҴ9SH-ˌQ^7 Lwysf},{0\mSOl8ޙÝMε.\cFON=U_~Tu/p?vĸ/tʓ:@bDԝq &0L6dT R|e'x7vRx xl7J a1rCfjYbWĎln? 2$zJ$q9Y Ҋ": H=o<-G_iy/SZ̡*Re`T'FOr% Ld%ۊ>sg? TH6,Smx Xt0\'6} (]N_&0sS~K!/q*aNnD b$#giDr9:y99d[Y:o^jfrJ@zp M F/!=HYe\x(I6ǨũeeG9 Lzz#RԢVa5'mLKPD=FXV)ҙfQˠlOxc`d```ad+`I={&r00DC xc`d``c @dyyxڍTjAݝEW%EQ"sQr ^^骙8Q=]Oxh=0&t :%PhiѲ/mWx0swcņ>x, !U&M{4ҩ"/Tr'}Wr; w^lhόrscƇ)ѽ^őrDȷAOפ[S-U1>{qC˼ty8TllW3=͝;fy^Ul|8qtg_ծ91\5w-j<-_ިx^l޿-{5"kxf_$pJNyD8/i& cеzs^. o|?~E}|mL>N‰9"z;V0ocP=l8vgSYFnARџ! ՁYf5>ٟ&}j?[)kmzRuwcĦfmf|-?)kvh娀SD?|]PɯC{"8[Sn՝ÁJ2l~Za=׹.|({>gSʓv] ?ɺ~4dsG6s=Q_h;"xڝS`22*3rJHTqĈ)PX"23GD#2S\9"cDD52FY)GhdfdD :m`K"j9QIY@QK׀s3H3 3Y™S❕38+29~{n6&;:17k.wn[lvq0/oZ@c0q/(f][ ψw8^XІ"8 ŸJ ':F,A^G-^ZLIIJOI'M2QbO&%&ےY1oqqdjIRє[jJ*#UP0 Mhi45 8222g:.]^^X>A[_!Gx3޿Rs+Yٷ*kvU0u5{u\Z#^c%FYkk;P2$O~)@)dJ:.*Q}#ٍ_i`r鹢\Un[-7Litk#x#{c(O׷IIollf1 Ζ-^&Y ja3ւBI!PTY*EƢ ̑qɭ̭n"Up#(Ly*7!>?ډY' >j o"YUL-)K2K8%ҘRqiGi_v,P*kb'֋{(8$0I$jooEF|z_>Gefe~~Sx 倹:[ K]12@Fir\+iŇ5###JR D4橮79ux<φx<y|x^/Kerx^kuzxo[mvx{}~|>Gcq|>gsy< _/+U|߄o;]|~?'S~_7~?Og ?_ofQ`se`k8p=wpw#s0{޸xxxGx x.`Jlc$<OS4<7 7㙸³</‹/ «xhfF p#[qNE}܆a˸Qh| >'IdoSix+ކx'ޅw=x/>g3YlsA| Eb| _/W+Uj| _7Mf| ߆ow;]n|߇Ca~?O'Si ~?/E~_ůM~C?şKow{ƿ_ow YyQEQeQUQsbX/U&v{=^boW'A`q8T&G#Qhq8V''Q -!E[tDWĉ$q8E*N Ilg-,q8G+ ą"qD\*.+ĕ*qF\+׋č/n0%BaB n,,zZ7Һ֭iNNZwӺ%eR-r#4m+*#E.*UnL(FFP梯~Cd3-Fc#ѸFMz}-ڋ# #,o#gTi67(S W>i11&ĉ}EBfC/ Qme6TfZҾ=̈?dzq%3Τ3 )Ev@)Dda).#5]ܟejLZTڟ*^HW0#fȢ%*(x9StG0cۡ9)nO`bG!oV٪h8 SÅxRrZ;$۩SUށg򎡅 '6sUҷ[뭼-tLxӺ.&ﬔP@Y60& r} D˅SHnHWS5.(ƠHaNo 9 ZH̓"dPaκx &I7kQ+1儃 2otz5t#>:6uU?޾}g+KQ ٍs;̾~xm f&<>4<PSx4ۄGˆzڶPhȬp_HOqz=QOwd6E +hs˅ٶq|mԩǠ^ 1Ǡz ւFl5hrJf;΍6.\03Πz #ꌨ3mBZ3k0kJM^Ɉ&#hۜNzC钛eZӚ'o-^ūxՖV =i%$$$$$$o͈6#ڌh3nuƠv=u^t inc/external/wpmu-lib/fonts/fontawesome440-webfont.eot000064400000206413150211770060016763 0ustar00 % LP^ >FontAwesomeRegular$Version 4.4.0 2015&FontAwesome RegularBSGP  !YD MFx>ޝƏ)Y ڤhDpjóK”*0~71^{+rAPu;.3ռKğ?]:yf`o&d:ٌeDgKR%qH :фsdW *0#QTݘ:b#@Ym̉{Dt!Zd΅S Qv'xUL8996, BerR+5ˊXWNJ_;J %$-npr tǹpLVĪ{@L"7 B|ڰ7Jdzc*e Kd=x|4!d؋(A`_os[0H^Lpa)1P 8SAs6LDɢoÜKŪ$SDRIUW, u@:5WʬNFGgi<YFP`1%RIb >sµg1{LB#}aD0`C*Տؼ'/a9H}d#"4z@c15n@r67& ZX06Ma]b*ß6.Ql| ]x<ED0f'Bή_ 'h A3w7@o|/J[seދ/"RBmBk>&l@r,4lg踱:eQǿ Z<#(t蒨8 PaL,nr'np8 `:*C(H2VfS9jK;ה'"zJzY=5@涷 adPAiC'%Sd}!ơr3 w! 4qZ,.m#UޤL# RC$rj72t} PP0f \KT,n\ĕ,D:1 7ZA5EYL\WXhY8 `LcNBbMfŚaP֗rIo&DuE:u wzt?3E Yzʞeʙ E"戧IHse-E k~bdB"=8 /PN,,cp]!E˛A_]YkHFTme俿56;6~Jz/cY P=Pk,t֮Phxz$N0:k[NZ8҅s ~7d^+q[цEopHG| ?>=>MJzW=C~4 ϑ2"XAQTWv)pHwã0D&Dܥz݉j{YRNYd\̽;eYM>ܰ(d:hU]T+Ց+Gi US 9pmáp&, TH{b`H'I,mN\+0cjDߖךt8*ݲ` gi3:^ƶS׸?t^.Iʇ6J)A’MwD@CciDړEԯW,;\>YmJmP\Gp %^z'&ggĊ1B^"i_] _+.s>:Ȯԅ)TFD<wVQ⧌LhKc( ht]`#9PP"5Eq+3|{}":L+ W'~ p8i!gFNYX'2F7 3'qy|JV`[i 6o$whOk0gz[6jG8Iۀ}YL)]#z)|\{񖃭>ogNВf/`zC^!keRFBDtPbUZZf2"bflRyIyGY@ 1f1/TM Wn`~@ 'Ѿ:I-+rE`a |󗍌h 3%'"p9mi<[ٝI@z u}!Dގj0"kRؔ <像v7|?9D 7G`aacB5PAza\J;k0fKc58X@/Nؗ@8y`>wo(j^0}G``JU k[@nXg :؉pH_ v"-* Ry%κ1r0H&ʤC2+E|q/Mc/ njA&rMɡ?]5[9qNe}ᙐcp qF)u.u`n)d`Z04 ;[A ֫ WF2!,}jQDt9fA2 ݬާ[5+(!DN/ 23`;1cB\zAqMVwWmmČ)<ݳ.9wHlv*%i;PSBQ^DׂLO_d_P"X{#q w۸D F^Pf>)2˜]8 ;j\ͻh>+QSbJ3AnI`i{9Bc`8mam?)ԁ)QͽiC9e}6!BƿUzelvZ*t>jBlc|8Ca 369NM!jw5Zķoh5!뚲SrَG ߺ:.DfFFpEKҍ%k͉?յ;=2Ʌ܅( P B1Py8 n (*D bڣDHK(jczl |K@2khidj0I1:\Ayo8DHҕ\#(jwiR2eCR#t$H\܃ݹ [H9Q1$-Ps\wO%3(vׅh\xskؓnhҚ׵Aq:Y+ѡ߈@rc F#<ή0z߅(}CA,s5ӌសkUOClml>#S~p=Mxr7y'Cuޏn 9KA$zhQ"mτ>B8%0{lmp{(3pTfT'hbC:Iɉ2o3.glORʫ[}X0t7ߍdjs1:E}nv5p1'/ V['5Uv@}$bhPtjWV&i p/J>s*+.} wdG.f ML.w&E06l~A;9}Tgk뽡x:jm{z``-BU^9PZ`iH4Dђ #C`# MR楡UwgP3Y>C.d+!pU?bZ(=GbBpN--*s, 2(1I lp] E#|c\dJ4n\rіO&nBc{h7 |M=hcYr#y7fа`sS0}1ćHLZ(8d$oo D\b7Qs!^$b\ ƓYB~;XX= 'm G7 f]mC48.zm"D-HKǦO{,4ڦ{HٮF*"0px4'JUxIo!*LTee1.L.֓S`MO+am|VYR'_Ie*8@v۶R8JcK[-"}e*:h"ĬANz_h[Sax*f *D4#]U yA.pdsêђZ*Gڀ%C%W2UU?~N5r )گ ڀⶦkkvjmB^6psc8 BW'JM\h 2dU~!;D+$"&kuHr;1 ?L84P#3)j07-+LKA[z'."fG.܏ d lKO$ޚ1PWlzT7,xr m.8 ,8 on[a\]םxi,RF~035/\ֆxL]2Wpvclxfd!Y3QSCWdPEEo]p7BvBb[vCyX8\ӧ:u"^?t:vo"5f4! (,8dZzrM׌rXï(v?!@l SƆivDNɸB67n*  ˼S]@3pCMJ@<Ks'FA2.$'ǎOLbDó;@eGqw2fc*,fFהCmvƝز+P:VBdKwB?H"C cclq0'ʢF_2d̰z<E u R=o Bc=hqXeE` o6뚀B <aNKplCdR,YlH+O,B-N&jBlLN670iL9D1,3^)܇.CV?1@5d>$SMB|,ݷ F۶4K}y%T=zjc!9fԶľa9:!A8^}Nx0ʕ07qUN:`t%N{#m"3 0 >ͭ9lL(ٽ'H?FOEu6Ȣn/eh- KۅE 1\a6D%Зu#r(a(C)(["zZb7$g 7Ggv 5A4 Rl OW@}an.%9NX\9-y5`%zQ E1ո>,BZdTܸ:cF0+>L)eF򑮮{hR@!j)h1(!D_XX eI<7xrN'o0R[NЗسM 8CYyu]ŚhzN x42x^O- (b@"a@ԴG)cH$'HJC&,~+Rb[Ztp Q6B2C|SBD4 ~D%V\3NR/JrB@_k9*Y oͯsŧ.`,v[ W @šQ^ -BX:y<6&նS;dbt\2KTpA Z+1@P'Bi|j@uu_MGۻhy!NXhF@_09Rq=7Vu!XpA2,JkŬX B^ǶXTRTPb<C ,:[RSMXL / tu|5 8V%?D sȏG͠ap;g 8 O5l Į'_)/ &^/D"*(9C~s5C俟"2Ac]ac­2{ "C$4rix 噇l$#QXzH5C+X;d9ҏnL1:S  g,t%,[ƢʛT3v>:oʻlc'}{_]IaFV8V_WqUrF-{ ^ I0Z7zIh|T"{"׊4y.1Mx)=]PZEߏبQ9-!'JU[8V)y4WaʈW,D1 MѺIyZ'[I)>N,8.<յ'0DÚ}Sp~WHYVVFO(Hvo77`Sv dSqRZYkyKS+:&+8&EgYx ;!B"0/SE/sA)MXSIpD;L]C4HՇeVv]9AFrv0x< rؕ^DEt jBC[c;BR~3|5,d wҢr&=@܆2f% "mbk9 "h׊ Z{4+>'kOz0 Ħl P\V)6@i>XOCf e zCTwgY^0@ y=¦ =(J0x ǩA lD8qOag.`qa`zoZ#̀oZf%lww B/Srb~"ugh]l)ga[+&vc~a"|DT8Wg[>b}=eZr Y=ƪ<9h";wOMRi UMM,y([yt RDl!?7!í_ZDA\o~dZ9xeȦ@U ҕ`djJ] Cw- U"1R -/_>Qgɲhh$MNe} ㅵiSu /|ONmWyG4*e‚ZQOD G>iWA(~YTZ[ G45]Ҽ|#ȟ> 5EYA) }QO08vJ%!/d#FHa|*c.]+@8 .,*<O*jjj#,40IWp+˪Ia+E>nryz sn,zfE^D׉&w>X5U)͡3A)5( zȅC,,n@>9[uE" * 9 q@LTnUk8 I$™+/KxVܡK9k9+SXDς^ 3e2),<lJWt|43섀TӠC ϡ\m r}3i)d6[-GuASY\d[78)nfݝiRс _~-bt84ܗWzpUHIeRR Wޣ^d~}7/%ďKrgéMe_Cq~asli\7$KD[5G)p|a9_4 DDIS`2+^CA704(!"Ŝ6"qwHm!5P>noұi,[!F`tl]KM {5ȳckZaN:{G. t$vG9x(f>,6r(ȭjnr¿\5^yaG J 6ꜞdԼxEXbPx U"eZoƙd0t -df6u͢^GX1LHv&h[]0%bESAL3):f]ġխt:rK0;?:չ!tV1YJ%0RecZn@7hNQqxf0Nt2t!yMQjE\igdsn]?5 Jϖ T$[O ;W3;hu 57np+Pq%(pP79BD0hR>֞g͍LH6Ns|HdhѤ6Ӊ5],]6לJT.![a "3ƼCgMWq`i0W s^kҽC< /8)H| |'ŒSdlKk42{fYۊ%hv2T5ӎճ$)8\\zG;-I^d4#](ײNCh f4,M=@a O,ȠMhN&Yh}<2c7Fq_ہsǠv|pZܦ`=P2ZFޛq#Ո,i摶PruY3Lbo qj/m V@DVʨ"tL1 AMه,k=ّt^^dYQ`HݢpW#u""@P@i()l]<3y倿$)NzO@q=|/H@m?p\0PѸ"a4XZon?n?? eʐF?Q RƷ%IEj(FhOpJ,Xn/밙*WBL5J97Z}zvܬ<HC% #3$IH4YЅ"^& 3i$mV|Crc֑)a6˩0&en BLa=DrU?GK K[ʚ ?rD)ŎpYtRIԓ~uRM0(~^7A,dOJaM l}H+P[a|ȬL3~H @e ܛ_T^RO:s(Ohlջp/siK0Ul?AcS 03~D^Ӧ ^&ǰμBxˎynמc(#ih)q4g'ph­xY;#ߊ@K.of#Mx{o ?%eR1YEdqRzPtv?kŎzhD@xP/0"Ł|n9%)#"RC~2#fhZN̬T!];BsPB-D x+pr|2=~siq*G;HO^=B*KFG'XQUmNַLUK%zcЭ:oA(:|iev_Fr8Q'+VCUE)I =t¼S4XR̼CU*ENϮQӮcW/RfvqRF̎eOWJqT* 5cXXJF-Q*+<?q jVG0|i!?݌vk3}&R;BAiEP\-g|ӈL28i@5A8Yܾt .Eiug(h> " t3bpV&Bx6hE|;O9&qp-׃B,*O4%R\:bu+c&[y?)qm!A !#Ȉ " 6Н i!`YbΧ XoϙF/W9w|*e|UL酁yRI^3}Vvu쟳]DXh0-πԈ%8 _g w{/"NM7- >N@S!ᜪm1GicDAZ2d3Ĥ<|$9xH YEi]gDl :%v/%/EHN>Q/̪`*[(7?Y6 #S!N fk_gm_v bw *3 ;cb.t*-%f' 8d#"kɻ4JVZve:2pː{t`\Os}W8t:4;Caw/Jqi{@5lC߇b`}'F~1Rkcr{C薣@Q0; L!՜%R < i<l :12,D2n'2"v3yC0 Y`Z7<_}~E&neh ej#XV5<C|++ݘadD#0=PG:tm(J`_5X 7)s*J(ya+!\@ >oQ(L i4!D\$?b ! 掀a#i W׌q4lG;Oe3 Ad<=#hE{.-4yw$sm^=TD 0hgJN:;4J0/(YiKpG1{ ȗ r 3.vXк/ '7igkLsKho.2# Q ]~S,4n㻚ˬe *%Tm %FRd`F:̀CS3?,aC`S볯J>:΢ 11o6"K.Q2lr\(`\5}TSf2 Zz ͩVNfvi5KNSi|o,S c,h0@y ׬p4<>x 2{:A{fȈ..(9+ i_V0]p fdqbEjYh6eKiȂ/f\o~r›`Ӈv7U@ĘBc!f$ۺ[7Jht 4[fo1islNb?ԔG8!8K?Dm*`i@SOSpnt9\ Cy ?"-"He7= @)J!,[2v'֔RH;ͧdh.cĀaxFY9eBi eb9-lQ9/+,lQ{22ی3HbGZoE|Z?@+hvd$S¤BY+0Hu>1Ҋ^<{do@؜pf_Jo??da=S[d|L7cd{3Fyw˪/n_HgiQ*s{ x%,Owyg^F9,F{>]2< ˃5\Y 1 6B-5/1eU(u Ŗy`f ٧=9-N_nx<&=eJa#MfB{gJ3;kgW{;`#X U|ŧbB3&.s{U_lHN k):LΆإ)шTA8B uLra?Q2ꪚ`ULb0DBZu'{jܨr- =˃eVnpB|Y@N UܨTkF[Q Nx xÀGi@dpA&nr]2%^֬x/E"sZ\]H[gVl#hY+F$Rk'RFdXVlڽ.075;dĸIn0Ӛs4R)i }1/\-ظƊ4Z>H- ߑ[N` S:˜Y2@Hqp4Ȁ;\4V܀vE3嶖}nyEq`B%a?~(q䢨GH1k ^R%f-euK8[lߺMZ?\['ZsQe/Ra~@:!X_14͔un%P5 bu9C!zΦrt,8 kܭM,Ŧ%ժ4Ft4\+#!/xmd*z݈EuÎwsq؀rj"YNOy$h|BhQp{"(yR +!On=:9?H_JyB}k*[P74h)TerW$ 'smO<J8 $=SR*gк@9P)x<3_X/kr_}>cޗ˜1v3NuO PIDx ݭtE"IS GuT! ezvf K%Rv+ZZst:jac! u{\9g[0IZ[\T+ƕ SRs\0s]]UQxL<IX]E\b ;+qBH)OI1J`vF*=ws{ 1NײaCA8 ^ba+0 D/+\;=bcE7fŴQlohHSO"^_)X#=ԂaAP c=$S4<τmomy:޿i?J @&!(V z"IEgx$4ETBXP ;}b4,#Je`RDXA{3lΤ /|pf蓍>/_@豇 "=pAE@\dqJ&B"ߕdOM\h"гsy.5An-(3Xy!PGn>; GxJBp=dOmOLRE*ʪ1Vۑ _VҊX3!Pל&YF%_SD"(楈:f_C[(H>).$@ŋ,yLF}ӪfۢA8Ȧ] ]_]::K㋂a쮨:!5b-91qqZMJD4ψ5SIz %\A/aEE`>;Y8't%bk=f\o<|!dT{C\+20)O9 3ݗPb/a 9ͯqyEkNl(qJVTe@@~P j9!;/NRfTjcʁ!3W&# `R.J3iRMHMAJd?X8-A VzcB)J7c C $:rZЊ8@&OI߂pXB g+a4pJ *dR8>9^i09^ېIGceMl B<'оs> O1[6]woSqi/O/j-=v[,УeQ&, 52M5 J O,jk.Rə6ˬVq^!V&kW@qaP <^b ?;<7Ԧ =ʌrN)Y.,-a8Q%,\ l H aZFEedB}l]@i&(CʄLJ;{e8;( *@*q wK8+`CO}tH\4&2ξ$z.0@NGo bXu#lc2$|ӕ'$L{PmL$:KG)Z`r#- 6%>Q BBDMlQBw[eJћK S9O4f ų  KAvQz UHJw\ w\ll~ݒHd)JJ(=4 srN,% Ā( b%Y:=oLpGF ^^׫{}%O%5`Q{ (ʮ=רKz7I7kCA!~BMNQxuKŇAlp+w~W,NʖEd-LUD6ϋ,E+OO|(e ۓj4ixehiU9G[O2y]˸ OSŀ6P7j?Z19_̖;S64&P e$u6Nm ƈٞ_I^1V L#S$T.WN 7앯po,p rXT[1{"AЖE$tY竣UL3 1Q$G>@b4{@6a8~GdVfu4Oa,.bn/# >i1舞(̶!^"G0[ YW)t" ZI\E}Aks0ѤR(qϓPldyU!%P f?a6%Fn7JHX7_xcScM~Pr1Qju}fuނ~® 'TeqI^dP95;`x %:E4ؤ\D>^ SjIq|eT.2D9!LoHD"gd\h";Y;\Bn>` h .s=epN5ђwӄd7r P5#axMɀ3coLDT g|pW[l!5zAP _N= b8mߜ!d)B˔F9•Lpẗd 0+A$Erӄ=1s=tLǴFՒe7AgO8rdM,G`j|N.h͐av2E͋IåàCDP|b B2y63Ѓ$-ã1~R3*C xkk=TO1c&z!ŀIwotb$nwo @fc nirfJ\ƐXK%v wN^p?8,kP_xyIt; i;hI7oH7r(_-?oNfZD>O[_tDш<(5оBf߇9Hb'fmhjp{pc !|Qy&"Č{9v+02$hb8Tb%X' S\NGm(0*Y[xd[4MYvj.EA=l.S4xExn(b4X̀'Db D.$ 6H"1-5 PW";}Yr">U' oGtard2ב3'ax .bش*k}s_zIgJspc?SB&DR#9yQBwyFc.(8fH0M-H6DwIl.D=<HX5_K&BAr];13'%p(uĿƸu?nv.Jd`#+'.`i\lEMK62ݤpU OM3aZ *+>-iIM{d=hNlt}0 3aK1z%bfB&RgE *+?(:D%uڈ4MOx04 [,1} pAޞ Ø)47j77N`eKz 1䥶aA=X B+JCjAbp |/R=֢2;_T 5JyBԁ94ҭsp3鷁#&fs\Oj+Vw!ejK@)9"0&q\K-3@FyO:街`]HC0[bL:( 5-ܘBVo2^&;XCKZ2_B$ a'Kr!V埴F8 MXE6pl0hQF 2_`91pm ԂUW7 (;iqV2`_7)ǃ.(T'ږNi P(4fo@?"l;y(uItV/ohם0{27[ Q#vnNa'(#~@m޹\(ׁ?3{4"[@L)bYH ;XյՃUG? I㏽)a0+[ZS4ө%"iUD'\sx }n1a d&pa/G%@?pNFq[uZ Q';|nў6&_3a72&c5lZ5'!i3,KIBɒ40#ƈ@X(U4;kCCGƪJcCrk ( 킼%ʦBGp λ}N!"uRD(@JH*㾻 \֛v$ȬK61W ]00yO(r"Snz7 Pf%EK=yG]6L>h(H$_+h tfK q5Lvhz pi8UI꣤\#+h X':ÌJ3E4u<^nyy7ݑg˱3o~+$[Xh|ӑg3h!N]m.*!z3Rk04ld66q?k?~d`pIɜYܦu1 NU!Rr=BPI>O7?b4u&i5 }{n yx <A1 PKaEj$6h 1.Lli#Yu2Q>$Q")zEly@6 QV řbBA*Zv[,3:{bȥ4Hؓ9b_,U|"&d߂[1a~䔂atNhmDIQd?_^c[-؂_/X|S8VR1[8D^XJڦ .: Һ*80zs%InmM1~{7¬(Q*lb$BY4`@oaG!Lga;k ~9W7 1*FNYi7,вBDeOP1*ҵx!</yAg+^T$@fN8ߓ⅀0J ]GY偒Ttz qew4 +r+=o(T o..&Uz-@LՋUJ4UJR$t캵n8>LɄd%yľXL.簐}X[ڞک+\wՍKs?Y"c3vGxL/8:M#q?A=.|M 9n{,S`N*o-ⲽ|6Zrr"ɉc7Hopb7IY H as'va,@N̤e]=TD9rq'zz2 fOۯeS ?)l3[tg#5DƇ~zQ1,xȂca:!bѱ,(z/ Bj ЧYSC:# e>͗(ޕ\n)!,"[ T),~I'n[L#b0MO3G"//β\¿0ln& f,Bnh=4p+5R)ھN!x*379œ{THHº UzIPi3ZMwRSbu͹TDC*з =%BQ}[`QfG9cj]eVMv RG^d}`3$Q{rE<+$n-rΐ_z+NC ~1:PSogf84H vBaؘz\  doX8jz[IЦy_mZ(y_Ա|vFaJaY84KԻ {}"dA@ J P^_$]w& 礂|y;6p6ԝDrLJs_ sVGˠ5>;5~NUZ)`o%DYjP8 D4rI|&w@!o.nrE^^b'R`Em\O%\$`3K"?.94hlfbZؘkըb+I|ZEhBP0PR,5#w;orˆ;8Θ,6؉@x(P'$ Fsߎ, Jp=7q|,IJ/<{;rZ(5Ƅ;B]u5p1Hf,E,/fI3)f_fVNXZ݋(C&-4:7¥I#8P*HsI\y4864(H Ob (dUm/ Y&98 עm)Ilin_U4Sj,>[ƪ /%K䢎sH1~rI۔($EHa +es9F0/7'iJ ~dĖP>3)h"IF]bX NO!9 ХP飏 ` NE%qG1˝:/,Xr#Z+wʺEǻNRX͊^e5A& f0 nlKQ[Wq]3ӑ435MNQsN/[Ye0Xb+6I4F$70=˦N CtGؼ+vޡQPƈcaU13lx?⎗te ZF[=Os'hlCrSVLۜexdxxs?iE7G uB.d:؋E/m  -E8<;f뎈?WIHjڪ?L .g9bt4`é1ɑ@! I,Fُx'0;b`A}hKe /*Cj+ȝPXq )-6~]ld2-OL>qN<3w{q r9q5 W!No(Bfj=j/ P+>8cqHSq&tI’|^vSF DNkLE_ R֍2#ݙ fg=k('B9Ĭ\C Va)>D^( [Ƹ8!gSpg׽"q S(R00 EؓXHgPTvit}vV38&bQ  #h4Dnw 埍IO^(.X8iQkANR245R.Jw ɜM5tz@^Z۪m[m[i_:*6K맡H|zBЬ,A1fS`$ <.Hii}nqGmhH`1p;ŜY~q ɠxVTd^ԶWy 0c7""S#zfРhC}dشnMw=DDKP)_ñAOJ .-oՄI`<A펝֑(XQ vݡ^a={]XR&%9Ä)ʼn4=ۛ4WE|`8tlowC*Y3 xp % m=;v(0:` fc Qq 0熤eH7 +OJLj`Ưj\i4zj$-U ?_7Ah1kC !{5ЋXZ[mI^:8Fwk8 G?huvPpH6bY^ 0VVH50έ+q2#T` ㄵ@πJLƃ4vnh>+dWu[KɘPz>Ra:rJ#+v`F|^+`z4TßaggL]rl&62]9@t&dYl&$'a3sZ~J#& JvYC^Ox!2QI>Ke&&IrWwtsp@C`7+=ܺnhm^ށ:m34%i;4zz32 K He5,1ÆGÌaxc(a.2Ѝw98D!SY,#<=V -C ՀT{4VrT|DSc:;YQKAX:UfT.$XT8\<#7[@|meBͨuV۴e3B[8ViXi#,5œAh謳Wj, 3Z  Q],«0lCVDڒ$Q7\a~8TYtߎԒi=5LS}=ADczv>ArJ!,%R~xM pQm5@d  f1|Ũ&쀕qi4x=R!¨2ow)8C"`#; "hgsP=hW[gӿ0=^뢬1,. ]vpq VMf߉BN`<`^'t.̴W Y7wd='#YÇf޶K CN,@kEԐR4H =)D`Z=,r: I5'T7kܞ(TLffW+lZ;-<b] yAdXZ ,"Q9ƌ:Iz XmiG2} +8ikƇ+_3hp4EhxNf\Wz\Aʩ(J}y€6'|p ׭XxWψT"4("0=.=5͹em 6 tjٍlӢU>H&,rϋ9G P߂M:e8˗Gj~y5-~PIN'b^:i|eBPU.{$ 6{\@*t  ,Lv֙;B;F @ztjE┉5K(r!fiĶI|H(,ҁV}q3n؆ِġ(SkPuN=a”qR`g )@T̃펖90atW85crtיev]y?0*uJF Y܎4ląZpv䥸C_' -0/5Y5RĊRaVB4KL~$@iK+>3w4u?._2MK@E9\G8^3# ڐ\ Hq NRW9+.-4$O;8si8voLyU lo Ó҉fs#4j1+klћ%"t̗b&oIRj}F(W_Sm& b}rx]ZBFEsuWi}BygC MuZIB&TbX09 ==.ɱ9T%.hȯ 3v ԢJRrM1gmS*-4@#\^O:(; _oῇXE`pk7i=D 7RhLQ> ֥nÇ@7l#o֌w a8Ł"8&aZ(/*) TzáC+PPWc@H:.SrВw*SګX: %[%Vz^H?E08OD݉j|oT H>~UX:PJc-xi2`1 ڗ-B7Bzc0J?;\'{ArѸ`U>E&~&~"4S9us2a?AYUbJp@}B=,Ns$/hwy/^WWUמDfPHYoZ9 MB[H1]5G"R4hC@/tKx2=e fd.\C{-ugWH6$32L*\f8aT% 7s`VYI$e_-Uj( Ҭ|RJ(#S{d&$?5H3X]k*E8)1 %)HN8ˌ'h?/(;B:abxܔuH`ear HL ${Ckײ1a(&m7@^;"&-OZ@Hh@:%*PAܥ$+ ѡya+e˝ UIL , UsoԆ.O\Yʲ3/# 8aOdM ;1RpquPʤB2S 48RDNUu#9˫D,Zu7ԖB퓨AT-VIHRa-zmgaO+ёV?LM X*/)`UU;wsyh~T,b}EB}  Cr/,ɻp,o^v@=]0{vo[4 ~0LMej0p*I"i0]o2I""" \؟`M@Phbi^֙r3 x(ŁfR>m`k=Pne*S<\.И_Uŗ*1kOjb6=C*@kQBcyDePBCBKfv^8h[Lx=Xǵ$"Zndi# 1da+{{Z<=;ohO=$AV㒝E4Ar͖m kn&5cve-8 M -(77\>c@/ސ]^.,^(W`:Aϭ֚&9WxP2ږ24P;j=*]#f^LE-0{"Mh+ob,&MI1it%ˏJ cXɊd0v$=9\s4Qs<)3ez^ ^OնopzJH[ٌfDjI8r%ZSq@{bRǴ'2M#$,ax_6+檘3)H AgԢ b< {02:?;RՌT0C"磐eUOd njɍ9Qa{nQqyoK4T3Sw數ʬ~cJW&`x|rX>v4` k,KWJ;L''FZX-恭W8w*$0&2(61YJ7œy| " k) T:ܽx0ng+ <`Ծrs٧RQE칑~+>|U-iL{Ū Ŋ+Z 3DՙQ^BW]Pr5.YUE'$k51Y0mq;G&9X[~Fb̏= ئa2 B/ H ;Wt+NwFg1u )ˬ:@ZBgf &[\Dgg) jަa .)H'pߤkNAw5&K^h11=O5lL±'l/$+(izzAhTL.ۂŋ@C8c ƛ^eC v"a s2bXF";b6/Ë,mT~][L=2R$@+Y@pW ymf~CX:~T 5 JPB,6wָ˯FHM9Axa%4|559||r-ppO 0Nfgz+1(= !Fvo3 OqFтc)#踥½PmW>;٩]Y SC"YG@TF~6^Fx^?ʎ1l 3l/Qņ֦B$>hTA@ }`3 Ӣ kx&\A^+>aM^u" @[ dC]81 O籰7! m-->\LFDDĈCշN bK7E@nlb'*ɕ R[T&*)c KF /`E#w ۯ޴@R<;,(~qaRMpE&9' ĄC;LUU0g7^XS {et)"o@"qfa /.#b>CxI sɓrsGT:a#h+ F!N@)ȝFnIwuc3qIixk{Єc{mcFK5/f:n` V<Ȗu8k[jBԴNPr+:1jQEe gF.6{&F(䰂ʶs״hAYFMM3 $ =f lN+h$^2ܾ\ +Zi-@Wj/kk-H=0gUni%k1`>HK\3*K|1N@67tN&[MEhd@:owIce?Zs ]9^MT`KxYX doXPu%һt`>Fîl/- 2*`:R>cE> gbl|bw4h0mT8]-)$d'%>o(1*^EaG֖YtFj`>\<:W ^'fb ,erʏ!\}5qGr͎XfțlMgM=ZT?_c J:=rH$*5t򳐷8'(<& 0= 3r^I.TύaR7KZbc?ڛA< oP ,(9Oe1Q,ZXLN1|p C/ 2sy(,DDN$cM`OuBp1/*{/:Wdג rVxW*3~S)ˆQ;;'5ZxDn 2pc Wf)y+\NXöNJ5zl^ X'IK]`Xe>ܱ?^;JKw/gZhOώvGbmIh'kDObHWض؅e.kp%'I BnN"n$_P_AuH+-@=?vu&{ޔ`?N)K"Hp| B"E3q)+Ґ;YvzD>'2ƈe>>:uY;Hmh`Sˍ`|C<jse&y5'bgV%."YVqVu9K Z]<#a} ck6Wjއ,,dN !M>muV* "U43OrG%x+`xJlہmhS0A$0+ G/mx*2+(mmn.4>ޢ8<Τ1sVd<5S7WIHP@g!RCx ق`Ywޘ ێKꮕbxB~ # Mr/ EK A8TL|ks\vl2A9w ]HtKk՛pw!Iq1;gbtQV*'瓮^[]_6-mעρȲj !oi.cMMoDD*|96(+?¥l%"zɑ#C(>xck i QV 6+-KfϽZ82;8PuPbM TaZ6}਑NXDUf?V[2c(*0J 㝙1)LvU<j )^Y "95)T!@DE *BCya<Co\P1Uls좾MYD &=62[dD7QInl,wkP"GHJaegf!M䣱fpu֫9Q,0dTSFni)1`͹w-% RXB.5̒=2[big!m3T?<<5lnω, lg,>΄P-V\)-G]yDY犬CZqA8 1.;5I=r㌉8AYh]/J{2F@.Z&r9dqyaHeQϑVר(ҩn(ˈ뎋<<"olqU+?$i ݷ͞K@(Jvm #~ ɡ a 77xWLV-bjT7/1bJ%ky/6fj"xW9UNV'!z3(U0aYb`TOt)(tWIi`,wh(@yoDȚʉ¡NGRSrpR ɣ3Vg6I M{@BH nܽț,O\JrJ嬙M2IGdXUӥEOQu>lUnJQhRa;b*lWHmVIJBjgNEqt-^͏}'آ䢦Z0@*B,^%s (ɑ<z 4T8[X/] D@rMm~驡_Px], 츻(dW-ycI Aދ3WC9g@0jҁ @mA;\+~3s`  QA@2IQg kK ,dC@u~ӪL2Uuqg $BN#DE{C&5k㯵;R_֒[1uĪS/ e:nQƋ q;p1ker;. SCxA/G vد2cX-P`F(ᛦU~܃k$@%F2B<,t|b$ ٓbE@ lWVYT@c]%TO0tl@b3R=b1C"S+js~A`dcAnR 1/@+5@8k 1"%&!l{&˜[TDQ1itire)X Ѵ1@kFh`@9G k(CM IPp3 BxgD-zc.y)ȽxCжз['X.d50AL4GL|_E4|h W2Ħ\CnLQ-rFE}I~jw@0jEOs%yQe+#s C1']i!apL69Y5Ծ=0!Y "Y8i T4e/sTL3sOjBz-?dh9xΥ3,9ЛpC[Q>eN^(Hqqe$;C2^֘v^Ej5,O3,@LOh7eQ`t=M *J4+-*'b]~՚ _Z4׻_kmf3W¬$᧢jug#"_حpalVě7CL9* 3&k6W4}۷BmP [a /i"7co@(!Wss̗EIB^HA*`z/$6[7 w p2sGx9{C䮸RFX܋b4n0ٱ9[iB87+Ve,~l@{ 0=jfV36mA91:o6w\ ً axJ6<MӛOu:Rh[ApˍĈ|Bnl zf5+ jOC伳IK)%ί\hRo'_Xl%Jys>Z%.馝ĤNáQI0 :3]Ϝ>}&@KZ'5( $R1ly',d5|WAҋ6P/ڦޕyoa= q;hJY i(nZ㹗\n71Fum >mAf oO]:vODbQHݹpށ6톈;Xb'~A(q9*P, @3 ~jlv<6~":~Ź"N@ݤ 5Glx)"1mbd}st4` Sv[iǝ\KBr d\}M~6\ y3kp=`ˎV`l5~\=G8ۿ|`uMtFtV9Qh-<+,Hೊ;%\h ҢU9YJ3aQBC8qBC>.x>~ˇ~?p"by&B@Wx`c6B"-fo& /i/[;>ca8pt/\5zq9TY5Kw!#]RSs G,]zXm/E /Ҭ/j"-%qA|E4B>o9H>Irʺ‘ȪWϩdE xbjyđ~i?{^9N w׏2jJf` 8|#o l~T>*l?r]"wЈ ]QUp;,=~!wB{SX.*-">%(T͵l1] 9v@{6 .-M~=`URzj5Hi! \a^1ja~g4FiH6rY%wbu#bs;?_ƒjPmspZԴ̤ OӨ CcK*z1,>ՁQnh >;ԂG!Tc^*Ѹ c  RJM b +|E Y B1˔ Ng}U|C$m46}Z9$̆s1oQ_'v#3%a%5sTi~qS\u]v% J?355@>;]!㑱X , 5Cq&'fxPv4 v_v(bcn}g|;6?cx KG5rSd :\_=L =,ˑdDnzH;7B8<ثq0hY;5r}9hت-Ƚ:;P۳FLŶ728X_8p%~EHm;HMVm8@\Ʉ]Gil#]v> ӵL[ÔC  Ăv `L_E1#P~P,!e`75PHOڪ *#Ҷtt-J|iZΒl*bNǨQV\.fzY t.ǝ{HQP7@d@ %S@(jl7@7$(XK*`d\ki1p,D1#1^5I~SbYwe'4^>EO+ W.9eFkD_n  8JuKfy@hzCӓ4앢21߷ YF+*GTs"*%,: )=17bs=ʽR#WD\f"W@e􋙿B* 5dj=L^!ox4\(^A=Ï'A}"w4REtZ)#5MG@PncwgEELrĆҁԃ_SbhX "INLBBG4mtJ@b7A:Q=K/H6IVYh!DjZZCω̥j8 A^5UD8*ZHOwJһKxv ZO@ A( |\܀s"gM9fBVaq<٤0D,KVP4gnq,vl,}Ƭ|Nj7<~CuC;w^Uahҕ;0U*%)Sk^#L5c-Rn1#jIԍ~hvlE4bzDžHnE/&v×SjMoW"tfYe`(`^A<eW-8K?[qM/{V˿z} !t @#9Ml}Tyh1֪I P사S":}l d>8{IIO7Q?G8x%7x[6bEUX/ TfF-&UQ ^FtK&_kA MD/+sۜ7w{?OO֝GudP۽%$kQUn*V>wwaX"H?'c Æ z%Vs9ca/(3p_l7_AS$ \pT^s%;Ayj(`>4A`ge, >K&cK7Є"h@AA CQ0`,!/kav OwBB2@@}blIe#h@I9N"I(()NUǴ‡vNk%k ljMd`6HuzAZu$_l^=m F#iY`f~<=`Pyn(Bހl @$(hԫr]JtF4d R-9ד!G4j 4K69VPDKQ8h ٦,@jðexG& ^`hȝ C "Gh @L`: 9qvlRA yv"VsS Cz4@Q h?ݒI]B]a?g xKWDDBp_:bF6/T!pH.)xUp/9L 4x`K=O#=îLʴB#F\RFh$j9E( -5hC:U/^iT$J p Kn !u lhuG4!L8BI]/FX:5(M!`A<.#͒3\s>\2DJr$$4, Jãi:i"/N?9j]?D`T w1ӎ! : cFQ)`! yUzJN\RQLSVդaʉ[~B:0PR&[$ؠs.{lŮZu]MD5j Wyp2. juO=}L[j\?Uw\>DGӛPS)QxpyXˍ/6SVM-BixQOjcnJyl(3y?6`N,>uJDbMC8,SQG%n0'3)w= !/fLeqG=eܟΞ_HuX~[XvүB.؎kcnVVfs* 鯑B0q2ZfmRvVJeЋ#"oDÈSI`:jwT1}r85Y4ưǨ`.7 O&V$FT_qʀ,SkQ PF%1en,Z04f䆀o_ 'W΀x751y[SF={WW+m{ClZN0;\ .㟻*^d*ѤI y.\&i:*O_@!;٢ JZ87g5iM' z]},(ym"ǏGU_ $*LyQTܹI2-o`G!_ODm̉iJH 48t)fI`=bYOշJ]%-]w 0 j a]] TZ H,]ό0ؤ$K$6ߣtez9sy< A+j5fun+x08bgq8M>Uu7\h׃d'k &#רZ]ɹB]t;( L^AboM攞g9r ,Ө5)a\(Up8D6M+ieNc@ZU,e<\pL* c6ˁ'/@&I4:NFծՁܺj5=fd-O7J;2wj%Cp ×G4^E H` / V"=`@IWx07Iuj2fCc;kVztC ^W$iwI-@bzUwhH sBծLCk5#JYNPSwwTK{>,!8KPSPٿ36T.XpOyu6e4赜lIp1P`6* 6<>|)7V1+ĜUIb/QÅR?4娍jTy/D21A4ZFGL C:uƏqP~{19@:/MYI ; `{]> *hbƻ-`[,JA& 3Hk=@%.YF*D2(d޴둒-Vw+$آ|*'%{K@0&\(KRgMP^rG~s?9Q5Jh|B(xȣ#AV08h{2xD&κ4WcxRNM=79IK(v@@6ƪ{P!U7 ulLO2^:!n^]rlXAp}] )O#-\m*Ҁb^B&"K+"L#&6pZ!!o#)лQML!K\mMv4 <>VCNe?!:NMea7YqyO Bs˱37؎B0?"0 Jlʂ"O^zZRp%QWC2bld@h|6%yPRu1 g,Sx9 JeOK, ɱ xJSb SBR4.L6Uดk.6{> aᔹ% otϲSԦhI)A9aa9r8ĉץE0QOZsFGF af"=[,f{ql3ч~AatC]z8[WE;meR2ޡF}1G-2!˫p۱t@yR-N|RtC#r2ױ~/bwμ[+D )LwKTCCW Llg,qHByU  զ!VVj'_6+,C11;8ɏ7Ȭ"\GR% pvk7’BD뽱ecqBQJ th b PU$OwD8IMsh9 ^U,MhQȒ,՚ozbXs >ڛ4Vؤ(WJh[Q\c3e/ޮi\wT_4# 8447,6[M577wt,I _{K9A!H7"lmɈ Cnd26wcStn.$Ih'Ը O'{i!Z|x.60Ur߻et~D"aރvd<8 VepE@p)z6NmBeqEBÑ)嚡)!惡mI Vg=*I%lp"2tJ4HdO}PC.(-,r2 dd3IөLꆰsJ/uXwpFKtmd]ŗ*}8ngOvZIa J!F'UR^y/%`p$ 堍eSv>XPKdžgBfH> #0(J  p[:%5;= -*,La8jTA8 b0ݹ(hDk:s,\JFׇ0L%`^~T^"xKWHqo$o*8eAF ? @B|sz^xJkÆeb?d>L(-sh- M5 q"YY ~*$ # 5d*]2]0!_-,N俺Rb%)wrPInxs4d)q\}Kÿ!7BD5b2 -"hICzMwBxeuG[xx KWx`?} ow" 7ֳG%f“J-E@rD=MG]A[(`ŌJND0GjgPnZe%ڍjcʊXo?ŌP.qtiij!.љPy=xJZOwGjHRߥp@4m'N52/c,Io?¿efB]X S]g 2/13C gP2`:an >Y#YOOEM%9lO Мe{V# c4pr 7"}Y*8-y|N4Tx9s)GK<)Pt9U*}7ۄ*\챙,4j #v}efYiJ#(gX=i;lҋJ0I{'pC")Gqs2~@w^sxqB uFR5@༏ #B7[2b1!cG9#zq兵юĪysPE_U8oI< T;KP]ĨgTY9I 1[1O5k `@A446mNrd&Yܥڸ_+Eh~,.;r.DE7m5L:lIz:'[DY蝳;9Ks 'OjDՌPM!!b;,  @!dTF}=М pRochcU^ok@ة9BA1D|?mf猠;ݍ?fdW^aV?In+& NчMfYkM)cc[3EsTZ|SKmnbIX4]~1~ @?Pˑ'%hAx{(eʮ:yE`ƯÎSWԞ!6hCR i=t>ǁu`GHAxuQ;FGybm]W[',?#L@x]h}O{aUJU1L( AlnKO Ϸ@kjB[h3F3pgt2zDg4^jLR-oIC?ɯ;r=%JviM#{w2y!;<};rG u/ f Sy:צߊ?K|WF7s l#I0+/O>‹ o;\P$ПN*\lH24Y6e |# гabJx]0P׆#WoEoB'([.-Kv< 1jEEIdZ*2Ie$)LF{l50 Z*GI`&e\Ŕ 5LWfOcyF`xBûvNRY<#U ]PcHLs ,!'9th1hWgDɄNp3vT9BD 8Շ,A dc{\ɫXEOKP2}wg(-uV8%X \N)6w3X,(+f&滷-B؎Q-s/$5Awz%ND)lQQq}RX*H\O* s֊ݜ(£*["%JXΙ x ȑ:??4&EB hX! ' P'ÎY)w\8:lz բhCՕLTW?,;$ YQsik!c(^bJH /O7z$SrT&U 2'_*沨bV)HuY`NΧYGY10v$ %-ld3vu(8SO09fN~;$Ȩ]102ɚ! n\Z_AjL(Q-+*HWRK* vtD,D05@EW=w1 z͂+oOe) P2&- qβf)yZꀤKu-5s42OnCu ׺:C{5u\Ձ,0̀>;`#Y n AE!vu"A;{@}5Ad. EҺ{C:$OMJ ezT)g2IX~@Qqgl/wxlz"1!g|5J©q t:"ᤳIn|HE|$;EnE_/ .@GPɶ)p PTo+}J4v@YFNl|,$xM%!(3E'FCfER("2ia|l 7#X7FGZQ@>&0/+3jqw闈 rH=d^ r2^XPy՜@w+NXX|/i6=\WBސ(1")0]FD# tjDcݠ|?GkXТAGwGirb1h~!m)-R/JJFl_ƌ4 ԉJ4!RpMᚖZD`7zs̟b0P_wrjy6f KSyĥAgYThYw N> [k6 /f] __ƌ-tAG(G(A㦭~&l^(V 90SpI4WMk|u [zj>DG?mGXtE':Կ',tdm=;h~.""-Shxzt/&CW<-64_bNѕ=ܶU/nolv\A?yzN $1qVBOBt1*pȭ" `~:HFA*NҲ1^E陭"uJQOL%!Bӷ1o CL|?fXA xL2j<,wY *6QtBi lg.^l[`p-HH/ ?Gu@5,)啛W 4r(}.*I H FY7/T0Ǜ*U悀"FR쑏 ;yZ+#}{蠳0dYLTP]pЖ.D\BZ!N2?"A\AUHͺ)*&O-v|D)Wٔ[H͔-7yƊVƣWQ26Tb f/Z P,NE;(;5E⸮A5lO#:i\BQY{I#a)A35H+ ao@337Ќ]*u00!©viS/$n9/ Q ֲ}R*"@ZHmBGIQ5/6j^kiѺs"߲If!nYI|8ءk ^ (Jԟ͘vPWvl0!qȵӦ Kug^ <.w E 6Ug+ { fDN^%`rt1c>Y_V"_,_ZQal{@ЈIUbjynOX E=0(ԘFG P<kcQnhhd$Yl;Tq<( q ŷ>B(#P FQV0Bq-v Pt 6R8(RI1#/dW4f HR&^6򈗢jOɄ\ֹP$'z2NE5!> 7 2^ 2I!2&P!r8NYh _Q=[awf :!P-II8@;&X L!a\ 5̨$V6G3t!c[BQ-O=A%"SbWZ,*6_0KPt$ū$GZ5Xqȭo'l - \:D H,qFP\:gp+ө"P<]`@$ ""9إu ,&p\YIX6 M "Eoą!ru @Wo򸓙[a`HK 8Lf\x4lґ@^=80 a ?d{Y$"B@0^)DkSj/1z'}<$Lf ۝ `"BB٪JD 6'!=ULQL!w&[AärZp|ʽt (#kݏ}KÂH[eՁ |ZN$iy>˺%j&%[Uq1Xa B"*vTgCK; m Q N(O&h#!!0w<kWSWy,QCK[R/UU)PO118"&hcu /BI)!ңƦIu6wHONC؞.pr`"vg3W8`ص8:XŽ/Q7:UF_OuN+ mt lxB_ڃQURHۼ@ 9n-e`)"5 B .P-h+ YCߟn|.{ᄀ=U%($˒G3S|ЄJ'g͏بE!הD+A)hr3rV*5}/! 'QTߑlZ(z{7`2E͠J>U,nIA2!38cK "FS[7ʼ>JDF.{Wr?jK\-͕> p#l"װ-$)itW7{Adt,q5,~S+И &CorӃpة,\#Ǔ҉%]@P7VE'1z]Z{._SP֮?u)Y\P4NLO恒 >wDZTCoWe}\9#_8͝6J7A9 Q1meTۯ*]# eq}7Wl9Pbfj`3=eN}6QqI΄r(IrZh̄Bj6FwH]fP d_680@twW&KEFF{z*w`V~2 ,`졢`GDQyod k40ݲx\d*t2C՛F!/@3qFUC 5ȦJ4mM*y4>b5#&LK8s )Rd-ִY5ܐNq2low~ls$k":LD˜ )S$/NA]*Έ8Fv4Wͼ ?ꇏl̯KÆ IF@W.u:@1M n g\_F@S^Nb8QU$-"̙!&Bxw %V!($#vV8МV_X?@,o m%Kkbʲi {)&z~V QEe4tAvQm,z@|8'^Irs&80-LAwT/)M/R;pPK\8JqUD9 ? EᅄM+? a C%xv3q/M`jVb ! P΁ .IB@1 ?~BAi2 !ߌȾ$~_ p5itWf81Lm7 ʊ}jN .sluKx VAf & rmr>Tt+_I2l0uXg+ {^`B?$ s~Vo3'A2ER,"J9F+-d(v˸M%-h~ lЍZS֠3Ru8"2n'h̳ƣ8L:9\󶨗MεÓ]Ɉ{S)UNkP/AOO2%_0 z`Tf;m\zz '-OIA,21xѠ8?N^w UIIȖ8웙xdM~ZOg6`bf%W'u`GS!%ٔwMńl< !.݂N ,W+Wpx4jEw6"g"ikD7m@0߻]=;};w7LeŽ3")e?7S)Z%[k%AsJVKdvˮ,N@n 0Vǂy-Jj;c u>t: -u.m] zK*V ~.;jI٘Г_N-6aza^):Rh4n#<5#羣$C)XƚbbLc~G+֒ T.#"gH"̤8Q  ChWIb=w\ip*63x&>tgojv}(>Lc冘Jm G +PQ+tH'L (>{j<8DR ylG̬X?r#* vc|:Tb}P#}@m2ΫʺubA?}M~lLQnt;;I A1E&,spVaicԹNs\ۜ֬{-A'ŀM R%FkuYC&}:/,WbN.ApMw50-1%'¿{ bK7pn~90ېums:B<6jiP͛J-(fլrj!&hcv+v0D锔!/b9gբ%1^!- lQ>wY5ãRj~_ X [Dϛ \?.),JD">ހ [JАUBՀE9HVy'^e'^ 4;H N9=%۴N x {rWZX"GSdAY5Hj ~;% Vd# lzbE8b+B y<p0~Oom@v JSMoqճP!x4HziT# + Tg?H!iּ?&hƟG_Ājxiȷn04P0xG(i#&9=nL:lLv()+Wjd:67Uh rkؖeFxYro$"3XJa\M'H}h&@*[gtXݹLJ=9Mˡe 8#͊oRpqR b9P"(Kù4&:qq7AyAGы x«čD} 鑋- i,+ n '#Eɵ~C>8OݕPBg Xh>evjIѷ $ -C&Is$LI\p! yCtyo h&>uIpl;P3nvgPQU1JM0_Q0VNP|G^.PX~˙a8Iwhҽl0< rnEF>9/تV(CqU!&XRT%y[6bM` V9 nIFu?(%fG5Ӌq55C_ 䕝Y 1iIh\8 SB%}F%dK%[0S!) mL fG x} @D$l7"9yC%B]p:Ɋ/95$ 4ЭYO0zM4VFYa_PH-kCgˆ p^sqն  FKDrÊ-fFlq܂T˜}zN7⍖Q{F'sgiVi\_*f*16[^^23)QQY8}.<2OO,z*} ( qdv0{L*;3_ad{W|7YGM-jH!}`W[ \ELO$UρbʼR3mNǓqM@“JV|040Lcoe/t{Je1^W$a 7"QM1\ QEtԑL ֘PR9}ls.,ϞUL%&o?Ҁsgi~ Fq7z}L 91@=:ޝg|q[,<К/eKh ?d"Z]|0"X"6j0tI+\^aKJ5^7y)„䎪NQ~r;3J"W,ʟΧh% v|w$'KlseuN{dϰ9U@'8M %]Ǜ`-Ƙr+Mx#50("}*bFbH?72 ﲸӺᰝKP7Ժ:& ^7kH}+bI Z?ߟx@Z2>>GOXse^o-90}6Y+v} &>XMpw%Cee lLE=s6|@!BOFb$0#H- Mc, ;e0ǹb_)Dӵ(졁%;FuiN։:]U,{I–wN*(MyB:A`&Q0oٙcF-cEnm\8 iG5rlٛ#gFCLdU0U5]ZkܬAP2.m_]*4{0pZL^Z9A7l o/"o]LQ `LPە }`@N+u& WN{hqgGw`3ڟs|?S 0DH8:9@!D$ T^7p%8Q1Ώ;yM 62U$ZQˠ@闶v9{Ї2>(xL\-ðZ=PJaxY>ie@ b$>7ȯq̒f 'IaƁ2MR!!%:mƒݔ||l E7#'#mtVfa[2)ka#Xe;>jhAbBAU/!iizC"{QgG< @d:0 Ĉ*wG(Tvc! -KgXre&4Xg? #r,I JP&’+"`AP1 }/S5wB>}{HT!B*$}q&/ jd}Vsŗ51OS5ǬFf#Jîq H:^ uUYk8r\ l5*UPj-kos@SY4@fFlcUiKrgJ0*p3"!XLcG|Eg~d_|iIF75 SVy̞_*w N{&vN8(C3D* ,eiկ҃c3U8oL7&XR(6@㎿ Z(9G:j:8 /F͋]w@;cvYYl΃VFTT1@Cbj>'큞uK<Ls r.= *ySsAF AR>9!hG?Nf1Ngh$)6H uZtK8 =Tw 9WȀe,g(͉h$ߖ۹{fZС\ދGM*.j;w$t94,ԩzH \𛉷{~yTUN ]uxB՜!3ܘ*OL #9j&ȍgd!l/c#DpGO1,jrVo1d5zlKrIv6YÚbG usc Gjc@| +A(kdX**BW(43p`mY" AC6`JfQfGU8.F (xrDv߄3' ~FL@cb3^RmXC`ZFNh 3n:[hd_~~,NWP ewӋ+pQfr&$^`7-xxݐS78 MOV]A)%))T{ÂAE}U>%WVJ?>gǨxH$0m/BfZ̀1jz⾭  @@, ;oIknI<05{?̐ʓ]Xnk]9~;Vo`鞭x~F'0cPUIHv~4`YvpHpg!_P~r`Ö y (&~qk/͵R{r=չu]bF|R;"4PMIR, ;9TK!4WęR{ xz@@RkKȐ#)H!̆G29spT. p|ƃG.=pC|胦u1ÆGQ F2eq&4lqh#i1FpPkv x)PxENJ(4QG@*UصL"Åk"CBDI( G !^$LLq:nDĜ ':gp\faC6 R ,t0A܆6VkbhOO=Ng@ @@ @R`"3 H;@A p `z`#pF( ]A~ 2SA` !Ddh 8( 0 @3@6` dS|G̿ Uǟ9|GWӟRyw_}WK_ G^_k>{+#x.o=W~fx޹w}tdL~]wΈwoF^R{/ϦC/r\nԘ/$ mbiM#an}2l.Fs&d"6&H$a*z< R@4 nMi$;8LsB*CSPZ B% d#KB/9֋$hœÅh\m0 yzMш-|~n(0-SG+x.ݼ4Xe{v+453]y1^!3͐ͲY|DNN߽ؿ_a/Xz#a*"@!>'E\kDpV fܨu;͕XOl_/ 1AF"/rf'#,`_CF$0쟚4lߪRp{(/ؼH*y$T( Cn>ڇ}^MV%a!堌`ljxՀG<~m^kPh Iy toy 5kEV \hG3R .)NPHi5٢F-8MU|6!kĽvdBM$~bǒ5+V&e:dV2+7o '\vl¦3n'::oTgr#xCٮVYN|l\rkՂ)G)A:P]Gu>)"R[C $Nq`Pd 9^If˰_* γ$<6tB"Jx/UUDE&EaR'\]4\p_bsSnQ@ i%Ⱦ/8Cጊ٠8{ё|NIzh%0VR+l|0BtĔ˄z%2IC,u:9G1J*6/3i4դYN c SvO#74[$;?Hs4(P>%p:[7HE:KM-gBJ^DAL ̥GCʬg)ȄXVCAcw7 -ݛpACťe#|yH6:pn^/);*fG_bަI=@3(, >"J1 "~:_p yج`аeZvna6 DyO%#W1?8Vt >rV̙O hdJ-㯀J0..ȰYoO Qi)O@VͼS(mX}]@AŒS ;7p?IQ X2S5PCZDd-4KnAp Ȉ%s>T>i$e0b I& m*,㰄<1/z\)uBɅk;VM&`a 0d=Q[ HN& kt~hU;Aߥ ɖc!}_V4LT=SRHCBD1Dv9Y_9XZ`##+3#aŒ,1\"h]z-#AOStw ֋epaudٲtBVV0 vioo%e$MF3 ; 5o]4xmIr狅L+X~#q^}n23t*vv E45l^0]X33\w:7K~i!I&w:vn;1 y ^ҟ%_g -b-{BҸ B-$T>ؚBiiP΄z6ߡX/!U"!TB~dX& }4IX,srޮoZ]=% !mYfS PRRc:DH"a0|;?@aMą180 4M9V?` >aڛ]Nt a-FE! ,[x`ao`AH\'`LQvB|^|_P4Ťgx)ٜ&V]*뀳4Ne [-L.|>! ,_x`ao`A7gS .j-,a@ :*`ͥ*ۙ`GOm 뱉23Jp ! ,^x`ao`AD1E 2tp,+\GDuV3!(ʜ@VnY of؟Uc e$! ,]x`ao`AW1E A™ư =Ͱs: 3**Պ˜,0XXKƬ'QDJx}H! ,[x`ao`Ag S'ppfTԠ"x՛| ֠@I1zGo&i]hPFqZ"! ,[x`ao`Ag Sf7UµFpЮ^+^ - B"KROy0j (y| ƦP(X"! ,Zx`ao`Ag S).\, A]'u,WQg5)S$CSC/zltWұxF! ,Xx`ao`Ag S).\+ Aԥ d`j#"p%U``^xjS2er ! ,^x`ao`Ag S).\+ F:`pFP ^x(T< 3Pv:İ4&x֭l e$! ,\x`ao`Ag S).\+ F:򠰷(x!n*;ض!i7>UdS(P&! ,]x`ao`Ag S).\+ F:򠰼3 AQUeS(T,o~! ,[x`ao`AP_1EI 2xy.a  MkE?/Q jC=[56P,X<#! ,^x`ao`Aqq1e)D q{|¡E8PȊЎ@J֪3 O {rKkO d2e7!,]x`ao`A SFKpL S H@Kz gz&U*|N\MKƮ/J*x}H;inc/external/wpmu-lib/img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png000064400000000324150211770060020516 0ustar00PNG  IHDR(d5bKGD3r pHYsHHFk>IDAT8cX Q(sI. I/ZW%tEXtdate:create2015-09-27T07:35:02+00:00SQT%tEXtdate:modify2015-09-27T07:35:02+00:00" _IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-icons_484_256x240.png000064400000010705150211770060017250 0ustar00PNG  IHDRIJPLTEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD<{YtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2015-03-11T14:59:12+00:000i%tEXtdate:modify2015-03-11T14:59:12+00:00AtEXtSoftwareAdobe ImageReadyqe<IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_highlight-hard_75_dadada_1x100.png000064400000000374150211770060022502 0ustar00PNG  IHDRd2bKGD1 pHYsHHFk>>IDATcx=a Q)ë //1܏c' >0<`D wn{1ܺ5yf%tEXtdate:create2015-09-27T18:28:03+00:00{)%tEXtdate:modify2015-09-27T18:28:03+00:00 t4oIENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_flat_0_f4fff4_40x100.png000064400000000316150211770060020411 0ustar00PNG  IHDR(dΪ9PLTEIDAT(c`Xu6w%tEXtdate:create2015-09-27T18:25:25+00:00"5$%tEXtdate:modify2015-09-27T18:25:25+00:00IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-icons_222222_256x240.png000064400000015412150211770060017464 0ustar00PNG  IHDREr@bKGD"b pHYsHHFk>'IDATx{he}?g{1)]K&qqU4kbiKR(HBP(IvJ_ӮIV@nB5iNiGjq& ~A#QrX'9:ܫ{3E{=yo~3g~Mp& 1Xxh8<#dlЅMx1&$5 ~V c$ױ, ƹiN:Z ߊY>"BH!-Cu8t}8!B *OF.[aͲlB&1h>M]hN4MAb̐!(hE15jձcO<6e7,eS(fo16+3y JR|{^3^{88 ~' pxh8<4 g2n6e̘{QpӀPAiۺߖfS(D'L6=T:sfq羀l.cI ǧ=iM>ڠLN{U&&{uo..4~# pxh8<4 gÛp^i/0TWcQ @)yu}`LUc%Tȥ AR@?P-`BKl bZ}Ш͢uJ%U]K2e tsY@,ee豅rjcܭsMn0 AmPy DK(5,lN&bDmrwYDVte$謷 L[C0O P&0+; g3@ pxh8<4Y`OFZ!x#~ Gk @3K@:>PRMA|e]KgF.BtlOY d!(vVX%m#I[RR`2T HwYu=bYPEcU%&@Ĺ]}qo7*GL eQX5U-³8| _ݟ5\5pVH^\ Fآaa5l14[#boP1EiswMJ'5T06B|I,b`ՈPXkB$[-EOHt |3D(id9N6@x/ؠm(#wjPt/Zobq%[:3^~a55 |E닃^E$L-_s, ߫㕔Ņ& _,# F}&.<4 gOrdh9M7L(5꓂.?M(stզ-?:[ڧCr]'YB2lC| leXSpG0KcI~u L0/yLtrI?R%-wǷh$LJV ͿӢ ,g x_7l4* uM+@x<}ãq><#`i :=*ۿ{)_8hspCWғK`B]H"}_PNtQl1YQh+&?x5: ֘aYҭ=\En.YʸJE%uTj5F'b;[vט4u6]lkw3÷, : %& [|||Yiq`:qXc2+u|~/wrz[j-I># ,9Q:#,25@@%S@@6ÅJ{6{)hW~q]t<+|'0Oa 63UHWl;'Z9Z\oO嵁eeƢ[odarEm&ʧ3m6=g^Sx Hjmi(v ۈ{.h_%8nF7y{OFS5:/աWPH+bGx/9IYy.MtTeە,ѿ- Red ;Ә:9kT5mEG|\Wuǣ@^LE 4 gy ; J'U䐎N׷< p2mӫ.ZZ5< V ,p3w=~3jǿě#ʭ|Sfyk=Cn 1]C'I_O*,J՞D\\I}E\$M(E\߮?ƫw NJEb6tz:-?Bp ?XJ $xQJ}!#Ո2Ht!VɽV\'Y366YuJOAa[5e]p9=7t_y?OS_iT<͛32N묳}jHQ RTȢ nfݮ~+ciQ < Ma=|* $@'ԌǕqUO;5~@eI29w" O~ssk{‰$m>v z^2vow` a4cM Cb>q:o=-p`_2 ng:6KXV,2Ǿ6 g3@ śsaR WWB g-N;F[ՒaAVLF<-m VbMC 7K)XPy s~=<ܒ{x!=ÃqRl]/ 0l)'}#^tX孋t8FCY$)PUBE(~ҞV2^*SLHlS'IA[ Zx-V"ȥJ+ \|5uWnLJkܟ(00JyꞄafg6 g3@Ñg[}ZQk?ҳ=zI$ Т:9FWmx:\(W+eF9,*!GhDL8[vo)AaK5S/)^c(WHNW8Tr=opp]MCO?* D΢Ob/hs0ڜb91C9-oۿԗuQFc|W%@HB29/DxD`U:Ƈgi"`%ᄽ t E`t62k)PEѿO,?k_yh(/=@u g3@v@]<]~WD`.f~oʈNVA߈եM ^yMQ|ߛ^-{o~>wЃ (gXץi&X uDU͕l  ғޥߞkPHHCJ~S@O ׋ѓy7 k {25ofϫo{'!'Z%q*)gC\#\'0 P_WL7&AlJ\ Zp, Yxjc O(6zIV u:גTDO9ׄQ<*y =2~/?J,WJQW>Wu?#G/4"K{㧏',Iҟ综E;|Rݠ~W7i86 pxh8<4 r<}8 kGo;uCPv)A<$ց;{l #`FC!f Ӆ/`7(0R!99z@%!/m]AdhvG3@ pxh8<4{P/ 3@} B&^16{. ߠaQo 2lmt!\%@X?5ճa~ ʠM65wka)TF_ 2$x5_9!VxRd1!}'`$Uԇr? Q `7`.k_VzԄp]]GOLXCk3%tEXtdate:create2015-03-11T14:59:12+00:000i%tEXtdate:modify2015-03-11T14:59:12+00:00AtEXtSoftwareAdobe ImageReadyqe<IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_flat_75_cccccc_40x100.png000064400000000334150211770060020627 0ustar00PNG  IHDR(dbKGD:2> pHYsHHFk>IDATHc80 d:?%tEXtdate:create2015-09-27T13:41:38+00:00ȁ%tEXtdate:modify2015-09-27T13:41:38+00:00u9\IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-icons_454545_256x240.png000064400000015520150211770060017503 0ustar00PNG  IHDREr@bKGDE;- pHYsHHFk>mIDATx{leG}?gK$U!>T؈Ji6A"VR%;"*UP) /zRJFQP zBQHVU5sμ9^3ߕ{~7s7<.` cAb/@[VD03AX90N_B &>~> c;abDߎEQz'kMayԉ 6!:u::@RŤByDD'L-f]Sq!f SQ&S7MCr==3dJ{fZS0Ms:0K٦gʿ&HU=mc4i?UĔGU4hcQb]!hLW/  @pxh8~|AQf?ێ1f¸=uQGJHpPϠIw״m췥ԧ>2"WÓP&{nT:sfqH@.cI ~Ss+^|Bn29 dH]v-ˌ-meh>q&تg 9x#cn~!pxh84^/ o #Z@S^4 KZKPd9C@F[,a+]8vKqHlw9ק84KBץ|&#[\C`R!:F zC6)AT1wU.Iҗ!4ig3wE:q7n0uAmPy TK(5ͬlNæbTrwDV]te47 L[C0P&0++  @pxh84Y`OEZj,*-E)e{U, \uoV: `omKet_WOdW3Z Քrv|~^g`jycp*fb]M59.LNq+%ۯ0vccJEM5kk#I<x_ I#0Dw4xh84^/ ^c drDM{wQte{^`br./M:0գ*z`]|SB(e)h͎/Vܮ"aO!o ,u^Љ^=zt`WeCCM Qϱo0q%Uo?<@6HG/uAQ-_u||ִ*2lٍuG@ j !Br qL!*)h.V{3-!w$dP*/P[ t1l3hlyp0bgL} 3$%\/.)TwQ"uK7d+2! @pxh84'aY$mf6lB'.D Рx7SxtIe We}d0RW^ݢ0](U݋Tx|T|@v^Df׹Lb(2H0n8;_QO}D&3{YWw5*e˗?̖G :H iZӖ)/MP(:!/|B[i:Gf L`~:z$aa^ʭ|P- kbݞ<ەL&xJAABȼHvᑢ[ySəwNJuy %pw0_a"zx 3i1|= @%JWAm\ lXm9+()S orro*E`Z1&=ޗg!Rt<bfa?qh'y'ry#\& o+Ԫ|Y%_Hp"k1*ɫU[&x9xAsmfe<_7;y6mi :[)EB7̰8fCH`⾿h)}(%m'& ;(ݚ!{:^R@NKү"*<V敡=oh~q+`6IiI<#Z=^IE\`0]1%DA^a0f,c %[Gxh84^/rdh9M7L)-ӂ-?K(stբh-?:[ڧCr]G(YB3|C| leXW_xV8ƊbbQ7V4J]l!= D ?'a`^aq8:-OYPxۀ֝X5Q"GִW} I>ȓclpVZM_gڰCveG{<_d0՗eN%NyƍȄp~Ú/kn|(G#.s9Jۇl [6ɻ&.X{SDf†< y?O~ƅDP*~bgcos{;'Z9Z.O孁e U~?Ӆ1N3ڶD(1GxxkSHI~ی?Ok,i(ׁۈ{.h_5؋nF70QOS5:'/աJr .KNwuer>n-U$U`Iv%.AUed ;Ә:+a&XĎ y Gс "4pxh84^ @d6((Ԕ{C::[>H, ɴNVNhr.~NZ`3᝼KQ|$%t!Vn%=*7fg(m!f y"kI6Y/eZٳ+zg6W8ɦbQ%y{9Ï*ŕ#7b-tX͕8ynO{]!ټ*\ (p2.Hٙd.^Z(N &l2&k U&ף#~.7658A7}P:BlkU[8)jw0$W !s\ QFn(qRK:'X@=$ x|5:@]2Si.& $` 8tS =&[#߫U3Wҳq ^H{➇Z4"AH#U0+̱1Ɏ;O9"DE C+nU:|a ɔM|?HW1$~=kUџVVl{7 ^;<,t[T"3SU9l˾Hx^&a@)E&<I?U7xG4c *i 5)ñ>wHf5[qO.d&J_~W\`G{ |-e/Чkd E( Niv=C` ̲Z+%m )s!ī6FeiN%O*㪞v,s@%4tS/Ѓ (gX7i&X 5WJ"*V J6s{IwoO_5~YXw(R!m)^'Dɸ5=@+~jyQ`O`$D`H_BT#%].XxDѫOR2E\K"R\T|:mO x*y =2~/?J,+%q Wޛ3?ܕ? ^e +RoҎ5س~oBo l84^/  @!/ONGۮ2t]С8cݮ5z=7ˮg@/aE[y#3#z7L.| (cRcSmQ$6ץ{ Da{T_j84^/  @ñ`/_g "d`ɾ0 { Cj_9jDՋa~? dc[0*a,& 0&+ OB4!1~Ix>8c&G)jI=@5@v&J?QlÇ@Q?^%tEXtdate:create2015-03-11T14:59:12+00:000i%tEXtdate:modify2015-03-11T14:59:12+00:00AtEXtSoftwareAdobe ImageReadyqe<IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_flat_0_fff4f4_40x100.png000064400000000316150211770060020411 0ustar00PNG  IHDR(dΪ9PLTE pHYsHHFk>IDAT(c`Xu6w%tEXtdate:create2015-09-27T18:25:25+00:00"5$%tEXtdate:modify2015-09-27T18:25:25+00:00IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-icons_A44_256x240.png000064400000010705150211770060017261 0ustar00PNG  IHDRIJPLTEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"QYtRNS3P/"Uq@f`2 !<BHK Z#'1S,4j8E|)Q$ bJmߜGc?oh@^bKGDH pHYsHHFk>dIDATx] c۶H阒]Kd%٫뺮lmw]|pXm-}X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@*aӝ%MFDDDDDDTߖH,ERUn ب\f͹:}4ᦋ{)n[ ̰E K Y Dۇ- +Kl=ӃL`љ|%n a N#5 (4?EDDDD\oWFfq;\E_,W!%zE!F¶. (USHQ0dw)T 8#p,xBK *xXEe K솎%mKX~sFE~tdcaI1Af4dHcGSB`0wev`"{ .GDDDD,dO6k"qkMefS_UKŌ&g~>n H}) LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥  AHBLH@cUq=jcM2sJCLiR NQ0=Yi-|4V ]]B^ޞ_H$<$ a=d@ (ZAp_}~s:N{DC>m^ƒS&, ;N&B} <_AB]HuN(B0{h1IKDs j' M8.ӫ1h3df}mq nU{Lo z \=?@ ((e|=ơ麄Ci1r<|OO; `HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z ̥=U5} 7;b(nP&sk48ͥ01U Wvk18dqTՌE]qH8 GF K'rOrŗ6"fpT^3c"nMم-/W=tJ,X){P Rm|K>mX8v5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee|A=) dQ`}P[KN˂/~)O[dO=3El5'Y$?7mTzզ.\.` WE"""""v)V#]L;zqJr²[\-tҽ5 @ͷϟnT@+;cQhC*TڙAVr?f? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09 S;j5 iQ]7k0UޭGkX3#lY_Цxj޶9`# M [z KuO_z˿Dܭ*kOJ(7n\e ITƨl/U߶uw.~;#r.8 o# 5Lh>1i pVM?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/t R; TӲ]aL|efđ >ۣG|P`P8C1K՛A̍<2ۂKrl@L L 8@E>`nPNԍ,p EƆZF lÎ; F7Ȯ; swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ ES8:v`p~vj:Bp96oys% |@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу| ? +(OǍ+ #ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl%tEXtdate:create2015-03-11T14:59:12+00:000i%tEXtdate:modify2015-03-11T14:59:12+00:00AtEXtSoftwareAdobe ImageReadyqe<IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_highlight-hard_65_ffffff_1x100.png000064400000000313150211770060022517 0ustar00PNG  IHDRdoWgbKGD݊ pHYsHHFk> IDATch`2jtIDATx{le}?g kuJ>DC^QMH*MU h(*$HR*j D])Ż(M6F6!6- xIi- HN8suιgf73ƣ7 x ^/2&v&v^DL l6I-o?cnD Iye#d0+03~0g'LV[RC:B~()$qvXuB@E@`HNG`TA%=]qAwJ)u)9:e9d`V0A{=BS*ڦ SgF A -(DR˷@"g'U,eSwʿj*)l[.HLyϰ9jaI6MR~~ nGٕ3  @pxh84~=@>(mE3a\`~=uQ[f3WAioK}3wէgV,jn2*ߕmM] y=xn"co.L"7]EC:dHzE@W.f+^eƦ6vռE4O`̴.)l :7){_Я~"pxh84^/ / #\@S^T0sZs1J1Pr hwVEgSTQ5[ \BO `+˾>}\6/0kg1[ KhlXʿ_Z^IA^N4vOW=%i^<9tf 2СBHg6!u\ҭZ&蒶 2s U]iT ]Uaq;]A :rG-3<Fn*ݴTݯ 4< ; @pxh84^ysh,ux$\j"Z-moSJ9{ e˹[ \fָұy2LT0K@9ԼŢ=?ХB=c"vT6 Tokza9Ts&6ոv }3':[5),xU!҃@}U kc ꈡY,]`&߬('u*^v Owu?}2&CȖr}ݾ^g[`yc*9s"f_b uuT?Mf  eۏ0evbcJEM%6PolM`n ~Esչdj|z)miO q/{کJqAGpxh84^a+ ʥ5݃F+Y&{˾I z\eXoJ}HȯiW)~nm߮ɞhl*7TP3kXJ7R""NXU}ٔއA/(qW\v6$2 -˶E zdj0u]PT{[:>>LDkZYֺ14ZCWUbd12zBY$i".~Ai=Œ ۪>EAIb\Ϋ c6OSB\ɅJ#" REȰ_'I.aluI YX^/  @=h$i37[d:Qu!ZtwUl~FŻbkK"$-c.3@,y;i-JӉR޽H!ɷjN;LdwEdp fO,jTq+ 򩸹h[@Vef6KVx\b|l}_$U+W!?o[yB(p3 r_5P2ݚla˱ *xGXG$`W~9?r+y -kd.@ <]#U\Z, W4Ig9L1s aRO^.P(>K\c6m^um Qlg"y[өD/[V*3谨Xm@[qX#r,a5 kLK"0񢐻(qAOVPU j(iJlWq li xS T!sXD@s 9ky8\aY"rv֗u- v!H 4<@(B$"PdVZ5Ɯ ߦs0kB5h$=dpϪ_@0+4@"hOtcky5vzK\1@ޒZ]B_.܋ؿ!IXdWpW0Z%y9s9jaK0hsN,lUX!hf!2.)0 6B|Iq/Ӽ0jDF[,5 !m`-$J~1wWQJD#"YO  6hVQ5Ct/7 8-*"_EUy 0x+Cxgh|+`6HiA|]Z=^JE\`20 ~]f 5X`?S0Q^?J1%[Gxh84^/{ S"rؘɛnRZԧ[v-POI'Z~ttONzqgآ4X ԃ,seq9 ,2)^Ķ/(rS?=# (9a:,وK x R. B%f6nϻ V/Σ %O+|!I 63eHWO vXIKOrZ8gg8=C29Ǫ[PB' rAmK"zʻ! m6뱾3y5ܓ"[< JsϏU9Z^8_fD!Zq_\- -`)Dg鲔iqIb.JXTbjk$M1^K6<˿9C_frEM~8]TxXu5_<t_0PA𶀆 @p4O"qGA餦vGbQprzE33U 6+$q?W 1XK<8 [sC!}E~5C~=Cn 1[xLO gUX=̪yhsl(&U'/qgv|^8Sx(o(Bxe\ӑľUs:҅ͅ2k W!BԜi VEOfX6gA5kOد2jS6ۼ[JSjQ:(Z0Ne Z]L2$4@8B,,Nj(t'8.JCLKUi5#Xx#|U:@m??d,^q5L!]MrI4pZ;>g@MFK)(}fU .{]~55>"$c +ן?Qc# mK-6)࿁_YnG+:|a "~ϯٯbq~=+,j?My 9"yDʍng6-z<,+tKxW"'l˾H[yJ&a@~/9"a%$iѣ6.S8ظ+y+*ojom p-k1 u%=-" 4wq-ՐEK |UfG -Ua]Xrx.\˅h:"LFdF5pf覊)nYͣnFh 1{'\<ϫlik)$H 䇙5%yknib /OEOjZ<,bP p+ @<[/ #/Zwp6$5DE |6w^>7{ԇNĭPwf>k7/c͗=cMﴯ߁AE`q:N*NQbUG`ʟƳCᨉ"5w5.&v;.ܱ7e$$yKYE<[y8M nm%U4@[&EC(./bC>Z1_PO^;Ф!Nwcl^]`C1L8GO{ >.|mO9QHN P{;=YJ7'[ɂ-b< Xӌ2@}޺PwaŨM lqG{R\pDxsT3Xؓ @pxh8ѱxe l TZBHaect*ZHFb52iiS[:DHS ))%_rpSeUӮ@ *I3*C 3 =&&5CB`Ê,o]~]3tحjXex0CTA3œy 5{t!k@QV+Vr 3e!̰BːۓOA԰‰ # U4VDчD*Oݕ<:XlBxh8L`pxh84y0؃Jk5#;ǮD"-鞺#tLn3ã|ÁysɩqvA2t>}XJx8c&G)jI}@5V&J? Y!\=jb<hj o%tEXtdate:create2015-03-11T14:59:12+00:000i%tEXtdate:modify2015-03-11T14:59:12+00:00AtEXtSoftwareAdobe ImageReadyqe<IENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_highlight-hard_75_e6e6e6_1x100.png000064400000000373150211770060022303 0ustar00PNG  IHDRd2bKGD1 pHYsHHFk>=IDATcd0HZ 0fx&uë8 /f2<܈ٳGu*F2w%tEXtdate:create2015-09-27T18:27:46+00:00\P%tEXtdate:modify2015-09-27T18:27:46+00:00- NIENDB`inc/external/wpmu-lib/img/jquery-ui/ui-bg_flat_75_ffffff_40x100.png000064400000000320150211770060020644 0ustar00PNG  IHDR(dObKGD݊ pHYsHHFk>IDAT(c (IUʑ.{%tEXtdate:create2015-09-27T07:35:02+00:00SQT%tEXtdate:modify2015-09-27T07:35:02+00:00" _IENDB`inc/external/wpmu-lib/img/select2x2.png000064400000001515150211770060013771 0ustar00PNG  IHDRxPқIDATx흱nA@#A C%\P'  Q!AutD+-n\$4Zf8nw+])r✃o`h5='KA8 %7A)\%!q&DO\ ,{H.)^ S7=Ȣ:du"րi}%E>t s"|גP? sBQ5c!y sg8"e-dn61~,YTp6zCub Gp  }y:J@p7kԣ JR {Y2w/,uO˓Sw5Z%}kphhqɱ96)\%!q>F8G+WwXx$V.E(<`Q¶{a~(|sjF<\%k'KAT+y ^pOI>. %{'cJkx!x'?lKSoZ_- J.tp7AL=[/AደUrwB!xJ~~og S\E` AC5P"qabl cP$#]`Ӓl]pZr`ӂӒl\p(I+%x`@11&(mWIENDB`inc/external/wpmu-lib/img/select2.png000064400000001145150211770060013516 0ustar00PNG  IHDR<(,IDATxKaJ.b]*(Ɉvd <P!RqTСH#GyRدHt0L>9,m)yuم};)IJ,Q(XV &OhF! { n{,%]אGc5x >@3 &2 %C,bE؀u9=T67)E " loy[eCÚ & Dm# QȼŪj ބv@ TeMܽ;G9b}1̟ǾT: hC f 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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. inc/external/wpmu-lib/inc/class-thelib-updates.php000064400000041563150211770060016202 0ustar00updates->clear(); // Enqueue some updates lib3()->updates->add( 'update_post_meta', 123, 'key', 'new-value' ); $the_post = get_post( 123 ); $the_post['post_type'] = 'new_type'; lib3()->updates->add( 'update_post', $the_post ); // Execute the changes lib3()->updates->execute(); */ /** * A list of all transaction commands that are queued up already * * @since 1.1.4 * @internal * * @type array */ protected $commands = array(); /** * Holds the last error message if something goes wrong during execution. * * @since 1.1.4 * @internal * * @var Exception|false */ protected $error = false; /** * The plugin name. Used to log data in the uploads directory. * @see write_to_file() * * @since 2.0.0 * @internal * * @type string */ protected $plugin = ''; /** * Clears all commands from the transaction queue. * * This should always be used before starting an update to guarantee that * we start at a known (= empty) state. * * @since 1.1.4 * @api */ public function clear() { $this->commands = array(); $this->error = false; } /** * Adds a command to the transaction queue. * * We use this workflow to first collect all update-statements before * the first update is actually written to database. * This way we have opportunity to parse all available data and not end * with inconsistent data when there is an error somehwere during upgrading. * * @since 1.1.4 * @api * * @param callable $command The command to execute. * @param mixed $args Optional. All params that come after $command will be * passed as function parameters to that function. */ public function add( $command ) { $this->commands[] = func_get_args(); } /** * Executes each command that is in the transaction queue. * * Each command that was executed without an error will be removed from the * queue. All commands are executed in the same sequence as they were added. * * @since 1.1.4 * @api */ public function execute() { $this->error = false; foreach ( $this->commands as $key => $transaction ) { $done = false; $log_line = ''; if ( count( $transaction ) < 1 ) { $done = false; } elseif ( ! is_callable( $transaction[0] ) ) { $done = false; } else { $func = array_shift( $transaction ); if ( is_array( $func ) ) { if ( is_object( $func[0] ) ) { $log_line = get_class( $func[0] ) . '->'; } elseif ( is_scalar( $func[0] ) ) { $log_line = $func[0] . '::'; } if ( is_scalar( $func[1] ) ) { $log_line .= $func[1]; } } else { $log_line = $func; } $log_line .= '(' . json_encode( $transaction ) . ')'; try { call_user_func_array( $func, $transaction ); $done = true; } catch( Exception $ex ) { $this->set_error( $ex, $func ); return false; } } if ( $done ) { $this->log_action( $log_line ); unset( $this->commands[$key] ); } } return true; } /** * Saves error details if a command fails during execution. * Only one error can be saved. * * @since 1.1.0 * @internal * * @param Exception $exception The error that was raised. * @param array $command The command that was executed. */ protected function set_error( $exception, $command ) { $this->error = $exception; $this->error->command = $command; } /** * Returns the last error and resets the error-flag. * * @since 1.1.4 * @api * * @return Exception|false The error object */ public function last_error() { $error = $this->error; $this->error = false; return $error; } /** * Debug function that will display the contents of the current queue. * * @since 1.1.4 */ public function debug() { self::$core->debug->dump( $this->commands ); } /** * Sets the plugin name (i.e. the sub-folder for the write_to_file function) * * @since 2.0.0 * @api * * @param string $name The plugin name, must be a valid folder name. */ public function plugin( $name ) { $this->plugin = sanitize_html_class( $name ); } /** * Writes data to a file in the uploads directory. * * @since 2.0.0 * @internal * * @param string $name Snapshot name, used as file-name. * @param string $ext File extension. * @param string $data Data to write into the file. * @param bool $silent_fail See $this->snapshot() * * @return string|false The filename that was created. False on failure. */ private function write_to_file( $file, $ext, $data, $silent_fail = false ) { // Find the uploads-folder. $upload = wp_upload_dir(); if ( false !== $upload['error'] ) { return $this->write_file_failed( $silent_fail, 1, $upload['error'] ); } // Create the Snapshot sub-folder. if ( empty( $this->plugin ) ) { $this->plugin( 'wpmudev-plugin' ); } $target = trailingslashit( $upload['basedir'] ) . $this->plugin . '/'; if ( ! is_dir( $target ) ) { mkdir( $target ); } if ( ! is_dir( $target ) ) { return $this->write_file_failed( $silent_fail, 2, 'Could not create sub-directory ' . $target ); } // Create the empty snapshot file. $filename = sanitize_html_class( $file ); $filename .= '-' . gmdate( 'Ymd-His' ); $ext = '.' . $ext; $i = ''; $sep = ''; while ( file_exists( $target . $filename . $sep . $i . $ext ) ) { if ( empty( $i ) ) { $i = 1; } else { $i += 1; } $sep = '-'; } $filename = $target . $filename . $sep . $i . $ext; file_put_contents( $filename, '' ); if ( ! file_exists( $filename ) ) { return $this->write_file_failed( $silent_fail, 3, 'Could not create file ' . $filename ); } // Write data to file. file_put_contents( $filename, $data ); return $filename; } /** * Reads data from a file in the uploads directory. * * @since 2.0.0 * @internal * * @param string $name Snapshot name, used as file-name. * @return string The file contents as string. */ private function read_from_file( $file ) { // Find the uploads-folder. $upload = wp_upload_dir(); if ( false !== $upload['error'] ) { return ''; } // Build the full file name. if ( empty( $this->plugin ) ) { $this->plugin( 'wpmudev-plugin' ); } $target = trailingslashit( $upload['basedir'] ) . $this->plugin . '/'; if ( ! is_dir( $target ) ) { return ''; } $filename = $target . $file; if ( ! is_file( $filename ) ) { return ''; } $data = file_get_contents( $filename ); return $data; } /** * Returns a list with all backup files in the plugins upload folder. * * @since 2.0.0 * @api * * @param string $ext File extension to include. Empty means all files. * Only specify extension, without the dot (e.g. 'txt') * @return array List of filenames (only file name without path) */ public function list_files( $ext = '' ) { $res = array(); // Find the uploads-folder. $upload = wp_upload_dir(); if ( false !== $upload['error'] ) { return $res; } // Build the full file name. if ( empty( $this->plugin ) ) { $this->plugin( 'wpmudev-plugin' ); } $target = trailingslashit( $upload['basedir'] ) . $this->plugin . '/'; if ( ! is_dir( $target ) ) { return $res; } if ( empty( $ext ) ) { $ext = '*'; } $pattern = $target . '*.' . $ext; $res = glob( $pattern ); foreach ( $res as $key => $path ) { $res[$key] = str_replace( $target, '', $path ); } return $res; } /** * Saves a snapshot of certain database values to the uploads directory. * * @since 2.0.0 * @api * * @param string $name Snapshot name, used as file-name. * @param array $data_list { * List of db-items to backup. * * @options .. array of option keys * @posts .. array of post_ids * } * @param bool $silent_fail If set to false then failure will be silent. * Otherwise the script will wp_die() on failure (default) */ public function log_action( $data, $silent_fail = false ) { static $Logfile = null; $data .= "\n-----\n"; if ( null === $Logfile ) { $Logfile = $this->write_to_file( 'update_log', 'log', $data, $silent_fail ); } else { file_put_contents( $Logfile, $data, FILE_APPEND ); } } /** * Saves a snapshot of certain database values to the uploads directory. * * CAREFUL! THIS FUNCTION CAN CAUSE MEMORY ISSUES IF THE $data_list IS TOO * LARGE. * FUNCTION IS STILL EXPERIMENTAL. * * @since 2.0.0 * @api * * @param string $name Snapshot name, used as file-name. * @param array $data_list { * List of db-items to backup. * * @options .. array of option keys * @posts .. array of post_ids * } * @param bool $silent_fail If set to false then failure will be silent. * Otherwise the script will wp_die() on failure (default) */ public function snapshot( $name, $data_list, $silent_fail = false ) { // Collect data from the DB that was specified by the user. $data = $this->snapshot_collect( $data_list ); /* * Data is serialized using json_encode. * While is method is slightly slowe then phps `serialize` the output * string is about 30% smaller, resulting in smaller backup files... * * http://techblog.procurios.nl/k/618/news/view/34972/14863/cache-a-large-array-json-serialize-or-var_export.html */ $data = json_encode( $data ); $this->write_to_file( $name, 'json', $data, $silent_fail ); } /** * Displays an error message (Snapshot failed) and then die() * * @since 2.0.0 * @internal * * @param bool $silent_fail See $this->snapshot() * @param string $err_code An error-code to display. * @param string $error The full error message. */ private function write_file_failed( $silent_fail, $err_code, $error = '' ) { if ( $silent_fail ) { return false; } if ( empty( $this->plugin ) ) { $this->plugin( 'wpmudev-plugin' ); } $msg = sprintf( 'Abborting update of %s! '. 'Could not create a restore-point [%s]
%s', ucwords( $this->plugin ), esc_html( $err_code ), esc_html( $error ) ); CustomSidebars::wp_kses_wf( $msg ); die(); } /** * Collects data from the current sites DB and returns a structured object. * * @since 2.0.0 * @internal * * @param array $data_list See $this->snapshot() */ private function snapshot_collect( $data_list ) { $dump = (object) array(); // Options. $dump->options = array(); if ( isset( $data_list->options ) && is_array( $data_list->options ) ) { foreach ( $data_list->options as $option ) { $dump->options[$option] = get_option( $option ); } } // Posts and Post-Meta $dump->posts = array(); $dump->postmeta = array(); if ( isset( $data_list->posts ) && is_array( $data_list->posts ) ) { foreach ( $data_list->posts as $id ) { $post = get_post( $id ); $meta = get_post_meta( $id ); // Flatten the meta values. foreach ( $meta as $key => $values ) { if ( is_array( $values ) && isset( $values[0] ) ) { $meta[ $key ] = $values[0]; } } // Append the data to the dump. if ( ! isset( $dump->posts[$post->post_type] ) ) { $dump->posts[$post->post_type] = array(); $dump->postmeta[$post->post_type] = array(); } $dump->posts[$post->post_type][$post->ID] = $post; $dump->postmeta[$post->post_type][$post->ID] = $meta; } } return $dump; } /** * Restores a saved snapshot. * * We're using a lot of SQL queries here to get as much performance as * possible. Using functions like wp_set_option() takes much longer than * a direct SQL query. * * NOTE THAT THIS FUNCTION IS FOR DEVELOPMENT AND DEBUGGING. IT MIGHT CAUSE * MEMORY ISSUES FOR LARGE SNAPSHOTS OR EVEN BREAK THINGS. * FUNCTION IS STILL EXPERIMENTAL. * * @since 2.0.0 * @api * * @param string $snapshot Exact filename of the snapshot, including ext. * @return bool True, if the restore-process was successful */ public function restore( $snapshot ) { global $wpdb; // Get the contents of the snapshot file. $data = $this->read_from_file( $snapshot ); if ( empty( $data ) ) { return false; } // Decode the snapshot data to an PHP object. $data = json_decode( $data, true ); if ( empty( $data ) ) { return false; } // The restore-process is handled as execution transaction. $this->clear(); // Options if ( ! empty( $data['options'] ) && is_array( $data['options'] ) ) { $sql_delete = "DELETE FROM {$wpdb->options} WHERE option_name IN "; $sql_idlist = array(); $sql_insert = "INSERT INTO {$wpdb->options} (option_name, option_value) VALUES "; $sql_values = array(); foreach ( $data['options'] as $key => $value ) { $sql_idlist[] = $wpdb->prepare( '%s', $key ); $sql_values[] = $wpdb->prepare( '(%s,%s)', $key, maybe_serialize( $value ) ); } if ( ! empty( $sql_values ) ) { $this->add( $sql_delete . '(' . implode( ',', $sql_idlist ) . ')' ); $this->add( $sql_insert . implode( ",\n", $sql_values ) ); } } // Posts if ( ! empty( $data['posts'] ) && is_array( $data['posts'] ) ) { foreach ( $data['posts'] as $posttype => $items ) { $sql_delete_post = "DELETE FROM {$wpdb->posts} WHERE ID IN "; $sql_delete_meta = "DELETE FROM {$wpdb->postmeta} WHERE post_id IN "; $sql_idlist = array(); $sql_insert = "INSERT INTO {$wpdb->posts} (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_content_filtered, post_parent, guid, menu_order, post_type, post_mime_type, comment_count) VALUES "; $sql_values = array(); foreach ( $items as $id => $post ) { self::$core->array->equip( $post, 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count' ); $sql_idlist[] = $wpdb->prepare( '%s', $id ); $sql_values[] = $wpdb->prepare( '(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)', $id, $post['post_author'], $post['post_date'], $post['post_date_gmt'], $post['post_content'], $post['post_title'], $post['post_excerpt'], $post['post_status'], $post['comment_status'], $post['ping_status'], $post['post_password'], $post['post_name'], $post['to_ping'], $post['pinged'], $post['post_modified'], $post['post_modified_gmt'], $post['post_content_filtered'], $post['post_parent'], $post['guid'], $post['menu_order'], $post['post_type'], $post['post_mime_type'], $post['comment_count'] ); } while ( ! empty( $sql_idlist ) ) { $values = array(); for ( $i = 0; $i < 100; $i += 1 ) { if ( empty( $sql_idlist ) ) { break; } $values[] = array_shift( $sql_idlist ); } $this->add( $sql_delete_post . '(' . implode( ',', $values ) . ')' ); $this->add( $sql_delete_meta . '(' . implode( ',', $values ) . ')' ); } while ( ! empty( $sql_values ) ) { $values = array(); for ( $i = 0; $i < 100; $i += 1 ) { if ( empty( $sql_values ) ) { break; } $values[] = array_shift( $sql_values ); } $this->add( $sql_insert . implode( ",\n", $values ) ); } } } // Postmeta if ( ! empty( $data['postmeta'] ) && is_array( $data['postmeta'] ) ) { foreach ( $data['postmeta'] as $posttype => $items ) { foreach ( $items as $id => $entries ) { $sql_meta = "INSERT INTO {$wpdb->postmeta} (post_id,meta_key,meta_value) VALUES "; $sql_values = array(); foreach ( $entries as $key => $value ) { $sql_values[] = $wpdb->prepare( '(%s,%s,%s)', $id, $key, $value ); } if ( ! empty( $sql_values ) ) { $this->add( $sql_meta . implode( ",\n", $sql_values ) ); } } } } // Run all scheduled queries foreach ( $this->commands as $key => $params ) { if ( ! isset( $params[0] ) ) { continue; } $query = $params[0]; $res = $wpdb->query( $query ); } return true; } }inc/external/wpmu-lib/inc/class-thelib-debug.php000064400000054704150211770060015624 0ustar00debug`. * * @since 1.1.4 */ class TheLib_Debug extends TheLib { /** * If set to true or false it will override the WP_DEBUG value * If set to null the WP_DEBUG and WDEV_DEBUG values are used. * * @since 1.1.4 * @internal * @var bool */ protected $enabled = null; /** * If set to true each debug output will contain a stack-trace. * Otherwise only the variable will be dumped. * * @since 1.1.4 * @internal * @var bool */ protected $stacktrace = true; /** * Toggles the plain-text / HTML output of the debug. * All Ajax requests will ignore this flag and use plain-text format. * * @since 1.1.4 * @internal * @var bool */ protected $plain_text = false; /** * Constructor. * Setup action hooks for debugger. * * @since 2.0.0 * @internal */ public function __construct() { remove_all_actions( 'wdev_debug_log' ); remove_all_actions( 'wdev_debug_log_trace' ); remove_all_actions( 'wdev_debug_dump' ); remove_all_actions( 'wdev_debug_trace' ); add_action( 'wdev_debug_log', array( $this, 'log' ), 10, 99 ); add_action( 'wdev_debug_log_trace', array( $this, 'log_trace' ) ); add_action( 'wdev_debug_dump', array( $this, 'dump' ), 10, 99 ); add_action( 'wdev_debug_trace', array( $this, 'trace' ) ); } /** * Resets all debug-output flags. * * @since 1.1.4 * @api */ public function reset() { $this->enabled = null; $this->stacktrace = true; } /** * Force-Enable debugging. * * @since 1.1.4 * @api */ public function enable() { $this->enabled = true; } /** * Force-Disable debugging. * * @since 1.1.4 * @api */ public function disable() { $this->enabled = false; } /** * Returns the debugging status. False means no debug output is made. * * @since 2.0.0 * @api * * @return bool */ public function is_enabled() { $enabled = $this->enabled; $is_ajax = false; if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $is_ajax = true; } if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $is_ajax = true; } if ( null === $enabled ) { if ( $is_ajax ) { $enabled = WDEV_AJAX_DEBUG; } else { $enabled = WDEV_DEBUG; } } return $enabled; } /** * Enable stack-trace. * * @since 1.1.4 * @api */ public function stacktrace_on() { $this->stacktrace = true; } /** * Disable stack-trace. * * @since 1.1.4 * @api */ public function stacktrace_off() { $this->stacktrace = false; } /** * Do not format debug output. * * @since 1.1.4 * @api */ public function format_text() { $this->plain_text = true; } /** * Use HTML to format debug output. * * @since 1.1.4 * @api */ public function format_html() { $this->plain_text = false; } /** * Determines if the debug output should be made in plain text. * * @since 2.0.0 * @api * * @return bool */ public function is_plain_text() { $plain_text = $this->plain_text; $is_ajax = false; if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $is_ajax = true; } if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $is_ajax = true; } if ( $is_ajax ) { $plain_text = true; } return $plain_text; } /** * Write debug information to error log file. * * @since 2.0.0 * @api * * @param mixed Each param will be dumped */ public function log( $first_arg ) { if ( $this->is_enabled() ) { $plain_text = $this->plain_text; $this->format_text(); $log_file = WP_CONTENT_DIR . '/lib3.log'; $time = gmdate( "Y-m-d\tH:i:s\t" ); foreach ( func_get_args() as $param ) { if ( is_scalar( $param ) ) { $dump = $param; } else { $dump = var_export( $param, true ); } error_log( $time . $dump . "\n", 3, $log_file ); } $this->plain_text = $plain_text; } } /** * Write stacktrace information to error log file. * * @since 2.0.0 * @api */ public function log_trace() { if ( $this->is_enabled() ) { $plain_text = $this->plain_text; $this->format_text(); $log_file = WP_CONTENT_DIR . '/lib3.log'; // Display the backtrace. $trace = $this->trace( false ); error_log( $trace, 3, $log_file ); $this->plain_text = $plain_text; } } /** * Adds a log-message to the HTTP response header. * This is very useful to debug Ajax requests or redirects. * * @since 2.0.3 * @param string $message The debug message */ public function header( $message ) { static $Number = 0; if ( ! $this->is_enabled() ) { return; } $Number += 1; if ( headers_sent() ) { // HTTP Headers already sent, so add the response as HTML comment. $message = str_replace( '-->', '--/>', $message ); printf( "\n", esc_html( $Number), esc_html( $message ) ); } else { // No output was sent yet so add the message to the HTTP headers. $message = str_replace( array( "\n", "\r" ), ' ', $message ); header( "X-Debug-Note[" . esc_html( $Number ) . "]: " . esc_html( $message ), false ); } } /** * Displays a debug message at the current position on the page. * * @since 1.0.14 * @api * * @param mixed Each param will be dumped. */ public function dump( $first_arg ) { if ( ! $this->is_enabled() ) { return; } $plain_text = $this->is_plain_text(); $this->add_scripts(); if ( ! $plain_text ) { $block_id = 'wdev-debug-' . md5( wp_rand() ); $block_label = ''; if ( is_scalar( $first_arg ) && ! empty( $first_arg ) ) { $block_label = ': ' . (string) $first_arg; } ?>

'; } } /** * Output a stack-trace. * * @since 2.0.0 * @api * * @param bool $output Optional. If false then the trace will be returned * instead of echo'ed. Default: true (echo) * @return string Returns the stack-trace contents. */ public function trace( $output = true ) { if ( ! $this->is_enabled() ) { return; } $plain_text = $this->is_plain_text(); $this->add_scripts(); $trace_str = ''; if ( ! $plain_text ) { $block_id = 'wdev-debug-' . md5( wp_rand() ); $trace_str .= sprintf( ' Back-Trace '; } if ( $output ) { CustomSidebars::wp_kses_wf( $trace_str ); } return $trace_str; } /** * Outputs an advanced var dump. * * @since 1.1.0 * @internal * * @param any $input The variable/object/value to dump. * @param int $default_depth Deeper items will be collapsed * @param int $level Do not change this value! */ protected function _dump_var( $data, $item_key = null, $default_depth = 3, $level = array( null ), $args = array() ) { if ( ! is_string( $data ) && is_callable( $data ) ) { $type = 'Callable'; } else { $type = ucfirst( gettype( $data ) ); } if ( empty( $level ) ) { $level = array( null ); } $args['containers'] = self::$core->array->get( $args['containers'] ); $args['collapsed'] = self::$core->array->get( $args['collapsed'] ); $type_data = null; $type_length = null; $full_dump = false; switch ( $type ) { case 'String': $type_length = strlen( $data ); $type_data = '"' . htmlentities( $data ) . '"'; break; case 'Double': case 'Float': $type = 'Float'; $type_length = strlen( $data ); $type_data = htmlentities( $data ); break; case 'Integer': $type_length = strlen( $data ); $type_data = htmlentities( $data ); break; case 'Boolean': $type_length = strlen( $data ); $type_data = $data ? 'TRUE' : 'FALSE'; break; case 'NULL': $type_length = 0; $type_data = 'NULL'; break; case 'Array': $type_length = count( $data ); break; case 'Object': $full_dump = true; break; } $type_label = $type . ( $type_length !== null ? '(' . $type_length . ')' : '' ); if ( in_array( $type, array( 'Object', 'Array' ) ) ) { $populated = false; $dump_data = (array) $data; ksort( $dump_data ); if ( 'Object' == $type ) { $type_label .= ' [' . get_class( $data ) . ']'; } $keys = array_keys( $dump_data ); $last_key = end( $keys ); reset( $dump_data ); foreach ( $dump_data as $key => $value ) { if ( ! $populated ) { $populated = true; $id = substr( md5( wp_rand() . ':' . $key . ':' . count( $level ) ), 0, 8 ); $args['containers'][] = $id; $collapse = count( $args['containers'] ) >= $default_depth; if ( $collapse ) { $args['collapsed'][] = $id; } $title_args = $args; $title_args['toggle'] = $id; $this->_dump_line( $item_key, $type_label, '', $level, $title_args ); unset( $args['protected'] ); unset( $args['private'] ); } // Tree right before the item-name $new_level = $level; if ( $last_key == $key ) { $new_level[] = false; $args['lastkey'] = true; } else { $new_level[] = true; $args['lastkey'] = false; } $encode_key = json_encode( $key ); $matches = null; if ( 1 === strpos( $encode_key, '\\u0000*\\u0000' ) ) { $args['protected'] = true; $key = substr( $key, 3 ); } elseif ( 1 === preg_match( '/\\\\u0000(\w+)\\\\u0000/i', $encode_key, $matches ) ) { $args['private'] = true; $key = substr( $key, 2 + strlen( $matches[1] ) ); } $this->_dump_var( $value, $key, $default_depth, $new_level, $args ); unset( $args['protected'] ); unset( $args['private'] ); } // end of array/object loop. if ( ! $populated ) { $this->_dump_line( $item_key, $type_label, '', $level, $args ); } } else { $this->_dump_line( $item_key, $type_label, $type_data, $level, $args ); } } /** * Outputs a single line of the dump_var output. * * @since 1.1.4 * @internal */ protected function _dump_line( $key, $type, $value, $level, $args = array() ) { $type_color = '#999'; $type_key = strtolower( $type ); if ( strlen( $type_key ) > 4 ) { $type_key = substr( $type_key, 0, 4 ); } $custom_type_colors = array( 'stri' => 'green', 'doub' => '#0099c5', 'floa' => '#0099c5', 'inte' => 'red', 'bool' => '#92008d', 'null' => '#AAA', ); if ( isset( $custom_type_colors[ $type_key ] ) ) { $type_color = $custom_type_colors[ $type_key ]; } $collapse = array_intersect( $args['containers'], $args['collapsed'] ); $args['do_collapse'] = is_array( $collapse ) && count( $collapse ) > 0; if ( ! empty( $args['toggle'] ) ) { $args['containers'] = array_diff( $args['containers'], array( $args['toggle'] ) ); $args['collapsed'] = array_diff( $args['collapsed'], array( $args['toggle'] ) ); $collapse_this = array_intersect( $args['containers'], $args['collapsed'] ); $args['do_collapse_next'] = $args['do_collapse']; $args['do_collapse'] = is_array( $collapse_this ) && count( $collapse_this ) > 0; } $row_class = ''; $row_attr = ''; if ( ! empty( $args['containers'] ) ) { $row_class = implode( ' ', $args['containers'] ); } if ( ! empty( $args['do_collapse'] ) ) { $row_attr = 'style="display:none;"'; } echo ''; // Property-key, if set. if ( $key === null ) { // Full Tree-level. echo ''; for ( $i = 0; $i < count( $level ); $i += 1 ) { if ( null === $level[$i] ) { continue; } if ( $level[$i] ) { echo ' │ '; } else { echo '   '; } } echo ''; } else { echo ''; // Tree-level without last level. for ( $i = 0; $i < count( $level ) - 1; $i += 1 ) { if ( null === $level[$i] ) { continue; } if ( $level[$i] ) { echo ' │ '; } else { echo '   '; } } if ( empty( $args['lastkey'] ) ) { echo ' ├─'; } else { echo ' └─'; } echo ''; $key_style = ''; if ( ! empty( $args['protected'] ) ) { $key_style .= 'color:#900;'; $prefix = ''; } elseif ( ! empty( $args['private'] ) ) { $key_style .= 'color:#C00;font-style:italic;'; $prefix = 'PRIVATE '; } else { $key_style .= 'color:#000;'; $prefix = ''; } $valid_ids = array( 'ID', 'id' ); $is_id = in_array( (string) $key, $valid_ids ); if ( $is_id ) { $key_style .= 'background:#FDA;'; } echo '[ ' . esc_attr($prefix) . esc_attr($key) . ' ]'; echo ' => '; } // Data-Type. if ( ! empty( $args['toggle'] ) ) { echo ''; echo '' . esc_attr($type) . '  '; echo ''; } else { echo '' . esc_attr($type) . '  '; } if ( ! empty( $args['toggle'] ) ) { $collapsed = ! empty( $args['do_collapse_next'] ); $toggle_style = 'display: ' . ( $collapsed ? 'inline' : 'none' ); echo ' ⤵'; } // Value. if ( $value !== null ) { $value_style = ''; if ( isset( $args['highlight'] ) ) { $value_style = $args['highlight']; } echo '' . esc_attr($value) . ''; } echo ''; echo "\r\n"; } /** * Outputs the CSS and JS scripts required to display the debug dump/trace. * * @since 2.0.0 * @internal */ protected function add_scripts() { if ( $this->is_plain_text() ) { return; } if ( defined( '__DEBUG_SCRIPT' ) ) { return; } define( '__DEBUG_SCRIPT', true ); if ( ! headers_sent() ) { header( 'Content-type: text/html; charset=utf-8' ); } ?> '#' . $color, 'color' => '#fff', 'width' => '280px', 'font-size' => '12px', 'text-transform' => 'uppercase', 'font-family' => 'monospace', 'text-align' => 'center', 'margin' => '0 auto 5px', 'border-radius' => '3px', 'padding' => '4px', 'text-shadow' => '0 0 1px #666', 'box-shadow' => '0 0 1px #000 inset', ); $styles = wp_parse_args( $styles, $def_styles ); $style = ''; foreach ( $styles as $key => $val ) { $style .= $key . ':' . $val . ';'; } $marker = sprintf( '
%2$s
', esc_attr( $style ), $label ); return (object) array( 'html' => $marker, 'hash' => $hash, 'text' => $label, 'color' => '#' . $color, ); } }inc/external/wpmu-lib/inc/class-thelib-core.php000064400000011005150211770060015451 0ustar00$component = new $class_name(); } } /** * Checks if the provided value evaluates to a boolean TRUE. * * Following values are considered true: * - Boolean: true * - Number: anything except 0 * - Strings: true, yes, on (case insensitive) * * @since 1.1.0 * @api * * @param mixed $value A value that will be evaluated as a boolean. * @return bool True if the specified $value evaluated to TRUE. */ public function is_true( $value ) { if ( false === $value || null === $value || '' === $value ) { return false; } elseif ( true === $value ) { return true; } elseif ( is_numeric( $value ) ) { $value = intval( $value ); return $value != 0; } elseif ( is_string( $value ) ) { $value = strtolower( trim( $value ) ); return in_array( $value, array( 'true', 'yes', 'on', '1' ) ); } return false; } /** * Opposite of the is_true() function. * * @since 3.0.0 * @param mixed $value A value that will be evaluated as a boolean * @return bool True if the speciefied value evals as FALSE */ public function is_false( $value ) { return ! $this->is_true( $value ); } /** * Converts a number from any base to another base. * The from/to base values can even be non-numeric values. * * @since 2.0.2 * @api * * @param string $number A number in the base_from base. * @param string $base_from List of characters * E.g. 0123456789 to convert from decimal. * @param string $base_to List of characters to use as destination base. * E.g. 0123456789ABCDEF to convert to hexadecimal. * @return string The converted number */ public function convert( $number, $base_from = '0123456789', $base_to = '0123456789ABCDEF' ) { if ( $base_from == $base_to ) { // No conversion needed. return $number; } $retval = ''; $number_len = strlen( $number ); if ( '0123456789' == $base_to ) { // Convert a value to normal decimal base. $arr_base_from = str_split( $base_from, 1 ); $arr_number = str_split( $number, 1 ); $base_from_len = strlen( $base_from ); $retval = 0; for ( $i = 1; $i <= $number_len; $i += 1 ) { $retval = bcadd( $retval, bcmul( array_search( $arr_number[$i - 1], $arr_base_from ), bcpow( $base_from_len, $number_len - $i ) ) ); } } else { // Convert a value to a NON-decimal base. if ( '0123456789' != $base_from ) { // Base value is non-decimal, convert it to decimal first. $base10 = $this->convert( $number, $base_from, '0123456789' ); } else { // Base value is decimal. $base10 = $number; } $arr_base_to = str_split( $base_to, 1 ); $base_to_len = strlen( $base_to ); if ( $base10 < strlen( $base_to ) ) { $retval = $arr_base_to[$base10]; } else { while ( 0 != $base10 ) { $retval = $arr_base_to[bcmod( $base10, $base_to_len )] . $retval; $base10 = bcdiv( $base10, $base_to_len, 0 ); } } } return $retval; } } inc/external/wpmu-lib/inc/class-thelib-html.php000064400000130501150211770060015470 0ustar00html`. * * @since 1.1.0 */ class TheLib_Html extends TheLib { /* Constants for default HTML input elements. */ const INPUT_TYPE_HIDDEN = 'hidden'; const INPUT_TYPE_TEXT_AREA = 'textarea'; const INPUT_TYPE_SELECT = 'select'; const INPUT_TYPE_RADIO = 'radio'; const INPUT_TYPE_SUBMIT = 'submit'; const INPUT_TYPE_BUTTON = 'button'; const INPUT_TYPE_CHECKBOX = 'checkbox'; const INPUT_TYPE_IMAGE = 'image'; // Different input types const INPUT_TYPE_TEXT = 'text'; const INPUT_TYPE_PASSWORD = 'password'; const INPUT_TYPE_NUMBER = 'number'; const INPUT_TYPE_EMAIL = 'email'; const INPUT_TYPE_URL = 'url'; const INPUT_TYPE_TIME = 'time'; const INPUT_TYPE_SEARCH = 'search'; const INPUT_TYPE_FILE = 'file'; /* Constants for advanced HTML input elements. */ const INPUT_TYPE_DATEPICKER = 'datepicker'; const INPUT_TYPE_RADIO_SLIDER = 'radio_slider'; const INPUT_TYPE_TAG_SELECT = 'tag_select'; const INPUT_TYPE_WP_COLOR_PICKER = 'wp_color_picker'; const INPUT_TYPE_WP_EDITOR = 'wp_editor'; const INPUT_TYPE_WP_MEDIA = 'wp_media'; const INPUT_TYPE_WP_PAGES = 'wp_pages'; /* Constants for default HTML elements. */ const TYPE_HTML_LINK = 'html_link'; const TYPE_HTML_SEPARATOR = 'html_separator'; const TYPE_HTML_TEXT = 'html_text'; const TYPE_HTML_TABLE = 'html_table'; /** * Class constructor * * @since 1.1.0 */ public function __construct() { parent::__construct(); } /*================================*\ ==================================== == == == WP POINTER == == == ==================================== \*================================*/ /** * Displays a WordPress pointer on the current admin screen. * * @since 1.1.0 * @api * * @param array|string $pointer_id Internal ID of the pointer, make sure it is unique! * Optionally this param can contain all params in array notation. * @param string $html_el HTML element to point to (e.g. '#menu-appearance') * @param string $title The title of the pointer. * @param string $body Text of the pointer. * * @return TheLib_Html Reference to $this for chaining. */ public function pointer( $args, $html_el = '', $title = false, $body = '' ) { if ( ! is_admin() ) { return; } $classes = array( 'wpmui-pointer-handler', 'prepared', ); if ( is_array( $args ) ) { if ( ! isset( $args['schema'] ) || 'wp' !== $args['schema'] ) { $classes[] = 'wpmui-pointer'; } $elements = array( 'target' => 'html_el', 'id' => 'pointer_id', 'title' => 'title', 'body' => 'body', 'classes' => 'classes', ); foreach ( $elements as $from => $to ) { if ( isset( $args[ $to ] ) ) { continue; } if ( isset( $args[ $from ] ) ) { $args[ $to ] = $args[ $from ]; } if ( empty( $args[ $to ] ) && isset( $$to ) ) { $args[ $to ] = $$to; } } if ( isset( $args['modal'] ) && ! isset( $args['blur'] ) ) { $args['blur'] = $args['modal']; } $elements = array( 'once', 'modal', 'blur' ); foreach ( $elements as $key ) { if ( ! isset( $args[ $key ] ) ) { $args[ $key ] = true; } } self::$core->array->equip( $args, 'pointer_id', 'html_el', 'title', 'body', 'once', 'modal', 'blur' ); extract( $args ); } else { $pointer_id = $args; $once = true; $modal = true; $blur = true; $classes[] = 'wpmui-pointer'; } $once = self::$core->is_true( $once ); $modal = self::$core->is_true( $modal ); $blur = self::$core->is_true( $blur ); $this->_add( 'init_pointer', compact( 'pointer_id', 'html_el', 'title', 'body', 'once', 'modal', 'blur', 'classes' ) ); $this->add_action( 'init', '_init_pointer' ); return $this; } /** * Action handler for plugins_loaded. This decides if the pointer will be displayed. * * @since 1.0.2 * @internal */ public function _init_pointer() { $items = $this->_get( 'init_pointer' ); foreach ( $items as $item ) { extract( $item ); // pointer_id, html_el, title, body, once, modal, blur $show = true; if ( $once ) { // Find out which pointer IDs this user has already seen. $seen = (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ); $seen_list = explode( ',', $seen ); $show = ! in_array( $pointer_id, $seen_list ); } else { $show = true; } // Include all scripts and code to display the pointer! if ( $show ) { $this->add_action( 'admin_print_footer_scripts', '_pointer_print_scripts' ); $this->add_action( 'admin_enqueue_scripts', '_enqueue_pointer' ); $this->_add( 'pointer', $item ); } } } /** * Enqueue wp-pointer * * @since 1.0.1 * @internal */ public function _enqueue_pointer() { // Load the JS/CSS for WP Pointers wp_enqueue_script( 'wp-pointer' ); wp_enqueue_style( 'wp-pointer' ); } /** * Action hook for admin footer scripts * * @since 1.0.1 * @internal */ public function _pointer_print_scripts() { $items = $this->_get( 'pointer' ); foreach ( $items as $item ) { extract( $item ); // pointer_id, html_el, title, body, once, modal, blur include $this->_view_path( 'pointer.php' ); } } /*===========================*\ =============================== == == == POPUP == == == =============================== \*===========================*/ /** * Display a wpmUi popup on page load. * * @since 1.1.0 * @api * * @param array $args Popup options. * @return Reference to $this for chaining. */ public function popup( $args = array() ) { // Determine which hook should print the data. $hook = ( is_admin() ? 'admin_footer' : 'wp_footer' ); self::$core->array->equip( $args, 'title', 'body', 'screen', 'modal', 'width', 'height', 'class' ); // Don't add empty popups if ( empty( $args['title'] ) && empty( $args['body'] ) ) { return; } if ( ! isset( $args['close'] ) ) { $args['close'] = true; } if ( ! isset( $args['sticky'] ) ) { $args['sticky'] = false; } $args['width'] = absint( $args['width'] ); $args['height'] = absint( $args['height'] ); if ( $args['width'] < 20 ) { $args['width'] = -1; } if ( $args['height'] < 20 ) { $args['height'] = -1; } $args['modal'] = $args['modal'] ? 'true' : 'false'; $args['persist'] = $args['sticky'] ? 'false' : 'true'; $args['close'] = $args['close'] ? 'true' : 'false'; self::_add( 'popup', $args ); $this->add_action( $hook, '_popup_callback' ); self::$core->ui->add( 'core' ); return $this; } /** * Add popup code to the page footer * * @since 1.1.3 * @internal */ public function _popup_callback() { error_log('popup'); $items = self::_get( 'popup' ); self::_clear( 'popup' ); $screen_info = get_current_screen(); $screen_id = $screen_info->id; foreach ( $items as $item ) { extract( $item ); // title, body, modal, close, modal, persist, width, height, class if ( empty( $title ) ) { $close = false; } if ( empty( $screen ) || $screen_id == $screen ) { $body = '
' . $body . '
'; echo ''; } } } /*=================================*\ ===================================== == == == PLUGIN LIST == == == ===================================== \*=================================*/ /** * Generates full code for a plugin list in WordPress 4.0 style, including * the filter and search section in the top. * * All items are included in page load and displayed or filtered via * javascript. * * @since 1.1 * @api * * @param array $items { * List of all items to include. Each item has these properties: * * @var string $title * @var string $description * @var string $version * @var string $author * @var array $action * @var array $details * @var bool $active * @var string $icon * } * @param object $lang { * @var string $active_badge * @var string $show_details * @var string $close_details * } * @param array $filters { * @var string $key * @var string $label * } * * @return Reference to $this for chaining. */ public function addon_list( $items, $lang, $filters ) { self::$core->ui->css( $this->_css_url( 'wpmu-card-list.3.min.css' ) ); self::$core->ui->js( $this->_js_url( 'wpmu-card-list.3.min.js' ) ); include $this->_view_path( 'list.php' ); return $this; } /*====================================*\ ======================================== == == == HTML STRUCTURE == == == ======================================== \*====================================*/ /** * Method for creating HTML elements/fields. * * Pass in array with field arguments. See $defaults for argmuments. * Use constants to specify field type. e.g. self::INPUT_TYPE_TEXT * * @since 1.1.0 * @api * * @param array|string $field_args { * If this param is a string then the string is output. * Otherwise an array is expected that defines the output * field. * * $type string Field type. {@see const definitions} * $id string Field ID (html attribute) * $class string Field class (html attribute) * $value string Field value (html attribute) * * $title string Field label/caption to display. * $desc string Description. * $before string Text before the input element. * $after string Text after the input element. * * (more attributes available) * } * @param bool $return Optional. If true the element is returned by * function. Default: false (direct echo the HTML) * * @return void|string If $return param is false the HTML will be echo'ed, * otherwise returned as string (default is echo) */ public function element( $field_args, $return = false ) { self::$core->ui->add( 'html_element' ); if ( is_string( $field_args ) ) { if ( $return ) { return $field_args; } else { CustomSidebars::wp_kses_wf($field_args); return; } } // Field arguments. $defaults = array( 'id' => '', 'name' => '', 'section' => '', // Only used if name is empty 'title' => '', // Title above desc / element 'desc' => '', // Usually displayed in row above the element 'before' => '', // In same row as element 'after' => '', // In same row as element 'value' => '', 'type' => 'text', 'class' => '', 'label_class' => '', 'maxlength' => '', 'equalTo' => '', 'field_options' => array(), 'multiple' => false, 'tooltip' => '', 'alt' => '', 'read_only' => false, 'disabled' => false, 'placeholder' => '', 'data_placeholder' => '', 'ajax_data' => '', 'data' => array(), 'label_type' => 'label', 'sticky' => false, // populate $value from $_REQUEST struct 'config' => array(), // other, element-specific configurations 'wrapper_class' => '', // class added to the outermost element wrapper // Specific for type 'button', 'submit': 'button_value' => '', 'button_type' => '', // for display [empty/'submit'/'button'] // Specific for type 'tag_select': 'title_selected' => '', 'empty_text' => '', 'button_text' => '', // Specific for type 'link': 'target' => '_self', // Specific for type 'radio_slider': 'url' => '', ); $field_args = wp_parse_args( $field_args, $defaults ); extract( $field_args ); if ( empty( $name ) ) { if ( ! empty( $section ) ) { $name = $section . "[$id]"; } else { $name = $id; } } // Input arguments $attr_placeholder = ''; $attr_data_placeholder = ''; if ( '' !== $placeholder && false !== $placeholder ) { $attr_placeholder = 'placeholder="' . esc_attr( $placeholder ) . '" '; } if ( '' !== $data_placeholder && false !== $data_placeholder ) { $attr_data_placeholder = 'data-placeholder="' . esc_attr( $data_placeholder ) . '" '; } if ( ! empty( $data_ms ) && empty( $ajax_data ) ) { $ajax_data = $data_ms; } if ( ! empty( $ajax_data ) ) { if ( ! empty( $ajax_data['action'] ) && ( empty( $ajax_data['_wpnonce'] ) || true === $ajax_data['_wpnonce'] ) ) { $ajax_data['_wpnonce'] = wp_create_nonce( $ajax_data['action'] ); } $ajax_data = ' data-wpmui-ajax="' . esc_attr( json_encode( $ajax_data ) ) . '" '; } $max_attr = empty( $maxlength ) ? '' : 'maxlength="' . esc_attr( $maxlength ) . '" '; $read_only = empty( $read_only ) ? '' : 'readonly="readonly" '; $multiple = empty( $multiple ) ? '' : 'multiple="multiple" '; $disabled = empty( $disabled ) ? '' : 'disabled="disabled" '; $data_attr = ''; foreach ( $data as $data_key => $data_value ) { $data_attr .= 'data-' . $data_key . '=' . json_encode( $data_value ) . ' '; } foreach ( $config as $conf_key => $conf_value ) { $data_attr .= $conf_key . '=' . json_encode( $conf_value ) . ' '; } if ( ! empty( $ajax_data ) ) { $class .= ' wpmui-ajax-update'; } if ( $sticky ) { $sticky_key = $name; if ( '[]' == substr( $sticky_key, -2 ) ) { $sticky_key = substr( $sticky_key, 0, -2 ); } if ( isset( $_POST[ $sticky_key ] ) ) { $value = sanitize_text_field($_POST[ $sticky_key ]); } elseif ( isset( $_GET[ $sticky_key ] ) ) { $value = sanitize_text_field($_GET[ $sticky_key ]); } } $field_options = self::$core->array->get( $field_options ); $labels = (object) array( 'title' => $title, 'desc' => $desc, 'before' => $before, 'after' => $after, 'tooltip' => $tooltip, 'tooltip_code' => $this->tooltip( $tooltip, true ), 'id' => $id, 'class' => $label_class, 'label_type' => $label_type, ); // Capture to output buffer if ( $return ) { ob_start(); } switch ( $type ) { case self::INPUT_TYPE_HIDDEN: $this->element_hidden( $id, $name, $value, $class ); break; case self::INPUT_TYPE_TEXT: case self::INPUT_TYPE_PASSWORD: case self::INPUT_TYPE_NUMBER: case self::INPUT_TYPE_EMAIL: case self::INPUT_TYPE_URL: case self::INPUT_TYPE_TIME: case self::INPUT_TYPE_SEARCH: case self::INPUT_TYPE_FILE: $this->element_input( $labels, $type, $class, $id, $name, $value, $read_only . $max_attr . $attr_placeholder . $ajax_data . $data_attr . $disabled, $wrapper_class ); break; case self::INPUT_TYPE_DATEPICKER: $this->element_datepicker( $labels, $class, $id, $name, $value, $max_attr . $attr_placeholder . $ajax_data . $data_attr . $disabled, $wrapper_class ); break; case self::INPUT_TYPE_TEXT_AREA: $this->element_textarea( $labels, $class, $id, $name, $value, $read_only . $attr_placeholder . $ajax_data . $data_attr . $disabled, $wrapper_class ); break; case self::INPUT_TYPE_SELECT: $this->element_select( $labels, $class, $id, $name, $value, $multiple . $read_only . $attr_data_placeholder . $ajax_data . $data_attr . $disabled, $field_options, $wrapper_class ); break; case self::INPUT_TYPE_RADIO: $this->element_radio( $labels, $class, $id, $name, $value, $ajax_data, $field_options, $wrapper_class ); break; case self::INPUT_TYPE_CHECKBOX: $this->element_checkbox( $labels, $class, $id, $name, $value, $ajax_data . $data_attr . $disabled, $field_options, $config ); break; case self::INPUT_TYPE_WP_EDITOR: $this->element_wp_editor( $labels, $id? $id:$name, $value, $field_options ); break; case self::INPUT_TYPE_BUTTON: case self::INPUT_TYPE_SUBMIT: if ( empty( $button_type ) ) { $button_type = $type; } if ( $button_type === self::INPUT_TYPE_SUBMIT ) { $class .= ' wpmui-submit button-primary'; } $this->element_button( $labels, $type, $class, $id, $name, $value, $button_value, $ajax_data . $data_attr . $disabled ); break; case self::INPUT_TYPE_IMAGE: $this->element_image( $labels, $class, $id, $name, $value, $alt, $ajax_data . $data_attr . $disabled ); break; case self::INPUT_TYPE_RADIO_SLIDER: $this->element_radioslider( $labels, $class, $id, $name, $value, $url, $read_only, $ajax_data . $data_attr, $field_options, $wrapper_class ); break; case self::INPUT_TYPE_TAG_SELECT: $this->element_tagselect( $labels, $class, $id, $name, $value, $field_options, $multiple . $read_only . $attr_data_placeholder . $data_attr . $disabled, $ajax_data, $empty_text, $button_text, $title_selected, $wrapper_class ); break; case self::INPUT_TYPE_WP_PAGES: $this->element_wp_pages( $labels, $class, $id, $name, $value, $multiple . $read_only . $attr_data_placeholder . $ajax_data . $data_attr . $disabled, $field_options, $wrapper_class ); break; case self::TYPE_HTML_LINK: $this->element_link( $labels, $class, $id, $value, $url, $ajax_data . $data_attr, $target ); break; case self::TYPE_HTML_SEPARATOR: $this->element_separator( ($value !== 'vertical' ? 'horizontal' : 'vertical') ); break; case self::TYPE_HTML_TEXT: $this->element_wrapper( $labels, $class, $id, $value, 'span', $wrapper_class ); break; case self::TYPE_HTML_TABLE: $this->element_table( $labels, $class, $id, $value, $field_options, $wrapper_class ); break; /** * wp-color-picker * * @since 3.0.5 */ case self::INPUT_TYPE_WP_COLOR_PICKER: $this->element_color_picker( $labels, $class, $id, $name, $value, $max_attr . $attr_placeholder . $ajax_data . $data_attr . $disabled, $wrapper_class ); break; /** * wp_media * * @since 3.0.5 */ case self::INPUT_TYPE_WP_MEDIA: $this->element_wp_media( $labels, $class, $id, $name, $value, $max_attr . $attr_placeholder . $ajax_data . $data_attr, $wrapper_class ); break; } // Return the output buffer if ( $return ) { return ob_get_clean(); } } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_hidden( $id, $name, $value, $class ) { printf( '', esc_attr( $id ), esc_attr( $name ), esc_attr( $value ), esc_attr( $class ) ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_input( $labels, $type, $class, $id, $name, $value, $attr, $wrapper_class ) { $this->wrap_open( 'input', $class, 'span', $wrapper_class ); $this->element_label( $labels ); printf( '', esc_attr( $type ), esc_attr( $class ), esc_attr( $id ), esc_attr( sanitize_title( $name ) ), esc_attr( $value ), esc_html( $attr ) ); if ( ! empty( $labels->title ) ) { $this->element_desc( $labels ); } $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_datepicker( $labels, $class, $id, $name, $value, $attr, $wrapper_class ) { $this->wrap_open( 'datepicker', $class, 'span', $wrapper_class ); $this->element_label( $labels ); if ( ! empty( $value ) ) { if ( ! preg_match( '/\d\d\d\d-\d\d-\d\d/', $value ) ) { $value = gmdate( 'Y-m-d', strtotime( $value ) ); } } printf( '', esc_attr( $class ), esc_attr( $id ), esc_attr( $name ), esc_attr( $value ), esc_html( $attr ) ); $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_textarea( $labels, $class, $id, $name, $value, $attr, $wrapper_class ) { $this->wrap_open( 'textarea', $class, 'span', $wrapper_class ); $this->element_label( $labels ); printf( '', esc_attr( $class ), esc_attr( $id ), esc_attr( $name ), esc_textarea( $value ), esc_html( $attr ) ); $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_select( $labels, $class, $id, $name, $value, $attr, $field_options, $wrapper_class ) { $options = $this->select_options( $field_options, $value ); $this->wrap_open( 'select', $class, 'span', $wrapper_class ); $this->element_label( $labels ); printf( '', esc_attr( $id ), esc_attr( $class ), esc_attr( $name ), esc_html( $attr ), esc_html( $options ) ); $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_radio( $labels, $class, $id, $name, $value, $attr, $field_options, $wrapper_class ) { $this->wrap_open( 'radio', $class, 'span', $wrapper_class ); $this->element_label( $labels ); foreach ( $field_options as $key => $option ) { if ( is_array( $option ) ) { self::$core->array->equip( $option, 'text', 'desc', 'disabled' ); $item_text = $option['text']; $item_desc = $option['desc']; $item_disabled = self::$core->is_true( $option['disabled'] ); } else { $item_text = $option; $item_desc = ''; $item_disabled = false; } $checked = checked( $value, $key, false ); $item_attr = $attr; $item_class = $class; if ( $item_disabled ) { $item_attr .= ' disabled="disabled"'; $item_class .= ' disabled'; } $radio_desc = ''; if ( ! empty( $item_desc ) ) { $radio_desc = sprintf( '

%1$s

', $item_desc ); } printf( '
', esc_attr( $item_class ), esc_attr( $key ), esc_attr( $name ), esc_attr( $id ), esc_html( $item_attr . $checked ), esc_html( $item_text ), esc_html( $radio_desc ) ); } $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_checkbox( $labels, $class, $id, $name, $value, $attr, $itemlist, $options ) { $item_desc = ''; if ( ! empty( $labels->desc ) ) { $item_desc = sprintf( '

%1$s

', $labels->desc ); } $listitems = array(); if ( ! empty( $itemlist ) ) { // Multiple items in the checkbox list. printf( '
%1$s %2$s
%3$s', esc_html($labels->title), esc_html($labels->tooltip), esc_html($item_desc) ); $item_desc = ''; if ( ! is_array( $value ) ) { $value = array( $value ); } foreach ( $itemlist as $key => $item ) { $tmp_items = array(); if ( is_array( $item ) ) { $tmp_items[] = array( 'name' => false, 'label' => $key, 'value' => false, 'parent' => true, ); foreach ( $item as $sub_key => $sub_item ) { $tmp_items[] = array( 'name' => $name . '[]', 'label' => $sub_item, 'value' => $sub_key, 'child' => true, ); } } else { $tmp_items[] = array( 'name' => $name . '[]', 'label' => $item, 'value' => $key, ); } foreach ( $tmp_items as $tmp_item ) { $item_label = sprintf( '
%1$s
', $tmp_item['label'] ); $tmp_item['label'] = $item_label; $tmp_item['checked'] = checked( in_array( $tmp_item['value'], $value ), true, false ); $tmp_item['child'] = empty( $tmp_item['child'] ) ? false : true; $tmp_item['parent'] = empty( $tmp_item['parent'] ) ? false : true; $listitems[] = $tmp_item; } } } else { // Single checkbox item. $item_label = ''; if ( empty( $options['checkbox_position'] ) || 'left' === $options['checkbox_position'] ) { $item_label = sprintf( '
%1$s %2$s
', $labels->title, $labels->tooltip ); } $listitems[] = array( 'name' => $name, 'label' => $item_label, 'checked' => checked( $value, true, false ), 'value' => 1, 'child' => false, 'parent' => false, ); } $is_group = false; foreach ( $listitems as $item ) { $item_class = $class; if ( $item['parent'] ) { $is_group = true; echo '
'; $item_class .= ' wpmui-parent'; } elseif ( $item['child'] ) { $is_group = true; $item_class .= ' wpmui-child'; } elseif ( $is_group ) { echo '
'; $is_group = false; } if ( empty( $item['name'] ) ) { printf( '', esc_attr( $item_class ), esc_html($item['label']), esc_html($item_desc) ); } else { printf( '', esc_attr( $id ), esc_attr( $item_class ), esc_attr( $item['name'] ), esc_html($attr . $item['checked']), esc_html($item['label']), esc_html($item_desc), esc_html($item['value']) ); } } $this->element_hint( $labels ); if ( ! empty( $itemlist ) ) { echo '
'; } } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_wp_editor( $labels, $id, $value, $options ) { if ( empty( $id ) ) { $id = 'wpmulib-wp-editor-'.wp_rand(); } $this->element_label( $labels ); wp_editor( $value, $id, $options ); $this->element_hint( $labels ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_button( $labels, $type, $class, $id, $name, $label, $value, $attr ) { $this->element_label( $labels ); printf( '', esc_attr( $class ), esc_attr( $id ), esc_attr( $name ), esc_html( $label ), esc_html( $attr ), esc_html( $value ), esc_html( $type ) ); $this->element_hint( $labels ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_image( $labels, $class, $id, $name, $value, $alt, $attr ) { $this->element_label( $labels ); printf( '', esc_attr( $class ), esc_attr( $id ), esc_attr( $name ), esc_url( $value ), esc_attr( $alt ), esc_html( $attr ) ); $this->element_hint( $labels ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_radioslider( $labels, $class, $id, $name, $state, $url, $read_only, $attr, $options, $wrapper_class ) { $options = self::$core->array->get( $options ); if ( ! isset( $options['active'] ) ) { $options['active'] = true; } if ( ! isset( $options['inactive'] ) ) { $options['inactive'] = false; } if ( $state ) { $value = $options['active']; } else { $value = $options['inactive']; } $turned = ( $value ) ? 'on' : 'off'; $this->wrap_open( 'radio-slider', $class, 'span', $turned . ' ' . $wrapper_class ); $this->element_label( $labels ); $attr .= ' data-states="' . esc_attr( json_encode( $options ) ) . '" '; $link_url = ! empty( $url ) ? '' : ''; $attr_input = ''; if ( ! $read_only ) { $attr_input = sprintf( '', esc_attr( $id ), esc_attr( $name ), esc_attr( $value ) ); } printf( '
%8$s
%3$s
%4$s%9$s
', esc_attr( $turned ), esc_html( $attr ), esc_url( $link_url ), esc_html( $attr_input ), esc_attr( $id ), esc_html( $read_only ), esc_attr( $class ), '', '' ); if ( ! empty( $labels->title ) ) { $this->element_desc( $labels ); } $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_tagselect( $labels, $class, $id, $name, $value, $field_options, $attr, $ajax_data, $empty_text, $button_text, $title_selected, $wrapper_class ) { $labels->id = '_src_' . $id; $this->wrap_open( 'tag-selector', $class, 'span', $wrapper_class ); $this->element_label( $labels ); $options_selected = ''; $options_available = ''; if ( ! is_array( $value ) ) { $value = array( $value ); } if ( empty( $field_options ) ) { // No values available, display a note instead of the input elements. printf( '
%3$s
', esc_attr( $id ), esc_attr( $class ), esc_html( $empty_text ) ); } else { // There are values to select or remove. Display the input elements. $options_selected .= $this->select_options( $field_options, $value ); $options_available .= $this->select_options( $field_options, $value, 'taglist' ); $src_class = str_replace( 'wpmui-ajax-update', '', $class ); // First Select: The value selected here can be added to the tag-list. printf( '', esc_attr( $id ), esc_attr( $src_class ), esc_attr( $name ), esc_html( $attr ), esc_html( $options_available ) ); // Button: Add element from First Select to Second Select. printf( '', esc_attr( $id ), esc_attr( $src_class ), esc_html( $button_text ) ); $label_tag = $labels; $label_tag->id = $id; $label_tag->title = $title_selected; $label_tag->id = $id; $label_tag->tooltip = ''; $label_tag->tooltip_code = ''; $label_tag->class .= ' wpmui-tag-label'; $this->element_label( $label_tag ); // Second Select: The actual tag-list printf( '', esc_attr( $id ), esc_attr( $class ), esc_attr( $name ), esc_html( $ajax_data ), esc_html( $options_selected ) ); } $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_wp_pages( $labels, $class, $id, $name, $value, $attr, $field_options, $wrapper_class ) { $defaults = array( 'hierarchical' => 1, 'sort_column' => 'post_title', 'sort_order' => 'ASC', 'no_item' => '(Select a page)', ); $args = wp_parse_args( $field_options, $defaults ); $pages = get_pages( $args ); $parent_list = array(); $items = array(); foreach ( $pages as $page ) { $parent_list[ $page->ID ] = $page; } if ( ! array_key_exists( $value, $parent_list ) ) { // In case no value is selected set the default to 'no item'; $items[ $value ] = $args['no_item']; } foreach ( $pages as $page_id => $page ) { $level = 0; $parent = $page; while ( $parent->post_parent ) { $parent = $parent_list[ $parent->post_parent ]; $level += 1; } if ( 0 === strlen( $page->post_title ) ) { $label = sprintf( '#%1$s (%2$s)', $page->ID, $page->post_name ); } else { $label = $page->post_title; } $items[ $page->ID ] = str_repeat( ' — ', $level ) . $label; } $this->element_select( $labels, $class . ' wpmui-wp-pages', $id, $name, $value, $attr, $items, $wrapper_class ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_separator( $type = 'horizontal' ) { if ( 'v' === $type[0] ) { echo '
'; } else { echo '
'; } } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_link( $labels, $class, $id, $label, $url, $attr, $target ) { $this->element_desc( $labels ); if ( empty( $labels->title ) ) { $title = $label; } else { $title = $labels->title; } printf( '%5$s', esc_attr( $id ), esc_attr( wp_strip_all_tags( $title ) ), esc_attr( $class ), esc_url( $url ), esc_html( $label ), esc_html( $attr ), esc_html( $target ) ); $this->element_hint( $labels ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_wrapper( $labels, $class, $id, $code, $wrap, $wrapper_class ) { if ( empty( $wrap ) ) { $wrap = 'span'; } $this->wrap_open( 'html-text', $class, 'span', $wrapper_class ); $this->element_label( $labels ); printf( '<%1$s class="%2$s">%3$s', esc_attr( $wrap ), esc_attr( $class ), esc_html( $code ) ); $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_table( $labels, $class, $id, $rows, $args, $wrapper_class ) { self::$core->array->equip( $args, 'head_row', 'head_col', 'col_class' ); $this->wrap_open( 'table', $class, 'span', $wrapper_class ); $this->element_label( $labels ); $code_body = ''; $code_head = ''; if ( is_array( $rows ) ) { $args['col_class'] = self::$core->array->get( $args['col_class'] ); foreach ( $rows as $row_num => $row ) { $code_row = ''; $is_head_row = false; $row_class = $row_num % 2 === 0 ? '' : 'alternate'; if ( 0 === $row_num && $args['head_row'] ) { $is_head_row = true; } if ( is_array( $row ) ) { foreach ( $row as $col_num => $col ) { $is_head = $is_head_row || ( 0 === $col_num && $args['head_col'] ); $col_class = isset( $args['col_class'][ $col_num ] ) ? $args['col_class'][ $col_num ] : ''; $code_row .= sprintf( '<%1$s class="%3$s">%2$s', ($is_head ? 'th' : 'td'), $col, $col_class ); } } else { $code_row = $row; } $code_row = sprintf( '%1$s', $code_row, $row_class ); if ( $is_head_row ) { $code_head .= $code_row; } else { $code_body .= $code_row; } } printf( '%2$s%3$s
', esc_attr( $class ), '' . esc_html($code_head) . '', '' . esc_html($code_body) . '' ); } $this->element_hint( $labels ); $this->wrap_close(); } /** * Returns HTML code containing options used to build a select tag. * * @since 1.1.0 * @internal * * @param array $list List items as 'key => value' pairs. * @param array|string $value The selected value. * @param string $type Either 'default' or 'taglist'. * * @return string */ private function select_options( $list, $value = '', $type = 'default' ) { $options = ''; $list = self::$core->array->get( $list ); foreach ( $list as $key => $option ) { if ( is_array( $option ) ) { if ( empty( $option ) ) { continue; } $options .= sprintf( '%2$s', $key, $this->select_options( $option, $value, $type ) ); } else { $attr = ''; if ( is_object( $option ) ) { if ( isset( $option->attr ) ) { $attr = $option->attr; } if ( isset( $option->label ) ) { $option = $option->label; } } if ( empty( $option ) ) { continue; } if ( is_array( $value ) ) { $is_selected = ( in_array( $key, $value ) ); } else { $is_selected = $key == $value; } switch ( $type ) { case 'default': $attr .= selected( $is_selected, true, false ); $options .= sprintf( '', esc_attr( $key ), $attr, $option ); break; case 'taglist': $attr .= ($is_selected ? 'disabled="disabled"' : ''); $options .= sprintf( '', esc_attr( $key ), $attr, $option ); break; } } } return $options; } /** * Output the opening tag of an input wrapper. * * @since 2.0.0 * @internal * * @param string $type Wrapper type, class is set to 'wpmui-$type-wrapper'. * @param string $classes String or array containing additional classes. * All classes are extended with '-wrapper'. * @param string $tag Optional. The tag name, default 'span' * @param string $raw_classes String or array containing additional classes. * These classes are not modified, but output as they appear. */ private function wrap_open( $type, $classes = '', $tag = 'span', $raw_classes = '' ) { if ( is_string( $classes ) ) { $classes = explode( ' ', $classes ); } if ( count( $classes ) ) { $classes = array_filter( array_map( 'trim', $classes ) ); $classes = array_map( 'strtolower', $classes ); $extra_classes = implode( '-wrapper ', $classes ); if ( ! empty( $extra_classes ) ) { $extra_classes .= '-wrapper'; } } else { $extra_classes = ''; } if ( ! empty( $raw_classes ) ) { if ( is_array( $raw_classes ) ) { $extra_classes .= implode( ' ', $raw_classes ); } else { $extra_classes .= ' ' . $raw_classes; } } $extra_classes = trim( $extra_classes ); printf( '<%1$s class="wpmui-wrapper wpmui-%2$s-wrapper %3$s">', esc_html( $tag ), esc_html( $type ), esc_html( $extra_classes ) ); } /** * Output the closing tag of an input wrapper. * * @since 2.0.0 * @internal * * @param string $tag Optional. The tag name, default 'span' */ private function wrap_close( $tag = 'span' ) { printf( '', esc_html( $tag ) ); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_label( $labels ) { if ( ! empty( $labels->title ) ) { printf( '<%5$s for="%1$s" class="wpmui-field-label %4$s">%2$s %3$s', esc_attr( $labels->id ), esc_html( $labels->title ), esc_html( $labels->tooltip_code ), esc_attr( ' wpmui-label-' . $labels->id . ' ' . $labels->class ), esc_attr( $labels->label_type ) ); } else { $this->element_desc( $labels ); } } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_desc( $labels ) { if ( ! empty( $labels->desc ) ) { printf( '', esc_html( $labels->desc ), esc_attr( 'wpmui-description-' . $labels->id . ' ' . $labels->class ), esc_attr( $labels->id ) ); } if ( ! empty( $labels->before ) ) { printf( '%s', esc_html( $labels->before ) ); } } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_hint( $labels ) { if ( ! empty( $labels->after ) ) { printf( '%s', esc_html( $labels->after ) ); } if ( empty( $labels->title ) ) { echo esc_html( $labels->tooltip_code ); } } /** * Method for outputting tooltips. * * @since 1.1.0 * @api * * @param string $tip The tooltip to display. * @param bool $return Optional. If true then the HTML code is returned as * function return value. Otherwise echo'ed. * * @return string|void Depending on param $return either nothing or HTML code. */ public function tooltip( $tip = '', $return = false ) { if ( empty( $tip ) ) { return; } if ( $return ) { ob_start(); } $this->wrap_open( 'tooltip', '', 'div' ); ?>
×
wrap_close( 'div' ); if ( $return ) { return ob_get_clean(); } } /** * Enqueue wp-color-picker * * @since 3.0.5 * @internal */ private function _enqueue_color_picker() { wp_enqueue_script( 'wp-color-picker' ); wp_enqueue_style( 'wp-color-picker' ); } /** * Helper function used by `wp-color-picker` * * @since 3.0.5 * @internal */ private function element_color_picker( $labels, $class, $id, $name, $value, $attr, $wrapper_class ) { $this->_enqueue_color_picker(); $this->wrap_open( 'colorpicker', $class, 'span', $wrapper_class ); $this->element_label( $labels ); printf( '', esc_attr( $class ), esc_attr( $id ), esc_attr( $name ), esc_attr( $value ), esc_html( $attr ) ); $this->element_hint( $labels ); $this->wrap_close(); } /** * Helper function used by `html_element` * * @since 1.1.0 * @internal */ private function element_wp_media( $labels, $class, $id, $name, $value, $attr, $wrapper_class ) { $image_src = wp_get_attachment_image_url( $value ); wp_enqueue_media(); $this->element_label( $labels ); $content = sprintf( '
', esc_attr( empty( $image_src )? 'hidden':'' ) ); $content .= '
'; $content .= sprintf( '', esc_url( $image_src ) ); $content .= '
'; $content .= ''; $content .= sprintf( '%s', esc_attr( $image_src? '': 'disabled' ), esc_html__( 'Clear', 'custom-sidebars' ) ); $content .= '
'; $content .= sprintf( '', esc_attr__( 'Browse', 'custom-sidebars' ) ); $content .= sprintf( '', esc_attr( $name ), esc_attr( $value ) ); CustomSidebars::wp_kses_wf( $content ); $this->element_hint( $labels ); } } inc/external/wpmu-lib/inc/class-thelib.php000064400000016215150211770060014533 0ustar00_have( '_hooked_action-' . $tag ); if ( did_action( $tag ) ) { $this->$function(); } else { $this->_add( '_hooked_action-' . $tag, true ); add_action( $tag, array( $this, $function ), $priority ); } } } inc/external/wpmu-lib/inc/class-thelib-session.php000064400000002452150211770060016212 0ustar00session`. * * @since 1.1.4 */ class TheLib_Session extends TheLib { /** * Adds a value to the data collection in the user session. * * @since 1.0.15 * @api * * @param string $key The key of the value. * @param mixed $value Value to store. */ public function add( $key, $value ) { self::_sess_add( 'store:' . $key, $value ); } /** * Returns the current data array of the specified value from user session. * * @since 1.0.15 * @api * * @param string $key The key of the value. * @return array The value, or an empty array if no value was assigned yet. */ public function get( $key ) { $vals = self::_sess_get( 'store:' . $key ); foreach ( $vals as $key => $val ) { if ( null === $val ) { unset( $vals[ $key ] ); } } $vals = array_values( $vals ); return $vals; } /** * Returns the current data array of the specified value from user session * and then clears the values from the session. * * @since 1.0.15 * @api * * @param string $key The key of the value. * @return array The value, or an empty array if no value was assigned yet. */ public function get_clear( $key ) { $val = $this->get( $key ); self::_sess_clear( 'store:' . $key ); return $val; } }inc/external/wpmu-lib/inc/class-thelib-ui.php000064400000033311150211770060015142 0ustar00ui`. * * @since 1.1.4 */ class TheLib_Ui extends TheLib { // Load the main JS module (the wpmUi object) and basic styles. const MODULE_CORE = 'core'; // Load CSS animations. const MODULE_ANIMATION = 'animate'; // Custom select2 integration. JS: wpmUi.upgrade_multiselect() const MODULE_SELECT = 'select'; // Vertical navigation support. const MODULE_VNAV = 'vnav'; // Styles for lib3()->html->element() output. const MODULE_HTML = 'html_element'; // WordPress media gallery support. const MODULE_MEDIA = 'media'; // Fontawesome CSS icons. const MODULE_ICONS = 'fontawesome'; // jQuery datepicker, draggable, jQuery-UI styles. const MODULE_JQUERY = 'jquery-ui'; /** * Class constructor * * @since 1.0.0 * @internal */ public function __construct() { parent::__construct(); // Check for persistent data from last request that needs to be processed. $this->add_action( 'plugins_loaded', '_check_admin_notices' ); } /** * Enqueue core UI files (CSS/JS). * * Defined modules: * - core * - select * - vnav * - card-list * - html-element * - media * - fontawesome * - jquery-ui * * All undefined modules are assumed to be a valid CSS or JS file-name. * * @since 1.0.0 * @api * * @param string $modules The module to load. * @param string $onpage A page hook; files will only be loaded on this page. */ public function add( $module = 'core', $onpage = 'all' ) { switch ( $module ) { case 'core': $this->css( $this->_css_url( 'wpmu-ui.3.min.css' ), $onpage ); $this->js( $this->_js_url( 'wpmu-ui.3.min.js' ), $onpage ); break; case 'animate': case 'animation': $this->css( $this->_css_url( 'animate.3.min.css' ), $onpage ); break; case 'select': $this->css( $this->_css_url( 'select2.3.min.css' ), $onpage ); $this->js( $this->_js_url( 'select2.3.min.js' ), $onpage ); break; case 'vnav': $this->css( $this->_css_url( 'wpmu-vnav.3.min.css' ), $onpage ); $this->js( $this->_js_url( 'wpmu-vnav.3.min.js' ), $onpage ); break; case 'html-element': case 'html_element': case 'html': $this->css( $this->_css_url( 'wpmu-html.3.min.css' ), $onpage ); break; case 'media': $this->js( 'wpmu:media', $onpage ); break; case 'fontawesome': case 'icons': $this->css( $this->_css_url( 'fontawesome.3.min.css' ), $onpage ); break; case 'jquery-ui': case 'jquery': $this->js( 'jquery-ui-core', $onpage ); $this->js( 'jquery-ui-datepicker', $onpage ); $this->js( 'jquery-ui-draggable', $onpage ); $this->css( $this->_css_url( 'jquery-ui.wpmui.3.min.css' ), $onpage ); break; default: $ext = strrchr( $module, '.' ); if ( WDEV_UNMINIFIED ) { $module = str_replace( '.min' . $ext, $ext, $module ); } if ( '.css' === $ext ) { $this->css( $module, $onpage, 20 ); } else if ( '.js' === $ext ) { $this->js( $module, $onpage, 20 ); } } } /** * Adds a variable to javascript. * * @since 1.0.7 * @api * * @param string $name Name of the variable * @param mixed $data Value of the variable */ public function data( $name, $data ) { $this->_add( 'js_data_hook', true ); // Determine which hook should print the data. $hook = ( is_admin() ? 'admin_footer' : 'wp_footer' ); // Enqueue the data for output with javascript sources. $this->_add( 'js_data', array( $name, $data ) ); $this->add_action( $hook, '_print_script_data' ); } /** * Adds custom javascript to the page footer. * * @since 1.1.3 * @api * * @param string $jscript The javascript code. */ public function script( $jscript ) { $this->_add( 'js_data_hook', true ); // Determine which hook should print the data. $hook = ( is_admin() ? 'admin_footer' : 'wp_footer' ); // Enqueue the data for output with javascript sources. $this->_add( 'js_script', $jscript ); $this->add_action( $hook, '_print_script_code' ); } /** * Enqueue a javascript file. * * @since 1.0.0 * @api * * @param string $url Full URL to the javascript file. * @param string $onpage A page hook; files will only be loaded on this page. * @param int $priority Loading order. The higher the number, the later it is loaded. */ public function js( $url, $onpage = 'all', $priority = 10 ) { $this->_prepare_js_or_css( $url, 'js', $onpage, $priority ); } /** * Enqueue a css file. * * @since 1.0.0 * @api * * @param string $url Full URL to the css filename. * @param string $onpage A page hook; files will only be loaded on this page. * @param int $priority Loading order. The higher the number, the later it is loaded. */ public function css( $url, $onpage = 'all', $priority = 10 ) { $this->_prepare_js_or_css( $url, 'css', $onpage, $priority ); } /** * Prepare to enqueue a javascript or css file. * * @since 1.0.7 * @internal * * @param string $url Full URL to the javascript/css file. * @param string $type 'css' or 'js' * @param string $onpage A page hook; files will only be loaded on this page. * @param int $priority Loading order. The higher the number, the later it is loaded. */ protected function _prepare_js_or_css( $url, $type, $onpage, $priority ) { $this->_add( 'js_or_css', compact( 'url', 'type', 'onpage', 'priority' ) ); $this->add_action( 'init', '_add_js_or_css' ); } /** * Returns the JS/CSS handle of the item. * This is a private helper function used by array_map() * * @since 1.0.7 * @internal */ public function _get_script_handle( $item ) { if ( ! property_exists( $item, 'handle' ) ) { $item->handle = ''; } return $item->handle; } /** * Enqueues either a css or javascript file * * @since 1.0.0 * @internal */ public function _add_js_or_css() { global $wp_styles, $wp_scripts; $scripts = $this->_get( 'js_or_css' ); $this->_clear( 'js_or_css' ); // Prevent adding the same URL twice. $done_urls = array(); foreach ( $scripts as $script ) { extract( $script ); // url, type, onpage, priority // Skip Front-End files in Admin Dashboard. if ( 'front' === $onpage && is_admin() ) { continue; } // Prevent adding the same URL twice. if ( in_array( $url, $done_urls ) ) { continue; } $done_urls[] = $url; $type = ( 'css' === $type || 'style' === $type ? 'css' : 'js' ); // The $handle values are intentionally not cached: // Any plugin/theme could add new handles at any moment... $handles = array(); if ( 'css' == $type ) { if ( ! is_a( $wp_styles, 'WP_Styles' ) ) { $wp_styles = new WP_Styles(); } $handles = array_values( array_map( array( $this, '_get_script_handle' ), $wp_styles->registered ) ); $type_callback = '_enqueue_style_callback'; } else { if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { $wp_scripts = new WP_Scripts(); } $handles = array_values( array_map( array( $this, '_get_script_handle' ), $wp_scripts->registered ) ); $type_callback = '_enqueue_script_callback'; } if ( in_array( $url, $handles ) ) { $alias = $url; $url = ''; } else { // Get the filename from the URL, then sanitize it and prefix "wpmu-" $urlparts = explode( '?', $url, 2 ); $alias = 'wpmu-' . sanitize_title( basename( $urlparts[0] ) ); } $onpage = empty( $onpage ) ? 'all' : $onpage; if ( ! is_admin() ) { $hook = 'wp_enqueue_scripts'; } else { $hook = 'admin_enqueue_scripts'; } $item = compact( 'url', 'alias', 'onpage' ); $this->_add( $type, $item ); $this->add_action( $hook, $type_callback, 100 + $priority ); } } /** * Action hook for enqueue style (for PHP <5.3 only) * * @since 1.0.1 * @internal */ public function _enqueue_style_callback() { global $hook_suffix; $items = $this->_get( 'css' ); $this->_clear( 'css' ); $hook = $hook_suffix; if ( empty( $hook ) ) { $hook = 'front'; } foreach ( $items as $item ) { extract( $item ); // url, alias, onpage if ( empty( $onpage ) ) { $onpage = 'all'; } // onpage == 'all' will always load the script. // otherwise onpage must match the enqueue-hook. if ( 'all' == $onpage || $hook == $onpage ) { if ( empty( $url ) ) { wp_enqueue_style( $alias ); } else { /** * Allow to setup styles version. * * @since 3.0.6 * * @param string WPMU Version * @param string $alias Css handler. */ $version = apply_filters( 'wpmu_style_version', TheLib3_Wrap::get_version(), $alias ); wp_enqueue_style( $alias, $url, array(), $version ); } } } } /** * Action hook for enqueue script (for PHP <5.3 only) * * @since 1.0.1 * @internal */ public function _enqueue_script_callback() { global $hook_suffix; $items = $this->_get( 'js' ); $this->_clear( 'js' ); $hook = $hook_suffix; if ( empty( $hook ) ) { $hook = 'front'; } foreach ( $items as $item ) { extract( $item ); // url, alias, onpage if ( empty( $onpage ) ) { $onpage = 'all'; } // onpage == 'all' will always load the script. // otherwise onpage must match the enqueue-hook. if ( 'all' == $onpage || $hook == $onpage ) { // Load the Media-library functions. if ( 'wpmu:media' === $url ) { wp_enqueue_media(); continue; } // Register script if it has an URL. if ( ! empty( $url ) ) { /** * Allow to setup script version. * * @since 3.0.6 * * @param string WPMU Version * @param string $alias Css handler. */ $version = apply_filters( 'wpmu_script_version', TheLib3_Wrap::get_version(), $alias ); wp_register_script( $alias, $url, array( 'jquery' ), $version, true ); } // Enqueue the script for output in the page footer. wp_enqueue_script( $alias ); } } } /** * Prints extra script data to the page. * * @action `wp_head` * @since 1.1.1 * @internal */ public function _print_script_data() { $data = $this->_get( 'js_data' ); $this->_clear( 'js_data' ); // Append javascript data to the script output. if ( is_array( $data ) ) { $collected = array(); foreach ( $data as $item ) { if ( ! is_array( $item ) ) { continue; } $key = sanitize_html_class( $item[0] ); $obj = array( 'window.' . $key => $item[1] ); $collected = self::$core->array->merge_recursive_distinct( $collected, $obj ); } echo ''; } } /** * Prints extra javascript code to the page. * * @action `wp_foot` * @since 1.1.3 * @internal */ public function _print_script_code() { $data = $this->_get( 'js_script' ); $this->_clear( 'js_script' ); // Append javascript data to the script output. if ( is_array( $data ) ) { foreach ( $data as $item ) { printf( '', esc_js($item) ); } } } /** * Display an admin notice. * * @since 1.0.0 * @api * * @param string $text Text to display. * @param string $class Message-type [updated|error] * @param string $screen Limit message to this screen-ID * @param string $id Message ID. Prevents adding duplicate messages. */ public function admin_message( $text, $class = '', $screen = '', $id = '' ) { switch ( $class ) { case 'red': case 'err': case 'error': $class = 'error'; break; case 'warning': case 'orange': $class = 'warning'; break; case 'info': case 'blue': $class = 'info'; break; default: $class = 'updated'; break; } // Check if the message is already queued... $items = self::_sess_get( 'admin_notice' ); foreach ( $items as $key => $data ) { if ( $data['text'] == $text && $data['class'] == $class && $data['screen'] == $screen ) { return; // Don't add duplicate message to queue. } /** * `$id` prevents adding duplicate messages. * * @since 1.1.0 */ if ( ! empty( $id ) && $data['id'] == $id ) { return; // Don't add duplicate message to queue. } } self::_sess_add( 'admin_notice', compact( 'text', 'class', 'screen', 'id' ) ); $this->add_action( 'admin_notices', '_admin_notice_callback', 1 ); $this->add_action( 'network_admin_notices', '_admin_notice_callback', 1 ); } /** * Action hook for admin notices (for PHP <5.3 only) * * @since 1.0.1 * @internal */ public function _admin_notice_callback() { $items = self::_sess_get( 'admin_notice' ); self::_sess_clear( 'admin_notice' ); $screen_info = get_current_screen(); $screen_id = $screen_info->id; foreach ( $items as $item ) { extract( $item ); // text, class, screen, id if ( empty( $screen ) || $screen_id == $screen ) { /* translators: %1$s is replaced with the notice's CSS class, %2$s is replaced with the notice text, %3$s is replaced with the notice ID */ CustomSidebars::wp_kses_wf(sprintf('

%2$s

', esc_attr( $class ), esc_html( $text ), esc_attr( $id ), __( 'Dismiss this notice.', 'custom-sidebars' ) )); } } } /** * Checks the DB for persistent data from last request. * If persistent data exists the appropriate hooks are set to process them. * * @since 1.0.7 * @internal */ public function _check_admin_notices() { if ( self::_sess_have( 'admin_notice' ) ) { $this->add_action( 'admin_notices', '_admin_notice_callback', 1 ); $this->add_action( 'network_admin_notices', '_admin_notice_callback', 1 ); } } } inc/external/wpmu-lib/inc/class-thelib-net.php000064400000011116150211770060015312 0ustar00net`. * * @since 2.0.0 */ class TheLib_Net extends TheLib { /** * Returns the current URL. * This URL is not guaranteed to look exactly same as the user sees it. * E.g. Hashtags are missing ("index.php#section-a") * * @since 1.0.7 * @api * * @param string $protocol Optional. Define URL protocol ('http', 'https') * @return string Full URL to current page. */ public function current_url( $protocol = null ) { static $Url = array(); if ( null !== $protocol ) { // Remove the "://" part, if it was provided $protocol = array_shift( explode( ':', $protocol ) ); } if ( ! isset( $Url[$protocol] ) ) { if ( null === $protocol ) { $cur_url = 'http'; if ( isset( $_SERVER['HTTPS'] ) && 'on' == strtolower( $_SERVER['HTTPS'] ) ) { $cur_url .= 's'; } } else { $cur_url = $protocol; } $is_ssl = (false !== strpos( $cur_url, 'https' )); $cur_url .= '://'; if ( isset( $_SERVER['SERVER_NAME'] ) ) { $cur_url .= $_SERVER['SERVER_NAME']; } elseif ( defined( 'WP_TESTS_DOMAIN' ) ) { $cur_url .= WP_TESTS_DOMAIN; } if ( ! isset( $_SERVER['SERVER_PORT'] ) ) { if ( $is_ssl ) { $_SERVER['SERVER_PORT'] = '443'; } else { $_SERVER['SERVER_PORT'] = '80'; } } if ( ( ! $is_ssl && '80' != $_SERVER['SERVER_PORT'] ) || ( $is_ssl && !in_array( $_SERVER['SERVER_PORT'], array( '80', '443' ) ) ) ) { $cur_url .= ':' . $_SERVER['SERVER_PORT']; } if ( empty( $_SERVER['REQUEST_URI'] ) ) { $cur_url = trailingslashit( $cur_url ); } else { $cur_url .= $_SERVER['REQUEST_URI']; } $Url[$protocol] = $cur_url; } return $Url[$protocol]; } /** * Changes a relative URL to an absolute URL. * This function uses WordPress `home_url()` to expand a relative URL. * * @uses home_url() * * @since 2.0.0 * @api * * @param string $url An URL that can be absolute or relative. * @return string The absolute URL. */ public function expand_url( $url ) { if ( false === strpos( $url, '://' ) ) { $url = home_url( $url ); } return $url; } /** * Retrieves the best guess of the client's actual IP address. * Takes into account numerous HTTP proxy headers due to variations * in how different ISPs handle IP addresses in headers between hops. * * @since 1.1.3 * @api * * @return object { * IP Address details * * @type string $ip The users IP address (might be spoofed, if $proxy is true) * @type bool $proxy True, if a proxy was detected * @type string $proxy_id The proxy-server IP address * } */ public function current_ip() { $result = (object) array( 'ip' => $_SERVER['REMOTE_ADDR'], 'proxy' => false, 'proxy_ip' => '', ); /* * This code tries to bypass a proxy and get the actual IP address of * the visitor behind the proxy. * Warning: These values might be spoofed! */ $ip_fields = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', ); $forwarded = false; foreach ( $ip_fields as $key ) { if ( true === array_key_exists( $key, $_SERVER ) ) { foreach ( explode( ',', $_SERVER[$key] ) as $ip ) { $ip = trim( $ip ); if ( false !== filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) ) { $forwarded = $ip; break 2; } } } } // If we found a different IP address then REMOTE_ADDR then it's a proxy! if ( ! empty( $forwarded ) && $forwarded != $result->ip ) { $result->proxy = true; $result->proxy_ip = $result->ip; $result->ip = $forwarded; } return $result; } /** * Starts a file download and terminates the current request. * Note that this does not work inside Ajax requests! * * @since 1.1.0 * @api * * @param string $contents The file contents (text file). * @param string $filename The file name. */ public function file_download( $contents, $filename ) { // Send the download headers. header( 'Pragma: public' ); header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header( 'Cache-Control: private', false ); // required for certain browsers header( 'Content-type: application/json' ); header( 'Content-Disposition: attachment; filename="' . $filename . '"' ); header( 'Content-Transfer-Encoding: binary' ); header( 'Content-Length: ' . strlen( $contents ) ); // Finally send the export-file content. CustomSidebars::wp_kses_wf($contents); exit; } }inc/external/wpmu-lib/inc/class-thelib-array.php000064400000016363150211770060015653 0ustar00array`. * * @since 1.1.4 */ class TheLib_Array extends TheLib { /** * If the specified variable is an array it will be returned. Otherwise * an empty array is returned. * * @since 1.0.14 * @api * * @param mixed $val1 Value that maybe is an array. * @param mixed $val2 Optional, Second value that maybe is an array. * @return array */ public function get( &$val1, $val2 = array() ) { if ( is_array( $val1 ) ) { return $val1; } else if ( is_array( $val2 ) ) { return $val2; } else { return array(); } } /** * Inserts any number of scalars or arrays at the point * in the haystack immediately after the search key ($needle) was found, * or at the end if the needle is not found or not supplied. * Modifies $haystack in place. * * @since 1.1.3 * @api * * @param array &$haystack The associative array to search. This will be modified by the function * @param string $where [after|before] * @param string $needle The key to search for * @param mixed $stuff One or more arrays or scalars to be inserted into $haystack * @return int The index at which $needle was found */ public function insert( &$haystack, $where, $needle, $stuff ){ if ( ! is_array( $haystack ) ) { return $haystack; } $new_array = array(); for ( $i = 3; $i < func_num_args(); ++$i ){ $arg = func_get_arg( $i ); if ( is_array( $arg ) ) { $new_array = array_merge( $new_array, $arg ); } else { $new_array[] = $arg; } } $i = 0; foreach ( $haystack as $key => $value ) { $i += 1; if ( $key == $needle ) { if ( 'before' == $where ) { $i -= 1; } break; } } $haystack = array_merge( array_slice( $haystack, 0, $i, true ), $new_array, array_slice( $haystack, $i, null, true ) ); return $i; } /** * Tests if the given array is sequential or associative. * * It is considered sequential, when all array keys are integers. * Otherwise the result is false (meaning: associative array) * * @since 1.1.3 * @api * * @param array $array * @return bool */ public function is_seq( $array ) { for ( reset( $array ); is_int( key( $array ) ); next( $array ) ) {} return is_null( key( $array ) ); } /** * array_merge_recursive does indeed merge arrays, but it converts values with duplicate * keys to arrays rather than overwriting the value in the first array with the duplicate * value in the second array, as array_merge does. I.e., with array_merge_recursive, * this happens (documented behavior): * * array_merge_recursive(array('key' => 'org value'), array('key' => 'new value')); * => array('key' => array('org value', 'new value')); * * merge_recursive_distinct does not change the datatypes of the values in the arrays. * Matching keys' values in the second array overwrite those in the first array, as is the * case with array_merge, i.e.: * * merge_recursive_distinct(array('key' => 'org value'), array('key' => 'new value')); * => array('key' => array('new value')); * * Parameters are passed by reference, though only for performance reasons. They're not * altered by this function. * * @since 1.1.2 * @api * * @param array $array1 * @param array $array2 * @return array * @author Daniel * @author Gabriel Sobrinho */ public function merge_recursive_distinct( array &$array1, array &$array2 ) { $merged = $array1; foreach ( $array2 as $key => &$value ) { if ( is_array( $value ) && isset( $merged[$key] ) && is_array( $merged[$key] ) ) { if ( $this->is_seq( $value ) && $this->is_seq( $merged[$key] ) ) { $merged[$key] = array_merge( $merged[$key], $value ); } else { $merged[$key] = $this->merge_recursive_distinct( $merged[$key], $value ); } } else { $merged[$key] = $value; } } return $merged; } /** * Checks if the given array contains all the specified fields. * If fields are not defined then they will be added to the source array * with the boolean value false. * * This function is used to initialize optional fields. * It is optimized and tested to yield best performance. * * @since 1.0.14 * @api * * @param Array|Object $arr The array or object to check. * @param strings|Array $fields List of fields to check for. * @return int Number of missing fields that were initialized. */ public function equip( &$arr, $fields ) { $missing = 0; $is_obj = false; if ( is_object( $arr ) ) { $is_obj = true; } else if ( ! is_array( $arr ) ) { return -1; } if ( ! is_array( $fields ) ) { $fields = func_get_args(); array_shift( $fields ); // Remove $arr from the field list. } foreach ( $fields as $field ) { if ( $is_obj ) { if ( ! property_exists( $arr, $field ) ) { $arr->$field = false; $missing += 1; } } else { if ( ! isset( $arr[ $field ] ) ) { $arr[ $field ] = false; $missing += 1; } } } return $missing; } /** * Short function for lib3()->equip( $_POST, ... ) * * @since 1.0.14 * @api * @uses equip() * * @param strings|Array * @return int Number of missing fields that were initialized. */ public function equip_post( $fields ) { $fields = is_array( $fields ) ? $fields : func_get_args(); $post_fields = map_deep( $_POST, 'sanitize_text_field' ); return $this->equip( $post_fields, $fields ); } /** * Short function for lib3()->equip( $_REQUEST, ... ) * * @since 1.0.14 * @api * @uses equip() * * @param strings|Array * @return int Number of missing fields that were initialized. */ public function equip_request( $fields ) { $fields = is_array( $fields ) ? $fields : func_get_args(); $request_fields = map_deep( $_REQUEST, 'sanitize_text_field' ); return $this->equip( $request_fields, $fields ); } /** * Short function for lib3()->equip( $_GET, ... ) * * @since 1.1.3 * @api * @uses equip() * * @param strings|Array * @return int Number of missing fields that were initialized. */ public function equip_get( $fields ) { $fields = is_array( $fields ) ? $fields : func_get_args(); $get_data = map_deep($_GET,'sanitize_text_field'); return $this->equip( $get_data, $fields ); } /** * By default WordPress escapes all GPC values with slashes. * {@see wp-includes/load.php wp_magic_quotes()} * * This function can be used to strip slashes of a list of parameters. This * ensures that not all parameters are un-escaped but only ones that are * used by the current function. * * @since 1.1.4 * @api * * @param Array $arr The array or object to check. * @param strings|Array $fields List of fields to check for. * @return int Number of fields that were un-escaped. */ public function strip_slashes( &$arr, $fields ) { $modified = 0; if ( ! is_array( $arr ) ) { return -1; } if ( ! is_array( $fields ) ) { $fields = func_get_args(); array_shift( $fields ); // Remove $arr from the field list. } foreach ( $fields as $field ) { if ( isset( $arr[ $field ] ) ) { $arr[ $field ] = stripslashes_deep( $arr[$field] ); $modified += 1; } } return $modified; } }inc/external/wpmu-lib/changelog.txt000064400000021373150211770060013370 0ustar00Plugin Name: WPMU Dev code library Author: Philipp Stracker, Marcin Pietrzak, Joel James, Ivan Svyrsky Change Log: ---------------------------------------------------------------------- 3.1.2 - 2019-03-15 ---------------------------------------------------------------------- JS - Fixed the light box overlay not close after click cancel button. - Turned off pointers on pages with block editor. 3.1.1 - 2019-02-13 ---------------------------------------------------------------------- PHP - Fixed variables passed by reference and small table column in nineteen theme. - Changed isup.me into downforeveryoneorjustme.com because isup is no longer available. 3.1.0 - 2018-08-28 ---------------------------------------------------------------------- PLUGIN - Update modues version in package.json PHP - Add ability to show pointers with default WP style. 3.0.8 - 2018-06-25 ---------------------------------------------------------------------- PHP - Added get_link() method to core function to return URL link for wp.org, wpmudev, support, live chat, docs, installing plugin. JS - Fix bug with inability to scroll in some instances of select2. 3.0.7 - 2018-03-29 ---------------------------------------------------------------------- PHP - Added "disabled" attribute. 3.0.6 ---------------------------------------------------------------------- PHP - Change variable name to correct one. - Added filter 'wpmu_style_version'. - Added filter 'wpmu_script_version'. 3.0.5 ---------------------------------------------------------------------- PHP - Added sanitization of css classes. - Added wpColorPicker field. - Added wp_media field. - Fixed a url port problem. 3.0.4 ---------------------------------------------------------------------- JS - Added check is function "el.wpmuiSelect" to avoid JavaScript errors. 3.0.3 ---------------------------------------------------------------------- JS - Improved scripts to be compatible wit select2 v4. 3.0.0 ---------------------------------------------------------------------- PHP - Improve performance of initial module loading - Change library function from `lib2()` to `lib3()` - Add a P3P header so IE stores session data - Remove deprecated function `lib3()->translate_plugin()` - Remove deprecated function `lib3()->html->message()` - Add convenience function `lib3()->is_false()` - Rename `lib3()->html->plugin_list()` to `addon_list()` - Hide the "Details" link for disabled add-ons in the addon-list JS - Big improvements to the `wpmUi.popup()` function (templates, custom css, ...) - Add WordPress-like hook integration `wpmUi.add_action()`, `wpmUi.do_action()`, ... - Update select2 library from v3.5 to v4.0 - Remove tiny-scrollbar JS library CSS - Update fontawesome library from v4.2 to v4.4 - Update jQuery UI CSS from v1.10.4 to v1.11.4 - Add animate.css library v3.4 Migration notes - Rename `lib2()` to `lib3()` - Remove `->ui->add('scrollbar')`, add custom solution via CSS - Remove `->translate_plugin` with direct locationzation code - Replace `->html->message` with `->ui->admin_message` - Replace `->html->plugin_list` with `->html->addon_list` = v 3.0 ============================================================== 2.0.2 ---------------------------------------------------------------------- - Fix bug with wpmui.popup contents 2.0.2 ---------------------------------------------------------------------- - Fix javascript collision with ACF Pro plugin - New js element wpmuUi.progressbar() - New function lib2()->convert() - lib2()->ui->admin_message() has new styles and discardable mode - lib2()->html->element() regards class for hidden fields - lib2()->html->element() can handle new HTML5 input types: number, url, email, time, search - lib2()->html->element() radio-slider element can get special class 'reverse' - lib2()->html->element() has a new attribute called 'wrapper_class' - lib2()->html->plugin_list() only displays the Details link if details are present - lib2()->debug has many small improvements 2.0.1 ---------------------------------------------------------------------- - Fix errors when running side by side with older version - Add new function handlers to the JS popup: wpmUi.popup().on() and .off() 2.0.0 ---------------------------------------------------------------------- - Massive refactoring of the file and code structure - Added new functions - Much better documentation of the library - Great improvements in the debugger output = v 2.0 ============================================================== 1.1.3 ---------------------------------------------------------------------- - Improve the wpmUi.popup() object 1.1.2 ---------------------------------------------------------------------- - Fix issue where js/css files were not loaded in front-end - Several small code improvements 1.1.1 ---------------------------------------------------------------------- - Fix a PHP warning in html plugin_list - Improve the way javascripts and script-data is loaded in pages - Integrate new UI collections: 'fontawesome', 'jquery-ui' 1.1.0 ---------------------------------------------------------------------- - Add new HTML helper component: WDev()->html - Add new HTML function: WDev()->html->plugin_list() - Add new function to download files: WDev()->file_download() - Internal improvements 1.0.17 ---------------------------------------------------------------------- - Fix issue where scripts were not loaded in some cases 1.0.16 ---------------------------------------------------------------------- - Fix error on servers that run older version than PHP 5.3 1.0.15 ---------------------------------------------------------------------- - Add new session storage functions: WDev()->store_add(), store_get() - Add JS wpmUi.binary object to base-64 encode/decode data 1.0.14 ---------------------------------------------------------------------- - Add support for popup-classes (JS) - Add JS confirmation dialog: wpmUi.confirm() - Add new PHP functions to sanitize missing array keys: WDev()->load_fields() - Add new PHP debugging function: WDev()->debug() 1.0.13 ---------------------------------------------------------------------- - Migrate project to grunt - Add support for wp-config option: define('WDEV_UNMINIFIED', true) - Fix javascript issue with dynamic form submit in WpmUiAjaxData 1.0.12 ---------------------------------------------------------------------- - Fix issue with duplicate markup of cloned multiselect elements. - Make JS auto-init optional by checking body class 'no-auto-init'. 1.0.11 ---------------------------------------------------------------------- - Fixed z-index of overlay and popup window (fixes issues in Firefox) - Fixed issue with dropdown lists that didn't close properly. - Fixed loading of plugin translations. - Add support for multiselect lists with ajax source. 1.0.10 ---------------------------------------------------------------------- - Fixed z-index of select2 dropdown list (fixes issues of multiselect in tickbox) 1.0.9 - 2014-08-15 ---------------------------------------------------------------------- - Add the UI files 'vnav': WDev()->add_ui( 'vnav' ); - Fix bug that happened when enqueuing the very first script/style using WDev() 1.0.8 - 2014-08-12 ---------------------------------------------------------------------- - Methods now must be called via "WDev()->method()" and not "TheLib::method()". - Situations when plugins include different versions of the library are resolved correctly now. 1.0.7 - 2014-07-28 ---------------------------------------------------------------------- - Make message() persitent: Message is displayed even after redirect - add_js() and add_css() now accept a script-alias instead of url to load core WordPress scripts. - New function TheLib::current_url() 1.0.6 - 2014-07-21 ---------------------------------------------------------------------- - New javascript function "wpmUi.obj()": Convert JS array to object. 1.0.5 - 2014-07-11 ---------------------------------------------------------------------- - Fix buddypress warning caused by calling get_current_user_id too early. - Add new parameter to ajax().load_http() to specify the target frame. - Change function name "load_textlang" to "translate_plugin" - Fix issues with url translation (css_url / js_url) 1.0.4 - 2014-07-10 ---------------------------------------------------------------------- - Fix warning about static functions. 1.0.3 - 2014-07-09 ---------------------------------------------------------------------- - Support for Windows server (fixes javascript errors) 1.0.2 - 2014-07-09 ---------------------------------------------------------------------- - Correct the "pointer" function to dismis pointers correctly. 1.0.1 - 2014-07-09 ---------------------------------------------------------------------- - PHP 5.2 compatibility 1.0 - 2014-07-01 ---------------------------------------------------------------------- - First version. inc/external/wpmu-lib/core.php000064400000007052150211770060012337 0ustar00debug->dump() without having to enable WP_DEBUG * Default: Same as WP_DEBUG * define( 'WDEV_DEBUG', true ); * * Disable lib3()->debug->dump() for Ajax requests * Default: Same as WDEV_DEBUG * define( 'WDEV_AJAX_DEBUG', false ); * * Modify or disable the P3P HTTP header for all responses. * Default: 'CP="NOI"'. * define( 'WDEV_SEND_P3P', false ) // Disable P3P * define( 'WDEV_SEND_P3P', 'CP="CAO OUR"' ) // Overwrite default P3P header */ $version = '3.1.2'; if ( ! function_exists( 'lib3' ) ) { /** * This is a shortcut function to access the latest TheLib_Core object. * * The shortcut function is called `lib3` because it is incompatible with * the old WDev() function. The number "3" reflects the main version of this * module. * * The main version is only increased when backwards compatibility fails! * * Usage: * lib3()->ui->admin_message(); */ function lib3() { return TheLib3_Wrap::get_obj(); } } // ============================================================================ // Internal module definition: // Define the absolute paths to all class files of this submodule. $dirname = dirname( __FILE__ ) . '/inc/'; $files = array( 'TheLib' => $dirname . 'class-thelib.php', 'TheLib_Core' => $dirname . 'class-thelib-core.php', 'TheLib_Array' => $dirname . 'class-thelib-array.php', 'TheLib_Debug' => $dirname . 'class-thelib-debug.php', 'TheLib_Html' => $dirname . 'class-thelib-html.php', 'TheLib_Net' => $dirname . 'class-thelib-net.php', 'TheLib_Session' => $dirname . 'class-thelib-session.php', 'TheLib_Updates' => $dirname . 'class-thelib-updates.php', 'TheLib_Ui' => $dirname . 'class-thelib-ui.php', ); if ( ! class_exists( 'TheLib3_Wrap' ) ) { /** * The wrapper class is used to handle situations when some plugins include * different versions of TheLib. * * TheLib3_Wrap will always keep the latest version of TheLib for later usage. * * @internal Use function `lib3()` instead! */ class TheLib3_Wrap { static protected $version = '0.0.0'; static protected $files = array(); static protected $object = null; /** * Store the module files if they are the highest module-version */ static public function set_version( $version, $files ) { if ( null !== self::$object ) { return; } if ( version_compare( $version, self::$version, '>' ) ) { self::$version = $version; self::$files = $files; } } /** * Return version. * * @since 3.0.6 */ static public function get_version() { return self::$version; } /** * Return the module object. */ static public function get_obj() { if ( null === self::$object ) { foreach ( self::$files as $class_name => $class_file ) { if ( ! class_exists( $class_name ) && file_exists( $class_file ) ) { require_once $class_file; } } self::$object = new TheLib_Core(); } return self::$object; } } // End: TheLib3_Wrap } // Stores the lib-directory if it contains the highest version files. TheLib3_Wrap::set_version( $version, $files ); inc/external/wpmu-lib/js/wpmu-ui.3.js000064400000250260150211770060013415 0ustar00/*! WPMU Dev code library - v3.1.1 * http://premium.wpmudev.org/ * Copyright (c) 2019; * Licensed GPLv2+ */ /*! * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This library provides a Javascript API via the global wpmUi object. * * @version 1.0.0 * @author Philipp Stracker for WPMU Dev * @link http://appendto.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/ * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global XMLHttpRequest:false */ /*global console:false */ /*global wp:false */ (function( wpmUi ) { /** * The document element. * * @type jQuery object * @since 1.0.0 * @private */ var _doc = null; /** * The html element. * * @type jQuery object * @since 1.0.0 * @private */ var _html = null; /** * The body element. * * @type jQuery object * @since 1.0.0 * @private */ var _body = null; /** * Modal overlay, created by this object. * * @type jQuery object * @since 1.0.0 * @private */ var _modal_overlay = null; // ========== // == Public UI functions ================================================== // ========== /** * Creates a new popup window. * * @since 1.0.0 * @param string template Optional. The HTML template of the popup. * Note: The template should contain an element ".popup" * @param string css CSS styles to attach to the popup. * @return WpmUiWindow A new popup window. */ wpmUi.popup = function popup( template, css ) { _init(); return new wpmUi.WpmUiWindow( template, css ); }; /** * Creates a new progress bar element. * * @since 2.0.2 * @return WpmUiProgress A new progress bar element. */ wpmUi.progressbar = function progressbar() { _init(); return new wpmUi.WpmUiProgress(); }; /** * Creates a new formdata object. * With this object we can load or submit data via ajax. * * @since 1.0.0 * @param string ajaxurl URL to the ajax handler. * @param string default_action The action to use when an ajax function * does not specify an action. * @return WpmUiAjaxData A new formdata object. */ wpmUi.ajax = function ajax( ajaxurl, default_action ) { _init(); return new wpmUi.WpmUiAjaxData( ajaxurl, default_action ); }; /** * Upgrades normal multiselect fields to chosen-input fields. * * This function is a bottle-neck in Firefox -> el.chosen() takes quite long * * @since 1.0.0 * @param jQuery|string base All children of this base element will be * checked. If empty then the body element is used. */ wpmUi.upgrade_multiselect = function upgrade_multiselect( base ) { _init(); base = jQuery( base || _body ); var items = base.find( 'select[multiple]' ).not( 'select[data-select-ajax]' ), ajax_items = base.find( 'select[data-select-ajax]' ); // When an DOM container is *cloned* it may contain markup for a select2 // listbox that is not attached to any event handler. Clean this up. var clean_ghosts = function clean_ghosts( el ) { var id = el.attr( 'id' ), s2id = '#s2id_' + id, ghosts = el.parent().find( s2id ); ghosts.remove(); }; // Initialize normal select or multiselect list. var upgrade_item = function upgrade_item() { var el = jQuery( this ), options = { 'closeOnSelect': false, 'width': '100%' }; // Prevent double initialization (i.e. conflict with other plugins) if ( typeof el.data( 'select2' ) === 'object' ) { return; } if ( typeof el.data( 'chosen' ) === 'object' ) { return; } if ( el.filter( '[class*=acf-]' ).length ) { return; } // Prevent double initialization (with other WPMU LIB plugin) if ( el.data( 'wpmui-select' ) === '1' ) { return; } // Prevent auto-initialization when manually disabled. if ( el.closest( '.no-auto-init', base[0] ).length ) { return; } el.data( 'wpmui-select', '1' ); clean_ghosts( el ); // Prevent lags during page load by making this asynchronous. if ( "function" === typeof( el.wpmuiSelect ) ) { window.setTimeout( function() { el.wpmuiSelect(options); }, 1); } }; // Initialize select list with ajax source. var upgrade_ajax = function upgrade_ajax() { var format_item = function format_item( item ) { return item.text; }; var el = jQuery( this ), options = { 'closeOnSelect': false, 'width': '100%', 'multiple': true, 'minimumInputLength': 1, 'ajax': { url: el.attr( 'data-select-ajax' ), dataType: 'json', quietMillis: 100, cache: true, data: function(params) { return { q: params.term, page: params.page, }; }, processResults: function(data, params) { return { results: data.items }; } }, 'templateResult': format_item, 'templateSelection': format_item }; // Prevent double initialization (i.e. conflict with other plugins) if ( typeof el.data( 'select2' ) === 'object' ) { return; } if ( typeof el.data( 'chosen' ) === 'object' ) { return; } if ( el.filter( '[class*=acf-]' ).length ) { return; } // Prevent double initialization (with other WPMU LIB plugin) if ( el.data( 'wpmui-select' ) === '1' ) { return; } // Prevent auto-initialization when manually disabled if ( el.closest( '.no-auto-init', base[0] ).length ) { return; } el.data( 'wpmui-select', '1' ); clean_ghosts( el ); // Prevent lags during page load by making this asynchronous. if ( "function" === typeof( el.wpmuiSelect ) ) { window.setTimeout( function() { el.wpmuiSelect(options); }, 1); } }; if ( 'function' === typeof jQuery.fn.each2 ) { items.each2( upgrade_item ); ajax_items.each2( upgrade_ajax ); } else { items.each( upgrade_item ); ajax_items.each( upgrade_ajax ); } }; /** * Displays a WordPress-like message to the user. * * @since 1.0.0 * @param string|object args Message options object or message-text. * args: { * 'message': '...' * 'type': 'ok|err' // Style * 'close': true // Show close button? * 'parent': '.wrap' // Element that displays the message * 'insert_after': 'h2' // Inside the parent the message * // will be displayed after the * // first element of this type. * // Set to false to insert at top. * 'id': 'msg-ok' // When set to a string value then the * // the first call to "message()" will * // insert a new message and the next * // call will update the existing element. * 'class': 'msg1' // Additional CSS class. * 'details': obj // Details for error-type message. * } */ wpmUi.message = function message( args ) { var parent, msg_box, btn_close, need_insert, debug; _init(); // Hides the message again, e.g. when user clicks the close icon. var hide_message = function hide_message( ev ) { ev.preventDefault(); msg_box.remove(); return false; }; // Toggle the error-details var toggle_debug = function toggle_debug( ev ) { var me = jQuery( this ).closest( '.wpmui-msg' ); me.find( '.debug' ).toggle(); }; if ( 'undefined' === typeof args ) { return false; } if ( 'string' === typeof args || args instanceof Array ) { args = { 'message': args }; } if ( args['message'] instanceof Array ) { args['message'] = args['message'].join( '
' ); } if ( ! args['message'] ) { return false; } args['type'] = undefined === args['type'] ? 'ok' : args['type'].toString().toLowerCase(); args['close'] = undefined === args['close'] ? true : args['close']; args['parent'] = undefined === args['parent'] ? '.wrap' : args['parent']; args['insert_after'] = undefined === args['insert_after'] ? 'h2' : args['insert_after']; args['id'] = undefined === args['id'] ? '' : args['id'].toString().toLowerCase(); args['class'] = undefined === args['class'] ? '' : args['class'].toString().toLowerCase(); args['details'] = undefined === args['details'] ? false : args['details']; if ( args['type'] === 'error' || args['type'] === 'red' ) { args['type'] = 'err'; } if ( args['type'] === 'success' || args['type'] === 'green' ) { args['type'] = 'ok'; } parent = jQuery( args['parent'] ).first(); if ( ! parent.length ) { return false; } if ( args['id'] && jQuery( '.wpmui-msg[data-id="' + args['id'] + '"]' ).length ) { msg_box = jQuery( '.wpmui-msg[data-id="' + args['id'] + '"]' ).first(); need_insert = false; } else { msg_box = jQuery( '

' ); if ( args['id'] ) { msg_box.attr( 'data-id', args['id'] ); } need_insert = true; } msg_box.find( 'p' ).html( args['message'] ); if ( args['type'] === 'err' && args['details'] && window.JSON ) { jQuery( '' ) .appendTo( msg_box ) .text( JSON.stringify( args['details'] ) ); jQuery( '' ) .prependTo( msg_box.find( 'p:first' ) ) .click( toggle_debug ) .after( ' ' ); } msg_box.removeClass().addClass( 'updated wpmui-msg ' + args['class'] ); if ( 'err' === args['type'] ) { msg_box.addClass( 'error' ); } if ( need_insert ) { if ( args['close'] ) { btn_close = jQuery( '' ); btn_close.prependTo( msg_box ); btn_close.click( hide_message ); } if ( args['insert_after'] && parent.find( args['insert_after'] ).length ) { parent = parent.find( args['insert_after'] ).first(); parent.after( msg_box ); } else { parent.prepend( msg_box ); } } return true; }; /** * Displays confirmation box to the user. * * The layer is displayed in the upper half of the parent element and is by * default modal. * Note that the confirmation is asynchronous and the functions return value * only indicates if the confirmation message was created, and not the users * response! * * Also this is a "disponsable" function which does not create DOM elements * that can be re-used. All elements are temporary and are removed when the * confirmation is closed. Only 1 confirmation should be displayed at a time. * * @since 1.0.14 * @param object args { * Confirmation options. * * string message * bool modal * string layout 'fixed' or 'absolute' * jQuery parent A jQuery object or selector * array buttons Default is ['OK'] * function(key) callback Receives array-index of the pressed button * } * @return bool True if the confirmation is created correctly. */ wpmUi.confirm = function confirm( args ) { var parent, modal, container, el_msg, el_btn, ind, item, primary_button; if ( ! args instanceof Object ) { return false; } if ( undefined === args['message'] ) { return false; } args['modal'] = undefined === args['modal'] ? true : args['modal']; args['layout'] = undefined === args['layout'] ? 'fixed' : args['layout']; args['parent'] = undefined === args['parent'] ? _body : args['parent']; args['buttons'] = undefined === args['buttons'] ? ['OK'] : args['buttons']; args['callback'] = undefined === args['callback'] ? false : args['callback']; parent = jQuery( args['parent'] ); function handle_close() { var me = jQuery( this ), key = parseInt( me.data( 'key' ) ); if ( args['modal'] ) { if ( args['layout'] === 'fixed' ) { wpmUi._close_modal(); } else { modal.remove(); } } container.remove(); if ( 'function' === typeof args['callback'] ) { args['callback']( key ); } } if ( args['modal'] ) { if ( args['layout'] === 'fixed' ) { wpmUi._make_modal( 'wpmui-confirm-modal' ); } else { modal = jQuery( '
' ) .css( { 'position': args['layout'] } ) .appendTo( parent ); } } container = jQuery( '
' ) .css( { 'position': args['layout'] } ) .appendTo( parent ); el_msg = jQuery( '
' ) .html( args['message'] ); el_btn = jQuery( '
' ); primary_button = true; for ( ind = 0; ind < args['buttons'].length; ind += 1 ) { item = jQuery( '' ) .html( args['buttons'][ind] ) .addClass( primary_button ? 'button-primary' : 'button-secondary' ) .data( 'key', ind ) .click( handle_close ) .prependTo( el_btn ); primary_button = false; } el_msg.appendTo( container ); el_btn.appendTo( container ) .find( '.button-primary' ) .focus(); return true; }; /** * Attaches a tooltip to the specified element. * * @since 1.0.0 * @param jQuery el The host element that receives the tooltip. * @param object|string args The tooltip options. Either a string containing * the toolip message (HTML code) or an object with details: * - content * - trigger [hover|click] * - pos [top|bottom|left|right] * - class */ wpmUi.tooltip = function tooltip( el, args ) { var tip, parent; _init(); // Positions the tooltip according to the function args. var position_tip = function position_tip( tip ) { var tip_width = tip.outerWidth(), tip_height = tip.outerHeight(), tip_padding = 5, el_width = el.outerWidth(), el_height = el.outerHeight(), pos = {}; pos['left'] = (el_width - tip_width) / 2; pos['top'] = (el_height - tip_height) / 2; pos[ args['pos'] ] = 'auto'; switch ( args['pos'] ) { case 'top': pos['bottom'] = el_height + tip_padding; break; case 'bottom': pos['top'] = el_height + tip_padding; break; case 'left': pos['right'] = el_width + tip_padding; break; case 'right': pos['left'] = el_width + tip_padding; break; } tip.css(pos); }; // Make the tooltip visible. var show_tip = function show_tip( ev ) { var tip = jQuery( this ) .closest( '.wpmui-tip-box' ) .find( '.wpmui-tip' ); tip.addClass( 'wpmui-visible' ); tip.show(); position_tip( tip ); window.setTimeout( function() { position_tip( tip ); }, 35 ); }; // Hide the tooltip. var hide_tip = function hide_tip( ev ) { var tip = jQuery( this ) .closest( '.wpmui-tip-box' ) .find( '.wpmui-tip' ); tip.removeClass( 'wpmui-visible' ); tip.hide(); }; // Toggle the tooltip state. var toggle_tip = function toggle_tip( ev ) { if ( tip.hasClass( 'wpmui-visible' ) ) { hide_tip.call(this, ev); } else { show_tip.call(this, ev); } }; if ( 'string' === typeof args ) { args = { 'content': args }; } if ( undefined === args['content'] ) { return false; } el = jQuery( el ); if ( ! el.length ) { return false; } args['trigger'] = undefined === args['trigger'] ? 'hover' : args['trigger'].toString().toLowerCase(); args['pos'] = undefined === args['pos'] ? 'top' : args['pos'].toString().toLowerCase(); args['class'] = undefined === args['class'] ? '' : args['class'].toString().toLowerCase(); parent = el.parent(); if ( ! parent.hasClass( 'wpmui-tip-box' ) ) { parent = el .wrap( '' ) .parent() .addClass( args['class'] + '-box' ); } tip = parent.find( '> .wpmui-tip' ); el.off(); if ( ! tip.length ) { tip = jQuery( '
' ); tip .addClass( args['class'] ) .addClass( args['pos'] ) .appendTo( el.parent() ) .hide(); if ( ! isNaN( args['width'] ) ) { tip.width( args['width'] ); } } if ( 'hover' === args['trigger'] ) { el.on( 'mouseenter', show_tip ).on( 'mouseleave', hide_tip ); } else if ( 'click' === args['trigger'] ) { el.on( 'click', toggle_tip ); } tip.html( args['content'] ); return true; }; /** * Checks the DOM and creates tooltips for the DOM Elements that specify * tooltip details. * * Function can be called repeatedly and will refresh the tooltip contents * if they changed since last call. * * @since 1.0.8 */ wpmUi.upgrade_tooltips = function upgrade_tooltips() { var el = jQuery( '[data-wpmui-tooltip]' ); el.each(function() { var me = jQuery( this ), args = { 'content': me.attr( 'data-wpmui-tooltip' ), 'pos': me.attr( 'data-pos' ), 'trigger': me.attr( 'data-trigger' ), 'class': me.attr( 'data-class' ), 'width': me.attr( 'data-width' ) }; wpmUi.tooltip( me, args ); }); }; /* * Converts any value to an object. * Typically used to convert an array to an object. * * @since 1.0.6 * @param mixed value This value is converted to an JS-object. * @return object */ wpmUi.obj = function( value ) { var obj = {}; if ( value instanceof Object ) { obj = value; } else if ( value instanceof Array ) { if ( typeof value.reduce === 'function' ) { obj = value.reduce(function(o, v, i) { o[i] = v; return o; }, {}); } else { for ( var i = value.length - 1; i > 0; i -= 1 ) { if ( value[i] !== undefined ) { obj[i] = value[i]; } } } } else if ( typeof value === 'string' ) { obj.scalar = value; } else if ( typeof value === 'number' ) { obj.scalar = value; } else if ( typeof value === 'boolean' ) { obj.scalar = value; } return obj; }; /** * Initialize the Radio Sliders * * @since 3.0.5 */ wpmUi.bind_radio_sliders = function() { jQuery('.wpmui-radio-slider').on('click', function( ev ) { var radio = jQuery(this); var data = jQuery('.wpmui-toggle', radio).data('states'); var field = jQuery('input.wpmui-hidden[type=hidden]', radio ); var active = Object.keys( data )[0]; var value = 0; if ( 1 === parseInt(field.val()) || active === field.val() ) { radio.removeClass( 'on' ); value = data[Object.keys( data )[1]]; } else { radio.addClass( 'on' ); value = data[Object.keys( data )[0]]; } if ( 'boolean' === typeof( value ) ) { value = value? 1:0; } field.val( value ); }); }; /** * Initialize the wpColorPicker * * @since 3.0.5 */ wpmUi.bind_wp_color_picker = function() { if ( jQuery.fn.wpColorPicker ) { jQuery('.wpmui-color-field').wpColorPicker(); } }; /** * Initialize the wp_media * * @since 3.0.5 */ wpmUi.bind_wp_media = function() { jQuery(".option-wp_media .image-reset").on("click", function( event ){ var container = jQuery(this).closest(".option-wp_media"); jQuery(".filename", container ).html( "" ); jQuery(".image-preview", container ).removeAttr( "src" ); jQuery(".attachment-id", container ).removeAttr("value"); jQuery(this).addClass("disabled"); jQuery('.wp-media-wrapper', container ).addClass('hidden'); }); jQuery('.option-wp_media .button-select-image').on('click', function( event ){ var file_frame; var wp_media_post_id; var container = jQuery(this).closest('.option-wp_media'); var set_to_post_id = jQuery('.attachment-id', container ).val(); event.preventDefault(); // If the media frame already exists, reopen it. if ( file_frame ) { // Set the post ID to what we want file_frame.uploader.uploader.param( 'post_id', set_to_post_id ); // Open frame file_frame.open(); return; } else { // Set the wp.media post id so the uploader grabs the ID we want when initialised wp.media.model.settings.post.id = set_to_post_id; } // Create the media frame. file_frame = wp.media.frames.file_frame = wp.media({ title: 'Select a image to upload', button: { text: 'Use this image', }, multiple: false // Set to true to allow multiple files to be selected }); // When an image is selected, run a callback. file_frame.on( 'select', function( wp_media_post_id ) { // We set multiple to false so only get one image from the uploader var attachment = file_frame.state().get('selection').first().toJSON(); // Do something with attachment.id and/or attachment.url here jQuery('.filename', container).html(attachment.filename); jQuery('.image-preview', container ).attr( 'src', attachment.url ).css( 'width', 'auto' ); jQuery('.attachment-id', container ).val( attachment.id ); jQuery(".image-reset", container).removeClass("disabled"); jQuery('.wp-media-wrapper', container ).removeClass('hidden'); // Restore the main post ID wp.media.model.settings.post.id = wp_media_post_id; }); // Finally, open the modal file_frame.open(); }); // Restore the main ID when the add media button is pressed jQuery( 'a.add_media' ).on( 'click', function( wp_media_post_id ) { wp.media.model.settings.post.id = wp_media_post_id; }); }; // ========== // == Private helper functions ============================================= // ========== /** * Initialize the object * * @since 1.0.0 * @private */ function _init() { if ( null !== _html ) { return; } _doc = jQuery( document ); _html = jQuery( 'html' ); _body = jQuery( 'body' ); _init_boxes(); _init_tabs(); if ( ! _body.hasClass( 'no-auto-init' ) ) { /** * Do the auto-initialization stuff after a short delay, so other * scripts can run first. */ window.setTimeout(function() { wpmUi.upgrade_multiselect(); wpmUi.upgrade_tooltips(); wpmUi.bind_radio_sliders(); wpmUi.bind_wp_color_picker(); wpmUi.bind_wp_media(); }, 20); } wpmUi.binary = new wpmUi.WpmUiBinary(); } /** * Returns the modal overlay object * * @since 1.1.0 * @private */ wpmUi._modal_overlay = function() { if ( null === _modal_overlay ) { _modal_overlay = jQuery( '
' ) .addClass( 'wpmui-overlay' ) .appendTo( _body ); } return _modal_overlay; }; /** * Shows a modal background layer * * @since 1.0.0 * @param string the_class CSS class added to the overlay. * @param string html_classes Additional CSS classes added to the HTML tag. * @private */ wpmUi._make_modal = function( the_class, html_classes ) { var overlay = wpmUi._modal_overlay(); overlay.removeClass().addClass( 'wpmui-overlay' ); if ( the_class ) { overlay.addClass( the_class ); } _body.addClass( 'wpmui-has-overlay' ); _html.addClass( 'wpmui-no-scroll' ); if ( html_classes ) { _html.addClass( html_classes ); } return overlay; }; /** * Closes the modal background layer again. * * @since 1.0.0 * @param string html_classes Additional CSS classes to remove from HTML tag. * @private */ wpmUi._close_modal = function( html_classes ) { _body.removeClass( 'wpmui-has-overlay' ); _html.removeClass( 'wpmui-no-scroll' ); if ( html_classes) { _html.removeClass( html_classes ); } }; /** * Initialize the WordPress-ish accordeon boxes: * Open or close boxes when user clicks the toggle icon. * * @since 1.0.0 */ function _init_boxes() { // Toggle the box state (open/closed) var toggle_box = function toggle_box( ev ) { var box = jQuery( this ).closest( '.wpmui-box' ); ev.preventDefault(); // Don't toggle the box if it is static. if ( box.hasClass( 'static' ) ) { return false; } box.toggleClass( 'closed' ); return false; }; _body.on( 'click', '.wpmui-box > h3', toggle_box ); _body.on( 'click', '.wpmui-box > h3 > .toggle', toggle_box ); } /** * Initialize the WordPress-ish tab navigation: * Change the tab on click. * * @since 1.0.0 */ function _init_tabs() { // Toggle the box state (open/closed) var activate_tab = function activate_tab( ev ) { var tab = jQuery( this ), all_tabs = tab.closest( '.wpmui-tabs' ), content = all_tabs.next( '.wpmui-tab-contents' ), active = all_tabs.find( '.active.tab' ), sel_tab = tab.attr( 'href' ), sel_active = active.attr( 'href' ), content_tab = content.find( sel_tab ), content_active = content.find( sel_active ); // Close previous tab. if ( ! tab.hasClass( 'active' ) ) { active.removeClass( 'active' ); content_active.removeClass( 'active' ); } // Open selected tab. tab.addClass( 'active' ); content_tab.addClass( 'active' ); ev.preventDefault(); return false; }; _body.on( 'click', '.wpmui-tabs .tab', activate_tab ); } // Initialize the object. jQuery(function() { _init(); }); }( window.wpmUi = window.wpmUi || {} )); /*! * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This module provides the WpmUiWindow object which is a smart and easy to use * Pop-up. * * @version 3.0.0 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ (function( wpmUi ) { /*============================*\ ================================ == == == WINDOW == == == ================================ \*============================*/ /** * The next popup ID to use * * @type int * @since 1.1.0 * @internal */ var _next_id = 1; /** * A list of all popups * * @type array * @since 1.1.0 * @internal */ var _all_popups = {}; /** * Returns a list with all currently open popups. * * When a popup is created it is added to the list. * When it is closed (not hidden!) it is removed. * * @since 1.1.0 * @return WpmUiWindow[] */ wpmUi.popups = function() { return _all_popups; }; /** * Popup window. * * @type WpmUiWindow * @since 1.0.0 */ wpmUi.WpmUiWindow = function( _template, _css ) { /** * Backreference to the WpmUiWindow object. * * @since 1.0.0 * @internal */ var _me = this; /** * Stores the state of the window. * * @since 1.0.0 * @internal */ var _visible = false; /** * Defines if a modal background should be visible. * * @since 1.0.0 * @internal */ var _modal = false; /** * Defines if the dialog title should contain a close button. * * @since 1.1.2 * @internal */ var _title_close = true; /** * Defines if clicking in the modal background closes the dialog. * * @since 1.1.2 * @internal */ var _background_close = true; /** * Size of the window. * * @since 1.0.0 * @internal */ var _width = 740; /** * Size of the window. * * @since 1.0.0 * @internal */ var _height = 400; /** * Title of the window. * * @since 1.0.0 * @internal */ var _title = 'Window'; /** * Content of the window. Either a jQuery selector/object or HTML code. * * @since 1.0.0 * @internal */ var _content = ''; /** * Class names to add to the popup window * * @since 1.0.14 * @internal */ var _classes = ''; /** * Opening animation - triggered when .show() is called. * * @since 3.0.0 * @internal */ var _animation_in = ''; /** * Closing animation - triggered when .hide() or .close() is called. * * @since 3.0.0 * @internal */ var _animation_out = ''; /** * Is set to true when new content is assigned to the window. * * @since 1.0.0 * @internal */ var _content_changed = false; /** * Flag is set to true when the window size was changed. * After the window was updated we will additionally check if it is * visible in the current viewport. * * @since 1.0.0 * @internal */ var _need_check_size = false; /** * Position of the popup, can contain one or more of these flags: * 'none', 'left', 'right', 'top', 'bottom' * * @since 2.0.0 * @internal */ var _snap = { top: false, left: false, right: false, bottom: false }; /** * Define closing-behavior of the popup to be a slide-in: * 'none', 'up', 'down' * * @since 2.0.0 * @internal */ var _slidein = 'none'; /** * Called after the window is made visible. * * @type Callback function. * @since 1.0.0 * @internal */ var _onshow = null; /** * Called after the window was hidden. * * @type Callback function. * @since 1.0.0 * @internal */ var _onhide = null; /** * Called after the window was hidden + destroyed. * * @type Callback function. * @since 1.0.0 * @internal */ var _onclose = null; /** * Custom resize handler. * * @type Callback function. * @since 1.0.0 * @internal */ var _onresize = null; /** * The popup container element. This is the outermost DOM element of the * popup. The _wnd element might contain additional data, such as a * CSS ' ).prependTo( _wnd ); } // Add default selector class to the base element if the class is missing. if ( ! _wnd.filter( '.popup' ).length && ! _wnd.find( '.popup' ).length ) { _wnd.addClass( 'popup' ); } // See comments in top section for difference between _wnd and _popup. if ( _wnd.hasClass( 'popup' ) ) { _popup = _wnd; } else { _popup = _wnd.find( '.popup' ).first(); } // Add supported content modification methods. if ( ! _popup.find( '.popup-title' ).length ) { _me.title = function() { return _me; }; } if ( ! _popup.find( '.popup-content' ).length ) { _me.content = function() { return _me; }; } if ( ! _popup.find( '.slidein-toggle' ).length ) { if ( _popup.find( '.popup-title .popup-close' ).length ) { _popup.find( '.popup-title .popup-close' ).addClass( 'slidein-toggle' ); } else if ( _popup.find( '.popup-title' ).length ) { _popup.find( '.popup-title' ).addClass( 'slidein-toggle' ); } else { _popup.prepend( '' ); } } _visible = false; } /** * Add event listeners. * * @since 1.0.0 * @internal */ function _hook() { if ( _popup && ! _popup.data( 'hooked' ) ) { _popup.data( 'hooked', true ); _popup.on( 'click', '.popup-close', _click_close ); _popup.on( 'click', '.popup-title', _click_title ); _popup.on( 'click', '.close', _me.hide ); _popup.on( 'click', '.destroy', _me.destroy ); _popup.on( 'click', 'thead .check-column :checkbox', _toggle_checkboxes ); _popup.on( 'click', 'tfoot .check-column :checkbox', _toggle_checkboxes ); _popup.on( 'click', 'tbody .check-column :checkbox', _check_checkboxes ); jQuery( window ).on( 'resize', _resize_and_move ); if ( jQuery().draggable !== undefined ) { _popup.draggable({ containment: jQuery( 'body' ), scroll: false, handle: '.popup-title' }); } } } /** * Remove all event listeners. * * @since 1.0.0 * @internal */ function _unhook() { if ( _popup && _popup.data( 'hooked' ) ) { _popup.data( 'hooked', false ); _popup.off( 'click', '.popup-close', _click_close ); _popup.off( 'click', '.popup-title', _click_title ); _popup.off( 'click', '.close', _me.hide ); _popup.off( 'click', '.check-column :checkbox', _toggle_checkboxes ); jQuery( window ).off( 'resize', _resize_and_move ); } } /** * Updates the size and position of the window. * * @since 1.0.0 * @internal */ function _update_window() { if ( ! _wnd ) { return false; } if ( ! _popup ) { return false; } var _overlay = wpmUi._modal_overlay(), _el_title = _popup.find( '.popup-title' ), _el_content = _popup.find( '.popup-content' ), _title_span = _el_title.find( '.the-title' ); // Window title. if ( _template && ! _title_span.length ) { _title_span = _el_title; } _title_span.html( _title ); if ( _title_close ) { _popup.removeClass( 'no-close' ); } else { _popup.addClass( 'no-close' ); } // Display a copy of the specified content. if ( _content_changed ) { // Remove the current button bar. _wnd.find( '.buttons' ).remove(); _popup.addClass( 'no-buttons' ); // Update the content. if ( _content instanceof jQuery ) { // _content is a jQuery element. _el_content.empty().append( _content ); } else { // _content is a HTML string. _el_content.html( _content ); } // Move the buttons out of the content area. var buttons = _el_content.find( '.buttons' ); if ( buttons.length ) { buttons.appendTo( _popup ); _popup.removeClass( 'no-buttons' ); } // Add custom class to the popup. _popup.addClass( _classes ); _content_changed = false; } if ( _overlay instanceof jQuery ) { _overlay.off( 'click', _modal_close ); } // Show or hide the window and modal background. if ( _visible ) { _show_the_popup(); if ( _modal ) { wpmUi._make_modal( '', 'has-popup' ); } if ( _background_close ) { _overlay.on( 'click', _modal_close ); } if ( _need_check_size ) { _need_check_size = false; _resize_and_move(); } // Allow the browser to display + render the title first. window.setTimeout(function() { if ( 'down' === _slidein ) { _el_content.css({ bottom: _el_title.height() + 1 }); } else { _el_content.css({ top: _el_title.height() + 1 }); } if ( ! _height ) { window.setTimeout(_resize_and_move, 5); } }, 5); } else { _hide_the_popup(); var wnd, remove_modal = true; for ( wnd in _all_popups ) { if ( _all_popups[wnd] === _me ) { continue; } if ( ! _all_popups[wnd].is_visible() ) { continue; } if ( _all_popups[wnd].is_modal() ) { remove_modal = false; break; } } if ( remove_modal ) { wpmUi._close_modal( 'has-popup no-scroll can-scroll' ); } } // Adjust the close-icon according to slide-in state. var icon = _popup.find('.popup-close .dashicons'); if ( icon.length ) { if ( 'none' === _slidein ) { icon.removeClass().addClass('dashicons dashicons-no-alt'); } else { if ( 'collapsed' === _slidein_status ) { icon.removeClass().addClass('dashicons').addClass(_icon_collapse); } else if ( 'expanded' === _slidein_status ) { icon.removeClass().addClass('dashicons').addClass(_icon_expand); } } } // Remove all "slidein-..." classes from the popup. _popup[0].className = _popup[0].className.replace(/\sslidein-.+?\b/g, ''); if ( 'none' === _slidein ) { _popup.removeClass( 'slidein' ); _popup.removeClass( 'wdev-slidein' ); _popup.addClass( 'wdev-window' ); } else { _popup.addClass( 'slidein' ); _popup.addClass( 'slidein-' + _slidein ); _popup.addClass( 'slidein-' + _slidein_status ); _popup.addClass( 'wdev-slidein' ); _popup.removeClass( 'wdev-window' ); } if ( _snap.top ) { _popup.addClass('snap-top'); } if ( _snap.left ) { _popup.addClass('snap-left'); } if ( _snap.right ) { _popup.addClass('snap-right'); } if ( _snap.bottom ) { _popup.addClass('snap-bottom'); } } /** * Displays the popup while considering the slidein option * * @since 2.0.0 */ function _show_the_popup() { _popup.show(); // We have a collapsed slide-in. Animate it. var have_slidein = 'none' !== _slidein, can_expand = ('collapsed' === _slidein_status); if ( have_slidein ) { // First time the slide in is opened? Animate it. if ( ! can_expand && 'none' === _slidein_status ) { var styles = {}; _slidein_status = 'collapsed'; styles = _get_popup_size( styles ); styles = _get_popup_pos( styles ); _popup.css(styles); can_expand = true; } if ( can_expand ) { _slidein_status = 'expanding'; _resize_and_move( _slidein_speed ); _need_check_size = false; window.setTimeout(function() { _slidein_status = 'expanded'; _update_window(); window.setTimeout( _resize_and_move, 10 ); }, _slidein_speed); } } } /** * Hides the popup while considering the slidein option to either * completely hide the popup or to keep the title visible. * * @since 2.0.0 */ function _hide_the_popup() { switch ( _slidein ) { case 'up': case 'down': var can_collapse = ('expanded' === _slidein_status); if ( can_collapse ) { var wnd = jQuery( window ), window_height = wnd.innerHeight(), popup_pos = _popup.position(), styles = {}; // First position the popup using the `top` property only. styles['margin-top'] = 0; styles['margin-bottom'] = 0; styles['bottom'] = 'auto'; styles['top'] = popup_pos.top; _popup.css( styles ); // Calculate the destination position of the popup and animate. _slidein_status = 'collapsing'; styles = _get_popup_pos(); _popup.animate(styles, _slidein_speed, function() { _slidein_status = 'collapsed'; _update_window(); window.setTimeout( _resize_and_move, 10 ); }); } break; default: _popup.hide(); break; } } /** * When the popup has slide-in behavior then the close button acts as * a toggle-visiblity button. * * @since 1.0.0 */ function _click_close( ev ) { if ( 'none' === _slidein ) { _me.hide(); } else { if ( _visible ) { _me.hide(); } else { _me.show(); } } ev.stopPropagation(); } /** * Slide-ins also react when the user clicks the title. * * @since 1.0.0 */ function _click_title( ev ) { if ( 'none' !== _slidein ) { if ( _visible ) { _me.hide(); } else { _me.show(); } ev.stopPropagation(); } } /** * Closes the window when user clicks on the modal overlay * * @since 1.0.0 * @internal */ function _modal_close() { var _overlay = wpmUi._modal_overlay(); if ( ! _wnd ) { return false; } if ( ! _overlay instanceof jQuery ) { return false; } _overlay.off( 'click', _modal_close ); _me.hide(); } /** * Makes sure that the popup window is not bigger than the viewport. * * @since 1.0.0 * @internal */ function _resize_and_move(duration) { if ( ! _popup ) { return false; } if ( typeof _onresize === 'function' ) { _onresize.apply( _me, [ _me.$() ] ); } else { var styles = {}; styles = _get_popup_size( styles ); styles = _get_popup_pos( styles ); // Size and position. if ( ! isNaN( duration ) && duration > 0 ) { _popup.animate(styles, duration); } else { _popup.css(styles); } } } /** * A helper function for the resize/slidein functions that returns the * actual size (width and height) of the popup. * * @since 1.0.0 * @return object */ function _get_popup_size( size ) { var wnd = jQuery( window ), window_width = wnd.innerWidth(), window_height = wnd.innerHeight(), border_x = parseInt( _popup.css('border-left-width') ) + parseInt( _popup.css('border-right-width') ), border_y = parseInt( _popup.css('border-top-width') ) + parseInt( _popup.css('border-bottom-width') ), real_width = _width + border_x, real_height = _height + border_y; if ( 'object' !== typeof size ) { size = {}; } // Calculate the width and height ------------------------------ if ( ! _height || ! _width ) { var get_width = ! _width, get_height = ! _height, new_width = 0, new_height = 0; _popup.find('*').each(function() { var el = jQuery( this ), pos = el.position(), el_width = el.outerWidth() + pos.left, el_height = el.outerHeight() + pos.top; if ( get_width && new_width < el_width ) { new_width = el_width; } if ( get_height && new_height < el_height ) { new_height = el_height; } }); if ( get_width ) { real_width = new_width + border_x; } if ( get_height ) { real_height = new_height + border_y; } } if ( _snap.left && _snap.right ) { // Snap to 2 sides: full width. size['width'] = window_width - border_x; } else { if ( window_width < real_width ) { real_width = window_width; } size['width'] = real_width - border_x; } if ( _snap.top && _snap.bottom ) { // Snap to 2 sides: full height. size['height'] = window_height - border_y; } else { if ( window_height < real_height ) { real_height = window_height; } size['height'] = real_height - border_y; } return size; } /** * Helper function used for positioning the popup, it will return the * x/y positioning styles. * * @since 1.0.0 * @return object */ function _get_popup_pos( styles ) { var wnd = jQuery( window ), el_toggle = _popup.find( '.slidein-toggle' ), window_width = wnd.innerWidth(), window_height = wnd.innerHeight(), border_x = parseInt( _popup.css('border-left-width') ) + parseInt( _popup.css('border-right-width') ), border_y = parseInt( _popup.css('border-top-width') ) + parseInt( _popup.css('border-bottom-width') ); if ( 'object' !== typeof styles ) { styles = {}; } if ( undefined === styles['width'] || undefined === styles['height'] ) { styles = _get_popup_size( styles ); } // Position X: (empty) / left / right / left + right if ( ! _snap.left && ! _snap.right ) { // Center X. styles['left'] = (window_width - styles['width']) / 2; } else if ( _snap.left && _snap.right ) { // Snap to 2 sides. styles['left'] = 0; } else { // Snap to one side. if ( _snap.left ) { styles['left'] = 0; } if ( _snap.right ) { styles['left'] = window_width - styles['width'] - border_x; } } if ( 'none' !== _slidein && ('collapsed' === _slidein_status || 'collapsing' === _slidein_status) ) { // We have a collapsed slide-in. Y-position is fixed. if ( 'down' === _slidein ) { styles['top'] = el_toggle.outerHeight() - styles['height']; } else { styles['top'] = window_height - el_toggle.outerHeight(); } } else { // Position Y: (empty) / top / bottom / top + bottom if ( ! _snap.top && ! _snap.bottom ) { // Center Y. styles['top'] = (window_height - styles['height']) / 2; } else if ( _snap.top && _snap.bottom ) { // Snap to 2 sides. styles['top'] = 0; } else { // Snap to one side. if ( _snap.top ) { styles['top'] = 0; } if ( _snap.bottom ) { styles['top'] = window_height - styles['height'] - border_y; } } } styles['margin-top'] = 0; styles['margin-bottom'] = 0; styles['bottom'] = 'auto'; styles['right'] = 'auto'; if ( undefined === styles['top'] ) { styles['top'] = 'auto'; } if ( undefined === styles['left'] ) { styles['left'] = 'auto'; } return styles; } /** * Toggle all checkboxes in a WordPress-ish table when the user clicks * the check-all checkbox in the header or footer. * * @since 1.0.0 * @internal */ function _toggle_checkboxes( ev ) { var chk = jQuery( this ), c = chk.prop( 'checked' ), toggle = (ev.shiftKey); // Toggle checkboxes inside the table body chk .closest( 'table' ) .children( 'tbody, thead, tfoot' ) .filter( ':visible' ) .children() .children( '.check-column' ) .find( ':checkbox' ) .prop( 'checked', c); } /** * Toggle the check-all checkexbox in the header/footer in a * WordPress-ish table when a single checkbox in the body is changed. * * @since 1.0.0 */ function _check_checkboxes( ev ) { var chk = jQuery( this ), unchecked = chk .closest( 'tbody' ) .find( ':checkbox' ) .filter( ':visible' ) .not( ':checked' ); chk .closest( 'table' ) .children( 'thead, tfoot' ) .find( ':checkbox' ) .prop( 'checked', ( 0 === unchecked.length ) ); return true; } // Initialize the popup window. _me = this; _init(); }; /* ** End: WpmUiWindow ** */ }( window.wpmUi = window.wpmUi || {} )); /*! * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This module provides the WpmUiProgress object which is a smart and easy to use * Pop-up. * * @version 2.0.2 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global XMLHttpRequest:false */ (function( wpmUi ) { /*==============================*\ ================================== == == == PROGRESS == == == ================================== \*==============================*/ /** * The progress bar element. * * @type WpmUiProgress * @since 2.0.2 */ wpmUi.WpmUiProgress = function() { /** * Backreference to the WpmUiWindow object. * * @since 2.0.2 * @internal */ var _me = this; /** * Current value of the progress bar. * * @since 2.0.2 * @internal */ var _current = 0; /** * Max value of the progress bar. * * @since 2.0.2 * @internal */ var _max = 100; /** * The label text * * @since 2.0.2 * @internal */ var _label = ''; /** * The wrapper around the progress bar elements. * * @since 2.0.2 * @internal */ var _el = null; /** * The progress bar. * * @since 2.0.2 * @internal */ var _el_bar = null; /** * The progress bar full width indicator. * * @since 2.0.2 * @internal */ var _el_full = null; /** * The progress bar title. * * @since 2.0.2 * @internal */ var _el_label = null; /** * Label that displays the current progress percent value. * * @since 2.0.2 * @internal */ var _el_percent = null; /** * Change the value of the progress bar. * * @since 2.0.2 * @api */ this.value = function value( val ) { if ( ! isNaN( val ) ) { _current = parseInt( val ); _update(); } return _me; }; /** * Set the max value of the progess bar. * * @since 2.0.2 * @api */ this.max = function max( val ) { if ( ! isNaN( val ) ) { _max = parseInt( val ); _update(); } return _me; }; /** * Set the contents of the label. * * @since 2.0.2 * @api */ this.label = function label( val ) { _label = val; _update(); return _me; }; /** * Adds an event handler to the element. * * @since 2.0.1 */ this.on = function on( event, selector, callback ) { _el.on( event, selector, callback ); return _me; }; /** * Removes an event handler from the element. * * @since 2.0.1 */ this.off = function off( event, selector, callback ) { _el.off( event, selector, callback ); return _me; }; /** * Returns the jQuery object of the main element * * @since 1.0.0 */ this.$ = function $() { return _el; }; // ============================== // == Private functions ========= /** * Create the DOM elements for the window. * * @since 2.0.2 * @internal */ function _init() { _max = 100; _current = 0; _el = jQuery( '
' ); _el_full = jQuery( '
' ); _el_bar = jQuery( '
' ); _el_label = jQuery( '
' ); _el_percent = jQuery( '
' ); // Attach the window to the current page. _el_bar.appendTo( _el_full ); _el_percent.appendTo( _el_full ); _el_full.appendTo( _el ); _el_label.appendTo( _el ); _update(); } /** * Updates the progress bar * * @since 2.0.2 */ function _update() { var percent = _current / _max * 100; if ( percent < 0 ) { percent = 0; } if ( percent > 100 ) { percent = 100; } _el_bar.width( percent + '%' ); _el_percent.text( parseInt( percent ) + ' %' ); if ( _label && _label.length ) { _el_label.html( _label ); _el_label.show(); } else { _el_label.hide(); } } // Initialize the progress bar. _me = this; _init(); }; /* ** End: WpmUiProgress ** */ }( window.wpmUi = window.wpmUi || {} )); /*! * WPMU Dev UI library * (Rheinard Korf, Philipp Stracker for WPMU Dev) * * This module adds a WordPress-like hook system in javascript that makes it * easier to expose actions/filters to other developers. * * ---------------------------------------------------------------------------- * @file A WordPress-like hook system for JavaScript. * * This file demonstrates a simple hook system for JavaScript based on the hook * system in WordPress. The purpose of this is to make your code extensible and * allowing other developers to hook into your code with their own callbacks. * * There are other ways to do this, but this will feel right at home for * WordPress developers. * * @author Rheinard Korf * @license GPL2 (https://www.gnu.org/licenses/gpl-2.0.html) * * @requires underscore.js (http://underscorejs.org/) * ---------------------------------------------------------------------------- * * @version 3.0.0 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ (function( wpmUi ) { if (wpmUi.add_action) { return; } /*===========================*\ =============================== == == == HOOKS == == == =============================== \*===========================*/ /** * All actions/filters are stored in the filters object. * * In WordPress actions and filters are synonyms - only difference is, that * a filter will return a value, while an action does not return a value. */ wpmUi.filters = wpmUi.filters || {}; /** * Add a new Action callback to wpmUi.filters * * This function is an alias to wpmUi.add_filter * * @param tag The tag specified by do_action() * @param callback The callback function to call when do_action() is called * @param priority The order in which to call the callbacks. Default: 10 (like WordPress) */ wpmUi.add_action = function( tag, callback, priority ) { wpmUi.add_filter( tag, callback, priority ); }; /** * Add a new Filter callback to wpmUi.filters * * @param tag The tag specified by apply_filters() * @param callback The callback function to call when apply_filters() is called * @param priority Priority of filter to apply. Default: 10 (like WordPress) */ wpmUi.add_filter = function( tag, callback, priority ) { if( undefined === callback ) { return; } if( undefined === priority ) { priority = 10; } // If the tag doesn't exist, create it. wpmUi.filters[ tag ] = wpmUi.filters[ tag ] || []; wpmUi.filters[ tag ].push( { priority: priority, callback: callback } ); }; /** * Remove an Action callback from wpmUi.filters * * This function is an Alias to wpmUi.remove_filter * * Must be the exact same callback signature. * Warning: Anonymous functions can not be removed. * @param tag The tag specified by do_action() * @param callback The callback function to remove */ wpmUi.remove_action = function( tag, callback ) { wpmUi.remove_filter( tag, callback ); }; /** * Remove a Filter callback from wpmUi.filters * * Must be the exact same callback signature. * Warning: Anonymous functions can not be removed. * @param tag The tag specified by apply_filters() * @param callback The callback function to remove */ wpmUi.remove_filter = function( tag, callback ) { wpmUi.filters[ tag ] = wpmUi.filters[ tag ] || []; wpmUi.filters[ tag ].forEach( function( filter, i ) { if( filter.callback === callback ) { wpmUi.filters[ tag ].splice(i, 1); } } ); }; /** * Remove all Action callbacks for the specified tag. * * This function is an Alias to wpmUi.remove_all_filters * * @param tag The tag specified by do_action() * @param priority Only remove actions with the specified priority */ wpmUi.remove_all_actions = function( tag, priority ) { wpmUi.remove_all_filters( tag, priority ); }; /** * Remove all Filter callbacks for the specified tag * * @param tag The tag specified by do_action() * @param priority Only remove actions with the specified priority */ wpmUi.remove_all_filters = function( tag, priority ) { wpmUi.filters[ tag ] = wpmUi.filters[ tag ] || []; if ( undefined === priority ) { wpmUi.filters[ tag ] = []; } else { wpmUi.filters[ tag ].forEach( function( filter, i ) { if( filter.priority === priority ) { wpmUi.filters[ tag ].splice(i, 1); } } ); } }; /** * Calls actions that are stored in wpmUi.actions for a specific tag or nothing * if there are no actions to call. * * @param tag A registered tag in Hook.actions * @options Optional JavaScript object to pass to the callbacks */ wpmUi.do_action = function( tag, options ) { var actions = []; if( undefined !== wpmUi.filters[ tag ] && wpmUi.filters[ tag ].length > 0 ) { wpmUi.filters[ tag ].forEach( function( hook ) { actions[ hook.priority ] = actions[ hook.priority ] || []; actions[ hook.priority ].push( hook.callback ); } ); actions.forEach( function( hooks ) { hooks.forEach( function( callback ) { callback( options ); } ); } ); } }; /** * Calls filters that are stored in wpmUi.filters for a specific tag or return * original value if no filters exist. * * @param tag A registered tag in Hook.filters * @options Optional JavaScript object to pass to the callbacks */ wpmUi.apply_filters = function( tag, value, options ) { var filters = []; if( undefined !== wpmUi.filters[ tag ] && wpmUi.filters[ tag ].length > 0 ) { wpmUi.filters[ tag ].forEach( function( hook ) { filters[ hook.priority ] = filters[ hook.priority ] || []; filters[ hook.priority ].push( hook.callback ); } ); filters.forEach( function( hooks ) { hooks.forEach( function( callback ) { value = callback( value, options ); } ); } ); } return value; }; /* ** End: Hooks integration in wpmUi ** */ }( window.wpmUi = window.wpmUi || {} )); /*! * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This module provides the WpmUiAjaxData object that is used to serialize whole * forms and submit then via Ajax. Even file uploads are possibly with this * object. * * @version 1.0.0 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global XMLHttpRequest:false */ (function( wpmUi ) { /*===============================*\ =================================== == == == AJAX-DATA == == == =================================== \*===============================*/ /** * Form Data object that is used to load or submit data via ajax. * * @type WpmUiAjaxData * @since 1.0.0 */ wpmUi.WpmUiAjaxData = function( _ajaxurl, _default_action ) { /** * Backreference to the WpmUiAjaxData object. * * @since 1.0.0 * @private */ var _me = this; /** * An invisible iframe with name "wpmui_void", created by this object. * * @type jQuery object * @since 1.0.0 * @private */ var _void_frame = null; /** * Data that is sent to the server. * * @type Object * @since 1.0.0 * @private */ var _data = {}; /** * Progress handler during upload/download. * Signature function( progress ) * - progress .. Percentage complete or "-1" for "unknown" * * @type Callback function. * @since 1.0.0 * @private */ var _onprogress = null; /** * Receives the server response after ajax call is finished. * Signature: function( response, okay, xhr ) * - response .. Data received from the server. * - okay .. bool; false means an error occured. * - xhr .. XMLHttpRequest object. * * @type Callback function. * @since 1.0.0 * @private */ var _ondone = null; /** * Feature detection: HTML5 upload/download progress events. * * @type bool * @since 1.0.0 * @private */ var _support_progress = false; /** * Feature detection: HTML5 file API. * * @type bool * @since 1.0.0 * @private */ var _support_file_api = false; /** * Feature detection: HTML5 FormData object. * * @type bool * @since 1.0.0 * @private */ var _support_form_data = false; // ============================== // == Public functions ========== /** * Define the data that is sent to the server. * * @since 1.0.0 * @param mixed Data that is sent to the server. Either: * - Normal javascript object interpreted as key/value pairs. * - A jQuery object of the whole form element * - An URL-encoded string ("key=val&key2=val2") */ this.data = function data( obj ) { _data = obj; return _me; }; /** * Returns an ajax-compatible version of the data object passed in. * This data object can be any of the values that is recognized by the * data() method above. * * @since 1.0.7 * @param mixed obj * @return Object */ this.extract_data = function extract_data( obj ) { _data = obj; return _get_data( undefined, false ); }; /** * Define the upload/download progress callback. * * @since 1.0.0 * @param function callback Progress handler. */ this.onprogress = function onprogress( callback ) { _onprogress = callback; return _me; }; /** * Callback that receives the server response of the ajax request. * * @since 1.0.0 * @param function callback */ this.ondone = function ondone( callback ) { _ondone = callback; return _me; }; /** * Reset all configurations. * * @since 1.0.0 */ this.reset = function reset() { _data = {}; _onprogress = null; _ondone = null; return _me; }; /** * Submit the specified data to the ajaxurl and pass the response to a * callback function. Server response can be any string. * * @since 1.0.0 * @param action string The ajax action to execute. */ this.load_text = function load_text( action ) { action = action || _default_action; _load( action, 'text' ); return _me; }; /** * Submit the specified data to the ajaxurl and pass the response to a * callback function. Server response must be a valid JSON string! * * @since 1.0.0 * @param action string The ajax action to execute. */ this.load_json = function load_json( action ) { action = action || _default_action; _load( action, 'json' ); return _me; }; /** * Submit the specified data to the ajaxurl and let the browser process * the response. * Use this function for example when the server returns a file that * should be downloaded. * * @since 1.0.0 * @param string target Optional. The frame to target. * @param string action Optional. The ajax action to execute. */ this.load_http = function load_http( target, action ) { target = target || 'wpmui_void'; action = action || _default_action; _form_submit( action, target ); return _me; }; // ============================== // == Private functions ========= /** * Initialize the formdata object * * @since 1.0.0 * @private */ function _init() { // Initialize missing Ajax-URL: Use WordPress ajaxurl if possible. if ( ! _ajaxurl && typeof window.ajaxurl === 'string') { _ajaxurl = window.ajaxurl; } // Initialize an invisible iframe for file downloads. _void_frame = jQuery( 'body' ).find( '#wpmui_void' ); if ( ! _void_frame.length ) { /** * Create the invisible iframe. * Usage:
...
*/ _void_frame = jQuery('') .attr( 'name', 'wpmui_void' ) .attr( 'id', 'wpmui_void' ) .css({ 'width': 1, 'height': 1, 'display': 'none', 'visibility': 'hidden', 'position': 'absolute', 'left': -1000, 'top': -1000 }) .hide() .appendTo( jQuery( 'body' ) ); } // Find out what HTML5 feature we can use. _what_is_supported(); // Reset all configurations. _me.reset(); } /** * Feature detection * * @since 1.0.0 * @private * @return bool */ function _what_is_supported() { var inp = document.createElement( 'INPUT' ); var xhr = new XMLHttpRequest(); // HTML 5 files API inp.type = 'file'; _support_file_api = 'files' in inp; // HTML5 ajax upload "progress" events _support_progress = !! (xhr && ( 'upload' in xhr ) && ( 'onprogress' in xhr.upload )); // HTML5 FormData object _support_form_data = !! window.FormData; } /** * Creates the XMLHttpReqest object used for the jQuery ajax calls. * * @since 1.0.0 * @private * @return XMLHttpRequest */ function _create_xhr() { var xhr = new window.XMLHttpRequest(); if ( _support_progress ) { // Upload progress xhr.upload.addEventListener( "progress", function( evt ) { if ( evt.lengthComputable ) { var percentComplete = evt.loaded / evt.total; _call_progress( percentComplete ); } else { _call_progress( -1 ); } }, false ); // Download progress xhr.addEventListener( "progress", function( evt ) { if ( evt.lengthComputable ) { var percentComplete = evt.loaded / evt.total; _call_progress( percentComplete ); } else { _call_progress( -1 ); } }, false ); } return xhr; } /** * Calls the "onprogress" callback * * @since 1.0.0 * @private * @param float value Percentage complete / -1 for "unknown" */ function _call_progress( value ) { if ( _support_progress && typeof _onprogress === 'function' ) { _onprogress( value ); } } /** * Calls the "onprogress" callback * * @since 1.0.0 * @private * @param response mixed The parsed server response. * @param okay bool False means there was an error. * @param xhr XMLHttpRequest */ function _call_done( response, okay, xhr ) { _call_progress( 100 ); if ( typeof _ondone === 'function' ) { _ondone( response, okay, xhr ); } } /** * Returns data object containing the data to submit. * The data object is either a plain javascript object or a FormData * object; this depends on the parameter "use_formdata" and browser- * support for FormData. * * @since 1.0.0 * @private * @param string action * @param boolean use_formdata If set to true then we return FormData * when the browser supports it. If support is missing or * use_formdata is not true then the response is an object. * @return Object or FormData */ function _get_data( action, use_formdata ) { var data = {}; use_formdata = use_formdata && _support_form_data; if ( _data instanceof jQuery ) { // ===== CONVERT
to data object. // WP-Editor needs some special attention first: _data.find( '.wp-editor-area' ).each(function() { var id = jQuery( this ).attr( 'id' ), sel = '#wp-' + id + '-wrap', container = jQuery( sel ), editor = window.tinyMCE.get( id ); if ( editor && container.hasClass( 'tmce-active' ) ) { editor.save(); // Update the textarea content. } }); if ( use_formdata ) { data = new window.FormData( _data[0] ); } else { data = {}; // Convert a jQuery object to data object. // ----- Start: Convert FORM to OBJECT // http://stackoverflow.com/a/8407771/313501 var push_counters = {}, patterns = { "validate": /^[a-zA-Z_][a-zA-Z0-9_-]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/, "key": /[a-zA-Z0-9_-]+|(?=\[\])/g, "push": /^$/, "fixed": /^\d+$/, "named": /^[a-zA-Z0-9_-]+$/ }; var _build = function( base, key, value ) { base[key] = value; return base; }; var _push_counter = function( key ) { if ( push_counters[key] === undefined ) { push_counters[key] = 0; } return push_counters[key]++; }; jQuery.each( _data.serializeArray(), function() { // skip invalid keys if ( ! patterns.validate.test( this.name ) ) { return; } var k, keys = this.name.match(patterns.key), merge = this.value, reverse_key = this.name; while ( ( k = keys.pop() ) !== undefined ) { // adjust reverse_key reverse_key = reverse_key.replace( new RegExp( "\\[" + k + "\\]$" ), '' ); // push if ( k.match( patterns.push ) ) { merge = _build( [], _push_counter( reverse_key ), merge ); } // fixed else if ( k.match( patterns.fixed ) ) { merge = _build([], k, merge); } // named else if ( k.match( patterns.named ) ) { merge = _build( {}, k, merge ); } } data = jQuery.extend( true, data, merge ); }); // ----- End: Convert FORM to OBJECT // Add file fields _data.find( 'input[type=file]' ).each( function() { var me = jQuery( this ), name = me.attr( 'name' ), inp = me.clone( true )[0]; data[':files'] = data[':files'] || {}; data[':files'][name] = inp; }); } } else if ( typeof _data === 'string' ) { // ===== PARSE STRING to data object. var temp = _data.split( '&' ).map( function (kv) { return kv.split( '=', 2 ); }); data = ( use_formdata ? new window.FormData() : {} ); for ( var ind in temp ) { var name = decodeURI( temp[ind][0] ), val = decodeURI( temp[ind][1] ); if ( use_formdata ) { data.append( name, val ); } else { if ( undefined !== data[name] ) { if ( 'object' !== typeof data[name] ) { data[name] = [ data[name] ]; } data[name].push( val ); } else { data[name] = val; } } } } else if ( typeof _data === 'object' ) { // ===== USE OBJECT to populate data object. if ( use_formdata ) { data = new window.FormData(); for ( var data_key in _data ) { if ( _data.hasOwnProperty( data_key ) ) { data.append( data_key, _data[data_key] ); } } } else { data = jQuery.extend( {}, _data ); } } if ( undefined !== action ) { if ( data instanceof window.FormData ) { data.append('action', action); } else { data.action = action; } } return data; } /** * Submit the data. * * @since 1.0.0 * @private * @param string action The ajax action to execute. */ function _load( action, type ) { var data = _get_data( action, true ), ajax_args = {}, response = null, okay = false; if ( type !== 'json' ) { type = 'text'; } _call_progress( -1 ); ajax_args = { url: _ajaxurl, type: 'POST', dataType: 'html', data: data, xhr: _create_xhr, success: function( resp, status, xhr ) { okay = true; response = resp; if ( 'json' === type ) { try { response = jQuery.parseJSON( resp ); } catch(ignore) { response = { 'status': 'ERR', 'data': resp }; } } }, error: function( xhr, status, error ) { okay = false; response = error; }, complete: function( xhr, status ) { if ( response instanceof Object && 'ERR' === response.status ) { okay = false; } _call_done( response, okay, xhr ); } }; if ( data instanceof window.FormData ) { ajax_args.processData = false; // tell jQuery not to process the data ajax_args.contentType = false; // tell jQuery not to set contentType } jQuery.ajax(ajax_args); } /** * Send data via a normal form submit targeted at the invisible iframe. * * @since 1.0.0 * @private * @param string action The ajax action to execute. * @param string target The frame to refresh. */ function _form_submit( action, target ) { var data = _get_data( action, false ), form = jQuery( '
' ), ajax_action = ''; // Append all data fields to the form. for ( var name in data ) { if ( data.hasOwnProperty( name ) ) { if ( name === ':files' ) { for ( var file in data[name] ) { var inp = data[name][file]; form.append( inp ); } } else if ( name === 'action') { ajax_action = name + '=' + data[name].toString(); } else { jQuery('') .attr( 'name', name ) .attr( 'value', data[name] ) .appendTo( form ); } } } if ( _ajaxurl.indexOf( '?' ) === -1 ) { ajax_action = '?' + ajax_action; } else { ajax_action = '&' + ajax_action; } // Set correct form properties. form.attr( 'action', _ajaxurl + ajax_action ) .attr( 'method', 'POST' ) .attr( 'enctype', 'multipart/form-data' ) .attr( 'target', target ) .hide() .appendTo( jQuery( 'body' ) ); // Submit the form. form.submit(); } // Initialize the formdata object _me = this; _init(); }; /* ** End: WpmUiAjaxData ** */ }( window.wpmUi = window.wpmUi || {} )); /*! * WPMU Dev UI library * (Philipp Stracker for WPMU Dev) * * This module provides the WpmUiBinary object that is used to * serialize/deserialize data in base64. * * @version 1.0.0 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global XMLHttpRequest:false */ (function( wpmUi ) { /*===============================*\ =================================== == == == UTF8-DATA == == == =================================== \*===============================*/ /** * Handles conversions of binary <-> text. * * @type WpmUiBinary * @since 1.0.0 */ wpmUi.WpmUiBinary = function() { var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; wpmUi.WpmUiBinary.utf8_encode = function utf8_encode( string ) { if ( typeof string !== 'string' ) { return string; } else { string = string.replace(/\r\n/g, "\n"); } var output = '', i = 0, charCode; for ( i; i < string.length; i++ ) { charCode = string.charCodeAt(i); if ( charCode < 128 ) { output += String.fromCharCode( charCode ); } else if ( (charCode > 127) && (charCode < 2048) ) { output += String.fromCharCode( (charCode >> 6) | 192 ); output += String.fromCharCode( (charCode & 63) | 128 ); } else { output += String.fromCharCode( (charCode >> 12) | 224 ); output += String.fromCharCode( ((charCode >> 6) & 63) | 128 ); output += String.fromCharCode( (charCode & 63) | 128 ); } } return output; }; wpmUi.WpmUiBinary.utf8_decode = function utf8_decode( string ) { if ( typeof string !== 'string' ) { return string; } var output = '', i = 0, charCode = 0; while ( i < string.length ) { charCode = string.charCodeAt(i); if ( charCode < 128 ) { output += String.fromCharCode( charCode ); i += 1; } else if ( (charCode > 191) && (charCode < 224) ) { output += String.fromCharCode(((charCode & 31) << 6) | (string.charCodeAt(i + 1) & 63)); i += 2; } else { output += String.fromCharCode(((charCode & 15) << 12) | ((string.charCodeAt(i + 1) & 63) << 6) | (string.charCodeAt(i + 2) & 63)); i += 3; } } return output; }; /** * Converts a utf-8 string into an base64 encoded string * * @since 1.0.15 * @param string input A string with any encoding. * @return string */ wpmUi.WpmUiBinary.base64_encode = function base64_encode( input ) { if ( typeof input !== 'string' ) { return input; } else { input = wpmUi.WpmUiBinary.utf8_encode( input ); } var output = '', a, b, c, d, e, f, g, i = 0; while ( i < input.length ) { a = input.charCodeAt(i++); b = input.charCodeAt(i++); c = input.charCodeAt(i++); d = a >> 2; e = ((a & 3) << 4) | (b >> 4); f = ((b & 15) << 2) | (c >> 6); g = c & 63; if ( isNaN( b ) ) { f = g = 64; } else if ( isNaN( c ) ) { g = 64; } output += map.charAt( d ) + map.charAt( e ) + map.charAt( f ) + map.charAt( g ); } return output; }; /** * Converts a base64 string into the original (binary) data * * @since 1.0.15 * @param string input Base 64 encoded text * @return string */ wpmUi.WpmUiBinary.base64_decode = function base64_decode( input ) { if ( typeof input !== 'string' ) { return input; } else { input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); } var output = '', a, b, c, d, e, f, g, i = 0; while ( i < input.length ) { d = map.indexOf( input.charAt( i++ ) ); e = map.indexOf( input.charAt( i++ ) ); f = map.indexOf( input.charAt( i++ ) ); g = map.indexOf( input.charAt( i++ ) ); a = (d << 2) | (e >> 4); b = ((e & 15) << 4) | (f >> 2); c = ((f & 3) << 6) | g; output += String.fromCharCode( a ); if ( f !== 64 ) { output += String.fromCharCode( b ); } if ( g !== 64 ) { output += String.fromCharCode( c ); } } return wpmUi.WpmUiBinary.utf8_decode( output ); }; }; /* ** End: WpmUiBinary ** */ }( window.wpmUi = window.wpmUi || {} ));inc/external/wpmu-lib/js/wpmu-ui.3.min.js000064400000062420150211770060014176 0ustar00/*! WPMU Dev code library - v3.1.1 * http://premium.wpmudev.org/ * Copyright (c) 2019; * Licensed GPLv2+ */ !function(a){function b(){null===f&&(e=jQuery(document),f=jQuery("html"),g=jQuery("body"),c(),d(),g.hasClass("no-auto-init")||window.setTimeout(function(){a.upgrade_multiselect(),a.upgrade_tooltips(),a.bind_radio_sliders(),a.bind_wp_color_picker(),a.bind_wp_media()},20),a.binary=new a.WpmUiBinary)}function c(){var a=function(a){var b=jQuery(this).closest(".wpmui-box");return a.preventDefault(),!b.hasClass("static")&&(b.toggleClass("closed"),!1)};g.on("click",".wpmui-box > h3",a),g.on("click",".wpmui-box > h3 > .toggle",a)}function d(){var a=function(a){var b=jQuery(this),c=b.closest(".wpmui-tabs"),d=c.next(".wpmui-tab-contents"),e=c.find(".active.tab"),f=b.attr("href"),g=e.attr("href"),h=d.find(f),i=d.find(g);return b.hasClass("active")||(e.removeClass("active"),i.removeClass("active")),b.addClass("active"),h.addClass("active"),a.preventDefault(),!1};g.on("click",".wpmui-tabs .tab",a)}var e=null,f=null,g=null,h=null;a.popup=function(c,d){return b(),new a.WpmUiWindow(c,d)},a.progressbar=function(){return b(),new a.WpmUiProgress},a.ajax=function(c,d){return b(),new a.WpmUiAjaxData(c,d)},a.upgrade_multiselect=function(a){b(),a=jQuery(a||g);var c=a.find("select[multiple]").not("select[data-select-ajax]"),d=a.find("select[data-select-ajax]"),e=function(a){var b=a.attr("id"),c="#s2id_"+b,d=a.parent().find(c);d.remove()},f=function(){var b=jQuery(this),c={closeOnSelect:!1,width:"100%"};"object"!=typeof b.data("select2")&&"object"!=typeof b.data("chosen")&&(b.filter("[class*=acf-]").length||"1"!==b.data("wpmui-select")&&(b.closest(".no-auto-init",a[0]).length||(b.data("wpmui-select","1"),e(b),"function"==typeof b.wpmuiSelect&&window.setTimeout(function(){b.wpmuiSelect(c)},1))))},h=function(){var b=function(a){return a.text},c=jQuery(this),d={closeOnSelect:!1,width:"100%",multiple:!0,minimumInputLength:1,ajax:{url:c.attr("data-select-ajax"),dataType:"json",quietMillis:100,cache:!0,data:function(a){return{q:a.term,page:a.page}},processResults:function(a,b){return{results:a.items}}},templateResult:b,templateSelection:b};"object"!=typeof c.data("select2")&&"object"!=typeof c.data("chosen")&&(c.filter("[class*=acf-]").length||"1"!==c.data("wpmui-select")&&(c.closest(".no-auto-init",a[0]).length||(c.data("wpmui-select","1"),e(c),"function"==typeof c.wpmuiSelect&&window.setTimeout(function(){c.wpmuiSelect(d)},1))))};"function"==typeof jQuery.fn.each2?(c.each2(f),d.each2(h)):(c.each(f),d.each(h))},a.message=function(a){var c,d,e,f;b();var g=function(a){return a.preventDefault(),d.remove(),!1},h=function(a){var b=jQuery(this).closest(".wpmui-msg");b.find(".debug").toggle()};return"undefined"!=typeof a&&(("string"==typeof a||a instanceof Array)&&(a={message:a}),a.message instanceof Array&&(a.message=a.message.join("
")),!!a.message&&(a.type=void 0===a.type?"ok":a.type.toString().toLowerCase(),a.close=void 0===a.close||a.close,a.parent=void 0===a.parent?".wrap":a.parent,a.insert_after=void 0===a.insert_after?"h2":a.insert_after,a.id=void 0===a.id?"":a.id.toString().toLowerCase(),a["class"]=void 0===a["class"]?"":a["class"].toString().toLowerCase(),a.details=void 0!==a.details&&a.details,"error"!==a.type&&"red"!==a.type||(a.type="err"),"success"!==a.type&&"green"!==a.type||(a.type="ok"),c=jQuery(a.parent).first(),!!c.length&&(a.id&&jQuery('.wpmui-msg[data-id="'+a.id+'"]').length?(d=jQuery('.wpmui-msg[data-id="'+a.id+'"]').first(),f=!1):(d=jQuery("

"),a.id&&d.attr("data-id",a.id),f=!0),d.find("p").html(a.message),"err"===a.type&&a.details&&window.JSON&&(jQuery('').appendTo(d).text(JSON.stringify(a.details)),jQuery('').prependTo(d.find("p:first")).click(h).after(" ")),d.removeClass().addClass("updated wpmui-msg "+a["class"]),"err"===a.type&&d.addClass("error"),f&&(a.close&&(e=jQuery(''),e.prependTo(d),e.click(g)),a.insert_after&&c.find(a.insert_after).length?(c=c.find(a.insert_after).first(),c.after(d)):c.prepend(d)),!0)))},a.confirm=function(b){function c(){var c=jQuery(this),d=parseInt(c.data("key"));b.modal&&("fixed"===b.layout?a._close_modal():e.remove()),f.remove(),"function"==typeof b.callback&&b.callback(d)}var d,e,f,h,i,j,k,l;if(!b instanceof Object)return!1;if(void 0===b.message)return!1;for(b.modal=void 0===b.modal||b.modal,b.layout=void 0===b.layout?"fixed":b.layout,b.parent=void 0===b.parent?g:b.parent,b.buttons=void 0===b.buttons?["OK"]:b.buttons,b.callback=void 0!==b.callback&&b.callback,d=jQuery(b.parent),b.modal&&("fixed"===b.layout?a._make_modal("wpmui-confirm-modal"):e=jQuery('
').css({position:b.layout}).appendTo(d)),f=jQuery('
').css({position:b.layout}).appendTo(d),h=jQuery('
').html(b.message),i=jQuery('
'),l=!0,j=0;j").html(b.buttons[j]).addClass(l?"button-primary":"button-secondary").data("key",j).click(c).prependTo(i),l=!1;return h.appendTo(f),i.appendTo(f).find(".button-primary").focus(),!0},a.tooltip=function(a,c){var d,e;b();var f=function(b){var d=b.outerWidth(),e=b.outerHeight(),f=5,g=a.outerWidth(),h=a.outerHeight(),i={};switch(i.left=(g-d)/2,i.top=(h-e)/2,i[c.pos]="auto",c.pos){case"top":i.bottom=h+f;break;case"bottom":i.top=h+f;break;case"left":i.right=g+f;break;case"right":i.left=g+f}b.css(i)},g=function(a){var b=jQuery(this).closest(".wpmui-tip-box").find(".wpmui-tip");b.addClass("wpmui-visible"),b.show(),f(b),window.setTimeout(function(){f(b)},35)},h=function(a){var b=jQuery(this).closest(".wpmui-tip-box").find(".wpmui-tip");b.removeClass("wpmui-visible"),b.hide()},i=function(a){d.hasClass("wpmui-visible")?h.call(this,a):g.call(this,a)};return"string"==typeof c&&(c={content:c}),void 0!==c.content&&(a=jQuery(a),!!a.length&&(c.trigger=void 0===c.trigger?"hover":c.trigger.toString().toLowerCase(),c.pos=void 0===c.pos?"top":c.pos.toString().toLowerCase(),c["class"]=void 0===c["class"]?"":c["class"].toString().toLowerCase(),e=a.parent(),e.hasClass("wpmui-tip-box")||(e=a.wrap('').parent().addClass(c["class"]+"-box")),d=e.find("> .wpmui-tip"),a.off(),d.length||(d=jQuery('
'),d.addClass(c["class"]).addClass(c.pos).appendTo(a.parent()).hide(),isNaN(c.width)||d.width(c.width)),"hover"===c.trigger?a.on("mouseenter",g).on("mouseleave",h):"click"===c.trigger&&a.on("click",i),d.html(c.content),!0))},a.upgrade_tooltips=function(){var b=jQuery("[data-wpmui-tooltip]");b.each(function(){var b=jQuery(this),c={content:b.attr("data-wpmui-tooltip"),pos:b.attr("data-pos"),trigger:b.attr("data-trigger"),"class":b.attr("data-class"),width:b.attr("data-width")};a.tooltip(b,c)})},a.obj=function(a){var b={};if(a instanceof Object)b=a;else if(a instanceof Array)if("function"==typeof a.reduce)b=a.reduce(function(a,b,c){return a[c]=b,a},{});else for(var c=a.length-1;c>0;c-=1)void 0!==a[c]&&(b[c]=a[c]);else"string"==typeof a?b.scalar=a:"number"==typeof a?b.scalar=a:"boolean"==typeof a&&(b.scalar=a);return b},a.bind_radio_sliders=function(){jQuery(".wpmui-radio-slider").on("click",function(a){var b=jQuery(this),c=jQuery(".wpmui-toggle",b).data("states"),d=jQuery("input.wpmui-hidden[type=hidden]",b),e=Object.keys(c)[0],f=0;1===parseInt(d.val())||e===d.val()?(b.removeClass("on"),f=c[Object.keys(c)[1]]):(b.addClass("on"),f=c[Object.keys(c)[0]]),"boolean"==typeof f&&(f=f?1:0),d.val(f)})},a.bind_wp_color_picker=function(){jQuery.fn.wpColorPicker&&jQuery(".wpmui-color-field").wpColorPicker()},a.bind_wp_media=function(){jQuery(".option-wp_media .image-reset").on("click",function(a){var b=jQuery(this).closest(".option-wp_media");jQuery(".filename",b).html(""),jQuery(".image-preview",b).removeAttr("src"),jQuery(".attachment-id",b).removeAttr("value"),jQuery(this).addClass("disabled"),jQuery(".wp-media-wrapper",b).addClass("hidden")}),jQuery(".option-wp_media .button-select-image").on("click",function(a){var b,c=jQuery(this).closest(".option-wp_media"),d=jQuery(".attachment-id",c).val();return a.preventDefault(),b?(b.uploader.uploader.param("post_id",d),void b.open()):(wp.media.model.settings.post.id=d,b=wp.media.frames.file_frame=wp.media({title:"Select a image to upload",button:{text:"Use this image"},multiple:!1}),b.on("select",function(a){var d=b.state().get("selection").first().toJSON();jQuery(".filename",c).html(d.filename),jQuery(".image-preview",c).attr("src",d.url).css("width","auto"),jQuery(".attachment-id",c).val(d.id),jQuery(".image-reset",c).removeClass("disabled"),jQuery(".wp-media-wrapper",c).removeClass("hidden"),wp.media.model.settings.post.id=a}),void b.open())}),jQuery("a.add_media").on("click",function(a){wp.media.model.settings.post.id=a})},a._modal_overlay=function(){return null===h&&(h=jQuery("
").addClass("wpmui-overlay").appendTo(g)),h},a._make_modal=function(b,c){var d=a._modal_overlay();return d.removeClass().addClass("wpmui-overlay"),b&&d.addClass(b),g.addClass("wpmui-has-overlay"),f.addClass("wpmui-no-scroll"),c&&f.addClass(c),d},a._close_modal=function(a){g.removeClass("wpmui-has-overlay"),f.removeClass("wpmui-no-scroll"),a&&f.removeClass(a)},jQuery(function(){b()})}(window.wpmUi=window.wpmUi||{}),function(a){var b=1,c={};a.popups=function(){return c},a.WpmUiWindow=function(d,e){function f(){t.id=b,b+=1,c[t.id]=t,d||(d='
'),N=jQuery(d),e&&jQuery("").prependTo(N),N.filter(".popup").length||N.find(".popup").length||N.addClass("popup"),O=N.hasClass("popup")?N:N.find(".popup").first(),O.find(".popup-title").length||(t.title=function(){return t}),O.find(".popup-content").length||(t.content=function(){return t}),O.find(".slidein-toggle").length||(O.find(".popup-title .popup-close").length?O.find(".popup-title .popup-close").addClass("slidein-toggle"):O.find(".popup-title").length?O.find(".popup-title").addClass("slidein-toggle"):O.prepend('')),u=!1}function g(){O&&!O.data("hooked")&&(O.data("hooked",!0),O.on("click",".popup-close",l),O.on("click",".popup-title",m),O.on("click",".close",t.hide),O.on("click",".destroy",t.destroy),O.on("click","thead .check-column :checkbox",r),O.on("click","tfoot .check-column :checkbox",r),O.on("click","tbody .check-column :checkbox",s),jQuery(window).on("resize",o),void 0!==jQuery().draggable&&O.draggable({containment:jQuery("body"),scroll:!1,handle:".popup-title"}))}function h(){O&&O.data("hooked")&&(O.data("hooked",!1),O.off("click",".popup-close",l),O.off("click",".popup-title",m),O.off("click",".close",t.hide),O.off("click",".check-column :checkbox",r),jQuery(window).off("resize",o))}function i(){if(!N)return!1;if(!O)return!1;var b=a._modal_overlay(),e=O.find(".popup-title"),f=O.find(".popup-content"),g=e.find(".the-title");if(d&&!g.length&&(g=e),g.html(A),w?O.removeClass("no-close"):O.addClass("no-close"),F){N.find(".buttons").remove(),O.addClass("no-buttons"),B instanceof jQuery?f.empty().append(B):f.html(B);var h=f.find(".buttons");h.length&&(h.appendTo(O),O.removeClass("no-buttons")),O.addClass(C),F=!1}if(b instanceof jQuery&&b.off("click",n),u)j(),v&&a._make_modal("","has-popup"),x&&b.on("click",n),G&&(G=!1,o()),window.setTimeout(function(){"down"===I?f.css({bottom:e.height()+1}):f.css({top:e.height()+1}),z||window.setTimeout(o,5)},5);else{k();var i,l=!0;for(i in c)if(c[i]!==t&&c[i].is_visible()&&c[i].is_modal()){l=!1;break}l&&a._close_modal("has-popup no-scroll can-scroll")}var m=O.find(".popup-close .dashicons");m.length&&("none"===I?m.removeClass().addClass("dashicons dashicons-no-alt"):"collapsed"===Q?m.removeClass().addClass("dashicons").addClass(R):"expanded"===Q&&m.removeClass().addClass("dashicons").addClass(S)),O[0].className=O[0].className.replace(/\sslidein-.+?\b/g,""),"none"===I?(O.removeClass("slidein"),O.removeClass("wdev-slidein"),O.addClass("wdev-window")):(O.addClass("slidein"),O.addClass("slidein-"+I),O.addClass("slidein-"+Q),O.addClass("wdev-slidein"),O.removeClass("wdev-window")),H.top&&O.addClass("snap-top"),H.left&&O.addClass("snap-left"),H.right&&O.addClass("snap-right"),H.bottom&&O.addClass("snap-bottom")}function j(){O.show();var a="none"!==I,b="collapsed"===Q;if(a){if(!b&&"none"===Q){var c={};Q="collapsed",c=p(c),c=q(c),O.css(c),b=!0}b&&(Q="expanding",o(T),G=!1,window.setTimeout(function(){Q="expanded",i(),window.setTimeout(o,10)},T))}}function k(){switch(I){case"up":case"down":var a="expanded"===Q;if(a){var b=jQuery(window),c=(b.innerHeight(),O.position()),d={};d["margin-top"]=0,d["margin-bottom"]=0,d.bottom="auto",d.top=c.top,O.css(d),Q="collapsing",d=q(),O.animate(d,T,function(){Q="collapsed",i(),window.setTimeout(o,10)})}break;default:O.hide()}}function l(a){"none"===I?t.hide():u?t.hide():t.show(),a.stopPropagation()}function m(a){"none"!==I&&(u?t.hide():t.show(),a.stopPropagation())}function n(){var b=a._modal_overlay();return!!N&&(!(!b instanceof jQuery)&&(b.off("click",n),void t.hide()))}function o(a){if(!O)return!1;if("function"==typeof M)M.apply(t,[t.$()]);else{var b={};b=p(b),b=q(b),!isNaN(a)&&a>0?O.animate(b,a):O.css(b)}}function p(a){var b=jQuery(window),c=b.innerWidth(),d=b.innerHeight(),e=parseInt(O.css("border-left-width"))+parseInt(O.css("border-right-width")),f=parseInt(O.css("border-top-width"))+parseInt(O.css("border-bottom-width")),g=y+e,h=z+f;if("object"!=typeof a&&(a={}),!z||!y){var i=!y,j=!z,k=0,l=0;O.find("*").each(function(){var a=jQuery(this),b=a.position(),c=a.outerWidth()+b.left,d=a.outerHeight()+b.top;i&&k=0&&(y=c),d>=0&&(z=d),G=!0,i(),t},this.snap=function(){var a=!1;H={top:!1,left:!1,right:!1,bottom:!1};for(var b=0;b=0&&(T=b),G=!0,i(),t},this.animate=function(a,b){var c=!1,d="Webkit Moz O ms Khtml".split(" ");if(void 0!==O[0].style.animationName&&(c=!0),c===!1)for(var e=0;e
'),i=jQuery('
'),h=jQuery('
'),j=jQuery('
'),k=jQuery('
'),h.appendTo(i),k.appendTo(i),i.appendTo(g),j.appendTo(g),b()}function b(){var a=d/e*100;a<0&&(a=0),a>100&&(a=100),h.width(a+"%"),k.text(parseInt(a)+" %"),f&&f.length?(j.html(f),j.show()):j.hide()}var c=this,d=0,e=100,f="",g=null,h=null,i=null,j=null,k=null;this.value=function(a){return isNaN(a)||(d=parseInt(a),b()),c},this.max=function(a){return isNaN(a)||(e=parseInt(a),b()),c},this.label=function(a){return f=a,b(),c},this.on=function(a,b,d){return g.on(a,b,d),c},this.off=function(a,b,d){return g.off(a,b,d),c},this.$=function(){return g},c=this,a()}}(window.wpmUi=window.wpmUi||{}),function(a){a.add_action||(a.filters=a.filters||{},a.add_action=function(b,c,d){a.add_filter(b,c,d)},a.add_filter=function(b,c,d){void 0!==c&&(void 0===d&&(d=10),a.filters[b]=a.filters[b]||[],a.filters[b].push({priority:d,callback:c}))},a.remove_action=function(b,c){a.remove_filter(b,c)},a.remove_filter=function(b,c){a.filters[b]=a.filters[b]||[],a.filters[b].forEach(function(d,e){d.callback===c&&a.filters[b].splice(e,1)})},a.remove_all_actions=function(b,c){a.remove_all_filters(b,c)},a.remove_all_filters=function(b,c){a.filters[b]=a.filters[b]||[],void 0===c?a.filters[b]=[]:a.filters[b].forEach(function(d,e){d.priority===c&&a.filters[b].splice(e,1)})},a.do_action=function(b,c){var d=[];void 0!==a.filters[b]&&a.filters[b].length>0&&(a.filters[b].forEach(function(a){d[a.priority]=d[a.priority]||[],d[a.priority].push(a.callback)}),d.forEach(function(a){a.forEach(function(a){a(c)})}))},a.apply_filters=function(b,c,d){var e=[];return void 0!==a.filters[b]&&a.filters[b].length>0&&(a.filters[b].forEach(function(a){e[a.priority]=e[a.priority]||[],e[a.priority].push(a.callback)}),e.forEach(function(a){a.forEach(function(a){c=a(c,d)})})),c})}(window.wpmUi=window.wpmUi||{}),function(a){a.WpmUiAjaxData=function(a,b){function c(){a||"string"!=typeof window.ajaxurl||(a=window.ajaxurl),l=jQuery("body").find("#wpmui_void"),l.length||(l=jQuery("").attr("name","wpmui_void").attr("id","wpmui_void").css({width:1,height:1,display:"none",visibility:"hidden",position:"absolute",left:-1e3,top:-1e3}).hide().appendTo(jQuery("body"))),d(),k.reset()}function d(){var a=document.createElement("INPUT"),b=new XMLHttpRequest;a.type="file",q="files"in a,p=!!(b&&"upload"in b&&"onprogress"in b.upload),r=!!window.FormData}function e(){var a=new window.XMLHttpRequest;return p&&(a.upload.addEventListener("progress",function(a){if(a.lengthComputable){var b=a.loaded/a.total;f(b)}else f(-1)},!1),a.addEventListener("progress",function(a){if(a.lengthComputable){var b=a.loaded/a.total;f(b)}else f(-1)},!1)),a}function f(a){p&&"function"==typeof n&&n(a)}function g(a,b,c){f(100),"function"==typeof o&&o(a,b,c)}function h(a,b){var c={};if(b=b&&r,m instanceof jQuery)if(m.find(".wp-editor-area").each(function(){var a=jQuery(this).attr("id"),b="#wp-"+a+"-wrap",c=jQuery(b),d=window.tinyMCE.get(a);d&&c.hasClass("tmce-active")&&d.save()}),b)c=new window.FormData(m[0]);else{c={};var d={},e={validate:/^[a-zA-Z_][a-zA-Z0-9_-]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,key:/[a-zA-Z0-9_-]+|(?=\[\])/g,push:/^$/,fixed:/^\d+$/,named:/^[a-zA-Z0-9_-]+$/},f=function(a,b,c){return a[b]=c,a},g=function(a){return void 0===d[a]&&(d[a]=0),d[a]++};jQuery.each(m.serializeArray(),function(){if(e.validate.test(this.name)){for(var a,b=this.name.match(e.key),d=this.value,h=this.name;void 0!==(a=b.pop());)h=h.replace(new RegExp("\\["+a+"\\]$"),""),a.match(e.push)?d=f([],g(h),d):a.match(e.fixed)?d=f([],a,d):a.match(e.named)&&(d=f({},a,d));c=jQuery.extend(!0,c,d)}}),m.find("input[type=file]").each(function(){var a=jQuery(this),b=a.attr("name"),d=a.clone(!0)[0];c[":files"]=c[":files"]||{},c[":files"][b]=d})}else if("string"==typeof m){var h=m.split("&").map(function(a){return a.split("=",2)});c=b?new window.FormData:{};for(var i in h){var j=decodeURI(h[i][0]),k=decodeURI(h[i][1]);b?c.append(j,k):void 0!==c[j]?("object"!=typeof c[j]&&(c[j]=[c[j]]),c[j].push(k)):c[j]=k}}else if("object"==typeof m)if(b){c=new window.FormData;for(var l in m)m.hasOwnProperty(l)&&c.append(l,m[l])}else c=jQuery.extend({},m);return void 0!==a&&(c instanceof window.FormData?c.append("action",a):c.action=a),c}function i(b,c){var d=h(b,!0),i={},j=null,k=!1;"json"!==c&&(c="text"),f(-1),i={url:a,type:"POST",dataType:"html",data:d,xhr:e,success:function(a,b,d){if(k=!0,j=a,"json"===c)try{j=jQuery.parseJSON(a)}catch(e){j={status:"ERR",data:a}}},error:function(a,b,c){k=!1,j=c},complete:function(a,b){j instanceof Object&&"ERR"===j.status&&(k=!1),g(j,k,a)}},d instanceof window.FormData&&(i.processData=!1,i.contentType=!1),jQuery.ajax(i)}function j(b,c){var d=h(b,!1),e=jQuery("
"),f="";for(var g in d)if(d.hasOwnProperty(g))if(":files"===g)for(var i in d[g]){var j=d[g][i];e.append(j)}else"action"===g?f=g+"="+d[g].toString():jQuery('').attr("name",g).attr("value",d[g]).appendTo(e);f=a.indexOf("?")===-1?"?"+f:"&"+f,e.attr("action",a+f).attr("method","POST").attr("enctype","multipart/form-data").attr("target",c).hide().appendTo(jQuery("body")),e.submit()}var k=this,l=null,m={},n=null,o=null,p=!1,q=!1,r=!1;this.data=function(a){return m=a,k},this.extract_data=function(a){return m=a,h(void 0,!1)},this.onprogress=function(a){return n=a,k},this.ondone=function(a){return o=a,k},this.reset=function(){return m={},n=null,o=null,k},this.load_text=function(a){return a=a||b,i(a,"text"),k},this.load_json=function(a){return a=a||b,i(a,"json"),k},this.load_http=function(a,c){return a=a||"wpmui_void",c=c||b,j(c,a),k},k=this,c()}}(window.wpmUi=window.wpmUi||{}),function(a){a.WpmUiBinary=function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.WpmUiBinary.utf8_encode=function(a){if("string"!=typeof a)return a;a=a.replace(/\r\n/g,"\n");var b,c="",d=0;for(d;d127&&b<2048?(c+=String.fromCharCode(b>>6|192),c+=String.fromCharCode(63&b|128)):(c+=String.fromCharCode(b>>12|224),c+=String.fromCharCode(b>>6&63|128),c+=String.fromCharCode(63&b|128));return c},a.WpmUiBinary.utf8_decode=function(a){if("string"!=typeof a)return a;for(var b="",c=0,d=0;c191&&d<224?(b+=String.fromCharCode((31&d)<<6|63&a.charCodeAt(c+1)),c+=2):(b+=String.fromCharCode((15&d)<<12|(63&a.charCodeAt(c+1))<<6|63&a.charCodeAt(c+2)),c+=3);return b},a.WpmUiBinary.base64_encode=function(c){if("string"!=typeof c)return c;c=a.WpmUiBinary.utf8_encode(c);for(var d,e,f,g,h,i,j,k="",l=0;l>2,h=(3&d)<<4|e>>4,i=(15&e)<<2|f>>6,j=63&f,isNaN(e)?i=j=64:isNaN(f)&&(j=64),k+=b.charAt(g)+b.charAt(h)+b.charAt(i)+b.charAt(j);return k},a.WpmUiBinary.base64_decode=function(c){if("string"!=typeof c)return c;c.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var d,e,f,g,h,i,j,k="",l=0;l>4,e=(15&h)<<4|i>>2,f=(3&i)<<6|j,k+=String.fromCharCode(d),64!==i&&(k+=String.fromCharCode(e)),64!==j&&(k+=String.fromCharCode(f));return a.WpmUiBinary.utf8_decode(k)}}}(window.wpmUi=window.wpmUi||{});inc/external/wpmu-lib/js/wpmu-vnav.3.min.js000064400000003572150211770060014536 0ustar00/*! WPMU Dev code library - v3.1.1 * http://premium.wpmudev.org/ * Copyright (c) 2019; * Licensed GPLv2+ */ jQuery(function(){function a(){var a=jQuery(".vnav");c=jQuery("input[name=_wp_http_referer]"),a.wpmui_vnav()}function b(){var a,b,d,e,f,g,h,i=jQuery(this),j=0,k=jQuery(window),l=i.html(),m=l.replace("

","

").split("

"),n=window.location.hash.replace(/^#/,""),o=n.length?"":" active";for(l='
    ',a=0;a","

").split(""),2===d.length&&d[0].length&&("-"===d[0]?l+='
  • ':(h=d[0].toLowerCase().replace(/\W\W*/g," ").replace(/^\s|\s$/g,"").replace(/\s/g,"-"),n.length&&n===h&&(o=" active"),e='

    '+d[0]+"

    ",f='
    '+d[1]+"
    ",l+='
  • '+e+f+"
  • ",o=""));l+="",i.html(l),g=jQuery(".lst-vnav",i).first(),i.find(".lst-vnav-item > .data > table").each(function(){var a=jQuery(this),b=a.find("> tbody > tr > th, > tr > th"),c=b.filter(":empty");b.length===c.length&&b.remove()});var p=function(a){var b=jQuery(this),d=b.parents(".lst-vnav-item").first(),e=jQuery(".lst-vnav-item.active",g),f=b.data("key"),h="";window.location.hash=f,c.each(function(){var a=jQuery(this);h=a.val().split("#").shift(),h+="#"+f,a.val(h)}),e.removeClass("active"),d.addClass("active"),q()},q=function(a){var b=jQuery(".lst-vnav-item.active",g),c=jQuery("> .data",b).first(),d=c.outerHeight();j||(j=g.outerHeight()),g.css({"min-height":d+"px"}),c.css({"min-height":j+"px"})},r=function(a){g.hasClass("open")?t(a):s(a)},s=function(a){g.addClass("open")},t=function(a){g.removeClass("open")};i.on("click","h2,h3",p),i.on("click","h2,h3",r),k.resize(q),k.resize(t),window.setTimeout(function(){var a=jQuery(".active",i);jQuery("h2,h3",a).click()},50)}var c="";jQuery.fn.extend({wpmui_vnav:function(){return this.each(function(){return b.apply(this),this})}}),a()});inc/external/wpmu-lib/js/wpmu-card-list.3.js000064400000006355150211770060014666 0ustar00/*! WPMU Dev code library - v3.1.1 * http://premium.wpmudev.org/ * Copyright (c) 2019; * Licensed GPLv2+ */ /*! * WPMU Dev Card List * (Philipp Stracker for WPMU Dev) * * @since 1.1.0 * @author Philipp Stracker for WPMU Dev * @requires jQuery */ /*global jQuery:false */ /*global window:false */ /*global document:false */ /*global XMLHttpRequest:false */ (jQuery(function() { function adjust_height( event ) { var list = jQuery( '.wpmui-list-table.has-details' ), item = list.find( '.list-card.detail-mode' ), item_height = jQuery( window ).innerHeight() - 132; if ( item.length ) { item.height( item_height ); } } function toggle_details( event ) { var item = jQuery( this ).parents( '.list-card' ), list = item.parents( '.wpmui-list-table' ), item_height = jQuery( window ).innerHeight() - 132; if ( list.hasClass( 'has-details' ) ) { close_details(); } else { window.scrollTo( 0, 0 ); list.addClass( 'has-details' ); item.addClass( 'detail-mode' ); item.height( item_height ); item.hide(); jQuery( window ).on( 'resize', adjust_height ); adjust_height(); window.setTimeout(function(){ item.show(); }, 10); } } function close_details( event ) { var close_it = false; // Function was called directly without param. if ( undefined === event ) { close_it = true; } if ( undefined !== event && undefined !== event.target ) { var target = jQuery( event.target ); // User clicked on the modal background behind the card. if ( target.hasClass( 'wpmui-list-table' ) ) { close_it = true; } } if ( ! close_it ) { return; } var item = jQuery( '.list-card.detail-mode' ), list = jQuery( '.wpmui-list-table.has-details' ); list.removeClass( 'has-details' ); item.removeClass( 'detail-mode' ); item.height( 'auto' ); jQuery( window ).off( 'resize', adjust_height ); } function update_status( event, data, is_err ) { var me = jQuery( this ), item = me.parents( '.list-card' ); // Ignore state changes of detail elements. if ( true === data._is_detail ) { return; } if ( data.value ) { item.addClass( 'active' ); } else { item.removeClass( 'active' ); } } function filter_items( event ) { var me = jQuery( this ), filter = me.data( 'filter' ), items = jQuery( '.list-card' ), current = me.parents( '.wp-filter' ).find( '.current' ); current.removeClass( 'current' ); me.addClass( 'current' ); switch ( filter ) { case 'active': items.hide().filter( '.active' ).show(); break; case 'inactive': items.show().filter( '.active' ).hide(); break; case 'all': items.show(); break; default: /** * Allow custom filtering by observing the event. * * @since 1.1.0 * * @param string filter The filter-value. * @param jQuery[] items A list of all items in the list. */ jQuery( document ).trigger( 'list-filter', [filter, items] ); break; } return false; } jQuery( document ).on( 'wpmui-radio-slider-updated', '.wpmui-radio-slider', update_status ); jQuery( document ).on( 'click', '.toggle-details', toggle_details ); jQuery( document ).on( 'click', '.has-details', close_details ); jQuery( document ).on( 'click', '.wp-filter .filter', filter_items ); })); inc/external/wpmu-lib/js/select2.3.min.js000064400000222740150211770060014137 0ustar00/*! WPMU Dev code library - v3.1.1 * http://premium.wpmudev.org/ * Copyright (c) 2019; * Licensed GPLv2+ */ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(jQuery){var a=function(){if(jQuery&&jQuery.fn&&jQuery.fn.wpmuiSelect&&jQuery.fn.wpmuiSelect.amd)var a=jQuery.fn.wpmuiSelect.amd;var a;return function(){if(!a||!a.requirejs){a?c=a:a={};var b,c,d;!function(a){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(b,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(a,d.concat([b,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(b){if(e(r,b)){var c=r[b];delete r[b],t[b]=!0,m.apply(a,c)}if(!e(q,b)&&!e(t,b))throw new Error("No "+b);return q[b]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(b,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||b,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),a.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
      ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('
    • '),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),a.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),a.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.wpmuiSelect("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),a.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),a.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
        '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('
      • ×
      • ');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),a.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),a.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&f<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),a.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(a.inArray(b,f)!==-1){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),a.inArray(b,g)!==-1&&(c.prevented=d.isDefaultPrevented())}})},b}),a.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),a.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),a.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),a.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0, void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),a.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),a.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),a.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),a.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),a.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),a.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),a.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
      • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),a.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).find(".select2-container--open").length>0&&a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),a.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!0,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,containerCssClass:"wpmui-select2 :all:",dropdownCssClass:"wpmui-select2",sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),a.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),a.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){a.inArray(d,c)===-1&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(), this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),a.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),a.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,f.indexOf(":all:")!==-1){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),a.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,f.indexOf(":all:")!==-1){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),a.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),a.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `' + '' ); this.$searchContainer = $search; this.$search = $search.find('input'); var $rendered = decorated.call(this); this._transferTabIndex(); return $rendered; }; Search.prototype.bind = function(decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('open', function() { self.$search.trigger('focus'); }); container.on('close', function() { self.$search.val(''); self.$search.removeAttr('aria-activedescendant'); self.$search.trigger('focus'); }); container.on('enable', function() { self.$search.prop('disabled', false); self._transferTabIndex(); }); container.on('disable', function() { self.$search.prop('disabled', true); }); container.on('focus', function(evt) { self.$search.trigger('focus'); }); container.on('results:focus', function(params) { self.$search.attr('aria-activedescendant', params.id); }); this.$selection.on('focusin', '.select2-search--inline', function(evt) { self.trigger('focus', evt); }); this.$selection.on('focusout', '.select2-search--inline', function(evt) { self._handleBlur(evt); }); this.$selection.on('keydown', '.select2-search--inline', function(evt) { evt.stopPropagation(); self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); var key = evt.which; if (key === KEYS.BACKSPACE && self.$search.val() === '') { var $previousChoice = self.$searchContainer .prev('.select2-selection__choice'); if ($previousChoice.length > 0) { var item = $previousChoice.data('data'); self.searchRemoveChoice(item); evt.preventDefault(); } } }); // Try to detect the IE version should the `documentMode` property that // is stored on the document. This is only implemented in IE and is // slightly cleaner than doing a user agent check. // This property is not available in Edge, but Edge also doesn't have // this bug. var msie = document.documentMode; var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$selection.on( 'input.searchcheck', '.select2-search--inline', function(evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents) { self.$selection.off('input.search input.searchcheck'); return; } // Unbind the duplicated `keyup` event self.$selection.off('keyup.search'); } ); this.$selection.on( 'keyup.search input.search', '.select2-search--inline', function(evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents && evt.type === 'input') { self.$selection.off('input.search input.searchcheck'); return; } var key = evt.which; // We can freely ignore events from modifier keys if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { return; } // Tabbing will be handled during the `keydown` phase if (key == KEYS.TAB) { return; } self.handleSearch(evt); } ); }; /** * This method will transfer the tabindex attribute from the rendered * selection to the search box. This allows for the search box to be used as * the primary focus instead of the selection container. * * @private */ Search.prototype._transferTabIndex = function(decorated) { this.$search.attr('tabindex', this.$selection.attr('tabindex')); this.$selection.attr('tabindex', '-1'); }; Search.prototype.createPlaceholder = function(decorated, placeholder) { this.$search.attr('placeholder', placeholder.text); }; Search.prototype.update = function(decorated, data) { var searchHadFocus = this.$search[0] == document.activeElement; this.$search.attr('placeholder', ''); decorated.call(this, data); this.$selection.find('.select2-selection__rendered') .append(this.$searchContainer); this.resizeSearch(); if (searchHadFocus) { this.$search.focus(); } }; Search.prototype.handleSearch = function() { this.resizeSearch(); if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.searchRemoveChoice = function(decorated, item) { this.trigger('unselect', { data: item }); this.$search.val(item.text); this.handleSearch(); }; Search.prototype.resizeSearch = function() { this.$search.css('width', '25px'); var width = ''; if (this.$search.attr('placeholder') !== '') { width = this.$selection.find('.select2-selection__rendered').innerWidth(); } else { var minimumWidth = this.$search.val().length + 1; width = (minimumWidth * 0.75) + 'em'; } this.$search.css('width', width); }; return Search; }); S2.define('select2/selection/eventRelay', [ 'jquery' ], function($) { function EventRelay() {} EventRelay.prototype.bind = function(decorated, container, $container) { var self = this; var relayEvents = [ 'open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting' ]; var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; decorated.call(this, container, $container); container.on('*', function(name, params) { // Ignore events that should not be relayed if ($.inArray(name, relayEvents) === -1) { return; } // The parameters should always be an object params = params || {}; // Generate the jQuery event for the Select2 event var evt = $.Event('select2:' + name, { params: params }); self.$element.trigger(evt); // Only handle preventable events if it was one if ($.inArray(name, preventableEvents) === -1) { return; } params.prevented = evt.isDefaultPrevented(); }); }; return EventRelay; }); S2.define('select2/translation', [ 'jquery', 'require' ], function($, require) { function Translation(dict) { this.dict = dict || {}; } Translation.prototype.all = function() { return this.dict; }; Translation.prototype.get = function(key) { return this.dict[key]; }; Translation.prototype.extend = function(translation) { this.dict = $.extend({}, translation.all(), this.dict); }; // Static functions Translation._cache = {}; Translation.loadPath = function(path) { if (!(path in Translation._cache)) { var translations = require(path); Translation._cache[path] = translations; } return new Translation(Translation._cache[path]); }; return Translation; }); S2.define('select2/diacritics', [ ], function() { var diacritics = { '\u24B6': 'A', '\uFF21': 'A', '\u00C0': 'A', '\u00C1': 'A', '\u00C2': 'A', '\u1EA6': 'A', '\u1EA4': 'A', '\u1EAA': 'A', '\u1EA8': 'A', '\u00C3': 'A', '\u0100': 'A', '\u0102': 'A', '\u1EB0': 'A', '\u1EAE': 'A', '\u1EB4': 'A', '\u1EB2': 'A', '\u0226': 'A', '\u01E0': 'A', '\u00C4': 'A', '\u01DE': 'A', '\u1EA2': 'A', '\u00C5': 'A', '\u01FA': 'A', '\u01CD': 'A', '\u0200': 'A', '\u0202': 'A', '\u1EA0': 'A', '\u1EAC': 'A', '\u1EB6': 'A', '\u1E00': 'A', '\u0104': 'A', '\u023A': 'A', '\u2C6F': 'A', '\uA732': 'AA', '\u00C6': 'AE', '\u01FC': 'AE', '\u01E2': 'AE', '\uA734': 'AO', '\uA736': 'AU', '\uA738': 'AV', '\uA73A': 'AV', '\uA73C': 'AY', '\u24B7': 'B', '\uFF22': 'B', '\u1E02': 'B', '\u1E04': 'B', '\u1E06': 'B', '\u0243': 'B', '\u0182': 'B', '\u0181': 'B', '\u24B8': 'C', '\uFF23': 'C', '\u0106': 'C', '\u0108': 'C', '\u010A': 'C', '\u010C': 'C', '\u00C7': 'C', '\u1E08': 'C', '\u0187': 'C', '\u023B': 'C', '\uA73E': 'C', '\u24B9': 'D', '\uFF24': 'D', '\u1E0A': 'D', '\u010E': 'D', '\u1E0C': 'D', '\u1E10': 'D', '\u1E12': 'D', '\u1E0E': 'D', '\u0110': 'D', '\u018B': 'D', '\u018A': 'D', '\u0189': 'D', '\uA779': 'D', '\u01F1': 'DZ', '\u01C4': 'DZ', '\u01F2': 'Dz', '\u01C5': 'Dz', '\u24BA': 'E', '\uFF25': 'E', '\u00C8': 'E', '\u00C9': 'E', '\u00CA': 'E', '\u1EC0': 'E', '\u1EBE': 'E', '\u1EC4': 'E', '\u1EC2': 'E', '\u1EBC': 'E', '\u0112': 'E', '\u1E14': 'E', '\u1E16': 'E', '\u0114': 'E', '\u0116': 'E', '\u00CB': 'E', '\u1EBA': 'E', '\u011A': 'E', '\u0204': 'E', '\u0206': 'E', '\u1EB8': 'E', '\u1EC6': 'E', '\u0228': 'E', '\u1E1C': 'E', '\u0118': 'E', '\u1E18': 'E', '\u1E1A': 'E', '\u0190': 'E', '\u018E': 'E', '\u24BB': 'F', '\uFF26': 'F', '\u1E1E': 'F', '\u0191': 'F', '\uA77B': 'F', '\u24BC': 'G', '\uFF27': 'G', '\u01F4': 'G', '\u011C': 'G', '\u1E20': 'G', '\u011E': 'G', '\u0120': 'G', '\u01E6': 'G', '\u0122': 'G', '\u01E4': 'G', '\u0193': 'G', '\uA7A0': 'G', '\uA77D': 'G', '\uA77E': 'G', '\u24BD': 'H', '\uFF28': 'H', '\u0124': 'H', '\u1E22': 'H', '\u1E26': 'H', '\u021E': 'H', '\u1E24': 'H', '\u1E28': 'H', '\u1E2A': 'H', '\u0126': 'H', '\u2C67': 'H', '\u2C75': 'H', '\uA78D': 'H', '\u24BE': 'I', '\uFF29': 'I', '\u00CC': 'I', '\u00CD': 'I', '\u00CE': 'I', '\u0128': 'I', '\u012A': 'I', '\u012C': 'I', '\u0130': 'I', '\u00CF': 'I', '\u1E2E': 'I', '\u1EC8': 'I', '\u01CF': 'I', '\u0208': 'I', '\u020A': 'I', '\u1ECA': 'I', '\u012E': 'I', '\u1E2C': 'I', '\u0197': 'I', '\u24BF': 'J', '\uFF2A': 'J', '\u0134': 'J', '\u0248': 'J', '\u24C0': 'K', '\uFF2B': 'K', '\u1E30': 'K', '\u01E8': 'K', '\u1E32': 'K', '\u0136': 'K', '\u1E34': 'K', '\u0198': 'K', '\u2C69': 'K', '\uA740': 'K', '\uA742': 'K', '\uA744': 'K', '\uA7A2': 'K', '\u24C1': 'L', '\uFF2C': 'L', '\u013F': 'L', '\u0139': 'L', '\u013D': 'L', '\u1E36': 'L', '\u1E38': 'L', '\u013B': 'L', '\u1E3C': 'L', '\u1E3A': 'L', '\u0141': 'L', '\u023D': 'L', '\u2C62': 'L', '\u2C60': 'L', '\uA748': 'L', '\uA746': 'L', '\uA780': 'L', '\u01C7': 'LJ', '\u01C8': 'Lj', '\u24C2': 'M', '\uFF2D': 'M', '\u1E3E': 'M', '\u1E40': 'M', '\u1E42': 'M', '\u2C6E': 'M', '\u019C': 'M', '\u24C3': 'N', '\uFF2E': 'N', '\u01F8': 'N', '\u0143': 'N', '\u00D1': 'N', '\u1E44': 'N', '\u0147': 'N', '\u1E46': 'N', '\u0145': 'N', '\u1E4A': 'N', '\u1E48': 'N', '\u0220': 'N', '\u019D': 'N', '\uA790': 'N', '\uA7A4': 'N', '\u01CA': 'NJ', '\u01CB': 'Nj', '\u24C4': 'O', '\uFF2F': 'O', '\u00D2': 'O', '\u00D3': 'O', '\u00D4': 'O', '\u1ED2': 'O', '\u1ED0': 'O', '\u1ED6': 'O', '\u1ED4': 'O', '\u00D5': 'O', '\u1E4C': 'O', '\u022C': 'O', '\u1E4E': 'O', '\u014C': 'O', '\u1E50': 'O', '\u1E52': 'O', '\u014E': 'O', '\u022E': 'O', '\u0230': 'O', '\u00D6': 'O', '\u022A': 'O', '\u1ECE': 'O', '\u0150': 'O', '\u01D1': 'O', '\u020C': 'O', '\u020E': 'O', '\u01A0': 'O', '\u1EDC': 'O', '\u1EDA': 'O', '\u1EE0': 'O', '\u1EDE': 'O', '\u1EE2': 'O', '\u1ECC': 'O', '\u1ED8': 'O', '\u01EA': 'O', '\u01EC': 'O', '\u00D8': 'O', '\u01FE': 'O', '\u0186': 'O', '\u019F': 'O', '\uA74A': 'O', '\uA74C': 'O', '\u01A2': 'OI', '\uA74E': 'OO', '\u0222': 'OU', '\u24C5': 'P', '\uFF30': 'P', '\u1E54': 'P', '\u1E56': 'P', '\u01A4': 'P', '\u2C63': 'P', '\uA750': 'P', '\uA752': 'P', '\uA754': 'P', '\u24C6': 'Q', '\uFF31': 'Q', '\uA756': 'Q', '\uA758': 'Q', '\u024A': 'Q', '\u24C7': 'R', '\uFF32': 'R', '\u0154': 'R', '\u1E58': 'R', '\u0158': 'R', '\u0210': 'R', '\u0212': 'R', '\u1E5A': 'R', '\u1E5C': 'R', '\u0156': 'R', '\u1E5E': 'R', '\u024C': 'R', '\u2C64': 'R', '\uA75A': 'R', '\uA7A6': 'R', '\uA782': 'R', '\u24C8': 'S', '\uFF33': 'S', '\u1E9E': 'S', '\u015A': 'S', '\u1E64': 'S', '\u015C': 'S', '\u1E60': 'S', '\u0160': 'S', '\u1E66': 'S', '\u1E62': 'S', '\u1E68': 'S', '\u0218': 'S', '\u015E': 'S', '\u2C7E': 'S', '\uA7A8': 'S', '\uA784': 'S', '\u24C9': 'T', '\uFF34': 'T', '\u1E6A': 'T', '\u0164': 'T', '\u1E6C': 'T', '\u021A': 'T', '\u0162': 'T', '\u1E70': 'T', '\u1E6E': 'T', '\u0166': 'T', '\u01AC': 'T', '\u01AE': 'T', '\u023E': 'T', '\uA786': 'T', '\uA728': 'TZ', '\u24CA': 'U', '\uFF35': 'U', '\u00D9': 'U', '\u00DA': 'U', '\u00DB': 'U', '\u0168': 'U', '\u1E78': 'U', '\u016A': 'U', '\u1E7A': 'U', '\u016C': 'U', '\u00DC': 'U', '\u01DB': 'U', '\u01D7': 'U', '\u01D5': 'U', '\u01D9': 'U', '\u1EE6': 'U', '\u016E': 'U', '\u0170': 'U', '\u01D3': 'U', '\u0214': 'U', '\u0216': 'U', '\u01AF': 'U', '\u1EEA': 'U', '\u1EE8': 'U', '\u1EEE': 'U', '\u1EEC': 'U', '\u1EF0': 'U', '\u1EE4': 'U', '\u1E72': 'U', '\u0172': 'U', '\u1E76': 'U', '\u1E74': 'U', '\u0244': 'U', '\u24CB': 'V', '\uFF36': 'V', '\u1E7C': 'V', '\u1E7E': 'V', '\u01B2': 'V', '\uA75E': 'V', '\u0245': 'V', '\uA760': 'VY', '\u24CC': 'W', '\uFF37': 'W', '\u1E80': 'W', '\u1E82': 'W', '\u0174': 'W', '\u1E86': 'W', '\u1E84': 'W', '\u1E88': 'W', '\u2C72': 'W', '\u24CD': 'X', '\uFF38': 'X', '\u1E8A': 'X', '\u1E8C': 'X', '\u24CE': 'Y', '\uFF39': 'Y', '\u1EF2': 'Y', '\u00DD': 'Y', '\u0176': 'Y', '\u1EF8': 'Y', '\u0232': 'Y', '\u1E8E': 'Y', '\u0178': 'Y', '\u1EF6': 'Y', '\u1EF4': 'Y', '\u01B3': 'Y', '\u024E': 'Y', '\u1EFE': 'Y', '\u24CF': 'Z', '\uFF3A': 'Z', '\u0179': 'Z', '\u1E90': 'Z', '\u017B': 'Z', '\u017D': 'Z', '\u1E92': 'Z', '\u1E94': 'Z', '\u01B5': 'Z', '\u0224': 'Z', '\u2C7F': 'Z', '\u2C6B': 'Z', '\uA762': 'Z', '\u24D0': 'a', '\uFF41': 'a', '\u1E9A': 'a', '\u00E0': 'a', '\u00E1': 'a', '\u00E2': 'a', '\u1EA7': 'a', '\u1EA5': 'a', '\u1EAB': 'a', '\u1EA9': 'a', '\u00E3': 'a', '\u0101': 'a', '\u0103': 'a', '\u1EB1': 'a', '\u1EAF': 'a', '\u1EB5': 'a', '\u1EB3': 'a', '\u0227': 'a', '\u01E1': 'a', '\u00E4': 'a', '\u01DF': 'a', '\u1EA3': 'a', '\u00E5': 'a', '\u01FB': 'a', '\u01CE': 'a', '\u0201': 'a', '\u0203': 'a', '\u1EA1': 'a', '\u1EAD': 'a', '\u1EB7': 'a', '\u1E01': 'a', '\u0105': 'a', '\u2C65': 'a', '\u0250': 'a', '\uA733': 'aa', '\u00E6': 'ae', '\u01FD': 'ae', '\u01E3': 'ae', '\uA735': 'ao', '\uA737': 'au', '\uA739': 'av', '\uA73B': 'av', '\uA73D': 'ay', '\u24D1': 'b', '\uFF42': 'b', '\u1E03': 'b', '\u1E05': 'b', '\u1E07': 'b', '\u0180': 'b', '\u0183': 'b', '\u0253': 'b', '\u24D2': 'c', '\uFF43': 'c', '\u0107': 'c', '\u0109': 'c', '\u010B': 'c', '\u010D': 'c', '\u00E7': 'c', '\u1E09': 'c', '\u0188': 'c', '\u023C': 'c', '\uA73F': 'c', '\u2184': 'c', '\u24D3': 'd', '\uFF44': 'd', '\u1E0B': 'd', '\u010F': 'd', '\u1E0D': 'd', '\u1E11': 'd', '\u1E13': 'd', '\u1E0F': 'd', '\u0111': 'd', '\u018C': 'd', '\u0256': 'd', '\u0257': 'd', '\uA77A': 'd', '\u01F3': 'dz', '\u01C6': 'dz', '\u24D4': 'e', '\uFF45': 'e', '\u00E8': 'e', '\u00E9': 'e', '\u00EA': 'e', '\u1EC1': 'e', '\u1EBF': 'e', '\u1EC5': 'e', '\u1EC3': 'e', '\u1EBD': 'e', '\u0113': 'e', '\u1E15': 'e', '\u1E17': 'e', '\u0115': 'e', '\u0117': 'e', '\u00EB': 'e', '\u1EBB': 'e', '\u011B': 'e', '\u0205': 'e', '\u0207': 'e', '\u1EB9': 'e', '\u1EC7': 'e', '\u0229': 'e', '\u1E1D': 'e', '\u0119': 'e', '\u1E19': 'e', '\u1E1B': 'e', '\u0247': 'e', '\u025B': 'e', '\u01DD': 'e', '\u24D5': 'f', '\uFF46': 'f', '\u1E1F': 'f', '\u0192': 'f', '\uA77C': 'f', '\u24D6': 'g', '\uFF47': 'g', '\u01F5': 'g', '\u011D': 'g', '\u1E21': 'g', '\u011F': 'g', '\u0121': 'g', '\u01E7': 'g', '\u0123': 'g', '\u01E5': 'g', '\u0260': 'g', '\uA7A1': 'g', '\u1D79': 'g', '\uA77F': 'g', '\u24D7': 'h', '\uFF48': 'h', '\u0125': 'h', '\u1E23': 'h', '\u1E27': 'h', '\u021F': 'h', '\u1E25': 'h', '\u1E29': 'h', '\u1E2B': 'h', '\u1E96': 'h', '\u0127': 'h', '\u2C68': 'h', '\u2C76': 'h', '\u0265': 'h', '\u0195': 'hv', '\u24D8': 'i', '\uFF49': 'i', '\u00EC': 'i', '\u00ED': 'i', '\u00EE': 'i', '\u0129': 'i', '\u012B': 'i', '\u012D': 'i', '\u00EF': 'i', '\u1E2F': 'i', '\u1EC9': 'i', '\u01D0': 'i', '\u0209': 'i', '\u020B': 'i', '\u1ECB': 'i', '\u012F': 'i', '\u1E2D': 'i', '\u0268': 'i', '\u0131': 'i', '\u24D9': 'j', '\uFF4A': 'j', '\u0135': 'j', '\u01F0': 'j', '\u0249': 'j', '\u24DA': 'k', '\uFF4B': 'k', '\u1E31': 'k', '\u01E9': 'k', '\u1E33': 'k', '\u0137': 'k', '\u1E35': 'k', '\u0199': 'k', '\u2C6A': 'k', '\uA741': 'k', '\uA743': 'k', '\uA745': 'k', '\uA7A3': 'k', '\u24DB': 'l', '\uFF4C': 'l', '\u0140': 'l', '\u013A': 'l', '\u013E': 'l', '\u1E37': 'l', '\u1E39': 'l', '\u013C': 'l', '\u1E3D': 'l', '\u1E3B': 'l', '\u017F': 'l', '\u0142': 'l', '\u019A': 'l', '\u026B': 'l', '\u2C61': 'l', '\uA749': 'l', '\uA781': 'l', '\uA747': 'l', '\u01C9': 'lj', '\u24DC': 'm', '\uFF4D': 'm', '\u1E3F': 'm', '\u1E41': 'm', '\u1E43': 'm', '\u0271': 'm', '\u026F': 'm', '\u24DD': 'n', '\uFF4E': 'n', '\u01F9': 'n', '\u0144': 'n', '\u00F1': 'n', '\u1E45': 'n', '\u0148': 'n', '\u1E47': 'n', '\u0146': 'n', '\u1E4B': 'n', '\u1E49': 'n', '\u019E': 'n', '\u0272': 'n', '\u0149': 'n', '\uA791': 'n', '\uA7A5': 'n', '\u01CC': 'nj', '\u24DE': 'o', '\uFF4F': 'o', '\u00F2': 'o', '\u00F3': 'o', '\u00F4': 'o', '\u1ED3': 'o', '\u1ED1': 'o', '\u1ED7': 'o', '\u1ED5': 'o', '\u00F5': 'o', '\u1E4D': 'o', '\u022D': 'o', '\u1E4F': 'o', '\u014D': 'o', '\u1E51': 'o', '\u1E53': 'o', '\u014F': 'o', '\u022F': 'o', '\u0231': 'o', '\u00F6': 'o', '\u022B': 'o', '\u1ECF': 'o', '\u0151': 'o', '\u01D2': 'o', '\u020D': 'o', '\u020F': 'o', '\u01A1': 'o', '\u1EDD': 'o', '\u1EDB': 'o', '\u1EE1': 'o', '\u1EDF': 'o', '\u1EE3': 'o', '\u1ECD': 'o', '\u1ED9': 'o', '\u01EB': 'o', '\u01ED': 'o', '\u00F8': 'o', '\u01FF': 'o', '\u0254': 'o', '\uA74B': 'o', '\uA74D': 'o', '\u0275': 'o', '\u01A3': 'oi', '\u0223': 'ou', '\uA74F': 'oo', '\u24DF': 'p', '\uFF50': 'p', '\u1E55': 'p', '\u1E57': 'p', '\u01A5': 'p', '\u1D7D': 'p', '\uA751': 'p', '\uA753': 'p', '\uA755': 'p', '\u24E0': 'q', '\uFF51': 'q', '\u024B': 'q', '\uA757': 'q', '\uA759': 'q', '\u24E1': 'r', '\uFF52': 'r', '\u0155': 'r', '\u1E59': 'r', '\u0159': 'r', '\u0211': 'r', '\u0213': 'r', '\u1E5B': 'r', '\u1E5D': 'r', '\u0157': 'r', '\u1E5F': 'r', '\u024D': 'r', '\u027D': 'r', '\uA75B': 'r', '\uA7A7': 'r', '\uA783': 'r', '\u24E2': 's', '\uFF53': 's', '\u00DF': 's', '\u015B': 's', '\u1E65': 's', '\u015D': 's', '\u1E61': 's', '\u0161': 's', '\u1E67': 's', '\u1E63': 's', '\u1E69': 's', '\u0219': 's', '\u015F': 's', '\u023F': 's', '\uA7A9': 's', '\uA785': 's', '\u1E9B': 's', '\u24E3': 't', '\uFF54': 't', '\u1E6B': 't', '\u1E97': 't', '\u0165': 't', '\u1E6D': 't', '\u021B': 't', '\u0163': 't', '\u1E71': 't', '\u1E6F': 't', '\u0167': 't', '\u01AD': 't', '\u0288': 't', '\u2C66': 't', '\uA787': 't', '\uA729': 'tz', '\u24E4': 'u', '\uFF55': 'u', '\u00F9': 'u', '\u00FA': 'u', '\u00FB': 'u', '\u0169': 'u', '\u1E79': 'u', '\u016B': 'u', '\u1E7B': 'u', '\u016D': 'u', '\u00FC': 'u', '\u01DC': 'u', '\u01D8': 'u', '\u01D6': 'u', '\u01DA': 'u', '\u1EE7': 'u', '\u016F': 'u', '\u0171': 'u', '\u01D4': 'u', '\u0215': 'u', '\u0217': 'u', '\u01B0': 'u', '\u1EEB': 'u', '\u1EE9': 'u', '\u1EEF': 'u', '\u1EED': 'u', '\u1EF1': 'u', '\u1EE5': 'u', '\u1E73': 'u', '\u0173': 'u', '\u1E77': 'u', '\u1E75': 'u', '\u0289': 'u', '\u24E5': 'v', '\uFF56': 'v', '\u1E7D': 'v', '\u1E7F': 'v', '\u028B': 'v', '\uA75F': 'v', '\u028C': 'v', '\uA761': 'vy', '\u24E6': 'w', '\uFF57': 'w', '\u1E81': 'w', '\u1E83': 'w', '\u0175': 'w', '\u1E87': 'w', '\u1E85': 'w', '\u1E98': 'w', '\u1E89': 'w', '\u2C73': 'w', '\u24E7': 'x', '\uFF58': 'x', '\u1E8B': 'x', '\u1E8D': 'x', '\u24E8': 'y', '\uFF59': 'y', '\u1EF3': 'y', '\u00FD': 'y', '\u0177': 'y', '\u1EF9': 'y', '\u0233': 'y', '\u1E8F': 'y', '\u00FF': 'y', '\u1EF7': 'y', '\u1E99': 'y', '\u1EF5': 'y', '\u01B4': 'y', '\u024F': 'y', '\u1EFF': 'y', '\u24E9': 'z', '\uFF5A': 'z', '\u017A': 'z', '\u1E91': 'z', '\u017C': 'z', '\u017E': 'z', '\u1E93': 'z', '\u1E95': 'z', '\u01B6': 'z', '\u0225': 'z', '\u0240': 'z', '\u2C6C': 'z', '\uA763': 'z', '\u0386': '\u0391', '\u0388': '\u0395', '\u0389': '\u0397', '\u038A': '\u0399', '\u03AA': '\u0399', '\u038C': '\u039F', '\u038E': '\u03A5', '\u03AB': '\u03A5', '\u038F': '\u03A9', '\u03AC': '\u03B1', '\u03AD': '\u03B5', '\u03AE': '\u03B7', '\u03AF': '\u03B9', '\u03CA': '\u03B9', '\u0390': '\u03B9', '\u03CC': '\u03BF', '\u03CD': '\u03C5', '\u03CB': '\u03C5', '\u03B0': '\u03C5', '\u03C9': '\u03C9', '\u03C2': '\u03C3' }; return diacritics; }); S2.define('select2/data/base', [ '../utils' ], function(Utils) { function BaseAdapter($element, options) { BaseAdapter.__super__.constructor.call(this); } Utils.Extend(BaseAdapter, Utils.Observable); BaseAdapter.prototype.current = function(callback) { throw new Error('The `current` method must be defined in child classes.'); }; BaseAdapter.prototype.query = function(params, callback) { throw new Error('The `query` method must be defined in child classes.'); }; BaseAdapter.prototype.bind = function(container, $container) { // Can be implemented in subclasses }; BaseAdapter.prototype.destroy = function() { // Can be implemented in subclasses }; BaseAdapter.prototype.generateResultId = function(container, data) { var id = container.id + '-result-'; id += Utils.generateChars(4); if (data.id != null) { id += '-' + data.id.toString(); } else { id += '-' + Utils.generateChars(4); } return id; }; return BaseAdapter; }); S2.define('select2/data/select', [ './base', '../utils', 'jquery' ], function(BaseAdapter, Utils, $) { function SelectAdapter($element, options) { this.$element = $element; this.options = options; SelectAdapter.__super__.constructor.call(this); } Utils.Extend(SelectAdapter, BaseAdapter); SelectAdapter.prototype.current = function(callback) { var data = []; var self = this; this.$element.find(':selected').each(function() { var $option = $(this); var option = self.item($option); data.push(option); }); callback(data); }; SelectAdapter.prototype.select = function(data) { var self = this; data.selected = true; // If data.element is a DOM node, use it instead if ($(data.element).is('option')) { data.element.selected = true; this.$element.trigger('change'); return; } if (this.$element.prop('multiple')) { this.current(function(currentData) { var val = []; data = [data]; data.push.apply(data, currentData); for (var d = 0; d < data.length; d++) { var id = data[d].id; if ($.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); } else { var val = data.id; this.$element.val(val); this.$element.trigger('change'); } }; SelectAdapter.prototype.unselect = function(data) { var self = this; if (!this.$element.prop('multiple')) { return; } data.selected = false; if ($(data.element).is('option')) { data.element.selected = false; this.$element.trigger('change'); return; } this.current(function(currentData) { var val = []; for (var d = 0; d < currentData.length; d++) { var id = currentData[d].id; if (id !== data.id && $.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); }; SelectAdapter.prototype.bind = function(container, $container) { var self = this; this.container = container; container.on('select', function(params) { self.select(params.data); }); container.on('unselect', function(params) { self.unselect(params.data); }); }; SelectAdapter.prototype.destroy = function() { // Remove anything added to child elements this.$element.find('*').each(function() { // Remove any custom data set by Select2 $.removeData(this, 'data'); }); }; SelectAdapter.prototype.query = function(params, callback) { var data = []; var self = this; var $options = this.$element.children(); $options.each(function() { var $option = $(this); if (!$option.is('option') && !$option.is('optgroup')) { return; } var option = self.item($option); var matches = self.matches(params, option); if (matches !== null) { data.push(matches); } }); callback({ results: data }); }; SelectAdapter.prototype.addOptions = function($options) { Utils.appendMany(this.$element, $options); }; SelectAdapter.prototype.option = function(data) { var option; if (data.children) { option = document.createElement('optgroup'); option.label = data.text; } else { option = document.createElement('option'); if (option.textContent !== undefined) { option.textContent = data.text; } else { option.innerText = data.text; } } if (data.id) { option.value = data.id; } if (data.disabled) { option.disabled = true; } if (data.selected) { option.selected = true; } if (data.title) { option.title = data.title; } var $option = $(option); var normalizedData = this._normalizeItem(data); normalizedData.element = option; // Override the option's data with the combined data $.data(option, 'data', normalizedData); return $option; }; SelectAdapter.prototype.item = function($option) { var data = {}; data = $.data($option[0], 'data'); if (data != null) { return data; } if ($option.is('option')) { data = { id: $option.val(), text: $option.text(), disabled: $option.prop('disabled'), selected: $option.prop('selected'), title: $option.prop('title') }; } else if ($option.is('optgroup')) { data = { text: $option.prop('label'), children: [], title: $option.prop('title') }; var $children = $option.children('option'); var children = []; for (var c = 0; c < $children.length; c++) { var $child = $($children[c]); var child = this.item($child); children.push(child); } data.children = children; } data = this._normalizeItem(data); data.element = $option[0]; $.data($option[0], 'data', data); return data; }; SelectAdapter.prototype._normalizeItem = function(item) { if (!$.isPlainObject(item)) { item = { id: item, text: item }; } item = $.extend({}, { text: '' }, item); var defaults = { selected: false, disabled: false }; if (item.id != null) { item.id = item.id.toString(); } if (item.text != null) { item.text = item.text.toString(); } if (item._resultId == null && item.id && this.container != null) { item._resultId = this.generateResultId(this.container, item); } return $.extend({}, defaults, item); }; SelectAdapter.prototype.matches = function(params, data) { var matcher = this.options.get('matcher'); return matcher(params, data); }; return SelectAdapter; }); S2.define('select2/data/array', [ './select', '../utils', 'jquery' ], function(SelectAdapter, Utils, $) { function ArrayAdapter($element, options) { var data = options.get('data') || []; ArrayAdapter.__super__.constructor.call(this, $element, options); this.addOptions(this.convertToOptions(data)); } Utils.Extend(ArrayAdapter, SelectAdapter); ArrayAdapter.prototype.select = function(data) { var $option = this.$element.find('option').filter(function(i, elm) { return elm.value == data.id.toString(); }); if ($option.length === 0) { $option = this.option(data); this.addOptions($option); } ArrayAdapter.__super__.select.call(this, data); }; ArrayAdapter.prototype.convertToOptions = function(data) { var self = this; var $existing = this.$element.find('option'); var existingIds = $existing.map(function() { return self.item($(this)).id; }).get(); var $options = []; // Filter out all items except for the one passed in the argument function onlyItem(item) { return function() { return $(this).val() == item.id; }; } for (var d = 0; d < data.length; d++) { var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data if ($.inArray(item.id, existingIds) >= 0) { var $existingOption = $existing.filter(onlyItem(item)); var existingData = this.item($existingOption); var newData = $.extend(true, {}, item, existingData); var $newOption = this.option(newData); $existingOption.replaceWith($newOption); continue; } var $option = this.option(item); if (item.children) { var $children = this.convertToOptions(item.children); Utils.appendMany($option, $children); } $options.push($option); } return $options; }; return ArrayAdapter; }); S2.define('select2/data/ajax', [ './array', '../utils', 'jquery' ], function(ArrayAdapter, Utils, $) { function AjaxAdapter($element, options) { this.ajaxOptions = this._applyDefaults(options.get('ajax')); if (this.ajaxOptions.processResults != null) { this.processResults = this.ajaxOptions.processResults; } AjaxAdapter.__super__.constructor.call(this, $element, options); } Utils.Extend(AjaxAdapter, ArrayAdapter); AjaxAdapter.prototype._applyDefaults = function(options) { var defaults = { data: function(params) { return $.extend({}, params, { q: params.term }); }, transport: function(params, success, failure) { var $request = $.ajax(params); $request.then(success); $request.fail(failure); return $request; } }; return $.extend({}, defaults, options, true); }; AjaxAdapter.prototype.processResults = function(results) { return results; }; AjaxAdapter.prototype.query = function(params, callback) { var matches = []; var self = this; if (this._request != null) { // JSONP requests cannot always be aborted if ($.isFunction(this._request.abort)) { this._request.abort(); } this._request = null; } var options = $.extend({ type: 'GET' }, this.ajaxOptions); if (typeof options.url === 'function') { options.url = options.url.call(this.$element, params); } if (typeof options.data === 'function') { options.data = options.data.call(this.$element, params); } function request() { var $request = options.transport(options, function(data) { var results = self.processResults(data, params); if (self.options.get('debug') && window.console && console.error) { // Check to make sure that the response included a `results` key. if (!results || !results.results || !$.isArray(results.results)) { console.error( 'Select2: The AJAX results did not return an array in the ' + '`results` key of the response.' ); } } callback(results); }, function() { // Attempt to detect if a request was aborted // Only works if the transport exposes a status property if ($request.status && $request.status === '0') { return; } self.trigger('results:message', { message: 'errorLoading' }); }); self._request = $request; } if (this.ajaxOptions.delay && params.term != null) { if (this._queryTimeout) { window.clearTimeout(this._queryTimeout); } this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); } else { request(); } }; return AjaxAdapter; }); S2.define('select2/data/tags', [ 'jquery' ], function($) { function Tags(decorated, $element, options) { var tags = options.get('tags'); var createTag = options.get('createTag'); if (createTag !== undefined) { this.createTag = createTag; } var insertTag = options.get('insertTag'); if (insertTag !== undefined) { this.insertTag = insertTag; } decorated.call(this, $element, options); if ($.isArray(tags)) { for (var t = 0; t < tags.length; t++) { var tag = tags[t]; var item = this._normalizeItem(tag); var $option = this.option(item); this.$element.append($option); } } } Tags.prototype.query = function(decorated, params, callback) { var self = this; this._removeOldTags(); if (params.term == null || params.page != null) { decorated.call(this, params, callback); return; } function wrapper(obj, child) { var data = obj.results; for (var i = 0; i < data.length; i++) { var option = data[i]; var checkChildren = ( option.children != null && !wrapper({ results: option.children }, true) ); var checkText = option.text === params.term; if (checkText || checkChildren) { if (child) { return false; } obj.data = data; callback(obj); return; } } if (child) { return true; } var tag = self.createTag(params); if (tag != null) { var $option = self.option(tag); $option.attr('data-select2-tag', true); self.addOptions([$option]); self.insertTag(data, tag); } obj.results = data; callback(obj); } decorated.call(this, params, wrapper); }; Tags.prototype.createTag = function(decorated, params) { var term = $.trim(params.term); if (term === '') { return null; } return { id: term, text: term }; }; Tags.prototype.insertTag = function(_, data, tag) { data.unshift(tag); }; Tags.prototype._removeOldTags = function(_) { var tag = this._lastTag; var $options = this.$element.find('option[data-select2-tag]'); $options.each(function() { if (this.selected) { return; } $(this).remove(); }); }; return Tags; }); S2.define('select2/data/tokenizer', [ 'jquery' ], function($) { function Tokenizer(decorated, $element, options) { var tokenizer = options.get('tokenizer'); if (tokenizer !== undefined) { this.tokenizer = tokenizer; } decorated.call(this, $element, options); } Tokenizer.prototype.bind = function(decorated, container, $container) { decorated.call(this, container, $container); this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field'); }; Tokenizer.prototype.query = function(decorated, params, callback) { var self = this; function createAndSelect(data) { // Normalize the data object so we can use it for checks var item = self._normalizeItem(data); // Check if the data object already exists as a tag // Select it if it doesn't var $existingOptions = self.$element.find('option').filter(function() { return $(this).val() === item.id; }); // If an existing option wasn't found for it, create the option if (!$existingOptions.length) { var $option = self.option(item); $option.attr('data-select2-tag', true); self._removeOldTags(); self.addOptions([$option]); } // Select the item, now that we know there is an option for it select(item); } function select(data) { self.trigger('select', { data: data }); } params.term = params.term || ''; var tokenData = this.tokenizer(params, this.options, createAndSelect); if (tokenData.term !== params.term) { // Replace the search term if we have the search box if (this.$search.length) { this.$search.val(tokenData.term); this.$search.focus(); } params.term = tokenData.term; } decorated.call(this, params, callback); }; Tokenizer.prototype.tokenizer = function(_, params, options, callback) { var separators = options.get('tokenSeparators') || []; var term = params.term; var i = 0; var createTag = this.createTag || function(params) { return { id: params.term, text: params.term }; }; while (i < term.length) { var termChar = term[i]; if ($.inArray(termChar, separators) === -1) { i++; continue; } var part = term.substr(0, i); var partParams = $.extend({}, params, { term: part }); var data = createTag(partParams); if (data == null) { i++; continue; } callback(data); // Reset the term to not include the tokenized portion term = term.substr(i + 1) || ''; i = 0; } return { term: term }; }; return Tokenizer; }); S2.define('select2/data/minimumInputLength', [ ], function() { function MinimumInputLength(decorated, $e, options) { this.minimumInputLength = options.get('minimumInputLength'); decorated.call(this, $e, options); } MinimumInputLength.prototype.query = function(decorated, params, callback) { params.term = params.term || ''; if (params.term.length < this.minimumInputLength) { this.trigger('results:message', { message: 'inputTooShort', args: { minimum: this.minimumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MinimumInputLength; }); S2.define('select2/data/maximumInputLength', [ ], function() { function MaximumInputLength(decorated, $e, options) { this.maximumInputLength = options.get('maximumInputLength'); decorated.call(this, $e, options); } MaximumInputLength.prototype.query = function(decorated, params, callback) { params.term = params.term || ''; if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) { this.trigger('results:message', { message: 'inputTooLong', args: { maximum: this.maximumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MaximumInputLength; }); S2.define('select2/data/maximumSelectionLength', [ ], function() { function MaximumSelectionLength(decorated, $e, options) { this.maximumSelectionLength = options.get('maximumSelectionLength'); decorated.call(this, $e, options); } MaximumSelectionLength.prototype.query = function(decorated, params, callback) { var self = this; this.current(function(currentData) { var count = currentData != null ? currentData.length : 0; if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) { self.trigger('results:message', { message: 'maximumSelected', args: { maximum: self.maximumSelectionLength } }); return; } decorated.call(self, params, callback); }); }; return MaximumSelectionLength; }); S2.define('select2/dropdown', [ 'jquery', './utils' ], function($, Utils) { function Dropdown($element, options) { this.$element = $element; this.options = options; Dropdown.__super__.constructor.call(this); } Utils.Extend(Dropdown, Utils.Observable); Dropdown.prototype.render = function() { var $dropdown = $( '' + '' + '' ); $dropdown.attr('dir', this.options.get('dir')); this.$dropdown = $dropdown; return $dropdown; }; Dropdown.prototype.bind = function() { // Should be implemented in subclasses }; Dropdown.prototype.position = function($dropdown, $container) { // Should be implmented in subclasses }; Dropdown.prototype.destroy = function() { // Remove the dropdown from the DOM this.$dropdown.remove(); }; return Dropdown; }); S2.define('select2/dropdown/search', [ 'jquery', '../utils' ], function($, Utils) { function Search() {} Search.prototype.render = function(decorated) { var $rendered = decorated.call(this); var $search = $( '' + '' + '' ); this.$searchContainer = $search; this.$search = $search.find('input'); $rendered.prepend($search); return $rendered; }; Search.prototype.bind = function(decorated, container, $container) { var self = this; decorated.call(this, container, $container); this.$search.on('keydown', function(evt) { self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); }); // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$search.on('input', function(evt) { // Unbind the duplicated `keyup` event $(this).off('keyup'); }); this.$search.on('keyup input', function(evt) { self.handleSearch(evt); }); container.on('open', function() { self.$search.attr('tabindex', 0); self.$search.focus(); window.setTimeout(function() { self.$search.focus(); }, 0); }); container.on('close', function() { self.$search.attr('tabindex', -1); self.$search.val(''); }); container.on('focus', function() { if (container.isOpen()) { self.$search.focus(); } }); container.on('results:all', function(params) { if (params.query.term == null || params.query.term === '') { var showSearch = self.showSearch(params); if (showSearch) { self.$searchContainer.removeClass('select2-search--hide'); } else { self.$searchContainer.addClass('select2-search--hide'); } } }); }; Search.prototype.handleSearch = function(evt) { if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.showSearch = function(_, params) { return true; }; return Search; }); S2.define('select2/dropdown/hidePlaceholder', [ ], function() { function HidePlaceholder(decorated, $element, options, dataAdapter) { this.placeholder = this.normalizePlaceholder(options.get('placeholder')); decorated.call(this, $element, options, dataAdapter); } HidePlaceholder.prototype.append = function(decorated, data) { data.results = this.removePlaceholder(data.results); decorated.call(this, data); }; HidePlaceholder.prototype.normalizePlaceholder = function(_, placeholder) { if (typeof placeholder === 'string') { placeholder = { id: '', text: placeholder }; } return placeholder; }; HidePlaceholder.prototype.removePlaceholder = function(_, data) { var modifiedData = data.slice(0); for (var d = data.length - 1; d >= 0; d--) { var item = data[d]; if (this.placeholder.id === item.id) { modifiedData.splice(d, 1); } } return modifiedData; }; return HidePlaceholder; }); S2.define('select2/dropdown/infiniteScroll', [ 'jquery' ], function($) { function InfiniteScroll(decorated, $element, options, dataAdapter) { this.lastParams = {}; decorated.call(this, $element, options, dataAdapter); this.$loadingMore = this.createLoadingMore(); this.loading = false; } InfiniteScroll.prototype.append = function(decorated, data) { this.$loadingMore.remove(); this.loading = false; decorated.call(this, data); if (this.showLoadingMore(data)) { this.$results.append(this.$loadingMore); } }; InfiniteScroll.prototype.bind = function(decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('query', function(params) { self.lastParams = params; self.loading = true; }); container.on('query:append', function(params) { self.lastParams = params; self.loading = true; }); this.$results.on('scroll', function() { var isLoadMoreVisible = $.contains( document.documentElement, self.$loadingMore[0] ); if (self.loading || !isLoadMoreVisible) { return; } var currentOffset = self.$results.offset().top + self.$results.outerHeight(false); var loadingMoreOffset = self.$loadingMore.offset().top + self.$loadingMore.outerHeight(false); if (currentOffset + 50 >= loadingMoreOffset) { self.loadMore(); } }); }; InfiniteScroll.prototype.loadMore = function() { this.loading = true; var params = $.extend({}, { page: 1 }, this.lastParams); params.page++; this.trigger('query:append', params); }; InfiniteScroll.prototype.showLoadingMore = function(_, data) { return data.pagination && data.pagination.more; }; InfiniteScroll.prototype.createLoadingMore = function() { var $option = $( '
      • ' ); var message = this.options.get('translations').get('loadingMore'); $option.html(message(this.lastParams)); return $option; }; return InfiniteScroll; }); S2.define('select2/dropdown/attachBody', [ 'jquery', '../utils' ], function($, Utils) { function AttachBody(decorated, $element, options) { this.$dropdownParent = options.get('dropdownParent') || $(document.body); decorated.call(this, $element, options); } AttachBody.prototype.bind = function(decorated, container, $container) { var self = this; var setupResultsEvents = false; decorated.call(this, container, $container); container.on('open', function() { self._showDropdown(); self._attachPositioningHandler(container); if (!setupResultsEvents) { setupResultsEvents = true; container.on('results:all', function() { self._positionDropdown(); self._resizeDropdown(); }); container.on('results:append', function() { self._positionDropdown(); self._resizeDropdown(); }); } }); container.on('close', function() { self._hideDropdown(); self._detachPositioningHandler(container); }); this.$dropdownContainer.on('mousedown', function(evt) { evt.stopPropagation(); }); }; AttachBody.prototype.destroy = function(decorated) { decorated.call(this); this.$dropdownContainer.remove(); }; AttachBody.prototype.position = function(decorated, $dropdown, $container) { // Clone all of the container classes $dropdown.attr('class', $container.attr('class')); $dropdown.removeClass('select2'); $dropdown.addClass('select2-container--open'); $dropdown.css({ position: 'absolute', top: -999999 }); this.$container = $container; }; AttachBody.prototype.render = function(decorated) { var $container = $(''); var $dropdown = decorated.call(this); $container.append($dropdown); this.$dropdownContainer = $container; return $container; }; AttachBody.prototype._hideDropdown = function(decorated) { this.$dropdownContainer.detach(); }; AttachBody.prototype._attachPositioningHandler = function(decorated, container) { var self = this; var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.each(function() { $(this).data('select2-scroll-position', { x: $(this).scrollLeft(), y: $(this).scrollTop() }); }); $watchers.on(scrollEvent, function(ev) { var position = $(this).data('select2-scroll-position'); // Prevent inability to scroll. if ($(this).find('.select2-container--open').length>0) { $(this).scrollTop(position.y); } }); $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function(e) { self._positionDropdown(); self._resizeDropdown(); }); }; AttachBody.prototype._detachPositioningHandler = function(decorated, container) { var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.off(scrollEvent); $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); }; AttachBody.prototype._positionDropdown = function() { var $window = $(window); var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); var newDirection = null; var offset = this.$container.offset(); offset.bottom = offset.top + this.$container.outerHeight(false); var container = { height: this.$container.outerHeight(false) }; container.top = offset.top; container.bottom = offset.top + container.height; var dropdown = { height: this.$dropdown.outerHeight(false) }; var viewport = { top: $window.scrollTop(), bottom: $window.scrollTop() + $window.height() }; var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); var css = { left: offset.left, top: container.bottom }; // Determine what the parent element is to use for calciulating the offset var $offsetParent = this.$dropdownParent; // For statically positoned elements, we need to get the element // that is determining the offset if ($offsetParent.css('position') === 'static') { $offsetParent = $offsetParent.offsetParent(); } var parentOffset = $offsetParent.offset(); css.top -= parentOffset.top; css.left -= parentOffset.left; if (!isCurrentlyAbove && !isCurrentlyBelow) { newDirection = 'below'; } if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { newDirection = 'above'; } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { newDirection = 'below'; } if (newDirection == 'above' || (isCurrentlyAbove && newDirection !== 'below')) { css.top = container.top - parentOffset.top - dropdown.height; } if (newDirection != null) { this.$dropdown .removeClass('select2-dropdown--below select2-dropdown--above') .addClass('select2-dropdown--' + newDirection); this.$container .removeClass('select2-container--below select2-container--above') .addClass('select2-container--' + newDirection); } this.$dropdownContainer.css(css); }; AttachBody.prototype._resizeDropdown = function() { var css = { width: this.$container.outerWidth(false) + 'px' }; if (this.options.get('dropdownAutoWidth')) { css.minWidth = css.width; css.position = 'relative'; css.width = 'auto'; } this.$dropdown.css(css); }; AttachBody.prototype._showDropdown = function(decorated) { this.$dropdownContainer.appendTo(this.$dropdownParent); this._positionDropdown(); this._resizeDropdown(); }; return AttachBody; }); S2.define('select2/dropdown/minimumResultsForSearch', [ ], function() { function countResults(data) { var count = 0; for (var d = 0; d < data.length; d++) { var item = data[d]; if (item.children) { count += countResults(item.children); } else { count++; } } return count; } function MinimumResultsForSearch(decorated, $element, options, dataAdapter) { this.minimumResultsForSearch = options.get('minimumResultsForSearch'); if (this.minimumResultsForSearch < 0) { this.minimumResultsForSearch = Infinity; } decorated.call(this, $element, options, dataAdapter); } MinimumResultsForSearch.prototype.showSearch = function(decorated, params) { if (countResults(params.data.results) < this.minimumResultsForSearch) { return false; } return decorated.call(this, params); }; return MinimumResultsForSearch; }); S2.define('select2/dropdown/selectOnClose', [ ], function() { function SelectOnClose() {} SelectOnClose.prototype.bind = function(decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('close', function(params) { self._handleSelectOnClose(params); }); }; SelectOnClose.prototype._handleSelectOnClose = function(_, params) { if (params && params.originalSelect2Event != null) { var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or // unselect event if (event._type === 'select' || event._type === 'unselect') { return; } } var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results if ($highlightedResults.length < 1) { return; } var data = $highlightedResults.data('data'); // Don't re-select already selected resulte if ( (data.element != null && data.element.selected) || (data.element == null && data.selected) ) { return; } this.trigger('select', { data: data }); }; return SelectOnClose; }); S2.define('select2/dropdown/closeOnSelect', [ ], function() { function CloseOnSelect() {} CloseOnSelect.prototype.bind = function(decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('select', function(evt) { self._selectTriggered(evt); }); container.on('unselect', function(evt) { self._selectTriggered(evt); }); }; CloseOnSelect.prototype._selectTriggered = function(_, evt) { var originalEvent = evt.originalEvent; // Don't close if the control key is being held if (originalEvent && originalEvent.ctrlKey) { return; } this.trigger('close', { originalEvent: originalEvent, originalSelect2Event: evt }); }; return CloseOnSelect; }); S2.define('select2/i18n/en', [], function() { // English return { errorLoading: function() { return 'The results could not be loaded.'; }, inputTooLong: function(args) { var overChars = args.input.length - args.maximum; var message = 'Please delete ' + overChars + ' character'; if (overChars != 1) { message += 's'; } return message; }, inputTooShort: function(args) { var remainingChars = args.minimum - args.input.length; var message = 'Please enter ' + remainingChars + ' or more characters'; return message; }, loadingMore: function() { return 'Loading more results…'; }, maximumSelected: function(args) { var message = 'You can only select ' + args.maximum + ' item'; if (args.maximum != 1) { message += 's'; } return message; }, noResults: function() { return 'No results found'; }, searching: function() { return 'Searching…'; } }; }); S2.define('select2/defaults', [ 'jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en' ], function($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, EnglishTranslation) { function Defaults() { this.reset(); } Defaults.prototype.apply = function(options) { options = $.extend(true, {}, this.defaults, options); if (options.dataAdapter == null) { if (options.ajax != null) { options.dataAdapter = AjaxData; } else if (options.data != null) { options.dataAdapter = ArrayData; } else { options.dataAdapter = SelectData; } if (options.minimumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MinimumInputLength ); } if (options.maximumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumInputLength ); } if (options.maximumSelectionLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumSelectionLength ); } if (options.tags) { options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); } if (options.tokenSeparators != null || options.tokenizer != null) { options.dataAdapter = Utils.Decorate( options.dataAdapter, Tokenizer ); } if (options.query != null) { var Query = require(options.amdBase + 'compat/query'); options.dataAdapter = Utils.Decorate( options.dataAdapter, Query ); } if (options.initSelection != null) { var InitSelection = require(options.amdBase + 'compat/initSelection'); options.dataAdapter = Utils.Decorate( options.dataAdapter, InitSelection ); } } if (options.resultsAdapter == null) { options.resultsAdapter = ResultsList; if (options.ajax != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, InfiniteScroll ); } if (options.placeholder != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, HidePlaceholder ); } if (options.selectOnClose) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, SelectOnClose ); } } if (options.dropdownAdapter == null) { if (options.multiple) { options.dropdownAdapter = Dropdown; } else { var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); options.dropdownAdapter = SearchableDropdown; } if (options.minimumResultsForSearch !== 0) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, MinimumResultsForSearch ); } if (options.closeOnSelect) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, CloseOnSelect ); } if ( options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null ) { var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, DropdownCSS ); } options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, AttachBody ); } if (options.selectionAdapter == null) { if (options.multiple) { options.selectionAdapter = MultipleSelection; } else { options.selectionAdapter = SingleSelection; } // Add the placeholder mixin if a placeholder was specified if (options.placeholder != null) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, Placeholder ); } if (options.allowClear) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, AllowClear ); } if (options.multiple) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, SelectionSearch ); } if ( options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null ) { var ContainerCSS = require(options.amdBase + 'compat/containerCss'); options.selectionAdapter = Utils.Decorate( options.selectionAdapter, ContainerCSS ); } options.selectionAdapter = Utils.Decorate( options.selectionAdapter, EventRelay ); } if (typeof options.language === 'string') { // Check if the language is specified with a region if (options.language.indexOf('-') > 0) { // Extract the region information if it is included var languageParts = options.language.split('-'); var baseLanguage = languageParts[0]; options.language = [options.language, baseLanguage]; } else { options.language = [options.language]; } } if ($.isArray(options.language)) { var languages = new Translation(); options.language.push('en'); var languageNames = options.language; for (var l = 0; l < languageNames.length; l++) { var name = languageNames[l]; var language = {}; try { // Try to load it with the original name language = Translation.loadPath(name); } catch (e) { try { // If we couldn't load it, check if it wasn't the full path name = this.defaults.amdLanguageBase + name; language = Translation.loadPath(name); } catch (ex) { // The translation could not be loaded at all. Sometimes this is // because of a configuration problem, other times this can be // because of how Select2 helps load all possible translation files. if (options.debug && window.console && console.warn) { console.warn( 'Select2: The language file for "' + name + '" could not be ' + 'automatically loaded. A fallback will be used instead.' ); } continue; } } languages.extend(language); } options.translations = languages; } else { var baseTranslation = Translation.loadPath( this.defaults.amdLanguageBase + 'en' ); var customTranslation = new Translation(options.language); customTranslation.extend(baseTranslation); options.translations = customTranslation; } return options; }; Defaults.prototype.reset = function() { function stripDiacritics(text) { // Used 'uni range + named function' from http://jsperf.com/diacritics/18 function match(a) { return DIACRITICS[a] || a; } return text.replace(/[^\u0000-\u007E]/g, match); } function matcher(params, data) { // Always return the object if there is nothing to compare if ($.trim(params.term) === '') { return data; } // Do a recursive check for options with children if (data.children && data.children.length > 0) { // Clone the data object if there are children // This is required as we modify the object to remove any non-matches var match = $.extend(true, {}, data); // Check each child of the option for (var c = data.children.length - 1; c >= 0; c--) { var child = data.children[c]; var matches = matcher(params, child); // If there wasn't a match, remove the object in the array if (matches == null) { match.children.splice(c, 1); } } // If any children matched, return the new object if (match.children.length > 0) { return match; } // If there were no matching children, check just the plain object return matcher(params, match); } var original = stripDiacritics(data.text).toUpperCase(); var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term if (original.indexOf(term) > -1) { return data; } // If it doesn't contain the term, don't return anything return null; } this.defaults = { amdBase: './', amdLanguageBase: './i18n/', closeOnSelect: true, debug: false, dropdownAutoWidth: true, escapeMarkup: Utils.escapeMarkup, language: EnglishTranslation, matcher: matcher, minimumInputLength: 0, maximumInputLength: 0, maximumSelectionLength: 0, minimumResultsForSearch: 0, selectOnClose: false, containerCssClass: 'wpmui-select2 :all:', dropdownCssClass: 'wpmui-select2', sorter: function(data) { return data; }, templateResult: function(result) { return result.text; }, templateSelection: function(selection) { return selection.text; }, theme: 'default', width: 'resolve' }; }; Defaults.prototype.set = function(key, value) { var camelKey = $.camelCase(key); var data = {}; data[camelKey] = value; var convertedData = Utils._convertData(data); $.extend(this.defaults, convertedData); }; var defaults = new Defaults(); return defaults; }); S2.define('select2/options', [ 'require', 'jquery', './defaults', './utils' ], function(require, $, Defaults, Utils) { function Options(options, $element) { this.options = options; if ($element != null) { this.fromElement($element); } this.options = Defaults.apply(this.options); if ($element && $element.is('input')) { var InputCompat = require(this.get('amdBase') + 'compat/inputData'); this.options.dataAdapter = Utils.Decorate( this.options.dataAdapter, InputCompat ); } } Options.prototype.fromElement = function($e) { var excludedData = ['select2']; if (this.options.multiple == null) { this.options.multiple = $e.prop('multiple'); } if (this.options.disabled == null) { this.options.disabled = $e.prop('disabled'); } if (this.options.language == null) { if ($e.prop('lang')) { this.options.language = $e.prop('lang').toLowerCase(); } else if ($e.closest('[lang]').prop('lang')) { this.options.language = $e.closest('[lang]').prop('lang'); } } if (this.options.dir == null) { if ($e.prop('dir')) { this.options.dir = $e.prop('dir'); } else if ($e.closest('[dir]').prop('dir')) { this.options.dir = $e.closest('[dir]').prop('dir'); } else { this.options.dir = 'ltr'; } } $e.prop('disabled', this.options.disabled); $e.prop('multiple', this.options.multiple); if ($e.data('select2Tags')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags="true"` attributes and will be ' + 'removed in future versions of Select2.' ); } $e.data('data', $e.data('select2Tags')); $e.data('tags', true); } if ($e.data('ajaxUrl')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.' ); } $e.attr('ajax--url', $e.data('ajaxUrl')); $e.data('ajax--url', $e.data('ajaxUrl')); } var dataset = {}; // Prefer the element's `dataset` attribute if it exists // jQuery 1.x does not correctly handle data attributes with multiple dashes if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { dataset = $.extend(true, {}, $e[0].dataset, $e.data()); } else { dataset = $e.data(); } var data = $.extend(true, {}, dataset); data = Utils._convertData(data); for (var key in data) { if ($.inArray(key, excludedData) > -1) { continue; } if ($.isPlainObject(this.options[key])) { $.extend(this.options[key], data[key]); } else { this.options[key] = data[key]; } } return this; }; Options.prototype.get = function(key) { return this.options[key]; }; Options.prototype.set = function(key, val) { this.options[key] = val; }; return Options; }); S2.define('select2/core', [ 'jquery', './options', './utils', './keys' ], function($, Options, Utils, KEYS) { var Select2 = function($element, options) { if ($element.data('select2') != null) { $element.data('select2').destroy(); } this.$element = $element; this.id = this._generateId($element); options = options || {}; this.options = new Options(options, $element); Select2.__super__.constructor.call(this); // Set up the tabindex var tabindex = $element.attr('tabindex') || 0; $element.data('old-tabindex', tabindex); $element.attr('tabindex', '-1'); // Set up containers and adapters var DataAdapter = this.options.get('dataAdapter'); this.dataAdapter = new DataAdapter($element, this.options); var $container = this.render(); this._placeContainer($container); var SelectionAdapter = this.options.get('selectionAdapter'); this.selection = new SelectionAdapter($element, this.options); this.$selection = this.selection.render(); this.selection.position(this.$selection, $container); var DropdownAdapter = this.options.get('dropdownAdapter'); this.dropdown = new DropdownAdapter($element, this.options); this.$dropdown = this.dropdown.render(); this.dropdown.position(this.$dropdown, $container); var ResultsAdapter = this.options.get('resultsAdapter'); this.results = new ResultsAdapter($element, this.options, this.dataAdapter); this.$results = this.results.render(); this.results.position(this.$results, this.$dropdown); // Bind events var self = this; // Bind the container to all of the adapters this._bindAdapters(); // Register any DOM event handlers this._registerDomEvents(); // Register any internal event handlers this._registerDataEvents(); this._registerSelectionEvents(); this._registerDropdownEvents(); this._registerResultsEvents(); this._registerEvents(); // Set the initial state this.dataAdapter.current(function(initialData) { self.trigger('selection:update', { data: initialData }); }); // Hide the original select $element.addClass('select2-hidden-accessible'); $element.attr('aria-hidden', 'true'); // Synchronize any monitored attributes this._syncAttributes(); $element.data('select2', this); }; Utils.Extend(Select2, Utils.Observable); Select2.prototype._generateId = function($element) { var id = ''; if ($element.attr('id') != null) { id = $element.attr('id'); } else if ($element.attr('name') != null) { id = $element.attr('name') + '-' + Utils.generateChars(2); } else { id = Utils.generateChars(4); } id = id.replace(/(:|\.|\[|\]|,)/g, ''); id = 'select2-' + id; return id; }; Select2.prototype._placeContainer = function($container) { $container.insertAfter(this.$element); var width = this._resolveWidth(this.$element, this.options.get('width')); if (width != null) { $container.css('width', width); } }; Select2.prototype._resolveWidth = function($element, method) { var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; if (method == 'resolve') { var styleWidth = this._resolveWidth($element, 'style'); if (styleWidth != null) { return styleWidth; } return this._resolveWidth($element, 'element'); } if (method == 'element') { var elementWidth = $element.outerWidth(false); if (elementWidth <= 0) { return 'auto'; } return elementWidth + 'px'; } if (method == 'style') { var style = $element.attr('style'); if (typeof(style) !== 'string') { return null; } var attrs = style.split(';'); for (var i = 0, l = attrs.length; i < l; i = i + 1) { var attr = attrs[i].replace(/\s/g, ''); var matches = attr.match(WIDTH); if (matches !== null && matches.length >= 1) { return matches[1]; } } return null; } return method; }; Select2.prototype._bindAdapters = function() { this.dataAdapter.bind(this, this.$container); this.selection.bind(this, this.$container); this.dropdown.bind(this, this.$container); this.results.bind(this, this.$container); }; Select2.prototype._registerDomEvents = function() { var self = this; this.$element.on('change.select2', function() { self.dataAdapter.current(function(data) { self.trigger('selection:update', { data: data }); }); }); this.$element.on('focus.select2', function(evt) { self.trigger('focus', evt); }); this._syncA = Utils.bind(this._syncAttributes, this); this._syncS = Utils.bind(this._syncSubtree, this); if (this.$element[0].attachEvent) { this.$element[0].attachEvent('onpropertychange', this._syncA); } var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; if (observer != null) { this._observer = new observer(function(mutations) { $.each(mutations, self._syncA); $.each(mutations, self._syncS); }); this._observer.observe(this.$element[0], { attributes: true, childList: true, subtree: false }); } else if (this.$element[0].addEventListener) { this.$element[0].addEventListener( 'DOMAttrModified', self._syncA, false ); this.$element[0].addEventListener( 'DOMNodeInserted', self._syncS, false ); this.$element[0].addEventListener( 'DOMNodeRemoved', self._syncS, false ); } }; Select2.prototype._registerDataEvents = function() { var self = this; this.dataAdapter.on('*', function(name, params) { self.trigger(name, params); }); }; Select2.prototype._registerSelectionEvents = function() { var self = this; var nonRelayEvents = ['toggle', 'focus']; this.selection.on('toggle', function() { self.toggleDropdown(); }); this.selection.on('focus', function(params) { self.focus(params); }); this.selection.on('*', function(name, params) { if ($.inArray(name, nonRelayEvents) !== -1) { return; } self.trigger(name, params); }); }; Select2.prototype._registerDropdownEvents = function() { var self = this; this.dropdown.on('*', function(name, params) { self.trigger(name, params); }); }; Select2.prototype._registerResultsEvents = function() { var self = this; this.results.on('*', function(name, params) { self.trigger(name, params); }); }; Select2.prototype._registerEvents = function() { var self = this; this.on('open', function() { self.$container.addClass('select2-container--open'); }); this.on('close', function() { self.$container.removeClass('select2-container--open'); }); this.on('enable', function() { self.$container.removeClass('select2-container--disabled'); }); this.on('disable', function() { self.$container.addClass('select2-container--disabled'); }); this.on('blur', function() { self.$container.removeClass('select2-container--focus'); }); this.on('query', function(params) { if (!self.isOpen()) { self.trigger('open', {}); } this.dataAdapter.query(params, function(data) { self.trigger('results:all', { data: data, query: params }); }); }); this.on('query:append', function(params) { this.dataAdapter.query(params, function(data) { self.trigger('results:append', { data: data, query: params }); }); }); this.on('keypress', function(evt) { var key = evt.which; if (self.isOpen()) { if (key === KEYS.ESC || key === KEYS.TAB || (key === KEYS.UP && evt.altKey)) { self.close(); evt.preventDefault(); } else if (key === KEYS.ENTER) { self.trigger('results:select', {}); evt.preventDefault(); } else if ((key === KEYS.SPACE && evt.ctrlKey)) { self.trigger('results:toggle', {}); evt.preventDefault(); } else if (key === KEYS.UP) { self.trigger('results:previous', {}); evt.preventDefault(); } else if (key === KEYS.DOWN) { self.trigger('results:next', {}); evt.preventDefault(); } } else { if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN && evt.altKey)) { self.open(); evt.preventDefault(); } } }); }; Select2.prototype._syncAttributes = function() { this.options.set('disabled', this.$element.prop('disabled')); if (this.options.get('disabled')) { if (this.isOpen()) { this.close(); } this.trigger('disable', {}); } else { this.trigger('enable', {}); } }; Select2.prototype._syncSubtree = function(evt, mutations) { var changed = false; var self = this; // Ignore any mutation events raised for elements that aren't options or // optgroups. This handles the case when the select element is destroyed if ( evt && evt.target && ( evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' ) ) { return; } if (!mutations) { // If mutation events aren't supported, then we can only assume that the // change affected the selections changed = true; } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { for (var n = 0; n < mutations.addedNodes.length; n++) { var node = mutations.addedNodes[n]; if (node.selected) { changed = true; } } } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { changed = true; } // Only re-pull the data if we think there is a change if (changed) { this.dataAdapter.current(function(currentData) { self.trigger('selection:update', { data: currentData }); }); } }; /** * Override the trigger method to automatically trigger pre-events when * there are events that can be prevented. */ Select2.prototype.trigger = function(name, args) { var actualTrigger = Select2.__super__.trigger; var preTriggerMap = { 'open': 'opening', 'close': 'closing', 'select': 'selecting', 'unselect': 'unselecting' }; if (args === undefined) { args = {}; } if (name in preTriggerMap) { var preTriggerName = preTriggerMap[name]; var preTriggerArgs = { prevented: false, name: name, args: args }; actualTrigger.call(this, preTriggerName, preTriggerArgs); if (preTriggerArgs.prevented) { args.prevented = true; return; } } actualTrigger.call(this, name, args); }; Select2.prototype.toggleDropdown = function() { if (this.options.get('disabled')) { return; } if (this.isOpen()) { this.close(); } else { this.open(); } }; Select2.prototype.open = function() { if (this.isOpen()) { return; } this.trigger('query', {}); }; Select2.prototype.close = function() { if (!this.isOpen()) { return; } this.trigger('close', {}); }; Select2.prototype.isOpen = function() { return this.$container.hasClass('select2-container--open'); }; Select2.prototype.hasFocus = function() { return this.$container.hasClass('select2-container--focus'); }; Select2.prototype.focus = function(data) { // No need to re-trigger focus events if we are already focused if (this.hasFocus()) { return; } this.$container.addClass('select2-container--focus'); this.trigger('focus', {}); }; Select2.prototype.enable = function(args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("enable")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop("disabled")' + ' instead.' ); } if (args == null || args.length === 0) { args = [true]; } var disabled = !args[0]; this.$element.prop('disabled', disabled); }; Select2.prototype.data = function() { if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) { console.warn( 'Select2: Data can no longer be set using `select2("data")`. You ' + 'should consider setting the value instead using `$element.val()`.' ); } var data = []; this.dataAdapter.current(function(currentData) { data = currentData; }); return data; }; Select2.prototype.val = function(args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("val")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.' ); } if (args == null || args.length === 0) { return this.$element.val(); } var newVal = args[0]; if ($.isArray(newVal)) { newVal = $.map(newVal, function(obj) { return obj.toString(); }); } this.$element.val(newVal).trigger('change'); }; Select2.prototype.destroy = function() { this.$container.remove(); if (this.$element[0].detachEvent) { this.$element[0].detachEvent('onpropertychange', this._syncA); } if (this._observer != null) { this._observer.disconnect(); this._observer = null; } else if (this.$element[0].removeEventListener) { this.$element[0] .removeEventListener('DOMAttrModified', this._syncA, false); this.$element[0] .removeEventListener('DOMNodeInserted', this._syncS, false); this.$element[0] .removeEventListener('DOMNodeRemoved', this._syncS, false); } this._syncA = null; this._syncS = null; this.$element.off('.select2'); this.$element.attr('tabindex', this.$element.data('old-tabindex')); this.$element.removeClass('select2-hidden-accessible'); this.$element.attr('aria-hidden', 'false'); this.$element.removeData('select2'); this.dataAdapter.destroy(); this.selection.destroy(); this.dropdown.destroy(); this.results.destroy(); this.dataAdapter = null; this.selection = null; this.dropdown = null; this.results = null; }; Select2.prototype.render = function() { var $container = $( '' + '' + '' + '' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container.addClass('select2-container--' + this.options.get('theme')); $container.data('element', this.$element); return $container; }; return Select2; }); S2.define('select2/compat/utils', [ 'jquery' ], function($) { function syncCssClasses($dest, $src, adapter) { var classes, replacements = [], adapted; classes = $.trim($dest.attr('class')); if (classes) { classes = '' + classes; // for IE which returns object $(classes.split(/\s+/)).each(function() { // Save all Select2 classes if (this.indexOf('select2-') === 0) { replacements.push(this); } }); } classes = $.trim($src.attr('class')); if (classes) { classes = '' + classes; // for IE which returns object $(classes.split(/\s+/)).each(function() { // Only adapt non-Select2 classes if (this.indexOf('select2-') !== 0) { adapted = adapter(this); if (adapted != null) { replacements.push(adapted); } } }); } $dest.attr('class', replacements.join(' ')); } return { syncCssClasses: syncCssClasses }; }); S2.define('select2/compat/containerCss', [ 'jquery', './utils' ], function($, CompatUtils) { // No-op CSS adapter that discards all classes by default function _containerAdapter(clazz) { return null; } function ContainerCSS() {} ContainerCSS.prototype.render = function(decorated) { var $container = decorated.call(this); var containerCssClass = this.options.get('containerCssClass') || ''; if ($.isFunction(containerCssClass)) { containerCssClass = containerCssClass(this.$element); } var containerCssAdapter = this.options.get('adaptContainerCssClass'); containerCssAdapter = containerCssAdapter || _containerAdapter; if (containerCssClass.indexOf(':all:') !== -1) { containerCssClass = containerCssClass.replace(':all:', ''); var _cssAdapter = containerCssAdapter; containerCssAdapter = function(clazz) { var adapted = _cssAdapter(clazz); if (adapted != null) { // Append the old one along with the adapted one return adapted + ' ' + clazz; } return clazz; }; } var containerCss = this.options.get('containerCss') || {}; if ($.isFunction(containerCss)) { containerCss = containerCss(this.$element); } CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); $container.css(containerCss); $container.addClass(containerCssClass); return $container; }; return ContainerCSS; }); S2.define('select2/compat/dropdownCss', [ 'jquery', './utils' ], function($, CompatUtils) { // No-op CSS adapter that discards all classes by default function _dropdownAdapter(clazz) { return null; } function DropdownCSS() {} DropdownCSS.prototype.render = function(decorated) { var $dropdown = decorated.call(this); var dropdownCssClass = this.options.get('dropdownCssClass') || ''; if ($.isFunction(dropdownCssClass)) { dropdownCssClass = dropdownCssClass(this.$element); } var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; if (dropdownCssClass.indexOf(':all:') !== -1) { dropdownCssClass = dropdownCssClass.replace(':all:', ''); var _cssAdapter = dropdownCssAdapter; dropdownCssAdapter = function(clazz) { var adapted = _cssAdapter(clazz); if (adapted != null) { // Append the old one along with the adapted one return adapted + ' ' + clazz; } return clazz; }; } var dropdownCss = this.options.get('dropdownCss') || {}; if ($.isFunction(dropdownCss)) { dropdownCss = dropdownCss(this.$element); } CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); $dropdown.css(dropdownCss); $dropdown.addClass(dropdownCssClass); return $dropdown; }; return DropdownCSS; }); S2.define('select2/compat/initSelection', [ 'jquery' ], function($) { function InitSelection(decorated, $element, options) { if (options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `initSelection` option has been deprecated in favor' + ' of a custom data adapter that overrides the `current` method. ' + 'This method is now called multiple times instead of a single ' + 'time when the instance is initialized. Support will be removed ' + 'for the `initSelection` option in future versions of Select2' ); } this.initSelection = options.get('initSelection'); this._isInitialized = false; decorated.call(this, $element, options); } InitSelection.prototype.current = function(decorated, callback) { var self = this; if (this._isInitialized) { decorated.call(this, callback); return; } this.initSelection.call(null, this.$element, function(data) { self._isInitialized = true; if (!$.isArray(data)) { data = [data]; } callback(data); }); }; return InitSelection; }); S2.define('select2/compat/inputData', [ 'jquery' ], function($) { function InputData(decorated, $element, options) { this._currentData = []; this._valueSeparator = options.get('valueSeparator') || ','; if ($element.prop('type') === 'hidden') { if (options.get('debug') && console && console.warn) { console.warn( 'Select2: Using a hidden input with Select2 is no longer ' + 'supported and may stop working in the future. It is recommended ' + 'to use a `
        style="display:none">
        widget if:', 'custom-sidebars' )); ?>
        style="display:none">
        style="display:none">
        style="display:none">
        style="display:none">
        style="display:none">
        style="display:none">
        style="display:none"> name; /* translators: %s is replaced with the post type name */ $lbl_all = sprintf( __( 'Only for specific %s', 'custom-sidebars' ), $type_item->labels->name ); /* translators: %s is replaced with the post type name */ $lbl_single = sprintf( __( 'Only these %s:', 'custom-sidebars' ), $type_item->labels->name ); $is_selected = in_array( $type_item->name, $cond['posttypes'] ); $ajax_url = admin_url( 'admin-ajax.php?action=cs-ajax&do=visibility&posttype=' . $type_item->name ); $posts = array(); if ( ! empty( $cond[ $row_id ] ) ) { $posts = get_posts( array( 'post_type' => $type_item->name, 'order_by' => 'title', 'order' => 'ASC', 'numberposts' => '0', 'include' => implode( ',', $cond[ $row_id ] ), ) ); } ?>
        style="display:none">
        style="display:none">
        name; $ajax_url = admin_url( 'admin-ajax.php?action=cs-ajax&do=visibility&tag=' . $tax_item->name ); $tags = array(); if ( ! empty( $cond[ $row_id ] ) ) { $tags = get_terms( $tax_item->name, array( 'include' => implode( ',', $cond[ $row_id ] ), 'hide_empty' => false, ) ); } ?>
        style="display:none">