Version Description
- Updated locale data
- Minor fix to file reference resolution
- Fixed windows paths with trailing backslash
- Fixed ssh-keys toggling issue
- Rejigged buffer handling during Ajax
- Bumped WP compatibility to 4.9.8
Download this release
Release Info
Developer | timwhitlock |
Plugin | Loco Translate |
Version | 2.1.5 |
Comparing to | |
See all releases |
Code changes from version 2.1.4 to 2.1.5
- languages/loco-translate.pot +41 -35
- lib/compiled/gettext.php +11 -12
- lib/data/locales.php +1 -1
- lib/data/plurals.php +1 -1
- loco.php +3 -3
- pub/css/admin.css +1 -1
- pub/css/editor.css +1 -1
- pub/css/podiff.css +1 -1
- pub/css/poview.css +1 -1
- pub/css/skins/blue.css +1 -1
- pub/css/skins/coffee.css +1 -1
- pub/css/skins/ectoplasm.css +1 -1
- pub/css/skins/light.css +1 -1
- pub/css/skins/midnight.css +1 -1
- pub/css/skins/ocean.css +1 -1
- pub/css/skins/sunrise.css +1 -1
- pub/font/loco.eot +0 -0
- pub/font/loco.svg +4 -2
- pub/font/loco.ttf +0 -0
- pub/font/loco.woff +0 -0
- pub/js/min/admin.js +229 -226
- readme.txt +11 -3
- src/admin/config/DebugController.php +20 -12
- src/admin/init/InitPoController.php +3 -3
- src/ajax/FsReferenceController.php +6 -0
- src/ajax/SaveController.php +2 -6
- src/api/WordPressFileSystem.php +3 -3
- src/config/Model.php +2 -2
- src/error/Exception.php +0 -3
- src/error/ParseException.php +5 -7
- src/fs/File.php +4 -3
- src/fs/FileWriter.php +3 -5
- src/fs/Locations.php +5 -5
- src/gettext/Data.php +1 -15
- src/gettext/SearchPaths.php +1 -1
- src/js/Strings.php +9 -0
- src/mvc/AjaxRouter.php +52 -49
- src/mvc/View.php +2 -2
- src/output/Buffer.php +49 -34
- src/package/Bundle.php +3 -2
- src/package/Core.php +2 -2
- src/package/Plugin.php +2 -2
- src/package/Project.php +4 -2
- src/package/Theme.php +2 -2
- tpl/admin/config/debug.php +17 -0
- tpl/admin/init/init-po.php +1 -1
languages/loco-translate.pot
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
#, fuzzy
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
-
"Project-Id-Version: Loco Translate 2.1.
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
-
"POT-Creation-Date: 2018-
|
7 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
"Language-Team: \n"
|
@@ -14,7 +14,7 @@ msgstr ""
|
|
14 |
"Content-Transfer-Encoding: 8bit\n"
|
15 |
"X-Generator: Loco https://localise.biz/"
|
16 |
|
17 |
-
#: src/fs/FileWriter.php:
|
18 |
#, php-format
|
19 |
msgid "\"%s\" is a directory, not a file"
|
20 |
msgstr ""
|
@@ -148,11 +148,11 @@ msgstr ""
|
|
148 |
msgid "Advanced tab"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: src/mvc/AjaxRouter.php:
|
152 |
msgid "Ajax controller returned empty JSON"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: src/mvc/AjaxRouter.php:
|
156 |
#, php-format
|
157 |
msgid "Ajax route not found: \"%s\""
|
158 |
msgstr ""
|
@@ -344,7 +344,7 @@ msgid "Custom language"
|
|
344 |
msgstr ""
|
345 |
|
346 |
#: src/error/Debug.php:19 src/admin/config/BaseController.php:23
|
347 |
-
#: src/admin/config/DebugController.php:
|
348 |
#: src/admin/bundle/BaseController.php:104
|
349 |
msgid "Debug"
|
350 |
msgstr ""
|
@@ -390,11 +390,11 @@ msgstr ""
|
|
390 |
msgid "Domain path"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: src/mvc/AjaxRouter.php:
|
394 |
msgid "Download action not found"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: src/mvc/AjaxRouter.php:
|
398 |
msgid "Download controller returned empty output"
|
399 |
msgstr ""
|
400 |
|
@@ -446,7 +446,7 @@ msgid "Context"
|
|
446 |
msgstr ""
|
447 |
|
448 |
#. Label for the context window when no translation selected
|
449 |
-
#: src/js/Strings.php:
|
450 |
msgctxt "Editor"
|
451 |
msgid "Context not loaded"
|
452 |
msgstr ""
|
@@ -458,7 +458,7 @@ msgid "Download"
|
|
458 |
msgstr ""
|
459 |
|
460 |
#. Button that toggles a translation's Fuzzy flag
|
461 |
-
#: src/admin/file/EditController.php:164
|
462 |
msgctxt "Editor"
|
463 |
msgid "Fuzzy"
|
464 |
msgstr ""
|
@@ -501,7 +501,7 @@ msgid "Source text"
|
|
501 |
msgstr ""
|
502 |
|
503 |
#. Label for the source text window when no translation selected
|
504 |
-
#: src/js/Strings.php:
|
505 |
msgctxt "Editor"
|
506 |
msgid "Source text not loaded"
|
507 |
msgstr ""
|
@@ -524,25 +524,35 @@ msgctxt "Editor"
|
|
524 |
msgid "Toggle invisibles"
|
525 |
msgstr ""
|
526 |
|
|
|
|
|
|
|
|
|
|
|
527 |
#. List heading showing preview of translated text for each item
|
528 |
-
#: src/js/Strings.php:
|
529 |
msgctxt "Editor"
|
530 |
msgid "Translation"
|
531 |
msgstr ""
|
532 |
|
533 |
#. Label for the translation editing window when no translation selected
|
534 |
-
#: src/js/Strings.php:
|
535 |
msgctxt "Editor"
|
536 |
msgid "Translation not loaded"
|
537 |
msgstr ""
|
538 |
|
|
|
|
|
|
|
|
|
|
|
539 |
#: tpl/admin/errors/file-missing.php:14
|
540 |
msgid ""
|
541 |
"Either this file is missing or the server doesn't have permission to access "
|
542 |
"it"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: src/js/Strings.php:62 src/error/Exception.php:
|
546 |
msgid "Error"
|
547 |
msgstr ""
|
548 |
|
@@ -562,41 +572,41 @@ msgstr[1] ""
|
|
562 |
msgid "Extracting strings"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: src/fs/FileWriter.php:
|
566 |
msgid "Failed to build directory path"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: src/fs/FileWriter.php:
|
570 |
#, php-format
|
571 |
msgid "Failed to chmod %s"
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: src/fs/FileWriter.php:
|
575 |
msgid "Failed to connect to remote server"
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: src/fs/FileWriter.php:
|
579 |
#, php-format
|
580 |
msgid "Failed to copy %s to %s"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: src/ajax/SaveController.php:
|
584 |
#, php-format
|
585 |
msgid ""
|
586 |
"Failed to create backup file in \"%s\". Check file permissions or disable "
|
587 |
"backups"
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: src/fs/FileWriter.php:
|
591 |
msgid "Failed to create directory"
|
592 |
msgstr ""
|
593 |
|
594 |
-
#: src/fs/FileWriter.php:
|
595 |
#, php-format
|
596 |
msgid "Failed to delete %s"
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: src/fs/FileWriter.php:
|
600 |
msgid "Failed to save file"
|
601 |
msgstr ""
|
602 |
|
@@ -656,7 +666,7 @@ msgctxt "File location"
|
|
656 |
msgid "System"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: src/fs/FileWriter.php:
|
660 |
msgid "File modification is disallowed by your WordPress config"
|
661 |
msgstr ""
|
662 |
|
@@ -903,7 +913,7 @@ msgid ""
|
|
903 |
"are many files"
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: src/output/Buffer.php:
|
907 |
#, php-format
|
908 |
msgid "Loco interrupted by output from %s:%u"
|
909 |
msgstr ""
|
@@ -974,7 +984,7 @@ msgstr ""
|
|
974 |
msgid "Modification of installed files"
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: src/fs/FileWriter.php:
|
978 |
msgid "Modification of installed files is disallowed by the plugin settings"
|
979 |
msgstr ""
|
980 |
|
@@ -1117,7 +1127,7 @@ msgstr ""
|
|
1117 |
msgid "Page not found"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#: src/fs/FileWriter.php:
|
1121 |
msgid "Parent directory doesn't exist"
|
1122 |
msgstr ""
|
1123 |
|
@@ -1137,7 +1147,7 @@ msgstr ""
|
|
1137 |
msgid "Permission denied"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: src/fs/FileWriter.php:
|
1141 |
msgid "Permission denied to update file"
|
1142 |
msgstr ""
|
1143 |
|
@@ -1222,19 +1232,15 @@ msgstr ""
|
|
1222 |
msgid "PO file missing"
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
#: src/ajax/SaveController.php:
|
1226 |
-
msgid "PO file saved"
|
1227 |
-
msgstr ""
|
1228 |
-
|
1229 |
-
#: src/ajax/SaveController.php:103
|
1230 |
msgid "PO file saved and MO file compiled"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: src/ajax/SaveController.php:
|
1234 |
msgid "PO file saved, but MO file compilation failed"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
-
#: src/ajax/SaveController.php:
|
1238 |
msgid "POT file saved"
|
1239 |
msgstr ""
|
1240 |
|
@@ -1254,7 +1260,7 @@ msgstr ""
|
|
1254 |
msgid "Recently updated:"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: src/fs/FileWriter.php:
|
1258 |
msgid "Refusing to copy over an existing file"
|
1259 |
msgstr ""
|
1260 |
|
1 |
#, fuzzy
|
2 |
msgid ""
|
3 |
msgstr ""
|
4 |
+
"Project-Id-Version: Loco Translate 2.1.5-dev\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2018-07-23 09:58+0000\n"
|
7 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
"Language-Team: \n"
|
14 |
"Content-Transfer-Encoding: 8bit\n"
|
15 |
"X-Generator: Loco https://localise.biz/"
|
16 |
|
17 |
+
#: src/fs/FileWriter.php:173
|
18 |
#, php-format
|
19 |
msgid "\"%s\" is a directory, not a file"
|
20 |
msgstr ""
|
148 |
msgid "Advanced tab"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: src/mvc/AjaxRouter.php:176
|
152 |
msgid "Ajax controller returned empty JSON"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: src/mvc/AjaxRouter.php:171
|
156 |
#, php-format
|
157 |
msgid "Ajax route not found: \"%s\""
|
158 |
msgstr ""
|
344 |
msgstr ""
|
345 |
|
346 |
#: src/error/Debug.php:19 src/admin/config/BaseController.php:23
|
347 |
+
#: src/admin/config/DebugController.php:12
|
348 |
#: src/admin/bundle/BaseController.php:104
|
349 |
msgid "Debug"
|
350 |
msgstr ""
|
390 |
msgid "Domain path"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: src/mvc/AjaxRouter.php:199
|
394 |
msgid "Download action not found"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: src/mvc/AjaxRouter.php:204
|
398 |
msgid "Download controller returned empty output"
|
399 |
msgstr ""
|
400 |
|
446 |
msgstr ""
|
447 |
|
448 |
#. Label for the context window when no translation selected
|
449 |
+
#: src/js/Strings.php:105
|
450 |
msgctxt "Editor"
|
451 |
msgid "Context not loaded"
|
452 |
msgstr ""
|
458 |
msgstr ""
|
459 |
|
460 |
#. Button that toggles a translation's Fuzzy flag
|
461 |
+
#: src/js/Strings.php:99 src/admin/file/EditController.php:164
|
462 |
msgctxt "Editor"
|
463 |
msgid "Fuzzy"
|
464 |
msgstr ""
|
501 |
msgstr ""
|
502 |
|
503 |
#. Label for the source text window when no translation selected
|
504 |
+
#: src/js/Strings.php:102
|
505 |
msgctxt "Editor"
|
506 |
msgid "Source text not loaded"
|
507 |
msgstr ""
|
524 |
msgid "Toggle invisibles"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: src/js/Strings.php:96
|
528 |
+
msgctxt "Editor"
|
529 |
+
msgid "Translated"
|
530 |
+
msgstr ""
|
531 |
+
|
532 |
#. List heading showing preview of translated text for each item
|
533 |
+
#: src/js/Strings.php:111
|
534 |
msgctxt "Editor"
|
535 |
msgid "Translation"
|
536 |
msgstr ""
|
537 |
|
538 |
#. Label for the translation editing window when no translation selected
|
539 |
+
#: src/js/Strings.php:108
|
540 |
msgctxt "Editor"
|
541 |
msgid "Translation not loaded"
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: src/js/Strings.php:93
|
545 |
+
msgctxt "Editor"
|
546 |
+
msgid "Untranslated"
|
547 |
+
msgstr ""
|
548 |
+
|
549 |
#: tpl/admin/errors/file-missing.php:14
|
550 |
msgid ""
|
551 |
"Either this file is missing or the server doesn't have permission to access "
|
552 |
"it"
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: src/js/Strings.php:62 src/error/Exception.php:92
|
556 |
msgid "Error"
|
557 |
msgstr ""
|
558 |
|
572 |
msgid "Extracting strings"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: src/fs/FileWriter.php:228
|
576 |
msgid "Failed to build directory path"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: src/fs/FileWriter.php:122
|
580 |
#, php-format
|
581 |
msgid "Failed to chmod %s"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: src/fs/FileWriter.php:46
|
585 |
msgid "Failed to connect to remote server"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: src/fs/FileWriter.php:142
|
589 |
#, php-format
|
590 |
msgid "Failed to copy %s to %s"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: src/ajax/SaveController.php:66
|
594 |
#, php-format
|
595 |
msgid ""
|
596 |
"Failed to create backup file in \"%s\". Check file permissions or disable "
|
597 |
"backups"
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: src/fs/FileWriter.php:221
|
601 |
msgid "Failed to create directory"
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: src/fs/FileWriter.php:157
|
605 |
#, php-format
|
606 |
msgid "Failed to delete %s"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: src/fs/FileWriter.php:194
|
610 |
msgid "Failed to save file"
|
611 |
msgstr ""
|
612 |
|
666 |
msgid "System"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: src/fs/FileWriter.php:240
|
670 |
msgid "File modification is disallowed by your WordPress config"
|
671 |
msgstr ""
|
672 |
|
913 |
"are many files"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: src/output/Buffer.php:129
|
917 |
#, php-format
|
918 |
msgid "Loco interrupted by output from %s:%u"
|
919 |
msgstr ""
|
984 |
msgid "Modification of installed files"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: src/fs/FileWriter.php:244
|
988 |
msgid "Modification of installed files is disallowed by the plugin settings"
|
989 |
msgstr ""
|
990 |
|
1127 |
msgid "Page not found"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: src/fs/FileWriter.php:191
|
1131 |
msgid "Parent directory doesn't exist"
|
1132 |
msgstr ""
|
1133 |
|
1147 |
msgid "Permission denied"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: src/fs/FileWriter.php:187
|
1151 |
msgid "Permission denied to update file"
|
1152 |
msgstr ""
|
1153 |
|
1232 |
msgid "PO file missing"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: src/ajax/SaveController.php:99
|
|
|
|
|
|
|
|
|
1236 |
msgid "PO file saved and MO file compiled"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: src/ajax/SaveController.php:103
|
1240 |
msgid "PO file saved, but MO file compilation failed"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: src/ajax/SaveController.php:108
|
1244 |
msgid "POT file saved"
|
1245 |
msgstr ""
|
1246 |
|
1260 |
msgid "Recently updated:"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
+
#: src/fs/FileWriter.php:139
|
1264 |
msgid "Refusing to copy over an existing file"
|
1265 |
msgstr ""
|
1266 |
|
lib/compiled/gettext.php
CHANGED
@@ -7,28 +7,27 @@ interface LocoArrayInterface extends ArrayAccess, Iterator, Countable, JsonSeria
|
|
7 |
class LocoHeaders extends ArrayIterator implements LocoArrayInterface { private $map = array(); public function __construct(array $raw = array() ){ if( $raw ){ $keys = array_keys( $raw ); $this->map = array_combine( array_map( 'strtolower', $keys ), $keys ); parent::__construct($raw); } } public function normalize( $key ){ $k = strtolower($key); return isset($this->map[$k]) ? $this->map[$k] : null; } public function add($key, $val ){ $this->offsetSet( $key, $val ); return $this; } public function __toString(){ $pairs = array(); foreach( $this as $key => $val ){ $pairs[] = trim($key).': '.$val; } return implode("\n", $pairs ); } public function trimmed($prop ){ return trim( $this->__get($prop) ); } public function has($key ){ $k = strtolower($key); return isset($this->map[$k]); } public function __get($key ){ return $this->offsetGet( $key ); } public function __set($key, $val ){ $this->offsetSet( $key, $val ); } public function offsetExists($k ){ return ! is_null( $this->normalize($k) ); } public function offsetGet($k ){ $k = $this->normalize($k); if( is_null($k) ){ return ''; } return parent::offsetGet($k); } public function offsetSet($key, $v ){ $k = strtolower($key); if( isset($this->map[$k]) && $key !== $this->map[$k] ){ parent::offsetUnset( $this->map[$k] ); } $this->map[$k] = $key; parent::offsetSet( $key, $v ); } public function offsetUnset($key ){ $k = strtolower($key); if( isset($this->map[$k]) ){ parent::offsetUnset( $this->map[$k] ); unset( $this->map[$k] ); } } public function jsonSerialize(){ return $this->getArrayCopy(); } public function keys(){ trigger_error('Is this required?', E_USER_NOTICE); return array_values( $this->map ); } }
|
8 |
class LocoPoHeaders extends LocoHeaders { public static function fromMsgstr( $str ){ $headers = new LocoPoHeaders; foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } public static function fromSource( $raw ){ if( $raw = self::snip($raw) ){ return self::fromMsgstr($raw); } return new LocoPoHeaders(array()); } public static function snip($raw ){ $raw = loco_ensure_utf8($raw); while( preg_match('/^.*[\r\n]+/u', $raw, $r ) ){ $line = $r[0]; if( '#' === $line{0} ){ $raw = substr( $raw, strlen($line) ); continue; } if( preg_match('/^msgid\s+""\s+msgstr\s+/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $str = array(); while( preg_match('/^"(.*)"\s*/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $chunk = $r[1]; if( '' !== $chunk ){ $str[] = $chunk; } } if( $str ){ return stripcslashes( implode('',$str) ); } } break; } throw new Loco_error_ParseException('Invalid PO header'); } }
|
9 |
function loco_parse_reference_id( $refs, &$_id ){ if( false === ( $n = strpos($refs,'loco:') ) ){ $_id = ''; return $refs; } $_id = substr($refs, $n+5, 24 ); $refs = substr_replace( $refs, '', $n, 29 ); return trim( $refs ); }
|
10 |
-
function loco_parse_po( $src ){ $src = loco_ensure_utf8($src); $i = -1; $key = null; $idx = null; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array(), 'i' => null ); $entry = new ArrayIterator( $template ); foreach( preg_split('/[\r\n]+/', $src) as $_i => $line ){ while( $line = trim($line," \t") ){ try { $c = $line{0}; if( '"' === $c ){ if( is_null($key) ){ throw new Exception('String encountered without keyword'); } if( '"' === substr($line,-1) ){ $line = substr( $line, 1, -1 ); $entry[$key][$idx][] = stripcslashes($line); } else { throw new Exception('Unterminated msg'.$key ); } } else if( '#' === $c ){ if( is_int($entry['i']) ){ $entry = new ArrayIterator($template); } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( is_null($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = $entry; } else if( 'str' !== $key && $entry['str'] ){ $entry = new ArrayIterator($template); } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } catch(
|
11 |
-
function
|
12 |
-
class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; private $cs; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $r = array(); $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $soffset = $sourceOffset; $toffset = $targetOffset; while( $soffset < $targetOffset ){ $len = $this->integerAt( $soffset ); $idx = $this->integerAt( $soffset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false === $eot ){ $context = null; } else { $context = $this->decodeStr( substr($src, 0, $eot ) ); $src = substr( $src, $eot+1 ); } $sources = explode( "\0", $src, 2 ); $len = $this->integerAt( $toffset ); $idx = $this->integerAt( $toffset + 4 ); $targets = explode( "\0", $this->bytes( $idx, $len ) ); $r[] = array( 'source' => $this->decodeStr( $sources[0] ), 'target' => $this->decodeStr( $targets[0] ), 'context' => $context, ); if( isset($sources[1]) ){ $p = count($r) - 1; $nforms = max( 2, count($targets) ); for( $i = 1; $i < $nforms; $i++ ){ $r[] = array( 'source' => isset($sources[$i]) ? $this->decodeStr( $sources[$i] ) : sprintf('%s (plural %u)',$r[$p]['source'],$i), 'target' => isset($targets[$i]) ? $this->decodeStr( $targets[$i] ) : '', 'parent' => $p, 'plural' => $i, ); } } $soffset += 8; $toffset += 8; } return $r; } public function isBigendian(){ while( is_null($this->be) ){ $str = $this->words( 0, 1 ); if( "\xDE\x12\x04\x95" === $str ){ $this->be = false; break; } if( "\x95\x04\x12\xDE" === $str ){ $this->be = true; break; } throw new Loco_error_ParseException('Invalid MO format'); } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ return substr( $this->bin, $offset, $length ); } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Loco_error_ParseException('Failed to read integer at byte '.$offset); } return $arr[1]; } private function decodeStr( $str ){ if( $this->cs ){ $enc = $this->cs; } else { $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','ISO-8859-1'), false ); if( 'ASCII' !== $enc ){ $this->cs = $enc; } } if( 'UTF-8' !== $enc ){ $str = mb_convert_encoding( $str, 'UTF-8', array($enc) ); } return $str; } }
|
13 |
function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); }
|
14 |
-
function
|
15 |
-
function
|
16 |
-
abstract class LocoExtractor { private $rules; private $exp = array(); private $reg = array(); private $dom = array(); private $wp = array(); private $dflt = ''; abstract public function extractSource( $src, $fileref = '' ); abstract protected function fsniff( $str ); public function __construct( array $rules ){ $this->rules = $rules; } protected function decapse( $raw ){ return $raw; } public function rule( $s ){ return isset($this->rules[$s]) ? $this->rules[$s] : ''; } public function export(){ return $this->exp; } public function getTotal(){ return count( $this->exp ); } public function getDomainCounts(){ return $this->dom; } public function setDomain( $default ){ $this->dflt = (string) $default; return $this; } public function headerize( array $tags, $domain = '' ){ if( isset($this->wp[$domain]) ){ $this->wp[$domain] += $tags; } else { $this->wp[$domain] = $tags; } return $this; } protected function headerized(){ return $this->wp; } public function pushMeta( $source, $notes = '', $domain = null ){ if( ! $domain || '*' === $domain ){ $domain = $this->dflt; } $entry = array( 'id' => '', 'source' => $source, 'target' => '', 'notes' => $notes, ); if( $domain ){ $entry['domain'] = $domain; $key = $source."\1".$domain; } else { $key = $source; } $this->pushMsgid( $key, $entry, $domain ); return $this; } private function pushMsgid( $key, array $entry, $domain ){ if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $clash = $this->exp[$index]; if( $value = $this->mergeField( $clash, $entry, 'refs', ' ') ){ $this->exp[$index]['refs'] = $value; } if( $value = $this->mergeField( $clash, $entry, 'notes', "\n") ){ $this->exp[$index]['notes'] = $value; } } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; if( isset($this->dom[$domain]) ){ $this->dom[$domain]++; } else { $this->dom[$domain] = 1; } } return $index; } private function mergeField( array $old, array $new, $field, $glue ){ $prev = isset($old[$field]) ? $old[$field] : ''; if( isset($new[$field]) ){ $text = $new[$field]; if( '' !== $prev && $prev !== $text ){ $text = $prev.$glue.$text; } return $text; } return $prev; } protected function push($rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); $d = strpos( $rule, 'd'); if( false === $s || ! isset($args[$s]) ){ return null; } $key = $args[$s]; if( ! is_string($key) ){ return null; } $entry = array( 'id' => '', 'source' => ( $msgid = $key ), 'target' => '', ); if( is_int($c) && isset($args[$c]) ){ $entry['context'] = $context = $args[$c]; $key .= "\0". $context; } else if( ! isset($msgid{0}) ){ return null; } else { $context = null; } if( $ref ){ $entry['refs'] = $ref; } if( is_int($d) && array_key_exists($d,$args) ){ $domain = $args[$d]; if( is_null($domain) ){ $domain = ''; } } else { $domain = $this->dflt; } if( $domain ){ $entry['domain'] = $domain; $key .= "\1".$domain; } $parse_printf = true; if( $comment ){ if( preg_match('/xgettext:\s*((?:no-)?\w+)-format/', $comment, $r ) ){ $entry['format'] = $r[1]; if( 'no-' === substr($r[1],0,3) ){ $parse_printf = false; } else { $parse_printf = null; } $comment = str_replace( $r[0], '', $comment ); } $comment = loco_parse_comment($comment); if( preg_match('/^translators:\s+/i', $comment, $r ) ){ $comment = substr( $comment, strlen($r[0]) ); } $entry['notes'] = $comment; } if( $parse_printf && ( $format = $this->fsniff($msgid) ) ){ $entry['format'] = $format; } $index = $this->pushMsgid( $key, $entry, $domain ); if( is_int($p) && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); if( false !== $parse_printf && ( $format = $this->fsniff($msgid_plural) ) ){ $entry['format'] = $format; } $pkey = $key."\2"; if( isset($this->reg[$pkey]) ){ $plural_index = $this->reg[$pkey]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$pkey] = $plural_index; $this->exp[] = $entry; } } return $index; } public function filter( $domain ){ $map = array(); $newOffset = 1; $matchAll = '*' === $domain; $raw = array( array( 'id' => '', 'source' => '', 'target' => '', 'domain' => $matchAll ? '' : $domain, ) ); foreach( $this->exp as $oldOffset => $r ){ if( isset($r['parent']) ){ if( isset($map[$r['parent']]) ){ $r['parent'] = $map[ $r['parent'] ]; $raw[ $newOffset++ ] = $r; } } else { if( $matchAll ){ $match = true; } else if( isset($r['domain']) ){ $match = $domain === $r['domain']; } else { $match = $domain === ''; } if( $match ){ $map[ $oldOffset ] = $newOffset; $raw[ $newOffset++ ] = $r; } } } return $raw; } }
|
17 |
interface LocoTokensInterface extends Iterator, Countable { public function advance(); }
|
18 |
class LocoPHPTokens implements LocoTokensInterface { private $i; private $tokens; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = ( false === reset($this->tokens) ? null : key($this->tokens) ); } public function valid(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return true; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return true; } } return false; } public function key(){ return $this->i; } public function next(){ $this->i = ( false === next($this->tokens) ? null : key($this->tokens) ); } public function current(){ if( ! $this->valid() ){ return false; } $tok = $this->tokens[$this->i]; if( is_array($tok) && isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } return $tok; } public function __toString(){ $s = array(); foreach( $this as $token ){ $s[] = is_array($token) ? $token[1] : $token; } return implode('',$s); } public function count(){ return count($this->tokens); } }
|
19 |
function loco_sniff_printf( $s, $p, $limit = 0, $offset = 0 ){ $n = 0; while( $s && false !== ( $i = strpos($s,'%',$offset) ) ){ if( 0 !== $i ){ $s = substr( $s, $i ); } if( preg_match( $p, $s, $r ) ){ $match = $r[0]; if( 0 < $n && isset($r[1]) && '' === $r[1] && '%' !== substr($match,-1) ){ return 0; } if( ++$n === $limit ){ break; } $offset = strlen($match); } else { return 0; } } return $n; }
|
20 |
function loco_sniff_php_printf( $s, $limit = 0 ){ return loco_sniff_printf( $s, '/^%(?:\\d+\\$)?(?:\'.|[-+0 ])*\\d*(?:\\.\\d+)?[suxXbcdeEfFgGo%]/', $limit ); }
|
21 |
function loco_decapse_php_string( $s ){ if( ! $s ){ return ''; } $q = $s{0}; if( "'" === $q ){ return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), substr( $s, 1, -1 ) ); } if( '"' !== $q ){ return $s; } $s = substr( $s, 1, -1 ); $a = ''; $e = false; $symbols = array ( 'n' => "\x0A", 'r' => "\x0D", 't' => "\x09", 'v' => "\x0B", 'f' => "\x0C", 'e' => "\x1B", '$' => '$', '\\' => '\\', '"' => '"', ); foreach( explode('\\', $s) as $i => $t ){ if( '' === $t ){ if( $e ){ $a .= '\\'; } $e = ! $e; continue; } if( $e ){ $c = $t{0}; while( true ){ if( 'x' === $c || 'X' === $c ){ if( preg_match('/^x([0-9a-f]{1,2})/i', $t, $n ) ){ $c = chr( intval( $n[1], 16 ) ); $n = strlen($n[0]); break; } } else if( isset($symbols[$c]) ){ $c = $symbols[$c]; $n = 1; break; } else if( preg_match('/^[0-7]{1,3}/', $t, $n ) ){ $c = chr( intval( $n[0], 8 ) ); $n = strlen($n[0]); break; } $a .= '\\'.$t; continue 2; } $a .= substr_replace( $t, $c, 0, $n ); continue; } $a .= $t; $e = true; } return $a; }
|
|
|
22 |
class LocoPHPExtractor extends LocoExtractor { private $defs = array(); public function extractSource( $src, $fileref = '' ){ $tokens = new LocoPHPTokens( token_get_all($src) ); $tokens->ignore( T_WHITESPACE ); return $this->extract( $tokens, $fileref )->export(); } public function decapse( $raw ){ return loco_decapse_php_string( $raw ); } public function fsniff( $str ){ return loco_sniff_php_printf($str) ? 'php' : ''; } public function define( $name, $value ){ if( is_string($value) ){ $this->defs[$name] = $value; } return $this; } public function extract( LocoTokensInterface $tokens, $fileref ){ $n = 0; $depth = 0; $comment = ''; $narg = 0; $args = array(); $ref = ''; $rule = ''; $wp = $this->headerized(); $tokens->rewind(); while( $tok = $tokens->advance() ){ if( is_string($tok) ){ $s = $tok; $t = null; } else { $t = $tok[0]; $s = $tok[1]; } if( $depth ){ if( ')' === $s || ']' === $s ){ if( 0 === --$depth ){ if( $this->push( $rule, $args, $comment, $ref ) ){ $n++; } $comment = ''; } } else if( '(' === $s || '[' === $s ){ $depth++; $args[$narg] = null; } else if( 1 === $depth ){ if( ',' === $s ){ $narg++; } else if( T_CONSTANT_ENCAPSED_STRING === $t ){ $args[$narg] = $this->decapse($s); } else if( T_STRING === $t && array_key_exists($s,$this->defs) ){ $args[$narg] = $this->defs[$s]; } else { $args[$narg] = null; } } } else if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $was_header = false; if( 0 === $n ){ if( false !== strpos($s,'* @package') ){ $was_header = true; } if( $wp && ( $header = loco_parse_wp_comment($s) ) ){ foreach( $wp as $domain => $tags ){ foreach( array_intersect_key($header,$tags) as $tag => $source ){ $this->pushMeta( $source, $tags[$tag], $domain ); $was_header = true; } } } } if( ! $was_header ) { $comment = $s; } } else if( T_STRING === $t && '(' === $tokens->advance() && ( $rule = $this->rule($s) ) ){ $ref = $fileref ? $fileref.':'.$tok[2]: ''; $depth = 1; $args = array(); $narg = 0; } else if( $comment ){ if( false === stripos($comment, 'translators:') && false === strpos($comment, 'xgettext:') ){ $comment = ''; } } } return $this; } }
|
23 |
-
function
|
24 |
-
|
25 |
abstract class LocoPo { public static function pair( $key, $text, $width = 79 ){ if( ! $text && '0' !== $text ){ return $key.' ""'; } $text = addcslashes( $text, "\t\x0B\x0C\x07\x08\\\"" ); $text = preg_replace('/\R/u', "\\n\n", $text, -1, $nbr ); if( $nbr ){ } else if( $width && $width < mb_strlen($text,'UTF-8') + strlen($key) + 3 ){ } else { return $key.' "'.$text.'"'; } $lines = array( $key.' "' ); if( $width ){ $width -= 2; $a = '/^.{0,'.($width-1).'}[-– \\.,:;\\?!\\)\\]\\}\\>]/u'; $b = '/^[^-– \\.,:;\\?!\\)\\]\\}\\>]+/u'; foreach( explode("\n",$text) as $unwrapped ){ $length = mb_strlen( $unwrapped, 'UTF-8' ); while( $length > $width ){ if( preg_match( $a, $unwrapped, $r ) ){ $line = $r[0]; } else if( preg_match( $b, $unwrapped, $r ) ){ $line = $r[0]; } else { throw new Exception('Wrapping error'); } $lines[] = $line; $trunc = mb_strlen($line,'UTF-8'); $length -= $trunc; $unwrapped = (string) substr( $unwrapped, strlen($line) ); if( ( '' === $unwrapped && 0 !== $length ) || ( 0 === $length && '' !== $unwrapped ) ){ throw new Exception('Truncation error'); } } if( 0 !== $length ){ $lines[] = $unwrapped; } } } else { foreach( explode("\n",$text) as $unwrapped ){ $lines[] = $unwrapped; } } return implode("\"\n\"",$lines).'"'; } public static function refs( $text, $width = 76 ){ $text = preg_replace('/\\s+/', ' ', $text ); if( $width ){ $text = wordwrap( $text, $width, "\n#: ", false ); } return '#: '.$text; } public static function prefix( $text, $prefix ){ $lines = preg_split('/\\R/u', $text, -1 ); return $prefix.implode( "\n".$prefix, $lines ); } }
|
26 |
-
function loco_is_numeric( $s ){ return is_int($s) || ctype_digit($s); }
|
27 |
-
class LocoPoIterator implements Iterator, Countable { private $po; private $headers; private $i; private $t; private $j; private $z; private $w = 79; public function __construct( $po ){ $this->po = $po; $this->t = count( $po ); if( ! isset($po[0]) ){ throw new InvalidArgumentException('Empty PO data'); } $h = $po[0]; if( '' === $h['source'] && empty($h['context']) ){ $this->z = 0; } else { $this->z = -1; } } public function count(){ return $this->t - ( $this->z + 1 ); } public function wrap( $width ){ if( ! loco_is_numeric($width) || $width < 1 ){ $this->w = 0; } else { $this->w = max( 15, (int) $width ); } return $this; } public function rewind(){ $this->i = $this->z; $this->j = -1; $this->next(); } public function key(){ return $this->j; } public function valid(){ return is_int($this->i); } public function next(){ $i = $this->i; while( ++$i < $this->t ){ $this->j++; $this->i = $i; return; } $this->i = null; $this->j = null; } public function current(){ $i = $this->i; $po = $this->po; $parent = new LocoPoMessage( $po[$i] ); $plurals = array(); while( isset($po[++$i]['parent']) ){ $this->i = $i; $plurals[] = new LocoPoMessage( $po[$i] ); } if( $plurals ){ $parent['plurals'] = $plurals; } return $parent; } public function getArrayCopy(){ $po = $this->po; if( 0 === $this->z ){ $po[0]['target'] = (string) $this->getHeaders(); } return $po; } public function getHeaders(){ if( ! $this->headers ){ $header = $this->po[0]; if( 0 === $this->z ){ $this->headers =
|
28 |
class LocoPoIndex extends ArrayIterator { public function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); if( ! isset($this[$h]) ){ return 1; } $j = $b->getHash(); if( ! isset($this[$j]) ){ return -1; } return $this[$h] > $this[$j] ? 1 : -1; } }
|
29 |
class LocoPoMessage extends ArrayObject { public function __construct( array $r ){ $r['key'] = $r['source']; parent::__construct($r); } public function __get( $prop ){ return isset($this[$prop]) ? $this[$prop] : null; } private function _getFlags(){ $flags = array(); $plurals = $this->__get('plurals'); if( 4 === $this->__get('flag') ){ $flags[] = 'fuzzy'; } else if( $plurals ){ foreach( $plurals as $child ){ if( 4 === $child->__get('flag') ){ $flags[] = 'fuzzy'; break; } } } if( $f = $this->__get('format') ){ $flags[] = $f.'-format'; } else if( isset($plurals[0]) && ( $f = $plurals[0]->__get('format') ) ){ $flags[] = $f.'-format'; } return $flags; } public function getHash(){ $msgid = $this['source']; if( isset($this['context']) ){ $msgctxt = $this['context']; if( is_string($msgctxt) && '' !== $msgctxt ){ if( ! $msgid && '0' !== $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( isset($this['plurals']) ){ foreach( $this['plurals'] as $p ){ $msgid .= "\0".$p->getHash(); break; } } return $msgid; } public function __toString(){ return $this->render( 79, 76 ); } public function render( $width, $ref_width ){ $s = ''; try { if( $text = $this->__get('comment') ) { $s .= LocoPo::prefix( $text, '# ')."\n"; } if( $text = $this->__get('notes') ) { $s .= LocoPo::prefix( $text, '#. ')."\n"; } if( $text = $this->__get('refs') ){ $s .= LocoPo::refs( $text, $ref_width )."\n"; } if( $texts = $this->_getFlags() ){ $s .= '#, '.implode(', ',$texts)."\n"; } $text = $this->__get('context'); if( is_string($text) && isset($text{0}) ){ $s .= LocoPo::pair('msgctxt', $text, $width )."\n"; } $s .= LocoPo::pair( 'msgid', $this['key'], $width )."\n"; $target = $this['target']; if( is_array( $plurals = $this->__get('plurals') ) ){ if( $plurals ){ foreach( $plurals as $i => $p ){ if( 0 === $i ){ $s .= LocoPo::pair('msgid_plural', $p['key'], $width )."\n"; $s .= LocoPo::pair('msgstr[0]', $target, $width )."\n"; } $s .= LocoPo::pair('msgstr['.(++$i).']', $p['target'], $width )."\n"; } } else if( isset($this['plural_key']) ){ $s .= LocoPo::pair('msgid_plural', $this['plural_key'], $width )."\n"; $s .= LocoPo::pair('msgstr[0]', $target, $width )."\n"; } else { trigger_error('Missing plural_key in zero plural export'); $s .= LocoPo::pair('msgstr', $target, $width )."\n"; } } else { $s .= LocoPo::pair('msgstr', $target, $width )."\n"; } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); } return $s; } }
|
30 |
class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } }
|
31 |
-
class LocoMo { private $bin; private $msgs; private $head; private $hash; private $use_fuzzy = false; public function __construct( Iterator $export, LocoHeaders $head = null ){ if( $head ){ $this->head = $head; } else { $this->head = new
|
32 |
function loco_print_percent( $n, $t ){ $s = loco_string_percent( (int) $n, (int) $t ); echo $s,'%'; return ''; }
|
33 |
function loco_print_progress( $translated, $untranslated, $flagged ){ $total = $translated + $untranslated; $complete = loco_string_percent( $translated - $flagged, $total ); $class = 'progress'; if( ! $translated && ! $flagged ){ $class .= ' empty'; } else if( '100' === $complete ){ $class .= ' done'; } echo '<div class="',$class,'"><div class="t">'; if( $flagged ){ $s = loco_string_percent( $flagged, $total ); echo '<div class="bar f" style="width:',$s,'%"> </div>'; } if( '0' === $complete ){ echo ' '; } else { $class = 'bar p'; $p = (int) $complete; $class .= sprintf(' p-%u', 10*floor($p/10) ); $style = 'width:'.$complete.'%'; if( $flagged ){ $remain = 100.0 - (float) $s; $style .= '; max-width: '.sprintf('%s',$remain).'%'; } echo '<div class="',$class,'" style="'.$style.'"> </div>'; } echo '</div><div class="l">',$complete,'%</div></div>'; return ''; }
|
34 |
-
function loco_string_percent( $n, $t ){ if( ! $t || ! $n ){ $s = '0'; } else if( $t === $n ){ $s = '100'; } else { $dp = 0; $n = 100 * $n / $t; if( $n > 99 ){ $
|
7 |
class LocoHeaders extends ArrayIterator implements LocoArrayInterface { private $map = array(); public function __construct(array $raw = array() ){ if( $raw ){ $keys = array_keys( $raw ); $this->map = array_combine( array_map( 'strtolower', $keys ), $keys ); parent::__construct($raw); } } public function normalize( $key ){ $k = strtolower($key); return isset($this->map[$k]) ? $this->map[$k] : null; } public function add($key, $val ){ $this->offsetSet( $key, $val ); return $this; } public function __toString(){ $pairs = array(); foreach( $this as $key => $val ){ $pairs[] = trim($key).': '.$val; } return implode("\n", $pairs ); } public function trimmed($prop ){ return trim( $this->__get($prop) ); } public function has($key ){ $k = strtolower($key); return isset($this->map[$k]); } public function __get($key ){ return $this->offsetGet( $key ); } public function __set($key, $val ){ $this->offsetSet( $key, $val ); } public function offsetExists($k ){ return ! is_null( $this->normalize($k) ); } public function offsetGet($k ){ $k = $this->normalize($k); if( is_null($k) ){ return ''; } return parent::offsetGet($k); } public function offsetSet($key, $v ){ $k = strtolower($key); if( isset($this->map[$k]) && $key !== $this->map[$k] ){ parent::offsetUnset( $this->map[$k] ); } $this->map[$k] = $key; parent::offsetSet( $key, $v ); } public function offsetUnset($key ){ $k = strtolower($key); if( isset($this->map[$k]) ){ parent::offsetUnset( $this->map[$k] ); unset( $this->map[$k] ); } } public function jsonSerialize(){ return $this->getArrayCopy(); } public function keys(){ trigger_error('Is this required?', E_USER_NOTICE); return array_values( $this->map ); } }
|
8 |
class LocoPoHeaders extends LocoHeaders { public static function fromMsgstr( $str ){ $headers = new LocoPoHeaders; foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } public static function fromSource( $raw ){ if( $raw = self::snip($raw) ){ return self::fromMsgstr($raw); } return new LocoPoHeaders(array()); } public static function snip($raw ){ $raw = loco_ensure_utf8($raw); while( preg_match('/^.*[\r\n]+/u', $raw, $r ) ){ $line = $r[0]; if( '#' === $line{0} ){ $raw = substr( $raw, strlen($line) ); continue; } if( preg_match('/^msgid\s+""\s+msgstr\s+/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $str = array(); while( preg_match('/^"(.*)"\s*/', $raw, $r ) ){ $raw = substr( $raw, strlen($r[0]) ); $chunk = $r[1]; if( '' !== $chunk ){ $str[] = $chunk; } } if( $str ){ return stripcslashes( implode('',$str) ); } } break; } throw new Loco_error_ParseException('Invalid PO header'); } }
|
9 |
function loco_parse_reference_id( $refs, &$_id ){ if( false === ( $n = strpos($refs,'loco:') ) ){ $_id = ''; return $refs; } $_id = substr($refs, $n+5, 24 ); $refs = substr_replace( $refs, '', $n, 29 ); return trim( $refs ); }
|
10 |
+
function loco_parse_po( $src ){ $src = loco_ensure_utf8($src); $i = -1; $key = null; $idx = null; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array(), 'i' => null ); $entry = new ArrayIterator( $template ); foreach( preg_split('/[\r\n]+/', $src) as $_i => $line ){ while( $line = trim($line," \t") ){ try { $c = $line{0}; if( '"' === $c ){ if( is_null($key) ){ throw new Exception('String encountered without keyword'); } if( '"' === substr($line,-1) ){ $line = substr( $line, 1, -1 ); $entry[$key][$idx][] = stripcslashes($line); } else { throw new Exception('Unterminated msg'.$key ); } } else if( '#' === $c ){ if( is_int($entry['i']) ){ $entry = new ArrayIterator($template); } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( is_null($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = $entry; } else if( 'str' !== $key && $entry['str'] ){ $entry = new ArrayIterator($template); } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } catch( Throwable $e ){ continue 2; } } } unset( $entry, $key, $template ); $lookup_key = null; if( isset($entries[0]) ){ if( array(array('')) === $entries[0]['id'] ){ if( isset($entries[0]['str'][0]) ){ foreach( preg_grep('/^X-Loco-Lookup: /', $entries[0]['str'][0]) as $header ){ $lookup_key = rtrim( substr($header,15) ); break; } } else { $entries[0] = null; } } } else if( '' === $src ){ throw new Loco_error_ParseException('Empty PO file'); } $assets = array(); foreach( $entries as $i => $entry ){ if( ! isset($entry['id'][0]) ){ continue; } if( ! isset($entry['str'][0]) ){ $entry['str'] = array( array('') ); } $asset = array( 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); $prev_entry = null; if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } if( isset($entry['#']) ){ $cmt = $entry['#']; if( isset($cmt[' ']) ){ $asset['comment'] = implode("\n", $cmt[' '] ); } if( isset($cmt['.']) ){ $asset['notes'] = implode("\n", $cmt['.'] ); } if( isset($cmt[':']) ){ if( $refs = implode( ' ', $cmt[':'] ) ) { if( $refs = loco_parse_reference_id( $refs, $_id ) ){ $asset['refs'] = $refs; } if( $_id ){ $asset['_id'] = $_id; } } } if( isset($cmt[',']) ){ foreach( $cmt[','] as $flags ){ foreach( explode(',',$flags) as $flag ){ if( $flag = trim($flag) ){ if( preg_match('/^((?:no-)?\w+)-format/', $flag, $r ) ){ $asset['format'] = $r[1]; } else if( 'fuzzy' === $flag ){ $asset['flag'] = 4; } } } } } if( isset($cmt['|']) ){ try { if( $prev_entry = loco_parse_po( implode("\n", $cmt['|']) ) ){ $msgid = $prev_entry[0]['source']; if( is_string($lookup_key) ){ $asset[$lookup_key] = $asset['source']; $asset['source'] = $msgid; } else if( 'loco:' === substr($msgid,0,5) ){ $asset['_id'] = substr($msgid,5); } else { $asset['prev'] = $prev_entry; } } else { $prev_entry = null; } } catch( Loco_error_ParseException $e ){ $prev_entry = null; } } } $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $pidx = count($assets) - 1; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $plural = array( 'source' => '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', 'plural' => $idx, 'parent' => $pidx, ); if( 1 === $idx ){ $plural['source'] = isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : ''; if( is_string($lookup_key) && is_array($prev_entry) && isset($prev_entry[1]) ){ $plural[$lookup_key] = $plural['source']; $plural['source'] = $prev_entry[1]['source']; } } $assets[] = $plural; } } } if( ! isset($assets[0]) ){ throw new Loco_error_ParseException('Invalid PO file'); } return $assets; }
|
11 |
+
class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; private $cs; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $r = array(); $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $soffset = $sourceOffset; $toffset = $targetOffset; while( $soffset < $targetOffset ){ $len = $this->integerAt( $soffset ); $idx = $this->integerAt( $soffset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false === $eot ){ $context = null; } else { $context = $this->decodeStr( substr($src, 0, $eot ) ); $src = substr( $src, $eot+1 ); } $sources = explode( "\0", $src, 2 ); $len = $this->integerAt( $toffset ); $idx = $this->integerAt( $toffset + 4 ); $targets = explode( "\0", $this->bytes( $idx, $len ) ); $r[] = array( 'source' => $this->decodeStr( $sources[0] ), 'target' => $this->decodeStr( $targets[0] ), 'context' => $context, ); if( isset($sources[1]) ){ $p = count($r) - 1; $nforms = max( 2, count($targets) ); for( $i = 1; $i < $nforms; $i++ ){ $r[] = array( 'source' => isset($sources[$i]) ? $this->decodeStr( $sources[$i] ) : sprintf('%s (plural %u)',$r[$p]['source'],$i), 'target' => isset($targets[$i]) ? $this->decodeStr( $targets[$i] ) : '', 'parent' => $p, 'plural' => $i, ); } } $soffset += 8; $toffset += 8; } return $r; } public function isBigendian(){ if( is_null($this->be) ){ $str = $this->words( 0, 1 ); if( "\xDE\x12\x04\x95" === $str ){ $this->be = false; } else if( "\x95\x04\x12\xDE" === $str ){ $this->be = true; } else { throw new Loco_error_ParseException('Invalid MO format'); } } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ $s = substr( $this->bin, $offset, $length ); if( strlen($s) !== $length ){ throw new Loco_error_ParseException('Failed to read '.$length.' bytes at ['.$offset.']' ); } return $s; } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Loco_error_ParseException('Failed to read integer at byte '.$offset); } return $arr[1]; } private function decodeStr( $str ){ if( $this->cs ){ $enc = $this->cs; } else { $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','ISO-8859-1'), false ); if( 'ASCII' !== $enc ){ $this->cs = $enc; } } if( 'UTF-8' !== $enc ){ $str = mb_convert_encoding( $str, 'UTF-8', array($enc) ); } return $str; } }
|
|
|
12 |
function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); }
|
13 |
+
function loco_parse_php_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); $junk = "\r\t/ *"; foreach( explode("\n", $comment) as $line ){ if( $line = trim($line,$junk) ){ $lines[] = trim($line,$junk); } } return implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); }
|
14 |
+
abstract class LocoExtractor { private $rules; private $exp = array(); private $reg = array(); private $dom = array(); private $wp = array(); private $dflt = ''; abstract public function extractSource( $src, $fileref = '' ); abstract protected function fsniff( $str ); public function __construct( array $rules ){ $this->rules = $rules; } protected function decapse( $raw ){ return $raw; } protected function comment( $comment ){ return loco_parse_php_comment($comment); } public function rule( $s ){ return isset($this->rules[$s]) ? $this->rules[$s] : ''; } public function export(){ return $this->exp; } public function getTotal(){ return count( $this->exp ); } public function getDomainCounts(){ return $this->dom; } public function setDomain( $default ){ $this->dflt = (string) $default; return $this; } public function headerize( array $tags, $domain = '' ){ if( isset($this->wp[$domain]) ){ $this->wp[$domain] += $tags; } else { $this->wp[$domain] = $tags; } return $this; } protected function headerized(){ return $this->wp; } public function pushMeta( $source, $notes = '', $domain = null ){ if( ! $domain || '*' === $domain ){ $domain = $this->dflt; } $entry = array( 'id' => '', 'source' => $source, 'target' => '', 'notes' => $notes, ); if( $domain ){ $entry['domain'] = $domain; $key = $source."\1".$domain; } else { $key = $source; } $this->pushMsgid( $key, $entry, $domain ); return $this; } private function pushMsgid( $key, array $entry, $domain ){ if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $clash = $this->exp[$index]; if( $value = $this->mergeField( $clash, $entry, 'refs', ' ') ){ $this->exp[$index]['refs'] = $value; } if( $value = $this->mergeField( $clash, $entry, 'notes', "\n") ){ $this->exp[$index]['notes'] = $value; } } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; if( isset($this->dom[$domain]) ){ $this->dom[$domain]++; } else { $this->dom[$domain] = 1; } } return $index; } private function mergeField( array $old, array $new, $field, $glue ){ $prev = isset($old[$field]) ? $old[$field] : ''; if( isset($new[$field]) ){ $text = $new[$field]; if( '' !== $prev && $prev !== $text ){ $text = $prev.$glue.$text; } return $text; } return $prev; } protected function push($rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); $d = strpos( $rule, 'd'); if( false === $s || ! isset($args[$s]) ){ return null; } $key = $args[$s]; if( ! is_string($key) ){ return null; } $entry = array( 'id' => '', 'source' => ( $msgid = $key ), 'target' => '', ); if( is_int($c) && isset($args[$c]) ){ $entry['context'] = $context = $args[$c]; $key .= "\0". $context; } else if( ! isset($msgid{0}) ){ return null; } else { $context = null; } if( $ref ){ $entry['refs'] = $ref; } if( is_int($d) && array_key_exists($d,$args) ){ $domain = $args[$d]; if( is_null($domain) ){ $domain = ''; } } else { $domain = $this->dflt; } if( $domain ){ $entry['domain'] = $domain; $key .= "\1".$domain; } $parse_printf = true; if( $comment ){ if( preg_match('/xgettext:\s*((?:no-)?\w+)-format/', $comment, $r ) ){ $entry['format'] = $r[1]; if( 'no-' === substr($r[1],0,3) ){ $parse_printf = false; } else { $parse_printf = null; } $comment = str_replace( $r[0], '', $comment ); } $comment = $this->comment($comment); if( preg_match('/^translators:\s+/i', $comment, $r ) ){ $comment = substr( $comment, strlen($r[0]) ); } $entry['notes'] = $comment; } if( $parse_printf && ( $format = $this->fsniff($msgid) ) ){ $entry['format'] = $format; } $index = $this->pushMsgid( $key, $entry, $domain ); if( is_int($p) && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); if( false !== $parse_printf && ( $format = $this->fsniff($msgid_plural) ) ){ $entry['format'] = $format; } $pkey = $key."\2"; if( isset($this->reg[$pkey]) ){ $plural_index = $this->reg[$pkey]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$pkey] = $plural_index; $this->exp[] = $entry; } } return $index; } public function filter( $domain ){ $map = array(); $newOffset = 1; $matchAll = '*' === $domain; $raw = array( array( 'id' => '', 'source' => '', 'target' => '', 'domain' => $matchAll ? '' : $domain, ) ); foreach( $this->exp as $oldOffset => $r ){ if( isset($r['parent']) ){ if( isset($map[$r['parent']]) ){ $r['parent'] = $map[ $r['parent'] ]; $raw[ $newOffset++ ] = $r; } } else { if( $matchAll ){ $match = true; } else if( isset($r['domain']) ){ $match = $domain === $r['domain']; } else { $match = $domain === ''; } if( $match ){ $map[ $oldOffset ] = $newOffset; $raw[ $newOffset++ ] = $r; } } } return $raw; } }
|
|
|
15 |
interface LocoTokensInterface extends Iterator, Countable { public function advance(); }
|
16 |
class LocoPHPTokens implements LocoTokensInterface { private $i; private $tokens; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = ( false === reset($this->tokens) ? null : key($this->tokens) ); } public function valid(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return true; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return true; } } return false; } public function key(){ return $this->i; } public function next(){ $this->i = ( false === next($this->tokens) ? null : key($this->tokens) ); } public function current(){ if( ! $this->valid() ){ return false; } $tok = $this->tokens[$this->i]; if( is_array($tok) && isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } return $tok; } public function __toString(){ $s = array(); foreach( $this as $token ){ $s[] = is_array($token) ? $token[1] : $token; } return implode('',$s); } public function count(){ return count($this->tokens); } }
|
17 |
function loco_sniff_printf( $s, $p, $limit = 0, $offset = 0 ){ $n = 0; while( $s && false !== ( $i = strpos($s,'%',$offset) ) ){ if( 0 !== $i ){ $s = substr( $s, $i ); } if( preg_match( $p, $s, $r ) ){ $match = $r[0]; if( 0 < $n && isset($r[1]) && '' === $r[1] && '%' !== substr($match,-1) ){ return 0; } if( ++$n === $limit ){ break; } $offset = strlen($match); } else { return 0; } } return $n; }
|
18 |
function loco_sniff_php_printf( $s, $limit = 0 ){ return loco_sniff_printf( $s, '/^%(?:\\d+\\$)?(?:\'.|[-+0 ])*\\d*(?:\\.\\d+)?[suxXbcdeEfFgGo%]/', $limit ); }
|
19 |
function loco_decapse_php_string( $s ){ if( ! $s ){ return ''; } $q = $s{0}; if( "'" === $q ){ return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), substr( $s, 1, -1 ) ); } if( '"' !== $q ){ return $s; } $s = substr( $s, 1, -1 ); $a = ''; $e = false; $symbols = array ( 'n' => "\x0A", 'r' => "\x0D", 't' => "\x09", 'v' => "\x0B", 'f' => "\x0C", 'e' => "\x1B", '$' => '$', '\\' => '\\', '"' => '"', ); foreach( explode('\\', $s) as $i => $t ){ if( '' === $t ){ if( $e ){ $a .= '\\'; } $e = ! $e; continue; } if( $e ){ $c = $t{0}; while( true ){ if( 'x' === $c || 'X' === $c ){ if( preg_match('/^x([0-9a-f]{1,2})/i', $t, $n ) ){ $c = chr( intval( $n[1], 16 ) ); $n = strlen($n[0]); break; } } else if( isset($symbols[$c]) ){ $c = $symbols[$c]; $n = 1; break; } else if( preg_match('/^[0-7]{1,3}/', $t, $n ) ){ $c = chr( intval( $n[0], 8 ) ); $n = strlen($n[0]); break; } $a .= '\\'.$t; continue 2; } $a .= substr_replace( $t, $c, 0, $n ); continue; } $a .= $t; $e = true; } return $a; }
|
20 |
+
function loco_parse_wp_comment( $block ){ $header = array(); if( '*' === $block{1} ){ $junk = "\r\t/ *"; foreach( explode("\n", $block) as $line ){ if( false !== ( $i = strpos($line,':') ) ){ $key = substr($line,0,$i); $val = substr($line,++$i); $header[ trim($key,$junk) ] = trim($val,$junk); } } } return $header; }
|
21 |
class LocoPHPExtractor extends LocoExtractor { private $defs = array(); public function extractSource( $src, $fileref = '' ){ $tokens = new LocoPHPTokens( token_get_all($src) ); $tokens->ignore( T_WHITESPACE ); return $this->extract( $tokens, $fileref )->export(); } public function decapse( $raw ){ return loco_decapse_php_string( $raw ); } public function fsniff( $str ){ return loco_sniff_php_printf($str) ? 'php' : ''; } public function define( $name, $value ){ if( is_string($value) ){ $this->defs[$name] = $value; } return $this; } public function extract( LocoTokensInterface $tokens, $fileref ){ $n = 0; $depth = 0; $comment = ''; $narg = 0; $args = array(); $ref = ''; $rule = ''; $wp = $this->headerized(); $tokens->rewind(); while( $tok = $tokens->advance() ){ if( is_string($tok) ){ $s = $tok; $t = null; } else { $t = $tok[0]; $s = $tok[1]; } if( $depth ){ if( ')' === $s || ']' === $s ){ if( 0 === --$depth ){ if( $this->push( $rule, $args, $comment, $ref ) ){ $n++; } $comment = ''; } } else if( '(' === $s || '[' === $s ){ $depth++; $args[$narg] = null; } else if( 1 === $depth ){ if( ',' === $s ){ $narg++; } else if( T_CONSTANT_ENCAPSED_STRING === $t ){ $args[$narg] = $this->decapse($s); } else if( T_STRING === $t && array_key_exists($s,$this->defs) ){ $args[$narg] = $this->defs[$s]; } else { $args[$narg] = null; } } } else if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $was_header = false; if( 0 === $n ){ if( false !== strpos($s,'* @package') ){ $was_header = true; } if( $wp && ( $header = loco_parse_wp_comment($s) ) ){ foreach( $wp as $domain => $tags ){ foreach( array_intersect_key($header,$tags) as $tag => $source ){ $this->pushMeta( $source, $tags[$tag], $domain ); $was_header = true; } } } } if( ! $was_header ) { $comment = $s; } } else if( T_STRING === $t && '(' === $tokens->advance() && ( $rule = $this->rule($s) ) ){ $ref = $fileref ? $fileref.':'.$tok[2]: ''; $depth = 1; $args = array(); $narg = 0; } else if( $comment ){ if( false === stripos($comment, 'translators:') && false === strpos($comment, 'xgettext:') ){ $comment = ''; } } } return $this; } }
|
22 |
+
final class LocoWordPressExtractor extends LocoPHPExtractor { public static function create(){ $e = new LocoWordPressExtractor( array( '__' => 'sd', '_e' => 'sd', '_c' => 'sd', '_n' => 'sp_d', '_n_noop' => 'spd', '_nc' => 'sp_d', '__ngettext' => 'spd', '__ngettext_noop' => 'spd', '_x' => 'scd', '_ex' => 'scd', '_nx' => 'sp_cd', '_nx_noop' => 'spcd', 'esc_attr__' => 'sd', 'esc_html__' => 'sd', 'esc_attr_e' => 'sd', 'esc_html_e' => 'sd', 'esc_attr_x' => 'scd', 'esc_html_x' => 'scd', ) ); return $e->setDomain('default'); } public function extractSource( $src, $fileref = '' ){ if( '.twig' === substr($fileref,-5) ){ $src = '<?php '.preg_replace('/\\{#([^#]+)#\\}/su','/*\\1*/',$src); } return parent::extractSource( $src, $fileref ); } }
|
23 |
+
function loco_wp_extractor(){ return LocoWordPressExtractor::create(); }
|
24 |
abstract class LocoPo { public static function pair( $key, $text, $width = 79 ){ if( ! $text && '0' !== $text ){ return $key.' ""'; } $text = addcslashes( $text, "\t\x0B\x0C\x07\x08\\\"" ); $text = preg_replace('/\R/u', "\\n\n", $text, -1, $nbr ); if( $nbr ){ } else if( $width && $width < mb_strlen($text,'UTF-8') + strlen($key) + 3 ){ } else { return $key.' "'.$text.'"'; } $lines = array( $key.' "' ); if( $width ){ $width -= 2; $a = '/^.{0,'.($width-1).'}[-– \\.,:;\\?!\\)\\]\\}\\>]/u'; $b = '/^[^-– \\.,:;\\?!\\)\\]\\}\\>]+/u'; foreach( explode("\n",$text) as $unwrapped ){ $length = mb_strlen( $unwrapped, 'UTF-8' ); while( $length > $width ){ if( preg_match( $a, $unwrapped, $r ) ){ $line = $r[0]; } else if( preg_match( $b, $unwrapped, $r ) ){ $line = $r[0]; } else { throw new Exception('Wrapping error'); } $lines[] = $line; $trunc = mb_strlen($line,'UTF-8'); $length -= $trunc; $unwrapped = (string) substr( $unwrapped, strlen($line) ); if( ( '' === $unwrapped && 0 !== $length ) || ( 0 === $length && '' !== $unwrapped ) ){ throw new Exception('Truncation error'); } } if( 0 !== $length ){ $lines[] = $unwrapped; } } } else { foreach( explode("\n",$text) as $unwrapped ){ $lines[] = $unwrapped; } } return implode("\"\n\"",$lines).'"'; } public static function refs( $text, $width = 76 ){ $text = preg_replace('/\\s+/', ' ', $text ); if( $width ){ $text = wordwrap( $text, $width, "\n#: ", false ); } return '#: '.$text; } public static function prefix( $text, $prefix ){ $lines = preg_split('/\\R/u', $text, -1 ); return $prefix.implode( "\n".$prefix, $lines ); } }
|
25 |
+
function loco_is_numeric( $s ){ return is_int($s) || ctype_digit( ltrim($s,'+-') ); }
|
26 |
+
class LocoPoIterator implements Iterator, Countable { private $po; private $headers; private $i; private $t; private $j; private $z; private $w = 79; public function __construct( $po ){ $this->po = $po; $this->t = count( $po ); if( ! isset($po[0]) ){ throw new InvalidArgumentException('Empty PO data'); } $h = $po[0]; if( '' === $h['source'] && empty($h['context']) ){ $this->z = 0; } else { $this->z = -1; } } public function count(){ return $this->t - ( $this->z + 1 ); } public function wrap( $width ){ if( ! loco_is_numeric($width) || $width < 1 ){ $this->w = 0; } else { $this->w = max( 15, (int) $width ); } return $this; } public function rewind(){ $this->i = $this->z; $this->j = -1; $this->next(); } public function key(){ return $this->j; } public function valid(){ return is_int($this->i); } public function next(){ $i = $this->i; while( ++$i < $this->t ){ $this->j++; $this->i = $i; return; } $this->i = null; $this->j = null; } public function current(){ $i = $this->i; $po = $this->po; $parent = new LocoPoMessage( $po[$i] ); $plurals = array(); while( isset($po[++$i]['parent']) ){ $this->i = $i; $plurals[] = new LocoPoMessage( $po[$i] ); } if( $plurals ){ $parent['plurals'] = $plurals; } return $parent; } public function getArrayCopy(){ $po = $this->po; if( 0 === $this->z ){ $po[0]['target'] = (string) $this->getHeaders(); } return $po; } public function getHeaders(){ if( ! $this->headers ){ $header = $this->po[0]; if( 0 === $this->z ){ $this->headers = LocoPoHeaders::fromMsgstr( $header['target'] ); } else { $this->headers = new LocoPoHeaders; } } return $this->headers; } public function initPo(){ if( 0 === $this->z ){ unset( $this->po[0]['flag'] ); } return $this; } public function initPot(){ if( 0 === $this->z ){ $this->po[0]['flag'] = 4; } return $this; } public function strip(){ $po = $this->po; $i = count($po); $z = $this->z; while( --$i > $z ){ $po[$i]['target'] = ''; } $this->po = $po; return $this; } public function __toString(){ try { return $this->render(); } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); return ''; } } public function render( $sorter = null ){ $width = $this->w; $ref_width = max( 0, $width - 3 ); if( 0 === $this->z ){ $h = $this->po[0]; } else { $h = array( 'source' => '' ); } $h['target'] = (string) $this->getHeaders(); $msg = new LocoPoMessage( $h ); $s = $msg->render( $width, $ref_width ); if( $sorter ){ if( ! is_callable($sorter) ){ throw new InvalidArgumentException('Bad callback'); } $msgs = array(); foreach( $this as $msg ){ $msgs[] = $msg; } usort( $msgs, $sorter ); } else { $msgs = $this; } foreach( $msgs as $msg ){ $s .= "\n".$msg->render( $width, $ref_width ); } return $s; } public function getHashes(){ $a = array(); foreach( $this as $msg ){ $a[] = $msg->getHash(); } sort( $a, SORT_STRING ); return $a; } public function equalSource( LocoPoIterator $that ){ $a = $this->getHashes(); $b = $that->getHashes(); if( count($a) !== count($b) ){ return false; } foreach( $a as $i => $hash ){ if( $hash !== $b[$i] ){ return false; } } return true; } public function sort( $func = null ){ $order = array(); foreach( $this as $msg ){ $order[] = $msg; } if( is_null($func) ){ $func = array( __CLASS__, 'compare' ); } else if( ! is_callable($func) ){ throw new InvalidArgumentException('Bad callback'); } usort( $order, $func ); $po = array(); if( 0 === $this->z ){ $po[] = $this->po[0]; } foreach( $order as $msg ){ $po[] = $msg->getArrayCopy(); if( is_array( $plurals = $msg->plurals ) ){ $index = count($po) - 1; unset( $po[$index]['plurals'] ); foreach( $plurals as $p ){ $a = $p->getArrayCopy(); $a['parent'] = $index; $po[] = $a; } } } $this->po = $po; return $this; } public static function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); $j = $b->getHash(); $n = strcasecmp( $h, $j ); if( 0 === $n ){ $n = strcmp( $h, $j ); if( 0 === $n ){ return 0; } } return $n > 0 ? 1 : -1; } public function createSorter(){ $index = array(); foreach( $this as $i => $msg ){ $index[ $msg->getHash() ] = $i; } $obj = new LocoPoIndex( $index ); return array( $obj, 'compare' ); } }
|
27 |
class LocoPoIndex extends ArrayIterator { public function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); if( ! isset($this[$h]) ){ return 1; } $j = $b->getHash(); if( ! isset($this[$j]) ){ return -1; } return $this[$h] > $this[$j] ? 1 : -1; } }
|
28 |
class LocoPoMessage extends ArrayObject { public function __construct( array $r ){ $r['key'] = $r['source']; parent::__construct($r); } public function __get( $prop ){ return isset($this[$prop]) ? $this[$prop] : null; } private function _getFlags(){ $flags = array(); $plurals = $this->__get('plurals'); if( 4 === $this->__get('flag') ){ $flags[] = 'fuzzy'; } else if( $plurals ){ foreach( $plurals as $child ){ if( 4 === $child->__get('flag') ){ $flags[] = 'fuzzy'; break; } } } if( $f = $this->__get('format') ){ $flags[] = $f.'-format'; } else if( isset($plurals[0]) && ( $f = $plurals[0]->__get('format') ) ){ $flags[] = $f.'-format'; } return $flags; } public function getHash(){ $msgid = $this['source']; if( isset($this['context']) ){ $msgctxt = $this['context']; if( is_string($msgctxt) && '' !== $msgctxt ){ if( ! $msgid && '0' !== $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( isset($this['plurals']) ){ foreach( $this['plurals'] as $p ){ $msgid .= "\0".$p->getHash(); break; } } return $msgid; } public function __toString(){ return $this->render( 79, 76 ); } public function render( $width, $ref_width ){ $s = ''; try { if( $text = $this->__get('comment') ) { $s .= LocoPo::prefix( $text, '# ')."\n"; } if( $text = $this->__get('notes') ) { $s .= LocoPo::prefix( $text, '#. ')."\n"; } if( $text = $this->__get('refs') ){ $s .= LocoPo::refs( $text, $ref_width )."\n"; } if( $texts = $this->_getFlags() ){ $s .= '#, '.implode(', ',$texts)."\n"; } $text = $this->__get('context'); if( is_string($text) && isset($text{0}) ){ $s .= LocoPo::pair('msgctxt', $text, $width )."\n"; } $s .= LocoPo::pair( 'msgid', $this['key'], $width )."\n"; $target = $this['target']; if( is_array( $plurals = $this->__get('plurals') ) ){ if( $plurals ){ foreach( $plurals as $i => $p ){ if( 0 === $i ){ $s .= LocoPo::pair('msgid_plural', $p['key'], $width )."\n"; $s .= LocoPo::pair('msgstr[0]', $target, $width )."\n"; } $s .= LocoPo::pair('msgstr['.(++$i).']', $p['target'], $width )."\n"; } } else if( isset($this['plural_key']) ){ $s .= LocoPo::pair('msgid_plural', $this['plural_key'], $width )."\n"; $s .= LocoPo::pair('msgstr[0]', $target, $width )."\n"; } else { trigger_error('Missing plural_key in zero plural export'); $s .= LocoPo::pair('msgstr', $target, $width )."\n"; } } else { $s .= LocoPo::pair('msgstr', $target, $width )."\n"; } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); } return $s; } }
|
29 |
class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } }
|
30 |
+
class LocoMo { private $bin; private $msgs; private $head; private $hash; private $use_fuzzy = false; public function __construct( Iterator $export, LocoHeaders $head = null ){ if( $head ){ $this->head = $head; } else { $this->head = new LocoHeaders(array('Project-Id-Version' => 'Loco')); } $this->msgs = $export; $this->bin = ''; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function useFuzzy(){ $this->use_fuzzy = true; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } public function compile(){ $table = array(''); $sources = array(''); $targets = array( (string) $this->head ); $fuzzy_flag = 4; $skip_fuzzy = ! $this->use_fuzzy; foreach( $this->msgs as $r ){ if( isset($r['flag']) && $skip_fuzzy && $fuzzy_flag === $r['flag'] ){ continue; } $msgid = $r['key']; if( isset($r['context']) ){ $msgctxt = $r['context']; if( is_string($msgctxt) && '' !== $msgctxt ){ if( ! $msgid && '0' !== $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( ! $msgid && '0' !== $msgid ){ continue; } $msgstr = $r['target']; if( ! $msgstr && '0' !== $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['target']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = "\xDE\x12\x04\x95\x00\x00\x00\x00"; $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } }
|
31 |
function loco_print_percent( $n, $t ){ $s = loco_string_percent( (int) $n, (int) $t ); echo $s,'%'; return ''; }
|
32 |
function loco_print_progress( $translated, $untranslated, $flagged ){ $total = $translated + $untranslated; $complete = loco_string_percent( $translated - $flagged, $total ); $class = 'progress'; if( ! $translated && ! $flagged ){ $class .= ' empty'; } else if( '100' === $complete ){ $class .= ' done'; } echo '<div class="',$class,'"><div class="t">'; if( $flagged ){ $s = loco_string_percent( $flagged, $total ); echo '<div class="bar f" style="width:',$s,'%"> </div>'; } if( '0' === $complete ){ echo ' '; } else { $class = 'bar p'; $p = (int) $complete; $class .= sprintf(' p-%u', 10*floor($p/10) ); $style = 'width:'.$complete.'%'; if( $flagged ){ $remain = 100.0 - (float) $s; $style .= '; max-width: '.sprintf('%s',$remain).'%'; } echo '<div class="',$class,'" style="'.$style.'"> </div>'; } echo '</div><div class="l">',$complete,'%</div></div>'; return ''; }
|
33 |
+
function loco_string_percent( $n, $t ){ if( ! $t || ! $n ){ $s = '0'; } else if( $t === $n ){ $s = '100'; } else { $dp = 0; $n = 100 * $n / $t; if( $n > 99 ){ $s = number_format( min( $n, 99.9 ), ++$dp ); } else if( $n < 0.5 ){ $n = max( $n, 0.0001 ); do { $s = number_format( $n, ++$dp ); } while( preg_match('/^0\\.0+$/',$s) && $dp < 4 ); $s = substr($s,1); } else { $s = number_format( $n, $dp ); } } return $s; }
|
lib/data/locales.php
CHANGED
@@ -2,4 +2,4 @@
|
|
2 |
/**
|
3 |
* Compiled data. Do not edit.
|
4 |
*/
|
5 |
-
return unserialize('a:113:{s:2:"af";a:2:{i:0;s:9:"Afrikaans";i:1;s:9:"Afrikaans";}s:2:"ar";a:2:{i:0;s:6:"Arabic";i:1;s:14:"العربية";}s:3:"ary";a:2:{i:0;s:15:"Moroccan Arabic";i:1;s:31:"العربية المغربية";}s:2:"as";a:2:{i:0;s:8:"Assamese";i:1;s:21:"অসমীয়া";}s:3:"azb";a:2:{i:0;s:17:"South Azerbaijani";i:1;s:29:"گؤنئی آذربایجان";}s:2:"az";a:2:{i:0;s:11:"Azerbaijani";i:1;s:16:"Azərbaycan dili";}s:3:"bel";a:2:{i:0;s:10:"Belarusian";i:1;s:29:"Беларуская мова";}s:5:"bg_BG";a:2:{i:0;s:9:"Bulgarian";i:1;s:18:"Български";}s:5:"bn_BD";a:2:{i:0;s:7:"Bengali";i:1;s:15:"বাংলা";}s:2:"bo";a:2:{i:0;s:7:"Tibetan";i:1;s:21:"བོད་ཡིག";}s:5:"bs_BA";a:2:{i:0;s:7:"Bosnian";i:1;s:8:"Bosanski";}s:2:"ca";a:2:{i:0;s:7:"Catalan";i:1;s:7:"Català";}s:3:"ceb";a:2:{i:0;s:7:"Cebuano";i:1;s:7:"Cebuano";}s:5:"cs_CZ";a:2:{i:0;s:5:"Czech";i:1;s:9:"Čeština";}s:2:"cy";a:2:{i:0;s:5:"Welsh";i:1;s:7:"Cymraeg";}s:5:"da_DK";a:2:{i:0;s:6:"Danish";i:1;s:5:"Dansk";}s:5:"de_CH";a:2:{i:0;s:20:"German (Switzerland)";i:1;s:17:"Deutsch (Schweiz)";}s:
|
2 |
/**
|
3 |
* Compiled data. Do not edit.
|
4 |
*/
|
5 |
+
return unserialize('a:113:{s:2:"af";a:2:{i:0;s:9:"Afrikaans";i:1;s:9:"Afrikaans";}s:2:"ar";a:2:{i:0;s:6:"Arabic";i:1;s:14:"العربية";}s:3:"ary";a:2:{i:0;s:15:"Moroccan Arabic";i:1;s:31:"العربية المغربية";}s:2:"as";a:2:{i:0;s:8:"Assamese";i:1;s:21:"অসমীয়া";}s:3:"azb";a:2:{i:0;s:17:"South Azerbaijani";i:1;s:29:"گؤنئی آذربایجان";}s:2:"az";a:2:{i:0;s:11:"Azerbaijani";i:1;s:16:"Azərbaycan dili";}s:3:"bel";a:2:{i:0;s:10:"Belarusian";i:1;s:29:"Беларуская мова";}s:5:"bg_BG";a:2:{i:0;s:9:"Bulgarian";i:1;s:18:"Български";}s:5:"bn_BD";a:2:{i:0;s:7:"Bengali";i:1;s:15:"বাংলা";}s:2:"bo";a:2:{i:0;s:7:"Tibetan";i:1;s:21:"བོད་ཡིག";}s:5:"bs_BA";a:2:{i:0;s:7:"Bosnian";i:1;s:8:"Bosanski";}s:2:"ca";a:2:{i:0;s:7:"Catalan";i:1;s:7:"Català";}s:3:"ceb";a:2:{i:0;s:7:"Cebuano";i:1;s:7:"Cebuano";}s:5:"cs_CZ";a:2:{i:0;s:5:"Czech";i:1;s:9:"Čeština";}s:2:"cy";a:2:{i:0;s:5:"Welsh";i:1;s:7:"Cymraeg";}s:5:"da_DK";a:2:{i:0;s:6:"Danish";i:1;s:5:"Dansk";}s:5:"de_CH";a:2:{i:0;s:20:"German (Switzerland)";i:1;s:17:"Deutsch (Schweiz)";}s:12:"de_DE_formal";a:2:{i:0;s:15:"German (Formal)";i:1;s:13:"Deutsch (Sie)";}s:5:"de_DE";a:2:{i:0;s:6:"German";i:1;s:7:"Deutsch";}s:14:"de_CH_informal";a:2:{i:0;s:30:"German (Switzerland, Informal)";i:1;s:21:"Deutsch (Schweiz, Du)";}s:3:"dzo";a:2:{i:0;s:8:"Dzongkha";i:1;s:18:"རྫོང་ཁ";}s:2:"el";a:2:{i:0;s:5:"Greek";i:1;s:16:"Ελληνικά";}s:5:"en_GB";a:2:{i:0;s:12:"English (UK)";i:1;s:12:"English (UK)";}s:5:"en_NZ";a:2:{i:0;s:21:"English (New Zealand)";i:1;s:21:"English (New Zealand)";}s:5:"en_ZA";a:2:{i:0;s:22:"English (South Africa)";i:1;s:22:"English (South Africa)";}s:5:"en_AU";a:2:{i:0;s:19:"English (Australia)";i:1;s:19:"English (Australia)";}s:5:"en_CA";a:2:{i:0;s:16:"English (Canada)";i:1;s:16:"English (Canada)";}s:2:"eo";a:2:{i:0;s:9:"Esperanto";i:1;s:9:"Esperanto";}s:5:"es_AR";a:2:{i:0;s:19:"Spanish (Argentina)";i:1;s:21:"Español de Argentina";}s:5:"es_GT";a:2:{i:0;s:19:"Spanish (Guatemala)";i:1;s:21:"Español de Guatemala";}s:5:"es_MX";a:2:{i:0;s:16:"Spanish (Mexico)";i:1;s:19:"Español de México";}s:5:"es_CO";a:2:{i:0;s:18:"Spanish (Colombia)";i:1;s:20:"Español de Colombia";}s:5:"es_VE";a:2:{i:0;s:19:"Spanish (Venezuela)";i:1;s:21:"Español de Venezuela";}s:5:"es_CR";a:2:{i:0;s:20:"Spanish (Costa Rica)";i:1;s:22:"Español de Costa Rica";}s:5:"es_PE";a:2:{i:0;s:14:"Spanish (Peru)";i:1;s:17:"Español de Perú";}s:5:"es_CL";a:2:{i:0;s:15:"Spanish (Chile)";i:1;s:17:"Español de Chile";}s:5:"es_ES";a:2:{i:0;s:15:"Spanish (Spain)";i:1;s:8:"Español";}s:2:"et";a:2:{i:0;s:8:"Estonian";i:1;s:5:"Eesti";}s:2:"eu";a:2:{i:0;s:6:"Basque";i:1;s:7:"Euskara";}s:5:"fa_IR";a:2:{i:0;s:7:"Persian";i:1;s:10:"فارسی";}s:2:"fi";a:2:{i:0;s:7:"Finnish";i:1;s:5:"Suomi";}s:5:"fr_BE";a:2:{i:0;s:16:"French (Belgium)";i:1;s:21:"Français de Belgique";}s:5:"fr_FR";a:2:{i:0;s:15:"French (France)";i:1;s:9:"Français";}s:5:"fr_CA";a:2:{i:0;s:15:"French (Canada)";i:1;s:19:"Français du Canada";}s:3:"fur";a:2:{i:0;s:8:"Friulian";i:1;s:8:"Friulian";}s:2:"gd";a:2:{i:0;s:15:"Scottish Gaelic";i:1;s:9:"Gàidhlig";}s:5:"gl_ES";a:2:{i:0;s:8:"Galician";i:1;s:6:"Galego";}s:2:"gu";a:2:{i:0;s:8:"Gujarati";i:1;s:21:"ગુજરાતી";}s:3:"haz";a:2:{i:0;s:8:"Hazaragi";i:1;s:15:"هزاره گی";}s:5:"he_IL";a:2:{i:0;s:6:"Hebrew";i:1;s:16:"עִבְרִית";}s:5:"hi_IN";a:2:{i:0;s:5:"Hindi";i:1;s:18:"हिन्दी";}s:2:"hr";a:2:{i:0;s:8:"Croatian";i:1;s:8:"Hrvatski";}s:5:"hu_HU";a:2:{i:0;s:9:"Hungarian";i:1;s:6:"Magyar";}s:2:"hy";a:2:{i:0;s:8:"Armenian";i:1;s:14:"Հայերեն";}s:5:"id_ID";a:2:{i:0;s:10:"Indonesian";i:1;s:16:"Bahasa Indonesia";}s:5:"is_IS";a:2:{i:0;s:9:"Icelandic";i:1;s:9:"Íslenska";}s:5:"it_IT";a:2:{i:0;s:7:"Italian";i:1;s:8:"Italiano";}s:2:"ja";a:2:{i:0;s:8:"Japanese";i:1;s:9:"日本語";}s:5:"jv_ID";a:2:{i:0;s:8:"Javanese";i:1;s:9:"Basa Jawa";}s:5:"ka_GE";a:2:{i:0;s:8:"Georgian";i:1;s:21:"ქართული";}s:3:"kab";a:2:{i:0;s:6:"Kabyle";i:1;s:9:"Taqbaylit";}s:2:"kk";a:2:{i:0;s:6:"Kazakh";i:1;s:19:"Қазақ тілі";}s:2:"km";a:2:{i:0;s:5:"Khmer";i:1;s:27:"ភាសាខ្មែរ";}s:5:"ko_KR";a:2:{i:0;s:6:"Korean";i:1;s:9:"한국어";}s:3:"ckb";a:2:{i:0;s:16:"Kurdish (Sorani)";i:1;s:13:"كوردی";}s:2:"lo";a:2:{i:0;s:3:"Lao";i:1;s:21:"ພາສາລາວ";}s:5:"lt_LT";a:2:{i:0;s:10:"Lithuanian";i:1;s:15:"Lietuvių kalba";}s:2:"lv";a:2:{i:0;s:7:"Latvian";i:1;s:16:"Latviešu valoda";}s:5:"mk_MK";a:2:{i:0;s:10:"Macedonian";i:1;s:31:"Македонски јазик";}s:5:"ml_IN";a:2:{i:0;s:9:"Malayalam";i:1;s:18:"മലയാളം";}s:2:"mn";a:2:{i:0;s:9:"Mongolian";i:1;s:12:"Монгол";}s:2:"mr";a:2:{i:0;s:7:"Marathi";i:1;s:15:"मराठी";}s:5:"ms_MY";a:2:{i:0;s:5:"Malay";i:1;s:13:"Bahasa Melayu";}s:5:"my_MM";a:2:{i:0;s:17:"Myanmar (Burmese)";i:1;s:15:"ဗမာစာ";}s:5:"nb_NO";a:2:{i:0;s:19:"Norwegian (Bokmål)";i:1;s:13:"Norsk bokmål";}s:5:"ne_NP";a:2:{i:0;s:6:"Nepali";i:1;s:18:"नेपाली";}s:12:"nl_NL_formal";a:2:{i:0;s:14:"Dutch (Formal)";i:1;s:20:"Nederlands (Formeel)";}s:5:"nl_NL";a:2:{i:0;s:5:"Dutch";i:1;s:10:"Nederlands";}s:5:"nl_BE";a:2:{i:0;s:15:"Dutch (Belgium)";i:1;s:20:"Nederlands (België)";}s:5:"nn_NO";a:2:{i:0;s:19:"Norwegian (Nynorsk)";i:1;s:13:"Norsk nynorsk";}s:3:"oci";a:2:{i:0;s:7:"Occitan";i:1;s:7:"Occitan";}s:5:"pa_IN";a:2:{i:0;s:7:"Punjabi";i:1;s:18:"ਪੰਜਾਬੀ";}s:5:"pl_PL";a:2:{i:0;s:6:"Polish";i:1;s:6:"Polski";}s:2:"ps";a:2:{i:0;s:6:"Pashto";i:1;s:8:"پښتو";}s:5:"pt_BR";a:2:{i:0;s:19:"Portuguese (Brazil)";i:1;s:20:"Português do Brasil";}s:10:"pt_PT_ao90";a:2:{i:0;s:27:"Portuguese (Portugal, AO90)";i:1;s:17:"Português (AO90)";}s:5:"pt_PT";a:2:{i:0;s:21:"Portuguese (Portugal)";i:1;s:10:"Português";}s:3:"rhg";a:2:{i:0;s:8:"Rohingya";i:1;s:8:"Ruáinga";}s:5:"ro_RO";a:2:{i:0;s:8:"Romanian";i:1;s:8:"Română";}s:5:"ru_RU";a:2:{i:0;s:7:"Russian";i:1;s:14:"Русский";}s:3:"sah";a:2:{i:0;s:5:"Sakha";i:1;s:14:"Сахалыы";}s:5:"si_LK";a:2:{i:0;s:7:"Sinhala";i:1;s:15:"සිංහල";}s:5:"sk_SK";a:2:{i:0;s:6:"Slovak";i:1;s:11:"Slovenčina";}s:5:"sl_SI";a:2:{i:0;s:9:"Slovenian";i:1;s:13:"Slovenščina";}s:2:"sq";a:2:{i:0;s:8:"Albanian";i:1;s:5:"Shqip";}s:5:"sr_RS";a:2:{i:0;s:7:"Serbian";i:1;s:23:"Српски језик";}s:5:"sv_SE";a:2:{i:0;s:7:"Swedish";i:1;s:7:"Svenska";}s:3:"szl";a:2:{i:0;s:8:"Silesian";i:1;s:17:"Ślōnskŏ gŏdka";}s:5:"ta_IN";a:2:{i:0;s:5:"Tamil";i:1;s:15:"தமிழ்";}s:2:"te";a:2:{i:0;s:6:"Telugu";i:1;s:18:"తెలుగు";}s:2:"th";a:2:{i:0;s:4:"Thai";i:1;s:9:"ไทย";}s:2:"tl";a:2:{i:0;s:7:"Tagalog";i:1;s:7:"Tagalog";}s:5:"tr_TR";a:2:{i:0;s:7:"Turkish";i:1;s:8:"Türkçe";}s:5:"tt_RU";a:2:{i:0;s:5:"Tatar";i:1;s:19:"Татар теле";}s:3:"tah";a:2:{i:0;s:8:"Tahitian";i:1;s:10:"Reo Tahiti";}s:5:"ug_CN";a:2:{i:0;s:6:"Uighur";i:1;s:16:"ئۇيغۇرچە";}s:2:"uk";a:2:{i:0;s:9:"Ukrainian";i:1;s:20:"Українська";}s:2:"ur";a:2:{i:0;s:4:"Urdu";i:1;s:8:"اردو";}s:5:"uz_UZ";a:2:{i:0;s:5:"Uzbek";i:1;s:11:"O‘zbekcha";}s:2:"vi";a:2:{i:0;s:10:"Vietnamese";i:1;s:14:"Tiếng Việt";}s:5:"zh_CN";a:2:{i:0;s:15:"Chinese (China)";i:1;s:12:"简体中文";}s:5:"zh_TW";a:2:{i:0;s:16:"Chinese (Taiwan)";i:1;s:12:"繁體中文";}s:5:"zh_HK";a:2:{i:0;s:19:"Chinese (Hong Kong)";i:1;s:16:"香港中文版 ";}}');
|
lib/data/plurals.php
CHANGED
@@ -2,4 +2,4 @@
|
|
2 |
/**
|
3 |
* Compiled data. Do not edit.
|
4 |
*/
|
5 |
-
return unserialize('a:
|
2 |
/**
|
3 |
* Compiled data. Do not edit.
|
4 |
*/
|
5 |
+
return unserialize('a:64:{s:2:"ak";i:1;s:2:"am";i:1;s:2:"ar";i:2;s:3:"ary";i:2;s:2:"be";i:3;s:2:"bm";i:4;s:2:"bo";i:4;s:2:"br";i:1;s:2:"bs";i:3;s:2:"cs";i:5;s:2:"cy";i:6;s:2:"dz";i:4;s:2:"ff";i:1;s:2:"fr";i:1;s:2:"ga";i:7;s:2:"gd";i:8;s:2:"gv";i:9;s:2:"hr";i:10;s:2:"id";i:4;s:2:"ii";i:4;s:2:"iu";i:11;s:2:"ja";i:4;s:2:"ka";i:4;s:2:"kk";i:4;s:2:"km";i:4;s:2:"kn";i:4;s:2:"ko";i:4;s:2:"kw";i:11;s:2:"ky";i:4;s:2:"ln";i:1;s:2:"lo";i:4;s:2:"lt";i:12;s:2:"lv";i:13;s:2:"mg";i:1;s:2:"mi";i:1;s:2:"mk";i:14;s:2:"ms";i:4;s:2:"mt";i:15;s:2:"my";i:4;s:2:"nr";i:4;s:2:"oc";i:1;s:2:"pl";i:16;s:2:"ro";i:17;s:2:"ru";i:3;s:2:"sa";i:11;s:2:"sg";i:4;s:2:"sk";i:5;s:2:"sl";i:18;s:2:"sm";i:4;s:2:"sr";i:3;s:2:"su";i:4;s:2:"th";i:4;s:2:"ti";i:1;s:2:"tl";i:1;s:2:"to";i:4;s:2:"tt";i:4;s:2:"ug";i:4;s:2:"uk";i:3;s:2:"vi";i:4;s:2:"wa";i:1;s:2:"wo";i:4;s:2:"yo";i:4;s:2:"zh";i:4;s:0:"";a:19:{i:0;a:2:{i:0;s:6:"n != 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:1;a:2:{i:0;s:5:"n > 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:2;a:2:{i:0;s:95:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5";i:1;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}i:3;a:2:{i:0;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:4;a:2:{i:0;s:1:"0";i:1;a:1:{i:0;s:5:"other";}}i:5;a:2:{i:0;s:45:"( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:6;a:2:{i:0;s:56:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5";i:1;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}i:7;a:2:{i:0;s:44:"n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4";i:1;a:5:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:4:"many";i:4;s:5:"other";}}i:8;a:2:{i:0;s:79:"n==1||n==11 ? 0 : n==2||n==12 ? 1 :(n >= 3 && n<=10)||(n >= 13 && n<=19)? 2 : 3";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}i:9;a:2:{i:0;s:43:"n%10==1 ? 0 : n%10==2 ? 1 : n%20==0 ? 2 : 3";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}i:10;a:2:{i:0;s:80:"n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:11;a:2:{i:0;s:27:"n == 1 ? 0 : n == 2 ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}i:12;a:2:{i:0;s:71:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:13;a:2:{i:0;s:49:"n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2";i:1;a:3:{i:0;s:3:"one";i:1;s:5:"other";i:2;s:4:"zero";}}i:14;a:2:{i:0;s:40:"( n % 10 == 1 && n % 100 != 11 ) ? 0 : 1";i:1;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}i:15;a:2:{i:0;s:75:"(n==1 ? 0 : n==0||( n%100>1 && n%100<11)? 1 :(n%100>10 && n%100<20)? 2 : 3)";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";i:3;s:5:"other";}}i:16;a:2:{i:0;s:66:"(n==1 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:17;a:2:{i:0;s:56:"(n==1 ? 0 :(((n%100>19)||(( n%100==0)&&(n!=0)))? 2 : 1))";i:1;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}i:18;a:2:{i:0;s:56:"n%100==1 ? 0 : n%100==2 ? 1 : n%100==3||n%100==4 ? 2 : 3";i:1;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}}}');
|
loco.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Loco Translate
|
|
4 |
Plugin URI: https://wordpress.org/plugins/loco-translate/
|
5 |
Description: Translate themes and plugins directly in WordPress
|
6 |
Author: Tim Whitlock
|
7 |
-
Version: 2.1.
|
8 |
Author URI: https://localise.biz/wordpress/plugin
|
9 |
Text Domain: loco-translate
|
10 |
Domain Path: /languages/
|
@@ -36,7 +36,7 @@ function loco_plugin_file(){
|
|
36 |
* @return string
|
37 |
*/
|
38 |
function loco_plugin_version(){
|
39 |
-
return '2.1.
|
40 |
}
|
41 |
|
42 |
|
@@ -157,7 +157,7 @@ spl_autoload_register( 'loco_autoload', false );
|
|
157 |
|
158 |
// provide safe directory for custom translations that won't be deleted during auto-updates
|
159 |
if( ! defined('LOCO_LANG_DIR') ){
|
160 |
-
define( 'LOCO_LANG_DIR',
|
161 |
}
|
162 |
|
163 |
|
4 |
Plugin URI: https://wordpress.org/plugins/loco-translate/
|
5 |
Description: Translate themes and plugins directly in WordPress
|
6 |
Author: Tim Whitlock
|
7 |
+
Version: 2.1.5
|
8 |
Author URI: https://localise.biz/wordpress/plugin
|
9 |
Text Domain: loco-translate
|
10 |
Domain Path: /languages/
|
36 |
* @return string
|
37 |
*/
|
38 |
function loco_plugin_version(){
|
39 |
+
return '2.1.5';
|
40 |
}
|
41 |
|
42 |
|
157 |
|
158 |
// provide safe directory for custom translations that won't be deleted during auto-updates
|
159 |
if( ! defined('LOCO_LANG_DIR') ){
|
160 |
+
define( 'LOCO_LANG_DIR', trailingslashit(loco_constant('WP_LANG_DIR')).'loco' );
|
161 |
}
|
162 |
|
163 |
|
pub/css/admin.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}.loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#FFF;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco.wrap .selector li,#loco.wrap .selector .handle,#loco.wrap .selectoradd a,#loco.wrap .selectorsep:before,#loco.wrap .selectorsep span{padding:0.3em 0.75em}#loco.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco.wrap .selectoradd a,#loco.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco.wrap .selector .handle .prefix{padding-right:0.6ex}#loco.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:0.25em;right:0.6em}#loco.wrap .selector .handle:focus:after,#loco.wrap .selector .handle:hover:after{color:#666}#loco.wrap .selector.no-caret .handle{padding-right:0.75em}#loco.wrap .selector.no-caret .handle:after{display:none}#loco.wrap .selector.no-title .handle{padding-left:0.5em;padding-right:0.5em}#loco.wrap .selector.no-title .handle .label{display:none}#loco.wrap .selector.no-title .handle .icon{margin-right:0px}#loco.wrap .selector.dummy .handle{border-color:transparent}#loco.wrap .selector.dummy .handle:after{display:none}#loco.wrap .selectoradd{position:relative}#loco.wrap .selectoradd>*{display:block;float:left;clear:none}#loco.wrap .selectoradd>a.has-icon{width:1.3em}#loco.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco.wrap .selectorsep{display:inline-block}#loco.wrap .selectorsep span{color:#666;height:1.3em}#loco.wrap .selector ul{padding:0}#loco.wrap .selector ul,#loco.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,0.2);border:solid 1px #ccc;overflow:auto}#loco.wrap .selector.up ul{margin-top:0}#loco.wrap .selector.multi li input{display:none}#loco.wrap .selector.multi li.checked{background:#eee}#loco.wrap .selector li.active{background:#eee !important}#loco.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco.wrap .selector li.over .label{color:#fff}#loco.wrap .selector .label{font:inherit;color:inherit}#loco.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco.wrap .selector .icon.no-icon{display:none}#loco.wrap .selector .icon:before{color:#666}#loco.wrap .selector .label{line-height:1}#loco.wrap .selector .icon,#loco.wrap .selector .icon-16{vertical-align:bottom}#loco.wrap .selector .icon,#loco.wrap .selector .lang,#loco.wrap .selector .icon-16{margin-right:5px}#loco.wrap .selector .region,#loco.wrap .selector .lang-ca,#loco.wrap .selector .lang-eo,#loco.wrap .selector .lang-eu,#loco.wrap .selector .variant-wales,#loco.wrap .selector .region-gb.lang-cy,#loco.wrap .selector .variant-scotland,#loco.wrap .selector .region-gb.lang-gd{margin-left:2px;margin-right:7px}#loco.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco.wrap .selector.ticked .active .icon.no-icon:before{content:"\2713"}#loco.wrap .selectoradd a:hover,#loco.wrap .selector a.handle:focus,#loco.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco.wrap .selector.active .handle:after{color:#999}#loco.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666}#loco.wrap .selector.disabled .handle:after{font-size:1em;top:0.5em;right:0.75em}#loco.wrap .selector li.disabled,#loco.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco.wrap .selector li.disabled *{cursor:text}#loco.wrap .selector li.disabled .icon:before{color:#aaa}#loco.wrap .selector li.disabled .flag,#loco.wrap .selector li.disabled .icon-16{opacity:0.4}#loco.wrap .selector.lefty ul{left:auto;right:0}#loco.wrap .selector.lefty ul .icon,#loco.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco.wrap div.auto-comp-wrap{width:100%}#loco.wrap div.auto-comp-wrap input{display:inline-block}#loco.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif) right 2px no-repeat}#loco.wrap div.auto-comp-drop{color:#333333;background:#FFFFFF;border-top:none;position:absolute;width:100%;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,0.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,0.4);box-shadow:0 5px 5px rgba(0,0,0,0.4)}#loco.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#F0F0F0;border-top:solid 1px #FFF;border-bottom:solid 1px #DDD}#loco.wrap div.auto-comp-result:first-child{border-top:solid 1px #DDD}#loco.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco.wrap div.auto-comp-result:hover{background:#A8A8A8;color:#FFFFFF;border-top-color:#A8A8A8;border-bottom-color:#999999}#loco.wrap div.auto-comp-result.selected{background:#666666 !important;color:#FFFFFF;border-top-color:#666666;border-bottom-color:#666666}#loco.wrap div.auto-comp-result .lang,#loco.wrap div.auto-comp-result .region,#loco.wrap div.auto-comp-result .lang-ca,#loco.wrap div.auto-comp-result .lang-eo,#loco.wrap div.auto-comp-result .lang-eu,#loco.wrap div.auto-comp-result .variant-wales,#loco.wrap div.auto-comp-result .region-gb.lang-cy,#loco.wrap div.auto-comp-result .variant-scotland,#loco.wrap div.auto-comp-result .region-gb.lang-gd{margin-right:5px}#loco.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#cc0000;opacity:1}#loco.wrap div.auto-comp-wrap.error input[type="text"]{border-color:#cc0000;color:#cc0000}#loco.wrap div.auto-comp-wrap.error input[type="text"]:focus{-webkit-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);-moz-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5)}#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco.wrap ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco.wrap .loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{#loco.wrap{font-family:'loco';src:url("../fonts/loco.eot");src:url("../fonts/loco.eot?#iefix") format("embedded-opentype"),url("../fonts/loco.ttf") format("truetype"),url("../fonts/loco.woff") format("woff"),url("../fonts/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}}#loco.wrap .has-icon:before{display:inline-block;padding-right:0.3em}#loco.wrap a.icon-help{cursor:help}#loco.wrap a.icon-help span{display:none}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .selector.disabled .handle:after,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon-flag.is-untranslated{color:#999}#loco.wrap .icon-flag.is-untranslated:before{color:inherit;content:"×";text-align:center}#loco.wrap .icon-flag.status-0,#loco.wrap .icon-flag.is-translated{color:#2e892e}#loco.wrap .icon-flag.status-0:before,#loco.wrap .icon-flag.is-translated:before{color:inherit;content:"✓";text-align:center}#loco.wrap .icon-flag.status-4,#loco.wrap .icon-flag.is-fuzzy{color:#666}#loco.wrap .icon-flag.status-4:before,#loco.wrap .icon-flag.is-fuzzy:before{color:inherit;content:"";text-align:center}#loco.wrap .icon-flag.status-1,#loco.wrap .icon-flag.is-incorrect,#loco.wrap .icon-flag.status-2,#loco.wrap .icon-flag.is-provisional,#loco.wrap .icon-flag.status-3,#loco.wrap .icon-flag.is-unapproved,#loco.wrap .icon-flag.status-5,#loco.wrap .icon-flag.is-incomplete,#loco.wrap .icon-flag.status-6,#loco.wrap .icon-flag.is-rejected{color:#bd2c00}#loco.wrap .icon-flag.status-1:before,#loco.wrap .icon-flag.is-incorrect:before,#loco.wrap .icon-flag.status-2:before,#loco.wrap .icon-flag.is-provisional:before,#loco.wrap .icon-flag.status-3:before,#loco.wrap .icon-flag.is-unapproved:before,#loco.wrap .icon-flag.status-5:before,#loco.wrap .icon-flag.is-incomplete:before,#loco.wrap .icon-flag.status-6:before,#loco.wrap .icon-flag.is-rejected:before{color:inherit;content:"";text-align:center}#loco.wrap .lang,#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco.wrap .lang-el{background-color:#1D48A3}#loco.wrap .lang-el:before{content:"\0395\03BB"}#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png);background-repeat:no-repeat;background-color:transparent}#loco.wrap .region:before,#loco.wrap .lang-ca:before,#loco.wrap .lang-eo:before,#loco.wrap .lang-eu:before,#loco.wrap .variant-wales:before,#loco.wrap .region-gb.lang-cy:before,#loco.wrap .variant-scotland:before,#loco.wrap .region-gb.lang-gd:before{visibility:hidden}#loco.wrap .lang-zh{background-color:#B90000}#loco.wrap .lang-zh.script-hans:before{content:"\4E2D\56FD"}#loco.wrap .lang-zh.script-hant:before{content:"\4E2D\570B"}#loco.wrap .__{background-position:0 0}#loco.wrap .lang-eo{background-position:0 -12px}#loco.wrap .lang-eu{background-position:0 -24px}#loco.wrap .lang-ca{background-position:0 -36px}#loco.wrap .region-tg{background-position:0 -48px}#loco.wrap .region-me{background-position:0 -60px}#loco.wrap .region-la{background-position:0 -73px}#loco.wrap .region-mr{background-position:0 -85px}#loco.wrap .region-ni{background-position:0 -97px}#loco.wrap .region-lv{background-position:0 -109px}#loco.wrap .region-om{background-position:0 -121px}#loco.wrap .region-af{background-position:0 -133px}#loco.wrap .region-cy{background-position:0 -145px}#loco.wrap .region-bj{background-position:0 -157px}#loco.wrap .region-aq{background-position:0 -169px}#loco.wrap .region-cn{background-position:0 -186px}#loco.wrap .region-co{background-position:0 -198px}#loco.wrap .region-cx{background-position:0 -210px}#loco.wrap .region-ag{background-position:0 -222px}#loco.wrap .region-ms{background-position:0 -234px}#loco.wrap .region-md{background-position:0 -246px}#loco.wrap .region-zm{background-position:0 -258px}#loco.wrap .region-vn{background-position:0 -270px}#loco.wrap .region-tf{background-position:0 -282px}#loco.wrap .region-td{background-position:0 -294px}#loco.wrap .region-yt{background-position:0 -306px}#loco.wrap .region-lb{background-position:0 -318px}#loco.wrap .region-mf{background-position:0 -330px}#loco.wrap .region-lu{background-position:0 -347px}#loco.wrap .region-mq{background-position:0 -359px}#loco.wrap .region-cz{background-position:0 -371px}#loco.wrap .region-ae{background-position:0 -383px}#loco.wrap .region-cm{background-position:0 -395px}#loco.wrap .region-bi{background-position:0 -407px}#loco.wrap .region-ar{background-position:0 -419px}#loco.wrap .region-as{background-position:0 -431px}#loco.wrap .region-bh{background-position:0 -443px}#loco.wrap .region-cl{background-position:0 -455px}#loco.wrap .region-ad{background-position:0 -467px}#loco.wrap .region-mp{background-position:0 -479px}#loco.wrap .region-lt{background-position:0 -491px}#loco.wrap .region-mg{background-position:0 -503px}#loco.wrap .region-lc{background-position:0 -515px}#loco.wrap .region-tr{background-position:0 -527px}#loco.wrap .region-ua{background-position:0 -539px}#loco.wrap .region-tv{background-position:0 -551px}#loco.wrap .region-vi{background-position:0 -563px}#loco.wrap .region-mt{background-position:0 -575px}#loco.wrap .region-no{background-position:0 -587px}#loco.wrap .region-mc{background-position:0 -599px}#loco.wrap .region-ch{background-position:0 -611px}#loco.wrap .region-bl{background-position:0 -623px}#loco.wrap .region-aw{background-position:0 -640px}#loco.wrap .region-bz{background-position:0 -652px}#loco.wrap .region-bm{background-position:0 -664px}#loco.wrap .region-ci{background-position:0 -676px}#loco.wrap .region-mu{background-position:0 -688px}#loco.wrap .region-us{background-position:0 -700px}#loco.wrap .region-tw{background-position:0 -712px}#loco.wrap .region-ye{background-position:0 -724px}#loco.wrap .region-mw{background-position:0 -736px}#loco.wrap .region-nl{background-position:0 -748px}#loco.wrap .region-ls{background-position:0 -760px}#loco.wrap .region-bo{background-position:0 -772px}#loco.wrap .region-at{background-position:0 -784px}#loco.wrap .region-ck{background-position:0 -796px}#loco.wrap .region-by{background-position:0 -808px}#loco.wrap .region-au{background-position:0 -820px}#loco.wrap .region-bn{background-position:0 -832px}#loco.wrap .region-ma{background-position:0 -844px}#loco.wrap .region-nz{background-position:0 -856px}#loco.wrap .region-lr{background-position:0 -868px}#loco.wrap .region-mv{background-position:0 -880px}#loco.wrap .region-tc{background-position:0 -892px}#loco.wrap .region-ug{background-position:0 -904px}#loco.wrap .region-tt{background-position:0 -916px}#loco.wrap .region-pl{background-position:0 -928px}#loco.wrap .region-rs{background-position:0 -940px}#loco.wrap .region-in{background-position:0 -952px}#loco.wrap .region-ge{background-position:0 -964px}#loco.wrap .region-gr{background-position:0 -976px}#loco.wrap .region-gs{background-position:0 -988px}#loco.wrap .region-gd{background-position:0 -1000px}#loco.wrap .region-io{background-position:0 -1012px}#loco.wrap .region-hk{background-position:0 -1024px}#loco.wrap .region-kp{background-position:0 -1036px}#loco.wrap .region-kg{background-position:0 -1048px}#loco.wrap .region-pm{background-position:0 -1060px}#loco.wrap .region-sv{background-position:0 -1072px}#loco.wrap .region-re{background-position:0 -1084px}#loco.wrap .region-sa{background-position:0 -1096px}#loco.wrap .region-sc{background-position:0 -1108px}#loco.wrap .region-st{background-position:0 -1120px}#loco.wrap .region-ke{background-position:0 -1132px}#loco.wrap .region-im{background-position:0 -1144px}#loco.wrap .region-kr{background-position:0 -1161px}#loco.wrap .region-gf{background-position:0 -1173px}#loco.wrap .region-dj{background-position:0 -1185px}#loco.wrap .region-gq{background-position:0 -1197px}#loco.wrap .region-gp{background-position:0 -1209px}#loco.wrap .region-dk{background-position:0 -1221px}#loco.wrap .region-gg{background-position:0 -1233px}#loco.wrap .region-il{background-position:0 -1250px}#loco.wrap .region-pn{background-position:0 -1262px}#loco.wrap .region-sb{background-position:0 -1274px}#loco.wrap .region-py{background-position:0 -1286px}#loco.wrap .region-ru{background-position:0 -1298px}#loco.wrap .region-kw{background-position:0 -1310px}#loco.wrap .region-do{background-position:0 -1322px}#loco.wrap .region-gt{background-position:0 -1334px}#loco.wrap .region-gb{background-position:0 -1346px}#loco.wrap .region-gu{background-position:0 -1358px}#loco.wrap .region-je{background-position:0 -1370px}#loco.wrap .region-hm{background-position:0 -1387px}#loco.wrap .region-sg{background-position:0 -1399px}#loco.wrap .region-pk{background-position:0 -1411px}#loco.wrap .region-sr{background-position:0 -1423px}#loco.wrap .region-se{background-position:0 -1435px}#loco.wrap .region-jp{background-position:0 -1447px}#loco.wrap .region-gw{background-position:0 -1459px}#loco.wrap .region-eh{background-position:0 -1471px}#loco.wrap .region-dz{background-position:0 -1483px}#loco.wrap .region-ga{background-position:0 -1495px}#loco.wrap .region-fr{background-position:0 -1507px}#loco.wrap .region-dm{background-position:0 -1519px}#loco.wrap .region-hn{background-position:0 -1531px}#loco.wrap .region-sd{background-position:0 -1543px}#loco.wrap .region-rw{background-position:0 -1555px}#loco.wrap .region-ph{background-position:0 -1567px}#loco.wrap .region-ss{background-position:0 -1579px}#loco.wrap .region-qa{background-position:0 -1596px}#loco.wrap .region-pe{background-position:0 -1608px}#loco.wrap .region-pr{background-position:0 -1620px}#loco.wrap .region-si{background-position:0 -1632px}#loco.wrap .region-ht{background-position:0 -1644px}#loco.wrap .region-es{background-position:0 -1656px}#loco.wrap .region-gl{background-position:0 -1668px}#loco.wrap .region-gm{background-position:0 -1680px}#loco.wrap .region-er{background-position:0 -1692px}#loco.wrap .region-fi{background-position:0 -1704px}#loco.wrap .region-ee{background-position:0 -1716px}#loco.wrap .region-kn{background-position:0 -1728px}#loco.wrap .region-hu{background-position:0 -1740px}#loco.wrap .region-iq{background-position:0 -1752px}#loco.wrap .region-ky{background-position:0 -1764px}#loco.wrap .region-sh{background-position:0 -1776px}#loco.wrap .region-ps{background-position:0 -1788px}#loco.wrap .region-pf{background-position:0 -1800px}#loco.wrap .region-sj{background-position:0 -1812px}#loco.wrap .region-id{background-position:0 -1824px}#loco.wrap .region-is{background-position:0 -1836px}#loco.wrap .region-eg{background-position:0 -1848px}#loco.wrap .region-fk{background-position:0 -1860px}#loco.wrap .region-fj{background-position:0 -1872px}#loco.wrap .region-gn{background-position:0 -1884px}#loco.wrap .region-gy{background-position:0 -1896px}#loco.wrap .region-ir{background-position:0 -1908px}#loco.wrap .region-km{background-position:0 -1920px}#loco.wrap .region-ie{background-position:0 -1932px}#loco.wrap .region-kz{background-position:0 -1944px}#loco.wrap .region-ro{background-position:0 -1956px}#loco.wrap .region-sk{background-position:0 -1968px}#loco.wrap .region-pg{background-position:0 -1980px}#loco.wrap .region-pt{background-position:0 -1992px}#loco.wrap .region-so{background-position:0 -2004px}#loco.wrap .region-sx{background-position:0 -2016px}#loco.wrap .region-hr{background-position:0 -2033px}#loco.wrap .region-ki{background-position:0 -2045px}#loco.wrap .region-jm{background-position:0 -2057px}#loco.wrap .region-ec{background-position:0 -2069px}#loco.wrap .region-et{background-position:0 -2081px}#loco.wrap .region-fo{background-position:0 -2093px}#loco.wrap .region-kh{background-position:0 -2105px}#loco.wrap .region-sy{background-position:0 -2117px}#loco.wrap .region-sn{background-position:0 -2129px}#loco.wrap .region-pw{background-position:0 -2141px}#loco.wrap .region-sl{background-position:0 -2153px}#loco.wrap .region-fm{background-position:0 -2165px}#loco.wrap .region-gi{background-position:0 -2177px}#loco.wrap .region-de{background-position:0 -2189px}#loco.wrap .region-gh{background-position:0 -2201px}#loco.wrap .region-jo{background-position:0 -2213px}#loco.wrap .region-it{background-position:0 -2225px}#loco.wrap .region-pa{background-position:0 -2237px}#loco.wrap .region-sz{background-position:0 -2249px}#loco.wrap .region-sm{background-position:0 -2261px}#loco.wrap .region-tn{background-position:0 -2273px}#loco.wrap .region-ml{background-position:0 -2285px}#loco.wrap .region-cg{background-position:0 -2297px}#loco.wrap .region-ax{background-position:0 -2309px}#loco.wrap .region-ao{background-position:0 -2321px}#loco.wrap .region-bt{background-position:0 -2333px}#loco.wrap .region-an{background-position:0 -2345px}#loco.wrap .region-bb{background-position:0 -2357px}#loco.wrap .region-cf{background-position:0 -2369px}#loco.wrap .region-mm{background-position:0 -2381px}#loco.wrap .region-li{background-position:0 -2393px}#loco.wrap .region-na{background-position:0 -2405px}#loco.wrap .region-mz{background-position:0 -2417px}#loco.wrap .region-to{background-position:0 -2429px}#loco.wrap .region-vg{background-position:0 -2441px}#loco.wrap .region-ve{background-position:0 -2453px}#loco.wrap .region-tz{background-position:0 -2465px}#loco.wrap .region-tm{background-position:0 -2477px}#loco.wrap .region-mx{background-position:0 -2489px}#loco.wrap .region-nc{background-position:0 -2501px}#loco.wrap .region-mo{background-position:0 -2513px}#loco.wrap .region-lk{background-position:0 -2525px}#loco.wrap .region-cd{background-position:0 -2537px}#loco.wrap .region-al{background-position:0 -2549px}#loco.wrap .region-bw{background-position:0 -2561px}#loco.wrap .region-cs{background-position:0 -2573px}#loco.wrap .region-cr{background-position:0 -2585px}#loco.wrap .region-bv{background-position:0 -2597px}#loco.wrap .region-am{background-position:0 -2609px}#loco.wrap .region-az{background-position:0 -2621px}#loco.wrap .region-ba{background-position:0 -2633px}#loco.wrap .region-mn{background-position:0 -2645px}#loco.wrap .region-nu{background-position:0 -2657px}#loco.wrap .region-my{background-position:0 -2669px}#loco.wrap .region-tl{background-position:0 -2681px}#loco.wrap .region-ws{background-position:0 -2693px}#loco.wrap .region-th{background-position:0 -2705px}#loco.wrap .region-nf{background-position:0 -2717px}#loco.wrap .region-ly{background-position:0 -2729px}#loco.wrap .region-ai{background-position:0 -2741px}#loco.wrap .region-br{background-position:0 -2753px}#loco.wrap .region-cv{background-position:0 -2765px}#loco.wrap .region-be{background-position:0 -2777px}#loco.wrap .region-ca{background-position:0 -2789px}#loco.wrap .region-bd{background-position:0 -2801px}#loco.wrap .region-cw{background-position:0 -2813px}#loco.wrap .region-bs{background-position:0 -2830px}#loco.wrap .region-ng{background-position:0 -2842px}#loco.wrap .region-mk{background-position:0 -2854px}#loco.wrap .region-np{background-position:0 -2866px}#loco.wrap .region-va{background-position:0 -2878px}#loco.wrap .region-uz{background-position:0 -2890px}#loco.wrap .region-um{background-position:0 -2902px}#loco.wrap .region-tk{background-position:0 -2914px}#loco.wrap .region-vc{background-position:0 -2926px}#loco.wrap .region-zw{background-position:0 -2938px}#loco.wrap .region-nr{background-position:0 -2950px}#loco.wrap .region-ne{background-position:0 -2962px}#loco.wrap .region-cu{background-position:0 -2974px}#loco.wrap .region-bq{background-position:0 -2986px}#loco.wrap .region-bf{background-position:0 -2998px}#loco.wrap .region-bg{background-position:0 -3010px}#loco.wrap .region-cc{background-position:0 -3022px}#loco.wrap .region-mh{background-position:0 -3034px}#loco.wrap .region-za{background-position:0 -3046px}#loco.wrap .region-uy{background-position:0 -3058px}#loco.wrap .region-wf{background-position:0 -3070px}#loco.wrap .region-vu{background-position:0 -3082px}#loco.wrap .region-tj{background-position:0 -3094px}#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco.wrap .variant-valencia{background-position:0 -3118px}#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco.wrap .x-eu{background-position:0 -3142px}#loco.wrap span.lang code{display:none}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .selector.disabled .handle:after,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .icon,#loco.wrap .has-icon:before{font-family:'loco'}#loco.wrap .has-dashicon:before{font-family:'dashicons';font-size:1.4em}#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before,#loco.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco.wrap .only-icon{text-align:center}#loco.wrap .only-icon:before{text-align:center}#loco.wrap .only-icon span{display:none}#loco.wrap a,#loco.wrap .wp-core-ui .button-link{text-decoration:none}#loco.wrap h3:hover>a.loco-anchor{color:#ccc}#loco.wrap h3:hover>a.loco-anchor:before{content:"\B6"}#loco.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco.wrap h1 ul,#loco.wrap h1 li{margin:0;padding:0}#loco.wrap h1 li{display:inline-block}#loco.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco.wrap h1 li:last-child:after{content:""}#loco.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco.wrap h2 span{color:#999;font-weight:normal}#loco.wrap h2 .loco-meta,#loco.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco.wrap .wp-list-table td{white-space:nowrap}#loco.wrap .wp-list-table td>a,#loco.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"\25bc"}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"\25b2"}#loco.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco.wrap form.loco-filter{display:block;margin-bottom:5px}#loco.wrap form.loco-filter .icon-filter{color:#999}#loco.wrap nav.above-list-table{margin-bottom:1em}#loco.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco.wrap .wp-core-ui button.inverted,#loco.wrap .wp-core-ui button.inverted:hover{background:-moz-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:-webkit-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:linear-gradient(to bottom, #ccc 0%, #e0e0e0 5%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:#bbb}#loco.wrap .wp-core-ui button:active,#loco.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco.wrap .loco-clearable a.clear,#loco.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco.wrap .loco-clearable a.clear:before,#loco.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco.wrap .loco-clearable a.clear:hover:before,#loco.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco.wrap .loco-clearable a.clear span,#loco.wrap .auto-comp-wrap a.clear span{display:none}#loco.wrap .loco-clearable ::-ms-clear,#loco.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco.wrap div.progress{color:#000;background:transparent !important}#loco.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco.wrap div.progress .l{display:block}#loco.wrap td div.progress .t{border:none}#loco.wrap td div.progress .l{display:none}#loco.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco.wrap .loco-danger{color:#d54e21}#loco.wrap .notice,#loco.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco.wrap .notice-generic{border-color:#ddd}#loco.wrap .notice-success>.has-icon,#loco.wrap .notice-success p>strong.has-icon{color:#000}#loco.wrap .notice-warning{border-color:#FFA500}#loco.wrap .notice-error{border-color:#dc3232}#loco.wrap .notice-debug{border-color:#00a0d2}#loco.wrap .notice-danger{border-color:#dc3232}#loco.wrap .notice-locked{border-color:#FFA500}#loco.wrap .notice>.has-icon:before,#loco.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco.wrap .notice>p>a.button.has-icon:before{width:1.5em}#loco.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco.wrap .notice>p>em a{color:inherit}#loco.wrap .notice>p a:hover,#loco.wrap .notice>nav a:hover{text-decoration:underline}#loco.wrap .notice>p a.button,#loco.wrap .notice>nav a.button{text-decoration:inherit}#loco.wrap .notice.has-nav{display:flex;flex-direction:row}#loco.wrap .notice.has-nav p,#loco.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco.wrap .notice.has-nav a{font-size:12px;white-space:nowrap}#loco.wrap .notice.has-nav nav>span{color:#666}#loco.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco.wrap ul.problems li{font-style:italic}#loco.wrap label{position:relative}#loco.wrap label.for-disabled,#loco.wrap label.for-disabled>input{cursor:default !important}#loco.wrap input.regular-text,#loco.wrap textarea.regular-text{width:25em}#loco.wrap .button-link{padding:0 10px 1px}#loco.wrap .button-danger{background:#ba0000;border-color:#990000 #660000 #660000;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #660000, 1px 0 1px #660000, 0 1px 1px #660000, -1px 0 1px #660000}#loco.wrap .button-success{background:#00B500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco.wrap .button-success:hover{background:#3db63d}#loco.wrap form button.loco-loading.button-large{padding-left:0}#loco.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco.wrap ::-webkit-input-placeholder{color:#ccc}#loco.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco.wrap :-ms-input-placeholder{color:#ccc}#loco.wrap .ielt10 .placeheld{color:#ccc}#loco.wrap a.has-raquo:after{content:"\A0\BB"}#loco.wrap a.has-laquo:before{content:"\AB\A0"}#loco.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco.wrap .jshide{display:none !important}#loco.wrap .invis{visibility:hidden}.form-table tr{vertical-align:top}.form-table tr.compact td{padding-top:0}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif) center 20px no-repeat}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#CCC;content:" | ";display:inline;padding-left:0.5em;padding-right:0.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif) 0 0 no-repeat !important}
|
1 |
+
._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.1.5);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.1.5) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.1.5);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}.loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#FFF;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco.wrap .selector li,#loco.wrap .selector .handle,#loco.wrap .selectoradd a,#loco.wrap .selectorsep:before,#loco.wrap .selectorsep span{padding:0.3em 0.75em}#loco.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco.wrap .selectoradd a,#loco.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco.wrap .selector .handle .prefix{padding-right:0.6ex}#loco.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:0.25em;right:0.6em}#loco.wrap .selector .handle:focus:after,#loco.wrap .selector .handle:hover:after{color:#666}#loco.wrap .selector.no-caret .handle{padding-right:0.75em}#loco.wrap .selector.no-caret .handle:after{display:none}#loco.wrap .selector.no-title .handle{padding-left:0.5em;padding-right:0.5em}#loco.wrap .selector.no-title .handle .label{display:none}#loco.wrap .selector.no-title .handle .icon{margin-right:0px}#loco.wrap .selector.dummy .handle{border-color:transparent}#loco.wrap .selector.dummy .handle:after{display:none}#loco.wrap .selectoradd{position:relative}#loco.wrap .selectoradd>*{display:block;float:left;clear:none}#loco.wrap .selectoradd>a.has-icon{width:1.3em}#loco.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco.wrap .selectorsep{display:inline-block}#loco.wrap .selectorsep span{color:#666;height:1.3em}#loco.wrap .selector ul{padding:0}#loco.wrap .selector ul,#loco.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,0.2);border:solid 1px #ccc;overflow:auto}#loco.wrap .selector.up ul{margin-top:0}#loco.wrap .selector.multi li input{display:none}#loco.wrap .selector.multi li.checked{background:#e5e5e5}#loco.wrap .selector li.active{background:#e5e5e5 !important}#loco.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco.wrap .selector li.over .label{color:#fff}#loco.wrap .selector .label{font:inherit;color:inherit}#loco.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco.wrap .selector .icon.no-icon{display:none}#loco.wrap .selector .icon:before{color:#666}#loco.wrap .selector .label{line-height:1}#loco.wrap .selector .icon,#loco.wrap .selector .icon-16{vertical-align:bottom}#loco.wrap .selector .icon,#loco.wrap .selector .lang,#loco.wrap .selector .icon-16{margin-right:5px}#loco.wrap .selector .region,#loco.wrap .selector .lang-ca,#loco.wrap .selector .lang-eo,#loco.wrap .selector .lang-eu,#loco.wrap .selector .variant-wales,#loco.wrap .selector .region-gb.lang-cy,#loco.wrap .selector .variant-scotland,#loco.wrap .selector .region-gb.lang-gd{margin-left:2px;margin-right:7px}#loco.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco.wrap .selector.ticked .active .icon.no-icon:before{content:"\2713"}#loco.wrap .selectoradd a:hover,#loco.wrap .selector a.handle:focus,#loco.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco.wrap .selector.active .handle:after{color:#999}#loco.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#999;padding-right:1em}#loco.wrap .selector.disabled .handle:after{display:none}#loco.wrap .selector.disabled .handle span.icon{color:#999 !important}#loco.wrap .selector li.disabled,#loco.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco.wrap .selector li.disabled *{cursor:text}#loco.wrap .selector li.disabled .icon:before{color:#aaa}#loco.wrap .selector li.disabled .flag,#loco.wrap .selector li.disabled .icon-16{opacity:0.4}#loco.wrap .selector.lefty ul{left:auto;right:0}#loco.wrap .selector.lefty ul .icon,#loco.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco.wrap div.auto-comp-wrap{width:100%}#loco.wrap div.auto-comp-wrap input{display:inline-block}#loco.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif?v=2.1.5) right 2px no-repeat}#loco.wrap div.auto-comp-drop{color:#333333;background:#FFFFFF;border-top:none;position:absolute;width:100%;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,0.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,0.4);box-shadow:0 5px 5px rgba(0,0,0,0.4)}#loco.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#F0F0F0;border-top:solid 1px #FFF;border-bottom:solid 1px #DDD}#loco.wrap div.auto-comp-result:first-child{border-top:solid 1px #DDD}#loco.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco.wrap div.auto-comp-result:hover{background:#A8A8A8;color:#FFFFFF;border-top-color:#A8A8A8;border-bottom-color:#999999}#loco.wrap div.auto-comp-result.selected{background:#666666 !important;color:#FFFFFF;border-top-color:#666666;border-bottom-color:#666666}#loco.wrap div.auto-comp-result .lang,#loco.wrap div.auto-comp-result .region,#loco.wrap div.auto-comp-result .lang-ca,#loco.wrap div.auto-comp-result .lang-eo,#loco.wrap div.auto-comp-result .lang-eu,#loco.wrap div.auto-comp-result .variant-wales,#loco.wrap div.auto-comp-result .region-gb.lang-cy,#loco.wrap div.auto-comp-result .variant-scotland,#loco.wrap div.auto-comp-result .region-gb.lang-gd{margin-right:5px}#loco.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#cc0000;opacity:1}#loco.wrap div.auto-comp-wrap.error input[type="text"]{border-color:#cc0000;color:#cc0000}#loco.wrap div.auto-comp-wrap.error input[type="text"]:focus{-webkit-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);-moz-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5)}#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.1.5);background-repeat:no-repeat;min-height:16px}#loco.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.1.5) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.1.5);background-size:16px}}#loco.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco.wrap ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco.wrap .loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .has-icon:before{display:inline-block;padding-right:0.3em}#loco.wrap a.icon-help{cursor:help}#loco.wrap a.icon-help span{display:none}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon-status.is-translated:before,#loco.wrap .is-translated>header>.icon-status:before{color:#2e892e;content:"✓";text-align:center}#loco.wrap .icon-status.is-untranslated:before,#loco.wrap .is-untranslated>header>.icon-status:before{color:#aaa;content:"×";text-align:center;font-size:1.1em}#loco.wrap .icon-status.is-flagged:before,#loco.wrap .is-flagged>header>.icon-status:before{color:#bd2c00;content:"";text-align:center}#loco.wrap .icon-status.is-translated.is-blank:before,#loco.wrap .icon-status.is-translated.is-inherit:before,#loco.wrap .is-translated.is-blank>header>.icon-status:before,#loco.wrap .is-translated.is-inherit>header>.icon-status:before{content:"🗌"}#loco.wrap .icon-status.is-fuzzy:before,#loco.wrap .is-fuzzy>header>.icon-status:before{color:#666;content:""}#loco.wrap .lang,#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco.wrap .lang-el{background-color:#1D48A3}#loco.wrap .lang-el:before{content:"\0395\03BB"}#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png?v=2.1.5);background-repeat:no-repeat;background-color:transparent}#loco.wrap .region:before,#loco.wrap .lang-ca:before,#loco.wrap .lang-eo:before,#loco.wrap .lang-eu:before,#loco.wrap .variant-wales:before,#loco.wrap .region-gb.lang-cy:before,#loco.wrap .variant-scotland:before,#loco.wrap .region-gb.lang-gd:before{visibility:hidden}#loco.wrap .lang-zh{background-color:#B90000}#loco.wrap .lang-zh.script-hans:before{content:"\4E2D\56FD"}#loco.wrap .lang-zh.script-hant:before{content:"\4E2D\570B"}#loco.wrap .__{background-position:0 0}#loco.wrap .lang-eo{background-position:0 -12px}#loco.wrap .lang-eu{background-position:0 -24px}#loco.wrap .lang-ca{background-position:0 -36px}#loco.wrap .region-tg{background-position:0 -48px}#loco.wrap .region-me{background-position:0 -60px}#loco.wrap .region-la{background-position:0 -73px}#loco.wrap .region-mr{background-position:0 -85px}#loco.wrap .region-ni{background-position:0 -97px}#loco.wrap .region-lv{background-position:0 -109px}#loco.wrap .region-om{background-position:0 -121px}#loco.wrap .region-af{background-position:0 -133px}#loco.wrap .region-cy{background-position:0 -145px}#loco.wrap .region-bj{background-position:0 -157px}#loco.wrap .region-aq{background-position:0 -169px}#loco.wrap .region-cn{background-position:0 -186px}#loco.wrap .region-co{background-position:0 -198px}#loco.wrap .region-cx{background-position:0 -210px}#loco.wrap .region-ag{background-position:0 -222px}#loco.wrap .region-ms{background-position:0 -234px}#loco.wrap .region-md{background-position:0 -246px}#loco.wrap .region-zm{background-position:0 -258px}#loco.wrap .region-vn{background-position:0 -270px}#loco.wrap .region-tf{background-position:0 -282px}#loco.wrap .region-td{background-position:0 -294px}#loco.wrap .region-yt{background-position:0 -306px}#loco.wrap .region-lb{background-position:0 -318px}#loco.wrap .region-mf{background-position:0 -330px}#loco.wrap .region-lu{background-position:0 -347px}#loco.wrap .region-mq{background-position:0 -359px}#loco.wrap .region-cz{background-position:0 -371px}#loco.wrap .region-ae{background-position:0 -383px}#loco.wrap .region-cm{background-position:0 -395px}#loco.wrap .region-bi{background-position:0 -407px}#loco.wrap .region-ar{background-position:0 -419px}#loco.wrap .region-as{background-position:0 -431px}#loco.wrap .region-bh{background-position:0 -443px}#loco.wrap .region-cl{background-position:0 -455px}#loco.wrap .region-ad{background-position:0 -467px}#loco.wrap .region-mp{background-position:0 -479px}#loco.wrap .region-lt{background-position:0 -491px}#loco.wrap .region-mg{background-position:0 -503px}#loco.wrap .region-lc{background-position:0 -515px}#loco.wrap .region-tr{background-position:0 -527px}#loco.wrap .region-ua{background-position:0 -539px}#loco.wrap .region-tv{background-position:0 -551px}#loco.wrap .region-vi{background-position:0 -563px}#loco.wrap .region-mt{background-position:0 -575px}#loco.wrap .region-no{background-position:0 -587px}#loco.wrap .region-mc{background-position:0 -599px}#loco.wrap .region-ch{background-position:0 -611px}#loco.wrap .region-bl{background-position:0 -623px}#loco.wrap .region-aw{background-position:0 -640px}#loco.wrap .region-bz{background-position:0 -652px}#loco.wrap .region-bm{background-position:0 -664px}#loco.wrap .region-ci{background-position:0 -676px}#loco.wrap .region-mu{background-position:0 -688px}#loco.wrap .region-us{background-position:0 -700px}#loco.wrap .region-tw{background-position:0 -712px}#loco.wrap .region-ye{background-position:0 -724px}#loco.wrap .region-mw{background-position:0 -736px}#loco.wrap .region-nl{background-position:0 -748px}#loco.wrap .region-ls{background-position:0 -760px}#loco.wrap .region-bo{background-position:0 -772px}#loco.wrap .region-at{background-position:0 -784px}#loco.wrap .region-ck{background-position:0 -796px}#loco.wrap .region-by{background-position:0 -808px}#loco.wrap .region-au{background-position:0 -820px}#loco.wrap .region-bn{background-position:0 -832px}#loco.wrap .region-ma{background-position:0 -844px}#loco.wrap .region-nz{background-position:0 -856px}#loco.wrap .region-lr{background-position:0 -868px}#loco.wrap .region-mv{background-position:0 -880px}#loco.wrap .region-tc{background-position:0 -892px}#loco.wrap .region-ug{background-position:0 -904px}#loco.wrap .region-tt{background-position:0 -916px}#loco.wrap .region-pl{background-position:0 -928px}#loco.wrap .region-rs{background-position:0 -940px}#loco.wrap .region-in{background-position:0 -952px}#loco.wrap .region-ge{background-position:0 -964px}#loco.wrap .region-gr{background-position:0 -976px}#loco.wrap .region-gs{background-position:0 -988px}#loco.wrap .region-gd{background-position:0 -1000px}#loco.wrap .region-io{background-position:0 -1012px}#loco.wrap .region-hk{background-position:0 -1024px}#loco.wrap .region-kp{background-position:0 -1036px}#loco.wrap .region-kg{background-position:0 -1048px}#loco.wrap .region-pm{background-position:0 -1060px}#loco.wrap .region-sv{background-position:0 -1072px}#loco.wrap .region-re{background-position:0 -1084px}#loco.wrap .region-sa{background-position:0 -1096px}#loco.wrap .region-sc{background-position:0 -1108px}#loco.wrap .region-st{background-position:0 -1120px}#loco.wrap .region-ke{background-position:0 -1132px}#loco.wrap .region-im{background-position:0 -1144px}#loco.wrap .region-kr{background-position:0 -1161px}#loco.wrap .region-gf{background-position:0 -1173px}#loco.wrap .region-dj{background-position:0 -1185px}#loco.wrap .region-gq{background-position:0 -1197px}#loco.wrap .region-gp{background-position:0 -1209px}#loco.wrap .region-dk{background-position:0 -1221px}#loco.wrap .region-gg{background-position:0 -1233px}#loco.wrap .region-il{background-position:0 -1250px}#loco.wrap .region-pn{background-position:0 -1262px}#loco.wrap .region-sb{background-position:0 -1274px}#loco.wrap .region-py{background-position:0 -1286px}#loco.wrap .region-ru{background-position:0 -1298px}#loco.wrap .region-kw{background-position:0 -1310px}#loco.wrap .region-do{background-position:0 -1322px}#loco.wrap .region-gt{background-position:0 -1334px}#loco.wrap .region-gb{background-position:0 -1346px}#loco.wrap .region-gu{background-position:0 -1358px}#loco.wrap .region-je{background-position:0 -1370px}#loco.wrap .region-hm{background-position:0 -1387px}#loco.wrap .region-sg{background-position:0 -1399px}#loco.wrap .region-pk{background-position:0 -1411px}#loco.wrap .region-sr{background-position:0 -1423px}#loco.wrap .region-se{background-position:0 -1435px}#loco.wrap .region-jp{background-position:0 -1447px}#loco.wrap .region-gw{background-position:0 -1459px}#loco.wrap .region-eh{background-position:0 -1471px}#loco.wrap .region-dz{background-position:0 -1483px}#loco.wrap .region-ga{background-position:0 -1495px}#loco.wrap .region-fr{background-position:0 -1507px}#loco.wrap .region-dm{background-position:0 -1519px}#loco.wrap .region-hn{background-position:0 -1531px}#loco.wrap .region-sd{background-position:0 -1543px}#loco.wrap .region-rw{background-position:0 -1555px}#loco.wrap .region-ph{background-position:0 -1567px}#loco.wrap .region-ss{background-position:0 -1579px}#loco.wrap .region-qa{background-position:0 -1596px}#loco.wrap .region-pe{background-position:0 -1608px}#loco.wrap .region-pr{background-position:0 -1620px}#loco.wrap .region-si{background-position:0 -1632px}#loco.wrap .region-ht{background-position:0 -1644px}#loco.wrap .region-es{background-position:0 -1656px}#loco.wrap .region-gl{background-position:0 -1668px}#loco.wrap .region-gm{background-position:0 -1680px}#loco.wrap .region-er{background-position:0 -1692px}#loco.wrap .region-fi{background-position:0 -1704px}#loco.wrap .region-ee{background-position:0 -1716px}#loco.wrap .region-kn{background-position:0 -1728px}#loco.wrap .region-hu{background-position:0 -1740px}#loco.wrap .region-iq{background-position:0 -1752px}#loco.wrap .region-ky{background-position:0 -1764px}#loco.wrap .region-sh{background-position:0 -1776px}#loco.wrap .region-ps{background-position:0 -1788px}#loco.wrap .region-pf{background-position:0 -1800px}#loco.wrap .region-sj{background-position:0 -1812px}#loco.wrap .region-id{background-position:0 -1824px}#loco.wrap .region-is{background-position:0 -1836px}#loco.wrap .region-eg{background-position:0 -1848px}#loco.wrap .region-fk{background-position:0 -1860px}#loco.wrap .region-fj{background-position:0 -1872px}#loco.wrap .region-gn{background-position:0 -1884px}#loco.wrap .region-gy{background-position:0 -1896px}#loco.wrap .region-ir{background-position:0 -1908px}#loco.wrap .region-km{background-position:0 -1920px}#loco.wrap .region-ie{background-position:0 -1932px}#loco.wrap .region-kz{background-position:0 -1944px}#loco.wrap .region-ro{background-position:0 -1956px}#loco.wrap .region-sk{background-position:0 -1968px}#loco.wrap .region-pg{background-position:0 -1980px}#loco.wrap .region-pt{background-position:0 -1992px}#loco.wrap .region-so{background-position:0 -2004px}#loco.wrap .region-sx{background-position:0 -2016px}#loco.wrap .region-hr{background-position:0 -2033px}#loco.wrap .region-ki{background-position:0 -2045px}#loco.wrap .region-jm{background-position:0 -2057px}#loco.wrap .region-ec{background-position:0 -2069px}#loco.wrap .region-et{background-position:0 -2081px}#loco.wrap .region-fo{background-position:0 -2093px}#loco.wrap .region-kh{background-position:0 -2105px}#loco.wrap .region-sy{background-position:0 -2117px}#loco.wrap .region-sn{background-position:0 -2129px}#loco.wrap .region-pw{background-position:0 -2141px}#loco.wrap .region-sl{background-position:0 -2153px}#loco.wrap .region-fm{background-position:0 -2165px}#loco.wrap .region-gi{background-position:0 -2177px}#loco.wrap .region-de{background-position:0 -2189px}#loco.wrap .region-gh{background-position:0 -2201px}#loco.wrap .region-jo{background-position:0 -2213px}#loco.wrap .region-it{background-position:0 -2225px}#loco.wrap .region-pa{background-position:0 -2237px}#loco.wrap .region-sz{background-position:0 -2249px}#loco.wrap .region-sm{background-position:0 -2261px}#loco.wrap .region-tn{background-position:0 -2273px}#loco.wrap .region-ml{background-position:0 -2285px}#loco.wrap .region-cg{background-position:0 -2297px}#loco.wrap .region-ax{background-position:0 -2309px}#loco.wrap .region-ao{background-position:0 -2321px}#loco.wrap .region-bt{background-position:0 -2333px}#loco.wrap .region-an{background-position:0 -2345px}#loco.wrap .region-bb{background-position:0 -2357px}#loco.wrap .region-cf{background-position:0 -2369px}#loco.wrap .region-mm{background-position:0 -2381px}#loco.wrap .region-li{background-position:0 -2393px}#loco.wrap .region-na{background-position:0 -2405px}#loco.wrap .region-mz{background-position:0 -2417px}#loco.wrap .region-to{background-position:0 -2429px}#loco.wrap .region-vg{background-position:0 -2441px}#loco.wrap .region-ve{background-position:0 -2453px}#loco.wrap .region-tz{background-position:0 -2465px}#loco.wrap .region-tm{background-position:0 -2477px}#loco.wrap .region-mx{background-position:0 -2489px}#loco.wrap .region-nc{background-position:0 -2501px}#loco.wrap .region-mo{background-position:0 -2513px}#loco.wrap .region-lk{background-position:0 -2525px}#loco.wrap .region-cd{background-position:0 -2537px}#loco.wrap .region-al{background-position:0 -2549px}#loco.wrap .region-bw{background-position:0 -2561px}#loco.wrap .region-cs{background-position:0 -2573px}#loco.wrap .region-cr{background-position:0 -2585px}#loco.wrap .region-bv{background-position:0 -2597px}#loco.wrap .region-am{background-position:0 -2609px}#loco.wrap .region-az{background-position:0 -2621px}#loco.wrap .region-ba{background-position:0 -2633px}#loco.wrap .region-mn{background-position:0 -2645px}#loco.wrap .region-nu{background-position:0 -2657px}#loco.wrap .region-my{background-position:0 -2669px}#loco.wrap .region-tl{background-position:0 -2681px}#loco.wrap .region-ws{background-position:0 -2693px}#loco.wrap .region-th{background-position:0 -2705px}#loco.wrap .region-nf{background-position:0 -2717px}#loco.wrap .region-ly{background-position:0 -2729px}#loco.wrap .region-ai{background-position:0 -2741px}#loco.wrap .region-br{background-position:0 -2753px}#loco.wrap .region-cv{background-position:0 -2765px}#loco.wrap .region-be{background-position:0 -2777px}#loco.wrap .region-ca{background-position:0 -2789px}#loco.wrap .region-bd{background-position:0 -2801px}#loco.wrap .region-cw{background-position:0 -2813px}#loco.wrap .region-bs{background-position:0 -2830px}#loco.wrap .region-ng{background-position:0 -2842px}#loco.wrap .region-mk{background-position:0 -2854px}#loco.wrap .region-np{background-position:0 -2866px}#loco.wrap .region-va{background-position:0 -2878px}#loco.wrap .region-uz{background-position:0 -2890px}#loco.wrap .region-um{background-position:0 -2902px}#loco.wrap .region-tk{background-position:0 -2914px}#loco.wrap .region-vc{background-position:0 -2926px}#loco.wrap .region-zw{background-position:0 -2938px}#loco.wrap .region-nr{background-position:0 -2950px}#loco.wrap .region-ne{background-position:0 -2962px}#loco.wrap .region-cu{background-position:0 -2974px}#loco.wrap .region-bq{background-position:0 -2986px}#loco.wrap .region-bf{background-position:0 -2998px}#loco.wrap .region-bg{background-position:0 -3010px}#loco.wrap .region-cc{background-position:0 -3022px}#loco.wrap .region-mh{background-position:0 -3034px}#loco.wrap .region-za{background-position:0 -3046px}#loco.wrap .region-uy{background-position:0 -3058px}#loco.wrap .region-wf{background-position:0 -3070px}#loco.wrap .region-vu{background-position:0 -3082px}#loco.wrap .region-tj{background-position:0 -3094px}#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco.wrap .variant-valencia{background-position:0 -3118px}#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco.wrap .x-eu{background-position:0 -3142px}#loco.wrap span.lang code{display:none}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .icon,#loco.wrap .has-icon:before{font-family:'loco'}#loco.wrap .has-dashicon:before{font-family:'dashicons';font-size:1.4em}#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before,#loco.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco.wrap .only-icon{text-align:center}#loco.wrap .only-icon:before{text-align:center}#loco.wrap .only-icon span{display:none}#loco.wrap a,#loco.wrap .wp-core-ui .button-link{text-decoration:none}#loco.wrap h3:hover>a.loco-anchor{color:#ccc}#loco.wrap h3:hover>a.loco-anchor:before{content:"\B6"}#loco.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco.wrap h1 ul,#loco.wrap h1 li{margin:0;padding:0}#loco.wrap h1 li{display:inline-block}#loco.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco.wrap h1 li:last-child:after{content:""}#loco.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco.wrap h2 span{color:#999;font-weight:normal}#loco.wrap h2 .loco-meta,#loco.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco.wrap .wp-list-table td{white-space:nowrap}#loco.wrap .wp-list-table td>a,#loco.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"\25bc"}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"\25b2"}#loco.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco.wrap form.loco-filter{display:block;margin-bottom:5px}#loco.wrap form.loco-filter .icon-filter{color:#999}#loco.wrap nav.above-list-table{margin-bottom:1em}#loco.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco.wrap .wp-core-ui button.inverted,#loco.wrap .wp-core-ui button.inverted:hover{background:-moz-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:-webkit-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:linear-gradient(to bottom, #ccc 0%, #e0e0e0 5%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:#bbb}#loco.wrap .wp-core-ui button:active,#loco.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco.wrap .loco-clearable a.clear,#loco.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco.wrap .loco-clearable a.clear:before,#loco.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco.wrap .loco-clearable a.clear:hover:before,#loco.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco.wrap .loco-clearable a.clear span,#loco.wrap .auto-comp-wrap a.clear span{display:none}#loco.wrap .loco-clearable ::-ms-clear,#loco.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco.wrap div.progress{color:#000;background:transparent !important}#loco.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco.wrap div.progress .l{display:block}#loco.wrap td div.progress .t{border:none}#loco.wrap td div.progress .l{display:none}#loco.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco.wrap .loco-danger{color:#d54e21}#loco.wrap .notice,#loco.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco.wrap .notice-generic{border-color:#ddd}#loco.wrap .notice-success>.has-icon,#loco.wrap .notice-success p>strong.has-icon{color:#000}#loco.wrap .notice-warning{border-color:#FFA500}#loco.wrap .notice-error{border-color:#dc3232}#loco.wrap .notice-debug{border-color:#00a0d2}#loco.wrap .notice-danger{border-color:#dc3232}#loco.wrap .notice-locked{border-color:#FFA500}#loco.wrap .notice>.has-icon:before,#loco.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco.wrap .notice>p>a.button.has-icon:before{width:1.5em}#loco.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco.wrap .notice>p>em a{color:inherit}#loco.wrap .notice>p a:hover,#loco.wrap .notice>nav a:hover{text-decoration:underline}#loco.wrap .notice>p a.button,#loco.wrap .notice>nav a.button{text-decoration:inherit}#loco.wrap .notice.has-nav{display:flex;flex-direction:row}#loco.wrap .notice.has-nav p,#loco.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco.wrap .notice.has-nav a{font-size:12px;white-space:nowrap}#loco.wrap .notice.has-nav nav>span{color:#666}#loco.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco.wrap ul.problems li{font-style:italic}#loco.wrap label{position:relative}#loco.wrap label.for-disabled,#loco.wrap label.for-disabled>input{cursor:default !important}#loco.wrap input.regular-text,#loco.wrap textarea.regular-text{width:25em}#loco.wrap .button-link{padding:0 10px 1px}#loco.wrap .button-danger{background:#ba0000;border-color:#990000 #660000 #660000;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #660000, 1px 0 1px #660000, 0 1px 1px #660000, -1px 0 1px #660000}#loco.wrap .button-success{background:#00B500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco.wrap .button-success:hover{background:#3db63d}#loco.wrap form button.loco-loading.button-large{padding-left:0}#loco.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco.wrap ::-webkit-input-placeholder{color:#ccc}#loco.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco.wrap :-ms-input-placeholder{color:#ccc}#loco.wrap .ielt10 .placeheld{color:#ccc}#loco.wrap a.has-raquo:after{content:"\A0\BB"}#loco.wrap a.has-laquo:before{content:"\AB\A0"}#loco.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif?v=2.1.5) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco.wrap .jshide{display:none !important}#loco.wrap .invis{visibility:hidden}.form-table tr{vertical-align:top}.form-table tr.compact td{padding-top:0}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif?v=2.1.5) center 20px no-repeat}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif?v=2.1.5) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#CCC;content:" | ";display:inline;padding-left:0.5em;padding-right:0.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/editor.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:0.4em 0.6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"\00AC"}#loco-editor div.ta-mirror .eof:after{content:"\00B6"}#loco-editor div.ta-mirror .x20:after{content:"\00B7";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"\27F6"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:0.2em}#loco-editor [dir="RTL"] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir="RTL"] div.ta-mirror span:after{right:0}#loco-editor [dir="RTL"] div.ta-mirror .eol:after{padding-left:0;padding-right:0.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:#808080}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"\25b2"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"\25bc"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-editable>.wg-content[dir="RTL"] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;margin-top:0.2em;color:#000;text-decoration:none;-webkit-border-radius:0.2em 0.2em 0 0;-moz-border-radius:0.2em 0.2em 0 0;-ms-border-radius:0.2em 0.2em 0 0;-o-border-radius:0.2em 0.2em 0 0;border-radius:0.2em 0.2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flag-2:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flag-3:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before,#loco-editor .is-table .wg-cols>div:first-child>div.po-flag-4:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flag-5:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flag-6:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"\e613";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"\e612";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .wg-cell>p.notes,#loco-editor .wg-cell>p.errors{font-size:13px;margin:0;padding:5px 10px;cursor:default !important}#loco-editor .wg-cell>p.notes{color:#333}#loco-editor .wg-cell>p.errors{color:#cc0000}#loco-editor .has-title>header{font-weight:bold;line-height:1.2em;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:4px 6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for="po-list-col-target"]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for="po-list-col-source"]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco.wrap #loco-toolbar{font-size:14px;height:50px}#loco.wrap #loco-toolbar form{display:block;float:left;clear:none;padding:0;margin:0}#loco.wrap #loco-toolbar form.aux{float:right;margin-right:5px}#loco.wrap #loco-toolbar fieldset{display:block;position:relative;float:left;clear:none}#loco.wrap #loco-toolbar button,#loco.wrap #loco-toolbar input[type="text"]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco.wrap #loco-toolbar input[type="text"]{padding:0 10px;font-size:14px;line-height:normal}#loco.wrap #loco-toolbar .invalid input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap #loco-toolbar .loco-clearable{padding:0 20px}#loco.wrap #loco-toolbar .loco-clearable.invalid a.clear:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear{right:25px;line-height:2}#loco.wrap #loco-toolbar .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar .loco-clearable a.clear:hover:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear:active:before{color:#000}#loco.wrap #loco-toolbar button{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar button.has-icon:before{width:16px;padding:0}#loco.wrap #loco-toolbar button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif) 0 0 no-repeat}#loco.wrap #loco-toolbar button.only-icon{width:40px}
|
1 |
+
#loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.1.5);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.1.5) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.1.5);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:0.4em 0.6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"\00AC"}#loco-editor div.ta-mirror .eof:after{content:"\00B6"}#loco-editor div.ta-mirror .x20:after{content:"\00B7";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"\27F6"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:0.2em}#loco-editor [dir="RTL"] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir="RTL"] div.ta-mirror span:after{right:0}#loco-editor [dir="RTL"] div.ta-mirror .eol:after{padding-left:0;padding-right:0.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:#808080}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png?v=2.1.5) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.1.5);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.1.5) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.1.5);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png?v=2.1.5) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png?v=2.1.5) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"\25b2"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"\25bc"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-readonly>.wg-content>textarea[readonly]{cursor:default}#loco-editor .is-editable>.wg-content[dir="RTL"] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;margin-top:0.2em;color:#000;text-decoration:none;-webkit-border-radius:0.2em 0.2em 0 0;-moz-border-radius:0.2em 0.2em 0 0;-ms-border-radius:0.2em 0.2em 0 0;-o-border-radius:0.2em 0.2em 0 0;border-radius:0.2em 0.2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"\e613";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"\e612";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .wg-cell>p.notes,#loco-editor .wg-cell>p.errors{font-size:13px;margin:0;padding:5px 10px;cursor:default !important}#loco-editor .wg-cell>p.notes{color:#333}#loco-editor .wg-cell>p.errors{color:#cc0000}#loco-editor .has-title>header{line-height:normal;padding:6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for="po-list-col-target"]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for="po-list-col-source"]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif?v=2.1.5) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco.wrap #loco-toolbar{font-size:14px;height:50px}#loco.wrap #loco-toolbar form{display:block;float:left;clear:none;padding:0;margin:0}#loco.wrap #loco-toolbar form.aux{float:right;margin-right:5px}#loco.wrap #loco-toolbar fieldset{display:block;position:relative;float:left;clear:none}#loco.wrap #loco-toolbar button,#loco.wrap #loco-toolbar input[type="text"]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco.wrap #loco-toolbar input[type="text"]{padding:0 10px;font-size:14px;line-height:normal}#loco.wrap #loco-toolbar .invalid input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap #loco-toolbar .loco-clearable{padding:0 20px}#loco.wrap #loco-toolbar .loco-clearable.invalid a.clear:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear{right:25px;line-height:2}#loco.wrap #loco-toolbar .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar .loco-clearable a.clear:hover:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear:active:before{color:#000}#loco.wrap #loco-toolbar button{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar button.has-icon:before{width:16px;padding:0}#loco.wrap #loco-toolbar button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif?v=2.1.5) 0 0 no-repeat}#loco.wrap #loco-toolbar button.only-icon{width:40px}
|
pub/css/podiff.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#loco.wrap .revisions-diff{padding:10px;min-height:20px}#loco.wrap table.diff{border-collapse:collapse}#loco.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;padding:2px}#loco.wrap table.diff td>span{color:#aaa}#loco.wrap table.diff td>span:after{content:". "}#loco.wrap table.diff tbody{border-top:1px dashed #ccc}#loco.wrap table.diff tbody:first-child{border-top:none}#loco.wrap .revisions.loading .diff-meta{color:#eee}#loco.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif) center center no-repeat}#loco.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco.wrap .revisions-meta time{color:#72777c}#loco.wrap .revisions-control-frame{margin:10px 0}#loco.wrap .revisions-diff-frame{margin-top:20px}
|
1 |
+
#loco.wrap .revisions-diff{padding:10px;min-height:20px}#loco.wrap table.diff{border-collapse:collapse}#loco.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;padding:2px}#loco.wrap table.diff td>span{color:#aaa}#loco.wrap table.diff td>span:after{content:". "}#loco.wrap table.diff tbody{border-top:1px dashed #ccc}#loco.wrap table.diff tbody:first-child{border-top:none}#loco.wrap .revisions.loading .diff-meta{color:#eee}#loco.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif?v=2.1.5) center center no-repeat}#loco.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco.wrap .revisions-meta time{color:#72777c}#loco.wrap .revisions-control-frame{margin:10px 0}#loco.wrap .revisions-diff-frame{margin-top:20px}
|
pub/css/poview.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#loco.wrap #loco-po{padding-right:0;overflow:auto}#loco.wrap #loco-po.loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif) center center no-repeat}#loco.wrap #loco-po.loco-loading ol.msgcat{display:none}#loco.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;border-left:1px solid #EEE}#loco.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco.wrap ol.msgcat li>.po-comment{color:#3CC200}#loco.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco.wrap ol.msgcat li>.po-flags{color:#77904a}#loco.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco.wrap ol.msgcat li>.po-word{color:#000}#loco.wrap ol.msgcat li>.po-junk{font-style:italic;color:#CCC}#loco.wrap ol.msgcat li>.po-string>span{color:#C931C7}#loco.wrap form.loco-filter{top:0;right:0;position:absolute}#loco.wrap .loco-invalid form.loco-filter input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco.wrap .loco-invalid ol.msgcat li{color:#000}.loco-modal{min-width:90% !important;min-height:100px}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #EEE}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#C931C7}
|
1 |
+
#loco.wrap #loco-po{padding-right:0;overflow:auto}#loco.wrap #loco-po.loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif?v=2.1.5) center center no-repeat}#loco.wrap #loco-po.loco-loading ol.msgcat{display:none}#loco.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;border-left:1px solid #EEE}#loco.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco.wrap ol.msgcat li>.po-comment{color:#3CC200}#loco.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco.wrap ol.msgcat li>.po-flags{color:#77904a}#loco.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco.wrap ol.msgcat li>.po-word{color:#000}#loco.wrap ol.msgcat li>.po-junk{font-style:italic;color:#CCC}#loco.wrap ol.msgcat li>.po-string>span{color:#C931C7}#loco.wrap form.loco-filter{top:0;right:0;position:absolute}#loco.wrap .loco-invalid form.loco-filter input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco.wrap .loco-invalid ol.msgcat li{color:#000}.loco-modal{min-width:90% !important;min-height:100px}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #EEE}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#C931C7}
|
pub/css/skins/blue.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/coffee.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/ectoplasm.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/light.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/midnight.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/ocean.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/css/skins/sunrise.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.1.
|
1 |
+
.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.1.5) 0 0 no-repeat !important}
|
pub/font/loco.eot
CHANGED
Binary file
|
pub/font/loco.svg
CHANGED
@@ -10,9 +10,9 @@
|
|
10 |
<glyph unicode="?" glyph-name="help" horiz-adv-x="878" d="M512 164.571v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 548.571q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
11 |
<glyph unicode="B" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
|
12 |
<glyph unicode="I" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
|
13 |
-
<glyph unicode="s" glyph-name="plural" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" />
|
14 |
<glyph unicode="¶" glyph-name="pilcrow" horiz-adv-x="731" d="M13.714 602.286q0 94.857 50.286 163.429 50.286 67.429 119.429 90.857 63.429 21.143 238.286 21.143h273.714q14.286 0 24.571-10.286t10.286-24.571v-41.714q0-16.571-10.571-34.857t-24.286-18.286q-28.571 0-30.857-0.571-14.857-3.429-18.286-17.714-1.714-6.286-1.714-36.571v-658.286q0-14.286-10.286-24.571t-24.571-10.286h-61.714q-14.286 0-24.571 10.286t-10.286 24.571v696h-81.714v-696q0-14.286-10-24.571t-24.857-10.286h-61.714q-14.857 0-24.857 10.286t-10 24.571v283.429q-84 6.857-140 33.714-72 33.143-109.714 102.286-36.571 66.857-36.571 148z" />
|
15 |
<glyph unicode="×" glyph-name="remove" horiz-adv-x="805" d="M741.714 195.428q0-22.857-16-38.857l-77.714-77.714q-16-16-38.857-16t-38.857 16l-168 168-168-168q-16-16-38.857-16t-38.857 16l-77.714 77.714q-16 16-16 38.857t16 38.857l168 168-168 168q-16 16-16 38.857t16 38.857l77.714 77.714q16 16 38.857 16t38.857-16l168-168 168 168q16 16 38.857 16t38.857-16l77.714-77.714q16-16 16-38.857t-16-38.857l-168-168 168-168q16-16 16-38.857z" />
|
|
|
16 |
<glyph unicode="…" glyph-name="hellip" horiz-adv-x="805" d="M0 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM292.571 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM585.143 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857z" />
|
17 |
<glyph unicode="⁞" glyph-name="vellip" horiz-adv-x="219" d="M0 128v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM0 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM0 713.143v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857z" />
|
18 |
<glyph unicode="ℹ" glyph-name="info" horiz-adv-x="878" d="M585.143 164.571v91.429q0 8-5.143 13.143t-13.143 5.143h-54.857v292.571q0 8-5.143 13.143t-13.143 5.143h-182.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h54.857v-182.857h-54.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h256q8 0 13.143 5.143t5.143 13.143zM512 676.571v91.429q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
@@ -28,7 +28,7 @@
|
|
28 |
<glyph unicode="⚪" glyph-name="radio-unchecked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" />
|
29 |
<glyph unicode="⚫" glyph-name="radio-checked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM320 448c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192z" />
|
30 |
<glyph unicode="⚬" glyph-name="circle-white" horiz-adv-x="878" d="M438.857 749.714q-84.571 0-156-41.714t-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156-41.714 156-113.143 113.143-156 41.714zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
31 |
-
<glyph unicode="✓" glyph-name="ok" d="
|
32 |
<glyph unicode="✔" glyph-name="ok-sign" horiz-adv-x="878" d="M733.714 531.428q0 16-10.286 26.286l-52 51.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-233.143-232.571-129.143 129.143q-10.857 10.857-25.714 10.857t-25.714-10.857l-52-51.429q-10.286-10.286-10.286-26.286 0-15.429 10.286-25.714l206.857-206.857q10.857-10.857 25.714-10.857 15.429 0 26.286 10.857l310.286 310.286q10.286 10.286 10.286 25.714zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
33 |
<glyph unicode="➔" glyph-name="next" d="M0 365.714v73.143q0 30.286 18.571 51.714t48.286 21.429h402.286l-167.429 168q-21.714 20.571-21.714 51.429t21.714 51.429l42.857 42.857q21.714 21.714 51.429 21.714 30.286 0 52-21.714l372-372q21.143-20 21.143-51.429 0-30.857-21.143-52l-372-372q-22.286-21.143-52-21.143-29.143 0-51.429 21.143l-42.857 42.857q-21.714 21.714-21.714 52t21.714 52l167.429 167.429h-402.286q-29.714 0-48.286 21.429t-18.571 51.714z" />
|
34 |
<glyph unicode="⬅" glyph-name="back" d="M36.571 402.286q0 29.714 21.143 52l372 371.429q21.714 21.714 52 21.714 29.714 0 51.429-21.714l42.857-42.286q21.714-21.714 21.714-52t-21.714-52l-167.429-167.429h402.286q29.714 0 48.286-21.429t18.571-51.714v-73.143q0-30.286-18.571-51.714t-48.286-21.429h-402.286l167.429-168q21.714-20.571 21.714-51.429t-21.714-51.429l-42.857-43.429q-21.143-21.143-51.429-21.143-29.714 0-52 21.143l-372 372.571q-21.143 21.143-21.143 51.429z" />
|
@@ -101,4 +101,6 @@
|
|
101 |
<glyph unicode="" glyph-name="restore" d="M0 548.571v256q0 24 22.857 33.714 22.286 9.714 39.429-8l74.286-73.714q61.143 57.714 139.714 89.429t162.571 31.714q89.143 0 170.286-34.857t140-93.714 93.714-140 34.857-170.286-34.857-170.286-93.714-140-140-93.714-170.286-34.857q-98.286 0-186.857 41.429t-150.857 116.857q-4 5.714-3.714 12.857t4.857 11.714l78.286 78.857q5.714 5.143 14.286 5.143 9.143-1.143 13.143-6.857 41.714-54.286 102.286-84t128.571-29.714q59.429 0 113.429 23.143t93.429 62.571 62.571 93.429 23.143 113.429-23.143 113.429-62.571 93.429-93.429 62.571-113.429 23.143q-56 0-107.429-20.286t-91.429-58l78.286-78.857q17.714-17.143 8-39.429-9.714-22.857-33.714-22.857h-256q-14.857 0-25.714 10.857t-10.857 25.714zM292.571 347.428v36.571q0 8 5.143 13.143t13.143 5.143h128v201.143q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143v-256q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143z" />
|
102 |
<glyph unicode="" glyph-name="translate" d="M628.217 728.84h-81.381q-24.792 0-48.236-10.509t-37.457-27.217l-48.505 145.516h-154.678l-128.808-377.263h91.082l39.882 107.789h152.522v-215.579h-269.474q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798h377.263q44.194 0 75.992-31.798t31.798-75.992v-107.789zM386.23 621.051h-108.867l53.895 157.912zM574.322 674.945h377.263q44.194 0 75.992-31.798t31.798-75.992v-377.263q0-44.194-31.798-75.992t-75.992-31.798h-377.263q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798zM965.059 405.472v58.206h-170.846v116.952h-62.518v-116.952h-170.846v-58.206h68.985q4.851-35.571 22.636-73.297t46.349-67.907q-34.493-14.013-70.872-23.714t-53.625-9.701l2.695-14.013q2.695-14.013 5.659-33.415t2.425-31.259q33.415 0 82.998 17.516t93.777 44.463q44.733-26.947 95.394-44.463t84.615-17.516q-0.539 7.545 0.539 18.055t2.695 20.749 3.234 19.133 3.234 14.821l1.078 5.928q-17.785 0-55.512 9.971t-72.758 23.983q27.486 30.181 45.002 67.907t22.366 72.758h73.297zM759.72 301.455q-40.96 37.726-54.434 104.017h112.64q-14.013-66.829-53.895-104.017l-2.156-1.617q-1.617 1.078-2.156 1.617z" />
|
103 |
<glyph unicode="🐦" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714q-38.286-56-92.571-95.429 0.571-8 0.571-24 0-74.286-21.714-148.286t-66-142-105.429-120.286-147.429-83.429-184.571-31.143q-154.857 0-283.429 82.857 20-2.286 44.571-2.286 128.571 0 229.143 78.857-60 1.143-107.429 36.857t-65.143 91.143q18.857-2.857 34.857-2.857 24.571 0 48.571 6.286-64 13.143-106 63.714t-42 117.429v2.286q38.857-21.714 83.429-23.429-37.714 25.143-60 65.714t-22.286 88q0 50.286 25.143 93.143 69.143-85.143 168.286-136.286t212.286-56.857q-4.571 21.714-4.571 42.286 0 76.571 54 130.571t130.571 54q80 0 134.857-58.286 62.286 12 117.143 44.571-21.143-65.714-81.143-101.714 53.143 5.714 106.286 28.571z" />
|
|
|
|
|
104 |
</font></defs></svg>
|
10 |
<glyph unicode="?" glyph-name="help" horiz-adv-x="878" d="M512 164.571v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 548.571q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
11 |
<glyph unicode="B" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
|
12 |
<glyph unicode="I" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
|
|
|
13 |
<glyph unicode="¶" glyph-name="pilcrow" horiz-adv-x="731" d="M13.714 602.286q0 94.857 50.286 163.429 50.286 67.429 119.429 90.857 63.429 21.143 238.286 21.143h273.714q14.286 0 24.571-10.286t10.286-24.571v-41.714q0-16.571-10.571-34.857t-24.286-18.286q-28.571 0-30.857-0.571-14.857-3.429-18.286-17.714-1.714-6.286-1.714-36.571v-658.286q0-14.286-10.286-24.571t-24.571-10.286h-61.714q-14.286 0-24.571 10.286t-10.286 24.571v696h-81.714v-696q0-14.286-10-24.571t-24.857-10.286h-61.714q-14.857 0-24.857 10.286t-10 24.571v283.429q-84 6.857-140 33.714-72 33.143-109.714 102.286-36.571 66.857-36.571 148z" />
|
14 |
<glyph unicode="×" glyph-name="remove" horiz-adv-x="805" d="M741.714 195.428q0-22.857-16-38.857l-77.714-77.714q-16-16-38.857-16t-38.857 16l-168 168-168-168q-16-16-38.857-16t-38.857 16l-77.714 77.714q-16 16-16 38.857t16 38.857l168 168-168 168q-16 16-16 38.857t16 38.857l77.714 77.714q16 16 38.857 16t38.857-16l168-168 168 168q16 16 38.857 16t38.857-16l77.714-77.714q16-16 16-38.857t-16-38.857l-168-168 168-168q16-16 16-38.857z" />
|
15 |
+
<glyph unicode="᛬" glyph-name="plural" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" />
|
16 |
<glyph unicode="…" glyph-name="hellip" horiz-adv-x="805" d="M0 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM292.571 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM585.143 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857z" />
|
17 |
<glyph unicode="⁞" glyph-name="vellip" horiz-adv-x="219" d="M0 128v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM0 420.571v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857zM0 713.143v109.714q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857z" />
|
18 |
<glyph unicode="ℹ" glyph-name="info" horiz-adv-x="878" d="M585.143 164.571v91.429q0 8-5.143 13.143t-13.143 5.143h-54.857v292.571q0 8-5.143 13.143t-13.143 5.143h-182.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h54.857v-182.857h-54.857q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h256q8 0 13.143 5.143t5.143 13.143zM512 676.571v91.429q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-91.429q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
28 |
<glyph unicode="⚪" glyph-name="radio-unchecked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" />
|
29 |
<glyph unicode="⚫" glyph-name="radio-checked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM320 448c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192z" />
|
30 |
<glyph unicode="⚬" glyph-name="circle-white" horiz-adv-x="878" d="M438.857 749.714q-84.571 0-156-41.714t-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156-41.714 156-113.143 113.143-156 41.714zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
31 |
+
<glyph unicode="✓" glyph-name="ok" d="M864 832l-480-480-224 224-160-160 384-384 640 640z" />
|
32 |
<glyph unicode="✔" glyph-name="ok-sign" horiz-adv-x="878" d="M733.714 531.428q0 16-10.286 26.286l-52 51.429q-10.857 10.857-25.714 10.857t-25.714-10.857l-233.143-232.571-129.143 129.143q-10.857 10.857-25.714 10.857t-25.714-10.857l-52-51.429q-10.286-10.286-10.286-26.286 0-15.429 10.286-25.714l206.857-206.857q10.857-10.857 25.714-10.857 15.429 0 26.286 10.857l310.286 310.286q10.286 10.286 10.286 25.714zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
|
33 |
<glyph unicode="➔" glyph-name="next" d="M0 365.714v73.143q0 30.286 18.571 51.714t48.286 21.429h402.286l-167.429 168q-21.714 20.571-21.714 51.429t21.714 51.429l42.857 42.857q21.714 21.714 51.429 21.714 30.286 0 52-21.714l372-372q21.143-20 21.143-51.429 0-30.857-21.143-52l-372-372q-22.286-21.143-52-21.143-29.143 0-51.429 21.143l-42.857 42.857q-21.714 21.714-21.714 52t21.714 52l167.429 167.429h-402.286q-29.714 0-48.286 21.429t-18.571 51.714z" />
|
34 |
<glyph unicode="⬅" glyph-name="back" d="M36.571 402.286q0 29.714 21.143 52l372 371.429q21.714 21.714 52 21.714 29.714 0 51.429-21.714l42.857-42.286q21.714-21.714 21.714-52t-21.714-52l-167.429-167.429h402.286q29.714 0 48.286-21.429t18.571-51.714v-73.143q0-30.286-18.571-51.714t-48.286-21.429h-402.286l167.429-168q21.714-20.571 21.714-51.429t-21.714-51.429l-42.857-43.429q-21.143-21.143-51.429-21.143-29.714 0-52 21.143l-372 372.571q-21.143 21.143-21.143 51.429z" />
|
101 |
<glyph unicode="" glyph-name="restore" d="M0 548.571v256q0 24 22.857 33.714 22.286 9.714 39.429-8l74.286-73.714q61.143 57.714 139.714 89.429t162.571 31.714q89.143 0 170.286-34.857t140-93.714 93.714-140 34.857-170.286-34.857-170.286-93.714-140-140-93.714-170.286-34.857q-98.286 0-186.857 41.429t-150.857 116.857q-4 5.714-3.714 12.857t4.857 11.714l78.286 78.857q5.714 5.143 14.286 5.143 9.143-1.143 13.143-6.857 41.714-54.286 102.286-84t128.571-29.714q59.429 0 113.429 23.143t93.429 62.571 62.571 93.429 23.143 113.429-23.143 113.429-62.571 93.429-93.429 62.571-113.429 23.143q-56 0-107.429-20.286t-91.429-58l78.286-78.857q17.714-17.143 8-39.429-9.714-22.857-33.714-22.857h-256q-14.857 0-25.714 10.857t-10.857 25.714zM292.571 347.428v36.571q0 8 5.143 13.143t13.143 5.143h128v201.143q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143v-256q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143z" />
|
102 |
<glyph unicode="" glyph-name="translate" d="M628.217 728.84h-81.381q-24.792 0-48.236-10.509t-37.457-27.217l-48.505 145.516h-154.678l-128.808-377.263h91.082l39.882 107.789h152.522v-215.579h-269.474q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798h377.263q44.194 0 75.992-31.798t31.798-75.992v-107.789zM386.23 621.051h-108.867l53.895 157.912zM574.322 674.945h377.263q44.194 0 75.992-31.798t31.798-75.992v-377.263q0-44.194-31.798-75.992t-75.992-31.798h-377.263q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798zM965.059 405.472v58.206h-170.846v116.952h-62.518v-116.952h-170.846v-58.206h68.985q4.851-35.571 22.636-73.297t46.349-67.907q-34.493-14.013-70.872-23.714t-53.625-9.701l2.695-14.013q2.695-14.013 5.659-33.415t2.425-31.259q33.415 0 82.998 17.516t93.777 44.463q44.733-26.947 95.394-44.463t84.615-17.516q-0.539 7.545 0.539 18.055t2.695 20.749 3.234 19.133 3.234 14.821l1.078 5.928q-17.785 0-55.512 9.971t-72.758 23.983q27.486 30.181 45.002 67.907t22.366 72.758h73.297zM759.72 301.455q-40.96 37.726-54.434 104.017h112.64q-14.013-66.829-53.895-104.017l-2.156-1.617q-1.617 1.078-2.156 1.617z" />
|
103 |
<glyph unicode="🐦" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714q-38.286-56-92.571-95.429 0.571-8 0.571-24 0-74.286-21.714-148.286t-66-142-105.429-120.286-147.429-83.429-184.571-31.143q-154.857 0-283.429 82.857 20-2.286 44.571-2.286 128.571 0 229.143 78.857-60 1.143-107.429 36.857t-65.143 91.143q18.857-2.857 34.857-2.857 24.571 0 48.571 6.286-64 13.143-106 63.714t-42 117.429v2.286q38.857-21.714 83.429-23.429-37.714 25.143-60 65.714t-22.286 88q0 50.286 25.143 93.143 69.143-85.143 168.286-136.286t212.286-56.857q-4.571 21.714-4.571 42.286 0 76.571 54 130.571t130.571 54q80 0 134.857-58.286 62.286 12 117.143 44.571-21.143-65.714-81.143-101.714 53.143 5.714 106.286 28.571z" />
|
104 |
+
<glyph unicode="🗌" glyph-name="ok-empty" d="M397.434 42.304l-397.868 391.6 197.378 194.27 200.49-197.332 429.62 422.852 197.378-194.27-626.998-617.12zM107.912 433.904l289.524-284.962 518.656 510.482-89.036 87.632-429.62-422.852-200.49 197.334-89.034-87.634z" />
|
105 |
+
<glyph unicode="🛡" glyph-name="privacy" horiz-adv-x="731" d="M0 402.286v438.857q0 14.857 10.857 25.714t25.714 10.857h658.286q14.857 0 25.714-10.857t10.857-25.714v-438.857q0-49.143-19.143-97.429t-47.429-85.714-67.429-72.857-72.286-58.857-69.143-44.286-51.143-28.286-24.286-11.429q-6.857-3.429-14.857-3.429t-14.857 3.429q-9.143 4-24.286 11.429t-51.143 28.286-69.143 44.286-72.286 58.857-67.429 72.857-47.429 85.714-19.143 97.429zM365.714 118.286q68 36 121.714 78.286 134.286 105.143 134.286 205.714v365.714h-256v-649.714z" />
|
106 |
</font></defs></svg>
|
pub/font/loco.ttf
CHANGED
Binary file
|
pub/font/loco.woff
CHANGED
Binary file
|
pub/js/min/admin.js
CHANGED
@@ -1,227 +1,230 @@
|
|
1 |
-
(function(
|
2 |
-
""}b=
|
3 |
-
b!=b?b=0:0!=b&&Infinity!=b&&-Infinity!=b&&(b=(0<b||-1)*Math.floor(Math.abs(b))));if(b>=a)return-1;for(b=0<=b?b:Math.max(a-Math.abs(b),0);b<a;b++)if(b in c&&c[b]===d)return b;return-1});return d}({},
|
4 |
-
|
5 |
-
if(a){var
|
6 |
-
a||"",b||"",c||"",g||0])};d.page=function(a,b){var c={page:a||location.pathname+location.hash,title:b||
|
7 |
-
1;
|
8 |
-
b.location=location.protocol+"//"+location.hostname+b.page;c&&
|
9 |
-
5);d.init=function(a){!b&&a&&(c=a.host||(a.host=c),b=a.legacy?
|
10 |
-
d.page=function(){b&&b.page.apply(b,arguments);return d};d.event=function(){b&&b.event.apply(b,arguments);return d};d.reset=function(){b&&b.reset&&b.reset();return d};return d}({},
|
11 |
-
var
|
12 |
-
b.label+'" class="butt '+(b.css||"")+'" />');
|
13 |
-
[]),!0}catch(l){return a+="\n\n--\n"+(l.message||l),b.call(
|
14 |
-
a)+"px"}function a(a){a?(l.show(),k.addClass("has-title")):(l.hide(),k.removeClass("has-title"))}var
|
15 |
-
|
16 |
-
k.css("width",a+"px")}return d};d.autoSize=function(){var a=G(),
|
17 |
-
return d};var H=d.close=function(a){if(r){var
|
18 |
-
function(
|
19 |
-
function(a){G().off("overlayClosed",a);return d};return d}({},
|
20 |
-
h(
|
21 |
-
this.options.gravity.call(this.$element[0]):this.options.gravity,l;switch(g.charAt(0)){case "n":l={top:a.top+a.height+this.options.offset,left:a.left+a.width/2-c/2};break;case "s":l={top:a.top-d-this.options.offset,left:a.left+a.width/2-c/2};break;case "e":l={top:a.top+a.height/2-d/2,left:a.left-c-this.options.offset};break;case "w":l={top:a.top+a.height/2-d/2,left:a.left+a.width+this.options.offset}}2==g.length&&("w"==g.charAt(1)?l.left=a.left+a.width/2-15:l.left=a.left+
|
22 |
-
g);b.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+g.charAt(0);this.options.className&&b.addClass("function"==typeof this.options.className?this.options.className.call(this.$element[0]):this.options.className);b.addClass("in")}},hide:function(){this.tip().remove()},fixTitle:function(){var a=this.$element,b=a.attr("title")||"";(b||"string"!==typeof a.attr("original-title"))&&a.attr("original-title",b).removeAttr("title")},getTitle:function(){var a,
|
23 |
-
"string"==typeof c.title?a=b.attr("title"==c.title?"original-title":c.title):"function"==typeof c.title&&(a=c.title.call(b[0]));return(a=(""+a).replace(/(^\s*|\s*$)/,""))||c.fallback},setTitle:function(a){var b=this.$element;b.attr("default-title")||b.attr("default-title",this.getTitle());null==a&&(a=b.attr("default-title")||this.getTitle());b.attr("original-title",a);if(this.$tip)this.$tip.find(".tipsy-inner")[this.options.html?"html":"text"](a)},tip:function(){this.$tip||
|
24 |
-
this.$tip.data("tipsy-pointee",this.$element[0]));return this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.hide();this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}};h.fn.tipsy=function(a){function b(g){var c=h.data(g,"tipsy");c||(c=new
|
25 |
-
(g.fixTitle(),setTimeout(function(){"in"==g.hoverState&&g.show()},l))}function d(){var g=b(this),c=a.delayOut;g.hoverState="out";0==c?g.hide():(g.tip().removeClass("in"),setTimeout(function(){"out"==g.hoverState&&g.hide()},c))}a=h.extend({},h.fn.tipsy.defaults,a);a.live||this.each(function(){b(this)});if("manual"!=a.trigger){var g=a.live?"live":"bind",l="hover"==a.trigger?"mouseleave":"blur";this[g]("hover"==
|
26 |
-
delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:0.8,title:"title",trigger:"hover",anchor:null};h.fn.tipsy.elementOptions=function(a,b){return h.metadata?h.extend({},b,h(a).metadata()):b};h.fn.tipsy.autoNS=function(){return h(this).offset().top>h(
|
27 |
-
b[1]:!1,g=h(
|
28 |
-
(g&&clearTimeout(g),a(b),l?g=setTimeout(
|
29 |
-
b)return k;g&&clearTimeout(g);d.value=a(b);c()},el:function(){return d},blur:function(a){return h(d).on("blur",a)}}};return d}({},
|
30 |
-
a=a.split("?");a[0]=a[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return a.join("?")};d.errorData=function(a,b,d){var k,g;d=a.responseText;b=a.status;if(!d&&0===b)return null;try{k=h.parseJSON(d)||{}}catch(l){k={},g=c[a.status]||l.message||l}k.error=g||k.error||k.statusText||a.statusText||c[b]||"Unknown Error";return k};d.ajax=function(a,b,
|
31 |
-
g&&
|
32 |
-
a.status,
|
33 |
-
|
34 |
-
a.preventDefault();return!1}function b(){
|
35 |
-
b){b=h(b);for(var
|
36 |
-
|
37 |
-
|
38 |
-
"Unknown error"),
|
39 |
-
|
40 |
-
|
41 |
-
"
|
42 |
-
"\
|
43 |
-
"\
|
44 |
-
"\
|
45 |
-
"\
|
46 |
-
"\
|
47 |
-
"\
|
48 |
-
"\
|
49 |
-
"\
|
50 |
-
"\
|
51 |
-
"\
|
52 |
-
"\
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
k
|
67 |
-
|
68 |
-
|
|
|
69 |
k.hoverItem=function(a,b){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=a;-1!==a&&(b=b||this.getElement(a),b.addClass("over"))};k.hoverNext=function(a){var b=this.options.length;if(b){b-=1;if(-1==this.hover)a=0<a?0:b;else{a=this.hover+a;if(0>a){this.close();return}a>b&&(a=0)}this.hoverItem(a)}};k.enableChange=function(a){this.eventName=a;this.eventData=[].slice.call(arguments,1);return this};k.enableConfirm=function(a){this.confirm=a;return this};k.clearOptions=function(){this.index=
|
70 |
-
{};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;return this};k.destroy=function(){this.clearOptions();this.hidden.remove()};k.addOption=function(a,c,
|
71 |
-
{value:a,text:c,lang:
|
72 |
-
k.selectValue=function(a,b){return this.selectIndex(this.index[a],b)};k.hasValue=function(a){return null!=this.index[a]};k.selectIndex=function(a,b){var c=this.options[a];if(c){var
|
73 |
-
q():q();
|
74 |
-
return this};k.beforeChange=function(a){var b=h.Event("locoBeforeSelect");this.wrapper.trigger(b,[a]);return!b.isDefaultPrevented()};k.renameOption=function(a,b){var c=this.index[a],
|
75 |
-
|
76 |
-
"icon icon-checkbox";this.constructor.call(this,b);this.wrapper.addClass("multi");for(var
|
77 |
-
f=
|
78 |
-
(k=!0),a[g]=!1;if(
|
79 |
-
a&&
|
80 |
-
2)},
|
81 |
-
st:a.textContent},r[c]||d.push(a),r[c]=a,
|
82 |
-
|
83 |
-
q}var
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
b.
|
88 |
-
if(!d.hasClass("auto-comp")){var g=d.attr("placeholder");if(g)return d.focus(b).blur(c),c(),{kill:function(){b();d.off("focus",b).off("blur",c)}}}}var b=d.enable=function(a){function b(a,
|
89 |
-
c
|
90 |
-
return this});var k="";a.find('[type="submit"]').click(function(a){a&&a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});a.submit(function(b){if(b&&
|
91 |
-
b.preventDefault();b.stopPropagation();return!1})};d.revealify=function(a){a=a.closest("form");a.find("div[data-reveal-if]").each(function(b,c){function d(a){var b;b=
|
92 |
-
if(l){var
|
93 |
-
return!1})}};d.placeholders=function(a){var b,c=[];a.find("input[placeholder]").each(function(a,d){"password"!==d.type&&(b=
|
94 |
-
b){a.fadeTo(b,0,function(){a.slideUp(b,function(){a.remove();h(
|
95 |
-
"html.js");a=h('<div class="notice notice-'+a+'" loco-notice inline></div>').prependTo(h("#loco-notices"));var
|
96 |
-
d)}})}var k=[],g=Date.now||function(){return(new Date).getTime()},l,
|
97 |
-
e;)(b=c[a])&&b();k=[];return d};d.create=a;d.raise=function(a){(d[a.type]||d.error).call(d,a.message)};d.convert=c;d.init=function(a){l=a._("Error");
|
98 |
-
a.replace(/ +in +\S+ on line \d+/,""),a=a.replace(/^[()! ]+Fatal error:\s*/,"")):t._("Server returned invalid data")}function c(a,c,d,g){function r(c,g,r){if("abort"!==g){var k=
|
99 |
-
output:
|
100 |
-
|
101 |
-
function(b,d,
|
102 |
-
orkh:1,ital:1,lydi:1,ar:1,ary:1,ckb:1,dv:1,fa:1,he:1,nqo:1,ps:1,ur:1,yi:1});
|
103 |
-
RegExp.$2)c.region=a.toUpperCase();if(a=RegExp.$3)c.variant=a.toLowerCase();return c};
|
104 |
-
|
105 |
-
var d=new
|
106 |
-
a+b;return c};
|
107 |
-
function(){return"[Undefined]"};a.prototype._validate=function(a){var d,
|
108 |
-
|
109 |
-
|
110 |
-
"touchend";d.ok=function(a){null==c&&(c="function"===typeof h.body.addEventListener);c&&a&&a(d);return c};d.ms=function(){return a};d.dragger=function(a,c){function d(b){a.addEventListener(b,
|
111 |
-
r(
|
112 |
-
G[a]-b.clientX;
|
113 |
-
1:-1,
|
114 |
-
return d}({},
|
115 |
-
b);h(
|
116 |
-
(clearTimeout(
|
117 |
-
|
118 |
-
function b(a){a.off("change");a.off("focus");a.off("blur")}function c(a){b(a);a.setReadOnly(!0);a.setHighlightGutterLine(!1);a.setHighlightActiveLine(!1)}function a(a,b){function c(){this.HighlightRules=d}var d=
|
119 |
-
{token:"constant.language",regex:"<!\\[CDATA\\["},{token:"constant.language",regex:"\\]\\]>"},{token:"locked",regex:"<(?:xliff:)?(?:g|ph)[^>]*>[^<]*</(?:xliff:)?(?:g|ph)>"},{token:"locked",regex:"<(?:xliff:)?(bx|ex|x)[^/>]*/>"},{token:"constant.language",regex:"</?[:a-z]+[^>]*>"}];
|
120 |
-
case "java":return"%(?:\\d+\\$)?[-+,(0# ]*\\d*(?:\\.\\d+)?(?:[bBhHsScCdoxXeEfgGaA%n]|[tT][A-DFH-IL-NQ-TY-Za-ehj-mpr-sz])";case "php":return"%(?:\\d+\\$)?(?:'.|[-+0 ])*\\d*(?:\\.\\d+)?[suxXbcdeEfFgGo%]";case "auto":return"%(?:\\d+\\$)?(?:[-+0]?\\d*(\\.\\d+)?[duxoefgaDUXOEFGA]|[@scSC%])";
|
121 |
-
function(b){if(E){if(!b)throw Error("Failed to load code editor");
|
122 |
-
|
123 |
-
|
124 |
-
"
|
125 |
-
|
126 |
-
block_formats:"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",forced_root_block:"p",relative_urls:!1,convert_urls:!1,remove_script_host:!1,document_base_url:"",allow_script_urls:!1,formats:{alignleft:{classes:"alignleft"},
|
127 |
-
entities:"38,amp,60,lt,62,gt,160,nbsp",entity_encoding:"named",keep_styles:!1,init_instance_callback:g})});return{val:function(a){null==l?h(q).html(a):l.getContent()!==a&&l.setContent(a);return this},kill:function(){l&&(
|
128 |
-
return this},invs:function(a){a=a||!1;
|
129 |
-
w&&(
|
130 |
-
function(){this.
|
131 |
-
this.p;a
|
132 |
-
return this};TextAreaPrototype.
|
133 |
-
this.
|
134 |
-
|
135 |
-
null
|
136 |
-
b){return f*(
|
137 |
-
else if(!(d=this.ds))throw Error("No datasource");l.css.push("wg-thead");
|
138 |
-
g.restyle();this.sc?this._re_sort(
|
139 |
-
(a=p.cloneNode(!0),b=new
|
140 |
-
|
141 |
-
h[b],a+=
|
142 |
-
c){null==c&&(c=this.r||0);var d=this.idxs,g=d.length,
|
143 |
-
function(a,b){return this.select(this.idxs[a])};
|
144 |
-
|
145 |
-
function(a){var b=-1,c=this.sc,d=c.active;for(this.sc=c=new l(this);++b<a;)c.add(b);d&&(b=this.head.indexOf(d.id),-1===b&&(b=Math.min(d.idx,a-1)),this.sort(b,d.desc));return this};
|
146 |
-
|
147 |
-
c=[],d=this._,g=this.d,
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
d);return!0}}}function b(b,c){function d(){h(
|
152 |
-
h(b).on("editFocus",function(){c.trigger("wgFocus",[
|
153 |
-
|
154 |
-
this.
|
155 |
-
|
156 |
-
null),a.removeChild(d));this.body=a.appendChild(g.el("","wg-body"));this._h=null;return this};
|
157 |
-
Math.min(1,a[b]));this.redraw();return this};
|
158 |
-
(this._css=a,this.el.className=a);return this};
|
159 |
-
|
160 |
-
|
161 |
-
if(a)return a.editable()?a:null;var b=this.cells,c=b.length,d=this.navigated();if(null!=d)return b[d].editable();for(;++d<c;){for(d=0;d<c;c++);if(a=b[d].editable())return a}};
|
162 |
-
return this};
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
this.
|
167 |
-
|
168 |
-
a&&(a.saved()||b.push("po-unsaved"),a.fuzzy()?b.push("po-fuzzy"):a.flagged()&&
|
169 |
-
c="en");a.locale(c);return b}function c(){this.dirty=0}var a="poUpdate",
|
170 |
-
["editable","t"]);
|
171 |
-
a);
|
172 |
-
|
173 |
-
this.
|
174 |
-
function(
|
175 |
-
b
|
176 |
-
this.po;
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
b,
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
this.
|
190 |
-
[
|
191 |
-
|
192 |
-
function(
|
193 |
-
c
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
a.
|
201 |
-
function(
|
202 |
-
|
203 |
-
|
204 |
-
b
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
"
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
e.push(a
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
-
|
224 |
-
|
225 |
-
|
226 |
-
"
|
227 |
-
|
|
|
|
1 |
+
(function(v,z,h,T){var m=function(){var d={};return{register:function(e,h){d[e]=h},require:function(e,h){var n=d[e];if(!n)throw Error('CommonJS error: failed to require("'+h+'")');return n}}}();m.register("$1",function(d,e,h){function n(b){var c=typeof b;if("string"===c)if(/[^ <>!=()%^&|?:n0-9]/.test(b))console.error("Invalid plural: "+b);else return new Function("n","return "+b);"function"!==c&&(b=function(a){return 1!=a});return b}d.init=function(b){function c(f,b,c){return(f=a[f])&&f[c]?f[c]:b||
|
2 |
+
""}b=n(b);var a={};return{_:function(a){return c(a,a,0)},_x:function(a,b){return c(b+"\u0004"+a,a,0)},_n:function(a,p,k){k=Number(b(k));isNaN(k)&&(k=0);return c(a,k?p:a,k)},load:function(f){a=f||{};return this},pluraleq:function(a){b=n(a);return this}}};return d}({},v,z));m.register("$2",function(d,e,h){Array.prototype.indexOf||(Array.prototype.indexOf=function(d){if(null==this)throw new TypeError;var b,c=Object(this),a=c.length>>>0;if(0===a)return-1;b=0;1<arguments.length&&(b=Number(arguments[1]),
|
3 |
+
b!=b?b=0:0!=b&&Infinity!=b&&-Infinity!=b&&(b=(0<b||-1)*Math.floor(Math.abs(b))));if(b>=a)return-1;for(b=0<=b?b:Math.max(a-Math.abs(b),0);b<a;b++)if(b in c&&c[b]===d)return b;return-1});return d}({},v,z));m.register("$3",function(d,e,h){d.trim=function(d,b){for(b||(b=" \n");d&&-1!==b.indexOf(d.substr(0,1));)d=d.substr(1);for(;d&&-1!==b.indexOf(d.substr(-1));)d=d.substr(0,d.length-1);return d};d.sprintf=function(d){var b=0,c,a=[].slice.call(arguments,1);return d.replace(/%(s|u|%)/g,function(f,p){if("%"===
|
4 |
+
p)return"%";c=a[b++];return String(c)||""})};return d}({},v,z));m.register("$47",function(d,e,h){function n(){var b=a;f&&(b="("+f+") "+b);h.title=b}function b(f){f||(f=c);f!==a&&(a=f,n())}var c=h.title,a=c,f=0;d.set=function(a){b(a);return d};d.get=function(){return a};d.replace=function(f,c){b(a.replace(f,c));return d};d.badge=function(a){isNaN(a=Number(a))&&(a=0);a!==f&&(f=a,n());return d};return d}({},v,z));m.register("$40",function(d,e,h){function n(f){a||e._gat&&(a=_gat._createTracker(b,"loco"));
|
5 |
+
if(a){var p=f.shift();a[p].apply(a,f)}else c&&c.push(f);return d}var b,c,a;d._init=function(a){if(b=a.code){c=e._gaq||(e._gaq=[]);c.push(["_setAccount",b]);c.push(["_gat._anonymizeIp"]);c.push(["_setDomainName",a.host]);c.push(["_trackPageview"]);a=h.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==h.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var p=h.getElementsByTagName("script")[0];p.parentNode.insertBefore(a,p)}return d};d.event=function(a,
|
6 |
+
b,c,g){return n(["_trackEvent",a||"",b||"",c||"",g||0])};d.page=function(a,b){var c={page:a||location.pathname+location.hash,title:b||m.require("$47","title.js").get()};return n(["_trackPageview",c])};return d}({},v,z));m.register("$41",function(d,e,h){function n(a,f){if(b)b[a](f);else e.ga&&ga(a,f);return d}var b,c;d._init=function(a){a.code&&(function(a,b,c,g,l,A,d){a.GoogleAnalyticsObject=l;a[l]=a[l]||function(){(a[l].q=a[l].q||[]).push(arguments)};a[l].l=1*new Date;A=b.createElement(c);d=b.getElementsByTagName(c)[0];
|
7 |
+
A.async=1;A.src=g;d.parentNode.insertBefore(A,d)}(e,h,"script","//www.google-analytics.com/analytics.js","ga"),ga("create",a.code,{alwaysSendReferrer:!0,userId:a.uid}),ga("set","anonymizeIp",!0),a.custom&&n("set",a.custom),d.page(),ga(function(a){b=a}));return d};d.event=function(a,f,b,c){return n("send",{hitType:"event",eventCategory:a||"",eventAction:f||"",eventLabel:b||"",eventValue:Number(c||0)})};d.page=function(a,f){var b={hitType:"pageview",page:a||location.pathname+location.hash,title:f||
|
8 |
+
m.require("$47","title.js").get()};b.location=location.protocol+"//"+location.hostname+b.page;c&&n("set",{referrer:c});c=b.location;return n("send",b)};d.reset=function(){c=location.href;var a={page:location.pathname+location.hash,title:m.require("$47","title.js").get(),location:c};n("set",a);return d};return d}({},v,z));m.register("$31",function(d,e,B){function n(a,c){h(a).click(function(a){b&&b.event(c,"click",this.getAttribute("href")||"");return!0});a=null;return d}var b,c=location.hostname,a=
|
9 |
+
"/help"===location.pathname.substr(0,5);d.init=function(a){!b&&a&&(c=a.host||(a.host=c),b=a.legacy?m.require("$40","legacy.js"):m.require("$41","universal.js"),b._init(a));return d};d.link=function(f){for(var b=f.getAttribute("href");b&&"#"!==b;){if(0===b.indexOf("#"))return n(f,"anchor");if("/help"===b.substr(0,5)&&!a)f.setAttribute("target","_blank");else if(0===b.indexOf("http")||0===b.indexOf("//")){if(-1!==b.indexOf(c)&&/^(https?:)*\/\/([^\/]+)/.exec(b)&&c===RegExp.$2)break;f.setAttribute("target",
|
10 |
+
"_blank");n(f,"external")}break}return d};d.page=function(){b&&b.page.apply(b,arguments);return d};d.event=function(){b&&b.event.apply(b,arguments);return d};d.reset=function(){b&&b.reset&&b.reset();return d};return d}({},v,z));m.register("$35",function(d,e,m){function n(a,b,p,d,g){function l(){s&&clearTimeout(s);r&&r.fadeOut(400,function(){h(this).remove();r=null});return!1}function A(){D();-1!==d&&(s=setTimeout(l,d||2E3));r.off("mouseleave").on("mouseenter",D)}function D(){s&&clearTimeout(s);s=
|
11 |
+
null;r.off("mouseenter").on("mouseleave",A)}var s;c||(c=m.createElement("div"),c.id="growls",m.body.appendChild(c));var r=h('<div class="growl growl-'+p+'"><div><a class="close" href="#"><span>X</span></a><span class="badge"></span><p class="message"></p><small class="caption"></small></div></div>');r.find("p").text(a||"Empty message");b?r.find("small").text(b):r.find("small").remove();if(g.length){g.push({label:"Cancel",callback:l,css:"cancel"});var w,q=h('<form action="#" class="dialog"></form>');
|
12 |
+
b=function(a,b){w=h('<input type="button" value="'+b.label+'" class="butt '+(b.css||"")+'" />');w.click(function(a){"function"===typeof b.callback&&b.callback(a,{close:l})});q.append(w);return w};for(a=0;a<g.length;a++)b(a,g[a]);r.append(q)}h(c).prepend(r.hide().fadeIn(400));r.find("a").click(l);A()}var b,c;d.init=function(){if(!b)return b=e.alert,e.alert=function(a){a=String(a).split("\n");var b=a[1]&&a.slice(1).join("\n");d.alert(a[0],b)},d};d.debug=function(a){b(a);return d};d.alert=function(a,
|
13 |
+
f,c,d,g){try{return n(a,f||"",c||"alert",d||4E3,g||[]),!0}catch(l){return a+="\n\n--\n"+(l.message||l),b.call(e,a),!1}};d.success=function(a,b,c){return d.alert(a,b,"success",c||2E3)};d.dialog=function(a,b,c,k){return d.alert(a,b,k||"alert",-1,c)};return d}({},v,z));m.register("$42",function(d,e,m){function n(a){return 27===a.keyCode&&r&&w?(H(),a.preventDefault(),!1):!0}function b(){if(r){var a=e.innerWidth,b=e.innerHeight;a!==F&&(F=a,K(u));b!==y&&(y=b,s&&c())}return!0}function c(){var a=p.outerHeight(!0)-
|
14 |
+
s.clientHeight;s.style.maxHeight=String(y-a)+"px"}function a(a){a?(l.show(),k.addClass("has-title")):(l.hide(),k.removeClass("has-title"))}var f,p,k,g,l,A,D,s,r=!1,w=!1,q=!1,E,C,F,u,y,G=d.init=function(){if(!f){f=h('<div id="overlay"></div>');p=h('<div class="overlay-frame"></div>');k=h('<div class="overlay-container"></div>');l=h('<div class="overlay-title"><span class="icon"></span><span class="title">Untitled</span></div>');A=h("<nav></nav>");D=h('<a class="overlay-close" href="#"><span>x</span></a>');
|
15 |
+
g=h('<div class="overlay-bg"></div>');f.append(p.append(k)).append(g).prependTo(m.body);h(m).on("keydown",n);h(e).resize(b);F=e.innerWidth;y=e.innerHeight;C=k.outerWidth(!0)-k.width()+(p.innerWidth()-p.width());E=parseInt(k.css("width"));if(!E||isNaN(E))E=k.width();A.hide().prependTo(p);l.append(D.hide()).hide().prependTo(p);f.hide()}return f},K=d.width=function(a){var b=G();if(null===a)p.css("width",""),k.css("width","");else{a=a||E||640;x=a+C;u=a;var g=F;x>g?(x=g,a=x-C,b.addClass("spill")):b.removeClass("spill");
|
16 |
+
p.css("width",x+"px");k.css("width",a+"px")}return d};d.autoSize=function(){var a=G(),b=E||0;k.children().each(function(a,g){b=Math.max(b,h(g).outerWidth(!0))});K(b);if(s=a.find("div.overlay-scroll")[0])y=e.innerHeight,c();return d};d.css=function(a){G().attr("class",a);return d};d.think=function(){G().addClass("loading");return d};d.unthink=function(){G().removeClass("loading");return d};d.html=function(a){G();e.innerShiv&&(a=innerShiv(a,!1));return k.html(a)};d.append=function(a){G();a instanceof
|
17 |
+
jQuery||(a=h(a));k.append(a);return d};var H=d.close=function(a){if(r){var b=function(){G().hide();h(m.body).removeClass("has-overlay");r=!1;k.html("");r=null;f.trigger("overlayClosed",[d])};null==a&&(a=300);f.trigger("overlayClosing",[d]);a?f.fadeOut(a,b):b()}return d};d.title=function(b,g){G();var f="",r=l.find("span");g&&/^lang lang-(\w+)/.exec(g)&&(f=RegExp.$1);r.eq(0).attr("class",g||"no-icon").attr("lang",f);q=b||"";r.eq(1).text(q);null!=b?a(!0):w||a(!1);return d};d.enableClose=function(){G();
|
18 |
+
w=!0;D.off("click").on("click",function(){H();return!1});a(!0);D.show();return d};d.disableClose=function(){G();w=!1;D.hide();r&&q||a(!1);return d};d.enableNav=function(a){A.append(a);A.show();return d};d.disableNav=function(){A.html("").hide();return d};d.open=function(){G();k.html("");K(E);f.attr("class","");h(m.body).addClass("has-overlay");G().show();r||(r=!0,b());d.title(null);w&&a(!0);f.trigger("overlayOpened",[d]);return d};d.active=function(){return r};d.listen=function(a){G().on("overlayClosed",
|
19 |
+
a);return d};d.unlisten=function(a){G().off("overlayClosed",a);return d};return d}({},v,z));m.register("$11",function(d,e,m){function n(a,b){this.$element=h(a);this.options=b;this.enabled=!0;this.fixTitle()}d.init=function(a,f){var p={fade:!0,offset:5,delayIn:b,delayOut:c,anchor:a.attr("data-anchor"),gravity:a.attr("data-gravity")||"s"};f&&(p=h.extend({},p,f));a.tipsy(p)};d.delays=function(a,f){b=a||150;c=f||100};d.kill=function(){h("div.tipsy").remove()};d.text=function(a,b){b.data("tipsy").setTitle(a)};
|
20 |
+
var b,c;d.delays();h(m.body).on("overlayOpened overlayClosing",function(a){d.kill();return!0});n.prototype={show:function(){var a=this.getTitle();if(a&&this.enabled){var b=this.tip();b.find(".tipsy-inner")[this.options.html?"html":"text"](a);b[0].className="tipsy";b.remove().css({top:0,left:0}).prependTo(m.body);var a=(a=this.options.anchor)?this.$element.find(a):this.$element,a=h.extend({},a.offset(),{width:a[0].offsetWidth,height:a[0].offsetHeight}),c=b[0].offsetWidth,d=b[0].offsetHeight,g="function"==
|
21 |
+
typeof this.options.gravity?this.options.gravity.call(this.$element[0]):this.options.gravity,l;switch(g.charAt(0)){case "n":l={top:a.top+a.height+this.options.offset,left:a.left+a.width/2-c/2};break;case "s":l={top:a.top-d-this.options.offset,left:a.left+a.width/2-c/2};break;case "e":l={top:a.top+a.height/2-d/2,left:a.left-c-this.options.offset};break;case "w":l={top:a.top+a.height/2-d/2,left:a.left+a.width+this.options.offset}}2==g.length&&("w"==g.charAt(1)?l.left=a.left+a.width/2-15:l.left=a.left+
|
22 |
+
a.width/2-c+15);b.css(l).addClass("tipsy-"+g);b.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+g.charAt(0);this.options.className&&b.addClass("function"==typeof this.options.className?this.options.className.call(this.$element[0]):this.options.className);b.addClass("in")}},hide:function(){this.tip().remove()},fixTitle:function(){var a=this.$element,b=a.attr("title")||"";(b||"string"!==typeof a.attr("original-title"))&&a.attr("original-title",b).removeAttr("title")},getTitle:function(){var a,
|
23 |
+
b=this.$element,c=this.options;this.fixTitle();"string"==typeof c.title?a=b.attr("title"==c.title?"original-title":c.title):"function"==typeof c.title&&(a=c.title.call(b[0]));return(a=(""+a).replace(/(^\s*|\s*$)/,""))||c.fallback},setTitle:function(a){var b=this.$element;b.attr("default-title")||b.attr("default-title",this.getTitle());null==a&&(a=b.attr("default-title")||this.getTitle());b.attr("original-title",a);if(this.$tip)this.$tip.find(".tipsy-inner")[this.options.html?"html":"text"](a)},tip:function(){this.$tip||
|
24 |
+
(this.$tip=h('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),this.$tip.data("tipsy-pointee",this.$element[0]));return this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.hide();this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}};h.fn.tipsy=function(a){function b(g){var c=h.data(g,"tipsy");c||(c=new n(g,h.fn.tipsy.elementOptions(g,
|
25 |
+
a)),h.data(g,"tipsy",c));return c}function c(){var g=b(this),l=a.delayIn;g.hoverState="in";0==l?g.show():(g.fixTitle(),setTimeout(function(){"in"==g.hoverState&&g.show()},l))}function d(){var g=b(this),c=a.delayOut;g.hoverState="out";0==c?g.hide():(g.tip().removeClass("in"),setTimeout(function(){"out"==g.hoverState&&g.hide()},c))}a=h.extend({},h.fn.tipsy.defaults,a);a.live||this.each(function(){b(this)});if("manual"!=a.trigger){var g=a.live?"live":"bind",l="hover"==a.trigger?"mouseleave":"blur";this[g]("hover"==
|
26 |
+
a.trigger?"mouseenter":"focus",c)[g](l,d)}return this};h.fn.tipsy.defaults={className:null,delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:0.8,title:"title",trigger:"hover",anchor:null};h.fn.tipsy.elementOptions=function(a,b){return h.metadata?h.extend({},b,h(a).metadata()):b};h.fn.tipsy.autoNS=function(){return h(this).offset().top>h(m).scrollTop()+h(e).height()/2?"s":"n"};h.fn.tipsy.autoWE=function(){return h(this).offset().left>h(m).scrollLeft()+h(e).width()/
|
27 |
+
2?"e":"w"};h.fn.tipsy.autoBounds=function(a,b){return function(){var c=b[0],d=1<b.length?b[1]:!1,g=h(m).scrollTop()+a,l=h(m).scrollLeft()+a,A=h(this);A.offset().top<g&&(c="n");A.offset().left<l&&(d="w");h(e).width()+h(m).scrollLeft()-A.offset().left<a&&(d="e");h(e).height()+h(m).scrollTop()-A.offset().top<a&&(c="s");return c+(d?d:"")}};return d}({},v,z));m.register("$8",function(d,e,m){d.listen=function(d,b){function c(){s[k?"show":"hide"]()}function a(a){D&&d.setAttribute("size",a.length||1);k=a;
|
28 |
+
c();return a}function f(){g=null;b(k)}function p(){var b=d.value;A&&b===A&&(b="");b!==k&&(g&&clearTimeout(g),a(b),l?g=setTimeout(f,l):f())}var k,g;d=d instanceof jQuery?d[0]:d;var l=150,A=e.attachEvent&&d.getAttribute("placeholder"),D=1===Number(d.size),s=h('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(a){d.value="";p();return!1});a(d.value);h(d).on("input blur focus",function(){p();return!0}).after(s);c();return{delay:function(a){l=a},ping:function(b){b?
|
29 |
+
(g&&clearTimeout(g),b=d.value,A&&b===A&&(b=""),a(b),f(),b=void 0):b=p();return b},val:function(b){if(null==b)return k;g&&clearTimeout(g);d.value=a(b);c()},el:function(){return d},blur:function(a){return h(d).on("blur",a)}}};return d}({},v,z));m.register("$22",function(d,e,B){var n,b,c={401:"Authorization Required",422:"Invalid data sent to server",404:"Not Found",500:"Server Error",502:"Bad Gateway",503:"Service unavailable",504:"Gateway timeout"};d.keepAlive=function(a){n=a;b&&clearTimeout(b);b=
|
30 |
+
setTimeout(function(){b=null;d.ajax({url:"/ajax/user/session.json"})},a)};d.jsonLink=function(a){if(!a)return"";a=a.split("?");a[0]=a[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return a.join("?")};d.errorData=function(a,b,d){var k,g;d=a.responseText;b=a.status;if(!d&&0===b)return null;try{k=h.parseJSON(d)||{}}catch(l){k={},g=c[a.status]||l.message||l}k.error=g||k.error||k.statusText||a.statusText||c[b]||"Unknown Error";return k};d.ajax=function(a,b,p,k){function g(a){function b(a){var g=a&&a[0];if(!g||
|
31 |
+
B.contains&&!B.contains(g))a=h(B.body);return a}a.alert&&alert(a.alert);var g=a.success,c=b(k);g&&m.require("$35","growl.js").success.apply(null,g.push?g:[g]);c.trigger("locoAjaxSuccess",[a]);if((g=a.events)&&g.length)for(var l,q=m.require("$31","ga.js");l=g.shift();)c=b(c),c.trigger(l,[a]),q.event("ajax",l);if(c=a.download)e.location.assign(c);else if(c=a.redirect)if(0===c.indexOf("/modal/"))a.modal={url:c};else return e.location.assign(c),!1;else if(a.reload)return e.location.reload(),!1;(c=a.modal)&&
|
32 |
+
m.require("$32","modal.js").replace(c);p&&p();return!0}function l(a,l,k){if("abort"!==l){var r=a.status,w;if(401===r)m.require("$32","modal.js").load("/modal/user/ping.json?r="+encodeURIComponent(location.pathname),c[r]);else{if("parsererror"===l)e.console&&console.error&&console.error(r,a.responseText),w=404===r?"Ajax service not found":/^\s+Fatal error/.test(a.responseText)?"Fatal server error from Ajax request":"Bad Ajax response";else{var q=d.errorData(a,l,k);q&&q.error&&(w=q.error)}"function"===
|
33 |
+
typeof b&&!1===b(null,w,r,a)?p&&p():q&&q.data&&!g(q.data)||(alert(w||"Unknown Ajax error"),p&&p())}}}(a.headers||(a.headers={}))["X-Loco-Csrf"]=e.loco&&J.csrf||"";a.error=l;a.success=function(a,k,s){if(!a||"object"!==typeof a)return l(s,"unknown");n&&d.keepAlive(n);(a.status||a.error)&&alert(a.error||a.statusText||s.statusText||c[a.status]||"Unknown Error");"function"===typeof b&&!1===b(a&&a.data?a.data:a,null,k,s)?p&&p():a&&a.data?g(a.data):p&&p()};-1!==a.url.indexOf(".json")&&(a.dataType="json");
|
34 |
+
return h.ajax(a)};return d}({},v,z));m.register("$32",function(d,e,B){function n(a){a.stopPropagation();a.preventDefault();return!1}function b(){l||(l=m.require("$42","overlay.js"),l.listen(p));return l}function c(){var a=s.length-1,b=s[a],g=h('<a class="has-icon icon-back" data-gravity="w">Back</a>').attr("href",b[0]).attr("title",b[1]).click(function(g){if(s[a]===b&&E())return m.require("$11","tooltip.js").kill(),n(g)});l.enableNav(g);m.require("$11","tooltip.js").init(g)}function a(a,b,g){a=a.split("#");
|
35 |
+
var c=a[0],c=c+(-1===c.indexOf("?")?"?":"&"),c=c+(encodeURIComponent(b)+"="+encodeURIComponent(g));a[0]=c;return a.join("#")}function f(a,g){var q=b().autoSize(),l=q.init();m.require("$18","html.js").init(l);g&&g.lock&&q.disableClose();s.length&&c();l.find("[data-script]").each(function(a,b){b=h(b);for(var c=-1,q,l=b.attr("data-script").split(" ");++c<l.length;)q=l[c],D[q]?D[q](b,g||{}):alert("Unknown script "+q)});l.trigger("locoModalLoaded",[q,a||"",g||{}]);var f=l.find("form")[0],r;if(f)a:for(q=
|
36 |
+
0;q<f.elements.length;q++)switch(l=f.elements[q],l.type){case "text":case "email":case "textarea":r=Number(l.getAttribute("tabindex"));if(isNaN(r)||100>r)continue a;h(l).focus();break a}}function p(){r=null;s=[];return!0}function k(a){var b=h(a.currentTarget),c=b.attr("data-modal");if("back"===c){if(E())return n(a);c="close"}if("close"===c){q();var l=b.attr("href");if(l&&-1!==l.indexOf("#!"))return!0}else{var f="submit"===a.type,r=b.attr("title")||b.attr("data-title"),l=b.attr("href")||b.attr("action"),
|
37 |
+
d=f?b.serialize():"",b=f?b.attr("method"):"get";w(l,r,b,d,"modal "+(c||g(l)))}return n(a)}function g(a){return"http"===a.substr(0,4)?a.split("/").slice(3,6).join("-"):a.split("/").slice(1,4).join("-")}var l,A=m.require("$31","ga.js"),D={},s=[],r,w=d.load=function(g,c,q,y,p){var k=r;r=[].slice.call(arguments);k&&g!==k[0]&&(s.push(k),g=a(g,"r",k[0]));k=b();k.active()||k.open().css("modal").html('<div class="loading"></div>');k.title("Loading ..").disableClose().disableNav();k.think();var k=g.split("#"),
|
38 |
+
E=k[1];E&&(g=k[0]);var k=m.require("$22","http.js"),D={type:q||"get",data:y||"",url:k.jsonLink(g)};k.ajax(D,function(a,b,d){var k=a&&a.html;if(!k)return a&&a.redirect?(r=s.pop()||null,w(a.redirect,c,q,y,p)):(a=h('<h3 class="error"></h3>').text(b||"Unknown error"),b=h('<footer class="buttonset"><a href="/" data-modal="close" class="has-icon icon-ok">Close</a></footer>'),a=h('<div class="basic"></div>').append(a).append(b),b="Error",d&&200!==d&&(b+=" "+d),l.unthink().enableClose().title(b).html("").append(a),
|
39 |
+
m.require("$18","html.js").init(l.init())),!1;c=a.title||c||"Untitled";r&&(r[1]=c);l.unthink().enableClose().title(c,a.icon).width(null).css(p||"modal").autoSize().html(k);d=a.js||{};E&&(d["#"]=E);f(g,d);A.page(g,c);l.init().one("overlayClosed",function(){A.reset()});return!0});return d},q=d.close=function(){b().close();return d},E=d.back=function(){if(previous=s.pop())return r=s[s.length-2],w.apply(null,previous),!0};d.reload=function(){r&&w.apply(null,r)};d.postback=function(a){r&&(r[2]="post",
|
40 |
+
r[3]=a,w.apply(null,r))};d.initLink=function(a){a.click(k)};d.initForm=function(a){h(a).submit(k)};d.replace=function(a){var c=b(),q=a&&a.html,l=a&&a.url,r=a&&a.title,A=a&&a.action;if(l)q=s.length-1,q=0<=q?s[q][0]:void 0,l===q?E():w(l,r,"","",a&&a.css||"modal "+g(l));else if(q)c.open().html(q),r&&c.enableClose().title(r),f("",a&&a.js);else if("function"===typeof d[A])d[A]();return c};d.find=function(a){return b().init().find(a)};d.script=function(a,b){if(b){if("function"!==typeof b.run)throw Error(a+
|
41 |
+
" macro has no run function");D[a]=b.run;return d}return D[a]};d.hash=function(a){var b=a.hash;"#/modal/"===b.substr(0,8)&&(b=b.substr(1),a.hash="",d.replace({url:b}))};return d}({},v,z));m.register("$21",{"\u00e1":"a","\u00e0":"a","\u0103":"a","\u1eaf":"a","\u1eb1":"a","\u1eb5":"a","\u1eb3":"a","\u00e2":"a","\u1ea5":"a","\u1ea7":"a","\u1eab":"a","\u1ea9":"a","\u01ce":"a","\u00e5":"a","\u01fb":"a","\u00e4":"a","\u01df":"a","\u00e3":"a","\u0227":"a","\u01e1":"a","\u0105":"a","\u0101":"a","\u1ea3":"a",
|
42 |
+
"\u0201":"a","\u0203":"a","\u1ea1":"a","\u1eb7":"a","\u1ead":"a","\u1e01":"a","\u01fd":"\u00e6","\u01e3":"\u00e6","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0107":"c","\u0109":"c","\u010d":"c","\u010b":"c","\u00e7":"c","\u1e09":"c","\u010f":"d","\u1e0b":"d","\u1e11":"d","\u0111":"d","\u1e0d":"d","\u1e13":"d","\u1e0f":"d","\u00f0":"d","\ua77a":"d","\u01c6":"\u01f3","\u00e9":"e","\u00e8":"e","\u0115":"e","\u00ea":"e","\u1ebf":"e","\u1ec1":"e","\u1ec5":"e","\u1ec3":"e","\u011b":"e","\u00eb":"e","\u1ebd":"e",
|
43 |
+
"\u0117":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u1ebb":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u1e19":"e","\u1e1b":"e","\u1e1f":"f","\ua77c":"f","\u01f5":"g","\u011f":"g","\u011d":"g","\u01e7":"g","\u0121":"g","\u0123":"g","\u1e21":"g","\ua7a1":"g","\u1d79":"g","\u0125":"h","\u021f":"h","\u1e27":"h","\u1e23":"h","\u1e29":"h","\u0127":"h","\u210f":"h","\u1e25":"h","\u1e2b":"h","\u1e96":"h","\u00ed":"i","\u00ec":"i","\u012d":"i","\u00ee":"i",
|
44 |
+
"\u01d0":"i","\u00ef":"i","\u1e2f":"i","\u0129":"i","\u012f":"i","\u012b":"i","\u1ec9":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u1e2d":"i","\u0135":"j","\u01f0":"j","\u1e31":"k","\u01e9":"k","\u0137":"k","\ua7a3":"k","\u1e33":"k","\u1e35":"k","\u013a":"l","\u013e":"l","\u013c":"l","\u0142":"l","\u1e37":"l","\u1e39":"l","\u1e3d":"l","\u1e3b":"l","\u0140":"l","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0144":"n","\u01f9":"n","\u0148":"n","\u00f1":"n","\u1e45":"n","\u0146":"n","\ua7a5":"n","\u1e47":"n",
|
45 |
+
"\u1e4b":"n","\u1e49":"n","\u00f3":"o","\u00f2":"o","\u014f":"o","\u00f4":"o","\u1ed1":"o","\u1ed3":"o","\u1ed7":"o","\u1ed5":"o","\u01d2":"o","\u00f6":"o","\u022b":"o","\u0151":"o","\u00f5":"o","\u1e4d":"o","\u1e4f":"o","\u022d":"o","\u022f":"o","\u0231":"o","\u00f8":"o","\u01ff":"o","\u01eb":"o","\u01ed":"o","\u014d":"o","\u1e53":"o","\u1e51":"o","\u1ecf":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edb":"o","\u1edd":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u1e55":"p",
|
46 |
+
"\u1e57":"p","\u0155":"r","\u0159":"r","\u1e59":"r","\u0157":"r","\ua7a7":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u1e5f":"r","\ua783":"r","\u015b":"s","\u1e65":"s","\u015d":"s","\u0161":"s","\u1e67":"s","\u1e61":"s","\u015f":"s","\ua7a9":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u017f":"s","\ua785":"s","\u1e9b":"s","\u0165":"t","\u1e97":"t","\u1e6b":"t","\u0163":"t","\u1e6d":"t","\u021b":"t","\u1e71":"t","\u1e6f":"t","\ua787":"t","\u00fa":"u","\u00f9":"u","\u016d":"u","\u00fb":"u",
|
47 |
+
"\u01d4":"u","\u016f":"u","\u00fc":"u","\u01d8":"u","\u01dc":"u","\u01da":"u","\u01d6":"u","\u0171":"u","\u0169":"u","\u1e79":"u","\u0173":"u","\u016b":"u","\u1e7b":"u","\u1ee7":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1ee9":"u","\u1eeb":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u1e77":"u","\u1e75":"u","\u1e7d":"v","\u1e7f":"v","\u1e83":"w","\u1e81":"w","\u0175":"w","\u1e98":"w","\u1e85":"w","\u1e87":"w","\u1e89":"w","\u1e8d":"x","\u1e8b":"x","\u00fd":"y","\u1ef3":"y",
|
48 |
+
"\u0177":"y","\u1e99":"y","\u00ff":"y","\u1ef9":"y","\u1e8f":"y","\u0233":"y","\u1ef7":"y","\u1ef5":"y","\u017a":"z","\u1e91":"z","\u017e":"z","\u017c":"z","\u1e93":"z","\u1e95":"z","\u01ef":"\u0292","\u1f00":"\u03b1","\u1f04":"\u03b1","\u1f84":"\u03b1","\u1f02":"\u03b1","\u1f82":"\u03b1","\u1f06":"\u03b1","\u1f86":"\u03b1","\u1f80":"\u03b1","\u1f01":"\u03b1","\u1f05":"\u03b1","\u1f85":"\u03b1","\u1f03":"\u03b1","\u1f83":"\u03b1","\u1f07":"\u03b1","\u1f87":"\u03b1","\u1f81":"\u03b1","\u03ac":"\u03b1",
|
49 |
+
"\u1f71":"\u03b1","\u1fb4":"\u03b1","\u1f70":"\u03b1","\u1fb2":"\u03b1","\u1fb0":"\u03b1","\u1fb6":"\u03b1","\u1fb7":"\u03b1","\u1fb1":"\u03b1","\u1fb3":"\u03b1","\u1f10":"\u03b5","\u1f14":"\u03b5","\u1f12":"\u03b5","\u1f11":"\u03b5","\u1f15":"\u03b5","\u1f13":"\u03b5","\u03ad":"\u03b5","\u1f73":"\u03b5","\u1f72":"\u03b5","\u1f20":"\u03b7","\u1f24":"\u03b7","\u1f94":"\u03b7","\u1f22":"\u03b7","\u1f92":"\u03b7","\u1f26":"\u03b7","\u1f96":"\u03b7","\u1f90":"\u03b7","\u1f21":"\u03b7","\u1f25":"\u03b7",
|
50 |
+
"\u1f95":"\u03b7","\u1f23":"\u03b7","\u1f93":"\u03b7","\u1f27":"\u03b7","\u1f97":"\u03b7","\u1f91":"\u03b7","\u03ae":"\u03b7","\u1f75":"\u03b7","\u1fc4":"\u03b7","\u1f74":"\u03b7","\u1fc2":"\u03b7","\u1fc6":"\u03b7","\u1fc7":"\u03b7","\u1fc3":"\u03b7","\u1f30":"\u03b9","\u1f34":"\u03b9","\u1f32":"\u03b9","\u1f36":"\u03b9","\u1f31":"\u03b9","\u1f35":"\u03b9","\u1f33":"\u03b9","\u1f37":"\u03b9","\u03af":"\u03b9","\u1f77":"\u03b9","\u1f76":"\u03b9","\u1fd0":"\u03b9","\u1fd6":"\u03b9","\u03ca":"\u03b9",
|
51 |
+
"\u0390":"\u03b9","\u1fd3":"\u03b9","\u1fd2":"\u03b9","\u1fd7":"\u03b9","\u1fd1":"\u03b9","\u1f40":"\u03bf","\u1f44":"\u03bf","\u1f42":"\u03bf","\u1f41":"\u03bf","\u1f45":"\u03bf","\u1f43":"\u03bf","\u03cc":"\u03bf","\u1f79":"\u03bf","\u1f78":"\u03bf","\u1fe4":"\u03c1","\u1fe5":"\u03c1","\u1f50":"\u03c5","\u1f54":"\u03c5","\u1f52":"\u03c5","\u1f56":"\u03c5","\u1f51":"\u03c5","\u1f55":"\u03c5","\u1f53":"\u03c5","\u1f57":"\u03c5","\u03cd":"\u03c5","\u1f7b":"\u03c5","\u1f7a":"\u03c5","\u1fe0":"\u03c5",
|
52 |
+
"\u1fe6":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u1fe3":"\u03c5","\u1fe2":"\u03c5","\u1fe7":"\u03c5","\u1fe1":"\u03c5","\u1f60":"\u03c9","\u1f64":"\u03c9","\u1fa4":"\u03c9","\u1f62":"\u03c9","\u1fa2":"\u03c9","\u1f66":"\u03c9","\u1fa6":"\u03c9","\u1fa0":"\u03c9","\u1f61":"\u03c9","\u1f65":"\u03c9","\u1fa5":"\u03c9","\u1f63":"\u03c9","\u1fa3":"\u03c9","\u1f67":"\u03c9","\u1fa7":"\u03c9","\u1fa1":"\u03c9","\u03ce":"\u03c9","\u1f7d":"\u03c9","\u1ff4":"\u03c9","\u1f7c":"\u03c9","\u1ff2":"\u03c9",
|
53 |
+
"\u1ff6":"\u03c9","\u1ff7":"\u03c9","\u1ff3":"\u03c9","\u0491":"\u0433","\u0450":"\u0435","\u0451":"\u0435","\u04c2":"\u0436","\u045d":"\u0438","\u04e3":"\u0438","\u04ef":"\u0443"});m.register("$7",function(d,e,h){d.init=function(){function d(a){return A[a]||a}function b(a){return String(a||"").toLowerCase().replace(g,d)}function c(a,b,g,c){b=a.split(b);for(var q=b.length;0!==q--;)(a=b[q])&&null==c[a]&&(g.push(a),c[a]=!0);return g}function a(a){return c(b(a),l,[],{})}function f(a,g){for(var f=[],
|
54 |
+
d={},q,A=g.length,p=l;0!==A--;)(q=g[A])&&c(b(q),p,f,d);k[a]=f}function p(a,b){var g=[],c=-1,q=k,l=q.length,f,d,A,y,p,e,h=a.length,n=b?!0:!1;a:for(;++c<l;)if(A=q[c],null!=A&&(y=A.length)){p=0;b:for(;p<h;p++){e=a[p];for(f=0;f<y;f++)if(d=A[f],0===d.indexOf(e))continue b;continue a}g.push(n?b[c]:c)}return g}var k=[],g=/[^a-z0-9]/g,l=/[\-_\s.?!;:,*^+=~`"(){}<>\[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/,A=m.require("$21","flatten.json");return{split:a,norm:b,pull:function(a,b){return p(a,
|
55 |
+
b)},find:function(b,g){return p(a(b),g)},add:function(b,g){k[b]=a(g)},push:function(a){f(k.length,a)},index:function(a,b){f(a,b)},size:function(){return k.length},clear:function(){k=[]},remove:function(a){k[a]=null}}};return d}({},v,z));m.register("$23",function(d,e,h){d.create=function(){var d=[],b=m.require("$7","fulltext.js").init();return{add:function(c,a){b.add(d.length,a);d.push(c);return this},find:function(c){return b.find(c,d)},clear:function(){d=[];b.clear();return this}}};return d}({},
|
56 |
+
v,z));m.register("$10",function(d,e,B){function n(b){-1===b.indexOf("?")&&(b="/auto/"+b+".json?q=");this.url=b;this.dead={}}function b(){this.dict=m.require("$23","dict.js").create()}d.init=function(c){function a(){if("hint"!==K){var a=y.val()&&!(I&&I.val())&&null==F&&!q;M[a?"addClass":"removeClass"]("error")}}function f(a){I&&I.val(a)}function d(){B.show();var a=y.outerWidth(!1),b=y.outerHeight(!1),g=y.css("margin-top");g&&(g=parseInt(g),isNaN(g)||(b+=g));a-=2;B.css("top",b+"px").css("width",a+"px");
|
57 |
+
q=!0}function k(){B.hide();q=!1}function g(){B.html("");k();w=0;u=F=null}function l(b){g();var c;for(c=0;c<b.length;c++){var q=c,l=b[c],f=l.value,r=l.lang||f.lang,y=h('<span class="label"></span>').text(l.label),k=h('<div class="auto-comp-result"></div>'),s=void 0,C=void 0;if(C=l.icon)s=h("<span></span>").attr("class",C).appendTo(k),r?(s.attr("lang",r),l.lang=r):-1!==C.indexOf("lang-"+f)&&(s.attr("lang",f),l.lang=f);for(C in l)k.data(C,l[C]);k.append(y);A(q,k)}(w=b.length)?(E&&d(),e(0)):(e(null),
|
58 |
+
a(),M.trigger("locoAutonone",[]))}function A(a,b){B.append(b);b.click(function(g){g.stopPropagation();e(a,b);r();return!1});return b}function e(a,b){u&&(u.removeClass("selected"),u=null);F=null;null==a?f(""):(b||(b=B.find("div.auto-comp-result").eq(a)),b.length&&(b.addClass("selected"),F=a,u=b))}function s(a){if(w){var b=w-1;null==F?a=0<a?0:b:(a=F+a,0>a?a=b:a>b&&(a=0));return e(a)}}function r(){if(null==F)R.val(""),f("");else{var b=B.find("div.auto-comp-result").eq(F),c=b.data()||{label:"Error"},
|
59 |
+
q=c.value,l=c.label;f(q);R.val(l);k();b=b.clone();b.data(c);g();A(0,b);w=1;e(0,b);a();b.trigger("locoAutocomp",[q,l,b])}}var w=0,q=!1,E=!1,C=c.form,F=null,u=null,y=h(c),G=y.attr("name"),K=y.attr("data-mode"),H=y.attr("data-provider"),I="hint"!==K&&h('<input type="hidden" value="" name="'+G+'" />').appendTo(C),M=h('<div class="auto-comp-wrap"></div>').replaceAll(y),B=h('<div class="auto-comp-drop"></div>');H&&(H=new n(H));I&&y.attr("name","_"+G);y.attr("autocomplete")||y.attr("autocomplete","off");
|
60 |
+
M.append(y).append(B);k();y.focus(function(a){E=!0;1<w&&d()}).blur(function(b){E=!1;a()}).keydown(function(a){function b(){a.preventDefault();a.stopPropagation();return!1}switch(a.keyCode){case 27:q&&(a.stopPropagation(),k(),y.blur());break;case 40:w&&(q?s(1):d());break;case 38:q&&s(-1);break;case 13:if(q)return r(),b();if(!F&&"hint"!==K)return b()}return!0});var R=m.require("$8","LocoTextListener.js").listen(y,function(a){H&&H.fetch(a,l)});(C=y.attr("data-pre"))&&(C=h.parseJSON(C))&&C.value&&C.label?
|
61 |
+
(l([C]),r()):!c.value||I&&I.val()||!H||H.fetch(c.value,function(a){l(a);r()});return{$:y,val:function(){return I&&I.val()},clear:g,reset:function(){g();y.val("");f("");R.ping()},force:function(a,b){g();f(b||"");R.val(a)},preload:function(a){w&&g();H=new b;var c,q;for(c in a)q=a[c],H.add(q)},mode:function(a){K=a},provide:function(a){H=new n(a)}}};n.prototype.fetch=function(b,a){if(!b)return a&&a([]),this.dead={},this;var f,d=this.dead;for(f in d)if(0===b.indexOf(f))return a&&a([]),this;f={dataType:"json",
|
62 |
+
url:this.url+encodeURIComponent(b)};m.require("$22","http.js").ajax(f,function(f){var g=f&&f.results;g&&(a&&f.query&&f.query===b&&a(f.results),g.length||(d[b]=0));return!0});return this};b.prototype.add=function(b){var a=b.fulltext||b.label||b.value;a&&this.dict.add(b,a)};b.prototype.fetch=function(b,a){var f=b?this.dict.find(b):[];a&&a(f);return this};return d}({},v,z));m.register("$9",function(d,e,B){function n(a){a.stopPropagation();a.preventDefault();return!1}function b(a,b,c){c.off().mouseup(function(c){c.stopPropagation();
|
63 |
+
a.selectIndex(b,!0);return!1}).mouseover(function(){h(this).addClass("over");a.hover=b;return!0}).mouseout(function(){h(this).removeClass("over");a.hover=-1;return!0});return c}function c(b){p===b&&(h(e).off("resize scroll",a),p=null);return b}function a(){p&&p.resize()}function f(a){if(a){var b,c=a[0],f=c.id,d=c.title,r=[],p=[],q=-1,k=c.options.length,C,e=this.selectedIcon||"";this.id=f||"";this.name=c.name||"";this.prefix=c.getAttribute("data-prefix");for(this.defaultIcon=c.getAttribute("data-icon")||
|
64 |
+
"icon no-icon";++q<k;)b=c.options[q],C=b.disabled,b.selected&&r.push(q),b=h(b),p.push([b.val(),b.text(),b.attr("data-icon")||e,C,b.attr("lang")]);this.hidden||(this.hidden=h('<input type="hidden" name="'+this.name+'" value="" />').appendTo(c.form));this.list=h("<ul></ul>");this.icon=h('<span class="icon"> </span>');this.selection=h('<span class="label"></span>');this.handle=h('<a class="handle" href="#"></a>').attr("tabindex",a.attr("tabindex")||"").append(this.icon).append(this.selection);b=h('<div class="selector"></div>').addClass(c.className).append(this.handle).append(this.list).replaceAll(c);
|
65 |
+
f&&b.attr("id",f);d&&a.hasClass("hastip")&&(b.attr("title",d),m.require("$11","tooltip.js").init(b,{gravity:a.attr("data-gravity")||"s",anchor:a.attr("data-anchor")}));this.wrapper=b;this.up=b.hasClass("up");for(this.clearOptions();b=p.shift();)this.addOption.apply(this,b);this.enable();this.close();if(k=r.length)for(q=0;q<k;q++)this.selectIndex(r[q]);else q=c.selectedIndex,null!=q&&0<=q&&this.selectIndex(q)}}d.create=function(a){return new f(a)};d.extend=function(a){a.parent=f;a.prototype=new f};
|
66 |
+
var p,k=f.prototype;k.enable=function(){var a=this;a.bound?a.wrapper.removeClass("disabled"):(a.handle.click(function(a){a.preventDefault();return!1}).mouseover(function(b){return a.onRollover(b)}).mouseout(function(b){return a.onRollout(b)}).mousedown(function(b){return a.onPress(b)}).keydown(function(b){return a.onKeydown(b)}),h(B).mouseup(function(b){return a.onRelease(b)}).keydown(function(b){return a.onGlobalKeydown(b)}),a.bound=!0)};k.disable=function(){this.wrapper.addClass("disabled")};k.onRollover=
|
67 |
+
function(){return this.over=!0};k.onRollout=function(){this.over=!1;return!0};k.onPress=function(a){return this.active?this.over?(this.close(),a.stopPropagation(),a.preventDefault(),!1):!0:(this.open(),a.stopPropagation(),a.preventDefault(),this.handle.focus(),!1)};k.onRelease=function(){this.active&&!this.over&&this.close();return!0};k.onGlobalKeydown=function(a){if(this.active)switch(a.keyCode){case 27:return this.close(),n(a);case 40:return this.hoverNext(1),n(a);case 38:return this.hoverNext(-1),
|
68 |
+
n(a);case 13:if(-1!=this.hover)return this.selectIndex(this.hover,!0),this.hoverItem(-1),this.close(),n(a)}return!0};k.onKeydown=function(a){return this.active||40!==a.keyCode?!0:(this.open(),n(a))};k.resize=function(){var a=this.list,b=this.handle,c=b.outerWidth()||0,f=a.outerWidth()||0,d;this.up?(d=a.outerHeight(),a.css("top","-"+(d+2)+"px")):(d=b.outerHeight()||0,d+=2,a.css("top",d+"px"),b=d+m.require("$18","html.js").top(b[0]),d=e.innerHeight-Math.max(0,b-e.pageYOffset),d-=4,a.css("max-height",
|
69 |
+
d+"px"));c>f&&(c-=f-a.width(),a.css("min-width",String(c)+"px"))};k.open=function(){var b=this.list,f=this.wrapper,d=f.data("tipsy");this.active=!0;this.hover=-1;f.addClass("active");b.show().scrollTop(0);d&&d.disable();this!==p&&(p&&c(p),h(e).on("resize scroll",a),p=this);this.resize()};k.close=function(){var a=this.wrapper,b=a.data("tipsy");this.list.hide();this.active=!1;-1!==this.hover&&(this.getElement(this.hover).removeClass("over"),this.hover=-1);a.removeClass("active");b&&b.enable();c(this)};
|
70 |
k.hoverItem=function(a,b){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=a;-1!==a&&(b=b||this.getElement(a),b.addClass("over"))};k.hoverNext=function(a){var b=this.options.length;if(b){b-=1;if(-1==this.hover)a=0<a?0:b;else{a=this.hover+a;if(0>a){this.close();return}a>b&&(a=0)}this.hoverItem(a)}};k.enableChange=function(a){this.eventName=a;this.eventData=[].slice.call(arguments,1);return this};k.enableConfirm=function(a){this.confirm=a;return this};k.clearOptions=function(){this.index=
|
71 |
+
{};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;return this};k.destroy=function(){this.clearOptions();this.hidden.remove()};k.addOption=function(a,c,f,d,p){var r=this.options.length,k=h("<span></span>").addClass(f||"icon no-icon"),q=h('<span class="label"></span>').text(c||a),q=h("<li></li>").append(k).append(q).appendTo(this.list);p?p=p.split("-").shift():f&&-1!==f.indexOf("lang-"+a)&&(p=a);p&&k.attr("lang",p);q.attr("data-option",r);this.options[r]=
|
72 |
+
{value:a,text:c,lang:p||"",icon:f};this.index[a]=r;this.length=r+1;d?this.disableIndex(r):b(this,r,q);return r};k.disableOption=function(a){return this.disableIndex(this.index[a])};k.disableIndex=function(a){(a=this.getElement(a))&&a.addClass("disabled").off();return this};k.enableOption=function(a){return this.enableIndex(this.index[a])};k.enableIndex=function(a){var c=this.getElement(a);c&&b(this,a,c).removeClass("disabled");return this};k.each=function(a){for(var b=-1,c=this.options,f=c.length;++b<
|
73 |
+
f;)a(b,c[b]);return this};k.reIndex=function(){for(var a=-1,b={},c=this.options,f=c.length;++a<f;)b[c[a].value]=a;this.index=b;this.length=f};k.selectValue=function(a,b){return this.selectIndex(this.index[a],b)};k.hasValue=function(a){return null!=this.index[a]};k.selectIndex=function(a,b){var c=this.options[a];if(c){var f=this,d=f.idx,r=c.value,p=c.icon||f.defaultIcon,q=function(){null!=d&&f.getElement(d).removeClass("active");f.getElement(a).addClass("active");f.setLabel(c.text).setIcon(p,c.lang);
|
74 |
+
f.hidden.val(r);f.idx=a;b&&f.change()};d===a?f.hidden.val(r):b?"function"===typeof f.confirm?f.confirm.call(null,c,function(a){a&&q()}):f.beforeChange(r)&&q():q();f.active&&f.close()}return this};k.setLabel=function(a){this.selection.text(a);(a=this.prefix)&&this.selection.prepend(h('<span class="prefix"></span>').text(a));return this};k.setIcon=function(a,b){this.icon.attr("class",a).attr("lang",b||"");return this};k.val=function(){var a=this.options[this.idx];return a&&a.value};k.change=function(){var a=
|
75 |
+
this.val(),b=this.save,c=this.eventName||"change",f=[a].concat(this.eventData||[]);this.wrapper.trigger(c,f);b&&b(a);this.hidden.triggerHandler("change");return this};k.beforeChange=function(a){var b=h.Event("locoBeforeSelect");this.wrapper.trigger(b,[a]);return!b.isDefaultPrevented()};k.renameOption=function(a,b){var c=this.index[a],f=this.options[c];f&&(f.text=b,this.getElement(c).find("span.label").text(b),c===this.idx&&this.setLabel(b));return this};k.removeOption=function(a){var b=this.index[a],
|
76 |
+
c=this.options[b];c&&(a=this.val(),this.getElement(b).remove(),this.options.splice(b,1),this.reIndex(),a===c.value?this.selectIndex(0,!0):this.selectValue(a,!1))};k.getElement=function(a){return this.list.find("li").eq(a)};k.getWrapper=function(){return this.wrapper};k.tip=function(){return this.getWrapper().data("tipsy")};k.$=function(a,b){h.fn[a].apply(this.wrapper,b||[]);return this};k.persist=function(a){var b=this.id||this.name,c=a.fetch(b);null!=c&&this.selectValue(c,!0);this.save=function(c){a.store(b,
|
77 |
+
c)};return this};k.listen=function(a){return this.on(this.eventName||"change",a)};k.on=function(a,b){this.wrapper.on(a,b);return this};k=null;return d}({},v,z));m.register("$33",function(d,e,B){function n(b){var c=[],a=h([]);this.hidden=a;this.selected=c;this.selectedIcon="icon icon-checkbox";this.constructor.call(this,b);this.wrapper.addClass("multi");for(var f,d,k,g=h('<input type="checkbox" name="'+this.name+'[]" />')[0],l=this.options,A=l.length,e=-1;++e<A;)f=this.getElement(e)[0],k=g.cloneNode(!0),
|
78 |
+
c[e]&&(k.checked=!0),k.setAttribute("value",l[e].value),a.push(f.appendChild(k));(d=this.defaultIcon)&&this.setIcon(d);(d=b.attr("title"))?this.setLabel(d):this.wrapper.addClass("no-title")}d.create=function(b){return new n(b)};m.require("$9","LocoSelector.js").extend(n);e=n.prototype;e.selectIndex=function(b,c){return this.setIndexState(b,!this.selected[b],c)};e.setIndexState=function(b,c,a){var f=this.options[b],d=this.getElement(b),k=this.hidden[b],g=this.selected;f&&c!==g[b]&&(g[b]=c,d[c?"addClass":
|
79 |
+
"removeClass"]("checked"),k&&(k.checked=c),a&&this.change());return this};e.selectValue=function(b,c){if(null==b.pop)return n.parent.prototype.selectValue.call(this,b,c);for(var a=this.selected.slice(),f=this.options.length,d=this.index||{},k=!1,g=-1,l=-1;++g<f;)a[g]&&(k=!0),a[g]=!1;if(f=b.length)for(;++l<f;)g=d[b[l]],null==g?k=!0:!1===a[g]&&(k=a[g]=!0);if(k){for(g in a)this.setIndexState(g,a[g]);c&&this.change()}return this};e.val=function(){for(var b=[],c=this.options,a=this.selected,f=a.length,
|
80 |
+
d=-1;++d<f;)a[d]&&b.push(c[d].value);return b};e=null;return d}({},v,z));m.register("$43",function(d,e,h){function n(b,a){for(var f=String(b);a>f.length;)f="0"+f;return f}function b(b){var a=b%10;if(1===a){if(11!==b)return"st"}else if(2===a){if(12!==b)return"nd"}else if(3===a&&13!==b)return"rd";return"th"}d.formatter=function(){return{format:function(b,a){var f=this;return a.replace(/%[YmdHisMjSghAa]/g,function(a){return f[a.charAt(1)](b)})},Y:function(b){return String(b.getFullYear())},m:function(b){return n(1+
|
81 |
+
b.getFullMonth(),2)},M:function(b){return"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")[b.getMonth()]},d:function(b){return n(b.getDate(),2)},H:function(b){return n(b.getHours(),2)},i:function(b){return n(b.getMinutes(),2)},s:function(b){return n(b.getSeconds(),2)},j:function(b){return String(b.getDate())},S:function(c){return b(c.getDate())},g:function(b){b=b.getHours();return String(0===b?12:12<b?b-12:b)},h:function(b){return n(this.g(b),2)},a:function(b){return 12>b.getHours()?"am":
|
82 |
+
"pm"},A:function(b){return 12>b.getHours()?"AM":"PM"}}};return d}({},v,z));m.register("$34",function(d,e,B){function n(a){var c=a.id,d=p||(p=[]),r=k||(k={}),w=a.getAttribute("datetime"),w=l(w);if(!isNaN(w))return c||(c="tick"+ ++g,a.setAttribute("id",c)),a={id:c,el:a,dt:new Date(w),st:a.textContent},r[c]||d.push(a),r[c]=a,f||(f=setTimeout(b,200)),a}function b(){for(var a=p,d=a.length,g={},r=[];0<d--;)ticker=a[d],c(ticker)&&(r.push(ticker),g[ticker.id]=ticker);r.length?(p=r,k=g,f=setTimeout(b,3E4)):
|
83 |
+
f=k=p=null}function c(b){var c=b.el;if(B.contains&&!B.contains(c))return!1;strDate=a(b.dt,new Date,!0);if(""===strDate)return!1;strDate!==b.st&&(h(c).text(strDate),b.st=strDate);return!0}function a(a,b,c){var f=b.getTime(),d=a.getTime(),q=f-d;if(6E4>q)return"Just now";if(36E5>q)return a=Math.floor(q/6E4),String(a)+" minute"+(1===a?"":"s")+" ago";if(864E5>q&&b.getDate()===a.getDate()&&b.getMonth()===a.getMonth()&&b.getFullYear()===a.getFullYear())return a=Math.round(q/36E5),"About "+String(a)+" hour"+
|
84 |
+
(1===a?"":"s")+" ago";if(c)return"";c=Math.floor(f/864E5)-Math.floor(d/864E5);f=m.require("$43","date.js").formatter();q=f.format(a," %g:%i %A");return 1>=c&&(b.setHours(0),b.setMinutes(0),b.setSeconds(0),b=b.getTime()-864E5,d>=b)?"Yesterday at"+q:11>c?c+" days ago at"+q:f.format(a,"%M %j%S %Y,")+q}var f,p,k,g=0,l=Date.parse||function(){return Number.NaN};d.onEach=function(a,b){n(b)};d.update=function(a){c(n(a))};d.rel=a;return d}({},v,z));m.register("$18",function(d,e,B){var n=e.ieVersion;d.ie=function(b){return b?
|
85 |
+
n<=b:n};var b=d.init=function(b){b?b instanceof jQuery||(b=h(b)):b=h(B.body);var a=m.require("$31","ga.js"),f=m.require("$19","forms.js"),p=m.require("$32","modal.js"),k=m.require("$10","LocoAutoComplete.js"),g=m.require("$9","LocoSelector.js"),l=m.require("$33","LocoMultiSelector.js"),A=m.require("$11","tooltip.js");b.find("form").each(function(a,b){var c=h(b);n&&10>n&&f.placeholders(c);b.getAttribute("data-modal")?p.initForm(b):b.hasAttribute("action")&&"#"!==c.attr("action").charAt(0)&&!b.target&&
|
86 |
+
f.jsonify(b);c.find("input.auto-comp").each(function(a,b){k.init(b)});c.find("select.selector").each(function(a,b){b.hasAttribute("multiple")?l.create(h(b)):g.create(h(b))});c.hasClass("hasreveal")&&f.revealify(c);c.find("button.hastip").each(function(a,b){A.init(h(b))})});b.find("a").each(function(b,c){-1!==c.className.indexOf("hastip")&&A.init(h(c));"/modal/"===String(c.getAttribute("href")).substr(0,7)||c.getAttribute("data-modal")?p.initLink(h(c)):a.link(c)});b.find("time.tick").each(m.require("$34",
|
87 |
+
"tick.js").onEach);f=p=k=b=null;return d};d.$=function(b){return h(e.innerShiv?innerShiv(b,!1):b)};h.fn._html=function(c){return null!=c?(c=this.html(e.innerShiv?innerShiv(c,!1):c),b(this),c):j.html()};h.fn.macro=function(b,a){if("function"!==typeof b.run)throw Error("macro has no run function");b.run(this,a||{});return this};d.el=function(b,a){var f=B.createElement(b||"div");a&&(f.className=a);return f};d.txt=function(b){return B.createTextNode(b||"")};d.h=function(){function b(){d=/[<>&]/g;k=/(\r\n|\n|\r)/g;
|
88 |
+
g=/(?:https?):\/\/([a-zA-Z0-9\-_\.\?%~&;=\/]+(?:#.*)?)/g;b=null}function a(a){return"&#"+a.charCodeAt(0)+";"}function f(a,b){return'<a href="'+a+'">'+b+"</a>"}var d,k,g;return function(l,e){b&&b();var h=l.replace(d,a);e&&(h=h.replace(k,"<br />").replace(g,f));return h}}();d.noop=function(b){b&&(b.preventDefault(),b.stopPropagation(),h(b.target).blur());return!1};d.top=function(b,a){a||(a=B.body);for(var f=b.offsetTop||0;(b=b.offsetParent)&&b!==a;)f+=b.offsetTop||0;return f};d.left=function(b,a){a||
|
89 |
+
(a=B.body);for(var f=b.offsetLeft||0;(b=b.offsetParent)&&b!==a;)f+=b.offsetLeft||0;return f};return d}({},v,z));m.register("$19",function(d,e,B){function n(a){function b(){a.value===g&&(a.value="",d.removeClass("placeheld"));return!0}function c(){""===a.value&&(a.value=g,d.addClass("placeheld"));return!0}var d=h(a);if(!d.hasClass("auto-comp")){var g=d.attr("placeholder");if(g)return d.focus(b).blur(c),c(),{kill:function(){b();d.off("focus",b).off("blur",c)}}}}var b=d.enable=function(a){function b(a,
|
90 |
+
c){c.getAttribute("data-was-disabled")||(c.disabled=!1)}a.find(".button").removeClass("loading");a.find("button").each(b);a.find("input").each(b);a.find("select").each(b);a.find("textarea").each(b);e.attachEvent&&a.hasClass("has-placeholders")&&d.placeholders(a);a.removeClass("disabled").trigger("locoEnable");delete a._disabled},c=d.disable=function(a){function b(a,c){c.disabled?c.setAttribute("data-was-disabled","true"):c.disabled=!0}a._disabled||(a.find(".button").addClass("loading"),a.find("button").each(b),
|
91 |
+
a.find("input").each(b),a.find("select").each(b),a.find("textarea").each(b),a.addClass("disabled").trigger("locoDisable"),a._disabled=!0)};d.jsonify=function(a,f,d){a instanceof jQuery||(a=h(a));a.disable||(h.fn.disable=function(){c(this);return this},h.fn.enable=function(){b(this);this.placehold&&this.placehold();return this});var k="";a.find('[type="submit"]').click(function(a){a&&a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});a.submit(function(b){if(b&&
|
92 |
+
b.isDefaultPrevented&&b.isDefaultPrevented()||d&&!1===d(b))return!1;var c=a.serialize(),c=c.replace(/%0D%0A/g,"%0A");k&&(c&&(c+="&"),c+=k,k="");a.disable();var e=m.require("$22","http.js"),c={url:e.jsonLink(a.attr("action")),type:a.attr("method"),data:c};e.ajax(c,f,function(){a.enable()},a);b.preventDefault();b.stopPropagation();return!1})};d.revealify=function(a){a=a.closest("form");a.find("div[data-reveal-if]").each(function(b,c){function d(a){var b;b=n;q=q||a.target;if("."===r)b=Boolean(q&&q[w]),
|
93 |
+
n&&(b=!b);else{var c,f,y=h(q.form).serializeArray();for(f in y)y[f].name===s&&(c=y[f].value);"!="===r&&(b=!b);b=b?w!==c:w===c}if(b!==e)if(e=b,a)g[e?"slideDown":"slideUp"](200);else g[e?"show":"hide"]();return!0}var g=h(c),l=/^(\!?)([_\w\-\[\]]+)(\.|!?=)(.*)$/.exec(g.attr("data-reveal-if"));if(l){var e,n=l[1]?!0:!1,s=l[2],r=l[3],w=l[4],l=a[0][s];if(l.type||null==l.length)l=[l];b=l.length;for(var q;0!==b--;)q=l[b],d(),h(q).change(d).removeClass("jshide");l=l=q=null}});a=null};d.linkify=function(a){var b=
|
94 |
+
a.getAttribute("data-icon");if(b){var c=h(a),d=h("<a> </a>");d.attr("href",a.form.action);d.attr("class",c.attr("class"));d.attr("tabindex",c.attr("tabindex"));c.attr("tabindex","-1");d.text(c.val());b&&h("<span></span>").prependTo(d).addClass(b);c.hide().after(d);d.click(function(a){c.click();return!1})}};d.placeholders=function(a){var b,c=[];a.find("input[placeholder]").each(function(a,d){"password"!==d.type&&(b=n(d))&&c.push(b)});c.length&&(a.submit(function(){for(var a in c)c[a].kill()}),a.addClass("has-placeholders"),
|
95 |
+
b=i=null)};return d}({},v,z));m.register("$4",function(d,e,B){function n(a,b,c){function d(){f();g=setTimeout(b,c)}function f(){g&&clearTimeout(g);g=null}var g;d();h(a).mouseenter(f).mouseleave(d);return{die:function(){f();h(a).off("mouseenter mouseleave")}}}function b(a,b){a.fadeTo(b,0,function(){a.slideUp(b,function(){a.remove();h(e).triggerHandler("resize")})})}function c(a,c){function d(c){k[l]=null;b(h(a),250);f&&f.die();var q;if(q=c)c.stopPropagation(),c.preventDefault(),q=!1;return q}var f,
|
96 |
+
l;h(a).addClass("is-dismissible");h('<button type="button" class="notice-dismiss" href="#"> </a>').prependTo(a).click(d);h(e).triggerHandler("resize");g();l=k.length;k.push(d);c&&(f=n(a,d,c));return{stick:function(){f&&f.die();f=null;k[l]=null}}}function a(a,b,c){var d=m.require("$18","html.js");a=h('<div class="notice notice-'+a+'" loco-notice inline></div>').prependTo(h("#loco-notices"));var f=h(d.el("p"));c=h(d.el("span")).text(c);b=h(d.el("strong","has-icon")).text(b+": ");f.append(b).append(c).appendTo(a);
|
97 |
+
return a}function f(b,d,f,g){b=a(f,d,b).hide().fadeIn(500);h(e).triggerHandler("resize");return c(b,g)}function p(){h("#loco-notices").find("div.notice").each(function(a,b){if(-1===b.className.indexOf("jshide")){var d=-1===b.className.indexOf("notice-success")?null:5E3;c(b,d)}})}var k=[],g=Date.now||function(){return(new Date).getTime()},l,A,D,s;d.error=function(a){return f(a,l,"error")};d.warning=function(a){return f(a,A,"warning")};d.info=function(a){return f(a,D,"info")};d.success=function(a){return f(a,
|
98 |
+
s,"success",5E3)};d.log=function(){e.console&&console.log&&console.log.apply(console,arguments)};d.debug=function(a,b){e.console&&console.error&&(console.error("Loco Error: "+a),b&&console.debug&&console.debug(b))};d.clear=function(){for(var a=-1,b,c=k,f=c.length;++a<f;)(b=c[a])&&b();k=[];return d};d.create=a;d.raise=function(a){(d[a.type]||d.error).call(d,a.message)};d.convert=c;d.init=function(a){l=a._("Error");A=a._("Warning");D=a._("Notice");s=a._("OK");setTimeout(p,1E3);return d};return d}({},
|
99 |
+
v,z));m.register("$5",function(d,e,B){function n(a){var b=h("<pre>"+a+"</pre>").text();b&&(b=b.replace(/[\r\n]+/g,"\n").replace(/(^|\n)\s+/g,"$1").replace(/\s+$/,""));b||(b=a)||(b="Blank response from server");return b}function b(a){return(a=a.split(/[\r\n]/)[0])?(a=a.replace(/ +in +\S+ on line \d+/,""),a=a.replace(/^[()! ]+Fatal error:\s*/,"")):t._("Server returned invalid data")}function c(a,c,d,g){function r(c,g,r){if("abort"!==g){var k=f||{_:function(a){return a}},A=c.status,y=c.responseText,
|
100 |
+
h=n(y),s=c.getResponseHeader("Content-Type")||"text/html",m=c.getResponseHeader("Content-Length")||y.length;"success"===g&&r?e.error(r):(e.error(b(h)+".\n"+k._("Check console output for debugging information")),e.debug("Ajax failure for "+a,{status:A,error:g,message:r,output:y}),"parsererror"===g&&(r="Response not JSON"),e.log([k._("Provide the following text when reporting a problem")+":","----","Status "+A+' "'+(r||k._("Unknown error"))+'" ('+s+" "+m+" bytes)",h,"===="].join("\n")));d&&d.call&&
|
101 |
+
d(c,g,r);p=c}}g.url=k;g.dataType="json";g.error=r;g.success=function(a,b,d){var f=a&&a.data,g=a&&a.notices,y=g&&g.length;for(!f||a.error?r(d,b,a&&a.error&&a.error.message):c&&c(f,b,d);y--;)e.raise(g[y])};var e=m.require("$4","notices.js").clear();return h.ajax(g)}var a={},f,p,k=e.ajaxurl||"/wp-admin/admin-ajax.php",g=e.encodeURIComponent;d.init=function(b){a=b.nonces||a;return d};d.localise=function(a){f=a;return d};d.xhr=function(){return p};d.strip=n;d.parse=b;d.submit=function(a,b,d){function f(){g.removeClass("loading");
|
102 |
+
m.require("$19","forms.js").enable(g)}var g=h(a),k=g.serialize();g.addClass("loading");m.require("$19","forms.js").disable(g);return c(a.route.value,function(a,c,d){f();b&&b(a,c,d)},function(a,b,c){f();d&&d(a,b,c)},{type:a.method,data:k})};d.post=function(b,d,f,k){var r;(r=a[b])||(e.console&&console.debug&&console.debug('No nonce for "'+b+'"'),r="");r="action=loco_json&route="+g(b)+"&loco-nonce="+g(r);(d=d?h.param(d):"")&&(r+="&"+d);return c(b,f,k,{type:"post",data:r})};d.setNonce=function(b,c){a[b]=
|
103 |
+
c;return d};d.hasNonce=function(b){return!!a[b]};return d}({},v,z));m.register("$20",{arab:1,aran:1,hebr:1,nkoo:1,syrc:1,syrn:1,syrj:1,syre:1,samr:1,mand:1,mend:1,thaa:1,adlm:1,cprt:1,phnx:1,armi:1,prti:1,phli:1,phlp:1,phlv:1,avst:1,mani:1,khar:1,orkh:1,ital:1,lydi:1,ar:1,ary:1,ckb:1,dv:1,fa:1,he:1,nqo:1,ps:1,ur:1,yi:1});m.register("$6",function(d,e,h){function n(){}var b,c=m.require("$20","rtl.json");d.init=function(){return new n};d.cast=function(a){return a instanceof n?a:"string"===typeof a?d.parse(a):
|
104 |
+
d.clone(a)};d.clone=function(a){var b,c=new n;for(b in a)c[b]=a[b];return c};d.parse=function(a){if(!(b||(b=/^([a-z]{2,3})(?:[-_]([a-z]{2}))?(?:[-_]([a-z0-9]{3,8}))?$/i)).exec(a))return null;var c=new n;c.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)c.region=a.toUpperCase();if(a=RegExp.$3)c.variant=a.toLowerCase();return c};e=n.prototype;e.isValid=function(){return!!this.lang};e.isKnown=function(){var a=this.lang;return!(!a||"zxx"===a)};e.toString=function(a){a=a||"-";var b,c=this.lang||"zxx";if(b=
|
105 |
+
this.region)c+=a+b;if(b=this.variant)c+=a+b;return c};e.getIcon=function(){for(var a=3,b,c,d=["variant","region","lang"],g=[];0!==a--;)if(b=d[a],c=this[b])g.push(b),g.push(b+"-"+c.toLowerCase());return g.join(" ")};e.isRTL=function(){return!!c[String(this.lang).toLowerCase()]};e=null;return d}({},v,z));m.register("$36",function(d,e,h){function n(){}var b,c,a=m.require("$20","rtl.json");d.init=function(){return new n};d.cast=function(a){return a instanceof n?a:"string"===typeof a?d.parse(a):d.clone(a)};
|
106 |
+
d.clone=function(a){var b,c=new n;for(b in a)c[b]=a[b];return c};d.parse=function(a){b||(c=/[-_+]/,b=/^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-([0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))?(?:-([a-z]-[-a-z]+))?$/i);a=String(a).split(c).join("-");if(!b.exec(a))return null;var d=new n;d.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)d.script=a.charAt(0).toUpperCase()+a.substr(1).toLowerCase();if(a=RegExp.$3)d.region=a.toUpperCase();if(a=RegExp.$4)d.variant=a.toLowerCase();if(a=RegExp.$5)d.extension=
|
107 |
+
a;return d};e=n.prototype;e.isValid=function(){return!!this.lang};e.isKnown=function(){var a=this.lang;return!(!a||"zxx"===a)};e.toString=function(a){a=a||"-";var b,c=this.lang||"zxx";if(b=this.script)c+=a+b;if(b=this.region)c+=a+b;if(b=this.variant)c+=a+b;if(b=this.extension)c+=a+b;return c};e.getIcon=function(){for(var a=4,b,c,d=["variant","region","script","lang"],l=[];0!==a--;)if(b=d[a],c=this[b])1===a&&3===c.length?l.push("region-m49"):l=l.concat([b,b+"-"+c.toLowerCase()]);return l.join(" ")};
|
108 |
+
e.isRTL=function(){return!!a[String(this.script||this.lang).toLowerCase()]};e=null;return d}({},v,z));m.register("$37",function(d,e,h){function n(a){e.console&&console.error&&console.error(a)}function b(){n("Method not implemented")}function c(){}function a(a){}c.prototype.toString=function(){return"[Undefined]"};a.prototype._validate=function(a){var d,k,g=!0;for(d in this)k=this[d],k===b?(n(a+"."+d+"() must be implemented"),g=!1):k instanceof c&&(n(a+"."+d+" must be defined"),g=!1);return g};d.init=
|
109 |
+
function(d,e){var k,g=new a;if(d)for(k=d.length;0!==k--;)g[d[k]]=b;if(e)for(k=e.length;0!==k--;)g[e[k]]=new c;return g};d.validate=function(a){var b=/function (\w+)\(/.exec(a.toString())?RegExp.$1:"";a.prototype._validate(b||"Object")};return d}({},v,z));m.register("$48",function(d,e,h){var n=e.requestAnimationFrame,b=e.cancelAnimationFrame,c=0;if(!n||!b)for(var a in{ms:1,moz:1,webkit:1,o:1})if(n=e[a+"RequestAnimationFrame"])if(b=e[a+"CancelAnimationFrame"]||e[a+"CancelRequestAnimationFrame"])break;
|
110 |
+
n&&b||(n=function(a){var b=f();timeToCall=Math.max(0,16-(b-c));nextTime=b+timeToCall;timerId=e.setTimeout(function(){a(nextTime)},timeToCall);c=nextTime;return timerId},b=function(a){clearTimeout(a)});var f=Date.now||function(){return(new Date).getTime()};d.loop=function(a,c){function d(){e=n(d,c);a(f++)}var f=0,e;d();return{stop:function(){e&&b(e);e=null}}};return d}({},v,z));m.register("$44",function(d,e,h){function n(b,c,d,f){if(a){var g=d;d=function(a){if((a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType)return g(a)}}b.addEventListener(c,
|
111 |
+
d,f);return{unbind:function(){b.removeEventListener(c,d,f)}}}function b(a){a.preventDefault();a.stopPropagation();return!1}var c,a=!!e.navigator.msPointerEnabled,f=a?"MSPointerDown":"touchstart",p=a?"MSPointerMove":"touchmove",k=a?"MSPointerUp":"touchend";d.ok=function(a){null==c&&(c="function"===typeof h.body.addEventListener);c&&a&&a(d);return c};d.ms=function(){return a};d.dragger=function(a,c){function d(b){a.addEventListener(b,l[b],!1)}function r(b){a.removeEventListener(b,l[b],!1)}var l={};
|
112 |
+
l[f]=function(a){g(a,function(b,d){d.type=f;c(a,d,q)});d(p);d(k);return!0};l[k]=function(a){r(p);r(k);g(a,function(b,d){d.type=k;c(a,d,q)});return!0};l[p]=function(a){g(a,function(b,d){d.type=p;c(a,d,q)});return b(a)};d(f);var q={kill:function(){r(f);r(p);r(k);a=q=c=null}};return q};d.swiper=function(c,d,e){function r(a){c.addEventListener(a,u[a],!1)}function w(a){c.removeEventListener(a,u[a],!1)}function q(){h&&h.stop();h=null}var h,C,n,u={},y=[],G=[],K=[];u[f]=function(a){C=!1;q();var b=l();g(a,
|
113 |
+
function(a,c){y[a]=b;G[a]=c.clientX;K[a]=c.clientY});n=c.scrollLeft;return!0};u[k]=function(a){g(a,function(a,b){var c=l()-y[a],q=G[a]-b.clientX,c=Math.abs(q)/c;d(c,q?0>q?-1:1:0)});n=null;return!0};u[p]=function(a){var d,q;null==n||g(a,function(a,b){d=G[a]-b.clientX;q=K[a]-b.clientY});if(q&&Math.abs(q)>Math.abs(d))return C=!0;d&&(C=!0,c.scrollLeft=Math.max(0,n+d));return b(a)};if(!a||e)r(f),r(p),r(k),a&&(c.className+=" mstouch");return{kill:function(){w(f);w(p);w(k);q()},swiped:function(){return C},
|
114 |
+
ms:function(){return a},snap:function(b){a&&!e&&(c.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+b+"px)",c.style["-ms-scroll-snap-type"]="mandatory",c.style["-ms-scroll-chaining"]="none")},scroll:function(a,b,d){q();var f=c.scrollLeft,g=a>f?1:-1,y=Math[1===g?"min":"max"],r=Math.round(16*b*g);return h=m.require("$48","fps.js").loop(function(b){b&&(f=Math.max(0,y(a,f+r)),c.scrollLeft=f,a===f&&(q(),d&&d(f)))},c)}}};d.start=function(a,b){return n(a,f,b,!1)};d.move=function(a,b){return n(a,p,b,
|
115 |
+
!1)};d.end=function(a,b){return n(a,k,b,!1)};var g=d.each=function(b,c){if(a)(b.MSPOINTER_TYPE_TOUCH||"touch")===b.pointerType&&c(0,b);else for(var d=-1,f=(b.originalEvent||b).changedTouches||[];++d<f.length;)c(d,f[d])},l=Date.now||function(){return(new Date).getTime()};return d}({},v,z));m.register("$49",function(d,e,m){d.init=function(d){function b(){e.style.top=String(-d.scrollTop)+"px";return!0}function c(){var b=e;b.textContent=d.value;b.innerHTML=b.innerHTML.replace(/[ \t]/g,a).split(/(?:\r\n|\r|\n)/).join('<span class="eol crlf"></span>\r\n')+
|
116 |
+
'<span class="eol eof"></span>';return!0}function a(a){return'<span class="x'+a.charCodeAt(0).toString(16)+'">'+a+"</span>"}var f=d.parentNode,e=f.insertBefore(m.createElement("div"),d);h(d).on("input",c).on("scroll",b);h(f).addClass("has-mirror");e.className="ta-mirror";var k=d.offsetWidth-d.clientWidth;2<k&&(e.style.marginRight=String(k-2)+"px");c();b();return{kill:function(){h(d).off("input",c).off("scroll",b);f.removeChild(e);e=null;h(f).removeClass("has-mirror")}}};return d}({},v,z));m.register("$30",
|
117 |
+
function(d,e,h){function n(a,c){for(var d=0,k=-1,g=c&&e[c],l=b[a]||[],h=l.length;++k<h;)callback=l[k],"function"===typeof callback&&(callback(g),d++);return d}var b={},c;d.load=function(a,c,d){function k(){A&&(clearTimeout(A),A=null);m&&(m.onreadystatechange=null,m=m=m.onload=null);a&&(delete b[a],a=null)}function g(b,c){var f=m&&m.readyState;if(c||!f||"loaded"===f||"complete"===f)c||n(a,d),k()}function l(){if(0===n(a))throw Error('Failed to load "'+(d||a)+'"');k()}if(d&&e[d])"function"===typeof c&&
|
118 |
+
c(e[d]);else if(null!=b[a])b[a].push(c);else{b[a]=[c];var A=setTimeout(l,4E3),m=h.createElement("script");m.setAttribute("src",a);m.setAttribute("async","true");m.onreadystatechange=g;m.onload=g;m.onerror=l;m.onabort=k;h.getElementsByTagName("head")[0].appendChild(m)}};d.stat=function(a){var b;if(!(b=c)){for(var d,e,g=h.getElementsByTagName("script"),l=-1,n=g.length;++l<n;)if(b=g[l].getAttribute("src"))if(d=b.indexOf("/lib/vendor"),-1!==d){e=b.substr(0,d);break}b=c=e||"/static"}return b+a};return d}({},
|
119 |
+
v,z));m.register("$15",function(d,e,B){function n(a,b){a.setReadOnly(!1);a.on("change",function(a,c){return b.val(c.getValue())});a.on("focus",function(a,c){return b.focus()});a.on("blur",function(a,c){return b.blur()})}function b(a){a.off("change");a.off("focus");a.off("blur")}function c(a){b(a);a.setReadOnly(!0);a.setHighlightGutterLine(!1);a.setHighlightActiveLine(!1)}function a(a,b){function c(){this.HighlightRules=d}var d=f(b),g=a.require,e=g("ace/lib/oop");e.inherits(d,g("ace/mode/text_highlight_rules").TextHighlightRules);
|
120 |
+
e.inherits(c,g("ace/mode/text").Mode);return new c}function f(a){var b=p(a);return function(){var c=[{token:"empty_line",regex:"^$"},{token:"constant.language",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{token:"constant.language",regex:"<!\\[CDATA\\["},{token:"constant.language",regex:"\\]\\]>"},{token:"locked",regex:"<(?:xliff:)?(?:g|ph)[^>]*>[^<]*</(?:xliff:)?(?:g|ph)>"},{token:"locked",regex:"<(?:xliff:)?(bx|ex|x)[^/>]*/>"},{token:"constant.language",regex:"</?[:a-z]+[^>]*>"}];
|
121 |
+
b&&c.push({token:"printf printf-"+a,regex:b});c.push({defaultToken:"text"});this.$rules={start:c}}}function p(a){switch(a){case "objc":return"%(?:\\d+\\$)?[-+'0# ]*\\d*(?:\\.\\d+|\\.\\*(?:\\d+\\$)?)?(?:hh?|ll?|[qjzTL])?[sScCdDioOuUxXfFeEgGaAp%@]";case "java":return"%(?:\\d+\\$)?[-+,(0# ]*\\d*(?:\\.\\d+)?(?:[bBhHsScCdoxXeEfgGaA%n]|[tT][A-DFH-IL-NQ-TY-Za-ehj-mpr-sz])";case "php":return"%(?:\\d+\\$)?(?:'.|[-+0 ])*\\d*(?:\\.\\d+)?[suxXbcdeEfFgGo%]";case "auto":return"%(?:\\d+\\$)?(?:[-+0]?\\d*(\\.\\d+)?[duxoefgaDUXOEFGA]|[@scSC%])";
|
122 |
+
case g:return k||"%%"}}var k,g="auto";d.init=function(d,f,k){var p,r=!1,w=k||g,q=d.parentNode,E=q.appendChild(B.createElement("div"));h(q).addClass("has-proxy has-ace");m.require("$30","remote.js").load("https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.6/ace.js",function(b){if(E){if(!b)throw Error("Failed to load code editor");p=b.edit(E);var q=p.session,g=p.renderer;p.$blockScrolling=Infinity;p.setShowInvisibles(r);p.setWrapBehavioursEnabled(!1);p.setBehavioursEnabled(!1);p.setHighlightActiveLine(!1);
|
123 |
+
q.setUseSoftTabs(!1);g.setShowGutter(!0);g.setPadding(10);g.setScrollMargin(8);q.setMode(a(b,w));p.setValue(d.value,-1);q.setUseWrapMode(!0);f?n(p,f):c(p)}},"ace");return{kill:function(){p&&(b(p),p.destroy(),p=null);E&&(q.removeChild(E),h(q).removeClass("has-proxy has-ace"),E=null);return this},disable:function(){p&&c(p);f=null;return this},enable:function(a){f=a;p&&n(p,a);return this},resize:function(){p&&p.resize();return this},val:function(a){p&&a!==p.getValue()&&p.setValue(a,-1);return this},
|
124 |
+
invs:function(a){a=a||!1;r!==a&&(r=a,p&&p.setShowInvisibles(a));return this},strf:function(b){b=b||g;b!==w&&(w=b,p&&p.session.setMode(a(e.ace,b)));return this},focus:function(){return this}}};d.strf=function(a,b){g=a;k=b;return d};return d}({},v,z));m.register("$50",function(d,e,B){function n(a,b){function c(){return b.val(a.getContent())}a.on("input",c);a.on("change",c);a.on("focus",function(){return b.focus()});a.on("blur",function(){return b.blur()});a.setMode("design")}function b(a){a.off("input");
|
125 |
+
a.off("change");a.off("focus");a.off("blur")}function c(a){b(a);a.setMode("readonly")}var a=0;d.load=function(a){var b=m.require("$30","remote.js");b.load(b.stat("/lib/tinymce.min.js"),a,"tinymce");return d};d.init=function(f,e){function k(a){m=a;s="<p>"===a.substr(0,3)&&"</p>"===a.substr(-4);return a.replace(/(<\/?)script/ig,"$1loco:script")}function g(a){l=a;a._getContent=a.getContent;a.getContent=function(a){a=this._getContent(a);a=a.replace(/(<\/?)loco:script/ig,"$1script");if(!s&&"<p>"===a.substr(0,
|
126 |
+
3)&&"</p>"===a.substr(-4)){var b=a.substr(3,a.length-7);if(b===m||-1===b.indexOf("</p>"))a=b}return a};a._setContent=a.setContent;a.setContent=function(a,b){return this._setContent(k(a),b)};e?n(a,e):c(a);h(q).removeClass("loading")}var l,A=!1,m="",s=!1,r=f.parentNode,w=r.parentNode,q=r.appendChild(B.createElement("div")),E=w.insertBefore(B.createElement("nav"),r);E.id="_tb"+String(++a);h(r).addClass("has-proxy has-mce");h(q).addClass("mce-content-body loading").html(k(f.value));d.load(function(a){if(!a)throw Error("Failed to load HTML editor");
|
127 |
+
q&&a.init({inline:!0,target:q,hidden_input:!1,theme:"modern",skin:!1,plugins:"link lists",browser_spellcheck:!0,menubar:!1,fixed_toolbar_container:"#"+E.id,toolbar:"formatselect | bold italic link unlink | bullist numlist outdent indent",block_formats:"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",forced_root_block:"p",relative_urls:!1,convert_urls:!1,remove_script_host:!1,document_base_url:"",allow_script_urls:!1,formats:{alignleft:{classes:"alignleft"},
|
128 |
+
alignright:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"alignright"},aligncenter:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"aligncenter"},strikethrough:{inline:"del"}},fix_list_elements:!0,extended_valid_elements:"span,b,i,u,loco:script",entities:"38,amp,60,lt,62,gt,160,nbsp",entity_encoding:"named",keep_styles:!1,init_instance_callback:g})});return{val:function(a){null==l?h(q).html(a):l.getContent()!==a&&l.setContent(a);return this},kill:function(){l&&(e&&e.val(l.getContent()),b(l),
|
129 |
+
l.destroy(),l=null);q&&(r.removeChild(q),h(r).removeClass("has-proxy has-mce"),q=null);E&&(w.removeChild(E),E=null);return this},enable:function(a){e=a;l&&n(l,a);return this},disable:function(){l&&c(l);e=null;return this},focus:function(){l&&e&&l.focus();return this},invs:function(a){a=a||!1;A!==a&&(A=a,h(r)[a?"addClass":"removeClass"]("show-invs"));return this}}};return d}({},v,z));m.register("$45",function(d,e,B){function n(a){function b(){n&&(m.off("input",d),n=!1)}function d(){var b=a.value;b!==
|
130 |
+
r&&(m.trigger("changing",[b,r]),r=b)}function e(){d();n&&w!==r&&m.trigger("changed",[r])}function g(){c=a;w=r;n||(m.on("input",d),n=!0);m.trigger("editFocus");s.addClass("has-focus");return!0}function l(){c===a&&(c=null);m.trigger("editBlur");s.removeClass("has-focus");n&&(e(),b());return!0}var n=!1,m=h(a),s=h(a.parentNode),r=a.value,w;m.blur(l).focus(g);return{val:function(b){r!==b&&(a.value=b,m.triggerHandler("input"),r=b);return!0},kill:function(){b();m.off("blur",l).off("focus",g)},fire:function(){r=
|
131 |
+
null;d()},ping:e,blur:l,focus:g}}function b(a){this.e=a}var c;d._new=function(a){return new b(a)};d.init=function(a){var c=new b(a);a.disabled?(a.removeAttribute("disabled"),c.disable()):a.readOnly?c.disable():c.enable();return c};TextAreaPrototype=b.prototype;TextAreaPrototype.destroy=function(){this.unlisten();this.e=null};TextAreaPrototype.reload=function(a,b){b?this.l||this.enable():this.l&&this.disable();return this.val(a||"")};TextAreaPrototype.val=function(a){var b=this.e;if(null==a)return b.value;
|
132 |
+
var c=this.l,d=this.p||c;d&&d.val(a);c||b.value===a||(b.value=a,h(b).triggerHandler("input"));return this};TextAreaPrototype.fire=function(){this.l&&this.l.fire();return this};TextAreaPrototype.ping=function(){this.l&&this.l.ping();return this};TextAreaPrototype.focus=function(){var a=this.p;a?a.focus():h(this.e).focus()};TextAreaPrototype.focused=function(){return c&&c===this.el};TextAreaPrototype.parent=function(){return this.e.parentNode};TextAreaPrototype.attr=function(a,b){var c=this.e;if(1===
|
133 |
+
arguments.length)return c.getAttribute(a);null==b?c.removeAttribute(a):c.setAttribute(a,b);return this};TextAreaPrototype.editable=function(){return!!this.l};TextAreaPrototype.enable=function(){var a=this.p;this.e.removeAttribute("readonly");this.listen();a&&a.enable&&a.enable(this.l);return this};TextAreaPrototype.disable=function(){var a=this.p;this.e.setAttribute("readonly",!0);this.unlisten();a&&a.disable&&a.disable();return this};TextAreaPrototype.listen=function(){var a=this.l;a&&a.kill();this.l=
|
134 |
+
n(this.e);return this};TextAreaPrototype.unlisten=function(){this.l&&this.l.kill();this.l=null;return this};TextAreaPrototype.setInvs=function(a,b){var c=this.i||!1;if(b||c!==a)this._i&&(this._i.kill(),delete this._i),(c=this.p)?c.invs&&c.invs(a):a&&(this._i=m.require("$49","mirror.js").init(this.e)),this.i=a;return this};TextAreaPrototype.getInvs=function(){return this.i||!1};TextAreaPrototype.setMode=function(a){var b=this.p;a!==(this.m||"")&&(this.m=a,b&&b.kill(),this.p=b="code"===a?m.require("$15",
|
135 |
+
"ace.js").init(this.e,this.l,this["%"]):"html"===a?m.require("$50","mce.js").init(this.e,this.l):null,this.setInvs(this.i,!0),c&&this.focus());return this};TextAreaPrototype.setStrf=function(a){this["%"]=a;"code"===this.m&&this.p.strf(a);return this};TextAreaPrototype.name=function(a){this.e.setAttribute("name",a);return this};TextAreaPrototype.placeholder=function(a){this.e.setAttribute("placeholder",a);return this};TextAreaPrototype.redraw=function(){var a=this.p;a&&a.resize&&a.resize()};TextAreaPrototype=
|
136 |
+
null;return d}({},v,z));m.register("$46",function(d,e,m){function n(a){var b=e.console;b&&b.error&&b.error(a)}function b(a){var b=m.createElement("div");a&&b.setAttribute("class",a);return b}function c(a){return function(){a.resize();return this}}function a(a){return function(b){var c=b.target.$index;null!=c&&(b.stopImmediatePropagation(),a.select(c));return!0}}function f(a){return function(){a.redrawDirty()&&a.redraw();return!0}}function p(a){return function(b){var c;c=b.keyCode;if(40===c)c=1;else if(38===
|
137 |
+
c)c=-1;else return!0;if(b.shiftKey||b.ctrlKey||b.metaKey||b.altKey)return!0;a.selectNext(c);b.stopPropagation();b.preventDefault();return!1}}function k(a,b,c){function d(a){n("row["+a+"] disappeared");return{cellVal:function(){return""}}}return function(g){var f=b||0,e=c?-1:1,y=a.rows||[];g.sort(function(a,b){return e*(y[a]||d(a)).cellVal(f).localeCompare((y[b]||d(b)).cellVal(f))})}}function g(a){this.w=a}function l(a){this.t=a;this.length=0}function A(a,b,c){var d=m.createElement("div");d.className=
|
138 |
+
c||"";this._=d;this.d=b||[];this.i=a||0;this.length=b.length}function D(a){this.live=a;this.rows=[]}d.create=function(a){return new g(a)};var s=g.prototype;s.init=function(d){var g=this.w,q=g.id,e=g.splity(q+"-thead",q+"-tbody"),l=e[0],e=e[1],k=[],n=[],y=[],G=[];if(d)this.ds=d,this.idxs=n,this._idxs=null;else if(!(d=this.ds))throw Error("No datasource");l.css.push("wg-thead");e.css.push("wg-tbody");d.eachCol(function(a,b,c){y[a]=q+"-col-"+b;G[a]=c||b});for(var m=b(),s=-1,D=y.length,M=b("wg-cols"),
|
139 |
+
B=l.splitx.apply(l,y);++s<D;)B[s].header(G[s]),M.appendChild(m.cloneNode(!1)).setAttribute("for",y[s]);d.eachRow(function(a,b,c){k[a]=new A(a,b,c);n[a]=a});this.rows=k;this.cols=M;this.ww=null;this.root=m=e.body;this.head=l;l.redraw=c(this);l=e.fixed=B[0].bodyY()||20;g.lock().resize(l,e);g.css.push("is-table");g.restyle();this.sc?this._re_sort(D):d.sort&&d.sort(n);this.redrawDirty();this.render();h(m).attr("tabindex","-1").on("keydown",p(this)).on("mousedown",a(this)).on("scroll",f(this));return this};
|
140 |
+
s.clear=function(){for(var a=this.pages||[],b=a.length;0!==b--;)a[b].destroy();this.pages=[];this.sy=this.mx=this.mn=this.vh=null;void 0;return this};s.render=function(){for(var a,b,c=[],d=this.rows||[],g=-1,f,e=this.idxs,y=e.length,l=this.idxr={},k=this.r,h=this._r,p=this.root,n=this.cols;++g<y;){0===g%100&&(a=n.cloneNode(!0),b=new D(a),b.h=2200,b.insert(p),c.push(b));f=e[g];l[f]=g;a=d[f];if(null==a)throw Error("Render error, no data at ["+f+"]");a.page=b;b.rows.push(a)}b&&100!==b.size()&&b.sleepH(22);
|
141 |
+
this.pages=c;this.mx=this.mn=null;this.redrawDirty();this.redraw();null==k?null!=h&&(a=d[h])&&a.page&&(delete this._r,this.select(h,!0)):(a=d[k])&&a.page?this.select(k,!0):(this.deselect(),this._r=k);return this};s.resize=function(){var a=-1,b=this.ww||(this.ww=[]),c=this.w,d=c.cells[0],g=d.body.childNodes,f=g.length,e=this.pages||[],y=e.length;for(c.redraw.call(d);++a<f;)b[a]=g[a].style.width;if(y){c=this.mx;for(a=this.mn;a<=c;a++)e[a].widths(b);this.redrawDirty()&&this.redraw()}};s.redrawDirty=
|
142 |
+
function(){var a=!1,b=this.root,c=b.scrollTop,b=b.clientHeight;this.sy!==c&&(a=!0,this.sy=c);this.vh!==b&&(a=!0,this.vh=b);return a};s.redraw=function(){for(var a=0,b=-1,c=null,d=null,g=this.ww,f=this.sy,e=this.vh,y=this.mn,l=this.mx,k=Math.max(0,f-100),f=e+f+100,h=this.pages||[],p=h.length;++b<p&&!(a>f);)e=h[b],a+=e.height(),a<k||(null===c&&(c=b),d=b,e.rendered||e.render(g));if(y!==c){if(null!==y&&c>y)for(b=y;b<c;b++){e=h[b];if(!e)throw Error("Shit!");e.rendered&&e.sleep()}this.mn=c}if(l!==d){if(null!==
|
143 |
+
l&&d<l)for(b=l;b>d;b--)e=h[b],e.rendered&&e.sleep();this.mx=d}};s.selected=function(){return this.r};s.thead=function(){return this.w.cells[0]};s.tbody=function(){return this.w.cells[1]};s.tr=function(a){return(a=this.rows[a])?a.cells():[]};s.td=function(a,b){return this.tr(a)[b]};s.next=function(a,b,c){null==c&&(c=this.r||0);var d=this.idxs,g=d.length,f=(this.idxr||{})[c];for(c=f;c!==(f+=a)&&!(0<=f&&g>f);)if(b&&g)f=1===a?-1:g,b=!1;else return null;c=d[f];return null==c||null==this.rows[c]?(n("Bad next: ["+
|
144 |
+
f+"] does not map to data row"),null):c};s.selectNext=function(a,b,c){a=this.next(a,b);null!=a&&this.r!==a&&this.select(a,c);return this};s.deselect=function(a){var b=this.r;null!=b&&(this.r=null,h(this.tr(b)).removeClass("selected"),this.w.fire("wgRowDeselect",[b,a]));return this};s.selectRow=function(a,b){return this.select(this.idxs[a])};s.select=function(a,b){var c=this.rows[a],d=c&&c.page;if(!d)return this.deselect(!1),n("Row is filtered out"),this;this.deselect(!0);var g,f=this.w.cells[1];d.rendered||
|
145 |
+
(g=d.top(),f.scrollY(g),this.redrawDirty()&&this.redraw());if(!c.rendered)return d.rendered||n("Failed to render page"),n("Row ["+c.i+"] not rendered"),this;d=c.cells();h(d).addClass("selected");this.r=a;b||(g=f.scrollY(),h(this.root).focus(),g!==f.scrollY()&&f.scrollY(g));f.scrollTo(d[0],!0);this.w.fire("wgRowSelect",[a,c.data()]);return this};s.unfilter=function(){this._idxs&&(this.idxs=this._sort(this._idxs),this._idxs=null,this.clear().render());return this};s.filter=function(a){this._idxs||(this._idxs=
|
146 |
+
this.idxs);this.idxs=this._sort(a);return this.clear().render()};s.each=function(a){for(var b,c=-1,d=this.rows||[],g=this.idxs||[],f=g.length;++c<f;)b=g[c],a(d[b],c,b);return this};s.sortable=function(a){var b=this.sc||(this.sc=new l(this));b.has(a)||b.add(a);return this};s._re_sort=function(a){var b=-1,c=this.sc,d=c.active;for(this.sc=c=new l(this);++b<a;)c.add(b);d&&(b=this.head.indexOf(d.id),-1===b&&(b=Math.min(d.idx,a-1)),this.sort(b,d.desc));return this};s._sort=function(a,b){b?(this.s=b,b(a)):
|
147 |
+
(b=this.s)&&b(a);return a};s.sort=function(a,b){this._sort(this.idxs,k(this,a,b));this.sc.activate(a,b);return this};s=null;s=l.prototype;s.has=function(a){return null!=this[a]};s.add=function(a){var b=this,c=b.t.head.cells[a];b[a]={desc:null,idx:a,id:c.id};b.length++;c.addClass("wg-sortable").on("click",function(c){if("header"===c.target.nodeName.toLowerCase())return c.stopImmediatePropagation(),b.toggle(a),!1});return b};s.toggle=function(a){this.t.sort(a,!this[a].desc).clear().render();return this};
|
148 |
+
s.activate=function(a,b){var c,d;c=this.active;var g=this[a],f=this.t.head.cells;c&&(d=f[c.idx])&&(d.removeClass(c.css),c!==g&&d.restyle());(d=f[a])?(g.desc=b,this.active=g,c="wg-"+(b?"desc":"asc"),d.addClass(c).restyle(),g.css=c):this.active=null;return this};s=null;s=A.prototype;s.render=function(a){var b,c=[],d=this._,g=this.d,f=this.length;if(d){for(;0!==f--;)c[f]=b=d.cloneNode(!1),b.textContent=g[f]()||"\u00a0",b.$index=this.i,a[f].appendChild(b);this._=null;this.c=c}else for(c=this.c;0!==f--;)a[f].appendChild(c[f]);
|
149 |
+
this.rendered=!0;return this};s.cells=function(){return this.c||[]};s.data=function(){for(var a=-1,b=[],c=this.length;++a<c;)b[a]=this.cellVal(a);return b};s.destroy=function(){this.page=null;this.rendered=!1};s.cellVal=function(a){return this.d[a]()};s=null;s=D.prototype;s.size=function(){return this.rows.length};s.insert=function(a){var c=this.h,d=b("wg-dead");d.style.height=String(c)+"px";a.appendChild(d);return this.dead=d};s.top=function(){return(this.rendered?this.live:this.dead).offsetTop};
|
150 |
+
s.height=function(){var a=this.h;null==a&&(this.h=a=this.rendered?this.live.firstChild.offsetHeight:this.dead.offsetHight);a||n("row has zero height");return a};s.render=function(a){for(var b,c=-1,d=this.rows,g=d.length,f=this.dead,e=this.live,y=e.childNodes;++c<g;)b=d[c],b.rendered||b.render(y);g=a.length;for(c=0;c<g;c++)y[c].style.width=a[c];f.parentNode.replaceChild(e,f);this.rendered=!0;this.h=null;return this};s.sleep=function(){var a=this.height(),b=this.live,c=this.dead;c.style.height=String(a)+
|
151 |
+
"px";b.parentNode.replaceChild(c,b);this.rendered=!1;this.h=a;return this};s.sleepH=function(a){a*=this.rows.length;var b=this.dead;b&&(b.style.height=String(a)+"px");this.rendered||(this.h=a);return this};s.widths=function(a){for(var b=this.live.childNodes,c=a.length;0!==c--;)b[c].style.width=a[c];return this};s.destroy=function(){var a=this.rendered?this.live:this.dead,b=this.rows,c=b.length;for(a.parentNode.removeChild(a);0!==c--;)b[c].destroy()};s=null;return d}({},v,z));m.register("$38",function(d,
|
152 |
+
e,B){function n(a,b){var c=a.id,d=c&&s[c],g=d&&d.parent();if(!d||!g)return null;var f=g.dir===D,c=f?"X":"Y",e="page"+c,f=f?A:l,k=f(g.el),c=b["offset"+c],h=g.el,p=h.className;null==c&&(c=b[e]-f(a));c&&(k+=c);h.className=p+" is-resizing";return{done:function(){h.className=p},move:function(a){g.resize(a[e]-k,d);return!0}}}function b(b,c){function d(){h(B).off("mousemove",g);w&&(w.done(),w=null);return!0}function g(a){w?w.move(a):d();return!0}if(w)return!0;w=n(b.target,b);if(!w)return!0;h(B).one("mouseup",
|
153 |
+
d).on("mousemove",g);return a(b)}function c(a,b){var c=b.type;"touchmove"===c?w&&w.move(b):"touchstart"===c?w=n(a.target,b):"touchend"===c&&w&&(w.done(),w=null)}function a(a){a.stopPropagation();a.preventDefault();return!1}function f(a){var b=r;b&&b.redraw();a&&a.redraw();return r=a}function p(a,b){var c=h(b).on("editFocus",function(){c.trigger("wgFocus",[f(a)])}).on("editBlur",function(){c.trigger("wgBlur",[f(null)])})}function k(a){var b=a.id,c=a.className;this.id=b;this.el=a;this.pos=this.index=
|
154 |
+
0;this.css=[c||"wg-root","wg-cell"];this._cn=c;s[b]=this;this.clear()}var g=m.require("$18","html.js"),l=g.top,A=g.left,D=1,s={},r,w=!1;d.init=function(a){var d=new k(a);d.redraw();m.require("$44","touch.js").ok(function(b){b.dragger(a,c)});h(a).mousedown(b);return d};e=k.prototype;e.fire=function(a,b){var c=h.Event(a);c.cell=this;h(this.el).trigger(c,b);return this};e.each=function(a){for(var b=-1,c=this.cells,d=c.length;++b<d;)a(c[b],b);return this};e.indexOf=function(a){return(a=s[a.id||String(a)])&&
|
155 |
+
a.pid===this.id?a.index:-1};e.on=function(){return this.$("on",arguments)};e.off=function(){return this.$("off",arguments)};e.find=function(a){return h(this.el).find(a)};e.$=function(a,b){h.fn[a].apply(h(this.el),b);return this};e.addClass=function(a){this.css.push(a);return this};e.removeClass=function(a){a=this.css.indexOf(a);-1!==a&&this.css.splice(a,1);return this};e.parent=function(){return this.pid&&s[this.pid]};e.splitx=function(){return this._split(D,arguments)};e.splity=function(){return this._split(2,
|
156 |
+
arguments)};e._split=function(a,b){(this.length||this.field)&&this.clear();for(var c=-1,d,f=b.length,e=1/f,l=0;++c<f;){d=g.el();this.body.appendChild(d);for(var h=d,p=b[c],n=p,m=1;s[p];)p=n+"-"+ ++m;h.id=p;d=new k(d);d.index=c;d.pid=this.id;d.pos=l;l+=e;this.cells.push(d);this.length++}this.dir=a;this.redraw();return this.cells};e.destroy=function(){this.clear();delete s[this.id];var a=this.el;a.innerHTML="";this.body=null;a.className=this._cn||"";h(a).off();return this};e.exists=function(){return this===
|
157 |
+
s[this.id]};e.clear=function(){for(var a=this.el,b=this.cells,c=this.field,d=this.body,f=this.nav,e=this.length||0;0!==e--;)delete s[b[e].destroy().id];this.cells=[];this.length=0;f&&(a.removeChild(f),this.nav=null);d&&(c&&(g.ie()&&h(d).triggerHandler("blur"),c.destroy(),this.field=null),this.table&&(this.table=null),a.removeChild(d));this.body=a.appendChild(g.el("","wg-body"));this._h=null;return this};e.resize=function(a,b){if(!b&&(b=this.cells[1],!b))return;var c=b.index,d=this.cells;this.parent();
|
158 |
+
var g=h(this.el)[this.dir===D?"width":"height"](),f=d[c+1],c=d[c-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(f?f.pos*g:g)-pad;min=c?c.pos*g:0;b.pos=Math.min(max,Math.max(min,a))/g;this.redraw();return this};e.distribute=function(a){for(var b=-1,c=0,d,g=this.cells,f=a.length;++b<f&&(d=g[++c]);)d.pos=Math.max(0,Math.min(1,a[b]));this.redraw();return this};e.distribution=function(){for(var a=[],b=0,c=this.cells,d=c.length-1;b<d;)a[b]=c[++b].pos;return a};e.restyle=function(){var a=this.css.concat();
|
159 |
+
0===this.index?a.push("first"):a.push("not-first");this.dir&&(a.push("wg-split"),2===this.dir?a.push("wg-split-y"):a.push("wg-split-x"));this.t&&a.push("has-title");this.nav&&a.push("has-nav");this.field&&(a.push("is-field"),this.field.editable()?a.push("is-editable"):a.push("is-readonly"));a=a.join(" ");a!==this._css&&(this._css=a,this.el.className=a);return this};e.redraw=function(a){this.restyle();var b=this.el,c=this.body,d=this.field;if(c){var g,f=b.clientWidth||0,e=b.clientHeight||0,l=c.offsetTop||
|
160 |
+
0,e=l>e?0:e-l;this._h!==e&&(this._h=e,c.style.height=String(e)+"px",g=d);this._w!==f&&(this._w=f,g=d);g&&g.redraw()}c=this.length;f=1;e=this.nav;for(l=2===this.dir?"height":"width";0!==c--;)d=this.cells[c],e?g=1:(d.fixed&&(d.pos=d.fixed/h(b)[l]()),g=f-d.pos,f=d.pos),d.el.style[l]=String(100*g)+"%",d.redraw(a);return this};e.contents=function(a,b){var c=this.el,d=this.body;if(null==a)return d.innerHTML;this.length?this.clear():d&&(c.removeChild(d),d=null);d||(this.body=d=c.appendChild(g.el("",b||"wg-content")),
|
161 |
+
this._h=null,(c=this.lang)&&this._locale(c,this.rtl,!0));"string"===typeof a?h(d)._html(a):a&&this.append(a);this.redraw();return this};e.textarea=function(a,b){var c=this.field;if(c){var d=c.editable();c.reload(a,b);d!==b&&this.restyle()}else this.length&&this.clear(),d=g.el("textarea"),d.setAttribute("wrap","virtual"),d.value=a,this.contents(d),c=m.require("$45","field.js")._new(d)[b?"enable":"disable"](),p(this,d),this.field=c,this.restyle();this.lang||this.locale("en");return c};e.locale=function(a){a=
|
162 |
+
m.require("$36","locale.js").cast(a);return this._locale(String(a),a.isRTL())};e._locale=function(a,b,c){var d=this.body;if(c||a!==this.lang)this.lang=a,d&&d.setAttribute("lang",a);if(c||b!==this.rtl)this.rtl=b,d&&d.setAttribute("dir",b?"RTL":"LTR");return this};e.editable=function(){var a=this.field;if(a)return a.editable()?a:null;var b=this.cells,c=b.length,d=this.navigated();if(null!=d)return b[d].editable();for(;++d<c;){for(d=0;d<c;c++);if(a=b[d].editable())return a}};e.eachTextarea=function(a){var b=
|
163 |
+
this.field;b?a(b):this.each(function(b){b.eachTextarea(a)});return this};e.append=function(a){a&&(a.nodeType?g.init(this.body.appendChild(a)):g.init(h(a).appendTo(this.body)));return this};e.prepend=function(a){var b=this.body;if(a.nodeType){var c=b.firstChild;g.init(c?b.insertBefore(a,c):b.appendChild(a))}else g.init(h(a).prependTo(b));return this};e.before=function(a){var b=this.body;a.nodeType?g.init(this.el.insertBefore(a,b)):g.init(h(a).insertBefore(b));return this};e.header=function(a,b){if(null==
|
164 |
+
a&&null==b)return this.el.getElementsByTagName("header")[0];this.t=g.txt(a||"");this.el.insertBefore(g.el("header",b),this.body).appendChild(this.t);this.redraw();return this};e.title=function(a){var b=this.t;if(b)return b.nodeValue=a||"",b;this.header(a);return this.t};e.titled=function(){var a=this.t;return a&&a.nodeValue};e.bodyY=function(){return l(this.body,this.el)};e.scrollY=function(a){if(T===a)return this.body.scrollTop;this.body.scrollTop=a};e.tabulate=function(a){var b=this.table;b?b.clear():
|
165 |
+
b=m.require("$46","wgtable.js").create(this);b.init(a);return this.table=b};e.lock=function(){this.body.className+=" locked";return this};e.scrollTo=function(a,b){var c,d=this.body;c=d.scrollTop;var g=l(a,d);if(c>g)c=g;else{var f=d.clientHeight,g=g+h(a).outerHeight();if(f+c<g)c=g-f;else return}b?d.scrollTop=c:h(d).stop(!0).animate({scrollTop:c},250)};e.navigize=function(b,c){function d(a){var b=e[a],c=k[a],g=h(b.el).show();c.addClass("active");l=a;p.data("idx",a);b.fire("wgTabSelect",[a]);return g}
|
166 |
+
var f=this,e=f.cells,y=f.nav,l,k=[];y&&f.el.removeChild(y);var y=f.nav=f.el.insertBefore(g.el("nav","wg-tabs"),f.body),p=h(y).on("click",function(b){var c=h(b.target).data("idx");if(null==c)return!0;if(null!=l){var g=k[l];h(e[l].el).hide();g.removeClass("active")}d(c);f.redraw();return a(b)});null==c&&(c=p.data("idx")||0);f.each(function(a,c){k[c]=h('<a href="#'+a.id+'"></a>').data("idx",c).text(b[c]).appendTo(p);a.pos=0;h(a.el).hide()});d(e[c]?c:0);f.lock();f.redraw();return f};e.navigated=function(){var a=
|
167 |
+
this.nav;if(a)return h(a).data("idx")};e=null;return d}({},v,z));m.register("$26",function(d,e,h){function n(){this.reIndex([])}d.init=function(){return new n};e=n.prototype;e.reIndex=function(b){for(var c={},a=-1,d=b.length;++a<d;)c[b[a]]=a;this.keys=b;this.length=a;this.ords=c};e.key=function(b,c){if(null==c)return this.keys[b];var a=this.keys[b],d=this.ords[c];if(c!==a){if(null!=d)throw Error("Clash with item at ["+d+"]");this.keys[b]=c;delete this.ords[a];this.ords[c]=b}return b};e.indexOf=function(b){b=
|
168 |
+
this.ords[b];return null==b?-1:b};e.add=function(b,c){var a=this.ords[b];null==a&&(this.keys[this.length]=b,a=this.ords[b]=this.length++);this[a]=c;return a};e.get=function(b){return this[this.ords[b]]};e.has=function(b){return null!=this.ords[b]};e.del=function(b){this.cut(this.ords[b],1)};e.cut=function(b,c){c=c||1;var a=[].splice.call(this,b,c);this.keys.splice(b,c);this.reIndex(this.keys);return a};e.each=function(b){for(var c=-1,a=this.keys,d=this.length;++c<d;)b(a[c],this[c],c);return this};
|
169 |
+
e.sort=function(b){for(var c=-1,a=this.length,d,e=this.keys,k=this.ords,g=[];++c<a;)g[c]=[this[c],e[c]];g.sort(function(a,c){return b(a[0],c[0])});for(c=0;c<a;c++)d=g[c],this[c]=d[0],d=d[1],e[c]=d,k[d]=c;return this};e.join=function(b){return[].join.call(this,b)};e=null;return d}({},v,z));m.register("$24",function(d,e,B){function n(a){var b=[];a&&(a.saved()||b.push("po-unsaved"),a.fuzzy()?b.push("po-fuzzy"):a.flagged()&&b.push("po-flagged"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));
|
170 |
+
return b.join(" ")}function b(a,b,c){b=h(a.title(b).parentNode);var d=b.find("span.lang");c?(c=m.require("$36","locale.js").cast(c),d.length||(d=h("<span></span>").prependTo(b)),d.attr("lang",c.lang).attr("class",c.getIcon()||"lang region region-"+(c.region||"zz").toLowerCase())):(d.remove(),c="en");a.locale(c);return b}function c(){this.dirty=0}var a="poUpdate",f="changing",p="changed",k=0,g=1,l=2,A=3,D=4,s=5,r=/^\s+/,w,q,E=m.require("$3","string.js").sprintf,v=m.require("$18","html.js");d.extend=
|
171 |
+
function(a){return a.prototype=new c};d.localise=function(a){q=a;return d};var z=function(){var a=B.createElement("p");return function(b){a.innerHTML=b.replace("src=","x=");return a.textContent}}(),u=c.prototype=m.require("$37","abstract.js").init(["getListColumns","getListHeadings","getListEntry"],["editable","t"]);u.init=function(){this.localise();this.editable={source:!0,target:!0};this.mode="";this.html=!1;return this};u.localise=function(a){a||(a=q||m.require("$1","t.js").init());var b=[];b[k]=
|
172 |
+
a._x("Source text","Editor")+":";b[A]=a._x("%s translation","Editor")+":";b[D]=a._x("Context","Editor")+":";b[s]=a._x("Comments","Editor")+":";b[g]=a._x("Single","Editor")+":";b[l]=a._x("Plural","Editor")+":";b[6]=a._x("Untranslated","Editor");b[7]=a._x("Translated","Editor");b[8]=a._x("Fuzzy","Editor");this.labels=b;this.t=a;return this};u.setRootCell=function(a){function b(a){c.redraw(!0,a);return!0}var c=m.require("$38","wingrid.js").init(a);h(e).on("resize",b);this.redraw=b;h(a).on("wgFocus wgBlur",
|
173 |
+
function(a,b){a.stopPropagation();w=b});this.destroy=function(){c.destroy();h(e).off("resize",b)};this.rootDiv=a;return c};u.$=function(){return h(this.rootDiv)};u.setListCell=function(a){var b=this;b.listCell=a;a.on("wgRowSelect",function(a,c){b.loadMessage(b.po.row(c));return!0}).on("wgRowDeselect",function(a,c,d){d||b.loadNothing();return!0})};u.setSourceCell=function(a){this.sourceCell=a;a=a.find("p.notes");this.$notes=a.length?a:null};u.setTargetCell=function(a){this.targetCell=a;a=a.find("p.errors");
|
174 |
+
this.$errs=a.length?a:null};u.next=function(a,b,c){for(var d=this.listTable,g=d.selected(),f=g,e,l=this.po;null!=(g=d.next(a,c,g));){if(f===g){g=null;break}if(b&&(e=l.row(g),e.translated(0)))continue;break}null!=g&&d.select(g,!0);return g};u.current=function(a){var b=this.active;if("undefined"===typeof a)return b;a?a.is(b)?this.reloadMessage(a):this.loadMessage(a):this.unloadActive();return this};u.getTargetOffset=function(){if(this.active)return this.targetCell&&this.targetCell.navigated()||0};u.getTargetEditable=
|
175 |
+
function(){return this.editable.target&&this.targetCell&&this.targetCell.editable()};u.getSourceEditable=function(){return this.editable.source&&this.sourceCell&&this.sourceCell.editable()};u.getContextEditable=function(){return this.editable.context&&this.contextCell&&this.contextCell.editable()};u.getFirstEditable=function(){return this.getTargetEditable()||this.getSourceEditable()||this.getContextEditable()};u.searchable=function(a){a&&(this.dict=a,this.po&&this.rebuildSearch());return this.dict&&
|
176 |
+
!0};u.rebuildSearch=function(){var a=-1,b=this.po.rows,c=b.length,d=this.dict;for(d.clear();++a<c;)d.add(a,b[a].toText())};u.filtered=function(){return this.lastSearch||""};u.filter=function(a,b){var c,d=this.listTable,g=this.lastFound,f=this.lastSearch;if(a){if(f===a)return g||0;if(f&&!g&&0===a.indexOf(f))return 0;c=this.dict.find(a)}this.lastSearch=f=a;this.lastFound=g=c?c.length:this.po.length;c?d.filter(c):d.unfilter();b||this.fire("poFilter",[f,g]);return g};u.countFiltered=function(){return this.lastSearch?
|
177 |
+
this.lastFound:this.po.length};u.unsave=function(a,b){var c=!1;if(a=a||self.active){if(c=a.saved(b))this.dirty++,a.unsave(b),this.fire("poUnsaved",[a,b]);this.markUnsaved(a)}return c};u.markUnsaved=function(a){var b=this.po.indexOf(a);if(b=this.listTable.tr(b)){var c=b[0].className;changedStyle=c.replace(/(?:^| +)po-[a-z]+/g,"")+" "+n(a);changedStyle!==c&&h(b).attr("class",changedStyle)}};u.save=function(a){var b=this.po;if(this.dirty||a)b.each(function(a,b){b.save()}),this.listCell.find("div.po-unsaved").removeClass("po-unsaved"),
|
178 |
+
this.dirty=0,this.fire("poSave");return b};u.fire=function(a,b){var c=this.handle;if(c&&c[a]&&(c=c[a].apply(this,b||[]),!1===c))return!1;c=h.Event(a);this.$().trigger(c,b);return!c.isDefaultPrevented()};u.on=function(a,b){this.$().on(a,b);return this};u.getSorter=function(){return null};u.reload=function(){var a=this,b,c=a.listCell,d=a.listTable,g=a.po,f=g&&g.locale(),e=f&&f.isRTL(),l=g&&g.length||0;if(g&&g.row){a.lastSearch&&(a.lastSearch="",a.lastFound=l,a.fire("poFilter",["",l]));d&&(b=d.thead().distribution());
|
179 |
+
a.listTable=d=c.tabulate({eachCol:function(b){var c,d,g=a.getListColumns(),f=a.getListHeadings();for(d in g)c=g[d],b(c,d,f[c])},eachRow:function(b){g.each(function(c,d){b(d.idx,a.getListEntry(d),n(d))})},sort:a.getSorter()});var k,c=a.getListColumns();for(k in c)d.sortable(c[k]);b&&d.thead().distribute(b);d.tbody().$(e?"addClass":"removeClass",["is-rtl"]);a.targetLocale=f;a.fire("poLoad");return!!l}c&&c.clear().header("Error").contents("Invalid messages list")};u.load=function(a,b){this.po=a;this.dict&&
|
180 |
+
this.rebuildSearch();this.reload()&&(-1!==b?this.listTable.selectRow(b||0):this.active&&this.unloadActive())};u.pasteMessage=function(a){var b,c=0;(b=this.sourceCell)&&b.eachTextarea(function(b){b.val(a.source(null,c++))});(b=this.contextCell)&&b.eachTextarea(function(b){b.val(a.context())});if(b=this.targetCell)c=0,b.eachTextarea(function(b){b.val(a.translation(c++))});this.updateListCell(a,"source");this.updateListCell(a,"target");return this};u.reloadMessage=function(a){var b,c;this.pasteMessage(a);
|
181 |
+
(b=this.sourceCell)&&this.setNotes(a.notes())&&b.redraw();if(b=this.targetCell)c=b.navigated()||0,this.setErrors(a.errors(c))&&b.redraw();return this};u.setStatus=function(){return null};u.setNotes=function(a){var b=!1,c=this.$notes;a?(c||(this.$notes=c=h('<p class="notes"></p>').insertAfter(this.sourceCell.header())),a=v.h(a,!0),c.html(a).show(),v.init(c),b=!0):c&&c.text()&&(c.text("").hide(),b=!0);return b};u.setErrors=function(a){var b=!1,c=this.$errs;a&&a.length?(c||(this.$errs=c=h('<p class="errors"></p>').insertAfter(this.targetCell.header())),
|
182 |
+
c.html(v.h(a.join(".\n")+".",!0)).show(),v.init(c),b=!0):c&&c.text()&&(c.text("").hide(),b=!0);return b};u.loadMessage=function(c){function d(a){var f,h=a,h=a.id;f=N[k];a.off();a.titled()!==f&&b(a,f,u.sourceLocale||"en");u.setNotes(c.notes())&&a.clear();W?(f=a.splity(h+"-singular",h+"-plural"),h=f[0],f=f[1],h.header(N[g]).textarea(X,O).setStrf(F).setMode(B).setInvs(z),f.header(N[l]).textarea(W,O).setStrf(F).setMode(B).setInvs(z),a.lock(),O&&(e(h,0),e(f,1))):(a.textarea(X,O).setStrf(F).setMode(B).setInvs(z),
|
183 |
+
O&&e(a,0))}function e(b,d){b.on(f,function(a,b){1===d?c.plural(b):(c.source(b),u.updateListCell(c,"source"));u.unsave(c,d)}).on(p,function(){0===d&&u.po.reIndex(c);u.dict&&u.rebuildSearch();u.fire(a,[c])})}function h(a,d,g){L&&a.eachTextarea(function(a){a.ping()});a.off();var f=d.isKnown()&&d.label||"Target",f=E(N[A],f);a.titled()!==f&&b(a,f,d);u.setErrors(c.errors(g))&&a.clear();u.setStatus(c,g);if(c.pluralized()){var e=[],l=d.plurals||["One","Other"],k=m.require("$26","collection.js").init();for(c.each(function(a,
|
184 |
+
b,c){if(c||l[a])e.push(l[a]||"Form "+a),k.add("plural-"+a,c)});(f=e.length)<d.nplurals;)e.push(l[f]||"Form "+k.length),k.add("plural-"+f,c.translation(f));children=a.splitx.apply(a,k.keys);a.each(function(a,b){var d=L&&!c.disabled(b);a.textarea(k[b],d).setStrf(F).setMode(B).setInvs(z);L&&n(a,b)});a.navigize(e,g||null).on("wgTabSelect",function(a,b){var d=L&&a.cell.editable();d&&d.focus();u.setErrors(c.errors(b));u.setStatus(c,b);u.fire("poTab",[b])})}else L=L&&!c.disabled(0),a.textarea(c.translation(),
|
185 |
+
L).setStrf(F).setMode(B).setInvs(z),L&&n(a,0)}function n(b,d){b.on(f,function(a,b,g){c.translate(b,d);0===d&&u.updateListCell(c,"target");c.fuzzy(d)?u.fuzzy(!1,c,d):u.unsave(c,d);""===b?u.fire("poEmpty",[!0,c,d]):""===g&&u.fire("poEmpty",[!1,c,d])}).on(p,function(){u.dict&&u.rebuildSearch();u.fire(a,[c])})}function r(d){d.off();var g=N[D];d.titled()!==g&&(b(d,g),u.setStatus(null));d.textarea(c.context(),!0).setMode(B).setInvs(z);T&&d.on(f,function(a,b){c.context(b);u.updateListCell(c,"source");u.unsave(c,
|
186 |
+
S)}).on(p,function(){u.po.reIndex(c);u.dict&&u.rebuildSearch();u.fire(a,[c])})}function q(a){var d=N[s];a.titled()!==d&&b(a,d);a.off().on(f,function(a,b){c.comment(b);u.fire("poComment",[c,b]);u.unsave(c,S)}).textarea(c.comment(),!0)}var u=this,B=u.mode,v=c.isHTML(),z=u.inv||!1,C=this.fmt||null,F=c.format()||null,J=c.is(u.active),S=0,Q=u.sourceCell,U=u.targetCell,V=u.contextCell,Y=u.commentCell,L=u.editable.target,O=u.editable.source,T=u.editable.context,X=c.source()||"",W=c.plural()||"",P=w,Z=u.targetLocale,
|
187 |
+
N=u.labels;u.html!==v&&(u.html=v,"code"!==u.mode&&(B=v?"html":"",u.setMode(B)));u.active=c;Q&&d(Q);V&&r(V);U&&Z&&(S=U.navigated()||0,h(U,Z,S));Y&&q(Y);P&&(P.exists()||(P=P.parent()),(v=P.editable())&&v.focus());C!==F&&(this.fmt=F);J||u.fire("poSelected",[c])};u.unloadActive=function(){var a;(a=this.$notes)&&a.text("").hide();(a=this.$errs)&&a.text("").hide();(a=this.sourceCell)&&a.off().clear();(a=this.contextCell)&&a.off().clear();(a=this.targetCell)&&a.off().clear();(a=this.commentCell)&&a.off();
|
188 |
+
this.active&&(this.fire("poDeselected",[this.active]),this.active=null);return this};u.loadNothing=function(){var a,b=this.t,c=this.mode||"",d=this.inv||!1,g=this.fmt;this.unloadActive();this.setStatus(null);(a=this.commentCell)&&a.textarea("",!1);if(a=this.sourceCell)a.textarea("",!1).setStrf(g).setMode(c).setInvs(d),a.title(b._x("Source text not loaded","Editor")+":");if(a=this.contextCell)a.textarea("",!1).setMode(c).setInvs(d),a.title(b._x("Context not loaded","Editor")+":");if(a=this.targetCell)a.textarea("",
|
189 |
+
!1).setStrf(g).setMode(c).setInvs(d),a.title(b._x("Translation not loaded","Editor")+":");this.fire("poSelected",[null])};u.updateListCell=function(a,b){var c=this.getListColumns()[b],d=this.getListEntry(a)[c||0](),g=this.po.indexOf(a);if(c=this.listTable.td(g,c))c.textContent=d};u.cellText=function(a){if(-1!==a.indexOf("<")||-1!==a.indexOf("&"))a=z(a);return a.replace(r,"")||"\u00a0"};u.fuzzy=function(a,b,c){var d=4===this.flag(null,b,c);!0!==a||d?!1===a&&d&&this.flag(0,b,c)&&this.fire("poFuzzy",
|
190 |
+
[b,!1,c]):this.flag(4,b,c)&&this.fire("poFuzzy",[b,!0,c]);return d};u.flag=function(b,c,d){if(!c&&(c=this.active,d=this.getTargetOffset(),null==d))return null;var g=c.flagged(d);if(null==b)return g;if(g===b||b&&!c.translated(d)||!this.fire("poFlag",[b,g,c,d]))return!1;c.flag(b,d);this.fire(a,[c])&&this.unsave(c,d);this.setStatus(c,d);return!0};u.add=function(b,c){var d,g=this.po.get(b,c);g?d=this.po.indexOf(g):(d=this.po.length,g=this.po.add(b,c),this.load(this.po,-1),this.fire("poAdd",[g]),this.fire(a,
|
191 |
+
[g]));this.lastSearch&&this.filter("");this.listTable.select(d);return g};u.del=function(b){if(b=b||this.active){var c=this.lastSearch,d=this.po.del(b);null!=d&&(this.unsave(b),this.fire("poDel",[b]),this.fire(a,[b]),this.reload(),this.dict&&this.rebuildSearch(),this.active&&this.active.equals(b)&&this.unloadActive(),this.po.length&&(c&&this.filter(c),this.active||(d=Math.min(d,this.po.length-1),this.listTable.select(d))))}};u.setMono=function(a){return this.setMode(a?"code":this.html?"html":"")};
|
192 |
+
u.setMode=function(a){this.mode!==a&&(this.mode=a,this.callTextareas(function(b){b.setMode(a)}));return this};u.getMono=function(){return"code"===this.mode};u.setInvs=function(a){(this.inv||!1)!==a&&(this.inv=a,this.callTextareas(function(b){b.setInvs(a)}),this.fire("poInvs",[a]));return this};u.getInvs=function(){return this.inv||!1};u.callTextareas=function(a){var b=this.targetCell;b&&b.eachTextarea(a);(b=this.contextCell)&&b.eachTextarea(a);(b=this.sourceCell)&&b.eachTextarea(a);return this};u.focus=
|
193 |
+
function(){var a=this.getTargetEditable();a&&a.focus();return this};u=null;return d}({},v,z));m.register("$25",function(d,e,h){Number.prototype.format=function(d){d=Math.pow(10,d||0);var b=Math.round(d*this)/d;d=[];var b=String(b),c=b.split("."),b=c[0],c=c[1],a=b.length;do d.unshift(b.substring(a-3,a));while(0<(a-=3));b=d.join(",");if(d=c){d=c;for(var f,c=d.length;"0"===d.charAt(--c);)f=c;f&&(d=substring(0,f));d=c=d}d&&(b+="."+c);return b};Number.prototype.percent=function(d){var b=0,c=this&&d?100*
|
194 |
+
(this/d):0;if(0===c)return"0";if(100===c)return"100";if(99<c)c=Math.min(c,99.9),d=c.format(++b);else if(0.5>c){c=Math.max(c,1E-4);do d=c.format(++b);while("0"===d&&4>b);d=d.substr(1)}else d=c.format(0);return d};return d}({},v,z));m.register("$12",function(d,e,h){function n(){this.init()._validate();this.sourceLocale={lang:"en",label:"English",plurals:["One","Other"]}}e=m.require("$24","base.js");m.require("$25","number.js");d.init=function(b){var c=new n;b=c.setRootCell(b);var a=b.splity("po-list",
|
195 |
+
"po-edit"),d=a[0],e=a[1],a=e.splitx("po-trans","po-comment"),k=a[0],g=a[1].header("Loading.."),a=k.splity("po-source","po-target"),k=a[0].header("Loading.."),a=a[1].header("Loading..");b.distribute([0.34]);e.distribute([0.8]);c.setListCell(d);c.setSourceCell(k);c.setTargetCell(a);c.commentCell=g;c.editable.source=!1;return c};e=n.prototype=e.extend(n);e.getListHeadings=function(){var b=this.t||{_x:function(b){return b}};return[b._x("Source text","Editor"),b._x("Translation","Editor")]};e.getListColumns=
|
196 |
+
function(){return{source:0,target:1}};e.getListEntry=function(b){flatten=this.cellText;return[function(){var c=flatten(b.source()||""),a=b.context();a&&(c+=" [ "+flatten(a)+" ]");return c},function(){return flatten(b.translation()||"")}]};e.stats=function(){var b=this.po,c=b.length,a=0,d=0,e=0;b.each(function(b,c){c.fuzzy()?e++:c.translated()?a++:d++});return{t:c,p:a.percent(c)+"%",f:e,u:d}};e.unlock=function(){this._unlocked||(this._unlocked=this.targetLocale,delete this.targetLocale,this.po&&this.po.unlock(),
|
197 |
+
this.editable={source:!0,context:!0,target:!1},this.contextCell=this.targetCell,delete this.targetCell,this.fire("poLock",[!1]),this.active&&this.loadMessage(this.active))};e.lock=function(){var b;this._unlocked&&(b=this.targetLocale=this._unlocked,delete this._unlocked,this.po&&this.po.lock(b),this.editable={source:!1,context:!1,target:!0},this.targetCell=this.contextCell,delete this.contextCell,this.fire("poLock",[!0,b]),this.active&&this.loadMessage(this.active))};e.locked=function(){return!this._unlocked};
|
198 |
+
e.getSorter=function(){function b(a,b){var d=a.weight(),g=b.weight();return d===g?c(a,b):d>g?-1:1}function c(a,b){return a.hash().localeCompare(b.hash())}var a=this;return function(d){var e=a.po,k=a.locked()?b:c;d.sort(function(a,b){return k(e.row(a),e.row(b))})}};return d}({},v,z));m.register("$13",function(d,e,m){var n={copy:66,clear:75,save:83,fuzzy:85,next:40,prev:38,enter:13,invis:73},b={38:!0,40:!0,73:!0},c={66:function(a,b){var c=b.current();c&&(c.normalize(),b.focus().pasteMessage(c))},75:function(a,
|
199 |
+
b){var c=b.current();c&&(c.untranslate(),b.focus().pasteMessage(c))},85:function(a,b){b.focus().fuzzy(!b.fuzzy())},13:function(a,b){b.getFirstEditable()&&b.next(1,!0,!0)},40:function(a,b){var c=a.shiftKey;b.next(1,c,c)},38:function(a,b){var c=a.shiftKey;b.next(-1,c,c)},73:function(a,b){if(!a.shiftKey)return!1;b.setInvs(!b.getInvs())}};d.init=function(a,d){function p(d){if(d.isDefaultPrevented()||!d.metaKey&&!d.ctrlKey)return!0;var f=d.which;if(!k[f])return!0;var e=c[f];if(!e)throw Error("command undefined #"+
|
200 |
+
f);if(d.altKey||d.shiftKey&&!b[f]||!1===e(d,a))return!0;d.stopPropagation();d.preventDefault();return!1}var k={};h(d||e).on("keydown",p);return{add:function(a,b){c[n[a]]=b;return this},enable:function(){var a,b;for(b in arguments)a=n[arguments[b]],k[a]=!0;return this},disable:function(){h(d||e).off("keydown",p);a=d=k=null}}};return d}({},v,z));m.register("$27",function(d,e,h){function m(b,c){var a=RegExp("^.{0,"+(b-1)+"}["+c+"]"),d=RegExp("^[^"+c+"]+");return function(c,e){for(var g=c.length,l;g>
|
201 |
+
b;){l=a.exec(c)||d.exec(c);if(null==l)break;l=l[0];e.push(l);l=l.length;g-=l;c=c.substr(l)}0!==g&&e.push(c);return e}}d.create=function(b){function c(a){return l[a]||"\\"+a}var a,d,e=/(?:\r\n|[\r\n\v\f\u2028\u2029])/g,k=/[ \r\n]+/g,g=/[\t\v\f\x07\x08\\\"]/g,l={"\t":"\\t","\v":"\\v","\f":"\\f","\u0007":"\\a","\b":"\\b"};if(null==b||isNaN(b=Number(b)))b=79;0<b&&(a=m(b-3," "),d=m(b-2,"-\u2013 \\.,:;\\?!\\)\\]\\}\\>"));return{pair:function(a,l){if(!l)return a+' ""';l=l.replace(g,c);var k=0;l=l.replace(e,
|
202 |
+
function(){k++;return"\\n\n"});if(!(k||b&&b<l.length+a.length+3))return a+' "'+l+'"';var h=[a+' "'],m=l.split("\n");if(d)for(var n=-1,B=m.length;++n<B;)d(m[n],h);else h=h.concat(m);return h.join('"\n"')+'"'},prefix:function(a,b){var c=a.split(e);return b+c.join("\n"+b)},refs:function(b){b=b.replace(k," ",b);a&&(b=a(b,[]).join("\n#: "));return"#: "+b}}};return d}({},v,z));m.register("$39",function(d,e,h){function m(){this.length=0}d.init=function(){return new m};e=m.prototype;e.push=function(b){this[this.length++]=
|
203 |
+
b;return this};e.sort=function(b){[].sort.call(this,b);return this};e.each=function(b){for(var c=-1,a=this.length;++c<a;)b(c,this[c]);return this};return d}({},v,z));m.register("$28",function(d,e,h){function n(){}d.extend=function(b){return b.prototype=new n};e=n.prototype=m.require("$37","abstract.js").init(["add","load"]);e.row=function(b){return this.rows[b]};e.lock=function(b){return this.locale(b||{lang:"zxx",label:"Unknown",nplurals:1,pluraleq:"n!=1"})};e.unlock=function(){var b=this.loc;this.loc=
|
204 |
+
null;return b};e.locale=function(b){null==b?b=this.loc:this.loc=b=m.require("$36","locale.js").cast(b);return b};e.each=function(b){this.rows.each(b);return this};e.indexOf=function(b){"object"!==typeof b&&(b=this.get(b));if(!b)return-1;null==b.idx&&(b.idx=this.rows.indexOf(b.hash()));return b.idx};e.get=function(b){return this.rows&&this.rows.get(b)};e.del=function(b){b=this.indexOf(b);if(-1!==b){var c=this.rows.cut(b,1);if(c&&c.length)return this.length=this.rows.length,this.rows.each(function(a,
|
205 |
+
b,c){b.idx=c}),b}};e.reIndex=function(b,c){var a=this.indexOf(b),d=b.hash(),e=this.rows.indexOf(d);return e===a?a:-1!==e?(c=(c||0)+1,b.source("Error, duplicate "+String(c)+": "+b.source()),this.reIndex(b,c)):this.rows.key(a,d)};e.sort=function(b){this.rows.sort(b);return this};e["export"]=function(){for(var b=-1,c=this.rows,a=c.length,d=m.require("$39","list.js").init();++b<a;)d.push(c[b]);return d};e=null;return d}({},v,z));m.register("$29",function(d,e,h){function m(){this.id=this._id=this.ref=
|
206 |
+
this.cmt=this.xcmt=""}d.extend=function(b){return b.prototype=new m};e=m.prototype;e.flag=function(b,c){var a=this.flg||(this.flg=[]);if(null!=c)a[c]=b;else for(var d=Math.max(a.length,this.src.length,this.msg.length);0!==d--;)a[d]=b;return this};e.flagged=function(b){var c=this.flg||[];if(null!=b)return c[b]||0;for(b=c.length;0!==b--;)if(c[b])return!0;return!1};e.flags=function(){for(var b,c={},a=[],d=this.flg||[],e=d.length;0!==e--;)b=d[e],c[b]||(c[b]=!0,a.push(b));return a};e.flaggedAs=function(b,
|
207 |
+
c){var a=this.flg||[];if(null!=c)return b===a[c]||0;for(var d=a.length;0!==d--;)if(a[d]===b)return!0;return!1};e.fuzzy=function(b,c){var a=this.flaggedAs(4,b);null!=c&&this.flag(c?4:0,b);return a};e.source=function(b,c){if(null==b)return this.src[c||0]||"";this.src[c||0]=b;return this};e.plural=function(b,c){if(null==b)return this.src[c||1]||"";this.src[c||1]=b||"";return this};e.each=function(b){for(var c=-1,a=this.src,d=this.msg,e=Math.max(a.length,d.length);++c<e;)b(c,a[c],d[c]);return this};e.count=
|
208 |
+
function(){return Math.max(this.src.length,this.msg.length)};e.pluralized=function(){return 1<this.src.length||1<this.msg.length};e.translate=function(b,c){this.msg[c||0]=b||"";return this};e.untranslate=function(b){if(null!=b)this.msg[b]="";else{var c=this.msg,a=c.length;for(b=0;b<a;b++)c[b]=""}return this};e.translation=function(b){return this.msg[b||0]||""};e.errors=function(b){return this.err&&this.err[b||0]||[]};e.translated=function(b){if(null!=b)return!!this.msg[b];var c=this.msg,a=c.length;
|
209 |
+
for(b=0;b<a;b++)if(!c[b])return!1;return!0};e.comment=function(b){if(null==b)return this.cmt;this.cmt=b||"";return this};e.notes=function(b){if(null==b)return this.xcmt;this.xcmt=b||"";return this};e.refs=function(b){if(null==b)return this.ref;this.ref=b||"";return this};e.format=function(b){if(null==b)return this.fmt;this.fmt=b;return this};e.context=function(b){if(null==b)return this.ctx||"";this.ctx=b||"";return this};e.toString=e.toText=function(){return this.src.concat(this.msg,[this.id,this.ctx]).join(" ")};
|
210 |
+
e.weight=function(){var b=0;this.translation()||(b+=2);this.fuzzy()&&(b+=1);return b};e.equals=function(b){return this===b||this.hash()===b.hash()};e.hash=function(){return this.id};e.normalize=function(){for(var b=this.msg.length;0!==b--;)this.msg[b]=this.src[b]||""};e.disabled=function(b){return!!(this.lck||[])[b||0]};e.disable=function(b){(this.lck||(this.lck=[]))[b||0]=!0;return this};e.saved=function(b){var c=this.drt;if(!c)return!0;if(null!=b)return!c[b];for(b=c.length;0!==b--;)if(c[b])return!1;
|
211 |
+
return!0};e.unsave=function(b){(this.drt||(this.drt=[]))[b||0]=!0;return this};e.save=function(b){var c=this.drt;null==b?this.drt=null:c[b]=!1;return this};e.is=function(b){return b&&(b===this||b.idx===this.idx)};e.isHTML=function(b){if(null==b)return this.htm||!1;this.htm=b};e=null;return d}({},v,z));m.register("$14",function(d,e,h){function n(a){return{"Project-Id-Version":"PACKAGE VERSION","Report-Msgid-Bugs-To":"","POT-Creation-Date":a||"","PO-Revision-Date":a||"","Last-Translator":"","Language-Team":"",
|
212 |
+
Language:"","Plural-Forms":"","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit"}}function b(a,b){var c=a||"";b&&(c+="\x00"+b);return c}function c(){return m.require("$26","collection.js").init()}function a(a){var b=e.console;b&&b.error&&b.error(a.message||String(a))}function f(a){return m.require("$27","format.js").create(a)}function p(a){this.locale(a);this.length=0;this.rows=c();this.head=n(this.now())}function k(a,b){this.src=[a||""];this.msg=[b||
|
213 |
+
""]}d.create=function(a){return new p(a)};h=m.require("$28","messages.js").extend(p);h.now=function(){function a(b,c){for(var d=String(b);d.length<c;)d="0"+d;return d}var b=new Date,c=b.getUTCFullYear(),d=b.getUTCMonth()+1,f=b.getUTCDate(),e=b.getUTCHours(),b=b.getUTCMinutes();return a(c,4)+"-"+a(d,2)+"-"+a(f,2)+" "+a(e,2)+":"+a(b,2)+"+0000"};h.header=function(a,b){var c=this.head||(this.head={});if(null==b)return this.headers()[a]||"";c[a]=b||"";return this};h.headers=function(a){var b,c=this.now(),
|
214 |
+
d=this.head||(this.head=n(c));if(null!=a){for(b in a)d[b]=a[b];return this}var f=this.locale();a={};for(b in d)a[b]=String(d[b]);f?(a.Language=String(f)||"zxx",a["Language-Team"]=f.label||a.Language,a["Plural-Forms"]="nplurals="+(f.nplurals||"2")+"; plural="+(f.pluraleq||"n!=1")+";",b="PO-Revision-Date"):(a.Language="",a["Plural-Forms"]="nplurals=INTEGER; plural=EXPRESSION;",a["PO-Revision-Date"]="YEAR-MO-DA HO:MI+ZONE",b="POT-Creation-Date");a[b]||(a[b]=c);a["X-Generator"]="Loco https://localise.biz/";
|
215 |
+
return a};h.get=function(a,c){var d=b(a,c);return this.rows.get(d)};h.add=function(b,c){b instanceof k||(b=new k(b));c&&b.context(c);var d=b.hash();this.rows.get(d)?a("Duplicate message at index "+this.indexOf(b)):(b.idx=this.rows.add(d,b),this.length=this.rows.length);return b};h.load=function(b){for(var c=-1,d,f,e,h,m,n,p=(e=this.locale())&&e.nplurals||2,v=[];++c<b.length;)d=b[c],null==d.parent?(f=d.source||d.id,e=d.target||"",h=d.context,f||h?(m=new k(f,e),m._id=d._id,h&&m.context(h),d.flag&&m.flag(d.flag,
|
216 |
+
0),d.comment&&m.comment(d.comment),d.notes&&m.notes(d.notes),d.refs&&m.refs(d.refs),m.format(d.format),d.message=m,this.add(m)):0===c&&"object"===typeof e&&(this.head=e,this.headcmt=d.comment)):v.push(d);for(c=-1;++c<v.length;)try{d=v[c];f=d.source||d.id;m=b[d.parent]&&b[d.parent].message;if(!m)throw Error("parent missing for plural "+f);n=d.plural;1===n&&m.plural(f);n>=p||(d.flag&&m.flag(d.flag,n),m.translate(d.target||"",n),d.format&&!m.format()&&m.format(d.format))}catch(z){a(z)}return this};h.merge=
|
217 |
+
function(b){var d=this,f,e=b.header("POT-Creation-Date"),h=d.rows,k=[],m=[];b=b.rows;d.rows.each(function(a,c){null==b.get(a)&&m.push(c)});d.rows=c();b.each(function(b,c){try{(f=h.get(b))?(f.ref=c.ref,f.fmt=c.fmt):(f=c,k.push(f)),d.add(f)}catch(g){a(g)}});e&&d.header("POT-Creation-Date",e);return{add:k,del:m}};h.wrap=function(a){this.fmtr=f(a);return this};h.toString=function(){var a,b=this.locale(),c=[],d=[],e=this.headers(),h=!b,m=b&&b.nplurals||2,n=this.fmtr||f();e[b?"PO-Revision-Date":"POT-Creation-Date"]=
|
218 |
+
this.now();for(a in e)d.push(a+": "+e[a]);d=new k("",d.join("\n"));d.comment(this.headcmt||"");h&&d.fuzzy(0,!0);c.push(d.toString());c.push("");this.rows.each(function(a,b){a&&(c.push(b.cat(n,h,m)),c.push(""))});return c.join("\n")};h=m.require("$29","message.js").extend(k);h.hash=function(){return b(this.source(),this.context())};h.toString=function(){return this.cat(f())};h.cat=function(a,b,c){var d,f=[],e;(e=this.cmt)&&f.push(a.prefix(e,"# "));(e=this.xcmt)&&f.push(a.prefix(e,"#. "));d=this.ref;
|
219 |
+
if(e=this._id)d+=(d?" ":"")+"loco:"+e;d&&/\S/.test(d)&&f.push(a.refs(d));!b&&this.fuzzy()&&f.push("#, fuzzy");(e=this.fmt)&&f.push("#, "+e+"-format");(e=this.ctx)&&f.push(a.pair("msgctxt",e));f.push(a.pair("msgid",this.src[0]));if(null==this.src[1])f.push(a.pair("msgstr",b?"":this.msg[0]));else for(d=-1,f.push(a.pair("msgid_plural",this.src[1])),e=this.msg||["",""],c=c||e.length;++d<c;)f.push(a.pair("msgstr["+d+"]",b?"":e[d]||""));return f.join("\n")};h.compare=function(a,b){var c=this.weight(),d=
|
220 |
+
a.weight();if(c>d)return 1;if(c<d)return-1;if(b){c=this.hash().toLowerCase();d=a.hash().toLowerCase();if(c<d)return 1;if(c>d)return-1}return 0};h=h=null;return d}({},v,z));m.register("$16",function(d,e,m){d.init=function(d){function b(){I||(K.click(g),I=h('<div id="loco-fs-creds"></div>').dialog({dialogClass:"request-filesystem-credentials-dialog loco-modal",minWidth:580,modal:!0,autoOpen:!1,closeOnEscape:!0}).on("change",'input[name="connection_type"]',function(){this.checked&&h("#ssh-keys").toggleClass("hidden",
|
221 |
+
"ssh"!==h(this).val())}));return I}function c(){h(w).addClass("jshide");H&&C&&h(H).removeClass("jshide").hide().fadeIn(500)}function a(){if(C)return I&&I.dialog("close"),c(),h(d).find('button[type="submit"]').attr("disabled",!1),h(e).triggerHandler("resize"),r&&r(!0),!0;u&&I?(h(w).removeClass("jshide").hide().fadeIn(500),H&&h(H).addClass("jshide")):c();h(d).find('input[type="submit"]').attr("disabled",!0);r&&r(!1);return!1}function f(a){var b,c;for(b in s)c=s[b],a[b]?a[b].value=c:h('<input type="hidden" />').attr("name",
|
222 |
+
b).appendTo(a).val(c)}function p(a){a.preventDefault();a=h(a.target).serializeArray();v(a);z=!0;return!1}function k(a){a.preventDefault();I.dialog("close");return!1}function g(a){a.preventDefault();I.dialog("open").find('input[name="connection_type"]').change();return!1}function l(c){s=c.authed&&c.creds;q=c.method;c.notice&&F.notices.info(c.notice);if(s)"direct"!==q&&(f(d),z&&c.success&&F.notices.success(c.success)),C=!0,a();else if(C=!1,c.reason)F.notices.info(c.reason);else if(c=c.prompt){var g=
|
223 |
+
b();g.html(c).find("form").submit(p);g.dialog("option","title",g.find("h2").remove().text());g.find("button.cancel-button").show().click(k);g.find('input[type="submit"]').addClass("button-primary");a();h(e).triggerHandler("resize")}else F.notices.error("Server didn't return credentials, nor a prompt for credentials")}function A(){a()}function v(a){z=!1;a.path=u;a.auth=y;F.ajax.setNonce("fsConnect",G).post("fsConnect",a,l,A);return a}var s,r,w=d,q=null,z=!1,C=!1,F=e.locoScope,u=d.path.value,y=d.auth.value,
|
224 |
+
G=d["loco-nonce"].value,K=h(w).find("button.button-primary"),H=m.getElementById(w.id+"-warn"),I;H&&F.notices.convert(H).stick();d.connection_type?(s={},s.connection_type=d.connection_type.value,C=!0):u&&y&&v({});a();return{applyCreds:function(a){if(a.nodeType)f(a);else{var b,c=s||{};for(b in c)a[b]=c[b]}return this},setForm:function(b){d=b;a();f(b);return this},connect:function(){u=d.path.value;y=d.auth.value;v(h(d).serializeArray());return this},listen:function(a){r=a;C&&a(!0);return this}}};return d}({},
|
225 |
+
v,z));m.register("$17",function(d,e,v){function n(d,e,g,h){e="n"===g?c(e):a(e);h&&(e=f(e));return b([].sort,[e])(d)}function b(a,b){return function(c){a.apply(c,b);return c}}function c(a){return function(b,c){var d=b&&b[a]||0,f=c&&c[a]||0;return d===f?0:d>f?1:-1}}function a(a){return function(b,c){return(b&&b[a]||"").localeCompare(c&&c[a]||"")}}function f(a){return function(b,c){return-1*a(b,c)}}d.init=function(a){function b(a){var c=-1,d=a.length;for(h("tr",q).remove();++c<d;)q.appendChild(a[c].$)}
|
226 |
+
function c(a){s=a?z.find(a,d):d.slice(0);w&&(a=f[w],s=n(s,w,a.type,a.desc));b(s)}var d=[],f=[],e=0,s,r,w,q=a.getElementsByTagName("tbody")[0],v=a.getElementsByTagName("thead")[0],z=m.require("$7","fulltext.js").init();v&&q&&(h("th",v).each(function(a,c){var g=c.getAttribute("data-sort-type");g&&(a=e,h(c).addClass("loco-sort").click(function(c){c.preventDefault();c=a;var e=f[c],g=e.type,m=!(e.desc=!e.desc);s=n(s||d.slice(0),c,g,m);b(s);r&&r.removeClass("loco-desc loco-asc");r=h(e.$).addClass(m?"loco-desc":
|
227 |
+
"loco-asc").removeClass(m?"loco-asc":"loco-desc");w=c;return!1}),f[e]={$:c,type:g});c.hasAttribute("colspan")?e+=Number(c.getAttribute("colspan")):e++}),h("tr",q).each(function(a,b){var c,e,g,h=[],k={_:a,$:b},m=b.getElementsByTagName("td");for(e in f){c=m[e];(g=c.textContent.replace(/(^\s+|\s+$)/g,""))&&h.push(g);c.hasAttribute("data-sort-value")&&(g=c.getAttribute("data-sort-value"));switch(f[e].type){case "n":g=Number(g)}k[e]=g}d[a]=k;z.index(a,h)}),a=h('form.loco-filter input[type="text"]',a.parentNode),
|
228 |
+
a.length&&(a=a[0],v=h(a.form),1<d.length?m.require("$8","LocoTextListener.js").listen(a,c):v.hide(),v.on("submit",function(a){a.preventDefault();return!1})))};return d}({},v,z));var J=v.locoScope||(v.locoScope={});v=v.locoConf||(v.locoConf={});z=m.require("$1","t.js").init();var Q=v.wplang;m.require("$2","array.js");J.l10n=z;z.load(v.wpl10n);Q&&z.pluraleq(Q.pluraleq);J.string=m.require("$3","string.js");J.notices=m.require("$4","notices.js").init(z);J.ajax=m.require("$5","ajax.js").init(v).localise(z);
|
229 |
+
J.locale=m.require("$6","wplocale.js");J.fulltext=m.require("$7","fulltext.js");J.watchtext=m.require("$8","LocoTextListener.js").listen;J.selector=m.require("$9","LocoSelector.js").create;J.autocomp=m.require("$10","LocoAutoComplete.js").init;J.tooltip=m.require("$11","tooltip.js");J.po={ed:m.require("$12","poedit.js"),kbd:m.require("$13","hotkeys.js"),init:m.require("$14","po.js").create,ace:m.require("$15","ace.js").strf("php")};J.fs=m.require("$16","fsconn.js");h("#loco.wrap table.wp-list-table").each(function(d,
|
230 |
+
e){m.require("$17","tables.js").init(e)})})(window,document,window.jQuery);
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: timwhitlock
|
|
3 |
Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
|
4 |
Requires at least: 4.1
|
5 |
Requires PHP: 5.2.4
|
6 |
-
Tested up to: 4.9.
|
7 |
-
Stable tag: 2.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -92,6 +92,14 @@ Sure thing. See the [plugin privacy notice](https://localise.biz/wordpress/plugi
|
|
92 |
|
93 |
== Changelog ==
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
= 2.1.4 =
|
96 |
* Bumped WP compatibility to 4.9.6
|
97 |
* Hooked in privacy policy suggestion
|
@@ -260,7 +268,7 @@ Sure thing. See the [plugin privacy notice](https://localise.biz/wordpress/plugi
|
|
260 |
|
261 |
== Upgrade Notice ==
|
262 |
|
263 |
-
= 2.1.
|
264 |
* Various bug fixes and improvements
|
265 |
|
266 |
|
3 |
Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
|
4 |
Requires at least: 4.1
|
5 |
Requires PHP: 5.2.4
|
6 |
+
Tested up to: 4.9.8
|
7 |
+
Stable tag: 2.1.5
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
92 |
|
93 |
== Changelog ==
|
94 |
|
95 |
+
= 2.1.5 =
|
96 |
+
* Updated locale data
|
97 |
+
* Minor fix to file reference resolution
|
98 |
+
* Fixed windows paths with trailing backslash
|
99 |
+
* Fixed ssh-keys toggling issue
|
100 |
+
* Rejigged buffer handling during Ajax
|
101 |
+
* Bumped WP compatibility to 4.9.8
|
102 |
+
|
103 |
= 2.1.4 =
|
104 |
* Bumped WP compatibility to 4.9.6
|
105 |
* Hooked in privacy policy suggestion
|
268 |
|
269 |
== Upgrade Notice ==
|
270 |
|
271 |
+
= 2.1.5 =
|
272 |
* Various bug fixes and improvements
|
273 |
|
274 |
|
src/admin/config/DebugController.php
CHANGED
@@ -4,7 +4,6 @@
|
|
4 |
*/
|
5 |
class Loco_admin_config_DebugController extends Loco_admin_config_BaseController {
|
6 |
|
7 |
-
|
8 |
/**
|
9 |
* {@inheritdoc}
|
10 |
*/
|
@@ -13,21 +12,22 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
|
|
13 |
$this->set( 'title', __('Debug','loco-translate') );
|
14 |
}
|
15 |
|
16 |
-
|
17 |
/**
|
18 |
-
* @
|
|
|
19 |
*/
|
20 |
private function memory_size( $raw ){
|
21 |
$bytes = wp_convert_hr_to_bytes($raw);
|
22 |
-
|
23 |
-
return $value;//.' ('.number_format($bytes).')';
|
24 |
}
|
25 |
-
|
26 |
-
|
27 |
/**
|
28 |
-
* @
|
|
|
29 |
*/
|
30 |
-
private function rel_path( $path
|
31 |
if( is_string($path) && $path && '/' === $path[0] ){
|
32 |
$file = new Loco_fs_File( $path );
|
33 |
$path = $file->getRelativePath(ABSPATH);
|
@@ -101,7 +101,7 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
|
|
101 |
) );
|
102 |
|
103 |
// Debug and error log settings
|
104 |
-
$debug = new
|
105 |
'WP_DEBUG' => loco_constant('WP_DEBUG') ? 'On' : 'Off',
|
106 |
'WP_DEBUG_LOG' => loco_constant('WP_DEBUG_LOG') ? 'On' : 'Off',
|
107 |
'WP_DEBUG_DISPLAY' => loco_constant('WP_DEBUG_DISPLAY') ? 'On' : 'Off',
|
@@ -109,6 +109,14 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
|
|
109 |
'PHP log_errors' => ini_get('log_errors') ? 'On' : 'Off',
|
110 |
'PHP error_log' => $this->rel_path( ini_get('error_log') ),
|
111 |
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
|
113 |
// alert to known system setting problems
|
114 |
if( get_magic_quotes_gpc() ){
|
@@ -117,8 +125,8 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
|
|
117 |
if( get_magic_quotes_runtime() ){
|
118 |
Loco_error_AdminNotices::add( new Loco_error_Debug('You have "magic_quotes_runtime" enabled. We recommend you disable this in PHP') );
|
119 |
}
|
120 |
-
|
121 |
-
return $this->view('admin/config/debug', compact('breadcrumb','versions','encoding','memory','fs','debug') );
|
122 |
}
|
123 |
|
124 |
}
|
4 |
*/
|
5 |
class Loco_admin_config_DebugController extends Loco_admin_config_BaseController {
|
6 |
|
|
|
7 |
/**
|
8 |
* {@inheritdoc}
|
9 |
*/
|
12 |
$this->set( 'title', __('Debug','loco-translate') );
|
13 |
}
|
14 |
|
15 |
+
|
16 |
/**
|
17 |
+
* @param string
|
18 |
+
* @return int
|
19 |
*/
|
20 |
private function memory_size( $raw ){
|
21 |
$bytes = wp_convert_hr_to_bytes($raw);
|
22 |
+
return Loco_mvc_FileParams::renderBytes($bytes);
|
|
|
23 |
}
|
24 |
+
|
25 |
+
|
26 |
/**
|
27 |
+
* @param string
|
28 |
+
* @return string
|
29 |
*/
|
30 |
+
private function rel_path( $path ){
|
31 |
if( is_string($path) && $path && '/' === $path[0] ){
|
32 |
$file = new Loco_fs_File( $path );
|
33 |
$path = $file->getRelativePath(ABSPATH);
|
101 |
) );
|
102 |
|
103 |
// Debug and error log settings
|
104 |
+
$debug = new Loco_mvc_ViewParams( array(
|
105 |
'WP_DEBUG' => loco_constant('WP_DEBUG') ? 'On' : 'Off',
|
106 |
'WP_DEBUG_LOG' => loco_constant('WP_DEBUG_LOG') ? 'On' : 'Off',
|
107 |
'WP_DEBUG_DISPLAY' => loco_constant('WP_DEBUG_DISPLAY') ? 'On' : 'Off',
|
109 |
'PHP log_errors' => ini_get('log_errors') ? 'On' : 'Off',
|
110 |
'PHP error_log' => $this->rel_path( ini_get('error_log') ),
|
111 |
) );
|
112 |
+
|
113 |
+
/* Output buffering settings
|
114 |
+
$this->set('ob', new Loco_mvc_ViewParams( array(
|
115 |
+
'output_handler' => ini_get('output_handler'),
|
116 |
+
'zlib.output_compression' => ini_get('zlib.output_compression'),
|
117 |
+
'zlib.output_compression_level' => ini_get('zlib.output_compression_level'),
|
118 |
+
'zlib.output_handler' => ini_get('zlib.output_handler'),
|
119 |
+
) ) );*/
|
120 |
|
121 |
// alert to known system setting problems
|
122 |
if( get_magic_quotes_gpc() ){
|
125 |
if( get_magic_quotes_runtime() ){
|
126 |
Loco_error_AdminNotices::add( new Loco_error_Debug('You have "magic_quotes_runtime" enabled. We recommend you disable this in PHP') );
|
127 |
}
|
128 |
+
|
129 |
+
return $this->view('admin/config/debug', compact('breadcrumb','versions','encoding','memory','fs','debug','ob') );
|
130 |
}
|
131 |
|
132 |
}
|
src/admin/init/InitPoController.php
CHANGED
@@ -117,7 +117,7 @@ class Loco_admin_init_InitPoController extends Loco_admin_bundle_BaseController
|
|
117 |
|
118 |
// default locale is a placeholder
|
119 |
$locale = new Loco_Locale('zxx');
|
120 |
-
$content_dir =
|
121 |
$copying = false;
|
122 |
|
123 |
// Permit using any provided file a template instead of POT
|
@@ -235,13 +235,13 @@ class Loco_admin_init_InitPoController extends Loco_admin_bundle_BaseController
|
|
235 |
}
|
236 |
$this->set( 'summary', $summary );
|
237 |
|
238 |
-
// group established locations into types (
|
239 |
// there is no point checking whether any of these file exist, because we don't know what language will be chosen yet.
|
240 |
$sortable = array();
|
241 |
$locations = array();
|
242 |
$fs_protect = Loco_data_Settings::get()->fs_protect;
|
243 |
$fs_failure = null;
|
244 |
-
/* @var $pofile
|
245 |
foreach( $filechoice as $pofile ){
|
246 |
$parent = new Loco_fs_LocaleDirectory( $pofile->dirname() );
|
247 |
$typeId = $parent->getTypeId();
|
117 |
|
118 |
// default locale is a placeholder
|
119 |
$locale = new Loco_Locale('zxx');
|
120 |
+
$content_dir = untrailingslashit( loco_constant('WP_CONTENT_DIR') );
|
121 |
$copying = false;
|
122 |
|
123 |
// Permit using any provided file a template instead of POT
|
235 |
}
|
236 |
$this->set( 'summary', $summary );
|
237 |
|
238 |
+
// group established locations into types (official, etc..)
|
239 |
// there is no point checking whether any of these file exist, because we don't know what language will be chosen yet.
|
240 |
$sortable = array();
|
241 |
$locations = array();
|
242 |
$fs_protect = Loco_data_Settings::get()->fs_protect;
|
243 |
$fs_failure = null;
|
244 |
+
/* @var Loco_fs_File $pofile */
|
245 |
foreach( $filechoice as $pofile ){
|
246 |
$parent = new Loco_fs_LocaleDirectory( $pofile->dirname() );
|
247 |
$typeId = $parent->getTypeId();
|
src/ajax/FsReferenceController.php
CHANGED
@@ -31,6 +31,12 @@ class Loco_ajax_FsReferenceController extends Loco_ajax_common_BundleController
|
|
31 |
return $srcfile;
|
32 |
}
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
// reference may be resolvable via known project roots
|
36 |
try {
|
31 |
return $srcfile;
|
32 |
}
|
33 |
|
34 |
+
// check against PO file location when no search paths or search paths failed
|
35 |
+
$srcfile = new Loco_fs_File($refpath);
|
36 |
+
$srcfile->normalize( $pofile->dirname() );
|
37 |
+
if( $srcfile->exists() ){
|
38 |
+
return $srcfile;
|
39 |
+
}
|
40 |
|
41 |
// reference may be resolvable via known project roots
|
42 |
try {
|
src/ajax/SaveController.php
CHANGED
@@ -3,8 +3,7 @@
|
|
3 |
* Ajax "save" route, for saving editor contents to disk
|
4 |
*/
|
5 |
class Loco_ajax_SaveController extends Loco_ajax_common_BundleController {
|
6 |
-
|
7 |
-
|
8 |
/**
|
9 |
* {@inheritdoc}
|
10 |
*/
|
@@ -89,10 +88,7 @@ class Loco_ajax_SaveController extends Loco_ajax_common_BundleController {
|
|
89 |
$this->set('poname', $pofile->basename() );
|
90 |
$this->set('modified', $mtime);
|
91 |
$this->set('datetime', Loco_mvc_ViewParams::date_i18n($mtime) );
|
92 |
-
|
93 |
-
// Intial message refers to PO/POT save success
|
94 |
-
$success = $locale ? __('PO file saved','loco-translate') : __('POT file saved','loco-translate');
|
95 |
-
|
96 |
// Compile MO file unless saving template
|
97 |
if( $locale ){
|
98 |
try {
|
3 |
* Ajax "save" route, for saving editor contents to disk
|
4 |
*/
|
5 |
class Loco_ajax_SaveController extends Loco_ajax_common_BundleController {
|
6 |
+
|
|
|
7 |
/**
|
8 |
* {@inheritdoc}
|
9 |
*/
|
88 |
$this->set('poname', $pofile->basename() );
|
89 |
$this->set('modified', $mtime);
|
90 |
$this->set('datetime', Loco_mvc_ViewParams::date_i18n($mtime) );
|
91 |
+
|
|
|
|
|
|
|
92 |
// Compile MO file unless saving template
|
93 |
if( $locale ){
|
94 |
try {
|
src/api/WordPressFileSystem.php
CHANGED
@@ -191,7 +191,7 @@ class Loco_api_WordPressFileSystem {
|
|
191 |
}
|
192 |
}
|
193 |
catch( Exception $e ){
|
194 |
-
//
|
195 |
}
|
196 |
|
197 |
$post = Loco_mvc_PostParams::get();
|
@@ -208,7 +208,7 @@ class Loco_api_WordPressFileSystem {
|
|
208 |
return false;
|
209 |
}
|
210 |
}
|
211 |
-
// direct
|
212 |
else if( 'direct' === $post->connection_type ){
|
213 |
return true;
|
214 |
}
|
@@ -300,7 +300,7 @@ class Loco_api_WordPressFileSystem {
|
|
300 |
}
|
301 |
}
|
302 |
catch( Exception $e ){
|
303 |
-
//
|
304 |
Loco_error_AdminNotices::debug( $e->getMessage() );
|
305 |
}
|
306 |
return false;
|
191 |
}
|
192 |
}
|
193 |
catch( Exception $e ){
|
194 |
+
// tolerate session failure
|
195 |
}
|
196 |
|
197 |
$post = Loco_mvc_PostParams::get();
|
208 |
return false;
|
209 |
}
|
210 |
}
|
211 |
+
// direct filesystem if ok if front end already posted it
|
212 |
else if( 'direct' === $post->connection_type ){
|
213 |
return true;
|
214 |
}
|
300 |
}
|
301 |
}
|
302 |
catch( Exception $e ){
|
303 |
+
// tolerate session failure
|
304 |
Loco_error_AdminNotices::debug( $e->getMessage() );
|
305 |
}
|
306 |
return false;
|
src/config/Model.php
CHANGED
@@ -46,7 +46,7 @@ abstract class Loco_config_Model {
|
|
46 |
* @return void
|
47 |
*/
|
48 |
public function setDirectoryPath( $path, $key = null ){
|
49 |
-
$path =
|
50 |
if( is_null($key) ){
|
51 |
$this->base = $path;
|
52 |
}
|
@@ -76,7 +76,7 @@ abstract class Loco_config_Model {
|
|
76 |
$value = $this->dirs[$key];
|
77 |
}
|
78 |
else {
|
79 |
-
$value =
|
80 |
}
|
81 |
|
82 |
return $value;
|
46 |
* @return void
|
47 |
*/
|
48 |
public function setDirectoryPath( $path, $key = null ){
|
49 |
+
$path = untrailingslashit($path);
|
50 |
if( is_null($key) ){
|
51 |
$this->base = $path;
|
52 |
}
|
76 |
$value = $this->dirs[$key];
|
77 |
}
|
78 |
else {
|
79 |
+
$value = untrailingslashit( loco_constant($key) );
|
80 |
}
|
81 |
|
82 |
return $value;
|
src/error/Exception.php
CHANGED
@@ -47,9 +47,7 @@ class Loco_error_Exception extends Exception implements JsonSerializable {
|
|
47 |
}
|
48 |
|
49 |
|
50 |
-
|
51 |
/**
|
52 |
-
* @internal
|
53 |
* @return Loco_error_Exception
|
54 |
*/
|
55 |
public function setCallee( array $callee ){
|
@@ -59,7 +57,6 @@ class Loco_error_Exception extends Exception implements JsonSerializable {
|
|
59 |
}
|
60 |
|
61 |
|
62 |
-
|
63 |
/**
|
64 |
* Get view template for rendering error to HTML.
|
65 |
* @return string path relative to root tpl directory
|
47 |
}
|
48 |
|
49 |
|
|
|
50 |
/**
|
|
|
51 |
* @return Loco_error_Exception
|
52 |
*/
|
53 |
public function setCallee( array $callee ){
|
57 |
}
|
58 |
|
59 |
|
|
|
60 |
/**
|
61 |
* Get view template for rendering error to HTML.
|
62 |
* @return string path relative to root tpl directory
|
src/error/ParseException.php
CHANGED
@@ -5,13 +5,11 @@
|
|
5 |
class Loco_error_ParseException extends Loco_error_Exception {
|
6 |
|
7 |
public function setContext( $line, $column, $source ){
|
8 |
-
$this->line = $line;
|
9 |
-
$this->column = $column;
|
10 |
-
// get line of source code where error is and construct a ____^ thingy to show error on next line
|
11 |
-
$lines = preg_split( '/\\R/', $source );
|
12 |
-
$this->context = $lines[ $line - 1 ] ."\n". str_repeat(' ', max(0,$column-2) ).'^';
|
13 |
// wrap initial message with context data
|
14 |
-
$this->message = sprintf("Error at line %u, column %u: %s", $
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
-
}
|
5 |
class Loco_error_ParseException extends Loco_error_Exception {
|
6 |
|
7 |
public function setContext( $line, $column, $source ){
|
|
|
|
|
|
|
|
|
|
|
8 |
// wrap initial message with context data
|
9 |
+
$this->message = sprintf("Error at line %u, column %u: %s", $line, $column, $this->message );
|
10 |
+
/*/ get line of source code where error is and construct a ____^ thingy to show error on next line
|
11 |
+
$lines = preg_split( '/\\R/', $source );
|
12 |
+
$context = $lines[ $line - 1 ] ."\n". str_repeat(' ', max(0,$column-2) ).'^';*/
|
13 |
}
|
14 |
|
15 |
+
}
|
src/fs/File.php
CHANGED
@@ -59,7 +59,7 @@ class Loco_fs_File {
|
|
59 |
|
60 |
|
61 |
/**
|
62 |
-
*
|
63 |
*/
|
64 |
public function __construct( $path ){
|
65 |
$this->setPath( $path );
|
@@ -68,6 +68,8 @@ class Loco_fs_File {
|
|
68 |
|
69 |
/**
|
70 |
* Internally set path value and flag whether relative or absolute
|
|
|
|
|
71 |
*/
|
72 |
private function setPath( $path ){
|
73 |
$path = (string) $path;
|
@@ -87,7 +89,7 @@ class Loco_fs_File {
|
|
87 |
|
88 |
|
89 |
/**
|
90 |
-
* @return
|
91 |
*/
|
92 |
public function isAbsolute(){
|
93 |
return ! $this->rel;
|
@@ -344,7 +346,6 @@ class Loco_fs_File {
|
|
344 |
}
|
345 |
|
346 |
|
347 |
-
|
348 |
/**
|
349 |
* Normalize path for string comparison, resolves redundant dots and slashes.
|
350 |
* @param string path to prefix
|
59 |
|
60 |
|
61 |
/**
|
62 |
+
* Create file with initial, unvalidated path
|
63 |
*/
|
64 |
public function __construct( $path ){
|
65 |
$this->setPath( $path );
|
68 |
|
69 |
/**
|
70 |
* Internally set path value and flag whether relative or absolute
|
71 |
+
* @param string
|
72 |
+
* @return string
|
73 |
*/
|
74 |
private function setPath( $path ){
|
75 |
$path = (string) $path;
|
89 |
|
90 |
|
91 |
/**
|
92 |
+
* @return bool
|
93 |
*/
|
94 |
public function isAbsolute(){
|
95 |
return ! $this->rel;
|
346 |
}
|
347 |
|
348 |
|
|
|
349 |
/**
|
350 |
* Normalize path for string comparison, resolves redundant dots and slashes.
|
351 |
* @param string path to prefix
|
src/fs/FileWriter.php
CHANGED
@@ -30,7 +30,6 @@ class Loco_fs_FileWriter {
|
|
30 |
}
|
31 |
|
32 |
|
33 |
-
|
34 |
/**
|
35 |
* Connect to alternative file system context
|
36 |
* @return Loco_fs_FileWriter
|
@@ -71,16 +70,15 @@ class Loco_fs_FileWriter {
|
|
71 |
|
72 |
|
73 |
/**
|
74 |
-
* @internal
|
75 |
* Map virtual path for remote file system
|
76 |
*/
|
77 |
private function mapPath( $path ){
|
78 |
if( ! $this->isDirect() ){
|
79 |
-
$base =
|
80 |
$snip = strlen($base);
|
81 |
if( substr( $path, 0, $snip ) !== $base ){
|
82 |
// fall back to default path in case of symlinks
|
83 |
-
$base =
|
84 |
$snip = strlen($base);
|
85 |
if( substr( $path, 0, $snip ) !== $base ){
|
86 |
throw new Loco_error_WriteException('Remote path must be under WP_CONTENT_DIR');
|
@@ -90,7 +88,7 @@ class Loco_fs_FileWriter {
|
|
90 |
if( false === $virt ){
|
91 |
throw new Loco_error_WriteException('Failed to find WP_CONTENT_DIR via remote connection');
|
92 |
}
|
93 |
-
$virt =
|
94 |
$path = substr_replace( $path, $virt, 0, $snip );
|
95 |
}
|
96 |
return $path;
|
30 |
}
|
31 |
|
32 |
|
|
|
33 |
/**
|
34 |
* Connect to alternative file system context
|
35 |
* @return Loco_fs_FileWriter
|
70 |
|
71 |
|
72 |
/**
|
|
|
73 |
* Map virtual path for remote file system
|
74 |
*/
|
75 |
private function mapPath( $path ){
|
76 |
if( ! $this->isDirect() ){
|
77 |
+
$base = untrailingslashit( Loco_fs_File::abs(loco_constant('WP_CONTENT_DIR')) );
|
78 |
$snip = strlen($base);
|
79 |
if( substr( $path, 0, $snip ) !== $base ){
|
80 |
// fall back to default path in case of symlinks
|
81 |
+
$base = trailingslashit(ABSPATH).'wp-content';
|
82 |
$snip = strlen($base);
|
83 |
if( substr( $path, 0, $snip ) !== $base ){
|
84 |
throw new Loco_error_WriteException('Remote path must be under WP_CONTENT_DIR');
|
88 |
if( false === $virt ){
|
89 |
throw new Loco_error_WriteException('Failed to find WP_CONTENT_DIR via remote connection');
|
90 |
}
|
91 |
+
$virt = untrailingslashit( $virt );
|
92 |
$path = substr_replace( $path, $virt, 0, $snip );
|
93 |
}
|
94 |
return $path;
|
src/fs/Locations.php
CHANGED
@@ -69,7 +69,7 @@ class Loco_fs_Locations extends ArrayObject {
|
|
69 |
if( ! self::$conts ){
|
70 |
self::$conts = new Loco_fs_Locations( array(
|
71 |
loco_constant('WP_CONTENT_DIR'), // <- defined WP_CONTENT_DIR
|
72 |
-
|
73 |
) );
|
74 |
}
|
75 |
return self::$conts;
|
@@ -118,7 +118,7 @@ class Loco_fs_Locations extends ArrayObject {
|
|
118 |
|
119 |
|
120 |
/**
|
121 |
-
*
|
122 |
*/
|
123 |
public function __construct( array $paths ){
|
124 |
parent::__construct( array() );
|
@@ -150,7 +150,7 @@ class Loco_fs_Locations extends ArrayObject {
|
|
150 |
* @return bool whether path matched
|
151 |
*/
|
152 |
public function check( $path ){
|
153 |
-
$path = Loco_fs_File::abs($path)
|
154 |
foreach( $this as $prefix => $length ){
|
155 |
if( $prefix === $path || substr($path,0,$length) === $prefix ){
|
156 |
return true;
|
@@ -166,13 +166,13 @@ class Loco_fs_Locations extends ArrayObject {
|
|
166 |
* @return string | null
|
167 |
*/
|
168 |
public function rel( $path ){
|
169 |
-
$path = Loco_fs_File::abs($path)
|
170 |
foreach( $this as $prefix => $length ){
|
171 |
if( $prefix === $path ){
|
172 |
return '.';
|
173 |
}
|
174 |
if( substr($path,0,$length) === $prefix ){
|
175 |
-
return
|
176 |
}
|
177 |
}
|
178 |
}
|
69 |
if( ! self::$conts ){
|
70 |
self::$conts = new Loco_fs_Locations( array(
|
71 |
loco_constant('WP_CONTENT_DIR'), // <- defined WP_CONTENT_DIR
|
72 |
+
trailingslashit(ABSPATH).'wp-content', // <- default /wp-content
|
73 |
) );
|
74 |
}
|
75 |
return self::$conts;
|
118 |
|
119 |
|
120 |
/**
|
121 |
+
*
|
122 |
*/
|
123 |
public function __construct( array $paths ){
|
124 |
parent::__construct( array() );
|
150 |
* @return bool whether path matched
|
151 |
*/
|
152 |
public function check( $path ){
|
153 |
+
$path = trailingslashit( Loco_fs_File::abs($path) );
|
154 |
foreach( $this as $prefix => $length ){
|
155 |
if( $prefix === $path || substr($path,0,$length) === $prefix ){
|
156 |
return true;
|
166 |
* @return string | null
|
167 |
*/
|
168 |
public function rel( $path ){
|
169 |
+
$path = trailingslashit( Loco_fs_File::abs($path) );
|
170 |
foreach( $this as $prefix => $length ){
|
171 |
if( $prefix === $path ){
|
172 |
return '.';
|
173 |
}
|
174 |
if( substr($path,0,$length) === $prefix ){
|
175 |
+
return untrailingslashit( substr($path,$length) );
|
176 |
}
|
177 |
}
|
178 |
}
|
src/gettext/Data.php
CHANGED
@@ -6,8 +6,7 @@ loco_require_lib('compiled/gettext.php');
|
|
6 |
* Wrapper for array forms of parsed PO data
|
7 |
*/
|
8 |
class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
9 |
-
|
10 |
-
|
11 |
/**
|
12 |
* Normalize file extension to internal type
|
13 |
* @return string "po", "pot" or "mo"
|
@@ -22,7 +21,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
22 |
}
|
23 |
|
24 |
|
25 |
-
|
26 |
/**
|
27 |
* @return Loco_gettext_Data
|
28 |
*/
|
@@ -34,7 +32,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
34 |
}
|
35 |
|
36 |
|
37 |
-
|
38 |
/**
|
39 |
* Like load but just pulls header, saving a full parse. PO only
|
40 |
* @return Loco_gettext_Data
|
@@ -49,7 +46,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
49 |
}
|
50 |
|
51 |
|
52 |
-
|
53 |
/**
|
54 |
* @param string assumed PO source
|
55 |
* @return Loco_gettext_Data
|
@@ -59,7 +55,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
59 |
}
|
60 |
|
61 |
|
62 |
-
|
63 |
/**
|
64 |
* @param string assumed MO bytes
|
65 |
* @return Loco_gettext_Data
|
@@ -69,7 +64,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
69 |
}
|
70 |
|
71 |
|
72 |
-
|
73 |
/**
|
74 |
* Create a dummy/empty instance
|
75 |
* @return Loco_gettext_Data
|
@@ -96,7 +90,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
96 |
}
|
97 |
|
98 |
|
99 |
-
|
100 |
/**
|
101 |
* Get final UTF-8 string for writing to file
|
102 |
* @param bool whether to sort output, generally only for extracting strings
|
@@ -115,7 +108,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
115 |
}
|
116 |
|
117 |
|
118 |
-
|
119 |
/**
|
120 |
* @return array
|
121 |
*/
|
@@ -136,7 +128,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
136 |
}
|
137 |
|
138 |
|
139 |
-
|
140 |
/**
|
141 |
* Export to JSON for JavaScript editor
|
142 |
* @return string
|
@@ -146,7 +137,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
146 |
}
|
147 |
|
148 |
|
149 |
-
|
150 |
/**
|
151 |
* Create a signature for use in comparing source strings between documents
|
152 |
* @return string
|
@@ -157,7 +147,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
157 |
}
|
158 |
|
159 |
|
160 |
-
|
161 |
/**
|
162 |
* @return Loco_gettext_Data
|
163 |
*/
|
@@ -218,7 +207,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
218 |
}
|
219 |
|
220 |
|
221 |
-
|
222 |
/**
|
223 |
* @return Loco_gettext_Data
|
224 |
*/
|
@@ -247,7 +235,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
247 |
}
|
248 |
|
249 |
|
250 |
-
|
251 |
/**
|
252 |
* Remap proprietary base path when PO file is moving to another location.
|
253 |
*
|
@@ -273,7 +260,6 @@ class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
|
273 |
}
|
274 |
|
275 |
|
276 |
-
|
277 |
/**
|
278 |
* @param string date format as Gettext states "YEAR-MO-DA HO:MI+ZONE"
|
279 |
* @return int
|
6 |
* Wrapper for array forms of parsed PO data
|
7 |
*/
|
8 |
class Loco_gettext_Data extends LocoPoIterator implements JsonSerializable {
|
9 |
+
|
|
|
10 |
/**
|
11 |
* Normalize file extension to internal type
|
12 |
* @return string "po", "pot" or "mo"
|
21 |
}
|
22 |
|
23 |
|
|
|
24 |
/**
|
25 |
* @return Loco_gettext_Data
|
26 |
*/
|
32 |
}
|
33 |
|
34 |
|
|
|
35 |
/**
|
36 |
* Like load but just pulls header, saving a full parse. PO only
|
37 |
* @return Loco_gettext_Data
|
46 |
}
|
47 |
|
48 |
|
|
|
49 |
/**
|
50 |
* @param string assumed PO source
|
51 |
* @return Loco_gettext_Data
|
55 |
}
|
56 |
|
57 |
|
|
|
58 |
/**
|
59 |
* @param string assumed MO bytes
|
60 |
* @return Loco_gettext_Data
|
64 |
}
|
65 |
|
66 |
|
|
|
67 |
/**
|
68 |
* Create a dummy/empty instance
|
69 |
* @return Loco_gettext_Data
|
90 |
}
|
91 |
|
92 |
|
|
|
93 |
/**
|
94 |
* Get final UTF-8 string for writing to file
|
95 |
* @param bool whether to sort output, generally only for extracting strings
|
108 |
}
|
109 |
|
110 |
|
|
|
111 |
/**
|
112 |
* @return array
|
113 |
*/
|
128 |
}
|
129 |
|
130 |
|
|
|
131 |
/**
|
132 |
* Export to JSON for JavaScript editor
|
133 |
* @return string
|
137 |
}
|
138 |
|
139 |
|
|
|
140 |
/**
|
141 |
* Create a signature for use in comparing source strings between documents
|
142 |
* @return string
|
147 |
}
|
148 |
|
149 |
|
|
|
150 |
/**
|
151 |
* @return Loco_gettext_Data
|
152 |
*/
|
207 |
}
|
208 |
|
209 |
|
|
|
210 |
/**
|
211 |
* @return Loco_gettext_Data
|
212 |
*/
|
235 |
}
|
236 |
|
237 |
|
|
|
238 |
/**
|
239 |
* Remap proprietary base path when PO file is moving to another location.
|
240 |
*
|
260 |
}
|
261 |
|
262 |
|
|
|
263 |
/**
|
264 |
* @param string date format as Gettext states "YEAR-MO-DA HO:MI+ZONE"
|
265 |
* @return int
|
src/gettext/SearchPaths.php
CHANGED
@@ -77,7 +77,7 @@ class Loco_gettext_SearchPaths extends Loco_fs_FileFinder {
|
|
77 |
}
|
78 |
}
|
79 |
|
80 |
-
// Add po file location if no
|
81 |
if( ! $ninc ){
|
82 |
$this->addRoot( $pofile->dirname() );
|
83 |
}
|
77 |
}
|
78 |
}
|
79 |
|
80 |
+
// Add po file location if no proprietary headers used
|
81 |
if( ! $ninc ){
|
82 |
$this->addRoot( $pofile->dirname() );
|
83 |
}
|
src/js/Strings.php
CHANGED
@@ -89,6 +89,15 @@ class Loco_js_Strings extends Loco_hooks_TranslateBuffer {
|
|
89 |
// Label for the plural form of the original English text
|
90 |
_x("Plural","Editor",'loco-translate');
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
// Label for the source text window when no translation selected
|
93 |
_x("Source text not loaded","Editor",'loco-translate');
|
94 |
|
89 |
// Label for the plural form of the original English text
|
90 |
_x("Plural","Editor",'loco-translate');
|
91 |
|
92 |
+
//
|
93 |
+
_x("Untranslated","Editor",'loco-translate');
|
94 |
+
|
95 |
+
//
|
96 |
+
_x("Translated","Editor",'loco-translate');
|
97 |
+
|
98 |
+
//
|
99 |
+
_x("Fuzzy","Editor",'loco-translate');
|
100 |
+
|
101 |
// Label for the source text window when no translation selected
|
102 |
_x("Source text not loaded","Editor",'loco-translate');
|
103 |
|
src/mvc/AjaxRouter.php
CHANGED
@@ -12,13 +12,13 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
12 |
|
13 |
/**
|
14 |
* @var Loco_output_Buffer
|
15 |
-
*/
|
16 |
private $buffer;
|
17 |
|
18 |
-
|
19 |
-
|
20 |
/**
|
21 |
* Generate a GET request URL containing required routing parameters
|
|
|
|
|
22 |
* @return string
|
23 |
*/
|
24 |
public static function generate( $route, array $args = array() ){
|
@@ -35,7 +35,6 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
35 |
}
|
36 |
|
37 |
|
38 |
-
|
39 |
/**
|
40 |
* Create a new ajax router and starts buffering output immediately
|
41 |
*/
|
@@ -45,7 +44,6 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
45 |
}
|
46 |
|
47 |
|
48 |
-
|
49 |
/**
|
50 |
* "init" action callback.
|
51 |
* early-ish hook that ensures controllers can initialize
|
@@ -70,7 +68,6 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
70 |
}
|
71 |
}
|
72 |
|
73 |
-
|
74 |
|
75 |
/**
|
76 |
* @return string
|
@@ -84,29 +81,22 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
84 |
}
|
85 |
|
86 |
|
87 |
-
|
88 |
/**
|
89 |
-
* Common ajax hook for all Loco admin JSON requests
|
|
|
90 |
* @codeCoverageIgnore
|
91 |
*/
|
92 |
public function on_wp_ajax_loco_json(){
|
93 |
$json = $this->renderAjax();
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
// output stream is clear, we can flush JSON
|
98 |
-
header('HTTP/1.1 200 OK', true, 200 );
|
99 |
-
header('Content-Length: '.strlen($json), true );
|
100 |
-
header('Content-Type: application/json; charset=UTF-8', true );
|
101 |
-
// avoid hijacking of exit via wp_die_ajax_handler. Tests call renderAjax directly.
|
102 |
-
echo $json;
|
103 |
-
exit(0);
|
104 |
}
|
105 |
|
106 |
|
107 |
-
|
108 |
/**
|
109 |
* Additional ajax hook for download actions that won't be JSON
|
|
|
110 |
* @codeCoverageIgnore
|
111 |
*/
|
112 |
public function on_wp_ajax_loco_download(){
|
@@ -124,33 +114,53 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
124 |
$data = (string) $data;
|
125 |
$ext = null;
|
126 |
}
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
header('Content-Disposition: attachment; filename='.$file->basename(), true );
|
139 |
-
}
|
140 |
-
else {
|
141 |
-
header('Content-Type: text/plain; charset=UTF-8', true );
|
142 |
-
}
|
143 |
-
header('Content-Length: '.strlen($data), true );
|
144 |
}
|
145 |
-
|
146 |
-
|
147 |
-
|
|
|
148 |
}
|
149 |
|
150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
|
152 |
/**
|
153 |
-
* Execute
|
154 |
* @return string
|
155 |
*/
|
156 |
public function renderAjax(){
|
@@ -173,15 +183,11 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
173 |
$e = new Loco_error_Exception( $e->getMessage(), $e->getCode() );
|
174 |
$json = json_encode( array( 'error' => $e->jsonSerialize(), 'notices' => Loco_error_AdminNotices::destroyAjax() ) );
|
175 |
}
|
176 |
-
|
177 |
-
$this->buffer->close();
|
178 |
-
$this->buffer = null;
|
179 |
-
}
|
180 |
return $json;
|
181 |
}
|
182 |
|
183 |
|
184 |
-
|
185 |
/**
|
186 |
* Execute ajax controller to render something other than JSON
|
187 |
* @return string|Exception
|
@@ -201,10 +207,7 @@ class Loco_mvc_AjaxRouter extends Loco_hooks_Hookable {
|
|
201 |
catch( Exception $e ){
|
202 |
$data = $e;
|
203 |
}
|
204 |
-
|
205 |
-
$this->buffer->close();
|
206 |
-
$this->buffer = null;
|
207 |
-
}
|
208 |
return $data;
|
209 |
}
|
210 |
|
12 |
|
13 |
/**
|
14 |
* @var Loco_output_Buffer
|
15 |
+
*/
|
16 |
private $buffer;
|
17 |
|
|
|
|
|
18 |
/**
|
19 |
* Generate a GET request URL containing required routing parameters
|
20 |
+
* @param string
|
21 |
+
* @param array
|
22 |
* @return string
|
23 |
*/
|
24 |
public static function generate( $route, array $args = array() ){
|
35 |
}
|
36 |
|
37 |
|
|
|
38 |
/**
|
39 |
* Create a new ajax router and starts buffering output immediately
|
40 |
*/
|
44 |
}
|
45 |
|
46 |
|
|
|
47 |
/**
|
48 |
* "init" action callback.
|
49 |
* early-ish hook that ensures controllers can initialize
|
68 |
}
|
69 |
}
|
70 |
|
|
|
71 |
|
72 |
/**
|
73 |
* @return string
|
81 |
}
|
82 |
|
83 |
|
|
|
84 |
/**
|
85 |
+
* Common ajax hook for all Loco admin JSON requests
|
86 |
+
* Note that tests call renderAjax directly.
|
87 |
* @codeCoverageIgnore
|
88 |
*/
|
89 |
public function on_wp_ajax_loco_json(){
|
90 |
$json = $this->renderAjax();
|
91 |
+
$this->exitScript( $json, array (
|
92 |
+
'Content-Type' => 'application/json; charset=UTF-8',
|
93 |
+
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
95 |
|
96 |
|
|
|
97 |
/**
|
98 |
* Additional ajax hook for download actions that won't be JSON
|
99 |
+
* Note that tests call renderDownload directly.
|
100 |
* @codeCoverageIgnore
|
101 |
*/
|
102 |
public function on_wp_ajax_loco_download(){
|
114 |
$data = (string) $data;
|
115 |
$ext = null;
|
116 |
}
|
117 |
+
$mimes = array (
|
118 |
+
'mo' => 'application/x-gettext-translation',
|
119 |
+
'po' => 'application/x-gettext',
|
120 |
+
'pot' => 'application/x-gettext',
|
121 |
+
'xml' => 'text/xml',
|
122 |
+
'json' => 'application/json',
|
123 |
+
);
|
124 |
+
$headers = array();
|
125 |
+
if( $ext && isset($mimes[$ext]) ){
|
126 |
+
$headers['Content-Type'] = $mimes[$ext].'; charset=UTF-8';
|
127 |
+
$headers['Content-Disposition'] = 'attachment; filename='.$file->basename();
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
+
else {
|
130 |
+
$headers['Content-Type'] = 'text/plain; charset=UTF-8';
|
131 |
+
}
|
132 |
+
$this->exitScript( $data, $headers );
|
133 |
}
|
134 |
|
135 |
|
136 |
+
/**
|
137 |
+
* Exit script before WordPress shutdown, avoids hijacking of exit via wp_die_ajax_handler.
|
138 |
+
* Also gives us a final chance to check for output buffering problems.
|
139 |
+
* @codeCoverageIgnore
|
140 |
+
* @param string
|
141 |
+
* @param array
|
142 |
+
*/
|
143 |
+
private function exitScript( $str, array $headers ){
|
144 |
+
try {
|
145 |
+
Loco_output_Buffer::clear();
|
146 |
+
$this->buffer = null;
|
147 |
+
Loco_output_Buffer::check();
|
148 |
+
$headers['Content-Length'] = strlen($str);
|
149 |
+
foreach( $headers as $name => $value ){
|
150 |
+
header( $name.': '.$value, true );
|
151 |
+
}
|
152 |
+
}
|
153 |
+
catch( Exception $e ){
|
154 |
+
Loco_error_AdminNotices::add( Loco_error_Exception::convert($e) );
|
155 |
+
$str = $e->getMessage();
|
156 |
+
}
|
157 |
+
echo $str;
|
158 |
+
exit(0);
|
159 |
+
}
|
160 |
+
|
161 |
|
162 |
/**
|
163 |
+
* Execute Ajax controller to render JSON response body
|
164 |
* @return string
|
165 |
*/
|
166 |
public function renderAjax(){
|
183 |
$e = new Loco_error_Exception( $e->getMessage(), $e->getCode() );
|
184 |
$json = json_encode( array( 'error' => $e->jsonSerialize(), 'notices' => Loco_error_AdminNotices::destroyAjax() ) );
|
185 |
}
|
186 |
+
$this->buffer->discard();
|
|
|
|
|
|
|
187 |
return $json;
|
188 |
}
|
189 |
|
190 |
|
|
|
191 |
/**
|
192 |
* Execute ajax controller to render something other than JSON
|
193 |
* @return string|Exception
|
207 |
catch( Exception $e ){
|
208 |
$data = $e;
|
209 |
}
|
210 |
+
$this->buffer->discard();
|
|
|
|
|
|
|
211 |
return $data;
|
212 |
}
|
213 |
|
src/mvc/View.php
CHANGED
@@ -50,10 +50,10 @@ class Loco_mvc_View implements IteratorAggregate {
|
|
50 |
*/
|
51 |
public function cd( $path ){
|
52 |
if( $path && '/' === $path{0} ){
|
53 |
-
$this->cwd =
|
54 |
}
|
55 |
else {
|
56 |
-
$this->cwd =
|
57 |
}
|
58 |
return $this;
|
59 |
}
|
50 |
*/
|
51 |
public function cd( $path ){
|
52 |
if( $path && '/' === $path{0} ){
|
53 |
+
$this->cwd = untrailingslashit( loco_plugin_root().'/tpl'.$path );
|
54 |
}
|
55 |
else {
|
56 |
+
$this->cwd = untrailingslashit( $this->cwd.'/'.$path );
|
57 |
}
|
58 |
return $this;
|
59 |
}
|
src/output/Buffer.php
CHANGED
@@ -49,7 +49,7 @@ class Loco_output_Buffer {
|
|
49 |
public function open(){
|
50 |
self::check();
|
51 |
if( ! ob_start() ){
|
52 |
-
throw new
|
53 |
}
|
54 |
$this->ob_level = ob_get_level();
|
55 |
return $this;
|
@@ -62,52 +62,45 @@ class Loco_output_Buffer {
|
|
62 |
public function close(){
|
63 |
if( is_int($this->ob_level) ){
|
64 |
// collect output from our nested buffers
|
65 |
-
$this->output = self::
|
66 |
$this->ob_level = null;
|
67 |
}
|
68 |
return $this;
|
69 |
}
|
70 |
|
71 |
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
// There's no way to handle junk output once it's flushed. exit unpleasantly unless in test
|
83 |
-
if( ! defined('LOCO_TEST') ){
|
84 |
-
throw new Loco_error_Exception( $message );
|
85 |
-
}
|
86 |
-
// @codeCoverageIgnoreEnd
|
87 |
-
}
|
88 |
}
|
89 |
|
90 |
|
91 |
/**
|
92 |
-
*
|
93 |
-
* @param int highest buffer to flush
|
94 |
* @return string
|
95 |
*/
|
96 |
-
|
97 |
-
$last =
|
98 |
$output = '';
|
99 |
while( $level = ob_get_level() ){
|
100 |
-
// avoid "impossible" infinite loop
|
101 |
// @codeCoverageIgnoreStart
|
102 |
if( $level === $last ){
|
103 |
-
throw new
|
104 |
}
|
105 |
// @codeCoverageIgnoreEnd
|
106 |
if( $level < $min ){
|
107 |
break;
|
108 |
}
|
109 |
-
|
110 |
-
ob_get_clean();
|
111 |
$last = $level;
|
112 |
}
|
113 |
return $output;
|
@@ -115,16 +108,38 @@ class Loco_output_Buffer {
|
|
115 |
|
116 |
|
117 |
/**
|
118 |
-
*
|
119 |
* @return void
|
120 |
*/
|
121 |
public static function clear(){
|
122 |
-
$junk = self::
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
public function open(){
|
50 |
self::check();
|
51 |
if( ! ob_start() ){
|
52 |
+
throw new Loco_error_Exception('Failed to start output buffering');
|
53 |
}
|
54 |
$this->ob_level = ob_get_level();
|
55 |
return $this;
|
62 |
public function close(){
|
63 |
if( is_int($this->ob_level) ){
|
64 |
// collect output from our nested buffers
|
65 |
+
$this->output = self::collect( $this->ob_level );
|
66 |
$this->ob_level = null;
|
67 |
}
|
68 |
return $this;
|
69 |
}
|
70 |
|
71 |
|
72 |
+
/**
|
73 |
+
* Trash all open buffers, logging any junk output collected
|
74 |
+
* @return void
|
75 |
+
*/
|
76 |
+
public function discard(){
|
77 |
+
$this->close();
|
78 |
+
if( '' !== $this->output ){
|
79 |
+
self::log_junk( $this->output );
|
80 |
+
$this->output = '';
|
81 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
|
85 |
/**
|
86 |
+
* Collect output buffered to a given level
|
87 |
+
* @param int highest buffer to flush, 0 being the root
|
88 |
* @return string
|
89 |
*/
|
90 |
+
public static function collect( $min ){
|
91 |
+
$last = 0;
|
92 |
$output = '';
|
93 |
while( $level = ob_get_level() ){
|
|
|
94 |
// @codeCoverageIgnoreStart
|
95 |
if( $level === $last ){
|
96 |
+
throw new Loco_error_Exception('Failed to close output buffer');
|
97 |
}
|
98 |
// @codeCoverageIgnoreEnd
|
99 |
if( $level < $min ){
|
100 |
break;
|
101 |
}
|
102 |
+
// output is appended inside out:
|
103 |
+
$output = ob_get_clean().$output;
|
104 |
$last = $level;
|
105 |
}
|
106 |
return $output;
|
108 |
|
109 |
|
110 |
/**
|
111 |
+
* Forcefully destroy all open buffers and log any bytes already buffered.
|
112 |
* @return void
|
113 |
*/
|
114 |
public static function clear(){
|
115 |
+
$junk = self::collect(0);
|
116 |
+
if( '' !== $junk ){
|
117 |
+
self::log_junk($junk);
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Check output has not already been flushed.
|
124 |
+
* @throws Loco_error_Exception
|
125 |
+
*/
|
126 |
+
public static function check(){
|
127 |
+
if( headers_sent($file,$line) && 'cli' !== PHP_SAPI ){
|
128 |
+
$file = str_replace( trailingslashit( loco_constant('ABSPATH') ), '', $file );
|
129 |
+
throw new Loco_error_Exception( sprintf( __('Loco interrupted by output from %s:%u','loco-translate'), $file, $line ) );
|
130 |
+
}
|
131 |
}
|
132 |
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Debug collection of junk output
|
136 |
+
* @param string
|
137 |
+
*/
|
138 |
+
private static function log_junk( $junk ){
|
139 |
+
$bytes = strlen($junk);
|
140 |
+
$message = sprintf("Cleared %s of buffered output", Loco_mvc_FileParams::renderBytes($bytes) );
|
141 |
+
Loco_error_AdminNotices::debug( $message );
|
142 |
+
do_action( 'loco_buffer_cleared', $junk );
|
143 |
+
}
|
144 |
+
|
145 |
+
}
|
src/package/Bundle.php
CHANGED
@@ -249,7 +249,7 @@ abstract class Loco_package_Bundle extends ArrayObject implements JsonSerializab
|
|
249 |
return $this->root->getPath();
|
250 |
}
|
251 |
// without a root directory return WordPress root
|
252 |
-
return
|
253 |
}
|
254 |
|
255 |
|
@@ -323,10 +323,11 @@ abstract class Loco_package_Bundle extends ArrayObject implements JsonSerializab
|
|
323 |
|
324 |
/**
|
325 |
* Add all projects defined in a TextDomain
|
|
|
326 |
* @return Loco_package_Bundle
|
327 |
*/
|
328 |
public function addDomain( Loco_package_TextDomain $domain ){
|
329 |
-
/* @var $proj
|
330 |
foreach( $domain as $proj ){
|
331 |
$this->addProject($proj);
|
332 |
}
|
249 |
return $this->root->getPath();
|
250 |
}
|
251 |
// without a root directory return WordPress root
|
252 |
+
return untrailingslashit(ABSPATH);
|
253 |
}
|
254 |
|
255 |
|
323 |
|
324 |
/**
|
325 |
* Add all projects defined in a TextDomain
|
326 |
+
* @param Loco_package_TextDomain
|
327 |
* @return Loco_package_Bundle
|
328 |
*/
|
329 |
public function addDomain( Loco_package_TextDomain $domain ){
|
330 |
+
/* @var Loco_package_Project $proj */
|
331 |
foreach( $domain as $proj ){
|
332 |
$this->addProject($proj);
|
333 |
}
|
src/package/Core.php
CHANGED
@@ -9,8 +9,8 @@ class Loco_package_Core extends Loco_package_Bundle {
|
|
9 |
*/
|
10 |
public function getSystemTargets(){
|
11 |
return array (
|
12 |
-
|
13 |
-
|
14 |
);
|
15 |
}
|
16 |
|
9 |
*/
|
10 |
public function getSystemTargets(){
|
11 |
return array (
|
12 |
+
untrailingslashit( loco_constant('LOCO_LANG_DIR') ),
|
13 |
+
untrailingslashit( loco_constant('WP_LANG_DIR') )
|
14 |
);
|
15 |
}
|
16 |
|
src/package/Plugin.php
CHANGED
@@ -10,8 +10,8 @@ class Loco_package_Plugin extends Loco_package_Bundle {
|
|
10 |
*/
|
11 |
public function getSystemTargets(){
|
12 |
return array (
|
13 |
-
|
14 |
-
|
15 |
);
|
16 |
}
|
17 |
|
10 |
*/
|
11 |
public function getSystemTargets(){
|
12 |
return array (
|
13 |
+
trailingslashit( loco_constant('LOCO_LANG_DIR') ).'plugins',
|
14 |
+
trailingslashit( loco_constant('WP_LANG_DIR') ).'plugins',
|
15 |
);
|
16 |
}
|
17 |
|
src/package/Project.php
CHANGED
@@ -224,6 +224,7 @@ class Loco_package_Project {
|
|
224 |
|
225 |
/**
|
226 |
* Add a global search path where translation files may live
|
|
|
227 |
* @return Loco_package_Project
|
228 |
*/
|
229 |
public function addSystemTargetDirectory( $location ){
|
@@ -270,7 +271,7 @@ class Loco_package_Project {
|
|
270 |
$target->setRecursive(false)->group('pot','po','mo');
|
271 |
foreach( $this->dpaths as $path ){
|
272 |
// TODO search need not be recursive if it was the configured DomainPath
|
273 |
-
//
|
274 |
$target->addRoot( (string) $path, true );
|
275 |
}
|
276 |
foreach( $this->gpaths as $path ){
|
@@ -654,7 +655,8 @@ class Loco_package_Project {
|
|
654 |
|
655 |
|
656 |
/**
|
657 |
-
*
|
|
|
658 |
* @return Loco_fs_FileList
|
659 |
*/
|
660 |
public function initLocaleFiles( Loco_Locale $locale ){
|
224 |
|
225 |
/**
|
226 |
* Add a global search path where translation files may live
|
227 |
+
* @param string | Loco_fs_Directory
|
228 |
* @return Loco_package_Project
|
229 |
*/
|
230 |
public function addSystemTargetDirectory( $location ){
|
271 |
$target->setRecursive(false)->group('pot','po','mo');
|
272 |
foreach( $this->dpaths as $path ){
|
273 |
// TODO search need not be recursive if it was the configured DomainPath
|
274 |
+
// currently no way to know at this point, so recursing by default.
|
275 |
$target->addRoot( (string) $path, true );
|
276 |
}
|
277 |
foreach( $this->gpaths as $path ){
|
655 |
|
656 |
|
657 |
/**
|
658 |
+
* Initialize choice of PO file paths for a given locale
|
659 |
+
* @param Loco_Locale locale to initialize translation files for
|
660 |
* @return Loco_fs_FileList
|
661 |
*/
|
662 |
public function initLocaleFiles( Loco_Locale $locale ){
|
src/package/Theme.php
CHANGED
@@ -15,8 +15,8 @@ class Loco_package_Theme extends Loco_package_Bundle {
|
|
15 |
*/
|
16 |
public function getSystemTargets(){
|
17 |
return array (
|
18 |
-
|
19 |
-
|
20 |
);
|
21 |
}
|
22 |
|
15 |
*/
|
16 |
public function getSystemTargets(){
|
17 |
return array (
|
18 |
+
trailingslashit( loco_constant('LOCO_LANG_DIR') ).'themes',
|
19 |
+
trailingslashit( loco_constant('WP_LANG_DIR') ).'themes',
|
20 |
);
|
21 |
}
|
22 |
|
tpl/admin/config/debug.php
CHANGED
@@ -91,6 +91,23 @@ $this->extend('../layout');
|
|
91 |
</dl>
|
92 |
</div>
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
<div class="panel" id="loco-debug">
|
95 |
<h3>
|
96 |
Debug settings
|
91 |
</dl>
|
92 |
</div>
|
93 |
|
94 |
+
<?php /*div class="panel" id="loco-ob">
|
95 |
+
<h3>
|
96 |
+
Output buffering
|
97 |
+
<a href="#loco-ob" class="loco-anchor" aria-hidden="true"></a>
|
98 |
+
</h3>
|
99 |
+
<dl><?php
|
100 |
+
foreach( $ob as $key => $value ):?>
|
101 |
+
<dt>
|
102 |
+
<?php echo $ob->escape($key)?>:
|
103 |
+
</dt>
|
104 |
+
<dd>
|
105 |
+
<?php $ob->e($key)?>
|
106 |
+
</dd><?php
|
107 |
+
endforeach?>
|
108 |
+
</dl>
|
109 |
+
</div*/?>
|
110 |
+
|
111 |
<div class="panel" id="loco-debug">
|
112 |
<h3>
|
113 |
Debug settings
|
tpl/admin/init/init-po.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
*/
|
5 |
$this->extend('../layout');
|
6 |
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Initialize a new PO translations file
|
4 |
*/
|
5 |
$this->extend('../layout');
|
6 |
|