Version Description
- Compatibility fix in the MooRainbow for the Visual Composer plugin
- RokBox 2 support in the Login Button widget
- Fix for the multiple body classes in Page Suffix gizmo
- Updated IE11 detection
- Updated Pretty Print JS files
- Fixed font style issues caused by FontAwesome 3.2.1 icons
- Added Font Awesome 4 assets for future use
- Fixed missing special characters with Google fonts ie. Polish characters
- Removed RocketTheme references in Copyright widget
- Fixed the display of overrided options in the theme settings
- Gantry admin UI fixes for the WordPress 3.8
Download this release
Release Info
Developer | gantry |
Plugin | Gantry 4 Framework |
Version | 4.1.0 |
Comparing to | |
See all releases |
Code changes from version 4.0.8 to 4.1.0
- CHANGELOG.php +14 -1
- admin/admin_functions.php +3 -3
- admin/forms/fields/imagepicker.php +1 -1
- admin/forms/fields/selectbox.php +2 -2
- admin/forms/fields/updater.php +1 -1
- admin/forms/groups/innertabs.php +12 -2
- admin/index.php +24 -9
- admin/override.php +4 -4
- admin/widgets/assignments/js/assignments.js +32 -1
- admin/widgets/colorchooser/css/mooRainbow-2.0.css +13 -4
- admin/widgets/colorchooser/css/mooRainbow-2.0.less +18 -3
- admin/widgets/colorchooser/js/mooRainbow-2.0.js +9 -3
- admin/widgets/gantry-administrator.css +1 -1
- admin/widgets/gantry-widgets.css +74 -25
- admin/widgets/gantry-widgets.js +2 -2
- admin/widgets/gantry.css +4 -4
- admin/widgets/images/divider-bar-old.png +0 -0
- admin/widgets/images/divider-bar.png +0 -0
- admin/widgets/selectbox/js/selectbox.js +1 -1
- admin_functions.php +27 -2
- assets/jui/fonts/font-awesome4/FontAwesome.otf +0 -0
- assets/jui/fonts/font-awesome4/fontawesome-webfont.eot +0 -0
- assets/jui/fonts/font-awesome4/fontawesome-webfont.svg +414 -0
- assets/jui/fonts/font-awesome4/fontawesome-webfont.ttf +0 -0
- assets/jui/fonts/font-awesome4/fontawesome-webfont.woff +0 -0
- assets/jui/less/font-awesome.less +42 -1
- assets/jui/less/font-awesome/mixins.less +1 -1
- assets/jui/less/font-awesome4/bordered-pulled.less +16 -0
- assets/jui/less/font-awesome4/core.less +12 -0
- assets/jui/less/font-awesome4/fixed-width.less +6 -0
- assets/jui/less/font-awesome4/font-awesome.less +17 -0
- assets/jui/less/font-awesome4/icons.less +412 -0
- assets/jui/less/font-awesome4/larger.less +13 -0
- assets/jui/less/font-awesome4/list.less +19 -0
- assets/jui/less/font-awesome4/mixins.less +20 -0
- assets/jui/less/font-awesome4/path.less +14 -0
- assets/jui/less/font-awesome4/rotated-flipped.less +9 -0
- assets/jui/less/font-awesome4/spinning.less +30 -0
- assets/jui/less/font-awesome4/stacked.less +20 -0
- assets/jui/less/font-awesome4/variables.less +381 -0
- core/gantry.class.php +6 -6
- core/gantrybrowser.class.php +9 -3
- core/gantryjson.class.php +1 -1
- core/utilities/gantrycache.class.php +2 -2
- css/gantrydivider.css +9 -3
- functions.php +1 -1
- gantry.php +3 -2
- gizmos/font.php +1 -1
- gizmos/pagesuffix.php +6 -2
- js/browser-engines.js +241 -0
- libs/google-code-prettify/lang-apollo.js +1 -1
- libs/google-code-prettify/lang-basic.js +3 -0
- libs/google-code-prettify/lang-clj.js +1 -1
- libs/google-code-prettify/lang-css.js +2 -2
- libs/google-code-prettify/lang-dart.js +3 -0
- libs/google-code-prettify/lang-erlang.js +2 -0
- libs/google-code-prettify/lang-go.js +1 -1
- libs/google-code-prettify/lang-hs.js +1 -1
- libs/google-code-prettify/lang-lisp.js +2 -2
- libs/google-code-prettify/lang-llvm.js +1 -0
- libs/google-code-prettify/lang-lua.js +1 -1
- libs/google-code-prettify/lang-matlab.js +6 -0
- libs/google-code-prettify/lang-ml.js +1 -1
- libs/google-code-prettify/lang-mumps.js +2 -0
- libs/google-code-prettify/lang-n.js +1 -1
- libs/google-code-prettify/lang-pascal.js +3 -0
- libs/google-code-prettify/lang-r.js +2 -0
- libs/google-code-prettify/lang-rd.js +1 -0
- libs/google-code-prettify/lang-scala.js +1 -1
- libs/google-code-prettify/lang-sql.js +1 -1
- libs/google-code-prettify/lang-tcl.js +3 -0
- libs/google-code-prettify/lang-tex.js +1 -1
- libs/google-code-prettify/lang-vb.js +2 -2
- libs/google-code-prettify/lang-vhdl.js +1 -1
- libs/google-code-prettify/lang-wiki.js +1 -1
- libs/google-code-prettify/prettify.css +1 -31
- libs/google-code-prettify/prettify.js +491 -313
- libs/google-code-prettify/run_prettify.js +34 -0
- libs/phpQuery.php +5702 -0
- readme.txt +18 -2
- widgets/breadcrumbs.php +1 -1
- widgets/copyright.php +1 -2
- widgets/gantrymenu/themes/default/js/responsive-selectbox.js +103 -12
- widgets/gantrymenu/themes/default/js/responsive.js +87 -12
- widgets/gantrymenu/themes/default/js/rokmediaqueries.js +152 -17
- widgets/gantrymenu/themes/default/js/sidemenu.js +130 -0
- widgets/loginbutton.php +15 -2
- widgets/loginform.php +1 -1
CHANGELOG.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Gantry For Wordpress
|
4 |
*
|
5 |
-
* @version $Id: CHANGELOG.php
|
6 |
* @author RocketTheme http://www.rockettheme.com
|
7 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
8 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -27,6 +27,19 @@ Legend:
|
|
27 |
- -> Removed
|
28 |
! -> Note
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
------- 4.0.8 Release [] ------
|
31 |
+ Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
|
32 |
# Fix for the Gizmo options not being saved/loaded in the Presets of the theme
|
2 |
/**
|
3 |
* Gantry For Wordpress
|
4 |
*
|
5 |
+
* @version $Id: CHANGELOG.php 60307 2013-12-12 11:28:57Z jakub $
|
6 |
* @author RocketTheme http://www.rockettheme.com
|
7 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
8 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
27 |
- -> Removed
|
28 |
! -> Note
|
29 |
|
30 |
+
------- 4.1.0 Release [] ------
|
31 |
+
# Compatibility fix in the MooRainbow for the Visual Composer plugin
|
32 |
+
^ RokBox 2 support in the Login Button widget
|
33 |
+
# Fix for the multiple body classes in Page Suffix gizmo
|
34 |
+
# Updated IE11 detection
|
35 |
+
^ Updated Pretty Print JS files
|
36 |
+
# Fixed font style issues caused by Font Awesome 3.2.1 icons
|
37 |
+
+ Added Font Awesome 4 assets for future use
|
38 |
+
# Fixed missing special characters with Google fonts ie. Polish characters
|
39 |
+
^ Removed RocketTheme references in Copyright widget
|
40 |
+
# Fixed the display of overrided options in the theme settings
|
41 |
+
# Gantry admin UI fixes for the WordPress 3.8
|
42 |
+
|
43 |
------- 4.0.8 Release [] ------
|
44 |
+ Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
|
45 |
# Fix for the Gizmo options not being saved/loaded in the Presets of the theme
|
admin/admin_functions.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: admin_functions.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -178,7 +178,7 @@ function gantry_admin_render_edit_override_item($element)
|
|
178 |
$buffer .= $label;
|
179 |
$buffer .= "</div>";
|
180 |
$buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
|
181 |
-
$buffer .= "<span class=\"arrow\"><span></span></span>";
|
182 |
$buffer .= $element->getInput() . "\n";
|
183 |
$buffer .= "</div></div>\n";
|
184 |
$buffer .= "</div>\n";
|
@@ -197,7 +197,7 @@ function gantry_admin_render_edit_item($element)
|
|
197 |
$buffer .= $label;
|
198 |
$buffer .= "</div>";
|
199 |
$buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
|
200 |
-
$buffer .= "<span class=\"arrow\"><span></span></span>";
|
201 |
$buffer .= $element->getInput() . "\n";
|
202 |
$buffer .= "</div></div>\n";
|
203 |
$buffer .= "</div>\n";
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: admin_functions.php 60288 2013-12-10 13:10:52Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
178 |
$buffer .= $label;
|
179 |
$buffer .= "</div>";
|
180 |
$buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
|
181 |
+
$buffer .= "<span class=\"rt-arrow\"><span></span></span>";
|
182 |
$buffer .= $element->getInput() . "\n";
|
183 |
$buffer .= "</div></div>\n";
|
184 |
$buffer .= "</div>\n";
|
197 |
$buffer .= $label;
|
198 |
$buffer .= "</div>";
|
199 |
$buffer .= "<div class=\"g4-cell g4-col2\"><div class=\"g4-col2-wrap\">\n";
|
200 |
+
$buffer .= "<span class=\"rt-arrow\"><span></span></span>";
|
201 |
$buffer .= $element->getInput() . "\n";
|
202 |
$buffer .= "</div></div>\n";
|
203 |
$buffer .= "</div>\n";
|
admin/forms/fields/imagepicker.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version 4.0
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version 4.1.0 December 12, 2013
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
admin/forms/fields/selectbox.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: selectbox.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -88,7 +88,7 @@ class GantryFormFieldSelectBox extends GantryFormField
|
|
88 |
|
89 |
// $html .= " <div class='selectbox-top'>";
|
90 |
// $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
|
91 |
-
// $html .= " <div class='arrow'></div>";
|
92 |
// $html .= " </div>";
|
93 |
// $html .= " <div class='selectbox-dropdown'>";
|
94 |
// $html .= " <ul>" . $lis . "</ul>";
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: selectbox.php 60288 2013-12-10 13:10:52Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
88 |
|
89 |
// $html .= " <div class='selectbox-top'>";
|
90 |
// $html .= " <div class='selected'><span>" . $activeElement . "</span></div>";
|
91 |
+
// $html .= " <div class='rt-arrow'></div>";
|
92 |
// $html .= " </div>";
|
93 |
// $html .= " <div class='selectbox-dropdown'>";
|
94 |
// $html .= " <ul>" . $lis . "</ul>";
|
admin/forms/fields/updater.php
CHANGED
@@ -27,7 +27,7 @@ class GantryFormFieldUpdater extends GantryFormField
|
|
27 |
|
28 |
$currentVersion = GANTRY_VERSION;
|
29 |
|
30 |
-
if ($currentVersion == "\4.0
|
31 |
|
32 |
// curl check
|
33 |
if (!function_exists('curl_version')) {
|
27 |
|
28 |
$currentVersion = GANTRY_VERSION;
|
29 |
|
30 |
+
if ($currentVersion == "\4.1.0") $currentVersion = "[DEV]";
|
31 |
|
32 |
// curl check
|
33 |
if (!function_exists('curl_version')) {
|
admin/forms/groups/innertabs.php
CHANGED
@@ -31,14 +31,24 @@ class GantryFormGroupInnerTabs extends GantryFormGroup
|
|
31 |
<ul>
|
32 |
<?php
|
33 |
$i = 0;
|
|
|
34 |
foreach ($this->fields as $field):
|
|
|
|
|
35 |
$classes = '';
|
36 |
if (!$i) $classes .= "first active";
|
37 |
if ($i == count($this->fields) - 1) $classes .= ' last';
|
|
|
|
|
|
|
|
|
38 |
?>
|
39 |
<li class="<?php echo $classes;?>">
|
40 |
-
<span class="g4-cell g4-col1"
|
41 |
-
|
|
|
|
|
|
|
42 |
<?php
|
43 |
$i++;
|
44 |
endforeach;
|
31 |
<ul>
|
32 |
<?php
|
33 |
$i = 0;
|
34 |
+
$involvedCounts = array();
|
35 |
foreach ($this->fields as $field):
|
36 |
+
$involved = 0;
|
37 |
+
$name = $field->name;
|
38 |
$classes = '';
|
39 |
if (!$i) $classes .= "first active";
|
40 |
if ($i == count($this->fields) - 1) $classes .= ' last';
|
41 |
+
foreach ($field->fields as $inner_field) {
|
42 |
+
if ($inner_field->type != 'hidden' && $inner_field->type != 'innertabs' && $inner_field->setinoverride && $inner_field->variance) $involved++;
|
43 |
+
}
|
44 |
+
$involvedCounts[$name] = $involved;
|
45 |
?>
|
46 |
<li class="<?php echo $classes;?>">
|
47 |
+
<span class="g4-cell g4-col1">
|
48 |
+
<span class="badge"><?php echo get_badges_layout($involvedCounts[$name]); ?></span>
|
49 |
+
<?php _ge($field->getLabel());?>
|
50 |
+
</span>
|
51 |
+
</li>
|
52 |
<?php
|
53 |
$i++;
|
54 |
endforeach;
|
admin/index.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: index.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -151,7 +151,7 @@ if ($override) {
|
|
151 |
<div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
|
152 |
<div id="g4-flag">
|
153 |
<?php echo $flag_text; ?>
|
154 |
-
<span class="arrow"><span></span></span>
|
155 |
</div>
|
156 |
</div>
|
157 |
<div id="g4-details"<?php echo $presetsShowing; ?>>
|
@@ -229,9 +229,16 @@ if ($override) {
|
|
229 |
foreach ($fields as $fname => $field) {
|
230 |
$position = $field->panel_position;
|
231 |
|
232 |
-
if
|
233 |
-
if
|
234 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
|
236 |
);
|
237 |
}
|
@@ -243,17 +250,25 @@ if ($override) {
|
|
243 |
if ($name == 'toolbar-panel') continue;
|
244 |
?>
|
245 |
<li class="<?php echo $tabs[$name];?>">
|
246 |
-
<span class="badge"><?php echo get_badges_layout($
|
247 |
<?php echo _g($fieldSet->label);?>
|
248 |
-
<span class="arrow"><span><span></span></span></span>
|
249 |
</li>
|
250 |
<?php endforeach;?>
|
251 |
<?php if ($override): ?>
|
252 |
<?php $active_assignments = $activeTab == count($fieldSets) ? ' active' : ''; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
<li class="assignments<?php echo $active_assignments; ?>">
|
254 |
-
<span class="badge"><?php echo get_badges_layout($
|
255 |
<?php _ge('Assignments');?>
|
256 |
-
<span class="arrow"><span><span></span></span></span>
|
257 |
</li>
|
258 |
<?php endif;?>
|
259 |
</ul>
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: index.php 60302 2013-12-11 13:17:14Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
151 |
<div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
|
152 |
<div id="g4-flag">
|
153 |
<?php echo $flag_text; ?>
|
154 |
+
<span class="rt-arrow"><span></span></span>
|
155 |
</div>
|
156 |
</div>
|
157 |
<div id="g4-details"<?php echo $presetsShowing; ?>>
|
229 |
foreach ($fields as $fname => $field) {
|
230 |
$position = $field->panel_position;
|
231 |
|
232 |
+
if($field->type != 'hidden' && $field->type != 'innertabs' && $field->setinoverride && $field->variance) $involved++;
|
233 |
+
if($field->type == 'innertabs') {
|
234 |
+
foreach($field->fields as $inner_tab) {
|
235 |
+
foreach($inner_tab->fields as $inner_field) {
|
236 |
+
if($inner_field->type != 'hidden' && $inner_field->setinoverride && $inner_field->variance) $involved++;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
}
|
240 |
+
if($field->type == 'hidden') $position = 'hiddens';
|
241 |
+
if(!isset($positions[$position][$name])) $positions[$position][$name] = array();
|
242 |
array_push($positions[$position][$name], $field //array("name" => $field->name, "label" => $field->label, "input" => $field->input, "show_label" => $field->show_label, 'type' => $field->type)
|
243 |
);
|
244 |
}
|
250 |
if ($name == 'toolbar-panel') continue;
|
251 |
?>
|
252 |
<li class="<?php echo $tabs[$name];?>">
|
253 |
+
<span class="badge"><?php echo get_badges_layout($involvedCounts[$name]);?></span>
|
254 |
<?php echo _g($fieldSet->label);?>
|
255 |
+
<span class="rt-arrow"><span><span></span></span></span>
|
256 |
</li>
|
257 |
<?php endforeach;?>
|
258 |
<?php if ($override): ?>
|
259 |
<?php $active_assignments = $activeTab == count($fieldSets) ? ' active' : ''; ?>
|
260 |
+
<?php
|
261 |
+
$assigned_to = 0;
|
262 |
+
if(is_array($override_assignments)) {
|
263 |
+
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($override_assignments), RecursiveIteratorIterator::LEAVES_ONLY) as $countable_item) {
|
264 |
+
$assigned_to++;
|
265 |
+
};
|
266 |
+
}
|
267 |
+
?>
|
268 |
<li class="assignments<?php echo $active_assignments; ?>">
|
269 |
+
<span class="badge"><?php echo get_badges_layout($assigned_to);?></span>
|
270 |
<?php _ge('Assignments');?>
|
271 |
+
<span class="rt-arrow"><span><span></span></span></span>
|
272 |
</li>
|
273 |
<?php endif;?>
|
274 |
</ul>
|
admin/override.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: override.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -132,7 +132,7 @@ if ($override !== false) {
|
|
132 |
<div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
|
133 |
<div id="g4-flag">
|
134 |
<?php echo $flag_text; ?>
|
135 |
-
<span class="arrow"><span></span></span>
|
136 |
</div>
|
137 |
</div>
|
138 |
<div id="g4-details"<?php echo $presetsShowing; ?>>
|
@@ -222,13 +222,13 @@ if ($override !== false) {
|
|
222 |
<li class="<?php echo $tabs[$name];?>">
|
223 |
<span class="badge"><?php echo get_badges_layout($involved);?></span>
|
224 |
<?php echo _g($fieldSet->label);?>
|
225 |
-
<span class="arrow"><span><span></span></span></span>
|
226 |
</li>
|
227 |
<?php endforeach;?>
|
228 |
<li class="assignments">
|
229 |
<span class="badge"><?php echo get_badges_layout($involved);?></span>
|
230 |
<?php _ge('Assignments');?>
|
231 |
-
<span class="arrow"><span><span></span></span></span>
|
232 |
</li>
|
233 |
</ul>
|
234 |
</div>
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: override.php 60288 2013-12-10 13:10:52Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
132 |
<div id="g4-master" class="<?php echo $flag; ?> g4-size-13">
|
133 |
<div id="g4-flag">
|
134 |
<?php echo $flag_text; ?>
|
135 |
+
<span class="rt-arrow"><span></span></span>
|
136 |
</div>
|
137 |
</div>
|
138 |
<div id="g4-details"<?php echo $presetsShowing; ?>>
|
222 |
<li class="<?php echo $tabs[$name];?>">
|
223 |
<span class="badge"><?php echo get_badges_layout($involved);?></span>
|
224 |
<?php echo _g($fieldSet->label);?>
|
225 |
+
<span class="rt-arrow"><span><span></span></span></span>
|
226 |
</li>
|
227 |
<?php endforeach;?>
|
228 |
<li class="assignments">
|
229 |
<span class="badge"><?php echo get_badges_layout($involved);?></span>
|
230 |
<?php _ge('Assignments');?>
|
231 |
+
<span class="rt-arrow"><span><span></span></span></span>
|
232 |
</li>
|
233 |
</ul>
|
234 |
</div>
|
admin/widgets/assignments/js/assignments.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/**
|
2 |
-
* @version $Id: assignments.js
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -324,6 +324,9 @@ Gantry.Assignments = {
|
|
324 |
if (tab) {
|
325 |
var badgeWrap = tab.getElement('.overrides-involved');
|
326 |
var badge = badgeWrap.getElement('span');
|
|
|
|
|
|
|
327 |
var value = badge.get('text').toInt();
|
328 |
if (type == '+') value += 1;
|
329 |
else value -= 1;
|
@@ -340,6 +343,34 @@ Gantry.Assignments = {
|
|
340 |
else badgeWrap.getParent('.badges-involved').removeClass('double-badge');
|
341 |
badgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
|
342 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
},
|
345 |
|
1 |
/**
|
2 |
+
* @version $Id: assignments.js 60303 2013-12-11 20:16:29Z djamil $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
324 |
if (tab) {
|
325 |
var badgeWrap = tab.getElement('.overrides-involved');
|
326 |
var badge = badgeWrap.getElement('span');
|
327 |
+
|
328 |
+
var isInnerTab = el.getParent('.inner-panel');
|
329 |
+
|
330 |
var value = badge.get('text').toInt();
|
331 |
if (type == '+') value += 1;
|
332 |
else value -= 1;
|
343 |
else badgeWrap.getParent('.badges-involved').removeClass('double-badge');
|
344 |
badgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
|
345 |
}
|
346 |
+
|
347 |
+
// badges in inner tabs
|
348 |
+
if (isInnerTab){
|
349 |
+
var index = isInnerTab.getParent('.inner-panels').getChildren().indexOf(isInnerTab),
|
350 |
+
innerPanelTab = isInnerTab.getParent('.inner-panels').getPrevious('.inner-tabs').getElements('ul > li')[index],
|
351 |
+
innerBadgeWrap = innerPanelTab.getElement('.overrides-involved'),
|
352 |
+
innerBadge = innerBadgeWrap.getElement('span');
|
353 |
+
|
354 |
+
value = innerBadge.get('text').toInt();
|
355 |
+
|
356 |
+
if (type == '+') value += 1;
|
357 |
+
else value -= 1;
|
358 |
+
|
359 |
+
if (value < 0) value = 0;
|
360 |
+
|
361 |
+
innerBadge.set('text', value);
|
362 |
+
|
363 |
+
if (!value) {
|
364 |
+
innerBadgeWrap.getParent('.badges-involved').removeClass('double-badge');
|
365 |
+
innerBadgeWrap.setStyle('display', 'none');
|
366 |
+
}
|
367 |
+
else {
|
368 |
+
if (innerBadgeWrap.getPrevious('.presets-involved').getStyle('display') == 'block') innerBadgeWrap.getParent('.badges-involved').addClass('double-badge');
|
369 |
+
else innerBadgeWrap.getParent('.badges-involved').removeClass('double-badge');
|
370 |
+
innerBadgeWrap.setStyles({'display': 'block', 'opacity': 1, 'visibility': 'visible'});
|
371 |
+
}
|
372 |
+
}
|
373 |
+
|
374 |
}
|
375 |
},
|
376 |
|
admin/widgets/colorchooser/css/mooRainbow-2.0.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/**
|
2 |
-
* @version 4.0
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -10,7 +10,7 @@
|
|
10 |
position:absolute;
|
11 |
z-index:500;
|
12 |
width:285px;
|
13 |
-
height:
|
14 |
-webkit-border-radius:4px;
|
15 |
-moz-border-radius:4px;
|
16 |
border-radius:4px;
|
@@ -31,7 +31,7 @@
|
|
31 |
font-size: 0.82em;
|
32 |
visibility:hidden;
|
33 |
}
|
34 |
-
.moor-layout .arrow {
|
35 |
top:50%;
|
36 |
left:0;
|
37 |
margin-top:-6px;
|
@@ -143,7 +143,7 @@
|
|
143 |
-webkit-border-radius:2px;
|
144 |
-moz-border-radius:2px;
|
145 |
border-radius:2px;
|
146 |
-
font-size:
|
147 |
line-height: 1em;
|
148 |
}
|
149 |
.moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex { display:block; }
|
@@ -218,3 +218,12 @@ div.picker .overlay-transparent div {
|
|
218 |
width:30px;
|
219 |
height:31px;
|
220 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/**
|
2 |
+
* @version 4.1.0 December 12, 2013
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
10 |
position:absolute;
|
11 |
z-index:500;
|
12 |
width:285px;
|
13 |
+
height:155px;
|
14 |
-webkit-border-radius:4px;
|
15 |
-moz-border-radius:4px;
|
16 |
border-radius:4px;
|
31 |
font-size: 0.82em;
|
32 |
visibility:hidden;
|
33 |
}
|
34 |
+
.moor-layout .rt-arrow {
|
35 |
top:50%;
|
36 |
left:0;
|
37 |
margin-top:-6px;
|
143 |
-webkit-border-radius:2px;
|
144 |
-moz-border-radius:2px;
|
145 |
border-radius:2px;
|
146 |
+
font-size: 0.9em;
|
147 |
line-height: 1em;
|
148 |
}
|
149 |
.moor-layout .moor-inputs .moor-inputs-block.moor-inputs-hex { display:block; }
|
218 |
width:30px;
|
219 |
height:31px;
|
220 |
}
|
221 |
+
|
222 |
+
/** WordPress < 3.8 Compatibility **/
|
223 |
+
|
224 |
+
.gantry-pre-mp6 .moor-layout {
|
225 |
+
height: 153px;
|
226 |
+
}
|
227 |
+
.gantry-pre-mp6 .moor-inputs .moor-inputs-block input {
|
228 |
+
font-size: 1em;
|
229 |
+
}
|
admin/widgets/colorchooser/css/mooRainbow-2.0.less
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
position: absolute;
|
5 |
z-index: 500;
|
6 |
width: 285px;
|
7 |
-
height:
|
8 |
.border-radius(4px);
|
9 |
#gradient > .vertical(rgba(95, 95, 95, 0.9), rgba(51, 51, 51, 0.9));
|
10 |
.box-shadow(0 0 20px rgba(0, 0, 0, 0.5));
|
@@ -14,7 +14,7 @@
|
|
14 |
font-size: 0.82em;
|
15 |
visibility: hidden;
|
16 |
|
17 |
-
.arrow {
|
18 |
#CSSArrow > .right(6px, rgba(95, 95, 95, 0.9));
|
19 |
position: absolute;
|
20 |
left: -6px;
|
@@ -132,7 +132,7 @@
|
|
132 |
border: 1px solid #444;
|
133 |
margin: 0 4px;
|
134 |
.border-radius(2px);
|
135 |
-
font-size:
|
136 |
line-height: 1em;
|
137 |
}
|
138 |
|
@@ -223,3 +223,18 @@ div.picker {
|
|
223 |
}
|
224 |
}
|
225 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
position: absolute;
|
5 |
z-index: 500;
|
6 |
width: 285px;
|
7 |
+
height: 155px;
|
8 |
.border-radius(4px);
|
9 |
#gradient > .vertical(rgba(95, 95, 95, 0.9), rgba(51, 51, 51, 0.9));
|
10 |
.box-shadow(0 0 20px rgba(0, 0, 0, 0.5));
|
14 |
font-size: 0.82em;
|
15 |
visibility: hidden;
|
16 |
|
17 |
+
.rt-arrow {
|
18 |
#CSSArrow > .right(6px, rgba(95, 95, 95, 0.9));
|
19 |
position: absolute;
|
20 |
left: -6px;
|
132 |
border: 1px solid #444;
|
133 |
margin: 0 4px;
|
134 |
.border-radius(2px);
|
135 |
+
font-size: 0.9em;
|
136 |
line-height: 1em;
|
137 |
}
|
138 |
|
223 |
}
|
224 |
}
|
225 |
}
|
226 |
+
|
227 |
+
/** WordPress < 3.8 Compatibility **/
|
228 |
+
|
229 |
+
.gantry-pre-mp6 {
|
230 |
+
.moor-layout {
|
231 |
+
height: 153px;
|
232 |
+
}
|
233 |
+
.moor-inputs {
|
234 |
+
.moor-inputs-block {
|
235 |
+
input {
|
236 |
+
font-size: 1em;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
}
|
240 |
+
}
|
admin/widgets/colorchooser/js/mooRainbow-2.0.js
CHANGED
@@ -269,7 +269,11 @@
|
|
269 |
};
|
270 |
|
271 |
this.sets = {rgb: rgb, hsb: hsb, hex: hex};
|
272 |
-
|
|
|
|
|
|
|
|
|
273 |
|
274 |
['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(set, i){
|
275 |
input = this.layout.getElement('[data-moorainbow-input-'+set+']');
|
@@ -347,7 +351,7 @@
|
|
347 |
|
348 |
buttons = new Element('div.moor-buttons').inject(layout),
|
349 |
|
350 |
-
indicator = new Element('span.arrow').inject(layout);
|
351 |
|
352 |
['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(type){
|
353 |
label = (type != 'hex') ? type[0].capitalize() : '# ' + type;
|
@@ -433,7 +437,9 @@
|
|
433 |
_hsbToHex: function(hsb){
|
434 |
hsb = hsb || this._getHSB();
|
435 |
|
436 |
-
|
|
|
|
|
437 |
},
|
438 |
|
439 |
_hexToHsb: function(hex){
|
269 |
};
|
270 |
|
271 |
this.sets = {rgb: rgb, hsb: hsb, hex: hex};
|
272 |
+
if (Color.prototype.toHsv){
|
273 |
+
hue = new Color({h: hsb[0], s: 100, v: 100}).toString();
|
274 |
+
} else {
|
275 |
+
hue = new Color([this.sets.hsb[0], 100, 100]).hsbToRgb(true);
|
276 |
+
}
|
277 |
|
278 |
['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(set, i){
|
279 |
input = this.layout.getElement('[data-moorainbow-input-'+set+']');
|
351 |
|
352 |
buttons = new Element('div.moor-buttons').inject(layout),
|
353 |
|
354 |
+
indicator = new Element('span.rt-arrow').inject(layout);
|
355 |
|
356 |
['red', 'green', 'blue', 'hue', 'saturation', 'brightness', 'hex'].each(function(type){
|
357 |
label = (type != 'hex') ? type[0].capitalize() : '# ' + type;
|
437 |
_hsbToHex: function(hsb){
|
438 |
hsb = hsb || this._getHSB();
|
439 |
|
440 |
+
var toRgb = hsb.hsbToRgb() || hsb.toRgb(),
|
441 |
+
toHex = toRgb.rgbToHex() || toRgb.toString();
|
442 |
+
return toHex;
|
443 |
},
|
444 |
|
445 |
_hexToHsb: function(hex){
|
admin/widgets/gantry-administrator.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}.clearfix:after{clear:both;}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}.rok-left{float:left;}.rok-right{float:right;}.rok-dropdown-group,.rok-dropdown{position:relative;}.rok-dropdown-open .rok-dropdown{display:block;}.rok-popover-group,.rok-popover{position:relative;}.rok-popover-open .rok-popover{display:block;}i{background-image:url("") !important;background-repeat:no-repeat;background-position:16px 16px;vertical-align:text-top;font-style:normal;display:inline-block;width:16px;height:16px;*margin-right:.3em;}i:last-child{*margin-left:0;}#g4-toolbar ul{list-style:none;margin-right:10px;margin-top:-25px;padding:0;}body{line-height:18px !important;}body div#element-box,body div#element-box div.m{padding:0;border-top:0;border-bottom:0;margin:0 5px;background-color:transparent;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}body .subhead-collapse{display:none;}body .container-fluid{padding:0 1px;}body input:focus,body select:focus{background:#fff;}.g4-messages,.g4-messages .message{display:none;}html #mc-component .g4-wrap{margin:-14px -14px;}html #mc-component #g4-master{right:0;}body{padding-left:0 !important;padding-right:0 !important;}body .navbar-fixed-top,body .navbar-fixed-bottom,body .container-fluid,body .header{margin-left:0;margin-right:0;}html{overflow-y:auto !important;}html #toolbar-box{display:none;}html #content-box{font-family:Arial, sans-serif;float:none;border:0;width:auto;margin:0 -10px 10px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}html #system-message{position:relative;text-shadow:0 1px 0 #fff;display:none;}html #system-message .close{position:absolute;right:0;top:0;text-align:center;line-height:35px;width:35px;height:35px;cursor:pointer;font-size:130%;display:none;}html #system-message-container #system-message{display:block;}html #system-message-container #system-message .message{display:none;}html #system-message-container #system-message .error.message{display:block;}html h1{margin:0;padding:0;font-family:"Oxygen", Arial, sans-serif;font-size:30px;color:#484848;font-weight:normal;text-shadow:0 1px 0 #fff;}#assignments-panel{display:table;}#assignments-panel .g4-panel-left{display:table;}#assignments-panel .g4-panel-left .assignments-left,#assignments-panel .g4-panel-left .assignments-right{display:table-cell;vertical-align:top;}#assignments-panel .g4-panel-left h2{font-size:1.2em;margin:2px 0;}#assignments-panel .g4-panel-left .assignments-block{margin:10px;padding:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;}#assignments-panel .g4-panel-left .assignments-block .assignment-search{-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;background:#fff;padding:2px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin-top:10px;border:1px solid #cfcfcf;border-top-color:#c6c6c6;opacity:0.5;filter:alpha(opacity=50);}#assignments-panel .g4-panel-left .assignments-block .assignment-search input{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:0;border:0;text-indent:0;width:100%;font-size:11px;}#assignments-panel .g4-panel-left .assignments-block:hover .assignment-search{opacity:1;filter:alpha(opacity=100);}#assignments-panel .g4-panel-left .assignments-block ul ul{margin-left:18px;}#assignments-panel .g4-panel-left .assignments-left{width:70%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block{background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;float:left;width:28%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-center{margin-left:0;margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-right{margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2{min-height:19px;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2 label{display:inline-block;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added label{display:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added{text-decoration:line-through;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside{height:250px;overflow:auto;margin:10px 0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{display:inline;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{color:#666;text-decoration:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added label{visibility:hidden;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > a,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added a{text-decoration:line-through;color:#999;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside p{margin:0;}#assignments-panel .g4-panel-left .assignments-right{width:30%;}#assignments-panel .g4-panel-left .assignments-right .assignments-block{margin:10px 10px 10px 0;background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#cccccc', GradientType=0);}#assignments-panel .g4-panel-left .assignments-right .assignments-block #assigned-list{margin-top:10px;}#assignments-panel .g4-panel-left .assignments-right .assignments-block h2{color:#D54E21;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li{display:block;background-color:#a3a3a3;background-image:-moz-linear-gradient(top,#aaa,#999);background-image:-ms-linear-gradient(top,#aaa,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#aaa),to(#999));background-image:-webkit-linear-gradient(top,#aaa,#999);background-image:-o-linear-gradient(top,#aaa,#999);background-image:linear-gradient(top,#aaa,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#aaaaaa', endColorstr='#999999', GradientType=0);border:1px solid #888;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;padding:4px 10px;font-size:11px;margin-bottom:5px;margin-left:10px;position:relative;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li.empty{margin-left:0;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link{float:left;color:#111;text-shadow:0 1px 0 #ccc;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link a{text-decoration:none;color:#111;text-shadow:0 1px 0 #ccc;cursor:default;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.type{color:#444;border-left:1px solid #888;text-shadow:0 1px 0 #ccc;text-transform:uppercase;padding-left:10px;float:right;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned{font-size:15px;position:absolute;font-weight:bold;cursor:pointer;left:-13px;top:3px;color:#666;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned:hover{color:#b01c14;}#assignments-panel .g4-panel-left .assignments-right #assigned_override_items{position:absolute;width:1px;height:1px;visibility:hidden;}#assignments-panel .g4-panel-left .footer-block{line-height:2em;}#assignments-panel .g4-panel-left .footer-block .select-all{float:left;}#assignments-panel .g4-panel-left .footer-block .add-button{float:right;}.assignments-search{text-align:center;}.assignments-search label{font-weight:bold;font-size:1.5em;}.assignments-search input{width:50%;font-weight:normal;}.assignments-search,.assignment-search{position:relative;}.assignments-search .assignment-search-clear,.assignment-search .assignment-search-clear{position:absolute;top:3px;right:3px;height:7px;padding:4px;font-weight:bold;line-height:7px !important;border:1px solid #ccc;background:#eee;color:#888;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;display:none;cursor:pointer;}.assignments-search .assignment-search-clear:hover,.assignment-search .assignment-search-clear:hover{background:#f9f9f9;}.assignments-search-global-wrapper{position:relative;display:inline;}.assignments-search-global-wrapper label{display:inherit !important;}.assignments-search-global-wrapper .assignment-search-clear{top:1px;right:12px;}.g4-wrap{width:100%;}#wpcontent{margin-left:147px;}@media only screen and (max-width: 900px){#wpcontent{margin-left:34px;}}body .html-field{background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}body #icon-themes{margin:-10px 10px 0;}.g4-wrap input,.g4-wrap textarea{-webkit-box-sizing:inherit !important;-moz-box-sizing:inherit !important;-ms-box-sizing:inherit !important;box-sizing:inherit !important;}.g4-notice{position:relative;}.g4-notice .close{position:absolute;top:6px;right:9px;cursor:pointer;}.g4-actions .spinner{float:left;display:inline-block;display:none;}.inner-tabs{-webkit-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;-moz-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;}.inner-tabs li{cursor:pointer;display:inline-block;margin-bottom:-6px;border-right:1px solid #d1d1d1;border-left:1px solid #f1f1f1;}.inner-tabs li label{font-weight:normal;}.inner-tabs li.first{border-left:0;}.inner-tabs li.hover label{color:#000;}.inner-tabs li.active label{color:#2287C7;font-weight:bold;}.inner-tabs li .g4-cell.g4-col1{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:auto;}.inner-tabs li .g4-cell.g4-col1 label{padding-left:0;}.inner-panel > .wrapper{display:table;width:100%;}#overrides-actions{float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}#overrides-actions .add-edit-input{position:absolute;width:85%;height:9px;top:3px;font-size:90%;padding:3px 0;}#overrides-first{padding:3px 30px 4px 12px;line-height:15px;border:1px solid #c0c0c0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#overrides-first.slide-down{border-bottom:none;-webkit-border-radius:12px 12px 0 0;-moz-border-radius:12px 12px 0 0;border-radius:12px 12px 0 0;}#overrides-actions a{color:#464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px;}body #overrides-first a{background:url(images/overrides-default.png) 0 50% no-repeat;padding:0 0 0 18px;}#overrides-actions a:hover{color:#000;text-decoration:underline;}#overrides-first a:hover{text-decoration:none;}#overrides-toggle{background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height:22px;position:absolute;right:0px;top:1px;width:28px;cursor:pointer;}#overrides-toggle.hidden{display:none;}#overrides-inside{background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-webkit-border-radius:0 0 12px 12px;-moz-border-radius:0 0 12px 12px;border-radius:0 0 12px 12px;}#overrides-toolbar{float:left;margin:12px 0 0 5px;position:relative;}#overrides-toolbar .overrides-button{float:left;width:29px;height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}#overrides-toolbar .overrides-button span{display:none;}#overrides-toolbar .button-del{background-position:-29px 0;width:28px;}#overrides-toolbar .button-edit{background-position:-57px 0;}#overrides-toolbar .button-add:hover{background-position:0 -24px;}#overrides-toolbar .button-del:hover{background-position:-29px -24px;}#overrides-toolbar .button-edit:hover{background-position:-57px -24px;}.text-button{display:inline-block;height:24px;background:url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}.text-button span{font-size:11px;font-family:"Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display:inline-block;background:url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left:20px;padding:0 10px 0 5px;line-height:24px;height:24px;}.text-button:hover span{color:#000;background-position:100% -24px;}.text-button.button-widget{background-position:0 -48px;}.text-button.button-widget:hover{background-position:0 -72px;}#overrides-switch{float:left;margin:12px 0 0 5px;position:relative;}.g4-wrapper{width:100%;}.clr{clear:both;}.g4-size-60{width:60%;}.g4-size-50{width:50%;}.g4-size-40{width:40%;}.g4-size-35{width:35%;}.g4-size-30{width:30%;}.g4-size-25{width:25%;}.g4-size-20{width:20%;}.g4-size-15{width:15%;}.g4-size-13{width:13%;}#g4-hidden{display:none;}#g4-logo{position:relative;float:right;margin:0 0 0 0;width:160px;height:48px;overflow:hidden;}#g4-logo span{display:block;position:absolute;top:9px;right:23px;width:120px;height:32px;background:url(images/g4-logo-small.png);}.g4-tabs{display:block;height:50px;}.g4-actions{float:right;}.g4-tabs > li,.g4-actions > li{float:left;vertical-align:middle;}.width-100pc{width:100%;}#g4-toolbar{background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fff,#ededed);background-image:-ms-linear-gradient(top,#fff,#ededed);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ededed));background-image:-webkit-linear-gradient(top,#fff,#ededed);background-image:-o-linear-gradient(top,#fff,#ededed);background-image:linear-gradient(top,#fff,#ededed);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);padding:30px 0;width:100%;-webkit-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;-moz-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;}#g4-toolbar h1{padding:0 15px;}#g4-toolbar .rok-button{margin-left:5px;font-size:13px;}#g4-toolbar .rok-buttons-group .rok-button:last-child{margin-left:-3px;}#g4-toolbar .rok-buttons-group .caret{height:4px;}#g4-details-wrapper{position:relative;}#g4-master{position:absolute;background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);top:-1px;bottom:0px;right:0;z-index:1;border:1px solid #b03018;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;-moz-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;}#g4-master.g4-flag-override{background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#ccc,#999);background-image:-ms-linear-gradient(top,#ccc,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#999));background-image:-webkit-linear-gradient(top,#ccc,#999);background-image:-o-linear-gradient(top,#ccc,#999);background-image:linear-gradient(top,#ccc,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#999999', GradientType=0);border:1px solid #999;}#g4-master #g4-flag{text-align:center;position:relative;line-height:50px;font-size:17px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}#g4-master #g4-flag > .arrow,#g4-master #g4-flag > .arrow span{position:absolute;display:block;width:5px;}#g4-master #g4-flag > .arrow{top:50%;right:0;margin-top:-7px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #ececec;left:-2px;top:50%;z-index:10;}#g4-details{border-top:1px solid #fff;background:#ececec;height:50px;position:relative;}#g4-details.presets-showing{border-bottom:1px solid #cbcbcb;}#g4-presets{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#ececec,#fff);background-image:-ms-linear-gradient(top,#ececec,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#fff));background-image:-webkit-linear-gradient(top,#ececec,#fff);background-image:-o-linear-gradient(top,#ececec,#fff);background-image:linear-gradient(top,#ececec,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ececec', endColorstr='#ffffff', GradientType=0);-webkit-box-shadow:0 1px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #fff inset;box-shadow:0 1px 0 0 #fff inset;}#g4-container{margin-top:-2px;padding-bottom:1px;border-bottom:1px solid #ccc;margin:0;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#g4-container .g4-header{border-top:1px solid #bcbcbc;background-color:#e6e6e6;-webkit-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;-moz-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;}#g4-container .g4-body{background:#fff;background-color:#fcfcfc;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),color-stop(50%,#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-moz-linear-gradient(top,#f3f3f3,#fff 50%,#f0f0f0);background-image:-ms-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-o-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f0f0f0', GradientType=0);}.g4-tabs li{color:#717077;padding:15px 20px;margin:0;text-shadow:0 1px 0 #fff;-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;cursor:pointer;}.g4-tabs li.active .arrow{display:none;}.g4-tabs li:hover{color:#000;}.g4-tabs li.active{margin-top:1px;padding-top:14px;background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#efefef,#ddd);background-image:-ms-linear-gradient(top,#efefef,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efefef),to(#ddd));background-image:-webkit-linear-gradient(top,#efefef,#ddd);background-image:-o-linear-gradient(top,#efefef,#ddd);background-image:linear-gradient(top,#efefef,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#dddddd', GradientType=0);-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;color:#2287c7;position:relative;}.g4-tabs li.active .arrow,.g4-tabs li.active .arrow span{position:absolute;display:block;}.g4-tabs li.active .arrow{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb;bottom:0;top:inherit;}.g4-tabs li.active .arrow span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;margin-left:-6px;top:1px;}.g4-tabs li.active .arrow span span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;top:1px;margin-left:-6px;}.g4-tabs li .badge{padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}#g4-container .presets-involved,#g4-container .overrides-involved,#g4-container .preset-info,#g4-container .menuitems-involved{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background-color:#e3461e;background-image:-moz-linear-gradient(top,#D23C12,#FC562F);background-image:-ms-linear-gradient(top,#D23C12,#FC562F);background-image:-webkit-gradient(linear,0 0,0 100%,from(#D23C12),to(#FC562F));background-image:-webkit-linear-gradient(top,#D23C12,#FC562F);background-image:-o-linear-gradient(top,#D23C12,#FC562F);background-image:linear-gradient(top,#D23C12,#FC562F);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d23c12', endColorstr='#fc562f', GradientType=0);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;float:right;height:6px;line-height:7px;margin-top:-3px;margin-bottom:-5px;margin-right:-10px;margin-left:10px;padding:9px;color:#fff;text-shadow:none;display:none;opacity:0;visibility:hidden;}#g4-container .preset-info{width:4px;height:4px;padding:4px;line-height:4px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;position:absolute;top:17px;left:-5px;margin:0;display:block;opacity:1;filter:alpha(opacity=100);visibility:visible;}#g4-container .overrides-involved{background-color:#2287c9;background-image:-moz-linear-gradient(top,#1d79b5,#2a9de6);background-image:-ms-linear-gradient(top,#1d79b5,#2a9de6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1d79b5),to(#2a9de6));background-image:-webkit-linear-gradient(top,#1d79b5,#2a9de6);background-image:-o-linear-gradient(top,#1d79b5,#2a9de6);background-image:linear-gradient(top,#1d79b5,#2a9de6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1d79b5', endColorstr='#2a9de6', GradientType=0);}#g4-container .menuitems-involved{display:block;opacity:1;visibility:visible;background-color:#adadad;background-image:-moz-linear-gradient(top,#bbb,#999);background-image:-ms-linear-gradient(top,#bbb,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbb),to(#999));background-image:-webkit-linear-gradient(top,#bbb,#999);background-image:-o-linear-gradient(top,#bbb,#999);background-image:linear-gradient(top,#bbb,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbbbbb', endColorstr='#999999', GradientType=0);}#g4-container .double-badge .presets-involved{-webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0;}#g4-container .double-badge .overrides-involved{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px;}.override-wrap #g4-container .preset-info{left:-15px;}#g4-actions li{margin:0 4px;}#g4-panels{padding-top:20px;}.g4-panel{visibility:hidden;margin-bottom:40px;top:-10000px;left:-10000px;width:100%;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 1px 0 #fefefe;-moz-box-shadow:0 1px 1px 0 #fefefe;box-shadow:0 1px 1px 0 #fefefe;}.g4-panel.active-panel{visibility:visible;top:0;left:0;}.g4-panel.panel-overview{border:0;margin-bottom:0;}.g4-panel.panel-overview .panelform .g4-row .g4-col2{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:inherit;}.g4-panel.panel-overview .g4-col1{display:none;}.g4-panel.panel-overview div.template-preview{float:left;margin-right:35px;width:40%;}.g4-panel.panel-overview div.template-preview img{width:100%;margin-top:-10px;}.g4-panel.panel-overview .template-description{margin-left:45%;margin-right:20px;}.g4-panel.panel-overview img.template-preview{float:left;margin-right:30px;margin-bottom:20px;}.g4-panel-left,.g4-panel-right{float:left;position:relative;}.g4-panel-left{width:100%;}.panel-overview .g4-panel-left{width:70%;}.panel-overview .g4-panel-right{width:30%;}.g4-panel-hiddens{position:absolute;visibility:hidden;height:0;}.backgroundpicker{position:relative;}.updater-field,.tips-field,.html-field{background:#eaeaea;border:1px solid #c8c8c8;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-right:20px;margin-bottom:20px;padding:20px;-webkit-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;-moz-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;}.updater-field .h2bar,.tips-field .h2bar,.html-field .h2bar{display:block;min-height:36px;margin-bottom:5px;padding:0;}.updater-field{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-ms-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2A9DE6),to(#1D79B5));background-image:-webkit-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-o-linear-gradient(top,#2A9DE6,#1D79B5);background-image:linear-gradient(top,#2A9DE6,#1D79B5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.updater-field.update{background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);}.tips-field{position:relative;padding-bottom:50px;}.tips-field .gantrytips-controller{position:absolute;bottom:20px;right:10px;}.tips-field .gantrytips-controller .rok-button{font-size:10px;color:#555 !important;}.tips-field .gantrytips-count{position:absolute;bottom:20px;left:20px;color:#999 !important;}.tips-field .gantrytips-wrapper{position:relative;}.tips-field .gantrytips-wrapper .gantrytips-tip{display:none;}.tips-field .gantrytips-wrapper .gantrytips-tip:first-child{display:block;}.panelform{display:table;border-collapse:collapse;width:100%;}.panelform .selectedset-fields{display:table-row-group;}.panelform .selectedset-fields .g4-row:first-child .g4-cell.g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row{display:table-row;}.panelform .g4-row:first-child .g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row .g4-col1{font-weight:bold;text-shadow:1px 1px 1px #fff;color:#555;padding:0 20px;}.panelform .g4-row .g4-col1 label{padding:15px 10px 15px 20px;}.panelform .g4-cell{display:table-cell;padding:10px 20px;vertical-align:middle;}.panelform .g4-cell.g4-col1{width:20%;background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;}.panelform .g4-cell.g4-col2{display:table-cell;padding:0;width:80%;-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;background:#eee;}.panelform .g4-cell.g4-col2 .g4-col2-wrap{padding:10px 20px;position:relative;*zoom:1;}.panelform .g4-cell.g4-col2 .g4-col2-wrap:before,.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{display:table;content:"";}.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{clear:both;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow,.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{position:absolute;display:block;width:5px;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #ccc;left:0px;top:50%;z-index:10;}.panel-overview .panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow{display:none;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .arrow span{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #f6f6f6;left:-1px;margin-left:-6px;}.panelform .g4-cell .inherit-checkbox{position:relative;z-index:5;float:left;margin-left:0;margin-top:15px;}.panelform .g4-cell .inherit-overlay{position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:#efefef;z-index:5;}.wrapper .chain{display:inline-block;vertical-align:top;margin-right:20px;}.wrapper .chain.chain-hidden{margin-right:0;}.group{clear:both;height:32px;margin:0 0 10px;}.group .alias-label{float:left;width:150px;padding-top:5px;}.group-left,.group-label,.group .wrapper{float:left;}.group-right{float:left;margin-left:25px;}.group-none{float:none;clear:both;}.g4-wrap .group-label{display:block;position:relative;text-align:right;width:75px;display:block;margin-right:10px;}.g4-wrap .group-label label{display:inline-block;line-height:12px;margin:8px 5px 0 0;width:100%;vertical-align:middle;}.group-right .selectbox-wrapper{margin-right:24px;}.group-none .group-label{width:50%;}.group-gradient{border:1px solid #ccc;padding:1px;height:40px;margin-right:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;}.assignments-field .g4-cell.g4-col1{vertical-align:top;}@media (max-width: 979px){.g4-tabs li{padding:15px 15px;}}@media (max-width: 767px){.btn-subhead{display:none !important;}.container-fluid{margin:0 -20px;}.container-fluid #g4-master{width:90px;height:50px;}.container-fluid #g4-details{height:auto;padding-bottom:15px;}.container-fluid #g4-details .g4-controlgroup{width:100%;}.container-fluid #g4-details .g4-controlgroup .g4-controls{margin-right:130px;}.container-fluid #g4-details .g4-controlgroup select{max-width:120px;}#g4-toolbar ul.g4-actions{float:none;display:block;margin-top:15px;margin-bottom:-10px;margin-left:15px;*zoom:1;}#g4-toolbar ul.g4-actions:before,#g4-toolbar ul.g4-actions:after{display:table;content:"";}#g4-toolbar ul.g4-actions:after{clear:both;}#g4-toolbar ul.g4-actions ul.rok-dropdown{right:inherit;left:-43px;}.g4-tabs li{padding:15px 10px;}.g4-tabs li .menuitems-involved{margin-left:5px !important;margin-right:-5px !important;}.panel-overview .g4-panel-left,.panel-overview .g4-panel-right,.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{float:none;width:100%;}.panel-overview .g4-panel-left .updater-field,.panel-overview .g4-panel-left .tips-field,.panel-overview .g4-panel-left .html-field,.panel-overview .g4-panel-right .updater-field,.panel-overview .g4-panel-right .tips-field,.panel-overview .g4-panel-right .html-field,.g4-panel.panel-overview div.template-preview .updater-field,.g4-panel.panel-overview div.template-preview .tips-field,.g4-panel.panel-overview div.template-preview .html-field,.g4-panel.panel-overview .template-description .updater-field,.g4-panel.panel-overview .template-description .tips-field,.g4-panel.panel-overview .template-description .html-field{margin:10px 20px;}.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{margin:0 0 20px;}.g4-panel.panel-overview div.template-preview img,.g4-panel.panel-overview .template-description img{margin:-10px auto 0;display:block;}}.g4-wrap select,.g4-wrap textarea,.g4-wrap input[type="text"],.g4-wrap input[type="password"],.g4-wrap input[type="datetime"],.g4-wrap input[type="datetime-local"],.g4-wrap input[type="date"],.g4-wrap input[type="month"],.g4-wrap input[type="time"],.g4-wrap input[type="week"],.g4-wrap input[type="number"],.g4-wrap input[type="email"],.g4-wrap input[type="url"],.g4-wrap input[type="search"],.g4-wrap input[type="tel"],.g4-wrap input[type="color"],.g4-wrap .readonly{display:inline-block;height:18px;padding:5px 0px;text-indent:10px;margin-left:0;margin-bottom:0;font-size:12px;background:#fff;line-height:18px;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:2;}.g4-wrap select{text-indent:0;outline:0;}.g4-wrap select[disabled]{color:#aaa;}.g4-wrap input.required{background:#fff;}.g4-wrap input.readonly,.g4-wrap input.disabled{background:#f3f3f3;color:#6f6f6f;font-weight:normal;-webkit-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;border:1px solid #d4d4d4;}.g4-wrap .input-append input[type="text"]{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.g4-wrap .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-left:-1px;}.g4-wrap .input-prepend input[type="text"]{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.g4-wrap .input-prepend .add-on{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;margin-right:-4px;}.g4-wrap .add-on{display:inline-block;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;background:#fafafa;color:#999999;padding:5px 10px;height:18px;width:auto;line-height:18px;}.g4-wrap select,.g4-wrap input[type="file"]{height:30px;line-height:30px;}.g4-wrap label{display:block;position:relative;margin-top:0;margin-bottom:0px;}.g4-wrap .chain-label > label{height:16px;margin-bottom:2px;}.g4-wrap .position-field label{margin-top:3px;}.g4-wrap .chain-positions .chain-label > label{display:none;}.g4-wrap .chain-positions .g-position{height:16px;margin-bottom:0;}.g4-wrap fieldset.adminform{padding:0;margin:0;width:100%;}.g4-wrap fieldset.adminform input,.g4-wrap fieldset.adminform textarea,.g4-wrap fieldset.adminform select,.g4-wrap fieldset.adminform img,.g4-wrap fieldset.adminform button{float:inherit;margin:0 0 9px 0;}.g4-wrap fieldset.adminform label{min-width:inherit;}.g4-wrap .g4-controlgroup:before,.g4-wrap .g4-controlgroup:after{display:table;content:"";}.g4-wrap .g4-horizontal-form label{float:left;width:100px;padding-top:5px !important;text-align:right;}.g4-wrap .g4-horizontal-form .g4-controls{margin-left:120px;cursor:text;}.g4-wrap .g4-horizontal-form .g4-controls input,.g4-wrap .g4-horizontal-form .g4-controls select,.g4-wrap .g4-horizontal-form .g4-controls textarea{width:100%;}.g4-wrap .chzn-done{width:auto;}.g4-wrap .chzn-container-single .chzn-single{height:28px;line-height:29px;}#g4-details fieldset{border:0;}#g4-details fieldset div.g4-controlgroup{float:left;padding-top:10px;}#g4-details fieldset div.g4-controlgroup input#jform_title{font-size:12px;}#g4-details fieldset div.g4-controlgroup input#jform_id{width:40px;background-color:#f3f3f3;font-size:inherit;font-weight:inherit;float:inherit;border:1px solid #d4d4d4;margin:0 0 9px 0;}.panelform div#menu-assignment h3{margin-bottom:10px;}#menu-assignment .menu-links{list-style:none;float:left;width:50%;padding:0;}#menu-assignment ul.menu-links li{margin:0;}#menu-assignment ul.menu-links label{padding:0;text-align:left;display:inline-block;}.assignments-field{margin:0 15px;}.assignments-field #menu-assignment{overflow:hidden;}.assignments-field .menu-padder{height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}.assignments-field h2{float:left;margin-top:0;margin-bottom:0;}.assignments-field h3{border-bottom:1px solid #ccc;margin-right:15px;}.assignments-field .jform-rightbtn{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);float:right;}.assignments-field .jform-rightbtn .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:first-child{*margin-left:0;}.assignments-field .jform-rightbtn .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:hover,.assignments-field .jform-rightbtn.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.assignments-field .jform-rightbtn:hover .caret,.assignments-field .jform-rightbtn.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn:active .caret,.assignments-field .jform-rightbtn.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn.rok-button-disabled .caret,.assignments-field .jform-rightbtn.rok-button-disabled:hover .caret,.assignments-field .jform-rightbtn.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled i,.assignments-field .jform-rightbtn.rok-button-disabled:hover i,.assignments-field .jform-rightbtn.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.assignments-field .jform-rightbtn i{margin:-1px 0 -2px;}@font-face{font-family:'OxygenRegular';src:url('../fonts/Oxygen-webfont.eot');src:url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-webfont.woff') format('woff'), url('../fonts/Oxygen-webfont.ttf') format('truetype'), url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenItalic';src:url('../fonts/Oxygen-Italic-webfont.eot');src:url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Italic-webfont.woff') format('woff'), url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBold';src:url('../fonts/Oxygen-Bold-webfont.eot');src:url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Bold-webfont.woff') format('woff'), url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBoldItalic';src:url('../fonts/Oxygen-BoldItalic-webfont.eot');src:url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'), url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');font-weight:normal;font-style:normal;}#g4-logo{font-size:200px;line-height:0px;color:rgba(0,0,0,0.05);text-indent:40px;font-weight:bold;}.g4-wrap{font-size:12px;line-height:18px;}.g4-wrap ul{margin:0;padding:0;list-style:none;}.g4-wrap p{margin:20px 0;font-size:13px;color:#555;}h1 small{color:#9b9b9b;font-size:16px;}.g4-tabs li{font-size:14px;}#g4-sidebar .g4-content h2{font-size:16px;color:#3e3e3e;margin:0;padding:15px 15px 5px;}.g4-tabs .presets-involved,.g4-tabs overrides-involved,.g4-tabs .preset-info,.g4-tabs .menuitems-involved{font-size:13px;font-weight:bold;}#g4-panels h1{font-size:38px;line-height:38px;font-weight:bold;}#g4-panels h1 .g4-version,#g4-panels h1 > span{color:#3680be;font-weight:normal;}#g4-panels h1+h2{margin-top:10px;color:#555;font-weight:normal;}div.template-preview h2,div.template-preview ul{margin:10px 0 10px 10px;}div.template-preview ul{list-style:disc;}div.template-preview ul li{margin-left:20px;margin-bottom:3px;}.gantrytips-tip ul{list-style:disc;margin:10px 0 10px 10px;}.gantrytips-tip ul li{margin-left:10px;margin-bottom:3px;}.tips-field,.html-field{font-size:13px;color:#333;text-shadow:1px 1px 1px #fff;}.tips-field .h2bar,.html-field .h2bar{line-height:26px;font-size:22px;font-weight:bold;color:#555;}#updater #updater-bar{color:#eee;font-size:13px;line-height:26px;font-size:22px;font-weight:bold;text-shadow:0px -1px 0 #1d5792;}#updater #updater-bar span{color:#fff;}#updater #updater-desc{color:#eee;text-shadow:0px -1px 0 #1d5792;}#updater #updater-desc a{color:#fff;}#updater.update #updater-bar,#updater.update #updater-desc{text-shadow:0px -1px 0 #a71f14;}.g4-cell.g4-col1{font-weight:bold;text-shadow:1px 1px 0 #fff;color:#555;}.g4-cell.g4-col1 label,.g4-cell.g4-col1 h2{padding-left:20px;font-size:13px;}.g4-cell.g4-col1 h2{padding-top:45px;}.chain-label > label,.group-label > label,.inner-panels label{font-size:11px;color:#777;text-shadow:1px 1px 0px #fff;}i.spinner{opacity:0;filter:alpha(opacity=0);}i.spinner.spinner-16{background-image:url(../images/loader-16.gif);}i.spinner.spinner-32{background-image:url(../images/loader-32.gif);width:32px;height:32px;}i.spinner.spinner-64{background-image:url(../images/loader-64.gif);width:64px;height:64px;}i.spinner.spinner-128{background-image:url(../images/loader-128.gif);width:128px;height:128px;}i.published{background-position:0 0;}i.unpublished{background-position:-16px 0;}i.info{background-position:-32px 0;}i.edit{background-position:-48px 0;}i.plus{background-position:-64px 0;}.rok-button-primary i.info{background-position:-32px -16px;}.rok-button-primary i.edit{background-position:-48px -16px;}.rok-button-primary i.plus{background-position:-64px -16px;}.xdebug-var-dump i,.xdebug-error i{background:none;display:inline;width:auto;height:auto;}button{margin:0;font-size:100%;vertical-align:middle;}button{*overflow:visible;line-height:normal;}button::-moz-focus-inner{padding:0;border:0;}button{cursor:pointer;-webkit-appearance:button;}.rok-button{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);}.rok-button .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button:first-child{*margin-left:0;}.rok-button .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:hover,.rok-button.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button:hover .caret,.rok-button.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:active,.rok-button.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button:active .caret,.rok-button.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button.rok-button-disabled .caret,.rok-button.rok-button-disabled:hover .caret,.rok-button.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled i,.rok-button.rok-button-disabled:hover i,.rok-button.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button:active,.rok-button.rok-button-active{padding:8px 7px;}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{padding:8px 7px;}.rok-button.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button i{margin:-1px 0 -2px;}.rok-button-primary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #1c73ac;box-shadow:0 0 0 1px #1573af, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #186496;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.rok-button-primary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-primary:hover .caret,.rok-button-primary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary:active .caret,.rok-button-primary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary.rok-button-disabled .caret,.rok-button-primary.rok-button-disabled:hover .caret,.rok-button-primary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled i,.rok-button-primary.rok-button-disabled:hover i,.rok-button-primary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:active,.rok-button-primary.rok-button-active{padding:8px 7px;}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{padding:8px 7px;}.rok-button-primary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-primary i{margin:-1px 0 -2px;}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#fff;background-color:#3697d6;background-image:-moz-linear-gradient(top,#45aae9,#1e7cb9);background-image:-ms-linear-gradient(top,#45aae9,#1e7cb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#45aae9),to(#1e7cb9));background-image:-webkit-linear-gradient(top,#45aae9,#1e7cb9);background-image:-o-linear-gradient(top,#45aae9,#1e7cb9);background-image:linear-gradient(top,#45aae9,#1e7cb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#45aae9', endColorstr='#1e7cb9', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;background-color:#228cd0;background-image:-moz-linear-gradient(top,#259be5,#1c76b1);background-image:-ms-linear-gradient(top,#259be5,#1c76b1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#259be5),to(#1c76b1));background-image:-webkit-linear-gradient(top,#259be5,#1c76b1);background-image:-o-linear-gradient(top,#259be5,#1c76b1);background-image:linear-gradient(top,#259be5,#1c76b1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#259be5', endColorstr='#1c76b1', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{background-color:#1a82c4;background-image:-moz-linear-gradient(top,#1a91dd,#196a9f);background-image:-ms-linear-gradient(top,#1a91dd,#196a9f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1a91dd),to(#196a9f));background-image:-webkit-linear-gradient(top,#1a91dd,#196a9f);background-image:-o-linear-gradient(top,#1a91dd,#196a9f);background-image:linear-gradient(top,#1a91dd,#196a9f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a91dd', endColorstr='#196a9f', GradientType=0);}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover{text-shadow:0 -1px 0 #fff;}.rok-button-secondary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #616161;box-shadow:0 0 0 1px #737373, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #545454;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#858585;background-image:-moz-linear-gradient(top,#999,#666);background-image:-ms-linear-gradient(top,#999,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));background-image:-webkit-linear-gradient(top,#999,#666);background-image:-o-linear-gradient(top,#999,#666);background-image:linear-gradient(top,#999,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#666666', GradientType=0);}.rok-button-secondary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-secondary:hover .caret,.rok-button-secondary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary:active .caret,.rok-button-secondary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary.rok-button-disabled .caret,.rok-button-secondary.rok-button-disabled:hover .caret,.rok-button-secondary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled i,.rok-button-secondary.rok-button-disabled:hover i,.rok-button-secondary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{padding:8px 7px;}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{padding:8px 7px;}.rok-button-secondary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-secondary i{margin:-1px 0 -2px;}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#fff;background-color:#8f8f8f;background-image:-moz-linear-gradient(top,#a8a8a8,#696969);background-image:-ms-linear-gradient(top,#a8a8a8,#696969);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a8a8a8),to(#696969));background-image:-webkit-linear-gradient(top,#a8a8a8,#696969);background-image:-o-linear-gradient(top,#a8a8a8,#696969);background-image:linear-gradient(top,#a8a8a8,#696969);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#a8a8a8', endColorstr='#696969', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;background-color:#828282;background-image:-moz-linear-gradient(top,#969696,#636363);background-image:-ms-linear-gradient(top,#969696,#636363);background-image:-webkit-gradient(linear,0 0,0 100%,from(#969696),to(#636363));background-image:-webkit-linear-gradient(top,#969696,#636363);background-image:-o-linear-gradient(top,#969696,#636363);background-image:linear-gradient(top,#969696,#636363);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#636363', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{background-color:#727272;background-image:-moz-linear-gradient(top,#616161,#8c8c8c);background-image:-ms-linear-gradient(top,#616161,#8c8c8c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#616161),to(#8c8c8c));background-image:-webkit-linear-gradient(top,#616161,#8c8c8c);background-image:-o-linear-gradient(top,#616161,#8c8c8c);background-image:linear-gradient(top,#616161,#8c8c8c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#8c8c8c', GradientType=0);}.rok-buttons-group > *{display:inline-block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-right:0;margin-left:-3px;}.rok-buttons-group > *:first-child{margin-left:0;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.rok-buttons-group > *:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:4px;}#g4-toolbar .rok-dropdown-open ul.rok-dropdown{display:block;}#g4-toolbar ul.rok-dropdown{position:absolute;top:100%;left:0;display:none;float:left;list-style:none;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;z-index:5;background-color:#fefefe;min-width:160px;top:200%;right:-10px;left:inherit;padding:4px 0;border:1px solid #fff;*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:2px 2px 4px 4px;-moz-border-radius:2px 2px 4px 4px;border-radius:2px 2px 4px 4px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);}#g4-toolbar ul.rok-dropdown .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;}#g4-toolbar ul.rok-dropdown > li{display:block;}#g4-toolbar ul.rok-dropdown a{display:block;clear:both;font-weight:normal;white-space:nowrap;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{text-decoration:none;}#g4-toolbar ul.rok-dropdown li{text-align:left;}#g4-toolbar ul.rok-dropdown li a{color:#666;}#g4-toolbar ul.rok-dropdown .divider{background-color:#e5e5e5;border-bottom:1px solid #ffffff;margin:5px 1px;}#g4-toolbar ul.rok-dropdown a{margin:0 -1px;padding:3px 15px;line-height:24px;color:;text-shadow:0 1px 0 #fff;text-decoration:none;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}.text-verylong{width:375px;}.text-long{width:275px;}.text-regular{width:200px;}.text-medium{width:125px;}.text-short{width:50px;}.text-color{width:75px;}textarea.text-textarea{width:350px;height:120px;padding:5px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;text-indent:0;}.toggle{display:inline-block;width:80px;height:35px;background:url(images/toggle.png);cursor:hand;}.toggle .toggle-input{display:none;}.toggle.toggle-off{background-position:0 0;}.toggle.toggle-on{background-position:0 -40px;}.toggle.toggle-off.disabled{background-position:0 -80px;}.toggle.toggle-on.disabled{background-position:0 -120px;}.selectedset-group{clear:both;position:relative;}.selectset-group-first{border-top:none;}.selectedset-fields,.selectedset-fields .gantry-field{position:relative;}.selectedset-hidden-field{visibility:hidden;position:absolute;top:-2000px;}#g4-panel .navigation li a{color:#444;}#g4-panel .navigation li a:hover{color:#D54E21;}#g4-panel .navigation li.active a,#gantry-panel .navigation li.active a:hover{color:#1578B9;}.position,.slider{width:192px;height:9px;background:url(images/slider.png) 0 0 no-repeat;position:relative;margin-top:10px;}.position2,.slider2{width:192px;height:9px;background:url(images/slider.png) 0 -14px no-repeat;position:absolute;width:0px;}.position .knob,.slider .knob{width:24px;height:24px;top:-8px;left:-8px;background:url(images/slider.png) -195px 0 no-repeat;position:absolute;cursor:pointer;}.position-field .chain-toggle,.position-field .chain-showmax{margin-top:-3px;}#positions-tip{background:url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow:1px 1px #000;color:#fff;position:absolute;visibility:hidden;text-align:center;padding:0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}.navigation{color:#666;}.navigation .title,.navigation .list{float:left;}.navigation .title{font-size:100%;}.navigation .list{margin:0;padding:0;list-style:none;}.navigation .list li{display:inline;}.navigation .list li a{display:block;padding:0 7px;text-decoration:none;color:#aaa;float:left;outline:none;}.navigation .list li.active a{font-weight:bold;text-decoration:underline;color:#333;}.mini-container{text-align:center;background:#fff;height:28px;padding:0;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.mini-container div{height:28px;line-height:28px;}.mini-container .main{background:#666;text-shadow:1px 1px #1b80a0;color:#fff;}.mini-container{width:192px;}.mini-grid-1,.mini-grid-2,.mini-grid-3,.mini-grid-4,.mini-grid-5,.mini-grid-6,.mini-grid-7,.mini-grid-8,.mini-grid-9,.mini-grid-10,.mini-grid-11,.mini-grid-12,.mini-grid-13,.mini-grid-14,.mini-grid-15,.mini-grid-16{display:inline;float:left;position:relative;}.mini-container .mini-grid{border-left:1px solid #d0d0d0;padding-right:1px;}.mini-container .mini-grid:first-child{border-left:0;padding-left:1px;}.col9 .mini-container .mini-grid-1{width:19px;}.col9 .mini-container .mini-grid-2{width:40px;}.col9 .mini-container .mini-grid-3{width:61px;}.col9 .mini-container .mini-grid-4{width:82px;}.col9 .mini-container .mini-grid-5{width:103px;}.col9 .mini-container .mini-grid-6{width:124px;}.col9 .mini-container .mini-grid-7{width:145px;}.col9 .mini-container .mini-grid-8{width:166px;}.col9 .mini-container .mini-grid-9{width:190px;}.col12 .mini-container .mini-grid-1{width:15px;}.col12 .mini-container .mini-grid-2{width:30px;}.col12 .mini-container .mini-grid-3{width:46px;}.col12 .mini-container .mini-grid-4{width:62px;}.col12 .mini-container .mini-grid-5{width:78px;}.col12 .mini-container .mini-grid-6{width:94px;}.col12 .mini-container .mini-grid-7{width:110px;}.col12 .mini-container .mini-grid-8{width:126px;}.col12 .mini-container .mini-grid-9{width:142px;}.col12 .mini-container .mini-grid-10{width:158px;}.col12 .mini-container .mini-grid-11{width:174px;}.col12 .mini-container .mini-grid-12{width:190px;}.col16 .mini-container .mini-grid-1{width:10px;}.col16 .mini-container .mini-grid-2{width:22px;}.col16 .mini-container .mini-grid-3{width:34px;}.col16 .mini-container .mini-grid-4{width:46px;}.col16 .mini-container .mini-grid-5{width:58px;}.col16 .mini-container .mini-grid-6{width:70px;}.col16 .mini-container .mini-grid-7{width:82px;}.col16 .mini-container .mini-grid-8{width:94px;}.col16 .mini-container .mini-grid-9{width:106px;}.col16 .mini-container .mini-grid-10{width:118px;}.col16 .mini-container .mini-grid-11{width:130px;}.col16 .mini-container .mini-grid-12{width:142px;}.col16 .mini-container .mini-grid-13{width:154px;}.col16 .mini-container .mini-grid-14{width:166px;}.col16 .mini-container .mini-grid-15{width:178px;}.col16 .mini-container .mini-grid-16{width:190px;}.graphic-level{background:url(images/graphic-level.png) no-repeat;padding-top:15px;}.miniatures{float:left;}.current-positions{padding-left:210px;color:#999;}.gradient-preview{width:100%;height:100%;}.presets{position:relative;width:1000px;margin:0 auto;}.presets .scroller{margin-bottom:30px;}.presets .scroller .inner{overflow:hidden;width:100%;}.presets .presets-scrollbar{background:#dedede;-webkit-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;position:absolute;width:100%;height:16px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.presets .presets-scrollbar .bar{position:absolute;top:-1px;left:-1px;height:16px;width:0;border:1px solid #bbb;-webkit-box-shadow:1px 1px 0 0 #fff inset;-moz-box-shadow:1px 1px 0 0 #fff inset;box-shadow:1px 1px 0 0 #fff inset;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;}.presets .presets-scrollbar{position:absolute;left:0;bottom:-15px;}.presets .wrapper{font-size:0;margin:0 auto;}.presets .wrapper .block{font-size:12px;display:inline-block;cursor:pointer;position:relative;margin:20px 8px 10px;-webkit-box-shadow:0 1px 5px rgba(33,33,33,0.1);-moz-box-shadow:0 1px 5px rgba(33,33,33,0.1);box-shadow:0 1px 5px rgba(33,33,33,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #d9d9d9;padding:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block.pulsing{outline:0;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:0 0 8px rgba(82,168,236,0.6);box-shadow:0 0 8px rgba(82,168,236,0.6);-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block div.presets-bg{width:180px;height:100px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.presets .wrapper .block span{display:block;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;border-top:1px solid #fff;border-bottom:1px solid #d9d9d9;background:#f5f5f5;color:#666;text-align:center;font-weight:bold;padding:4px;font-size:14px;line-height:14px;text-shadow:1px 1px 0 #fff;}.presets .wrapper .block .delete-preset{position:absolute;right:4px;top:4px;background:#ddd;border:1px solid #ccc;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding:1px 4px;cursor:pointer;}.presets .wrapper .block .delete-preset:hover{background:#e83f1f;border:1px solid #cb2417;}.presets .wrapper .block .delete-preset:hover span{color:#fff;text-shadow:1px 1px 0 #2373bd;}.presets .wrapper .block .delete-preset span{border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:transparent;}#gantry-layer{position:absolute;top:0;left:0;right:0;bottom:0;background:#000;z-index:900;}.presets-wrapper-table{display:table;width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;}.presets-wrapper-table .presets-wrapper-row{display:table-row;}.presets-wrapper-table .presets-wrapper-row .presets-wrapper-cell{display:table-cell;vertical-align:middle;}#presets-namer{position:relative;margin:0 auto;background:#fff;padding:15px;width:80%;max-width:500px;z-index:1500;font-size:13px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}#presets-namer .preset-bottom{text-align:right;}#presets-namer .rok-button{display:inline-block;margin-left:5px;}#presets-namer h2,#presets-namer h3{margin-top:0;margin-bottom:5px;color:#D73D12;font-family:"Oxygen", Arial, sans-serif;}#presets-namer h3{color:#000;text-transform:uppercase;padding-bottom:5px;margin-bottom:10px;position:relative;}#presets-namer h3 span{text-transform:uppercase;color:#C13201;}#presets-namer p{margin:10px 0;}#presets-namer input,#presets-namer input:focus{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px;margin:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100%;}#presets-namer input.example,#presets-namer input:focus.example{color:#999;font-style:italic;}#presets-namer button{font-size:90%;margin-right:10px;}#presets-namer label span{text-align:right;padding-right:10px;float:left;display:block;width:85px;color:#666;text-transform:uppercase;font-size:80%;line-height:25px;}#presets-namer .preset-namer{background:#e9e9e9;padding:15px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:15px;border:1px solid #ccc;}.gantry-layer-wrapper .preset-namer div{margin:5px 10px;}.gantry-layer-close{color:#f64a4a;font-weight:bold;position:absolute;height:20px;width:20px;line-height:20px;top:2px;right:2px;}.roar-body{position:absolute;color:#fff;text-align:left;z-index:999;}.roar-body .roar{position:absolute;width:300px;cursor:pointer;}.roar-body .roar .roar-bg{position:absolute;z-index:1000;width:100%;height:100%;top:0;left:0;background-color:#000;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);}.roar-body .roar h3,.roar-body .roar p{position:relative;margin:0;color:#fff;visibility:visible;z-index:1001;font-size:13px;padding:5px 10px;}.roar-body .roar p{font-size:12px;padding-top:0;}
|
1 |
+
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}.clearfix:after{clear:both;}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}.rok-left{float:left;}.rok-right{float:right;}.rok-dropdown-group,.rok-dropdown{position:relative;}.rok-dropdown-open .rok-dropdown{display:block;}.rok-popover-group,.rok-popover{position:relative;}.rok-popover-open .rok-popover{display:block;}i{background-image:url("") !important;background-repeat:no-repeat;background-position:16px 16px;vertical-align:text-top;font-style:normal;display:inline-block;width:16px;height:16px;*margin-right:.3em;}i:last-child{*margin-left:0;}#g4-toolbar ul{list-style:none;margin-right:10px;margin-top:-25px;padding:0;}body{line-height:18px !important;}body div#element-box,body div#element-box div.m{padding:0;border-top:0;border-bottom:0;margin:0 5px;background-color:transparent;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}body .subhead-collapse{display:none;}body .container-fluid{padding:0 1px;}body input:focus,body select:focus{background:#fff;}.g4-messages,.g4-messages .message{display:none;}html #mc-component .g4-wrap{margin:-14px -14px;}html #mc-component #g4-master{right:0;}body{padding-left:0 !important;padding-right:0 !important;}body .navbar-fixed-top,body .navbar-fixed-bottom,body .container-fluid,body .header{margin-left:0;margin-right:0;}html{overflow-y:auto !important;}html #toolbar-box{display:none;}html #content-box{font-family:Arial, sans-serif;float:none;border:0;width:auto;margin:0 -10px 10px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}html #system-message{position:relative;text-shadow:0 1px 0 #fff;display:none;}html #system-message .close{position:absolute;right:0;top:0;text-align:center;line-height:35px;width:35px;height:35px;cursor:pointer;font-size:130%;display:none;}html #system-message-container #system-message{display:block;}html #system-message-container #system-message .message{display:none;}html #system-message-container #system-message .error.message{display:block;}html h1{margin:0;padding:0;font-family:"Oxygen", Arial, sans-serif;font-size:30px;color:#484848;font-weight:normal;text-shadow:0 1px 0 #fff;}#assignments-panel{display:table;}#assignments-panel .g4-panel-left{display:table;}#assignments-panel .g4-panel-left .assignments-left,#assignments-panel .g4-panel-left .assignments-right{display:table-cell;vertical-align:top;}#assignments-panel .g4-panel-left h2{font-size:1.2em;margin:2px 0;}#assignments-panel .g4-panel-left .assignments-block{margin:10px;padding:10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #f4f4f4 inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #f4f4f4 inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #f4f4f4 inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #f4f4f4 inset;}#assignments-panel .g4-panel-left .assignments-block .assignment-search{-webkit-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 0 #fff;background:#fff;padding:2px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin-top:10px;border:1px solid #cfcfcf;border-top-color:#c6c6c6;opacity:0.5;filter:alpha(opacity=50);}#assignments-panel .g4-panel-left .assignments-block .assignment-search input{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;padding:0;border:0;text-indent:0;width:100%;font-size:11px;}#assignments-panel .g4-panel-left .assignments-block:hover .assignment-search{opacity:1;filter:alpha(opacity=100);}#assignments-panel .g4-panel-left .assignments-block ul ul{margin-left:18px;}#assignments-panel .g4-panel-left .assignments-left{width:70%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block{background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;box-shadow:0 1px 0 0 #ddd inset, 0 2px 0 0 #fff inset, 0 -1px 0 0 #ddd inset, 0 -2px 0 0 #fff inset, 1px 0 0 0 #ddd inset, 2px 0 0 0 #fff inset, -1px 0 0 0 #ddd inset, -2px 0 0 0 #fff inset;float:left;width:28%;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-center{margin-left:0;margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block.assignments-block-right{margin-right:0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2{min-height:19px;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2 label{display:inline-block;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added label{display:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block h2.added{text-decoration:line-through;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside{height:250px;overflow:auto;margin:10px 0;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{display:inline;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside a{color:#666;text-decoration:none;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > label,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added label{visibility:hidden;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside li.added > a,#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside.added a{text-decoration:line-through;color:#999;}#assignments-panel .g4-panel-left .assignments-left .assignments-block .inside p{margin:0;}#assignments-panel .g4-panel-left .assignments-right{width:30%;}#assignments-panel .g4-panel-left .assignments-right .assignments-block{margin:10px 10px 10px 0;background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#cccccc', GradientType=0);}#assignments-panel .g4-panel-left .assignments-right .assignments-block #assigned-list{margin-top:10px;}#assignments-panel .g4-panel-left .assignments-right .assignments-block h2{color:#D54E21;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li{display:block;background-color:#a3a3a3;background-image:-moz-linear-gradient(top,#aaa,#999);background-image:-ms-linear-gradient(top,#aaa,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#aaa),to(#999));background-image:-webkit-linear-gradient(top,#aaa,#999);background-image:-o-linear-gradient(top,#aaa,#999);background-image:linear-gradient(top,#aaa,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#aaaaaa', endColorstr='#999999', GradientType=0);border:1px solid #888;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;padding:4px 10px;font-size:11px;margin-bottom:5px;margin-left:10px;position:relative;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li.empty{margin-left:0;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link{float:left;color:#111;text-shadow:0 1px 0 #ccc;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.link a{text-decoration:none;color:#111;text-shadow:0 1px 0 #ccc;cursor:default;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.type{color:#444;border-left:1px solid #888;text-shadow:0 1px 0 #ccc;text-transform:uppercase;padding-left:10px;float:right;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned{font-size:15px;position:absolute;font-weight:bold;cursor:pointer;left:-13px;top:3px;color:#666;}#assignments-panel .g4-panel-left .assignments-right .assignments-block li span.delete-assigned:hover{color:#b01c14;}#assignments-panel .g4-panel-left .assignments-right #assigned_override_items{position:absolute;width:1px;height:1px;visibility:hidden;}#assignments-panel .g4-panel-left .footer-block{line-height:2em;}#assignments-panel .g4-panel-left .footer-block .select-all{float:left;}#assignments-panel .g4-panel-left .footer-block .add-button{float:right;}.assignments-search{text-align:center;}.assignments-search label{font-weight:bold;font-size:1.5em;}.assignments-search input{width:50%;font-weight:normal;}.assignments-search,.assignment-search{position:relative;}.assignments-search .assignment-search-clear,.assignment-search .assignment-search-clear{position:absolute;top:3px;right:3px;height:7px;padding:4px;font-weight:bold;line-height:7px !important;border:1px solid #ccc;background:#eee;color:#888;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;display:none;cursor:pointer;}.assignments-search .assignment-search-clear:hover,.assignment-search .assignment-search-clear:hover{background:#f9f9f9;}.assignments-search-global-wrapper{position:relative;display:inline;}.assignments-search-global-wrapper label{display:inherit !important;}.assignments-search-global-wrapper .assignment-search-clear{top:1px;right:12px;}.g4-wrap{width:100%;}#wpcontent{margin-left:160px;}@media only screen and (max-width: 900px){.auto-fold #wpcontent{margin-left:36px;padding-left:0;}}@media screen and (max-width: 782px){.auto-fold #wpcontent{margin-left:0;}}body .html-field{background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}body #icon-themes{margin:-10px 10px 0;}.g4-wrap input,.g4-wrap textarea{-webkit-box-sizing:inherit !important;-moz-box-sizing:inherit !important;-ms-box-sizing:inherit !important;box-sizing:inherit !important;}.g4-notice{position:relative;}.g4-notice .close{position:absolute;top:6px;right:9px;cursor:pointer;}.g4-actions .spinner{float:left;display:inline-block;display:none;}.inner-tabs{-webkit-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;-moz-box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;box-shadow:0 1px 0 0 #DDD inset, 0 2px 0 0 #FFF inset;}.inner-tabs li{cursor:pointer;display:inline-block;margin-bottom:-6px;border-right:1px solid #d1d1d1;border-left:1px solid #f1f1f1;}.inner-tabs li label{font-weight:normal;}.inner-tabs li.first{border-left:0;}.inner-tabs li.hover label{color:#000;}.inner-tabs li.active label{color:#2287C7;font-weight:bold;}.inner-tabs li .g4-cell.g4-col1{background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;width:auto;}.inner-tabs li .g4-cell.g4-col1 label{padding-left:0;display:inline-block;}.inner-panel > .wrapper{display:table;width:100%;}#overrides-actions{float:left;margin:12px 0 0 8px;min-width:180px;position:relative;z-index:100;}#overrides-actions .add-edit-input{position:absolute;width:85%;height:9px;top:3px;font-size:90%;padding:3px 0;}#overrides-first{padding:3px 30px 4px 12px;line-height:15px;border:1px solid #c0c0c0;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#overrides-first.slide-down{border-bottom:none;-webkit-border-radius:12px 12px 0 0;-moz-border-radius:12px 12px 0 0;border-radius:12px 12px 0 0;}#overrides-actions a{color:#464646;display:block;font-size:11px;text-decoration:none;padding:3px 5px 3px 10px;}body #overrides-first a{background:url(images/overrides-default.png) 0 50% no-repeat;padding:0 0 0 18px;}#overrides-actions a:hover{color:#000;text-decoration:underline;}#overrides-first a:hover{text-decoration:none;}#overrides-toggle{background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height:22px;position:absolute;right:0px;top:1px;width:28px;cursor:pointer;}#overrides-toggle.hidden{display:none;}#overrides-inside{background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-webkit-border-radius:0 0 12px 12px;-moz-border-radius:0 0 12px 12px;border-radius:0 0 12px 12px;}#overrides-toolbar{float:left;margin:12px 0 0 5px;position:relative;}#overrides-toolbar a{transition:none;}#overrides-toolbar .overrides-button{float:left;width:29px;height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}#overrides-toolbar .overrides-button span{display:none;}#overrides-toolbar .button-del{background-position:-29px 0;width:28px;}#overrides-toolbar .button-edit{background-position:-57px 0;}#overrides-toolbar .button-add:hover{background-position:0 -24px;}#overrides-toolbar .button-del:hover{background-position:-29px -24px;}#overrides-toolbar .button-edit:hover{background-position:-57px -24px;}.text-button{display:inline-block;height:24px;background:url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}.text-button span{font-size:11px;font-family:"Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display:inline-block;background:url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left:20px;padding:0 10px 0 5px;line-height:24px;height:24px;}.text-button:hover span{color:#000;background-position:100% -24px;}.text-button.button-widget{background-position:0 -48px;}.text-button.button-widget:hover{background-position:0 -72px;}#overrides-switch{float:left;margin:12px 0 0 5px;position:relative;}#overrides-switch a{transition:none;}.gantry-pre-mp6 #wpcontent{margin-left:147px;}.g4-wrapper{width:100%;}.clr{clear:both;}.g4-size-60{width:60%;}.g4-size-50{width:50%;}.g4-size-40{width:40%;}.g4-size-35{width:35%;}.g4-size-30{width:30%;}.g4-size-25{width:25%;}.g4-size-20{width:20%;}.g4-size-15{width:15%;}.g4-size-13{width:13%;}#g4-hidden{display:none;}#g4-logo{position:relative;float:right;margin:0 0 0 0;width:160px;height:48px;overflow:hidden;}#g4-logo span{display:block;position:absolute;top:9px;right:23px;width:120px;height:32px;background:url(images/g4-logo-small.png);}.g4-tabs{display:block;height:50px;}.g4-actions{float:right;}.g4-tabs > li,.g4-actions > li{float:left;vertical-align:middle;}.width-100pc{width:100%;}#g4-toolbar{background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fff,#ededed);background-image:-ms-linear-gradient(top,#fff,#ededed);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ededed));background-image:-webkit-linear-gradient(top,#fff,#ededed);background-image:-o-linear-gradient(top,#fff,#ededed);background-image:linear-gradient(top,#fff,#ededed);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);padding:30px 0;width:100%;-webkit-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;-moz-box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;box-shadow:0 -1px 0 0 #cbcbcb inset, 0 -2px 0 0 #fff inset;}#g4-toolbar h1{padding:0 15px;}#g4-toolbar .rok-button{margin-left:5px;font-size:13px;}#g4-toolbar .rok-buttons-group .rok-button:last-child{margin-left:-3px;}#g4-toolbar .rok-buttons-group .caret{height:4px;}#g4-details-wrapper{position:relative;}#g4-master{position:absolute;background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);top:-1px;bottom:0px;right:0;z-index:1;border:1px solid #b03018;-webkit-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;-moz-box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;box-shadow:0 2px 8px 0 rgba(0,0,0,0.3) inset;}#g4-master.g4-flag-override{background-color:#b8b8b8;background-image:-moz-linear-gradient(top,#ccc,#999);background-image:-ms-linear-gradient(top,#ccc,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#999));background-image:-webkit-linear-gradient(top,#ccc,#999);background-image:-o-linear-gradient(top,#ccc,#999);background-image:linear-gradient(top,#ccc,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#999999', GradientType=0);border:1px solid #999;}#g4-master #g4-flag{text-align:center;position:relative;line-height:50px;font-size:17px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}#g4-master #g4-flag > .rt-arrow,#g4-master #g4-flag > .rt-arrow span{position:absolute;display:block;width:5px;}#g4-master #g4-flag > .rt-arrow{top:50%;right:0;margin-top:-7px;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #ececec;left:-2px;top:50%;z-index:10;}#g4-details{border-top:1px solid #fff;background:#ececec;height:50px;position:relative;}#g4-details.presets-showing{border-bottom:1px solid #cbcbcb;}#g4-presets{background-color:#f4f4f4;background-image:-moz-linear-gradient(top,#ececec,#fff);background-image:-ms-linear-gradient(top,#ececec,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ececec),to(#fff));background-image:-webkit-linear-gradient(top,#ececec,#fff);background-image:-o-linear-gradient(top,#ececec,#fff);background-image:linear-gradient(top,#ececec,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ececec', endColorstr='#ffffff', GradientType=0);-webkit-box-shadow:0 1px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #fff inset;box-shadow:0 1px 0 0 #fff inset;}#g4-container{margin-top:-2px;padding-bottom:1px;border-bottom:1px solid #ccc;margin:0;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}#g4-container .g4-header{border-top:1px solid #bcbcbc;background-color:#e6e6e6;-webkit-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;-moz-box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;box-shadow:0 -1px 0 0 #fefefe inset, 0 -2px 0 0 #d1d1d1 inset, 0 5px 8px #cecece inset, 0 -3px 8px #dedede inset;}#g4-container .g4-body{background:#fff;background-color:#fcfcfc;background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3f3f3),color-stop(50%,#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-moz-linear-gradient(top,#f3f3f3,#fff 50%,#f0f0f0);background-image:-ms-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:-o-linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-image:linear-gradient(#f3f3f3,#fff 50%,#f0f0f0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f0f0f0', GradientType=0);}.g4-tabs li{color:#717077;padding:15px 20px;margin:0;text-shadow:0 1px 0 #fff;-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset;cursor:pointer;}.g4-tabs li.active .rt-arrow{display:none;}.g4-tabs li:hover{color:#000;}.g4-tabs li.active{margin-top:1px;padding-top:14px;background-color:#e8e8e8;background-image:-moz-linear-gradient(top,#efefef,#ddd);background-image:-ms-linear-gradient(top,#efefef,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#efefef),to(#ddd));background-image:-webkit-linear-gradient(top,#efefef,#ddd);background-image:-o-linear-gradient(top,#efefef,#ddd);background-image:linear-gradient(top,#efefef,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef', endColorstr='#dddddd', GradientType=0);-webkit-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;-moz-box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;box-shadow:-1px 0 0 0 #f1f1f1 inset, -2px 0 0 0 #d1d1d1 inset, 0 2px 2px -1px rgba(0, 0, 0, 0.1) inset;color:#2287c7;position:relative;}.g4-tabs li.active .rt-arrow,.g4-tabs li.active .rt-arrow span{position:absolute;display:block;}.g4-tabs li.active .rt-arrow{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb;bottom:0;top:inherit;}.g4-tabs li.active .rt-arrow span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;margin-left:-6px;top:1px;}.g4-tabs li.active .rt-arrow span span{top:0;left:50%;margin-left:-7px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #f6f6f6;top:1px;margin-left:-6px;}.g4-tabs li .badge{padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}#g4-container .presets-involved,#g4-container .overrides-involved,#g4-container .preset-info,#g4-container .menuitems-involved{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;background-color:#e3461e;background-image:-moz-linear-gradient(top,#D23C12,#FC562F);background-image:-ms-linear-gradient(top,#D23C12,#FC562F);background-image:-webkit-gradient(linear,0 0,0 100%,from(#D23C12),to(#FC562F));background-image:-webkit-linear-gradient(top,#D23C12,#FC562F);background-image:-o-linear-gradient(top,#D23C12,#FC562F);background-image:linear-gradient(top,#D23C12,#FC562F);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d23c12', endColorstr='#fc562f', GradientType=0);-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.3) inset, 0 1px 0 0 #fff;float:right;height:6px;line-height:7px;margin-top:-3px;margin-bottom:-5px;margin-right:-10px;margin-left:10px;padding:9px;color:#fff;text-shadow:none;display:none;opacity:0;visibility:hidden;}#g4-container .preset-info{width:4px;height:4px;padding:4px;line-height:4px;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px;position:absolute;top:17px;left:-5px;margin:0;display:block;opacity:1;filter:alpha(opacity=100);visibility:visible;}#g4-container .overrides-involved{background-color:#2287c9;background-image:-moz-linear-gradient(top,#1d79b5,#2a9de6);background-image:-ms-linear-gradient(top,#1d79b5,#2a9de6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1d79b5),to(#2a9de6));background-image:-webkit-linear-gradient(top,#1d79b5,#2a9de6);background-image:-o-linear-gradient(top,#1d79b5,#2a9de6);background-image:linear-gradient(top,#1d79b5,#2a9de6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1d79b5', endColorstr='#2a9de6', GradientType=0);}#g4-container .menuitems-involved{display:block;opacity:1;visibility:visible;background-color:#adadad;background-image:-moz-linear-gradient(top,#bbb,#999);background-image:-ms-linear-gradient(top,#bbb,#999);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbb),to(#999));background-image:-webkit-linear-gradient(top,#bbb,#999);background-image:-o-linear-gradient(top,#bbb,#999);background-image:linear-gradient(top,#bbb,#999);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbbbbb', endColorstr='#999999', GradientType=0);}#g4-container .double-badge .presets-involved{-webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0;}#g4-container .double-badge .overrides-involved{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px;}.override-wrap #g4-container .preset-info{left:-15px;}#g4-actions li{margin:0 4px;}#g4-panels{padding-top:20px;}.g4-panel{visibility:hidden;margin-bottom:40px;top:-10000px;left:-10000px;width:100%;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 1px 0 #fefefe;-moz-box-shadow:0 1px 1px 0 #fefefe;box-shadow:0 1px 1px 0 #fefefe;}.g4-panel.active-panel{visibility:visible;top:0;left:0;}.g4-panel.panel-overview{border:0;margin-bottom:0;}.g4-panel.panel-overview .panelform .g4-row .g4-col2{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:inherit;}.g4-panel.panel-overview .g4-col1{display:none;}.g4-panel.panel-overview div.template-preview{float:left;margin-right:35px;width:40%;}.g4-panel.panel-overview div.template-preview img{width:100%;margin-top:-10px;}.g4-panel.panel-overview .template-description{margin-left:45%;margin-right:20px;}.g4-panel.panel-overview img.template-preview{float:left;margin-right:30px;margin-bottom:20px;}.g4-panel-left,.g4-panel-right{float:left;position:relative;}.g4-panel-left{width:100%;}.panel-overview .g4-panel-left{width:70%;}.panel-overview .g4-panel-right{width:30%;}.g4-panel-hiddens{position:absolute;visibility:hidden;height:0;}.backgroundpicker{position:relative;}.updater-field,.tips-field,.html-field{background:#eaeaea;border:1px solid #c8c8c8;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-right:20px;margin-bottom:20px;padding:20px;-webkit-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;-moz-box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;box-shadow:0 1px 0 0 #fff, 0 2px 6px 0 rgba(66,66,66,0.2) inset;}.updater-field .h2bar,.tips-field .h2bar,.html-field .h2bar{display:block;min-height:36px;margin-bottom:5px;padding:0;}.updater-field{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-ms-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2A9DE6),to(#1D79B5));background-image:-webkit-linear-gradient(top,#2A9DE6,#1D79B5);background-image:-o-linear-gradient(top,#2A9DE6,#1D79B5);background-image:linear-gradient(top,#2A9DE6,#1D79B5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.updater-field.update{background-color:#e43e1f;background-image:-moz-linear-gradient(top,#f54221,#ca381c);background-image:-ms-linear-gradient(top,#f54221,#ca381c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f54221),to(#ca381c));background-image:-webkit-linear-gradient(top,#f54221,#ca381c);background-image:-o-linear-gradient(top,#f54221,#ca381c);background-image:linear-gradient(top,#f54221,#ca381c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f54221', endColorstr='#ca381c', GradientType=0);}.tips-field{position:relative;padding-bottom:50px;}.tips-field .gantrytips-controller{position:absolute;bottom:20px;right:10px;}.tips-field .gantrytips-controller .rok-button{font-size:10px;color:#555 !important;}.tips-field .gantrytips-count{position:absolute;bottom:20px;left:20px;color:#999 !important;}.tips-field .gantrytips-wrapper{position:relative;}.tips-field .gantrytips-wrapper .gantrytips-tip{display:none;}.tips-field .gantrytips-wrapper .gantrytips-tip:first-child{display:block;}.panelform{display:table;border-collapse:collapse;width:100%;}.panelform .selectedset-fields{display:table-row-group;}.panelform .selectedset-fields .g4-row:first-child .g4-cell.g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row{display:table-row;}.panelform .g4-row:first-child .g4-col2{-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 3px 3px rgba(99,99,99,0.1) inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;}.panelform .g4-row .g4-col1{font-weight:bold;text-shadow:1px 1px 1px #fff;color:#555;padding:0 20px;}.panelform .g4-row .g4-col1 label{padding:15px 10px 15px 20px;}.panelform .g4-cell{display:table-cell;padding:10px 20px;vertical-align:middle;}.panelform .g4-cell.g4-col1{width:20%;background:#f6f6f6;-webkit-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;-moz-box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;box-shadow:0 1px 0 0 #dddddd inset, 0 2px 0 0 #fff inset;}.panelform .g4-cell.g4-col2{display:table-cell;padding:0;width:80%;-webkit-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;-moz-box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;box-shadow:0 1px 0 0 #d1d1d1 inset, 0 2px 0 0 #fbfbfb inset, 2px 0 3px rgba(99,99,99,0.05) inset, 1px 0 0 0 #dddddd inset;background:#eee;}.panelform .g4-cell.g4-col2 .g4-col2-wrap{padding:10px 20px;position:relative;*zoom:1;}.panelform .g4-cell.g4-col2 .g4-col2-wrap:before,.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{display:table;content:"";}.panelform .g4-cell.g4-col2 .g4-col2-wrap:after{clear:both;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow,.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow span{position:absolute;display:block;width:5px;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #ccc;left:0px;top:50%;z-index:10;}.panel-overview .panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow{display:none;}.panelform .g4-cell.g4-col2 .g4-col2-wrap > .rt-arrow span{top:50%;right:0;margin-top:-6px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #f6f6f6;left:-1px;margin-left:-6px;}.panelform .g4-cell .inherit-checkbox{position:relative;z-index:5;float:left;margin-left:0;margin-top:15px;}.panelform .g4-cell .inherit-overlay{position:absolute;top:1px;right:1px;bottom:1px;left:1px;background:#efefef;z-index:5;}.wrapper .chain{display:inline-block;vertical-align:top;margin-right:20px;}.wrapper .chain.chain-hidden{margin-right:0;}.group{clear:both;height:32px;margin:0 0 10px;}.group .alias-label{float:left;width:150px;padding-top:5px;}.group-left,.group-label,.group .wrapper{float:left;}.group-right{float:left;margin-left:25px;}.group-none{float:none;clear:both;}.g4-wrap .group-label{display:block;position:relative;text-align:right;width:75px;display:block;margin-right:10px;}.g4-wrap .group-label label{display:inline-block;line-height:12px;margin:8px 5px 0 0;width:100%;vertical-align:middle;}.group-right .selectbox-wrapper{margin-right:24px;}.group-none .group-label{width:50%;}.group-gradient{border:1px solid #ccc;padding:1px;height:40px;margin-right:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;}.assignments-field .g4-cell.g4-col1{vertical-align:top;}@media (max-width: 979px){.g4-tabs li{padding:15px 15px;}}@media (max-width: 767px){.btn-subhead{display:none !important;}.container-fluid{margin:0 -20px;}.container-fluid #g4-master{width:90px;height:50px;}.container-fluid #g4-details{height:auto;padding-bottom:15px;}.container-fluid #g4-details .g4-controlgroup{width:100%;}.container-fluid #g4-details .g4-controlgroup .g4-controls{margin-right:130px;}.container-fluid #g4-details .g4-controlgroup select{max-width:120px;}#g4-toolbar ul.g4-actions{float:none;display:block;margin-top:15px;margin-bottom:-10px;margin-left:15px;*zoom:1;}#g4-toolbar ul.g4-actions:before,#g4-toolbar ul.g4-actions:after{display:table;content:"";}#g4-toolbar ul.g4-actions:after{clear:both;}#g4-toolbar ul.g4-actions ul.rok-dropdown{right:inherit;left:-43px;}.g4-tabs li{padding:15px 10px;}.g4-tabs li .menuitems-involved{margin-left:5px !important;margin-right:-5px !important;}.panel-overview .g4-panel-left,.panel-overview .g4-panel-right,.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{float:none;width:100%;}.panel-overview .g4-panel-left .updater-field,.panel-overview .g4-panel-left .tips-field,.panel-overview .g4-panel-left .html-field,.panel-overview .g4-panel-right .updater-field,.panel-overview .g4-panel-right .tips-field,.panel-overview .g4-panel-right .html-field,.g4-panel.panel-overview div.template-preview .updater-field,.g4-panel.panel-overview div.template-preview .tips-field,.g4-panel.panel-overview div.template-preview .html-field,.g4-panel.panel-overview .template-description .updater-field,.g4-panel.panel-overview .template-description .tips-field,.g4-panel.panel-overview .template-description .html-field{margin:10px 20px;}.g4-panel.panel-overview div.template-preview,.g4-panel.panel-overview .template-description{margin:0 0 20px;}.g4-panel.panel-overview div.template-preview img,.g4-panel.panel-overview .template-description img{margin:-10px auto 0;display:block;}}.g4-wrap select,.g4-wrap textarea,.g4-wrap input[type="text"],.g4-wrap input[type="password"],.g4-wrap input[type="datetime"],.g4-wrap input[type="datetime-local"],.g4-wrap input[type="date"],.g4-wrap input[type="month"],.g4-wrap input[type="time"],.g4-wrap input[type="week"],.g4-wrap input[type="number"],.g4-wrap input[type="email"],.g4-wrap input[type="url"],.g4-wrap input[type="search"],.g4-wrap input[type="tel"],.g4-wrap input[type="color"],.g4-wrap .readonly{display:inline-block;height:18px;padding:5px 0px;text-indent:10px;margin-left:0;margin-bottom:0;font-size:12px;background:#fff;line-height:18px;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:2;}.g4-wrap select{text-indent:0;outline:0;}.g4-wrap select[disabled]{color:#aaa;}.g4-wrap input.required{background:#fff;}.g4-wrap input.readonly,.g4-wrap input.disabled{background:#f3f3f3;color:#6f6f6f;font-weight:normal;-webkit-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(99,99,99,.1) inset, 0 1px 0 0 #fff;border:1px solid #d4d4d4;}.g4-wrap .input-append input[type="text"]{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.g4-wrap .input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-left:-1px;}.g4-wrap .input-prepend input[type="text"]{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.g4-wrap .input-prepend .add-on{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;margin-right:-4px;}.g4-wrap .add-on{display:inline-block;-webkit-box-shadow:0 1px 0 0 #fff;-moz-box-shadow:0 1px 0 0 #fff;box-shadow:0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;background:#fafafa;color:#999999;padding:5px 10px;height:18px;width:auto;line-height:18px;}.g4-wrap select,.g4-wrap input[type="file"]{height:30px;line-height:30px;}.g4-wrap label{display:block;position:relative;margin-top:0;margin-bottom:0px;}.g4-wrap .chain-label > label{height:16px;margin-bottom:2px;}.g4-wrap .position-field label{margin-top:3px;}.g4-wrap .chain-positions .chain-label > label{display:none;}.g4-wrap .chain-positions .g-position{height:16px;margin-bottom:0;}.g4-wrap fieldset.adminform{padding:0;margin:0;width:100%;}.g4-wrap fieldset.adminform input,.g4-wrap fieldset.adminform textarea,.g4-wrap fieldset.adminform select,.g4-wrap fieldset.adminform img,.g4-wrap fieldset.adminform button{float:inherit;margin:0 0 9px 0;}.g4-wrap fieldset.adminform label{min-width:inherit;}.g4-wrap .g4-controlgroup:before,.g4-wrap .g4-controlgroup:after{display:table;content:"";}.g4-wrap .g4-horizontal-form label{float:left;width:100px;padding-top:5px !important;text-align:right;}.g4-wrap .g4-horizontal-form .g4-controls{margin-left:120px;cursor:text;}.g4-wrap .g4-horizontal-form .g4-controls input,.g4-wrap .g4-horizontal-form .g4-controls select,.g4-wrap .g4-horizontal-form .g4-controls textarea{width:100%;}.g4-wrap .chzn-done{width:auto;}.g4-wrap .chzn-container-single .chzn-single{height:28px;line-height:29px;}#g4-details fieldset{border:0;}#g4-details fieldset div.g4-controlgroup{float:left;padding-top:10px;}#g4-details fieldset div.g4-controlgroup input#jform_title{font-size:12px;}#g4-details fieldset div.g4-controlgroup input#jform_id{width:40px;background-color:#f3f3f3;font-size:inherit;font-weight:inherit;float:inherit;border:1px solid #d4d4d4;margin:0 0 9px 0;}.panelform div#menu-assignment h3{margin-bottom:10px;}#menu-assignment .menu-links{list-style:none;float:left;width:50%;padding:0;}#menu-assignment ul.menu-links li{margin:0;}#menu-assignment ul.menu-links label{padding:0;text-align:left;display:inline-block;}.assignments-field{margin:0 15px;}.assignments-field #menu-assignment{overflow:hidden;}.assignments-field .menu-padder{height:1px;background:#ccc;display:inline-block;margin:0 5px 4px 0;}.assignments-field h2{float:left;margin-top:0;margin-bottom:0;}.assignments-field h3{border-bottom:1px solid #ccc;margin-right:15px;}.assignments-field .jform-rightbtn{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);float:right;}.assignments-field .jform-rightbtn .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:first-child{*margin-left:0;}.assignments-field .jform-rightbtn .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:hover,.assignments-field .jform-rightbtn.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.assignments-field .jform-rightbtn:hover .caret,.assignments-field .jform-rightbtn.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn:active .caret,.assignments-field .jform-rightbtn.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.assignments-field .jform-rightbtn.rok-button-disabled .caret,.assignments-field .jform-rightbtn.rok-button-disabled:hover .caret,.assignments-field .jform-rightbtn.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.assignments-field .jform-rightbtn.rok-button-disabled i,.assignments-field .jform-rightbtn.rok-button-disabled:hover i,.assignments-field .jform-rightbtn.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.assignments-field .jform-rightbtn:active,.assignments-field .jform-rightbtn.rok-button-active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-disabled,.assignments-field .jform-rightbtn.rok-button-disabled:hover,.assignments-field .jform-rightbtn.rok-button-disabled:active{padding:8px 7px;}.assignments-field .jform-rightbtn.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.assignments-field .jform-rightbtn i{margin:-1px 0 -2px;}@font-face{font-family:'OxygenRegular';src:url('../fonts/Oxygen-webfont.eot');src:url('../fonts/Oxygen-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-webfont.woff') format('woff'), url('../fonts/Oxygen-webfont.ttf') format('truetype'), url('../fonts/Oxygen-webfont.svg#OxygenRegular') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenItalic';src:url('../fonts/Oxygen-Italic-webfont.eot');src:url('../fonts/Oxygen-Italic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Italic-webfont.woff') format('woff'), url('../fonts/Oxygen-Italic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Italic-webfont.svg#OxygenItalic') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBold';src:url('../fonts/Oxygen-Bold-webfont.eot');src:url('../fonts/Oxygen-Bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-Bold-webfont.woff') format('woff'), url('../fonts/Oxygen-Bold-webfont.ttf') format('truetype'), url('../fonts/Oxygen-Bold-webfont.svg#OxygenBold') format('svg');font-weight:normal;font-style:normal;}@font-face{font-family:'OxygenBoldItalic';src:url('../fonts/Oxygen-BoldItalic-webfont.eot');src:url('../fonts/Oxygen-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/Oxygen-BoldItalic-webfont.woff') format('woff'), url('../fonts/Oxygen-BoldItalic-webfont.ttf') format('truetype'), url('../fonts/Oxygen-BoldItalic-webfont.svg#OxygenBoldItalic') format('svg');font-weight:normal;font-style:normal;}#g4-logo{font-size:200px;line-height:0px;color:rgba(0,0,0,0.05);text-indent:40px;font-weight:bold;}.g4-wrap{font-size:12px;line-height:18px;}.g4-wrap ul{margin:0;padding:0;list-style:none;}.g4-wrap p{margin:20px 0;font-size:13px;color:#555;}h1 small{color:#9b9b9b;font-size:16px;}.g4-tabs li{font-size:14px;}#g4-sidebar .g4-content h2{font-size:16px;color:#3e3e3e;margin:0;padding:15px 15px 5px;}.g4-tabs .presets-involved,.g4-tabs overrides-involved,.g4-tabs .preset-info,.g4-tabs .menuitems-involved{font-size:13px;font-weight:bold;}#g4-panels h1{font-size:38px;line-height:38px;font-weight:bold;}#g4-panels h1 .g4-version,#g4-panels h1 > span{color:#3680be;font-weight:normal;}#g4-panels h1+h2{margin-top:10px;color:#555;font-weight:normal;}div.template-preview h2,div.template-preview ul{margin:10px 0 10px 10px;}div.template-preview ul{list-style:disc;}div.template-preview ul li{margin-left:20px;margin-bottom:3px;}.gantrytips-tip ul{list-style:disc;margin:10px 0 10px 10px;}.gantrytips-tip ul li{margin-left:10px;margin-bottom:3px;}.tips-field,.html-field{font-size:13px;color:#333;text-shadow:1px 1px 1px #fff;}.tips-field .h2bar,.html-field .h2bar{line-height:26px;font-size:22px;font-weight:bold;color:#555;}#updater #updater-bar{color:#eee;font-size:13px;line-height:26px;font-size:22px;font-weight:bold;text-shadow:0px -1px 0 #1d5792;}#updater #updater-bar span{color:#fff;}#updater #updater-desc{color:#eee;text-shadow:0px -1px 0 #1d5792;}#updater #updater-desc a{color:#fff;}#updater.update #updater-bar,#updater.update #updater-desc{text-shadow:0px -1px 0 #a71f14;}.g4-cell.g4-col1{font-weight:bold;text-shadow:1px 1px 0 #fff;color:#555;}.g4-cell.g4-col1 label,.g4-cell.g4-col1 h2{padding-left:20px;font-size:13px;}.g4-cell.g4-col1 h2{padding-top:45px;}.chain-label > label,.group-label > label,.inner-panels label{font-size:11px;color:#777;text-shadow:1px 1px 0px #fff;}i.spinner{opacity:0;filter:alpha(opacity=0);}i.spinner.spinner-16{background-image:url(../images/loader-16.gif);}i.spinner.spinner-32{background-image:url(../images/loader-32.gif);width:32px;height:32px;}i.spinner.spinner-64{background-image:url(../images/loader-64.gif);width:64px;height:64px;}i.spinner.spinner-128{background-image:url(../images/loader-128.gif);width:128px;height:128px;}i.published{background-position:0 0;}i.unpublished{background-position:-16px 0;}i.info{background-position:-32px 0;}i.edit{background-position:-48px 0;}i.plus{background-position:-64px 0;}.rok-button-primary i.info{background-position:-32px -16px;}.rok-button-primary i.edit{background-position:-48px -16px;}.rok-button-primary i.plus{background-position:-64px -16px;}.xdebug-var-dump i,.xdebug-error i{background:none;display:inline;width:auto;height:auto;}button{margin:0;font-size:100%;vertical-align:middle;}button{*overflow:visible;line-height:normal;}button::-moz-focus-inner{padding:0;border:0;}button{cursor:pointer;-webkit-appearance:button;}.rok-button{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);}.rok-button .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button:first-child{*margin-left:0;}.rok-button .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:hover,.rok-button.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button:hover .caret,.rok-button.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button:active,.rok-button.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button:active .caret,.rok-button.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button.rok-button-disabled .caret,.rok-button.rok-button-disabled:hover .caret,.rok-button.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button.rok-button-disabled i,.rok-button.rok-button-disabled:hover i,.rok-button.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button:active,.rok-button.rok-button-active{padding:8px 7px;}.rok-button.rok-button-disabled,.rok-button.rok-button-disabled:hover,.rok-button.rok-button-disabled:active{padding:8px 7px;}.rok-button.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button i{margin:-1px 0 -2px;}.rok-button-primary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #1c73ac;box-shadow:0 0 0 1px #1573af, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #186496;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);}.rok-button-primary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-primary:hover .caret,.rok-button-primary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary:active .caret,.rok-button-primary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-primary.rok-button-disabled .caret,.rok-button-primary.rok-button-disabled:hover .caret,.rok-button-primary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary.rok-button-disabled i,.rok-button-primary.rok-button-disabled:hover i,.rok-button-primary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-primary:active,.rok-button-primary.rok-button-active{padding:8px 7px;}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover,.rok-button-primary.rok-button-disabled:active{padding:8px 7px;}.rok-button-primary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-primary i{margin:-1px 0 -2px;}.rok-button-primary:first-child{*margin-left:0;}.rok-button-primary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-primary:hover,.rok-button-primary.rok-button-hover{color:#fff;background-color:#3697d6;background-image:-moz-linear-gradient(top,#45aae9,#1e7cb9);background-image:-ms-linear-gradient(top,#45aae9,#1e7cb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#45aae9),to(#1e7cb9));background-image:-webkit-linear-gradient(top,#45aae9,#1e7cb9);background-image:-o-linear-gradient(top,#45aae9,#1e7cb9);background-image:linear-gradient(top,#45aae9,#1e7cb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#45aae9', endColorstr='#1e7cb9', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;box-shadow:0 0 0 1px #196a9f, 0 1px 1px #fff;background-color:#228cd0;background-image:-moz-linear-gradient(top,#259be5,#1c76b1);background-image:-ms-linear-gradient(top,#259be5,#1c76b1);background-image:-webkit-gradient(linear,0 0,0 100%,from(#259be5),to(#1c76b1));background-image:-webkit-linear-gradient(top,#259be5,#1c76b1);background-image:-o-linear-gradient(top,#259be5,#1c76b1);background-image:linear-gradient(top,#259be5,#1c76b1);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#259be5', endColorstr='#1c76b1', GradientType=0);}.rok-button-primary:active,.rok-button-primary.rok-button-active{background-color:#1a82c4;background-image:-moz-linear-gradient(top,#1a91dd,#196a9f);background-image:-ms-linear-gradient(top,#1a91dd,#196a9f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1a91dd),to(#196a9f));background-image:-webkit-linear-gradient(top,#1a91dd,#196a9f);background-image:-o-linear-gradient(top,#1a91dd,#196a9f);background-image:linear-gradient(top,#1a91dd,#196a9f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1a91dd', endColorstr='#196a9f', GradientType=0);}.rok-button-primary.rok-button-disabled,.rok-button-primary.rok-button-disabled:hover{text-shadow:0 -1px 0 #fff;}.rok-button-secondary{position:relative;font-size:;line-height:1em;min-width:15px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;margin-right:4px;padding:7px 6px;color:#65646A;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.85) rgba(255,255,255,0.85) #e6e6e6;text-shadow:0 1px 0 #ffffff;-webkit-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;-moz-box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;box-shadow:0 0 0 1px #b5b5b5, 0 3px 5px #c6c6c6;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#eeeeee;background-image:-moz-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-ms-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f0f0f0),to(#ebebeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#ebebeb);background-image:-o-linear-gradient(top,#f0f0f0,#ebebeb);background-image:linear-gradient(top,#f0f0f0,#ebebeb);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#ebebeb', GradientType=0);color:#fff;border-width:1px;border-style:solid;border-color:rgba(255,255,255,0.45) rgba(255,255,255,0.15) #616161;box-shadow:0 0 0 1px #737373, 0 3px 5px #c6c6c6;text-shadow:0 -1px 0 #545454;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;*margin-left:.3em;background-color:#858585;background-image:-moz-linear-gradient(top,#999,#666);background-image:-ms-linear-gradient(top,#999,#666);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#666));background-image:-webkit-linear-gradient(top,#999,#666);background-image:-o-linear-gradient(top,#999,#666);background-image:linear-gradient(top,#999,#666);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#999999', endColorstr='#666666', GradientType=0);}.rok-button-secondary .caret{margin:5px 0 0;opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #65646A;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#484848;background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#fafafa,#f5f5f5);background-image:-ms-linear-gradient(top,#fafafa,#f5f5f5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fafafa),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#fafafa,#f5f5f5);background-image:-o-linear-gradient(top,#fafafa,#f5f5f5);background-image:linear-gradient(top,#fafafa,#f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#f5f5f5', GradientType=0);}.rok-button-secondary:hover .caret,.rok-button-secondary.rok-button-hover .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #484848;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#464646;border:0;-webkit-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;box-shadow:0 0 0 1px #a1a1a1, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary:active .caret,.rok-button-secondary.rok-button-active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{cursor:default;color:#929292;border:0;-webkit-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;box-shadow:0 0 0 1px #bbbbbb, 0 1px 1px #fff;background-color:#ebebeb;background-image:-moz-linear-gradient(top,#ededed,#e8e8e8);background-image:-ms-linear-gradient(top,#ededed,#e8e8e8);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ededed),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#ededed,#e8e8e8);background-image:-o-linear-gradient(top,#ededed,#e8e8e8);background-image:linear-gradient(top,#ededed,#e8e8e8);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8', GradientType=0);}.rok-button-secondary.rok-button-disabled .caret,.rok-button-secondary.rok-button-disabled:hover .caret,.rok-button-secondary.rok-button-disabled:active .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #464646;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary.rok-button-disabled i,.rok-button-secondary.rok-button-disabled:hover i,.rok-button-secondary.rok-button-disabled:active i{opacity:0.5;filter:alpha(opacity=50);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{padding:8px 7px;}.rok-button-secondary.rok-button-disabled,.rok-button-secondary.rok-button-disabled:hover,.rok-button-secondary.rok-button-disabled:active{padding:8px 7px;}.rok-button-secondary.rok-button-primary i{opacity:1;filter:alpha(opacity=100);}.rok-button-secondary i{margin:-1px 0 -2px;}.rok-button-secondary:first-child{*margin-left:0;}.rok-button-secondary .caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;content:"";}.rok-button-secondary:hover,.rok-button-secondary.rok-button-hover{color:#fff;background-color:#8f8f8f;background-image:-moz-linear-gradient(top,#a8a8a8,#696969);background-image:-ms-linear-gradient(top,#a8a8a8,#696969);background-image:-webkit-gradient(linear,0 0,0 100%,from(#a8a8a8),to(#696969));background-image:-webkit-linear-gradient(top,#a8a8a8,#696969);background-image:-o-linear-gradient(top,#a8a8a8,#696969);background-image:linear-gradient(top,#a8a8a8,#696969);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#a8a8a8', endColorstr='#696969', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{color:#fff;border:0;-webkit-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;-moz-box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;box-shadow:0 0 0 1px #595959, 0 1px 1px #fff;background-color:#828282;background-image:-moz-linear-gradient(top,#969696,#636363);background-image:-ms-linear-gradient(top,#969696,#636363);background-image:-webkit-gradient(linear,0 0,0 100%,from(#969696),to(#636363));background-image:-webkit-linear-gradient(top,#969696,#636363);background-image:-o-linear-gradient(top,#969696,#636363);background-image:linear-gradient(top,#969696,#636363);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#636363', GradientType=0);}.rok-button-secondary:active,.rok-button-secondary.rok-button-active{background-color:#727272;background-image:-moz-linear-gradient(top,#616161,#8c8c8c);background-image:-ms-linear-gradient(top,#616161,#8c8c8c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#616161),to(#8c8c8c));background-image:-webkit-linear-gradient(top,#616161,#8c8c8c);background-image:-o-linear-gradient(top,#616161,#8c8c8c);background-image:linear-gradient(top,#616161,#8c8c8c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#8c8c8c', GradientType=0);}.rok-buttons-group > *{display:inline-block;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;margin-right:0;margin-left:-3px;}.rok-buttons-group > *:first-child{margin-left:0;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}.rok-buttons-group > *:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:4px;}#g4-toolbar .rok-dropdown-open ul.rok-dropdown{display:block;}#g4-toolbar ul.rok-dropdown{position:absolute;top:100%;left:0;display:none;float:left;list-style:none;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;z-index:5;background-color:#fefefe;min-width:160px;top:200%;right:-10px;left:inherit;padding:4px 0;border:1px solid #fff;*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:2px 2px 4px 4px;-moz-border-radius:2px 2px 4px 4px;border-radius:2px 2px 4px 4px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);box-shadow:0 5px 10px rgba(0, 0, 0, .1), 0 0 0 1px rgba(0, 0, 0, 0.20);}#g4-toolbar ul.rok-dropdown .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff;}#g4-toolbar ul.rok-dropdown > li{display:block;}#g4-toolbar ul.rok-dropdown a{display:block;clear:both;font-weight:normal;white-space:nowrap;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{text-decoration:none;}#g4-toolbar ul.rok-dropdown li{text-align:left;}#g4-toolbar ul.rok-dropdown li a{color:#666;}#g4-toolbar ul.rok-dropdown .divider{background-color:#e5e5e5;border-bottom:1px solid #ffffff;margin:5px 1px;}#g4-toolbar ul.rok-dropdown a{margin:0 -1px;padding:3px 15px;line-height:24px;color:;text-shadow:0 1px 0 #fff;text-decoration:none;}#g4-toolbar ul.rok-dropdown > li > a:hover,#g4-toolbar ul.rok-dropdown .active > a,#g4-toolbar ul.rok-dropdown .active > a:hover{background-color:#258fd2;background-image:-moz-linear-gradient(top,#2a9de6,#1d79b5);background-image:-ms-linear-gradient(top,#2a9de6,#1d79b5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2a9de6),to(#1d79b5));background-image:-webkit-linear-gradient(top,#2a9de6,#1d79b5);background-image:-o-linear-gradient(top,#2a9de6,#1d79b5);background-image:linear-gradient(top,#2a9de6,#1d79b5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a9de6', endColorstr='#1d79b5', GradientType=0);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);}.text-verylong{width:375px;}.text-long{width:275px;}.text-regular{width:200px;}.text-medium{width:125px;}.text-short{width:50px;}.text-color{width:75px;}textarea.text-textarea{width:350px;height:120px;padding:5px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;text-indent:0;}.toggle{display:inline-block;width:80px;height:35px;background:url(images/toggle.png);cursor:hand;}.toggle .toggle-input{display:none;}.toggle.toggle-off{background-position:0 0;}.toggle.toggle-on{background-position:0 -40px;}.toggle.toggle-off.disabled{background-position:0 -80px;}.toggle.toggle-on.disabled{background-position:0 -120px;}.selectedset-group{clear:both;position:relative;}.selectset-group-first{border-top:none;}.selectedset-fields,.selectedset-fields .gantry-field{position:relative;}.selectedset-hidden-field{visibility:hidden;position:absolute;top:-2000px;}#g4-panel .navigation li a{color:#444;}#g4-panel .navigation li a:hover{color:#D54E21;}#g4-panel .navigation li.active a,#gantry-panel .navigation li.active a:hover{color:#1578B9;}.position,.slider{width:192px;height:9px;background:url(images/slider.png) 0 0 no-repeat;position:relative;margin-top:10px;}.position2,.slider2{width:192px;height:9px;background:url(images/slider.png) 0 -14px no-repeat;position:absolute;width:0px;}.position .knob,.slider .knob{width:24px;height:24px;top:-8px;left:-8px;background:url(images/slider.png) -195px 0 no-repeat;position:absolute;cursor:pointer;}.position-field .chain-toggle,.position-field .chain-showmax{margin-top:-3px;}#positions-tip{background:url(slider/images/slider-tip.png) no-repeat;font-size:12px;width:117px;height:50px;text-shadow:1px 1px #000;color:#fff;position:absolute;visibility:hidden;text-align:center;padding:0 4px;line-height:38px;letter-spacing:-1px;top:0;z-index:20;}.navigation{color:#666;}.navigation .title,.navigation .list{float:left;}.navigation .title{font-size:100%;}.navigation .list{margin:0;padding:0;list-style:none;}.navigation .list li{display:inline;}.navigation .list li a{display:block;padding:0 7px;text-decoration:none;color:#aaa;float:left;outline:none;}.navigation .list li.active a{font-weight:bold;text-decoration:underline;color:#333;}.mini-container{text-align:center;background:#fff;height:28px;padding:0;color:#555;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.mini-container div{height:28px;line-height:28px;}.mini-container .main{background:#666;text-shadow:1px 1px #1b80a0;color:#fff;}.mini-container{width:192px;}.mini-grid-1,.mini-grid-2,.mini-grid-3,.mini-grid-4,.mini-grid-5,.mini-grid-6,.mini-grid-7,.mini-grid-8,.mini-grid-9,.mini-grid-10,.mini-grid-11,.mini-grid-12,.mini-grid-13,.mini-grid-14,.mini-grid-15,.mini-grid-16{display:inline;float:left;position:relative;}.mini-container .mini-grid{border-left:1px solid #d0d0d0;padding-right:1px;}.mini-container .mini-grid:first-child{border-left:0;padding-left:1px;}.col9 .mini-container .mini-grid-1{width:19px;}.col9 .mini-container .mini-grid-2{width:40px;}.col9 .mini-container .mini-grid-3{width:61px;}.col9 .mini-container .mini-grid-4{width:82px;}.col9 .mini-container .mini-grid-5{width:103px;}.col9 .mini-container .mini-grid-6{width:124px;}.col9 .mini-container .mini-grid-7{width:145px;}.col9 .mini-container .mini-grid-8{width:166px;}.col9 .mini-container .mini-grid-9{width:190px;}.col12 .mini-container .mini-grid-1{width:15px;}.col12 .mini-container .mini-grid-2{width:30px;}.col12 .mini-container .mini-grid-3{width:46px;}.col12 .mini-container .mini-grid-4{width:62px;}.col12 .mini-container .mini-grid-5{width:78px;}.col12 .mini-container .mini-grid-6{width:94px;}.col12 .mini-container .mini-grid-7{width:110px;}.col12 .mini-container .mini-grid-8{width:126px;}.col12 .mini-container .mini-grid-9{width:142px;}.col12 .mini-container .mini-grid-10{width:158px;}.col12 .mini-container .mini-grid-11{width:174px;}.col12 .mini-container .mini-grid-12{width:190px;}.col16 .mini-container .mini-grid-1{width:10px;}.col16 .mini-container .mini-grid-2{width:22px;}.col16 .mini-container .mini-grid-3{width:34px;}.col16 .mini-container .mini-grid-4{width:46px;}.col16 .mini-container .mini-grid-5{width:58px;}.col16 .mini-container .mini-grid-6{width:70px;}.col16 .mini-container .mini-grid-7{width:82px;}.col16 .mini-container .mini-grid-8{width:94px;}.col16 .mini-container .mini-grid-9{width:106px;}.col16 .mini-container .mini-grid-10{width:118px;}.col16 .mini-container .mini-grid-11{width:130px;}.col16 .mini-container .mini-grid-12{width:142px;}.col16 .mini-container .mini-grid-13{width:154px;}.col16 .mini-container .mini-grid-14{width:166px;}.col16 .mini-container .mini-grid-15{width:178px;}.col16 .mini-container .mini-grid-16{width:190px;}.graphic-level{background:url(images/graphic-level.png) no-repeat;padding-top:15px;}.miniatures{float:left;}.current-positions{padding-left:210px;color:#999;}.gradient-preview{width:100%;height:100%;}.presets{position:relative;width:1000px;margin:0 auto;}.presets .scroller{margin-bottom:30px;}.presets .scroller .inner{overflow:hidden;width:100%;}.presets .presets-scrollbar{background:#dedede;-webkit-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;box-shadow:0 2px 3px rgba(0, 0, 0, 0.2) inset, 0 1px 0 0 #fff;position:absolute;width:100%;height:16px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.presets .presets-scrollbar .bar{position:absolute;top:-1px;left:-1px;height:16px;width:0;border:1px solid #bbb;-webkit-box-shadow:1px 1px 0 0 #fff inset;-moz-box-shadow:1px 1px 0 0 #fff inset;box-shadow:1px 1px 0 0 #fff inset;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fafafa url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALBAMAAAC5XnFsAAAAA3NCSVQICAjb4U/gAAAAElBMVEX////+/v7Ozs7Nzc3Ly8uMRgCgvID5AAAABnRSTlP//////wCzv6S/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABR0RVh0Q3JlYXRpb24gVGltZQA4LzMvMTLfrdy9AAAAKUlEQVQImWMIYAVBBigVbAqCDKFgwBAoCpUDMYByQapBqhhyYCrEFQQBMiQPAwBHVdkAAAAASUVORK5CYII=) 50% 2px no-repeat;}.presets .presets-scrollbar{position:absolute;left:0;bottom:-15px;}.presets .wrapper{font-size:0;margin:0 auto;}.presets .wrapper .block{font-size:12px;display:inline-block;cursor:pointer;position:relative;margin:20px 8px 10px;-webkit-box-shadow:0 1px 5px rgba(33,33,33,0.1);-moz-box-shadow:0 1px 5px rgba(33,33,33,0.1);box-shadow:0 1px 5px rgba(33,33,33,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #d9d9d9;padding:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAMAAAAZ4Z3/AAAAA3NCSVQICAjb4U/gAAAAilBMVEX////+/v79/f38/Pz7+/v39/f29vbz8/Py8vLw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fi4uLh4eHg4ODf39/b29vY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7Nzc3MzMzDw8O5ubmxsbGkpKSampqQkJCLi4uIiIiMRgBq/iXiAAAALnRSTlP///////////////////////////////////////////////////////////8Ago9zVQAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAUdEVYdENyZWF0aW9uIFRpbWUAOC80LzEyQnrkBAAAA5lJREFUaIHtmYt2mzAMhrvFpFcv7Vg2uqVd69YBjP3+rzdJtoEQyDBdgJ3Df1rAMogP3yTChZmlLqYGaNeCFaIFK0QLVogWrBA5rM93N0a8k4TxR+MfNrBuX79fjd8kR1ptn2/tEWE9PK+npKlp/bwhItzcvawmpqm0ernBHWCx2bQVar1jhrDut1OjHGi7MYT143JqkgNdPhrC2kwN0tDOzHI5/WII625qjhYBlvj7WU5SZ7jTsmFFZdHJS5lkfe/y1WK9BWDpuA2Lcx6r4uSlXPO+d3kbgFV4rESK0orbWEdRZCTHGmQ3kZREQkUmtDjdnB/CEnpvsZTOtY5qWFzzHIwJ1aRAo5XyJ6bU0fn5sOAuEWKliOT6jbCY0ibX3JgUjJFOTK5g1GZlkWPd+bAirRAL2wMaJLJWUkwkUAMjTWVgTRNWFc+MZfbQkdIOL3crGvJ4lGM3WUY4EtDL+7J4bixTaGAqcKUQmpVW47EKGHwGBj9nWBOVxWCsb2FYMWLB4Ic75ZW1xIK2gxoAV4Tli/AfOBP7ywJk2IP7amodYkG1xpHHsfNEWYT50HcmuuV0WPBhvOvpGbcLOo23qhikoOAzjoKDzzgKnonjaMEK0X+G5YKcluWK1KLOOqhwdc4PPwnBj+q7sBjnkB5xzgZhcVlhcRcth2C1BR97MrgXmMsxLEBggz8hMLHjVR0ZKbAwIRN6qArLu7M5Y92NDUVCxp1Y3c8gtcoLyFjIP4SWvChyXShVQFSBOsjzIBDDGXRSpKFSHXai8+ZyxsqNvYJB/CrUEdaJ4OOx4CGLvPIHvhOMiGSDfQo5BBrRkBUYxvkBVg5Kypyx7oauwH1+hGVMZ/DxWNZP6S93Nd7GgJsCNG14kjWwpMSE3ueMdTe4IXvc1VptC0RPLEwH/U0gec/SBpZ15nPGI6xaLlnTiXWrDxbD1koOnp23YvmcsYlVpGQfjJXQO0ITS2EyxSqsDMdaG5bPGeturAssD8eCqQTzromVwlKZmFonajS1zUSfM9bc0IZSxBCspqLmtSjGG0WGS1KbfM7YdNPwEIw1puaN1f/NZxwFv/mMow+9+ZxXM3zzuTeE9To1R0PuJ92f8/oB/AqTNsB6mNnnAvdLM9vN6uPKL/wAhQvEzaw+RdGQQqxPm6e5tNf6yX5QtMvp9WbAryr/Xqt4d22PqlX+8c19m12Z3+8THZaaYfBBLVghWrBCtGCFaKZYfwCcAfb/ENSCxAAAAABJRU5ErkJggg==) 50% 60% no-repeat;-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block.pulsing{outline:0;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:0 0 8px rgba(82,168,236,0.6);box-shadow:0 0 8px rgba(82,168,236,0.6);-webkit-transition:all 0.25s ease-in-out;-moz-transition:all 0.25s ease-in-out;-ms-transition:all 0.25s ease-in-out;-o-transition:all 0.25s ease-in-out;transition:all 0.25s ease-in-out;}.presets .wrapper .block div.presets-bg{width:180px;height:100px;-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.presets .wrapper .block span{display:block;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;border-top:1px solid #fff;border-bottom:1px solid #d9d9d9;background:#f5f5f5;color:#666;text-align:center;font-weight:bold;padding:4px;font-size:14px;line-height:14px;text-shadow:1px 1px 0 #fff;}.presets .wrapper .block .delete-preset{position:absolute;right:4px;top:4px;background:#ddd;border:1px solid #ccc;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding:1px 4px;cursor:pointer;}.presets .wrapper .block .delete-preset:hover{background:#e83f1f;border:1px solid #cb2417;}.presets .wrapper .block .delete-preset:hover span{color:#fff;text-shadow:1px 1px 0 #2373bd;}.presets .wrapper .block .delete-preset span{border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:transparent;}#gantry-layer{position:absolute;top:0;left:0;right:0;bottom:0;background:#000;z-index:900;}.presets-wrapper-table{display:table;width:100%;height:100%;position:absolute;left:0;top:0;right:0;bottom:0;}.presets-wrapper-table .presets-wrapper-row{display:table-row;}.presets-wrapper-table .presets-wrapper-row .presets-wrapper-cell{display:table-cell;vertical-align:middle;}#presets-namer{position:relative;margin:0 auto;background:#fff;padding:15px;width:80%;max-width:500px;z-index:1500;font-size:13px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}#presets-namer .preset-bottom{text-align:right;}#presets-namer .rok-button{display:inline-block;margin-left:5px;}#presets-namer h2,#presets-namer h3{margin-top:0;margin-bottom:5px;color:#D73D12;font-family:"Oxygen", Arial, sans-serif;}#presets-namer h3{color:#000;text-transform:uppercase;padding-bottom:5px;margin-bottom:10px;position:relative;}#presets-namer h3 span{text-transform:uppercase;color:#C13201;}#presets-namer p{margin:10px 0;}#presets-namer input,#presets-namer input:focus{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:4px;margin:0;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;-moz-box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1) inset, 0 1px 0 0 #fff;border:1px solid #cfcfcf;border-top-color:#c6c6c6;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100%;}#presets-namer input.example,#presets-namer input:focus.example{color:#999;font-style:italic;}#presets-namer button{font-size:90%;margin-right:10px;}#presets-namer label span{text-align:right;padding-right:10px;float:left;display:block;width:85px;color:#666;text-transform:uppercase;font-size:80%;line-height:25px;}#presets-namer .preset-namer{background:#e9e9e9;padding:15px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;margin-bottom:15px;border:1px solid #ccc;}.gantry-layer-wrapper .preset-namer div{margin:5px 10px;}.gantry-layer-close{color:#f64a4a;font-weight:bold;position:absolute;height:20px;width:20px;line-height:20px;top:2px;right:2px;}.roar-body{position:absolute;color:#fff;text-align:left;z-index:999;}.roar-body .roar{position:absolute;width:300px;cursor:pointer;}.roar-body .roar .roar-bg{position:absolute;z-index:1000;width:100%;height:100%;top:0;left:0;background-color:#000;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);-moz-box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);box-shadow:0 0 2px 0 #fff inset, 0 0 5px rgba(0, 0, 0, 0.5);}.roar-body .roar h3,.roar-body .roar p{position:relative;margin:0;color:#fff;visibility:visible;z-index:1001;font-size:13px;padding:5px 10px;}.roar-body .roar p{font-size:12px;padding-top:0;}
|
admin/widgets/gantry-widgets.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/**
|
2 |
-
* @version $Id: gantry-widgets.css
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -7,51 +7,61 @@
|
|
7 |
#screen-meta {z-index:5;}
|
8 |
#screen-meta-links {position: relative; z-index: 2;}
|
9 |
#screen-meta .screen-meta-toggle {background:#f4f4f4;}
|
10 |
-
input.override-checkbox {float:left;margin:
|
|
|
11 |
h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
|
12 |
|
13 |
-
#screen-meta
|
14 |
#screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap {margin:0 18px 0 10px;}
|
15 |
#screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap { -moz-border-radius-bottomleft: 0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}
|
16 |
#screen-meta-links #screen-options-link-wrap, #screen-meta-links #contextual-help-link-wrap {border:1px solid #ccc;border-top:0;}
|
17 |
|
18 |
-
#gantry-overrides {margin: 0
|
19 |
-
#gantry-overrides .overrides-inner {position: relative;height:44px;
|
|
|
20 |
#overrides-actions {float:left;margin:10px 0 0 8px;min-width:180px;position:relative;z-index:1000;}
|
21 |
-
#overrides-actions .add-edit-input {position: absolute;width:
|
22 |
-
#overrides-first {padding:3px
|
23 |
#overrides-first.slide-down {border-bottom: none;-webkit-border-bottom-right-radius: 0;-webkit-border-bottom-left-radius: 0;border-bottom-right-radius: 0;border-bottom-left-radius: 0;-moz-border-radius-bottomright: 0;-moz-border-radius-bottomleft:0;}
|
24 |
|
25 |
-
#overrides-actions a {color: #
|
26 |
-
#overrides-first a {
|
|
|
27 |
#overrides-actions a:hover {color:#000;text-decoration:underline;}
|
28 |
#overrides-first a:hover {text-decoration:none;}
|
29 |
-
#overrides-toggle {
|
|
|
30 |
#overrides-toggle.hidden {display:none;}
|
31 |
-
#overrides-inside {background-color:#FFFFFF;border-color:#
|
32 |
|
33 |
-
#overrides-toolbar {float:left;margin:10px 0 0 10px;position:relative;}
|
34 |
-
#overrides-toolbar .
|
35 |
-
#overrides-toolbar .overrides-button {
|
|
|
|
|
36 |
#overrides-toolbar .overrides-button span {display:none;}
|
37 |
-
#overrides-toolbar .button-del {background-position:-29px 0;width:28px;}
|
38 |
-
#overrides-toolbar .button-edit {background-position:-57px 0;}
|
39 |
-
#overrides-toolbar .button-add:hover {background-position: 0 -24px;}
|
40 |
-
#overrides-toolbar .button-del:hover {background-position: -29px -24px;}
|
41 |
-
#overrides-toolbar .button-edit:hover {background-position: -57px -24px;}
|
42 |
|
43 |
-
#overrides-
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
.gantry-notice {position:relative;}
|
46 |
.gantry-notice .close {position: absolute;right: 9px;top:10px;width: 10px;height:11px;display:block;background:url(images/delete.png) no-repeat;cursor:pointer;}
|
47 |
.gantry-notice .close span {display:none;}
|
48 |
|
49 |
-
.text-button {display: inline-block;height: 24px;
|
50 |
-
.text-button
|
|
|
|
|
51 |
.text-button:hover span {color:#000;background-position: 100% -24px;}
|
52 |
|
53 |
-
.text-button.button-widget {
|
54 |
-
.text-button.button-
|
|
|
55 |
|
56 |
.widget fieldset.panelform .field-wrapper {margin-bottom: 10px;}
|
57 |
|
@@ -60,4 +70,43 @@ h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
|
|
60 |
|
61 |
/* WordPress */
|
62 |
|
63 |
-
#adminmenu li .wp-submenu, .folded #adminmenu .wp-has-current-submenu .wp-submenu {z-index: 1001;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/**
|
2 |
+
* @version $Id: gantry-widgets.css 60299 2013-12-11 10:21:10Z jakub $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
7 |
#screen-meta {z-index:5;}
|
8 |
#screen-meta-links {position: relative; z-index: 2;}
|
9 |
#screen-meta .screen-meta-toggle {background:#f4f4f4;}
|
10 |
+
input.override-checkbox {float:left;margin:16px -2px 0 8px;}
|
11 |
+
#wp_inactive_widgets input#override-wp_inactive_widgets {margin:11px 5px 0 0;}
|
12 |
h3 input.override-checkbox {float:none;margin:-4px 4px 0 -3px;}
|
13 |
|
14 |
+
#screen-meta-links {margin:0 30px 0;}
|
15 |
#screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap {margin:0 18px 0 10px;}
|
16 |
#screen-meta #screen-options-wrap, #screen-meta #contextual-help-wrap { -moz-border-radius-bottomleft: 0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;}
|
17 |
#screen-meta-links #screen-options-link-wrap, #screen-meta-links #contextual-help-link-wrap {border:1px solid #ccc;border-top:0;}
|
18 |
|
19 |
+
#gantry-overrides {margin: 0 20px 0 0;border: 1px solid #E1E1E1; border-top:0;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}
|
20 |
+
#gantry-overrides .overrides-inner {position: relative;height:44px;background: #FAFAFA;}
|
21 |
+
#gantry-overrides .overrides-inner a {transition: none;}
|
22 |
#overrides-actions {float:left;margin:10px 0 0 8px;min-width:180px;position:relative;z-index:1000;}
|
23 |
+
#overrides-actions .add-edit-input {position: absolute;width:90%;height:20px;top:2px;z-index: 2;}
|
24 |
+
#overrides-first {padding:3px 32px 1px 7px;line-height:15px;border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
|
25 |
#overrides-first.slide-down {border-bottom: none;-webkit-border-bottom-right-radius: 0;-webkit-border-bottom-left-radius: 0;border-bottom-right-radius: 0;border-bottom-left-radius: 0;-moz-border-radius-bottomright: 0;-moz-border-radius-bottomleft:0;}
|
26 |
|
27 |
+
#overrides-actions a {color: #444444;display:block;font-size:12px;text-decoration:none;padding:3px 5px 3px 10px}
|
28 |
+
#overrides-first a {padding: 0;}
|
29 |
+
.gantry-mp6 #overrides-first a:before {content: "\f111";font: normal 20px/1 'dashicons';speak: none;display: inline-block;padding: 0 5px 0 0;bottom: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
30 |
#overrides-actions a:hover {color:#000;text-decoration:underline;}
|
31 |
#overrides-first a:hover {text-decoration:none;}
|
32 |
+
#overrides-toggle {height: 24px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer; border-left: 1px solid #CCC;}
|
33 |
+
.gantry-mp6 #overrides-toggle:before {content: "\f140";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 1px;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
34 |
#overrides-toggle.hidden {display:none;}
|
35 |
+
#overrides-inside {background-color:#FFFFFF;border-color:#CCC;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}
|
36 |
|
37 |
+
#overrides-toolbar {float:left;margin:10px 0 0 10px;position:relative; border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
|
38 |
+
.gantry-mp6 #overrides-toolbar a, .gantry-mp6 #overrides-toolbar .overrides-button.button-edit {color: #444;text-decoration: none !important;}
|
39 |
+
.gantry-mp6 #overrides-toolbar a:hover, .gantry-mp6 #overrides-toolbar .overrides-button.button-edit:hover {color: #000;}
|
40 |
+
#overrides-toolbar .ajax-loading {float:left;border-left:1px solid #CCC;padding:4px 6px;}
|
41 |
+
#overrides-toolbar .overrides-button {float: left;width:29px; height:24px;cursor:pointer;}
|
42 |
#overrides-toolbar .overrides-button span {display:none;}
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
+
.gantry-mp6 #overrides-toolbar .overrides-button.button-add:before {content: "\f132";font: normal 18px/1 'dashicons';speak: none;display: inline-block;top: 3px;left: 5px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
45 |
+
.gantry-mp6 #overrides-toolbar .overrides-button.button-del {border-left: 1px solid #CCC;}
|
46 |
+
.gantry-mp6 #overrides-toolbar .overrides-button.button-del:before {content: "\f158";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 2px;left: 4px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
47 |
+
.gantry-mp6 #overrides-toolbar .overrides-button.button-edit {border-left: 1px solid #CCC;}
|
48 |
+
.gantry-mp6 #overrides-toolbar .overrides-button.button-edit:before {content: "\f327";font: normal 16px/1 'dashicons';speak: none;display: inline-block;top: 2px;left: 6px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
49 |
+
|
50 |
+
#overrides-switch {float:left;margin:10px 0 0 10px;position:relative;border: 1px solid #CCC;box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);}
|
51 |
|
52 |
.gantry-notice {position:relative;}
|
53 |
.gantry-notice .close {position: absolute;right: 9px;top:10px;width: 10px;height:11px;display:block;background:url(images/delete.png) no-repeat;cursor:pointer;}
|
54 |
.gantry-notice .close span {display:none;}
|
55 |
|
56 |
+
.text-button {display: inline-block;height: 24px;text-decoration:none;color: #444444;}
|
57 |
+
.gantry-mp6 .text-button:hover {color: #000;}
|
58 |
+
#overrides-toggle.hidden {display:none;}
|
59 |
+
.text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block; padding:0 10px 0 5px;line-height:24px;height:24px;}
|
60 |
.text-button:hover span {color:#000;background-position: 100% -24px;}
|
61 |
|
62 |
+
.gantry-mp6 #overrides-toolbar .text-button.button-add, .gantry-mp6 #overrides-switch .text-button.button-widget {padding-left: 1px;}
|
63 |
+
.gantry-mp6 #overrides-toolbar .text-button.button-add:before {content: "\f132";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 1px;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
64 |
+
.gantry-mp6 #overrides-switch .text-button.button-widget:before {content: "\f113";font: normal 20px/1 'dashicons';speak: none;display: inline-block;top: 0;left: 2px;position: relative;vertical-align: middle;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-decoration: none !important;}
|
65 |
|
66 |
.widget fieldset.panelform .field-wrapper {margin-bottom: 10px;}
|
67 |
|
70 |
|
71 |
/* WordPress */
|
72 |
|
73 |
+
#adminmenu li .wp-submenu, .folded #adminmenu .wp-has-current-submenu .wp-submenu {z-index: 1001;}
|
74 |
+
|
75 |
+
/** WordPress < 3.8 Compatibility **/
|
76 |
+
|
77 |
+
.gantry-pre-mp6 input.override-checkbox {margin:10px -5px 0 8px;}
|
78 |
+
|
79 |
+
.gantry-pre-mp6 #screen-meta #screen-meta-links {margin:0 18px 0;}
|
80 |
+
|
81 |
+
.gantry-pre-mp6 #gantry-overrides {margin: 0 18px 0 10px;border: 1px solid #D7D7D7;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;border-top:0;}
|
82 |
+
.gantry-pre-mp6 #gantry-overrides .overrides-inner {position: relative;height:44px;border-bottom: 1px solid #eee;-moz-border-radius-bottomleft: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-radius-bottomright: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;background: #e4e4e4;background:-moz-linear-gradient(center top,#e3e3e3 0%,#d0d0d0 80%,#c3c3c3 95%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0, #e3e3e3),color-stop(0.8, #d0d0d0),color-stop(0.95, #c3c3c3));border-bottom:0;}
|
83 |
+
|
84 |
+
.gantry-pre-mp6 #overrides-actions .add-edit-input {width:85%; height:18px; z-index: 0;}
|
85 |
+
|
86 |
+
.gantry-pre-mp6 #overrides-first {padding:3px 30px 4px 12px;line-height:15px;border: 1px solid #c0c0c0;-moz-border-radius: 12px;-webkit-border-radius: 12px;border-radius:12px;background: -moz-linear-gradient(bottom, #e7e7e7, #fff);background: -webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff));}
|
87 |
+
.gantry-pre-mp6 #overrides-actions a {color: #464646;display:block;font-size:11px;padding:3px 5px 3px 10px}
|
88 |
+
.gantry-pre-mp6 #overrides-first a {background: url(images/overrides-default.png) 0 50% no-repeat;padding: 0 0 0 18px;}
|
89 |
+
|
90 |
+
.gantry-pre-mp6 #overrides-inside {background-color:#FFFFFF;border-color:#C0C0C0;margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;box-shadow: none;}
|
91 |
+
|
92 |
+
.gantry-pre-mp6 #overrides-toggle {background:url(images/overrides-arrow.gif) 0 -4px no-repeat;height: 22px;position:absolute;right:0px;top:1px; width:28px;cursor:pointer; border-left: none;}
|
93 |
+
|
94 |
+
.gantry-pre-mp6 #overrides-toolbar {border: none;}
|
95 |
+
.gantry-pre-mp6 #overrides-toolbar .ajax-loading {border-left:none;margin:4px;padding:0;}
|
96 |
+
|
97 |
+
.gantry-pre-mp6 #overrides-toolbar .overrides-button {float: left;width:29px; height:24px;background:url(images/overrides-toolbar.png);cursor:pointer;}
|
98 |
+
.gantry-pre-mp6 #overrides-toolbar .overrides-button span {display:none;}
|
99 |
+
.gantry-pre-mp6 #overrides-toolbar .button-del {background-position:-29px 0;width:28px;}
|
100 |
+
.gantry-pre-mp6 #overrides-toolbar .button-edit {background-position:-57px 0;}
|
101 |
+
.gantry-pre-mp6 #overrides-toolbar .button-add:hover {background-position: 0 -24px;}
|
102 |
+
.gantry-pre-mp6 #overrides-toolbar .button-del:hover {background-position: -29px -24px;}
|
103 |
+
.gantry-pre-mp6 #overrides-toolbar .button-edit:hover {background-position: -57px -24px;}
|
104 |
+
|
105 |
+
.gantry-pre-mp6 .text-button {display: inline-block;height: 24px;background: url(images/overrides-buttons-l.png) 0 0 no-repeat;text-decoration:none;}
|
106 |
+
.gantry-pre-mp6 .text-button span {font-size:11px;font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;color:#333;display: inline-block;background: url(images/overrides-buttons-r.png) 100% 0 no-repeat;margin-left: 20px;padding:0 10px 0 5px;line-height:24px;height:24px;}
|
107 |
+
.gantry-pre-mp6 .text-button:hover span {color:#000;background-position: 100% -24px;}
|
108 |
+
|
109 |
+
.gantry-pre-mp6 .text-button.button-widget { background-position: 0 -48px;}
|
110 |
+
.gantry-pre-mp6 .text-button.button-widget:hover { background-position: 0 -72px;}
|
111 |
+
|
112 |
+
.gantry-pre-mp6 #overrides-switch {border:none;}
|
admin/widgets/gantry-widgets.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/**
|
2 |
-
* @version $Id: gantry-widgets.js
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -193,7 +193,7 @@ var GantryWidgets = {
|
|
193 |
else topbar = $(topbar);
|
194 |
|
195 |
topbar.click(function(){
|
196 |
-
var c = $(this).siblings('.widgets-sortables'), p = $(this).parent();
|
197 |
if ( !p.hasClass('closed') ) {
|
198 |
c.sortable('disable');
|
199 |
p.addClass('closed');
|
1 |
/**
|
2 |
+
* @version $Id: gantry-widgets.js 60296 2013-12-10 22:31:32Z jakub $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
193 |
else topbar = $(topbar);
|
194 |
|
195 |
topbar.click(function(){
|
196 |
+
var c = $(this).siblings('.widgets-sortables'), p = $(this).parent('.widgets-holder-wrap') || $(this).parent();
|
197 |
if ( !p.hasClass('closed') ) {
|
198 |
c.sortable('disable');
|
199 |
p.addClass('closed');
|
admin/widgets/gantry.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
#gantry-panel .gantry-field > label/**
|
2 |
-
* @version $Id: gantry.css
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -304,7 +304,7 @@ body #overrides-first a {background: url(images/overrides-default.png) 0 50% no-
|
|
304 |
.selectbox {float: left;}
|
305 |
.selectbox ul {margin:0;padding:0;list-style:none;}
|
306 |
.selectbox-top .selected {background: url(selectbox/images/select-left.png) top left no-repeat;height:23px;padding:0 10px;white-space:nowrap;}
|
307 |
-
.selectbox-top .arrow {background: url(selectbox/images/select-right.png) center left no-repeat;height:23px;width:24px;right:-24px;top:0;position:absolute;}
|
308 |
.selectbox-dropdown {background: url(selectbox/images/dropdown-left.png) top left no-repeat;position:absolute;margin-top: 0px;visibility:hidden;z-index:200;}
|
309 |
.selectbox-dropdown-bottom {background: url(selectbox/images/dropdown-left.png) bottom left no-repeat;height: 5px;position:relative;}
|
310 |
.selectbox-dropdown-bottomright {background: url(selectbox/images/dropdown-right.png) bottom left no-repeat;height: 5px;position:absolute;right:0;bottom:0;z-index:2;width:5px;}
|
@@ -318,10 +318,10 @@ body #overrides-first a {background: url(images/overrides-default.png) 0 50% no-
|
|
318 |
.selectbox-dropdown ul li.google span {background: url(images/google_favicon.png) 4px center no-repeat;}
|
319 |
|
320 |
.selectbox-wrapper.disabled .selectbox-top .selected {background-position: top left;}
|
321 |
-
.selectbox-wrapper.disabled .selectbox-top .arrow {background-position: top left;}
|
322 |
|
323 |
.selectbox-wrapper.pushed .selectbox-top .selected {background-position: bottom left;color:#d06712;}
|
324 |
-
.selectbox-wrapper.pushed .selectbox-top .arrow {background-position: bottom left;}
|
325 |
|
326 |
/* InputText */
|
327 |
body .text-short, body .text-medium, body .text-regular, body .text-long,body .text-color, body .text-textarea {-moz-box-sizing: inherit; -webkit-box-sizing: inherit; -ms-box-sizing: inherit; box-sizing: inherit; -moz-border-radius: 0; -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: none;}
|
1 |
#gantry-panel .gantry-field > label/**
|
2 |
+
* @version $Id: gantry.css 60288 2013-12-10 13:10:52Z jakub $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
304 |
.selectbox {float: left;}
|
305 |
.selectbox ul {margin:0;padding:0;list-style:none;}
|
306 |
.selectbox-top .selected {background: url(selectbox/images/select-left.png) top left no-repeat;height:23px;padding:0 10px;white-space:nowrap;}
|
307 |
+
.selectbox-top .rt-arrow {background: url(selectbox/images/select-right.png) center left no-repeat;height:23px;width:24px;right:-24px;top:0;position:absolute;}
|
308 |
.selectbox-dropdown {background: url(selectbox/images/dropdown-left.png) top left no-repeat;position:absolute;margin-top: 0px;visibility:hidden;z-index:200;}
|
309 |
.selectbox-dropdown-bottom {background: url(selectbox/images/dropdown-left.png) bottom left no-repeat;height: 5px;position:relative;}
|
310 |
.selectbox-dropdown-bottomright {background: url(selectbox/images/dropdown-right.png) bottom left no-repeat;height: 5px;position:absolute;right:0;bottom:0;z-index:2;width:5px;}
|
318 |
.selectbox-dropdown ul li.google span {background: url(images/google_favicon.png) 4px center no-repeat;}
|
319 |
|
320 |
.selectbox-wrapper.disabled .selectbox-top .selected {background-position: top left;}
|
321 |
+
.selectbox-wrapper.disabled .selectbox-top .rt-arrow {background-position: top left;}
|
322 |
|
323 |
.selectbox-wrapper.pushed .selectbox-top .selected {background-position: bottom left;color:#d06712;}
|
324 |
+
.selectbox-wrapper.pushed .selectbox-top .rt-arrow {background-position: bottom left;}
|
325 |
|
326 |
/* InputText */
|
327 |
body .text-short, body .text-medium, body .text-regular, body .text-long,body .text-color, body .text-textarea {-moz-box-sizing: inherit; -webkit-box-sizing: inherit; -ms-box-sizing: inherit; box-sizing: inherit; -moz-border-radius: 0; -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; border: none;}
|
admin/widgets/images/divider-bar-old.png
ADDED
Binary file
|
admin/widgets/images/divider-bar.png
CHANGED
Binary file
|
admin/widgets/selectbox/js/selectbox.js
CHANGED
@@ -56,7 +56,7 @@ var SelectBox = new Class({
|
|
56 |
selected: element.getElement('.selectbox-top .selected span'),
|
57 |
top: element.getElement('.selectbox-top'),
|
58 |
dropdown: element.getElement('.selectbox-dropdown'),
|
59 |
-
arrow: element.getElement('.arrow'),
|
60 |
ul: element.getElement('ul'),
|
61 |
list: element.getElements('li'),
|
62 |
real: element.getParent().getElement('select'),
|
56 |
selected: element.getElement('.selectbox-top .selected span'),
|
57 |
top: element.getElement('.selectbox-top'),
|
58 |
dropdown: element.getElement('.selectbox-dropdown'),
|
59 |
+
arrow: element.getElement('.rt-arrow'),
|
60 |
ul: element.getElement('ul'),
|
61 |
list: element.getElements('li'),
|
62 |
real: element.getParent().getElement('select'),
|
admin_functions.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: admin_functions.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -94,6 +94,24 @@ function gantryLang()
|
|
94 |
// ";
|
95 |
}
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
function gantry_admin_menu()
|
98 |
{
|
99 |
/** @global $gantry Gantry */
|
@@ -613,6 +631,13 @@ function gantry_widgets_admin_add_page_title_filter()
|
|
613 |
function gantry_widgets_admin_insert_override_header()
|
614 |
{
|
615 |
global $current_screen, $gantry, $ajaxurl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
616 |
if ($current_screen->id == 'widgets') {
|
617 |
$isDefault = !(isset($_GET['override_id']));
|
618 |
$override_id = 0;
|
@@ -661,7 +686,7 @@ function gantry_widgets_admin_insert_override_header()
|
|
661 |
$buffer .= " <a class=\"overrides-button button-del\"
|
662 |
href=\"" . admin_url('admin-post.php?action=gantry_theme_delete_override&from=widgets&override_id=' . $override_id) . "\"><span>Delete</span></a>\n
|
663 |
<div class=\"overrides-button button-edit\"></div>\n
|
664 |
-
<img width=\"16\" height=\"16\" src=\"images
|
665 |
}
|
666 |
$buffer .= " </div>\n";
|
667 |
$buffer .= " <div id=\"overrides-switch\">\n";
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: admin_functions.php 60294 2013-12-10 19:52:14Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
94 |
// ";
|
95 |
}
|
96 |
|
97 |
+
function gantry_add_old_ui_class( $classes ) {
|
98 |
+
if ( version_compare( $GLOBALS['wp_version'], '3.8-alpha', '<' ) ) {
|
99 |
+
$classes = explode( " ", $classes );
|
100 |
+
if ( ! in_array( 'gantry-pre-mp6', $classes ) ) {
|
101 |
+
$classes[] = 'gantry-pre-mp6';
|
102 |
+
}
|
103 |
+
$classes = implode( " ", $classes );
|
104 |
+
} else {
|
105 |
+
$classes = explode( " ", $classes );
|
106 |
+
if ( ! in_array( 'gantry-mp6', $classes ) ) {
|
107 |
+
$classes[] = 'gantry-mp6';
|
108 |
+
}
|
109 |
+
$classes = implode( " ", $classes );
|
110 |
+
}
|
111 |
+
|
112 |
+
return $classes;
|
113 |
+
}
|
114 |
+
|
115 |
function gantry_admin_menu()
|
116 |
{
|
117 |
/** @global $gantry Gantry */
|
631 |
function gantry_widgets_admin_insert_override_header()
|
632 |
{
|
633 |
global $current_screen, $gantry, $ajaxurl;
|
634 |
+
|
635 |
+
if ( version_compare( $GLOBALS['wp_version'], '3.8-alpha', '<' ) ) {
|
636 |
+
$spinner = 'wpspin_light.gif';
|
637 |
+
} else {
|
638 |
+
$spinner = 'spinner.gif';
|
639 |
+
}
|
640 |
+
|
641 |
if ($current_screen->id == 'widgets') {
|
642 |
$isDefault = !(isset($_GET['override_id']));
|
643 |
$override_id = 0;
|
686 |
$buffer .= " <a class=\"overrides-button button-del\"
|
687 |
href=\"" . admin_url('admin-post.php?action=gantry_theme_delete_override&from=widgets&override_id=' . $override_id) . "\"><span>Delete</span></a>\n
|
688 |
<div class=\"overrides-button button-edit\"></div>\n
|
689 |
+
<img width=\"16\" height=\"16\" src=\"images/$spinner\" style=\"display: none;\" class=\"ajax-loading\">\n";
|
690 |
}
|
691 |
$buffer .= " </div>\n";
|
692 |
$buffer .= " <div id=\"overrides-switch\">\n";
|
assets/jui/fonts/font-awesome4/FontAwesome.otf
ADDED
Binary file
|
assets/jui/fonts/font-awesome4/fontawesome-webfont.eot
ADDED
Binary file
|
assets/jui/fonts/font-awesome4/fontawesome-webfont.svg
ADDED
@@ -0,0 +1,414 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata></metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
7 |
+
<font-face units-per-em="1792" ascent="1536" descent="-256" />
|
8 |
+
<missing-glyph horiz-adv-x="448" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="448" />
|
10 |
+
<glyph unicode="	" horiz-adv-x="448" />
|
11 |
+
<glyph unicode=" " horiz-adv-x="448" />
|
12 |
+
<glyph unicode="¨" horiz-adv-x="1792" />
|
13 |
+
<glyph unicode="©" horiz-adv-x="1792" />
|
14 |
+
<glyph unicode="®" horiz-adv-x="1792" />
|
15 |
+
<glyph unicode="´" horiz-adv-x="1792" />
|
16 |
+
<glyph unicode="Æ" horiz-adv-x="1792" />
|
17 |
+
<glyph unicode=" " horiz-adv-x="768" />
|
18 |
+
<glyph unicode=" " />
|
19 |
+
<glyph unicode=" " horiz-adv-x="768" />
|
20 |
+
<glyph unicode=" " />
|
21 |
+
<glyph unicode=" " horiz-adv-x="512" />
|
22 |
+
<glyph unicode=" " horiz-adv-x="384" />
|
23 |
+
<glyph unicode=" " horiz-adv-x="256" />
|
24 |
+
<glyph unicode=" " horiz-adv-x="256" />
|
25 |
+
<glyph unicode=" " horiz-adv-x="192" />
|
26 |
+
<glyph unicode=" " horiz-adv-x="307" />
|
27 |
+
<glyph unicode=" " horiz-adv-x="85" />
|
28 |
+
<glyph unicode=" " horiz-adv-x="307" />
|
29 |
+
<glyph unicode=" " horiz-adv-x="384" />
|
30 |
+
<glyph unicode="™" horiz-adv-x="1792" />
|
31 |
+
<glyph unicode="∞" horiz-adv-x="1792" />
|
32 |
+
<glyph unicode="≠" horiz-adv-x="1792" />
|
33 |
+
<glyph unicode="" horiz-adv-x="500" d="M0 0z" />
|
34 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
|
35 |
+
<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
|
36 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
37 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
|
38 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
|
39 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
|
40 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
|
41 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
|
42 |
+
<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
43 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
44 |
+
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
|
45 |
+
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
|
46 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
|
47 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
|
48 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
49 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
|
50 |
+
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
|
51 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
|
52 |
+
<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
|
53 |
+
<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
|
54 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
|
55 |
+
<glyph unicode="" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " />
|
56 |
+
<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
57 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
|
58 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
|
59 |
+
<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
60 |
+
<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
61 |
+
<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
|
62 |
+
<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
63 |
+
<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
|
64 |
+
<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
|
65 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
|
66 |
+
<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
|
67 |
+
<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
|
68 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
|
69 |
+
<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
|
70 |
+
<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
|
71 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
|
72 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
|
73 |
+
<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
|
74 |
+
<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
|
75 |
+
<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
|
76 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
|
77 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
78 |
+
<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
|
79 |
+
<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
80 |
+
<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" />
|
81 |
+
<glyph unicode="" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" />
|
82 |
+
<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" />
|
83 |
+
<glyph unicode="" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" />
|
84 |
+
<glyph unicode="" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" />
|
85 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
86 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
|
87 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
88 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
89 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
|
90 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
91 |
+
<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
92 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
|
93 |
+
<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
94 |
+
<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
|
95 |
+
<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
|
96 |
+
<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
97 |
+
<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
|
98 |
+
<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
|
99 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
|
100 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
|
101 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
102 |
+
<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
|
103 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
|
104 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
|
105 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
|
106 |
+
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
|
107 |
+
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
108 |
+
<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
109 |
+
<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
110 |
+
<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
|
111 |
+
<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
|
112 |
+
<glyph unicode="" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" />
|
113 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" />
|
114 |
+
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
115 |
+
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
|
116 |
+
<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
117 |
+
<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
118 |
+
<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
119 |
+
<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
120 |
+
<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
|
121 |
+
<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
122 |
+
<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
123 |
+
<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
|
124 |
+
<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
|
125 |
+
<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
|
126 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
|
127 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
|
128 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
|
129 |
+
<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
|
130 |
+
<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
|
131 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
|
132 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
|
133 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
|
134 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
|
135 |
+
<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
|
136 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
|
137 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
|
138 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
|
139 |
+
<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
|
140 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
|
141 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
|
142 |
+
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
143 |
+
<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
144 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
|
145 |
+
<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
|
146 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" />
|
147 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
|
148 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
|
149 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
150 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
151 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
|
152 |
+
<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
|
153 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
154 |
+
<glyph unicode="" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
155 |
+
<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
156 |
+
<glyph unicode="" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
|
157 |
+
<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
|
158 |
+
<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
|
159 |
+
<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
|
160 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
|
161 |
+
<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
|
162 |
+
<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
|
163 |
+
<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
|
164 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
|
165 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
|
166 |
+
<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
167 |
+
<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
|
168 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
|
169 |
+
<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
|
170 |
+
<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
|
171 |
+
<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
172 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
|
173 |
+
<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
|
174 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
|
175 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
|
176 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
177 |
+
<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
178 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
|
179 |
+
<glyph unicode="" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" />
|
180 |
+
<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
181 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
|
182 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
|
183 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
|
184 |
+
<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
|
185 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
|
186 |
+
<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
|
187 |
+
<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
|
188 |
+
<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
|
189 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
|
190 |
+
<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
|
191 |
+
<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
|
192 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
193 |
+
<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
194 |
+
<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
195 |
+
<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
196 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
|
197 |
+
<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
|
198 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
199 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
|
200 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
|
201 |
+
<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
|
202 |
+
<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
|
203 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
|
204 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
|
205 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
|
206 |
+
<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
|
207 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
|
208 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
|
209 |
+
<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
|
210 |
+
<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
211 |
+
<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
212 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
213 |
+
<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
214 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
|
215 |
+
<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
|
216 |
+
<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
|
217 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
|
218 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
|
219 |
+
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
220 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
|
221 |
+
<glyph unicode="" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
|
222 |
+
<glyph unicode="" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" />
|
223 |
+
<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
|
224 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
225 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
226 |
+
<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
|
227 |
+
<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
|
228 |
+
<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
|
229 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
230 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
231 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
232 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
|
233 |
+
<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
|
234 |
+
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
|
235 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
|
236 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
237 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
|
238 |
+
<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
|
239 |
+
<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
|
240 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
|
241 |
+
<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
|
242 |
+
<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
|
243 |
+
<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
|
244 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
245 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
246 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
247 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
|
248 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
|
249 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
|
250 |
+
<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" />
|
251 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
|
252 |
+
<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
|
253 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" />
|
254 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
|
255 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
|
256 |
+
<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
257 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
|
258 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
|
259 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
|
260 |
+
<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
261 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
262 |
+
<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
|
263 |
+
<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
264 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
265 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
266 |
+
<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
267 |
+
<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
268 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
269 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
270 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
271 |
+
<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
|
272 |
+
<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
|
273 |
+
<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
274 |
+
<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
|
275 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
|
276 |
+
<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
|
277 |
+
<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
|
278 |
+
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
279 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
|
280 |
+
<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
|
281 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
282 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
|
283 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
284 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
285 |
+
<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
286 |
+
<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
287 |
+
<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
288 |
+
<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
|
289 |
+
<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
|
290 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
291 |
+
<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
292 |
+
<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
|
293 |
+
<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
|
294 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
|
295 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
|
296 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
|
297 |
+
<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
|
298 |
+
<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
|
299 |
+
<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
|
300 |
+
<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
|
301 |
+
<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
|
302 |
+
<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
|
303 |
+
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
|
304 |
+
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
|
305 |
+
<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
|
306 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
|
307 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
|
308 |
+
<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
|
309 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
310 |
+
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
311 |
+
<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
|
312 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
|
313 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
|
314 |
+
<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
315 |
+
<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
316 |
+
<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
317 |
+
<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
318 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
|
319 |
+
<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
|
320 |
+
<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
|
321 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
|
322 |
+
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
323 |
+
<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
324 |
+
<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
325 |
+
<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
326 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
|
327 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
|
328 |
+
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
329 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
330 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
|
331 |
+
<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
|
332 |
+
<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
333 |
+
<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
334 |
+
<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
335 |
+
<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
336 |
+
<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
337 |
+
<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
338 |
+
<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
339 |
+
<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
340 |
+
<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
|
341 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
|
342 |
+
<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
|
343 |
+
<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
|
344 |
+
<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
|
345 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
|
346 |
+
<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
|
347 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
|
348 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
|
349 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" />
|
350 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
|
351 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
|
352 |
+
<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
|
353 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
|
354 |
+
<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
|
355 |
+
<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
|
356 |
+
<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
|
357 |
+
<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
|
358 |
+
<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
359 |
+
<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
|
360 |
+
<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
|
361 |
+
<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
362 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
|
363 |
+
<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
|
364 |
+
<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
|
365 |
+
<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
|
366 |
+
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
|
367 |
+
<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
368 |
+
<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
|
369 |
+
<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
370 |
+
<glyph unicode="" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " />
|
371 |
+
<glyph unicode="" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
372 |
+
<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
|
373 |
+
<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
|
374 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
|
375 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
|
376 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
|
377 |
+
<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
|
378 |
+
<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
|
379 |
+
<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
|
380 |
+
<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
381 |
+
<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
|
382 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" />
|
383 |
+
<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
384 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
385 |
+
<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
386 |
+
<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
387 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
|
388 |
+
<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
|
389 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
|
390 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
|
391 |
+
<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
|
392 |
+
<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
|
393 |
+
<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
|
394 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
|
395 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
|
396 |
+
<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
397 |
+
<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
398 |
+
<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
399 |
+
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
400 |
+
<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
|
401 |
+
<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
402 |
+
<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
403 |
+
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
404 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
405 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
406 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
407 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
408 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
409 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
410 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
411 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
412 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
413 |
+
</font>
|
414 |
+
</defs></svg>
|
assets/jui/fonts/font-awesome4/fontawesome-webfont.ttf
ADDED
Binary file
|
assets/jui/fonts/font-awesome4/fontawesome-webfont.woff
ADDED
Binary file
|
assets/jui/less/font-awesome.less
CHANGED
@@ -325,5 +325,46 @@ ul.icons {
|
|
325 |
.icon-sitemap:before { content: "\f0e8"; }
|
326 |
.icon-umbrella:before { content: "\f0e9"; }
|
327 |
.icon-paste:before { content: "\f0ea"; }
|
|
|
|
|
|
|
|
|
328 |
|
329 |
-
.icon-user-md:before { content: "\
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
.icon-sitemap:before { content: "\f0e8"; }
|
326 |
.icon-umbrella:before { content: "\f0e9"; }
|
327 |
.icon-paste:before { content: "\f0ea"; }
|
328 |
+
.icon-lightbulb:before { content: "\f0eb"; }
|
329 |
+
.icon-exchange:before { content: "\f0ec"; }
|
330 |
+
.icon-cloud-download:before { content: "\f0ed"; }
|
331 |
+
.icon-cloud-upload:before { content: "\f0ee"; }
|
332 |
|
333 |
+
.icon-user-md:before { content: "\f0f0"; }
|
334 |
+
.icon-stethoscope:before { content: "\f0f1"; }
|
335 |
+
.icon-suitcase:before { content: "\f0f2"; }
|
336 |
+
.icon-bell-alt:before { content: "\f0f3"; }
|
337 |
+
.icon-coffee:before { content: "\f0f4"; }
|
338 |
+
.icon-food:before { content: "\f0f5"; }
|
339 |
+
.icon-file-alt:before { content: "\f0f6"; }
|
340 |
+
.icon-building:before { content: "\f0f7"; }
|
341 |
+
.icon-hospital:before { content: "\f0f8"; }
|
342 |
+
.icon-ambulance:before { content: "\f0f9"; }
|
343 |
+
.icon-medkit:before { content: "\f0fa"; }
|
344 |
+
.icon-fighter-jet:before { content: "\f0fb"; }
|
345 |
+
.icon-beer:before { content: "\f0fc"; }
|
346 |
+
.icon-h-sign:before { content: "\f0fd"; }
|
347 |
+
.icon-plus-sign-alt:before { content: "\f0fe"; }
|
348 |
+
|
349 |
+
.icon-double-angle-left:before { content: "\f100"; }
|
350 |
+
.icon-double-angle-right:before { content: "\f101"; }
|
351 |
+
.icon-double-angle-up:before { content: "\f102"; }
|
352 |
+
.icon-double-angle-down:before { content: "\f103"; }
|
353 |
+
.icon-angle-left:before { content: "\f104"; }
|
354 |
+
.icon-angle-right:before { content: "\f105"; }
|
355 |
+
.icon-angle-up:before { content: "\f106"; }
|
356 |
+
.icon-angle-down:before { content: "\f107"; }
|
357 |
+
.icon-desktop:before { content: "\f108"; }
|
358 |
+
.icon-laptop:before { content: "\f109"; }
|
359 |
+
.icon-tablet:before { content: "\f10a"; }
|
360 |
+
.icon-mobile-phone:before { content: "\f10b"; }
|
361 |
+
.icon-circle-blank:before { content: "\f10c"; }
|
362 |
+
.icon-quote-left:before { content: "\f10d"; }
|
363 |
+
.icon-quote-right:before { content: "\f10e"; }
|
364 |
+
|
365 |
+
.icon-spinner:before { content: "\f110"; }
|
366 |
+
.icon-circle:before { content: "\f111"; }
|
367 |
+
.icon-reply:before { content: "\f112"; }
|
368 |
+
.icon-github-alt:before { content: "\f113"; }
|
369 |
+
.icon-folder-close-alt:before { content: "\f114"; }
|
370 |
+
.icon-folder-open-alt:before { content: "\f115"; }
|
assets/jui/less/font-awesome/mixins.less
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
}
|
8 |
|
9 |
.icon-FontAwesome() {
|
10 |
-
font-family: FontAwesome;
|
11 |
font-weight: normal;
|
12 |
font-style: normal;
|
13 |
text-decoration: inherit;
|
7 |
}
|
8 |
|
9 |
.icon-FontAwesome() {
|
10 |
+
font-family: FontAwesome, sans-serif;
|
11 |
font-weight: normal;
|
12 |
font-style: normal;
|
13 |
text-decoration: inherit;
|
assets/jui/less/font-awesome4/bordered-pulled.less
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Bordered & Pulled
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-border {
|
5 |
+
padding: .2em .25em .15em;
|
6 |
+
border: solid .08em @fa-border-color;
|
7 |
+
border-radius: .1em;
|
8 |
+
}
|
9 |
+
|
10 |
+
.pull-right { float: right; }
|
11 |
+
.pull-left { float: left; }
|
12 |
+
|
13 |
+
.@{fa-css-prefix} {
|
14 |
+
&.pull-left { margin-right: .3em; }
|
15 |
+
&.pull-right { margin-left: .3em; }
|
16 |
+
}
|
assets/jui/less/font-awesome4/core.less
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Base Class Definition
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix} {
|
5 |
+
display: inline-block;
|
6 |
+
font-family: FontAwesome;
|
7 |
+
font-style: normal;
|
8 |
+
font-weight: normal;
|
9 |
+
line-height: 1;
|
10 |
+
-webkit-font-smoothing: antialiased;
|
11 |
+
-moz-osx-font-smoothing: grayscale;
|
12 |
+
}
|
assets/jui/less/font-awesome4/fixed-width.less
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Fixed Width Icons
|
2 |
+
// -------------------------
|
3 |
+
.@{fa-css-prefix}-fw {
|
4 |
+
width: (18em / 14);
|
5 |
+
text-align: center;
|
6 |
+
}
|
assets/jui/less/font-awesome4/font-awesome.less
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome
|
3 |
+
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
4 |
+
*/
|
5 |
+
|
6 |
+
@import "variables";
|
7 |
+
@import "mixins";
|
8 |
+
@import "path";
|
9 |
+
@import "core";
|
10 |
+
@import "larger";
|
11 |
+
@import "fixed-width";
|
12 |
+
@import "list";
|
13 |
+
@import "bordered-pulled";
|
14 |
+
@import "spinning";
|
15 |
+
@import "rotated-flipped";
|
16 |
+
@import "stacked";
|
17 |
+
@import "icons";
|
assets/jui/less/font-awesome4/icons.less
ADDED
@@ -0,0 +1,412 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
|
2 |
+
readers do not read off random characters that represent icons */
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
|
5 |
+
.@{fa-css-prefix}-music:before { content: @fa-var-music; }
|
6 |
+
.@{fa-css-prefix}-search:before { content: @fa-var-search; }
|
7 |
+
.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
|
8 |
+
.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
|
9 |
+
.@{fa-css-prefix}-star:before { content: @fa-var-star; }
|
10 |
+
.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
|
11 |
+
.@{fa-css-prefix}-user:before { content: @fa-var-user; }
|
12 |
+
.@{fa-css-prefix}-film:before { content: @fa-var-film; }
|
13 |
+
.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
|
14 |
+
.@{fa-css-prefix}-th:before { content: @fa-var-th; }
|
15 |
+
.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
|
16 |
+
.@{fa-css-prefix}-check:before { content: @fa-var-check; }
|
17 |
+
.@{fa-css-prefix}-times:before { content: @fa-var-times; }
|
18 |
+
.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
|
19 |
+
.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
|
20 |
+
.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
|
21 |
+
.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
|
22 |
+
.@{fa-css-prefix}-gear:before,
|
23 |
+
.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
|
24 |
+
.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
|
25 |
+
.@{fa-css-prefix}-home:before { content: @fa-var-home; }
|
26 |
+
.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
|
27 |
+
.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
|
28 |
+
.@{fa-css-prefix}-road:before { content: @fa-var-road; }
|
29 |
+
.@{fa-css-prefix}-download:before { content: @fa-var-download; }
|
30 |
+
.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
|
31 |
+
.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
|
32 |
+
.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
|
33 |
+
.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
|
34 |
+
.@{fa-css-prefix}-rotate-right:before,
|
35 |
+
.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
|
36 |
+
.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
|
37 |
+
.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
|
38 |
+
.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
|
39 |
+
.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
|
40 |
+
.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
|
41 |
+
.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
|
42 |
+
.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
|
43 |
+
.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
|
44 |
+
.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
|
45 |
+
.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
|
46 |
+
.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
|
47 |
+
.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
|
48 |
+
.@{fa-css-prefix}-book:before { content: @fa-var-book; }
|
49 |
+
.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
|
50 |
+
.@{fa-css-prefix}-print:before { content: @fa-var-print; }
|
51 |
+
.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
|
52 |
+
.@{fa-css-prefix}-font:before { content: @fa-var-font; }
|
53 |
+
.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
|
54 |
+
.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
|
55 |
+
.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
|
56 |
+
.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
|
57 |
+
.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
|
58 |
+
.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
|
59 |
+
.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
|
60 |
+
.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
|
61 |
+
.@{fa-css-prefix}-list:before { content: @fa-var-list; }
|
62 |
+
.@{fa-css-prefix}-dedent:before,
|
63 |
+
.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
|
64 |
+
.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
|
65 |
+
.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
|
66 |
+
.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
|
67 |
+
.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
|
68 |
+
.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
|
69 |
+
.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
|
70 |
+
.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
|
71 |
+
.@{fa-css-prefix}-edit:before,
|
72 |
+
.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
|
73 |
+
.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
|
74 |
+
.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
|
75 |
+
.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
|
76 |
+
.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
|
77 |
+
.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
|
78 |
+
.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
|
79 |
+
.@{fa-css-prefix}-play:before { content: @fa-var-play; }
|
80 |
+
.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
|
81 |
+
.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
|
82 |
+
.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
|
83 |
+
.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
|
84 |
+
.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
|
85 |
+
.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
|
86 |
+
.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
|
87 |
+
.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
|
88 |
+
.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
|
89 |
+
.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
|
90 |
+
.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
|
91 |
+
.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
|
92 |
+
.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
|
93 |
+
.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
|
94 |
+
.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
|
95 |
+
.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
|
96 |
+
.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
|
97 |
+
.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
|
98 |
+
.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
|
99 |
+
.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
|
100 |
+
.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
|
101 |
+
.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
|
102 |
+
.@{fa-css-prefix}-mail-forward:before,
|
103 |
+
.@{fa-css-prefix}-share:before { content: @fa-var-share; }
|
104 |
+
.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
|
105 |
+
.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
|
106 |
+
.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
|
107 |
+
.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
|
108 |
+
.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
|
109 |
+
.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
|
110 |
+
.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
|
111 |
+
.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
|
112 |
+
.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
|
113 |
+
.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
|
114 |
+
.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
|
115 |
+
.@{fa-css-prefix}-warning:before,
|
116 |
+
.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
|
117 |
+
.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
|
118 |
+
.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
|
119 |
+
.@{fa-css-prefix}-random:before { content: @fa-var-random; }
|
120 |
+
.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
|
121 |
+
.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
|
122 |
+
.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
|
123 |
+
.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
|
124 |
+
.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
|
125 |
+
.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
|
126 |
+
.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
|
127 |
+
.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
|
128 |
+
.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
|
129 |
+
.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
|
130 |
+
.@{fa-css-prefix}-bar-chart-o:before { content: @fa-var-bar-chart-o; }
|
131 |
+
.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
|
132 |
+
.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
|
133 |
+
.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
|
134 |
+
.@{fa-css-prefix}-key:before { content: @fa-var-key; }
|
135 |
+
.@{fa-css-prefix}-gears:before,
|
136 |
+
.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
|
137 |
+
.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
|
138 |
+
.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
|
139 |
+
.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
|
140 |
+
.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
|
141 |
+
.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
|
142 |
+
.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
|
143 |
+
.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
|
144 |
+
.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
|
145 |
+
.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
|
146 |
+
.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
|
147 |
+
.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
|
148 |
+
.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
|
149 |
+
.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
|
150 |
+
.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
|
151 |
+
.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
|
152 |
+
.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
|
153 |
+
.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
|
154 |
+
.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
|
155 |
+
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
|
156 |
+
.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
|
157 |
+
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
|
158 |
+
.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
|
159 |
+
.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
|
160 |
+
.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
|
161 |
+
.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
|
162 |
+
.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
|
163 |
+
.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
|
164 |
+
.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
|
165 |
+
.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
|
166 |
+
.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
|
167 |
+
.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
|
168 |
+
.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
|
169 |
+
.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
|
170 |
+
.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
|
171 |
+
.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
|
172 |
+
.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
|
173 |
+
.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
|
174 |
+
.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
|
175 |
+
.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
|
176 |
+
.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
|
177 |
+
.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
|
178 |
+
.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
|
179 |
+
.@{fa-css-prefix}-group:before,
|
180 |
+
.@{fa-css-prefix}-users:before { content: @fa-var-users; }
|
181 |
+
.@{fa-css-prefix}-chain:before,
|
182 |
+
.@{fa-css-prefix}-link:before { content: @fa-var-link; }
|
183 |
+
.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
|
184 |
+
.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
|
185 |
+
.@{fa-css-prefix}-cut:before,
|
186 |
+
.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
|
187 |
+
.@{fa-css-prefix}-copy:before,
|
188 |
+
.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
|
189 |
+
.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
|
190 |
+
.@{fa-css-prefix}-save:before,
|
191 |
+
.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
|
192 |
+
.@{fa-css-prefix}-square:before { content: @fa-var-square; }
|
193 |
+
.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
|
194 |
+
.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
|
195 |
+
.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
|
196 |
+
.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
|
197 |
+
.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
|
198 |
+
.@{fa-css-prefix}-table:before { content: @fa-var-table; }
|
199 |
+
.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
|
200 |
+
.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
|
201 |
+
.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
|
202 |
+
.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
|
203 |
+
.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
|
204 |
+
.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
|
205 |
+
.@{fa-css-prefix}-money:before { content: @fa-var-money; }
|
206 |
+
.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
|
207 |
+
.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
|
208 |
+
.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
|
209 |
+
.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
|
210 |
+
.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
|
211 |
+
.@{fa-css-prefix}-unsorted:before,
|
212 |
+
.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
|
213 |
+
.@{fa-css-prefix}-sort-down:before,
|
214 |
+
.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
|
215 |
+
.@{fa-css-prefix}-sort-up:before,
|
216 |
+
.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
|
217 |
+
.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
|
218 |
+
.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
|
219 |
+
.@{fa-css-prefix}-rotate-left:before,
|
220 |
+
.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
|
221 |
+
.@{fa-css-prefix}-legal:before,
|
222 |
+
.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
|
223 |
+
.@{fa-css-prefix}-dashboard:before,
|
224 |
+
.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
|
225 |
+
.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
|
226 |
+
.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
|
227 |
+
.@{fa-css-prefix}-flash:before,
|
228 |
+
.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
|
229 |
+
.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
|
230 |
+
.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
|
231 |
+
.@{fa-css-prefix}-paste:before,
|
232 |
+
.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
|
233 |
+
.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
|
234 |
+
.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
|
235 |
+
.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
|
236 |
+
.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
|
237 |
+
.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
|
238 |
+
.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
|
239 |
+
.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
|
240 |
+
.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
|
241 |
+
.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
|
242 |
+
.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
|
243 |
+
.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
|
244 |
+
.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
|
245 |
+
.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
|
246 |
+
.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
|
247 |
+
.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
|
248 |
+
.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
|
249 |
+
.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
|
250 |
+
.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
|
251 |
+
.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
|
252 |
+
.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
|
253 |
+
.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
|
254 |
+
.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
|
255 |
+
.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
|
256 |
+
.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
|
257 |
+
.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
|
258 |
+
.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
|
259 |
+
.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
|
260 |
+
.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
|
261 |
+
.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
|
262 |
+
.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
|
263 |
+
.@{fa-css-prefix}-mobile-phone:before,
|
264 |
+
.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
|
265 |
+
.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
|
266 |
+
.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
|
267 |
+
.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
|
268 |
+
.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
|
269 |
+
.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
|
270 |
+
.@{fa-css-prefix}-mail-reply:before,
|
271 |
+
.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
|
272 |
+
.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
|
273 |
+
.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
|
274 |
+
.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
|
275 |
+
.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
|
276 |
+
.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
|
277 |
+
.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
|
278 |
+
.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
|
279 |
+
.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
|
280 |
+
.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
|
281 |
+
.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
|
282 |
+
.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
|
283 |
+
.@{fa-css-prefix}-code:before { content: @fa-var-code; }
|
284 |
+
.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
|
285 |
+
.@{fa-css-prefix}-mail-reply-all:before { content: @fa-var-mail-reply-all; }
|
286 |
+
.@{fa-css-prefix}-star-half-empty:before,
|
287 |
+
.@{fa-css-prefix}-star-half-full:before,
|
288 |
+
.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
|
289 |
+
.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
|
290 |
+
.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
|
291 |
+
.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
|
292 |
+
.@{fa-css-prefix}-unlink:before,
|
293 |
+
.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
|
294 |
+
.@{fa-css-prefix}-question:before { content: @fa-var-question; }
|
295 |
+
.@{fa-css-prefix}-info:before { content: @fa-var-info; }
|
296 |
+
.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
|
297 |
+
.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
|
298 |
+
.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
|
299 |
+
.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
|
300 |
+
.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
|
301 |
+
.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
|
302 |
+
.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
|
303 |
+
.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
|
304 |
+
.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
|
305 |
+
.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
|
306 |
+
.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
|
307 |
+
.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
|
308 |
+
.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
|
309 |
+
.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
|
310 |
+
.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
|
311 |
+
.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
|
312 |
+
.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
|
313 |
+
.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
|
314 |
+
.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
|
315 |
+
.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
|
316 |
+
.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
|
317 |
+
.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
|
318 |
+
.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
|
319 |
+
.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
|
320 |
+
.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
|
321 |
+
.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
|
322 |
+
.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
|
323 |
+
.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
|
324 |
+
.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
|
325 |
+
.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
|
326 |
+
.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
|
327 |
+
.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
|
328 |
+
.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
|
329 |
+
.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
|
330 |
+
.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
|
331 |
+
.@{fa-css-prefix}-toggle-down:before,
|
332 |
+
.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
|
333 |
+
.@{fa-css-prefix}-toggle-up:before,
|
334 |
+
.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
|
335 |
+
.@{fa-css-prefix}-toggle-right:before,
|
336 |
+
.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
|
337 |
+
.@{fa-css-prefix}-euro:before,
|
338 |
+
.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
|
339 |
+
.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
|
340 |
+
.@{fa-css-prefix}-dollar:before,
|
341 |
+
.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
|
342 |
+
.@{fa-css-prefix}-rupee:before,
|
343 |
+
.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
|
344 |
+
.@{fa-css-prefix}-cny:before,
|
345 |
+
.@{fa-css-prefix}-rmb:before,
|
346 |
+
.@{fa-css-prefix}-yen:before,
|
347 |
+
.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
|
348 |
+
.@{fa-css-prefix}-ruble:before,
|
349 |
+
.@{fa-css-prefix}-rouble:before,
|
350 |
+
.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
|
351 |
+
.@{fa-css-prefix}-won:before,
|
352 |
+
.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
|
353 |
+
.@{fa-css-prefix}-bitcoin:before,
|
354 |
+
.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
|
355 |
+
.@{fa-css-prefix}-file:before { content: @fa-var-file; }
|
356 |
+
.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
|
357 |
+
.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
|
358 |
+
.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
|
359 |
+
.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
|
360 |
+
.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
|
361 |
+
.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
|
362 |
+
.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
|
363 |
+
.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
|
364 |
+
.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
|
365 |
+
.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
|
366 |
+
.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
|
367 |
+
.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
|
368 |
+
.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
|
369 |
+
.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
|
370 |
+
.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
|
371 |
+
.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
|
372 |
+
.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
|
373 |
+
.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
|
374 |
+
.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
|
375 |
+
.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
|
376 |
+
.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
|
377 |
+
.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
|
378 |
+
.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
|
379 |
+
.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
|
380 |
+
.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
|
381 |
+
.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
|
382 |
+
.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
|
383 |
+
.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
|
384 |
+
.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
|
385 |
+
.@{fa-css-prefix}-android:before { content: @fa-var-android; }
|
386 |
+
.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
|
387 |
+
.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
|
388 |
+
.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
|
389 |
+
.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
|
390 |
+
.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
|
391 |
+
.@{fa-css-prefix}-female:before { content: @fa-var-female; }
|
392 |
+
.@{fa-css-prefix}-male:before { content: @fa-var-male; }
|
393 |
+
.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; }
|
394 |
+
.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
|
395 |
+
.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
|
396 |
+
.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
|
397 |
+
.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
|
398 |
+
.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
|
399 |
+
.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
|
400 |
+
.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
|
401 |
+
.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
|
402 |
+
.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
|
403 |
+
.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
|
404 |
+
.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
|
405 |
+
.@{fa-css-prefix}-toggle-left:before,
|
406 |
+
.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
|
407 |
+
.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
|
408 |
+
.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
|
409 |
+
.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
|
410 |
+
.@{fa-css-prefix}-turkish-lira:before,
|
411 |
+
.@{fa-css-prefix}-try:before { content: @fa-var-try; }
|
412 |
+
.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
|
assets/jui/less/font-awesome4/larger.less
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Icon Sizes
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
/* makes the font 33% larger relative to the icon container */
|
5 |
+
.@{fa-css-prefix}-lg {
|
6 |
+
font-size: (4em / 3);
|
7 |
+
line-height: (3em / 4);
|
8 |
+
vertical-align: -15%;
|
9 |
+
}
|
10 |
+
.@{fa-css-prefix}-2x { font-size: 2em; }
|
11 |
+
.@{fa-css-prefix}-3x { font-size: 3em; }
|
12 |
+
.@{fa-css-prefix}-4x { font-size: 4em; }
|
13 |
+
.@{fa-css-prefix}-5x { font-size: 5em; }
|
assets/jui/less/font-awesome4/list.less
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// List Icons
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-ul {
|
5 |
+
padding-left: 0;
|
6 |
+
margin-left: @fa-li-width;
|
7 |
+
list-style-type: none;
|
8 |
+
> li { position: relative; }
|
9 |
+
}
|
10 |
+
.@{fa-css-prefix}-li {
|
11 |
+
position: absolute;
|
12 |
+
left: -@fa-li-width;
|
13 |
+
width: @fa-li-width;
|
14 |
+
top: (2em / 14);
|
15 |
+
text-align: center;
|
16 |
+
&.@{fa-css-prefix}-lg {
|
17 |
+
left: -@fa-li-width + (4em / 14);
|
18 |
+
}
|
19 |
+
}
|
assets/jui/less/font-awesome4/mixins.less
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Mixins
|
2 |
+
// --------------------------
|
3 |
+
|
4 |
+
.fa-icon-rotate(@degrees, @rotation) {
|
5 |
+
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
|
6 |
+
-webkit-transform: rotate(@degrees);
|
7 |
+
-moz-transform: rotate(@degrees);
|
8 |
+
-ms-transform: rotate(@degrees);
|
9 |
+
-o-transform: rotate(@degrees);
|
10 |
+
transform: rotate(@degrees);
|
11 |
+
}
|
12 |
+
|
13 |
+
.fa-icon-flip(@horiz, @vert, @rotation) {
|
14 |
+
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
|
15 |
+
-webkit-transform: scale(@horiz, @vert);
|
16 |
+
-moz-transform: scale(@horiz, @vert);
|
17 |
+
-ms-transform: scale(@horiz, @vert);
|
18 |
+
-o-transform: scale(@horiz, @vert);
|
19 |
+
transform: scale(@horiz, @vert);
|
20 |
+
}
|
assets/jui/less/font-awesome4/path.less
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* FONT PATH
|
2 |
+
* -------------------------- */
|
3 |
+
|
4 |
+
@font-face {
|
5 |
+
font-family: 'FontAwesome';
|
6 |
+
src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
|
7 |
+
src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
|
8 |
+
url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
|
9 |
+
url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
|
10 |
+
url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
|
11 |
+
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
|
12 |
+
font-weight: normal;
|
13 |
+
font-style: normal;
|
14 |
+
}
|
assets/jui/less/font-awesome4/rotated-flipped.less
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Rotated & Flipped Icons
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
|
5 |
+
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
|
6 |
+
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
|
7 |
+
|
8 |
+
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
|
9 |
+
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
|
assets/jui/less/font-awesome4/spinning.less
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Spinning Icons
|
2 |
+
// --------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-spin {
|
5 |
+
-webkit-animation: spin 2s infinite linear;
|
6 |
+
-moz-animation: spin 2s infinite linear;
|
7 |
+
-o-animation: spin 2s infinite linear;
|
8 |
+
animation: spin 2s infinite linear;
|
9 |
+
}
|
10 |
+
|
11 |
+
@-moz-keyframes spin {
|
12 |
+
0% { -moz-transform: rotate(0deg); }
|
13 |
+
100% { -moz-transform: rotate(359deg); }
|
14 |
+
}
|
15 |
+
@-webkit-keyframes spin {
|
16 |
+
0% { -webkit-transform: rotate(0deg); }
|
17 |
+
100% { -webkit-transform: rotate(359deg); }
|
18 |
+
}
|
19 |
+
@-o-keyframes spin {
|
20 |
+
0% { -o-transform: rotate(0deg); }
|
21 |
+
100% { -o-transform: rotate(359deg); }
|
22 |
+
}
|
23 |
+
@-ms-keyframes spin {
|
24 |
+
0% { -ms-transform: rotate(0deg); }
|
25 |
+
100% { -ms-transform: rotate(359deg); }
|
26 |
+
}
|
27 |
+
@keyframes spin {
|
28 |
+
0% { transform: rotate(0deg); }
|
29 |
+
100% { transform: rotate(359deg); }
|
30 |
+
}
|
assets/jui/less/font-awesome4/stacked.less
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Stacked Icons
|
2 |
+
// -------------------------
|
3 |
+
|
4 |
+
.@{fa-css-prefix}-stack {
|
5 |
+
position: relative;
|
6 |
+
display: inline-block;
|
7 |
+
width: 2em;
|
8 |
+
height: 2em;
|
9 |
+
line-height: 2em;
|
10 |
+
vertical-align: middle;
|
11 |
+
}
|
12 |
+
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
|
13 |
+
position: absolute;
|
14 |
+
left: 0;
|
15 |
+
width: 100%;
|
16 |
+
text-align: center;
|
17 |
+
}
|
18 |
+
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
|
19 |
+
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
|
20 |
+
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
|
assets/jui/less/font-awesome4/variables.less
ADDED
@@ -0,0 +1,381 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Variables
|
2 |
+
// --------------------------
|
3 |
+
|
4 |
+
@fa-font-path: "../../../plugins/gantry/assets/jui/fonts/font-awesome4";
|
5 |
+
//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts"; // for referencing Bootstrap CDN font files directly
|
6 |
+
@fa-css-prefix: fa;
|
7 |
+
@fa-version: "4.0.3";
|
8 |
+
@fa-border-color: #eee;
|
9 |
+
@fa-inverse: #fff;
|
10 |
+
@fa-li-width: (30em / 14);
|
11 |
+
|
12 |
+
@fa-var-glass: "\f000";
|
13 |
+
@fa-var-music: "\f001";
|
14 |
+
@fa-var-search: "\f002";
|
15 |
+
@fa-var-envelope-o: "\f003";
|
16 |
+
@fa-var-heart: "\f004";
|
17 |
+
@fa-var-star: "\f005";
|
18 |
+
@fa-var-star-o: "\f006";
|
19 |
+
@fa-var-user: "\f007";
|
20 |
+
@fa-var-film: "\f008";
|
21 |
+
@fa-var-th-large: "\f009";
|
22 |
+
@fa-var-th: "\f00a";
|
23 |
+
@fa-var-th-list: "\f00b";
|
24 |
+
@fa-var-check: "\f00c";
|
25 |
+
@fa-var-times: "\f00d";
|
26 |
+
@fa-var-search-plus: "\f00e";
|
27 |
+
@fa-var-search-minus: "\f010";
|
28 |
+
@fa-var-power-off: "\f011";
|
29 |
+
@fa-var-signal: "\f012";
|
30 |
+
@fa-var-cog: "\f013";
|
31 |
+
@fa-var-trash-o: "\f014";
|
32 |
+
@fa-var-home: "\f015";
|
33 |
+
@fa-var-file-o: "\f016";
|
34 |
+
@fa-var-clock-o: "\f017";
|
35 |
+
@fa-var-road: "\f018";
|
36 |
+
@fa-var-download: "\f019";
|
37 |
+
@fa-var-arrow-circle-o-down: "\f01a";
|
38 |
+
@fa-var-arrow-circle-o-up: "\f01b";
|
39 |
+
@fa-var-inbox: "\f01c";
|
40 |
+
@fa-var-play-circle-o: "\f01d";
|
41 |
+
@fa-var-repeat: "\f01e";
|
42 |
+
@fa-var-refresh: "\f021";
|
43 |
+
@fa-var-list-alt: "\f022";
|
44 |
+
@fa-var-lock: "\f023";
|
45 |
+
@fa-var-flag: "\f024";
|
46 |
+
@fa-var-headphones: "\f025";
|
47 |
+
@fa-var-volume-off: "\f026";
|
48 |
+
@fa-var-volume-down: "\f027";
|
49 |
+
@fa-var-volume-up: "\f028";
|
50 |
+
@fa-var-qrcode: "\f029";
|
51 |
+
@fa-var-barcode: "\f02a";
|
52 |
+
@fa-var-tag: "\f02b";
|
53 |
+
@fa-var-tags: "\f02c";
|
54 |
+
@fa-var-book: "\f02d";
|
55 |
+
@fa-var-bookmark: "\f02e";
|
56 |
+
@fa-var-print: "\f02f";
|
57 |
+
@fa-var-camera: "\f030";
|
58 |
+
@fa-var-font: "\f031";
|
59 |
+
@fa-var-bold: "\f032";
|
60 |
+
@fa-var-italic: "\f033";
|
61 |
+
@fa-var-text-height: "\f034";
|
62 |
+
@fa-var-text-width: "\f035";
|
63 |
+
@fa-var-align-left: "\f036";
|
64 |
+
@fa-var-align-center: "\f037";
|
65 |
+
@fa-var-align-right: "\f038";
|
66 |
+
@fa-var-align-justify: "\f039";
|
67 |
+
@fa-var-list: "\f03a";
|
68 |
+
@fa-var-outdent: "\f03b";
|
69 |
+
@fa-var-indent: "\f03c";
|
70 |
+
@fa-var-video-camera: "\f03d";
|
71 |
+
@fa-var-picture-o: "\f03e";
|
72 |
+
@fa-var-pencil: "\f040";
|
73 |
+
@fa-var-map-marker: "\f041";
|
74 |
+
@fa-var-adjust: "\f042";
|
75 |
+
@fa-var-tint: "\f043";
|
76 |
+
@fa-var-pencil-square-o: "\f044";
|
77 |
+
@fa-var-share-square-o: "\f045";
|
78 |
+
@fa-var-check-square-o: "\f046";
|
79 |
+
@fa-var-arrows: "\f047";
|
80 |
+
@fa-var-step-backward: "\f048";
|
81 |
+
@fa-var-fast-backward: "\f049";
|
82 |
+
@fa-var-backward: "\f04a";
|
83 |
+
@fa-var-play: "\f04b";
|
84 |
+
@fa-var-pause: "\f04c";
|
85 |
+
@fa-var-stop: "\f04d";
|
86 |
+
@fa-var-forward: "\f04e";
|
87 |
+
@fa-var-fast-forward: "\f050";
|
88 |
+
@fa-var-step-forward: "\f051";
|
89 |
+
@fa-var-eject: "\f052";
|
90 |
+
@fa-var-chevron-left: "\f053";
|
91 |
+
@fa-var-chevron-right: "\f054";
|
92 |
+
@fa-var-plus-circle: "\f055";
|
93 |
+
@fa-var-minus-circle: "\f056";
|
94 |
+
@fa-var-times-circle: "\f057";
|
95 |
+
@fa-var-check-circle: "\f058";
|
96 |
+
@fa-var-question-circle: "\f059";
|
97 |
+
@fa-var-info-circle: "\f05a";
|
98 |
+
@fa-var-crosshairs: "\f05b";
|
99 |
+
@fa-var-times-circle-o: "\f05c";
|
100 |
+
@fa-var-check-circle-o: "\f05d";
|
101 |
+
@fa-var-ban: "\f05e";
|
102 |
+
@fa-var-arrow-left: "\f060";
|
103 |
+
@fa-var-arrow-right: "\f061";
|
104 |
+
@fa-var-arrow-up: "\f062";
|
105 |
+
@fa-var-arrow-down: "\f063";
|
106 |
+
@fa-var-share: "\f064";
|
107 |
+
@fa-var-expand: "\f065";
|
108 |
+
@fa-var-compress: "\f066";
|
109 |
+
@fa-var-plus: "\f067";
|
110 |
+
@fa-var-minus: "\f068";
|
111 |
+
@fa-var-asterisk: "\f069";
|
112 |
+
@fa-var-exclamation-circle: "\f06a";
|
113 |
+
@fa-var-gift: "\f06b";
|
114 |
+
@fa-var-leaf: "\f06c";
|
115 |
+
@fa-var-fire: "\f06d";
|
116 |
+
@fa-var-eye: "\f06e";
|
117 |
+
@fa-var-eye-slash: "\f070";
|
118 |
+
@fa-var-exclamation-triangle: "\f071";
|
119 |
+
@fa-var-plane: "\f072";
|
120 |
+
@fa-var-calendar: "\f073";
|
121 |
+
@fa-var-random: "\f074";
|
122 |
+
@fa-var-comment: "\f075";
|
123 |
+
@fa-var-magnet: "\f076";
|
124 |
+
@fa-var-chevron-up: "\f077";
|
125 |
+
@fa-var-chevron-down: "\f078";
|
126 |
+
@fa-var-retweet: "\f079";
|
127 |
+
@fa-var-shopping-cart: "\f07a";
|
128 |
+
@fa-var-folder: "\f07b";
|
129 |
+
@fa-var-folder-open: "\f07c";
|
130 |
+
@fa-var-arrows-v: "\f07d";
|
131 |
+
@fa-var-arrows-h: "\f07e";
|
132 |
+
@fa-var-bar-chart-o: "\f080";
|
133 |
+
@fa-var-twitter-square: "\f081";
|
134 |
+
@fa-var-facebook-square: "\f082";
|
135 |
+
@fa-var-camera-retro: "\f083";
|
136 |
+
@fa-var-key: "\f084";
|
137 |
+
@fa-var-cogs: "\f085";
|
138 |
+
@fa-var-comments: "\f086";
|
139 |
+
@fa-var-thumbs-o-up: "\f087";
|
140 |
+
@fa-var-thumbs-o-down: "\f088";
|
141 |
+
@fa-var-star-half: "\f089";
|
142 |
+
@fa-var-heart-o: "\f08a";
|
143 |
+
@fa-var-sign-out: "\f08b";
|
144 |
+
@fa-var-linkedin-square: "\f08c";
|
145 |
+
@fa-var-thumb-tack: "\f08d";
|
146 |
+
@fa-var-external-link: "\f08e";
|
147 |
+
@fa-var-sign-in: "\f090";
|
148 |
+
@fa-var-trophy: "\f091";
|
149 |
+
@fa-var-github-square: "\f092";
|
150 |
+
@fa-var-upload: "\f093";
|
151 |
+
@fa-var-lemon-o: "\f094";
|
152 |
+
@fa-var-phone: "\f095";
|
153 |
+
@fa-var-square-o: "\f096";
|
154 |
+
@fa-var-bookmark-o: "\f097";
|
155 |
+
@fa-var-phone-square: "\f098";
|
156 |
+
@fa-var-twitter: "\f099";
|
157 |
+
@fa-var-facebook: "\f09a";
|
158 |
+
@fa-var-github: "\f09b";
|
159 |
+
@fa-var-unlock: "\f09c";
|
160 |
+
@fa-var-credit-card: "\f09d";
|
161 |
+
@fa-var-rss: "\f09e";
|
162 |
+
@fa-var-hdd-o: "\f0a0";
|
163 |
+
@fa-var-bullhorn: "\f0a1";
|
164 |
+
@fa-var-bell: "\f0f3";
|
165 |
+
@fa-var-certificate: "\f0a3";
|
166 |
+
@fa-var-hand-o-right: "\f0a4";
|
167 |
+
@fa-var-hand-o-left: "\f0a5";
|
168 |
+
@fa-var-hand-o-up: "\f0a6";
|
169 |
+
@fa-var-hand-o-down: "\f0a7";
|
170 |
+
@fa-var-arrow-circle-left: "\f0a8";
|
171 |
+
@fa-var-arrow-circle-right: "\f0a9";
|
172 |
+
@fa-var-arrow-circle-up: "\f0aa";
|
173 |
+
@fa-var-arrow-circle-down: "\f0ab";
|
174 |
+
@fa-var-globe: "\f0ac";
|
175 |
+
@fa-var-wrench: "\f0ad";
|
176 |
+
@fa-var-tasks: "\f0ae";
|
177 |
+
@fa-var-filter: "\f0b0";
|
178 |
+
@fa-var-briefcase: "\f0b1";
|
179 |
+
@fa-var-arrows-alt: "\f0b2";
|
180 |
+
@fa-var-users: "\f0c0";
|
181 |
+
@fa-var-link: "\f0c1";
|
182 |
+
@fa-var-cloud: "\f0c2";
|
183 |
+
@fa-var-flask: "\f0c3";
|
184 |
+
@fa-var-scissors: "\f0c4";
|
185 |
+
@fa-var-files-o: "\f0c5";
|
186 |
+
@fa-var-paperclip: "\f0c6";
|
187 |
+
@fa-var-floppy-o: "\f0c7";
|
188 |
+
@fa-var-square: "\f0c8";
|
189 |
+
@fa-var-bars: "\f0c9";
|
190 |
+
@fa-var-list-ul: "\f0ca";
|
191 |
+
@fa-var-list-ol: "\f0cb";
|
192 |
+
@fa-var-strikethrough: "\f0cc";
|
193 |
+
@fa-var-underline: "\f0cd";
|
194 |
+
@fa-var-table: "\f0ce";
|
195 |
+
@fa-var-magic: "\f0d0";
|
196 |
+
@fa-var-truck: "\f0d1";
|
197 |
+
@fa-var-pinterest: "\f0d2";
|
198 |
+
@fa-var-pinterest-square: "\f0d3";
|
199 |
+
@fa-var-google-plus-square: "\f0d4";
|
200 |
+
@fa-var-google-plus: "\f0d5";
|
201 |
+
@fa-var-money: "\f0d6";
|
202 |
+
@fa-var-caret-down: "\f0d7";
|
203 |
+
@fa-var-caret-up: "\f0d8";
|
204 |
+
@fa-var-caret-left: "\f0d9";
|
205 |
+
@fa-var-caret-right: "\f0da";
|
206 |
+
@fa-var-columns: "\f0db";
|
207 |
+
@fa-var-sort: "\f0dc";
|
208 |
+
@fa-var-sort-asc: "\f0dd";
|
209 |
+
@fa-var-sort-desc: "\f0de";
|
210 |
+
@fa-var-envelope: "\f0e0";
|
211 |
+
@fa-var-linkedin: "\f0e1";
|
212 |
+
@fa-var-undo: "\f0e2";
|
213 |
+
@fa-var-gavel: "\f0e3";
|
214 |
+
@fa-var-tachometer: "\f0e4";
|
215 |
+
@fa-var-comment-o: "\f0e5";
|
216 |
+
@fa-var-comments-o: "\f0e6";
|
217 |
+
@fa-var-bolt: "\f0e7";
|
218 |
+
@fa-var-sitemap: "\f0e8";
|
219 |
+
@fa-var-umbrella: "\f0e9";
|
220 |
+
@fa-var-clipboard: "\f0ea";
|
221 |
+
@fa-var-lightbulb-o: "\f0eb";
|
222 |
+
@fa-var-exchange: "\f0ec";
|
223 |
+
@fa-var-cloud-download: "\f0ed";
|
224 |
+
@fa-var-cloud-upload: "\f0ee";
|
225 |
+
@fa-var-user-md: "\f0f0";
|
226 |
+
@fa-var-stethoscope: "\f0f1";
|
227 |
+
@fa-var-suitcase: "\f0f2";
|
228 |
+
@fa-var-bell-o: "\f0a2";
|
229 |
+
@fa-var-coffee: "\f0f4";
|
230 |
+
@fa-var-cutlery: "\f0f5";
|
231 |
+
@fa-var-file-text-o: "\f0f6";
|
232 |
+
@fa-var-building-o: "\f0f7";
|
233 |
+
@fa-var-hospital-o: "\f0f8";
|
234 |
+
@fa-var-ambulance: "\f0f9";
|
235 |
+
@fa-var-medkit: "\f0fa";
|
236 |
+
@fa-var-fighter-jet: "\f0fb";
|
237 |
+
@fa-var-beer: "\f0fc";
|
238 |
+
@fa-var-h-square: "\f0fd";
|
239 |
+
@fa-var-plus-square: "\f0fe";
|
240 |
+
@fa-var-angle-double-left: "\f100";
|
241 |
+
@fa-var-angle-double-right: "\f101";
|
242 |
+
@fa-var-angle-double-up: "\f102";
|
243 |
+
@fa-var-angle-double-down: "\f103";
|
244 |
+
@fa-var-angle-left: "\f104";
|
245 |
+
@fa-var-angle-right: "\f105";
|
246 |
+
@fa-var-angle-up: "\f106";
|
247 |
+
@fa-var-angle-down: "\f107";
|
248 |
+
@fa-var-desktop: "\f108";
|
249 |
+
@fa-var-laptop: "\f109";
|
250 |
+
@fa-var-tablet: "\f10a";
|
251 |
+
@fa-var-mobile: "\f10b";
|
252 |
+
@fa-var-circle-o: "\f10c";
|
253 |
+
@fa-var-quote-left: "\f10d";
|
254 |
+
@fa-var-quote-right: "\f10e";
|
255 |
+
@fa-var-spinner: "\f110";
|
256 |
+
@fa-var-circle: "\f111";
|
257 |
+
@fa-var-reply: "\f112";
|
258 |
+
@fa-var-github-alt: "\f113";
|
259 |
+
@fa-var-folder-o: "\f114";
|
260 |
+
@fa-var-folder-open-o: "\f115";
|
261 |
+
@fa-var-smile-o: "\f118";
|
262 |
+
@fa-var-frown-o: "\f119";
|
263 |
+
@fa-var-meh-o: "\f11a";
|
264 |
+
@fa-var-gamepad: "\f11b";
|
265 |
+
@fa-var-keyboard-o: "\f11c";
|
266 |
+
@fa-var-flag-o: "\f11d";
|
267 |
+
@fa-var-flag-checkered: "\f11e";
|
268 |
+
@fa-var-terminal: "\f120";
|
269 |
+
@fa-var-code: "\f121";
|
270 |
+
@fa-var-reply-all: "\f122";
|
271 |
+
@fa-var-mail-reply-all: "\f122";
|
272 |
+
@fa-var-star-half-o: "\f123";
|
273 |
+
@fa-var-location-arrow: "\f124";
|
274 |
+
@fa-var-crop: "\f125";
|
275 |
+
@fa-var-code-fork: "\f126";
|
276 |
+
@fa-var-chain-broken: "\f127";
|
277 |
+
@fa-var-question: "\f128";
|
278 |
+
@fa-var-info: "\f129";
|
279 |
+
@fa-var-exclamation: "\f12a";
|
280 |
+
@fa-var-superscript: "\f12b";
|
281 |
+
@fa-var-subscript: "\f12c";
|
282 |
+
@fa-var-eraser: "\f12d";
|
283 |
+
@fa-var-puzzle-piece: "\f12e";
|
284 |
+
@fa-var-microphone: "\f130";
|
285 |
+
@fa-var-microphone-slash: "\f131";
|
286 |
+
@fa-var-shield: "\f132";
|
287 |
+
@fa-var-calendar-o: "\f133";
|
288 |
+
@fa-var-fire-extinguisher: "\f134";
|
289 |
+
@fa-var-rocket: "\f135";
|
290 |
+
@fa-var-maxcdn: "\f136";
|
291 |
+
@fa-var-chevron-circle-left: "\f137";
|
292 |
+
@fa-var-chevron-circle-right: "\f138";
|
293 |
+
@fa-var-chevron-circle-up: "\f139";
|
294 |
+
@fa-var-chevron-circle-down: "\f13a";
|
295 |
+
@fa-var-html5: "\f13b";
|
296 |
+
@fa-var-css3: "\f13c";
|
297 |
+
@fa-var-anchor: "\f13d";
|
298 |
+
@fa-var-unlock-alt: "\f13e";
|
299 |
+
@fa-var-bullseye: "\f140";
|
300 |
+
@fa-var-ellipsis-h: "\f141";
|
301 |
+
@fa-var-ellipsis-v: "\f142";
|
302 |
+
@fa-var-rss-square: "\f143";
|
303 |
+
@fa-var-play-circle: "\f144";
|
304 |
+
@fa-var-ticket: "\f145";
|
305 |
+
@fa-var-minus-square: "\f146";
|
306 |
+
@fa-var-minus-square-o: "\f147";
|
307 |
+
@fa-var-level-up: "\f148";
|
308 |
+
@fa-var-level-down: "\f149";
|
309 |
+
@fa-var-check-square: "\f14a";
|
310 |
+
@fa-var-pencil-square: "\f14b";
|
311 |
+
@fa-var-external-link-square: "\f14c";
|
312 |
+
@fa-var-share-square: "\f14d";
|
313 |
+
@fa-var-compass: "\f14e";
|
314 |
+
@fa-var-caret-square-o-down: "\f150";
|
315 |
+
@fa-var-caret-square-o-up: "\f151";
|
316 |
+
@fa-var-caret-square-o-right: "\f152";
|
317 |
+
@fa-var-eur: "\f153";
|
318 |
+
@fa-var-gbp: "\f154";
|
319 |
+
@fa-var-usd: "\f155";
|
320 |
+
@fa-var-inr: "\f156";
|
321 |
+
@fa-var-jpy: "\f157";
|
322 |
+
@fa-var-rub: "\f158";
|
323 |
+
@fa-var-krw: "\f159";
|
324 |
+
@fa-var-btc: "\f15a";
|
325 |
+
@fa-var-file: "\f15b";
|
326 |
+
@fa-var-file-text: "\f15c";
|
327 |
+
@fa-var-sort-alpha-asc: "\f15d";
|
328 |
+
@fa-var-sort-alpha-desc: "\f15e";
|
329 |
+
@fa-var-sort-amount-asc: "\f160";
|
330 |
+
@fa-var-sort-amount-desc: "\f161";
|
331 |
+
@fa-var-sort-numeric-asc: "\f162";
|
332 |
+
@fa-var-sort-numeric-desc: "\f163";
|
333 |
+
@fa-var-thumbs-up: "\f164";
|
334 |
+
@fa-var-thumbs-down: "\f165";
|
335 |
+
@fa-var-youtube-square: "\f166";
|
336 |
+
@fa-var-youtube: "\f167";
|
337 |
+
@fa-var-xing: "\f168";
|
338 |
+
@fa-var-xing-square: "\f169";
|
339 |
+
@fa-var-youtube-play: "\f16a";
|
340 |
+
@fa-var-dropbox: "\f16b";
|
341 |
+
@fa-var-stack-overflow: "\f16c";
|
342 |
+
@fa-var-instagram: "\f16d";
|
343 |
+
@fa-var-flickr: "\f16e";
|
344 |
+
@fa-var-adn: "\f170";
|
345 |
+
@fa-var-bitbucket: "\f171";
|
346 |
+
@fa-var-bitbucket-square: "\f172";
|
347 |
+
@fa-var-tumblr: "\f173";
|
348 |
+
@fa-var-tumblr-square: "\f174";
|
349 |
+
@fa-var-long-arrow-down: "\f175";
|
350 |
+
@fa-var-long-arrow-up: "\f176";
|
351 |
+
@fa-var-long-arrow-left: "\f177";
|
352 |
+
@fa-var-long-arrow-right: "\f178";
|
353 |
+
@fa-var-apple: "\f179";
|
354 |
+
@fa-var-windows: "\f17a";
|
355 |
+
@fa-var-android: "\f17b";
|
356 |
+
@fa-var-linux: "\f17c";
|
357 |
+
@fa-var-dribbble: "\f17d";
|
358 |
+
@fa-var-skype: "\f17e";
|
359 |
+
@fa-var-foursquare: "\f180";
|
360 |
+
@fa-var-trello: "\f181";
|
361 |
+
@fa-var-female: "\f182";
|
362 |
+
@fa-var-male: "\f183";
|
363 |
+
@fa-var-gittip: "\f184";
|
364 |
+
@fa-var-sun-o: "\f185";
|
365 |
+
@fa-var-moon-o: "\f186";
|
366 |
+
@fa-var-archive: "\f187";
|
367 |
+
@fa-var-bug: "\f188";
|
368 |
+
@fa-var-vk: "\f189";
|
369 |
+
@fa-var-weibo: "\f18a";
|
370 |
+
@fa-var-renren: "\f18b";
|
371 |
+
@fa-var-pagelines: "\f18c";
|
372 |
+
@fa-var-stack-exchange: "\f18d";
|
373 |
+
@fa-var-arrow-circle-o-right: "\f18e";
|
374 |
+
@fa-var-arrow-circle-o-left: "\f190";
|
375 |
+
@fa-var-caret-square-o-left: "\f191";
|
376 |
+
@fa-var-dot-circle-o: "\f192";
|
377 |
+
@fa-var-wheelchair: "\f193";
|
378 |
+
@fa-var-vimeo-square: "\f194";
|
379 |
+
@fa-var-try: "\f195";
|
380 |
+
@fa-var-plus-square-o: "\f196";
|
381 |
+
|
core/gantry.class.php
CHANGED
@@ -1045,7 +1045,7 @@ class Gantry
|
|
1045 |
$path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
|
1046 |
}
|
1047 |
$filename = strtolower(basename($path, '.css')) . rand(0, 1000);
|
1048 |
-
wp_enqueue_style($filename, $path, array(), '4.0
|
1049 |
$deps[] = $path;
|
1050 |
}
|
1051 |
}
|
@@ -1058,11 +1058,11 @@ class Gantry
|
|
1058 |
if ($this->baseUrl != "/") {
|
1059 |
$path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
|
1060 |
}
|
1061 |
-
wp_enqueue_script($path, $path, $deps, '4.0
|
1062 |
$deps[] = $path;
|
1063 |
}
|
1064 |
foreach ($this->_full_scripts as $strSrc) {
|
1065 |
-
wp_enqueue_script($strSrc, $strSrc, $deps, '4.0
|
1066 |
$deps[] = $strSrc;
|
1067 |
}
|
1068 |
|
@@ -1630,7 +1630,7 @@ class Gantry
|
|
1630 |
if (!defined('GANTRY_FINALIZED')) {
|
1631 |
$this->_styles[$priority][] = $link;
|
1632 |
} else {
|
1633 |
-
wp_enqueue_style($link->getUrl(), $link->getUrl(), array(), '4.0
|
1634 |
}
|
1635 |
}
|
1636 |
}
|
@@ -1734,7 +1734,7 @@ class Gantry
|
|
1734 |
if (!defined('GANTRY_FINALIZED')) {
|
1735 |
$this->_scripts[$full_path] = $check_url_path . $query_string;
|
1736 |
} else {
|
1737 |
-
wp_enqueue_script($check_url_path, $check_url_path, array(), '4.0
|
1738 |
}
|
1739 |
break;
|
1740 |
}
|
@@ -1768,7 +1768,7 @@ class Gantry
|
|
1768 |
if (!defined('GANTRY_FINALIZED')) {
|
1769 |
$this->_scripts[$check_path] = $check_url_path . $query_string;
|
1770 |
} else {
|
1771 |
-
wp_enqueue_script($check_url_path, $check_url_path, array(), '4.0
|
1772 |
}
|
1773 |
break(2);
|
1774 |
}
|
1045 |
$path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
|
1046 |
}
|
1047 |
$filename = strtolower(basename($path, '.css')) . rand(0, 1000);
|
1048 |
+
wp_enqueue_style($filename, $path, array(), '4.1.0');
|
1049 |
$deps[] = $path;
|
1050 |
}
|
1051 |
}
|
1058 |
if ($this->baseUrl != "/") {
|
1059 |
$path = '/' . preg_replace('#^' . quotemeta($this->baseUrl) . '#', "", $path);
|
1060 |
}
|
1061 |
+
wp_enqueue_script($path, $path, $deps, '4.1.0');
|
1062 |
$deps[] = $path;
|
1063 |
}
|
1064 |
foreach ($this->_full_scripts as $strSrc) {
|
1065 |
+
wp_enqueue_script($strSrc, $strSrc, $deps, '4.1.0');
|
1066 |
$deps[] = $strSrc;
|
1067 |
}
|
1068 |
|
1630 |
if (!defined('GANTRY_FINALIZED')) {
|
1631 |
$this->_styles[$priority][] = $link;
|
1632 |
} else {
|
1633 |
+
wp_enqueue_style($link->getUrl(), $link->getUrl(), array(), '4.1.0');
|
1634 |
}
|
1635 |
}
|
1636 |
}
|
1734 |
if (!defined('GANTRY_FINALIZED')) {
|
1735 |
$this->_scripts[$full_path] = $check_url_path . $query_string;
|
1736 |
} else {
|
1737 |
+
wp_enqueue_script($check_url_path, $check_url_path, array(), '4.1.0');
|
1738 |
}
|
1739 |
break;
|
1740 |
}
|
1768 |
if (!defined('GANTRY_FINALIZED')) {
|
1769 |
$this->_scripts[$check_path] = $check_url_path . $query_string;
|
1770 |
} else {
|
1771 |
+
wp_enqueue_script($check_url_path, $check_url_path, array(), '4.1.0');
|
1772 |
}
|
1773 |
break(2);
|
1774 |
}
|
core/gantrybrowser.class.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: gantrybrowser.class.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -159,7 +159,13 @@ class GantryBrowser
|
|
159 |
$result = explode(' ', stristr(str_replace(';', ' ', $this->user_agent), 'msie'));
|
160 |
$this->name = 'ie';
|
161 |
$this->version = $result[1];
|
162 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
elseif (preg_match('/Firefox/', $this->user_agent)) {
|
164 |
$result = explode('/', stristr($this->user_agent, 'Firefox'));
|
165 |
$version = explode(' ', $result[1]);
|
@@ -274,4 +280,4 @@ class GantryBrowser
|
|
274 |
}
|
275 |
|
276 |
|
277 |
-
}
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: gantrybrowser.class.php 60217 2013-11-14 18:24:22Z btowles $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
159 |
$result = explode(' ', stristr(str_replace(';', ' ', $this->user_agent), 'msie'));
|
160 |
$this->name = 'ie';
|
161 |
$this->version = $result[1];
|
162 |
+
}
|
163 |
+
//IE 11+
|
164 |
+
elseif (preg_match('#Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})#i',$this->user_agent,$matches)) {
|
165 |
+
$this->name = 'ie';
|
166 |
+
$this->version = $matches[1];
|
167 |
+
}
|
168 |
+
// Firefox
|
169 |
elseif (preg_match('/Firefox/', $this->user_agent)) {
|
170 |
$result = explode('/', stristr($this->user_agent, 'Firefox'));
|
171 |
$version = explode(' ', $result[1]);
|
280 |
}
|
281 |
|
282 |
|
283 |
+
}
|
core/gantryjson.class.php
CHANGED
@@ -351,7 +351,7 @@ class GantryJSON
|
|
351 |
} while ($position !== false && GantryJSON::_slashedChar($encode, $position -1));
|
352 |
|
353 |
if ($position === false) {
|
354 |
-
//JError::
|
355 |
return false;
|
356 |
}
|
357 |
return $position - $pos;
|
351 |
} while ($position !== false && GantryJSON::_slashedChar($encode, $position -1));
|
352 |
|
353 |
if ($position === false) {
|
354 |
+
//JError::raiseWarning(500, 'Invalid JSON');
|
355 |
return false;
|
356 |
}
|
357 |
return $position - $pos;
|
core/utilities/gantrycache.class.php
CHANGED
@@ -26,7 +26,7 @@ class GantryCache
|
|
26 |
/**
|
27 |
*
|
28 |
*/
|
29 |
-
const ADMIN_GROUP_NAME = 'GantryAdmin-4.0
|
30 |
|
31 |
const ADMIN_LIFETIME = 86400;
|
32 |
|
@@ -122,7 +122,7 @@ class GantryCache
|
|
122 |
$this->cache->addDriver('frontend', new WpTransientCacheDriver($this->group, $this->lifetime));
|
123 |
} elseif (is_admin()) {
|
124 |
// TODO get lifetime for backend cache
|
125 |
-
$this->group = self::ADMIN_GROUP_NAME . '-4.0
|
126 |
$this->cache->addDriver('admin', new WpTransientCacheDriver($this->group, self::ADMIN_LIFETIME));
|
127 |
}
|
128 |
}
|
26 |
/**
|
27 |
*
|
28 |
*/
|
29 |
+
const ADMIN_GROUP_NAME = 'GantryAdmin-4.1.0';
|
30 |
|
31 |
const ADMIN_LIFETIME = 86400;
|
32 |
|
122 |
$this->cache->addDriver('frontend', new WpTransientCacheDriver($this->group, $this->lifetime));
|
123 |
} elseif (is_admin()) {
|
124 |
// TODO get lifetime for backend cache
|
125 |
+
$this->group = self::ADMIN_GROUP_NAME . '-4.1.0';
|
126 |
$this->cache->addDriver('admin', new WpTransientCacheDriver($this->group, self::ADMIN_LIFETIME));
|
127 |
}
|
128 |
}
|
css/gantrydivider.css
CHANGED
@@ -1,11 +1,17 @@
|
|
1 |
/**
|
2 |
-
* @version $Id: gantrydivider.css
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
|
|
7 |
.gantry-divider {background:none;border: 0px solid #f00 !important;}
|
8 |
.gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar.png) 0 50% no-repeat !important;}
|
9 |
-
.gantry-divider .widget-top {border: 0px solid #f00 !important;}
|
|
|
10 |
.gantry-divider .widget-top h4, .gantry-divider .widget-top .widget-title-action, .gantry-divider .widget-inside {display:none !important;}
|
11 |
-
.gantry-divider .widget-title {height:17px;padding:0;background:url(../admin/widgets/images/divider-grab.png) 50% 50% no-repeat;}
|
|
|
|
|
|
|
|
1 |
/**
|
2 |
+
* @version $Id: gantrydivider.css 60286 2013-12-09 23:32:26Z jakub $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
+
|
8 |
.gantry-divider {background:none;border: 0px solid #f00 !important;}
|
9 |
.gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar.png) 0 50% no-repeat !important;}
|
10 |
+
.gantry-divider .widget-top {border: 0px solid #f00 !important; box-shadow: none;}
|
11 |
+
.gantry-divider .widget-top:hover {box-shadow: none !important;}
|
12 |
.gantry-divider .widget-top h4, .gantry-divider .widget-top .widget-title-action, .gantry-divider .widget-inside {display:none !important;}
|
13 |
+
.gantry-divider .widget-title {height:17px;padding:0;background:url(../admin/widgets/images/divider-grab.png) 50% 50% no-repeat;}
|
14 |
+
|
15 |
+
/** WordPress < 3.8 Compatibility **/
|
16 |
+
|
17 |
+
.gantry-pre-mp6 .gantry-divider .widget-top {height:17px;background: transparent url(../admin/widgets/images/divider-bar-old.png) 0 50% no-repeat !important;}
|
functions.php
CHANGED
@@ -168,7 +168,7 @@ function gantry_construct()
|
|
168 |
/**
|
169 |
* @name GANTRY_VERSION
|
170 |
*/
|
171 |
-
define('GANTRY_VERSION', '4.0
|
172 |
|
173 |
|
174 |
if (!defined('DS')) {
|
168 |
/**
|
169 |
* @name GANTRY_VERSION
|
170 |
*/
|
171 |
+
define('GANTRY_VERSION', '4.1.0');
|
172 |
|
173 |
|
174 |
if (!defined('DS')) {
|
gantry.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: gantry.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -10,7 +10,7 @@
|
|
10 |
Plugin Name: Gantry Template Framework
|
11 |
Plugin URI: http://www.gantry-framework.org/
|
12 |
Description: This is a Framework to support easily modifiable themes that are very extensible.
|
13 |
-
Version: 4.0
|
14 |
Author: RocketTheme
|
15 |
Author URI: http://www.rockettheme.com/wordpress
|
16 |
License: http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -58,6 +58,7 @@ if (file_exists($gantry_templatepath)) {
|
|
58 |
|
59 |
} else { // Admin
|
60 |
include(dirname(__FILE__) . '/admin_functions.php');
|
|
|
61 |
add_action('after_setup_theme', 'gantry_admin_init', -9999);
|
62 |
add_action('admin_init', 'gantry_admin_start_buffer', -10000);
|
63 |
add_action('admin_init', 'gantry_admin_register_theme_settings');
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: gantry.php 60282 2013-12-09 12:53:41Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
10 |
Plugin Name: Gantry Template Framework
|
11 |
Plugin URI: http://www.gantry-framework.org/
|
12 |
Description: This is a Framework to support easily modifiable themes that are very extensible.
|
13 |
+
Version: 4.1.0
|
14 |
Author: RocketTheme
|
15 |
Author URI: http://www.rockettheme.com/wordpress
|
16 |
License: http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
58 |
|
59 |
} else { // Admin
|
60 |
include(dirname(__FILE__) . '/admin_functions.php');
|
61 |
+
add_filter('admin_body_class', 'gantry_add_old_ui_class');
|
62 |
add_action('after_setup_theme', 'gantry_admin_init', -9999);
|
63 |
add_action('admin_init', 'gantry_admin_start_buffer', -10000);
|
64 |
add_action('admin_init', 'gantry_admin_register_theme_settings');
|
gizmos/font.php
CHANGED
@@ -96,7 +96,7 @@ class GantryGizmoFont extends GantryGizmo
|
|
96 |
$variant = $variant ? $variant : '';
|
97 |
|
98 |
$protocol = is_ssl() ? 'https' : 'http';
|
99 |
-
$gantry->addStyle("{$protocol}://fonts.googleapis.com/css?family=" . str_replace(" ", "+", $name) . $variant);
|
100 |
$gantry->addInlineStyle("h1, h2 { font-family: '" . $name . "', 'Helvetica', arial, serif; }");
|
101 |
}
|
102 |
|
96 |
$variant = $variant ? $variant : '';
|
97 |
|
98 |
$protocol = is_ssl() ? 'https' : 'http';
|
99 |
+
$gantry->addStyle("{$protocol}://fonts.googleapis.com/css?family=" . str_replace(" ", "+", $name) . "&subset=latin,latin-ext" . $variant);
|
100 |
$gantry->addInlineStyle("h1, h2 { font-family: '" . $name . "', 'Helvetica', arial, serif; }");
|
101 |
}
|
102 |
|
gizmos/pagesuffix.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: pagesuffix.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -25,8 +25,12 @@ class GantryGizmoPageSuffix extends GantryGizmo
|
|
25 |
/** @global $gantry Gantry */
|
26 |
global $gantry;
|
27 |
|
|
|
|
|
28 |
//add body class suffix
|
29 |
-
|
|
|
|
|
30 |
|
31 |
}
|
32 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: pagesuffix.php 60211 2013-11-14 00:02:42Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
25 |
/** @global $gantry Gantry */
|
26 |
global $gantry;
|
27 |
|
28 |
+
$classes = explode(' ', $gantry->get('pagesuffix-class'));
|
29 |
+
|
30 |
//add body class suffix
|
31 |
+
foreach($classes as $class) {
|
32 |
+
$gantry->addBodyClass($class);
|
33 |
+
}
|
34 |
|
35 |
}
|
36 |
|
js/browser-engines.js
ADDED
@@ -0,0 +1,241 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function(){
|
2 |
+
|
3 |
+
var document = this.document;
|
4 |
+
var window = document.window = this;
|
5 |
+
|
6 |
+
var ua = navigator.userAgent.toLowerCase(),
|
7 |
+
platform = navigator.platform.toLowerCase(),
|
8 |
+
UA = ua.match(/(opera|ie|trident|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|rv:(\d.?)|$)/) || [null, 'unknown', 0],
|
9 |
+
mode = (UA[1] == 'ie' || UA[1] == 'trident') && document.documentMode;
|
10 |
+
|
11 |
+
var Browser = this.Browser = {
|
12 |
+
|
13 |
+
extend: Function.prototype.extend,
|
14 |
+
|
15 |
+
name: (UA[1] == 'version') ? UA[3] : (UA[1] == 'trident' ? 'ie' : UA[1]),
|
16 |
+
|
17 |
+
version: mode || parseFloat((UA[1] == 'opera' && UA[4]) ? UA[4] : ((UA[1] == 'trident' && UA[5]) ? UA[5] : UA[2])),
|
18 |
+
|
19 |
+
Platform: {
|
20 |
+
name: ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android)/) || platform.match(/mac|win|linux/) || ['other'])[0]
|
21 |
+
},
|
22 |
+
|
23 |
+
Features: {
|
24 |
+
xpath: !!(document.evaluate),
|
25 |
+
air: !!(window.runtime),
|
26 |
+
query: !!(document.querySelector),
|
27 |
+
json: !!(window.JSON)
|
28 |
+
},
|
29 |
+
|
30 |
+
Plugins: {}
|
31 |
+
|
32 |
+
};
|
33 |
+
|
34 |
+
Browser[Browser.name] = true;
|
35 |
+
Browser[Browser.name + parseInt(Browser.version, 10)] = true;
|
36 |
+
Browser.Platform[Browser.Platform.name] = true;
|
37 |
+
|
38 |
+
// Request
|
39 |
+
|
40 |
+
Browser.Request = (function(){
|
41 |
+
|
42 |
+
var XMLHTTP = function(){
|
43 |
+
return new XMLHttpRequest();
|
44 |
+
};
|
45 |
+
|
46 |
+
var MSXML2 = function(){
|
47 |
+
return new ActiveXObject('MSXML2.XMLHTTP');
|
48 |
+
};
|
49 |
+
|
50 |
+
var MSXML = function(){
|
51 |
+
return new ActiveXObject('Microsoft.XMLHTTP');
|
52 |
+
};
|
53 |
+
|
54 |
+
return Function.attempt(function(){
|
55 |
+
XMLHTTP();
|
56 |
+
return XMLHTTP;
|
57 |
+
}, function(){
|
58 |
+
MSXML2();
|
59 |
+
return MSXML2;
|
60 |
+
}, function(){
|
61 |
+
MSXML();
|
62 |
+
return MSXML;
|
63 |
+
});
|
64 |
+
|
65 |
+
})();
|
66 |
+
|
67 |
+
Browser.Features.xhr = !!(Browser.Request);
|
68 |
+
|
69 |
+
//<1.4compat>
|
70 |
+
|
71 |
+
// Flash detection
|
72 |
+
|
73 |
+
var version = (Function.attempt(function(){
|
74 |
+
return navigator.plugins['Shockwave Flash'].description;
|
75 |
+
}, function(){
|
76 |
+
return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
|
77 |
+
}) || '0 r0').match(/\d+/g);
|
78 |
+
|
79 |
+
Browser.Plugins.Flash = {
|
80 |
+
version: Number(version[0] || '0.' + version[1]) || 0,
|
81 |
+
build: Number(version[2]) || 0
|
82 |
+
};
|
83 |
+
|
84 |
+
//</1.4compat>
|
85 |
+
|
86 |
+
// String scripts
|
87 |
+
|
88 |
+
Browser.exec = function(text){
|
89 |
+
if (!text) return text;
|
90 |
+
if (window.execScript){
|
91 |
+
window.execScript(text);
|
92 |
+
} else {
|
93 |
+
var script = document.createElement('script');
|
94 |
+
script.setAttribute('type', 'text/javascript');
|
95 |
+
script.text = text;
|
96 |
+
document.head.appendChild(script);
|
97 |
+
document.head.removeChild(script);
|
98 |
+
}
|
99 |
+
return text;
|
100 |
+
};
|
101 |
+
|
102 |
+
String.implement('stripScripts', function(exec){
|
103 |
+
var scripts = '';
|
104 |
+
var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(all, code){
|
105 |
+
scripts += code + '\n';
|
106 |
+
return '';
|
107 |
+
});
|
108 |
+
if (exec === true) Browser.exec(scripts);
|
109 |
+
else if (typeOf(exec) == 'function') exec(scripts, text);
|
110 |
+
return text;
|
111 |
+
});
|
112 |
+
|
113 |
+
// Window, Document
|
114 |
+
|
115 |
+
Browser.extend({
|
116 |
+
Document: this.Document,
|
117 |
+
Window: this.Window,
|
118 |
+
Element: this.Element,
|
119 |
+
Event: this.Event
|
120 |
+
});
|
121 |
+
|
122 |
+
this.Window = this.$constructor = new Type('Window', function(){});
|
123 |
+
|
124 |
+
this.$family = Function.from('window').hide();
|
125 |
+
|
126 |
+
Window.mirror(function(name, method){
|
127 |
+
window[name] = method;
|
128 |
+
});
|
129 |
+
|
130 |
+
this.Document = document.$constructor = new Type('Document', function(){});
|
131 |
+
|
132 |
+
document.$family = Function.from('document').hide();
|
133 |
+
|
134 |
+
Document.mirror(function(name, method){
|
135 |
+
document[name] = method;
|
136 |
+
});
|
137 |
+
|
138 |
+
document.html = document.documentElement;
|
139 |
+
if (!document.head) document.head = document.getElementsByTagName('head')[0];
|
140 |
+
|
141 |
+
if (document.execCommand) try {
|
142 |
+
document.execCommand("BackgroundImageCache", false, true);
|
143 |
+
} catch (e){}
|
144 |
+
|
145 |
+
/*<ltIE9>*/
|
146 |
+
if (this.attachEvent && !this.addEventListener){
|
147 |
+
var unloadEvent = function(){
|
148 |
+
this.detachEvent('onunload', unloadEvent);
|
149 |
+
document.head = document.html = document.window = null;
|
150 |
+
};
|
151 |
+
this.attachEvent('onunload', unloadEvent);
|
152 |
+
}
|
153 |
+
|
154 |
+
// IE fails on collections and <select>.options (refers to <select>)
|
155 |
+
var arrayFrom = Array.from;
|
156 |
+
try {
|
157 |
+
arrayFrom(document.html.childNodes);
|
158 |
+
} catch(e){
|
159 |
+
Array.from = function(item){
|
160 |
+
if (typeof item != 'string' && Type.isEnumerable(item) && typeOf(item) != 'array'){
|
161 |
+
var i = item.length, array = new Array(i);
|
162 |
+
while (i--) array[i] = item[i];
|
163 |
+
return array;
|
164 |
+
}
|
165 |
+
return arrayFrom(item);
|
166 |
+
};
|
167 |
+
|
168 |
+
var prototype = Array.prototype,
|
169 |
+
slice = prototype.slice;
|
170 |
+
['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'concat', 'join', 'slice'].each(function(name){
|
171 |
+
var method = prototype[name];
|
172 |
+
Array[name] = function(item){
|
173 |
+
return method.apply(Array.from(item), slice.call(arguments, 1));
|
174 |
+
};
|
175 |
+
});
|
176 |
+
}
|
177 |
+
/*</ltIE9>*/
|
178 |
+
|
179 |
+
//<1.2compat>
|
180 |
+
|
181 |
+
if (Browser.Platform.ios) Browser.Platform.ipod = true;
|
182 |
+
|
183 |
+
Browser.Engine = {};
|
184 |
+
|
185 |
+
var setEngine = function(name, version){
|
186 |
+
Browser.Engine.name = name;
|
187 |
+
Browser.Engine[name + version] = true;
|
188 |
+
Browser.Engine.version = version;
|
189 |
+
};
|
190 |
+
|
191 |
+
if (Browser.ie){
|
192 |
+
Browser.Engine.trident = true;
|
193 |
+
|
194 |
+
switch (Browser.version){
|
195 |
+
case 6: setEngine('trident', 4); break;
|
196 |
+
case 7: setEngine('trident', 5); break;
|
197 |
+
case 8: setEngine('trident', 6);
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
if (Browser.firefox){
|
202 |
+
Browser.Engine.gecko = true;
|
203 |
+
|
204 |
+
if (Browser.version >= 3) setEngine('gecko', 19);
|
205 |
+
else setEngine('gecko', 18);
|
206 |
+
}
|
207 |
+
|
208 |
+
if (Browser.safari || Browser.chrome){
|
209 |
+
Browser.Engine.webkit = true;
|
210 |
+
|
211 |
+
switch (Browser.version){
|
212 |
+
case 2: setEngine('webkit', 419); break;
|
213 |
+
case 3: setEngine('webkit', 420); break;
|
214 |
+
case 4: setEngine('webkit', 525);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
if (Browser.opera){
|
219 |
+
Browser.Engine.presto = true;
|
220 |
+
|
221 |
+
if (Browser.version >= 9.6) setEngine('presto', 960);
|
222 |
+
else if (Browser.version >= 9.5) setEngine('presto', 950);
|
223 |
+
else setEngine('presto', 925);
|
224 |
+
}
|
225 |
+
|
226 |
+
if (Browser.name == 'unknown'){
|
227 |
+
switch ((ua.match(/(?:webkit|khtml|gecko)/) || [])[0]){
|
228 |
+
case 'webkit':
|
229 |
+
case 'khtml':
|
230 |
+
Browser.Engine.webkit = true;
|
231 |
+
break;
|
232 |
+
case 'gecko':
|
233 |
+
Browser.Engine.gecko = true;
|
234 |
+
}
|
235 |
+
}
|
236 |
+
|
237 |
+
this.$exec = Browser.exec;
|
238 |
+
|
239 |
+
//</1.2compat>
|
240 |
+
|
241 |
+
})();
|
libs/google-code-prettify/lang-apollo.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
|
2 |
null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);
|
libs/google-code-prettify/lang-basic.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
var a=null;
|
2 |
+
PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun",
|
3 |
+
/^.[^\s\w"$%.]*/,a]]),["basic","cbm"]);
|
libs/google-code-prettify/lang-clj.js
CHANGED
@@ -14,5 +14,5 @@
|
|
14 |
limitations under the License.
|
15 |
*/
|
16 |
var a=null;
|
17 |
-
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \
|
18 |
["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
|
14 |
limitations under the License.
|
15 |
*/
|
16 |
var a=null;
|
17 |
+
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
|
18 |
["typ",/^:[\dA-Za-z-]+/]]),["clj"]);
|
libs/google-code-prettify/lang-css.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n
|
2 |
-
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
|
2 |
+
["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);
|
libs/google-code-prettify/lang-dart.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
|
2 |
+
["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]),
|
3 |
+
["dart"]);
|
libs/google-code-prettify/lang-erlang.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
|
2 |
+
["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);
|
libs/google-code-prettify/lang-go.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
|
libs/google-code-prettify/lang-hs.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n
|
2 |
null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
|
2 |
null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);
|
libs/google-code-prettify/lang-lisp.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
var a=null;
|
2 |
-
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \
|
3 |
-
["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","scm"]);
|
1 |
var a=null;
|
2 |
+
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
|
3 |
+
["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]);
|
libs/google-code-prettify/lang-llvm.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]);
|
libs/google-code-prettify/lang-lua.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
|
2 |
["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);
|
libs/google-code-prettify/lang-matlab.js
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var a=null,b=window.PR,c=[[b.PR_PLAIN,/^[\t-\r \xa0]+/,a," \t\r\n\u000b\u000c\u00a0"],[b.PR_COMMENT,/^%{[^%]*%+(?:[^%}][^%]*%+)*}/,a],[b.PR_COMMENT,/^%[^\n\r]*/,a,"%"],["syscmd",/^![^\n\r]*/,a,"!"]],d=[["linecont",/^\.\.\.\s*[\n\r]/,a],["err",/^\?\?\? [^\n\r]*/,a],["wrn",/^Warning: [^\n\r]*/,a],["codeoutput",/^>>\s+/,a],["codeoutput",/^octave:\d+>\s+/,a],["lang-matlab-operators",/^((?:[A-Za-z]\w*(?:\.[A-Za-z]\w*)*|[).\]}])')/,a],["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)(?!')/,a],
|
2 |
+
[b.PR_STRING,/^'(?:[^']|'')*'/,a],[b.PR_LITERAL,/^[+-]?\.?\d+(?:\.\d*)?(?:[Ee][+-]?\d+)?[ij]?/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a]],e=[["lang-matlab-identifiers",/^([A-Za-z]\w*(?:\.[A-Za-z]\w*)*)/,a],[b.PR_TAG,/^[()[\]{}]/,a],[b.PR_PUNCTUATION,/^[!&*-/:->@\\^|~]/,a],["transpose",/^'/,a]];
|
3 |
+
b.registerLangHandler(b.createSimpleLexer([],[[b.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,a],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,a],[b.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,a],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan[2dh]?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel[h-ky]|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:[3cf]|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,
|
4 |
+
a],["fun_tbx",/^\b(?:addedvarplot|andrewsplot|anova[12n]|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\b/,
|
5 |
+
a],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
|
6 |
+
a],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,a],["ident",/^[A-Za-z]\w*(?:\.[A-Za-z]\w*)*/,a]]),["matlab-identifiers"]);b.registerLangHandler(b.createSimpleLexer([],e),["matlab-operators"]);b.registerLangHandler(b.createSimpleLexer(c,d),["matlab"]);
|
libs/google-code-prettify/lang-ml.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
|
2 |
["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);
|
libs/google-code-prettify/lang-mumps.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i,
|
2 |
+
null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]);
|
libs/google-code-prettify/lang-n.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
var a=null;
|
2 |
-
PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\
|
3 |
a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
|
4 |
a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
|
1 |
var a=null;
|
2 |
+
PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
|
3 |
a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
|
4 |
a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);
|
libs/google-code-prettify/lang-pascal.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
var a=null;
|
2 |
+
PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a],
|
3 |
+
["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]);
|
libs/google-code-prettify/lang-r.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/],
|
2 |
+
["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
|
libs/google-code-prettify/lang-rd.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]);
|
libs/google-code-prettify/lang-scala.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
|
2 |
["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
|
libs/google-code-prettify/lang-sql.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\w-]|$)/i,
|
2 |
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);
|
libs/google-code-prettify/lang-tcl.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
var a=null;
|
2 |
+
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",
|
3 |
+
/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]);
|
libs/google-code-prettify/lang-tex.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);
|
libs/google-code-prettify/lang-vb.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r
|
2 |
-
null],["com",/^rem.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r
|
2 |
+
null],["com",/^rem\b.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[!#%&@]+])?|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);
|
libs/google-code-prettify/lang-vhdl.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r
|
2 |
null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
|
3 |
["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[box]?"(?:[^"]|"")*"|'.')/i],["com",/^--[^\n\r]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
|
2 |
null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^'(?:active|ascending|base|delayed|driving|driving_value|event|high|image|instance_name|last_active|last_event|last_value|left|leftof|length|low|path_name|pos|pred|quiet|range|reverse_range|right|rightof|simple_name|stable|succ|transaction|val|value)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w.\\]+#(?:[+-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:e[+-]?\d+(?:_\d+)*)?)/i],
|
3 |
["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'\xa0-]*/]]),["vhdl","vhd"]);
|
libs/google-code-prettify/lang-wiki.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t
|
2 |
PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
|
1 |
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\d\t a-gi-z\xa0]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[*=[\]^~]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^[A-Z][a-z][\da-z]+[A-Z][a-z][^\W_]+\b/],["lang-",/^{{{([\S\s]+?)}}}/],["lang-",/^`([^\n\r`]+)`/],["str",/^https?:\/\/[^\s#/?]*(?:\/[^\s#?]*)?(?:\?[^\s#]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\S\s])[^\n\r#*=A-[^`h{~]*/]]),["wiki"]);
|
2 |
PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
|
libs/google-code-prettify/prettify.css
CHANGED
@@ -1,31 +1 @@
|
|
1 |
-
.com {
|
2 |
-
.lit { color: #195f91; }
|
3 |
-
.pun, .opn, .clo { color: #93a1a1; }
|
4 |
-
.fun { color: #dc322f; }
|
5 |
-
.str, .atv { color: #D14; }
|
6 |
-
.kwd, .linenums .tag { color: #1e347b; }
|
7 |
-
.typ, .atn, .dec, .var { color: teal; }
|
8 |
-
.pln { color: #48484c; }
|
9 |
-
|
10 |
-
.prettyprint {
|
11 |
-
padding: 8px;
|
12 |
-
background-color: #f7f7f9;
|
13 |
-
border: 1px solid #e1e1e8;
|
14 |
-
}
|
15 |
-
.prettyprint.linenums {
|
16 |
-
-webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
17 |
-
-moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
18 |
-
box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
19 |
-
}
|
20 |
-
|
21 |
-
/* Specify class=linenums on a pre to get line numbering */
|
22 |
-
ol.linenums {
|
23 |
-
margin: 0 0 0 33px; /* IE indents via margin-left */
|
24 |
-
padding-left: 0;
|
25 |
-
}
|
26 |
-
ol.linenums li {
|
27 |
-
padding-left: 12px;
|
28 |
-
color: #bebec5;
|
29 |
-
line-height: 18px;
|
30 |
-
text-shadow: 0 1px 0 #fff;
|
31 |
-
}
|
1 |
+
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/google-code-prettify/prettify.js
CHANGED
@@ -53,7 +53,10 @@
|
|
53 |
*/
|
54 |
|
55 |
// JSLint declarations
|
56 |
-
/*global console, document, navigator, setTimeout, window */
|
|
|
|
|
|
|
57 |
|
58 |
/**
|
59 |
* Split {@code prettyPrint} into multiple timeouts so as not to interfere with
|
@@ -62,33 +65,57 @@
|
|
62 |
*/
|
63 |
window['PR_SHOULD_USE_CONTINUATION'] = true;
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
(function () {
|
|
|
66 |
// Keyword lists for various languages.
|
67 |
// We use things that coerce to strings to make them compact when minified
|
68 |
// and to defeat aggressive optimizers that fold large string constants.
|
69 |
var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
|
70 |
-
var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
|
71 |
-
"double,enum,extern,float,goto,int,long,register,short,signed,
|
72 |
-
"static,struct,switch,typedef,union,unsigned,void,volatile"];
|
73 |
var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
|
74 |
"new,operator,private,protected,public,this,throw,true,try,typeof"];
|
75 |
var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
|
76 |
-
"concept,concept_map,const_cast,constexpr,decltype," +
|
77 |
-
"dynamic_cast,explicit,export,friend,
|
78 |
-
"mutable,namespace,nullptr,reinterpret_cast,static_assert,
|
79 |
-
"template,typeid,typename,using,virtual,where"];
|
80 |
var JAVA_KEYWORDS = [COMMON_KEYWORDS,
|
81 |
-
"abstract,boolean,byte,extends,final,finally,implements,import," +
|
82 |
-
"instanceof,null,native,package,strictfp,super,synchronized,
|
83 |
-
"transient"];
|
84 |
var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
|
85 |
"as,base,by,checked,decimal,delegate,descending,dynamic,event," +
|
86 |
-
"fixed,foreach,from,group,implicit,in,
|
87 |
-
"object,out,override,orderby,params,partial,readonly,ref,sbyte,
|
88 |
-
"stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,
|
|
|
89 |
var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
|
90 |
"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
|
91 |
-
"true,try,unless,until,when,while,yes";
|
92 |
var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
|
93 |
"debugger,eval,export,function,get,null,set,undefined,var,with," +
|
94 |
"Infinity,NaN"];
|
@@ -103,12 +130,15 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
|
|
103 |
"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
|
104 |
"rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
|
105 |
"BEGIN,END"];
|
|
|
|
|
|
|
106 |
var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
|
107 |
"function,in,local,set,then,until"];
|
108 |
var ALL_KEYWORDS = [
|
109 |
-
CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS
|
110 |
PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
|
111 |
-
var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
|
112 |
|
113 |
// token style names. correspond to css classes
|
114 |
/**
|
@@ -142,7 +172,7 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
|
|
142 |
*/
|
143 |
var PR_PUNCTUATION = 'pun';
|
144 |
/**
|
145 |
-
* token style for
|
146 |
* @const
|
147 |
*/
|
148 |
var PR_PLAIN = 'pln';
|
@@ -180,35 +210,34 @@ window['PR_SHOULD_USE_CONTINUATION'] = true;
|
|
180 |
*/
|
181 |
var PR_NOCODE = 'nocode';
|
182 |
|
183 |
-
|
184 |
-
|
185 |
-
/**
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]
|
205 |
-
|
206 |
-
// CAVEAT: this does not properly handle the case where a regular
|
207 |
-
// expression immediately follows another since a regular expression may
|
208 |
-
// have flags for case-sensitivity and the like. Having regexp tokens
|
209 |
-
// adjacent is not valid in any language I'm aware of, so I'm punting.
|
210 |
-
// TODO: maybe style special characters inside a regexp as punctuation.
|
211 |
-
|
212 |
|
213 |
/**
|
214 |
* Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
|
@@ -220,7 +249,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
220 |
*/
|
221 |
function combinePrefixPatterns(regexs) {
|
222 |
var capturedGroupIndex = 0;
|
223 |
-
|
224 |
var needToFoldCase = false;
|
225 |
var ignoreCase = false;
|
226 |
for (var i = 0, n = regexs.length; i < n; ++i) {
|
@@ -234,7 +263,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
234 |
break;
|
235 |
}
|
236 |
}
|
237 |
-
|
238 |
var escapeCharToCodeUnit = {
|
239 |
'b': 8,
|
240 |
't': 9,
|
@@ -243,7 +272,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
243 |
'f': 0xc,
|
244 |
'r': 0xd
|
245 |
};
|
246 |
-
|
247 |
function decodeEscape(charsetPart) {
|
248 |
var cc0 = charsetPart.charCodeAt(0);
|
249 |
if (cc0 !== 92 /* \\ */) {
|
@@ -261,18 +290,16 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
261 |
return charsetPart.charCodeAt(1);
|
262 |
}
|
263 |
}
|
264 |
-
|
265 |
function encodeEscape(charCode) {
|
266 |
if (charCode < 0x20) {
|
267 |
return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
|
268 |
}
|
269 |
var ch = String.fromCharCode(charCode);
|
270 |
-
|
271 |
-
|
272 |
-
}
|
273 |
-
return ch;
|
274 |
}
|
275 |
-
|
276 |
function caseFoldCharset(charSet) {
|
277 |
var charsetParts = charSet.substring(1, charSet.length - 1).match(
|
278 |
new RegExp(
|
@@ -284,13 +311,16 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
284 |
+ '|-'
|
285 |
+ '|[^-\\\\]',
|
286 |
'g'));
|
287 |
-
var groups = [];
|
288 |
var ranges = [];
|
289 |
var inverse = charsetParts[0] === '^';
|
|
|
|
|
|
|
|
|
290 |
for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
|
291 |
var p = charsetParts[i];
|
292 |
if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
|
293 |
-
|
294 |
} else {
|
295 |
var start = decodeEscape(p);
|
296 |
var end;
|
@@ -315,12 +345,12 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
315 |
}
|
316 |
}
|
317 |
}
|
318 |
-
|
319 |
// [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
|
320 |
// -> [[1, 12], [14, 14], [16, 17]]
|
321 |
ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
|
322 |
var consolidatedRanges = [];
|
323 |
-
var lastRange = [
|
324 |
for (var i = 0; i < ranges.length; ++i) {
|
325 |
var range = ranges[i];
|
326 |
if (range[0] <= lastRange[1] + 1) {
|
@@ -329,10 +359,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
329 |
consolidatedRanges.push(lastRange = range);
|
330 |
}
|
331 |
}
|
332 |
-
|
333 |
-
var out = ['['];
|
334 |
-
if (inverse) { out.push('^'); }
|
335 |
-
out.push.apply(out, groups);
|
336 |
for (var i = 0; i < consolidatedRanges.length; ++i) {
|
337 |
var range = consolidatedRanges[i];
|
338 |
out.push(encodeEscape(range[0]));
|
@@ -344,7 +371,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
344 |
out.push(']');
|
345 |
return out.join('');
|
346 |
}
|
347 |
-
|
348 |
function allowAnywhereFoldCaseAndRenumberGroups(regex) {
|
349 |
// Split into character sets, escape sequences, punctuation strings
|
350 |
// like ('(', '(?:', ')', '^'), and runs of characters that do not
|
@@ -358,17 +385,17 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
358 |
+ '|\\\\[0-9]+' // a back-reference or octal escape
|
359 |
+ '|\\\\[^ux0-9]' // other escape sequence
|
360 |
+ '|\\(\\?[:!=]' // start of a non-capturing group
|
361 |
-
+ '|[\\(\\)\\^]' // start/
|
362 |
+ '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
|
363 |
+ ')',
|
364 |
'g'));
|
365 |
var n = parts.length;
|
366 |
-
|
367 |
// Maps captured group numbers to the number they will occupy in
|
368 |
// the output or to -1 if that has not been determined, or to
|
369 |
// undefined if they need not be capturing in the output.
|
370 |
var capturedGroups = [];
|
371 |
-
|
372 |
// Walk over and identify back references to build the capturedGroups
|
373 |
// mapping.
|
374 |
for (var i = 0, groupIndex = 0; i < n; ++i) {
|
@@ -378,12 +405,19 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
378 |
++groupIndex;
|
379 |
} else if ('\\' === p.charAt(0)) {
|
380 |
var decimalValue = +p.substring(1);
|
381 |
-
if (decimalValue
|
382 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
383 |
}
|
384 |
}
|
385 |
}
|
386 |
-
|
387 |
// Renumber groups and reduce capturing groups to non-capturing groups
|
388 |
// where possible.
|
389 |
for (var i = 1; i < capturedGroups.length; ++i) {
|
@@ -395,23 +429,23 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
395 |
var p = parts[i];
|
396 |
if (p === '(') {
|
397 |
++groupIndex;
|
398 |
-
if (capturedGroups[groupIndex]
|
399 |
parts[i] = '(?:';
|
400 |
}
|
401 |
} else if ('\\' === p.charAt(0)) {
|
402 |
var decimalValue = +p.substring(1);
|
403 |
if (decimalValue && decimalValue <= groupIndex) {
|
404 |
-
parts[i] = '\\' + capturedGroups[
|
405 |
}
|
406 |
}
|
407 |
}
|
408 |
-
|
409 |
// Remove any prefix anchors so that the output will match anywhere.
|
410 |
// ^^ really does mean an anchored match though.
|
411 |
-
for (var i = 0
|
412 |
if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
|
413 |
}
|
414 |
-
|
415 |
// Expand letters to groups to handle mixing of case-sensitive and
|
416 |
// case-insensitive patterns if necessary.
|
417 |
if (regex.ignoreCase && needToFoldCase) {
|
@@ -431,10 +465,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
431 |
}
|
432 |
}
|
433 |
}
|
434 |
-
|
435 |
return parts.join('');
|
436 |
}
|
437 |
-
|
438 |
var rewritten = [];
|
439 |
for (var i = 0, n = regexs.length; i < n; ++i) {
|
440 |
var regex = regexs[i];
|
@@ -442,11 +476,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
442 |
rewritten.push(
|
443 |
'(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
|
444 |
}
|
445 |
-
|
446 |
return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
|
447 |
}
|
448 |
|
449 |
-
|
450 |
/**
|
451 |
* Split markup into a string of source code and an array mapping ranges in
|
452 |
* that string to the text nodes in which they appear.
|
@@ -470,8 +503,8 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
470 |
* <pre>
|
471 |
* {
|
472 |
* sourceCode: "print 'Hello '\n + 'World';",
|
473 |
-
* //
|
474 |
-
* //
|
475 |
* spans: [0, #1, 6, #2, 14, #3, 15, #4]
|
476 |
* }
|
477 |
* </pre>
|
@@ -488,66 +521,56 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
488 |
* </p>
|
489 |
*
|
490 |
* @param {Node} node an HTML DOM subtree containing source-code.
|
|
|
|
|
491 |
* @return {Object} source code and the text nodes in which they occur.
|
492 |
*/
|
493 |
-
function extractSourceSpans(node) {
|
494 |
var nocode = /(?:^|\s)nocode(?:\s|$)/;
|
495 |
-
|
496 |
var chunks = [];
|
497 |
var length = 0;
|
498 |
var spans = [];
|
499 |
var k = 0;
|
500 |
-
|
501 |
-
var whitespace;
|
502 |
-
if (node.currentStyle) {
|
503 |
-
whitespace = node.currentStyle.whiteSpace;
|
504 |
-
} else if (window.getComputedStyle) {
|
505 |
-
whitespace = document.defaultView.getComputedStyle(node, null)
|
506 |
-
.getPropertyValue('white-space');
|
507 |
-
}
|
508 |
-
var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
|
509 |
-
|
510 |
function walk(node) {
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
if (
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
|
531 |
-
}
|
532 |
-
// TODO: handle tabs here?
|
533 |
-
chunks[k] = text;
|
534 |
-
spans[k << 1] = length;
|
535 |
-
length += text.length;
|
536 |
-
spans[(k++ << 1) | 1] = node;
|
537 |
}
|
538 |
-
|
|
|
|
|
|
|
|
|
|
|
539 |
}
|
540 |
}
|
541 |
-
|
542 |
walk(node);
|
543 |
-
|
544 |
return {
|
545 |
sourceCode: chunks.join('').replace(/\n$/, ''),
|
546 |
spans: spans
|
547 |
};
|
548 |
}
|
549 |
|
550 |
-
|
551 |
/**
|
552 |
* Apply the given language handler to sourceCode and add the resulting
|
553 |
* decorations to out.
|
@@ -812,12 +835,13 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
812 |
} else {
|
813 |
// Stop C preprocessor declarations at an unclosed open comment
|
814 |
shortcutStylePatterns.push(
|
815 |
-
[PR_COMMENT, /^#(?:(?:define|
|
816 |
null, '#']);
|
817 |
}
|
|
|
818 |
fallthroughStylePatterns.push(
|
819 |
[PR_STRING,
|
820 |
-
/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
|
821 |
null]);
|
822 |
} else {
|
823 |
shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
|
@@ -828,7 +852,18 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
828 |
fallthroughStylePatterns.push(
|
829 |
[PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
|
830 |
}
|
831 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
832 |
/**
|
833 |
* @const
|
834 |
*/
|
@@ -836,18 +871,19 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
836 |
// A regular expression literal starts with a slash that is
|
837 |
// not followed by * or / so that it is not confused with
|
838 |
// comments.
|
839 |
-
'/(?=[^/*])'
|
840 |
// and then contains any number of raw characters,
|
841 |
-
+ '(?:[^/\\x5B\\x5C]'
|
842 |
// escape sequences (\x5C),
|
843 |
-
+ '|\\x5C
|
844 |
// or non-nesting character sets (\x5B\x5D);
|
845 |
-
+ '|\\x5B(?:[^\\x5C\\x5D
|
|
|
846 |
// finally closed by a /.
|
847 |
+ '/');
|
848 |
fallthroughStylePatterns.push(
|
849 |
['lang-regex',
|
850 |
-
|
851 |
]);
|
852 |
}
|
853 |
|
@@ -865,6 +901,48 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
865 |
}
|
866 |
|
867 |
shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
868 |
fallthroughStylePatterns.push(
|
869 |
// TODO(mikesamuel): recognize non-latin letters and numerals in idents
|
870 |
[PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
|
@@ -883,9 +961,10 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
883 |
// with an optional modifier like UL for unsigned long
|
884 |
+ '[a-z]*', 'i'),
|
885 |
null, '0123456789'],
|
886 |
-
// Don't treat escaped quotes in bash as starting strings.
|
|
|
887 |
[PR_PLAIN, /^\\[\s\S]?/, null],
|
888 |
-
[PR_PUNCTUATION,
|
889 |
|
890 |
return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
|
891 |
}
|
@@ -906,72 +985,58 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
906 |
* HTMLOListElement, and each line is moved into a separate list item.
|
907 |
* This requires cloning elements, so the input might not have unique
|
908 |
* IDs after numbering.
|
|
|
|
|
909 |
*/
|
910 |
-
function numberLines(node, opt_startLineNum) {
|
911 |
var nocode = /(?:^|\s)nocode(?:\s|$)/;
|
912 |
var lineBreak = /\r\n?|\n/;
|
913 |
-
|
914 |
var document = node.ownerDocument;
|
915 |
-
|
916 |
-
var
|
917 |
-
if (node.currentStyle) {
|
918 |
-
whitespace = node.currentStyle.whiteSpace;
|
919 |
-
} else if (window.getComputedStyle) {
|
920 |
-
whitespace = document.defaultView.getComputedStyle(node, null)
|
921 |
-
.getPropertyValue('white-space');
|
922 |
-
}
|
923 |
-
// If it's preformatted, then we need to split lines on line breaks
|
924 |
-
// in addition to <BR>s.
|
925 |
-
var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
|
926 |
-
|
927 |
-
var li = document.createElement('LI');
|
928 |
while (node.firstChild) {
|
929 |
li.appendChild(node.firstChild);
|
930 |
}
|
931 |
// An array of lines. We split below, so this is initialized to one
|
932 |
// un-split line.
|
933 |
var listItems = [li];
|
934 |
-
|
935 |
function walk(node) {
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
node.parentNode.removeChild(node);
|
944 |
-
}
|
945 |
-
} else {
|
946 |
-
for (var child = node.firstChild; child; child = child.nextSibling) {
|
947 |
-
walk(child);
|
948 |
-
}
|
949 |
}
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
var text = node.nodeValue;
|
954 |
-
var match = text.match(lineBreak);
|
955 |
-
if (match) {
|
956 |
-
var firstLine = text.substring(0, match.index);
|
957 |
-
node.nodeValue = firstLine;
|
958 |
-
var tail = text.substring(match.index + match[0].length);
|
959 |
-
if (tail) {
|
960 |
-
var parent = node.parentNode;
|
961 |
-
parent.insertBefore(
|
962 |
-
document.createTextNode(tail), node.nextSibling);
|
963 |
-
}
|
964 |
-
breakAfter(node);
|
965 |
-
if (!firstLine) {
|
966 |
-
// Don't leave blank text nodes in the DOM.
|
967 |
-
node.parentNode.removeChild(node);
|
968 |
-
}
|
969 |
-
}
|
970 |
}
|
971 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
972 |
}
|
973 |
}
|
974 |
-
|
975 |
// Split a line after the given node.
|
976 |
function breakAfter(lineEndNode) {
|
977 |
// If there's nothing to the right, then we can skip ending the line
|
@@ -981,7 +1046,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
981 |
lineEndNode = lineEndNode.parentNode;
|
982 |
if (!lineEndNode) { return; }
|
983 |
}
|
984 |
-
|
985 |
function breakLeftOf(limit, copy) {
|
986 |
// Clone shallowly if this node needs to be on both sides of the break.
|
987 |
var rightSide = copy ? limit.cloneNode(false) : limit;
|
@@ -1003,9 +1068,9 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1003 |
}
|
1004 |
return rightSide;
|
1005 |
}
|
1006 |
-
|
1007 |
var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
|
1008 |
-
|
1009 |
// Walk the parent chain until we reach an unattached LI.
|
1010 |
for (var parent;
|
1011 |
// Check nodeType since IE invents document fragments.
|
@@ -1015,20 +1080,20 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1015 |
// Put it on the list of lines for later processing.
|
1016 |
listItems.push(copiedListItem);
|
1017 |
}
|
1018 |
-
|
1019 |
// Split lines while there are lines left to split.
|
1020 |
for (var i = 0; // Number of lines that have been split so far.
|
1021 |
i < listItems.length; // length updated by breakAfter calls.
|
1022 |
++i) {
|
1023 |
walk(listItems[i]);
|
1024 |
}
|
1025 |
-
|
1026 |
// Make sure numeric indices show correctly.
|
1027 |
if (opt_startLineNum === (opt_startLineNum|0)) {
|
1028 |
listItems[0].setAttribute('value', opt_startLineNum);
|
1029 |
}
|
1030 |
-
|
1031 |
-
var ol = document.createElement('
|
1032 |
ol.className = 'linenums';
|
1033 |
var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
|
1034 |
for (var i = 0, n = listItems.length; i < n; ++i) {
|
@@ -1042,15 +1107,15 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1042 |
}
|
1043 |
ol.appendChild(li);
|
1044 |
}
|
1045 |
-
|
1046 |
node.appendChild(ol);
|
1047 |
}
|
1048 |
-
|
1049 |
/**
|
1050 |
* Breaks {@code job.sourceCode} around style boundaries in
|
1051 |
* {@code job.decorations} and modifies {@code job.sourceNode} in place.
|
1052 |
* @param {Object} job like <pre>{
|
1053 |
* sourceCode: {string} source as plain text,
|
|
|
1054 |
* spans: {Array.<number|Node>} alternating span start indices into source
|
1055 |
* and the text node or element (e.g. {@code <BR>}) corresponding to that
|
1056 |
* span.
|
@@ -1060,25 +1125,26 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1060 |
* @private
|
1061 |
*/
|
1062 |
function recombineTagsAndDecorations(job) {
|
1063 |
-
var
|
|
|
1064 |
var newlineRe = /\n/g;
|
1065 |
-
|
1066 |
var source = job.sourceCode;
|
1067 |
var sourceLength = source.length;
|
1068 |
// Index into source after the last code-unit recombined.
|
1069 |
var sourceIndex = 0;
|
1070 |
-
|
1071 |
var spans = job.spans;
|
1072 |
var nSpans = spans.length;
|
1073 |
// Index into spans after the last span which ends at or before sourceIndex.
|
1074 |
var spanIndex = 0;
|
1075 |
-
|
1076 |
var decorations = job.decorations;
|
1077 |
var nDecorations = decorations.length;
|
1078 |
// Index into decorations after the last decoration which ends at or before
|
1079 |
// sourceIndex.
|
1080 |
var decorationIndex = 0;
|
1081 |
-
|
1082 |
// Remove all zero-length decorations.
|
1083 |
decorations[nDecorations] = sourceLength;
|
1084 |
var decPos, i;
|
@@ -1091,7 +1157,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1091 |
}
|
1092 |
}
|
1093 |
nDecorations = decPos;
|
1094 |
-
|
1095 |
// Simplify decorations.
|
1096 |
for (i = decPos = 0; i < nDecorations;) {
|
1097 |
var startPos = decorations[i];
|
@@ -1105,57 +1171,69 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1105 |
decorations[decPos++] = startDec;
|
1106 |
i = end;
|
1107 |
}
|
1108 |
-
|
1109 |
nDecorations = decorations.length = decPos;
|
1110 |
-
|
1111 |
-
var
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1144 |
}
|
1145 |
}
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
if (sourceIndex >= spanEnd) {
|
1150 |
-
spanIndex += 2;
|
1151 |
-
}
|
1152 |
-
if (sourceIndex >= decEnd) {
|
1153 |
-
decorationIndex += 2;
|
1154 |
}
|
1155 |
}
|
1156 |
}
|
1157 |
|
1158 |
-
|
1159 |
/** Maps language-specific file extensions to handlers. */
|
1160 |
var langHandlerRegistry = {};
|
1161 |
/** Register a language handler for the given file extensions.
|
@@ -1179,7 +1257,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1179 |
var ext = fileExtensions[i];
|
1180 |
if (!langHandlerRegistry.hasOwnProperty(ext)) {
|
1181 |
langHandlerRegistry[ext] = handler;
|
1182 |
-
} else if (
|
1183 |
console['warn']('cannot override language handler %s', ext);
|
1184 |
}
|
1185 |
}
|
@@ -1199,7 +1277,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1199 |
createSimpleLexer(
|
1200 |
[],
|
1201 |
[
|
1202 |
-
[PR_PLAIN, /^[
|
1203 |
[PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
|
1204 |
[PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
|
1205 |
// Unescaped content in an unknown language
|
@@ -1259,30 +1337,30 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1259 |
'keywords': SH_KEYWORDS,
|
1260 |
'hashComments': true,
|
1261 |
'multiLineStrings': true
|
1262 |
-
}), ['bsh', 'csh', 'sh']);
|
1263 |
registerLangHandler(sourceDecorator({
|
1264 |
'keywords': PYTHON_KEYWORDS,
|
1265 |
'hashComments': true,
|
1266 |
'multiLineStrings': true,
|
1267 |
'tripleQuotedStrings': true
|
1268 |
-
}), ['cv', 'py']);
|
1269 |
registerLangHandler(sourceDecorator({
|
1270 |
'keywords': PERL_KEYWORDS,
|
1271 |
'hashComments': true,
|
1272 |
'multiLineStrings': true,
|
1273 |
-
'regexLiterals':
|
1274 |
}), ['perl', 'pl', 'pm']);
|
1275 |
registerLangHandler(sourceDecorator({
|
1276 |
'keywords': RUBY_KEYWORDS,
|
1277 |
'hashComments': true,
|
1278 |
'multiLineStrings': true,
|
1279 |
'regexLiterals': true
|
1280 |
-
}), ['rb']);
|
1281 |
registerLangHandler(sourceDecorator({
|
1282 |
'keywords': JSCRIPT_KEYWORDS,
|
1283 |
'cStyleComments': true,
|
1284 |
'regexLiterals': true
|
1285 |
-
}), ['js']);
|
1286 |
registerLangHandler(sourceDecorator({
|
1287 |
'keywords': COFFEE_KEYWORDS,
|
1288 |
'hashComments': 3, // ### style block comments
|
@@ -1291,14 +1369,20 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1291 |
'tripleQuotedStrings': true,
|
1292 |
'regexLiterals': true
|
1293 |
}), ['coffee']);
|
1294 |
-
registerLangHandler(
|
|
|
|
|
|
|
|
|
|
|
|
|
1295 |
|
1296 |
function applyDecorator(job) {
|
1297 |
var opt_langExtension = job.langExtension;
|
1298 |
|
1299 |
try {
|
1300 |
// Extract tags, and convert the source code to plain text.
|
1301 |
-
var sourceAndSpans = extractSourceSpans(job.sourceNode);
|
1302 |
/** Plain text. @type {string} */
|
1303 |
var source = sourceAndSpans.sourceCode;
|
1304 |
job.sourceCode = source;
|
@@ -1312,40 +1396,58 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1312 |
// modifying the sourceNode in place.
|
1313 |
recombineTagsAndDecorations(job);
|
1314 |
} catch (e) {
|
1315 |
-
if ('console'
|
1316 |
-
console['log'](e && e['stack']
|
1317 |
}
|
1318 |
}
|
1319 |
}
|
1320 |
|
1321 |
/**
|
|
|
1322 |
* @param sourceCodeHtml {string} The HTML to pretty print.
|
1323 |
* @param opt_langExtension {string} The language name to use.
|
1324 |
* Typically, a filename extension like 'cpp' or 'java'.
|
1325 |
* @param opt_numberLines {number|boolean} True to number lines,
|
1326 |
* or the 1-indexed number of the first line in sourceCodeHtml.
|
1327 |
*/
|
1328 |
-
function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
|
1329 |
-
var container = document.createElement('
|
1330 |
// This could cause images to load and onload listeners to fire.
|
1331 |
// E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
|
1332 |
// We assume that the inner HTML is from a trusted source.
|
1333 |
-
|
|
|
|
|
|
|
|
|
|
|
1334 |
if (opt_numberLines) {
|
1335 |
-
numberLines(container, opt_numberLines);
|
1336 |
}
|
1337 |
|
1338 |
var job = {
|
1339 |
langExtension: opt_langExtension,
|
1340 |
numberLines: opt_numberLines,
|
1341 |
-
sourceNode: container
|
|
|
1342 |
};
|
1343 |
applyDecorator(job);
|
1344 |
return container.innerHTML;
|
1345 |
}
|
1346 |
|
1347 |
-
|
1348 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1349 |
// fetch a list of nodes to rewrite
|
1350 |
var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
|
1351 |
var elements = [];
|
@@ -1368,59 +1470,124 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1368 |
|
1369 |
var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
|
1370 |
var prettyPrintRe = /\bprettyprint\b/;
|
|
|
|
|
|
|
|
|
|
|
1371 |
|
1372 |
function doWork() {
|
1373 |
-
var endTime = (
|
1374 |
clock['now']() + 250 /* ms */ :
|
1375 |
Infinity);
|
1376 |
for (; k < elements.length && clock['now']() < endTime; k++) {
|
1377 |
var cs = elements[k];
|
1378 |
-
var className = cs.className;
|
1379 |
-
if (className.indexOf('prettyprint') >= 0) {
|
1380 |
-
// If the classes includes a language extensions, use it.
|
1381 |
-
// Language extensions can be specified like
|
1382 |
-
// <pre class="prettyprint lang-cpp">
|
1383 |
-
// the language extension "cpp" is used to find a language handler as
|
1384 |
-
// passed to PR.registerLangHandler.
|
1385 |
-
// HTML5 recommends that a language be specified using "language-"
|
1386 |
-
// as the prefix instead. Google Code Prettify supports both.
|
1387 |
-
// http://dev.w3.org/html5/spec-author-view/the-code-element.html
|
1388 |
-
var langExtension = className.match(langExtensionRe);
|
1389 |
-
// Support <pre class="prettyprint"><code class="language-c">
|
1390 |
-
var wrapper;
|
1391 |
-
if (!langExtension && (wrapper = childContentWrapper(cs))
|
1392 |
-
&& "CODE" === wrapper.tagName) {
|
1393 |
-
langExtension = wrapper.className.match(langExtensionRe);
|
1394 |
-
}
|
1395 |
|
1396 |
-
|
1397 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1398 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1399 |
|
1400 |
// make sure this is not nested in an already prettified element
|
1401 |
var nested = false;
|
1402 |
for (var p = cs.parentNode; p; p = p.parentNode) {
|
1403 |
-
|
1404 |
-
|
1405 |
-
p.className && p.className
|
1406 |
nested = true;
|
1407 |
break;
|
1408 |
}
|
1409 |
}
|
1410 |
if (!nested) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1411 |
// Look for a class like linenums or linenums:<n> where <n> is the
|
1412 |
// 1-indexed number of the first line.
|
1413 |
-
var lineNums =
|
1414 |
-
lineNums = lineNums
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
|
|
|
|
|
|
|
|
|
|
1418 |
|
1419 |
// do the pretty printing
|
1420 |
prettyPrintingJob = {
|
1421 |
langExtension: langExtension,
|
1422 |
sourceNode: cs,
|
1423 |
-
numberLines: lineNums
|
|
|
1424 |
};
|
1425 |
applyDecorator(prettyPrintingJob);
|
1426 |
}
|
@@ -1429,7 +1596,7 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1429 |
if (k < elements.length) {
|
1430 |
// finish up in a continuation
|
1431 |
setTimeout(doWork, 250);
|
1432 |
-
} else if (opt_whenDone) {
|
1433 |
opt_whenDone();
|
1434 |
}
|
1435 |
}
|
@@ -1437,26 +1604,11 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1437 |
doWork();
|
1438 |
}
|
1439 |
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
* has been finished.
|
1446 |
-
*/
|
1447 |
-
window['prettyPrintOne'] = prettyPrintOne;
|
1448 |
-
/**
|
1449 |
-
* Pretty print a chunk of code.
|
1450 |
-
*
|
1451 |
-
* @param {string} sourceCodeHtml code as html
|
1452 |
-
* @return {string} code as html, but prettier
|
1453 |
-
*/
|
1454 |
-
window['prettyPrint'] = prettyPrint;
|
1455 |
-
/**
|
1456 |
-
* Contains functions for creating and registering new language handlers.
|
1457 |
-
* @type {Object}
|
1458 |
-
*/
|
1459 |
-
window['PR'] = {
|
1460 |
'createSimpleLexer': createSimpleLexer,
|
1461 |
'registerLangHandler': registerLangHandler,
|
1462 |
'sourceDecorator': sourceDecorator,
|
@@ -1472,6 +1624,32 @@ var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&
|
|
1472 |
'PR_SOURCE': PR_SOURCE,
|
1473 |
'PR_STRING': PR_STRING,
|
1474 |
'PR_TAG': PR_TAG,
|
1475 |
-
'PR_TYPE': PR_TYPE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1476 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1477 |
})();
|
53 |
*/
|
54 |
|
55 |
// JSLint declarations
|
56 |
+
/*global console, document, navigator, setTimeout, window, define */
|
57 |
+
|
58 |
+
/** @define {boolean} */
|
59 |
+
var IN_GLOBAL_SCOPE = true;
|
60 |
|
61 |
/**
|
62 |
* Split {@code prettyPrint} into multiple timeouts so as not to interfere with
|
65 |
*/
|
66 |
window['PR_SHOULD_USE_CONTINUATION'] = true;
|
67 |
|
68 |
+
/**
|
69 |
+
* Pretty print a chunk of code.
|
70 |
+
* @param {string} sourceCodeHtml The HTML to pretty print.
|
71 |
+
* @param {string} opt_langExtension The language name to use.
|
72 |
+
* Typically, a filename extension like 'cpp' or 'java'.
|
73 |
+
* @param {number|boolean} opt_numberLines True to number lines,
|
74 |
+
* or the 1-indexed number of the first line in sourceCodeHtml.
|
75 |
+
* @return {string} code as html, but prettier
|
76 |
+
*/
|
77 |
+
var prettyPrintOne;
|
78 |
+
/**
|
79 |
+
* Find all the {@code <pre>} and {@code <code>} tags in the DOM with
|
80 |
+
* {@code class=prettyprint} and prettify them.
|
81 |
+
*
|
82 |
+
* @param {Function} opt_whenDone called when prettifying is done.
|
83 |
+
* @param {HTMLElement|HTMLDocument} opt_root an element or document
|
84 |
+
* containing all the elements to pretty print.
|
85 |
+
* Defaults to {@code document.body}.
|
86 |
+
*/
|
87 |
+
var prettyPrint;
|
88 |
+
|
89 |
+
|
90 |
(function () {
|
91 |
+
var win = window;
|
92 |
// Keyword lists for various languages.
|
93 |
// We use things that coerce to strings to make them compact when minified
|
94 |
// and to defeat aggressive optimizers that fold large string constants.
|
95 |
var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
|
96 |
+
var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
|
97 |
+
"double,enum,extern,float,goto,inline,int,long,register,short,signed," +
|
98 |
+
"sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
|
99 |
var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
|
100 |
"new,operator,private,protected,public,this,throw,true,try,typeof"];
|
101 |
var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
|
102 |
+
"concept,concept_map,const_cast,constexpr,decltype,delegate," +
|
103 |
+
"dynamic_cast,explicit,export,friend,generic,late_check," +
|
104 |
+
"mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
|
105 |
+
"static_cast,template,typeid,typename,using,virtual,where"];
|
106 |
var JAVA_KEYWORDS = [COMMON_KEYWORDS,
|
107 |
+
"abstract,assert,boolean,byte,extends,final,finally,implements,import," +
|
108 |
+
"instanceof,interface,null,native,package,strictfp,super,synchronized," +
|
109 |
+
"throws,transient"];
|
110 |
var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
|
111 |
"as,base,by,checked,decimal,delegate,descending,dynamic,event," +
|
112 |
+
"fixed,foreach,from,group,implicit,in,internal,into,is,let," +
|
113 |
+
"lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
|
114 |
+
"sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
|
115 |
+
"var,virtual,where"];
|
116 |
var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
|
117 |
"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
|
118 |
+
"throw,true,try,unless,until,when,while,yes";
|
119 |
var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
|
120 |
"debugger,eval,export,function,get,null,set,undefined,var,with," +
|
121 |
"Infinity,NaN"];
|
130 |
"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
|
131 |
"rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
|
132 |
"BEGIN,END"];
|
133 |
+
var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
|
134 |
+
"enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
|
135 |
+
"pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
|
136 |
var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
|
137 |
"function,in,local,set,then,until"];
|
138 |
var ALL_KEYWORDS = [
|
139 |
+
CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
|
140 |
PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
|
141 |
+
var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
|
142 |
|
143 |
// token style names. correspond to css classes
|
144 |
/**
|
172 |
*/
|
173 |
var PR_PUNCTUATION = 'pun';
|
174 |
/**
|
175 |
+
* token style for plain text.
|
176 |
* @const
|
177 |
*/
|
178 |
var PR_PLAIN = 'pln';
|
210 |
*/
|
211 |
var PR_NOCODE = 'nocode';
|
212 |
|
213 |
+
|
214 |
+
|
215 |
+
/**
|
216 |
+
* A set of tokens that can precede a regular expression literal in
|
217 |
+
* javascript
|
218 |
+
* http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
|
219 |
+
* has the full list, but I've removed ones that might be problematic when
|
220 |
+
* seen in languages that don't support regular expression literals.
|
221 |
+
*
|
222 |
+
* <p>Specifically, I've removed any keywords that can't precede a regexp
|
223 |
+
* literal in a syntactically legal javascript program, and I've removed the
|
224 |
+
* "in" keyword since it's not a keyword in many languages, and might be used
|
225 |
+
* as a count of inches.
|
226 |
+
*
|
227 |
+
* <p>The link above does not accurately describe EcmaScript rules since
|
228 |
+
* it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
|
229 |
+
* very well in practice.
|
230 |
+
*
|
231 |
+
* @private
|
232 |
+
* @const
|
233 |
+
*/
|
234 |
+
var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
|
235 |
+
|
236 |
+
// CAVEAT: this does not properly handle the case where a regular
|
237 |
+
// expression immediately follows another since a regular expression may
|
238 |
+
// have flags for case-sensitivity and the like. Having regexp tokens
|
239 |
+
// adjacent is not valid in any language I'm aware of, so I'm punting.
|
240 |
+
// TODO: maybe style special characters inside a regexp as punctuation.
|
|
|
241 |
|
242 |
/**
|
243 |
* Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
|
249 |
*/
|
250 |
function combinePrefixPatterns(regexs) {
|
251 |
var capturedGroupIndex = 0;
|
252 |
+
|
253 |
var needToFoldCase = false;
|
254 |
var ignoreCase = false;
|
255 |
for (var i = 0, n = regexs.length; i < n; ++i) {
|
263 |
break;
|
264 |
}
|
265 |
}
|
266 |
+
|
267 |
var escapeCharToCodeUnit = {
|
268 |
'b': 8,
|
269 |
't': 9,
|
272 |
'f': 0xc,
|
273 |
'r': 0xd
|
274 |
};
|
275 |
+
|
276 |
function decodeEscape(charsetPart) {
|
277 |
var cc0 = charsetPart.charCodeAt(0);
|
278 |
if (cc0 !== 92 /* \\ */) {
|
290 |
return charsetPart.charCodeAt(1);
|
291 |
}
|
292 |
}
|
293 |
+
|
294 |
function encodeEscape(charCode) {
|
295 |
if (charCode < 0x20) {
|
296 |
return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
|
297 |
}
|
298 |
var ch = String.fromCharCode(charCode);
|
299 |
+
return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
|
300 |
+
? "\\" + ch : ch;
|
|
|
|
|
301 |
}
|
302 |
+
|
303 |
function caseFoldCharset(charSet) {
|
304 |
var charsetParts = charSet.substring(1, charSet.length - 1).match(
|
305 |
new RegExp(
|
311 |
+ '|-'
|
312 |
+ '|[^-\\\\]',
|
313 |
'g'));
|
|
|
314 |
var ranges = [];
|
315 |
var inverse = charsetParts[0] === '^';
|
316 |
+
|
317 |
+
var out = ['['];
|
318 |
+
if (inverse) { out.push('^'); }
|
319 |
+
|
320 |
for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
|
321 |
var p = charsetParts[i];
|
322 |
if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
|
323 |
+
out.push(p);
|
324 |
} else {
|
325 |
var start = decodeEscape(p);
|
326 |
var end;
|
345 |
}
|
346 |
}
|
347 |
}
|
348 |
+
|
349 |
// [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
|
350 |
// -> [[1, 12], [14, 14], [16, 17]]
|
351 |
ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
|
352 |
var consolidatedRanges = [];
|
353 |
+
var lastRange = [];
|
354 |
for (var i = 0; i < ranges.length; ++i) {
|
355 |
var range = ranges[i];
|
356 |
if (range[0] <= lastRange[1] + 1) {
|
359 |
consolidatedRanges.push(lastRange = range);
|
360 |
}
|
361 |
}
|
362 |
+
|
|
|
|
|
|
|
363 |
for (var i = 0; i < consolidatedRanges.length; ++i) {
|
364 |
var range = consolidatedRanges[i];
|
365 |
out.push(encodeEscape(range[0]));
|
371 |
out.push(']');
|
372 |
return out.join('');
|
373 |
}
|
374 |
+
|
375 |
function allowAnywhereFoldCaseAndRenumberGroups(regex) {
|
376 |
// Split into character sets, escape sequences, punctuation strings
|
377 |
// like ('(', '(?:', ')', '^'), and runs of characters that do not
|
385 |
+ '|\\\\[0-9]+' // a back-reference or octal escape
|
386 |
+ '|\\\\[^ux0-9]' // other escape sequence
|
387 |
+ '|\\(\\?[:!=]' // start of a non-capturing group
|
388 |
+
+ '|[\\(\\)\\^]' // start/end of a group, or line start
|
389 |
+ '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
|
390 |
+ ')',
|
391 |
'g'));
|
392 |
var n = parts.length;
|
393 |
+
|
394 |
// Maps captured group numbers to the number they will occupy in
|
395 |
// the output or to -1 if that has not been determined, or to
|
396 |
// undefined if they need not be capturing in the output.
|
397 |
var capturedGroups = [];
|
398 |
+
|
399 |
// Walk over and identify back references to build the capturedGroups
|
400 |
// mapping.
|
401 |
for (var i = 0, groupIndex = 0; i < n; ++i) {
|
405 |
++groupIndex;
|
406 |
} else if ('\\' === p.charAt(0)) {
|
407 |
var decimalValue = +p.substring(1);
|
408 |
+
if (decimalValue) {
|
409 |
+
if (decimalValue <= groupIndex) {
|
410 |
+
capturedGroups[decimalValue] = -1;
|
411 |
+
} else {
|
412 |
+
// Replace with an unambiguous escape sequence so that
|
413 |
+
// an octal escape sequence does not turn into a backreference
|
414 |
+
// to a capturing group from an earlier regex.
|
415 |
+
parts[i] = encodeEscape(decimalValue);
|
416 |
+
}
|
417 |
}
|
418 |
}
|
419 |
}
|
420 |
+
|
421 |
// Renumber groups and reduce capturing groups to non-capturing groups
|
422 |
// where possible.
|
423 |
for (var i = 1; i < capturedGroups.length; ++i) {
|
429 |
var p = parts[i];
|
430 |
if (p === '(') {
|
431 |
++groupIndex;
|
432 |
+
if (!capturedGroups[groupIndex]) {
|
433 |
parts[i] = '(?:';
|
434 |
}
|
435 |
} else if ('\\' === p.charAt(0)) {
|
436 |
var decimalValue = +p.substring(1);
|
437 |
if (decimalValue && decimalValue <= groupIndex) {
|
438 |
+
parts[i] = '\\' + capturedGroups[decimalValue];
|
439 |
}
|
440 |
}
|
441 |
}
|
442 |
+
|
443 |
// Remove any prefix anchors so that the output will match anywhere.
|
444 |
// ^^ really does mean an anchored match though.
|
445 |
+
for (var i = 0; i < n; ++i) {
|
446 |
if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
|
447 |
}
|
448 |
+
|
449 |
// Expand letters to groups to handle mixing of case-sensitive and
|
450 |
// case-insensitive patterns if necessary.
|
451 |
if (regex.ignoreCase && needToFoldCase) {
|
465 |
}
|
466 |
}
|
467 |
}
|
468 |
+
|
469 |
return parts.join('');
|
470 |
}
|
471 |
+
|
472 |
var rewritten = [];
|
473 |
for (var i = 0, n = regexs.length; i < n; ++i) {
|
474 |
var regex = regexs[i];
|
476 |
rewritten.push(
|
477 |
'(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
|
478 |
}
|
479 |
+
|
480 |
return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
|
481 |
}
|
482 |
|
|
|
483 |
/**
|
484 |
* Split markup into a string of source code and an array mapping ranges in
|
485 |
* that string to the text nodes in which they appear.
|
503 |
* <pre>
|
504 |
* {
|
505 |
* sourceCode: "print 'Hello '\n + 'World';",
|
506 |
+
* // 1 2
|
507 |
+
* // 012345678901234 5678901234567
|
508 |
* spans: [0, #1, 6, #2, 14, #3, 15, #4]
|
509 |
* }
|
510 |
* </pre>
|
521 |
* </p>
|
522 |
*
|
523 |
* @param {Node} node an HTML DOM subtree containing source-code.
|
524 |
+
* @param {boolean} isPreformatted true if white-space in text nodes should
|
525 |
+
* be considered significant.
|
526 |
* @return {Object} source code and the text nodes in which they occur.
|
527 |
*/
|
528 |
+
function extractSourceSpans(node, isPreformatted) {
|
529 |
var nocode = /(?:^|\s)nocode(?:\s|$)/;
|
530 |
+
|
531 |
var chunks = [];
|
532 |
var length = 0;
|
533 |
var spans = [];
|
534 |
var k = 0;
|
535 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
function walk(node) {
|
537 |
+
var type = node.nodeType;
|
538 |
+
if (type == 1) { // Element
|
539 |
+
if (nocode.test(node.className)) { return; }
|
540 |
+
for (var child = node.firstChild; child; child = child.nextSibling) {
|
541 |
+
walk(child);
|
542 |
+
}
|
543 |
+
var nodeName = node.nodeName.toLowerCase();
|
544 |
+
if ('br' === nodeName || 'li' === nodeName) {
|
545 |
+
chunks[k] = '\n';
|
546 |
+
spans[k << 1] = length++;
|
547 |
+
spans[(k++ << 1) | 1] = node;
|
548 |
+
}
|
549 |
+
} else if (type == 3 || type == 4) { // Text
|
550 |
+
var text = node.nodeValue;
|
551 |
+
if (text.length) {
|
552 |
+
if (!isPreformatted) {
|
553 |
+
text = text.replace(/[ \t\r\n]+/g, ' ');
|
554 |
+
} else {
|
555 |
+
text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
556 |
}
|
557 |
+
// TODO: handle tabs here?
|
558 |
+
chunks[k] = text;
|
559 |
+
spans[k << 1] = length;
|
560 |
+
length += text.length;
|
561 |
+
spans[(k++ << 1) | 1] = node;
|
562 |
+
}
|
563 |
}
|
564 |
}
|
565 |
+
|
566 |
walk(node);
|
567 |
+
|
568 |
return {
|
569 |
sourceCode: chunks.join('').replace(/\n$/, ''),
|
570 |
spans: spans
|
571 |
};
|
572 |
}
|
573 |
|
|
|
574 |
/**
|
575 |
* Apply the given language handler to sourceCode and add the resulting
|
576 |
* decorations to out.
|
835 |
} else {
|
836 |
// Stop C preprocessor declarations at an unclosed open comment
|
837 |
shortcutStylePatterns.push(
|
838 |
+
[PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
|
839 |
null, '#']);
|
840 |
}
|
841 |
+
// #include <stdio.h>
|
842 |
fallthroughStylePatterns.push(
|
843 |
[PR_STRING,
|
844 |
+
/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
|
845 |
null]);
|
846 |
} else {
|
847 |
shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
|
852 |
fallthroughStylePatterns.push(
|
853 |
[PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
|
854 |
}
|
855 |
+
var regexLiterals = options['regexLiterals'];
|
856 |
+
if (regexLiterals) {
|
857 |
+
/**
|
858 |
+
* @const
|
859 |
+
*/
|
860 |
+
var regexExcls = regexLiterals > 1
|
861 |
+
? '' // Multiline regex literals
|
862 |
+
: '\n\r';
|
863 |
+
/**
|
864 |
+
* @const
|
865 |
+
*/
|
866 |
+
var regexAny = regexExcls ? '.' : '[\\S\\s]';
|
867 |
/**
|
868 |
* @const
|
869 |
*/
|
871 |
// A regular expression literal starts with a slash that is
|
872 |
// not followed by * or / so that it is not confused with
|
873 |
// comments.
|
874 |
+
'/(?=[^/*' + regexExcls + '])'
|
875 |
// and then contains any number of raw characters,
|
876 |
+
+ '(?:[^/\\x5B\\x5C' + regexExcls + ']'
|
877 |
// escape sequences (\x5C),
|
878 |
+
+ '|\\x5C' + regexAny
|
879 |
// or non-nesting character sets (\x5B\x5D);
|
880 |
+
+ '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
|
881 |
+
+ '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
|
882 |
// finally closed by a /.
|
883 |
+ '/');
|
884 |
fallthroughStylePatterns.push(
|
885 |
['lang-regex',
|
886 |
+
RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
|
887 |
]);
|
888 |
}
|
889 |
|
901 |
}
|
902 |
|
903 |
shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
|
904 |
+
|
905 |
+
var punctuation =
|
906 |
+
// The Bash man page says
|
907 |
+
|
908 |
+
// A word is a sequence of characters considered as a single
|
909 |
+
// unit by GRUB. Words are separated by metacharacters,
|
910 |
+
// which are the following plus space, tab, and newline: { }
|
911 |
+
// | & $ ; < >
|
912 |
+
// ...
|
913 |
+
|
914 |
+
// A word beginning with # causes that word and all remaining
|
915 |
+
// characters on that line to be ignored.
|
916 |
+
|
917 |
+
// which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
|
918 |
+
// comment but empirically
|
919 |
+
// $ echo {#}
|
920 |
+
// {#}
|
921 |
+
// $ echo \$#
|
922 |
+
// $#
|
923 |
+
// $ echo }#
|
924 |
+
// }#
|
925 |
+
|
926 |
+
// so /(?:^|[|&;<>\s])/ is more appropriate.
|
927 |
+
|
928 |
+
// http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
|
929 |
+
// suggests that this definition is compatible with a
|
930 |
+
// default mode that tries to use a single token definition
|
931 |
+
// to recognize both bash/python style comments and C
|
932 |
+
// preprocessor directives.
|
933 |
+
|
934 |
+
// This definition of punctuation does not include # in the list of
|
935 |
+
// follow-on exclusions, so # will not be broken before if preceeded
|
936 |
+
// by a punctuation character. We could try to exclude # after
|
937 |
+
// [|&;<>] but that doesn't seem to cause many major problems.
|
938 |
+
// If that does turn out to be a problem, we should change the below
|
939 |
+
// when hc is truthy to include # in the run of punctuation characters
|
940 |
+
// only when not followint [|&;<>].
|
941 |
+
'^.[^\\s\\w.$@\'"`/\\\\]*';
|
942 |
+
if (options['regexLiterals']) {
|
943 |
+
punctuation += '(?!\s*\/)';
|
944 |
+
}
|
945 |
+
|
946 |
fallthroughStylePatterns.push(
|
947 |
// TODO(mikesamuel): recognize non-latin letters and numerals in idents
|
948 |
[PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
|
961 |
// with an optional modifier like UL for unsigned long
|
962 |
+ '[a-z]*', 'i'),
|
963 |
null, '0123456789'],
|
964 |
+
// Don't treat escaped quotes in bash as starting strings.
|
965 |
+
// See issue 144.
|
966 |
[PR_PLAIN, /^\\[\s\S]?/, null],
|
967 |
+
[PR_PUNCTUATION, new RegExp(punctuation), null]);
|
968 |
|
969 |
return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
|
970 |
}
|
985 |
* HTMLOListElement, and each line is moved into a separate list item.
|
986 |
* This requires cloning elements, so the input might not have unique
|
987 |
* IDs after numbering.
|
988 |
+
* @param {boolean} isPreformatted true iff white-space in text nodes should
|
989 |
+
* be treated as significant.
|
990 |
*/
|
991 |
+
function numberLines(node, opt_startLineNum, isPreformatted) {
|
992 |
var nocode = /(?:^|\s)nocode(?:\s|$)/;
|
993 |
var lineBreak = /\r\n?|\n/;
|
994 |
+
|
995 |
var document = node.ownerDocument;
|
996 |
+
|
997 |
+
var li = document.createElement('li');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
998 |
while (node.firstChild) {
|
999 |
li.appendChild(node.firstChild);
|
1000 |
}
|
1001 |
// An array of lines. We split below, so this is initialized to one
|
1002 |
// un-split line.
|
1003 |
var listItems = [li];
|
1004 |
+
|
1005 |
function walk(node) {
|
1006 |
+
var type = node.nodeType;
|
1007 |
+
if (type == 1 && !nocode.test(node.className)) { // Element
|
1008 |
+
if ('br' === node.nodeName) {
|
1009 |
+
breakAfter(node);
|
1010 |
+
// Discard the <BR> since it is now flush against a </LI>.
|
1011 |
+
if (node.parentNode) {
|
1012 |
+
node.parentNode.removeChild(node);
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
}
|
1014 |
+
} else {
|
1015 |
+
for (var child = node.firstChild; child; child = child.nextSibling) {
|
1016 |
+
walk(child);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1017 |
}
|
1018 |
+
}
|
1019 |
+
} else if ((type == 3 || type == 4) && isPreformatted) { // Text
|
1020 |
+
var text = node.nodeValue;
|
1021 |
+
var match = text.match(lineBreak);
|
1022 |
+
if (match) {
|
1023 |
+
var firstLine = text.substring(0, match.index);
|
1024 |
+
node.nodeValue = firstLine;
|
1025 |
+
var tail = text.substring(match.index + match[0].length);
|
1026 |
+
if (tail) {
|
1027 |
+
var parent = node.parentNode;
|
1028 |
+
parent.insertBefore(
|
1029 |
+
document.createTextNode(tail), node.nextSibling);
|
1030 |
+
}
|
1031 |
+
breakAfter(node);
|
1032 |
+
if (!firstLine) {
|
1033 |
+
// Don't leave blank text nodes in the DOM.
|
1034 |
+
node.parentNode.removeChild(node);
|
1035 |
+
}
|
1036 |
+
}
|
1037 |
}
|
1038 |
}
|
1039 |
+
|
1040 |
// Split a line after the given node.
|
1041 |
function breakAfter(lineEndNode) {
|
1042 |
// If there's nothing to the right, then we can skip ending the line
|
1046 |
lineEndNode = lineEndNode.parentNode;
|
1047 |
if (!lineEndNode) { return; }
|
1048 |
}
|
1049 |
+
|
1050 |
function breakLeftOf(limit, copy) {
|
1051 |
// Clone shallowly if this node needs to be on both sides of the break.
|
1052 |
var rightSide = copy ? limit.cloneNode(false) : limit;
|
1068 |
}
|
1069 |
return rightSide;
|
1070 |
}
|
1071 |
+
|
1072 |
var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
|
1073 |
+
|
1074 |
// Walk the parent chain until we reach an unattached LI.
|
1075 |
for (var parent;
|
1076 |
// Check nodeType since IE invents document fragments.
|
1080 |
// Put it on the list of lines for later processing.
|
1081 |
listItems.push(copiedListItem);
|
1082 |
}
|
1083 |
+
|
1084 |
// Split lines while there are lines left to split.
|
1085 |
for (var i = 0; // Number of lines that have been split so far.
|
1086 |
i < listItems.length; // length updated by breakAfter calls.
|
1087 |
++i) {
|
1088 |
walk(listItems[i]);
|
1089 |
}
|
1090 |
+
|
1091 |
// Make sure numeric indices show correctly.
|
1092 |
if (opt_startLineNum === (opt_startLineNum|0)) {
|
1093 |
listItems[0].setAttribute('value', opt_startLineNum);
|
1094 |
}
|
1095 |
+
|
1096 |
+
var ol = document.createElement('ol');
|
1097 |
ol.className = 'linenums';
|
1098 |
var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
|
1099 |
for (var i = 0, n = listItems.length; i < n; ++i) {
|
1107 |
}
|
1108 |
ol.appendChild(li);
|
1109 |
}
|
1110 |
+
|
1111 |
node.appendChild(ol);
|
1112 |
}
|
|
|
1113 |
/**
|
1114 |
* Breaks {@code job.sourceCode} around style boundaries in
|
1115 |
* {@code job.decorations} and modifies {@code job.sourceNode} in place.
|
1116 |
* @param {Object} job like <pre>{
|
1117 |
* sourceCode: {string} source as plain text,
|
1118 |
+
* sourceNode: {HTMLElement} the element containing the source,
|
1119 |
* spans: {Array.<number|Node>} alternating span start indices into source
|
1120 |
* and the text node or element (e.g. {@code <BR>}) corresponding to that
|
1121 |
* span.
|
1125 |
* @private
|
1126 |
*/
|
1127 |
function recombineTagsAndDecorations(job) {
|
1128 |
+
var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
|
1129 |
+
isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
|
1130 |
var newlineRe = /\n/g;
|
1131 |
+
|
1132 |
var source = job.sourceCode;
|
1133 |
var sourceLength = source.length;
|
1134 |
// Index into source after the last code-unit recombined.
|
1135 |
var sourceIndex = 0;
|
1136 |
+
|
1137 |
var spans = job.spans;
|
1138 |
var nSpans = spans.length;
|
1139 |
// Index into spans after the last span which ends at or before sourceIndex.
|
1140 |
var spanIndex = 0;
|
1141 |
+
|
1142 |
var decorations = job.decorations;
|
1143 |
var nDecorations = decorations.length;
|
1144 |
// Index into decorations after the last decoration which ends at or before
|
1145 |
// sourceIndex.
|
1146 |
var decorationIndex = 0;
|
1147 |
+
|
1148 |
// Remove all zero-length decorations.
|
1149 |
decorations[nDecorations] = sourceLength;
|
1150 |
var decPos, i;
|
1157 |
}
|
1158 |
}
|
1159 |
nDecorations = decPos;
|
1160 |
+
|
1161 |
// Simplify decorations.
|
1162 |
for (i = decPos = 0; i < nDecorations;) {
|
1163 |
var startPos = decorations[i];
|
1171 |
decorations[decPos++] = startDec;
|
1172 |
i = end;
|
1173 |
}
|
1174 |
+
|
1175 |
nDecorations = decorations.length = decPos;
|
1176 |
+
|
1177 |
+
var sourceNode = job.sourceNode;
|
1178 |
+
var oldDisplay;
|
1179 |
+
if (sourceNode) {
|
1180 |
+
oldDisplay = sourceNode.style.display;
|
1181 |
+
sourceNode.style.display = 'none';
|
1182 |
+
}
|
1183 |
+
try {
|
1184 |
+
var decoration = null;
|
1185 |
+
while (spanIndex < nSpans) {
|
1186 |
+
var spanStart = spans[spanIndex];
|
1187 |
+
var spanEnd = spans[spanIndex + 2] || sourceLength;
|
1188 |
+
|
1189 |
+
var decEnd = decorations[decorationIndex + 2] || sourceLength;
|
1190 |
+
|
1191 |
+
var end = Math.min(spanEnd, decEnd);
|
1192 |
+
|
1193 |
+
var textNode = spans[spanIndex + 1];
|
1194 |
+
var styledText;
|
1195 |
+
if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
|
1196 |
+
// Don't introduce spans around empty text nodes.
|
1197 |
+
&& (styledText = source.substring(sourceIndex, end))) {
|
1198 |
+
// This may seem bizarre, and it is. Emitting LF on IE causes the
|
1199 |
+
// code to display with spaces instead of line breaks.
|
1200 |
+
// Emitting Windows standard issue linebreaks (CRLF) causes a blank
|
1201 |
+
// space to appear at the beginning of every line but the first.
|
1202 |
+
// Emitting an old Mac OS 9 line separator makes everything spiffy.
|
1203 |
+
if (isIE8OrEarlier) {
|
1204 |
+
styledText = styledText.replace(newlineRe, '\r');
|
1205 |
+
}
|
1206 |
+
textNode.nodeValue = styledText;
|
1207 |
+
var document = textNode.ownerDocument;
|
1208 |
+
var span = document.createElement('span');
|
1209 |
+
span.className = decorations[decorationIndex + 1];
|
1210 |
+
var parentNode = textNode.parentNode;
|
1211 |
+
parentNode.replaceChild(span, textNode);
|
1212 |
+
span.appendChild(textNode);
|
1213 |
+
if (sourceIndex < spanEnd) { // Split off a text node.
|
1214 |
+
spans[spanIndex + 1] = textNode
|
1215 |
+
// TODO: Possibly optimize by using '' if there's no flicker.
|
1216 |
+
= document.createTextNode(source.substring(end, spanEnd));
|
1217 |
+
parentNode.insertBefore(textNode, span.nextSibling);
|
1218 |
+
}
|
1219 |
+
}
|
1220 |
+
|
1221 |
+
sourceIndex = end;
|
1222 |
+
|
1223 |
+
if (sourceIndex >= spanEnd) {
|
1224 |
+
spanIndex += 2;
|
1225 |
+
}
|
1226 |
+
if (sourceIndex >= decEnd) {
|
1227 |
+
decorationIndex += 2;
|
1228 |
}
|
1229 |
}
|
1230 |
+
} finally {
|
1231 |
+
if (sourceNode) {
|
1232 |
+
sourceNode.style.display = oldDisplay;
|
|
|
|
|
|
|
|
|
|
|
1233 |
}
|
1234 |
}
|
1235 |
}
|
1236 |
|
|
|
1237 |
/** Maps language-specific file extensions to handlers. */
|
1238 |
var langHandlerRegistry = {};
|
1239 |
/** Register a language handler for the given file extensions.
|
1257 |
var ext = fileExtensions[i];
|
1258 |
if (!langHandlerRegistry.hasOwnProperty(ext)) {
|
1259 |
langHandlerRegistry[ext] = handler;
|
1260 |
+
} else if (win['console']) {
|
1261 |
console['warn']('cannot override language handler %s', ext);
|
1262 |
}
|
1263 |
}
|
1277 |
createSimpleLexer(
|
1278 |
[],
|
1279 |
[
|
1280 |
+
[PR_PLAIN, /^[^<?]+/],
|
1281 |
[PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
|
1282 |
[PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
|
1283 |
// Unescaped content in an unknown language
|
1337 |
'keywords': SH_KEYWORDS,
|
1338 |
'hashComments': true,
|
1339 |
'multiLineStrings': true
|
1340 |
+
}), ['bash', 'bsh', 'csh', 'sh']);
|
1341 |
registerLangHandler(sourceDecorator({
|
1342 |
'keywords': PYTHON_KEYWORDS,
|
1343 |
'hashComments': true,
|
1344 |
'multiLineStrings': true,
|
1345 |
'tripleQuotedStrings': true
|
1346 |
+
}), ['cv', 'py', 'python']);
|
1347 |
registerLangHandler(sourceDecorator({
|
1348 |
'keywords': PERL_KEYWORDS,
|
1349 |
'hashComments': true,
|
1350 |
'multiLineStrings': true,
|
1351 |
+
'regexLiterals': 2 // multiline regex literals
|
1352 |
}), ['perl', 'pl', 'pm']);
|
1353 |
registerLangHandler(sourceDecorator({
|
1354 |
'keywords': RUBY_KEYWORDS,
|
1355 |
'hashComments': true,
|
1356 |
'multiLineStrings': true,
|
1357 |
'regexLiterals': true
|
1358 |
+
}), ['rb', 'ruby']);
|
1359 |
registerLangHandler(sourceDecorator({
|
1360 |
'keywords': JSCRIPT_KEYWORDS,
|
1361 |
'cStyleComments': true,
|
1362 |
'regexLiterals': true
|
1363 |
+
}), ['javascript', 'js']);
|
1364 |
registerLangHandler(sourceDecorator({
|
1365 |
'keywords': COFFEE_KEYWORDS,
|
1366 |
'hashComments': 3, // ### style block comments
|
1369 |
'tripleQuotedStrings': true,
|
1370 |
'regexLiterals': true
|
1371 |
}), ['coffee']);
|
1372 |
+
registerLangHandler(sourceDecorator({
|
1373 |
+
'keywords': RUST_KEYWORDS,
|
1374 |
+
'cStyleComments': true,
|
1375 |
+
'multilineStrings': true
|
1376 |
+
}), ['rc', 'rs', 'rust']);
|
1377 |
+
registerLangHandler(
|
1378 |
+
createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
|
1379 |
|
1380 |
function applyDecorator(job) {
|
1381 |
var opt_langExtension = job.langExtension;
|
1382 |
|
1383 |
try {
|
1384 |
// Extract tags, and convert the source code to plain text.
|
1385 |
+
var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
|
1386 |
/** Plain text. @type {string} */
|
1387 |
var source = sourceAndSpans.sourceCode;
|
1388 |
job.sourceCode = source;
|
1396 |
// modifying the sourceNode in place.
|
1397 |
recombineTagsAndDecorations(job);
|
1398 |
} catch (e) {
|
1399 |
+
if (win['console']) {
|
1400 |
+
console['log'](e && e['stack'] || e);
|
1401 |
}
|
1402 |
}
|
1403 |
}
|
1404 |
|
1405 |
/**
|
1406 |
+
* Pretty print a chunk of code.
|
1407 |
* @param sourceCodeHtml {string} The HTML to pretty print.
|
1408 |
* @param opt_langExtension {string} The language name to use.
|
1409 |
* Typically, a filename extension like 'cpp' or 'java'.
|
1410 |
* @param opt_numberLines {number|boolean} True to number lines,
|
1411 |
* or the 1-indexed number of the first line in sourceCodeHtml.
|
1412 |
*/
|
1413 |
+
function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
|
1414 |
+
var container = document.createElement('div');
|
1415 |
// This could cause images to load and onload listeners to fire.
|
1416 |
// E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
|
1417 |
// We assume that the inner HTML is from a trusted source.
|
1418 |
+
// The pre-tag is required for IE8 which strips newlines from innerHTML
|
1419 |
+
// when it is injected into a <pre> tag.
|
1420 |
+
// http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
|
1421 |
+
// http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
|
1422 |
+
container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
|
1423 |
+
container = container.firstChild;
|
1424 |
if (opt_numberLines) {
|
1425 |
+
numberLines(container, opt_numberLines, true);
|
1426 |
}
|
1427 |
|
1428 |
var job = {
|
1429 |
langExtension: opt_langExtension,
|
1430 |
numberLines: opt_numberLines,
|
1431 |
+
sourceNode: container,
|
1432 |
+
pre: 1
|
1433 |
};
|
1434 |
applyDecorator(job);
|
1435 |
return container.innerHTML;
|
1436 |
}
|
1437 |
|
1438 |
+
/**
|
1439 |
+
* Find all the {@code <pre>} and {@code <code>} tags in the DOM with
|
1440 |
+
* {@code class=prettyprint} and prettify them.
|
1441 |
+
*
|
1442 |
+
* @param {Function} opt_whenDone called when prettifying is done.
|
1443 |
+
* @param {HTMLElement|HTMLDocument} opt_root an element or document
|
1444 |
+
* containing all the elements to pretty print.
|
1445 |
+
* Defaults to {@code document.body}.
|
1446 |
+
*/
|
1447 |
+
function $prettyPrint(opt_whenDone, opt_root) {
|
1448 |
+
var root = opt_root || document.body;
|
1449 |
+
var doc = root.ownerDocument || document;
|
1450 |
+
function byTagName(tn) { return root.getElementsByTagName(tn); }
|
1451 |
// fetch a list of nodes to rewrite
|
1452 |
var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
|
1453 |
var elements = [];
|
1470 |
|
1471 |
var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
|
1472 |
var prettyPrintRe = /\bprettyprint\b/;
|
1473 |
+
var prettyPrintedRe = /\bprettyprinted\b/;
|
1474 |
+
var preformattedTagNameRe = /pre|xmp/i;
|
1475 |
+
var codeRe = /^code$/i;
|
1476 |
+
var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
|
1477 |
+
var EMPTY = {};
|
1478 |
|
1479 |
function doWork() {
|
1480 |
+
var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
|
1481 |
clock['now']() + 250 /* ms */ :
|
1482 |
Infinity);
|
1483 |
for (; k < elements.length && clock['now']() < endTime; k++) {
|
1484 |
var cs = elements[k];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1485 |
|
1486 |
+
// Look for a preceding comment like
|
1487 |
+
// <?prettify lang="..." linenums="..."?>
|
1488 |
+
var attrs = EMPTY;
|
1489 |
+
{
|
1490 |
+
for (var preceder = cs; (preceder = preceder.previousSibling);) {
|
1491 |
+
var nt = preceder.nodeType;
|
1492 |
+
// <?foo?> is parsed by HTML 5 to a comment node (8)
|
1493 |
+
// like <!--?foo?-->, but in XML is a processing instruction
|
1494 |
+
var value = (nt === 7 || nt === 8) && preceder.nodeValue;
|
1495 |
+
if (value
|
1496 |
+
? !/^\??prettify\b/.test(value)
|
1497 |
+
: (nt !== 3 || /\S/.test(preceder.nodeValue))) {
|
1498 |
+
// Skip over white-space text nodes but not others.
|
1499 |
+
break;
|
1500 |
+
}
|
1501 |
+
if (value) {
|
1502 |
+
attrs = {};
|
1503 |
+
value.replace(
|
1504 |
+
/\b(\w+)=([\w:.%+-]+)/g,
|
1505 |
+
function (_, name, value) { attrs[name] = value; });
|
1506 |
+
break;
|
1507 |
+
}
|
1508 |
}
|
1509 |
+
}
|
1510 |
+
|
1511 |
+
var className = cs.className;
|
1512 |
+
if ((attrs !== EMPTY || prettyPrintRe.test(className))
|
1513 |
+
// Don't redo this if we've already done it.
|
1514 |
+
// This allows recalling pretty print to just prettyprint elements
|
1515 |
+
// that have been added to the page since last call.
|
1516 |
+
&& !prettyPrintedRe.test(className)) {
|
1517 |
|
1518 |
// make sure this is not nested in an already prettified element
|
1519 |
var nested = false;
|
1520 |
for (var p = cs.parentNode; p; p = p.parentNode) {
|
1521 |
+
var tn = p.tagName;
|
1522 |
+
if (preCodeXmpRe.test(tn)
|
1523 |
+
&& p.className && prettyPrintRe.test(p.className)) {
|
1524 |
nested = true;
|
1525 |
break;
|
1526 |
}
|
1527 |
}
|
1528 |
if (!nested) {
|
1529 |
+
// Mark done. If we fail to prettyprint for whatever reason,
|
1530 |
+
// we shouldn't try again.
|
1531 |
+
cs.className += ' prettyprinted';
|
1532 |
+
|
1533 |
+
// If the classes includes a language extensions, use it.
|
1534 |
+
// Language extensions can be specified like
|
1535 |
+
// <pre class="prettyprint lang-cpp">
|
1536 |
+
// the language extension "cpp" is used to find a language handler
|
1537 |
+
// as passed to PR.registerLangHandler.
|
1538 |
+
// HTML5 recommends that a language be specified using "language-"
|
1539 |
+
// as the prefix instead. Google Code Prettify supports both.
|
1540 |
+
// http://dev.w3.org/html5/spec-author-view/the-code-element.html
|
1541 |
+
var langExtension = attrs['lang'];
|
1542 |
+
if (!langExtension) {
|
1543 |
+
langExtension = className.match(langExtensionRe);
|
1544 |
+
// Support <pre class="prettyprint"><code class="language-c">
|
1545 |
+
var wrapper;
|
1546 |
+
if (!langExtension && (wrapper = childContentWrapper(cs))
|
1547 |
+
&& codeRe.test(wrapper.tagName)) {
|
1548 |
+
langExtension = wrapper.className.match(langExtensionRe);
|
1549 |
+
}
|
1550 |
+
|
1551 |
+
if (langExtension) { langExtension = langExtension[1]; }
|
1552 |
+
}
|
1553 |
+
|
1554 |
+
var preformatted;
|
1555 |
+
if (preformattedTagNameRe.test(cs.tagName)) {
|
1556 |
+
preformatted = 1;
|
1557 |
+
} else {
|
1558 |
+
var currentStyle = cs['currentStyle'];
|
1559 |
+
var defaultView = doc.defaultView;
|
1560 |
+
var whitespace = (
|
1561 |
+
currentStyle
|
1562 |
+
? currentStyle['whiteSpace']
|
1563 |
+
: (defaultView
|
1564 |
+
&& defaultView.getComputedStyle)
|
1565 |
+
? defaultView.getComputedStyle(cs, null)
|
1566 |
+
.getPropertyValue('white-space')
|
1567 |
+
: 0);
|
1568 |
+
preformatted = whitespace
|
1569 |
+
&& 'pre' === whitespace.substring(0, 3);
|
1570 |
+
}
|
1571 |
+
|
1572 |
// Look for a class like linenums or linenums:<n> where <n> is the
|
1573 |
// 1-indexed number of the first line.
|
1574 |
+
var lineNums = attrs['linenums'];
|
1575 |
+
if (!(lineNums = lineNums === 'true' || +lineNums)) {
|
1576 |
+
lineNums = className.match(/\blinenums\b(?::(\d+))?/);
|
1577 |
+
lineNums =
|
1578 |
+
lineNums
|
1579 |
+
? lineNums[1] && lineNums[1].length
|
1580 |
+
? +lineNums[1] : true
|
1581 |
+
: false;
|
1582 |
+
}
|
1583 |
+
if (lineNums) { numberLines(cs, lineNums, preformatted); }
|
1584 |
|
1585 |
// do the pretty printing
|
1586 |
prettyPrintingJob = {
|
1587 |
langExtension: langExtension,
|
1588 |
sourceNode: cs,
|
1589 |
+
numberLines: lineNums,
|
1590 |
+
pre: preformatted
|
1591 |
};
|
1592 |
applyDecorator(prettyPrintingJob);
|
1593 |
}
|
1596 |
if (k < elements.length) {
|
1597 |
// finish up in a continuation
|
1598 |
setTimeout(doWork, 250);
|
1599 |
+
} else if ('function' === typeof opt_whenDone) {
|
1600 |
opt_whenDone();
|
1601 |
}
|
1602 |
}
|
1604 |
doWork();
|
1605 |
}
|
1606 |
|
1607 |
+
/**
|
1608 |
+
* Contains functions for creating and registering new language handlers.
|
1609 |
+
* @type {Object}
|
1610 |
+
*/
|
1611 |
+
var PR = win['PR'] = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1612 |
'createSimpleLexer': createSimpleLexer,
|
1613 |
'registerLangHandler': registerLangHandler,
|
1614 |
'sourceDecorator': sourceDecorator,
|
1624 |
'PR_SOURCE': PR_SOURCE,
|
1625 |
'PR_STRING': PR_STRING,
|
1626 |
'PR_TAG': PR_TAG,
|
1627 |
+
'PR_TYPE': PR_TYPE,
|
1628 |
+
'prettyPrintOne':
|
1629 |
+
IN_GLOBAL_SCOPE
|
1630 |
+
? (win['prettyPrintOne'] = $prettyPrintOne)
|
1631 |
+
: (prettyPrintOne = $prettyPrintOne),
|
1632 |
+
'prettyPrint': prettyPrint =
|
1633 |
+
IN_GLOBAL_SCOPE
|
1634 |
+
? (win['prettyPrint'] = $prettyPrint)
|
1635 |
+
: (prettyPrint = $prettyPrint)
|
1636 |
};
|
1637 |
+
|
1638 |
+
// Make PR available via the Asynchronous Module Definition (AMD) API.
|
1639 |
+
// Per https://github.com/amdjs/amdjs-api/wiki/AMD:
|
1640 |
+
// The Asynchronous Module Definition (AMD) API specifies a
|
1641 |
+
// mechanism for defining modules such that the module and its
|
1642 |
+
// dependencies can be asynchronously loaded.
|
1643 |
+
// ...
|
1644 |
+
// To allow a clear indicator that a global define function (as
|
1645 |
+
// needed for script src browser loading) conforms to the AMD API,
|
1646 |
+
// any global define function SHOULD have a property called "amd"
|
1647 |
+
// whose value is an object. This helps avoid conflict with any
|
1648 |
+
// other existing JavaScript code that could have defined a define()
|
1649 |
+
// function that does not conform to the AMD API.
|
1650 |
+
if (typeof define === "function" && define['amd']) {
|
1651 |
+
define("google-code-prettify", [], function () {
|
1652 |
+
return PR;
|
1653 |
+
});
|
1654 |
+
}
|
1655 |
})();
|
libs/google-code-prettify/run_prettify.js
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
!function(){var r=null;
|
2 |
+
(function(){function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);return}w("poll")}function w(j){if(!(j.type=="readystatechange"&&x.readyState!="complete")&&((j.type=="load"?n:x)[z](i+j.type,w,!1),!m&&(m=!0)))e.call(n,j.type||j)}var Y=x.addEventListener,m=!1,C=!0,t=Y?"addEventListener":"attachEvent",z=Y?"removeEventListener":"detachEvent",i=Y?"":"on";if(x.readyState=="complete")e.call(n,"lazy");else{if(x.createEventObject&&J.doScroll){try{C=!n.frameElement}catch(A){}C&&j()}x[t](i+"DOMContentLoaded",
|
3 |
+
w,!1);x[t](i+"readystatechange",w,!1);n[t](i+"load",w,!1)}}function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j<e;++j)(function(e){P(function(){n.exports[K[e]].apply(n,arguments)},0)})(j)}:void 0)})}for(var n=window,P=n.setTimeout,x=document,J=x.documentElement,L=x.head||x.getElementsByTagName("head")[0]||J,z="",A=x.scripts,m=A.length;--m>=0;){var M=A[m],T=M.src.match(/^[^#?]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(T){z=T[1]||"";M.parentNode.removeChild(M);break}}var S=!0,D=
|
4 |
+
[],N=[],K=[];z.replace(/[&?]([^&=]+)=([^&]+)/g,function(e,j,w){w=decodeURIComponent(w);j=decodeURIComponent(j);j=="autorun"?S=!/^[0fn]/i.test(w):j=="lang"?D.push(w):j=="skin"?N.push(w):j=="callback"&&K.push(w)});m=0;for(z=D.length;m<z;++m)(function(){var e=x.createElement("script");e.onload=e.onerror=e.onreadystatechange=function(){if(e&&(!e.readyState||/loaded|complete/.test(e.readyState)))e.onerror=e.onload=e.onreadystatechange=r,--R,R||P(Q,0),e.parentNode&&e.parentNode.removeChild(e),e=r};e.type=
|
5 |
+
"text/javascript";e.src="https://google-code-prettify.googlecode.com/svn/loader/lang-"+encodeURIComponent(D[m])+".js";L.insertBefore(e,L.firstChild)})(D[m]);for(var R=D.length,A=[],m=0,z=N.length;m<z;++m)A.push("https://google-code-prettify.googlecode.com/svn/loader/skins/"+encodeURIComponent(N[m])+".css");A.push("https://google-code-prettify.googlecode.com/svn/loader/prettify.css");(function(e){function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet";n.type="text/css";if(m+1<w)n.error=
|
6 |
+
n.onerror=function(){j(m+1)};n.href=e[m];L.appendChild(n)}}var w=e.length;j(0)})(A);var $=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var e;(function(){function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var a=f.charAt(1);return(b=i[a])?b:"0"<=a&&a<="7"?parseInt(f.substring(1),8):a==="u"||a==="x"?parseInt(f.substring(2),16):f.charCodeAt(1)}function h(f){if(f<32)return(f<16?"\\x0":"\\x")+f.toString(16);f=String.fromCharCode(f);return f==="\\"||f==="-"||f==="]"||f==="^"?"\\"+f:
|
7 |
+
f}function b(f){var b=f.substring(1,f.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),f=[],a=b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var k=b[a];if(/\\[bdsw]/i.test(k))c.push(k);else{var k=d(k),o;a+2<g&&"-"===b[a+1]?(o=d(b[a+2]),a+=2):o=k;f.push([k,o]);o<65||k>122||(o<65||k>90||f.push([Math.max(65,k)|32,Math.min(o,90)|32]),o<97||k>122||f.push([Math.max(97,k)&-33,Math.min(o,122)&-33]))}}f.sort(function(f,a){return f[0]-
|
8 |
+
a[0]||a[1]-f[1]});b=[];g=[];for(a=0;a<f.length;++a)k=f[a],k[0]<=g[1]+1?g[1]=Math.max(g[1],k[1]):b.push(g=k);for(a=0;a<b.length;++a)k=b[a],c.push(h(k[0])),k[1]>k[0]&&(k[1]+1>k[0]&&c.push("-"),c.push(h(k[1])));c.push("]");return c.join("")}function e(f){for(var a=f.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],g=0,k=0;g<c;++g){var o=a[g];o==="("?++k:"\\"===o.charAt(0)&&(o=+o.substring(1))&&(o<=k?d[o]=-1:a[g]=h(o))}for(g=
|
9 |
+
1;g<d.length;++g)-1===d[g]&&(d[g]=++j);for(k=g=0;g<c;++g)o=a[g],o==="("?(++k,d[k]||(a[g]="(?:")):"\\"===o.charAt(0)&&(o=+o.substring(1))&&o<=k&&(a[g]="\\"+d[o]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(f.ignoreCase&&F)for(g=0;g<c;++g)o=a[g],f=o.charAt(0),o.length>=2&&f==="["?a[g]=b(o):f!=="\\"&&(a[g]=o.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var j=0,F=!1,l=!1,I=0,c=a.length;I<c;++I){var p=a[I];if(p.ignoreCase)l=
|
10 |
+
!0;else if(/[a-z]/i.test(p.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){F=!0;l=!1;break}}for(var i={b:8,t:9,n:10,v:11,f:12,r:13},q=[],I=0,c=a.length;I<c;++I){p=a[I];if(p.global||p.multiline)throw Error(""+p);q.push("(?:"+e(p)+")")}return RegExp(q.join("|"),l?"gi":"g")}function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)h(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)e[l]="\n",F[l<<1]=j++,F[l++<<1|1]=a}}else if(c==
|
11 |
+
3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),e[l]=c,F[l<<1]=j,j+=c.length,F[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,e=[],j=0,F=[],l=0;h(a);return{a:e.join("").replace(/\n$/,""),d:F}}function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h.nodeType,d=b===1?d?a:h:b===3?S.test(h.nodeValue)?a:d:d;return d===a?void 0:d}function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
|
12 |
+
0,p=a.a.match(e)||[],m={},q=0,f=p.length;q<f;++q){var B=p[q],y=m[B],u=void 0,g;if(typeof y==="string")g=!1;else{var k=b[B.charAt(0)];if(k)u=B.match(k[1]),y=k[0];else{for(g=0;g<i;++g)if(k=d[g],u=B.match(k[1])){y=k[0];break}u||(y="pln")}if((g=y.length>=5&&"lang-"===y.substring(0,5))&&!(u&&typeof u[1]==="string"))g=!1,y="src";g||(m[B]=y)}k=c;c+=B.length;if(g){g=u[1];var o=B.indexOf(g),H=o+g.length;u[2]&&(H=B.length-u[2].length,o=H-g.length);y=y.substring(5);n(l+k,B.substring(0,o),h,j);n(l+k+o,g,A(y,
|
13 |
+
g),j);n(l+k+H,B.substring(H),h,j)}else j.push(l+k,y)}a.g=j}var b={},e;(function(){for(var h=a.concat(d),l=[],i={},c=0,p=h.length;c<p;++c){var m=h[c],q=m[3];if(q)for(var f=q.length;--f>=0;)b[q.charAt(f)]=m;m=m[1];q=""+m;i.hasOwnProperty(q)||(l.push(m),i[q]=r)}l.push(/[\S\s]/);e=j(l)})();var i=d.length;return h}function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
|
14 |
+
r,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,r,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,r,"\"'"]);a.verbatimStrings&&h.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,r]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,r,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,
|
15 |
+
r,"#"]),h.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,r])):d.push(["com",/^#[^\n\r]*/,r,"#"]));a.cStyleComments&&(h.push(["com",/^\/\/[^\n\r]*/,r]),h.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,r]));if(b=a.regexLiterals){var e=(b=b>1?"":"\n\r")?".":"[\\S\\s]";h.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
|
16 |
+
("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+e+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+e+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&h.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&h.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),r]);d.push(["pln",/^\s+/,r," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");h.push(["lit",/^@[$_a-z][\w$@]*/i,r],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,r],["pln",/^[$_a-z][\w$@]*/i,r],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
|
17 |
+
r,"0123456789"],["pln",/^\\[\S\s]?/,r],["pun",RegExp(b),r]);return C(d,h)}function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.className))if("br"===a.nodeName)e(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&h){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),e(a),c||a.parentNode.removeChild(a)}}
|
18 |
+
function e(a){function b(a,c){var d=c?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),h=a.nextSibling;f.appendChild(d);for(var e=h;e;e=h)h=e.nextSibling,f.appendChild(e)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var j=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,l=a.ownerDocument,i=l.createElement("li");a.firstChild;)i.appendChild(a.firstChild);for(var c=[i],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",
|
19 |
+
d);var n=l.createElement("ol");n.className="linenums";for(var d=Math.max(0,d-1|0)||0,p=0,q=c.length;p<q;++p)i=c[p],i.className="L"+(p+d)%10,i.firstChild||i.appendChild(l.createTextNode("\u00a0")),n.appendChild(i);a.appendChild(n)}function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(b)?V.console&&console.warn("cannot override language handler %s",b):U[b]=a}}function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return U[a]}function D(a){var d=
|
20 |
+
a.h;try{var h=m(a.c,a.i),b=h.a;a.a=b;a.d=h.d;a.e=0;A(d,b)(a);var e=/\bMSIE\s(\d+)/.exec(navigator.userAgent),e=e&&+e[1]<=8,d=/\n/g,i=a.a,j=i.length,h=0,l=a.d,n=l.length,b=0,c=a.g,p=c.length,t=0;c[p]=j;var q,f;for(f=q=0;f<p;)c[f]!==c[f+2]?(c[q++]=c[f++],c[q++]=c[f++]):f+=2;p=q;for(f=q=0;f<p;){for(var x=c[f],y=c[f+1],u=f+2;u+2<=p&&c[u+1]===y;)u+=2;c[q++]=x;c[q++]=y;f=u}c.length=q;var g=a.c,k;if(g)k=g.style.display,g.style.display="none";try{for(;b<n;){var o=l[b+2]||j,H=c[t+2]||j,u=Math.min(o,H),E=l[b+
|
21 |
+
1],W;if(E.nodeType!==1&&(W=i.substring(h,u))){e&&(W=W.replace(d,"\r"));E.nodeValue=W;var Z=E.ownerDocument,s=Z.createElement("span");s.className=c[t+1];var z=E.parentNode;z.replaceChild(s,E);s.appendChild(E);h<o&&(l[b+1]=E=Z.createTextNode(i.substring(u,o)),z.insertBefore(E,s.nextSibling))}h=u;h>=o&&(b+=2);h>=H&&(t+=2)}}finally{if(g)g.style.display=k}}catch(v){V.console&&console.log(v&&v.stack||v)}}var V=window,G=["break,continue,do,else,for,if,return,while"],O=[[G,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
22 |
+
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],J=[O,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],K=[O,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
|
23 |
+
L=[K,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],O=[O,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],M=[G,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
24 |
+
N=[G,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],R=[G,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],G=[G,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
|
25 |
+
S=/\S/,T=t({keywords:[J,L,O,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",M,N,G],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),U={};i(T,["default-code"]);i(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
|
26 |
+
/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);i(C([["pln",/^\s+/,r," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
|
27 |
+
["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);i(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);i(t({keywords:J,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);i(t({keywords:"null,true,false"}),["json"]);i(t({keywords:L,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
|
28 |
+
["cs"]);i(t({keywords:K,cStyleComments:!0}),["java"]);i(t({keywords:G,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);i(t({keywords:M,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);i(t({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);i(t({keywords:N,
|
29 |
+
hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);i(t({keywords:O,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);i(t({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);i(t({keywords:R,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
|
30 |
+
i(C([],[["str",/^[\S\s]+/]]),["regex"]);var X=V.PR={createSimpleLexer:C,registerLangHandler:i,sourceDecorator:t,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,e){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;e&&z(b,e,!0);D({h:d,j:e,c:b,i:1});return b.innerHTML},
|
31 |
+
prettyPrint:e=e=function(a,d){function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<j.length&&c.now()<b;p++){for(var d=j[p],m=k,l=d;l=l.previousSibling;){var n=l.nodeType,s=(n===7||n===8)&&l.nodeValue;if(s?!/^\??prettify\b/.test(s):n!==3||/\S/.test(l.nodeValue))break;if(s){m={};s.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){m[b]=c});break}}l=d.className;if((m!==k||f.test(l))&&!w.test(l)){n=!1;for(s=d.parentNode;s;s=s.parentNode)if(g.test(s.tagName)&&s.className&&f.test(s.className)){n=
|
32 |
+
!0;break}if(!n){d.className+=" prettyprinted";n=m.lang;if(!n){var n=l.match(q),A;if(!n&&(A=x(d))&&u.test(A.tagName))n=A.className.match(q);n&&(n=n[1])}if(y.test(d.tagName))s=1;else var s=d.currentStyle,v=i.defaultView,s=(s=s?s.whiteSpace:v&&v.getComputedStyle?v.getComputedStyle(d,r).getPropertyValue("white-space"):0)&&"pre"===s.substring(0,3);v=m.linenums;if(!(v=v==="true"||+v))v=(v=l.match(/\blinenums\b(?::(\d+))?/))?v[1]&&v[1].length?+v[1]:!0:!1;v&&z(d,v,s);t={h:n,c:d,j:v,i:s};D(t)}}}p<j.length?
|
33 |
+
P(e,250):"function"===typeof a&&a()}for(var b=d||document.body,i=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],j=[],m=0;m<b.length;++m)for(var l=0,n=b[m].length;l<n;++l)j.push(b[m][l]);var b=r,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,t,q=/\blang(?:uage)?-([\w.]+)(?!\S)/,f=/\bprettyprint\b/,w=/\bprettyprinted\b/,y=/pre|xmp/i,u=/^code$/i,g=/^(?:pre|code|xmp)$/i,k={};e()}};typeof define==="function"&&define.amd&&
|
34 |
+
define("google-code-prettify",[],function(){return X})})();return e}();R||P(Q,0)})();}()
|
libs/phpQuery.php
ADDED
@@ -0,0 +1,5702 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* phpQuery is a server-side, chainable, CSS3 selector driven
|
4 |
+
* Document Object Model (DOM) API based on jQuery JavaScript Library.
|
5 |
+
*
|
6 |
+
* @version 0.9.5
|
7 |
+
* @link http://code.google.com/p/phpquery/
|
8 |
+
* @link http://phpquery-library.blogspot.com/
|
9 |
+
* @link http://jquery.com/
|
10 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
11 |
+
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
12 |
+
* @package phpQuery
|
13 |
+
*/
|
14 |
+
|
15 |
+
// class names for instanceof
|
16 |
+
// TODO move them as class constants into phpQuery
|
17 |
+
define('DOMDOCUMENT', 'DOMDocument');
|
18 |
+
define('DOMELEMENT', 'DOMElement');
|
19 |
+
define('DOMNODELIST', 'DOMNodeList');
|
20 |
+
define('DOMNODE', 'DOMNode');
|
21 |
+
|
22 |
+
/**
|
23 |
+
* DOMEvent class.
|
24 |
+
*
|
25 |
+
* Based on
|
26 |
+
* @link http://developer.mozilla.org/En/DOM:event
|
27 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
28 |
+
* @package phpQuery
|
29 |
+
* @todo implement ArrayAccess ?
|
30 |
+
*/
|
31 |
+
class DOMEvent {
|
32 |
+
/**
|
33 |
+
* Returns a boolean indicating whether the event bubbles up through the DOM or not.
|
34 |
+
*
|
35 |
+
* @var unknown_type
|
36 |
+
*/
|
37 |
+
public $bubbles = true;
|
38 |
+
/**
|
39 |
+
* Returns a boolean indicating whether the event is cancelable.
|
40 |
+
*
|
41 |
+
* @var unknown_type
|
42 |
+
*/
|
43 |
+
public $cancelable = true;
|
44 |
+
/**
|
45 |
+
* Returns a reference to the currently registered target for the event.
|
46 |
+
*
|
47 |
+
* @var unknown_type
|
48 |
+
*/
|
49 |
+
public $currentTarget;
|
50 |
+
/**
|
51 |
+
* Returns detail about the event, depending on the type of event.
|
52 |
+
*
|
53 |
+
* @var unknown_type
|
54 |
+
* @link http://developer.mozilla.org/en/DOM/event.detail
|
55 |
+
*/
|
56 |
+
public $detail; // ???
|
57 |
+
/**
|
58 |
+
* Used to indicate which phase of the event flow is currently being evaluated.
|
59 |
+
*
|
60 |
+
* NOT IMPLEMENTED
|
61 |
+
*
|
62 |
+
* @var unknown_type
|
63 |
+
* @link http://developer.mozilla.org/en/DOM/event.eventPhase
|
64 |
+
*/
|
65 |
+
public $eventPhase; // ???
|
66 |
+
/**
|
67 |
+
* The explicit original target of the event (Mozilla-specific).
|
68 |
+
*
|
69 |
+
* NOT IMPLEMENTED
|
70 |
+
*
|
71 |
+
* @var unknown_type
|
72 |
+
*/
|
73 |
+
public $explicitOriginalTarget; // moz only
|
74 |
+
/**
|
75 |
+
* The original target of the event, before any retargetings (Mozilla-specific).
|
76 |
+
*
|
77 |
+
* NOT IMPLEMENTED
|
78 |
+
*
|
79 |
+
* @var unknown_type
|
80 |
+
*/
|
81 |
+
public $originalTarget; // moz only
|
82 |
+
/**
|
83 |
+
* Identifies a secondary target for the event.
|
84 |
+
*
|
85 |
+
* @var unknown_type
|
86 |
+
*/
|
87 |
+
public $relatedTarget;
|
88 |
+
/**
|
89 |
+
* Returns a reference to the target to which the event was originally dispatched.
|
90 |
+
*
|
91 |
+
* @var unknown_type
|
92 |
+
*/
|
93 |
+
public $target;
|
94 |
+
/**
|
95 |
+
* Returns the time that the event was created.
|
96 |
+
*
|
97 |
+
* @var unknown_type
|
98 |
+
*/
|
99 |
+
public $timeStamp;
|
100 |
+
/**
|
101 |
+
* Returns the name of the event (case-insensitive).
|
102 |
+
*/
|
103 |
+
public $type;
|
104 |
+
public $runDefault = true;
|
105 |
+
public $data = null;
|
106 |
+
public function __construct($data) {
|
107 |
+
foreach($data as $k => $v) {
|
108 |
+
$this->$k = $v;
|
109 |
+
}
|
110 |
+
if (! $this->timeStamp)
|
111 |
+
$this->timeStamp = time();
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* Cancels the event (if it is cancelable).
|
115 |
+
*
|
116 |
+
*/
|
117 |
+
public function preventDefault() {
|
118 |
+
$this->runDefault = false;
|
119 |
+
}
|
120 |
+
/**
|
121 |
+
* Stops the propagation of events further along in the DOM.
|
122 |
+
*
|
123 |
+
*/
|
124 |
+
public function stopPropagation() {
|
125 |
+
$this->bubbles = false;
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
/**
|
131 |
+
* DOMDocumentWrapper class simplifies work with DOMDocument.
|
132 |
+
*
|
133 |
+
* Know bug:
|
134 |
+
* - in XHTML fragments, <br /> changes to <br clear="none" />
|
135 |
+
*
|
136 |
+
* @todo check XML catalogs compatibility
|
137 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
138 |
+
* @package phpQuery
|
139 |
+
*/
|
140 |
+
class DOMDocumentWrapper {
|
141 |
+
/**
|
142 |
+
* @var DOMDocument
|
143 |
+
*/
|
144 |
+
public $document;
|
145 |
+
public $id;
|
146 |
+
/**
|
147 |
+
* @todo Rewrite as method and quess if null.
|
148 |
+
* @var unknown_type
|
149 |
+
*/
|
150 |
+
public $contentType = '';
|
151 |
+
public $xpath;
|
152 |
+
public $uuid = 0;
|
153 |
+
public $data = array();
|
154 |
+
public $dataNodes = array();
|
155 |
+
public $events = array();
|
156 |
+
public $eventsNodes = array();
|
157 |
+
public $eventsGlobal = array();
|
158 |
+
/**
|
159 |
+
* @TODO iframes support http://code.google.com/p/phpquery/issues/detail?id=28
|
160 |
+
* @var unknown_type
|
161 |
+
*/
|
162 |
+
public $frames = array();
|
163 |
+
/**
|
164 |
+
* Document root, by default equals to document itself.
|
165 |
+
* Used by documentFragments.
|
166 |
+
*
|
167 |
+
* @var DOMNode
|
168 |
+
*/
|
169 |
+
public $root;
|
170 |
+
public $isDocumentFragment;
|
171 |
+
public $isXML = false;
|
172 |
+
public $isXHTML = false;
|
173 |
+
public $isHTML = false;
|
174 |
+
public $charset;
|
175 |
+
public function __construct($markup = null, $contentType = null, $newDocumentID = null) {
|
176 |
+
if (isset($markup))
|
177 |
+
$this->load($markup, $contentType, $newDocumentID);
|
178 |
+
$this->id = $newDocumentID
|
179 |
+
? $newDocumentID
|
180 |
+
: md5(microtime());
|
181 |
+
}
|
182 |
+
public function load($markup, $contentType = null, $newDocumentID = null) {
|
183 |
+
// phpQuery::$documents[$id] = $this;
|
184 |
+
$this->contentType = strtolower($contentType);
|
185 |
+
if ($markup instanceof DOMDOCUMENT) {
|
186 |
+
$this->document = $markup;
|
187 |
+
$this->root = $this->document;
|
188 |
+
$this->charset = $this->document->encoding;
|
189 |
+
// TODO isDocumentFragment
|
190 |
+
} else {
|
191 |
+
$loaded = $this->loadMarkup($markup);
|
192 |
+
}
|
193 |
+
if ($loaded) {
|
194 |
+
// $this->document->formatOutput = true;
|
195 |
+
$this->document->preserveWhiteSpace = true;
|
196 |
+
$this->xpath = new DOMXPath($this->document);
|
197 |
+
$this->afterMarkupLoad();
|
198 |
+
return true;
|
199 |
+
// remember last loaded document
|
200 |
+
// return phpQuery::selectDocument($id);
|
201 |
+
}
|
202 |
+
return false;
|
203 |
+
}
|
204 |
+
protected function afterMarkupLoad() {
|
205 |
+
if ($this->isXHTML) {
|
206 |
+
$this->xpath->registerNamespace("html", "http://www.w3.org/1999/xhtml");
|
207 |
+
}
|
208 |
+
}
|
209 |
+
protected function loadMarkup($markup) {
|
210 |
+
$loaded = false;
|
211 |
+
if ($this->contentType) {
|
212 |
+
self::debug("Load markup for content type {$this->contentType}");
|
213 |
+
// content determined by contentType
|
214 |
+
list($contentType, $charset) = $this->contentTypeToArray($this->contentType);
|
215 |
+
switch($contentType) {
|
216 |
+
case 'text/html':
|
217 |
+
phpQuery::debug("Loading HTML, content type '{$this->contentType}'");
|
218 |
+
$loaded = $this->loadMarkupHTML($markup, $charset);
|
219 |
+
break;
|
220 |
+
case 'text/xml':
|
221 |
+
case 'application/xhtml+xml':
|
222 |
+
phpQuery::debug("Loading XML, content type '{$this->contentType}'");
|
223 |
+
$loaded = $this->loadMarkupXML($markup, $charset);
|
224 |
+
break;
|
225 |
+
default:
|
226 |
+
// for feeds or anything that sometimes doesn't use text/xml
|
227 |
+
if (strpos('xml', $this->contentType) !== false) {
|
228 |
+
phpQuery::debug("Loading XML, content type '{$this->contentType}'");
|
229 |
+
$loaded = $this->loadMarkupXML($markup, $charset);
|
230 |
+
} else
|
231 |
+
phpQuery::debug("Could not determine document type from content type '{$this->contentType}'");
|
232 |
+
}
|
233 |
+
} else {
|
234 |
+
// content type autodetection
|
235 |
+
if ($this->isXML($markup)) {
|
236 |
+
phpQuery::debug("Loading XML, isXML() == true");
|
237 |
+
$loaded = $this->loadMarkupXML($markup);
|
238 |
+
if (! $loaded && $this->isXHTML) {
|
239 |
+
phpQuery::debug('Loading as XML failed, trying to load as HTML, isXHTML == true');
|
240 |
+
$loaded = $this->loadMarkupHTML($markup);
|
241 |
+
}
|
242 |
+
} else {
|
243 |
+
phpQuery::debug("Loading HTML, isXML() == false");
|
244 |
+
$loaded = $this->loadMarkupHTML($markup);
|
245 |
+
}
|
246 |
+
}
|
247 |
+
return $loaded;
|
248 |
+
}
|
249 |
+
protected function loadMarkupReset() {
|
250 |
+
$this->isXML = $this->isXHTML = $this->isHTML = false;
|
251 |
+
}
|
252 |
+
protected function documentCreate($charset, $version = '1.0') {
|
253 |
+
if (! $version)
|
254 |
+
$version = '1.0';
|
255 |
+
$this->document = new DOMDocument($version, $charset);
|
256 |
+
$this->charset = $this->document->encoding;
|
257 |
+
// $this->document->encoding = $charset;
|
258 |
+
$this->document->formatOutput = true;
|
259 |
+
$this->document->preserveWhiteSpace = true;
|
260 |
+
}
|
261 |
+
protected function loadMarkupHTML($markup, $requestedCharset = null) {
|
262 |
+
if (phpQuery::$debug)
|
263 |
+
phpQuery::debug('Full markup load (HTML): '.substr($markup, 0, 250));
|
264 |
+
$this->loadMarkupReset();
|
265 |
+
$this->isHTML = true;
|
266 |
+
if (!isset($this->isDocumentFragment))
|
267 |
+
$this->isDocumentFragment = self::isDocumentFragmentHTML($markup);
|
268 |
+
$charset = null;
|
269 |
+
$documentCharset = $this->charsetFromHTML($markup);
|
270 |
+
$addDocumentCharset = false;
|
271 |
+
if ($documentCharset) {
|
272 |
+
$charset = $documentCharset;
|
273 |
+
$markup = $this->charsetFixHTML($markup);
|
274 |
+
} else if ($requestedCharset) {
|
275 |
+
$charset = $requestedCharset;
|
276 |
+
}
|
277 |
+
if (! $charset)
|
278 |
+
$charset = phpQuery::$defaultCharset;
|
279 |
+
// HTTP 1.1 says that the default charset is ISO-8859-1
|
280 |
+
// @see http://www.w3.org/International/O-HTTP-charset
|
281 |
+
if (! $documentCharset) {
|
282 |
+
$documentCharset = 'ISO-8859-1';
|
283 |
+
$addDocumentCharset = true;
|
284 |
+
}
|
285 |
+
// Should be careful here, still need 'magic encoding detection' since lots of pages have other 'default encoding'
|
286 |
+
// Worse, some pages can have mixed encodings... we'll try not to worry about that
|
287 |
+
$requestedCharset = strtoupper($requestedCharset);
|
288 |
+
$documentCharset = strtoupper($documentCharset);
|
289 |
+
phpQuery::debug("DOC: $documentCharset REQ: $requestedCharset");
|
290 |
+
if ($requestedCharset && $documentCharset && $requestedCharset !== $documentCharset) {
|
291 |
+
phpQuery::debug("CHARSET CONVERT");
|
292 |
+
// Document Encoding Conversion
|
293 |
+
// http://code.google.com/p/phpquery/issues/detail?id=86
|
294 |
+
if (function_exists('mb_detect_encoding')) {
|
295 |
+
$possibleCharsets = array($documentCharset, $requestedCharset, 'AUTO');
|
296 |
+
$docEncoding = mb_detect_encoding($markup, implode(', ', $possibleCharsets));
|
297 |
+
if (! $docEncoding)
|
298 |
+
$docEncoding = $documentCharset; // ok trust the document
|
299 |
+
phpQuery::debug("DETECTED '$docEncoding'");
|
300 |
+
// Detected does not match what document says...
|
301 |
+
if ($docEncoding !== $documentCharset) {
|
302 |
+
// Tricky..
|
303 |
+
}
|
304 |
+
if ($docEncoding !== $requestedCharset) {
|
305 |
+
phpQuery::debug("CONVERT $docEncoding => $requestedCharset");
|
306 |
+
$markup = mb_convert_encoding($markup, $requestedCharset, $docEncoding);
|
307 |
+
$markup = $this->charsetAppendToHTML($markup, $requestedCharset);
|
308 |
+
$charset = $requestedCharset;
|
309 |
+
}
|
310 |
+
} else {
|
311 |
+
phpQuery::debug("TODO: charset conversion without mbstring...");
|
312 |
+
}
|
313 |
+
}
|
314 |
+
$return = false;
|
315 |
+
if ($this->isDocumentFragment) {
|
316 |
+
phpQuery::debug("Full markup load (HTML), DocumentFragment detected, using charset '$charset'");
|
317 |
+
$return = $this->documentFragmentLoadMarkup($this, $charset, $markup);
|
318 |
+
} else {
|
319 |
+
if ($addDocumentCharset) {
|
320 |
+
phpQuery::debug("Full markup load (HTML), appending charset: '$charset'");
|
321 |
+
$markup = $this->charsetAppendToHTML($markup, $charset);
|
322 |
+
}
|
323 |
+
phpQuery::debug("Full markup load (HTML), documentCreate('$charset')");
|
324 |
+
$this->documentCreate($charset);
|
325 |
+
$return = phpQuery::$debug === 2
|
326 |
+
? $this->document->loadHTML($markup)
|
327 |
+
: @$this->document->loadHTML($markup);
|
328 |
+
if ($return)
|
329 |
+
$this->root = $this->document;
|
330 |
+
}
|
331 |
+
if ($return && ! $this->contentType)
|
332 |
+
$this->contentType = 'text/html';
|
333 |
+
return $return;
|
334 |
+
}
|
335 |
+
protected function loadMarkupXML($markup, $requestedCharset = null) {
|
336 |
+
if (phpQuery::$debug)
|
337 |
+
phpQuery::debug('Full markup load (XML): '.substr($markup, 0, 250));
|
338 |
+
$this->loadMarkupReset();
|
339 |
+
$this->isXML = true;
|
340 |
+
// check agains XHTML in contentType or markup
|
341 |
+
$isContentTypeXHTML = $this->isXHTML();
|
342 |
+
$isMarkupXHTML = $this->isXHTML($markup);
|
343 |
+
if ($isContentTypeXHTML || $isMarkupXHTML) {
|
344 |
+
self::debug('Full markup load (XML), XHTML detected');
|
345 |
+
$this->isXHTML = true;
|
346 |
+
}
|
347 |
+
// determine document fragment
|
348 |
+
if (! isset($this->isDocumentFragment))
|
349 |
+
$this->isDocumentFragment = $this->isXHTML
|
350 |
+
? self::isDocumentFragmentXHTML($markup)
|
351 |
+
: self::isDocumentFragmentXML($markup);
|
352 |
+
// this charset will be used
|
353 |
+
$charset = null;
|
354 |
+
// charset from XML declaration @var string
|
355 |
+
$documentCharset = $this->charsetFromXML($markup);
|
356 |
+
if (! $documentCharset) {
|
357 |
+
if ($this->isXHTML) {
|
358 |
+
// this is XHTML, try to get charset from content-type meta header
|
359 |
+
$documentCharset = $this->charsetFromHTML($markup);
|
360 |
+
if ($documentCharset) {
|
361 |
+
phpQuery::debug("Full markup load (XML), appending XHTML charset '$documentCharset'");
|
362 |
+
$this->charsetAppendToXML($markup, $documentCharset);
|
363 |
+
$charset = $documentCharset;
|
364 |
+
}
|
365 |
+
}
|
366 |
+
if (! $documentCharset) {
|
367 |
+
// if still no document charset...
|
368 |
+
$charset = $requestedCharset;
|
369 |
+
}
|
370 |
+
} else if ($requestedCharset) {
|
371 |
+
$charset = $requestedCharset;
|
372 |
+
}
|
373 |
+
if (! $charset) {
|
374 |
+
$charset = phpQuery::$defaultCharset;
|
375 |
+
}
|
376 |
+
if ($requestedCharset && $documentCharset && $requestedCharset != $documentCharset) {
|
377 |
+
// TODO place for charset conversion
|
378 |
+
// $charset = $requestedCharset;
|
379 |
+
}
|
380 |
+
$return = false;
|
381 |
+
if ($this->isDocumentFragment) {
|
382 |
+
phpQuery::debug("Full markup load (XML), DocumentFragment detected, using charset '$charset'");
|
383 |
+
$return = $this->documentFragmentLoadMarkup($this, $charset, $markup);
|
384 |
+
} else {
|
385 |
+
// FIXME ???
|
386 |
+
if ($isContentTypeXHTML && ! $isMarkupXHTML)
|
387 |
+
if (! $documentCharset) {
|
388 |
+
phpQuery::debug("Full markup load (XML), appending charset '$charset'");
|
389 |
+
$markup = $this->charsetAppendToXML($markup, $charset);
|
390 |
+
}
|
391 |
+
// see http://pl2.php.net/manual/en/book.dom.php#78929
|
392 |
+
// LIBXML_DTDLOAD (>= PHP 5.1)
|
393 |
+
// does XML ctalogues works with LIBXML_NONET
|
394 |
+
// $this->document->resolveExternals = true;
|
395 |
+
// TODO test LIBXML_COMPACT for performance improvement
|
396 |
+
// create document
|
397 |
+
$this->documentCreate($charset);
|
398 |
+
if (phpversion() < 5.1) {
|
399 |
+
$this->document->resolveExternals = true;
|
400 |
+
$return = phpQuery::$debug === 2
|
401 |
+
? $this->document->loadXML($markup)
|
402 |
+
: @$this->document->loadXML($markup);
|
403 |
+
} else {
|
404 |
+
/** @link http://pl2.php.net/manual/en/libxml.constants.php */
|
405 |
+
$libxmlStatic = phpQuery::$debug === 2
|
406 |
+
? LIBXML_DTDLOAD|LIBXML_DTDATTR|LIBXML_NONET
|
407 |
+
: LIBXML_DTDLOAD|LIBXML_DTDATTR|LIBXML_NONET|LIBXML_NOWARNING|LIBXML_NOERROR;
|
408 |
+
$return = $this->document->loadXML($markup, $libxmlStatic);
|
409 |
+
// if (! $return)
|
410 |
+
// $return = $this->document->loadHTML($markup);
|
411 |
+
}
|
412 |
+
if ($return)
|
413 |
+
$this->root = $this->document;
|
414 |
+
}
|
415 |
+
if ($return) {
|
416 |
+
if (! $this->contentType) {
|
417 |
+
if ($this->isXHTML)
|
418 |
+
$this->contentType = 'application/xhtml+xml';
|
419 |
+
else
|
420 |
+
$this->contentType = 'text/xml';
|
421 |
+
}
|
422 |
+
return $return;
|
423 |
+
} else {
|
424 |
+
throw new Exception("Error loading XML markup");
|
425 |
+
}
|
426 |
+
}
|
427 |
+
protected function isXHTML($markup = null) {
|
428 |
+
if (! isset($markup)) {
|
429 |
+
return strpos($this->contentType, 'xhtml') !== false;
|
430 |
+
}
|
431 |
+
// XXX ok ?
|
432 |
+
return strpos($markup, "<!DOCTYPE html") !== false;
|
433 |
+
// return stripos($doctype, 'xhtml') !== false;
|
434 |
+
// $doctype = isset($dom->doctype) && is_object($dom->doctype)
|
435 |
+
// ? $dom->doctype->publicId
|
436 |
+
// : self::$defaultDoctype;
|
437 |
+
}
|
438 |
+
protected function isXML($markup) {
|
439 |
+
// return strpos($markup, '<?xml') !== false && stripos($markup, 'xhtml') === false;
|
440 |
+
return strpos(substr($markup, 0, 100), '<'.'?xml') !== false;
|
441 |
+
}
|
442 |
+
protected function contentTypeToArray($contentType) {
|
443 |
+
$matches = explode(';', trim(strtolower($contentType)));
|
444 |
+
if (isset($matches[1])) {
|
445 |
+
$matches[1] = explode('=', $matches[1]);
|
446 |
+
// strip 'charset='
|
447 |
+
$matches[1] = isset($matches[1][1]) && trim($matches[1][1])
|
448 |
+
? $matches[1][1]
|
449 |
+
: $matches[1][0];
|
450 |
+
} else
|
451 |
+
$matches[1] = null;
|
452 |
+
return $matches;
|
453 |
+
}
|
454 |
+
/**
|
455 |
+
*
|
456 |
+
* @param $markup
|
457 |
+
* @return array contentType, charset
|
458 |
+
*/
|
459 |
+
protected function contentTypeFromHTML($markup) {
|
460 |
+
$matches = array();
|
461 |
+
// find meta tag
|
462 |
+
preg_match('@<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i',
|
463 |
+
$markup, $matches
|
464 |
+
);
|
465 |
+
if (! isset($matches[0]))
|
466 |
+
return array(null, null);
|
467 |
+
// get attr 'content'
|
468 |
+
preg_match('@content\\s*=\\s*(["|\'])(.+?)\\1@', $matches[0], $matches);
|
469 |
+
if (! isset($matches[0]))
|
470 |
+
return array(null, null);
|
471 |
+
return $this->contentTypeToArray($matches[2]);
|
472 |
+
}
|
473 |
+
protected function charsetFromHTML($markup) {
|
474 |
+
$contentType = $this->contentTypeFromHTML($markup);
|
475 |
+
return $contentType[1];
|
476 |
+
}
|
477 |
+
protected function charsetFromXML($markup) {
|
478 |
+
$matches;
|
479 |
+
// find declaration
|
480 |
+
preg_match('@<'.'?xml[^>]+encoding\\s*=\\s*(["|\'])(.*?)\\1@i',
|
481 |
+
$markup, $matches
|
482 |
+
);
|
483 |
+
return isset($matches[2])
|
484 |
+
? strtolower($matches[2])
|
485 |
+
: null;
|
486 |
+
}
|
487 |
+
/**
|
488 |
+
* Repositions meta[type=charset] at the start of head. Bypasses DOMDocument bug.
|
489 |
+
*
|
490 |
+
* @link http://code.google.com/p/phpquery/issues/detail?id=80
|
491 |
+
* @param $html
|
492 |
+
*/
|
493 |
+
protected function charsetFixHTML($markup) {
|
494 |
+
$matches = array();
|
495 |
+
// find meta tag
|
496 |
+
preg_match('@\s*<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i',
|
497 |
+
$markup, $matches, PREG_OFFSET_CAPTURE
|
498 |
+
);
|
499 |
+
if (! isset($matches[0]))
|
500 |
+
return;
|
501 |
+
$metaContentType = $matches[0][0];
|
502 |
+
$markup = substr($markup, 0, $matches[0][1])
|
503 |
+
.substr($markup, $matches[0][1]+strlen($metaContentType));
|
504 |
+
$headStart = stripos($markup, '<head>');
|
505 |
+
$markup = substr($markup, 0, $headStart+6).$metaContentType
|
506 |
+
.substr($markup, $headStart+6);
|
507 |
+
return $markup;
|
508 |
+
}
|
509 |
+
protected function charsetAppendToHTML($html, $charset, $xhtml = false) {
|
510 |
+
// remove existing meta[type=content-type]
|
511 |
+
$html = preg_replace('@\s*<meta[^>]+http-equiv\\s*=\\s*(["|\'])Content-Type\\1([^>]+?)>@i', '', $html);
|
512 |
+
$meta = '<meta http-equiv="Content-Type" content="text/html;charset='
|
513 |
+
.$charset.'" '
|
514 |
+
.($xhtml ? '/' : '')
|
515 |
+
.'>';
|
516 |
+
if (strpos($html, '<head') === false) {
|
517 |
+
if (strpos($hltml, '<html') === false) {
|
518 |
+
return $meta.$html;
|
519 |
+
} else {
|
520 |
+
return preg_replace(
|
521 |
+
'@<html(.*?)(?(?<!\?)>)@s',
|
522 |
+
"<html\\1><head>{$meta}</head>",
|
523 |
+
$html
|
524 |
+
);
|
525 |
+
}
|
526 |
+
} else {
|
527 |
+
return preg_replace(
|
528 |
+
'@<head(.*?)(?(?<!\?)>)@s',
|
529 |
+
'<head\\1>'.$meta,
|
530 |
+
$html
|
531 |
+
);
|
532 |
+
}
|
533 |
+
}
|
534 |
+
protected function charsetAppendToXML($markup, $charset) {
|
535 |
+
$declaration = '<'.'?xml version="1.0" encoding="'.$charset.'"?'.'>';
|
536 |
+
return $declaration.$markup;
|
537 |
+
}
|
538 |
+
public static function isDocumentFragmentHTML($markup) {
|
539 |
+
return stripos($markup, '<html') === false && stripos($markup, '<!doctype') === false;
|
540 |
+
}
|
541 |
+
public static function isDocumentFragmentXML($markup) {
|
542 |
+
return stripos($markup, '<'.'?xml') === false;
|
543 |
+
}
|
544 |
+
public static function isDocumentFragmentXHTML($markup) {
|
545 |
+
return self::isDocumentFragmentHTML($markup);
|
546 |
+
}
|
547 |
+
public function importAttr($value) {
|
548 |
+
// TODO
|
549 |
+
}
|
550 |
+
/**
|
551 |
+
*
|
552 |
+
* @param $source
|
553 |
+
* @param $target
|
554 |
+
* @param $sourceCharset
|
555 |
+
* @return array Array of imported nodes.
|
556 |
+
*/
|
557 |
+
public function import($source, $sourceCharset = null) {
|
558 |
+
// TODO charset conversions
|
559 |
+
$return = array();
|
560 |
+
if ($source instanceof DOMNODE && !($source instanceof DOMNODELIST))
|
561 |
+
$source = array($source);
|
562 |
+
// if (is_array($source)) {
|
563 |
+
// foreach($source as $node) {
|
564 |
+
// if (is_string($node)) {
|
565 |
+
// // string markup
|
566 |
+
// $fake = $this->documentFragmentCreate($node, $sourceCharset);
|
567 |
+
// if ($fake === false)
|
568 |
+
// throw new Exception("Error loading documentFragment markup");
|
569 |
+
// else
|
570 |
+
// $return = array_merge($return,
|
571 |
+
// $this->import($fake->root->childNodes)
|
572 |
+
// );
|
573 |
+
// } else {
|
574 |
+
// $return[] = $this->document->importNode($node, true);
|
575 |
+
// }
|
576 |
+
// }
|
577 |
+
// return $return;
|
578 |
+
// } else {
|
579 |
+
// // string markup
|
580 |
+
// $fake = $this->documentFragmentCreate($source, $sourceCharset);
|
581 |
+
// if ($fake === false)
|
582 |
+
// throw new Exception("Error loading documentFragment markup");
|
583 |
+
// else
|
584 |
+
// return $this->import($fake->root->childNodes);
|
585 |
+
// }
|
586 |
+
if (is_array($source) || $source instanceof DOMNODELIST) {
|
587 |
+
// dom nodes
|
588 |
+
self::debug('Importing nodes to document');
|
589 |
+
foreach($source as $node)
|
590 |
+
$return[] = $this->document->importNode($node, true);
|
591 |
+
} else {
|
592 |
+
// string markup
|
593 |
+
$fake = $this->documentFragmentCreate($source, $sourceCharset);
|
594 |
+
if ($fake === false)
|
595 |
+
throw new Exception("Error loading documentFragment markup");
|
596 |
+
else
|
597 |
+
return $this->import($fake->root->childNodes);
|
598 |
+
}
|
599 |
+
return $return;
|
600 |
+
}
|
601 |
+
/**
|
602 |
+
* Creates new document fragment.
|
603 |
+
*
|
604 |
+
* @param $source
|
605 |
+
* @return DOMDocumentWrapper
|
606 |
+
*/
|
607 |
+
protected function documentFragmentCreate($source, $charset = null) {
|
608 |
+
$fake = new DOMDocumentWrapper();
|
609 |
+
$fake->contentType = $this->contentType;
|
610 |
+
$fake->isXML = $this->isXML;
|
611 |
+
$fake->isHTML = $this->isHTML;
|
612 |
+
$fake->isXHTML = $this->isXHTML;
|
613 |
+
$fake->root = $fake->document;
|
614 |
+
if (! $charset)
|
615 |
+
$charset = $this->charset;
|
616 |
+
// $fake->documentCreate($this->charset);
|
617 |
+
if ($source instanceof DOMNODE && !($source instanceof DOMNODELIST))
|
618 |
+
$source = array($source);
|
619 |
+
if (is_array($source) || $source instanceof DOMNODELIST) {
|
620 |
+
// dom nodes
|
621 |
+
// load fake document
|
622 |
+
if (! $this->documentFragmentLoadMarkup($fake, $charset))
|
623 |
+
return false;
|
624 |
+
$nodes = $fake->import($source);
|
625 |
+
foreach($nodes as $node)
|
626 |
+
$fake->root->appendChild($node);
|
627 |
+
} else {
|
628 |
+
// string markup
|
629 |
+
$this->documentFragmentLoadMarkup($fake, $charset, $source);
|
630 |
+
}
|
631 |
+
return $fake;
|
632 |
+
}
|
633 |
+
/**
|
634 |
+
*
|
635 |
+
* @param $document DOMDocumentWrapper
|
636 |
+
* @param $markup
|
637 |
+
* @return $document
|
638 |
+
*/
|
639 |
+
private function documentFragmentLoadMarkup($fragment, $charset, $markup = null) {
|
640 |
+
// TODO error handling
|
641 |
+
// TODO copy doctype
|
642 |
+
// tempolary turn off
|
643 |
+
$fragment->isDocumentFragment = false;
|
644 |
+
if ($fragment->isXML) {
|
645 |
+
if ($fragment->isXHTML) {
|
646 |
+
// add FAKE element to set default namespace
|
647 |
+
$fragment->loadMarkupXML('<?xml version="1.0" encoding="'.$charset.'"?>'
|
648 |
+
.'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '
|
649 |
+
.'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
|
650 |
+
.'<fake xmlns="http://www.w3.org/1999/xhtml">'.$markup.'</fake>');
|
651 |
+
$fragment->root = $fragment->document->firstChild->nextSibling;
|
652 |
+
} else {
|
653 |
+
$fragment->loadMarkupXML('<?xml version="1.0" encoding="'.$charset.'"?><fake>'.$markup.'</fake>');
|
654 |
+
$fragment->root = $fragment->document->firstChild;
|
655 |
+
}
|
656 |
+
} else {
|
657 |
+
$markup2 = phpQuery::$defaultDoctype.'<html><head><meta http-equiv="Content-Type" content="text/html;charset='
|
658 |
+
.$charset.'"></head>';
|
659 |
+
$noBody = strpos($markup, '<body') === false;
|
660 |
+
if ($noBody)
|
661 |
+
$markup2 .= '<body>';
|
662 |
+
$markup2 .= $markup;
|
663 |
+
if ($noBody)
|
664 |
+
$markup2 .= '</body>';
|
665 |
+
$markup2 .= '</html>';
|
666 |
+
$fragment->loadMarkupHTML($markup2);
|
667 |
+
// TODO resolv body tag merging issue
|
668 |
+
$fragment->root = $noBody
|
669 |
+
? $fragment->document->firstChild->nextSibling->firstChild->nextSibling
|
670 |
+
: $fragment->document->firstChild->nextSibling->firstChild->nextSibling;
|
671 |
+
}
|
672 |
+
if (! $fragment->root)
|
673 |
+
return false;
|
674 |
+
$fragment->isDocumentFragment = true;
|
675 |
+
return true;
|
676 |
+
}
|
677 |
+
protected function documentFragmentToMarkup($fragment) {
|
678 |
+
phpQuery::debug('documentFragmentToMarkup');
|
679 |
+
$tmp = $fragment->isDocumentFragment;
|
680 |
+
$fragment->isDocumentFragment = false;
|
681 |
+
$markup = $fragment->markup();
|
682 |
+
if ($fragment->isXML) {
|
683 |
+
$markup = substr($markup, 0, strrpos($markup, '</fake>'));
|
684 |
+
if ($fragment->isXHTML) {
|
685 |
+
$markup = substr($markup, strpos($markup, '<fake')+43);
|
686 |
+
} else {
|
687 |
+
$markup = substr($markup, strpos($markup, '<fake>')+6);
|
688 |
+
}
|
689 |
+
} else {
|
690 |
+
$markup = substr($markup, strpos($markup, '<body>')+6);
|
691 |
+
$markup = substr($markup, 0, strrpos($markup, '</body>'));
|
692 |
+
}
|
693 |
+
$fragment->isDocumentFragment = $tmp;
|
694 |
+
if (phpQuery::$debug)
|
695 |
+
phpQuery::debug('documentFragmentToMarkup: '.substr($markup, 0, 150));
|
696 |
+
return $markup;
|
697 |
+
}
|
698 |
+
/**
|
699 |
+
* Return document markup, starting with optional $nodes as root.
|
700 |
+
*
|
701 |
+
* @param $nodes DOMNode|DOMNodeList
|
702 |
+
* @return string
|
703 |
+
*/
|
704 |
+
public function markup($nodes = null, $innerMarkup = false) {
|
705 |
+
if (isset($nodes) && count($nodes) == 1 && $nodes[0] instanceof DOMDOCUMENT)
|
706 |
+
$nodes = null;
|
707 |
+
if (isset($nodes)) {
|
708 |
+
$markup = '';
|
709 |
+
if (!is_array($nodes) && !($nodes instanceof DOMNODELIST) )
|
710 |
+
$nodes = array($nodes);
|
711 |
+
if ($this->isDocumentFragment && ! $innerMarkup)
|
712 |
+
foreach($nodes as $i => $node)
|
713 |
+
if ($node->isSameNode($this->root)) {
|
714 |
+
// var_dump($node);
|
715 |
+
$nodes = array_slice($nodes, 0, $i)
|
716 |
+
+ phpQuery::DOMNodeListToArray($node->childNodes)
|
717 |
+
+ array_slice($nodes, $i+1);
|
718 |
+
}
|
719 |
+
if ($this->isXML && ! $innerMarkup) {
|
720 |
+
self::debug("Getting outerXML with charset '{$this->charset}'");
|
721 |
+
// we need outerXML, so we can benefit from
|
722 |
+
// $node param support in saveXML()
|
723 |
+
foreach($nodes as $node)
|
724 |
+
$markup .= $this->document->saveXML($node);
|
725 |
+
} else {
|
726 |
+
$loop = array();
|
727 |
+
if ($innerMarkup)
|
728 |
+
foreach($nodes as $node) {
|
729 |
+
if ($node->childNodes)
|
730 |
+
foreach($node->childNodes as $child)
|
731 |
+
$loop[] = $child;
|
732 |
+
else
|
733 |
+
$loop[] = $node;
|
734 |
+
}
|
735 |
+
else
|
736 |
+
$loop = $nodes;
|
737 |
+
self::debug("Getting markup, moving selected nodes (".count($loop).") to new DocumentFragment");
|
738 |
+
$fake = $this->documentFragmentCreate($loop);
|
739 |
+
$markup = $this->documentFragmentToMarkup($fake);
|
740 |
+
}
|
741 |
+
if ($this->isXHTML) {
|
742 |
+
self::debug("Fixing XHTML");
|
743 |
+
$markup = self::markupFixXHTML($markup);
|
744 |
+
}
|
745 |
+
self::debug("Markup: ".substr($markup, 0, 250));
|
746 |
+
return $markup;
|
747 |
+
} else {
|
748 |
+
if ($this->isDocumentFragment) {
|
749 |
+
// documentFragment, html only...
|
750 |
+
self::debug("Getting markup, DocumentFragment detected");
|
751 |
+
// return $this->markup(
|
752 |
+
//// $this->document->getElementsByTagName('body')->item(0)
|
753 |
+
// $this->document->root, true
|
754 |
+
// );
|
755 |
+
$markup = $this->documentFragmentToMarkup($this);
|
756 |
+
// no need for markupFixXHTML, as it's done thought markup($nodes) method
|
757 |
+
return $markup;
|
758 |
+
} else {
|
759 |
+
self::debug("Getting markup (".($this->isXML?'XML':'HTML')."), final with charset '{$this->charset}'");
|
760 |
+
$markup = $this->isXML
|
761 |
+
? $this->document->saveXML()
|
762 |
+
: $this->document->saveHTML();
|
763 |
+
if ($this->isXHTML) {
|
764 |
+
self::debug("Fixing XHTML");
|
765 |
+
$markup = self::markupFixXHTML($markup);
|
766 |
+
}
|
767 |
+
self::debug("Markup: ".substr($markup, 0, 250));
|
768 |
+
return $markup;
|
769 |
+
}
|
770 |
+
}
|
771 |
+
}
|
772 |
+
protected static function markupFixXHTML($markup) {
|
773 |
+
$markup = self::expandEmptyTag('script', $markup);
|
774 |
+
$markup = self::expandEmptyTag('select', $markup);
|
775 |
+
$markup = self::expandEmptyTag('textarea', $markup);
|
776 |
+
return $markup;
|
777 |
+
}
|
778 |
+
public static function debug($text) {
|
779 |
+
phpQuery::debug($text);
|
780 |
+
}
|
781 |
+
/**
|
782 |
+
* expandEmptyTag
|
783 |
+
*
|
784 |
+
* @param $tag
|
785 |
+
* @param $xml
|
786 |
+
* @return unknown_type
|
787 |
+
* @author mjaque at ilkebenson dot com
|
788 |
+
* @link http://php.net/manual/en/domdocument.savehtml.php#81256
|
789 |
+
*/
|
790 |
+
public static function expandEmptyTag($tag, $xml){
|
791 |
+
$indice = 0;
|
792 |
+
while ($indice< strlen($xml)){
|
793 |
+
$pos = strpos($xml, "<$tag ", $indice);
|
794 |
+
if ($pos){
|
795 |
+
$posCierre = strpos($xml, ">", $pos);
|
796 |
+
if ($xml[$posCierre-1] == "/"){
|
797 |
+
$xml = substr_replace($xml, "></$tag>", $posCierre-1, 2);
|
798 |
+
}
|
799 |
+
$indice = $posCierre;
|
800 |
+
}
|
801 |
+
else break;
|
802 |
+
}
|
803 |
+
return $xml;
|
804 |
+
}
|
805 |
+
}
|
806 |
+
|
807 |
+
/**
|
808 |
+
* Event handling class.
|
809 |
+
*
|
810 |
+
* @author Tobiasz Cudnik
|
811 |
+
* @package phpQuery
|
812 |
+
* @static
|
813 |
+
*/
|
814 |
+
abstract class phpQueryEvents {
|
815 |
+
/**
|
816 |
+
* Trigger a type of event on every matched element.
|
817 |
+
*
|
818 |
+
* @param DOMNode|phpQueryObject|string $document
|
819 |
+
* @param unknown_type $type
|
820 |
+
* @param unknown_type $data
|
821 |
+
*
|
822 |
+
* @TODO exclusive events (with !)
|
823 |
+
* @TODO global events (test)
|
824 |
+
* @TODO support more than event in $type (space-separated)
|
825 |
+
*/
|
826 |
+
public static function trigger($document, $type, $data = array(), $node = null) {
|
827 |
+
// trigger: function(type, data, elem, donative, extra) {
|
828 |
+
$documentID = phpQuery::getDocumentID($document);
|
829 |
+
$namespace = null;
|
830 |
+
if (strpos($type, '.') !== false)
|
831 |
+
list($name, $namespace) = explode('.', $type);
|
832 |
+
else
|
833 |
+
$name = $type;
|
834 |
+
if (! $node) {
|
835 |
+
if (self::issetGlobal($documentID, $type)) {
|
836 |
+
$pq = phpQuery::getDocument($documentID);
|
837 |
+
// TODO check add($pq->document)
|
838 |
+
$pq->find('*')->add($pq->document)
|
839 |
+
->trigger($type, $data);
|
840 |
+
}
|
841 |
+
} else {
|
842 |
+
if (isset($data[0]) && $data[0] instanceof DOMEvent) {
|
843 |
+
$event = $data[0];
|
844 |
+
$event->relatedTarget = $event->target;
|
845 |
+
$event->target = $node;
|
846 |
+
$data = array_slice($data, 1);
|
847 |
+
} else {
|
848 |
+
$event = new DOMEvent(array(
|
849 |
+
'type' => $type,
|
850 |
+
'target' => $node,
|
851 |
+
'timeStamp' => time(),
|
852 |
+
));
|
853 |
+
}
|
854 |
+
$i = 0;
|
855 |
+
while($node) {
|
856 |
+
// TODO whois
|
857 |
+
phpQuery::debug("Triggering ".($i?"bubbled ":'')."event '{$type}' on "
|
858 |
+
."node \n");//.phpQueryObject::whois($node)."\n");
|
859 |
+
$event->currentTarget = $node;
|
860 |
+
$eventNode = self::getNode($documentID, $node);
|
861 |
+
if (isset($eventNode->eventHandlers)) {
|
862 |
+
foreach($eventNode->eventHandlers as $eventType => $handlers) {
|
863 |
+
$eventNamespace = null;
|
864 |
+
if (strpos($type, '.') !== false)
|
865 |
+
list($eventName, $eventNamespace) = explode('.', $eventType);
|
866 |
+
else
|
867 |
+
$eventName = $eventType;
|
868 |
+
if ($name != $eventName)
|
869 |
+
continue;
|
870 |
+
if ($namespace && $eventNamespace && $namespace != $eventNamespace)
|
871 |
+
continue;
|
872 |
+
foreach($handlers as $handler) {
|
873 |
+
phpQuery::debug("Calling event handler\n");
|
874 |
+
$event->data = $handler['data']
|
875 |
+
? $handler['data']
|
876 |
+
: null;
|
877 |
+
$params = array_merge(array($event), $data);
|
878 |
+
$return = phpQuery::callbackRun($handler['callback'], $params);
|
879 |
+
if ($return === false) {
|
880 |
+
$event->bubbles = false;
|
881 |
+
}
|
882 |
+
}
|
883 |
+
}
|
884 |
+
}
|
885 |
+
// to bubble or not to bubble...
|
886 |
+
if (! $event->bubbles)
|
887 |
+
break;
|
888 |
+
$node = $node->parentNode;
|
889 |
+
$i++;
|
890 |
+
}
|
891 |
+
}
|
892 |
+
}
|
893 |
+
/**
|
894 |
+
* Binds a handler to one or more events (like click) for each matched element.
|
895 |
+
* Can also bind custom events.
|
896 |
+
*
|
897 |
+
* @param DOMNode|phpQueryObject|string $document
|
898 |
+
* @param unknown_type $type
|
899 |
+
* @param unknown_type $data Optional
|
900 |
+
* @param unknown_type $callback
|
901 |
+
*
|
902 |
+
* @TODO support '!' (exclusive) events
|
903 |
+
* @TODO support more than event in $type (space-separated)
|
904 |
+
* @TODO support binding to global events
|
905 |
+
*/
|
906 |
+
public static function add($document, $node, $type, $data, $callback = null) {
|
907 |
+
phpQuery::debug("Binding '$type' event");
|
908 |
+
$documentID = phpQuery::getDocumentID($document);
|
909 |
+
// if (is_null($callback) && is_callable($data)) {
|
910 |
+
// $callback = $data;
|
911 |
+
// $data = null;
|
912 |
+
// }
|
913 |
+
$eventNode = self::getNode($documentID, $node);
|
914 |
+
if (! $eventNode)
|
915 |
+
$eventNode = self::setNode($documentID, $node);
|
916 |
+
if (!isset($eventNode->eventHandlers[$type]))
|
917 |
+
$eventNode->eventHandlers[$type] = array();
|
918 |
+
$eventNode->eventHandlers[$type][] = array(
|
919 |
+
'callback' => $callback,
|
920 |
+
'data' => $data,
|
921 |
+
);
|
922 |
+
}
|
923 |
+
/**
|
924 |
+
* Enter description here...
|
925 |
+
*
|
926 |
+
* @param DOMNode|phpQueryObject|string $document
|
927 |
+
* @param unknown_type $type
|
928 |
+
* @param unknown_type $callback
|
929 |
+
*
|
930 |
+
* @TODO namespace events
|
931 |
+
* @TODO support more than event in $type (space-separated)
|
932 |
+
*/
|
933 |
+
public static function remove($document, $node, $type = null, $callback = null) {
|
934 |
+
$documentID = phpQuery::getDocumentID($document);
|
935 |
+
$eventNode = self::getNode($documentID, $node);
|
936 |
+
if (is_object($eventNode) && isset($eventNode->eventHandlers[$type])) {
|
937 |
+
if ($callback) {
|
938 |
+
foreach($eventNode->eventHandlers[$type] as $k => $handler)
|
939 |
+
if ($handler['callback'] == $callback)
|
940 |
+
unset($eventNode->eventHandlers[$type][$k]);
|
941 |
+
} else {
|
942 |
+
unset($eventNode->eventHandlers[$type]);
|
943 |
+
}
|
944 |
+
}
|
945 |
+
}
|
946 |
+
protected static function getNode($documentID, $node) {
|
947 |
+
foreach(phpQuery::$documents[$documentID]->eventsNodes as $eventNode) {
|
948 |
+
if ($node->isSameNode($eventNode))
|
949 |
+
return $eventNode;
|
950 |
+
}
|
951 |
+
}
|
952 |
+
protected static function setNode($documentID, $node) {
|
953 |
+
phpQuery::$documents[$documentID]->eventsNodes[] = $node;
|
954 |
+
return phpQuery::$documents[$documentID]->eventsNodes[
|
955 |
+
count(phpQuery::$documents[$documentID]->eventsNodes)-1
|
956 |
+
];
|
957 |
+
}
|
958 |
+
protected static function issetGlobal($documentID, $type) {
|
959 |
+
return isset(phpQuery::$documents[$documentID])
|
960 |
+
? in_array($type, phpQuery::$documents[$documentID]->eventsGlobal)
|
961 |
+
: false;
|
962 |
+
}
|
963 |
+
}
|
964 |
+
|
965 |
+
|
966 |
+
interface ICallbackNamed {
|
967 |
+
function hasName();
|
968 |
+
function getName();
|
969 |
+
}
|
970 |
+
/**
|
971 |
+
* Callback class introduces currying-like pattern.
|
972 |
+
*
|
973 |
+
* Example:
|
974 |
+
* function foo($param1, $param2, $param3) {
|
975 |
+
* var_dump($param1, $param2, $param3);
|
976 |
+
* }
|
977 |
+
* $fooCurried = new Callback('foo',
|
978 |
+
* 'param1 is now statically set',
|
979 |
+
* new CallbackParam, new CallbackParam
|
980 |
+
* );
|
981 |
+
* phpQuery::callbackRun($fooCurried,
|
982 |
+
* array('param2 value', 'param3 value'
|
983 |
+
* );
|
984 |
+
*
|
985 |
+
* Callback class is supported in all phpQuery methods which accepts callbacks.
|
986 |
+
*
|
987 |
+
* @link http://code.google.com/p/phpquery/wiki/Callbacks#Param_Structures
|
988 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
989 |
+
*
|
990 |
+
* @TODO??? return fake forwarding function created via create_function
|
991 |
+
* @TODO honor paramStructure
|
992 |
+
*/
|
993 |
+
class Callback
|
994 |
+
implements ICallbackNamed {
|
995 |
+
public $callback = null;
|
996 |
+
public $params = null;
|
997 |
+
protected $name;
|
998 |
+
public function __construct($callback, $param1 = null, $param2 = null,
|
999 |
+
$param3 = null) {
|
1000 |
+
$params = func_get_args();
|
1001 |
+
$params = array_slice($params, 1);
|
1002 |
+
if ($callback instanceof Callback) {
|
1003 |
+
// TODO implement recurention
|
1004 |
+
} else {
|
1005 |
+
$this->callback = $callback;
|
1006 |
+
$this->params = $params;
|
1007 |
+
}
|
1008 |
+
}
|
1009 |
+
public function getName() {
|
1010 |
+
return 'Callback: '.$this->name;
|
1011 |
+
}
|
1012 |
+
public function hasName() {
|
1013 |
+
return isset($this->name) && $this->name;
|
1014 |
+
}
|
1015 |
+
public function setName($name) {
|
1016 |
+
$this->name = $name;
|
1017 |
+
return $this;
|
1018 |
+
}
|
1019 |
+
// TODO test me
|
1020 |
+
// public function addParams() {
|
1021 |
+
// $params = func_get_args();
|
1022 |
+
// return new Callback($this->callback, $this->params+$params);
|
1023 |
+
// }
|
1024 |
+
}
|
1025 |
+
/**
|
1026 |
+
* Shorthand for new Callback(create_function(...), ...);
|
1027 |
+
*
|
1028 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
1029 |
+
*/
|
1030 |
+
class CallbackBody extends Callback {
|
1031 |
+
public function __construct($paramList, $code, $param1 = null, $param2 = null,
|
1032 |
+
$param3 = null) {
|
1033 |
+
$params = func_get_args();
|
1034 |
+
$params = array_slice($params, 2);
|
1035 |
+
$this->callback = create_function($paramList, $code);
|
1036 |
+
$this->params = $params;
|
1037 |
+
}
|
1038 |
+
}
|
1039 |
+
/**
|
1040 |
+
* Callback type which on execution returns reference passed during creation.
|
1041 |
+
*
|
1042 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
1043 |
+
*/
|
1044 |
+
class CallbackReturnReference extends Callback
|
1045 |
+
implements ICallbackNamed {
|
1046 |
+
protected $reference;
|
1047 |
+
public function __construct(&$reference, $name = null){
|
1048 |
+
$this->reference =& $reference;
|
1049 |
+
$this->callback = array($this, 'callback');
|
1050 |
+
}
|
1051 |
+
public function callback() {
|
1052 |
+
return $this->reference;
|
1053 |
+
}
|
1054 |
+
public function getName() {
|
1055 |
+
return 'Callback: '.$this->name;
|
1056 |
+
}
|
1057 |
+
public function hasName() {
|
1058 |
+
return isset($this->name) && $this->name;
|
1059 |
+
}
|
1060 |
+
}
|
1061 |
+
/**
|
1062 |
+
* Callback type which on execution returns value passed during creation.
|
1063 |
+
*
|
1064 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
1065 |
+
*/
|
1066 |
+
class CallbackReturnValue extends Callback
|
1067 |
+
implements ICallbackNamed {
|
1068 |
+
protected $value;
|
1069 |
+
protected $name;
|
1070 |
+
public function __construct($value, $name = null){
|
1071 |
+
$this->value =& $value;
|
1072 |
+
$this->name = $name;
|
1073 |
+
$this->callback = array($this, 'callback');
|
1074 |
+
}
|
1075 |
+
public function callback() {
|
1076 |
+
return $this->value;
|
1077 |
+
}
|
1078 |
+
public function __toString() {
|
1079 |
+
return $this->getName();
|
1080 |
+
}
|
1081 |
+
public function getName() {
|
1082 |
+
return 'Callback: '.$this->name;
|
1083 |
+
}
|
1084 |
+
public function hasName() {
|
1085 |
+
return isset($this->name) && $this->name;
|
1086 |
+
}
|
1087 |
+
}
|
1088 |
+
/**
|
1089 |
+
* CallbackParameterToReference can be used when we don't really want a callback,
|
1090 |
+
* only parameter passed to it. CallbackParameterToReference takes first
|
1091 |
+
* parameter's value and passes it to reference.
|
1092 |
+
*
|
1093 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
1094 |
+
*/
|
1095 |
+
class CallbackParameterToReference extends Callback {
|
1096 |
+
/**
|
1097 |
+
* @param $reference
|
1098 |
+
* @TODO implement $paramIndex;
|
1099 |
+
* param index choose which callback param will be passed to reference
|
1100 |
+
*/
|
1101 |
+
public function __construct(&$reference){
|
1102 |
+
$this->callback =& $reference;
|
1103 |
+
}
|
1104 |
+
}
|
1105 |
+
//class CallbackReference extends Callback {
|
1106 |
+
// /**
|
1107 |
+
// *
|
1108 |
+
// * @param $reference
|
1109 |
+
// * @param $paramIndex
|
1110 |
+
// * @todo implement $paramIndex; param index choose which callback param will be passed to reference
|
1111 |
+
// */
|
1112 |
+
// public function __construct(&$reference, $name = null){
|
1113 |
+
// $this->callback =& $reference;
|
1114 |
+
// }
|
1115 |
+
//}
|
1116 |
+
class CallbackParam {}
|
1117 |
+
|
1118 |
+
/**
|
1119 |
+
* Class representing phpQuery objects.
|
1120 |
+
*
|
1121 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
1122 |
+
* @package phpQuery
|
1123 |
+
* @method phpQueryObject clone() clone()
|
1124 |
+
* @method phpQueryObject empty() empty()
|
1125 |
+
* @method phpQueryObject next() next($selector = null)
|
1126 |
+
* @method phpQueryObject prev() prev($selector = null)
|
1127 |
+
* @property Int $length
|
1128 |
+
*/
|
1129 |
+
class phpQueryObject
|
1130 |
+
implements Iterator, Countable, ArrayAccess {
|
1131 |
+
public $documentID = null;
|
1132 |
+
/**
|
1133 |
+
* DOMDocument class.
|
1134 |
+
*
|
1135 |
+
* @var DOMDocument
|
1136 |
+
*/
|
1137 |
+
public $document = null;
|
1138 |
+
public $charset = null;
|
1139 |
+
/**
|
1140 |
+
*
|
1141 |
+
* @var DOMDocumentWrapper
|
1142 |
+
*/
|
1143 |
+
public $documentWrapper = null;
|
1144 |
+
/**
|
1145 |
+
* XPath interface.
|
1146 |
+
*
|
1147 |
+
* @var DOMXPath
|
1148 |
+
*/
|
1149 |
+
public $xpath = null;
|
1150 |
+
/**
|
1151 |
+
* Stack of selected elements.
|
1152 |
+
* @TODO refactor to ->nodes
|
1153 |
+
* @var array
|
1154 |
+
*/
|
1155 |
+
public $elements = array();
|
1156 |
+
/**
|
1157 |
+
* @access private
|
1158 |
+
*/
|
1159 |
+
protected $elementsBackup = array();
|
1160 |
+
/**
|
1161 |
+
* @access private
|
1162 |
+
*/
|
1163 |
+
protected $previous = null;
|
1164 |
+
/**
|
1165 |
+
* @access private
|
1166 |
+
* @TODO deprecate
|
1167 |
+
*/
|
1168 |
+
protected $root = array();
|
1169 |
+
/**
|
1170 |
+
* Indicated if doument is just a fragment (no <html> tag).
|
1171 |
+
*
|
1172 |
+
* Every document is realy a full document, so even documentFragments can
|
1173 |
+
* be queried against <html>, but getDocument(id)->htmlOuter() will return
|
1174 |
+
* only contents of <body>.
|
1175 |
+
*
|
1176 |
+
* @var bool
|
1177 |
+
*/
|
1178 |
+
public $documentFragment = true;
|
1179 |
+
/**
|
1180 |
+
* Iterator interface helper
|
1181 |
+
* @access private
|
1182 |
+
*/
|
1183 |
+
protected $elementsInterator = array();
|
1184 |
+
/**
|
1185 |
+
* Iterator interface helper
|
1186 |
+
* @access private
|
1187 |
+
*/
|
1188 |
+
protected $valid = false;
|
1189 |
+
/**
|
1190 |
+
* Iterator interface helper
|
1191 |
+
* @access private
|
1192 |
+
*/
|
1193 |
+
protected $current = null;
|
1194 |
+
/**
|
1195 |
+
* Enter description here...
|
1196 |
+
*
|
1197 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1198 |
+
*/
|
1199 |
+
public function __construct($documentID) {
|
1200 |
+
// if ($documentID instanceof self)
|
1201 |
+
// var_dump($documentID->getDocumentID());
|
1202 |
+
$id = $documentID instanceof self
|
1203 |
+
? $documentID->getDocumentID()
|
1204 |
+
: $documentID;
|
1205 |
+
// var_dump($id);
|
1206 |
+
if (! isset(phpQuery::$documents[$id] )) {
|
1207 |
+
// var_dump(phpQuery::$documents);
|
1208 |
+
throw new Exception("Document with ID '{$id}' isn't loaded. Use phpQuery::newDocument(\$html) or phpQuery::newDocumentFile(\$file) first.");
|
1209 |
+
}
|
1210 |
+
$this->documentID = $id;
|
1211 |
+
$this->documentWrapper =& phpQuery::$documents[$id];
|
1212 |
+
$this->document =& $this->documentWrapper->document;
|
1213 |
+
$this->xpath =& $this->documentWrapper->xpath;
|
1214 |
+
$this->charset =& $this->documentWrapper->charset;
|
1215 |
+
$this->documentFragment =& $this->documentWrapper->isDocumentFragment;
|
1216 |
+
// TODO check $this->DOM->documentElement;
|
1217 |
+
// $this->root = $this->document->documentElement;
|
1218 |
+
$this->root =& $this->documentWrapper->root;
|
1219 |
+
// $this->toRoot();
|
1220 |
+
$this->elements = array($this->root);
|
1221 |
+
}
|
1222 |
+
/**
|
1223 |
+
*
|
1224 |
+
* @access private
|
1225 |
+
* @param $attr
|
1226 |
+
* @return unknown_type
|
1227 |
+
*/
|
1228 |
+
public function __get($attr) {
|
1229 |
+
switch($attr) {
|
1230 |
+
// FIXME doesnt work at all ?
|
1231 |
+
case 'length':
|
1232 |
+
return $this->size();
|
1233 |
+
break;
|
1234 |
+
default:
|
1235 |
+
return $this->$attr;
|
1236 |
+
}
|
1237 |
+
}
|
1238 |
+
/**
|
1239 |
+
* Saves actual object to $var by reference.
|
1240 |
+
* Useful when need to break chain.
|
1241 |
+
* @param phpQueryObject $var
|
1242 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1243 |
+
*/
|
1244 |
+
public function toReference(&$var) {
|
1245 |
+
return $var = $this;
|
1246 |
+
}
|
1247 |
+
public function documentFragment($state = null) {
|
1248 |
+
if ($state) {
|
1249 |
+
phpQuery::$documents[$this->getDocumentID()]['documentFragment'] = $state;
|
1250 |
+
return $this;
|
1251 |
+
}
|
1252 |
+
return $this->documentFragment;
|
1253 |
+
}
|
1254 |
+
/**
|
1255 |
+
* @access private
|
1256 |
+
* @TODO documentWrapper
|
1257 |
+
*/
|
1258 |
+
protected function isRoot( $node) {
|
1259 |
+
// return $node instanceof DOMDOCUMENT || $node->tagName == 'html';
|
1260 |
+
return $node instanceof DOMDOCUMENT
|
1261 |
+
|| ($node instanceof DOMELEMENT && $node->tagName == 'html')
|
1262 |
+
|| $this->root->isSameNode($node);
|
1263 |
+
}
|
1264 |
+
/**
|
1265 |
+
* @access private
|
1266 |
+
*/
|
1267 |
+
protected function stackIsRoot() {
|
1268 |
+
return $this->size() == 1 && $this->isRoot($this->elements[0]);
|
1269 |
+
}
|
1270 |
+
/**
|
1271 |
+
* Enter description here...
|
1272 |
+
* NON JQUERY METHOD
|
1273 |
+
*
|
1274 |
+
* Watch out, it doesn't creates new instance, can be reverted with end().
|
1275 |
+
*
|
1276 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1277 |
+
*/
|
1278 |
+
public function toRoot() {
|
1279 |
+
$this->elements = array($this->root);
|
1280 |
+
return $this;
|
1281 |
+
// return $this->newInstance(array($this->root));
|
1282 |
+
}
|
1283 |
+
/**
|
1284 |
+
* Saves object's DocumentID to $var by reference.
|
1285 |
+
* <code>
|
1286 |
+
* $myDocumentId;
|
1287 |
+
* phpQuery::newDocument('<div/>')
|
1288 |
+
* ->getDocumentIDRef($myDocumentId)
|
1289 |
+
* ->find('div')->...
|
1290 |
+
* </code>
|
1291 |
+
*
|
1292 |
+
* @param unknown_type $domId
|
1293 |
+
* @see phpQuery::newDocument
|
1294 |
+
* @see phpQuery::newDocumentFile
|
1295 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1296 |
+
*/
|
1297 |
+
public function getDocumentIDRef(&$documentID) {
|
1298 |
+
$documentID = $this->getDocumentID();
|
1299 |
+
return $this;
|
1300 |
+
}
|
1301 |
+
/**
|
1302 |
+
* Returns object with stack set to document root.
|
1303 |
+
*
|
1304 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1305 |
+
*/
|
1306 |
+
public function getDocument() {
|
1307 |
+
return phpQuery::getDocument($this->getDocumentID());
|
1308 |
+
}
|
1309 |
+
/**
|
1310 |
+
*
|
1311 |
+
* @return DOMDocument
|
1312 |
+
*/
|
1313 |
+
public function getDOMDocument() {
|
1314 |
+
return $this->document;
|
1315 |
+
}
|
1316 |
+
/**
|
1317 |
+
* Get object's Document ID.
|
1318 |
+
*
|
1319 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1320 |
+
*/
|
1321 |
+
public function getDocumentID() {
|
1322 |
+
return $this->documentID;
|
1323 |
+
}
|
1324 |
+
/**
|
1325 |
+
* Unloads whole document from memory.
|
1326 |
+
* CAUTION! None further operations will be possible on this document.
|
1327 |
+
* All objects refering to it will be useless.
|
1328 |
+
*
|
1329 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1330 |
+
*/
|
1331 |
+
public function unloadDocument() {
|
1332 |
+
phpQuery::unloadDocuments($this->getDocumentID());
|
1333 |
+
}
|
1334 |
+
public function isHTML() {
|
1335 |
+
return $this->documentWrapper->isHTML;
|
1336 |
+
}
|
1337 |
+
public function isXHTML() {
|
1338 |
+
return $this->documentWrapper->isXHTML;
|
1339 |
+
}
|
1340 |
+
public function isXML() {
|
1341 |
+
return $this->documentWrapper->isXML;
|
1342 |
+
}
|
1343 |
+
/**
|
1344 |
+
* Enter description here...
|
1345 |
+
*
|
1346 |
+
* @link http://docs.jquery.com/Ajax/serialize
|
1347 |
+
* @return string
|
1348 |
+
*/
|
1349 |
+
public function serialize() {
|
1350 |
+
return phpQuery::param($this->serializeArray());
|
1351 |
+
}
|
1352 |
+
/**
|
1353 |
+
* Enter description here...
|
1354 |
+
*
|
1355 |
+
* @link http://docs.jquery.com/Ajax/serializeArray
|
1356 |
+
* @return array
|
1357 |
+
*/
|
1358 |
+
public function serializeArray($submit = null) {
|
1359 |
+
$source = $this->filter('form, input, select, textarea')
|
1360 |
+
->find('input, select, textarea')
|
1361 |
+
->andSelf()
|
1362 |
+
->not('form');
|
1363 |
+
$return = array();
|
1364 |
+
// $source->dumpDie();
|
1365 |
+
foreach($source as $input) {
|
1366 |
+
$input = phpQuery::pq($input);
|
1367 |
+
if ($input->is('[disabled]'))
|
1368 |
+
continue;
|
1369 |
+
if (!$input->is('[name]'))
|
1370 |
+
continue;
|
1371 |
+
if ($input->is('[type=checkbox]') && !$input->is('[checked]'))
|
1372 |
+
continue;
|
1373 |
+
// jquery diff
|
1374 |
+
if ($submit && $input->is('[type=submit]')) {
|
1375 |
+
if ($submit instanceof DOMELEMENT && ! $input->elements[0]->isSameNode($submit))
|
1376 |
+
continue;
|
1377 |
+
else if (is_string($submit) && $input->attr('name') != $submit)
|
1378 |
+
continue;
|
1379 |
+
}
|
1380 |
+
$return[] = array(
|
1381 |
+
'name' => $input->attr('name'),
|
1382 |
+
'value' => $input->val(),
|
1383 |
+
);
|
1384 |
+
}
|
1385 |
+
return $return;
|
1386 |
+
}
|
1387 |
+
/**
|
1388 |
+
* @access private
|
1389 |
+
*/
|
1390 |
+
protected function debug($in) {
|
1391 |
+
if (! phpQuery::$debug )
|
1392 |
+
return;
|
1393 |
+
print('<pre>');
|
1394 |
+
print_r($in);
|
1395 |
+
// file debug
|
1396 |
+
// file_put_contents(dirname(__FILE__).'/phpQuery.log', print_r($in, true)."\n", FILE_APPEND);
|
1397 |
+
// quite handy debug trace
|
1398 |
+
// if ( is_array($in))
|
1399 |
+
// print_r(array_slice(debug_backtrace(), 3));
|
1400 |
+
print("</pre>\n");
|
1401 |
+
}
|
1402 |
+
/**
|
1403 |
+
* @access private
|
1404 |
+
*/
|
1405 |
+
protected function isRegexp($pattern) {
|
1406 |
+
return in_array(
|
1407 |
+
$pattern[ mb_strlen($pattern)-1 ],
|
1408 |
+
array('^','*','$')
|
1409 |
+
);
|
1410 |
+
}
|
1411 |
+
/**
|
1412 |
+
* Determines if $char is really a char.
|
1413 |
+
*
|
1414 |
+
* @param string $char
|
1415 |
+
* @return bool
|
1416 |
+
* @todo rewrite me to charcode range ! ;)
|
1417 |
+
* @access private
|
1418 |
+
*/
|
1419 |
+
protected function isChar($char) {
|
1420 |
+
return extension_loaded('mbstring') && in_array('mb_eregi', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
|
1421 |
+
? mb_eregi('\w', $char)
|
1422 |
+
: preg_match('@\w@', $char);
|
1423 |
+
}
|
1424 |
+
/**
|
1425 |
+
* @access private
|
1426 |
+
*/
|
1427 |
+
protected function parseSelector($query) {
|
1428 |
+
// clean spaces
|
1429 |
+
// TODO include this inside parsing ?
|
1430 |
+
$query = trim(
|
1431 |
+
preg_replace('@\s+@', ' ',
|
1432 |
+
preg_replace('@\s*(>|\\+|~)\s*@', '\\1', $query)
|
1433 |
+
)
|
1434 |
+
);
|
1435 |
+
$queries = array(array());
|
1436 |
+
if (! $query)
|
1437 |
+
return $queries;
|
1438 |
+
$return =& $queries[0];
|
1439 |
+
$specialChars = array('>',' ');
|
1440 |
+
// $specialCharsMapping = array('/' => '>');
|
1441 |
+
$specialCharsMapping = array();
|
1442 |
+
$strlen = mb_strlen($query);
|
1443 |
+
$classChars = array('.', '-');
|
1444 |
+
$pseudoChars = array('-');
|
1445 |
+
$tagChars = array('*', '|', '-');
|
1446 |
+
// split multibyte string
|
1447 |
+
// http://code.google.com/p/phpquery/issues/detail?id=76
|
1448 |
+
$_query = array();
|
1449 |
+
for ($i=0; $i<$strlen; $i++)
|
1450 |
+
$_query[] = mb_substr($query, $i, 1);
|
1451 |
+
$query = $_query;
|
1452 |
+
// it works, but i dont like it...
|
1453 |
+
$i = 0;
|
1454 |
+
while( $i < $strlen) {
|
1455 |
+
$c = $query[$i];
|
1456 |
+
$tmp = '';
|
1457 |
+
// TAG
|
1458 |
+
if ($this->isChar($c) || in_array($c, $tagChars)) {
|
1459 |
+
while(isset($query[$i])
|
1460 |
+
&& ($this->isChar($query[$i]) || in_array($query[$i], $tagChars))) {
|
1461 |
+
$tmp .= $query[$i];
|
1462 |
+
$i++;
|
1463 |
+
}
|
1464 |
+
$return[] = $tmp;
|
1465 |
+
// IDs
|
1466 |
+
} else if ( $c == '#') {
|
1467 |
+
$i++;
|
1468 |
+
while( isset($query[$i]) && ($this->isChar($query[$i]) || $query[$i] == '-')) {
|
1469 |
+
$tmp .= $query[$i];
|
1470 |
+
$i++;
|
1471 |
+
}
|
1472 |
+
$return[] = '#'.$tmp;
|
1473 |
+
// SPECIAL CHARS
|
1474 |
+
} else if (in_array($c, $specialChars)) {
|
1475 |
+
$return[] = $c;
|
1476 |
+
$i++;
|
1477 |
+
// MAPPED SPECIAL MULTICHARS
|
1478 |
+
// } else if ( $c.$query[$i+1] == '//') {
|
1479 |
+
// $return[] = ' ';
|
1480 |
+
// $i = $i+2;
|
1481 |
+
// MAPPED SPECIAL CHARS
|
1482 |
+
} else if ( isset($specialCharsMapping[$c])) {
|
1483 |
+
$return[] = $specialCharsMapping[$c];
|
1484 |
+
$i++;
|
1485 |
+
// COMMA
|
1486 |
+
} else if ( $c == ',') {
|
1487 |
+
$queries[] = array();
|
1488 |
+
$return =& $queries[ count($queries)-1 ];
|
1489 |
+
$i++;
|
1490 |
+
while( isset($query[$i]) && $query[$i] == ' ')
|
1491 |
+
$i++;
|
1492 |
+
// CLASSES
|
1493 |
+
} else if ($c == '.') {
|
1494 |
+
while( isset($query[$i]) && ($this->isChar($query[$i]) || in_array($query[$i], $classChars))) {
|
1495 |
+
$tmp .= $query[$i];
|
1496 |
+
$i++;
|
1497 |
+
}
|
1498 |
+
$return[] = $tmp;
|
1499 |
+
// ~ General Sibling Selector
|
1500 |
+
} else if ($c == '~') {
|
1501 |
+
$spaceAllowed = true;
|
1502 |
+
$tmp .= $query[$i++];
|
1503 |
+
while( isset($query[$i])
|
1504 |
+
&& ($this->isChar($query[$i])
|
1505 |
+
|| in_array($query[$i], $classChars)
|
1506 |
+
|| $query[$i] == '*'
|
1507 |
+
|| ($query[$i] == ' ' && $spaceAllowed)
|
1508 |
+
)) {
|
1509 |
+
if ($query[$i] != ' ')
|
1510 |
+
$spaceAllowed = false;
|
1511 |
+
$tmp .= $query[$i];
|
1512 |
+
$i++;
|
1513 |
+
}
|
1514 |
+
$return[] = $tmp;
|
1515 |
+
// + Adjacent sibling selectors
|
1516 |
+
} else if ($c == '+') {
|
1517 |
+
$spaceAllowed = true;
|
1518 |
+
$tmp .= $query[$i++];
|
1519 |
+
while( isset($query[$i])
|
1520 |
+
&& ($this->isChar($query[$i])
|
1521 |
+
|| in_array($query[$i], $classChars)
|
1522 |
+
|| $query[$i] == '*'
|
1523 |
+
|| ($spaceAllowed && $query[$i] == ' ')
|
1524 |
+
)) {
|
1525 |
+
if ($query[$i] != ' ')
|
1526 |
+
$spaceAllowed = false;
|
1527 |
+
$tmp .= $query[$i];
|
1528 |
+
$i++;
|
1529 |
+
}
|
1530 |
+
$return[] = $tmp;
|
1531 |
+
// ATTRS
|
1532 |
+
} else if ($c == '[') {
|
1533 |
+
$stack = 1;
|
1534 |
+
$tmp .= $c;
|
1535 |
+
while( isset($query[++$i])) {
|
1536 |
+
$tmp .= $query[$i];
|
1537 |
+
if ( $query[$i] == '[') {
|
1538 |
+
$stack++;
|
1539 |
+
} else if ( $query[$i] == ']') {
|
1540 |
+
$stack--;
|
1541 |
+
if (! $stack )
|
1542 |
+
break;
|
1543 |
+
}
|
1544 |
+
}
|
1545 |
+
$return[] = $tmp;
|
1546 |
+
$i++;
|
1547 |
+
// PSEUDO CLASSES
|
1548 |
+
} else if ($c == ':') {
|
1549 |
+
$stack = 1;
|
1550 |
+
$tmp .= $query[$i++];
|
1551 |
+
while( isset($query[$i]) && ($this->isChar($query[$i]) || in_array($query[$i], $pseudoChars))) {
|
1552 |
+
$tmp .= $query[$i];
|
1553 |
+
$i++;
|
1554 |
+
}
|
1555 |
+
// with arguments ?
|
1556 |
+
if ( isset($query[$i]) && $query[$i] == '(') {
|
1557 |
+
$tmp .= $query[$i];
|
1558 |
+
$stack = 1;
|
1559 |
+
while( isset($query[++$i])) {
|
1560 |
+
$tmp .= $query[$i];
|
1561 |
+
if ( $query[$i] == '(') {
|
1562 |
+
$stack++;
|
1563 |
+
} else if ( $query[$i] == ')') {
|
1564 |
+
$stack--;
|
1565 |
+
if (! $stack )
|
1566 |
+
break;
|
1567 |
+
}
|
1568 |
+
}
|
1569 |
+
$return[] = $tmp;
|
1570 |
+
$i++;
|
1571 |
+
} else {
|
1572 |
+
$return[] = $tmp;
|
1573 |
+
}
|
1574 |
+
} else {
|
1575 |
+
$i++;
|
1576 |
+
}
|
1577 |
+
}
|
1578 |
+
foreach($queries as $k => $q) {
|
1579 |
+
if (isset($q[0])) {
|
1580 |
+
if (isset($q[0][0]) && $q[0][0] == ':')
|
1581 |
+
array_unshift($queries[$k], '*');
|
1582 |
+
if ($q[0] != '>')
|
1583 |
+
array_unshift($queries[$k], ' ');
|
1584 |
+
}
|
1585 |
+
}
|
1586 |
+
return $queries;
|
1587 |
+
}
|
1588 |
+
/**
|
1589 |
+
* Return matched DOM nodes.
|
1590 |
+
*
|
1591 |
+
* @param int $index
|
1592 |
+
* @return array|DOMElement Single DOMElement or array of DOMElement.
|
1593 |
+
*/
|
1594 |
+
public function get($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
1595 |
+
$return = isset($index)
|
1596 |
+
? (isset($this->elements[$index]) ? $this->elements[$index] : null)
|
1597 |
+
: $this->elements;
|
1598 |
+
// pass thou callbacks
|
1599 |
+
$args = func_get_args();
|
1600 |
+
$args = array_slice($args, 1);
|
1601 |
+
foreach($args as $callback) {
|
1602 |
+
if (is_array($return))
|
1603 |
+
foreach($return as $k => $v)
|
1604 |
+
$return[$k] = phpQuery::callbackRun($callback, array($v));
|
1605 |
+
else
|
1606 |
+
$return = phpQuery::callbackRun($callback, array($return));
|
1607 |
+
}
|
1608 |
+
return $return;
|
1609 |
+
}
|
1610 |
+
/**
|
1611 |
+
* Return matched DOM nodes.
|
1612 |
+
* jQuery difference.
|
1613 |
+
*
|
1614 |
+
* @param int $index
|
1615 |
+
* @return array|string Returns string if $index != null
|
1616 |
+
* @todo implement callbacks
|
1617 |
+
* @todo return only arrays ?
|
1618 |
+
* @todo maybe other name...
|
1619 |
+
*/
|
1620 |
+
public function getString($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
1621 |
+
if ($index)
|
1622 |
+
$return = $this->eq($index)->text();
|
1623 |
+
else {
|
1624 |
+
$return = array();
|
1625 |
+
for($i = 0; $i < $this->size(); $i++) {
|
1626 |
+
$return[] = $this->eq($i)->text();
|
1627 |
+
}
|
1628 |
+
}
|
1629 |
+
// pass thou callbacks
|
1630 |
+
$args = func_get_args();
|
1631 |
+
$args = array_slice($args, 1);
|
1632 |
+
foreach($args as $callback) {
|
1633 |
+
$return = phpQuery::callbackRun($callback, array($return));
|
1634 |
+
}
|
1635 |
+
return $return;
|
1636 |
+
}
|
1637 |
+
/**
|
1638 |
+
* Return matched DOM nodes.
|
1639 |
+
* jQuery difference.
|
1640 |
+
*
|
1641 |
+
* @param int $index
|
1642 |
+
* @return array|string Returns string if $index != null
|
1643 |
+
* @todo implement callbacks
|
1644 |
+
* @todo return only arrays ?
|
1645 |
+
* @todo maybe other name...
|
1646 |
+
*/
|
1647 |
+
public function getStrings($index = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
1648 |
+
if ($index)
|
1649 |
+
$return = $this->eq($index)->text();
|
1650 |
+
else {
|
1651 |
+
$return = array();
|
1652 |
+
for($i = 0; $i < $this->size(); $i++) {
|
1653 |
+
$return[] = $this->eq($i)->text();
|
1654 |
+
}
|
1655 |
+
// pass thou callbacks
|
1656 |
+
$args = func_get_args();
|
1657 |
+
$args = array_slice($args, 1);
|
1658 |
+
}
|
1659 |
+
foreach($args as $callback) {
|
1660 |
+
if (is_array($return))
|
1661 |
+
foreach($return as $k => $v)
|
1662 |
+
$return[$k] = phpQuery::callbackRun($callback, array($v));
|
1663 |
+
else
|
1664 |
+
$return = phpQuery::callbackRun($callback, array($return));
|
1665 |
+
}
|
1666 |
+
return $return;
|
1667 |
+
}
|
1668 |
+
/**
|
1669 |
+
* Returns new instance of actual class.
|
1670 |
+
*
|
1671 |
+
* @param array $newStack Optional. Will replace old stack with new and move old one to history.c
|
1672 |
+
*/
|
1673 |
+
public function newInstance($newStack = null) {
|
1674 |
+
$class = get_class($this);
|
1675 |
+
// support inheritance by passing old object to overloaded constructor
|
1676 |
+
$new = $class != 'phpQuery'
|
1677 |
+
? new $class($this, $this->getDocumentID())
|
1678 |
+
: new phpQueryObject($this->getDocumentID());
|
1679 |
+
$new->previous = $this;
|
1680 |
+
if (is_null($newStack)) {
|
1681 |
+
$new->elements = $this->elements;
|
1682 |
+
if ($this->elementsBackup)
|
1683 |
+
$this->elements = $this->elementsBackup;
|
1684 |
+
} else if (is_string($newStack)) {
|
1685 |
+
$new->elements = phpQuery::pq($newStack, $this->getDocumentID())->stack();
|
1686 |
+
} else {
|
1687 |
+
$new->elements = $newStack;
|
1688 |
+
}
|
1689 |
+
return $new;
|
1690 |
+
}
|
1691 |
+
/**
|
1692 |
+
* Enter description here...
|
1693 |
+
*
|
1694 |
+
* In the future, when PHP will support XLS 2.0, then we would do that this way:
|
1695 |
+
* contains(tokenize(@class, '\s'), "something")
|
1696 |
+
* @param unknown_type $class
|
1697 |
+
* @param unknown_type $node
|
1698 |
+
* @return boolean
|
1699 |
+
* @access private
|
1700 |
+
*/
|
1701 |
+
protected function matchClasses($class, $node) {
|
1702 |
+
// multi-class
|
1703 |
+
if ( mb_strpos($class, '.', 1)) {
|
1704 |
+
$classes = explode('.', substr($class, 1));
|
1705 |
+
$classesCount = count( $classes );
|
1706 |
+
$nodeClasses = explode(' ', $node->getAttribute('class') );
|
1707 |
+
$nodeClassesCount = count( $nodeClasses );
|
1708 |
+
if ( $classesCount > $nodeClassesCount )
|
1709 |
+
return false;
|
1710 |
+
$diff = count(
|
1711 |
+
array_diff(
|
1712 |
+
$classes,
|
1713 |
+
$nodeClasses
|
1714 |
+
)
|
1715 |
+
);
|
1716 |
+
if (! $diff )
|
1717 |
+
return true;
|
1718 |
+
// single-class
|
1719 |
+
} else {
|
1720 |
+
return in_array(
|
1721 |
+
// strip leading dot from class name
|
1722 |
+
substr($class, 1),
|
1723 |
+
// get classes for element as array
|
1724 |
+
explode(' ', $node->getAttribute('class') )
|
1725 |
+
);
|
1726 |
+
}
|
1727 |
+
}
|
1728 |
+
/**
|
1729 |
+
* @access private
|
1730 |
+
*/
|
1731 |
+
protected function runQuery($XQuery, $selector = null, $compare = null) {
|
1732 |
+
if ($compare && ! method_exists($this, $compare))
|
1733 |
+
return false;
|
1734 |
+
$stack = array();
|
1735 |
+
if (! $this->elements)
|
1736 |
+
$this->debug('Stack empty, skipping...');
|
1737 |
+
// var_dump($this->elements[0]->nodeType);
|
1738 |
+
// element, document
|
1739 |
+
foreach($this->stack(array(1, 9, 13)) as $k => $stackNode) {
|
1740 |
+
$detachAfter = false;
|
1741 |
+
// to work on detached nodes we need temporary place them somewhere
|
1742 |
+
// thats because context xpath queries sucks ;]
|
1743 |
+
$testNode = $stackNode;
|
1744 |
+
while ($testNode) {
|
1745 |
+
if (! $testNode->parentNode && ! $this->isRoot($testNode)) {
|
1746 |
+
$this->root->appendChild($testNode);
|
1747 |
+
$detachAfter = $testNode;
|
1748 |
+
break;
|
1749 |
+
}
|
1750 |
+
$testNode = isset($testNode->parentNode)
|
1751 |
+
? $testNode->parentNode
|
1752 |
+
: null;
|
1753 |
+
}
|
1754 |
+
// XXX tmp ?
|
1755 |
+
$xpath = $this->documentWrapper->isXHTML
|
1756 |
+
? $this->getNodeXpath($stackNode, 'html')
|
1757 |
+
: $this->getNodeXpath($stackNode);
|
1758 |
+
// FIXME pseudoclasses-only query, support XML
|
1759 |
+
$query = $XQuery == '//' && $xpath == '/html[1]'
|
1760 |
+
? '//*'
|
1761 |
+
: $xpath.$XQuery;
|
1762 |
+
$this->debug("XPATH: {$query}");
|
1763 |
+
// run query, get elements
|
1764 |
+
$nodes = $this->xpath->query($query);
|
1765 |
+
$this->debug("QUERY FETCHED");
|
1766 |
+
if (! $nodes->length )
|
1767 |
+
$this->debug('Nothing found');
|
1768 |
+
$debug = array();
|
1769 |
+
foreach($nodes as $node) {
|
1770 |
+
$matched = false;
|
1771 |
+
if ( $compare) {
|
1772 |
+
phpQuery::$debug ?
|
1773 |
+
$this->debug("Found: ".$this->whois( $node ).", comparing with {$compare}()")
|
1774 |
+
: null;
|
1775 |
+
$phpQueryDebug = phpQuery::$debug;
|
1776 |
+
phpQuery::$debug = false;
|
1777 |
+
// TODO ??? use phpQuery::callbackRun()
|
1778 |
+
if (call_user_func_array(array($this, $compare), array($selector, $node)))
|
1779 |
+
$matched = true;
|
1780 |
+
phpQuery::$debug = $phpQueryDebug;
|
1781 |
+
} else {
|
1782 |
+
$matched = true;
|
1783 |
+
}
|
1784 |
+
if ( $matched) {
|
1785 |
+
if (phpQuery::$debug)
|
1786 |
+
$debug[] = $this->whois( $node );
|
1787 |
+
$stack[] = $node;
|
1788 |
+
}
|
1789 |
+
}
|
1790 |
+
if (phpQuery::$debug) {
|
1791 |
+
$this->debug("Matched ".count($debug).": ".implode(', ', $debug));
|
1792 |
+
}
|
1793 |
+
if ($detachAfter)
|
1794 |
+
$this->root->removeChild($detachAfter);
|
1795 |
+
}
|
1796 |
+
$this->elements = $stack;
|
1797 |
+
}
|
1798 |
+
/**
|
1799 |
+
* Enter description here...
|
1800 |
+
*
|
1801 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
1802 |
+
*/
|
1803 |
+
public function find($selectors, $context = null, $noHistory = false) {
|
1804 |
+
if (!$noHistory)
|
1805 |
+
// backup last stack /for end()/
|
1806 |
+
$this->elementsBackup = $this->elements;
|
1807 |
+
// allow to define context
|
1808 |
+
// TODO combine code below with phpQuery::pq() context guessing code
|
1809 |
+
// as generic function
|
1810 |
+
if ($context) {
|
1811 |
+
if (! is_array($context) && $context instanceof DOMELEMENT)
|
1812 |
+
$this->elements = array($context);
|
1813 |
+
else if (is_array($context)) {
|
1814 |
+
$this->elements = array();
|
1815 |
+
foreach ($context as $c)
|
1816 |
+
if ($c instanceof DOMELEMENT)
|
1817 |
+
$this->elements[] = $c;
|
1818 |
+
} else if ( $context instanceof self )
|
1819 |
+
$this->elements = $context->elements;
|
1820 |
+
}
|
1821 |
+
$queries = $this->parseSelector($selectors);
|
1822 |
+
$this->debug(array('FIND', $selectors, $queries));
|
1823 |
+
$XQuery = '';
|
1824 |
+
// remember stack state because of multi-queries
|
1825 |
+
$oldStack = $this->elements;
|
1826 |
+
// here we will be keeping found elements
|
1827 |
+
$stack = array();
|
1828 |
+
foreach($queries as $selector) {
|
1829 |
+
$this->elements = $oldStack;
|
1830 |
+
$delimiterBefore = false;
|
1831 |
+
foreach($selector as $s) {
|
1832 |
+
// TAG
|
1833 |
+
$isTag = extension_loaded('mbstring') && in_array('mb_ereg_match', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
|
1834 |
+
? mb_ereg_match('^[\w|\||-]+$', $s) || $s == '*'
|
1835 |
+
: preg_match('@^[\w|\||-]+$@', $s) || $s == '*';
|
1836 |
+
if ($isTag) {
|
1837 |
+
if ($this->isXML()) {
|
1838 |
+
// namespace support
|
1839 |
+
if (mb_strpos($s, '|') !== false) {
|
1840 |
+
$ns = $tag = null;
|
1841 |
+
list($ns, $tag) = explode('|', $s);
|
1842 |
+
$XQuery .= "$ns:$tag";
|
1843 |
+
} else if ($s == '*') {
|
1844 |
+
$XQuery .= "*";
|
1845 |
+
} else {
|
1846 |
+
$XQuery .= "*[local-name()='$s']";
|
1847 |
+
}
|
1848 |
+
} else {
|
1849 |
+
$XQuery .= $s;
|
1850 |
+
}
|
1851 |
+
// ID
|
1852 |
+
} else if ($s[0] == '#') {
|
1853 |
+
if ($delimiterBefore)
|
1854 |
+
$XQuery .= '*';
|
1855 |
+
$XQuery .= "[@id='".substr($s, 1)."']";
|
1856 |
+
// ATTRIBUTES
|
1857 |
+
} else if ($s[0] == '[') {
|
1858 |
+
if ($delimiterBefore)
|
1859 |
+
$XQuery .= '*';
|
1860 |
+
// strip side brackets
|
1861 |
+
$attr = trim($s, '][');
|
1862 |
+
$execute = false;
|
1863 |
+
// attr with specifed value
|
1864 |
+
if (mb_strpos($s, '=')) {
|
1865 |
+
$value = null;
|
1866 |
+
list($attr, $value) = explode('=', $attr);
|
1867 |
+
$value = trim($value, "'\"");
|
1868 |
+
if ($this->isRegexp($attr)) {
|
1869 |
+
// cut regexp character
|
1870 |
+
$attr = substr($attr, 0, -1);
|
1871 |
+
$execute = true;
|
1872 |
+
$XQuery .= "[@{$attr}]";
|
1873 |
+
} else {
|
1874 |
+
$XQuery .= "[@{$attr}='{$value}']";
|
1875 |
+
}
|
1876 |
+
// attr without specified value
|
1877 |
+
} else {
|
1878 |
+
$XQuery .= "[@{$attr}]";
|
1879 |
+
}
|
1880 |
+
if ($execute) {
|
1881 |
+
$this->runQuery($XQuery, $s, 'is');
|
1882 |
+
$XQuery = '';
|
1883 |
+
if (! $this->length())
|
1884 |
+
break;
|
1885 |
+
}
|
1886 |
+
// CLASSES
|
1887 |
+
} else if ($s[0] == '.') {
|
1888 |
+
// TODO use return $this->find("./self::*[contains(concat(\" \",@class,\" \"), \" $class \")]");
|
1889 |
+
// thx wizDom ;)
|
1890 |
+
if ($delimiterBefore)
|
1891 |
+
$XQuery .= '*';
|
1892 |
+
$XQuery .= '[@class]';
|
1893 |
+
$this->runQuery($XQuery, $s, 'matchClasses');
|
1894 |
+
$XQuery = '';
|
1895 |
+
if (! $this->length() )
|
1896 |
+
break;
|
1897 |
+
// ~ General Sibling Selector
|
1898 |
+
} else if ($s[0] == '~') {
|
1899 |
+
$this->runQuery($XQuery);
|
1900 |
+
$XQuery = '';
|
1901 |
+
$this->elements = $this
|
1902 |
+
->siblings(
|
1903 |
+
substr($s, 1)
|
1904 |
+
)->elements;
|
1905 |
+
if (! $this->length() )
|
1906 |
+
break;
|
1907 |
+
// + Adjacent sibling selectors
|
1908 |
+
} else if ($s[0] == '+') {
|
1909 |
+
// TODO /following-sibling::
|
1910 |
+
$this->runQuery($XQuery);
|
1911 |
+
$XQuery = '';
|
1912 |
+
$subSelector = substr($s, 1);
|
1913 |
+
$subElements = $this->elements;
|
1914 |
+
$this->elements = array();
|
1915 |
+
foreach($subElements as $node) {
|
1916 |
+
// search first DOMElement sibling
|
1917 |
+
$test = $node->nextSibling;
|
1918 |
+
while($test && ! ($test instanceof DOMELEMENT))
|
1919 |
+
$test = $test->nextSibling;
|
1920 |
+
if ($test && $this->is($subSelector, $test))
|
1921 |
+
$this->elements[] = $test;
|
1922 |
+
}
|
1923 |
+
if (! $this->length() )
|
1924 |
+
break;
|
1925 |
+
// PSEUDO CLASSES
|
1926 |
+
} else if ($s[0] == ':') {
|
1927 |
+
// TODO optimization for :first :last
|
1928 |
+
if ($XQuery) {
|
1929 |
+
$this->runQuery($XQuery);
|
1930 |
+
$XQuery = '';
|
1931 |
+
}
|
1932 |
+
if (! $this->length())
|
1933 |
+
break;
|
1934 |
+
$this->pseudoClasses($s);
|
1935 |
+
if (! $this->length())
|
1936 |
+
break;
|
1937 |
+
// DIRECT DESCENDANDS
|
1938 |
+
} else if ($s == '>') {
|
1939 |
+
$XQuery .= '/';
|
1940 |
+
$delimiterBefore = 2;
|
1941 |
+
// ALL DESCENDANDS
|
1942 |
+
} else if ($s == ' ') {
|
1943 |
+
$XQuery .= '//';
|
1944 |
+
$delimiterBefore = 2;
|
1945 |
+
// ERRORS
|
1946 |
+
} else {
|
1947 |
+
phpQuery::debug("Unrecognized token '$s'");
|
1948 |
+
}
|
1949 |
+
$delimiterBefore = $delimiterBefore === 2;
|
1950 |
+
}
|
1951 |
+
// run query if any
|
1952 |
+
if ($XQuery && $XQuery != '//') {
|
1953 |
+
$this->runQuery($XQuery);
|
1954 |
+
$XQuery = '';
|
1955 |
+
}
|
1956 |
+
foreach($this->elements as $node)
|
1957 |
+
if (! $this->elementsContainsNode($node, $stack))
|
1958 |
+
$stack[] = $node;
|
1959 |
+
}
|
1960 |
+
$this->elements = $stack;
|
1961 |
+
return $this->newInstance();
|
1962 |
+
}
|
1963 |
+
/**
|
1964 |
+
* @todo create API for classes with pseudoselectors
|
1965 |
+
* @access private
|
1966 |
+
*/
|
1967 |
+
protected function pseudoClasses($class) {
|
1968 |
+
// TODO clean args parsing ?
|
1969 |
+
$class = ltrim($class, ':');
|
1970 |
+
$haveArgs = mb_strpos($class, '(');
|
1971 |
+
if ($haveArgs !== false) {
|
1972 |
+
$args = substr($class, $haveArgs+1, -1);
|
1973 |
+
$class = substr($class, 0, $haveArgs);
|
1974 |
+
}
|
1975 |
+
switch($class) {
|
1976 |
+
case 'even':
|
1977 |
+
case 'odd':
|
1978 |
+
$stack = array();
|
1979 |
+
foreach($this->elements as $i => $node) {
|
1980 |
+
if ($class == 'even' && ($i%2) == 0)
|
1981 |
+
$stack[] = $node;
|
1982 |
+
else if ( $class == 'odd' && $i % 2 )
|
1983 |
+
$stack[] = $node;
|
1984 |
+
}
|
1985 |
+
$this->elements = $stack;
|
1986 |
+
break;
|
1987 |
+
case 'eq':
|
1988 |
+
$k = intval($args);
|
1989 |
+
$this->elements = isset( $this->elements[$k] )
|
1990 |
+
? array( $this->elements[$k] )
|
1991 |
+
: array();
|
1992 |
+
break;
|
1993 |
+
case 'gt':
|
1994 |
+
$this->elements = array_slice($this->elements, $args+1);
|
1995 |
+
break;
|
1996 |
+
case 'lt':
|
1997 |
+
$this->elements = array_slice($this->elements, 0, $args+1);
|
1998 |
+
break;
|
1999 |
+
case 'first':
|
2000 |
+
if (isset($this->elements[0]))
|
2001 |
+
$this->elements = array($this->elements[0]);
|
2002 |
+
break;
|
2003 |
+
case 'last':
|
2004 |
+
if ($this->elements)
|
2005 |
+
$this->elements = array($this->elements[count($this->elements)-1]);
|
2006 |
+
break;
|
2007 |
+
/*case 'parent':
|
2008 |
+
$stack = array();
|
2009 |
+
foreach($this->elements as $node) {
|
2010 |
+
if ( $node->childNodes->length )
|
2011 |
+
$stack[] = $node;
|
2012 |
+
}
|
2013 |
+
$this->elements = $stack;
|
2014 |
+
break;*/
|
2015 |
+
case 'contains':
|
2016 |
+
$text = trim($args, "\"'");
|
2017 |
+
$stack = array();
|
2018 |
+
foreach($this->elements as $node) {
|
2019 |
+
if (mb_stripos($node->textContent, $text) === false)
|
2020 |
+
continue;
|
2021 |
+
$stack[] = $node;
|
2022 |
+
}
|
2023 |
+
$this->elements = $stack;
|
2024 |
+
break;
|
2025 |
+
case 'not':
|
2026 |
+
$selector = self::unQuote($args);
|
2027 |
+
$this->elements = $this->not($selector)->stack();
|
2028 |
+
break;
|
2029 |
+
case 'slice':
|
2030 |
+
// TODO jQuery difference ?
|
2031 |
+
$args = explode(',',
|
2032 |
+
str_replace(', ', ',', trim($args, "\"'"))
|
2033 |
+
);
|
2034 |
+
$start = $args[0];
|
2035 |
+
$end = isset($args[1])
|
2036 |
+
? $args[1]
|
2037 |
+
: null;
|
2038 |
+
if ($end > 0)
|
2039 |
+
$end = $end-$start;
|
2040 |
+
$this->elements = array_slice($this->elements, $start, $end);
|
2041 |
+
break;
|
2042 |
+
case 'has':
|
2043 |
+
$selector = trim($args, "\"'");
|
2044 |
+
$stack = array();
|
2045 |
+
foreach($this->stack(1) as $el) {
|
2046 |
+
if ($this->find($selector, $el, true)->length)
|
2047 |
+
$stack[] = $el;
|
2048 |
+
}
|
2049 |
+
$this->elements = $stack;
|
2050 |
+
break;
|
2051 |
+
case 'submit':
|
2052 |
+
case 'reset':
|
2053 |
+
$this->elements = phpQuery::merge(
|
2054 |
+
$this->map(array($this, 'is'),
|
2055 |
+
"input[type=$class]", new CallbackParam()
|
2056 |
+
),
|
2057 |
+
$this->map(array($this, 'is'),
|
2058 |
+
"button[type=$class]", new CallbackParam()
|
2059 |
+
)
|
2060 |
+
);
|
2061 |
+
break;
|
2062 |
+
// $stack = array();
|
2063 |
+
// foreach($this->elements as $node)
|
2064 |
+
// if ($node->is('input[type=submit]') || $node->is('button[type=submit]'))
|
2065 |
+
// $stack[] = $el;
|
2066 |
+
// $this->elements = $stack;
|
2067 |
+
case 'input':
|
2068 |
+
$this->elements = $this->map(
|
2069 |
+
array($this, 'is'),
|
2070 |
+
'input', new CallbackParam()
|
2071 |
+
)->elements;
|
2072 |
+
break;
|
2073 |
+
case 'password':
|
2074 |
+
case 'checkbox':
|
2075 |
+
case 'radio':
|
2076 |
+
case 'hidden':
|
2077 |
+
case 'image':
|
2078 |
+
case 'file':
|
2079 |
+
$this->elements = $this->map(
|
2080 |
+
array($this, 'is'),
|
2081 |
+
"input[type=$class]", new CallbackParam()
|
2082 |
+
)->elements;
|
2083 |
+
break;
|
2084 |
+
case 'parent':
|
2085 |
+
$this->elements = $this->map(
|
2086 |
+
create_function('$node', '
|
2087 |
+
return $node instanceof DOMELEMENT && $node->childNodes->length
|
2088 |
+
? $node : null;')
|
2089 |
+
)->elements;
|
2090 |
+
break;
|
2091 |
+
case 'empty':
|
2092 |
+
$this->elements = $this->map(
|
2093 |
+
create_function('$node', '
|
2094 |
+
return $node instanceof DOMELEMENT && $node->childNodes->length
|
2095 |
+
? null : $node;')
|
2096 |
+
)->elements;
|
2097 |
+
break;
|
2098 |
+
case 'disabled':
|
2099 |
+
case 'selected':
|
2100 |
+
case 'checked':
|
2101 |
+
$this->elements = $this->map(
|
2102 |
+
array($this, 'is'),
|
2103 |
+
"[$class]", new CallbackParam()
|
2104 |
+
)->elements;
|
2105 |
+
break;
|
2106 |
+
case 'enabled':
|
2107 |
+
$this->elements = $this->map(
|
2108 |
+
create_function('$node', '
|
2109 |
+
return pq($node)->not(":disabled") ? $node : null;')
|
2110 |
+
)->elements;
|
2111 |
+
break;
|
2112 |
+
case 'header':
|
2113 |
+
$this->elements = $this->map(
|
2114 |
+
create_function('$node',
|
2115 |
+
'$isHeader = isset($node->tagName) && in_array($node->tagName, array(
|
2116 |
+
"h1", "h2", "h3", "h4", "h5", "h6", "h7"
|
2117 |
+
));
|
2118 |
+
return $isHeader
|
2119 |
+
? $node
|
2120 |
+
: null;')
|
2121 |
+
)->elements;
|
2122 |
+
// $this->elements = $this->map(
|
2123 |
+
// create_function('$node', '$node = pq($node);
|
2124 |
+
// return $node->is("h1")
|
2125 |
+
// || $node->is("h2")
|
2126 |
+
// || $node->is("h3")
|
2127 |
+
// || $node->is("h4")
|
2128 |
+
// || $node->is("h5")
|
2129 |
+
// || $node->is("h6")
|
2130 |
+
// || $node->is("h7")
|
2131 |
+
// ? $node
|
2132 |
+
// : null;')
|
2133 |
+
// )->elements;
|
2134 |
+
break;
|
2135 |
+
case 'only-child':
|
2136 |
+
$this->elements = $this->map(
|
2137 |
+
create_function('$node',
|
2138 |
+
'return pq($node)->siblings()->size() == 0 ? $node : null;')
|
2139 |
+
)->elements;
|
2140 |
+
break;
|
2141 |
+
case 'first-child':
|
2142 |
+
$this->elements = $this->map(
|
2143 |
+
create_function('$node', 'return pq($node)->prevAll()->size() == 0 ? $node : null;')
|
2144 |
+
)->elements;
|
2145 |
+
break;
|
2146 |
+
case 'last-child':
|
2147 |
+
$this->elements = $this->map(
|
2148 |
+
create_function('$node', 'return pq($node)->nextAll()->size() == 0 ? $node : null;')
|
2149 |
+
)->elements;
|
2150 |
+
break;
|
2151 |
+
case 'nth-child':
|
2152 |
+
$param = trim($args, "\"'");
|
2153 |
+
if (! $param)
|
2154 |
+
break;
|
2155 |
+
// nth-child(n+b) to nth-child(1n+b)
|
2156 |
+
if ($param{0} == 'n')
|
2157 |
+
$param = '1'.$param;
|
2158 |
+
// :nth-child(index/even/odd/equation)
|
2159 |
+
if ($param == 'even' || $param == 'odd')
|
2160 |
+
$mapped = $this->map(
|
2161 |
+
create_function('$node, $param',
|
2162 |
+
'$index = pq($node)->prevAll()->size()+1;
|
2163 |
+
if ($param == "even" && ($index%2) == 0)
|
2164 |
+
return $node;
|
2165 |
+
else if ($param == "odd" && $index%2 == 1)
|
2166 |
+
return $node;
|
2167 |
+
else
|
2168 |
+
return null;'),
|
2169 |
+
new CallbackParam(), $param
|
2170 |
+
);
|
2171 |
+
else if (mb_strlen($param) > 1 && $param{1} == 'n')
|
2172 |
+
// an+b
|
2173 |
+
$mapped = $this->map(
|
2174 |
+
create_function('$node, $param',
|
2175 |
+
'$prevs = pq($node)->prevAll()->size();
|
2176 |
+
$index = 1+$prevs;
|
2177 |
+
$b = mb_strlen($param) > 3
|
2178 |
+
? $param{3}
|
2179 |
+
: 0;
|
2180 |
+
$a = $param{0};
|
2181 |
+
if ($b && $param{2} == "-")
|
2182 |
+
$b = -$b;
|
2183 |
+
if ($a > 0) {
|
2184 |
+
return ($index-$b)%$a == 0
|
2185 |
+
? $node
|
2186 |
+
: null;
|
2187 |
+
phpQuery::debug($a."*".floor($index/$a)."+$b-1 == ".($a*floor($index/$a)+$b-1)." ?= $prevs");
|
2188 |
+
return $a*floor($index/$a)+$b-1 == $prevs
|
2189 |
+
? $node
|
2190 |
+
: null;
|
2191 |
+
} else if ($a == 0)
|
2192 |
+
return $index == $b
|
2193 |
+
? $node
|
2194 |
+
: null;
|
2195 |
+
else
|
2196 |
+
// negative value
|
2197 |
+
return $index <= $b
|
2198 |
+
? $node
|
2199 |
+
: null;
|
2200 |
+
// if (! $b)
|
2201 |
+
// return $index%$a == 0
|
2202 |
+
// ? $node
|
2203 |
+
// : null;
|
2204 |
+
// else
|
2205 |
+
// return ($index-$b)%$a == 0
|
2206 |
+
// ? $node
|
2207 |
+
// : null;
|
2208 |
+
'),
|
2209 |
+
new CallbackParam(), $param
|
2210 |
+
);
|
2211 |
+
else
|
2212 |
+
// index
|
2213 |
+
$mapped = $this->map(
|
2214 |
+
create_function('$node, $index',
|
2215 |
+
'$prevs = pq($node)->prevAll()->size();
|
2216 |
+
if ($prevs && $prevs == $index-1)
|
2217 |
+
return $node;
|
2218 |
+
else if (! $prevs && $index == 1)
|
2219 |
+
return $node;
|
2220 |
+
else
|
2221 |
+
return null;'),
|
2222 |
+
new CallbackParam(), $param
|
2223 |
+
);
|
2224 |
+
$this->elements = $mapped->elements;
|
2225 |
+
break;
|
2226 |
+
default:
|
2227 |
+
$this->debug("Unknown pseudoclass '{$class}', skipping...");
|
2228 |
+
}
|
2229 |
+
}
|
2230 |
+
/**
|
2231 |
+
* @access private
|
2232 |
+
*/
|
2233 |
+
protected function __pseudoClassParam($paramsString) {
|
2234 |
+
// TODO;
|
2235 |
+
}
|
2236 |
+
/**
|
2237 |
+
* Enter description here...
|
2238 |
+
*
|
2239 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2240 |
+
*/
|
2241 |
+
public function is($selector, $nodes = null) {
|
2242 |
+
phpQuery::debug(array("Is:", $selector));
|
2243 |
+
if (! $selector)
|
2244 |
+
return false;
|
2245 |
+
$oldStack = $this->elements;
|
2246 |
+
$returnArray = false;
|
2247 |
+
if ($nodes && is_array($nodes)) {
|
2248 |
+
$this->elements = $nodes;
|
2249 |
+
} else if ($nodes)
|
2250 |
+
$this->elements = array($nodes);
|
2251 |
+
$this->filter($selector, true);
|
2252 |
+
$stack = $this->elements;
|
2253 |
+
$this->elements = $oldStack;
|
2254 |
+
if ($nodes)
|
2255 |
+
return $stack ? $stack : null;
|
2256 |
+
return (bool)count($stack);
|
2257 |
+
}
|
2258 |
+
/**
|
2259 |
+
* Enter description here...
|
2260 |
+
* jQuery difference.
|
2261 |
+
*
|
2262 |
+
* Callback:
|
2263 |
+
* - $index int
|
2264 |
+
* - $node DOMNode
|
2265 |
+
*
|
2266 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2267 |
+
* @link http://docs.jquery.com/Traversing/filter
|
2268 |
+
*/
|
2269 |
+
public function filterCallback($callback, $_skipHistory = false) {
|
2270 |
+
if (! $_skipHistory) {
|
2271 |
+
$this->elementsBackup = $this->elements;
|
2272 |
+
$this->debug("Filtering by callback");
|
2273 |
+
}
|
2274 |
+
$newStack = array();
|
2275 |
+
foreach($this->elements as $index => $node) {
|
2276 |
+
$result = phpQuery::callbackRun($callback, array($index, $node));
|
2277 |
+
if (is_null($result) || (! is_null($result) && $result))
|
2278 |
+
$newStack[] = $node;
|
2279 |
+
}
|
2280 |
+
$this->elements = $newStack;
|
2281 |
+
return $_skipHistory
|
2282 |
+
? $this
|
2283 |
+
: $this->newInstance();
|
2284 |
+
}
|
2285 |
+
/**
|
2286 |
+
* Enter description here...
|
2287 |
+
*
|
2288 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2289 |
+
* @link http://docs.jquery.com/Traversing/filter
|
2290 |
+
*/
|
2291 |
+
public function filter($selectors, $_skipHistory = false) {
|
2292 |
+
if ($selectors instanceof Callback OR $selectors instanceof Closure)
|
2293 |
+
return $this->filterCallback($selectors, $_skipHistory);
|
2294 |
+
if (! $_skipHistory)
|
2295 |
+
$this->elementsBackup = $this->elements;
|
2296 |
+
$notSimpleSelector = array(' ', '>', '~', '+', '/');
|
2297 |
+
if (! is_array($selectors))
|
2298 |
+
$selectors = $this->parseSelector($selectors);
|
2299 |
+
if (! $_skipHistory)
|
2300 |
+
$this->debug(array("Filtering:", $selectors));
|
2301 |
+
$finalStack = array();
|
2302 |
+
foreach($selectors as $selector) {
|
2303 |
+
$stack = array();
|
2304 |
+
if (! $selector)
|
2305 |
+
break;
|
2306 |
+
// avoid first space or /
|
2307 |
+
if (in_array($selector[0], $notSimpleSelector))
|
2308 |
+
$selector = array_slice($selector, 1);
|
2309 |
+
// PER NODE selector chunks
|
2310 |
+
foreach($this->stack() as $node) {
|
2311 |
+
$break = false;
|
2312 |
+
foreach($selector as $s) {
|
2313 |
+
if (!($node instanceof DOMELEMENT)) {
|
2314 |
+
// all besides DOMElement
|
2315 |
+
if ( $s[0] == '[') {
|
2316 |
+
$attr = trim($s, '[]');
|
2317 |
+
if ( mb_strpos($attr, '=')) {
|
2318 |
+
list( $attr, $val ) = explode('=', $attr);
|
2319 |
+
if ($attr == 'nodeType' && $node->nodeType != $val)
|
2320 |
+
$break = true;
|
2321 |
+
}
|
2322 |
+
} else
|
2323 |
+
$break = true;
|
2324 |
+
} else {
|
2325 |
+
// DOMElement only
|
2326 |
+
// ID
|
2327 |
+
if ( $s[0] == '#') {
|
2328 |
+
if ( $node->getAttribute('id') != substr($s, 1) )
|
2329 |
+
$break = true;
|
2330 |
+
// CLASSES
|
2331 |
+
} else if ( $s[0] == '.') {
|
2332 |
+
if (! $this->matchClasses( $s, $node ) )
|
2333 |
+
$break = true;
|
2334 |
+
// ATTRS
|
2335 |
+
} else if ( $s[0] == '[') {
|
2336 |
+
// strip side brackets
|
2337 |
+
$attr = trim($s, '[]');
|
2338 |
+
if (mb_strpos($attr, '=')) {
|
2339 |
+
list($attr, $val) = explode('=', $attr);
|
2340 |
+
$val = self::unQuote($val);
|
2341 |
+
if ($attr == 'nodeType') {
|
2342 |
+
if ($val != $node->nodeType)
|
2343 |
+
$break = true;
|
2344 |
+
} else if ($this->isRegexp($attr)) {
|
2345 |
+
$val = extension_loaded('mbstring') && phpQuery::$mbstringSupport
|
2346 |
+
? quotemeta(trim($val, '"\''))
|
2347 |
+
: preg_quote(trim($val, '"\''), '@');
|
2348 |
+
// switch last character
|
2349 |
+
switch( substr($attr, -1)) {
|
2350 |
+
// quotemeta used insted of preg_quote
|
2351 |
+
// http://code.google.com/p/phpquery/issues/detail?id=76
|
2352 |
+
case '^':
|
2353 |
+
$pattern = '^'.$val;
|
2354 |
+
break;
|
2355 |
+
case '*':
|
2356 |
+
$pattern = '.*'.$val.'.*';
|
2357 |
+
break;
|
2358 |
+
case '$':
|
2359 |
+
$pattern = '.*'.$val.'$';
|
2360 |
+
break;
|
2361 |
+
}
|
2362 |
+
// cut last character
|
2363 |
+
$attr = substr($attr, 0, -1);
|
2364 |
+
$isMatch = extension_loaded('mbstring') && in_array('mb_ereg_match', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport
|
2365 |
+
? mb_ereg_match($pattern, $node->getAttribute($attr))
|
2366 |
+
: preg_match("@{$pattern}@", $node->getAttribute($attr));
|
2367 |
+
if (! $isMatch)
|
2368 |
+
$break = true;
|
2369 |
+
} else if ($node->getAttribute($attr) != $val)
|
2370 |
+
$break = true;
|
2371 |
+
} else if (! $node->hasAttribute($attr))
|
2372 |
+
$break = true;
|
2373 |
+
// PSEUDO CLASSES
|
2374 |
+
} else if ( $s[0] == ':') {
|
2375 |
+
// skip
|
2376 |
+
// TAG
|
2377 |
+
} else if (trim($s)) {
|
2378 |
+
if ($s != '*') {
|
2379 |
+
// TODO namespaces
|
2380 |
+
if (isset($node->tagName)) {
|
2381 |
+
if ($node->tagName != $s)
|
2382 |
+
$break = true;
|
2383 |
+
} else if ($s == 'html' && ! $this->isRoot($node))
|
2384 |
+
$break = true;
|
2385 |
+
}
|
2386 |
+
// AVOID NON-SIMPLE SELECTORS
|
2387 |
+
} else if (in_array($s, $notSimpleSelector)) {
|
2388 |
+
$break = true;
|
2389 |
+
$this->debug(array('Skipping non simple selector', $selector));
|
2390 |
+
}
|
2391 |
+
}
|
2392 |
+
if ($break)
|
2393 |
+
break;
|
2394 |
+
}
|
2395 |
+
// if element passed all chunks of selector - add it to new stack
|
2396 |
+
if (! $break )
|
2397 |
+
$stack[] = $node;
|
2398 |
+
}
|
2399 |
+
$tmpStack = $this->elements;
|
2400 |
+
$this->elements = $stack;
|
2401 |
+
// PER ALL NODES selector chunks
|
2402 |
+
foreach($selector as $s)
|
2403 |
+
// PSEUDO CLASSES
|
2404 |
+
if ($s[0] == ':')
|
2405 |
+
$this->pseudoClasses($s);
|
2406 |
+
foreach($this->elements as $node)
|
2407 |
+
// XXX it should be merged without duplicates
|
2408 |
+
// but jQuery doesnt do that
|
2409 |
+
$finalStack[] = $node;
|
2410 |
+
$this->elements = $tmpStack;
|
2411 |
+
}
|
2412 |
+
$this->elements = $finalStack;
|
2413 |
+
if ($_skipHistory) {
|
2414 |
+
return $this;
|
2415 |
+
} else {
|
2416 |
+
$this->debug("Stack length after filter(): ".count($finalStack));
|
2417 |
+
return $this->newInstance();
|
2418 |
+
}
|
2419 |
+
}
|
2420 |
+
/**
|
2421 |
+
*
|
2422 |
+
* @param $value
|
2423 |
+
* @return unknown_type
|
2424 |
+
* @TODO implement in all methods using passed parameters
|
2425 |
+
*/
|
2426 |
+
protected static function unQuote($value) {
|
2427 |
+
return $value[0] == '\'' || $value[0] == '"'
|
2428 |
+
? substr($value, 1, -1)
|
2429 |
+
: $value;
|
2430 |
+
}
|
2431 |
+
/**
|
2432 |
+
* Enter description here...
|
2433 |
+
*
|
2434 |
+
* @link http://docs.jquery.com/Ajax/load
|
2435 |
+
* @return phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2436 |
+
* @todo Support $selector
|
2437 |
+
*/
|
2438 |
+
public function load($url, $data = null, $callback = null) {
|
2439 |
+
if ($data && ! is_array($data)) {
|
2440 |
+
$callback = $data;
|
2441 |
+
$data = null;
|
2442 |
+
}
|
2443 |
+
if (mb_strpos($url, ' ') !== false) {
|
2444 |
+
$matches = null;
|
2445 |
+
if (extension_loaded('mbstring') && in_array('mb_ereg', get_extension_funcs("mbstring")) && phpQuery::$mbstringSupport)
|
2446 |
+
mb_ereg('^([^ ]+) (.*)$', $url, $matches);
|
2447 |
+
else
|
2448 |
+
preg_match('^([^ ]+) (.*)$', $url, $matches);
|
2449 |
+
$url = $matches[1];
|
2450 |
+
$selector = $matches[2];
|
2451 |
+
// FIXME this sucks, pass as callback param
|
2452 |
+
$this->_loadSelector = $selector;
|
2453 |
+
}
|
2454 |
+
$ajax = array(
|
2455 |
+
'url' => $url,
|
2456 |
+
'type' => $data ? 'POST' : 'GET',
|
2457 |
+
'data' => $data,
|
2458 |
+
'complete' => $callback,
|
2459 |
+
'success' => array($this, '__loadSuccess')
|
2460 |
+
);
|
2461 |
+
phpQuery::ajax($ajax);
|
2462 |
+
return $this;
|
2463 |
+
}
|
2464 |
+
/**
|
2465 |
+
* @access private
|
2466 |
+
* @param $html
|
2467 |
+
* @return unknown_type
|
2468 |
+
*/
|
2469 |
+
public function __loadSuccess($html) {
|
2470 |
+
if ($this->_loadSelector) {
|
2471 |
+
$html = phpQuery::newDocument($html)->find($this->_loadSelector);
|
2472 |
+
unset($this->_loadSelector);
|
2473 |
+
}
|
2474 |
+
foreach($this->stack(1) as $node) {
|
2475 |
+
phpQuery::pq($node, $this->getDocumentID())
|
2476 |
+
->markup($html);
|
2477 |
+
}
|
2478 |
+
}
|
2479 |
+
/**
|
2480 |
+
* Enter description here...
|
2481 |
+
*
|
2482 |
+
* @return phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2483 |
+
* @todo
|
2484 |
+
*/
|
2485 |
+
public function css() {
|
2486 |
+
// TODO
|
2487 |
+
return $this;
|
2488 |
+
}
|
2489 |
+
/**
|
2490 |
+
* @todo
|
2491 |
+
*
|
2492 |
+
*/
|
2493 |
+
public function show(){
|
2494 |
+
// TODO
|
2495 |
+
return $this;
|
2496 |
+
}
|
2497 |
+
/**
|
2498 |
+
* @todo
|
2499 |
+
*
|
2500 |
+
*/
|
2501 |
+
public function hide(){
|
2502 |
+
// TODO
|
2503 |
+
return $this;
|
2504 |
+
}
|
2505 |
+
/**
|
2506 |
+
* Trigger a type of event on every matched element.
|
2507 |
+
*
|
2508 |
+
* @param unknown_type $type
|
2509 |
+
* @param unknown_type $data
|
2510 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2511 |
+
* @TODO support more than event in $type (space-separated)
|
2512 |
+
*/
|
2513 |
+
public function trigger($type, $data = array()) {
|
2514 |
+
foreach($this->elements as $node)
|
2515 |
+
phpQueryEvents::trigger($this->getDocumentID(), $type, $data, $node);
|
2516 |
+
return $this;
|
2517 |
+
}
|
2518 |
+
/**
|
2519 |
+
* This particular method triggers all bound event handlers on an element (for a specific event type) WITHOUT executing the browsers default actions.
|
2520 |
+
*
|
2521 |
+
* @param unknown_type $type
|
2522 |
+
* @param unknown_type $data
|
2523 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2524 |
+
* @TODO
|
2525 |
+
*/
|
2526 |
+
public function triggerHandler($type, $data = array()) {
|
2527 |
+
// TODO;
|
2528 |
+
}
|
2529 |
+
/**
|
2530 |
+
* Binds a handler to one or more events (like click) for each matched element.
|
2531 |
+
* Can also bind custom events.
|
2532 |
+
*
|
2533 |
+
* @param unknown_type $type
|
2534 |
+
* @param unknown_type $data Optional
|
2535 |
+
* @param unknown_type $callback
|
2536 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2537 |
+
* @TODO support '!' (exclusive) events
|
2538 |
+
* @TODO support more than event in $type (space-separated)
|
2539 |
+
*/
|
2540 |
+
public function bind($type, $data, $callback = null) {
|
2541 |
+
// TODO check if $data is callable, not using is_callable
|
2542 |
+
if (! isset($callback)) {
|
2543 |
+
$callback = $data;
|
2544 |
+
$data = null;
|
2545 |
+
}
|
2546 |
+
foreach($this->elements as $node)
|
2547 |
+
phpQueryEvents::add($this->getDocumentID(), $node, $type, $data, $callback);
|
2548 |
+
return $this;
|
2549 |
+
}
|
2550 |
+
/**
|
2551 |
+
* Enter description here...
|
2552 |
+
*
|
2553 |
+
* @param unknown_type $type
|
2554 |
+
* @param unknown_type $callback
|
2555 |
+
* @return unknown
|
2556 |
+
* @TODO namespace events
|
2557 |
+
* @TODO support more than event in $type (space-separated)
|
2558 |
+
*/
|
2559 |
+
public function unbind($type = null, $callback = null) {
|
2560 |
+
foreach($this->elements as $node)
|
2561 |
+
phpQueryEvents::remove($this->getDocumentID(), $node, $type, $callback);
|
2562 |
+
return $this;
|
2563 |
+
}
|
2564 |
+
/**
|
2565 |
+
* Enter description here...
|
2566 |
+
*
|
2567 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2568 |
+
*/
|
2569 |
+
public function change($callback = null) {
|
2570 |
+
if ($callback)
|
2571 |
+
return $this->bind('change', $callback);
|
2572 |
+
return $this->trigger('change');
|
2573 |
+
}
|
2574 |
+
/**
|
2575 |
+
* Enter description here...
|
2576 |
+
*
|
2577 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2578 |
+
*/
|
2579 |
+
public function submit($callback = null) {
|
2580 |
+
if ($callback)
|
2581 |
+
return $this->bind('submit', $callback);
|
2582 |
+
return $this->trigger('submit');
|
2583 |
+
}
|
2584 |
+
/**
|
2585 |
+
* Enter description here...
|
2586 |
+
*
|
2587 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2588 |
+
*/
|
2589 |
+
public function click($callback = null) {
|
2590 |
+
if ($callback)
|
2591 |
+
return $this->bind('click', $callback);
|
2592 |
+
return $this->trigger('click');
|
2593 |
+
}
|
2594 |
+
/**
|
2595 |
+
* Enter description here...
|
2596 |
+
*
|
2597 |
+
* @param String|phpQuery
|
2598 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2599 |
+
*/
|
2600 |
+
public function wrapAllOld($wrapper) {
|
2601 |
+
$wrapper = pq($wrapper)->_clone();
|
2602 |
+
if (! $wrapper->length() || ! $this->length() )
|
2603 |
+
return $this;
|
2604 |
+
$wrapper->insertBefore($this->elements[0]);
|
2605 |
+
$deepest = $wrapper->elements[0];
|
2606 |
+
while($deepest->firstChild && $deepest->firstChild instanceof DOMELEMENT)
|
2607 |
+
$deepest = $deepest->firstChild;
|
2608 |
+
pq($deepest)->append($this);
|
2609 |
+
return $this;
|
2610 |
+
}
|
2611 |
+
/**
|
2612 |
+
* Enter description here...
|
2613 |
+
*
|
2614 |
+
* TODO testme...
|
2615 |
+
* @param String|phpQuery
|
2616 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2617 |
+
*/
|
2618 |
+
public function wrapAll($wrapper) {
|
2619 |
+
if (! $this->length())
|
2620 |
+
return $this;
|
2621 |
+
return phpQuery::pq($wrapper, $this->getDocumentID())
|
2622 |
+
->clone()
|
2623 |
+
->insertBefore($this->get(0))
|
2624 |
+
->map(array($this, '___wrapAllCallback'))
|
2625 |
+
->append($this);
|
2626 |
+
}
|
2627 |
+
/**
|
2628 |
+
*
|
2629 |
+
* @param $node
|
2630 |
+
* @return unknown_type
|
2631 |
+
* @access private
|
2632 |
+
*/
|
2633 |
+
public function ___wrapAllCallback($node) {
|
2634 |
+
$deepest = $node;
|
2635 |
+
while($deepest->firstChild && $deepest->firstChild instanceof DOMELEMENT)
|
2636 |
+
$deepest = $deepest->firstChild;
|
2637 |
+
return $deepest;
|
2638 |
+
}
|
2639 |
+
/**
|
2640 |
+
* Enter description here...
|
2641 |
+
* NON JQUERY METHOD
|
2642 |
+
*
|
2643 |
+
* @param String|phpQuery
|
2644 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2645 |
+
*/
|
2646 |
+
public function wrapAllPHP($codeBefore, $codeAfter) {
|
2647 |
+
return $this
|
2648 |
+
->slice(0, 1)
|
2649 |
+
->beforePHP($codeBefore)
|
2650 |
+
->end()
|
2651 |
+
->slice(-1)
|
2652 |
+
->afterPHP($codeAfter)
|
2653 |
+
->end();
|
2654 |
+
}
|
2655 |
+
/**
|
2656 |
+
* Enter description here...
|
2657 |
+
*
|
2658 |
+
* @param String|phpQuery
|
2659 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2660 |
+
*/
|
2661 |
+
public function wrap($wrapper) {
|
2662 |
+
foreach($this->stack() as $node)
|
2663 |
+
phpQuery::pq($node, $this->getDocumentID())->wrapAll($wrapper);
|
2664 |
+
return $this;
|
2665 |
+
}
|
2666 |
+
/**
|
2667 |
+
* Enter description here...
|
2668 |
+
*
|
2669 |
+
* @param String|phpQuery
|
2670 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2671 |
+
*/
|
2672 |
+
public function wrapPHP($codeBefore, $codeAfter) {
|
2673 |
+
foreach($this->stack() as $node)
|
2674 |
+
phpQuery::pq($node, $this->getDocumentID())->wrapAllPHP($codeBefore, $codeAfter);
|
2675 |
+
return $this;
|
2676 |
+
}
|
2677 |
+
/**
|
2678 |
+
* Enter description here...
|
2679 |
+
*
|
2680 |
+
* @param String|phpQuery
|
2681 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2682 |
+
*/
|
2683 |
+
public function wrapInner($wrapper) {
|
2684 |
+
foreach($this->stack() as $node)
|
2685 |
+
phpQuery::pq($node, $this->getDocumentID())->contents()->wrapAll($wrapper);
|
2686 |
+
return $this;
|
2687 |
+
}
|
2688 |
+
/**
|
2689 |
+
* Enter description here...
|
2690 |
+
*
|
2691 |
+
* @param String|phpQuery
|
2692 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2693 |
+
*/
|
2694 |
+
public function wrapInnerPHP($codeBefore, $codeAfter) {
|
2695 |
+
foreach($this->stack(1) as $node)
|
2696 |
+
phpQuery::pq($node, $this->getDocumentID())->contents()
|
2697 |
+
->wrapAllPHP($codeBefore, $codeAfter);
|
2698 |
+
return $this;
|
2699 |
+
}
|
2700 |
+
/**
|
2701 |
+
* Enter description here...
|
2702 |
+
*
|
2703 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2704 |
+
* @testme Support for text nodes
|
2705 |
+
*/
|
2706 |
+
public function contents() {
|
2707 |
+
$stack = array();
|
2708 |
+
foreach($this->stack(1) as $el) {
|
2709 |
+
// FIXME (fixed) http://code.google.com/p/phpquery/issues/detail?id=56
|
2710 |
+
// if (! isset($el->childNodes))
|
2711 |
+
// continue;
|
2712 |
+
foreach($el->childNodes as $node) {
|
2713 |
+
$stack[] = $node;
|
2714 |
+
}
|
2715 |
+
}
|
2716 |
+
return $this->newInstance($stack);
|
2717 |
+
}
|
2718 |
+
/**
|
2719 |
+
* Enter description here...
|
2720 |
+
*
|
2721 |
+
* jQuery difference.
|
2722 |
+
*
|
2723 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2724 |
+
*/
|
2725 |
+
public function contentsUnwrap() {
|
2726 |
+
foreach($this->stack(1) as $node) {
|
2727 |
+
if (! $node->parentNode )
|
2728 |
+
continue;
|
2729 |
+
$childNodes = array();
|
2730 |
+
// any modification in DOM tree breaks childNodes iteration, so cache them first
|
2731 |
+
foreach($node->childNodes as $chNode )
|
2732 |
+
$childNodes[] = $chNode;
|
2733 |
+
foreach($childNodes as $chNode )
|
2734 |
+
// $node->parentNode->appendChild($chNode);
|
2735 |
+
$node->parentNode->insertBefore($chNode, $node);
|
2736 |
+
$node->parentNode->removeChild($node);
|
2737 |
+
}
|
2738 |
+
return $this;
|
2739 |
+
}
|
2740 |
+
/**
|
2741 |
+
* Enter description here...
|
2742 |
+
*
|
2743 |
+
* jQuery difference.
|
2744 |
+
*/
|
2745 |
+
public function switchWith($markup) {
|
2746 |
+
$markup = pq($markup, $this->getDocumentID());
|
2747 |
+
$content = null;
|
2748 |
+
foreach($this->stack(1) as $node) {
|
2749 |
+
pq($node)
|
2750 |
+
->contents()->toReference($content)->end()
|
2751 |
+
->replaceWith($markup->clone()->append($content));
|
2752 |
+
}
|
2753 |
+
return $this;
|
2754 |
+
}
|
2755 |
+
/**
|
2756 |
+
* Enter description here...
|
2757 |
+
*
|
2758 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2759 |
+
*/
|
2760 |
+
public function eq($num) {
|
2761 |
+
$oldStack = $this->elements;
|
2762 |
+
$this->elementsBackup = $this->elements;
|
2763 |
+
$this->elements = array();
|
2764 |
+
if ( isset($oldStack[$num]) )
|
2765 |
+
$this->elements[] = $oldStack[$num];
|
2766 |
+
return $this->newInstance();
|
2767 |
+
}
|
2768 |
+
/**
|
2769 |
+
* Enter description here...
|
2770 |
+
*
|
2771 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2772 |
+
*/
|
2773 |
+
public function size() {
|
2774 |
+
return count($this->elements);
|
2775 |
+
}
|
2776 |
+
/**
|
2777 |
+
* Enter description here...
|
2778 |
+
*
|
2779 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2780 |
+
* @deprecated Use length as attribute
|
2781 |
+
*/
|
2782 |
+
public function length() {
|
2783 |
+
return $this->size();
|
2784 |
+
}
|
2785 |
+
public function count() {
|
2786 |
+
return $this->size();
|
2787 |
+
}
|
2788 |
+
/**
|
2789 |
+
* Enter description here...
|
2790 |
+
*
|
2791 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2792 |
+
* @todo $level
|
2793 |
+
*/
|
2794 |
+
public function end($level = 1) {
|
2795 |
+
// $this->elements = array_pop( $this->history );
|
2796 |
+
// return $this;
|
2797 |
+
// $this->previous->DOM = $this->DOM;
|
2798 |
+
// $this->previous->XPath = $this->XPath;
|
2799 |
+
return $this->previous
|
2800 |
+
? $this->previous
|
2801 |
+
: $this;
|
2802 |
+
}
|
2803 |
+
/**
|
2804 |
+
* Enter description here...
|
2805 |
+
* Normal use ->clone() .
|
2806 |
+
*
|
2807 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2808 |
+
* @access private
|
2809 |
+
*/
|
2810 |
+
public function _clone() {
|
2811 |
+
$newStack = array();
|
2812 |
+
//pr(array('copy... ', $this->whois()));
|
2813 |
+
//$this->dumpHistory('copy');
|
2814 |
+
$this->elementsBackup = $this->elements;
|
2815 |
+
foreach($this->elements as $node) {
|
2816 |
+
$newStack[] = $node->cloneNode(true);
|
2817 |
+
}
|
2818 |
+
$this->elements = $newStack;
|
2819 |
+
return $this->newInstance();
|
2820 |
+
}
|
2821 |
+
/**
|
2822 |
+
* Enter description here...
|
2823 |
+
*
|
2824 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2825 |
+
*/
|
2826 |
+
public function replaceWithPHP($code) {
|
2827 |
+
return $this->replaceWith(phpQuery::php($code));
|
2828 |
+
}
|
2829 |
+
/**
|
2830 |
+
* Enter description here...
|
2831 |
+
*
|
2832 |
+
* @param String|phpQuery $content
|
2833 |
+
* @link http://docs.jquery.com/Manipulation/replaceWith#content
|
2834 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2835 |
+
*/
|
2836 |
+
public function replaceWith($content) {
|
2837 |
+
return $this->after($content)->remove();
|
2838 |
+
}
|
2839 |
+
/**
|
2840 |
+
* Enter description here...
|
2841 |
+
*
|
2842 |
+
* @param String $selector
|
2843 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2844 |
+
* @todo this works ?
|
2845 |
+
*/
|
2846 |
+
public function replaceAll($selector) {
|
2847 |
+
foreach(phpQuery::pq($selector, $this->getDocumentID()) as $node)
|
2848 |
+
phpQuery::pq($node, $this->getDocumentID())
|
2849 |
+
->after($this->_clone())
|
2850 |
+
->remove();
|
2851 |
+
return $this;
|
2852 |
+
}
|
2853 |
+
/**
|
2854 |
+
* Enter description here...
|
2855 |
+
*
|
2856 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2857 |
+
*/
|
2858 |
+
public function remove($selector = null) {
|
2859 |
+
$loop = $selector
|
2860 |
+
? $this->filter($selector)->elements
|
2861 |
+
: $this->elements;
|
2862 |
+
foreach($loop as $node) {
|
2863 |
+
if (! $node->parentNode )
|
2864 |
+
continue;
|
2865 |
+
if (isset($node->tagName))
|
2866 |
+
$this->debug("Removing '{$node->tagName}'");
|
2867 |
+
$node->parentNode->removeChild($node);
|
2868 |
+
// Mutation event
|
2869 |
+
$event = new DOMEvent(array(
|
2870 |
+
'target' => $node,
|
2871 |
+
'type' => 'DOMNodeRemoved'
|
2872 |
+
));
|
2873 |
+
phpQueryEvents::trigger($this->getDocumentID(),
|
2874 |
+
$event->type, array($event), $node
|
2875 |
+
);
|
2876 |
+
}
|
2877 |
+
return $this;
|
2878 |
+
}
|
2879 |
+
protected function markupEvents($newMarkup, $oldMarkup, $node) {
|
2880 |
+
if ($node->tagName == 'textarea' && $newMarkup != $oldMarkup) {
|
2881 |
+
$event = new DOMEvent(array(
|
2882 |
+
'target' => $node,
|
2883 |
+
'type' => 'change'
|
2884 |
+
));
|
2885 |
+
phpQueryEvents::trigger($this->getDocumentID(),
|
2886 |
+
$event->type, array($event), $node
|
2887 |
+
);
|
2888 |
+
}
|
2889 |
+
}
|
2890 |
+
/**
|
2891 |
+
* jQuey difference
|
2892 |
+
*
|
2893 |
+
* @param $markup
|
2894 |
+
* @return unknown_type
|
2895 |
+
* @TODO trigger change event for textarea
|
2896 |
+
*/
|
2897 |
+
public function markup($markup = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
2898 |
+
$args = func_get_args();
|
2899 |
+
if ($this->documentWrapper->isXML)
|
2900 |
+
return call_user_func_array(array($this, 'xml'), $args);
|
2901 |
+
else
|
2902 |
+
return call_user_func_array(array($this, 'html'), $args);
|
2903 |
+
}
|
2904 |
+
/**
|
2905 |
+
* jQuey difference
|
2906 |
+
*
|
2907 |
+
* @param $markup
|
2908 |
+
* @return unknown_type
|
2909 |
+
*/
|
2910 |
+
public function markupOuter($callback1 = null, $callback2 = null, $callback3 = null) {
|
2911 |
+
$args = func_get_args();
|
2912 |
+
if ($this->documentWrapper->isXML)
|
2913 |
+
return call_user_func_array(array($this, 'xmlOuter'), $args);
|
2914 |
+
else
|
2915 |
+
return call_user_func_array(array($this, 'htmlOuter'), $args);
|
2916 |
+
}
|
2917 |
+
/**
|
2918 |
+
* Enter description here...
|
2919 |
+
*
|
2920 |
+
* @param unknown_type $html
|
2921 |
+
* @return string|phpQuery|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2922 |
+
* @TODO force html result
|
2923 |
+
*/
|
2924 |
+
public function html($html = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
2925 |
+
if (isset($html)) {
|
2926 |
+
// INSERT
|
2927 |
+
$nodes = $this->documentWrapper->import($html);
|
2928 |
+
$this->empty();
|
2929 |
+
foreach($this->stack(1) as $alreadyAdded => $node) {
|
2930 |
+
// for now, limit events for textarea
|
2931 |
+
if (($this->isXHTML() || $this->isHTML()) && $node->tagName == 'textarea')
|
2932 |
+
$oldHtml = pq($node, $this->getDocumentID())->markup();
|
2933 |
+
foreach($nodes as $newNode) {
|
2934 |
+
$node->appendChild($alreadyAdded
|
2935 |
+
? $newNode->cloneNode(true)
|
2936 |
+
: $newNode
|
2937 |
+
);
|
2938 |
+
}
|
2939 |
+
// for now, limit events for textarea
|
2940 |
+
if (($this->isXHTML() || $this->isHTML()) && $node->tagName == 'textarea')
|
2941 |
+
$this->markupEvents($html, $oldHtml, $node);
|
2942 |
+
}
|
2943 |
+
return $this;
|
2944 |
+
} else {
|
2945 |
+
// FETCH
|
2946 |
+
$return = $this->documentWrapper->markup($this->elements, true);
|
2947 |
+
$args = func_get_args();
|
2948 |
+
foreach(array_slice($args, 1) as $callback) {
|
2949 |
+
$return = phpQuery::callbackRun($callback, array($return));
|
2950 |
+
}
|
2951 |
+
return $return;
|
2952 |
+
}
|
2953 |
+
}
|
2954 |
+
/**
|
2955 |
+
* @TODO force xml result
|
2956 |
+
*/
|
2957 |
+
public function xml($xml = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
2958 |
+
$args = func_get_args();
|
2959 |
+
return call_user_func_array(array($this, 'html'), $args);
|
2960 |
+
}
|
2961 |
+
/**
|
2962 |
+
* Enter description here...
|
2963 |
+
* @TODO force html result
|
2964 |
+
*
|
2965 |
+
* @return String
|
2966 |
+
*/
|
2967 |
+
public function htmlOuter($callback1 = null, $callback2 = null, $callback3 = null) {
|
2968 |
+
$markup = $this->documentWrapper->markup($this->elements);
|
2969 |
+
// pass thou callbacks
|
2970 |
+
$args = func_get_args();
|
2971 |
+
foreach($args as $callback) {
|
2972 |
+
$markup = phpQuery::callbackRun($callback, array($markup));
|
2973 |
+
}
|
2974 |
+
return $markup;
|
2975 |
+
}
|
2976 |
+
/**
|
2977 |
+
* @TODO force xml result
|
2978 |
+
*/
|
2979 |
+
public function xmlOuter($callback1 = null, $callback2 = null, $callback3 = null) {
|
2980 |
+
$args = func_get_args();
|
2981 |
+
return call_user_func_array(array($this, 'htmlOuter'), $args);
|
2982 |
+
}
|
2983 |
+
public function __toString() {
|
2984 |
+
return $this->markupOuter();
|
2985 |
+
}
|
2986 |
+
/**
|
2987 |
+
* Just like html(), but returns markup with VALID (dangerous) PHP tags.
|
2988 |
+
*
|
2989 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
2990 |
+
* @todo support returning markup with PHP tags when called without param
|
2991 |
+
*/
|
2992 |
+
public function php($code = null) {
|
2993 |
+
return $this->markupPHP($code);
|
2994 |
+
}
|
2995 |
+
/**
|
2996 |
+
* Enter description here...
|
2997 |
+
*
|
2998 |
+
* @param $code
|
2999 |
+
* @return unknown_type
|
3000 |
+
*/
|
3001 |
+
public function markupPHP($code = null) {
|
3002 |
+
return isset($code)
|
3003 |
+
? $this->markup(phpQuery::php($code))
|
3004 |
+
: phpQuery::markupToPHP($this->markup());
|
3005 |
+
}
|
3006 |
+
/**
|
3007 |
+
* Enter description here...
|
3008 |
+
*
|
3009 |
+
* @param $code
|
3010 |
+
* @return unknown_type
|
3011 |
+
*/
|
3012 |
+
public function markupOuterPHP() {
|
3013 |
+
return phpQuery::markupToPHP($this->markupOuter());
|
3014 |
+
}
|
3015 |
+
/**
|
3016 |
+
* Enter description here...
|
3017 |
+
*
|
3018 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3019 |
+
*/
|
3020 |
+
public function children($selector = null) {
|
3021 |
+
$stack = array();
|
3022 |
+
foreach($this->stack(1) as $node) {
|
3023 |
+
// foreach($node->getElementsByTagName('*') as $newNode) {
|
3024 |
+
foreach($node->childNodes as $newNode) {
|
3025 |
+
if ($newNode->nodeType != 1)
|
3026 |
+
continue;
|
3027 |
+
if ($selector && ! $this->is($selector, $newNode))
|
3028 |
+
continue;
|
3029 |
+
if ($this->elementsContainsNode($newNode, $stack))
|
3030 |
+
continue;
|
3031 |
+
$stack[] = $newNode;
|
3032 |
+
}
|
3033 |
+
}
|
3034 |
+
$this->elementsBackup = $this->elements;
|
3035 |
+
$this->elements = $stack;
|
3036 |
+
return $this->newInstance();
|
3037 |
+
}
|
3038 |
+
/**
|
3039 |
+
* Enter description here...
|
3040 |
+
*
|
3041 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3042 |
+
*/
|
3043 |
+
public function ancestors($selector = null) {
|
3044 |
+
return $this->children( $selector );
|
3045 |
+
}
|
3046 |
+
/**
|
3047 |
+
* Enter description here...
|
3048 |
+
*
|
3049 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3050 |
+
*/
|
3051 |
+
public function append( $content) {
|
3052 |
+
return $this->insert($content, __FUNCTION__);
|
3053 |
+
}
|
3054 |
+
/**
|
3055 |
+
* Enter description here...
|
3056 |
+
*
|
3057 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3058 |
+
*/
|
3059 |
+
public function appendPHP( $content) {
|
3060 |
+
return $this->insert("<php><!-- {$content} --></php>", 'append');
|
3061 |
+
}
|
3062 |
+
/**
|
3063 |
+
* Enter description here...
|
3064 |
+
*
|
3065 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3066 |
+
*/
|
3067 |
+
public function appendTo( $seletor) {
|
3068 |
+
return $this->insert($seletor, __FUNCTION__);
|
3069 |
+
}
|
3070 |
+
/**
|
3071 |
+
* Enter description here...
|
3072 |
+
*
|
3073 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3074 |
+
*/
|
3075 |
+
public function prepend( $content) {
|
3076 |
+
return $this->insert($content, __FUNCTION__);
|
3077 |
+
}
|
3078 |
+
/**
|
3079 |
+
* Enter description here...
|
3080 |
+
*
|
3081 |
+
* @todo accept many arguments, which are joined, arrays maybe also
|
3082 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3083 |
+
*/
|
3084 |
+
public function prependPHP( $content) {
|
3085 |
+
return $this->insert("<php><!-- {$content} --></php>", 'prepend');
|
3086 |
+
}
|
3087 |
+
/**
|
3088 |
+
* Enter description here...
|
3089 |
+
*
|
3090 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3091 |
+
*/
|
3092 |
+
public function prependTo( $seletor) {
|
3093 |
+
return $this->insert($seletor, __FUNCTION__);
|
3094 |
+
}
|
3095 |
+
/**
|
3096 |
+
* Enter description here...
|
3097 |
+
*
|
3098 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3099 |
+
*/
|
3100 |
+
public function before($content) {
|
3101 |
+
return $this->insert($content, __FUNCTION__);
|
3102 |
+
}
|
3103 |
+
/**
|
3104 |
+
* Enter description here...
|
3105 |
+
*
|
3106 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3107 |
+
*/
|
3108 |
+
public function beforePHP( $content) {
|
3109 |
+
return $this->insert("<php><!-- {$content} --></php>", 'before');
|
3110 |
+
}
|
3111 |
+
/**
|
3112 |
+
* Enter description here...
|
3113 |
+
*
|
3114 |
+
* @param String|phpQuery
|
3115 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3116 |
+
*/
|
3117 |
+
public function insertBefore( $seletor) {
|
3118 |
+
return $this->insert($seletor, __FUNCTION__);
|
3119 |
+
}
|
3120 |
+
/**
|
3121 |
+
* Enter description here...
|
3122 |
+
*
|
3123 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3124 |
+
*/
|
3125 |
+
public function after( $content) {
|
3126 |
+
return $this->insert($content, __FUNCTION__);
|
3127 |
+
}
|
3128 |
+
/**
|
3129 |
+
* Enter description here...
|
3130 |
+
*
|
3131 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3132 |
+
*/
|
3133 |
+
public function afterPHP( $content) {
|
3134 |
+
return $this->insert("<php><!-- {$content} --></php>", 'after');
|
3135 |
+
}
|
3136 |
+
/**
|
3137 |
+
* Enter description here...
|
3138 |
+
*
|
3139 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3140 |
+
*/
|
3141 |
+
public function insertAfter( $seletor) {
|
3142 |
+
return $this->insert($seletor, __FUNCTION__);
|
3143 |
+
}
|
3144 |
+
/**
|
3145 |
+
* Internal insert method. Don't use it.
|
3146 |
+
*
|
3147 |
+
* @param unknown_type $target
|
3148 |
+
* @param unknown_type $type
|
3149 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3150 |
+
* @access private
|
3151 |
+
*/
|
3152 |
+
public function insert($target, $type) {
|
3153 |
+
$this->debug("Inserting data with '{$type}'");
|
3154 |
+
$to = false;
|
3155 |
+
switch( $type) {
|
3156 |
+
case 'appendTo':
|
3157 |
+
case 'prependTo':
|
3158 |
+
case 'insertBefore':
|
3159 |
+
case 'insertAfter':
|
3160 |
+
$to = true;
|
3161 |
+
}
|
3162 |
+
switch(gettype($target)) {
|
3163 |
+
case 'string':
|
3164 |
+
$insertFrom = $insertTo = array();
|
3165 |
+
if ($to) {
|
3166 |
+
// INSERT TO
|
3167 |
+
$insertFrom = $this->elements;
|
3168 |
+
if (phpQuery::isMarkup($target)) {
|
3169 |
+
// $target is new markup, import it
|
3170 |
+
$insertTo = $this->documentWrapper->import($target);
|
3171 |
+
// insert into selected element
|
3172 |
+
} else {
|
3173 |
+
// $tagret is a selector
|
3174 |
+
$thisStack = $this->elements;
|
3175 |
+
$this->toRoot();
|
3176 |
+
$insertTo = $this->find($target)->elements;
|
3177 |
+
$this->elements = $thisStack;
|
3178 |
+
}
|
3179 |
+
} else {
|
3180 |
+
// INSERT FROM
|
3181 |
+
$insertTo = $this->elements;
|
3182 |
+
$insertFrom = $this->documentWrapper->import($target);
|
3183 |
+
}
|
3184 |
+
break;
|
3185 |
+
case 'object':
|
3186 |
+
$insertFrom = $insertTo = array();
|
3187 |
+
// phpQuery
|
3188 |
+
if ($target instanceof self) {
|
3189 |
+
if ($to) {
|
3190 |
+
$insertTo = $target->elements;
|
3191 |
+
if ($this->documentFragment && $this->stackIsRoot())
|
3192 |
+
// get all body children
|
3193 |
+
// $loop = $this->find('body > *')->elements;
|
3194 |
+
// TODO test it, test it hard...
|
3195 |
+
// $loop = $this->newInstance($this->root)->find('> *')->elements;
|
3196 |
+
$loop = $this->root->childNodes;
|
3197 |
+
else
|
3198 |
+
$loop = $this->elements;
|
3199 |
+
// import nodes if needed
|
3200 |
+
$insertFrom = $this->getDocumentID() == $target->getDocumentID()
|
3201 |
+
? $loop
|
3202 |
+
: $target->documentWrapper->import($loop);
|
3203 |
+
} else {
|
3204 |
+
$insertTo = $this->elements;
|
3205 |
+
if ( $target->documentFragment && $target->stackIsRoot() )
|
3206 |
+
// get all body children
|
3207 |
+
// $loop = $target->find('body > *')->elements;
|
3208 |
+
$loop = $target->root->childNodes;
|
3209 |
+
else
|
3210 |
+
$loop = $target->elements;
|
3211 |
+
// import nodes if needed
|
3212 |
+
$insertFrom = $this->getDocumentID() == $target->getDocumentID()
|
3213 |
+
? $loop
|
3214 |
+
: $this->documentWrapper->import($loop);
|
3215 |
+
}
|
3216 |
+
// DOMNODE
|
3217 |
+
} elseif ($target instanceof DOMNODE) {
|
3218 |
+
// import node if needed
|
3219 |
+
// if ( $target->ownerDocument != $this->DOM )
|
3220 |
+
// $target = $this->DOM->importNode($target, true);
|
3221 |
+
if ( $to) {
|
3222 |
+
$insertTo = array($target);
|
3223 |
+
if ($this->documentFragment && $this->stackIsRoot())
|
3224 |
+
// get all body children
|
3225 |
+
$loop = $this->root->childNodes;
|
3226 |
+
// $loop = $this->find('body > *')->elements;
|
3227 |
+
else
|
3228 |
+
$loop = $this->elements;
|
3229 |
+
foreach($loop as $fromNode)
|
3230 |
+
// import nodes if needed
|
3231 |
+
$insertFrom[] = ! $fromNode->ownerDocument->isSameNode($target->ownerDocument)
|
3232 |
+
? $target->ownerDocument->importNode($fromNode, true)
|
3233 |
+
: $fromNode;
|
3234 |
+
} else {
|
3235 |
+
// import node if needed
|
3236 |
+
if (! $target->ownerDocument->isSameNode($this->document))
|
3237 |
+
$target = $this->document->importNode($target, true);
|
3238 |
+
$insertTo = $this->elements;
|
3239 |
+
$insertFrom[] = $target;
|
3240 |
+
}
|
3241 |
+
}
|
3242 |
+
break;
|
3243 |
+
}
|
3244 |
+
phpQuery::debug("From ".count($insertFrom)."; To ".count($insertTo)." nodes");
|
3245 |
+
foreach($insertTo as $insertNumber => $toNode) {
|
3246 |
+
// we need static relative elements in some cases
|
3247 |
+
switch( $type) {
|
3248 |
+
case 'prependTo':
|
3249 |
+
case 'prepend':
|
3250 |
+
$firstChild = $toNode->firstChild;
|
3251 |
+
break;
|
3252 |
+
case 'insertAfter':
|
3253 |
+
case 'after':
|
3254 |
+
$nextSibling = $toNode->nextSibling;
|
3255 |
+
break;
|
3256 |
+
}
|
3257 |
+
foreach($insertFrom as $fromNode) {
|
3258 |
+
// clone if inserted already before
|
3259 |
+
$insert = $insertNumber
|
3260 |
+
? $fromNode->cloneNode(true)
|
3261 |
+
: $fromNode;
|
3262 |
+
switch($type) {
|
3263 |
+
case 'appendTo':
|
3264 |
+
case 'append':
|
3265 |
+
// $toNode->insertBefore(
|
3266 |
+
// $fromNode,
|
3267 |
+
// $toNode->lastChild->nextSibling
|
3268 |
+
// );
|
3269 |
+
$toNode->appendChild($insert);
|
3270 |
+
$eventTarget = $insert;
|
3271 |
+
break;
|
3272 |
+
case 'prependTo':
|
3273 |
+
case 'prepend':
|
3274 |
+
$toNode->insertBefore(
|
3275 |
+
$insert,
|
3276 |
+
$firstChild
|
3277 |
+
);
|
3278 |
+
break;
|
3279 |
+
case 'insertBefore':
|
3280 |
+
case 'before':
|
3281 |
+
if (! $toNode->parentNode)
|
3282 |
+
throw new Exception("No parentNode, can't do {$type}()");
|
3283 |
+
else
|
3284 |
+
$toNode->parentNode->insertBefore(
|
3285 |
+
$insert,
|
3286 |
+
$toNode
|
3287 |
+
);
|
3288 |
+
break;
|
3289 |
+
case 'insertAfter':
|
3290 |
+
case 'after':
|
3291 |
+
if (! $toNode->parentNode)
|
3292 |
+
throw new Exception("No parentNode, can't do {$type}()");
|
3293 |
+
else
|
3294 |
+
$toNode->parentNode->insertBefore(
|
3295 |
+
$insert,
|
3296 |
+
$nextSibling
|
3297 |
+
);
|
3298 |
+
break;
|
3299 |
+
}
|
3300 |
+
// Mutation event
|
3301 |
+
$event = new DOMEvent(array(
|
3302 |
+
'target' => $insert,
|
3303 |
+
'type' => 'DOMNodeInserted'
|
3304 |
+
));
|
3305 |
+
phpQueryEvents::trigger($this->getDocumentID(),
|
3306 |
+
$event->type, array($event), $insert
|
3307 |
+
);
|
3308 |
+
}
|
3309 |
+
}
|
3310 |
+
return $this;
|
3311 |
+
}
|
3312 |
+
/**
|
3313 |
+
* Enter description here...
|
3314 |
+
*
|
3315 |
+
* @return Int
|
3316 |
+
*/
|
3317 |
+
public function index($subject) {
|
3318 |
+
$index = -1;
|
3319 |
+
$subject = $subject instanceof phpQueryObject
|
3320 |
+
? $subject->elements[0]
|
3321 |
+
: $subject;
|
3322 |
+
foreach($this->newInstance() as $k => $node) {
|
3323 |
+
if ($node->isSameNode($subject))
|
3324 |
+
$index = $k;
|
3325 |
+
}
|
3326 |
+
return $index;
|
3327 |
+
}
|
3328 |
+
/**
|
3329 |
+
* Enter description here...
|
3330 |
+
*
|
3331 |
+
* @param unknown_type $start
|
3332 |
+
* @param unknown_type $end
|
3333 |
+
*
|
3334 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3335 |
+
* @testme
|
3336 |
+
*/
|
3337 |
+
public function slice($start, $end = null) {
|
3338 |
+
// $last = count($this->elements)-1;
|
3339 |
+
// $end = $end
|
3340 |
+
// ? min($end, $last)
|
3341 |
+
// : $last;
|
3342 |
+
// if ($start < 0)
|
3343 |
+
// $start = $last+$start;
|
3344 |
+
// if ($start > $last)
|
3345 |
+
// return array();
|
3346 |
+
if ($end > 0)
|
3347 |
+
$end = $end-$start;
|
3348 |
+
return $this->newInstance(
|
3349 |
+
array_slice($this->elements, $start, $end)
|
3350 |
+
);
|
3351 |
+
}
|
3352 |
+
/**
|
3353 |
+
* Enter description here...
|
3354 |
+
*
|
3355 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3356 |
+
*/
|
3357 |
+
public function reverse() {
|
3358 |
+
$this->elementsBackup = $this->elements;
|
3359 |
+
$this->elements = array_reverse($this->elements);
|
3360 |
+
return $this->newInstance();
|
3361 |
+
}
|
3362 |
+
/**
|
3363 |
+
* Return joined text content.
|
3364 |
+
* @return String
|
3365 |
+
*/
|
3366 |
+
public function text($text = null, $callback1 = null, $callback2 = null, $callback3 = null) {
|
3367 |
+
if (isset($text))
|
3368 |
+
return $this->html(htmlspecialchars($text));
|
3369 |
+
$args = func_get_args();
|
3370 |
+
$args = array_slice($args, 1);
|
3371 |
+
$return = '';
|
3372 |
+
foreach($this->elements as $node) {
|
3373 |
+
$text = $node->textContent;
|
3374 |
+
if (count($this->elements) > 1 && $text)
|
3375 |
+
$text .= "\n";
|
3376 |
+
foreach($args as $callback) {
|
3377 |
+
$text = phpQuery::callbackRun($callback, array($text));
|
3378 |
+
}
|
3379 |
+
$return .= $text;
|
3380 |
+
}
|
3381 |
+
return $return;
|
3382 |
+
}
|
3383 |
+
/**
|
3384 |
+
* Enter description here...
|
3385 |
+
*
|
3386 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3387 |
+
*/
|
3388 |
+
public function plugin($class, $file = null) {
|
3389 |
+
phpQuery::plugin($class, $file);
|
3390 |
+
return $this;
|
3391 |
+
}
|
3392 |
+
/**
|
3393 |
+
* Deprecated, use $pq->plugin() instead.
|
3394 |
+
*
|
3395 |
+
* @deprecated
|
3396 |
+
* @param $class
|
3397 |
+
* @param $file
|
3398 |
+
* @return unknown_type
|
3399 |
+
*/
|
3400 |
+
public static function extend($class, $file = null) {
|
3401 |
+
return $this->plugin($class, $file);
|
3402 |
+
}
|
3403 |
+
/**
|
3404 |
+
*
|
3405 |
+
* @access private
|
3406 |
+
* @param $method
|
3407 |
+
* @param $args
|
3408 |
+
* @return unknown_type
|
3409 |
+
*/
|
3410 |
+
public function __call($method, $args) {
|
3411 |
+
$aliasMethods = array('clone', 'empty');
|
3412 |
+
if (isset(phpQuery::$extendMethods[$method])) {
|
3413 |
+
array_unshift($args, $this);
|
3414 |
+
return phpQuery::callbackRun(
|
3415 |
+
phpQuery::$extendMethods[$method], $args
|
3416 |
+
);
|
3417 |
+
} else if (isset(phpQuery::$pluginsMethods[$method])) {
|
3418 |
+
array_unshift($args, $this);
|
3419 |
+
$class = phpQuery::$pluginsMethods[$method];
|
3420 |
+
$realClass = "phpQueryObjectPlugin_$class";
|
3421 |
+
$return = call_user_func_array(
|
3422 |
+
array($realClass, $method),
|
3423 |
+
$args
|
3424 |
+
);
|
3425 |
+
// XXX deprecate ?
|
3426 |
+
return is_null($return)
|
3427 |
+
? $this
|
3428 |
+
: $return;
|
3429 |
+
} else if (in_array($method, $aliasMethods)) {
|
3430 |
+
return call_user_func_array(array($this, '_'.$method), $args);
|
3431 |
+
} else
|
3432 |
+
throw new Exception("Method '{$method}' doesnt exist");
|
3433 |
+
}
|
3434 |
+
/**
|
3435 |
+
* Safe rename of next().
|
3436 |
+
*
|
3437 |
+
* Use it ONLY when need to call next() on an iterated object (in same time).
|
3438 |
+
* Normaly there is no need to do such thing ;)
|
3439 |
+
*
|
3440 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3441 |
+
* @access private
|
3442 |
+
*/
|
3443 |
+
public function _next($selector = null) {
|
3444 |
+
return $this->newInstance(
|
3445 |
+
$this->getElementSiblings('nextSibling', $selector, true)
|
3446 |
+
);
|
3447 |
+
}
|
3448 |
+
/**
|
3449 |
+
* Use prev() and next().
|
3450 |
+
*
|
3451 |
+
* @deprecated
|
3452 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3453 |
+
* @access private
|
3454 |
+
*/
|
3455 |
+
public function _prev($selector = null) {
|
3456 |
+
return $this->prev($selector);
|
3457 |
+
}
|
3458 |
+
/**
|
3459 |
+
* Enter description here...
|
3460 |
+
*
|
3461 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3462 |
+
*/
|
3463 |
+
public function prev($selector = null) {
|
3464 |
+
return $this->newInstance(
|
3465 |
+
$this->getElementSiblings('previousSibling', $selector, true)
|
3466 |
+
);
|
3467 |
+
}
|
3468 |
+
/**
|
3469 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3470 |
+
* @todo
|
3471 |
+
*/
|
3472 |
+
public function prevAll($selector = null) {
|
3473 |
+
return $this->newInstance(
|
3474 |
+
$this->getElementSiblings('previousSibling', $selector)
|
3475 |
+
);
|
3476 |
+
}
|
3477 |
+
/**
|
3478 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3479 |
+
* @todo FIXME: returns source elements insted of next siblings
|
3480 |
+
*/
|
3481 |
+
public function nextAll($selector = null) {
|
3482 |
+
return $this->newInstance(
|
3483 |
+
$this->getElementSiblings('nextSibling', $selector)
|
3484 |
+
);
|
3485 |
+
}
|
3486 |
+
/**
|
3487 |
+
* @access private
|
3488 |
+
*/
|
3489 |
+
protected function getElementSiblings($direction, $selector = null, $limitToOne = false) {
|
3490 |
+
$stack = array();
|
3491 |
+
$count = 0;
|
3492 |
+
foreach($this->stack() as $node) {
|
3493 |
+
$test = $node;
|
3494 |
+
while( isset($test->{$direction}) && $test->{$direction}) {
|
3495 |
+
$test = $test->{$direction};
|
3496 |
+
if (! $test instanceof DOMELEMENT)
|
3497 |
+
continue;
|
3498 |
+
$stack[] = $test;
|
3499 |
+
if ($limitToOne)
|
3500 |
+
break;
|
3501 |
+
}
|
3502 |
+
}
|
3503 |
+
if ($selector) {
|
3504 |
+
$stackOld = $this->elements;
|
3505 |
+
$this->elements = $stack;
|
3506 |
+
$stack = $this->filter($selector, true)->stack();
|
3507 |
+
$this->elements = $stackOld;
|
3508 |
+
}
|
3509 |
+
return $stack;
|
3510 |
+
}
|
3511 |
+
/**
|
3512 |
+
* Enter description here...
|
3513 |
+
*
|
3514 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3515 |
+
*/
|
3516 |
+
public function siblings($selector = null) {
|
3517 |
+
$stack = array();
|
3518 |
+
$siblings = array_merge(
|
3519 |
+
$this->getElementSiblings('previousSibling', $selector),
|
3520 |
+
$this->getElementSiblings('nextSibling', $selector)
|
3521 |
+
);
|
3522 |
+
foreach($siblings as $node) {
|
3523 |
+
if (! $this->elementsContainsNode($node, $stack))
|
3524 |
+
$stack[] = $node;
|
3525 |
+
}
|
3526 |
+
return $this->newInstance($stack);
|
3527 |
+
}
|
3528 |
+
/**
|
3529 |
+
* Enter description here...
|
3530 |
+
*
|
3531 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3532 |
+
*/
|
3533 |
+
public function not($selector = null) {
|
3534 |
+
if (is_string($selector))
|
3535 |
+
phpQuery::debug(array('not', $selector));
|
3536 |
+
else
|
3537 |
+
phpQuery::debug('not');
|
3538 |
+
$stack = array();
|
3539 |
+
if ($selector instanceof self || $selector instanceof DOMNODE) {
|
3540 |
+
foreach($this->stack() as $node) {
|
3541 |
+
if ($selector instanceof self) {
|
3542 |
+
$matchFound = false;
|
3543 |
+
foreach($selector->stack() as $notNode) {
|
3544 |
+
if ($notNode->isSameNode($node))
|
3545 |
+
$matchFound = true;
|
3546 |
+
}
|
3547 |
+
if (! $matchFound)
|
3548 |
+
$stack[] = $node;
|
3549 |
+
} else if ($selector instanceof DOMNODE) {
|
3550 |
+
if (! $selector->isSameNode($node))
|
3551 |
+
$stack[] = $node;
|
3552 |
+
} else {
|
3553 |
+
if (! $this->is($selector))
|
3554 |
+
$stack[] = $node;
|
3555 |
+
}
|
3556 |
+
}
|
3557 |
+
} else {
|
3558 |
+
$orgStack = $this->stack();
|
3559 |
+
$matched = $this->filter($selector, true)->stack();
|
3560 |
+
// $matched = array();
|
3561 |
+
// // simulate OR in filter() instead of AND 5y
|
3562 |
+
// foreach($this->parseSelector($selector) as $s) {
|
3563 |
+
// $matched = array_merge($matched,
|
3564 |
+
// $this->filter(array($s))->stack()
|
3565 |
+
// );
|
3566 |
+
// }
|
3567 |
+
foreach($orgStack as $node)
|
3568 |
+
if (! $this->elementsContainsNode($node, $matched))
|
3569 |
+
$stack[] = $node;
|
3570 |
+
}
|
3571 |
+
return $this->newInstance($stack);
|
3572 |
+
}
|
3573 |
+
/**
|
3574 |
+
* Enter description here...
|
3575 |
+
*
|
3576 |
+
* @param string|phpQueryObject
|
3577 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3578 |
+
*/
|
3579 |
+
public function add($selector = null) {
|
3580 |
+
if (! $selector)
|
3581 |
+
return $this;
|
3582 |
+
$stack = array();
|
3583 |
+
$this->elementsBackup = $this->elements;
|
3584 |
+
$found = phpQuery::pq($selector, $this->getDocumentID());
|
3585 |
+
$this->merge($found->elements);
|
3586 |
+
return $this->newInstance();
|
3587 |
+
}
|
3588 |
+
/**
|
3589 |
+
* @access private
|
3590 |
+
*/
|
3591 |
+
protected function merge() {
|
3592 |
+
foreach(func_get_args() as $nodes)
|
3593 |
+
foreach($nodes as $newNode )
|
3594 |
+
if (! $this->elementsContainsNode($newNode) )
|
3595 |
+
$this->elements[] = $newNode;
|
3596 |
+
}
|
3597 |
+
/**
|
3598 |
+
* @access private
|
3599 |
+
* TODO refactor to stackContainsNode
|
3600 |
+
*/
|
3601 |
+
protected function elementsContainsNode($nodeToCheck, $elementsStack = null) {
|
3602 |
+
$loop = ! is_null($elementsStack)
|
3603 |
+
? $elementsStack
|
3604 |
+
: $this->elements;
|
3605 |
+
foreach($loop as $node) {
|
3606 |
+
if ( $node->isSameNode( $nodeToCheck ) )
|
3607 |
+
return true;
|
3608 |
+
}
|
3609 |
+
return false;
|
3610 |
+
}
|
3611 |
+
/**
|
3612 |
+
* Enter description here...
|
3613 |
+
*
|
3614 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3615 |
+
*/
|
3616 |
+
public function parent($selector = null) {
|
3617 |
+
$stack = array();
|
3618 |
+
foreach($this->elements as $node )
|
3619 |
+
if ( $node->parentNode && ! $this->elementsContainsNode($node->parentNode, $stack) )
|
3620 |
+
$stack[] = $node->parentNode;
|
3621 |
+
$this->elementsBackup = $this->elements;
|
3622 |
+
$this->elements = $stack;
|
3623 |
+
if ( $selector )
|
3624 |
+
$this->filter($selector, true);
|
3625 |
+
return $this->newInstance();
|
3626 |
+
}
|
3627 |
+
/**
|
3628 |
+
* Enter description here...
|
3629 |
+
*
|
3630 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3631 |
+
*/
|
3632 |
+
public function parents($selector = null) {
|
3633 |
+
$stack = array();
|
3634 |
+
if (! $this->elements )
|
3635 |
+
$this->debug('parents() - stack empty');
|
3636 |
+
foreach($this->elements as $node) {
|
3637 |
+
$test = $node;
|
3638 |
+
while( $test->parentNode) {
|
3639 |
+
$test = $test->parentNode;
|
3640 |
+
if ($this->isRoot($test))
|
3641 |
+
break;
|
3642 |
+
if (! $this->elementsContainsNode($test, $stack)) {
|
3643 |
+
$stack[] = $test;
|
3644 |
+
continue;
|
3645 |
+
}
|
3646 |
+
}
|
3647 |
+
}
|
3648 |
+
$this->elementsBackup = $this->elements;
|
3649 |
+
$this->elements = $stack;
|
3650 |
+
if ( $selector )
|
3651 |
+
$this->filter($selector, true);
|
3652 |
+
return $this->newInstance();
|
3653 |
+
}
|
3654 |
+
/**
|
3655 |
+
* Internal stack iterator.
|
3656 |
+
*
|
3657 |
+
* @access private
|
3658 |
+
*/
|
3659 |
+
public function stack($nodeTypes = null) {
|
3660 |
+
if (!isset($nodeTypes))
|
3661 |
+
return $this->elements;
|
3662 |
+
if (!is_array($nodeTypes))
|
3663 |
+
$nodeTypes = array($nodeTypes);
|
3664 |
+
$return = array();
|
3665 |
+
foreach($this->elements as $node) {
|
3666 |
+
if (in_array($node->nodeType, $nodeTypes))
|
3667 |
+
$return[] = $node;
|
3668 |
+
}
|
3669 |
+
return $return;
|
3670 |
+
}
|
3671 |
+
// TODO phpdoc; $oldAttr is result of hasAttribute, before any changes
|
3672 |
+
protected function attrEvents($attr, $oldAttr, $oldValue, $node) {
|
3673 |
+
// skip events for XML documents
|
3674 |
+
if (! $this->isXHTML() && ! $this->isHTML())
|
3675 |
+
return;
|
3676 |
+
$event = null;
|
3677 |
+
// identify
|
3678 |
+
$isInputValue = $node->tagName == 'input'
|
3679 |
+
&& (
|
3680 |
+
in_array($node->getAttribute('type'),
|
3681 |
+
array('text', 'password', 'hidden'))
|
3682 |
+
|| !$node->getAttribute('type')
|
3683 |
+
);
|
3684 |
+
$isRadio = $node->tagName == 'input'
|
3685 |
+
&& $node->getAttribute('type') == 'radio';
|
3686 |
+
$isCheckbox = $node->tagName == 'input'
|
3687 |
+
&& $node->getAttribute('type') == 'checkbox';
|
3688 |
+
$isOption = $node->tagName == 'option';
|
3689 |
+
if ($isInputValue && $attr == 'value' && $oldValue != $node->getAttribute($attr)) {
|
3690 |
+
$event = new DOMEvent(array(
|
3691 |
+
'target' => $node,
|
3692 |
+
'type' => 'change'
|
3693 |
+
));
|
3694 |
+
} else if (($isRadio || $isCheckbox) && $attr == 'checked' && (
|
3695 |
+
// check
|
3696 |
+
(! $oldAttr && $node->hasAttribute($attr))
|
3697 |
+
// un-check
|
3698 |
+
|| (! $node->hasAttribute($attr) && $oldAttr)
|
3699 |
+
)) {
|
3700 |
+
$event = new DOMEvent(array(
|
3701 |
+
'target' => $node,
|
3702 |
+
'type' => 'change'
|
3703 |
+
));
|
3704 |
+
} else if ($isOption && $node->parentNode && $attr == 'selected' && (
|
3705 |
+
// select
|
3706 |
+
(! $oldAttr && $node->hasAttribute($attr))
|
3707 |
+
// un-select
|
3708 |
+
|| (! $node->hasAttribute($attr) && $oldAttr)
|
3709 |
+
)) {
|
3710 |
+
$event = new DOMEvent(array(
|
3711 |
+
'target' => $node->parentNode,
|
3712 |
+
'type' => 'change'
|
3713 |
+
));
|
3714 |
+
}
|
3715 |
+
if ($event) {
|
3716 |
+
phpQueryEvents::trigger($this->getDocumentID(),
|
3717 |
+
$event->type, array($event), $node
|
3718 |
+
);
|
3719 |
+
}
|
3720 |
+
}
|
3721 |
+
public function attr($attr = null, $value = null) {
|
3722 |
+
foreach($this->stack(1) as $node) {
|
3723 |
+
if (! is_null($value)) {
|
3724 |
+
$loop = $attr == '*'
|
3725 |
+
? $this->getNodeAttrs($node)
|
3726 |
+
: array($attr);
|
3727 |
+
foreach($loop as $a) {
|
3728 |
+
$oldValue = $node->getAttribute($a);
|
3729 |
+
$oldAttr = $node->hasAttribute($a);
|
3730 |
+
// TODO raises an error when charset other than UTF-8
|
3731 |
+
// while document's charset is also not UTF-8
|
3732 |
+
@$node->setAttribute($a, $value);
|
3733 |
+
$this->attrEvents($a, $oldAttr, $oldValue, $node);
|
3734 |
+
}
|
3735 |
+
} else if ($attr == '*') {
|
3736 |
+
// jQuery difference
|
3737 |
+
$return = array();
|
3738 |
+
foreach($node->attributes as $n => $v)
|
3739 |
+
$return[$n] = $v->value;
|
3740 |
+
return $return;
|
3741 |
+
} else
|
3742 |
+
return $node->hasAttribute($attr)
|
3743 |
+
? $node->getAttribute($attr)
|
3744 |
+
: null;
|
3745 |
+
}
|
3746 |
+
return is_null($value)
|
3747 |
+
? '' : $this;
|
3748 |
+
}
|
3749 |
+
/**
|
3750 |
+
* @access private
|
3751 |
+
*/
|
3752 |
+
protected function getNodeAttrs($node) {
|
3753 |
+
$return = array();
|
3754 |
+
foreach($node->attributes as $n => $o)
|
3755 |
+
$return[] = $n;
|
3756 |
+
return $return;
|
3757 |
+
}
|
3758 |
+
/**
|
3759 |
+
* Enter description here...
|
3760 |
+
*
|
3761 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3762 |
+
* @todo check CDATA ???
|
3763 |
+
*/
|
3764 |
+
public function attrPHP($attr, $code) {
|
3765 |
+
if (! is_null($code)) {
|
3766 |
+
$value = '<'.'?php '.$code.' ?'.'>';
|
3767 |
+
// TODO tempolary solution
|
3768 |
+
// http://code.google.com/p/phpquery/issues/detail?id=17
|
3769 |
+
// if (function_exists('mb_detect_encoding') && mb_detect_encoding($value) == 'ASCII')
|
3770 |
+
// $value = mb_convert_encoding($value, 'UTF-8', 'HTML-ENTITIES');
|
3771 |
+
}
|
3772 |
+
foreach($this->stack(1) as $node) {
|
3773 |
+
if (! is_null($code)) {
|
3774 |
+
// $attrNode = $this->DOM->createAttribute($attr);
|
3775 |
+
$node->setAttribute($attr, $value);
|
3776 |
+
// $attrNode->value = $value;
|
3777 |
+
// $node->appendChild($attrNode);
|
3778 |
+
} else if ( $attr == '*') {
|
3779 |
+
// jQuery diff
|
3780 |
+
$return = array();
|
3781 |
+
foreach($node->attributes as $n => $v)
|
3782 |
+
$return[$n] = $v->value;
|
3783 |
+
return $return;
|
3784 |
+
} else
|
3785 |
+
return $node->getAttribute($attr);
|
3786 |
+
}
|
3787 |
+
return $this;
|
3788 |
+
}
|
3789 |
+
/**
|
3790 |
+
* Enter description here...
|
3791 |
+
*
|
3792 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3793 |
+
*/
|
3794 |
+
public function removeAttr($attr) {
|
3795 |
+
foreach($this->stack(1) as $node) {
|
3796 |
+
$loop = $attr == '*'
|
3797 |
+
? $this->getNodeAttrs($node)
|
3798 |
+
: array($attr);
|
3799 |
+
foreach($loop as $a) {
|
3800 |
+
$oldValue = $node->getAttribute($a);
|
3801 |
+
$node->removeAttribute($a);
|
3802 |
+
$this->attrEvents($a, $oldValue, null, $node);
|
3803 |
+
}
|
3804 |
+
}
|
3805 |
+
return $this;
|
3806 |
+
}
|
3807 |
+
/**
|
3808 |
+
* Return form element value.
|
3809 |
+
*
|
3810 |
+
* @return String Fields value.
|
3811 |
+
*/
|
3812 |
+
public function val($val = null) {
|
3813 |
+
if (! isset($val)) {
|
3814 |
+
if ($this->eq(0)->is('select')) {
|
3815 |
+
$selected = $this->eq(0)->find('option[selected=selected]');
|
3816 |
+
if ($selected->is('[value]'))
|
3817 |
+
return $selected->attr('value');
|
3818 |
+
else
|
3819 |
+
return $selected->text();
|
3820 |
+
} else if ($this->eq(0)->is('textarea'))
|
3821 |
+
return $this->eq(0)->markup();
|
3822 |
+
else
|
3823 |
+
return $this->eq(0)->attr('value');
|
3824 |
+
} else {
|
3825 |
+
$_val = null;
|
3826 |
+
foreach($this->stack(1) as $node) {
|
3827 |
+
$node = pq($node, $this->getDocumentID());
|
3828 |
+
if (is_array($val) && in_array($node->attr('type'), array('checkbox', 'radio'))) {
|
3829 |
+
$isChecked = in_array($node->attr('value'), $val)
|
3830 |
+
|| in_array($node->attr('name'), $val);
|
3831 |
+
if ($isChecked)
|
3832 |
+
$node->attr('checked', 'checked');
|
3833 |
+
else
|
3834 |
+
$node->removeAttr('checked');
|
3835 |
+
} else if ($node->get(0)->tagName == 'select') {
|
3836 |
+
if (! isset($_val)) {
|
3837 |
+
$_val = array();
|
3838 |
+
if (! is_array($val))
|
3839 |
+
$_val = array((string)$val);
|
3840 |
+
else
|
3841 |
+
foreach($val as $v)
|
3842 |
+
$_val[] = $v;
|
3843 |
+
}
|
3844 |
+
foreach($node['option']->stack(1) as $option) {
|
3845 |
+
$option = pq($option, $this->getDocumentID());
|
3846 |
+
$selected = false;
|
3847 |
+
// XXX: workaround for string comparsion, see issue #96
|
3848 |
+
// http://code.google.com/p/phpquery/issues/detail?id=96
|
3849 |
+
$selected = is_null($option->attr('value'))
|
3850 |
+
? in_array($option->markup(), $_val)
|
3851 |
+
: in_array($option->attr('value'), $_val);
|
3852 |
+
// $optionValue = $option->attr('value');
|
3853 |
+
// $optionText = $option->text();
|
3854 |
+
// $optionTextLenght = mb_strlen($optionText);
|
3855 |
+
// foreach($_val as $v)
|
3856 |
+
// if ($optionValue == $v)
|
3857 |
+
// $selected = true;
|
3858 |
+
// else if ($optionText == $v && $optionTextLenght == mb_strlen($v))
|
3859 |
+
// $selected = true;
|
3860 |
+
if ($selected)
|
3861 |
+
$option->attr('selected', 'selected');
|
3862 |
+
else
|
3863 |
+
$option->removeAttr('selected');
|
3864 |
+
}
|
3865 |
+
} else if ($node->get(0)->tagName == 'textarea')
|
3866 |
+
$node->markup($val);
|
3867 |
+
else
|
3868 |
+
$node->attr('value', $val);
|
3869 |
+
}
|
3870 |
+
}
|
3871 |
+
return $this;
|
3872 |
+
}
|
3873 |
+
/**
|
3874 |
+
* Enter description here...
|
3875 |
+
*
|
3876 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3877 |
+
*/
|
3878 |
+
public function andSelf() {
|
3879 |
+
if ( $this->previous )
|
3880 |
+
$this->elements = array_merge($this->elements, $this->previous->elements);
|
3881 |
+
return $this;
|
3882 |
+
}
|
3883 |
+
/**
|
3884 |
+
* Enter description here...
|
3885 |
+
*
|
3886 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3887 |
+
*/
|
3888 |
+
public function addClass( $className) {
|
3889 |
+
if (! $className)
|
3890 |
+
return $this;
|
3891 |
+
foreach($this->stack(1) as $node) {
|
3892 |
+
if (! $this->is(".$className", $node))
|
3893 |
+
$node->setAttribute(
|
3894 |
+
'class',
|
3895 |
+
trim($node->getAttribute('class').' '.$className)
|
3896 |
+
);
|
3897 |
+
}
|
3898 |
+
return $this;
|
3899 |
+
}
|
3900 |
+
/**
|
3901 |
+
* Enter description here...
|
3902 |
+
*
|
3903 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3904 |
+
*/
|
3905 |
+
public function addClassPHP( $className) {
|
3906 |
+
foreach($this->stack(1) as $node) {
|
3907 |
+
$classes = $node->getAttribute('class');
|
3908 |
+
$newValue = $classes
|
3909 |
+
? $classes.' <'.'?php '.$className.' ?'.'>'
|
3910 |
+
: '<'.'?php '.$className.' ?'.'>';
|
3911 |
+
$node->setAttribute('class', $newValue);
|
3912 |
+
}
|
3913 |
+
return $this;
|
3914 |
+
}
|
3915 |
+
/**
|
3916 |
+
* Enter description here...
|
3917 |
+
*
|
3918 |
+
* @param string $className
|
3919 |
+
* @return bool
|
3920 |
+
*/
|
3921 |
+
public function hasClass($className) {
|
3922 |
+
foreach($this->stack(1) as $node) {
|
3923 |
+
if ( $this->is(".$className", $node))
|
3924 |
+
return true;
|
3925 |
+
}
|
3926 |
+
return false;
|
3927 |
+
}
|
3928 |
+
/**
|
3929 |
+
* Enter description here...
|
3930 |
+
*
|
3931 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3932 |
+
*/
|
3933 |
+
public function removeClass($className) {
|
3934 |
+
foreach($this->stack(1) as $node) {
|
3935 |
+
$classes = explode( ' ', $node->getAttribute('class'));
|
3936 |
+
if ( in_array($className, $classes)) {
|
3937 |
+
$classes = array_diff($classes, array($className));
|
3938 |
+
if ( $classes )
|
3939 |
+
$node->setAttribute('class', implode(' ', $classes));
|
3940 |
+
else
|
3941 |
+
$node->removeAttribute('class');
|
3942 |
+
}
|
3943 |
+
}
|
3944 |
+
return $this;
|
3945 |
+
}
|
3946 |
+
/**
|
3947 |
+
* Enter description here...
|
3948 |
+
*
|
3949 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3950 |
+
*/
|
3951 |
+
public function toggleClass($className) {
|
3952 |
+
foreach($this->stack(1) as $node) {
|
3953 |
+
if ( $this->is( $node, '.'.$className ))
|
3954 |
+
$this->removeClass($className);
|
3955 |
+
else
|
3956 |
+
$this->addClass($className);
|
3957 |
+
}
|
3958 |
+
return $this;
|
3959 |
+
}
|
3960 |
+
/**
|
3961 |
+
* Proper name without underscore (just ->empty()) also works.
|
3962 |
+
*
|
3963 |
+
* Removes all child nodes from the set of matched elements.
|
3964 |
+
*
|
3965 |
+
* Example:
|
3966 |
+
* pq("p")._empty()
|
3967 |
+
*
|
3968 |
+
* HTML:
|
3969 |
+
* <p>Hello, <span>Person</span> <a href="#">and person</a></p>
|
3970 |
+
*
|
3971 |
+
* Result:
|
3972 |
+
* [ <p></p> ]
|
3973 |
+
*
|
3974 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3975 |
+
* @access private
|
3976 |
+
*/
|
3977 |
+
public function _empty() {
|
3978 |
+
foreach($this->stack(1) as $node) {
|
3979 |
+
// thx to 'dave at dgx dot cz'
|
3980 |
+
$node->nodeValue = '';
|
3981 |
+
}
|
3982 |
+
return $this;
|
3983 |
+
}
|
3984 |
+
/**
|
3985 |
+
* Enter description here...
|
3986 |
+
*
|
3987 |
+
* @param array|string $callback Expects $node as first param, $index as second
|
3988 |
+
* @param array $scope External variables passed to callback. Use compact('varName1', 'varName2'...) and extract($scope)
|
3989 |
+
* @param array $arg1 Will ba passed as third and futher args to callback.
|
3990 |
+
* @param array $arg2 Will ba passed as fourth and futher args to callback, and so on...
|
3991 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
3992 |
+
*/
|
3993 |
+
public function each($callback, $param1 = null, $param2 = null, $param3 = null) {
|
3994 |
+
$paramStructure = null;
|
3995 |
+
if (func_num_args() > 1) {
|
3996 |
+
$paramStructure = func_get_args();
|
3997 |
+
$paramStructure = array_slice($paramStructure, 1);
|
3998 |
+
}
|
3999 |
+
foreach($this->elements as $v)
|
4000 |
+
phpQuery::callbackRun($callback, array($v), $paramStructure);
|
4001 |
+
return $this;
|
4002 |
+
}
|
4003 |
+
/**
|
4004 |
+
* Run callback on actual object.
|
4005 |
+
*
|
4006 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4007 |
+
*/
|
4008 |
+
public function callback($callback, $param1 = null, $param2 = null, $param3 = null) {
|
4009 |
+
$params = func_get_args();
|
4010 |
+
$params[0] = $this;
|
4011 |
+
phpQuery::callbackRun($callback, $params);
|
4012 |
+
return $this;
|
4013 |
+
}
|
4014 |
+
/**
|
4015 |
+
* Enter description here...
|
4016 |
+
*
|
4017 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4018 |
+
* @todo add $scope and $args as in each() ???
|
4019 |
+
*/
|
4020 |
+
public function map($callback, $param1 = null, $param2 = null, $param3 = null) {
|
4021 |
+
// $stack = array();
|
4022 |
+
//// foreach($this->newInstance() as $node) {
|
4023 |
+
// foreach($this->newInstance() as $node) {
|
4024 |
+
// $result = call_user_func($callback, $node);
|
4025 |
+
// if ($result)
|
4026 |
+
// $stack[] = $result;
|
4027 |
+
// }
|
4028 |
+
$params = func_get_args();
|
4029 |
+
array_unshift($params, $this->elements);
|
4030 |
+
return $this->newInstance(
|
4031 |
+
call_user_func_array(array('phpQuery', 'map'), $params)
|
4032 |
+
// phpQuery::map($this->elements, $callback)
|
4033 |
+
);
|
4034 |
+
}
|
4035 |
+
/**
|
4036 |
+
* Enter description here...
|
4037 |
+
*
|
4038 |
+
* @param <type> $key
|
4039 |
+
* @param <type> $value
|
4040 |
+
*/
|
4041 |
+
public function data($key, $value = null) {
|
4042 |
+
if (! isset($value)) {
|
4043 |
+
// TODO? implement specific jQuery behavior od returning parent values
|
4044 |
+
// is child which we look up doesn't exist
|
4045 |
+
return phpQuery::data($this->get(0), $key, $value, $this->getDocumentID());
|
4046 |
+
} else {
|
4047 |
+
foreach($this as $node)
|
4048 |
+
phpQuery::data($node, $key, $value, $this->getDocumentID());
|
4049 |
+
return $this;
|
4050 |
+
}
|
4051 |
+
}
|
4052 |
+
/**
|
4053 |
+
* Enter description here...
|
4054 |
+
*
|
4055 |
+
* @param <type> $key
|
4056 |
+
*/
|
4057 |
+
public function removeData($key) {
|
4058 |
+
foreach($this as $node)
|
4059 |
+
phpQuery::removeData($node, $key, $this->getDocumentID());
|
4060 |
+
return $this;
|
4061 |
+
}
|
4062 |
+
// INTERFACE IMPLEMENTATIONS
|
4063 |
+
|
4064 |
+
// ITERATOR INTERFACE
|
4065 |
+
/**
|
4066 |
+
* @access private
|
4067 |
+
*/
|
4068 |
+
public function rewind(){
|
4069 |
+
$this->debug('iterating foreach');
|
4070 |
+
// phpQuery::selectDocument($this->getDocumentID());
|
4071 |
+
$this->elementsBackup = $this->elements;
|
4072 |
+
$this->elementsInterator = $this->elements;
|
4073 |
+
$this->valid = isset( $this->elements[0] )
|
4074 |
+
? 1 : 0;
|
4075 |
+
// $this->elements = $this->valid
|
4076 |
+
// ? array($this->elements[0])
|
4077 |
+
// : array();
|
4078 |
+
$this->current = 0;
|
4079 |
+
}
|
4080 |
+
/**
|
4081 |
+
* @access private
|
4082 |
+
*/
|
4083 |
+
public function current(){
|
4084 |
+
return $this->elementsInterator[ $this->current ];
|
4085 |
+
}
|
4086 |
+
/**
|
4087 |
+
* @access private
|
4088 |
+
*/
|
4089 |
+
public function key(){
|
4090 |
+
return $this->current;
|
4091 |
+
}
|
4092 |
+
/**
|
4093 |
+
* Double-function method.
|
4094 |
+
*
|
4095 |
+
* First: main iterator interface method.
|
4096 |
+
* Second: Returning next sibling, alias for _next().
|
4097 |
+
*
|
4098 |
+
* Proper functionality is choosed automagicaly.
|
4099 |
+
*
|
4100 |
+
* @see phpQueryObject::_next()
|
4101 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4102 |
+
*/
|
4103 |
+
public function next($cssSelector = null){
|
4104 |
+
// if ($cssSelector || $this->valid)
|
4105 |
+
// return $this->_next($cssSelector);
|
4106 |
+
$this->valid = isset( $this->elementsInterator[ $this->current+1 ] )
|
4107 |
+
? true
|
4108 |
+
: false;
|
4109 |
+
if (! $this->valid && $this->elementsInterator) {
|
4110 |
+
$this->elementsInterator = null;
|
4111 |
+
} else if ($this->valid) {
|
4112 |
+
$this->current++;
|
4113 |
+
} else {
|
4114 |
+
return $this->_next($cssSelector);
|
4115 |
+
}
|
4116 |
+
}
|
4117 |
+
/**
|
4118 |
+
* @access private
|
4119 |
+
*/
|
4120 |
+
public function valid(){
|
4121 |
+
return $this->valid;
|
4122 |
+
}
|
4123 |
+
// ITERATOR INTERFACE END
|
4124 |
+
// ARRAYACCESS INTERFACE
|
4125 |
+
/**
|
4126 |
+
* @access private
|
4127 |
+
*/
|
4128 |
+
public function offsetExists($offset) {
|
4129 |
+
return $this->find($offset)->size() > 0;
|
4130 |
+
}
|
4131 |
+
/**
|
4132 |
+
* @access private
|
4133 |
+
*/
|
4134 |
+
public function offsetGet($offset) {
|
4135 |
+
return $this->find($offset);
|
4136 |
+
}
|
4137 |
+
/**
|
4138 |
+
* @access private
|
4139 |
+
*/
|
4140 |
+
public function offsetSet($offset, $value) {
|
4141 |
+
// $this->find($offset)->replaceWith($value);
|
4142 |
+
$this->find($offset)->html($value);
|
4143 |
+
}
|
4144 |
+
/**
|
4145 |
+
* @access private
|
4146 |
+
*/
|
4147 |
+
public function offsetUnset($offset) {
|
4148 |
+
// empty
|
4149 |
+
throw new Exception("Can't do unset, use array interface only for calling queries and replacing HTML.");
|
4150 |
+
}
|
4151 |
+
// ARRAYACCESS INTERFACE END
|
4152 |
+
/**
|
4153 |
+
* Returns node's XPath.
|
4154 |
+
*
|
4155 |
+
* @param unknown_type $oneNode
|
4156 |
+
* @return string
|
4157 |
+
* @TODO use native getNodePath is avaible
|
4158 |
+
* @access private
|
4159 |
+
*/
|
4160 |
+
protected function getNodeXpath($oneNode = null, $namespace = null) {
|
4161 |
+
$return = array();
|
4162 |
+
$loop = $oneNode
|
4163 |
+
? array($oneNode)
|
4164 |
+
: $this->elements;
|
4165 |
+
// if ($namespace)
|
4166 |
+
// $namespace .= ':';
|
4167 |
+
foreach($loop as $node) {
|
4168 |
+
if ($node instanceof DOMDOCUMENT) {
|
4169 |
+
$return[] = '';
|
4170 |
+
continue;
|
4171 |
+
}
|
4172 |
+
$xpath = array();
|
4173 |
+
while(! ($node instanceof DOMDOCUMENT)) {
|
4174 |
+
$i = 1;
|
4175 |
+
$sibling = $node;
|
4176 |
+
while($sibling->previousSibling) {
|
4177 |
+
$sibling = $sibling->previousSibling;
|
4178 |
+
$isElement = $sibling instanceof DOMELEMENT;
|
4179 |
+
if ($isElement && $sibling->tagName == $node->tagName)
|
4180 |
+
$i++;
|
4181 |
+
}
|
4182 |
+
$xpath[] = $this->isXML()
|
4183 |
+
? "*[local-name()='{$node->tagName}'][{$i}]"
|
4184 |
+
: "{$node->tagName}[{$i}]";
|
4185 |
+
$node = $node->parentNode;
|
4186 |
+
}
|
4187 |
+
$xpath = join('/', array_reverse($xpath));
|
4188 |
+
$return[] = '/'.$xpath;
|
4189 |
+
}
|
4190 |
+
return $oneNode
|
4191 |
+
? $return[0]
|
4192 |
+
: $return;
|
4193 |
+
}
|
4194 |
+
// HELPERS
|
4195 |
+
public function whois($oneNode = null) {
|
4196 |
+
$return = array();
|
4197 |
+
$loop = $oneNode
|
4198 |
+
? array( $oneNode )
|
4199 |
+
: $this->elements;
|
4200 |
+
foreach($loop as $node) {
|
4201 |
+
if (isset($node->tagName)) {
|
4202 |
+
$tag = in_array($node->tagName, array('php', 'js'))
|
4203 |
+
? strtoupper($node->tagName)
|
4204 |
+
: $node->tagName;
|
4205 |
+
$return[] = $tag
|
4206 |
+
.($node->getAttribute('id')
|
4207 |
+
? '#'.$node->getAttribute('id'):'')
|
4208 |
+
.($node->getAttribute('class')
|
4209 |
+
? '.'.join('.', split(' ', $node->getAttribute('class'))):'')
|
4210 |
+
.($node->getAttribute('name')
|
4211 |
+
? '[name="'.$node->getAttribute('name').'"]':'')
|
4212 |
+
.($node->getAttribute('value') && strpos($node->getAttribute('value'), '<'.'?php') === false
|
4213 |
+
? '[value="'.substr(str_replace("\n", '', $node->getAttribute('value')), 0, 15).'"]':'')
|
4214 |
+
.($node->getAttribute('value') && strpos($node->getAttribute('value'), '<'.'?php') !== false
|
4215 |
+
? '[value=PHP]':'')
|
4216 |
+
.($node->getAttribute('selected')
|
4217 |
+
? '[selected]':'')
|
4218 |
+
.($node->getAttribute('checked')
|
4219 |
+
? '[checked]':'')
|
4220 |
+
;
|
4221 |
+
} else if ($node instanceof DOMTEXT) {
|
4222 |
+
if (trim($node->textContent))
|
4223 |
+
$return[] = 'Text:'.substr(str_replace("\n", ' ', $node->textContent), 0, 15);
|
4224 |
+
} else {
|
4225 |
+
|
4226 |
+
}
|
4227 |
+
}
|
4228 |
+
return $oneNode && isset($return[0])
|
4229 |
+
? $return[0]
|
4230 |
+
: $return;
|
4231 |
+
}
|
4232 |
+
/**
|
4233 |
+
* Dump htmlOuter and preserve chain. Usefull for debugging.
|
4234 |
+
*
|
4235 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4236 |
+
*
|
4237 |
+
*/
|
4238 |
+
public function dump() {
|
4239 |
+
print 'DUMP #'.(phpQuery::$dumpCount++).' ';
|
4240 |
+
$debug = phpQuery::$debug;
|
4241 |
+
phpQuery::$debug = false;
|
4242 |
+
// print __FILE__.':'.__LINE__."\n";
|
4243 |
+
var_dump($this->htmlOuter());
|
4244 |
+
return $this;
|
4245 |
+
}
|
4246 |
+
public function dumpWhois() {
|
4247 |
+
print 'DUMP #'.(phpQuery::$dumpCount++).' ';
|
4248 |
+
$debug = phpQuery::$debug;
|
4249 |
+
phpQuery::$debug = false;
|
4250 |
+
// print __FILE__.':'.__LINE__."\n";
|
4251 |
+
var_dump('whois', $this->whois());
|
4252 |
+
phpQuery::$debug = $debug;
|
4253 |
+
return $this;
|
4254 |
+
}
|
4255 |
+
public function dumpLength() {
|
4256 |
+
print 'DUMP #'.(phpQuery::$dumpCount++).' ';
|
4257 |
+
$debug = phpQuery::$debug;
|
4258 |
+
phpQuery::$debug = false;
|
4259 |
+
// print __FILE__.':'.__LINE__."\n";
|
4260 |
+
var_dump('length', $this->length());
|
4261 |
+
phpQuery::$debug = $debug;
|
4262 |
+
return $this;
|
4263 |
+
}
|
4264 |
+
public function dumpTree($html = true, $title = true) {
|
4265 |
+
$output = $title
|
4266 |
+
? 'DUMP #'.(phpQuery::$dumpCount++)." \n" : '';
|
4267 |
+
$debug = phpQuery::$debug;
|
4268 |
+
phpQuery::$debug = false;
|
4269 |
+
foreach($this->stack() as $node)
|
4270 |
+
$output .= $this->__dumpTree($node);
|
4271 |
+
phpQuery::$debug = $debug;
|
4272 |
+
print $html
|
4273 |
+
? nl2br(str_replace(' ', ' ', $output))
|
4274 |
+
: $output;
|
4275 |
+
return $this;
|
4276 |
+
}
|
4277 |
+
private function __dumpTree($node, $intend = 0) {
|
4278 |
+
$whois = $this->whois($node);
|
4279 |
+
$return = '';
|
4280 |
+
if ($whois)
|
4281 |
+
$return .= str_repeat(' - ', $intend).$whois."\n";
|
4282 |
+
if (isset($node->childNodes))
|
4283 |
+
foreach($node->childNodes as $chNode)
|
4284 |
+
$return .= $this->__dumpTree($chNode, $intend+1);
|
4285 |
+
return $return;
|
4286 |
+
}
|
4287 |
+
/**
|
4288 |
+
* Dump htmlOuter and stop script execution. Usefull for debugging.
|
4289 |
+
*
|
4290 |
+
*/
|
4291 |
+
public function dumpDie() {
|
4292 |
+
print __FILE__.':'.__LINE__;
|
4293 |
+
var_dump($this->htmlOuter());
|
4294 |
+
die();
|
4295 |
+
}
|
4296 |
+
}
|
4297 |
+
|
4298 |
+
|
4299 |
+
// -- Multibyte Compatibility functions ---------------------------------------
|
4300 |
+
// http://svn.iphonewebdev.com/lace/lib/mb_compat.php
|
4301 |
+
|
4302 |
+
/**
|
4303 |
+
* mb_internal_encoding()
|
4304 |
+
*
|
4305 |
+
* Included for mbstring pseudo-compatability.
|
4306 |
+
*/
|
4307 |
+
if (!function_exists('mb_internal_encoding'))
|
4308 |
+
{
|
4309 |
+
function mb_internal_encoding($enc) {return true; }
|
4310 |
+
}
|
4311 |
+
|
4312 |
+
/**
|
4313 |
+
* mb_regex_encoding()
|
4314 |
+
*
|
4315 |
+
* Included for mbstring pseudo-compatability.
|
4316 |
+
*/
|
4317 |
+
if (!function_exists('mb_regex_encoding'))
|
4318 |
+
{
|
4319 |
+
function mb_regex_encoding($enc) {return true; }
|
4320 |
+
}
|
4321 |
+
|
4322 |
+
/**
|
4323 |
+
* mb_strlen()
|
4324 |
+
*
|
4325 |
+
* Included for mbstring pseudo-compatability.
|
4326 |
+
*/
|
4327 |
+
if (!function_exists('mb_strlen'))
|
4328 |
+
{
|
4329 |
+
function mb_strlen($str)
|
4330 |
+
{
|
4331 |
+
return strlen($str);
|
4332 |
+
}
|
4333 |
+
}
|
4334 |
+
|
4335 |
+
/**
|
4336 |
+
* mb_strpos()
|
4337 |
+
*
|
4338 |
+
* Included for mbstring pseudo-compatability.
|
4339 |
+
*/
|
4340 |
+
if (!function_exists('mb_strpos'))
|
4341 |
+
{
|
4342 |
+
function mb_strpos($haystack, $needle, $offset=0)
|
4343 |
+
{
|
4344 |
+
return strpos($haystack, $needle, $offset);
|
4345 |
+
}
|
4346 |
+
}
|
4347 |
+
/**
|
4348 |
+
* mb_stripos()
|
4349 |
+
*
|
4350 |
+
* Included for mbstring pseudo-compatability.
|
4351 |
+
*/
|
4352 |
+
if (!function_exists('mb_stripos'))
|
4353 |
+
{
|
4354 |
+
function mb_stripos($haystack, $needle, $offset=0)
|
4355 |
+
{
|
4356 |
+
return stripos($haystack, $needle, $offset);
|
4357 |
+
}
|
4358 |
+
}
|
4359 |
+
|
4360 |
+
/**
|
4361 |
+
* mb_substr()
|
4362 |
+
*
|
4363 |
+
* Included for mbstring pseudo-compatability.
|
4364 |
+
*/
|
4365 |
+
if (!function_exists('mb_substr'))
|
4366 |
+
{
|
4367 |
+
function mb_substr($str, $start, $length=0)
|
4368 |
+
{
|
4369 |
+
return substr($str, $start, $length);
|
4370 |
+
}
|
4371 |
+
}
|
4372 |
+
|
4373 |
+
/**
|
4374 |
+
* mb_substr_count()
|
4375 |
+
*
|
4376 |
+
* Included for mbstring pseudo-compatability.
|
4377 |
+
*/
|
4378 |
+
if (!function_exists('mb_substr_count'))
|
4379 |
+
{
|
4380 |
+
function mb_substr_count($haystack, $needle)
|
4381 |
+
{
|
4382 |
+
return substr_count($haystack, $needle);
|
4383 |
+
}
|
4384 |
+
}
|
4385 |
+
|
4386 |
+
|
4387 |
+
/**
|
4388 |
+
* Static namespace for phpQuery functions.
|
4389 |
+
*
|
4390 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
4391 |
+
* @package phpQuery
|
4392 |
+
*/
|
4393 |
+
abstract class phpQuery {
|
4394 |
+
/**
|
4395 |
+
* XXX: Workaround for mbstring problems
|
4396 |
+
*
|
4397 |
+
* @var bool
|
4398 |
+
*/
|
4399 |
+
public static $mbstringSupport = true;
|
4400 |
+
public static $debug = false;
|
4401 |
+
public static $documents = array();
|
4402 |
+
public static $defaultDocumentID = null;
|
4403 |
+
// public static $defaultDoctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"';
|
4404 |
+
/**
|
4405 |
+
* Applies only to HTML.
|
4406 |
+
*
|
4407 |
+
* @var unknown_type
|
4408 |
+
*/
|
4409 |
+
public static $defaultDoctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
4410 |
+
"http://www.w3.org/TR/html4/loose.dtd">';
|
4411 |
+
public static $defaultCharset = 'UTF-8';
|
4412 |
+
/**
|
4413 |
+
* Static namespace for plugins.
|
4414 |
+
*
|
4415 |
+
* @var object
|
4416 |
+
*/
|
4417 |
+
public static $plugins = array();
|
4418 |
+
/**
|
4419 |
+
* List of loaded plugins.
|
4420 |
+
*
|
4421 |
+
* @var unknown_type
|
4422 |
+
*/
|
4423 |
+
public static $pluginsLoaded = array();
|
4424 |
+
public static $pluginsMethods = array();
|
4425 |
+
public static $pluginsStaticMethods = array();
|
4426 |
+
public static $extendMethods = array();
|
4427 |
+
/**
|
4428 |
+
* @TODO implement
|
4429 |
+
*/
|
4430 |
+
public static $extendStaticMethods = array();
|
4431 |
+
/**
|
4432 |
+
* Hosts allowed for AJAX connections.
|
4433 |
+
* Dot '.' means $_SERVER['HTTP_HOST'] (if any).
|
4434 |
+
*
|
4435 |
+
* @var array
|
4436 |
+
*/
|
4437 |
+
public static $ajaxAllowedHosts = array(
|
4438 |
+
'.'
|
4439 |
+
);
|
4440 |
+
/**
|
4441 |
+
* AJAX settings.
|
4442 |
+
*
|
4443 |
+
* @var array
|
4444 |
+
* XXX should it be static or not ?
|
4445 |
+
*/
|
4446 |
+
public static $ajaxSettings = array(
|
4447 |
+
'url' => '',//TODO
|
4448 |
+
'global' => true,
|
4449 |
+
'type' => "GET",
|
4450 |
+
'timeout' => null,
|
4451 |
+
'contentType' => "application/x-www-form-urlencoded",
|
4452 |
+
'processData' => true,
|
4453 |
+
// 'async' => true,
|
4454 |
+
'data' => null,
|
4455 |
+
'username' => null,
|
4456 |
+
'password' => null,
|
4457 |
+
'accepts' => array(
|
4458 |
+
'xml' => "application/xml, text/xml",
|
4459 |
+
'html' => "text/html",
|
4460 |
+
'script' => "text/javascript, application/javascript",
|
4461 |
+
'json' => "application/json, text/javascript",
|
4462 |
+
'text' => "text/plain",
|
4463 |
+
'_default' => "*/*"
|
4464 |
+
)
|
4465 |
+
);
|
4466 |
+
public static $lastModified = null;
|
4467 |
+
public static $active = 0;
|
4468 |
+
public static $dumpCount = 0;
|
4469 |
+
/**
|
4470 |
+
* Multi-purpose function.
|
4471 |
+
* Use pq() as shortcut.
|
4472 |
+
*
|
4473 |
+
* In below examples, $pq is any result of pq(); function.
|
4474 |
+
*
|
4475 |
+
* 1. Import markup into existing document (without any attaching):
|
4476 |
+
* - Import into selected document:
|
4477 |
+
* pq('<div/>') // DOESNT accept text nodes at beginning of input string !
|
4478 |
+
* - Import into document with ID from $pq->getDocumentID():
|
4479 |
+
* pq('<div/>', $pq->getDocumentID())
|
4480 |
+
* - Import into same document as DOMNode belongs to:
|
4481 |
+
* pq('<div/>', DOMNode)
|
4482 |
+
* - Import into document from phpQuery object:
|
4483 |
+
* pq('<div/>', $pq)
|
4484 |
+
*
|
4485 |
+
* 2. Run query:
|
4486 |
+
* - Run query on last selected document:
|
4487 |
+
* pq('div.myClass')
|
4488 |
+
* - Run query on document with ID from $pq->getDocumentID():
|
4489 |
+
* pq('div.myClass', $pq->getDocumentID())
|
4490 |
+
* - Run query on same document as DOMNode belongs to and use node(s)as root for query:
|
4491 |
+
* pq('div.myClass', DOMNode)
|
4492 |
+
* - Run query on document from phpQuery object
|
4493 |
+
* and use object's stack as root node(s) for query:
|
4494 |
+
* pq('div.myClass', $pq)
|
4495 |
+
*
|
4496 |
+
* @param string|DOMNode|DOMNodeList|array $arg1 HTML markup, CSS Selector, DOMNode or array of DOMNodes
|
4497 |
+
* @param string|phpQueryObject|DOMNode $context DOM ID from $pq->getDocumentID(), phpQuery object (determines also query root) or DOMNode (determines also query root)
|
4498 |
+
*
|
4499 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery|QueryTemplatesPhpQuery|false
|
4500 |
+
* phpQuery object or false in case of error.
|
4501 |
+
*/
|
4502 |
+
public static function pq($arg1, $context = null) {
|
4503 |
+
if ($arg1 instanceof DOMNODE && ! isset($context)) {
|
4504 |
+
foreach(phpQuery::$documents as $documentWrapper) {
|
4505 |
+
$compare = $arg1 instanceof DOMDocument
|
4506 |
+
? $arg1 : $arg1->ownerDocument;
|
4507 |
+
if ($documentWrapper->document->isSameNode($compare))
|
4508 |
+
$context = $documentWrapper->id;
|
4509 |
+
}
|
4510 |
+
}
|
4511 |
+
if (! $context) {
|
4512 |
+
$domId = self::$defaultDocumentID;
|
4513 |
+
if (! $domId)
|
4514 |
+
throw new Exception("Can't use last created DOM, because there isn't any. Use phpQuery::newDocument() first.");
|
4515 |
+
// } else if (is_object($context) && ($context instanceof PHPQUERY || is_subclass_of($context, 'phpQueryObject')))
|
4516 |
+
} else if (is_object($context) && $context instanceof phpQueryObject)
|
4517 |
+
$domId = $context->getDocumentID();
|
4518 |
+
else if ($context instanceof DOMDOCUMENT) {
|
4519 |
+
$domId = self::getDocumentID($context);
|
4520 |
+
if (! $domId) {
|
4521 |
+
//throw new Exception('Orphaned DOMDocument');
|
4522 |
+
$domId = self::newDocument($context)->getDocumentID();
|
4523 |
+
}
|
4524 |
+
} else if ($context instanceof DOMNODE) {
|
4525 |
+
$domId = self::getDocumentID($context);
|
4526 |
+
if (! $domId) {
|
4527 |
+
throw new Exception('Orphaned DOMNode');
|
4528 |
+
// $domId = self::newDocument($context->ownerDocument);
|
4529 |
+
}
|
4530 |
+
} else
|
4531 |
+
$domId = $context;
|
4532 |
+
if ($arg1 instanceof phpQueryObject) {
|
4533 |
+
// if (is_object($arg1) && (get_class($arg1) == 'phpQueryObject' || $arg1 instanceof PHPQUERY || is_subclass_of($arg1, 'phpQueryObject'))) {
|
4534 |
+
/**
|
4535 |
+
* Return $arg1 or import $arg1 stack if document differs:
|
4536 |
+
* pq(pq('<div/>'))
|
4537 |
+
*/
|
4538 |
+
if ($arg1->getDocumentID() == $domId)
|
4539 |
+
return $arg1;
|
4540 |
+
$class = get_class($arg1);
|
4541 |
+
// support inheritance by passing old object to overloaded constructor
|
4542 |
+
$phpQuery = $class != 'phpQuery'
|
4543 |
+
? new $class($arg1, $domId)
|
4544 |
+
: new phpQueryObject($domId);
|
4545 |
+
$phpQuery->elements = array();
|
4546 |
+
foreach($arg1->elements as $node)
|
4547 |
+
$phpQuery->elements[] = $phpQuery->document->importNode($node, true);
|
4548 |
+
return $phpQuery;
|
4549 |
+
} else if ($arg1 instanceof DOMNODE || (is_array($arg1) && isset($arg1[0]) && $arg1[0] instanceof DOMNODE)) {
|
4550 |
+
/*
|
4551 |
+
* Wrap DOM nodes with phpQuery object, import into document when needed:
|
4552 |
+
* pq(array($domNode1, $domNode2))
|
4553 |
+
*/
|
4554 |
+
$phpQuery = new phpQueryObject($domId);
|
4555 |
+
if (!($arg1 instanceof DOMNODELIST) && ! is_array($arg1))
|
4556 |
+
$arg1 = array($arg1);
|
4557 |
+
$phpQuery->elements = array();
|
4558 |
+
foreach($arg1 as $node) {
|
4559 |
+
$sameDocument = $node->ownerDocument instanceof DOMDOCUMENT
|
4560 |
+
&& ! $node->ownerDocument->isSameNode($phpQuery->document);
|
4561 |
+
$phpQuery->elements[] = $sameDocument
|
4562 |
+
? $phpQuery->document->importNode($node, true)
|
4563 |
+
: $node;
|
4564 |
+
}
|
4565 |
+
return $phpQuery;
|
4566 |
+
} else if (self::isMarkup($arg1)) {
|
4567 |
+
/**
|
4568 |
+
* Import HTML:
|
4569 |
+
* pq('<div/>')
|
4570 |
+
*/
|
4571 |
+
$phpQuery = new phpQueryObject($domId);
|
4572 |
+
return $phpQuery->newInstance(
|
4573 |
+
$phpQuery->documentWrapper->import($arg1)
|
4574 |
+
);
|
4575 |
+
} else {
|
4576 |
+
/**
|
4577 |
+
* Run CSS query:
|
4578 |
+
* pq('div.myClass')
|
4579 |
+
*/
|
4580 |
+
$phpQuery = new phpQueryObject($domId);
|
4581 |
+
// if ($context && ($context instanceof PHPQUERY || is_subclass_of($context, 'phpQueryObject')))
|
4582 |
+
if ($context && $context instanceof phpQueryObject)
|
4583 |
+
$phpQuery->elements = $context->elements;
|
4584 |
+
else if ($context && $context instanceof DOMNODELIST) {
|
4585 |
+
$phpQuery->elements = array();
|
4586 |
+
foreach($context as $node)
|
4587 |
+
$phpQuery->elements[] = $node;
|
4588 |
+
} else if ($context && $context instanceof DOMNODE)
|
4589 |
+
$phpQuery->elements = array($context);
|
4590 |
+
return $phpQuery->find($arg1);
|
4591 |
+
}
|
4592 |
+
}
|
4593 |
+
/**
|
4594 |
+
* Sets default document to $id. Document has to be loaded prior
|
4595 |
+
* to using this method.
|
4596 |
+
* $id can be retrived via getDocumentID() or getDocumentIDRef().
|
4597 |
+
*
|
4598 |
+
* @param unknown_type $id
|
4599 |
+
*/
|
4600 |
+
public static function selectDocument($id) {
|
4601 |
+
$id = self::getDocumentID($id);
|
4602 |
+
self::debug("Selecting document '$id' as default one");
|
4603 |
+
self::$defaultDocumentID = self::getDocumentID($id);
|
4604 |
+
}
|
4605 |
+
/**
|
4606 |
+
* Returns document with id $id or last used as phpQueryObject.
|
4607 |
+
* $id can be retrived via getDocumentID() or getDocumentIDRef().
|
4608 |
+
* Chainable.
|
4609 |
+
*
|
4610 |
+
* @see phpQuery::selectDocument()
|
4611 |
+
* @param unknown_type $id
|
4612 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4613 |
+
*/
|
4614 |
+
public static function getDocument($id = null) {
|
4615 |
+
if ($id)
|
4616 |
+
phpQuery::selectDocument($id);
|
4617 |
+
else
|
4618 |
+
$id = phpQuery::$defaultDocumentID;
|
4619 |
+
return new phpQueryObject($id);
|
4620 |
+
}
|
4621 |
+
/**
|
4622 |
+
* Creates new document from markup.
|
4623 |
+
* Chainable.
|
4624 |
+
*
|
4625 |
+
* @param unknown_type $markup
|
4626 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4627 |
+
*/
|
4628 |
+
public static function newDocument($markup = null, $contentType = null) {
|
4629 |
+
if (! $markup)
|
4630 |
+
$markup = '';
|
4631 |
+
$documentID = phpQuery::createDocumentWrapper($markup, $contentType);
|
4632 |
+
return new phpQueryObject($documentID);
|
4633 |
+
}
|
4634 |
+
/**
|
4635 |
+
* Creates new document from markup.
|
4636 |
+
* Chainable.
|
4637 |
+
*
|
4638 |
+
* @param unknown_type $markup
|
4639 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4640 |
+
*/
|
4641 |
+
public static function newDocumentHTML($markup = null, $charset = null) {
|
4642 |
+
$contentType = $charset
|
4643 |
+
? ";charset=$charset"
|
4644 |
+
: '';
|
4645 |
+
return self::newDocument($markup, "text/html{$contentType}");
|
4646 |
+
}
|
4647 |
+
/**
|
4648 |
+
* Creates new document from markup.
|
4649 |
+
* Chainable.
|
4650 |
+
*
|
4651 |
+
* @param unknown_type $markup
|
4652 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4653 |
+
*/
|
4654 |
+
public static function newDocumentXML($markup = null, $charset = null) {
|
4655 |
+
$contentType = $charset
|
4656 |
+
? ";charset=$charset"
|
4657 |
+
: '';
|
4658 |
+
return self::newDocument($markup, "text/xml{$contentType}");
|
4659 |
+
}
|
4660 |
+
/**
|
4661 |
+
* Creates new document from markup.
|
4662 |
+
* Chainable.
|
4663 |
+
*
|
4664 |
+
* @param unknown_type $markup
|
4665 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4666 |
+
*/
|
4667 |
+
public static function newDocumentXHTML($markup = null, $charset = null) {
|
4668 |
+
$contentType = $charset
|
4669 |
+
? ";charset=$charset"
|
4670 |
+
: '';
|
4671 |
+
return self::newDocument($markup, "application/xhtml+xml{$contentType}");
|
4672 |
+
}
|
4673 |
+
/**
|
4674 |
+
* Creates new document from markup.
|
4675 |
+
* Chainable.
|
4676 |
+
*
|
4677 |
+
* @param unknown_type $markup
|
4678 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4679 |
+
*/
|
4680 |
+
public static function newDocumentPHP($markup = null, $contentType = "text/html") {
|
4681 |
+
// TODO pass charset to phpToMarkup if possible (use DOMDocumentWrapper function)
|
4682 |
+
$markup = phpQuery::phpToMarkup($markup, self::$defaultCharset);
|
4683 |
+
return self::newDocument($markup, $contentType);
|
4684 |
+
}
|
4685 |
+
public static function phpToMarkup($php, $charset = 'utf-8') {
|
4686 |
+
$regexes = array(
|
4687 |
+
'@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(\')([^\']*)<'.'?php?(.*?)(?:\\?>)([^\']*)\'@s',
|
4688 |
+
'@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(")([^"]*)<'.'?php?(.*?)(?:\\?>)([^"]*)"@s',
|
4689 |
+
);
|
4690 |
+
foreach($regexes as $regex)
|
4691 |
+
while (preg_match($regex, $php, $matches)) {
|
4692 |
+
$php = preg_replace_callback(
|
4693 |
+
$regex,
|
4694 |
+
// create_function('$m, $charset = "'.$charset.'"',
|
4695 |
+
// 'return $m[1].$m[2]
|
4696 |
+
// .htmlspecialchars("<"."?php".$m[4]."?".">", ENT_QUOTES|ENT_NOQUOTES, $charset)
|
4697 |
+
// .$m[5].$m[2];'
|
4698 |
+
// ),
|
4699 |
+
array('phpQuery', '_phpToMarkupCallback'),
|
4700 |
+
$php
|
4701 |
+
);
|
4702 |
+
}
|
4703 |
+
$regex = '@(^|>[^<]*)+?(<\?php(.*?)(\?>))@s';
|
4704 |
+
//preg_match_all($regex, $php, $matches);
|
4705 |
+
//var_dump($matches);
|
4706 |
+
$php = preg_replace($regex, '\\1<php><!-- \\3 --></php>', $php);
|
4707 |
+
return $php;
|
4708 |
+
}
|
4709 |
+
public static function _phpToMarkupCallback($php, $charset = 'utf-8') {
|
4710 |
+
return $m[1].$m[2]
|
4711 |
+
.htmlspecialchars("<"."?php".$m[4]."?".">", ENT_QUOTES|ENT_NOQUOTES, $charset)
|
4712 |
+
.$m[5].$m[2];
|
4713 |
+
}
|
4714 |
+
public static function _markupToPHPCallback($m) {
|
4715 |
+
return "<"."?php ".htmlspecialchars_decode($m[1])." ?".">";
|
4716 |
+
}
|
4717 |
+
/**
|
4718 |
+
* Converts document markup containing PHP code generated by phpQuery::php()
|
4719 |
+
* into valid (executable) PHP code syntax.
|
4720 |
+
*
|
4721 |
+
* @param string|phpQueryObject $content
|
4722 |
+
* @return string PHP code.
|
4723 |
+
*/
|
4724 |
+
public static function markupToPHP($content) {
|
4725 |
+
if ($content instanceof phpQueryObject)
|
4726 |
+
$content = $content->markupOuter();
|
4727 |
+
/* <php>...</php> to <?php...? > */
|
4728 |
+
$content = preg_replace_callback(
|
4729 |
+
'@<php>\s*<!--(.*?)-->\s*</php>@s',
|
4730 |
+
// create_function('$m',
|
4731 |
+
// 'return "<'.'?php ".htmlspecialchars_decode($m[1])." ?'.'>";'
|
4732 |
+
// ),
|
4733 |
+
array('phpQuery', '_markupToPHPCallback'),
|
4734 |
+
$content
|
4735 |
+
);
|
4736 |
+
/* <node attr='< ?php ? >'> extra space added to save highlighters */
|
4737 |
+
$regexes = array(
|
4738 |
+
'@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(\')([^\']*)(?:<|%3C)\\?(?:php)?(.*?)(?:\\?(?:>|%3E))([^\']*)\'@s',
|
4739 |
+
'@(<(?!\\?)(?:[^>]|\\?>)+\\w+\\s*=\\s*)(")([^"]*)(?:<|%3C)\\?(?:php)?(.*?)(?:\\?(?:>|%3E))([^"]*)"@s',
|
4740 |
+
);
|
4741 |
+
foreach($regexes as $regex)
|
4742 |
+
while (preg_match($regex, $content))
|
4743 |
+
$content = preg_replace_callback(
|
4744 |
+
$regex,
|
4745 |
+
create_function('$m',
|
4746 |
+
'return $m[1].$m[2].$m[3]."<?php "
|
4747 |
+
.str_replace(
|
4748 |
+
array("%20", "%3E", "%09", " ", "	", "%7B", "%24", "%7D", "%22", "%5B", "%5D"),
|
4749 |
+
array(" ", ">", " ", "\n", " ", "{", "$", "}", \'"\', "[", "]"),
|
4750 |
+
htmlspecialchars_decode($m[4])
|
4751 |
+
)
|
4752 |
+
." ?>".$m[5].$m[2];'
|
4753 |
+
),
|
4754 |
+
$content
|
4755 |
+
);
|
4756 |
+
return $content;
|
4757 |
+
}
|
4758 |
+
/**
|
4759 |
+
* Creates new document from file $file.
|
4760 |
+
* Chainable.
|
4761 |
+
*
|
4762 |
+
* @param string $file URLs allowed. See File wrapper page at php.net for more supported sources.
|
4763 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4764 |
+
*/
|
4765 |
+
public static function newDocumentFile($file, $contentType = null) {
|
4766 |
+
$documentID = self::createDocumentWrapper(
|
4767 |
+
file_get_contents($file), $contentType
|
4768 |
+
);
|
4769 |
+
return new phpQueryObject($documentID);
|
4770 |
+
}
|
4771 |
+
/**
|
4772 |
+
* Creates new document from markup.
|
4773 |
+
* Chainable.
|
4774 |
+
*
|
4775 |
+
* @param unknown_type $markup
|
4776 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4777 |
+
*/
|
4778 |
+
public static function newDocumentFileHTML($file, $charset = null) {
|
4779 |
+
$contentType = $charset
|
4780 |
+
? ";charset=$charset"
|
4781 |
+
: '';
|
4782 |
+
return self::newDocumentFile($file, "text/html{$contentType}");
|
4783 |
+
}
|
4784 |
+
/**
|
4785 |
+
* Creates new document from markup.
|
4786 |
+
* Chainable.
|
4787 |
+
*
|
4788 |
+
* @param unknown_type $markup
|
4789 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4790 |
+
*/
|
4791 |
+
public static function newDocumentFileXML($file, $charset = null) {
|
4792 |
+
$contentType = $charset
|
4793 |
+
? ";charset=$charset"
|
4794 |
+
: '';
|
4795 |
+
return self::newDocumentFile($file, "text/xml{$contentType}");
|
4796 |
+
}
|
4797 |
+
/**
|
4798 |
+
* Creates new document from markup.
|
4799 |
+
* Chainable.
|
4800 |
+
*
|
4801 |
+
* @param unknown_type $markup
|
4802 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4803 |
+
*/
|
4804 |
+
public static function newDocumentFileXHTML($file, $charset = null) {
|
4805 |
+
$contentType = $charset
|
4806 |
+
? ";charset=$charset"
|
4807 |
+
: '';
|
4808 |
+
return self::newDocumentFile($file, "application/xhtml+xml{$contentType}");
|
4809 |
+
}
|
4810 |
+
/**
|
4811 |
+
* Creates new document from markup.
|
4812 |
+
* Chainable.
|
4813 |
+
*
|
4814 |
+
* @param unknown_type $markup
|
4815 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4816 |
+
*/
|
4817 |
+
public static function newDocumentFilePHP($file, $contentType = null) {
|
4818 |
+
return self::newDocumentPHP(file_get_contents($file), $contentType);
|
4819 |
+
}
|
4820 |
+
/**
|
4821 |
+
* Reuses existing DOMDocument object.
|
4822 |
+
* Chainable.
|
4823 |
+
*
|
4824 |
+
* @param $document DOMDocument
|
4825 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
4826 |
+
* @TODO support DOMDocument
|
4827 |
+
*/
|
4828 |
+
public static function loadDocument($document) {
|
4829 |
+
// TODO
|
4830 |
+
die('TODO loadDocument');
|
4831 |
+
}
|
4832 |
+
/**
|
4833 |
+
* Enter description here...
|
4834 |
+
*
|
4835 |
+
* @param unknown_type $html
|
4836 |
+
* @param unknown_type $domId
|
4837 |
+
* @return unknown New DOM ID
|
4838 |
+
* @todo support PHP tags in input
|
4839 |
+
* @todo support passing DOMDocument object from self::loadDocument
|
4840 |
+
*/
|
4841 |
+
protected static function createDocumentWrapper($html, $contentType = null, $documentID = null) {
|
4842 |
+
if (function_exists('domxml_open_mem'))
|
4843 |
+
throw new Exception("Old PHP4 DOM XML extension detected. phpQuery won't work until this extension is enabled.");
|
4844 |
+
// $id = $documentID
|
4845 |
+
// ? $documentID
|
4846 |
+
// : md5(microtime());
|
4847 |
+
$document = null;
|
4848 |
+
if ($html instanceof DOMDOCUMENT) {
|
4849 |
+
if (self::getDocumentID($html)) {
|
4850 |
+
// document already exists in phpQuery::$documents, make a copy
|
4851 |
+
$document = clone $html;
|
4852 |
+
} else {
|
4853 |
+
// new document, add it to phpQuery::$documents
|
4854 |
+
$wrapper = new DOMDocumentWrapper($html, $contentType, $documentID);
|
4855 |
+
}
|
4856 |
+
} else {
|
4857 |
+
$wrapper = new DOMDocumentWrapper($html, $contentType, $documentID);
|
4858 |
+
}
|
4859 |
+
// $wrapper->id = $id;
|
4860 |
+
// bind document
|
4861 |
+
phpQuery::$documents[$wrapper->id] = $wrapper;
|
4862 |
+
// remember last loaded document
|
4863 |
+
phpQuery::selectDocument($wrapper->id);
|
4864 |
+
return $wrapper->id;
|
4865 |
+
}
|
4866 |
+
/**
|
4867 |
+
* Extend class namespace.
|
4868 |
+
*
|
4869 |
+
* @param string|array $target
|
4870 |
+
* @param array $source
|
4871 |
+
* @TODO support string $source
|
4872 |
+
* @return unknown_type
|
4873 |
+
*/
|
4874 |
+
public static function extend($target, $source) {
|
4875 |
+
switch($target) {
|
4876 |
+
case 'phpQueryObject':
|
4877 |
+
$targetRef = &self::$extendMethods;
|
4878 |
+
$targetRef2 = &self::$pluginsMethods;
|
4879 |
+
break;
|
4880 |
+
case 'phpQuery':
|
4881 |
+
$targetRef = &self::$extendStaticMethods;
|
4882 |
+
$targetRef2 = &self::$pluginsStaticMethods;
|
4883 |
+
break;
|
4884 |
+
default:
|
4885 |
+
throw new Exception("Unsupported \$target type");
|
4886 |
+
}
|
4887 |
+
if (is_string($source))
|
4888 |
+
$source = array($source => $source);
|
4889 |
+
foreach($source as $method => $callback) {
|
4890 |
+
if (isset($targetRef[$method])) {
|
4891 |
+
// throw new Exception
|
4892 |
+
self::debug("Duplicate method '{$method}', can\'t extend '{$target}'");
|
4893 |
+
continue;
|
4894 |
+
}
|
4895 |
+
if (isset($targetRef2[$method])) {
|
4896 |
+
// throw new Exception
|
4897 |
+
self::debug("Duplicate method '{$method}' from plugin '{$targetRef2[$method]}',"
|
4898 |
+
." can\'t extend '{$target}'");
|
4899 |
+
continue;
|
4900 |
+
}
|
4901 |
+
$targetRef[$method] = $callback;
|
4902 |
+
}
|
4903 |
+
return true;
|
4904 |
+
}
|
4905 |
+
/**
|
4906 |
+
* Extend phpQuery with $class from $file.
|
4907 |
+
*
|
4908 |
+
* @param string $class Extending class name. Real class name can be prepended phpQuery_.
|
4909 |
+
* @param string $file Filename to include. Defaults to "{$class}.php".
|
4910 |
+
*/
|
4911 |
+
public static function plugin($class, $file = null) {
|
4912 |
+
// TODO $class checked agains phpQuery_$class
|
4913 |
+
// if (strpos($class, 'phpQuery') === 0)
|
4914 |
+
// $class = substr($class, 8);
|
4915 |
+
if (in_array($class, self::$pluginsLoaded))
|
4916 |
+
return true;
|
4917 |
+
if (! $file)
|
4918 |
+
$file = $class.'.php';
|
4919 |
+
$objectClassExists = class_exists('phpQueryObjectPlugin_'.$class);
|
4920 |
+
$staticClassExists = class_exists('phpQueryPlugin_'.$class);
|
4921 |
+
if (! $objectClassExists && ! $staticClassExists)
|
4922 |
+
require_once($file);
|
4923 |
+
self::$pluginsLoaded[] = $class;
|
4924 |
+
// static methods
|
4925 |
+
if (class_exists('phpQueryPlugin_'.$class)) {
|
4926 |
+
$realClass = 'phpQueryPlugin_'.$class;
|
4927 |
+
$vars = get_class_vars($realClass);
|
4928 |
+
$loop = isset($vars['phpQueryMethods'])
|
4929 |
+
&& ! is_null($vars['phpQueryMethods'])
|
4930 |
+
? $vars['phpQueryMethods']
|
4931 |
+
: get_class_methods($realClass);
|
4932 |
+
foreach($loop as $method) {
|
4933 |
+
if ($method == '__initialize')
|
4934 |
+
continue;
|
4935 |
+
if (! is_callable(array($realClass, $method)))
|
4936 |
+
continue;
|
4937 |
+
if (isset(self::$pluginsStaticMethods[$method])) {
|
4938 |
+
throw new Exception("Duplicate method '{$method}' from plugin '{$c}' conflicts with same method from plugin '".self::$pluginsStaticMethods[$method]."'");
|
4939 |
+
return;
|
4940 |
+
}
|
4941 |
+
self::$pluginsStaticMethods[$method] = $class;
|
4942 |
+
}
|
4943 |
+
if (method_exists($realClass, '__initialize'))
|
4944 |
+
call_user_func_array(array($realClass, '__initialize'), array());
|
4945 |
+
}
|
4946 |
+
// object methods
|
4947 |
+
if (class_exists('phpQueryObjectPlugin_'.$class)) {
|
4948 |
+
$realClass = 'phpQueryObjectPlugin_'.$class;
|
4949 |
+
$vars = get_class_vars($realClass);
|
4950 |
+
$loop = isset($vars['phpQueryMethods'])
|
4951 |
+
&& ! is_null($vars['phpQueryMethods'])
|
4952 |
+
? $vars['phpQueryMethods']
|
4953 |
+
: get_class_methods($realClass);
|
4954 |
+
foreach($loop as $method) {
|
4955 |
+
if (! is_callable(array($realClass, $method)))
|
4956 |
+
continue;
|
4957 |
+
if (isset(self::$pluginsMethods[$method])) {
|
4958 |
+
throw new Exception("Duplicate method '{$method}' from plugin '{$c}' conflicts with same method from plugin '".self::$pluginsMethods[$method]."'");
|
4959 |
+
continue;
|
4960 |
+
}
|
4961 |
+
self::$pluginsMethods[$method] = $class;
|
4962 |
+
}
|
4963 |
+
}
|
4964 |
+
return true;
|
4965 |
+
}
|
4966 |
+
/**
|
4967 |
+
* Unloades all or specified document from memory.
|
4968 |
+
*
|
4969 |
+
* @param mixed $documentID @see phpQuery::getDocumentID() for supported types.
|
4970 |
+
*/
|
4971 |
+
public static function unloadDocuments($id = null) {
|
4972 |
+
if (isset($id)) {
|
4973 |
+
if ($id = self::getDocumentID($id))
|
4974 |
+
unset(phpQuery::$documents[$id]);
|
4975 |
+
} else {
|
4976 |
+
foreach(phpQuery::$documents as $k => $v) {
|
4977 |
+
unset(phpQuery::$documents[$k]);
|
4978 |
+
}
|
4979 |
+
}
|
4980 |
+
}
|
4981 |
+
/**
|
4982 |
+
* Parses phpQuery object or HTML result against PHP tags and makes them active.
|
4983 |
+
*
|
4984 |
+
* @param phpQuery|string $content
|
4985 |
+
* @deprecated
|
4986 |
+
* @return string
|
4987 |
+
*/
|
4988 |
+
public static function unsafePHPTags($content) {
|
4989 |
+
return self::markupToPHP($content);
|
4990 |
+
}
|
4991 |
+
public static function DOMNodeListToArray($DOMNodeList) {
|
4992 |
+
$array = array();
|
4993 |
+
if (! $DOMNodeList)
|
4994 |
+
return $array;
|
4995 |
+
foreach($DOMNodeList as $node)
|
4996 |
+
$array[] = $node;
|
4997 |
+
return $array;
|
4998 |
+
}
|
4999 |
+
/**
|
5000 |
+
* Checks if $input is HTML string, which has to start with '<'.
|
5001 |
+
*
|
5002 |
+
* @deprecated
|
5003 |
+
* @param String $input
|
5004 |
+
* @return Bool
|
5005 |
+
* @todo still used ?
|
5006 |
+
*/
|
5007 |
+
public static function isMarkup($input) {
|
5008 |
+
return ! is_array($input) && substr(trim($input), 0, 1) == '<';
|
5009 |
+
}
|
5010 |
+
public static function debug($text) {
|
5011 |
+
if (self::$debug)
|
5012 |
+
print var_dump($text);
|
5013 |
+
}
|
5014 |
+
/**
|
5015 |
+
* Make an AJAX request.
|
5016 |
+
*
|
5017 |
+
* @param array See $options http://docs.jquery.com/Ajax/jQuery.ajax#toptions
|
5018 |
+
* Additional options are:
|
5019 |
+
* 'document' - document for global events, @see phpQuery::getDocumentID()
|
5020 |
+
* 'referer' - implemented
|
5021 |
+
* 'requested_with' - TODO; not implemented (X-Requested-With)
|
5022 |
+
* @return Zend_Http_Client
|
5023 |
+
* @link http://docs.jquery.com/Ajax/jQuery.ajax
|
5024 |
+
*
|
5025 |
+
* @TODO $options['cache']
|
5026 |
+
* @TODO $options['processData']
|
5027 |
+
* @TODO $options['xhr']
|
5028 |
+
* @TODO $options['data'] as string
|
5029 |
+
* @TODO XHR interface
|
5030 |
+
*/
|
5031 |
+
public static function ajax($options = array(), $xhr = null) {
|
5032 |
+
$options = array_merge(
|
5033 |
+
self::$ajaxSettings, $options
|
5034 |
+
);
|
5035 |
+
$documentID = isset($options['document'])
|
5036 |
+
? self::getDocumentID($options['document'])
|
5037 |
+
: null;
|
5038 |
+
if ($xhr) {
|
5039 |
+
// reuse existing XHR object, but clean it up
|
5040 |
+
$client = $xhr;
|
5041 |
+
// $client->setParameterPost(null);
|
5042 |
+
// $client->setParameterGet(null);
|
5043 |
+
$client->setAuth(false);
|
5044 |
+
$client->setHeaders("If-Modified-Since", null);
|
5045 |
+
$client->setHeaders("Referer", null);
|
5046 |
+
$client->resetParameters();
|
5047 |
+
} else {
|
5048 |
+
// create new XHR object
|
5049 |
+
require_once('Zend/Http/Client.php');
|
5050 |
+
$client = new Zend_Http_Client();
|
5051 |
+
$client->setCookieJar();
|
5052 |
+
}
|
5053 |
+
if (isset($options['timeout']))
|
5054 |
+
$client->setConfig(array(
|
5055 |
+
'timeout' => $options['timeout'],
|
5056 |
+
));
|
5057 |
+
// 'maxredirects' => 0,
|
5058 |
+
foreach(self::$ajaxAllowedHosts as $k => $host)
|
5059 |
+
if ($host == '.' && isset($_SERVER['HTTP_HOST']))
|
5060 |
+
self::$ajaxAllowedHosts[$k] = $_SERVER['HTTP_HOST'];
|
5061 |
+
$host = parse_url($options['url'], PHP_URL_HOST);
|
5062 |
+
if (! in_array($host, self::$ajaxAllowedHosts)) {
|
5063 |
+
throw new Exception("Request not permitted, host '$host' not present in "
|
5064 |
+
."phpQuery::\$ajaxAllowedHosts");
|
5065 |
+
}
|
5066 |
+
// JSONP
|
5067 |
+
$jsre = "/=\\?(&|$)/";
|
5068 |
+
if (isset($options['dataType']) && $options['dataType'] == 'jsonp') {
|
5069 |
+
$jsonpCallbackParam = $options['jsonp']
|
5070 |
+
? $options['jsonp'] : 'callback';
|
5071 |
+
if (strtolower($options['type']) == 'get') {
|
5072 |
+
if (! preg_match($jsre, $options['url'])) {
|
5073 |
+
$sep = strpos($options['url'], '?')
|
5074 |
+
? '&' : '?';
|
5075 |
+
$options['url'] .= "$sep$jsonpCallbackParam=?";
|
5076 |
+
}
|
5077 |
+
} else if ($options['data']) {
|
5078 |
+
$jsonp = false;
|
5079 |
+
foreach($options['data'] as $n => $v) {
|
5080 |
+
if ($v == '?')
|
5081 |
+
$jsonp = true;
|
5082 |
+
}
|
5083 |
+
if (! $jsonp) {
|
5084 |
+
$options['data'][$jsonpCallbackParam] = '?';
|
5085 |
+
}
|
5086 |
+
}
|
5087 |
+
$options['dataType'] = 'json';
|
5088 |
+
}
|
5089 |
+
if (isset($options['dataType']) && $options['dataType'] == 'json') {
|
5090 |
+
$jsonpCallback = 'json_'.md5(microtime());
|
5091 |
+
$jsonpData = $jsonpUrl = false;
|
5092 |
+
if ($options['data']) {
|
5093 |
+
foreach($options['data'] as $n => $v) {
|
5094 |
+
if ($v == '?')
|
5095 |
+
$jsonpData = $n;
|
5096 |
+
}
|
5097 |
+
}
|
5098 |
+
if (preg_match($jsre, $options['url']))
|
5099 |
+
$jsonpUrl = true;
|
5100 |
+
if ($jsonpData !== false || $jsonpUrl) {
|
5101 |
+
// remember callback name for httpData()
|
5102 |
+
$options['_jsonp'] = $jsonpCallback;
|
5103 |
+
if ($jsonpData !== false)
|
5104 |
+
$options['data'][$jsonpData] = $jsonpCallback;
|
5105 |
+
if ($jsonpUrl)
|
5106 |
+
$options['url'] = preg_replace($jsre, "=$jsonpCallback\\1", $options['url']);
|
5107 |
+
}
|
5108 |
+
}
|
5109 |
+
$client->setUri($options['url']);
|
5110 |
+
$client->setMethod(strtoupper($options['type']));
|
5111 |
+
if (isset($options['referer']) && $options['referer'])
|
5112 |
+
$client->setHeaders('Referer', $options['referer']);
|
5113 |
+
$client->setHeaders(array(
|
5114 |
+
// 'content-type' => $options['contentType'],
|
5115 |
+
'User-Agent' => 'Mozilla/5.0 (X11; U; Linux x86; en-US; rv:1.9.0.5) Gecko'
|
5116 |
+
.'/2008122010 Firefox/3.0.5',
|
5117 |
+
// TODO custom charset
|
5118 |
+
'Accept-Charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
|
5119 |
+
// 'Connection' => 'keep-alive',
|
5120 |
+
// 'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
5121 |
+
'Accept-Language' => 'en-us,en;q=0.5',
|
5122 |
+
));
|
5123 |
+
if ($options['username'])
|
5124 |
+
$client->setAuth($options['username'], $options['password']);
|
5125 |
+
if (isset($options['ifModified']) && $options['ifModified'])
|
5126 |
+
$client->setHeaders("If-Modified-Since",
|
5127 |
+
self::$lastModified
|
5128 |
+
? self::$lastModified
|
5129 |
+
: "Thu, 01 Jan 1970 00:00:00 GMT"
|
5130 |
+
);
|
5131 |
+
$client->setHeaders("Accept",
|
5132 |
+
isset($options['dataType'])
|
5133 |
+
&& isset(self::$ajaxSettings['accepts'][ $options['dataType'] ])
|
5134 |
+
? self::$ajaxSettings['accepts'][ $options['dataType'] ].", */*"
|
5135 |
+
: self::$ajaxSettings['accepts']['_default']
|
5136 |
+
);
|
5137 |
+
// TODO $options['processData']
|
5138 |
+
if ($options['data'] instanceof phpQueryObject) {
|
5139 |
+
$serialized = $options['data']->serializeArray($options['data']);
|
5140 |
+
$options['data'] = array();
|
5141 |
+
foreach($serialized as $r)
|
5142 |
+
$options['data'][ $r['name'] ] = $r['value'];
|
5143 |
+
}
|
5144 |
+
if (strtolower($options['type']) == 'get') {
|
5145 |
+
$client->setParameterGet($options['data']);
|
5146 |
+
} else if (strtolower($options['type']) == 'post') {
|
5147 |
+
$client->setEncType($options['contentType']);
|
5148 |
+
$client->setParameterPost($options['data']);
|
5149 |
+
}
|
5150 |
+
if (self::$active == 0 && $options['global'])
|
5151 |
+
phpQueryEvents::trigger($documentID, 'ajaxStart');
|
5152 |
+
self::$active++;
|
5153 |
+
// beforeSend callback
|
5154 |
+
if (isset($options['beforeSend']) && $options['beforeSend'])
|
5155 |
+
phpQuery::callbackRun($options['beforeSend'], array($client));
|
5156 |
+
// ajaxSend event
|
5157 |
+
if ($options['global'])
|
5158 |
+
phpQueryEvents::trigger($documentID, 'ajaxSend', array($client, $options));
|
5159 |
+
if (phpQuery::$debug) {
|
5160 |
+
self::debug("{$options['type']}: {$options['url']}\n");
|
5161 |
+
self::debug("Options: <pre>".var_export($options, true)."</pre>\n");
|
5162 |
+
// if ($client->getCookieJar())
|
5163 |
+
// self::debug("Cookies: <pre>".var_export($client->getCookieJar()->getMatchingCookies($options['url']), true)."</pre>\n");
|
5164 |
+
}
|
5165 |
+
// request
|
5166 |
+
$response = $client->request();
|
5167 |
+
if (phpQuery::$debug) {
|
5168 |
+
self::debug('Status: '.$response->getStatus().' / '.$response->getMessage());
|
5169 |
+
self::debug($client->getLastRequest());
|
5170 |
+
self::debug($response->getHeaders());
|
5171 |
+
}
|
5172 |
+
if ($response->isSuccessful()) {
|
5173 |
+
// XXX tempolary
|
5174 |
+
self::$lastModified = $response->getHeader('Last-Modified');
|
5175 |
+
$data = self::httpData($response->getBody(), $options['dataType'], $options);
|
5176 |
+
if (isset($options['success']) && $options['success'])
|
5177 |
+
phpQuery::callbackRun($options['success'], array($data, $response->getStatus(), $options));
|
5178 |
+
if ($options['global'])
|
5179 |
+
phpQueryEvents::trigger($documentID, 'ajaxSuccess', array($client, $options));
|
5180 |
+
} else {
|
5181 |
+
if (isset($options['error']) && $options['error'])
|
5182 |
+
phpQuery::callbackRun($options['error'], array($client, $response->getStatus(), $response->getMessage()));
|
5183 |
+
if ($options['global'])
|
5184 |
+
phpQueryEvents::trigger($documentID, 'ajaxError', array($client, /*$response->getStatus(),*/$response->getMessage(), $options));
|
5185 |
+
}
|
5186 |
+
if (isset($options['complete']) && $options['complete'])
|
5187 |
+
phpQuery::callbackRun($options['complete'], array($client, $response->getStatus()));
|
5188 |
+
if ($options['global'])
|
5189 |
+
phpQueryEvents::trigger($documentID, 'ajaxComplete', array($client, $options));
|
5190 |
+
if ($options['global'] && ! --self::$active)
|
5191 |
+
phpQueryEvents::trigger($documentID, 'ajaxStop');
|
5192 |
+
return $client;
|
5193 |
+
// if (is_null($domId))
|
5194 |
+
// $domId = self::$defaultDocumentID ? self::$defaultDocumentID : false;
|
5195 |
+
// return new phpQueryAjaxResponse($response, $domId);
|
5196 |
+
}
|
5197 |
+
protected static function httpData($data, $type, $options) {
|
5198 |
+
if (isset($options['dataFilter']) && $options['dataFilter'])
|
5199 |
+
$data = self::callbackRun($options['dataFilter'], array($data, $type));
|
5200 |
+
if (is_string($data)) {
|
5201 |
+
if ($type == "json") {
|
5202 |
+
if (isset($options['_jsonp']) && $options['_jsonp']) {
|
5203 |
+
$data = preg_replace('/^\s*\w+\((.*)\)\s*$/s', '$1', $data);
|
5204 |
+
}
|
5205 |
+
$data = self::parseJSON($data);
|
5206 |
+
}
|
5207 |
+
}
|
5208 |
+
return $data;
|
5209 |
+
}
|
5210 |
+
/**
|
5211 |
+
* Enter description here...
|
5212 |
+
*
|
5213 |
+
* @param array|phpQuery $data
|
5214 |
+
*
|
5215 |
+
*/
|
5216 |
+
public static function param($data) {
|
5217 |
+
return http_build_query($data, null, '&');
|
5218 |
+
}
|
5219 |
+
public static function get($url, $data = null, $callback = null, $type = null) {
|
5220 |
+
if (!is_array($data)) {
|
5221 |
+
$callback = $data;
|
5222 |
+
$data = null;
|
5223 |
+
}
|
5224 |
+
// TODO some array_values on this shit
|
5225 |
+
return phpQuery::ajax(array(
|
5226 |
+
'type' => 'GET',
|
5227 |
+
'url' => $url,
|
5228 |
+
'data' => $data,
|
5229 |
+
'success' => $callback,
|
5230 |
+
'dataType' => $type,
|
5231 |
+
));
|
5232 |
+
}
|
5233 |
+
public static function post($url, $data = null, $callback = null, $type = null) {
|
5234 |
+
if (!is_array($data)) {
|
5235 |
+
$callback = $data;
|
5236 |
+
$data = null;
|
5237 |
+
}
|
5238 |
+
return phpQuery::ajax(array(
|
5239 |
+
'type' => 'POST',
|
5240 |
+
'url' => $url,
|
5241 |
+
'data' => $data,
|
5242 |
+
'success' => $callback,
|
5243 |
+
'dataType' => $type,
|
5244 |
+
));
|
5245 |
+
}
|
5246 |
+
public static function getJSON($url, $data = null, $callback = null) {
|
5247 |
+
if (!is_array($data)) {
|
5248 |
+
$callback = $data;
|
5249 |
+
$data = null;
|
5250 |
+
}
|
5251 |
+
// TODO some array_values on this shit
|
5252 |
+
return phpQuery::ajax(array(
|
5253 |
+
'type' => 'GET',
|
5254 |
+
'url' => $url,
|
5255 |
+
'data' => $data,
|
5256 |
+
'success' => $callback,
|
5257 |
+
'dataType' => 'json',
|
5258 |
+
));
|
5259 |
+
}
|
5260 |
+
public static function ajaxSetup($options) {
|
5261 |
+
self::$ajaxSettings = array_merge(
|
5262 |
+
self::$ajaxSettings,
|
5263 |
+
$options
|
5264 |
+
);
|
5265 |
+
}
|
5266 |
+
public static function ajaxAllowHost($host1, $host2 = null, $host3 = null) {
|
5267 |
+
$loop = is_array($host1)
|
5268 |
+
? $host1
|
5269 |
+
: func_get_args();
|
5270 |
+
foreach($loop as $host) {
|
5271 |
+
if ($host && ! in_array($host, phpQuery::$ajaxAllowedHosts)) {
|
5272 |
+
phpQuery::$ajaxAllowedHosts[] = $host;
|
5273 |
+
}
|
5274 |
+
}
|
5275 |
+
}
|
5276 |
+
public static function ajaxAllowURL($url1, $url2 = null, $url3 = null) {
|
5277 |
+
$loop = is_array($url1)
|
5278 |
+
? $url1
|
5279 |
+
: func_get_args();
|
5280 |
+
foreach($loop as $url)
|
5281 |
+
phpQuery::ajaxAllowHost(parse_url($url, PHP_URL_HOST));
|
5282 |
+
}
|
5283 |
+
/**
|
5284 |
+
* Returns JSON representation of $data.
|
5285 |
+
*
|
5286 |
+
* @static
|
5287 |
+
* @param mixed $data
|
5288 |
+
* @return string
|
5289 |
+
*/
|
5290 |
+
public static function toJSON($data) {
|
5291 |
+
if (function_exists('json_encode'))
|
5292 |
+
return json_encode($data);
|
5293 |
+
require_once('Zend/Json/Encoder.php');
|
5294 |
+
return Zend_Json_Encoder::encode($data);
|
5295 |
+
}
|
5296 |
+
/**
|
5297 |
+
* Parses JSON into proper PHP type.
|
5298 |
+
*
|
5299 |
+
* @static
|
5300 |
+
* @param string $json
|
5301 |
+
* @return mixed
|
5302 |
+
*/
|
5303 |
+
public static function parseJSON($json) {
|
5304 |
+
if (function_exists('json_decode')) {
|
5305 |
+
$return = json_decode(trim($json), true);
|
5306 |
+
// json_decode and UTF8 issues
|
5307 |
+
if (isset($return))
|
5308 |
+
return $return;
|
5309 |
+
}
|
5310 |
+
require_once('Zend/Json/Decoder.php');
|
5311 |
+
return Zend_Json_Decoder::decode($json);
|
5312 |
+
}
|
5313 |
+
/**
|
5314 |
+
* Returns source's document ID.
|
5315 |
+
*
|
5316 |
+
* @param $source DOMNode|phpQueryObject
|
5317 |
+
* @return string
|
5318 |
+
*/
|
5319 |
+
public static function getDocumentID($source) {
|
5320 |
+
if ($source instanceof DOMDOCUMENT) {
|
5321 |
+
foreach(phpQuery::$documents as $id => $document) {
|
5322 |
+
if ($source->isSameNode($document->document))
|
5323 |
+
return $id;
|
5324 |
+
}
|
5325 |
+
} else if ($source instanceof DOMNODE) {
|
5326 |
+
foreach(phpQuery::$documents as $id => $document) {
|
5327 |
+
if ($source->ownerDocument->isSameNode($document->document))
|
5328 |
+
return $id;
|
5329 |
+
}
|
5330 |
+
} else if ($source instanceof phpQueryObject)
|
5331 |
+
return $source->getDocumentID();
|
5332 |
+
else if (is_string($source) && isset(phpQuery::$documents[$source]))
|
5333 |
+
return $source;
|
5334 |
+
}
|
5335 |
+
/**
|
5336 |
+
* Get DOMDocument object related to $source.
|
5337 |
+
* Returns null if such document doesn't exist.
|
5338 |
+
*
|
5339 |
+
* @param $source DOMNode|phpQueryObject|string
|
5340 |
+
* @return string
|
5341 |
+
*/
|
5342 |
+
public static function getDOMDocument($source) {
|
5343 |
+
if ($source instanceof DOMDOCUMENT)
|
5344 |
+
return $source;
|
5345 |
+
$source = self::getDocumentID($source);
|
5346 |
+
return $source
|
5347 |
+
? self::$documents[$id]['document']
|
5348 |
+
: null;
|
5349 |
+
}
|
5350 |
+
|
5351 |
+
// UTILITIES
|
5352 |
+
// http://docs.jquery.com/Utilities
|
5353 |
+
|
5354 |
+
/**
|
5355 |
+
*
|
5356 |
+
* @return unknown_type
|
5357 |
+
* @link http://docs.jquery.com/Utilities/jQuery.makeArray
|
5358 |
+
*/
|
5359 |
+
public static function makeArray($obj) {
|
5360 |
+
$array = array();
|
5361 |
+
if (is_object($object) && $object instanceof DOMNODELIST) {
|
5362 |
+
foreach($object as $value)
|
5363 |
+
$array[] = $value;
|
5364 |
+
} else if (is_object($object) && ! ($object instanceof Iterator)) {
|
5365 |
+
foreach(get_object_vars($object) as $name => $value)
|
5366 |
+
$array[0][$name] = $value;
|
5367 |
+
} else {
|
5368 |
+
foreach($object as $name => $value)
|
5369 |
+
$array[0][$name] = $value;
|
5370 |
+
}
|
5371 |
+
return $array;
|
5372 |
+
}
|
5373 |
+
public static function inArray($value, $array) {
|
5374 |
+
return in_array($value, $array);
|
5375 |
+
}
|
5376 |
+
/**
|
5377 |
+
*
|
5378 |
+
* @param $object
|
5379 |
+
* @param $callback
|
5380 |
+
* @return unknown_type
|
5381 |
+
* @link http://docs.jquery.com/Utilities/jQuery.each
|
5382 |
+
*/
|
5383 |
+
public static function each($object, $callback, $param1 = null, $param2 = null, $param3 = null) {
|
5384 |
+
$paramStructure = null;
|
5385 |
+
if (func_num_args() > 2) {
|
5386 |
+
$paramStructure = func_get_args();
|
5387 |
+
$paramStructure = array_slice($paramStructure, 2);
|
5388 |
+
}
|
5389 |
+
if (is_object($object) && ! ($object instanceof Iterator)) {
|
5390 |
+
foreach(get_object_vars($object) as $name => $value)
|
5391 |
+
phpQuery::callbackRun($callback, array($name, $value), $paramStructure);
|
5392 |
+
} else {
|
5393 |
+
foreach($object as $name => $value)
|
5394 |
+
phpQuery::callbackRun($callback, array($name, $value), $paramStructure);
|
5395 |
+
}
|
5396 |
+
}
|
5397 |
+
/**
|
5398 |
+
*
|
5399 |
+
* @link http://docs.jquery.com/Utilities/jQuery.map
|
5400 |
+
*/
|
5401 |
+
public static function map($array, $callback, $param1 = null, $param2 = null, $param3 = null) {
|
5402 |
+
$result = array();
|
5403 |
+
$paramStructure = null;
|
5404 |
+
if (func_num_args() > 2) {
|
5405 |
+
$paramStructure = func_get_args();
|
5406 |
+
$paramStructure = array_slice($paramStructure, 2);
|
5407 |
+
}
|
5408 |
+
foreach($array as $v) {
|
5409 |
+
$vv = phpQuery::callbackRun($callback, array($v), $paramStructure);
|
5410 |
+
// $callbackArgs = $args;
|
5411 |
+
// foreach($args as $i => $arg) {
|
5412 |
+
// $callbackArgs[$i] = $arg instanceof CallbackParam
|
5413 |
+
// ? $v
|
5414 |
+
// : $arg;
|
5415 |
+
// }
|
5416 |
+
// $vv = call_user_func_array($callback, $callbackArgs);
|
5417 |
+
if (is_array($vv)) {
|
5418 |
+
foreach($vv as $vvv)
|
5419 |
+
$result[] = $vvv;
|
5420 |
+
} else if ($vv !== null) {
|
5421 |
+
$result[] = $vv;
|
5422 |
+
}
|
5423 |
+
}
|
5424 |
+
return $result;
|
5425 |
+
}
|
5426 |
+
/**
|
5427 |
+
*
|
5428 |
+
* @param $callback Callback
|
5429 |
+
* @param $params
|
5430 |
+
* @param $paramStructure
|
5431 |
+
* @return unknown_type
|
5432 |
+
*/
|
5433 |
+
public static function callbackRun($callback, $params = array(), $paramStructure = null) {
|
5434 |
+
if (! $callback)
|
5435 |
+
return;
|
5436 |
+
if ($callback instanceof CallbackParameterToReference) {
|
5437 |
+
// TODO support ParamStructure to select which $param push to reference
|
5438 |
+
if (isset($params[0]))
|
5439 |
+
$callback->callback = $params[0];
|
5440 |
+
return true;
|
5441 |
+
}
|
5442 |
+
if ($callback instanceof Callback) {
|
5443 |
+
$paramStructure = $callback->params;
|
5444 |
+
$callback = $callback->callback;
|
5445 |
+
}
|
5446 |
+
if (! $paramStructure)
|
5447 |
+
return call_user_func_array($callback, $params);
|
5448 |
+
$p = 0;
|
5449 |
+
foreach($paramStructure as $i => $v) {
|
5450 |
+
$paramStructure[$i] = $v instanceof CallbackParam
|
5451 |
+
? $params[$p++]
|
5452 |
+
: $v;
|
5453 |
+
}
|
5454 |
+
return call_user_func_array($callback, $paramStructure);
|
5455 |
+
}
|
5456 |
+
/**
|
5457 |
+
* Merge 2 phpQuery objects.
|
5458 |
+
* @param array $one
|
5459 |
+
* @param array $two
|
5460 |
+
* @protected
|
5461 |
+
* @todo node lists, phpQueryObject
|
5462 |
+
*/
|
5463 |
+
public static function merge($one, $two) {
|
5464 |
+
$elements = $one->elements;
|
5465 |
+
foreach($two->elements as $node) {
|
5466 |
+
$exists = false;
|
5467 |
+
foreach($elements as $node2) {
|
5468 |
+
if ($node2->isSameNode($node))
|
5469 |
+
$exists = true;
|
5470 |
+
}
|
5471 |
+
if (! $exists)
|
5472 |
+
$elements[] = $node;
|
5473 |
+
}
|
5474 |
+
return $elements;
|
5475 |
+
// $one = $one->newInstance();
|
5476 |
+
// $one->elements = $elements;
|
5477 |
+
// return $one;
|
5478 |
+
}
|
5479 |
+
/**
|
5480 |
+
*
|
5481 |
+
* @param $array
|
5482 |
+
* @param $callback
|
5483 |
+
* @param $invert
|
5484 |
+
* @return unknown_type
|
5485 |
+
* @link http://docs.jquery.com/Utilities/jQuery.grep
|
5486 |
+
*/
|
5487 |
+
public static function grep($array, $callback, $invert = false) {
|
5488 |
+
$result = array();
|
5489 |
+
foreach($array as $k => $v) {
|
5490 |
+
$r = call_user_func_array($callback, array($v, $k));
|
5491 |
+
if ($r === !(bool)$invert)
|
5492 |
+
$result[] = $v;
|
5493 |
+
}
|
5494 |
+
return $result;
|
5495 |
+
}
|
5496 |
+
public static function unique($array) {
|
5497 |
+
return array_unique($array);
|
5498 |
+
}
|
5499 |
+
/**
|
5500 |
+
*
|
5501 |
+
* @param $function
|
5502 |
+
* @return unknown_type
|
5503 |
+
* @TODO there are problems with non-static methods, second parameter pass it
|
5504 |
+
* but doesnt verify is method is really callable
|
5505 |
+
*/
|
5506 |
+
public static function isFunction($function) {
|
5507 |
+
return is_callable($function);
|
5508 |
+
}
|
5509 |
+
public static function trim($str) {
|
5510 |
+
return trim($str);
|
5511 |
+
}
|
5512 |
+
/* PLUGINS NAMESPACE */
|
5513 |
+
/**
|
5514 |
+
*
|
5515 |
+
* @param $url
|
5516 |
+
* @param $callback
|
5517 |
+
* @param $param1
|
5518 |
+
* @param $param2
|
5519 |
+
* @param $param3
|
5520 |
+
* @return phpQueryObject
|
5521 |
+
*/
|
5522 |
+
public static function browserGet($url, $callback, $param1 = null, $param2 = null, $param3 = null) {
|
5523 |
+
if (self::plugin('WebBrowser')) {
|
5524 |
+
$params = func_get_args();
|
5525 |
+
return self::callbackRun(array(self::$plugins, 'browserGet'), $params);
|
5526 |
+
} else {
|
5527 |
+
self::debug('WebBrowser plugin not available...');
|
5528 |
+
}
|
5529 |
+
}
|
5530 |
+
/**
|
5531 |
+
*
|
5532 |
+
* @param $url
|
5533 |
+
* @param $data
|
5534 |
+
* @param $callback
|
5535 |
+
* @param $param1
|
5536 |
+
* @param $param2
|
5537 |
+
* @param $param3
|
5538 |
+
* @return phpQueryObject
|
5539 |
+
*/
|
5540 |
+
public static function browserPost($url, $data, $callback, $param1 = null, $param2 = null, $param3 = null) {
|
5541 |
+
if (self::plugin('WebBrowser')) {
|
5542 |
+
$params = func_get_args();
|
5543 |
+
return self::callbackRun(array(self::$plugins, 'browserPost'), $params);
|
5544 |
+
} else {
|
5545 |
+
self::debug('WebBrowser plugin not available...');
|
5546 |
+
}
|
5547 |
+
}
|
5548 |
+
/**
|
5549 |
+
*
|
5550 |
+
* @param $ajaxSettings
|
5551 |
+
* @param $callback
|
5552 |
+
* @param $param1
|
5553 |
+
* @param $param2
|
5554 |
+
* @param $param3
|
5555 |
+
* @return phpQueryObject
|
5556 |
+
*/
|
5557 |
+
public static function browser($ajaxSettings, $callback, $param1 = null, $param2 = null, $param3 = null) {
|
5558 |
+
if (self::plugin('WebBrowser')) {
|
5559 |
+
$params = func_get_args();
|
5560 |
+
return self::callbackRun(array(self::$plugins, 'browser'), $params);
|
5561 |
+
} else {
|
5562 |
+
self::debug('WebBrowser plugin not available...');
|
5563 |
+
}
|
5564 |
+
}
|
5565 |
+
/**
|
5566 |
+
*
|
5567 |
+
* @param $code
|
5568 |
+
* @return string
|
5569 |
+
*/
|
5570 |
+
public static function php($code) {
|
5571 |
+
return self::code('php', $code);
|
5572 |
+
}
|
5573 |
+
/**
|
5574 |
+
*
|
5575 |
+
* @param $type
|
5576 |
+
* @param $code
|
5577 |
+
* @return string
|
5578 |
+
*/
|
5579 |
+
public static function code($type, $code) {
|
5580 |
+
return "<$type><!-- ".trim($code)." --></$type>";
|
5581 |
+
}
|
5582 |
+
|
5583 |
+
public static function __callStatic($method, $params) {
|
5584 |
+
return call_user_func_array(
|
5585 |
+
array(phpQuery::$plugins, $method),
|
5586 |
+
$params
|
5587 |
+
);
|
5588 |
+
}
|
5589 |
+
protected static function dataSetupNode($node, $documentID) {
|
5590 |
+
// search are return if alredy exists
|
5591 |
+
foreach(phpQuery::$documents[$documentID]->dataNodes as $dataNode) {
|
5592 |
+
if ($node->isSameNode($dataNode))
|
5593 |
+
return $dataNode;
|
5594 |
+
}
|
5595 |
+
// if doesn't, add it
|
5596 |
+
phpQuery::$documents[$documentID]->dataNodes[] = $node;
|
5597 |
+
return $node;
|
5598 |
+
}
|
5599 |
+
protected static function dataRemoveNode($node, $documentID) {
|
5600 |
+
// search are return if alredy exists
|
5601 |
+
foreach(phpQuery::$documents[$documentID]->dataNodes as $k => $dataNode) {
|
5602 |
+
if ($node->isSameNode($dataNode)) {
|
5603 |
+
unset(self::$documents[$documentID]->dataNodes[$k]);
|
5604 |
+
unset(self::$documents[$documentID]->data[ $dataNode->dataID ]);
|
5605 |
+
}
|
5606 |
+
}
|
5607 |
+
}
|
5608 |
+
public static function data($node, $name, $data, $documentID = null) {
|
5609 |
+
if (! $documentID)
|
5610 |
+
// TODO check if this works
|
5611 |
+
$documentID = self::getDocumentID($node);
|
5612 |
+
$document = phpQuery::$documents[$documentID];
|
5613 |
+
$node = self::dataSetupNode($node, $documentID);
|
5614 |
+
if (! isset($node->dataID))
|
5615 |
+
$node->dataID = ++phpQuery::$documents[$documentID]->uuid;
|
5616 |
+
$id = $node->dataID;
|
5617 |
+
if (! isset($document->data[$id]))
|
5618 |
+
$document->data[$id] = array();
|
5619 |
+
if (! is_null($data))
|
5620 |
+
$document->data[$id][$name] = $data;
|
5621 |
+
if ($name) {
|
5622 |
+
if (isset($document->data[$id][$name]))
|
5623 |
+
return $document->data[$id][$name];
|
5624 |
+
} else
|
5625 |
+
return $id;
|
5626 |
+
}
|
5627 |
+
public static function removeData($node, $name, $documentID) {
|
5628 |
+
if (! $documentID)
|
5629 |
+
// TODO check if this works
|
5630 |
+
$documentID = self::getDocumentID($node);
|
5631 |
+
$document = phpQuery::$documents[$documentID];
|
5632 |
+
$node = self::dataSetupNode($node, $documentID);
|
5633 |
+
$id = $node->dataID;
|
5634 |
+
if ($name) {
|
5635 |
+
if (isset($document->data[$id][$name]))
|
5636 |
+
unset($document->data[$id][$name]);
|
5637 |
+
$name = null;
|
5638 |
+
foreach($document->data[$id] as $name)
|
5639 |
+
break;
|
5640 |
+
if (! $name)
|
5641 |
+
self::removeData($node, $name, $documentID);
|
5642 |
+
} else {
|
5643 |
+
self::dataRemoveNode($node, $documentID);
|
5644 |
+
}
|
5645 |
+
}
|
5646 |
+
}
|
5647 |
+
/**
|
5648 |
+
* Plugins static namespace class.
|
5649 |
+
*
|
5650 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
5651 |
+
* @package phpQuery
|
5652 |
+
* @todo move plugin methods here (as statics)
|
5653 |
+
*/
|
5654 |
+
class phpQueryPlugins {
|
5655 |
+
public function __call($method, $args) {
|
5656 |
+
if (isset(phpQuery::$extendStaticMethods[$method])) {
|
5657 |
+
$return = call_user_func_array(
|
5658 |
+
phpQuery::$extendStaticMethods[$method],
|
5659 |
+
$args
|
5660 |
+
);
|
5661 |
+
} else if (isset(phpQuery::$pluginsStaticMethods[$method])) {
|
5662 |
+
$class = phpQuery::$pluginsStaticMethods[$method];
|
5663 |
+
$realClass = "phpQueryPlugin_$class";
|
5664 |
+
$return = call_user_func_array(
|
5665 |
+
array($realClass, $method),
|
5666 |
+
$args
|
5667 |
+
);
|
5668 |
+
return isset($return)
|
5669 |
+
? $return
|
5670 |
+
: $this;
|
5671 |
+
} else
|
5672 |
+
throw new Exception("Method '{$method}' doesnt exist");
|
5673 |
+
}
|
5674 |
+
}
|
5675 |
+
/**
|
5676 |
+
* Shortcut to phpQuery::pq($arg1, $context)
|
5677 |
+
* Chainable.
|
5678 |
+
*
|
5679 |
+
* @see phpQuery::pq()
|
5680 |
+
* @return phpQueryObject|QueryTemplatesSource|QueryTemplatesParse|QueryTemplatesSourceQuery
|
5681 |
+
* @author Tobiasz Cudnik <tobiasz.cudnik/gmail.com>
|
5682 |
+
* @package phpQuery
|
5683 |
+
*/
|
5684 |
+
function pq($arg1, $context = null) {
|
5685 |
+
$args = func_get_args();
|
5686 |
+
return call_user_func_array(
|
5687 |
+
array('phpQuery', 'pq'),
|
5688 |
+
$args
|
5689 |
+
);
|
5690 |
+
}
|
5691 |
+
// add plugins dir and Zend framework to include path
|
5692 |
+
set_include_path(
|
5693 |
+
get_include_path()
|
5694 |
+
.PATH_SEPARATOR.dirname(__FILE__).'/phpQuery/'
|
5695 |
+
.PATH_SEPARATOR.dirname(__FILE__).'/phpQuery/plugins/'
|
5696 |
+
);
|
5697 |
+
// why ? no __call nor __get for statics in php...
|
5698 |
+
// XXX __callStatic will be available in PHP 5.3
|
5699 |
+
phpQuery::$plugins = new phpQueryPlugins();
|
5700 |
+
// include bootstrap file (personal library config)
|
5701 |
+
if (file_exists(dirname(__FILE__).'/phpQuery/bootstrap.php'))
|
5702 |
+
require_once dirname(__FILE__).'/phpQuery/bootstrap.php';
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: gantry
|
|
3 |
Author URI: http://gantry-framework.org
|
4 |
Tags: gantry, framework, template, theme, widgets, flexible, extensible, configurable, 960px, grid, columns, powerful, buddypress
|
5 |
Requires at least: 3.2
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 4.0
|
8 |
|
9 |
Gantry is a comprehensive set of building blocks to enable the rapid development and realization of a design into a flexible and powerful web platform
|
10 |
|
@@ -85,6 +85,19 @@ Once you downloaded and installed Gantry Framework plugin, please download also
|
|
85 |
|
86 |
== Changelog ==
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
= 4.0.8 =
|
89 |
* Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
|
90 |
* Fix for the Gizmo options not being saved/loaded in the Presets of the theme
|
@@ -345,6 +358,9 @@ Once you downloaded and installed Gantry Framework plugin, please download also
|
|
345 |
|
346 |
== Upgrade Notice ==
|
347 |
|
|
|
|
|
|
|
348 |
= 4.0.8 =
|
349 |
Please remember to create a full site backup (files + database) before performing update.
|
350 |
|
3 |
Author URI: http://gantry-framework.org
|
4 |
Tags: gantry, framework, template, theme, widgets, flexible, extensible, configurable, 960px, grid, columns, powerful, buddypress
|
5 |
Requires at least: 3.2
|
6 |
+
Tested up to: 3.8
|
7 |
+
Stable tag: 4.1.0
|
8 |
|
9 |
Gantry is a comprehensive set of building blocks to enable the rapid development and realization of a design into a flexible and powerful web platform
|
10 |
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
+
= 4.1.0 =
|
89 |
+
* Compatibility fix in the MooRainbow for the Visual Composer plugin
|
90 |
+
* RokBox 2 support in the Login Button widget
|
91 |
+
* Fix for the multiple body classes in Page Suffix gizmo
|
92 |
+
* Updated IE11 detection
|
93 |
+
* Updated Pretty Print JS files
|
94 |
+
* Fixed font style issues caused by FontAwesome 3.2.1 icons
|
95 |
+
* Added Font Awesome 4 assets for future use
|
96 |
+
* Fixed missing special characters with Google fonts ie. Polish characters
|
97 |
+
* Removed RocketTheme references in Copyright widget
|
98 |
+
* Fixed the display of overrided options in the theme settings
|
99 |
+
* Gantry admin UI fixes for the WordPress 3.8
|
100 |
+
|
101 |
= 4.0.8 =
|
102 |
* Added core support for the BuddyPress 1.8+ - Gantry BuddyPress plugin is no longer required and has been deprecated
|
103 |
* Fix for the Gizmo options not being saved/loaded in the Presets of the theme
|
358 |
|
359 |
== Upgrade Notice ==
|
360 |
|
361 |
+
= 4.1.0 =
|
362 |
+
Please remember to create a full site backup (files + database) before performing update.
|
363 |
+
|
364 |
= 4.0.8 =
|
365 |
Please remember to create a full site backup (files + database) before performing update.
|
366 |
|
widgets/breadcrumbs.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version 4.0
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version 4.1.0 December 12, 2013
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
widgets/copyright.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version $Id: copyright.php
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -42,7 +42,6 @@ class GantryWidgetCopyright extends GantryWidget
|
|
42 |
ob_start();
|
43 |
?>
|
44 |
|
45 |
-
<a href="http://www.rockettheme.com/" title="rockettheme.com" id="rocket"></a>
|
46 |
<?php
|
47 |
|
48 |
$text = $instance['text'];
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version $Id: copyright.php 60231 2013-11-20 22:27:14Z jakub $
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
42 |
ob_start();
|
43 |
?>
|
44 |
|
|
|
45 |
<?php
|
46 |
|
47 |
$text = $instance['text'];
|
widgets/gantrymenu/themes/default/js/responsive-selectbox.js
CHANGED
@@ -1,15 +1,106 @@
|
|
1 |
-
|
2 |
-
* @version $Id: responsive-selectbox.js
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
-
* @copyright Copyright (C) 2007 -
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* @version $Id: responsive-selectbox.js 8885 2013-03-28 17:38:51Z djamil $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
+
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
+
|
8 |
+
((function () {
|
9 |
+
|
10 |
+
var ResponsiveDropdown = {
|
11 |
+
cache: [],
|
12 |
+
build: function() {
|
13 |
+
var menu = document.getElement('ul.gf-menu'),
|
14 |
+
container = document.getElement('.gf-menu-device-container');
|
15 |
+
|
16 |
+
if (!menu || !container || menu.retrieve('roknavmenu:dropdown:select')) return;
|
17 |
+
|
18 |
+
menu.store('roknavmenu:dropdown:select', true);
|
19 |
+
|
20 |
+
var select = new Element('select').inject(container, 'top');
|
21 |
+
|
22 |
+
ResponsiveDropdown.getChildren(menu, select, 0);
|
23 |
+
|
24 |
+
//menu.setStyle('display', 'none');
|
25 |
+
|
26 |
+
ResponsiveDropdown.attachEvent(select);
|
27 |
+
},
|
28 |
+
|
29 |
+
getChildren: function(menu, select, depth) {
|
30 |
+
var children = menu.getChildren().flatten(),
|
31 |
+
submenu, subitem, item, group, cache,
|
32 |
+
itemtext, subtext,
|
33 |
+
option, isActive;
|
34 |
+
|
35 |
+
for (var i = 0, l = children.length; i < l; i++) {
|
36 |
+
item = children[i].getElement('.item');
|
37 |
+
if (!item) continue;
|
38 |
+
|
39 |
+
cache = children[i].className.replace(/\s/g, '-');
|
40 |
+
|
41 |
+
if (ResponsiveDropdown.cache.contains(cache)) continue;
|
42 |
+
ResponsiveDropdown.cache.push(cache);
|
43 |
+
|
44 |
+
subitem = item.getElement('em') || item.getElement('i');
|
45 |
+
submenu = children[i].getElement('ul');
|
46 |
+
group = children[i].getElement('ol');
|
47 |
+
isActive = children[i].hasClass('active');
|
48 |
+
|
49 |
+
itemtext = item.get('text').clean();
|
50 |
+
subtext = subitem ? subitem.get('text').clean() : '';
|
51 |
+
|
52 |
+
if (itemtext.length != subtext.length) itemtext = itemtext.substr(0, (itemtext.length - 1) - (subtext.length - 1));
|
53 |
+
|
54 |
+
option = new Element('option', {value:item.get('href'), text:'-'.repeat(depth) + ' ' + itemtext}).inject(select);
|
55 |
+
|
56 |
+
|
57 |
+
if (isActive) option.set('selected', 'selected');
|
58 |
+
|
59 |
+
|
60 |
+
if (submenu){
|
61 |
+
if (submenu.getParent('.column')){
|
62 |
+
ResponsiveDropdown.getChildren(submenu.getParent('.dropdown').getElements(' > .column > ul'), select, depth + 1);
|
63 |
+
} else ResponsiveDropdown.getChildren(submenu, select, depth + 1);
|
64 |
+
}
|
65 |
+
|
66 |
+
if (group){
|
67 |
+
ResponsiveDropdown.getChildren(group, select, depth + 1);
|
68 |
+
}
|
69 |
+
}
|
70 |
+
},
|
71 |
+
|
72 |
+
attachEvent: function(select) {
|
73 |
+
select.addEvent('change', function () {
|
74 |
+
window.location.href = this.value;
|
75 |
+
});
|
76 |
+
}
|
77 |
+
};
|
78 |
+
|
79 |
+
window.addEvent('domready', ResponsiveDropdown.build);
|
80 |
+
|
81 |
+
if (typeof ResponsiveMenu != 'undefined') {
|
82 |
+
ResponsiveMenu.implement({
|
83 |
+
mediaQuery:function (query) {
|
84 |
+
var menu = document.getElement('.gf-menu'),
|
85 |
+
container = document.getElement('.gf-menu-device-container'),
|
86 |
+
slide = this.toggler.retrieve('roknavmenu:slide');
|
87 |
+
|
88 |
+
if (!menu && !container) return;
|
89 |
+
|
90 |
+
if (query == '(min-width: 768px)') {
|
91 |
+
menu.setStyle('display', 'inherit');
|
92 |
+
this.slide.wrapper.setStyle('display', 'none');
|
93 |
+
this.toggler.setStyle('display', 'none');
|
94 |
+
} else {
|
95 |
+
menu.setStyle('display', 'none');
|
96 |
+
this.slide.wrapper.setStyle('display', 'inherit');
|
97 |
+
this.toggler.setStyle('display', 'block');
|
98 |
+
}
|
99 |
+
|
100 |
+
slide.hide();
|
101 |
+
this.toggler.removeClass('active');
|
102 |
+
}
|
103 |
+
});
|
104 |
+
}
|
105 |
+
|
106 |
+
})());
|
widgets/gantrymenu/themes/default/js/responsive.js
CHANGED
@@ -1,16 +1,91 @@
|
|
1 |
-
|
2 |
* @version $Id: responsive.js 4586 2012-10-27 01:50:24Z btowles $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
-
* @copyright Copyright (C) 2007 -
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
}
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
* @version $Id: responsive.js 4586 2012-10-27 01:50:24Z btowles $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
+
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
+
|
8 |
+
((function(){
|
9 |
+
|
10 |
+
var ResponsiveMenu = this.ResponsiveMenu = new Class({
|
11 |
+
initialize: function(){
|
12 |
+
this.build();
|
13 |
+
this.attachEvents();
|
14 |
+
this.mediaQuery(RokMediaQueries.getQuery());
|
15 |
+
},
|
16 |
+
|
17 |
+
build: function(){
|
18 |
+
if (this.toggler) return this.toggler;
|
19 |
+
this.toggler = new Element('div.gf-menu-toggle').inject(document.body);
|
20 |
+
|
21 |
+
(3).times(function(i){
|
22 |
+
new Element('span.icon-bar').inject(this.toggler);
|
23 |
+
}, this);
|
24 |
+
|
25 |
+
return this.toggler;
|
26 |
+
},
|
27 |
+
|
28 |
+
attachEvents: function(){
|
29 |
+
var click = this.toggler.retrieve('roknavmenu:click', function(event){
|
30 |
+
this.toggle.call(this, event, this.toggler);
|
31 |
+
}.bind(this));
|
32 |
+
|
33 |
+
this.toggler.addEvent('click', click);
|
34 |
+
|
35 |
+
this.slide = this.toggler.retrieve('roknavmenu:slide', new Fx.Slide(
|
36 |
+
document.getElement('.gf-menu-device-container'), {
|
37 |
+
duration: 350,
|
38 |
+
hideOverflow: true,
|
39 |
+
resetHeight: true,
|
40 |
+
link: 'cancel',
|
41 |
+
onStart: function(){
|
42 |
+
if (!this.open) this.wrapper.addClass('gf-menu-device-wrapper');
|
43 |
+
},
|
44 |
+
onComplete: function(){
|
45 |
+
if (this.open) this.wrapper.removeClass('gf-menu-device-wrapper');
|
46 |
+
}
|
47 |
+
}
|
48 |
+
).hide());
|
49 |
+
|
50 |
+
|
51 |
+
try {
|
52 |
+
RokMediaQueries.on('(max-width: 767px)', this.mediaQuery.bind(this));
|
53 |
+
RokMediaQueries.on('(min-width: 768px)', this.mediaQuery.bind(this));
|
54 |
+
}
|
55 |
+
catch(error) { if (typeof console != 'undefined') console.error('Error [Responsive Menu] while trying to add a RokMediaQuery "match" event', error); }
|
56 |
+
},
|
57 |
+
|
58 |
+
toggle: function(event, toggler){
|
59 |
+
var slide = toggler.retrieve('roknavmenu:slide');
|
60 |
+
|
61 |
+
toggler[slide.open ? 'removeClass' : 'addClass']('active');
|
62 |
+
slide[slide.open ? 'slideOut' : 'slideIn']();
|
63 |
+
},
|
64 |
+
|
65 |
+
mediaQuery: function(query){
|
66 |
+
var menu = document.getElement('.gf-menu'),
|
67 |
+
container = document.getElement('.gf-menu-device-container'),
|
68 |
+
slide = this.toggler.retrieve('roknavmenu:slide');
|
69 |
+
|
70 |
+
if (!menu && !container) return;
|
71 |
+
|
72 |
+
if (query == '(min-width: 768px)'){
|
73 |
+
menu.inject(slide.wrapper, 'after');
|
74 |
+
this.slide.wrapper.setStyle('display', 'none');
|
75 |
+
this.toggler.setStyle('display', 'none');
|
76 |
+
} else {
|
77 |
+
menu.inject(container);
|
78 |
+
this.slide.wrapper.setStyle('display', 'inherit');
|
79 |
+
this.toggler.setStyle('display', 'block');
|
80 |
+
}
|
81 |
+
|
82 |
+
slide.hide();
|
83 |
+
this.toggler.removeClass('active');
|
84 |
+
}
|
85 |
+
});
|
86 |
+
|
87 |
+
window.addEvent('domready', function(){
|
88 |
+
this.RokNavMenu = new ResponsiveMenu();
|
89 |
+
});
|
90 |
+
|
91 |
+
})());
|
widgets/gantrymenu/themes/default/js/rokmediaqueries.js
CHANGED
@@ -1,21 +1,156 @@
|
|
1 |
-
|
2 |
* @version $Id: rokmediaqueries.js 4586 2012-10-27 01:50:24Z btowles $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
-
* @copyright Copyright (C) 2007 -
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
* @version $Id: rokmediaqueries.js 4586 2012-10-27 01:50:24Z btowles $
|
3 |
* @author RocketTheme http://www.rockettheme.com
|
4 |
+
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
*/
|
7 |
+
|
8 |
+
((function () {
|
9 |
+
///*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
|
10 |
+
// matchMedia polyfill
|
11 |
+
window.matchMedia = window.matchMedia || window.msMatchMedia || (function (doc, undefined) {
|
12 |
+
var bool,
|
13 |
+
docElem = doc.documentElement,
|
14 |
+
refNode = docElem.firstElementChild || docElem.firstChild,
|
15 |
+
// fakeBody required for <FF4 when executed in <head>
|
16 |
+
fakeBody = doc.createElement('body'),
|
17 |
+
div = doc.createElement('div');
|
18 |
+
|
19 |
+
div.id = 'mq-test-1';
|
20 |
+
div.style.cssText = "position:absolute;top:-100em";
|
21 |
+
fakeBody.style.background = "none";
|
22 |
+
fakeBody.appendChild(div);
|
23 |
+
|
24 |
+
return function (q) {
|
25 |
+
div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
|
26 |
+
|
27 |
+
docElem.insertBefore(fakeBody, refNode);
|
28 |
+
bool = div.offsetWidth == 42;
|
29 |
+
docElem.removeChild(fakeBody);
|
30 |
+
|
31 |
+
return {
|
32 |
+
matches:bool,
|
33 |
+
media:q,
|
34 |
+
addListener:function (fn) {
|
35 |
+
if (!Browser.ie9 && !window.opera) return "";
|
36 |
+
|
37 |
+
if (window.retrieve('rokmediaqueries:listener:' + q.replace(/[a-z]|[(|)|:|\s|-]/gi, ''), false)) return;
|
38 |
+
|
39 |
+
window.store('rokmediaqueries:listener:' + q.replace(/[a-z]|[(|)|:|\s|-]/gi, ''), true);
|
40 |
+
window[window.addListener ? 'addListener' : 'attachEvent']('resize', function () {
|
41 |
+
var sizes = {}, length = 0, winSize, passed = false;
|
42 |
+
q.replace(/(\w+-?\w+)\s?:\s?(\d+){1,}/g, function (match, p1, p2, p3, offset, string) {
|
43 |
+
sizes[p1] = p2;
|
44 |
+
length++;
|
45 |
+
});
|
46 |
+
if (!length) return;
|
47 |
+
else if (length == 1) {
|
48 |
+
winSize = window.getSize();
|
49 |
+
passed = false;
|
50 |
+
Object.each(sizes, function (size, dimension) {
|
51 |
+
if (dimension == 'min-width') passed += winSize.x >= size;
|
52 |
+
else if (dimension == 'max-width') passed += winSize.x <= size;
|
53 |
+
else if (dimension == 'width') passed += winSize.x == size;
|
54 |
+
});
|
55 |
+
} else if (length > 1) {
|
56 |
+
winSize = window.getSize();
|
57 |
+
passed = true;
|
58 |
+
Object.each(sizes, function (size, dimension) {
|
59 |
+
if (dimension == 'min-width') passed *= winSize.x >= size;
|
60 |
+
else if (dimension == 'max-width') passed *= winSize.x <= size;
|
61 |
+
else if (dimension == 'width') passed *= winSize.x == size;
|
62 |
+
});
|
63 |
+
}
|
64 |
+
|
65 |
+
if (passed) return fn.call(fn, q);
|
66 |
+
});
|
67 |
+
|
68 |
+
}
|
69 |
+
};
|
70 |
+
};
|
71 |
+
|
72 |
+
})(document);
|
73 |
+
|
74 |
+
})());
|
75 |
+
|
76 |
+
((function (win, doc) {
|
77 |
+
|
78 |
+
if (typeof RokMediaQueries != 'undefined') return;
|
79 |
+
|
80 |
+
var RokMediaQuery = new Class({
|
81 |
+
Implements:[Events, Options],
|
82 |
+
options:{
|
83 |
+
/*
|
84 |
+
onChange: function(query){},
|
85 |
+
*/
|
86 |
+
queries:[
|
87 |
+
'(min-width: 1200px)',
|
88 |
+
'(min-width: 960px) and (max-width: 1199px)',
|
89 |
+
'(min-width: 768px) and (max-width: 959px)',
|
90 |
+
'(min-width: 481px) and (max-width: 767px)',
|
91 |
+
'(max-width: 480px)'
|
92 |
+
]
|
93 |
+
},
|
94 |
+
initialize:function (options) {
|
95 |
+
this.setOptions(options);
|
96 |
+
this.queries = this.options.queries;
|
97 |
+
this.queriesEvents = {};
|
98 |
+
this.timers = [];
|
99 |
+
|
100 |
+
for (var i = this.queries.length - 1; i >= 0; i--) {
|
101 |
+
var media = win.matchMedia(this.queries[i]);
|
102 |
+
media.addListener(this._fireEvent.bind(this, this.queries[i]));
|
103 |
+
this.queriesEvents[this.queries[i]] = [];
|
104 |
+
}
|
105 |
+
},
|
106 |
+
|
107 |
+
on:function (query, funct) {
|
108 |
+
if (query == 'every') {
|
109 |
+
for (var i = this.queries.length - 1; i >= 0; i--) this._addOnMatch(this.queries[i], funct);
|
110 |
+
} else {
|
111 |
+
this._addOnMatch(query, funct);
|
112 |
+
}
|
113 |
+
},
|
114 |
+
|
115 |
+
add:function (query) {
|
116 |
+
if (!this.queries.contains(query)) {
|
117 |
+
var media;
|
118 |
+
this.queries.push(query);
|
119 |
+
media = win.matchMedia(query);
|
120 |
+
media.addListener(this._fireEvent.bind(this, query));
|
121 |
+
}
|
122 |
+
|
123 |
+
if (!this.queriesEvents[query]) this.queriesEvents[query] = [];
|
124 |
+
},
|
125 |
+
|
126 |
+
getQuery:function () {
|
127 |
+
var current = "";
|
128 |
+
|
129 |
+
for (var i = this.queries.length - 1; i >= 0; i--) {
|
130 |
+
if (win.matchMedia(this.queries[i]).matches) {
|
131 |
+
current = this.queries[i];
|
132 |
+
break;
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
return current;
|
137 |
+
},
|
138 |
+
|
139 |
+
/* private methods */
|
140 |
+
_fireEvent:function (query) {
|
141 |
+
if (!win.matchMedia(query).matches || !Object.getLength(this.queriesEvents) || !this.queriesEvents[query]) return;
|
142 |
+
|
143 |
+
for (var i = this.queriesEvents[query].length - 1; i >= 0; i--) {
|
144 |
+
this.queriesEvents[query][i].delay(5, this, query);
|
145 |
+
}
|
146 |
+
},
|
147 |
+
|
148 |
+
_addOnMatch:function (query, funct) {
|
149 |
+
this.add(query);
|
150 |
+
this.queriesEvents[query].push(funct);
|
151 |
+
}
|
152 |
+
});
|
153 |
+
|
154 |
+
win.RokMediaQueries = new RokMediaQuery();
|
155 |
+
|
156 |
+
})(window, document));
|
widgets/gantrymenu/themes/default/js/sidemenu.js
ADDED
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* @version $Id: sidemenu.js 14307 2013-10-08 15:44:26Z djamil $
|
3 |
+
* @author RocketTheme http://www.rockettheme.com
|
4 |
+
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
5 |
+
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
6 |
+
*/
|
7 |
+
|
8 |
+
((function(){
|
9 |
+
|
10 |
+
var isTouch = (function(){ return !!('ontouchstart' in window); })(),
|
11 |
+
isiPad = navigator.userAgent.match(/iPad/i) != null;
|
12 |
+
|
13 |
+
var SideMenu = this.SideMenu = new Class({
|
14 |
+
initialize: function(){
|
15 |
+
this.build();
|
16 |
+
this.mediaQuery(RokMediaQueries.getQuery());
|
17 |
+
this.attachEvents();
|
18 |
+
this.mediaQuery(RokMediaQueries.getQuery());
|
19 |
+
},
|
20 |
+
|
21 |
+
build: function(){
|
22 |
+
if (this.toggler) return this.toggler;
|
23 |
+
this.toggler = new Element('div.gf-menu-toggle').inject(document.body);
|
24 |
+
this.container = document.getElement('.gf-menu-device-container');
|
25 |
+
this.wrapper = new Element('div.gf-menu-device-container-wrapper').inject(this.container);
|
26 |
+
|
27 |
+
this.container = new Element('div.gf-menu-device-wrapper-sidemenu').wraps(this.container);
|
28 |
+
|
29 |
+
this.menu = document.getElement('.gf-menu');
|
30 |
+
this.originalPosition = this.menu.getParent();
|
31 |
+
this.open = false;
|
32 |
+
|
33 |
+
(3).times(function(){
|
34 |
+
new Element('span.icon-bar').inject(this.toggler);
|
35 |
+
}, this);
|
36 |
+
|
37 |
+
this.container.inject(document.body);
|
38 |
+
|
39 |
+
return this.toggler;
|
40 |
+
},
|
41 |
+
|
42 |
+
attachEvents: function(){
|
43 |
+
var click = this.toggler.retrieve('roknavmenu:click', function(event){
|
44 |
+
event.preventDefault().stopPropagation();
|
45 |
+
this.toggle.call(this, event, this.toggler);
|
46 |
+
}.bind(this));
|
47 |
+
|
48 |
+
this.toggler.addEvent('click', click);
|
49 |
+
|
50 |
+
this.touchEvents = {
|
51 |
+
click: function(event){ event.preventDefault(); },
|
52 |
+
touchstart: function(){ this.store('touched', true); },
|
53 |
+
touchcancel: function(event){ event.preventDefault(); this.store('touched', false); },
|
54 |
+
touchmove: function(){ this.store('touched', false); },
|
55 |
+
touchend: function(event){
|
56 |
+
console.log(this);
|
57 |
+
if (!this.retrieve('touched', false)) event.preventDefault();
|
58 |
+
else location.href = this.get('href');
|
59 |
+
}
|
60 |
+
};
|
61 |
+
|
62 |
+
try {
|
63 |
+
RokMediaQueries.on('(max-width: 767px)', this.mediaQuery.bind(this));
|
64 |
+
RokMediaQueries.on('(min-width: 768px)', this.mediaQuery.bind(this));
|
65 |
+
}
|
66 |
+
catch(error) { if (typeof console != 'undefined') console.error('Error [Responsive Menu] while trying to add a RokMediaQuery "match" event', error); }
|
67 |
+
},
|
68 |
+
|
69 |
+
attachTouchEvents: function(){
|
70 |
+
if (isTouch && !isiPad){
|
71 |
+
$$('.responsive-type-panel .item').removeEvents().forEach(function(item){
|
72 |
+
Object.forEach(this.touchEvents, function(fn, evt){
|
73 |
+
item.addEventListener(evt, fn, false);
|
74 |
+
});
|
75 |
+
}, this);
|
76 |
+
}
|
77 |
+
},
|
78 |
+
|
79 |
+
detachTouchEvents: function(){
|
80 |
+
if (isTouch && !isiPad){
|
81 |
+
$$('.responsive-type-panel .item').forEach(function(item){
|
82 |
+
Object.forEach(this.touchEvents, function(fn, evt){
|
83 |
+
item.removeEventListener(evt, fn, false);
|
84 |
+
});
|
85 |
+
}, this);
|
86 |
+
}
|
87 |
+
},
|
88 |
+
|
89 |
+
toggle: function(event, toggler){
|
90 |
+
this.container[!this.open ? 'addClass' : 'removeClass']('gf-sidemenu-size-left');
|
91 |
+
document.body[!this.open ? 'addClass' : 'removeClass']('gf-sidemenu-size-marginleft');
|
92 |
+
toggler[!this.open ? 'addClass' : 'removeClass']('active');
|
93 |
+
|
94 |
+
this.open = !this.open;
|
95 |
+
/*var slide = toggler.retrieve('roknavmenu:slidehor');
|
96 |
+
|
97 |
+
toggler[slide.open ? 'removeClass' : 'addClass']('active');
|
98 |
+
slide[slide.open ? 'slideOut' : 'slideIn']();*/
|
99 |
+
},
|
100 |
+
|
101 |
+
mediaQuery: function(query){
|
102 |
+
var menu = this.menu,
|
103 |
+
container = this.wrapper;
|
104 |
+
//slide = this.toggler.retrieve('roknavmenu:slidehor');
|
105 |
+
|
106 |
+
if (!menu && !container) return;
|
107 |
+
if (query != '(min-width: 768px)' && query != '(max-width: 767px)') return;
|
108 |
+
|
109 |
+
if (query == '(min-width: 768px)'){
|
110 |
+
menu.inject(this.originalPosition);
|
111 |
+
this.detachTouchEvents();
|
112 |
+
/*this.slide.wrapper.setStyle('display', 'none');*/
|
113 |
+
this.toggler.setStyle('display', 'none');
|
114 |
+
} else {
|
115 |
+
menu.inject(container);
|
116 |
+
this.attachTouchEvents();
|
117 |
+
/*this.slide.wrapper.setStyle('display', 'inherit');*/
|
118 |
+
this.toggler.setStyle('display', 'block');
|
119 |
+
}
|
120 |
+
|
121 |
+
//slide.hide();
|
122 |
+
this.toggler.removeClass('active');
|
123 |
+
}
|
124 |
+
});
|
125 |
+
|
126 |
+
window.addEvent('domready', function(){
|
127 |
+
this.RokNavMenu = new SideMenu();
|
128 |
+
});
|
129 |
+
|
130 |
+
})());
|
widgets/loginbutton.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version 4.0
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
@@ -52,7 +52,7 @@ class GantryWidgetLoginButton extends GantryWidget {
|
|
52 |
<div id="<?php echo $this->id; ?>" class="widget <?php echo $this->css_classname; ?> rt-block">
|
53 |
<div class="rt-popupmodule-button">
|
54 |
<?php if(!is_user_logged_in()) : ?>
|
55 |
-
|
56 |
<span class="desc"><?php echo $instance['logintext']; ?></span>
|
57 |
</a>
|
58 |
<?php else : ?>
|
@@ -68,4 +68,17 @@ class GantryWidgetLoginButton extends GantryWidget {
|
|
68 |
echo ob_get_clean();
|
69 |
|
70 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version 4.1.0 December 12, 2013
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
52 |
<div id="<?php echo $this->id; ?>" class="widget <?php echo $this->css_classname; ?> rt-block">
|
53 |
<div class="rt-popupmodule-button">
|
54 |
<?php if(!is_user_logged_in()) : ?>
|
55 |
+
<?php echo $this->_renderRokBoxLink(); ?>
|
56 |
<span class="desc"><?php echo $instance['logintext']; ?></span>
|
57 |
</a>
|
58 |
<?php else : ?>
|
68 |
echo ob_get_clean();
|
69 |
|
70 |
}
|
71 |
+
|
72 |
+
function _renderRokBoxLink(){
|
73 |
+
$isRokBox2 = @file_exists(ABSPATH . 'wp-content/plugins/wp_rokbox/tinymce/tinymce.php');
|
74 |
+
$output = array();
|
75 |
+
|
76 |
+
if ($isRokBox2){
|
77 |
+
$output[] = '<a data-rokbox data-rokbox-element="#rt-popuplogin" href="#" class="buttontext button">';
|
78 |
+
} else {
|
79 |
+
$output[] = '<a href="#" class="buttontext button" rel="rokbox[385 200][module=rt-popuplogin]">';
|
80 |
+
}
|
81 |
+
|
82 |
+
return implode("\n", $output);
|
83 |
+
}
|
84 |
}
|
widgets/loginform.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* @version 4.0
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|
1 |
<?php
|
2 |
/**
|
3 |
+
* @version 4.1.0 December 12, 2013
|
4 |
* @author RocketTheme http://www.rockettheme.com
|
5 |
* @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
|
6 |
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
|