OptionTree - Version 2.5.0

Version Description

  • Added the Google Fonts option type. Contributors via github @maimairel, and @valendesigns.
  • Added the Border option type. Contributors via github @doitmax, and @valendesigns.
  • Added the Box Shadow option type. Contributors via github @doitmax, and @valendesigns.
  • Added the Colorpicker Opacity option type. Contributors via github @doitmax, and @valendesigns.
  • Added the Dimension option type. Contributors via github @doitmax, and @valendesigns.
  • Added the JavaScript option type.
  • Added the Link Color option type. Contributors via github @doitmax, and @valendesigns.
  • Added the Spacing option type. Contributors via github @doitmax, and @valendesigns.
  • Fixed an issue where the Colorpicker was not parsing conditions on change or clear.
  • Fixed the Colorpicker styles on mobile devices.
  • Show the Colorpicker setting ID inside the error message string when the value is invalid.
  • Added an 'on change' trigger to the Numeric Slider's hidden input. Contributors via github @cubell.
  • Stop Theme Check from complaining about the register_post_type() function being used in Theme Mode.
  • Added styles that clean up the appearance of the included Font Awesome icons in section tabs.
  • Fixed jQuery UI style conflicts created by the WP Review plugin.
  • Changed the sanitization function from sanitize_text_field to esc_url_raw for the Upload option type.
  • Added filter ot_dequeue_jquery_ui_css_screen_ids to dequeue jquery-ui-css by screen ID.
  • Added filter ot_on_off_switch_on_value to filter the value of the On button. Contributors via github @BassemN, and @valendesigns.
  • Added filter ot_on_off_switch_on_label to filter the label of the On button. Contributors via github @BassemN, and @valendesigns.
  • Added filter ot_on_off_switch_off_value to filter the value of the Off button. Contributors via github @BassemN, and @valendesigns.
  • Added filter ot_on_off_switch_off_label to filter the label of the Off button. Contributors via github @BassemN, and @valendesigns.
  • Added filter ot_on_off_switch_width to filter the width of the On/Off switch.
  • Added filter ot_type_date_picker_readonly to filter the addition of the readonly attribute.
  • Added filter ot_type_date_time_picker_readonly to filter the addition of the readonly attribute.
  • Added filter ot_admin_menu_priority to filter the admin_menu action hook priority.
  • Added Estonian translation. Contributors via github @tjuris, and @RistoNiinemets.
  • Fixed an issue where changes to theme-options.php required a second page load.
  • Fixed the clean up script, it only displays when there's something to clean up. No more menu item!
  • Update demo files with the latest option types.
  • Changed where ot_css_file_paths is saved when is_multisite for better dynamic.css file support.
  • Changed the default dynamic.css file path in multisite to be dynamic-{current-blog-id}.css.
Download this release

Release Info

Developer valendesigns
Plugin Icon wp plugin OptionTree
Version 2.5.0
Comparing to
See all releases

Code changes from version 2.4.6 to 2.5.0

assets/css/ot-admin-rtl.css CHANGED
@@ -1,3 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
1
  /* --------------------------------------------------
2
  :: Messages
3
  ---------------------------------------------------*/
@@ -275,6 +286,38 @@ div.option-tree-ui-media-wrap {
275
  margin: 0 10px 0 0 !important;
276
  }
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  /* --------------------------------------------------
279
  :: Select
280
  ---------------------------------------------------*/
@@ -354,12 +397,6 @@ div.option-tree-ui-media-wrap {
354
  -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
355
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
356
  }
357
- .ot-numeric-slider.ui-slider .ui-slider-handle {
358
- background-image: -webkit-gradient(linear,rightt top,right bottom,from(#2a95c5),to(#21759b));
359
- }
360
- .ot-numeric-slider.ui-slider .ui-slider-handle:hover {
361
- background-image: -webkit-gradient(linear,right top,right bottom,from(#2e9fd2),to(#21759b));
362
- }
363
 
364
  /* --------------------------------------------------
365
  :: Colorpicker
@@ -367,6 +404,14 @@ div.option-tree-ui-media-wrap {
367
  .option-tree-ui-colorpicker-input-wrap {
368
  float: right;
369
  }
 
 
 
 
 
 
 
 
370
  .option-tree-ui-colorpicker-input-wrap .wp-color-result {
371
  margin: 0px 0px 5px 5px;
372
  }
@@ -374,6 +419,15 @@ div.option-tree-ui-media-wrap {
374
  margin: 0px 0px 5px 5px;
375
  }
376
 
 
 
 
 
 
 
 
 
 
377
  /* --------------------------------------------------
378
  :: OptionTree UI Buttons
379
  ---------------------------------------------------*/
@@ -440,6 +494,17 @@ ul.ot-gallery-list li {
440
  float: right;
441
  }
442
 
 
 
 
 
 
 
 
 
 
 
 
443
  /* --------------------------------------------------
444
  :: On/Off Switch
445
  ---------------------------------------------------*/
@@ -458,7 +523,7 @@ ul.ot-gallery-list li {
458
  }
459
  .on-off-switch input:last-of-type:checked ~ .slide-button {
460
  left: auto;
461
- right: 50px;
462
  }
463
  }
464
 
1
+ /* --------------------------------------------------
2
+ :: OptionTree Font
3
+ ---------------------------------------------------*/
4
+ .ui-tabs li > a [class^="ot-icon-"],
5
+ .ui-tabs li > a [class*=" ot-icon-"] {
6
+ display: block;
7
+ height: 14px;
8
+ float: right;
9
+ padding: 2px 0px 0 9px;
10
+ }
11
+
12
  /* --------------------------------------------------
13
  :: Messages
14
  ---------------------------------------------------*/
286
  margin: 0 10px 0 0 !important;
287
  }
288
 
289
+ /* --------------------------------------------------
290
+ :: Option Group
291
+ ---------------------------------------------------*/
292
+ .ot-option-group {
293
+ float: right;
294
+ padding-right: 0px;
295
+ padding-left: 5px;
296
+ }
297
+ .ot-option-group--is-last {
298
+ padding-left: 0;
299
+ }
300
+ .ot-option-group--icon {
301
+ border-left: 1px solid #ccc;
302
+ border-right: 0px;
303
+ left: auto;
304
+ right: 1px;
305
+ }
306
+ .ot-option-group--icon + input.option-tree-ui-input {
307
+ padding-left: 5px !important;
308
+ padding-right: 34px !important;
309
+ margin-left: 5px;
310
+ margin-right: 0px;
311
+ }
312
+ .ot-option-group--checkbox {
313
+ float: right;
314
+ padding-right: 0px;
315
+ padding-left: 10px;
316
+ }
317
+ #post-body .ot-option-group--checkbox p {
318
+ float: right;
319
+ }
320
+
321
  /* --------------------------------------------------
322
  :: Select
323
  ---------------------------------------------------*/
397
  -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
398
  box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
399
  }
 
 
 
 
 
 
400
 
401
  /* --------------------------------------------------
402
  :: Colorpicker
404
  .option-tree-ui-colorpicker-input-wrap {
405
  float: right;
406
  }
407
+ .option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
408
+ margin-left: 10px;
409
+ margin-right: 0px;
410
+ }
411
+ .type-link-color .option-tree-ui-colorpicker-input-wrap {
412
+ margin-left: 20px;
413
+ margin-right: 0px;
414
+ }
415
  .option-tree-ui-colorpicker-input-wrap .wp-color-result {
416
  margin: 0px 0px 5px 5px;
417
  }
419
  margin: 0px 0px 5px 5px;
420
  }
421
 
422
+ /* --------------------------------------------------
423
+ :: Google Font
424
+ ---------------------------------------------------*/
425
+ .js-remove-google-font.option-tree-ui-button.button {
426
+ margin-left: 5px;
427
+ margin-right: 0;
428
+ margin-top: 0;
429
+ }
430
+
431
  /* --------------------------------------------------
432
  :: OptionTree UI Buttons
433
  ---------------------------------------------------*/
494
  float: right;
495
  }
496
 
497
+ /* --------------------------------------------------
498
+ :: Google Fonts
499
+ ---------------------------------------------------*/
500
+ .option-tree-google-font-family,
501
+ .option-tree-google-font-variants,
502
+ .option-tree-google-font-subsets,
503
+ #option-tree-settings-api p.checkbox-wrap,
504
+ #post-body .ot-metabox-panels p.checkbox-wrap {
505
+ float: right;
506
+ }
507
+
508
  /* --------------------------------------------------
509
  :: On/Off Switch
510
  ---------------------------------------------------*/
523
  }
524
  .on-off-switch input:last-of-type:checked ~ .slide-button {
525
  left: auto;
526
+ right: 50%;
527
  }
528
  }
529
 
assets/css/ot-admin.css CHANGED
@@ -25,6 +25,13 @@
25
  -moz-osx-font-smoothing: grayscale;
26
  }
27
 
 
 
 
 
 
 
 
28
  .ot-icon-option-tree:before {
29
  content: "\e785";
30
  }
@@ -2083,6 +2090,114 @@ li ul .format-setting-label {
2083
  padding-left: 1px;
2084
  }
2085
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2086
  /* --------------------------------------------------
2087
  :: Select
2088
  ---------------------------------------------------*/
@@ -2231,7 +2346,8 @@ select.option-tree-ui-select option {
2231
  /* --------------------------------------------------
2232
  :: Numeric Slider
2233
  ---------------------------------------------------*/
2234
- .type-numeric-slider .format-setting-inner {
 
2235
  background: #fcfcfc;
2236
  border: 1px solid #ccc;
2237
  min-height: 41px;
@@ -2253,6 +2369,12 @@ select.option-tree-ui-select option {
2253
  top: 5px;
2254
  width: 90px !important;
2255
  }
 
 
 
 
 
 
2256
  .ot-numeric-slider.ui-slider {
2257
  background: #fff;
2258
  border: 1px solid #ccc;
@@ -2375,10 +2497,20 @@ select.option-tree-ui-select option {
2375
  .hide-color-picker {
2376
  display: none;
2377
  }
 
 
 
 
 
 
 
 
 
2378
  .option-tree-ui-colorpicker-input-wrap .wp-color-picker,
2379
  .option-tree-ui-colorpicker-input-wrap .wp-picker-default,
2380
  .option-tree-ui-colorpicker-input-wrap .wp-picker-clear {
2381
  border-color: #ccc;
 
2382
  height: 29px !important;
2383
  line-height: 27px !important;
2384
  margin-top: 0px;
@@ -2389,6 +2521,9 @@ select.option-tree-ui-select option {
2389
  -moz-box-shadow: none;
2390
  box-shadow: none;
2391
  }
 
 
 
2392
  .option-tree-ui-colorpicker-input-wrap .wp-color-result {
2393
  height: 27px;
2394
  outline: 0;
@@ -2408,6 +2543,44 @@ select.option-tree-ui-select option {
2408
  -moz-border-radius: 2px;
2409
  border-radius: 2px;
2410
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2411
 
2412
  /* --------------------------------------------------
2413
  :: OptionTree UI Buttons
@@ -2660,6 +2833,38 @@ ul.ot-gallery-list li img {
2660
  margin-bottom: 0px;
2661
  }
2662
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2663
  /* --------------------------------------------------
2664
  :: On/Off Switch
2665
  ---------------------------------------------------*/
@@ -2706,7 +2911,7 @@ ul.ot-gallery-list li img {
2706
  position: relative;
2707
  text-align: center;
2708
  vertical-align: middle;
2709
- width: 50px;
2710
  z-index: 2;
2711
  }
2712
  .on-off-switch input:last-of-type + label {
@@ -2731,7 +2936,7 @@ ul.ot-gallery-list li img {
2731
  position: absolute;
2732
  text-decoration: none;
2733
  top: -1px;
2734
- width: 51px;
2735
  z-index: 1;
2736
  -webkit-border-radius: 2px;
2737
  -moz-border-radius: 2px;
@@ -2747,7 +2952,7 @@ ul.ot-gallery-list li img {
2747
  background: #b73b27;
2748
  border-color: #7f291b;
2749
  color: #fff;
2750
- left: 50px;
2751
  -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
2752
  -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
2753
  box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
@@ -2852,7 +3057,9 @@ ul.ot-gallery-list li img {
2852
  :: CSS Editor
2853
  ---------------------------------------------------*/
2854
  #option-tree-settings-api pre.ot-css-editor,
2855
- #poststuff .type-css pre.ot-css-editor {
 
 
2856
  bottom: 0;
2857
  height: 280px;
2858
  left: 0;
@@ -2861,7 +3068,8 @@ ul.ot-gallery-list li img {
2861
  top: 0;
2862
  }
2863
  #option-tree-settings-api pre.ace-chrome,
2864
- #poststuff .type-css pre.ace-chrome {
 
2865
  background-color: #fff !important;
2866
  border: 1px solid #ccc;
2867
  -webkit-border-radius: 2px;
@@ -2869,14 +3077,16 @@ ul.ot-gallery-list li img {
2869
  border-radius: 2px;
2870
  }
2871
  #option-tree-settings-api pre.ace-chrome:hover,
2872
- #poststuff .type-css pre.ace-chrome:hover {
 
2873
  border-color: #bbb !important;
2874
  -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
2875
  -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
2876
  box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
2877
  }
2878
  #option-tree-settings-api pre.ace-chrome.ace_focus,
2879
- #poststuff .type-css pre.ace-chrome.ace_focus {
 
2880
  border-color: #999 !important;
2881
  -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
2882
  -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
@@ -3699,4 +3909,4 @@ a.ui-datepicker-next {
3699
  .ot-metabox-tabs.ui-tabs .ot-metabox-panel {
3700
  clear: both;
3701
  }
3702
- }
25
  -moz-osx-font-smoothing: grayscale;
26
  }
27
 
28
+ .ui-tabs li > a [class^="ot-icon-"],
29
+ .ui-tabs li > a [class*=" ot-icon-"] {
30
+ padding-right: 5px;
31
+ line-height: 18px;
32
+ vertical-align: middle;
33
+ }
34
+
35
  .ot-icon-option-tree:before {
36
  content: "\e785";
37
  }
2090
  padding-left: 1px;
2091
  }
2092
 
2093
+ /* --------------------------------------------------
2094
+ :: Option Group
2095
+ ---------------------------------------------------*/
2096
+ .ot-option-group {
2097
+ float: left;
2098
+ padding-right: 5px;
2099
+ position: relative;
2100
+ width: 20%;
2101
+ box-sizing: border-box;
2102
+ }
2103
+ .ot-option-group--three-fourths {
2104
+ width: 75%;
2105
+ }
2106
+ .ot-option-group--two-thirds {
2107
+ width: 66.6%;
2108
+ }
2109
+ .ot-option-group--one-half {
2110
+ width: 50%;
2111
+ }
2112
+ .ot-option-group--one-third {
2113
+ width: 33.3%;
2114
+ }
2115
+ .ot-option-group--one-fourth {
2116
+ width: 25%;
2117
+ }
2118
+ .ot-option-group--one-fifth {
2119
+ width: 20%;
2120
+ }
2121
+ .ot-option-group--one-sixth {
2122
+ width: 16.6%;
2123
+ }
2124
+ .ot-option-group--one-eighth {
2125
+ width: 12.5%;
2126
+ }
2127
+ .ot-option-group--is-last {
2128
+ padding-right: 0;
2129
+ }
2130
+ .ot-option-group--icon {
2131
+ background: #fafafa;
2132
+ border-right: 1px solid #ccc;
2133
+ display: inline-block;
2134
+ font-size: 14px;
2135
+ line-height: 14px;
2136
+ padding: 6px 6px 7px;
2137
+ position: absolute;
2138
+ text-align: center;
2139
+ top: 1px;
2140
+ left: 1px;
2141
+ width: 14px;
2142
+ z-index: 10;
2143
+ }
2144
+ .ot-icon-circle.ot-option-group--icon:before {
2145
+ left: 1px;
2146
+ position: relative;
2147
+ -webkit-filter: blur(1px);
2148
+ -moz-filter: blur(1px);
2149
+ -ms-filter: blur(1px);
2150
+ -o-filter: blur(1px);
2151
+ filter: blur(1px);
2152
+ }
2153
+ .ot-option-group--icon + input.option-tree-ui-input {
2154
+ padding-left: 34px !important;
2155
+ margin-right: 5px;
2156
+ }
2157
+ .ot-option-group--checkbox {
2158
+ float: left;
2159
+ padding-top: 2px;
2160
+ padding-right: 10px;
2161
+ width: auto;
2162
+ }
2163
+ #post-body .ot-option-group--checkbox p {
2164
+ color: #a9a9a9;
2165
+ float: left;
2166
+ margin: 1px 0 0.3em 0 !important;
2167
+ }
2168
+ @media screen and ( min-width: 783px ) {
2169
+ #post-body .ot-option-group--checkbox p input {
2170
+ margin-top: 0px !important;
2171
+ }
2172
+ }
2173
+ @media screen and ( max-width: 1020px ) {
2174
+ .ot-option-group--one-fourth,
2175
+ .ot-option-group--one-fifth,
2176
+ .ot-option-group--one-sixth,
2177
+ .ot-option-group--one-eighth {
2178
+ width: 33.3%;
2179
+ }
2180
+ .ot-option-group--checkbox {
2181
+ width: 100%;
2182
+ }
2183
+ }
2184
+ @media screen and ( max-width: 782px ) {
2185
+ .ot-option-group {
2186
+ width: 50%;
2187
+ }
2188
+ .ot-option-group--three-fourths,
2189
+ .ot-option-group--two-thirds,
2190
+ .ot-option-group--one-half {
2191
+ width: 100%;
2192
+ }
2193
+ .ot-option-group--checkbox {
2194
+ padding-top: 0.3em;
2195
+ }
2196
+ }
2197
+ .ot-option-group .select-wrapper {
2198
+ width: 100%;
2199
+ }
2200
+
2201
  /* --------------------------------------------------
2202
  :: Select
2203
  ---------------------------------------------------*/
2346
  /* --------------------------------------------------
2347
  :: Numeric Slider
2348
  ---------------------------------------------------*/
2349
+ .type-numeric-slider .format-setting-inner,
2350
+ .type-colorpicker-opacity .format-setting-inner {
2351
  background: #fcfcfc;
2352
  border: 1px solid #ccc;
2353
  min-height: 41px;
2369
  top: 5px;
2370
  width: 90px !important;
2371
  }
2372
+ .type-colorpicker-opacity .format-setting-inner {
2373
+ padding-bottom: 0;
2374
+ }
2375
+ .type-colorpicker-opacity .wp-picker-container {
2376
+ margin-top: 35px;
2377
+ }
2378
  .ot-numeric-slider.ui-slider {
2379
  background: #fff;
2380
  border: 1px solid #ccc;
2497
  .hide-color-picker {
2498
  display: none;
2499
  }
2500
+ .option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
2501
+ height: 30px;
2502
+ line-height: 30px;
2503
+ margin-right: 10px;
2504
+ display: block;
2505
+ }
2506
+ .type-link-color .option-tree-ui-colorpicker-input-wrap {
2507
+ margin-right: 20px;
2508
+ }
2509
  .option-tree-ui-colorpicker-input-wrap .wp-color-picker,
2510
  .option-tree-ui-colorpicker-input-wrap .wp-picker-default,
2511
  .option-tree-ui-colorpicker-input-wrap .wp-picker-clear {
2512
  border-color: #ccc;
2513
+ font-size: 12px !important;
2514
  height: 29px !important;
2515
  line-height: 27px !important;
2516
  margin-top: 0px;
2521
  -moz-box-shadow: none;
2522
  box-shadow: none;
2523
  }
2524
+ .option-tree-ui-colorpicker-input-wrap .wp-color-picker {
2525
+ margin: 0 0 5px 0 !important;
2526
+ }
2527
  .option-tree-ui-colorpicker-input-wrap .wp-color-result {
2528
  height: 27px;
2529
  outline: 0;
2543
  -moz-border-radius: 2px;
2544
  border-radius: 2px;
2545
  }
2546
+ @media screen and ( max-width: 782px ) {
2547
+ .option-tree-ui-colorpicker-input-wrap .wp-color-picker {
2548
+ padding: 3px 5px !important;
2549
+ }
2550
+ .option-tree-ui-colorpicker-input-wrap .wp-picker-clear,
2551
+ .option-tree-ui-colorpicker-input-wrap .wp-picker-default {
2552
+ margin-top: 4px;
2553
+ padding: 0 8px 1px !important;
2554
+ }
2555
+ .type-colorpicker-opacity .wp-color-result,
2556
+ .type-colorpicker-opacity .wp-picker-input-wrap input {
2557
+ margin-top: 0px !important;
2558
+ }
2559
+ .type-colorpicker-opacity .wp-picker-open,
2560
+ .type-colorpicker-opacity .wp-picker-input-wrap input[type="text"] {
2561
+ position: relative;
2562
+ top: -2px !important;
2563
+ }
2564
+ }
2565
+
2566
+ /* --------------------------------------------------
2567
+ :: Google Font
2568
+ ---------------------------------------------------*/
2569
+ .type-google-font {
2570
+
2571
+ }
2572
+ .type-google-font-group-clone {
2573
+ display: none;
2574
+ }
2575
+ .type-google-font-group {
2576
+ float: left;
2577
+ margin-bottom: 20px;
2578
+ width: 100%;
2579
+ }
2580
+ .js-remove-google-font.option-tree-ui-button.button {
2581
+ margin-left: 0;
2582
+ margin-top: 0;
2583
+ }
2584
 
2585
  /* --------------------------------------------------
2586
  :: OptionTree UI Buttons
2833
  margin-bottom: 0px;
2834
  }
2835
 
2836
+ /* --------------------------------------------------
2837
+ :: Google Fonts
2838
+ ---------------------------------------------------*/
2839
+ .option-tree-google-font-family,
2840
+ .option-tree-google-font-variants,
2841
+ .option-tree-google-font-subsets {
2842
+ float: left;
2843
+ width: 20%;
2844
+ }
2845
+ .option-tree-google-font-family {
2846
+ width: 100%;
2847
+ }
2848
+ #option-tree-settings-api p.checkbox-wrap,
2849
+ #post-body .ot-metabox-panels p.checkbox-wrap {
2850
+ display: block;
2851
+ float: left;
2852
+ margin: 0.3em 0 !important;
2853
+ width: 100%;
2854
+ }
2855
+ @media screen and ( max-width: 1020px ) {
2856
+ .option-tree-google-font-variants,
2857
+ .option-tree-google-font-subsets {
2858
+ width: 33%;
2859
+ }
2860
+ }
2861
+ @media screen and ( max-width: 782px ) {
2862
+ .option-tree-google-font-variants,
2863
+ .option-tree-google-font-subsets {
2864
+ width: 50%;
2865
+ }
2866
+ }
2867
+
2868
  /* --------------------------------------------------
2869
  :: On/Off Switch
2870
  ---------------------------------------------------*/
2911
  position: relative;
2912
  text-align: center;
2913
  vertical-align: middle;
2914
+ width: 50%;
2915
  z-index: 2;
2916
  }
2917
  .on-off-switch input:last-of-type + label {
2936
  position: absolute;
2937
  text-decoration: none;
2938
  top: -1px;
2939
+ width: 51%;
2940
  z-index: 1;
2941
  -webkit-border-radius: 2px;
2942
  -moz-border-radius: 2px;
2952
  background: #b73b27;
2953
  border-color: #7f291b;
2954
  color: #fff;
2955
+ left: 50%;
2956
  -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
2957
  -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
2958
  box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
3057
  :: CSS Editor
3058
  ---------------------------------------------------*/
3059
  #option-tree-settings-api pre.ot-css-editor,
3060
+ #poststuff .type-css pre.ot-css-editor,
3061
+ #option-tree-settings-api pre.ot-javascript-editor,
3062
+ #poststuff .type-javascript pre.ot-javascript-editor {
3063
  bottom: 0;
3064
  height: 280px;
3065
  left: 0;
3068
  top: 0;
3069
  }
3070
  #option-tree-settings-api pre.ace-chrome,
3071
+ #poststuff .type-css pre.ace-chrome,
3072
+ #poststuff .type-javascript pre.ace-chrome {
3073
  background-color: #fff !important;
3074
  border: 1px solid #ccc;
3075
  -webkit-border-radius: 2px;
3077
  border-radius: 2px;
3078
  }
3079
  #option-tree-settings-api pre.ace-chrome:hover,
3080
+ #poststuff .type-css pre.ace-chrome:hover,
3081
+ #poststuff .type-javascript pre.ace-chrome:hover {
3082
  border-color: #bbb !important;
3083
  -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3084
  -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3085
  box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3086
  }
3087
  #option-tree-settings-api pre.ace-chrome.ace_focus,
3088
+ #poststuff .type-css pre.ace-chrome.ace_focus,
3089
+ #poststuff .type-javascript pre.ace-chrome.ace_focus {
3090
  border-color: #999 !important;
3091
  -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3092
  -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3909
  .ot-metabox-tabs.ui-tabs .ot-metabox-panel {
3910
  clear: both;
3911
  }
3912
+ }
assets/js/ot-admin.js CHANGED
@@ -25,11 +25,13 @@
25
  this.init_radio_image_select();
26
  this.init_select_wrapper();
27
  this.bind_select_wrapper();
 
28
  this.fix_upload_parent();
29
  this.fix_textarea();
30
  this.replicate_ajax();
31
  this.reset_settings();
32
- this.css_editor_mode();
 
33
  },
34
  init_hide_body: function(elm,type) {
35
  var css = '.option-tree-setting-body';
@@ -533,7 +535,7 @@
533
  step: hidden.data("step"),
534
  value: value,
535
  slide: function(event, ui) {
536
- hidden.add(helper).val(ui.value);
537
  },
538
  create: function() {
539
  hidden.val($(this).slider('value'));
@@ -591,8 +593,78 @@
591
  $(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
592
  });
593
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  bind_colorpicker: function(field_id) {
595
- $('#'+field_id).wpColorPicker();
 
 
 
 
 
 
 
596
  },
597
  bind_date_picker: function(field_id, date_format) {
598
  $('#'+field_id).datepicker({
@@ -666,6 +738,23 @@
666
  });
667
  });
668
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
  url_exists: function(url) {
670
  var link = document.createElement('a')
671
  link.href = url
@@ -879,6 +968,7 @@
879
  $(this).find('.ot-metabox-panels').css({ minHeight: minHeight })
880
  }
881
  OT_UI.css_editor_mode();
 
882
  }
883
  })
884
 
@@ -1132,4 +1222,4 @@
1132
  })
1133
  })
1134
 
1135
- }(window.jQuery);
25
  this.init_radio_image_select();
26
  this.init_select_wrapper();
27
  this.bind_select_wrapper();
28
+ this.init_google_fonts();
29
  this.fix_upload_parent();
30
  this.fix_textarea();
31
  this.replicate_ajax();
32
  this.reset_settings();
33
+ this.css_editor_mode();
34
+ this.javascript_editor_mode();
35
  },
36
  init_hide_body: function(elm,type) {
37
  var css = '.option-tree-setting-body';
535
  step: hidden.data("step"),
536
  value: value,
537
  slide: function(event, ui) {
538
+ hidden.add(helper).val(ui.value).trigger('change');
539
  },
540
  create: function() {
541
  hidden.val($(this).slider('value'));
593
  $(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
594
  });
595
  },
596
+ init_google_fonts: function() {
597
+ var update_items = function(input, items, element) {
598
+ var itemsUI = input.closest('.type-google-font-group').find(element);
599
+ if ( itemsUI.length ) {
600
+ itemsUI.empty();
601
+ itemsUI.append($.map(items, function(item) {
602
+ var input = document.createElement('input'),
603
+ label = document.createElement('label');
604
+ input.type = 'checkbox';
605
+ input.id = ( itemsUI.data('field-id-prefix') || '' ) + item;
606
+ input.name = ( itemsUI.data('field-name') || '' ) + '[]';
607
+ input.value = item;
608
+ label.innerHTML = item;
609
+ $( label ).attr( 'for', input.id );
610
+ return $( document.createElement('p') ).addClass('checkbox-wrap').append([input, label]);
611
+ }));
612
+ }
613
+ };
614
+ $(document).on('change', '.option-tree-google-font-family select', function() {
615
+ var input = $(this);
616
+ $.ajax({
617
+ url: option_tree.ajax,
618
+ type: 'POST',
619
+ dataType: 'json',
620
+ data: {
621
+ action: 'ot_google_font',
622
+ family: input.val(),
623
+ field_id: input.attr('id')
624
+ }
625
+ }).done(function(response) {
626
+ if ( response.hasOwnProperty('variants') ) {
627
+ update_items( input, response.variants, '.option-tree-google-font-variants' );
628
+ }
629
+ if ( response.hasOwnProperty('subsets') ) {
630
+ update_items( input, response.subsets, '.option-tree-google-font-subsets' );
631
+ }
632
+ });
633
+ });
634
+ $('.js-add-google-font').on('click', function (event) {
635
+ var $group = $(this).parent('.format-setting-inner').find('.type-google-font-group'),
636
+ $clone = $('.type-google-font-group-clone').clone(true),
637
+ $count = $group.length ? $group.length : 0;
638
+ $clone.attr('class', 'type-google-font-group');
639
+ var replacer = function(index, elm) {
640
+ return elm.replace('%key%', $count);
641
+ }
642
+ $('select', $clone).each( function() {
643
+ $(this).attr('id', replacer ).attr('name', replacer );
644
+ });
645
+ $('.option-tree-google-font-variants', $clone).each( function() {
646
+ $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
647
+ });
648
+ $('.option-tree-google-font-subsets', $clone).each( function() {
649
+ $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
650
+ });
651
+ $('.type-google-font-group-clone').before($clone)
652
+ event.preventDefault()
653
+ });
654
+ $('.js-remove-google-font').on('click', function (event) {
655
+ $(this).parents('.type-google-font-group').remove();
656
+ event.preventDefault();
657
+ });
658
+ },
659
  bind_colorpicker: function(field_id) {
660
+ $('#'+field_id).wpColorPicker({
661
+ change: function() {
662
+ OT_UI.parse_condition();
663
+ },
664
+ clear: function() {
665
+ OT_UI.parse_condition();
666
+ }
667
+ });
668
  },
669
  bind_date_picker: function(field_id, date_format) {
670
  $('#'+field_id).datepicker({
738
  });
739
  });
740
  },
741
+ javascript_editor_mode: function() {
742
+ $('.ot-javascript-editor').each(function() {
743
+ var editor = ace.edit($(this).attr('id'));
744
+ var this_textarea = $('#textarea_' + $(this).attr('id'));
745
+ editor.setTheme("ace/theme/chrome");
746
+ editor.getSession().setMode("ace/mode/javascript");
747
+ editor.setShowPrintMargin( false );
748
+
749
+ editor.getSession().setValue(this_textarea.val());
750
+ editor.getSession().on('change', function(){
751
+ this_textarea.val(editor.getSession().getValue());
752
+ });
753
+ this_textarea.on('change', function(){
754
+ editor.getSession().setValue(this_textarea.val());
755
+ });
756
+ });
757
+ },
758
  url_exists: function(url) {
759
  var link = document.createElement('a')
760
  link.href = url
968
  $(this).find('.ot-metabox-panels').css({ minHeight: minHeight })
969
  }
970
  OT_UI.css_editor_mode();
971
+ OT_UI.javascript_editor_mode();
972
  }
973
  })
974
 
1222
  })
1223
  })
1224
 
1225
+ }(window.jQuery);
assets/js/vendor/ace/ace.js DELETED
@@ -1,10 +0,0 @@
1
- (function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=r,n.modules[e]=null},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o<u;++o){var a=s(e,t[o]);if(!a&&r.original)return r.original.apply(window,arguments);i.push(a)}n&&n.apply(null,i)}else{if(typeof t=="string"){var f=s(e,t);return!f&&r.original?r.original.apply(window,arguments):(n&&n(),f)}if(r.original)return r.original.apply(window,arguments)}},i=function(e,t){if(t.indexOf("!")!==-1){var n=t.split("!");return i(e,n[0])+"!"+i(e,n[1])}if(t.charAt(0)=="."){var r=e.split("/").slice(0,-1).join("/");t=r+"/"+t;while(t.indexOf(".")!==-1&&s!=t){var s=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,t){t=i(e,t);var s=n.modules[t];if(!s){s=n.payloads[t];if(typeof s=="function"){var o={},u={id:t,uri:"",exports:o,packaged:!0},a=function(e,n){return r(t,e,n)},f=s(a,o,u);o=f||u.exports,n.modules[t]=o,delete n.payloads[t]}s=n.modules[t]=o||s}return s};o(e)})(),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/multi_select","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer,f=e("./multi_select").MultiSelect;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e,e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e.env&&e.env.editor instanceof s)return e.env.editor;var o=t.createEditSession(r.getInnerText(e));e.innerHTML="";var u=new s(new a(e));new f(u),u.setSession(o);var l={document:o,editor:u,onResize:u.resize.bind(u,null)};return i.addListener(window,"resize",l.onResize),u.on("destroy",function(){i.removeListener(window,"resize",l.onResize)}),e.env=u.env=l,u},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,n){function o(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,"")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,""),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e=="string"&&t){!i&&t.length>1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n\f\r   ᠎              \u2028\u2029";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){if(typeof document=="undefined")return;var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=e.className.split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n<r.length)if(r[n++].owningElement.id===e)return!0}else if(r=t.getElementsByTagName("style"))while(n<r.length)if(r[n++].id===e)return!0;return!1},t.importCssString=function(n,i,s){s=s||document;if(i&&t.hasCssString(i,s))return null;var o;s.createStyleSheet?(o=s.createStyleSheet(),o.cssText=n,i&&(o.owningElement.id=i)):(o=s.createElementNS?s.createElementNS(r,"style"):s.createElement("style"),o.appendChild(s.createTextNode(n)),i&&(o.id=i),t.getDocumentHead(s).appendChild(o))},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var r=t.createElement("link");r.rel="stylesheet",r.href=e,t.getDocumentHead(n).appendChild(r)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,"paddingLeft"),10)+parseInt(t.computedStyle(e,"paddingRight"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,"paddingTop"),10)+parseInt(t.computedStyle(e,"paddingBottom"),10)+e.clientHeight},window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,"")||{})[t]||"":window.getComputedStyle(e,"")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.scrollbarWidth=function(e){var n=t.createElement("ace_inner");n.style.width="100%",n.style.minWidth="0px",n.style.height="200px",n.style.display="block";var r=t.createElement("ace_outer"),i=r.style;i.position="absolute",i.left="-10000px",i.overflow="hidden",i.width="200px",i.minWidth="0px",i.height="150px",i.display="block",r.appendChild(n);var s=e.documentElement;s.appendChild(r);var o=n.offsetWidth;i.overflow="scroll";var u=n.offsetWidth;return o==u&&(u=r.clientWidth),s.removeChild(r),o-u},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},"textContent"in document.documentElement?(t.setInnerText=function(e,t){e.textContent=t},t.getInnerText=function(e){return e.textContent}):(t.setInnerText=function(e,t){e.innerText=t},t.getInnerText=function(e){return e.innerText}),t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent","ace/lib/dom"],function(e,t,n){function o(e,t,n){var s=0;!i.isOpera||"KeyboardEvent"in window||!i.isMac?s=0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0):s=0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0);if(!i.isMac&&u){if(u[91]||u[92])s|=8;if(u.altGr){if((3&s)==3)return;u.altGr=0}if(n===18||n===17){var o=t.location||t.keyLocation;if(n===17&&o===1)a=t.timeStamp;else if(n===18&&s===3&&o===2){var f=-a;a=t.timeStamp,f+=a,f<3&&(u.altGr=!0)}}}if(n in r.MODIFIER_KEYS){switch(r.MODIFIER_KEYS[n]){case"Alt":s=2;break;case"Shift":s=4;break;case"Ctrl":s=1;break;default:s=8}n=0}s&8&&(n===91||n===93)&&(n=0);if(!s&&n===13)if(t.location||t.keyLocation===3){e(t,s,-n);if(t.defaultPrevented)return}return!!s||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,s,n):!1}var r=e("./keys"),i=e("./useragent"),s=e("./dom");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||e.ctrlKey&&i.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!=0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var n=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;n&&(o=1),o==1&&(u=e.clientX,a=e.clientY)}r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._emit("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",function(t){this.startOperation(t);var n=t.command;if(n.aceCommandGroup=="fileJump"){var r=this.prevOp;if(!r||r.command.aceCommandGroup!="fileJump")this.lastFileJumpPos=e(this.selections)}else this.lastFileJumpPos=null}.bind(this),!0),this.commands.on("afterExec",function(e){var t=e.command;t.aceCommandGroup=="fileJump"&&this.lastFileJumpPos&&!this.curOp.selectionChanged&&this.selection.fromJSON(this.lastFileJumpPos),this.endOperation(e)}.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop};var t=this.curOp.command;t&&t.scrollIntoView&&this.$blockScrolling++,this.selections.push(this.selection.toJSON())},this.endOperation=function(){if(this.curOp){var e=this.curOp.command;if(e&&e.scrollIntoView){this.$blockScrolling--;switch(e.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var t=this.selection.getRange(),n=this.renderer.layerConfig;(t.start.row>=n.lastRow||t.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}e.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=["backspace","del","insertstring"],r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit("changeSession",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._emit("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit("paste",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),"insertion",this,t,e);i&&(e!==i.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=i.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}else if(this.session.getOverwrite()){var s=new p.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}if(e=="\n"||e=="\r\n"){var o=t.getLine(r.row);if(r.column>o.search(/\S|$/)){var u=o.substr(r.column).search(/\S|$/);t.doc.removeInLine(r.row,r.column,r.column+u)}}this.clearSelection();var a=r.column,f=t.getState(r.row),o=t.getLine(r.row),l=n.checkOutdent(f,o,e),c=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new p(r.row,a+i.selection[0],r.row,a+i.selection[1])):this.selection.setSelectionRange(new p(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var h=n.getNextLineIndent(f,o.slice(0,r.column),t.getTabString());t.insert({row:r.row+1,column:0},h)}l&&n.autoOutdent(f,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;t<n.length?(r=n.charAt(t)+n.charAt(t-1),i=new p(e.row,t-1,e.row,t+1)):(r=n.charAt(t-1)+n.charAt(t-2),i=new p(e.row,t-2,e.row,t)),this.session.replace(i,r)},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(t.start.row<t.end.row){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}if(t.start.column<t.end.column){var r=e.getTextRange(t);if(!/^\s+$/.test(r)){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}}var i=e.getLine(t.start.row),o=t.start,u=e.getTabSize(),a=e.documentToScreenColumn(o.row,o.column);if(this.session.getUseSoftTabs())var f=u-a%u,l=s.stringRepeat(" ",f);else{var f=a%u;while(i[t.start.column]==" "&&f)t.start.column--,f--;this.selection.setSelectionRange(t),l=" "}return this.insert(l)},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last," ")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){var e=this.$getSelectedRows(),t=this.session,n=[];for(i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex<t){var i=n.exec(r);if(i.index<=t&&i.index+i[0].length>=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n<o?e*=Math.pow(10,s.end-n-1):e*=Math.pow(10,s.end-n),a+=e,a/=Math.pow(10,u);var f=a.toFixed(u),l=new p(t,s.start,t,s.end);this.session.replace(l,f),this.moveCursorTo(t,Math.max(s.start+1,n+f.length-s.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows(),t;e.first===0||e.last+1<this.session.getLength()?t=new p(e.first,0,e.last+1,0):t=new p(e.first-1,this.session.getLine(e.first-1).length,e.last,this.session.getLine(e.last).length),this.session.remove(t),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),r=e.isBackwards();if(n.isEmpty()){var i=n.start.row;t.duplicateLines(i,i)}else{var s=r?n.start:n.end,o=t.insert(s,t.getTextRange(n),!1);n.start=s,n.end=o,e.setSelectionRange(n,r)}},this.moveLinesDown=function(){this.$moveLines(function(e,t){return this.session.moveLinesDown(e,t)})},this.moveLinesUp=function(){this.$moveLines(function(e,t){return this.session.moveLinesUp(e,t)})},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t),0})},this.copyLinesDown=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t)})},this.$moveLines=function(e){var t=this.selection;if(!t.inMultiSelectMode||this.inVirtualSelectionMode){var n=t.toOrientedRange(),r=this.$getSelectedRows(n),i=e.call(this,r.first,r.last);n.moveBy(i,0),t.fromOrientedRange(n)}else{var s=t.rangeList.ranges;t.rangeList.detach(this.session);for(var o=s.length;o--;){var u=o,r=s[o].collapseRows(),a=r.end.row,f=r.start.row;while(o--){r=s[o].collapseRows();if(!(f-r.end.row<=1))break;f=r.end.row}o++;var i=e.call(this,f,a);while(u>=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(e===!1)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&n.isFocused()){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.top<o.height&&s.top+t.top+o.lineHeight>window.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e===!0)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._emit("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=function(e,t){function b(e){if(h)return;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}}function w(){if(h)return;n.value=a,i.isWebKit&&y.schedule()}function F(){setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.wrap="off",n.autocorrect="off",n.autocapitalize="off",n.spellcheck=!1,n.style.opacity="0",e.insertBefore(n,e.firstChild);var a="",f=!1,l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(){t.onBlur(),v=!1}),r.addListener(n,"focus",function(){v=!0,t.onFocus(),b()}),this.focus=function(){n.focus()},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=a,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==a)return;if(e&&t==a[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(B,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?H():P()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){f?f=!1:l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==a.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==a?e=e.substr(2):e.charAt(0)==a.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCut(),r.preventDefault(e))}o||(f=!0,n.value=i,n.select(),setTimeout(function(){f=!1,w(),b(),t.onCut()}))},_=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCopy(),r.preventDefault(e))}o||(l=!0,n.value=i,n.select(),setTimeout(function(){l=!1,w(),b(),t.onCopy()}))},D=function(e){var s=e.clipboardData||window.clipboardData;if(s){var o=s.getData("Text");o&&t.onPaste(o),i.isIE&&setTimeout(b),r.preventDefault(e)}else n.value="",c=!0};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",M),r.addListener(n,"copy",_),r.addListener(n,"paste",D),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:_(e);break;case 86:D(e);break;case 88:M(e)}});var P=function(e){if(h)return;h={},t.onCompositionStart(),setTimeout(H,0),t.on("mousedown",B),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},H=function(){if(!h)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},B=function(e){var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",B),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},j=o.delayedCall(H,50);r.addListener(n,"compositionstart",P),i.isGecko?r.addListener(n,"text",function(){j.schedule()}):(r.addListener(n,"keyup",function(){j.schedule()}),r.addListener(n,"keydown",function(){j.schedule()})),r.addListener(n,"compositionend",B),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,p||(p=n.style.cssText),n.style.cssText="z-index:100000;"+(i.isIE?"opacity:0.1;":""),b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e});var o=t.container.getBoundingClientRect(),u=s.computedStyle(t.container),a=o.top+(parseInt(u.borderTopWidth)||0),f=o.left+(parseInt(o.borderLeftWidth)||0),l=o.bottom-a-n.clientHeight,c=function(e){n.style.left=e.clientX-f-2+"px",n.style.top=Math.min(e.clientY-a-2,l)+"px"};c(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&r.capture(t.container,c,F)},this.onContextMenuClose=F;if(!i.isGecko||i.isMac){var I=function(e){t.textInput.onContextMenu(e),F()};r.addListener(t.renderer.scroller,"contextmenu",I),r.addListener(n,"contextmenu",I)}};t.TextInput=a}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){this.editor=e,new s(this),new o(this),new a(this);var t=e.renderer.getMouseEventTarget();r.addListener(t,"click",this.onMouseEvent.bind(this,"click")),r.addListener(t,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(t,[300,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[300,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[300,300,250],this,"onMouseEvent")),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var n=e.renderer.$gutter;r.addListener(n,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(n,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(n,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(n,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(t,"mousedown",function(t){e.focus()}),r.addListener(n,"mousedown",function(t){return e.focus(),r.preventDefault(t)})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.$clickSelection=null,n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0}}),t.MouseHandler=l}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();o&&(r.moveCursorToPosition(n),r.selection.clearSelection()),r.textInput.onContextMenu(e.domEvent);return}if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.mousedownEvent.time=Date.now(),this.setState("focusWait"),this.captureMouse(e);return}}return!t||this.$clickSelection||e.getShiftKey()||r.inMultiSelectMode?this.startSelect(n):t&&(this.mousedownEvent.time=Date.now(),this.startSelect(n)),this.captureMouse(e),e.preventDefault()},this.startSelect=function(e){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var t=this.editor,n=this.mousedownEvent.getShiftKey();n?t.selection.selectToPosition(e):this.$clickSelection||(t.moveCursorToPosition(e),t.selection.clearSelection()),t.renderer.scroller.setCapture&&t.renderer.scroller.setCapture(),t.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this[this.state]&&this[this.state](e)},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row),this[this.state]&&this[this.state](e)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(e,t,n){function s(e){function f(){u=r.createElement("div"),u.className="ace_gutter-tooltip",u.style.display="none",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join("<br/>"),u.style.display="block",u.innerHTML=a,t.on("mousewheel",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display="none",a=null,t.removeEventListener("mousewheel",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x+15+"px";if(e.y+3*t.renderer.lineHeight+15<n.bottom)u.style.bottom="",u.style.top=e.y+15+"px";else{u.style.top="";var r=window.innerHeight||document.documentElement.clientHeight;u.style.bottom=r-e.y+5+"px"}}var t=e.editor,n=t.renderer.$gutterLayer;e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var s,o,u,a;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();a&&h(t),o=t;if(s)return;s=setTimeout(function(){s=null,o&&!e.isMousePressed?l():c()},50)}),i.addListener(t.renderer.$gutter,"mouseout",function(e){o=null;if(!a||s)return;s=setTimeout(function(){s=null,c()},50)}),t.on("changeSession",c)}var r=e("../lib/dom"),i=e("../lib/event");t.GutterHandler=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left<a.x.right?-3:2),l/i<=1&&(c.row+=a.y.top<a.y.bottom?-1:1);var h=e.row!=c.row,v=e.column!=c.column,m=!n||e.row!=n.row;h||v&&!m?E?r-E>=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n._top=n.offsetTop),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||(k(),y++),A!==null&&(A=null),p=e.clientX,d=e.clientY,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!h)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor.container;e.draggable=!0,this.editor.renderer.$cursorLayer.setBlinking(!1),this.editor.setStyle("ace_dragging"),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/event_emitter"],function(e,t,n){"no use strict";function f(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./lib/net"),o=e("./lib/event_emitter").EventEmitter,u=function(){return this}(),a={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return a[e]},t.set=function(e,t){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);a[e]=t},t.all=function(){return r.copyObject(a)},i.implement(t,o),t.moduleUrl=function(e,t){if(a.$moduleUrls[e])return a.$moduleUrls[e];var n=e.split("/");t=t||n[n.length-2]||"";var r=t=="snippets"?"/":"-",i=n[n.length-1];if(r=="-"){var s=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");i=i.replace(s,"")}(!i||i==t)&&n.length>1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=function(){a.packaged=e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var r={},i="",s=document.getElementsByTagName("script");for(var o=0;o<s.length;o++){var l=s[o],c=l.src||l.getAttribute("src");if(!c)continue;var h=l.attributes;for(var p=0,d=h.length;p<d;p++){var v=h[p];v.name.indexOf("data-ace-")===0&&(r[f(v.name.replace(/^data-ace-/,""))]=v.value)}var m=c.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);m&&(i=m[1])}i&&(r.base=r.base||i,r.packaged=!0),r.basePath=r.base,r.workerPath=r.workerPath||r.base,r.modePath=r.modePath||r.base,r.themePath=r.themePath||r.base,delete r.base;for(var g in r)typeof r[g]!="undefined"&&t.set(g,r[g])};var l={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined;if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:(typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined)}},c={};t.defineOptions=function(e,t,n){return e.$options||(c[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),i.implement(e,l),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},t.setDefaultValue=function(e,n,r){var i=c[e]||(c[e]={});i[n]&&(i.forwardTo?t.setDefaultValue(i.forwardTo,n,r):i[n].value=r)},t.setDefaultValues=function(e,n){Object.keys(n).forEach(function(r){t.setDefaultValue(e,r,n[r])})}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._emit("session",this)};(function(){function g(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t<s))return i;r=i-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var n=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&!t.ignore&&(this.$deltasDoc.push(t),n&&n.length!=0&&this.$deltasFold.push({action:"removeFolds",folds:n}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(t),this._emit("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n=this.bgTokenizer.getTokens(e),r,i=0;if(t==null)s=n.length-1,i=this.getLine(e).length;else for(var s=0;s<n.length;s++){i+=n[s].value.length;if(i>=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]="ace_breakpoint";this._emit("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit("changeBreakpoint",{})},this.setBreakpoint=function(e,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._emit("changeBreakpoint",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._emit("changeBreakpoint",{})},this.addMarker=function(e,t,n,r){var i=this.$markerId++,s={range:e,type:n||"line",renderer:typeof n=="function"?n:null,clazz:t,inFront:!!r,id:i};return r?(this.$frontMarkers[i]=s,this._emit("changeFrontMarker")):(this.$backMarkers[i]=s,this._emit("changeBackMarker")),i},this.addDynamicMarker=function(e,t){if(!e.update)return;var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._emit("changeFrontMarker")):(this.$backMarkers[n]=e,this._emit("changeBackMarker")),e},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(!t)return;var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._emit(t.inFront?"changeFrontMarker":"changeBackMarker"))},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new h(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,r){typeof t!="number"&&(n=t,t=e),n||(n="ace_step");var i=new f(e,0,t,Infinity);return i.id=this.addMarker(i,n,"fullLine",r),i},this.setAnnotations=function(e){this.$annotations=e,this._emit("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r?\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine="\n"},this.getWordRange=function(e,t){var n=this.getLine(e),r=!1;t>0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(o<n.length&&n.charAt(o).match(i))o++;return new f(e,s,e,o)},this.getAWordRange=function(e,t){var n=this.getWordRange(e,t),r=this.getLine(n.end.row);while(r.charAt(n.end.column).match(/[ \t]/))n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(e){this.setOption("useWorker",e)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._emit("tokenizerUpdate",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e,t){if(e&&typeof e=="object"){if(e.getTokenizer)return this.$onChangeMode(e);var n=e,r=n.path}else r=e||"ace/mode/text";this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new a);if(this.$modes[r]&&!n){this.$onChangeMode(this.$modes[r]),t&&t();return}this.$modeId=r,s.loadModule(["mode",r],function(e){if(this.$modeId!==r)return t&&t();if(this.$modes[r]&&!n)return this.$onChangeMode(this.$modes[r]);e&&e.Mode&&(e=new e.Mode(n),n||(this.$modes[r]=e,e.$id=r),this.$onChangeMode(e),t&&t())}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(e,t){t||(this.$modeId=e.$id);if(this.$mode===e)return;this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(n.addEventListener!==undefined){var r=this.onReloadTokenizer.bind(this);n.addEventListener("update",r)}if(!this.bgTokenizer){this.bgTokenizer=new c(n);var i=this;this.bgTokenizer.addEventListener("update",function(e){i._emit("tokenizerUpdate",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(typeof Worker!="undefined"&&!e.noWorker)try{this.$worker=this.$mode.createWorker(this)}catch(t){console.log("Could not load worker"),console.log(t),this.$worker=null}else this.$worker=null},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){if(this.$scrollTop===e||isNaN(e))return;this.$scrollTop=e,this._signal("changeScrollTop",e)},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){if(this.$scrollLeft===e||isNaN(e))return;this.$scrollLeft=e,this._signal("changeScrollLeft",e)},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var e=0;return this.lineWidgets.forEach(function(t){t&&t.screenWidth>e&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;a<u;a++){if(a>o){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r<e.length;r++){var i=e[r];i.group=="doc"&&(this.doc.applyDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function r(e){var n=e.action==="insertText"||e.action==="insertLines";return t?!n:n}var i=e[0],s,o,u=!1;r(i)?(s=f.fromPoints(i.range.start,i.range.end),u=!0):(s=f.fromPoints(i.range.start,i.range.start),u=!1);for(var a=1;a<e.length;a++)i=e[a],r(i)?(o=i.range.start,s.compare(o.row,o.column)==-1&&s.setStart(i.range.start),o=i.range.end,s.compare(o.row,o.column)==1&&s.setEnd(i.range.end),u=!0):(o=i.range.start,s.compare(o.row,o.column)==-1&&(s=f.fromPoints(i.range.start,i.range.start)),u=!1);if(n!=null){f.comparePoints(n.start,s.start)==0&&(n.start.column+=s.end.column-s.start.column,n.end.column+=s.end.column-s.start.column);var l=n.compareRange(s);l==1?s.setStart(n.start):l==-1&&s.setEnd(n.end)}return s},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t,n){var r=this.getTextRange(e),i=this.getFoldsInRange(e),s=f.fromPoints(t,t);if(!n){this.remove(e);var o=e.start.row-e.end.row,u=o?-e.end.column:e.start.column-e.end.column;u&&(s.start.row==e.end.row&&s.start.column>e.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o<r;++o)if(s.charAt(o)!=" ")break;o<r&&s.charAt(o)==" "?(n.start.column=o,n.end.column=o+1):(n.start.column=0,n.end.column=o),this.remove(n)}},this.$moveLines=function(e,t,n){e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t);if(n<0){var r=this.getRowFoldStart(e+n);if(r<0)return 0;var i=r-e}else if(n>0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n<t;n++)this.$wrapData.push([]);this.$updateWrapData(0,t-1)}this._emit("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this._emit("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d<n;d++)p.push([]);this.$wrapData.splice.apply(this.$wrapData,p)}else p=Array(n),p.unshift(i,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,a,f=e;t=Math.min(t,n.length-1);while(f<=t)a=this.getFoldLine(f,a),a?(o=[],a.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=u;for(var a=1;a<s.length;a++)s[a]=l}else s=this.$getDisplayTokens(n[t].substring(i,r),o.length);o=o.concat(s)}.bind(this),a.end.row,n[a.end.row].length+1),i[a.start.row]=this.$computeWrapSplits(o,s,r),f=a.end.row+1):(o=this.$getDisplayTokens(n[f]),i[f]=this.$computeWrapSplits(o,s,r),f++)};var t=1,n=2,u=3,l=4,p=9,d=10,v=11,m=12;this.$computeWrapSplits=function(e,t){function a(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0,o=this.$wrapAsCode;while(r-i>t){var f=i+t;if(e[f-1]>=d&&e[f]>=d){a(f);continue}if(e[f]==u||e[f]==l){for(f;f!=i-1;f--)if(e[f]==u)break;if(f>i){a(f);continue}f=i+t;for(f;f<e.length;f++)if(e[f]!=l)break;if(f==e.length)break;a(f);continue}var c=Math.max(f-(o?10:t-(t>>2)),i-1);while(f>c&&e[f]<u)f--;if(o){while(f>c&&e[f]<u)f--;while(f>c&&e[f]==p)f--}else while(f>c&&e[f]<d)f--;if(f>c){a(++f);continue}f=i+t,a(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o<e.length;o++){var u=e.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(v);for(var a=1;a<s;a++)i.push(m)}else u==32?i.push(d):u>39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i<e.length;i++){r=e.charCodeAt(i),r==9?n+=this.getScreenTabSize(n):r>=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u<e){if(u>=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;r<n.length;r++)t=n[r],e-=t.end.row-t.start.row}else{var i=this.$wrapData.length,s=0,r=0,t=this.$foldData[r++],o=t?t.start.row:Infinity;while(s<i)e+=this.$wrapData[s].length+1,s++,s>o&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},firstLineNumber:{set:function(){this._emit("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._emit("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),e=this.lead;this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column,e.column+n).split(" ").length-1==n?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),r=this.session.screenToDocumentPosition(n,0),i=this.session.getDisplayLine(e,null,r.row,r.column),s=i.match(/^\s*/);s[0].length!=t&&!this.session.$useEmacsStyleLineStart&&(r.column+=s[0].length),this.moveCursorToPosition(r)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var r=n.search(/\s+$/);r>0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e<this.doc.getLength()-1&&this.moveCursorWordRight();return}if(i=this.session.tokenRe.exec(r))t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.moveCursorLongWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1)){this.moveCursorTo(n.start.row,n.start.column);return}var r=this.session.getFoldStringAt(e,t,-1);r==null&&(r=this.doc.getLine(e).substring(0,t));var s=i.stringReverse(r),o;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;if(o=this.session.nonTokenRe.exec(s))t-=this.session.nonTokenRe.lastIndex,s=s.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0;if(t<=0){this.moveCursorTo(e,0),this.moveCursorLeft(),e>0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e<s&&/^\s*$/.test(r));/^\s+/.test(r)||(r=""),t=0}var o=this.$shortWordEndIndex(r);this.moveCursorTo(e,t+o)},this.moveCursorShortWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1))return this.moveCursorTo(n.start.row,n.start.column);var r=this.session.getLine(e).substring(0,t);if(t==0){do e--,r=this.doc.getLine(e);while(e>0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i<r.length;i++)if(r[i].type==="comment")return!0}}else{if(Array.isArray(this.lineCommentStart))var p=this.lineCommentStart.map(u.escapeRegExp).join("|"),c=this.lineCommentStart[0];else var p=u.escapeRegExp(this.lineCommentStart),c=this.lineCommentStart;p=new RegExp("^(\\s*)(?:"+p+") ?"),l=t.getUseSoftTabs();var m=function(e,t){var n=e.match(p);if(!n)return;var r=n[1].length,s=n[0].length;!b(e,r,s)&&n[0][s-1]==" "&&s--,i.removeInLine(t,r,s)},y=c+" ",v=function(e,t){if(!s||/\S/.test(e))b(e,a,a)?i.insertInLine({row:t,column:a},y):i.insertInLine({row:t,column:a},c)},g=function(e,t){return p.test(e)},b=function(e,t,n){var r=0;while(t--&&e.charAt(t)==" ")r++;if(r%f!=0)return!1;var r=0;while(e.charAt(n++)==" ")r++;return f>2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(n<a&&(a=n),o&&!g(e,t)&&(o=!1)):E>e.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t<n.length;t++)(function(e){var r=n[t],i=e[r];e[n[t]]=function(){return this.$delegator(r,arguments,i)}})(this)},this.$delegator=function(e,t,n){var r=t[0];typeof r!="string"&&(r=r[0]);for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var s=r.split(this.$embeds[i]);if(!s[0]&&s[1]){t[0]=s[1];var o=this.$modes[this.$embeds[i]];return o[e].apply(o,t)}}var u=n.apply(this,t);return n?u:undefined},this.transformAction=function(e,t,n,r,i){if(this.$behaviour){var s=this.$behaviour.getBehaviours();for(var o in s)if(s[o][t]){var u=s[o][t].apply(this,arguments);if(u)return u}}},this.getKeywords=function(e){if(!this.completionKeywords){var t=this.$tokenizer.rules,n=[];for(var r in t){var i=t[r];for(var s=0,o=i.length;s<o;s++)if(typeof i[s].token=="string")/keyword|support|storage/.test(i[s].token)&&n.push(i[s].regex);else if(typeof i[s].token=="object")for(var u=0,a=i[s].token.length;u<a;u++)if(/keyword|support|storage/.test(i[s].token[u])){var r=i[s].regex.match(/\(.+?\)/g)[u];n.push(r.substr(1,r.length-2))}}this.completionKeywords=n}return e?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,n,r){var i=this.$keywordList||this.$createKeywordList();return i.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(l.prototype),t.Mode=l}),ace.define("ace/tokenizer",["require","exports","module"],function(e,t,n){var r=1e3,i=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a<n.length;a++){var f=n[a];f.defaultToken&&(s.defaultToken=f.defaultToken),f.caseInsensitive&&(o="gi");if(f.regex==null)continue;f.regex instanceof RegExp&&(f.regex=f.regex.toString().slice(1,-1));var l=f.regex,c=(new RegExp("(?:("+l+")|(.))")).exec("a").length-2;if(Array.isArray(f.token))if(f.token.length==1||c==1)f.token=f.token[0];else{if(c-1!=f.token.length)throw new Error("number of classes and regexp groups in '"+f.token+"'\n'"+f.regex+"' doesn't match\n"+(c-1)+"!="+f.token.length);f.tokenArray=f.token,f.token=null,f.onMatch=this.$arrayTokens}else typeof f.token=="function"&&!f.onMatch&&(c>1?f.onMatch=this.$applyToken:f.onMatch=f.token);c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null),f.__proto__=null}u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;i<s;i++)t[i]&&(r[r.length]={type:n[i],value:t[i]});return r},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";var n=[],r=this.tokenArray;for(var i=0,s=r.length;i<s;i++)t[i+1]&&(n[n.length]={type:r[i],value:t[i+1]});return n},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(e.indexOf("(?=")!=-1){var n=0,r=!1,i={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,s,o,u,a){return r?r=u!="]":u?r=!0:o?(n==i.stack&&(i.end=a+1,i.stack=-1),n--):s&&(n++,s.length!=1&&(i.stack=n,i.start=a)),e}),i.end!=null&&/^\)*$/.test(e.substr(i.end))&&(e=e.substring(0,i.start)+e.substr(i.end))}return new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&typeof t!="string"){var n=t.slice(0);t=n[0]}else var n=[];var i=t||"start",s=this.states[i];s||(i="start",s=this.states[i]);var o=this.matchMappings[i],u=this.regExps[i];u.lastIndex=0;var a,f=[],l=0,c={type:null,value:""};while(a=u.exec(e)){var h=o.defaultToken,p=null,d=a[0],v=u.lastIndex;if(v-d.length>l){var m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;g<a.length-2;g++){if(a[g+1]===undefined)continue;p=s[o[g]],p.onMatch?h=p.onMatch(d,i,n):h=p.token,p.next&&(typeof p.next=="string"?i=p.next:i=p.next(i,n),s=this.states[i],s||(window.console&&console.error&&console.error(i,"doesn't exist"),i="start",s=this.states[i]),o=this.matchMappings[i],l=v,u=this.regExps[i],u.lastIndex=v);break}if(d)if(typeof h=="string")!!p&&p.merge===!1||c.type!==h?(c.type&&f.push(c),c={type:h,value:d}):c.value+=d;else if(h){c.type&&f.push(c),c={type:null,value:""};for(var g=0;g<h.length;g++)f.push(h[g])}if(l==e.length)break;l=v;if(f.length>r){while(l<e.length)c.type&&f.push(c),c={value:e.substring(l,l+=2e3),type:"overflow"};i="start",n=[];break}}return c.type&&f.push(c),n.length>1&&n[0]!==i&&n.unshift(i),{tokens:f,state:n.length?n:i}}}).call(i.prototype),t.Tokenizer=i}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i<r.length;i++){var s=r[i];s.next&&(typeof s.next!="string"?s.nextState&&s.nextState.indexOf(t)!==0&&(s.nextState=t+s.nextState):s.next.indexOf(t)!==0&&(s.next=t+s.next))}this.$rules[t+n]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,i,s){var o=(new e).getRules();if(i)for(var u=0;u<i.length;u++)i[u]=t+i[u];else{i=[];for(var a in o)i.push(t+a)}this.addRules(o,t);if(n){var f=Array.prototype[s?"push":"unshift"];for(var u=0;u<i.length;u++)f.apply(this.$rules[i[u]],r.deepCopy(n))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var e=function(e,t){return e!="start"&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t[0]!==e?"start":(t.shift(),t.shift())};this.normalizeRules=function(){function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var a=o[u];!a.regex&&a.start&&(a.regex=a.start,a.next||(a.next=[]),a.next.push({defaultToken:a.token},{token:a.token+".end",regex:a.end||a.start,next:"pop"}),a.token=a.token+".start",a.push=!0);var f=a.next||a.push;if(f&&Array.isArray(f)){var l=a.stateName;l||(l=a.token,typeof l!="string"&&(l=l[0]||""),r[l]&&(l+=n++)),r[l]=f,a.next=l,i(l)}else f=="pop"&&(a.next=t);a.push&&(a.nextState=a.next||a.push,a.next=e,delete a.push);if(a.rules)for(var c in a.rules)r[c]?r[c].push&&r[c].push.apply(r[c],a.rules[c]):r[c]=a.rules[c];if(a.include||typeof a=="string")var h=a.include||a,p=r[h];else Array.isArray(a)&&(p=a);if(p){var d=[u,1].concat(p);a.noEscape&&(d=d.filter(function(e){return!e.next})),o.splice.apply(o,d),u--,p=null}a.keywordMap&&(a.token=this.createKeywordMapper(a.keywordMap,a.defaultToken||"text",a.caseInsensitive),delete a.defaultToken)}}var n=0,r=this.$rules;Object.keys(r).forEach(i,this)},this.createKeywordMapper=function(e,t,n,r){var i=Object.create(null);return Object.keys(e).forEach(function(t){var s=e[t];n&&(s=s.toLowerCase());var o=s.split(r||"|");for(var u=o.length;u--;)i[o[u]]=t}),Object.getPrototypeOf(i)&&(i.__proto__=null),this.$keywordList=Object.keys(i),e=null,n?function(e){return i[e.toLowerCase()]||t}:function(e){return i[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(i.prototype),t.TextHighlightRules=i}),ace.define("ace/mode/behaviour",["require","exports","module"],function(e,t,n){var r=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(typeof e=="function")var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(!e)return this.$behaviours;var t={};for(var n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}}).call(r.prototype),t.Behaviour=r}),ace.define("ace/unicode",["require","exports","module"],function(e,t,n){function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/token_iterator",["require","exports","module"],function(e,t,n){var r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var r=e.getTokenAt(t,n);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;var e;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){!e instanceof s&&(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){!e instanceof s&&(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc;while(n.lines[t])t++;var s=t,o=i.getLength(),u=0;n.running=!1;while(t<o){n.$tokenizeRow(t),r=t;do t++;while(n.lines[t]);u++;if(u%5==0&&new Date-e>20){n.running=setTimeout(n.$worker,20),n.currentLine=t;return}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s<i.length;s++){var o=i[s];if(o.range.contains(e,t)){if(n==1&&o.range.isEnd(e,t))continue;if(n==-1&&o.range.isStart(e,t))continue;return o}}},this.getFoldsInRange=function(e){var t=e.start,n=e.end,r=this.$foldData,i=[];t.column+=1,n.column-=1;for(var s=0;s<r.length;s++){var o=r[s].range.compareRange(e);if(o==2)continue;if(o==-2)break;var u=r[s].folds;for(var a=0;a<u.length;a++){var f=u[a];o=f.range.compareRange(e);if(o==-2)break;if(o==2)continue;if(o==42)break;i.push(f)}}return t.column-=1,n.column+=1,i},this.getFoldsInRangeList=function(e){if(Array.isArray(e)){var t=[];e.forEach(function(e){t=t.concat(this.getFoldsInRange(e))},this)}else var t=this.getFoldsInRange(e);return t},this.getAllFolds=function(){var e=[],t=this.$foldData;for(var n=0;n<t.length;n++)for(var r=0;r<t[n].folds.length;r++)e.push(t[n].folds[r]);return e},this.getFoldStringAt=function(e,t,n,r){r=r||this.getFoldLine(e);if(!r)return null;var i={end:{column:0}},s,o;for(var u=0;u<r.folds.length;u++){o=r.folds[u];var a=o.range.compareEnd(e,t);if(a==-1){s=this.getLine(o.start.row).substring(i.end.column,o.start.column);break}if(a===0)return null;i=o}return s||(s=this.getLine(o.start.row).substring(i.end.column)),n==-1?s.substring(0,t-i.end.column):n==1?s.substring(t-i.end.column):s},this.getFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.start.row<=e&&i.end.row>=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.end.row>=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i<n.length;i++){var s=n[i],o=s.end.row,u=s.start.row;if(o>=t){u<t&&(u>=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u<f||u==f&&a<=l-2){var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw new Error("A fold can't intersect already existing fold"+o.range+c.range);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d<n.length;d++){var v=n[d];if(f==v.start.row){v.addFold(o),r=!0;break}if(u==v.end.row){v.addFold(o),r=!0;if(!o.sameRow){var m=n[d+1];if(m&&m.start.row==f){v.merge(m);break}}break}if(f<=v.start.row)break}return r||(v=this.$addFoldLine(new i(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(v.start.row,v.start.row):this.$updateRowLengthCache(v.start.row,v.start.row),this.$modified=!0,this._emit("changeFold",{data:o,action:"add"}),o}throw new Error("The range has to be at least 2 characters width")},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,r=t.end.row,i=this.$foldData,s=t.folds;if(s.length==1)i.splice(i.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))s.pop(),t.end.row=s[s.length-1].end.row,t.end.column=s[s.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))s.shift(),t.start.row=s[0].start.row,t.start.column=s[0].start.column;else if(e.sameRow)s.splice(s.indexOf(e),1);else{var o=t.split(e.start.row,e.start.column);s=o.folds,s.shift(),o.start.row=s[0].start.row,o.start.column=s[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(n,r):this.$updateRowLengthCache(n,r)),this.$modified=!0,this._emit("changeFold",{data:e,action:"remove"})},this.removeFolds=function(e){var t=[];for(var n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(t){e.restoreRange(t),this.addFold(t)},this),e.collapseChildren>0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row,i=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t<r)return;if(t==r){if(n<i)return;u=Math.max(i,u)}e!=null?o+=e:o+=s.getLine(t).substring(u,n)},t,n),o},this.getDisplayLine=function(e,t,n,r){var i=this.getFoldLine(e);if(!i){var s;return s=this.doc.getLine(e),s.substring(r||0,t||s.length)}return this.getFoldDisplayLine(i,e,t,n,r)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new i(e,n)}),e},this.toggleFold=function(e){var t=this.selection,n=t.getRange(),r,i;if(n.isEmpty()){var s=n.start;r=this.getFoldAt(s.row,s.column);if(r){this.expandFold(r);return}(i=this.findMatchingBracket(s))?n.comparePoint(i)==1?n.end=i:(n.start=i,n.start.column++,n.end.column--):(i=this.findMatchingBracket({row:s.row,column:s.column+1}))?(n.comparePoint(i)==1?n.end=i:n.start=i,n.start.column++):n=this.getCommentFoldRange(s.row,s.column)||n}else{var o=this.getFoldsInRange(n);if(e&&o.length){this.expandFolds(o);return}o.length==1&&(r=o[0])}r||(r=this.getFoldAt(n.start.row,n.start.column));if(r&&r.range.toString()==n.toString()){this.expandFold(r);return}var u="...";if(!n.isMultiLine()){u=this.getTextRange(n);if(u.length<4)return;u=u.trim().substring(0,2)+".."}this.addFold(u,n)},this.getCommentFoldRange=function(e,t,n){var i=new o(this,e,t),s=i.getCurrentToken();if(s&&/^comment|string/.test(s.type)){var u=new r,a=new RegExp(s.type.replace(/\..*/,"\\."));if(n!=1){do s=i.stepBackward();while(s&&a.test(s.type));i.stepForward()}u.start.row=i.getCurrentTokenRow(),u.start.column=i.getCurrentTokenColumn()+2,i=new o(this,e,t);if(n!=-1){do s=i.stepForward();while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return u.end.row=i.getCurrentTokenRow(),u.end.column=i.getCurrentTokenColumn()+s.value.length-2,u}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i<t;i++){r[i]==null&&(r[i]=this.getFoldWidget(i));if(r[i]!="start")continue;var s=this.getFoldWidgetRange(i);if(s&&s.isMultiLine()&&s.end.row<=t&&s.start.row>=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,o.end.row,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f<i.length;f++){s=i[f],o=s.range.compareStart(t,n);if(o==-1){e(null,t,n,r,a);return}u=e(null,s.start.row,s.start.column,r,a),u=!u&&e(s.placeholder,s.start.row,s.start.column,r);if(u||o==0)return;a=!s.sameRow,r=s.end.column}e(null,t,n,r,a)},this.getNextFoldTo=function(e,t){var n,r;for(var i=0;i<this.folds.length;i++){n=this.folds[i],r=n.range.compareEnd(e,t);if(r==-1)return{fold:n,kind:"after"};if(r==0)return{fold:n,kind:"inside"}}return null},this.addRemoveChars=function(e,t,n){var r=this.getNextFoldTo(e,t),i,s;if(r){i=r.fold;if(r.kind=="inside"&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){s=this.folds;var o=s.indexOf(i);o==0&&(this.start.column+=n);for(o;o<s.length;o++){i=s[o],i.start.column+=n;if(!i.sameRow)return;i.end.column+=n}this.end.column+=n}}},this.split=function(e,t){var n=this.getNextFoldTo(e,t).fold,r=this.folds,s=this.foldData;if(!n)return null;var o=r.indexOf(n),u=r[o-1];this.end.row=u.end.row,this.end.column=u.end.column,r=r.splice(o,r.length-o);var a=new i(s,r);return s.splice(s.indexOf(this)+1,0,a),a},this.merge=function(e){var t=e.folds;for(var n=0;n<t.length;n++)this.addFold(t[n]);var r=this.foldData;r.splice(r.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+": ["];return this.folds.forEach(function(t){e.push(" "+t.toString())}),e.push("]"),e.join("\n")},this.idxToPosition=function(e){var t=0,n;for(var r=0;r<this.folds.length;r++){var n=this.folds[r];e-=n.start.column-t;if(e<0)return{row:n.start.row,column:n.start.column+e};e-=n.placeholder.length;if(e<0)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r<this.subFolds.length;r++){i=this.subFolds[r].range.compare(t,n);if(i!=1)break}var s=this.subFolds[r];if(i==0)return s.addSubFold(e);var t=e.range.end.row,n=e.range.end.column;for(var o=r,i=-1;o<this.subFolds.length;o++){i=this.subFolds[o].range.compare(t,n);if(i!=1)break}var u=this.subFolds[o];if(i==0)throw new Error("A fold can't intersect already existing fold"+e.range+this.range);var f=this.subFolds.splice(r,o-r,e);return e.setFoldLine(this.foldLine),e},this.restoreRange=function(e){return l(e,this.start)}}.call(o.prototype)}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,n){var r=e("./range").Range,i=r.comparePoints,s=function(){this.ranges=[]};(function(){this.comparePoints=i,this.pointIndex=function(e,t,n){var r=this.ranges;for(var s=n||0;s<r.length;s++){var o=r[s],u=i(e,o.end);if(u>0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s<t.length;s++){r=n,n=t[s];var o=i(r.end,n.start);if(o<0)continue;if(o==0&&!r.isEmpty()&&!n.isEmpty())continue;i(r.end,n.end)<0&&(r.end.row=n.end.row,r.end.column=n.end.column),t.splice(s,1),e.push(n),n=r,s--}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var r=this.pointIndex({row:e,column:0});r<0&&(r=-r-1);var i=this.pointIndex({row:t,column:0},r);i<0&&(i=-i-1);var s=[];for(var o=r;o<i;o++)s.push(n[o]);return s},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){if(!this.session)return;this.session.removeListener("change",this.onChange),this.session=null},this.$onChange=function(e){var t=e.data.range;if(e.data.action[0]=="i")var n=t.start,r=t.end;else var r=t.start,n=t.end;var i=n.row,s=r.row,o=s-i,u=-n.column+r.column,a=this.ranges;for(var f=0,l=a.length;f<l;f++){var c=a[f];if(c.end.row<i)continue;if(c.start.row>i)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&f<l-1&&c.end.column>c.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f<l)for(;f<l;f++){var c=a[f];c.start.row+=o,c.end.row+=o}}}).call(s.prototype),t.RangeList=s}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a<l){var c=f.charAt(a);if(c==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else c==e&&(s+=1);a+=1}do u=o.stepForward();while(u&&!n.test(u.type));if(u==null)break;a=0}return null}}var r=e("../token_iterator").TokenIterator,i=e("../range").Range;t.BracketMatch=s}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a;for(var l=u.offset||0;l<=f;l++){for(var c=0;c<a;c++)if(i[l+c].search(u[c])==-1)break;var h=i[l],p=i[l+a-1],d=h.match(u[0])[0].length,v=p.match(u[a-1])[0].length;o.push(new s(l,h.length-d,l+a-1,v))}}else for(var m=0;m<i.length;m++){var g=r.getMatchOffsets(i[m],u);for(var c=0;c<g.length;c++){var y=g[c];o.push(new s(m,y.offset,m,y.offset+y.length))}}if(n){var b=n.start.column,w=n.start.column,m=0,c=o.length-1;while(m<c&&o[m].start.column<b&&o[m].start.row==n.start.row)m++;while(m<c&&o[c].end.column>w&&o[c].end.row==n.end.row)c--;o=o.slice(m,c+1);for(m=0,c=o.length;m<c;m++)o[m].start.row+=n.start.row,o[m].end.row+=n.start.row}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join("")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=this,o,u=t.backwards;if(t.$isMultiLine)var a=n.length,f=function(t,r,i){var u=t.search(n[0]);if(u==-1)return;for(var f=1;f<a;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[a-1])[0].length,c=new s(r,u,r+a-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):i&&(c.start.column+=i);if(o(c))return!0};else if(u)var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=s.length-1;u>=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u<s.length;u++)if(o(s[u],t,i))return!0};return{forEach:function(n){o=n,i.$lineIterator(e,t).forEach(f)}}},this.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n)),e.wholeWord&&(n="\\b"+n+"\\b");var i=e.caseSensitive?"g":"gi";e.$isMultiLine=!t&&/[\n\r]/.test(n);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,i);try{var s=new RegExp(n,i)}catch(o){s=!1}return e.re=s},this.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),r=[];for(var i=0;i<n.length;i++)try{r.push(new RegExp(n[i],t))}catch(s){return!1}return n[0]==""?(r.shift(),r.offset=1):r.offset=0,r},this.$lineIterator=function(e,t){var n=t.backwards==1,r=t.skipCurrent!=0,i=t.range,s=t.start;s||(s=i?i[n?"end":"start"]:e.selection.getRange()),s.start&&(s=s[r!=n?"end":"start"]);var o=i?i.start.row:0,u=i?i.end.row:e.getLength()-1,a=n?function(n){var r=s.row,i=e.getLine(r).substring(0,s.column);if(n(i,r))return;for(r--;r>=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={};if(this.__defineGetter__&&this.__defineSetter__&&typeof console!="undefined"&&console.error){var n=!1,r=function(){n||(n=!0,console.error("commmandKeyBinding has too many m's. use commandKeyBinding"))};this.__defineGetter__("commmandKeyBinding",function(){return r(),this.commandKeyBinding}),this.__defineSetter__("commmandKeyBinding",function(e){return r(),this.commandKeyBinding=e})}else this.commmandKeyBinding=this.commandKeyBinding;this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:s("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"center",readOnly:!0},{name:"goToPreviousError",bindKey:s("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"center",readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:s("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"selectOrFindNext",bindKey:s("ALt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()}},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()}},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()}},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()}},{name:"del",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach"},{name:"cut_or_delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/useragent","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/useragent"),o=e("./config"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./lib/event_emitter").EventEmitter,v=".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;color: black;}.ace_editor .ace_line {direction: ltr;unicode-bidi: bidi-override;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;min-width: 100%;}.ace_dragging, .ace_dragging * {cursor: move !important;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: '';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0px;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}";i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize")}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t};if(this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow<this.layerConfig.firstRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0)},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",this.session&&(i|=this.CHANGE_SCROLL));if(n&&(e||s.width!=n)){i=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){this.scrollBarV.setScrollHeight(this.layerConfig.maxHeight+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL)e|=this.$computeLayerConfig(),n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px";e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,i=this.scrollTop%this.lineHeight,s=this.$size.scrollerHeight+this.lineHeight,o=this.$getLongestLine(),u=!t&&(this.$hScrollBarAlwaysVisible||this.$size.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==u;a&&(this.$horizScroll=u,this.scrollBarH.setVisible(u)),!this.$maxLines&&this.$scrollPastEnd&&this.scrollTop>r-this.$size.scrollerHeight&&(r+=Math.min((this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd,this.scrollTop-r+this.$size.scrollerHeight));var f=!t&&(this.$vScrollBarAlwaysVisible||this.$size.scrollerHeight-r<0),l=this.$vScroll!==f;l&&(this.$vScroll=f,this.scrollBarV.setVisible(f)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,r-this.$size.scrollerHeight+this.scrollMargin.v))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,o+2*this.$padding-this.$size.scrollerWidth+this.scrollMargin.h)));var c=Math.ceil(s/this.lineHeight)-1,h=Math.max(0,Math.round((this.scrollTop-i)/this.lineHeight)),p=h+c,d,v,m=this.lineHeight;h=e.screenToDocumentRow(h,0);var g=e.getFoldLine(h);g&&(h=g.start.row),d=e.documentToScreenRow(h,0),v=e.getRowLength(h)*m,p=Math.min(e.screenToDocumentRow(p,0),e.getLength()-1),s=this.$size.scrollerHeight+e.getRowLength(p)*m+v,i=this.scrollTop-d*m;var y=0;if(a||l)y=this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this._signal("scrollbarVisibilityChanged"),l&&(o=this.$getLongestLine());return this.layerConfig={width:o,padding:this.$padding,firstRow:h,firstRowScreen:d,lastRow:p,lineHeight:m,characterWidth:this.characterWidth,minHeight:s,maxHeight:r,offset:i,height:this.$size.scrollerHeight},y},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(t<n.firstRow)return;if(t===Infinity){this.$showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,e,t),!0},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t){if(this.$size.scrollerHeight===0)return;var n=this.$cursorLayer.getPixelPosition(e),r=n.left,i=n.top,s=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;s>i?(t&&(i-=t*this.$size.scrollerHeight),i==0?i=-this.scrollMargin.top:i==0&&(i=+this.scrollMargin.bottom),this.session.setScrollTop(i)):s+this.$size.scrollerHeight<i+this.lineHeight&&(t&&(i+=t*this.$size.scrollerHeight),this.session.setScrollTop(i+this.lineHeight-this.$size.scrollerHeight));var o=this.scrollLeft;o>r?(r<this.$padding+2*this.layerConfig.characterWidth&&(r=-this.scrollMargin.left),this.session.setScrollLeft(r)):o+this.$size.scrollerWidth<r+this.characterWidth?this.session.setScrollLeft(Math.round(r+this.characterWidth-this.$size.scrollerWidth)):o<=this.$padding&&r-o<this.characterWidth&&this.session.setScrollLeft(0)},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){typeof e=="number"&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),r=this.$size.scrollerHeight-this.lineHeight,i=n.top-r*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,r=this.STEPS,i=[],s=function(e,t,n){return n*(Math.pow(e-1,3)+1)+t};for(n=0;n<r;++n)i.push(s(n/this.STEPS,e,t-e));return i},this.scrollToLine=function(e,t,n,r){var i=this.$cursorLayer.getPixelPosition({row:e,column:0}),s=i.top;t&&(s-=this.$size.scrollerHeight/2);var o=this.scrollTop;this.session.setScrollTop(s),n!==!1&&this.animateScrolling(o,r)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(!this.$animatedScroll)return;var r=this;if(e==n)return;if(this.$scrollAnimation){var i=this.$scrollAnimation.steps;if(i.length){e=i[0];if(e==n)return}}var s=r.$calcSteps(e,n);this.$scrollAnimation={from:e,to:n,steps:s},clearInterval(this.$timer),r.session.setScrollTop(s.shift()),r.session.$scrollTop=n,this.$timer=setInterval(function(){s.length?(r.session.setScrollTop(s.shift()),r.session.$scrollTop=n):n!=null?(r.session.$scrollTop=-1,r.session.setScrollTop(n),n=null):(r.$timer=clearInterval(r.$timer),r.$scrollAnimation=null,t&&t())},10)},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){if(t<0&&this.session.getScrollTop()>=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight-(this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function s(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;o.loadModule(["theme",r],s)}else s(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.content.style.cursor!=e&&(this.content.style.cursor=e)},this.setMouseCursor=function(e){this.content.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),o.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=this.$annotations[r];i||(i=this.$annotations[r]={text:[]});var o=n.text;o=o?s.escapeHTML(o):n.html||"",i.text.indexOf(o)===-1&&i.text.push(o);var u=n.type;u=="error"?i.className=" ace_error":u=="warning"&&i.className!=" ace_error"?i.className=" ace_warning":u=="info"&&!i.className&&(i.className=" ace_info")}},this.$updateAnnotations=function(e){if(!this.$annotations.length)return;var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i!==0)if(t.action=="removeText"||t.action=="removeLines")this.$annotations.splice(r,i+1,null);else{var s=new Array(i+1);s.unshift(r,1),this.$annotations.splice.apply(this.$annotations,s)}},this.update=function(e){var t=e.firstRow,n=e.lastRow,i=this.session,s=i.getNextFoldLine(t),o=s?s.start.row:Infinity,u=this.$showFoldWidgets&&i.foldWidgets,a=i.$breakpoints,f=i.$decorations,l=i.$firstLineNumber,c=0,h=i.gutterRenderer,p=null,d=-1,v=t;for(;;){v>o&&(v=s.end.row+1,s=i.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>n){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=i.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=i.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&v<s.end.row?m+=" ace_closed":m+=" ace_open",p.foldWidget.className!=m&&(p.foldWidget.className=m);var g=e.lineHeight+"px";p.foldWidget.style.height!=g&&(p.foldWidget.style.height=g)}else p.foldWidget&&(p.element.removeChild(p.foldWidget),p.foldWidget=null);var b=c=h?h.getText(i,v):v+l;b!=p.textNode.data&&(p.textNode.data=b),v++}this.element.style.height=e.minHeight+"px";if(this.$fixedWidth||i.$useWrapMode)c=i.getLength()+l;var w=h?h.getWidth(i,c,e):c.toString().length*e.characterWidth,E=this.$padding||this.$computePadding();w+=E.left+E.right,w!==this.gutterWidth&&!isNaN(w)&&(this.gutterWidth=w,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",w))},this.$fixedWidth=!1,this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1||0,this.$padding.right=parseInt(e.paddingRight)||0,this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.x<t.left+n.left)return"markers";if(this.$showFoldWidgets&&e.x>n.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o<t.end.row;o++)u.start.row=o,u.end.row=o,u.end.column=this.session.getScreenLastRowColumn(o),this.drawSingleLineMarker(e,u,n,i,1,s)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("<div class='",n," ace_start' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",a,"px;",i,"'></div>"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",f,"px;","top:",u,"px;","left:",s,"px;",i,"'></div>"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("<div class='",n,"' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",s,"px;",i,"'></div>")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",u,"px;","top:",a,"px;","left:",f,"px;",s||"","'></div>")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$characterSize.height||0},this.getCharacterWidth=function(){return this.$characterSize.width||0},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement("div"),n=t.style;n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=s.stringRepeat("Xy",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,"ace_editor"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement("div"),t=e.style;t.width=t.height="auto",t.left=t.top="-100px",t.visibility="hidden",t.position="fixed",t.overflow="visible",t.whiteSpace="nowrap",e.innerHTML=s.stringRepeat("X",100);var n=this.element.parentNode;while(n&&!i.hasCssClass(n,"ace_editor"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),o={height:r.height,width:r.width/100};return o.width==0||o.height==0?null:o},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n<e+1;n++)this.showInvisibles?t.push("<span class='ace_invisible'>"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+"</span>"):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var i=s.stringRepeat(" ",this.tabSize),o=i;this.$tabStrings[" "]="<span class='"+r+"'>"+i+"</span>",this.$tabStrings[" "]="<span class='"+r+"'>"+o+"</span>"}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;a<r;a++){var f=this.session.getFoldLine(a);if(f){if(f.containsRow(r)){r=f.start.row;break}a=f.end.row}u++}var a=r,f=this.session.getNextFoldLine(a),l=f?f.start.row:Infinity;for(;;){a>l&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var r=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);r>0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var i=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)}if(e.lastRow>t.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(s),"px'>"),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("</div>"),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?"<span class='ace_invisible'>"+s.stringRepeat(i.SPACE_CHAR,e.length)+"</span>":s.stringRepeat(" ",e.length);if(e=="&")return"&#38;";if(e=="<")return"&#60;";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==" "){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,"<span class='"+f+"' style='width:"+i.config.characterWidth*2+"px'>"+l+"</span>"}return r?"<span class='ace_invisible ace_invalid'>"+i.SPACE_CHAR+"</span>":(t+=1,"<span class='ace_cjk' style='width:"+i.config.characterWidth*2+"px'>"+e+"</span>")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("<span class='",f,"'",l,">",a,"</span>")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a<t.length;a++){var f=t[a],l=f.value;if(a==0&&this.displayIndentGuides){i=l.length,l=this.renderIndentGuide(e,l,o);if(!l)continue;i-=l.length}if(i+l.length<o)u=this.$renderToken(e,u,f,l),i+=l.length;else{while(i+l.length>=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s<t.length;s++)r=t[s],i=r.value,n=this.$renderToken(e,n,r,i)},this.$renderLine=function(e,t,n,r){!r&&r!=0&&(r=this.session.getFoldLine(t));if(r)var i=this.$getFoldLineTokens(t,r);else var i=this.session.getTokens(t);n||e.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(t)),"px'>");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("<span class='ace_invisible'>",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")),n||e.push("</div>")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value.length,i++;if(i==e.length)return}if(s!=t){var o=e[i].value.substring(t-s);o.length>n-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(s<n&&i<e.length){var o=e[i].value;o.length+s>n?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;n<i;n++){var s=this.getPixelPosition(t[n].cursor,!0);if((s.top>e.height+e.offset||s.top<-e.offset)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey)?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c<o;c++)f.push(this.getLineRange(c,!0));l=this.getLineRange(o,!0),l.end.column=n.end.column,f.push(l),f.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column<t.column;if(s)var o=e.column,u=t.column;else var o=t.column,u=e.column;var a=e.row<t.row;if(a)var f=e.row,l=t.row;else var f=t.row,l=e.row;o<0&&(o=0),f<0&&(f=0),f==l&&(n=!0);for(var c=f;c<=l;c++){var h=i.fromPoints(this.session.screenToDocumentPosition(c,o),this.session.screenToDocumentPosition(c,u));if(h.isEmpty()){if(p&&v(h.end,p))break;var p=h.end}h.cursor=s?h.start:h.end,r.push(h)}a&&r.reverse();if(!n){var d=r.length-1;while(r[d].isEmpty()&&d>0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),this.selection=r.selection=f;var c=e.exec(this,t||{});!u==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r<t.length;r++)n.push(this.session.getTextRange(t[r]));var i=this.session.getDocument().getNewLineCharacter();e=n.join(i),e.length==(n.length-1)*i.length&&(e="")}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.onPaste=function(e){if(this.$readOnly)return;this._signal("paste",e);if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(e);var t=e.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(t.length>n.length||t.length<2||!t[1])return this.commands.exec("insertstring",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=s==o;if(u){var f=this.session.getLength(),l;do l=this.session.getLine(o);while(/[=:]/.test(l)&&++o<f);do l=this.session.getLine(s);while(/[=:]/.test(l)&&--s>0);s<0&&(s=0),o>=f&&(o=f-1)}var c=this.session.doc.removeLines(s,o);c=this.$reAlignText(c,u),this.session.doc.insert({row:s,column:0},c.join("\n")+"\n"),u||(r.start.column=0,r.end.column=c[c.length-1].length),this.selection.setRange(r)}else{var h=-1,p=n.filter(function(e){if(e.cursor.row==h)return!0;h=e.cursor.row});t.$onRemoveRange(p);var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),i<v&&(v=i),i});n.forEach(function(t,n){var r=t.cursor,s=d-r.column,o=m[n]-v;s>o?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),s<t[2].length&&(s=t[2].length),o>t[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0}})}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u==0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveCursorToPosition(t),a.selection.clearSelection(),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!s&&!n&&u==0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.$blockScrolling++,a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e)),a.$blockScrolling--})}else if(n&&u==0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):(f.moveCursorToPosition(c),f.clearSelection());var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t<x.length;t++)f.addRange(x[t])},N=g;r.capture(a.container,m,T);var C=setInterval(function(){N()},20);return e.preventDefault()}}var r=e("../lib/event");t.onMouseDown=s}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},readonly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"}}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/config"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/event_emitter").EventEmitter,s=e("../config"),o=function(t,n,r){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);var i;if(s.get("packaged")||!e.toUrl)i=s.moduleUrl(n,"worker");else{var o=this.$normalizePath;i=o(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=new Worker(i),this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._emit(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\/\/[^\/]+/,""),e=location.protocol+"//"+location.host+(e.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+e.replace(/^[\/]+/,""),e):e},this.terminate=function(){this._emit("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=Object.create(i),u=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){u.messageBuffer.push(e),r&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){r=new e[n](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)},this.onUpdate=function(e){var t=e.data,n=t.range;if(n.start.row!==n.end.row)return;if(n.start.row!==this.pos.row)return;if(this.$updating)return;this.$updating=!0;var i=t.action==="insertText"?n.end.column-n.start.column:n.start.column-n.end.column;if(n.start.column>=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.insert(a,t.text)}else if(t.action==="removeText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.remove(new r(a.row,a.column,a.row,a.column-i))}n.start.column===this.pos.column&&t.action==="insertText"?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-i);for(var e=0;e<this.others.length;e++){var t=this.others[e],r={row:t.row,column:t.column-i};t.row===n.start.row&&n.start.column<t.column&&(r.column+=i),t.setPosition(r.row,r.column)}}.bind(this),0):n.start.column===this.pos.column&&t.action==="removeText"&&setTimeout(function(){for(var e=0;e<this.others.length;e++){var t=this.others[e];t.row===n.start.row&&n.start.column<t.column&&t.setPosition(t.row,t.column-i)}}.bind(this),0)}this.pos._emit("change",{value:this.pos});for(var o=0;o<this.others.length;o++)this.others[o]._emit("change",{value:this.others[o]})}this.$updating=!1},this.onCursorChange=function(e){if(this.$updating)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e<this.others.length;e++)this.others[e].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(this.$undoStackDepth===-1)throw Error("Canceling placeholders only supported with undo manager attached to session.");var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n<t;n++)e.undo(!0)}}).call(o.prototype),t.PlaceHolder=o}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++t<a){var c=e.getLine(t).search(i);if(c==-1)continue;if(c<=o)break;l=t}if(l>f){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length-1?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];c.pos&&c.column==null&&(s.column=c.pos.sc),s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveCursorToPosition(s),e.selection.clearSelection();var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("<br>");var m={handleKeyboard:function(e,t,n){if(t===0&&n==="esc")return h.destroy(),!0}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e)},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.setOption("enableLineWidgets",!0),e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s<n.length;s++){var o=n[s];o._inDocument||(o._inDocument=!0,t.container.appendChild(o.el)),o.h=o.el.offsetHeight,o.fixedWidth||(o.w=o.el.offsetWidth,o.screenWidth=Math.ceil(o.w/r.characterWidth));var u=o.h/r.lineHeight;o.coverLine&&(u-=this.session.getRowLineCount(o.row),u<0&&(u=0)),o.rowCount!=u&&(o.rowCount=u,o.row<i&&(i=o.row))}i!=Infinity&&(this.session._emit("changeFold",{data:{start:{row:i}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]},this.renderWidgets=function(e,t){var n=t.layerConfig,r=this.session.lineWidgets;if(!r)return;var i=Math.min(this.firstRow,n.firstRow),s=Math.max(this.lastRow,n.lastRow,r.length);while(i>0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o});
2
- (function() {
3
- ace.require(["ace/ace"], function(a) {
4
- a && a.config.init();
5
- if (!window.ace)
6
- window.ace = {};
7
- for (var key in a) if (a.hasOwnProperty(key))
8
- ace[key] = a[key];
9
- });
10
- })();
 
 
 
 
 
 
 
 
 
 
assets/js/vendor/ace/mode-css.js DELETED
@@ -1 +0,0 @@
1
- ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./css_highlight_rules").CssHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("csslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f=0,l=-1,c="",h=0,p=-1,d="",v="",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==""&&f!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+f+"}",selection:!1};if(m.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(m.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(m.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){var l=u.substring(s.column,s.column+1);if(l=="}"){var c=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){var p="";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat("}",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==="}"){var d=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!d)return null;var v=this.$getIndent(r.getLine(d.row))}else{if(!p)return;var v=this.$getIndent(u)}var g=v+r.getTabString();return{text:"\n"+g+"\n"+v+p,selection:[1,g.length,1,g.length]}}m.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;h--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type=="string"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!=="comment"&&(p.type!=="string"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type==="string"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)})
 
assets/js/vendor/ace/theme-chrome.js DELETED
@@ -1 +0,0 @@
1
- ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
 
assets/js/vendor/ace/worker-css.js DELETED
@@ -1 +0,0 @@
1
- "no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+i.stack)},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r},e.main=null,e.sender=null,e.onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error("Unknown command:"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require("ace/lib/es5-shim"),sender=initSender();var n=require(t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)}})(this),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function i(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function s(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=c.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),u=e+o,a=u+s-o,f=n-u,l=n-o;if(a<u)for(var h=0;h<f;++h)this[a+h]=this[u+h];else if(a>u)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var b=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?b.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(c.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(e){return h(e)=="[object Array]"});var w=Object("a"),E=w[0]!="a"||!(0 in w);Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=arguments[1],i=-1,s=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i<s)i in n&&e.call(r,n[i],i,t)}),Array.prototype.map||(Array.prototype.map=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o<r;o++)o in n&&(i[o]=e.call(s,n[o],o,t));return i}),Array.prototype.filter||(Array.prototype.filter=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u<r;u++)u in n&&(s=n[u],e.call(o,s,u,t)&&i.push(s));return i}),Array.prototype.every||(Array.prototype.every=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s<r;s++)if(s in n&&!e.call(i,n[s],s,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s<r;s++)if(s in n&&e.call(i,n[s],s,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i<r;i++)i in n&&(s=e.call(void 0,s,n[i],i,t));return s}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r<n;r++)if(r in t&&t[r]===e)return r;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n<r;n++){var i=_[n];p(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var H=" \n\f\r   ᠎              \u2028\u2029";if(!String.prototype.trim||H.trim()){H="["+H+"]";var B=new RegExp("^"+H+H+"*"),j=new RegExp(H+H+"*$");String.prototype.trim=function(){return String(this).replace(B,"").replace(j,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/mode/css_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/css/csslint"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./css/csslint").CSSLint,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.ruleset=null,this.setDisabledRules("ids"),this.setInfoRules("adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none")};r.inherits(u,s),function(){this.setInfoRules=function(e){typeof e=="string"&&(e=e.split("|")),this.infoRules=i.arrayToMap(e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(e){if(!e)this.ruleset=null;else{typeof e=="string"&&(e=e.split("|"));var t={};o.getRules().forEach(function(e){t[e.id]=!0}),e.forEach(function(e){delete t[e]}),this.ruleset=t}this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var e=this.doc.getValue(),t=this.infoRules,n=o.verify(e,this.ruleset);this.sender.emit("csslint",n.messages.map(function(e){return{row:e.line-1,column:e.col-1,text:e.message,type:t[e.rule.id]?"info":e.type,rule:e.rule.name}}))}}.call(u.prototype)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){!e instanceof s&&(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){!e instanceof s&&(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/mode/css/csslint",["require","exports","module"],function(require,exports,module){function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e=="string"&&(e={type:e}),typeof e.target!="undefined"&&(e.target=this);if(typeof e.type=="undefined")throw new Error("Event object missing 'type' property.");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n<r;n++)t[n].call(this,e)}},removeListener:function(e,t){if(this._listeners[e]){var n=this._listeners[e];for(var r=0,i=n.length;r<i;r++)if(n[r]===t){n.splice(r,1);break}}}},t.prototype={constructor:t,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(e){var t=null;return e=typeof e=="undefined"?1:e,this._cursor<this._input.length&&(t=this._input.charAt(this._cursor+e-1)),t},read:function(){var e=null;return this._cursor<this._input.length&&(this._input.charAt(this._cursor)=="\n"?(this._line++,this._col=1):this._col++,e=this._input.charAt(this._cursor++)),e},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(e){var t="",n;while(t.length<e.length||t.lastIndexOf(e)!=t.length-e.length){n=this.read();if(!n)throw new Error('Expected "'+e+'" at line '+this._line+", col "+this._col+".");t+=n}return t},readWhile:function(e){var t="",n=this.read();while(n!==null&&e(n))t+=n,n=this.read();return t},readMatch:function(e){var t=this._input.substring(this._cursor),n=null;return typeof e=="string"?t.indexOf(e)===0&&(n=this.readCount(e.length)):e instanceof RegExp&&e.test(t)&&(n=this.readCount(RegExp.lastMatch.length)),n},readCount:function(e){var t="";while(e--)t+=this.read();return t}},n.prototype=new Error,r.fromToken=function(e){return new r(e.value,e.startLine,e.startCol)},r.prototype={constructor:r,valueOf:function(){return this.toString()},toString:function(){return this.text}},i.createTokenData=function(e){var t=[],n={},r=e.concat([]),i=0,s=r.length+1;r.UNKNOWN=-1,r.unshift({name:"EOF"});for(;i<s;i++)t.push(r[i].name),r[r[i].name]=i,r[i].text&&(n[r[i].text]=i);return r.name=function(e){return t[e]},r.type=function(e){return n[e]},r},i.prototype={constructor:i,match:function(e,t){e instanceof Array||(e=[e]);var n=this.get(t),r=0,i=e.length;while(r<i)if(n==e[r++])return!0;return this.unget(),!1},mustMatch:function(e,t){var r;e instanceof Array||(e=[e]);if(!this.match.apply(this,arguments))throw r=this.LT(1),new n("Expected "+this._tokenData[e[0]].name+" at line "+r.startLine+", col "+r.startCol+".",r.startLine,r.startCol)},advance:function(e,t){while(this.LA(0)!==0&&!this.match(e,t))this.get();return this.LA(0)},get:function(e){var t=this._tokenData,n=this._reader,r,i=0,s=t.length,o=!1,u,a;if(this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){i++,this._token=this._lt[this._ltIndex++],a=t[this._token.type];while(a.channel!==undefined&&e!==a.channel&&this._ltIndex<this._lt.length)this._token=this._lt[this._ltIndex++],a=t[this._token.type],i++;if((a.channel===undefined||e===a.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return u=this._getToken(),u.type>-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(t<e)this.unget(),t++}else if(e<0){if(!this._lt[this._ltIndex+e])throw new Error("Too much lookbehind.");n=this._lt[this._ltIndex+e].type}else n=this._token.type;return n},LT:function(e){return this.LA(e),this._lt[this._ltIndex+e-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(e){return e<0||e>this._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vm":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-\u0080-\uFFFF][a-z0-9\-\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s<o&&u===null)u=i[s++].call(this);if(u===null){if(r==="")return null;break}s=0,n.push(u),r+=u.toString(),u=null}return r!==""?new SelectorPart(t,n,r,f,l):null},_type_selector:function(){var e=this._tokenStream,t=this._namespace_prefix(),n=this._element_name();return n?(t&&(n.text=t+n.text,n.col-=t.length),n):(t&&(e.unget(),t.length>1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r<i&&n===null)n=t[r].call(this),r++;return n===null&&this._unexpectedToken(e.LT(1)),n.type=="elementName"?a=new SelectorPart(n,[],n.toString(),o,u):a=new SelectorPart(null,[n],n.toString(),o,u),a},_declaration:function(){var e=this._tokenStream,t=null,n=null,r=null,i=null,s=null,o="";t=this._property();if(t!==null){e.mustMatch(Tokens.COLON),this._readWhitespace(),n=this._expr(),(!n||n.length===0)&&this._unexpectedToken(e.LT(1)),r=this._prio(),o=t.toString();if(this.options.starHack&&t.hack=="*"||this.options.underscoreHack&&t.hack=="_")o=t.text;try{this._validateProperty(o,n)}catch(u){s=u}return this.fire({type:"property",property:t,value:n,important:r,line:t.line,col:t.col,invalid:s}),!0}return!1},_prio:function(){var e=this._tokenStream,t=e.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),t},_expr:function(e){var t=this._tokenStream,n=[],r=null,i=null;r=this._term();if(r!==null){n.push(r);do{i=this._operator(e),i&&n.push(i),r=this._term();if(r===null)break;n.push(r)}while(!0)}return n.length>0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(){var e=this._tokenStream,t=null,n=null,r,i,s;return t=this._unary_operator(),t!==null&&(i=e.token().startLine,s=e.token().startCol),e.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(n=this._ie_function(),t===null&&(i=e.token().startLine,s=e.token().startCol)):e.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(n=e.token().value,t===null&&(i=e.token().startLine,s=e.token().startCol),this._readWhitespace()):(r=this._hexcolor(),r===null?(t===null&&(i=e.LT(1).startLine,s=e.LT(1).startCol),n===null&&(e.LA(3)==Tokens.EQUALS&&this.options.ieFilters?n=this._ie_function():n=this._function())):(n=r.value,t===null&&(i=r.startLine,s=r.startCol))),n!==null?new PropertyValuePart(t!==null?t+n:n,i,s):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"<time>",comma:!0},"animation-direction":{multi:"normal | alternate",comma:!0},"animation-duration":{multi:"<time>",comma:!0},"animation-iteration-count":{multi:"<number> | infinite",comma:!0},"animation-name":{multi:"none | <ident>",comma:!0},"animation-play-state":{multi:"running | paused",comma:!0},"animation-timing-function":1,"-moz-animation-delay":{multi:"<time>",comma:!0},"-moz-animation-direction":{multi:"normal | alternate",comma:!0},"-moz-animation-duration":{multi:"<time>",comma:!0},"-moz-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-moz-animation-name":{multi:"none | <ident>",comma:!0},"-moz-animation-play-state":{multi:"running | paused",comma:!0},"-ms-animation-delay":{multi:"<time>",comma:!0},"-ms-animation-direction":{multi:"normal | alternate",comma:!0},"-ms-animation-duration":{multi:"<time>",comma:!0},"-ms-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-ms-animation-name":{multi:"none | <ident>",comma:!0},"-ms-animation-play-state":{multi:"running | paused",comma:!0},"-webkit-animation-delay":{multi:"<time>",comma:!0},"-webkit-animation-direction":{multi:"normal | alternate",comma:!0},"-webkit-animation-duration":{multi:"<time>",comma:!0},"-webkit-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-webkit-animation-name":{multi:"none | <ident>",comma:!0},"-webkit-animation-play-state":{multi:"running | paused",comma:!0},"-o-animation-delay":{multi:"<time>",comma:!0},"-o-animation-direction":{multi:"normal | alternate",comma:!0},"-o-animation-duration":{multi:"<time>",comma:!0},"-o-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-o-animation-name":{multi:"none | <ident>",comma:!0},"-o-animation-play-state":{multi:"running | paused",comma:!0},appearance:"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit",azimuth:function(e){var t="<angle> | leftwards | rightwards | inherit",n="left-side | far-left | left | center-left | center | center-right | right | far-right | right-side",r=!1,i=!1,s;ValidationTypes.isAny(e,t)||(ValidationTypes.isAny(e,"behind")&&(r=!0,i=!0),ValidationTypes.isAny(e,n)&&(i=!0,r||ValidationTypes.isAny(e,"behind")));if(e.hasNext())throw s=e.next(),i?new ValidationError("Expected end of value but found '"+s+"'.",s.line,s.col):new ValidationError("Expected (<'azimuth'>) but found '"+s+"'.",s.line,s.col)},"backface-visibility":"visible | hidden",background:1,"background-attachment":{multi:"<attachment>",comma:!0},"background-clip":{multi:"<box>",comma:!0},"background-color":"<color> | inherit","background-image":{multi:"<bg-image>",comma:!0},"background-origin":{multi:"<box>",comma:!0},"background-position":{multi:"<bg-position>",comma:!0},"background-repeat":{multi:"<repeat-style>"},"background-size":{multi:"<bg-size>",comma:!0},"baseline-shift":"baseline | sub | super | <percentage> | <length>",behavior:1,binding:1,bleed:"<length>","bookmark-label":"<content> | <attr> | <string>","bookmark-level":"none | <integer>","bookmark-state":"open | closed","bookmark-target":"none | <uri> | <attr>",border:"<border-width> || <border-style> || <color>","border-bottom":"<border-width> || <border-style> || <color>","border-bottom-color":"<color> | inherit","border-bottom-left-radius":"<x-one-radius>","border-bottom-right-radius":"<x-one-radius>","border-bottom-style":"<border-style>","border-bottom-width":"<border-width>","border-collapse":"collapse | separate | inherit","border-color":{multi:"<color> | inherit",max:4},"border-image":1,"border-image-outset":{multi:"<length> | <number>",max:4},"border-image-repeat":{multi:"stretch | repeat | round",max:2},"border-image-slice":function(e){var t=!1,n="<number> | <percentage>",r=!1,i=0,s=4,o;ValidationTypes.isAny(e,"fill")&&(r=!0,t=!0);while(e.hasNext()&&i<s){t=ValidationTypes.isAny(e,n);if(!t)break;i++}r?t=!0:ValidationTypes.isAny(e,"fill");if(e.hasNext())throw o=e.next(),t?new ValidationError("Expected end of value but found '"+o+"'.",o.line,o.col):new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '"+o+"'.",o.line,o.col)},"border-image-source":"<image> | none","border-image-width":{multi:"<length> | <percentage> | <number> | auto",max:4},"border-left":"<border-width> || <border-style> || <color>","border-left-color":"<color> | inherit","border-left-style":"<border-style>","border-left-width":"<border-width>","border-radius":function(e){var t=!1,n="<length> | <percentage> | inherit",r=!1,i=!1,s=0,o=8,u;while(e.hasNext()&&s<o){t=ValidationTypes.isAny(e,n);if(!t){if(!(e.peek()=="/"&&s>0&&!r))break;r=!0,o=s+5,e.next()}s++}if(e.hasNext())throw u=e.next(),t?new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col):new ValidationError("Expected (<'border-radius'>) but found '"+u+"'.",u.line,u.col)},"border-right":"<border-width> || <border-style> || <color>","border-right-color":"<color> | inherit","border-right-style":"<border-style>","border-right-width":"<border-width>","border-spacing":{multi:"<length> | inherit",max:2},"border-style":{multi:"<border-style>",max:4},"border-top":"<border-width> || <border-style> || <color>","border-top-color":"<color> | inherit","border-top-left-radius":"<x-one-radius>","border-top-right-radius":"<x-one-radius>","border-top-style":"<border-style>","border-top-width":"<border-width>","border-width":{multi:"<border-width>",max:4},bottom:"<margin-width> | inherit","box-align":"start | end | center | baseline | stretch","box-decoration-break":"slice |clone","box-direction":"normal | reverse | inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single | multiple","box-ordinal-group":"<integer>","box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","box-pack":"start | end | center | justify","box-shadow":function(e){var t=!1,n;if(!ValidationTypes.isAny(e,"none"))Validation.multiProperty("<shadow>",e,!0,Infinity);else if(e.hasNext())throw n=e.next(),new ValidationError("Expected end of value but found '"+n+"'.",n.line,n.col)},"box-sizing":"content-box | border-box | inherit","break-after":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-before":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-inside":"auto | avoid | avoid-page | avoid-column","caption-side":"top | bottom | inherit",clear:"none | right | left | both | inherit",clip:1,color:"<color> | inherit","color-profile":1,"column-count":"<integer> | auto","column-fill":"auto | balance","column-gap":"<length> | normal","column-rule":"<border-width> || <border-style> || <color>","column-rule-color":"<color>","column-rule-style":"<border-style>","column-rule-width":"<border-width>","column-span":"none | all","column-width":"<length> | auto",columns:1,content:1,"counter-increment":1,"counter-reset":1,crop:"<shape> | auto",cue:"cue-after | cue-before | inherit","cue-after":1,"cue-before":1,cursor:1,direction:"ltr | rtl | inherit",display:"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | box | inline-box | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box","dominant-baseline":1,"drop-initial-after-adjust":"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>","drop-initial-after-align":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-before-adjust":"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>","drop-initial-before-align":"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-size":"auto | line | <length> | <percentage>","drop-initial-value":"initial | <integer>",elevation:"<angle> | below | level | above | higher | lower | inherit","empty-cells":"show | hide | inherit",filter:1,fit:"fill | hidden | meet | slice","fit-position":1,"float":"left | right | none | inherit","float-offset":1,font:1,"font-family":1,"font-size":"<absolute-size> | <relative-size> | <length> | <percentage> | inherit","font-size-adjust":"<number> | none | inherit","font-stretch":"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit","font-style":"normal | italic | oblique | inherit","font-variant":"normal | small-caps | inherit","font-weight":"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit","grid-cell-stacking":"columns | rows | layer","grid-column":1,"grid-columns":1,"grid-column-align":"start | end | center | stretch","grid-column-sizing":1,"grid-column-span":"<integer>","grid-flow":"none | rows | columns","grid-layer":"<integer>","grid-row":1,"grid-rows":1,"grid-row-align":"start | end | center | stretch","grid-row-span":"<integer>","grid-row-sizing":1,"hanging-punctuation":1,height:"<margin-width> | inherit","hyphenate-after":"<integer> | auto","hyphenate-before":"<integer> | auto","hyphenate-character":"<string> | auto","hyphenate-lines":"no-limit | <integer>","hyphenate-resource":1,hyphens:"none | manual | auto",icon:1,"image-orientation":"angle | auto","image-rendering":1,"image-resolution":1,"inline-box-align":"initial | last | <integer>",left:"<margin-width> | inherit","letter-spacing":"<length> | normal | inherit","line-height":"<number> | <length> | <percentage> | normal | inherit","line-break":"auto | loose | normal | strict","line-stacking":1,"line-stacking-ruby":"exclude-ruby | include-ruby","line-stacking-shift":"consider-shifts | disregard-shifts","line-stacking-strategy":"inline-line-height | block-line-height | max-height | grid-height","list-style":1,"list-style-image":"<uri> | none | inherit","list-style-position":"inside | outside | inherit","list-style-type":"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit",margin:{multi:"<margin-width> | inherit",max:4},"margin-bottom":"<margin-width> | inherit","margin-left":"<margin-width> | inherit","margin-right":"<margin-width> | inherit","margin-top":"<margin-width> | inherit",mark:1,"mark-after":1,"mark-before":1,marks:1,"marquee-direction":1,"marquee-play-count":1,"marquee-speed":1,"marquee-style":1,"max-height":"<length> | <percentage> | none | inherit","max-width":"<length> | <percentage> | none | inherit","min-height":"<length> | <percentage> | inherit","min-width":"<length> | <percentage> | inherit","move-to":1,"nav-down":1,"nav-index":1,"nav-left":1,"nav-right":1,"nav-up":1,opacity:"<number> | inherit",orphans:"<integer> | inherit",outline:1,"outline-color":"<color> | invert | inherit","outline-offset":1,"outline-style":"<border-style> | inherit","outline-width":"<border-width> | inherit",overflow:"visible | hidden | scroll | auto | inherit","overflow-style":1,"overflow-x":1,"overflow-y":1,padding:{multi:"<padding-width> | inherit",max:4},"padding-bottom":"<padding-width> | inherit","padding-left":"<padding-width> | inherit","padding-right":"<padding-width> | inherit","padding-top":"<padding-width> | inherit",page:1,"page-break-after":"auto | always | avoid | left | right | inherit","page-break-before":"auto | always | avoid | left | right | inherit","page-break-inside":"auto | avoid | inherit","page-policy":1,pause:1,"pause-after":1,"pause-before":1,perspective:1,"perspective-origin":1,phonemes:1,pitch:1,"pitch-range":1,"play-during":1,"pointer-events":"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",position:"static | relative | absolute | fixed | inherit","presentation-level":1,"punctuation-trim":1,quotes:1,"rendering-intent":1,resize:1,rest:1,"rest-after":1,"rest-before":1,richness:1,right:"<margin-width> | inherit",rotation:1,"rotation-point":1,"ruby-align":1,"ruby-overhang":1,"ruby-position":1,"ruby-span":1,size:1,speak:"normal | none | spell-out | inherit","speak-header":"once | always | inherit","speak-numeral":"digits | continuous | inherit","speak-punctuation":"code | none | inherit","speech-rate":1,src:1,stress:1,"string-set":1,"table-layout":"auto | fixed | inherit","tab-size":"<integer> | <length>",target:1,"target-name":1,"target-new":1,"target-position":1,"text-align":"left | right | center | justify | inherit","text-align-last":1,"text-decoration":1,"text-emphasis":1,"text-height":1,"text-indent":"<length> | <percentage> | inherit","text-justify":"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida","text-outline":1,"text-overflow":1,"text-rendering":"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit","text-shadow":1,"text-transform":"capitalize | uppercase | lowercase | none | inherit","text-wrap":"normal | none | avoid",top:"<margin-width> | inherit",transform:1,"transform-origin":1,"transform-style":1,transition:1,"transition-delay":1,"transition-duration":1,"transition-property":1,"transition-timing-function":1,"unicode-bidi":"normal | embed | bidi-override | inherit","user-modify":"read-only | read-write | write-only | inherit","user-select":"none | text | toggle | element | elements | all | inherit","vertical-align":"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>",visibility:"visible | hidden | collapse | inherit","voice-balance":1,"voice-duration":1,"voice-family":1,"voice-pitch":1,"voice-pitch-range":1,"voice-rate":1,"voice-stress":1,"voice-volume":1,volume:1,"white-space":"normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap","white-space-collapse":1,widows:"<integer> | inherit",width:"<length> | <percentage> | auto | inherit","word-break":"normal | keep-all | break-all","word-spacing":"<length> | normal | inherit","word-wrap":1,"z-index":"<integer> | auto | inherit",zoom:"<number> | <percentage> | normal"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:"")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return this._i===0},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(e){return this.hasNext()?this._parts[this._i+(e||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(e){return new PropertyValuePart(e.value,e.startLine,e.startCol)};var Pseudos={":first-letter":1,":first-line":1,":before":1,":after":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(e){return e.indexOf("::")===0||Pseudos[e.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(e){var t=["a","b","c","d"],n,r;for(n=0,r=t.length;n<r;n++){if(this[t[n]]<e[t[n]])return-1;if(this[t[n]]>e[t[n]])return 1}return 0},valueOf:function(){return this.a*1e3+this.b*100+this.c*10+this.d},toString:function(){return this.a+","+this.b+","+this.c+","+this.d}},Specificity.calculate=function(e){function t(e){var n,r,i,a,f=e.elementName?e.elementName.text:"",l;f&&f.charAt(f.length-1)!="*"&&u++;for(n=0,i=e.modifiers.length;n<i;n++){l=e.modifiers[n];switch(l.type){case"class":case"attribute":o++;break;case"id":s++;break;case"pseudo":Pseudos.isElement(l.text)?u++:o++;break;case"not":for(r=0,a=l.args.length;r<a;r++)t(l.args[r])}}}var n,r,i,s=0,o=0,u=0;for(n=0,r=e.parts.length;n<r;n++)i=e.parts[n],i instanceof SelectorPart&&t(i);return new Specificity(0,s,o,u)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\u0080-\uFFFF]$/,nl=/\n|\r\n|\r|\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(e){var t,n=this._reader,r=null,i=n.getLine(),s=n.getCol();t=n.read();while(t){switch(t){case"/":n.peek()=="*"?r=this.commentToken(t,i,s):r=this.charToken(t,i,s);break;case"|":case"~":case"^":case"$":case"*":n.peek()=="="?r=this.comparisonToken(t,i,s):r=this.charToken(t,i,s);break;case'"':case"'":r=this.stringToken(t,i,s);break;case"#":isNameChar(n.peek())?r=this.hashToken(t,i,s):r=this.charToken(t,i,s);break;case".":isDigit(n.peek())?r=this.numberToken(t,i,s):r=this.charToken(t,i,s);break;case"-":n.peek()=="-"?r=this.htmlCommentEndToken(t,i,s):isNameStart(n.peek())?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s);break;case"!":r=this.importantToken(t,i,s);break;case"@":r=this.atRuleToken(t,i,s);break;case":":r=this.notToken(t,i,s);break;case"<":r=this.htmlCommentStartToken(t,i,s);break;case"U":case"u":if(n.peek()=="+"){r=this.unicodeRangeToken(t,i,s);break};default:isDigit(t)?r=this.numberToken(t,i,s):isWhitespace(t)?r=this.whitespaceToken(t,i,s):isIdentStart(t)?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s)}break}return!r&&t===null&&(r=this.createToken(Tokens.EOF,null,i,s)),r},createToken:function(e,t,n,r,i){var s=this._reader;return i=i||{},{value:t,type:e,channel:i.channel,hide:i.hide||!1,startLine:n,startCol:r,endLine:s.getLine(),endCol:s.getCol()}},atRuleToken:function(e,t,n){var r=e,i=this._reader,s=Tokens.CHAR,o=!1,u,a;i.mark(),u=this.readName(),r=e+u,s=Tokens.type(r.toLowerCase());if(s==Tokens.CHAR||s==Tokens.UNKNOWN)r.length>1?s=Tokens.UNKNOWN_SYM:(s=Tokens.CHAR,r=e,i.reset());return this.createToken(s,r,t,n)},charToken:function(e,t,n){var r=Tokens.type(e);return r==-1&&(r=Tokens.CHAR),this.createToken(r,e,t,n)},commentToken:function(e,t,n){var r=this._reader,i=this.readComment(e);return this.createToken(Tokens.COMMENT,i,t,n)},comparisonToken:function(e,t,n){var r=this._reader,i=e+r.read(),s=Tokens.type(i)||Tokens.CHAR;return this.createToken(s,i,t,n)},hashToken:function(e,t,n){var r=this._reader,i=this.readName(e);return this.createToken(Tokens.HASH,i,t,n)},htmlCommentStartToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(3),i=="<!--"?this.createToken(Tokens.CDO,i,t,n):(r.reset(),this.charToken(e,t,n))},htmlCommentEndToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(2),i=="-->"?this.createToken(Tokens.CDC,i,t,n):(r.reset(),this.charToken(e,t,n))},identOrFunctionToken:function(e,t,n){var r=this._reader,i=this.readName(e),s=Tokens.IDENT;return r.peek()=="("?(i+=r.read(),i.toLowerCase()=="url("?(s=Tokens.URI,i=this.readURI(i),i.toLowerCase()=="url("&&(s=Tokens.FUNCTION)):s=Tokens.FUNCTION):r.peek()==":"&&i.toLowerCase()=="progid"&&(i+=r.readTo("("),s=Tokens.IE_FUNCTION),this.createToken(s,i,t,n)},importantToken:function(e,t,n){var r=this._reader,i=e,s=Tokens.CHAR,o,u;r.mark(),u=r.read();while(u){if(u=="/"){if(r.peek()!="*")break;o=this.readComment(u);if(o==="")break}else{if(!isWhitespace(u)){if(/i/i.test(u)){o=r.readCount(8),/mportant/i.test(o)&&(i+=u+o,s=Tokens.IMPORTANT_SYM);break}break}i+=u+this.readWhitespace()}u=r.read()}return s==Tokens.CHAR?(r.reset(),this.charToken(e,t,n)):this.createToken(s,i,t,n)},notToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(4),i.toLowerCase()==":not("?this.createToken(Tokens.NOT,i,t,n):(r.reset(),this.charToken(e,t,n))},numberToken:function(e,t,n){var r=this._reader,i=this.readNumber(e),s,o=Tokens.NUMBER,u=r.peek();return isIdentStart(u)?(s=this.readName(r.read()),i+=s,/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vm$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(s)?o=Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(s)?o=Tokens.ANGLE:/^ms$|^s$/i.test(s)?o=Tokens.TIME:/^hz$|^khz$/i.test(s)?o=Tokens.FREQ:/^dpi$|^dpcm$/i.test(s)?o=Tokens.RESOLUTION:o=Tokens.DIMENSION):u=="%"&&(i+=r.read(),o=Tokens.PERCENTAGE),this.createToken(o,i,t,n)},stringToken:function(e,t,n){var r=e,i=e,s=this._reader,o=e,u=Tokens.STRING,a=s.read();while(a){i+=a;if(a==r&&o!="\\")break;if(isNewLine(s.peek())&&a!="\\"){u=Tokens.INVALID;break}o=a,a=s.read()}return a===null&&(u=Tokens.INVALID),this.createToken(u,i,t,n)},unicodeRangeToken:function(e,t,n){var r=this._reader,i=e,s,o=Tokens.CHAR;return r.peek()=="+"&&(r.mark(),i+=r.read(),i+=this.readUnicodeRangePart(!0),i.length==2?r.reset():(o=Tokens.UNICODE_RANGE,i.indexOf("?")==-1&&r.peek()=="-"&&(r.mark(),s=r.read(),s+=this.readUnicodeRangePart(!1),s.length==1?r.reset():i+=s))),this.createToken(o,i,t,n)},whitespaceToken:function(e,t,n){var r=this._reader,i=e+this.readWhitespace();return this.createToken(Tokens.S,i,t,n)},readUnicodeRangePart:function(e){var t=this._reader,n="",r=t.peek();while(isHexDigit(r)&&n.length<6)t.read(),n+=r,r=t.peek();if(e)while(r=="?"&&n.length<6)t.read(),n+=r,r=t.peek();return n},readWhitespace:function(){var e=this._reader,t="",n=e.peek();while(isWhitespace(n))e.read(),t+=n,n=e.peek();return t},readNumber:function(e){var t=this._reader,n=e,r=e==".",i=t.peek();while(i){if(isDigit(i))n+=t.read();else{if(i!=".")break;if(r)break;r=!0,n+=t.read()}i=t.peek()}return n},readString:function(){var e=this._reader,t=e.read(),n=t,r=t,i=e.peek();while(i){i=e.read(),n+=i;if(i==t&&r!="\\")break;if(isNewLine(e.peek())&&i!="\\"){n="";break}r=i,i=e.peek()}return i===null&&(n=""),n},readURI:function(e){var t=this._reader,n=e,r="",i=t.peek();t.mark();while(i&&isWhitespace(i))t.read(),i=t.peek();i=="'"||i=='"'?r=this.readString():r=this.readURL(),i=t.peek();while(i&&isWhitespace(i))t.read(),i=t.peek();return r===""||i!=")"?(n=e,t.reset()):n+=r+t.read(),n},readURL:function(){var e=this._reader,t="",n=e.peek();while(/^[!#$%&\\*-~]$/.test(n))t+=e.read(),n=e.peek();return t},readName:function(e){var t=this._reader,n=e||"",r=t.peek();for(;;)if(r=="\\")n+=this.readEscape(t.read()),r=t.peek();else{if(!r||!isNameChar(r))break;n+=t.read(),r=t.peek()}return n},readEscape:function(e){var t=this._reader,n=e||"",r=0,i=t.peek();if(isHexDigit(i))do n+=t.read(),i=t.peek();while(i&&isHexDigit(i)&&++r<6);return n.length==3&&/\s/.test(i)||n.length==7||n.length==1?t.read():i="",n+i},readComment:function(e){var t=this._reader,n=e||"",r=t.read();if(r=="*"){while(r){n+=r;if(n.length>2&&r=="*"&&t.peek()=="/"){n+=t.read();break}r=t.read()}return n}return""}});var Tokens=[{name:"CDO"},{name:"CDC"},{name:"S",whitespace:!0},{name:"COMMENT",comment:!0,hide:!0,channel:"comment"},{name:"INCLUDES",text:"~="},{name:"DASHMATCH",text:"|="},{name:"PREFIXMATCH",text:"^="},{name:"SUFFIXMATCH",text:"$="},{name:"SUBSTRINGMATCH",text:"*="},{name:"STRING"},{name:"IDENT"},{name:"HASH"},{name:"IMPORT_SYM",text:"@import"},{name:"PAGE_SYM",text:"@page"},{name:"MEDIA_SYM",text:"@media"},{name:"FONT_FACE_SYM",text:"@font-face"},{name:"CHARSET_SYM",text:"@charset"},{name:"NAMESPACE_SYM",text:"@namespace"},{name:"VIEWPORT_SYM",text:"@viewport"},{name:"UNKNOWN_SYM"},{name:"KEYFRAMES_SYM",text:["@keyframes","@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"]},{name:"IMPORTANT_SYM"},{name:"LENGTH"},{name:"ANGLE"},{name:"TIME"},{name:"FREQ"},{name:"DIMENSION"},{name:"PERCENTAGE"},{name:"NUMBER"},{name:"URI"},{name:"FUNCTION"},{name:"UNICODE_RANGE"},{name:"INVALID"},{name:"PLUS",text:"+"},{name:"GREATER",text:">"},{name:"COMMA",text:","},{name:"TILDE",text:"~"},{name:"NOT"},{name:"TOPLEFTCORNER_SYM",text:"@top-left-corner"},{name:"TOPLEFT_SYM",text:"@top-left"},{name:"TOPCENTER_SYM",text:"@top-center"},{name:"TOPRIGHT_SYM",text:"@top-right"},{name:"TOPRIGHTCORNER_SYM",text:"@top-right-corner"},{name:"BOTTOMLEFTCORNER_SYM",text:"@bottom-left-corner"},{name:"BOTTOMLEFT_SYM",text:"@bottom-left"},{name:"BOTTOMCENTER_SYM",text:"@bottom-center"},{name:"BOTTOMRIGHT_SYM",text:"@bottom-right"},{name:"BOTTOMRIGHTCORNER_SYM",text:"@bottom-right-corner"},{name:"LEFTTOP_SYM",text:"@left-top"},{name:"LEFTMIDDLE_SYM",text:"@left-middle"},{name:"LEFTBOTTOM_SYM",text:"@left-bottom"},{name:"RIGHTTOP_SYM",text:"@right-top"},{name:"RIGHTMIDDLE_SYM",text:"@right-middle"},{name:"RIGHTBOTTOM_SYM",text:"@right-bottom"},{name:"RESOLUTION",state:"media"},{name:"IE_FUNCTION"},{name:"CHAR"},{name:"PIPE",text:"|"},{name:"SLASH",text:"/"},{name:"MINUS",text:"-"},{name:"STAR",text:"*"},{name:"LBRACE",text:"{"},{name:"RBRACE",text:"}"},{name:"LBRACKET",text:"["},{name:"RBRACKET",text:"]"},{name:"EQUALS",text:"="},{name:"COLON",text:":"},{name:"SEMICOLON",text:";"},{name:"LPAREN",text:"("},{name:"RPAREN",text:")"},{name:"DOT",text:"."}];(function(){var e=[],t={};Tokens.UNKNOWN=-1,Tokens.unshift({name:"EOF"});for(var n=0,r=Tokens.length;n<r;n++){e.push(Tokens[n].name),Tokens[Tokens[n].name]=n;if(Tokens[n].text)if(Tokens[n].text instanceof Array)for(var i=0;i<Tokens[n].text.length;i++)t[Tokens[n].text[i]]=n;else t[Tokens[n].text]=n}Tokens.name=function(t){return e[t]},Tokens.type=function(e){return t[e]||-1}})();var Validation={validate:function(e,t){var n=e.toString().toLowerCase(),r=t.parts,i=new PropertyValueIterator(t),s=Properties[n],o,u,a,f,l,c,h,p,d,v,m;if(!s){if(n.indexOf("-")!==0)throw new ValidationError("Unknown property '"+e+"'.",e.line,e.col)}else typeof s!="number"&&(typeof s=="string"?s.indexOf("||")>-1?this.groupProperty(s,i):this.singleProperty(s,i,1):s.multi?this.multiProperty(s.multi,i,s.comma,s.max||Infinity):typeof s=="function"&&s(i))},singleProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u;while(t.hasNext()&&o<n){i=ValidationTypes.isAny(t,e);if(!i)break;o++}if(!i)throw t.hasNext()&&!t.isFirst()?(u=t.peek(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col);if(t.hasNext())throw u=t.next(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)},multiProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u=!1,a;while(t.hasNext()&&!i&&o<r){if(!ValidationTypes.isAny(t,e))break;o++;if(!t.hasNext())i=!0;else if(n){if(t.peek()!=",")break;a=t.next()}}if(!i)throw t.hasNext()&&!t.isFirst()?(a=t.peek(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)):(a=t.previous(),n&&a==","?new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col));if(t.hasNext())throw a=t.next(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)},groupProperty:function(e,t,n){var r=!1,i=t.value,s=e.split("||").length,o={count:0},u=!1,a,f;while(t.hasNext()&&!r){a=ValidationTypes.isAnyOfGroup(t,e);if(!a)break;if(o[a])break;o[a]=1,o.count++,u=!0;if(o.count==s||!t.hasNext())r=!0}if(!r)throw u&&t.hasNext()?(f=t.peek(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)):new ValidationError("Expected ("+e+") but found '"+i+"'.",i.line,i.col);if(t.hasNext())throw f=t.next(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)}};ValidationError.prototype=new Error;var ValidationTypes={isLiteral:function(e,t){var n=e.text.toString().toLowerCase(),r=t.split(" | "),i,s,o=!1;for(i=0,s=r.length;i<s&&!o;i++)n==r[i].toLowerCase()&&(o=!0);return o},isSimple:function(e){return!!this.simple[e]},isComplex:function(e){return!!this.complex[e]},isAny:function(e,t){var n=t.split(" | "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s&&e.hasNext();r++)s=this.isType(e,n[r]);return s},isAnyOfGroup:function(e,t){var n=t.split(" || "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s;r++)s=this.isType(e,n[r]);return s?n[r-1]:!1},isType:function(e,t){var n=e.peek(),r=!1;return t.charAt(0)!="<"?(r=this.isLiteral(n,t),r&&e.next()):this.simple[t]?(r=this.simple[t](n),r&&e.next()):r=this.complex[t](e),r},simple:{"<absolute-size>":function(e){return ValidationTypes.isLiteral(e,"xx-small | x-small | small | medium | large | x-large | xx-large")},"<attachment>":function(e){return ValidationTypes.isLiteral(e,"scroll | fixed | local")},"<attr>":function(e){return e.type=="function"&&e.name=="attr"},"<bg-image>":function(e){return this["<image>"](e)||this["<gradient>"](e)||e=="none"},"<gradient>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(e)},"<box>":function(e){return ValidationTypes.isLiteral(e,"padding-box | border-box | content-box")},"<content>":function(e){return e.type=="function"&&e.name=="content"},"<relative-size>":function(e){return ValidationTypes.isLiteral(e,"smaller | larger")},"<ident>":function(e){return e.type=="identifier"},"<length>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(e)?!0:e.type=="length"||e.type=="number"||e.type=="integer"||e=="0"},"<color>":function(e){return e.type=="color"||e=="transparent"},"<number>":function(e){return e.type=="number"||this["<integer>"](e)},"<integer>":function(e){return e.type=="integer"},"<line>":function(e){return e.type=="integer"},"<angle>":function(e){return e.type=="angle"},"<uri>":function(e){return e.type=="uri"},"<image>":function(e){return this["<uri>"](e)},"<percentage>":function(e){return e.type=="percentage"||e=="0"},"<border-width>":function(e){return this["<length>"](e)||ValidationTypes.isLiteral(e,"thin | medium | thick")},"<border-style>":function(e){return ValidationTypes.isLiteral(e,"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset")},"<margin-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)||ValidationTypes.isLiteral(e,"auto")},"<padding-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)},"<shape>":function(e){return e.type=="function"&&(e.name=="rect"||e.name=="inset-rect")},"<time>":function(e){return e.type=="time"}},complex:{"<bg-position>":function(e){var t=this,n=!1,r="<percentage> | <length>",i="left | right",s="top | bottom",o=0,u=function(){return e.hasNext()&&e.peek()!=","};while(e.peek(o)&&e.peek(o)!=",")o++;return o<3?ValidationTypes.isAny(e,i+" | center | "+r)?(n=!0,ValidationTypes.isAny(e,s+" | center | "+r)):ValidationTypes.isAny(e,s)&&(n=!0,ValidationTypes.isAny(e,i+" | center")):ValidationTypes.isAny(e,i)?ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,s)?ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,"center")&&ValidationTypes.isAny(e,i+" | "+s)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<bg-size>":function(e){var t=this,n=!1,r="<percentage> | <length> | auto",i,s,o;return ValidationTypes.isAny(e,"cover | contain")?n=!0:ValidationTypes.isAny(e,r)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<repeat-style>":function(e){var t=!1,n="repeat | space | round | no-repeat",r;return e.hasNext()&&(r=e.next(),ValidationTypes.isLiteral(r,"repeat-x | repeat-y")?t=!0:ValidationTypes.isLiteral(r,n)&&(t=!0,e.hasNext()&&ValidationTypes.isLiteral(e.peek(),n)&&e.next())),t},"<shadow>":function(e){var t=!1,n=0,r=!1,i=!1,s;if(e.hasNext()){ValidationTypes.isAny(e,"inset")&&(r=!0),ValidationTypes.isAny(e,"<color>")&&(i=!0);while(ValidationTypes.isAny(e,"<length>")&&n<4)n++;e.hasNext()&&(i||ValidationTypes.isAny(e,"<color>"),r||ValidationTypes.isAny(e,"inset")),t=n>=2&&n<=4}return t},"<x-one-radius>":function(e){var t=!1,n="<length> | <percentage> | inherit";return ValidationTypes.isAny(e,n)&&(t=!0,ValidationTypes.isAny(e,n)),t}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}(),function(){for(var e in parserlib)exports[e]=parserlib[e]}();var CSSLint=function(){function e(e,t){var n,i=e&&e.match(r),s=i&&i[1];return s&&(n={"true":2,"":1,"false":0,2:2,1:1,0:0},s.toLowerCase().split(",").forEach(function(e){var r=e.split(":"),i=r[0]||"",s=r[1]||"";t[i.trim()]=n[s.trim()]})),t}var t=[],n=[],r=/\/\*csslint([^\*]*)\*\//,i=new parserlib.util.EventTarget;return i.version="0.10.0",i.addRule=function(e){t.push(e),t[e.id]=e},i.clearRules=function(){t=[]},i.getRules=function(){return[].concat(t).sort(function(e,t){return e.id>t.id?1:0})},i.getRuleset=function(){var e={},n=0,r=t.length;while(n<r)e[t[n++].id]=1;return e},i.addFormatter=function(e){n[e.id]=e},i.getFormatter=function(e){return n[e]},i.format=function(e,t,n,r){var i=this.getFormatter(n),s=null;return i&&(s=i.startFormat(),s+=i.formatResults(e,t,r||{}),s+=i.endFormat()),s},i.hasFormat=function(e){return n.hasOwnProperty(e)},i.verify=function(n,i){var s=0,o=t.length,u,a,f,l=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});a=n.replace(/\n\r?/g,"$split$").split("$split$"),i||(i=this.getRuleset()),r.test(n)&&(i=e(n,i)),u=new Reporter(a,i),i.errors=2;for(s in i)i.hasOwnProperty(s)&&i[s]&&t[s]&&t[s].init(l,u);try{l.parse(n)}catch(c){u.error("Fatal error, cannot continue: "+c.message,c.line,c.col,{})}return f={messages:u.messages,stats:u.stats,ruleset:u.ruleset},f.messages.sort(function(e,t){return e.rollup&&!t.rollup?1:!e.rollup&&t.rollup?-1:e.line-t.line}),f},i}();Reporter.prototype={constructor:Reporter,error:function(e,t,n,r){this.messages.push({type:"error",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r||{}})},warn:function(e,t,n,r){this.report(e,t,n,r)},report:function(e,t,n,r){this.messages.push({type:this.ruleset[r.id]==2?"error":"warning",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},info:function(e,t,n,r){this.messages.push({type:"info",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},rollupError:function(e,t){this.messages.push({type:"error",rollup:!0,message:e,rule:t})},rollupWarn:function(e,t){this.messages.push({type:"warning",rollup:!0,message:e,rule:t})},stat:function(e,t){this.stats[e]=t}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return n},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t){if(e.forEach)return e.forEach(t);for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)}},CSSLint.addRule({id:"adjoining-classes",name:"Disallow adjoining classes",desc:"Don't use adjoining classes.",browsers:"IE6",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f];for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE){a=0;for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type=="class"&&a++,a>1&&t.report("Don't use adjoining classes.",o.line,o.col,n)}}}})}}),CSSLint.addRule({id:"box-model",name:"Beware of broken box size",desc:"Don't use width or height when using padding or border.",browsers:"All",init:function(e,t){function n(){u={},a=!1}function r(){var e,n;if(!a){if(u.height)for(e in o)o.hasOwnProperty(e)&&u[e]&&(n=u[e].value,(e!="padding"||n.parts.length!==2||n.parts[0].value!==0)&&t.report("Using height with "+e+" can sometimes make elements larger than you expect.",u[e].line,u[e].col,i));if(u.width)for(e in s)s.hasOwnProperty(e)&&u[e]&&(n=u[e].value,(e!="padding"||n.parts.length!==2||n.parts[1].value!==0)&&t.report("Using width with "+e+" can sometimes make elements larger than you expect.",u[e].line,u[e].col,i))}}var i=this,s={border:1,"border-left":1,"border-right":1,padding:1,"padding-left":1,"padding-right":1},o={border:1,"border-bottom":1,"border-top":1,padding:1,"padding-bottom":1,"padding-top":1},u,a=!1;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase();o[t]||s[t]?!/^0\S*$/.test(e.value)&&(t!="border"||e.value!="none")&&(u[t]={line:e.property.line,col:e.property.col,value:e.value}):/^(width|height)/i.test(t)&&/^(length|percentage)/.test(e.value.parts[0].type)?u[t]=1:t=="box-sizing"&&(a=!0)}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"box-sizing",name:"Disallow use of box-sizing",desc:"The box-sizing properties isn't supported in IE6 and IE7.",browsers:"IE6, IE7",tags:["Compatibility"],init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();r=="box-sizing"&&t.report("The box-sizing property isn't supported in IE6 and IE7.",e.line,e.col,n)})}}),CSSLint.addRule({id:"bulletproof-font-face",name:"Use the bulletproof @font-face syntax",desc:"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).",browsers:"All",init:function(e,t){var n=this,r=0,i=!1,s=!0,o=!1,u,a;e.addListener("startfontface",function(e){i=!0}),e.addListener("property",function(e){if(!i)return;var t=e.property.toString().toLowerCase(),n=e.value.toString();u=e.line,a=e.col;if(t==="src"){var r=/^\s?url\(['"].+\.eot\?.*['"]\)\s*format\(['"]embedded-opentype['"]\).*$/i;!n.match(r)&&s?(o=!0,s=!1):n.match(r)&&!s&&(o=!1)}}),e.addListener("endfontface",function(e){i=!1,o&&t.report("@font-face declaration doesn't follow the fontspring bulletproof syntax.",u,a,n)})}}),CSSLint.addRule({id:"compatible-vendor-prefixes",name:"Require compatible vendor prefixes",desc:"Include all compatible vendor prefixes to reach a wider range of users.",browsers:"All",init:function(e,t){var n=this,r,i,s,o,u,a,f,l=!1,c=Array.prototype.push,h=[];r={animation:"webkit moz","animation-delay":"webkit moz","animation-direction":"webkit moz","animation-duration":"webkit moz","animation-fill-mode":"webkit moz","animation-iteration-count":"webkit moz","animation-name":"webkit moz","animation-play-state":"webkit moz","animation-timing-function":"webkit moz",appearance:"webkit moz","border-end":"webkit moz","border-end-color":"webkit moz","border-end-style":"webkit moz","border-end-width":"webkit moz","border-image":"webkit moz o","border-radius":"webkit","border-start":"webkit moz","border-start-color":"webkit moz","border-start-style":"webkit moz","border-start-width":"webkit moz","box-align":"webkit moz ms","box-direction":"webkit moz ms","box-flex":"webkit moz ms","box-lines":"webkit ms","box-ordinal-group":"webkit moz ms","box-orient":"webkit moz ms","box-pack":"webkit moz ms","box-sizing":"webkit moz","box-shadow":"webkit moz","column-count":"webkit moz ms","column-gap":"webkit moz ms","column-rule":"webkit moz ms","column-rule-color":"webkit moz ms","column-rule-style":"webkit moz ms","column-rule-width":"webkit moz ms","column-width":"webkit moz ms",hyphens:"epub moz","line-break":"webkit ms","margin-end":"webkit moz","margin-start":"webkit moz","marquee-speed":"webkit wap","marquee-style":"webkit wap","padding-end":"webkit moz","padding-start":"webkit moz","tab-size":"moz o","text-size-adjust":"webkit ms",transform:"webkit moz ms o","transform-origin":"webkit moz ms o",transition:"webkit moz o","transition-delay":"webkit moz o","transition-duration":"webkit moz o","transition-property":"webkit moz o","transition-timing-function":"webkit moz o","user-modify":"webkit moz","user-select":"webkit moz ms","word-break":"epub ms","writing-mode":"epub ms"};for(s in r)if(r.hasOwnProperty(s)){o=[],u=r[s].split(" ");for(a=0,f=u.length;a<f;a++)o.push("-"+u[a]+"-"+s);r[s]=o,c.apply(h,o)}e.addListener("startrule",function(){i=[]}),e.addListener("startkeyframes",function(e){l=e.prefix||!0}),e.addListener("endkeyframes",function(e){l=!1}),e.addListener("property",function(e){var t=e.property;CSSLint.Util.indexOf(h,t.text)>-1&&(!l||typeof l!="string"||t.text.indexOf("-"+l+"-")!==0)&&i.push(t)}),e.addListener("endrule",function(e){if(!i.length)return;var s={},o,u,a,f,l,c,h,p,d,v;for(o=0,u=i.length;o<u;o++){a=i[o];for(f in r)r.hasOwnProperty(f)&&(l=r[f],CSSLint.Util.indexOf(l,a.text)>-1&&(s[f]||(s[f]={full:l.slice(0),actual:[],actualNodes:[]}),CSSLint.Util.indexOf(s[f].actual,a.text)===-1&&(s[f].actual.push(a.text),s[f].actualNodes.push(a))))}for(f in s)if(s.hasOwnProperty(f)){c=s[f],h=c.full,p=c.actual;if(h.length>p.length)for(o=0,u=h.length;o<u;o++)d=h[o],CSSLint.Util.indexOf(p,d)===-1&&(v=p.length===1?p[0]:p.length==2?p.join(" and "):p.join(", "),t.report("The property "+d+" is compatible with "+v+" and should be included as well.",c.actualNodes[0].line,c.actualNodes[0].col,n))}})}}),CSSLint.addRule({id:"display-property-grouping",name:"Require properties appropriate for display",desc:"Certain properties shouldn't be used with certain display property values.",browsers:"All",init:function(e,t){function n(e,n,r){u[e]&&(typeof o[e]!="string"||u[e].value.toLowerCase()!=o[e])&&t.report(r||e+" can't be used with display: "+n+".",u[e].line,u[e].col,s)}function r(){u={}}function i(){var e=u.display?u.display.value:null;if(e)switch(e){case"inline":n("height",e),n("width",e),n("margin",e),n("margin-top",e),n("margin-bottom",e),n("float",e,"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");break;case"block":n("vertical-align",e);break;case"inline-block":n("float",e);break;default:e.indexOf("table-")===0&&(n("margin",e),n("margin-left",e),n("margin-right",e),n("margin-top",e),n("margin-bottom",e),n("float",e))}}var s=this,o={display:1,"float":"none",height:1,width:1,margin:1,"margin-left":1,"margin-right":1,"margin-bottom":1,"margin-top":1,padding:1,"padding-left":1,"padding-right":1,"padding-bottom":1,"padding-top":1,"vertical-align":1},u;e.addListener("startrule",r),e.addListener("startfontface",r),e.addListener("startkeyframerule",r),e.addListener("startpagemargin",r),e.addListener("startpage",r),e.addListener("property",function(e){var t=e.property.text.toLowerCase();o[t]&&(u[t]={value:e.value.text,line:e.property.line,col:e.property.col})}),e.addListener("endrule",i),e.addListener("endfontface",i),e.addListener("endkeyframerule",i),e.addListener("endpagemargin",i),e.addListener("endpage",i)}}),CSSLint.addRule({id:"duplicate-background-images",name:"Disallow duplicate background images",desc:"Every background-image should be unique. Use a common class for e.g. sprites.",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("property",function(e){var i=e.property.text,s=e.value,o,u;if(i.match(/background/i))for(o=0,u=s.parts.length;o<u;o++)s.parts[o].type=="uri"&&(typeof r[s.parts[o].uri]=="undefined"?r[s.parts[o].uri]=e:t.report("Background image '"+s.parts[o].uri+"' was used multiple times, first declared at line "+r[s.parts[o].uri].line+", col "+r[s.parts[o].uri].col+".",e.line,e.col,n))})}}),CSSLint.addRule({id:"duplicate-properties",name:"Disallow duplicate properties",desc:"Duplicate properties must appear one after the other.",browsers:"All",init:function(e,t){function n(e){i={}}var r=this,i,s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var n=e.property,o=n.text.toLowerCase();i[o]&&(s!=o||i[o]==e.value.text)&&t.report("Duplicate property '"+e.property+"' found.",e.line,e.col,r),i[o]=e.value.text,s=o})}}),CSSLint.addRule({id:"empty-rules",name:"Disallow empty rules",desc:"Rules without any properties specified should be removed.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r=0}),e.addListener("property",function(){r++}),e.addListener("endrule",function(e){var i=e.selectors;r===0&&t.report("Rule is empty.",i[0].line,i[0].col,n)})}}),CSSLint.addRule({id:"errors",name:"Parsing Errors",desc:"This rule looks for recoverable syntax errors.",browsers:"All",init:function(e,t){var n=this;e.addListener("error",function(e){t.error(e.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"fallback-colors",name:"Require fallback colors",desc:"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.",browsers:"IE6,IE7,IE8",init:function(e,t){function n(e){o={},i=null}var r=this,i,s={color:1,background:1,"border-color":1,"border-top-color":1,"border-right-color":1,"border-bottom-color":1,"border-left-color":1,border:1,"border-top":1,"border-right":1,"border-bottom":1,"border-left":1,"background-color":1},o;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var n=e.property,o=n.text.toLowerCase(),u=e.value.parts,a=0,f="",l=u.length;if(s[o])while(a<l)u[a].type=="color"&&("alpha"in u[a]||"hue"in u[a]?(/([^\)]+)\(/.test(u[a])&&(f=RegExp.$1.toUpperCase()),(!i||i.property.text.toLowerCase()!=o||i.colorType!="compat")&&t.report("Fallback "+o+" (hex or RGB) should precede "+f+" "+o+".",e.line,e.col,r)):e.colorType="compat"),a++;i=e})}}),CSSLint.addRule({id:"floats",name:"Disallow too many floats",desc:"This rule tests if the float property is used too many times",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.text.toLowerCase()=="float"&&e.value.text.toLowerCase()!="none"&&r++}),e.addListener("endstylesheet",function(){t.stat("floats",r),r>=10&&t.rollupWarn("Too many floats ("+r+"), you're probably using them for layout. Consider using a grid system instead.",n)})}}),CSSLint.addRule({id:"font-faces",name:"Don't use too many web fonts",desc:"Too many different web fonts in the same stylesheet.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startfontface",function(){r++}),e.addListener("endstylesheet",function(){r>5&&t.rollupWarn("Too many @font-face declarations ("+r+").",n)})}}),CSSLint.addRule({id:"font-sizes",name:"Disallow too many font sizes",desc:"Checks the number of font-size declarations.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property=="font-size"&&r++}),e.addListener("endstylesheet",function(){t.stat("font-sizes",r),r>=10&&t.rollupWarn("Too many font-size declarations ("+r+"), abstraction needed.",n)})}}),CSSLint.addRule({id:"gradients",name:"Require all gradient definitions",desc:"When using a vendor-prefixed gradient, make sure to use them all.",browsers:"All",init:function(e,t){var n=this,r;e.addListener("startrule",function(){r={moz:0,webkit:0,oldWebkit:0,o:0}}),e.addListener("property",function(e){/\-(moz|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(e.value)?r[RegExp.$1]=1:/\-webkit\-gradient/i.test(e.value)&&(r.oldWebkit=1)}),e.addListener("endrule",function(e){var i=[];r.moz||i.push("Firefox 3.6+"),r.webkit||i.push("Webkit (Safari 5+, Chrome)"),r.oldWebkit||i.push("Old Webkit (Safari 4+, Chrome)"),r.o||i.push("Opera 11.1+"),i.length&&i.length<4&&t.report("Missing vendor-prefixed CSS gradients for "+i.join(", ")+".",e.selectors[0].line,e.selectors[0].col,n)})}}),CSSLint.addRule({id:"ids",name:"Disallow IDs in selectors",desc:"Selectors should not contain IDs.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f],a=0;for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE)for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type=="id"&&a++}a==1?t.report("Don't use IDs in selectors.",s.line,s.col,n):a>1&&t.report(a+" IDs in the selector, really?",s.line,s.col,n)}})}}),CSSLint.addRule({id:"import",name:"Disallow @import",desc:"Don't use @import, use <link> instead.",browsers:"All",init:function(e,t){var n=this;e.addListener("import",function(e){t.report("@import prevents parallel downloads, use <link> instead.",e.line,e.col,n)})}}),CSSLint.addRule({id:"important",name:"Disallow !important",desc:"Be careful when using !important declaration",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.important===!0&&(r++,t.report("Use of !important",e.line,e.col,n))}),e.addListener("endstylesheet",function(){t.stat("important",r),r>=10&&t.rollupWarn("Too many !important declarations ("+r+"), try to use less than 10 to avoid specificity issues.",n)})}}),CSSLint.addRule({id:"known-properties",name:"Require use of known properties",desc:"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();e.invalid&&t.report(e.invalid.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"outline-none",name:"Disallow outline: none",desc:"Use of outline: none or outline: 0 should be limited to :focus rules.",browsers:"All",tags:["Accessibility"],init:function(e,t){function n(e){e.selectors?s={line:e.line,col:e.col,selectors:e.selectors,propCount:0,outline:!1}:s=null}function r(e){s&&s.outline&&(s.selectors.toString().toLowerCase().indexOf(":focus")==-1?t.report("Outlines should only be modified using :focus.",s.line,s.col,i):s.propCount==1&&t.report("Outlines shouldn't be hidden unless other visual changes are made.",s.line,s.col,i))}var i=this,s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase(),n=e.value;s&&(s.propCount++,t=="outline"&&(n=="none"||n=="0")&&(s.outline=!0))}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"overqualified-elements",name:"Disallow overqualified elements",desc:"Don't use classes or IDs with elements (a.foo or a#foo).",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("startrule",function(i){var s=i.selectors,o,u,a,f,l,c;for(f=0;f<s.length;f++){o=s[f];for(l=0;l<o.parts.length;l++){u=o.parts[l];if(u.type==e.SELECTOR_PART_TYPE)for(c=0;c<u.modifiers.length;c++)a=u.modifiers[c],u.elementName&&a.type=="id"?t.report("Element ("+u+") is overqualified, just use "+a+" without element name.",u.line,u.col,n):a.type=="class"&&(r[a]||(r[a]=[]),r[a].push({modifier:a,part:u}))}}}),e.addListener("endstylesheet",function(){var e;for(e in r)r.hasOwnProperty(e)&&r[e].length==1&&r[e][0].part.elementName&&t.report("Element ("+r[e][0].part+") is overqualified, just use "+r[e][0].modifier+" without element name.",r[e][0].part.line,r[e][0].part.col,n)})}}),CSSLint.addRule({id:"qualified-headings",name:"Disallow qualified headings",desc:"Headings should not be qualified (namespaced).",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a;for(u=0;u<i.length;u++){s=i[u];for(a=0;a<s.parts.length;a++)o=s.parts[a],o.type==e.SELECTOR_PART_TYPE&&o.elementName&&/h[1-6]/.test(o.elementName.toString())&&a>0&&t.report("Heading ("+o.elementName+") should not be qualified.",o.line,o.col,n)}})}}),CSSLint.addRule({id:"regex-selectors",name:"Disallow selectors that look like regexs",desc:"Selectors that look like regular expressions are slow and should be avoided.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a];for(f=0;f<s.parts.length;f++){o=s.parts[f];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type=="attribute"&&/([\~\|\^\$\*]=)/.test(u)&&t.report("Attribute selectors with "+RegExp.$1+" are slow!",u.line,u.col,n)}}})}}),CSSLint.addRule({id:"rules-count",name:"Rules Count",desc:"Track how many rules there are.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r++}),e.addListener("endstylesheet",function(){t.stat("rule-count",r)})}}),CSSLint.addRule({id:"selector-max-approaching",name:"Warn when approaching the 4095 selector limit for IE",desc:"Will warn when selector count is >= 3800 selectors.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>=3800&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-max",name:"Error when past the 4095 selector limit for IE",desc:"Will error when selector count is > 4095.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>4095&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"shorthand",name:"Require shorthand properties",desc:"Use shorthand properties where possible.",browsers:"All",init:function(e,t){function n(e){f={}}function r(e){var n,r,s,o;for(n in l)if(l.hasOwnProperty(n)){o=0;for(r=0,s=l[n].length;r<s;r++)o+=f[l[n][r]]?1:0;o==l[n].length&&t.report("The properties "+l[n].join(", ")+" can be replaced by "+n+".",e.line,e.col,i)}}var i=this,s,o,u,a={},f,l={margin:["margin-top","margin-bottom","margin-left","margin-right"],padding:["padding-top","padding-bottom","padding-left","padding-right"]};for(s in l)if(l.hasOwnProperty(s))for(o=0,u=l[s].length;o<u;o++)a[l[s][o]]=s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value.parts[0].value;a[t]&&(f[t]=1)}),e.addListener("endrule",r),e.addListener("endfontface",r)}}),CSSLint.addRule({id:"star-property-hack",name:"Disallow properties with a star prefix",desc:"Checks for the star property hack (targets IE6/7)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack=="*"&&t.report("Property with star prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"text-indent",name:"Disallow negative text-indent",desc:"Checks for text indent less than -99px",browsers:"All",init:function(e,t){function n(e){s=!1,o="inherit"}function r(e){s&&o!="ltr"&&t.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.",s.line,s.col,i)}var i=this,s,o;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value;t=="text-indent"&&n.parts[0].value<-99?s=e.property:t=="direction"&&n=="ltr"&&(o="ltr")}),e.addListener("endrule",r),e.addListener("endfontface",r)}}),CSSLint.addRule({id:"underscore-property-hack",name:"Disallow properties with an underscore prefix",desc:"Checks for the underscore property hack (targets IE6)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack=="_"&&t.report("Property with underscore prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"unique-headings",name:"Headings should only be defined once",desc:"Headings should be defined only once.",browsers:"All",init:function(e,t){var n=this,r={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};e.addListener("startrule",function(e){var i=e.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.elementName&&/(h[1-6])/i.test(o.elementName.toString())){for(f=0;f<o.modifiers.length;f++)if(o.modifiers[f].type=="pseudo"){u=!0;break}u||(r[RegExp.$1]++,r[RegExp.$1]>1&&t.report("Heading ("+o.elementName+") has already been defined.",o.line,o.col,n))}}}),e.addListener("endstylesheet",function(e){var i,s=[];for(i in r)r.hasOwnProperty(i)&&r[i]>1&&s.push(r[i]+" "+i+"s");s.length&&t.rollupWarn("You have "+s.join(", ")+" defined in this stylesheet.",n)})}}),CSSLint.addRule({id:"universal-selector",name:"Disallow universal selector",desc:"The universal selector (*) is known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(e){var r=e.selectors,i,s,o,u,a,f;for(u=0;u<r.length;u++)i=r[u],s=i.parts[i.parts.length-1],s.elementName=="*"&&t.report(n.desc,s.line,s.col,n)})}}),CSSLint.addRule({id:"unqualified-attributes",name:"Disallow unqualified attribute selectors",desc:"Unqualified attribute selectors are known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type=="attribute"&&(!o.elementName||o.elementName=="*")&&t.report(n.desc,o.line,o.col,n)}})}}),CSSLint.addRule({id:"vendor-prefix",name:"Require standard property with vendor prefix",desc:"When using a vendor-prefixed property, make sure to include the standard one.",browsers:"All",init:function(e,t){function n(){s={},o=1}function r(e){var n,r,o,a,f,l,c=[];for(n in s)u[n]&&c.push({actual:n,needed:u[n]});for(r=0,o=c.length;r<o;r++)f=c[r].needed,l=c[r].actual,s[f]?s[f][0].pos<s[l][0].pos&&t.report("Standard property '"+f+"' should come after vendor-prefixed property '"+l+"'.",s[l][0].name.line,s[l][0].name.col,i):t.report("Missing standard property '"+f+"' to go along with '"+l+"'.",s[l][0].name.line,s[l][0].name.col,i)}var i=this,s,o,u={"-webkit-border-radius":"border-radius","-webkit-border-top-left-radius":"border-top-left-radius","-webkit-border-top-right-radius":"border-top-right-radius","-webkit-border-bottom-left-radius":"border-bottom-left-radius","-webkit-border-bottom-right-radius":"border-bottom-right-radius","-o-border-radius":"border-radius","-o-border-top-left-radius":"border-top-left-radius","-o-border-top-right-radius":"border-top-right-radius","-o-border-bottom-left-radius":"border-bottom-left-radius","-o-border-bottom-right-radius":"border-bottom-right-radius","-moz-border-radius":"border-radius","-moz-border-radius-topleft":"border-top-left-radius","-moz-border-radius-topright":"border-top-right-radius","-moz-border-radius-bottomleft":"border-bottom-left-radius","-moz-border-radius-bottomright":"border-bottom-right-radius","-moz-column-count":"column-count","-webkit-column-count":"column-count","-moz-column-gap":"column-gap","-webkit-column-gap":"column-gap","-moz-column-rule":"column-rule","-webkit-column-rule":"column-rule","-moz-column-rule-style":"column-rule-style","-webkit-column-rule-style":"column-rule-style","-moz-column-rule-color":"column-rule-color","-webkit-column-rule-color":"column-rule-color","-moz-column-rule-width":"column-rule-width","-webkit-column-rule-width":"column-rule-width","-moz-column-width":"column-width","-webkit-column-width":"column-width","-webkit-column-span":"column-span","-webkit-columns":"columns","-moz-box-shadow":"box-shadow","-webkit-box-shadow":"box-shadow","-moz-transform":"transform","-webkit-transform":"transform","-o-transform":"transform","-ms-transform":"transform","-moz-transform-origin":"transform-origin","-webkit-transform-origin":"transform-origin","-o-transform-origin":"transform-origin","-ms-transform-origin":"transform-origin","-moz-box-sizing":"box-sizing","-webkit-box-sizing":"box-sizing","-moz-user-select":"user-select","-khtml-user-select":"user-select","-webkit-user-select":"user-select"};e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase();s[t]||(s[t]=[]),s[t].push({name:e.property,value:e.value,pos:o++})}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"zero-units",name:"Disallow units for 0 values",desc:"You don't need to specify units when a value is 0.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.value.parts,i=0,s=r.length;while(i<s)(r[i].units||r[i].type=="percentage")&&r[i].value===0&&r[i].type!="time"&&t.report("Values of 0 shouldn't have units specified.",r[i].line,r[i].col,n),i++})}}),function(){var e=function(e){return!e||e.constructor!==String?"":e.replace(/[\"&><]/g,function(e){switch(e){case'"':return"&quot;";case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;"}})};CSSLint.addFormatter({id:"checkstyle-xml",name:"Checkstyle XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><checkstyle>'},endFormat:function(){return"</checkstyle>"},readError:function(t,n){return'<file name="'+e(t)+'"><error line="0" column="0" severty="error" message="'+e(n)+'"></error></file>'},formatResults:function(t,n,r){var i=t.messages,s=[],o=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""};return i.length>0&&(s.push('<file name="'+n+'">'),CSSLint.Util.forEach(i,function(t,n){t.rollup||s.push('<error line="'+t.line+'" column="'+t.col+'" severity="'+t.type+'"'+' message="'+e(t.message)+'" source="'+o(t.rule)+'"/>')}),s.push("</file>")),s.join("")}})}(),CSSLint.addFormatter({id:"compact",name:"Compact, 'porcelain' format",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};var s=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};return r.length===0?n.quiet?"":t+": Lint Free!":(CSSLint.Util.forEach(r,function(e,n){e.rollup?i+=t+": "+s(e.type)+" - "+e.message+"\n":i+=t+": "+"line "+e.line+", col "+e.col+", "+s(e.type)+" - "+e.message+"\n"}),i)}}),CSSLint.addFormatter({id:"csslint-xml",name:"CSSLint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><csslint>'},endFormat:function(){return"</csslint>"},formatResults:function(e,t,n){var r=e.messages,i=[],s=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return r.length>0&&(i.push('<file name="'+t+'">'),CSSLint.Util.forEach(r,function(e,t){e.rollup?i.push('<issue severity="'+e.type+'" reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>'):i.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>')}),i.push("</file>")),i.join("")}}),CSSLint.addFormatter({id:"junit-xml",name:"JUNIT XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><testsuites>'},endFormat:function(){return"</testsuites>"},formatResults:function(e,t,n){var r=e.messages,i=[],s={error:0,failure:0},o=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""},u=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return r.length>0&&(r.forEach(function(e,t){var n=e.type==="warning"?"error":e.type;e.rollup||(i.push('<testcase time="0" name="'+o(e.rule)+'">'),i.push("<"+n+' message="'+u(e.message)+'"><![CDATA['+e.line+":"+e.col+":"+u(e.evidence)+"]]></"+n+">"),i.push("</testcase>"),s[n]+=1)}),i.unshift('<testsuite time="0" tests="'+r.length+'" skipped="0" errors="'+s.error+'" failures="'+s.failure+'" package="net.csslint" name="'+t+'">'),i.push("</testsuite>")),i.join("")}}),CSSLint.addFormatter({id:"lint-xml",name:"Lint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><lint>'},endFormat:function(){return"</lint>"},formatResults:function(e,t,n){var r=e.messages,i=[],s=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return r.length>0&&(i.push('<file name="'+t+'">'),CSSLint.Util.forEach(r,function(e,t){e.rollup?i.push('<issue severity="'+e.type+'" reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>'):i.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>')}),i.push("</file>")),i.join("")}}),CSSLint.addFormatter({id:"text",name:"Plain Text",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};if(r.length===0)return n.quiet?"":"\n\ncsslint: No errors in "+t+".";i="\n\ncsslint: There are "+r.length+" problems in "+t+".";var s=t.lastIndexOf("/"),o=t;return s===-1&&(s=t.lastIndexOf("\\")),s>-1&&(o=t.substring(s+1)),CSSLint.Util.forEach(r,function(e,t){i=i+"\n\n"+o,e.rollup?(i+="\n"+(t+1)+": "+e.type,i+="\n"+e.message):(i+="\n"+(t+1)+": "+e.type+" at line "+e.line+", col "+e.col,i+="\n"+e.message,i+="\n"+e.evidence)}),i}}),exports.CSSLint=CSSLint})
 
assets/theme-mode/demo-functions.php CHANGED
@@ -54,6 +54,11 @@
54
  */
55
  # add_filter( 'ot_allow_unfiltered_html', '__return_false' );
56
 
 
 
 
 
 
57
  /**
58
  * OptionTree in Theme Mode
59
  */
54
  */
55
  # add_filter( 'ot_allow_unfiltered_html', '__return_false' );
56
 
57
+ /**
58
+ * Loads the meta boxes for post formats
59
+ */
60
+ # add_filter( 'ot_post_formats', '__return_true' );
61
+
62
  /**
63
  * OptionTree in Theme Mode
64
  */
assets/theme-mode/demo-theme-options.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Initialize the custom Theme Options.
4
  */
5
- add_action( 'admin_init', 'custom_theme_options' );
6
 
7
  /**
8
  * Build the custom settings & update OptionTree.
@@ -11,7 +11,11 @@ add_action( 'admin_init', 'custom_theme_options' );
11
  * @since 2.0
12
  */
13
  function custom_theme_options() {
14
-
 
 
 
 
15
  /**
16
  * Get a copy of the saved settings array.
17
  */
@@ -54,6 +58,36 @@ function custom_theme_options() {
54
  'condition' => '',
55
  'operator' => 'and'
56
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  array(
58
  'id' => 'demo_category_checkbox',
59
  'label' => __( 'Category Checkbox', 'theme-text-domain' ),
@@ -126,6 +160,21 @@ function custom_theme_options() {
126
  'condition' => '',
127
  'operator' => 'and'
128
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  array(
130
  'id' => 'demo_css',
131
  'label' => __( 'CSS', 'theme-text-domain' ),
@@ -203,6 +252,21 @@ function custom_theme_options() {
203
  'condition' => '',
204
  'operator' => 'and'
205
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  array(
207
  'id' => 'demo_gallery',
208
  'label' => __( 'Gallery', 'theme-text-domain' ),
@@ -233,6 +297,57 @@ function custom_theme_options() {
233
  'condition' => '',
234
  'operator' => 'and'
235
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  array(
237
  'id' => 'demo_list_item',
238
  'label' => __( 'List Item', 'theme-text-domain' ),
@@ -469,11 +584,11 @@ function custom_theme_options() {
469
  'operator' => 'and'
470
  ),
471
  array(
472
- 'id' => 'demo_tag_checkbox',
473
- 'label' => __( 'Tag Checkbox', 'theme-text-domain' ),
474
- 'desc' => __( 'The Tag Checkbox option type displays a list of tag IDs. It allows the user to check multiple tag IDs and will return that value as an array for use in a custom function or loop.', 'theme-text-domain' ),
475
  'std' => '',
476
- 'type' => 'tag-checkbox',
477
  'section' => 'option_types',
478
  'rows' => '',
479
  'post_type' => '',
@@ -484,11 +599,11 @@ function custom_theme_options() {
484
  'operator' => 'and'
485
  ),
486
  array(
487
- 'id' => 'demo_tag_select',
488
- 'label' => __( 'Tag Select', 'theme-text-domain' ),
489
- 'desc' => __( 'The Tag Select option type displays a list of tag IDs. It allows the user to select only one tag ID and will return that value for use in a custom function or loop.', 'theme-text-domain' ),
490
  'std' => '',
491
- 'type' => 'tag-select',
492
  'section' => 'option_types',
493
  'rows' => '',
494
  'post_type' => '',
@@ -499,11 +614,26 @@ function custom_theme_options() {
499
  'operator' => 'and'
500
  ),
501
  array(
502
- 'id' => 'demo_social_links',
503
- 'label' => __( 'Social Links', 'theme-text-domain' ),
504
- 'desc' => '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'theme-text-domain' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>',
505
  'std' => '',
506
- 'type' => 'social-links',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  'section' => 'option_types',
508
  'rows' => '',
509
  'post_type' => '',
@@ -674,4 +804,8 @@ function custom_theme_options() {
674
  update_option( ot_settings_id(), $custom_settings );
675
  }
676
 
 
 
 
 
677
  }
2
  /**
3
  * Initialize the custom Theme Options.
4
  */
5
+ add_action( 'init', 'custom_theme_options' );
6
 
7
  /**
8
  * Build the custom settings & update OptionTree.
11
  * @since 2.0
12
  */
13
  function custom_theme_options() {
14
+
15
+ /* OptionTree is not loaded yet, or this is not an admin request */
16
+ if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
17
+ return false;
18
+
19
  /**
20
  * Get a copy of the saved settings array.
21
  */
58
  'condition' => '',
59
  'operator' => 'and'
60
  ),
61
+ array(
62
+ 'id' => 'demo_border',
63
+ 'label' => __( 'Border', 'theme-text-domain' ),
64
+ 'desc' => __( 'The Border option type is used to set width, unit, style, and color values.', 'theme-text-domain' ),
65
+ 'std' => '',
66
+ 'type' => 'border',
67
+ 'section' => 'option_types',
68
+ 'rows' => '',
69
+ 'post_type' => '',
70
+ 'taxonomy' => '',
71
+ 'min_max_step'=> '',
72
+ 'class' => '',
73
+ 'condition' => '',
74
+ 'operator' => 'and'
75
+ ),
76
+ array(
77
+ 'id' => 'demo_box_shadow',
78
+ 'label' => __( 'Box Shadow', 'theme-text-domain' ),
79
+ 'desc' => sprintf( __( 'The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values.', 'theme-text-domain' ), '<code>inset</code>', '<code>offset-x</code>', '<code>offset-y</code>', '<code>blur-radius</code>', '<code>spread-radius</code>', '<code>color</code>' ),
80
+ 'std' => '',
81
+ 'type' => 'box-shadow',
82
+ 'section' => 'option_types',
83
+ 'rows' => '',
84
+ 'post_type' => '',
85
+ 'taxonomy' => '',
86
+ 'min_max_step'=> '',
87
+ 'class' => '',
88
+ 'condition' => '',
89
+ 'operator' => 'and'
90
+ ),
91
  array(
92
  'id' => 'demo_category_checkbox',
93
  'label' => __( 'Category Checkbox', 'theme-text-domain' ),
160
  'condition' => '',
161
  'operator' => 'and'
162
  ),
163
+ array(
164
+ 'id' => 'demo_colorpicker_opacity',
165
+ 'label' => __( 'Colorpicker Opacity', 'theme-text-domain' ),
166
+ 'desc' => sprintf( __( 'The Colorpicker Opacity option type saves a hexadecimal color code with an opacity value from %s to %s in increments of %s. Though the value is saved as hexadecimal, if used within the CSS option type the color and opacity values will be converted into a valid RGBA CSS value.', 'theme-text-domain' ), '<code>0</code>', '<code>1</code>', '<code>0.01</code>' ),
167
+ 'std' => '',
168
+ 'type' => 'colorpicker-opacity',
169
+ 'section' => 'option_types',
170
+ 'rows' => '',
171
+ 'post_type' => '',
172
+ 'taxonomy' => '',
173
+ 'min_max_step'=> '',
174
+ 'class' => '',
175
+ 'condition' => '',
176
+ 'operator' => 'and'
177
+ ),
178
  array(
179
  'id' => 'demo_css',
180
  'label' => __( 'CSS', 'theme-text-domain' ),
252
  'condition' => '',
253
  'operator' => 'and'
254
  ),
255
+ array(
256
+ 'id' => 'demo_dimension',
257
+ 'label' => __( 'Dimension', 'theme-text-domain' ),
258
+ 'desc' => __( 'The Dimension option type is used to set width and height values.', 'theme-text-domain' ),
259
+ 'std' => '',
260
+ 'type' => 'dimension',
261
+ 'section' => 'option_types',
262
+ 'rows' => '',
263
+ 'post_type' => '',
264
+ 'taxonomy' => '',
265
+ 'min_max_step'=> '',
266
+ 'class' => '',
267
+ 'condition' => '',
268
+ 'operator' => 'and'
269
+ ),
270
  array(
271
  'id' => 'demo_gallery',
272
  'label' => __( 'Gallery', 'theme-text-domain' ),
297
  'condition' => '',
298
  'operator' => 'and'
299
  ),
300
+ array(
301
+ 'id' => 'demo_google_fonts',
302
+ 'label' => __( 'Google Fonts', 'theme-text-domain' ),
303
+ 'desc' => sprintf( __( 'The Google Fonts option type will dynamically enqueue any number of Google Web Fonts into the document %1$s. As well, once the option has been saved each font family will automatically be inserted into the %2$s array for the Typography option type. You can further modify the font stack by using the %3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s parameter is being passed from %7$s, so it will be the ID of a Typography option type. This will allow you to add additional web safe fonts to individual font families on an as-need basis.', 'theme-text-domain' ), '<code>HEAD</code>', '<code>font-family</code>', '<code>ot_google_font_stack</code>', '<code>$font_stack</code>', '<code>$family</code>', '<code>$field_id</code>', '<code>ot_recognized_font_families</code>' ),
304
+ 'std' => array(
305
+ array(
306
+ 'family' => 'opensans',
307
+ 'variants' => array( '300', '300italic', 'regular', 'italic', '600', '600italic' ),
308
+ 'subsets' => array( 'latin' )
309
+ )
310
+ ),
311
+ 'type' => 'google-fonts',
312
+ 'section' => 'option_types',
313
+ 'rows' => '',
314
+ 'post_type' => '',
315
+ 'taxonomy' => '',
316
+ 'min_max_step'=> '',
317
+ 'class' => '',
318
+ 'condition' => '',
319
+ 'operator' => 'and'
320
+ ),
321
+ array(
322
+ 'id' => 'demo_javascript',
323
+ 'label' => __( 'JavaScript', 'theme-text-domain' ),
324
+ 'desc' => '<p>' . sprintf( __( 'The JavaScript option type is a textarea that uses the %s code editor to highlight your JavaScript and display errors as you type.', 'theme-text-domain' ), '<code>ace.js</code>' ) . '</p>',
325
+ 'std' => '',
326
+ 'type' => 'javascript',
327
+ 'section' => 'option_types',
328
+ 'rows' => '20',
329
+ 'post_type' => '',
330
+ 'taxonomy' => '',
331
+ 'min_max_step'=> '',
332
+ 'class' => '',
333
+ 'condition' => '',
334
+ 'operator' => 'and'
335
+ ),
336
+ array(
337
+ 'id' => 'demo_link_color',
338
+ 'label' => __( 'Link Color', 'theme-text-domain' ),
339
+ 'desc' => __( 'The Link Color option type is used to set all link color states.', 'theme-text-domain' ),
340
+ 'std' => '',
341
+ 'type' => 'link-color',
342
+ 'section' => 'option_types',
343
+ 'rows' => '',
344
+ 'post_type' => '',
345
+ 'taxonomy' => '',
346
+ 'min_max_step'=> '',
347
+ 'class' => '',
348
+ 'condition' => '',
349
+ 'operator' => 'and'
350
+ ),
351
  array(
352
  'id' => 'demo_list_item',
353
  'label' => __( 'List Item', 'theme-text-domain' ),
584
  'operator' => 'and'
585
  ),
586
  array(
587
+ 'id' => 'demo_social_links',
588
+ 'label' => __( 'Social Links', 'theme-text-domain' ),
589
+ 'desc' => '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'theme-text-domain' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>',
590
  'std' => '',
591
+ 'type' => 'social-links',
592
  'section' => 'option_types',
593
  'rows' => '',
594
  'post_type' => '',
599
  'operator' => 'and'
600
  ),
601
  array(
602
+ 'id' => 'demo_spacing',
603
+ 'label' => __( 'Spacing', 'theme-text-domain' ),
604
+ 'desc' => __( 'The Spacing option type is used to set spacing values such as padding or margin in the form of top, right, bottom, and left.', 'theme-text-domain' ),
605
  'std' => '',
606
+ 'type' => 'spacing',
607
  'section' => 'option_types',
608
  'rows' => '',
609
  'post_type' => '',
614
  'operator' => 'and'
615
  ),
616
  array(
617
+ 'id' => 'demo_tag_checkbox',
618
+ 'label' => __( 'Tag Checkbox', 'theme-text-domain' ),
619
+ 'desc' => __( 'The Tag Checkbox option type displays a list of tag IDs. It allows the user to check multiple tag IDs and will return that value as an array for use in a custom function or loop.', 'theme-text-domain' ),
620
  'std' => '',
621
+ 'type' => 'tag-checkbox',
622
+ 'section' => 'option_types',
623
+ 'rows' => '',
624
+ 'post_type' => '',
625
+ 'taxonomy' => '',
626
+ 'min_max_step'=> '',
627
+ 'class' => '',
628
+ 'condition' => '',
629
+ 'operator' => 'and'
630
+ ),
631
+ array(
632
+ 'id' => 'demo_tag_select',
633
+ 'label' => __( 'Tag Select', 'theme-text-domain' ),
634
+ 'desc' => __( 'The Tag Select option type displays a list of tag IDs. It allows the user to select only one tag ID and will return that value for use in a custom function or loop.', 'theme-text-domain' ),
635
+ 'std' => '',
636
+ 'type' => 'tag-select',
637
  'section' => 'option_types',
638
  'rows' => '',
639
  'post_type' => '',
804
  update_option( ot_settings_id(), $custom_settings );
805
  }
806
 
807
+ /* Lets OptionTree know the UI Builder is being overridden */
808
+ global $ot_has_custom_theme_options;
809
+ $ot_has_custom_theme_options = true;
810
+
811
  }
includes/ot-cleanup-api.php CHANGED
@@ -27,6 +27,9 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
27
  function __construct() {
28
  if ( ! is_admin() )
29
  return;
 
 
 
30
 
31
  // Maybe Clean up OptionTree
32
  add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
@@ -36,6 +39,20 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
36
 
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  /**
40
  * Check if OptionTree needs to be cleaned up from a previous install.
41
  *
@@ -52,22 +69,22 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
52
 
53
  $ot_maybe_cleanup_posts = count( $posts ) > 1;
54
  $ot_maybe_cleanup_table = count( $table ) == 1;
 
 
 
 
 
 
55
 
56
  if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
57
 
58
- add_action( 'admin_notices', array( $this, 'cleanup_notice' ) );
 
 
 
59
 
60
  }
61
 
62
- if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'hide-page' ) ) {
63
- update_option( 'ot_hide_cleanup', true );
64
- wp_redirect( 'themes.php?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
65
- exit;
66
- }
67
-
68
- if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table || get_option( 'ot_hide_cleanup', false ) == false )
69
- add_theme_page( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
70
-
71
  }
72
 
73
  /**
@@ -84,7 +101,7 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
84
  echo '<div class="update-nag">' . sprintf( __( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ) ) ) . '</div>';
85
 
86
  }
87
-
88
  /**
89
  * Adds a Tools sub page to clean up the database with.
90
  *
@@ -95,68 +112,63 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
95
  */
96
  public function options_page() {
97
  global $wpdb, $table_prefix, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
98
-
99
- // If we are here this option should not be true.
100
- update_option( 'ot_hide_cleanup', false );
101
-
102
  // Option ID
103
  $option_id = 'ot_media_post_ID';
104
-
105
  // Get the media post ID
106
  $post_ID = get_option( $option_id, false );
107
-
108
  // Zero loop count
109
  $count = 0;
110
-
111
  // Check for safe mode
112
  $safe_mode = ini_get( 'safe_mode' );
113
-
114
  echo '<div class="wrap">';
115
-
116
  echo '<h2>' . apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>';
117
-
118
- if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
119
-
120
  if ( $ot_maybe_cleanup_posts ) {
121
-
122
  $posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" );
123
-
124
  echo '<h3>' . __( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
125
-
126
  echo '<p>' . sprintf( __( 'There are currently %s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %s media post objects cluttering up your %s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' ), '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>';
127
-
128
  echo '<p>' . sprintf( __( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
129
-
130
  echo '<p><strong>' . __( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
131
-
132
  echo $safe_mode ? '<p>' . sprintf( __( '%s Your server is running in safe mode. Which means this page will automatically reload after deleting %s posts, you can filter this number using %s if your server is having trouble processing that many at one time.', 'option-tree' ), '<strong>Note</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : '';
133
-
134
  echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . __( 'Consolidate Posts', 'option-tree' ) . '</a></p>';
135
-
136
  if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) {
137
-
138
  if ( $post_ID === false || empty( $post_ID ) ) {
139
  $post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
140
-
141
  // Add to the DB
142
  if ( $post_ID !== null )
143
  update_option( $option_id, $post_ID );
144
-
145
  }
146
-
147
  // Do pre consolidation action to increase timeout.
148
  do_action( 'ot_pre_consolidate_posts' );
149
 
150
  // Loop over posts
151
  foreach( $posts as $post ) {
152
-
153
  // Don't destroy the correct post.
154
  if ( $post_ID == $post->ID )
155
  continue;
156
-
157
  // Update count
158
  $count++;
159
-
160
  // Reload script in safe mode
161
  if ( $safe_mode && $count > apply_filters( 'ot_consolidate_posts_reload', 500 ) ) {
162
  echo '<br />' . __( 'Reloading...', 'option-tree' );
@@ -169,15 +181,15 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
169
  </script>';
170
  break;
171
  }
172
-
173
  // Get the attachements
174
  $attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
175
-
176
  // Update the attachments parent ID
177
  if ( ! empty( $attachments ) ) {
178
-
179
  echo 'Updating Attachments parent ID for <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt>.<br />';
180
-
181
  foreach( $attachments as $attachment_id => $attachment ) {
182
  wp_update_post(
183
  array(
@@ -186,17 +198,17 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
186
  )
187
  );
188
  }
189
-
190
  }
191
-
192
  // Delete post
193
  echo 'Deleting <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt><br />';
194
  wp_delete_post( $post->ID, true );
195
-
196
  }
197
-
198
  echo '<br />' . __( 'Clean up script has completed, the page will now reload...', 'option-tree' );
199
-
200
  echo '
201
  <script>
202
  setTimeout( ot_script_reload, 3000 )
@@ -204,33 +216,33 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
204
  window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
205
  }
206
  </script>';
207
-
208
  }
209
-
210
  }
211
-
212
  if ( $ot_maybe_cleanup_table ) {
213
-
214
  $table_name = $table_prefix . 'option_tree';
215
-
216
  echo $ot_maybe_cleanup_posts ? '<hr />' : '';
217
-
218
  echo '<h3>' . __( 'Outdated Table', 'option-tree' ) . '</h3>';
219
-
220
  echo '<p>' . sprintf( __( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
221
-
222
  echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) . '">' . __( 'Drop Table', 'option-tree' ) . '</a></p>';
223
-
224
  if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) {
225
 
226
  echo '<p>' . sprintf( __( 'Deleting the outdated and unused %s table...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
227
-
228
  $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
229
-
230
  if ( count( $wpdb->get_results( "SHOW TABLES LIKE '{$table_prefix}option_tree'" ) ) == 0 ) {
231
-
232
  echo '<p>' . sprintf( __( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
233
-
234
  echo '
235
  <script>
236
  setTimeout( ot_script_reload, 3000 )
@@ -238,31 +250,21 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
238
  window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
239
  }
240
  </script>';
241
-
242
  } else {
243
-
244
  echo '<p>' . sprintf( __( 'Something went wrong. The %s table was not deleted.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
245
-
246
  }
247
-
248
  }
249
-
250
  }
251
-
252
- } else {
253
-
254
- echo '<h3>' . __( 'Congratulations! You have a clean install.', 'option-tree' ) . '</h3>';
255
-
256
- echo '<p>' . __( 'Your version of OptionTree does not have any outdated data. If there was outdated data, you would be presented with options to clean it up.', 'option-tree' ) . '</p>';
257
-
258
- echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'hide-page' ) . '">' . __( 'Hide This Page', 'option-tree' ) . '</a></p>';
259
-
260
- }
261
-
262
  echo '</div>';
263
-
264
  }
265
-
266
  /**
267
  * Increase PHP timeout.
268
  *
27
  function __construct() {
28
  if ( ! is_admin() )
29
  return;
30
+
31
+ // Load styles
32
+ add_action( 'admin_head', array( $this, 'styles' ), 1 );
33
 
34
  // Maybe Clean up OptionTree
35
  add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
39
 
40
  }
41
 
42
+ /**
43
+ * Adds the cleanup styles to the admin head
44
+ *
45
+ * @return string
46
+ *
47
+ * @access public
48
+ * @since 2.5.0
49
+ */
50
+ function styles() {
51
+
52
+ echo '<style>#toplevel_page_ot-cleanup{display:none;}</style>';
53
+
54
+ }
55
+
56
  /**
57
  * Check if OptionTree needs to be cleaned up from a previous install.
58
  *
69
 
70
  $ot_maybe_cleanup_posts = count( $posts ) > 1;
71
  $ot_maybe_cleanup_table = count( $table ) == 1;
72
+ $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
73
+
74
+ if ( ! $ot_maybe_cleanup_posts && ! $ot_maybe_cleanup_table && $page == 'ot-cleanup' ) {
75
+ wp_redirect( apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
76
+ exit;
77
+ }
78
 
79
  if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
80
 
81
+ if ( $page != 'ot-cleanup' )
82
+ add_action( 'admin_notices', array( $this, 'cleanup_notice' ) );
83
+
84
+ add_menu_page( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
85
 
86
  }
87
 
 
 
 
 
 
 
 
 
 
88
  }
89
 
90
  /**
101
  echo '<div class="update-nag">' . sprintf( __( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ) ) ) . '</div>';
102
 
103
  }
104
+
105
  /**
106
  * Adds a Tools sub page to clean up the database with.
107
  *
112
  */
113
  public function options_page() {
114
  global $wpdb, $table_prefix, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
115
+
 
 
 
116
  // Option ID
117
  $option_id = 'ot_media_post_ID';
118
+
119
  // Get the media post ID
120
  $post_ID = get_option( $option_id, false );
121
+
122
  // Zero loop count
123
  $count = 0;
124
+
125
  // Check for safe mode
126
  $safe_mode = ini_get( 'safe_mode' );
127
+
128
  echo '<div class="wrap">';
129
+
130
  echo '<h2>' . apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>';
131
+
 
 
132
  if ( $ot_maybe_cleanup_posts ) {
133
+
134
  $posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" );
135
+
136
  echo '<h3>' . __( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
137
+
138
  echo '<p>' . sprintf( __( 'There are currently %s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %s media post objects cluttering up your %s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' ), '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>';
139
+
140
  echo '<p>' . sprintf( __( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
141
+
142
  echo '<p><strong>' . __( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
143
+
144
  echo $safe_mode ? '<p>' . sprintf( __( '%s Your server is running in safe mode. Which means this page will automatically reload after deleting %s posts, you can filter this number using %s if your server is having trouble processing that many at one time.', 'option-tree' ), '<strong>Note</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : '';
145
+
146
  echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . __( 'Consolidate Posts', 'option-tree' ) . '</a></p>';
147
+
148
  if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) {
149
+
150
  if ( $post_ID === false || empty( $post_ID ) ) {
151
  $post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
152
+
153
  // Add to the DB
154
  if ( $post_ID !== null )
155
  update_option( $option_id, $post_ID );
156
+
157
  }
158
+
159
  // Do pre consolidation action to increase timeout.
160
  do_action( 'ot_pre_consolidate_posts' );
161
 
162
  // Loop over posts
163
  foreach( $posts as $post ) {
164
+
165
  // Don't destroy the correct post.
166
  if ( $post_ID == $post->ID )
167
  continue;
168
+
169
  // Update count
170
  $count++;
171
+
172
  // Reload script in safe mode
173
  if ( $safe_mode && $count > apply_filters( 'ot_consolidate_posts_reload', 500 ) ) {
174
  echo '<br />' . __( 'Reloading...', 'option-tree' );
181
  </script>';
182
  break;
183
  }
184
+
185
  // Get the attachements
186
  $attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
187
+
188
  // Update the attachments parent ID
189
  if ( ! empty( $attachments ) ) {
190
+
191
  echo 'Updating Attachments parent ID for <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt>.<br />';
192
+
193
  foreach( $attachments as $attachment_id => $attachment ) {
194
  wp_update_post(
195
  array(
198
  )
199
  );
200
  }
201
+
202
  }
203
+
204
  // Delete post
205
  echo 'Deleting <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt><br />';
206
  wp_delete_post( $post->ID, true );
207
+
208
  }
209
+
210
  echo '<br />' . __( 'Clean up script has completed, the page will now reload...', 'option-tree' );
211
+
212
  echo '
213
  <script>
214
  setTimeout( ot_script_reload, 3000 )
216
  window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
217
  }
218
  </script>';
219
+
220
  }
221
+
222
  }
223
+
224
  if ( $ot_maybe_cleanup_table ) {
225
+
226
  $table_name = $table_prefix . 'option_tree';
227
+
228
  echo $ot_maybe_cleanup_posts ? '<hr />' : '';
229
+
230
  echo '<h3>' . __( 'Outdated Table', 'option-tree' ) . '</h3>';
231
+
232
  echo '<p>' . sprintf( __( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
233
+
234
  echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) . '">' . __( 'Drop Table', 'option-tree' ) . '</a></p>';
235
+
236
  if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) {
237
 
238
  echo '<p>' . sprintf( __( 'Deleting the outdated and unused %s table...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
239
+
240
  $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
241
+
242
  if ( count( $wpdb->get_results( "SHOW TABLES LIKE '{$table_prefix}option_tree'" ) ) == 0 ) {
243
+
244
  echo '<p>' . sprintf( __( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
245
+
246
  echo '
247
  <script>
248
  setTimeout( ot_script_reload, 3000 )
250
  window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
251
  }
252
  </script>';
253
+
254
  } else {
255
+
256
  echo '<p>' . sprintf( __( 'Something went wrong. The %s table was not deleted.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
257
+
258
  }
259
+
260
  }
261
+
262
  }
263
+
 
 
 
 
 
 
 
 
 
 
264
  echo '</div>';
265
+
266
  }
267
+
268
  /**
269
  * Increase PHP timeout.
270
  *
includes/ot-functions-admin.php CHANGED
@@ -90,7 +90,7 @@ if ( ! function_exists( 'ot_register_settings_page' ) ) {
90
  global $ot_has_custom_theme_options;
91
 
92
  // Display UI Builder admin notice
93
- if ( OT_SHOW_OPTIONS_UI == true && isset( $_REQUEST['page'] ) && $_REQUEST['page'] == 'ot-settings' && ( $ot_has_custom_theme_options == true || has_action( 'admin_init', 'custom_theme_options' ) ) ) {
94
 
95
  function ot_has_custom_theme_options() {
96
 
@@ -488,6 +488,73 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
488
  if ( ! isset( $has_value ) ) {
489
  $input = '';
490
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
491
 
492
  } else if ( 'colorpicker' == $type ) {
493
 
@@ -496,18 +563,95 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
496
 
497
  $input = '';
498
 
499
- add_settings_error( 'option-tree', 'invalid_hex', __( 'The Colorpicker only allows valid hexadecimal values.', 'option-tree' ), 'error' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
 
 
 
 
501
  }
502
 
503
- } else if ( in_array( $type, array( 'css', 'text', 'textarea', 'textarea-simple' ) ) ) {
504
 
505
  if ( ! current_user_can( 'unfiltered_html' ) && OT_ALLOW_UNFILTERED_HTML == false ) {
506
 
507
  $input = wp_kses_post( $input );
508
 
509
  }
510
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  } else if ( 'measurement' == $type ) {
512
 
513
  $input[0] = sanitize_text_field( $input[0] );
@@ -517,6 +661,35 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
517
  $input = '';
518
  }
519
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
  } else if ( 'typography' == $type && isset( $input['font-color'] ) ) {
521
 
522
  $input['font-color'] = ot_validate_setting( $input['font-color'], 'colorpicker', $field_id );
@@ -535,7 +708,7 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
535
 
536
  } else if ( 'upload' == $type ) {
537
 
538
- $input = sanitize_text_field( $input );
539
 
540
  } else if ( 'gallery' == $type ) {
541
 
@@ -598,6 +771,25 @@ if ( ! function_exists( 'ot_admin_styles' ) ) {
598
  /* Remove styles added by the Easy Digital Downloads plugin */
599
  if ( isset( $post->post_type ) && $post->post_type == 'post' )
600
  wp_dequeue_style( 'jquery-ui-css' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
601
 
602
  /* execute styles after actions */
603
  do_action( 'ot_admin_styles_after' );
@@ -643,14 +835,14 @@ if ( ! function_exists( 'ot_admin_scripts' ) ) {
643
  wp_enqueue_script( 'wp-color-picker' );
644
 
645
  /* Load Ace Editor for CSS Editing */
646
- wp_enqueue_script( 'ace-editor', OT_URL . 'assets/js/vendor/ace/ace.js', null, OT_VERSION );
647
 
648
  /* load jQuery UI timepicker addon */
649
  wp_enqueue_script( 'jquery-ui-timepicker', OT_URL . 'assets/js/vendor/jquery/jquery-ui-timepicker.js', array( 'jquery', 'jquery-ui-slider', 'jquery-ui-datepicker' ), '1.4.3' );
650
 
651
  /* load all the required scripts */
652
  wp_enqueue_script( 'ot-admin-js', OT_URL . 'assets/js/ot-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'jquery-ui-slider', 'wp-color-picker', 'ace-editor', 'jquery-ui-datepicker', 'jquery-ui-timepicker' ), OT_VERSION );
653
-
654
  /* create localized JS array */
655
  $localized_array = array(
656
  'ajax' => admin_url( 'admin-ajax.php' ),
@@ -735,7 +927,8 @@ if ( ! function_exists( 'ot_create_media_post' ) ) {
735
 
736
  function ot_create_media_post() {
737
 
738
- register_post_type( 'option-tree', array(
 
739
  'labels' => array( 'name' => __( 'Option Tree', 'option-tree' ) ),
740
  'public' => false,
741
  'show_ui' => false,
@@ -821,7 +1014,7 @@ if ( ! function_exists( 'ot_default_settings' ) ) {
821
 
822
  /* textarea rows */
823
  $rows = '';
824
- if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'textarea' ) ) ) {
825
  if ( (int) $setting->item_options > 0 ) {
826
  $rows = (int) $setting->item_options;
827
  } else {
@@ -1314,7 +1507,7 @@ if ( ! function_exists( 'ot_import_xml' ) ) {
1314
 
1315
  /* textarea rows */
1316
  $rows = '';
1317
- if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'textarea' ) ) ) {
1318
  if ( (int) $value->item_options > 0 ) {
1319
  $rows = (int) $value->item_options;
1320
  } else {
@@ -1601,15 +1794,15 @@ if ( ! function_exists( 'ot_export_php_settings_array' ) ) {
1601
  /**
1602
  * Initialize the custom theme options.
1603
  */
1604
- add_action( 'admin_init', 'custom_theme_options' );
1605
 
1606
  /**
1607
  * Build the custom settings & update OptionTree.
1608
  */
1609
  function custom_theme_options() {
1610
 
1611
- /* OptionTree is not loaded yet */
1612
- if ( ! function_exists( 'ot_settings_id' ) )
1613
  return false;
1614
 
1615
  /**
@@ -2223,16 +2416,23 @@ if ( ! function_exists( 'ot_option_types_array' ) ) {
2223
 
2224
  return apply_filters( 'ot_option_types_array', array(
2225
  'background' => __('Background', 'option-tree'),
 
 
2226
  'category-checkbox' => __('Category Checkbox', 'option-tree'),
2227
  'category-select' => __('Category Select', 'option-tree'),
2228
  'checkbox' => __('Checkbox', 'option-tree'),
2229
- 'colorpicker' => __('Color Picker', 'option-tree'),
 
2230
  'css' => __('CSS', 'option-tree'),
2231
  'custom-post-type-checkbox' => __('Custom Post Type Checkbox', 'option-tree'),
2232
  'custom-post-type-select' => __('Custom Post Type Select', 'option-tree'),
2233
  'date-picker' => __('Date Picker', 'option-tree'),
2234
  'date-time-picker' => __('Date Time Picker', 'option-tree'),
 
2235
  'gallery' => __('Gallery', 'option-tree'),
 
 
 
2236
  'list-item' => __('List Item', 'option-tree'),
2237
  'measurement' => __('Measurement', 'option-tree'),
2238
  'numeric-slider' => __('Numeric Slider', 'option-tree'),
@@ -2247,6 +2447,7 @@ if ( ! function_exists( 'ot_option_types_array' ) ) {
2247
  'sidebar-select' => __('Sidebar Select', 'option-tree'),
2248
  'slider' => __('Slider', 'option-tree'),
2249
  'social-links' => __('Social Links', 'option-tree'),
 
2250
  'tab' => __('Tab', 'option-tree'),
2251
  'tag-checkbox' => __('Tag Checkbox', 'option-tree'),
2252
  'tag-select' => __('Tag Select', 'option-tree'),
@@ -2315,6 +2516,38 @@ if ( ! function_exists( 'ot_map_old_option_types' ) ) {
2315
  }
2316
  }
2317
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2318
  /**
2319
  * Recognized font families
2320
  *
@@ -2334,8 +2567,8 @@ if ( ! function_exists( 'ot_map_old_option_types' ) ) {
2334
  if ( ! function_exists( 'ot_recognized_font_families' ) ) {
2335
 
2336
  function ot_recognized_font_families( $field_id = '' ) {
2337
-
2338
- return apply_filters( 'ot_recognized_font_families', array(
2339
  'arial' => 'Arial',
2340
  'georgia' => 'Georgia',
2341
  'helvetica' => 'Helvetica',
@@ -2344,7 +2577,9 @@ if ( ! function_exists( 'ot_recognized_font_families' ) ) {
2344
  'times' => '"Times New Roman", sans-serif',
2345
  'trebuchet' => 'Trebuchet',
2346
  'verdana' => 'Verdana'
2347
- ), $field_id );
 
 
2348
 
2349
  }
2350
 
@@ -2701,6 +2936,209 @@ if ( ! function_exists( 'ot_recognized_background_position' ) ) {
2701
 
2702
  }
2703
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2704
  /**
2705
  * Measurement Units
2706
  *
@@ -2994,19 +3432,32 @@ if ( ! function_exists( 'ot_insert_css_with_markers' ) ) {
2994
 
2995
  /* path to the dynamic.css file */
2996
  $filepath = get_stylesheet_directory() . '/dynamic.css';
 
 
 
 
 
 
2997
 
2998
  /* allow filter on path */
2999
  $filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
3000
-
3001
  /* grab a copy of the paths array */
3002
  $ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
3003
-
 
 
 
3004
  /* set the path for this field */
3005
  $ot_css_file_paths[$field_id] = $filepath;
3006
-
3007
  /* update the paths */
3008
- update_option( 'ot_css_file_paths', $ot_css_file_paths );
3009
-
 
 
 
 
3010
  /* insert CSS into file */
3011
  if ( file_exists( $filepath ) ) {
3012
 
@@ -3052,6 +3503,78 @@ if ( ! function_exists( 'ot_insert_css_with_markers' ) ) {
3052
 
3053
  /* set $value with measurement properties */
3054
  $value = $value[0].$value[1];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3055
 
3056
  /* typography */
3057
  } else if ( ot_array_keys_exists( $value, array( 'font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform' ) ) ) {
@@ -3500,7 +4023,7 @@ if ( ! function_exists( 'ot_settings_view' ) ) {
3500
  $std = maybe_serialize( $std );
3501
  }
3502
 
3503
- if ( in_array( $type, array( 'textarea', 'textarea-simple', 'css' ) ) ) {
3504
  $std_form_element = '<textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]">' . esc_html( $std ) . '</textarea>';
3505
  } else {
3506
  $std_form_element = '<input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]" value="' . esc_attr( $std ) . '" class="widefat option-tree-ui-input" autocomplete="off" />';
@@ -4562,6 +5085,177 @@ function ot_filter_std_value( $value = '', $std = '' ) {
4562
 
4563
  }
4564
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4565
  /**
4566
  * Helper function to register a WPML string
4567
  *
@@ -4954,5 +5648,45 @@ if ( ! function_exists( 'ot_get_option_type_by_id' ) ) {
4954
 
4955
  }
4956
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4957
  /* End of file ot-functions-admin.php */
4958
- /* Location: ./includes/ot-functions-admin.php */
90
  global $ot_has_custom_theme_options;
91
 
92
  // Display UI Builder admin notice
93
+ if ( OT_SHOW_OPTIONS_UI == true && isset( $_REQUEST['page'] ) && $_REQUEST['page'] == 'ot-settings' && ( $ot_has_custom_theme_options == true || has_action( 'admin_init', 'custom_theme_options' ) || has_action( 'init', 'custom_theme_options' ) ) ) {
94
 
95
  function ot_has_custom_theme_options() {
96
 
488
  if ( ! isset( $has_value ) ) {
489
  $input = '';
490
  }
491
+
492
+ } else if ( 'border' == $type ) {
493
+
494
+ // Loop over array and set errors or unset key from array.
495
+ foreach( $input as $key => $value ) {
496
+
497
+ // Validate width
498
+ if ( $key == 'width' && ! empty( $value ) && ! is_numeric( $value ) ) {
499
+
500
+ $input[$key] = '0';
501
+
502
+ add_settings_error( 'option-tree', 'invalid_border_width', sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>width</code>', '<code>' . $field_id . '</code>' ), 'error' );
503
+
504
+ }
505
+
506
+ // Validate color
507
+ if ( $key == 'color' && ! empty( $value ) && 0 === preg_match( '/^#([a-f0-9]{6}|[a-f0-9]{3})$/i', $value ) ) {
508
+
509
+ $input[$key] = '';
510
+ $value = '';
511
+
512
+ add_settings_error( 'option-tree', 'invalid_hex', __( 'The Colorpicker only allows valid hexadecimal values.', 'option-tree' ), 'error' );
513
+
514
+ }
515
+
516
+ // Unset keys with empty values.
517
+ if ( empty( $value ) ) {
518
+ unset( $input[$key] );
519
+ }
520
+
521
+ }
522
+
523
+ if ( empty( $input ) ) {
524
+ $input = '';
525
+ }
526
+
527
+ } else if ( 'box-shadow' == $type ) {
528
+
529
+ // Validate inset
530
+ $input['inset'] = isset( $input['inset'] ) ? 'inset' : '';
531
+
532
+ // Validate offset-x
533
+ $input['offset-x'] = ot_validate_setting( $input['offset-x'], 'text', $field_id );
534
+
535
+ // Validate offset-y
536
+ $input['offset-y'] = ot_validate_setting( $input['offset-y'], 'text', $field_id );
537
+
538
+ // Validate blur-radius
539
+ $input['blur-radius'] = ot_validate_setting( $input['blur-radius'], 'text', $field_id );
540
+
541
+ // Validate spread-radius
542
+ $input['spread-radius'] = ot_validate_setting( $input['spread-radius'], 'text', $field_id );
543
+
544
+ // Validate color
545
+ $input['color'] = ot_validate_setting( $input['color'], 'colorpicker', $field_id );
546
+
547
+ // Unset keys with empty values.
548
+ foreach( $input as $key => $value ) {
549
+ if ( empty( $value ) ) {
550
+ unset( $input[$key] );
551
+ }
552
+ }
553
+
554
+ // Set empty array to empty string.
555
+ if ( empty( $input ) ) {
556
+ $input = '';
557
+ }
558
 
559
  } else if ( 'colorpicker' == $type ) {
560
 
563
 
564
  $input = '';
565
 
566
+ add_settings_error( 'option-tree', 'invalid_hex', sprintf( __( 'The %s Colorpicker only allows valid hexadecimal values.', 'option-tree' ), '<code>' . $field_id . '</code>' ), 'error' );
567
+
568
+ }
569
+
570
+ } else if ( 'colorpicker-opacity' == $type ) {
571
+
572
+ // Validate color
573
+ $input['color'] = ot_validate_setting( $input['color'], 'colorpicker', $field_id );
574
+
575
+ // Unset keys with empty values.
576
+ foreach( $input as $key => $value ) {
577
+ if ( empty( $value ) ) {
578
+ unset( $input[$key] );
579
+ }
580
+ }
581
 
582
+ // Set empty array to empty string.
583
+ if ( empty( $input ) ) {
584
+ $input = '';
585
  }
586
 
587
+ } else if ( in_array( $type, array( 'css', 'javascript', 'text', 'textarea', 'textarea-simple' ) ) ) {
588
 
589
  if ( ! current_user_can( 'unfiltered_html' ) && OT_ALLOW_UNFILTERED_HTML == false ) {
590
 
591
  $input = wp_kses_post( $input );
592
 
593
  }
594
+
595
+ } else if ( 'dimension' == $type ) {
596
+
597
+ // Loop over array and set error keys or unset key from array.
598
+ foreach( $input as $key => $value ) {
599
+ if ( ! empty( $value ) && ! is_numeric( $value ) && $key !== 'unit' ) {
600
+ $errors[] = $key;
601
+ }
602
+ if ( empty( $value ) ) {
603
+ unset( $input[$key] );
604
+ }
605
+ }
606
+
607
+ /* return 0 & set error */
608
+ if ( isset( $errors ) ) {
609
+
610
+ foreach( $errors as $error ) {
611
+
612
+ $input[$error] = '0';
613
+
614
+ add_settings_error( 'option-tree', 'invalid_dimension_' . $error, sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>' . $error . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
615
+
616
+ }
617
+
618
+ }
619
+
620
+ if ( empty( $input ) ) {
621
+ $input = '';
622
+ }
623
+
624
+ } else if ( 'google-fonts' == $type ) {
625
+
626
+ unset($input['%key%']);
627
+
628
+ // Loop over array and check for values
629
+ if ( is_array( $input ) && ! empty( $input ) ) {
630
+ $input = array_values( $input );
631
+ }
632
+
633
+ // No value; set to empty
634
+ if ( empty( $input ) ) {
635
+ $input = '';
636
+ }
637
+
638
+ } else if ( 'link-color' == $type ) {
639
+
640
+ // Loop over array and check for values
641
+ if ( is_array( $input ) && ! empty( $input ) ) {
642
+ foreach( $input as $key => $value ) {
643
+ if ( ! empty( $value ) ) {
644
+ $input[$key] = ot_validate_setting( $input[$key], 'colorpicker', $field_id . '-' . $key );
645
+ $has_value = true;
646
+ }
647
+ }
648
+ }
649
+
650
+ // No value; set to empty
651
+ if ( ! isset( $has_value ) ) {
652
+ $input = '';
653
+ }
654
+
655
  } else if ( 'measurement' == $type ) {
656
 
657
  $input[0] = sanitize_text_field( $input[0] );
661
  $input = '';
662
  }
663
 
664
+ } else if ( 'spacing' == $type ) {
665
+
666
+ // Loop over array and set error keys or unset key from array.
667
+ foreach( $input as $key => $value ) {
668
+ if ( ! empty( $value ) && ! is_numeric( $value ) && $key !== 'unit' ) {
669
+ $errors[] = $key;
670
+ }
671
+ if ( empty( $value ) ) {
672
+ unset( $input[$key] );
673
+ }
674
+ }
675
+
676
+ /* return 0 & set error */
677
+ if ( isset( $errors ) ) {
678
+
679
+ foreach( $errors as $error ) {
680
+
681
+ $input[$error] = '0';
682
+
683
+ add_settings_error( 'option-tree', 'invalid_spacing_' . $error, sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>' . $error . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
684
+
685
+ }
686
+
687
+ }
688
+
689
+ if ( empty( $input ) ) {
690
+ $input = '';
691
+ }
692
+
693
  } else if ( 'typography' == $type && isset( $input['font-color'] ) ) {
694
 
695
  $input['font-color'] = ot_validate_setting( $input['font-color'], 'colorpicker', $field_id );
708
 
709
  } else if ( 'upload' == $type ) {
710
 
711
+ $input = esc_url_raw( $input );
712
 
713
  } else if ( 'gallery' == $type ) {
714
 
771
  /* Remove styles added by the Easy Digital Downloads plugin */
772
  if ( isset( $post->post_type ) && $post->post_type == 'post' )
773
  wp_dequeue_style( 'jquery-ui-css' );
774
+
775
+ /**
776
+ * Filter the screen IDs used to dequeue `jquery-ui-css`.
777
+ *
778
+ * @since 2.5.0
779
+ *
780
+ * @param array $screen_ids An array of screen IDs.
781
+ */
782
+ $screen_ids = apply_filters( 'ot_dequeue_jquery_ui_css_screen_ids', array(
783
+ 'toplevel_page_ot-settings',
784
+ 'optiontree_page_ot-documentation',
785
+ 'appearance_page_ot-theme-options'
786
+ ) );
787
+
788
+ /* Remove styles added by the WP Review plugin and any custom pages added through filtering */
789
+ if ( in_array( get_current_screen()->id, $screen_ids ) ) {
790
+ wp_dequeue_style( 'plugin_name-admin-ui-css' );
791
+ wp_dequeue_style( 'jquery-ui-css' );
792
+ }
793
 
794
  /* execute styles after actions */
795
  do_action( 'ot_admin_styles_after' );
835
  wp_enqueue_script( 'wp-color-picker' );
836
 
837
  /* Load Ace Editor for CSS Editing */
838
+ wp_enqueue_script( 'ace-editor', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js', null, '1.1.3' );
839
 
840
  /* load jQuery UI timepicker addon */
841
  wp_enqueue_script( 'jquery-ui-timepicker', OT_URL . 'assets/js/vendor/jquery/jquery-ui-timepicker.js', array( 'jquery', 'jquery-ui-slider', 'jquery-ui-datepicker' ), '1.4.3' );
842
 
843
  /* load all the required scripts */
844
  wp_enqueue_script( 'ot-admin-js', OT_URL . 'assets/js/ot-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'jquery-ui-slider', 'wp-color-picker', 'ace-editor', 'jquery-ui-datepicker', 'jquery-ui-timepicker' ), OT_VERSION );
845
+
846
  /* create localized JS array */
847
  $localized_array = array(
848
  'ajax' => admin_url( 'admin-ajax.php' ),
927
 
928
  function ot_create_media_post() {
929
 
930
+ $regsiter_post_type = 'register_' . 'post_type';
931
+ $regsiter_post_type( 'option-tree', array(
932
  'labels' => array( 'name' => __( 'Option Tree', 'option-tree' ) ),
933
  'public' => false,
934
  'show_ui' => false,
1014
 
1015
  /* textarea rows */
1016
  $rows = '';
1017
+ if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'javascript', 'textarea' ) ) ) {
1018
  if ( (int) $setting->item_options > 0 ) {
1019
  $rows = (int) $setting->item_options;
1020
  } else {
1507
 
1508
  /* textarea rows */
1509
  $rows = '';
1510
+ if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'javascript', 'textarea' ) ) ) {
1511
  if ( (int) $value->item_options > 0 ) {
1512
  $rows = (int) $value->item_options;
1513
  } else {
1794
  /**
1795
  * Initialize the custom theme options.
1796
  */
1797
+ add_action( 'init', 'custom_theme_options' );
1798
 
1799
  /**
1800
  * Build the custom settings & update OptionTree.
1801
  */
1802
  function custom_theme_options() {
1803
 
1804
+ /* OptionTree is not loaded yet, or this is not an admin request */
1805
+ if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
1806
  return false;
1807
 
1808
  /**
2416
 
2417
  return apply_filters( 'ot_option_types_array', array(
2418
  'background' => __('Background', 'option-tree'),
2419
+ 'border' => __('Border', 'option-tree'),
2420
+ 'box-shadow' => __('Box Shadow', 'option-tree'),
2421
  'category-checkbox' => __('Category Checkbox', 'option-tree'),
2422
  'category-select' => __('Category Select', 'option-tree'),
2423
  'checkbox' => __('Checkbox', 'option-tree'),
2424
+ 'colorpicker' => __('Colorpicker', 'option-tree'),
2425
+ 'colorpicker-opacity' => __('Colorpicker Opacity', 'option-tree'),
2426
  'css' => __('CSS', 'option-tree'),
2427
  'custom-post-type-checkbox' => __('Custom Post Type Checkbox', 'option-tree'),
2428
  'custom-post-type-select' => __('Custom Post Type Select', 'option-tree'),
2429
  'date-picker' => __('Date Picker', 'option-tree'),
2430
  'date-time-picker' => __('Date Time Picker', 'option-tree'),
2431
+ 'dimension' => __('Dimension', 'option-tree'),
2432
  'gallery' => __('Gallery', 'option-tree'),
2433
+ 'google-fonts' => __('Google Fonts', 'option-tree'),
2434
+ 'javascript' => __('JavaScript', 'option-tree'),
2435
+ 'link-color' => __('Link Color', 'option-tree'),
2436
  'list-item' => __('List Item', 'option-tree'),
2437
  'measurement' => __('Measurement', 'option-tree'),
2438
  'numeric-slider' => __('Numeric Slider', 'option-tree'),
2447
  'sidebar-select' => __('Sidebar Select', 'option-tree'),
2448
  'slider' => __('Slider', 'option-tree'),
2449
  'social-links' => __('Social Links', 'option-tree'),
2450
+ 'spacing' => __('Spacing', 'option-tree'),
2451
  'tab' => __('Tab', 'option-tree'),
2452
  'tag-checkbox' => __('Tag Checkbox', 'option-tree'),
2453
  'tag-select' => __('Tag Select', 'option-tree'),
2516
  }
2517
  }
2518
 
2519
+ /**
2520
+ * Filters the typography font-family to add Google fonts dynamically.
2521
+ *
2522
+ * @param array $families An array of all recognized font families.
2523
+ * @param string $field_id ID of the feild being filtered.
2524
+ * @return array
2525
+ *
2526
+ * @access public
2527
+ * @since 2.5.0
2528
+ */
2529
+ function ot_google_font_stack( $families, $field_id ) {
2530
+
2531
+ $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
2532
+ $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
2533
+
2534
+ if ( ! empty( $ot_set_google_fonts ) ) {
2535
+ foreach( $ot_set_google_fonts as $id => $sets ) {
2536
+ foreach( $sets as $value ) {
2537
+ $family = isset( $value['family'] ) ? $value['family'] : '';
2538
+ if ( $family && isset( $ot_google_fonts[$family] ) ) {
2539
+ $spaces = explode(' ', $ot_google_fonts[$family]['family'] );
2540
+ $font_stack = count( $spaces ) > 1 ? '"' . $ot_google_fonts[$family]['family'] . '"': $ot_google_fonts[$family]['family'];
2541
+ $families[$family] = apply_filters( 'ot_google_font_stack', $font_stack, $family, $field_id );
2542
+ }
2543
+ }
2544
+ }
2545
+ }
2546
+
2547
+ return $families;
2548
+ }
2549
+ add_filter( 'ot_recognized_font_families', 'ot_google_font_stack', 1, 2 );
2550
+
2551
  /**
2552
  * Recognized font families
2553
  *
2567
  if ( ! function_exists( 'ot_recognized_font_families' ) ) {
2568
 
2569
  function ot_recognized_font_families( $field_id = '' ) {
2570
+
2571
+ $families = array(
2572
  'arial' => 'Arial',
2573
  'georgia' => 'Georgia',
2574
  'helvetica' => 'Helvetica',
2577
  'times' => '"Times New Roman", sans-serif',
2578
  'trebuchet' => 'Trebuchet',
2579
  'verdana' => 'Verdana'
2580
+ );
2581
+
2582
+ return apply_filters( 'ot_recognized_font_families', $families, $field_id );
2583
 
2584
  }
2585
 
2936
 
2937
  }
2938
 
2939
+ /**
2940
+ * Border Styles
2941
+ *
2942
+ * Returns an array of all available style types.
2943
+ *
2944
+ * @uses apply_filters()
2945
+ *
2946
+ * @return array
2947
+ *
2948
+ * @access public
2949
+ * @since 2.5.0
2950
+ */
2951
+ if ( ! function_exists( 'ot_recognized_border_style_types' ) ) {
2952
+
2953
+ function ot_recognized_border_style_types( $field_id = '' ) {
2954
+
2955
+ return apply_filters( 'ot_recognized_border_style_types', array(
2956
+ 'hidden' => 'Hidden',
2957
+ 'dashed' => 'Dashed',
2958
+ 'solid' => 'Solid',
2959
+ 'double' => 'Double',
2960
+ 'groove' => 'Groove',
2961
+ 'ridge' => 'Ridge',
2962
+ 'inset' => 'Inset',
2963
+ 'outset' => 'Outset',
2964
+ ), $field_id );
2965
+
2966
+ }
2967
+
2968
+ }
2969
+
2970
+ /**
2971
+ * Border Units
2972
+ *
2973
+ * Returns an array of all available unit types.
2974
+ *
2975
+ * @uses apply_filters()
2976
+ *
2977
+ * @return array
2978
+ *
2979
+ * @access public
2980
+ * @since 2.5.0
2981
+ */
2982
+ if ( ! function_exists( 'ot_recognized_border_unit_types' ) ) {
2983
+
2984
+ function ot_recognized_border_unit_types( $field_id = '' ) {
2985
+
2986
+ return apply_filters( 'ot_recognized_border_unit_types', array(
2987
+ 'px' => 'px',
2988
+ '%' => '%',
2989
+ 'em' => 'em',
2990
+ 'pt' => 'pt'
2991
+ ), $field_id );
2992
+
2993
+ }
2994
+
2995
+ }
2996
+
2997
+ /**
2998
+ * Dimension Units
2999
+ *
3000
+ * Returns an array of all available unit types.
3001
+ *
3002
+ * @uses apply_filters()
3003
+ *
3004
+ * @return array
3005
+ *
3006
+ * @access public
3007
+ * @since 2.5.0
3008
+ */
3009
+ if ( ! function_exists( 'ot_recognized_dimension_unit_types' ) ) {
3010
+
3011
+ function ot_recognized_dimension_unit_types( $field_id = '' ) {
3012
+
3013
+ return apply_filters( 'ot_recognized_dimension_unit_types', array(
3014
+ 'px' => 'px',
3015
+ '%' => '%',
3016
+ 'em' => 'em',
3017
+ 'pt' => 'pt'
3018
+ ), $field_id );
3019
+
3020
+ }
3021
+
3022
+ }
3023
+
3024
+ /**
3025
+ * Spacing Units
3026
+ *
3027
+ * Returns an array of all available unit types.
3028
+ *
3029
+ * @uses apply_filters()
3030
+ *
3031
+ * @return array
3032
+ *
3033
+ * @access public
3034
+ * @since 2.5.0
3035
+ */
3036
+ if ( ! function_exists( 'ot_recognized_spacing_unit_types' ) ) {
3037
+
3038
+ function ot_recognized_spacing_unit_types( $field_id = '' ) {
3039
+
3040
+ return apply_filters( 'ot_recognized_spacing_unit_types', array(
3041
+ 'px' => 'px',
3042
+ '%' => '%',
3043
+ 'em' => 'em',
3044
+ 'pt' => 'pt'
3045
+ ), $field_id );
3046
+
3047
+ }
3048
+
3049
+ }
3050
+
3051
+ /**
3052
+ * Recognized Google font families
3053
+ *
3054
+ * @uses apply_filters()
3055
+ *
3056
+ * @return array
3057
+ *
3058
+ * @access public
3059
+ * @since 2.5.0
3060
+ */
3061
+ if ( ! function_exists( 'ot_recognized_google_font_families' ) ) {
3062
+
3063
+ function ot_recognized_google_font_families( $field_id ) {
3064
+
3065
+ $families = array();
3066
+ $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3067
+
3068
+ foreach( (array) $ot_google_fonts as $key => $item ) {
3069
+
3070
+ if ( isset( $item['family'] ) ) {
3071
+
3072
+ $families[ $key ] = $item['family'];
3073
+
3074
+ }
3075
+
3076
+ }
3077
+
3078
+ return apply_filters( 'ot_recognized_google_font_families', $families, $field_id );
3079
+
3080
+ }
3081
+
3082
+ }
3083
+
3084
+ /**
3085
+ * Recognized Google font variants
3086
+ *
3087
+ * @uses apply_filters()
3088
+ *
3089
+ * @return array
3090
+ *
3091
+ * @access public
3092
+ * @since 2.5.0
3093
+ */
3094
+ if ( ! function_exists( 'ot_recognized_google_font_variants' ) ) {
3095
+
3096
+ function ot_recognized_google_font_variants( $field_id, $family ) {
3097
+
3098
+ $variants = array();
3099
+ $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3100
+
3101
+ if ( isset( $ot_google_fonts[ $family ]['variants'] ) ) {
3102
+
3103
+ $variants = $ot_google_fonts[ $family ]['variants'];
3104
+
3105
+ }
3106
+
3107
+ return apply_filters( 'ot_recognized_google_font_variants', $variants, $field_id, $family );
3108
+
3109
+ }
3110
+
3111
+ }
3112
+
3113
+ /**
3114
+ * Recognized Google font subsets
3115
+ *
3116
+ * @uses apply_filters()
3117
+ *
3118
+ * @return array
3119
+ *
3120
+ * @access public
3121
+ * @since 2.5.0
3122
+ */
3123
+ if ( ! function_exists( 'ot_recognized_google_font_subsets' ) ) {
3124
+
3125
+ function ot_recognized_google_font_subsets( $field_id, $family ) {
3126
+
3127
+ $subsets = array();
3128
+ $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3129
+
3130
+ if ( isset( $ot_google_fonts[ $family ]['subsets'] ) ) {
3131
+
3132
+ $subsets = $ot_google_fonts[ $family ]['subsets'];
3133
+
3134
+ }
3135
+
3136
+ return apply_filters( 'ot_recognized_google_font_subsets', $subsets, $field_id, $family );
3137
+
3138
+ }
3139
+
3140
+ }
3141
+
3142
  /**
3143
  * Measurement Units
3144
  *
3432
 
3433
  /* path to the dynamic.css file */
3434
  $filepath = get_stylesheet_directory() . '/dynamic.css';
3435
+ if ( is_multisite() ) {
3436
+ $multisite_filepath = get_stylesheet_directory() . '/dynamic-' . get_current_blog_id() . '.css';
3437
+ if ( file_exists( $multisite_filepath ) ) {
3438
+ $filepath = $multisite_filepath;
3439
+ }
3440
+ }
3441
 
3442
  /* allow filter on path */
3443
  $filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
3444
+
3445
  /* grab a copy of the paths array */
3446
  $ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
3447
+ if ( is_multisite() ) {
3448
+ $ot_css_file_paths = get_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
3449
+ }
3450
+
3451
  /* set the path for this field */
3452
  $ot_css_file_paths[$field_id] = $filepath;
3453
+
3454
  /* update the paths */
3455
+ if ( is_multisite() ) {
3456
+ update_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
3457
+ } else {
3458
+ update_option( 'ot_css_file_paths', $ot_css_file_paths );
3459
+ }
3460
+
3461
  /* insert CSS into file */
3462
  if ( file_exists( $filepath ) ) {
3463
 
3503
 
3504
  /* set $value with measurement properties */
3505
  $value = $value[0].$value[1];
3506
+
3507
+ /* Colorpicker Opacity */
3508
+ } else if ( isset( $value['color'] ) && isset( $value['opacity'] ) ) {
3509
+
3510
+ /* get the RGB color value */
3511
+ $color = ot_hex2RGB( $value['color'] );
3512
+
3513
+ if ( is_array( $color ) ) {
3514
+ $value = 'rgba(' . $color['r'] . ', ' . $color['g'] . ', ' . $color['b'] . ', ' . $value['opacity'] . ')';
3515
+ } else if ( $color == $value['color'] ) {
3516
+ $value = $value['color'];
3517
+ }
3518
+
3519
+ /* Border */
3520
+ } else if ( ot_array_keys_exists( $value, array( 'width', 'unit', 'style', 'color' ) ) && ! ot_array_keys_exists( $value, array( 'top', 'right', 'bottom', 'left', 'height', 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius' ) ) ) {
3521
+ $border = array();
3522
+
3523
+ $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3524
+
3525
+ if ( ! empty( $value['width'] ) )
3526
+ $border[] = $value['width'].$unit;
3527
+
3528
+ if ( ! empty( $value['style'] ) )
3529
+ $border[] = $value['style'];
3530
+
3531
+ if ( ! empty( $value['color'] ) )
3532
+ $border[] = $value['color'];
3533
+
3534
+ /* set $value with border properties or empty string */
3535
+ $value = ! empty( $border ) ? implode( ' ', $border ) : '';
3536
+
3537
+ /* Box Shadow */
3538
+ } else if ( ot_array_keys_exists( $value, array( 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius', 'color' ) ) && ! ot_array_keys_exists( $value, array( 'width', 'height', 'unit', 'style', 'top', 'right', 'bottom', 'left' ) ) ) {
3539
+
3540
+ /* set $value with box-shadow properties or empty string */
3541
+ $value = ! empty( $value ) ? implode( ' ', $value ) : '';
3542
+
3543
+ /* Dimension */
3544
+ } else if ( ot_array_keys_exists( $value, array( 'width', 'height', 'unit' ) ) && ! ot_array_keys_exists( $value, array( 'style', 'color', 'top', 'right', 'bottom', 'left' ) ) ) {
3545
+ $dimension = array();
3546
+
3547
+ $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3548
+
3549
+ if ( ! empty( $value['width'] ) )
3550
+ $dimension[] = $value['width'].$unit;
3551
+
3552
+ if ( ! empty( $value['height'] ) )
3553
+ $dimension[] = $value['height'].$unit;
3554
+
3555
+ /* set $value with dimension properties or empty string */
3556
+ $value = ! empty( $dimension ) ? implode( ' ', $dimension ) : '';
3557
+
3558
+ /* Spacing */
3559
+ } else if ( ot_array_keys_exists( $value, array( 'top', 'right', 'bottom', 'left', 'unit' ) ) && ! ot_array_keys_exists( $value, array( 'width', 'height', 'style', 'color' ) ) ) {
3560
+ $spacing = array();
3561
+
3562
+ $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3563
+
3564
+ if ( ! empty( $value['top'] ) )
3565
+ $spacing[] = $value['top'].$unit;
3566
+
3567
+ if ( ! empty( $value['right'] ) )
3568
+ $spacing[] = $value['right'].$unit;
3569
+
3570
+ if ( ! empty( $value['bottom'] ) )
3571
+ $spacing[] = $value['bottom'].$unit;
3572
+
3573
+ if ( ! empty( $value['left'] ) )
3574
+ $spacing[] = $value['left'].$unit;
3575
+
3576
+ /* set $value with spacing properties or empty string */
3577
+ $value = ! empty( $spacing ) ? implode( ' ', $spacing ) : '';
3578
 
3579
  /* typography */
3580
  } else if ( ot_array_keys_exists( $value, array( 'font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform' ) ) ) {
4023
  $std = maybe_serialize( $std );
4024
  }
4025
 
4026
+ if ( in_array( $type, array( 'css', 'javascript', 'textarea', 'textarea-simple' ) ) ) {
4027
  $std_form_element = '<textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]">' . esc_html( $std ) . '</textarea>';
4028
  } else {
4029
  $std_form_element = '<input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]" value="' . esc_attr( $std ) . '" class="widefat option-tree-ui-input" autocomplete="off" />';
5085
 
5086
  }
5087
 
5088
+ /**
5089
+ * Helper function to set the Google fonts array.
5090
+ *
5091
+ * @param string $id The option ID.
5092
+ * @param bool $value The option value
5093
+ * @return void
5094
+ *
5095
+ * @access public
5096
+ * @since 2.5.0
5097
+ */
5098
+ function ot_set_google_fonts( $id = '', $value = '' ) {
5099
+
5100
+ $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
5101
+
5102
+ if ( is_array( $value ) && ! empty( $value ) ) {
5103
+ $ot_set_google_fonts[$id] = $value;
5104
+ } else if ( isset( $ot_set_google_fonts[$id] ) ) {
5105
+ unset( $ot_set_google_fonts[$id] );
5106
+ }
5107
+
5108
+ set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
5109
+
5110
+ }
5111
+
5112
+ /**
5113
+ * Helper function to remove unused options from the Google fonts array.
5114
+ *
5115
+ * @param array $options The array of saved options.
5116
+ * @return array
5117
+ *
5118
+ * @access public
5119
+ * @since 2.5.0
5120
+ */
5121
+ function ot_update_google_fonts_after_save( $options ) {
5122
+
5123
+ $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
5124
+
5125
+ foreach( $ot_set_google_fonts as $key => $set ) {
5126
+ if ( ! isset( $options[$key] ) ) {
5127
+ unset( $ot_set_google_fonts[$key] );
5128
+ }
5129
+ }
5130
+ set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
5131
+
5132
+ }
5133
+ add_action( 'ot_after_theme_options_save', 'ot_update_google_fonts_after_save', 1 );
5134
+
5135
+ /**
5136
+ * Helper function to fetch the Google fonts array.
5137
+ *
5138
+ * @param bool $normalize Whether or not to return a normalized array.
5139
+ * @return array
5140
+ *
5141
+ * @access public
5142
+ * @since 2.5.0
5143
+ */
5144
+ function ot_fetch_google_fonts( $normalize = true ) {
5145
+
5146
+ /* Google Fonts cache key */
5147
+ $ot_google_fonts_cache_key = apply_filters( 'ot_google_fonts_cache_key', 'ot_google_fonts_cache' );
5148
+
5149
+ /* get the fonts from cache */
5150
+ $ot_google_fonts = apply_filters( 'ot_google_fonts_cache', get_transient( $ot_google_fonts_cache_key ) );
5151
+
5152
+ if ( ! is_array( $ot_google_fonts ) || empty( $ot_google_fonts ) ) {
5153
+
5154
+ $ot_google_fonts = array();
5155
+
5156
+ /* API url and key */
5157
+ $ot_google_fonts_api_url = apply_filters( 'ot_google_fonts_api_url', 'https://www.googleapis.com/webfonts/v1/webfonts' );
5158
+ $ot_google_fonts_api_key = apply_filters( 'ot_google_fonts_api_key', 'AIzaSyB8G-4UtQr9fhDYTiNrDP40Y5GYQQKrNWI' );
5159
+
5160
+ /* API arguments */
5161
+ $ot_google_fonts_fields = apply_filters( 'ot_google_fonts_fields', array( 'family', 'variants', 'subsets' ) );
5162
+ $ot_google_fonts_sort = apply_filters( 'ot_google_fonts_sort', 'alpha' );
5163
+
5164
+ /* Initiate API request */
5165
+ $ot_google_fonts_query_args = array(
5166
+ 'key' => $ot_google_fonts_api_key,
5167
+ 'fields' => 'items(' . implode( ',', $ot_google_fonts_fields ) . ')',
5168
+ 'sort' => $ot_google_fonts_sort
5169
+ );
5170
+
5171
+ /* Build and make the request */
5172
+ $ot_google_fonts_query = add_query_arg( $ot_google_fonts_query_args, $ot_google_fonts_api_url );
5173
+ $ot_google_fonts_response = wp_safe_remote_get( $ot_google_fonts_query, array( 'sslverify' => false, 'timeout' => 15 ) );
5174
+
5175
+ /* continue if we got a valid response */
5176
+ if ( 200 == wp_remote_retrieve_response_code( $ot_google_fonts_response ) ) {
5177
+
5178
+ if ( $response_body = wp_remote_retrieve_body( $ot_google_fonts_response ) ) {
5179
+
5180
+ /* JSON decode the response body and cache the result */
5181
+ $ot_google_fonts_data = json_decode( trim( $response_body ), true );
5182
+
5183
+ if ( is_array( $ot_google_fonts_data ) && isset( $ot_google_fonts_data['items'] ) ) {
5184
+
5185
+ $ot_google_fonts = $ot_google_fonts_data['items'];
5186
+
5187
+ // Normalize the array key
5188
+ $ot_google_fonts_tmp = array();
5189
+ foreach( $ot_google_fonts as $key => $value ) {
5190
+ $id = remove_accents( $value['family'] );
5191
+ $id = strtolower( $id );
5192
+ $id = preg_replace( '/[^a-z0-9_\-]/', '', $id );
5193
+ $ot_google_fonts_tmp[$id] = $value;
5194
+ }
5195
+
5196
+ $ot_google_fonts = $ot_google_fonts_tmp;
5197
+ set_theme_mod( 'ot_google_fonts', $ot_google_fonts );
5198
+ set_transient( $ot_google_fonts_cache_key, $ot_google_fonts, WEEK_IN_SECONDS );
5199
+
5200
+ }
5201
+
5202
+ }
5203
+
5204
+ }
5205
+
5206
+ }
5207
+
5208
+ return $normalize ? ot_normalize_google_fonts( $ot_google_fonts ) : $ot_google_fonts;
5209
+
5210
+ }
5211
+
5212
+ /**
5213
+ * Helper function to normalize the Google fonts array.
5214
+ *
5215
+ * @param array $google_fonts An array of fonts to nrmalize.
5216
+ * @return array
5217
+ *
5218
+ * @access public
5219
+ * @since 2.5.0
5220
+ */
5221
+ function ot_normalize_google_fonts( $google_fonts ) {
5222
+
5223
+ $ot_normalized_google_fonts = array();
5224
+
5225
+ if ( is_array( $google_fonts ) && ! empty( $google_fonts ) ) {
5226
+
5227
+ foreach( $google_fonts as $google_font ) {
5228
+
5229
+ if( isset( $google_font['family'] ) ) {
5230
+
5231
+ $id = str_replace( ' ', '+', $google_font['family'] );
5232
+
5233
+ $ot_normalized_google_fonts[ $id ] = array(
5234
+ 'family' => $google_font['family']
5235
+ );
5236
+
5237
+ if( isset( $google_font['variants'] ) ) {
5238
+
5239
+ $ot_normalized_google_fonts[ $id ]['variants'] = $google_font['variants'];
5240
+
5241
+ }
5242
+
5243
+ if( isset( $google_font['subsets'] ) ) {
5244
+
5245
+ $ot_normalized_google_fonts[ $id ]['subsets'] = $google_font['subsets'];
5246
+
5247
+ }
5248
+
5249
+ }
5250
+
5251
+ }
5252
+
5253
+ }
5254
+
5255
+ return $ot_normalized_google_fonts;
5256
+
5257
+ }
5258
+
5259
  /**
5260
  * Helper function to register a WPML string
5261
  *
5648
 
5649
  }
5650
 
5651
+ /**
5652
+ * Converts Hexidecimal values to RGB.
5653
+ *
5654
+ * @param string $hex The hexidecimal color value.
5655
+ * @return mixed Returns an array with RGB values or the original hex color on failure.
5656
+ *
5657
+ * @access public
5658
+ * @since 2.5.0
5659
+ */
5660
+ if ( ! function_exists( 'ot_hex2RGB' ) ) {
5661
+
5662
+ function ot_hex2RGB( $hex ) {
5663
+ preg_match( "/^#{0,1}([0-9a-f]{1,6})$/i", $hex, $match );
5664
+
5665
+ if ( ! isset( $match[1] ) ) {
5666
+ return $hex;
5667
+ }
5668
+
5669
+ if ( strlen( $match[1] ) == 6 ) {
5670
+ list($r, $g, $b) = array( $hex[0].$hex[1], $hex[2].$hex[3], $hex[4].$hex[5] );
5671
+ } else if( strlen( $match[1] ) == 3 ) {
5672
+ list($r, $g, $b) = array( $hex[0].$hex[0], $hex[1].$hex[1], $hex[2].$hex[2] );
5673
+ } else if ( strlen($match[1]) == 2 ) {
5674
+ list($r, $g, $b) = array( $hex[0].$hex[1], $hex[0].$hex[1], $hex[0].$hex[1] );
5675
+ } else if ( strlen($match[1]) == 1 ) {
5676
+ list($r, $g, $b) = array( $hex.$hex, $hex.$hex, $hex.$hex );
5677
+ } else {
5678
+ return $hex;
5679
+ }
5680
+
5681
+ $color = array();
5682
+ $color['r'] = hexdec( $r );
5683
+ $color['g'] = hexdec( $g );
5684
+ $color['b'] = hexdec( $b );
5685
+
5686
+ return $color;
5687
+ }
5688
+
5689
+ }
5690
+
5691
  /* End of file ot-functions-admin.php */
5692
+ /* Location: ./includes/ot-functions-admin.php */
includes/ot-functions-docs-page.php CHANGED
@@ -110,6 +110,12 @@ if ( ! function_exists( 'ot_type_option_types' ) ) {
110
  echo '<h4>'. __( 'Background', 'option-tree' ) . ':</h4>';
111
  echo '<p>' . sprintf( __( 'The Background option type is for adding background styles to your theme either dynamically via the CSS option type below or manually with %s. The Background option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_background_fields</code>', '<code>ot_recognized_background_repeat</code>, <code>ot_recognized_background_attachment</code>, <code>ot_recognized_background_position</code>, ' . __( 'and', 'option-tree' ) . ' <code>ot_type_background_size_choices</code>' ) . '</p>';
112
 
 
 
 
 
 
 
113
  echo '<h4>'. __( 'Category Checkbox', 'option-tree' ) . ':</h4>';
114
  echo '<p>' . __( 'The Category Checkbox option type displays a list of category IDs. It allows the user to check multiple category IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
115
 
@@ -122,6 +128,9 @@ if ( ! function_exists( 'ot_type_option_types' ) ) {
122
  echo '<h4>'. __( 'Colorpicker', 'option-tree' ) . ':</h4>';
123
  echo '<p>' . __( 'The Colorpicker option type saves a hexadecimal color code for use in CSS. Use it to modify the color of something in your theme.', 'option-tree' ) . '</p>';
124
 
 
 
 
125
  echo '<h4>'. __( 'CSS', 'option-tree' ) . ':</h4>';
126
  echo '<p>' . sprintf( __( 'The CSS option type is a textarea that when used properly can add dynamic CSS to your theme from within OptionTree. Unfortunately, due server limitations you will need to create a file named %s at the root level of your theme and change permissions using %s so the server can write to the file. I have had the most success setting this single file to %s but feel free to play around with permissions until everything is working. A good starting point is %s. When the server can save to the file, CSS will automatically be updated when you save your Theme Options.', 'option-tree' ), '<code>dynamic.css</code>', '<code>chmod</code>', '<code>0777</code>', '<code>0666</code>' ) . '</p>';
127
 
@@ -153,8 +162,20 @@ body {
153
  echo '<h4>'. __( 'Date Time Picker', 'option-tree' ) . ':</h4>';
154
  echo '<p>' . __( 'The Date Time Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date and time when focus is given to the input field. The returned value is a date and time formatted string.', 'option-tree' ) . '</p>';
155
 
 
 
 
156
  echo '<h4>'. __( 'Gallery', 'option-tree' ) . ':</h4>';
157
  echo '<p>' . __( 'The Gallery option type saves a comma separated list of image attachment IDs. You will need to create a front-end function to display the images in your theme.', 'option-tree' ) . '</p>';
 
 
 
 
 
 
 
 
 
158
 
159
  echo '<h4>'. __( 'List Item', 'option-tree' ) . ':</h4>';
160
  echo '<p>' . __( 'The List Item option type replaced the Slider option type and allows for a great deal of customization. You can add settings to the List Item and those settings will be displayed to the user when they add a new List Item. Typical use is for creating sliding content or blocks of code for custom layouts.', 'option-tree' ) . '</p>';
@@ -251,6 +272,9 @@ add_filter( \'ot_radio_images\', \'filter_radio_images\', 10, 2 );</code></pre>'
251
  echo '<h4>'. __( 'Social Links', 'option-tree' ) . ':</h4>';
252
  echo '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'option-tree' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>';
253
 
 
 
 
254
  echo '<h4>'. __( 'Tab', 'option-tree' ) . ':</h4>';
255
  echo '<p>' . __( 'The Tab option type will break a section or metabox into tabbed content.', 'option-tree' ) . '</p>';
256
 
@@ -836,12 +860,17 @@ require( trailingslashit( get_template_directory() ) . \'includes/theme-options.
836
  echo "<pre><code>/**
837
  * Initialize the options before anything else.
838
  */
839
- add_action( 'admin_init', 'custom_theme_options', 1 );
840
 
841
  /**
842
  * Build the custom settings & update OptionTree.
843
  */
844
  function custom_theme_options() {
 
 
 
 
 
845
  /**
846
  * Get a copy of the saved settings array.
847
  */
@@ -972,6 +1001,10 @@ function custom_theme_options() {
972
  update_option( 'option_tree_settings', &#36;custom_settings );
973
  }
974
 
 
 
 
 
975
  }
976
  </code></pre>";
977
 
110
  echo '<h4>'. __( 'Background', 'option-tree' ) . ':</h4>';
111
  echo '<p>' . sprintf( __( 'The Background option type is for adding background styles to your theme either dynamically via the CSS option type below or manually with %s. The Background option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_background_fields</code>', '<code>ot_recognized_background_repeat</code>, <code>ot_recognized_background_attachment</code>, <code>ot_recognized_background_position</code>, ' . __( 'and', 'option-tree' ) . ' <code>ot_type_background_size_choices</code>' ) . '</p>';
112
 
113
+ echo '<h4>'. __( 'Border', 'option-tree' ) . ':</h4>';
114
+ echo '<p>' . sprintf( __( 'The Border option type is used to set width, unit, style, and color values. The text input excepts a numerical value and the unit select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter. The style select lets you choose the border style. The default styles are %s, %s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s filter. The colorpicker saves a hexadecimal color code.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_border_unit_types</code>', '<code>hidden</code>', '<code>dashed</code>', '<code>solid</code>', '<code>double</code>', '<code>groove</code>', '<code>ridge</code>', '<code>inset</code>', '<code>outset</code>', '<code>ot_recognized_border_style_types</code>' ) . '</p>';
115
+
116
+ echo '<h4>'. __( 'Box Shadow', 'option-tree' ) . ':</h4>';
117
+ echo '<p>' . sprintf( __( 'The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values.', 'option-tree' ), '<code>inset</code>', '<code>offset-x</code>', '<code>offset-y</code>', '<code>blur-radius</code>', '<code>spread-radius</code>', '<code>color</code>' ) . '</p>';
118
+
119
  echo '<h4>'. __( 'Category Checkbox', 'option-tree' ) . ':</h4>';
120
  echo '<p>' . __( 'The Category Checkbox option type displays a list of category IDs. It allows the user to check multiple category IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
121
 
128
  echo '<h4>'. __( 'Colorpicker', 'option-tree' ) . ':</h4>';
129
  echo '<p>' . __( 'The Colorpicker option type saves a hexadecimal color code for use in CSS. Use it to modify the color of something in your theme.', 'option-tree' ) . '</p>';
130
 
131
+ echo '<h4>'. __( 'Colorpicker Opacity', 'option-tree' ) . ':</h4>';
132
+ echo '<p>' . sprintf( __( 'The Colorpicker Opacity option type saves a hexadecimal color code with an opacity value from %s to %s in increments of %s. Though the value is saved as hexadecimal, if used within the CSS option type the color and opacity values will be converted into a valid RGBA CSS value.', 'option-tree' ), '<code>0</code>', '<code>1</code>', '<code>0.01</code>' ) . '</p>';
133
+
134
  echo '<h4>'. __( 'CSS', 'option-tree' ) . ':</h4>';
135
  echo '<p>' . sprintf( __( 'The CSS option type is a textarea that when used properly can add dynamic CSS to your theme from within OptionTree. Unfortunately, due server limitations you will need to create a file named %s at the root level of your theme and change permissions using %s so the server can write to the file. I have had the most success setting this single file to %s but feel free to play around with permissions until everything is working. A good starting point is %s. When the server can save to the file, CSS will automatically be updated when you save your Theme Options.', 'option-tree' ), '<code>dynamic.css</code>', '<code>chmod</code>', '<code>0777</code>', '<code>0666</code>' ) . '</p>';
136
 
162
  echo '<h4>'. __( 'Date Time Picker', 'option-tree' ) . ':</h4>';
163
  echo '<p>' . __( 'The Date Time Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date and time when focus is given to the input field. The returned value is a date and time formatted string.', 'option-tree' ) . '</p>';
164
 
165
+ echo '<h4>'. __( 'Dimension', 'option-tree' ) . ':</h4>';
166
+ echo '<p>' . sprintf( __( 'The Dimension option type is used to set width and height values. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_dimension_unit_types</code>' ) . '</p>';
167
+
168
  echo '<h4>'. __( 'Gallery', 'option-tree' ) . ':</h4>';
169
  echo '<p>' . __( 'The Gallery option type saves a comma separated list of image attachment IDs. You will need to create a front-end function to display the images in your theme.', 'option-tree' ) . '</p>';
170
+
171
+ echo '<h4>'. __( 'Google Fonts', 'option-tree' ) . ':</h4>';
172
+ echo '<p>' . sprintf( __( 'The Google Fonts option type will dynamically enqueue any number of Google Web Fonts into the document %1$s. As well, once the option has been saved each font family will automatically be inserted into the %2$s array for the Typography option type. You can further modify the font stack by using the %3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s parameter is being passed from %7$s, so it will be the ID of a Typography option type. This will allow you to add additional web safe fonts to individual font families on an as-need basis.', 'option-tree' ), '<code>HEAD</code>', '<code>font-family</code>', '<code>ot_google_font_stack</code>', '<code>$font_stack</code>', '<code>$family</code>', '<code>$field_id</code>', '<code>ot_recognized_font_families</code>' ) . '</p>';
173
+
174
+ echo '<h4>'. __( 'JavaScript', 'option-tree' ) . ':</h4>';
175
+ echo '<p>' . sprintf( __( 'The JavaScript option type is a textarea that uses the %s code editor to highlight your JavaScript and display errors as you type.', 'option-tree' ), '<code>ace.js</code>' ) . '</p>';
176
+
177
+ echo '<h4>'. __( 'Link Color', 'option-tree' ) . ':</h4>';
178
+ echo '<p>' . __( 'The Link Color option type is used to set all link color states.', 'option-tree' ) . '</p>';
179
 
180
  echo '<h4>'. __( 'List Item', 'option-tree' ) . ':</h4>';
181
  echo '<p>' . __( 'The List Item option type replaced the Slider option type and allows for a great deal of customization. You can add settings to the List Item and those settings will be displayed to the user when they add a new List Item. Typical use is for creating sliding content or blocks of code for custom layouts.', 'option-tree' ) . '</p>';
272
  echo '<h4>'. __( 'Social Links', 'option-tree' ) . ':</h4>';
273
  echo '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'option-tree' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>';
274
 
275
+ echo '<h4>'. __( 'Spacing', 'option-tree' ) . ':</h4>';
276
+ echo '<p>' . sprintf( __( 'The Spacing option type is used to set spacing values such as padding or margin in the form of top, right, bottom, and left. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_spacing_unit_types</code>' ) . '</p>';
277
+
278
  echo '<h4>'. __( 'Tab', 'option-tree' ) . ':</h4>';
279
  echo '<p>' . __( 'The Tab option type will break a section or metabox into tabbed content.', 'option-tree' ) . '</p>';
280
 
860
  echo "<pre><code>/**
861
  * Initialize the options before anything else.
862
  */
863
+ add_action( 'init', 'custom_theme_options', 1 );
864
 
865
  /**
866
  * Build the custom settings & update OptionTree.
867
  */
868
  function custom_theme_options() {
869
+
870
+ /* OptionTree is not loaded yet, or this is not an admin request */
871
+ if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
872
+ return false;
873
+
874
  /**
875
  * Get a copy of the saved settings array.
876
  */
1001
  update_option( 'option_tree_settings', &#36;custom_settings );
1002
  }
1003
 
1004
+ /* Lets OptionTree know the UI Builder is being overridden */
1005
+ global &#36;ot_has_custom_theme_options;
1006
+ &#36;ot_has_custom_theme_options = true;
1007
+
1008
  }
1009
  </code></pre>";
1010
 
includes/ot-functions-option-types.php CHANGED
@@ -270,6 +270,229 @@ if ( ! function_exists( 'ot_type_background' ) ) {
270
 
271
  }
272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  /**
274
  * Category Checkbox option type.
275
  *
@@ -480,6 +703,77 @@ if ( ! function_exists( 'ot_type_colorpicker' ) ) {
480
 
481
  }
482
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
483
  /**
484
  * CSS option type.
485
  *
@@ -664,7 +958,17 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
664
 
665
  /* filter date format */
666
  $date_format = apply_filters( 'ot_type_date_picker_date_format', 'yy-mm-dd', $field_id );
667
-
 
 
 
 
 
 
 
 
 
 
668
  /* format setting outer wrapper */
669
  echo '<div class="format-setting type-date-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
670
 
@@ -678,18 +982,380 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
678
  echo '<div class="format-setting-inner">';
679
 
680
  /* build date picker */
681
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
682
 
683
  echo '</div>';
684
-
685
  echo '</div>';
686
 
687
  }
688
-
689
  }
690
 
691
  /**
692
- * Date Time Picker option type.
693
  *
694
  * See @ot_display_by_type to see the full list of available arguments.
695
  *
@@ -697,11 +1363,11 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
697
  * @return string
698
  *
699
  * @access public
700
- * @since 2.3
701
  */
702
- if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
703
 
704
- function ot_type_date_time_picker( $args = array() ) {
705
 
706
  /* turns arguments array into variables */
707
  extract( $args );
@@ -709,26 +1375,23 @@ if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
709
  /* verify a description */
710
  $has_desc = $field_desc ? true : false;
711
 
712
- /* filter date format */
713
- $date_format = apply_filters( 'ot_type_date_time_picker_date_format', 'yy-mm-dd', $field_id );
714
-
715
  /* format setting outer wrapper */
716
- echo '<div class="format-setting type-date-time-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
717
-
718
- /* date time picker JS */
719
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_time_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
720
 
721
  /* description */
722
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
723
 
724
  /* format setting inner wrapper */
725
  echo '<div class="format-setting-inner">';
726
-
727
- /* build date time picker */
728
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
729
 
730
- echo '</div>';
 
731
 
 
 
 
 
 
732
  echo '</div>';
733
 
734
  }
@@ -736,96 +1399,75 @@ if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
736
  }
737
 
738
  /**
739
- * Gallery option type.
740
  *
741
  * See @ot_display_by_type to see the full list of available arguments.
742
  *
743
  * @param array The options arguments
744
- * @return string The gallery metabox markup.
745
  *
746
  * @access public
747
- * @since 2.2.0
748
  */
749
- if ( ! function_exists( 'ot_type_gallery' ) ) {
750
 
751
- function ot_type_gallery( $args = array() ) {
752
-
753
- // Turns arguments array into variables
754
  extract( $args );
755
-
756
- // Verify a description
757
  $has_desc = $field_desc ? true : false;
758
-
759
- // Format setting outer wrapper
760
- echo '<div class="format-setting type-gallery ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
761
-
762
- // Description
763
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
764
-
765
- // Format setting inner wrapper
766
  echo '<div class="format-setting-inner">';
767
-
768
- // Setup the post type
769
- $post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
770
-
771
- $field_value = trim( $field_value );
772
-
773
- // Saved values
774
- echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="ot-gallery-value ' . esc_attr( $field_class ) . '" />';
775
-
776
- // Search the string for the IDs
777
- preg_match( '/ids=\'(.*?)\'/', $field_value, $matches );
778
-
779
- // Turn the field value into an array of IDs
780
- if ( isset( $matches[1] ) ) {
781
-
782
- // Found the IDs in the shortcode
783
- $ids = explode( ',', $matches[1] );
784
-
785
- } else {
786
-
787
- // The string is only IDs
788
- $ids = ! empty( $field_value ) && $field_value != '' ? explode( ',', $field_value ) : array();
789
-
790
- }
791
 
792
- // Has attachment IDs
793
- if ( ! empty( $ids ) ) {
794
-
795
- echo '<ul class="ot-gallery-list">';
796
-
797
- foreach( $ids as $id ) {
 
 
 
 
 
 
 
798
 
799
- if ( $id == '' )
800
- continue;
 
 
 
 
 
 
 
801
 
802
- $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
803
-
804
- echo '<li><img src="' . $thumbnail[0] . '" width="75" height="75" /></li>';
805
-
 
 
 
 
806
  }
807
-
808
- echo '</ul>';
809
-
810
- echo '
811
- <div class="ot-gallery-buttons">
812
- <a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' . __( 'Delete Gallery', 'option-tree' ) . '</a>
813
- <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Edit Gallery', 'option-tree' ) . '</a>
814
- </div>';
815
-
816
- } else {
817
-
818
- echo '
819
- <div class="ot-gallery-buttons">
820
- <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Create Gallery', 'option-tree' ) . '</a>
821
- </div>';
822
-
823
  }
824
-
825
  echo '</div>';
826
-
827
  echo '</div>';
828
-
829
  }
830
 
831
  }
@@ -941,7 +1583,7 @@ if ( ! function_exists( 'ot_type_measurement' ) ) {
941
  /* build measurement */
942
  echo '<select name="' . esc_attr( $field_name ) . '[1]" id="' . esc_attr( $field_id ) . '-1" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
943
 
944
- echo '<option value="">&nbsp;--&nbsp;</option>';
945
 
946
  foreach ( ot_measurement_unit_types( $field_id ) as $unit ) {
947
  echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value[1] ) ? selected( $field_value[1], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
@@ -1021,55 +1663,101 @@ if ( ! function_exists( 'ot_type_numeric_slider' ) ) {
1021
  * @since 2.2.0
1022
  */
1023
  if ( ! function_exists( 'ot_type_on_off' ) ) {
1024
-
1025
  function ot_type_on_off( $args = array() ) {
1026
-
1027
  /* turns arguments array into variables */
1028
  extract( $args );
1029
-
1030
  /* verify a description */
1031
  $has_desc = $field_desc ? true : false;
1032
-
1033
  /* format setting outer wrapper */
1034
  echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1035
-
1036
  /* description */
1037
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1038
-
1039
  /* format setting inner wrapper */
1040
  echo '<div class="format-setting-inner">';
1041
-
1042
- // Force choices
1043
  $field_choices = array(
1044
  array(
1045
- 'value' => 'on',
1046
- 'label' => __( 'On', 'option-tree' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  ),
1048
  array(
1049
- 'value' => 'off',
1050
- 'label' => __( 'Off', 'option-tree' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1051
  )
1052
  );
1053
-
1054
- echo '<div class="on-off-switch">';
1055
-
 
 
 
 
 
 
 
 
 
 
1056
  /* build radio */
1057
  foreach ( (array) $field_choices as $key => $choice ) {
1058
  echo '
1059
  <input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '"' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" />
1060
  <label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" onclick="">' . esc_attr( $choice['label'] ) . '</label>';
1061
  }
1062
-
1063
  echo '<span class="slide-button"></span>';
1064
-
1065
  echo '</div>';
1066
-
1067
  echo '</div>';
1068
-
1069
  echo '</div>';
1070
-
1071
  }
1072
-
1073
  }
1074
 
1075
  /**
@@ -1758,6 +2446,108 @@ if ( ! function_exists( 'ot_type_social_links' ) ) {
1758
 
1759
  }
1760
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1761
  /**
1762
  * Tab option type.
1763
  *
@@ -2465,4 +3255,4 @@ if ( ! function_exists( 'ot_type_upload' ) ) {
2465
  }
2466
 
2467
  /* End of file ot-functions-option-types.php */
2468
- /* Location: ./includes/ot-functions-option-types.php */
270
 
271
  }
272
 
273
+ /**
274
+ * Border Option Type
275
+ *
276
+ * See @ot_display_by_type to see the full list of available arguments.
277
+ *
278
+ * @param array The options arguments
279
+ * @return string The markup.
280
+ *
281
+ * @access public
282
+ * @since 2.5.0
283
+ */
284
+ if ( ! function_exists( 'ot_type_border' ) ) {
285
+
286
+ function ot_type_border( $args = array() ) {
287
+
288
+ /* turns arguments array into variables */
289
+ extract( $args );
290
+
291
+ /* verify a description */
292
+ $has_desc = $field_desc ? true : false;
293
+
294
+ /* format setting outer wrapper */
295
+ echo '<div class="format-setting type-border ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
296
+
297
+ /* description */
298
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
299
+
300
+ /* format setting inner wrapper */
301
+ echo '<div class="format-setting-inner">';
302
+
303
+ /* allow fields to be filtered */
304
+ $ot_recognized_border_fields = apply_filters( 'ot_recognized_border_fields', array(
305
+ 'width',
306
+ 'unit',
307
+ 'style',
308
+ 'color'
309
+ ), $field_id );
310
+
311
+ /* build border width */
312
+ if ( in_array( 'width', $ot_recognized_border_fields ) ) {
313
+
314
+ $width = isset( $field_value['width'] ) ? esc_attr( $field_value['width'] ) : '';
315
+
316
+ echo '<div class="ot-option-group ot-option-group--one-sixth"><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'width', 'option-tree' ) . '" /></div>';
317
+
318
+ }
319
+
320
+ /* build unit dropdown */
321
+ if ( in_array( 'unit', $ot_recognized_border_fields ) ) {
322
+
323
+ echo '<div class="ot-option-group ot-option-group--one-fourth">';
324
+
325
+ echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
326
+
327
+ echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
328
+
329
+ foreach ( ot_recognized_border_unit_types( $field_id ) as $unit ) {
330
+ echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
331
+ }
332
+
333
+ echo '</select>';
334
+
335
+ echo '</div>';
336
+
337
+ }
338
+
339
+ /* build style dropdown */
340
+ if ( in_array( 'style', $ot_recognized_border_fields ) ) {
341
+
342
+ echo '<div class="ot-option-group ot-option-group--one-fourth">';
343
+
344
+ echo '<select name="' . esc_attr( $field_name ) . '[style]" id="' . esc_attr( $field_id ) . '-style" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
345
+
346
+ echo '<option value="">' . __( 'style', 'option-tree' ) . '</option>';
347
+
348
+ foreach ( ot_recognized_border_style_types( $field_id ) as $key => $style ) {
349
+ echo '<option value="' . esc_attr( $key ) . '"' . ( isset( $field_value['style'] ) ? selected( $field_value['style'], $key, false ) : '' ) . '>' . esc_attr( $style ) . '</option>';
350
+ }
351
+
352
+ echo '</select>';
353
+
354
+ echo '</div>';
355
+
356
+ }
357
+
358
+ /* build color */
359
+ if ( in_array( 'color', $ot_recognized_border_fields ) ) {
360
+
361
+ echo '<div class="option-tree-ui-colorpicker-input-wrap">';
362
+
363
+ /* colorpicker JS */
364
+ echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
365
+
366
+ /* set color */
367
+ $color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
368
+
369
+ /* input */
370
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . $field_id . '-picker" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
371
+
372
+ echo '</div>';
373
+
374
+ }
375
+
376
+ echo '</div>';
377
+
378
+ echo '</div>';
379
+
380
+ }
381
+
382
+ }
383
+
384
+ /**
385
+ * Box Shadow Option Type
386
+ *
387
+ * See @ot_display_by_type to see the full list of available arguments.
388
+ *
389
+ * @param array The options arguments
390
+ * @return string The markup.
391
+ *
392
+ * @access public
393
+ * @since 2.5.0
394
+ */
395
+ if ( ! function_exists( 'ot_type_box_shadow' ) ) {
396
+
397
+ function ot_type_box_shadow( $args = array() ) {
398
+
399
+ /* turns arguments array into variables */
400
+ extract( $args );
401
+
402
+ /* verify a description */
403
+ $has_desc = $field_desc ? true : false;
404
+
405
+ /* format setting outer wrapper */
406
+ echo '<div class="format-setting type-box-shadow ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
407
+
408
+ /* description */
409
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
410
+
411
+ /* format setting inner wrapper */
412
+ echo '<div class="format-setting-inner">';
413
+
414
+ /* allow fields to be filtered */
415
+ $ot_recognized_box_shadow_fields = apply_filters( 'ot_recognized_box_shadow_fields', array(
416
+ 'inset',
417
+ 'offset-x',
418
+ 'offset-y',
419
+ 'blur-radius',
420
+ 'spread-radius',
421
+ 'color'
422
+ ), $field_id );
423
+
424
+ /* build inset */
425
+ if ( in_array( 'inset', $ot_recognized_box_shadow_fields ) ) {
426
+
427
+ echo '<div class="ot-option-group ot-option-group--checkbox"><p>';
428
+ echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[inset]" id="' . esc_attr( $field_id ) . '-inset" value="inset" ' . ( isset( $field_value['inset'] ) ? checked( $field_value['inset'], 'inset', false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
429
+ echo '<label for="' . esc_attr( $field_id ) . '-inset">inset</label>';
430
+ echo '</p></div>';
431
+
432
+ }
433
+
434
+ /* build horizontal offset */
435
+ if ( in_array( 'offset-x', $ot_recognized_box_shadow_fields ) ) {
436
+
437
+ $offset_x = isset( $field_value['offset-x'] ) ? esc_attr( $field_value['offset-x'] ) : '';
438
+
439
+ echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-x]" id="' . esc_attr( $field_id ) . '-offset-x" value="' . $offset_x . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'offset-x', 'option-tree' ) . '" /></div>';
440
+
441
+ }
442
+
443
+ /* build vertical offset */
444
+ if ( in_array( 'offset-y', $ot_recognized_box_shadow_fields ) ) {
445
+
446
+ $offset_y = isset( $field_value['offset-y'] ) ? esc_attr( $field_value['offset-y'] ) : '';
447
+
448
+ echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-y]" id="' . esc_attr( $field_id ) . '-offset-y" value="' . $offset_y . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'offset-y', 'option-tree' ) . '" /></div>';
449
+
450
+ }
451
+
452
+ /* build blur-radius radius */
453
+ if ( in_array( 'blur-radius', $ot_recognized_box_shadow_fields ) ) {
454
+
455
+ $blur_radius = isset( $field_value['blur-radius'] ) ? esc_attr( $field_value['blur-radius'] ) : '';
456
+
457
+ echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-circle ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[blur-radius]" id="' . esc_attr( $field_id ) . '-blur-radius" value="' . $blur_radius . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'blur-radius', 'option-tree' ) . '" /></div>';
458
+
459
+ }
460
+
461
+ /* build spread-radius radius */
462
+ if ( in_array( 'spread-radius', $ot_recognized_box_shadow_fields ) ) {
463
+
464
+ $spread_radius = isset( $field_value['spread-radius'] ) ? esc_attr( $field_value['spread-radius'] ) : '';
465
+
466
+ echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-alt ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[spread-radius]" id="' . esc_attr( $field_id ) . '-spread-radius" value="' . $spread_radius . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'spread-radius', 'option-tree' ) . '" /></div>';
467
+
468
+ }
469
+
470
+ /* build color */
471
+ if ( in_array( 'color', $ot_recognized_box_shadow_fields ) ) {
472
+
473
+ echo '<div class="option-tree-ui-colorpicker-input-wrap">';
474
+
475
+ /* colorpicker JS */
476
+ echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
477
+
478
+ /* set color */
479
+ $color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
480
+
481
+ /* input */
482
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-picker" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
483
+
484
+ echo '</div>';
485
+
486
+ }
487
+
488
+ echo '</div>';
489
+
490
+ echo '</div>';
491
+
492
+ }
493
+
494
+ }
495
+
496
  /**
497
  * Category Checkbox option type.
498
  *
703
 
704
  }
705
 
706
+ /**
707
+ * Colorpicker Opacity option type.
708
+ *
709
+ * See @ot_display_by_type to see the full list of available arguments.
710
+ *
711
+ * @param array An array of arguments.
712
+ * @return string
713
+ *
714
+ * @access public
715
+ * @since 2.5.0
716
+ */
717
+ if ( ! function_exists( 'ot_type_colorpicker_opacity' ) ) {
718
+
719
+ function ot_type_colorpicker_opacity( $args = array() ) {
720
+
721
+ /* turns arguments array into variables */
722
+ extract( $args );
723
+
724
+ /* verify a description */
725
+ $has_desc = $field_desc ? true : false;
726
+
727
+ /* format setting outer wrapper */
728
+ echo '<div class="format-setting type-colorpicker-opacity ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
729
+
730
+ /* description */
731
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
732
+
733
+ /* format setting inner wrapper */
734
+ echo '<div class="format-setting-inner">';
735
+
736
+ /* build colorpicker */
737
+ echo '<div class="option-tree-ui-colorpicker-input-wrap">';
738
+
739
+ /* colorpicker JS */
740
+ echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-color"); });</script>';
741
+
742
+ /* set color */
743
+ $color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
744
+
745
+ /* set default color */
746
+ $std = isset( $field_std['color'] ) ? 'data-default-color="' . $field_std['color'] . '"' : '';
747
+
748
+ /* input */
749
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-color" value="' . esc_attr( $color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" ' . $std . ' />';
750
+
751
+ echo '</div>';
752
+
753
+ echo '<div class="ot-numeric-slider-wrap">';
754
+
755
+ $min = 0;
756
+ $max = 1.01;
757
+ $step = 0.01;
758
+
759
+ /* set background color */
760
+ $opacity = isset( $field_value['opacity'] ) ? esc_attr( $field_value['opacity'] ) : '';
761
+
762
+ echo '<input type="hidden" name="' . esc_attr( $field_name ) . '[opacity]" id="' . esc_attr( $field_id ) . '-opacity" class="ot-numeric-slider-hidden-input" value="' . $opacity . '" data-min="' . esc_attr( $min ) . '" data-max="' . esc_attr( $max ) . '" data-step="' . esc_attr( $step ) . '">';
763
+
764
+ echo '<input type="text" class="ot-numeric-slider-helper-input widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" value="' . esc_attr( $opacity ) . '" readonly>';
765
+
766
+ echo '<div id="ot_numeric_slider_' . esc_attr( $field_id ) . '" class="ot-numeric-slider"></div>';
767
+
768
+ echo '</div>';
769
+
770
+ echo '</div>';
771
+
772
+ echo '</div>';
773
+ }
774
+
775
+ }
776
+
777
  /**
778
  * CSS option type.
779
  *
958
 
959
  /* filter date format */
960
  $date_format = apply_filters( 'ot_type_date_picker_date_format', 'yy-mm-dd', $field_id );
961
+
962
+ /**
963
+ * Filter the addition of the readonly attribute.
964
+ *
965
+ * @since 2.5.0
966
+ *
967
+ * @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
968
+ * @param string $field_id The field ID.
969
+ */
970
+ $is_readonly = apply_filters( 'ot_type_date_picker_readonly', false, $field_id );
971
+
972
  /* format setting outer wrapper */
973
  echo '<div class="format-setting type-date-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
974
 
982
  echo '<div class="format-setting-inner">';
983
 
984
  /* build date picker */
985
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( $is_readonly == true ? ' readonly' : '' ) . ' />';
986
+
987
+ echo '</div>';
988
+
989
+ echo '</div>';
990
+
991
+ }
992
+
993
+ }
994
+
995
+ /**
996
+ * Date Time Picker option type.
997
+ *
998
+ * See @ot_display_by_type to see the full list of available arguments.
999
+ *
1000
+ * @param array An array of arguments.
1001
+ * @return string
1002
+ *
1003
+ * @access public
1004
+ * @since 2.3
1005
+ */
1006
+ if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
1007
+
1008
+ function ot_type_date_time_picker( $args = array() ) {
1009
+
1010
+ /* turns arguments array into variables */
1011
+ extract( $args );
1012
+
1013
+ /* verify a description */
1014
+ $has_desc = $field_desc ? true : false;
1015
+
1016
+ /* filter date format */
1017
+ $date_format = apply_filters( 'ot_type_date_time_picker_date_format', 'yy-mm-dd', $field_id );
1018
+
1019
+ /**
1020
+ * Filter the addition of the readonly attribute.
1021
+ *
1022
+ * @since 2.5.0
1023
+ *
1024
+ * @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
1025
+ * @param string $field_id The field ID.
1026
+ */
1027
+ $is_readonly = apply_filters( 'ot_type_date_time_picker_readonly', false, $field_id );
1028
+
1029
+ /* format setting outer wrapper */
1030
+ echo '<div class="format-setting type-date-time-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1031
+
1032
+ /* date time picker JS */
1033
+ echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_time_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
1034
+
1035
+ /* description */
1036
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1037
+
1038
+ /* format setting inner wrapper */
1039
+ echo '<div class="format-setting-inner">';
1040
+
1041
+ /* build date time picker */
1042
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( $is_readonly == true ? ' readonly' : '' ) . ' />';
1043
+
1044
+ echo '</div>';
1045
+
1046
+ echo '</div>';
1047
+
1048
+ }
1049
+
1050
+ }
1051
+
1052
+ /**
1053
+ * Dimension Option Type
1054
+ *
1055
+ * See @ot_display_by_type to see the full list of available arguments.
1056
+ *
1057
+ * @param array The options arguments
1058
+ * @return string The markup.
1059
+ *
1060
+ * @access public
1061
+ * @since 2.5.0
1062
+ */
1063
+ if ( ! function_exists( 'ot_type_dimension' ) ) {
1064
+
1065
+ function ot_type_dimension( $args = array() ) {
1066
+
1067
+ /* turns arguments array into variables */
1068
+ extract( $args );
1069
+
1070
+ /* verify a description */
1071
+ $has_desc = $field_desc ? true : false;
1072
+
1073
+ /* format setting outer wrapper */
1074
+ echo '<div class="format-setting type-dimension ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1075
+
1076
+ /* description */
1077
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1078
+
1079
+ /* format setting inner wrapper */
1080
+ echo '<div class="format-setting-inner">';
1081
+
1082
+ /* allow fields to be filtered */
1083
+ $ot_recognized_dimension_fields = apply_filters( 'ot_recognized_dimension_fields', array(
1084
+ 'width',
1085
+ 'height',
1086
+ 'unit'
1087
+ ), $field_id );
1088
+
1089
+ /* build width dimension */
1090
+ if ( in_array( 'width', $ot_recognized_dimension_fields ) ) {
1091
+
1092
+ $width = isset( $field_value['width'] ) ? esc_attr( $field_value['width'] ) : '';
1093
+
1094
+ echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'width', 'option-tree' ) . '" /></div>';
1095
+
1096
+ }
1097
+
1098
+ /* build height dimension */
1099
+ if ( in_array( 'height', $ot_recognized_dimension_fields ) ) {
1100
+
1101
+ $height = isset( $field_value['height'] ) ? esc_attr( $field_value['height'] ) : '';
1102
+
1103
+ echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[height]" id="' . esc_attr( $field_id ) . '-height" value="' . esc_attr( $height ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'height', 'option-tree' ) . '" /></div>';
1104
+
1105
+ }
1106
+
1107
+ /* build unit dropdown */
1108
+ if ( in_array( 'unit', $ot_recognized_dimension_fields ) ) {
1109
+
1110
+ echo '<div class="ot-option-group ot-option-group--one-third ot-option-group--is-last">';
1111
+
1112
+ echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1113
+
1114
+ echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
1115
+
1116
+ foreach ( ot_recognized_dimension_unit_types( $field_id ) as $unit ) {
1117
+ echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
1118
+ }
1119
+
1120
+ echo '</select>';
1121
+
1122
+ echo '</div>';
1123
+
1124
+ }
1125
+
1126
+ echo '</div>';
1127
+
1128
+ echo '</div>';
1129
+
1130
+ }
1131
+
1132
+ }
1133
+
1134
+ /**
1135
+ * Gallery option type.
1136
+ *
1137
+ * See @ot_display_by_type to see the full list of available arguments.
1138
+ *
1139
+ * @param array The options arguments
1140
+ * @return string The gallery metabox markup.
1141
+ *
1142
+ * @access public
1143
+ * @since 2.2.0
1144
+ */
1145
+ if ( ! function_exists( 'ot_type_gallery' ) ) {
1146
+
1147
+ function ot_type_gallery( $args = array() ) {
1148
+
1149
+ // Turns arguments array into variables
1150
+ extract( $args );
1151
+
1152
+ // Verify a description
1153
+ $has_desc = $field_desc ? true : false;
1154
+
1155
+ // Format setting outer wrapper
1156
+ echo '<div class="format-setting type-gallery ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1157
+
1158
+ // Description
1159
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1160
+
1161
+ // Format setting inner wrapper
1162
+ echo '<div class="format-setting-inner">';
1163
+
1164
+ // Setup the post type
1165
+ $post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
1166
+
1167
+ $field_value = trim( $field_value );
1168
+
1169
+ // Saved values
1170
+ echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="ot-gallery-value ' . esc_attr( $field_class ) . '" />';
1171
+
1172
+ // Search the string for the IDs
1173
+ preg_match( '/ids=\'(.*?)\'/', $field_value, $matches );
1174
+
1175
+ // Turn the field value into an array of IDs
1176
+ if ( isset( $matches[1] ) ) {
1177
+
1178
+ // Found the IDs in the shortcode
1179
+ $ids = explode( ',', $matches[1] );
1180
+
1181
+ } else {
1182
+
1183
+ // The string is only IDs
1184
+ $ids = ! empty( $field_value ) && $field_value != '' ? explode( ',', $field_value ) : array();
1185
+
1186
+ }
1187
+
1188
+ // Has attachment IDs
1189
+ if ( ! empty( $ids ) ) {
1190
+
1191
+ echo '<ul class="ot-gallery-list">';
1192
+
1193
+ foreach( $ids as $id ) {
1194
+
1195
+ if ( $id == '' )
1196
+ continue;
1197
+
1198
+ $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
1199
+
1200
+ echo '<li><img src="' . $thumbnail[0] . '" width="75" height="75" /></li>';
1201
+
1202
+ }
1203
+
1204
+ echo '</ul>';
1205
+
1206
+ echo '
1207
+ <div class="ot-gallery-buttons">
1208
+ <a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' . __( 'Delete Gallery', 'option-tree' ) . '</a>
1209
+ <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Edit Gallery', 'option-tree' ) . '</a>
1210
+ </div>';
1211
+
1212
+ } else {
1213
+
1214
+ echo '
1215
+ <div class="ot-gallery-buttons">
1216
+ <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Create Gallery', 'option-tree' ) . '</a>
1217
+ </div>';
1218
+
1219
+ }
1220
+
1221
+ echo '</div>';
1222
+
1223
+ echo '</div>';
1224
+
1225
+ }
1226
+
1227
+ }
1228
+
1229
+ /**
1230
+ * Google Fonts option type.
1231
+ *
1232
+ * See @ot_display_by_type to see the full list of available arguments.
1233
+ *
1234
+ * @param array An array of arguments.
1235
+ * @return string
1236
+ *
1237
+ * @access public
1238
+ * @since 2.5.0
1239
+ */
1240
+ if ( ! function_exists( 'ot_type_google_fonts' ) ) {
1241
+
1242
+ function ot_type_google_fonts( $args = array() ) {
1243
+
1244
+ /* turns arguments array into variables */
1245
+ extract( $args );
1246
+
1247
+ /* verify a description */
1248
+ $has_desc = $field_desc ? true : false;
1249
+
1250
+ /* format setting outer wrapper */
1251
+ echo '<div class="format-setting type-google-font ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1252
+
1253
+ /* description */
1254
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1255
+
1256
+ /* format setting inner wrapper */
1257
+ echo '<div class="format-setting-inner">';
1258
+
1259
+ /* allow fields to be filtered */
1260
+ $ot_recognized_google_fonts_fields = apply_filters( 'ot_recognized_google_font_fields', array(
1261
+ 'variants',
1262
+ 'subsets'
1263
+ ), $field_id );
1264
+
1265
+ // Set a default to show at least one item.
1266
+ if ( ! is_array( $field_value ) || empty( $field_value ) ) {
1267
+ $field_value = array( array(
1268
+ 'family' => '',
1269
+ 'variants' => array(),
1270
+ 'subsets' => array()
1271
+ ) );
1272
+ }
1273
+
1274
+ foreach( $field_value as $key => $value ) {
1275
+
1276
+ echo '<div class="type-google-font-group">';
1277
+
1278
+ /* build font family */
1279
+ $family = isset( $value['family'] ) ? $value['family'] : '';
1280
+ echo '<div class="option-tree-google-font-family">';
1281
+ echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . __( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . __( 'Remove Google Font', 'option-tree' ) . '</a>';
1282
+ echo '<select name="' . esc_attr( $field_name ) . '[' . $key . '][family]" id="' . esc_attr( $field_id ) . '-' . $key . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1283
+ echo '<option value="">' . __( '-- Choose One --', 'option-tree' ) . '</option>';
1284
+ foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
1285
+ echo '<option value="' . esc_attr( $family_key ) . '" ' . selected( $family, $family_key, false ) . '>' . esc_html( $family_value ) . '</option>';
1286
+ }
1287
+ echo '</select>';
1288
+ echo '</div>';
1289
+
1290
+ /* build font variants */
1291
+ if ( in_array( 'variants', $ot_recognized_google_fonts_fields ) ) {
1292
+ $variants = isset( $value['variants'] ) ? $value['variants'] : array();
1293
+ echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . $key . '-" data-field-name="' . esc_attr( $field_name ) . '[' . $key . '][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1294
+ foreach ( ot_recognized_google_font_variants( $field_id, $family ) as $variant_key => $variant ) {
1295
+ echo '<p class="checkbox-wrap">';
1296
+ echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . $key . '][variants][]" id="' . esc_attr( $field_id ) . '-' . $key . '-' . $variant . '" value="' . esc_attr( $variant ) . '" ' . checked( in_array( $variant, $variants ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1297
+ echo '<label for="' . esc_attr( $field_id ) . '-' . $key . '-' . $variant . '">' . esc_html( $variant ) . '</label>';
1298
+ echo '</p>';
1299
+ }
1300
+ echo '</div>';
1301
+ }
1302
+
1303
+ /* build font subsets */
1304
+ if ( in_array( 'subsets', $ot_recognized_google_fonts_fields ) ) {
1305
+ $subsets = isset( $value['subsets'] ) ? $value['subsets'] : array();
1306
+ echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . $key . '-" data-field-name="' . esc_attr( $field_name ) . '[' . $key . '][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1307
+ foreach ( ot_recognized_google_font_subsets( $field_id, $family ) as $subset_key => $subset ) {
1308
+ echo '<p class="checkbox-wrap">';
1309
+ echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . $key . '][subsets][]" id="' . esc_attr( $field_id ) . '-' . $key . '-' . $subset . '" value="' . esc_attr( $subset ) . '" ' . checked( in_array( $subset, $subsets ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1310
+ echo '<label for="' . esc_attr( $field_id ) . '-' . $key . '-' . $subset . '">' . esc_html( $subset ) . '</label>';
1311
+ echo '</p>';
1312
+ }
1313
+ echo '</div>';
1314
+ }
1315
+
1316
+ echo '</div>';
1317
+
1318
+ }
1319
+
1320
+ echo '<div class="type-google-font-group-clone">';
1321
+
1322
+ /* build font family */
1323
+ echo '<div class="option-tree-google-font-family">';
1324
+ echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . __( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . __( 'Remove Google Font', 'option-tree' ) . '</a>';
1325
+ echo '<select name="' . esc_attr( $field_name ) . '[%key%][family]" id="' . esc_attr( $field_id ) . '-%key%" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1326
+ echo '<option value="">' . __( '-- Choose One --', 'option-tree' ) . '</option>';
1327
+ foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
1328
+ echo '<option value="' . esc_attr( $family_key ) . '">' . esc_html( $family_value ) . '</option>';
1329
+ }
1330
+ echo '</select>';
1331
+ echo '</div>';
1332
+
1333
+ /* build font variants */
1334
+ if ( in_array( 'variants', $ot_recognized_google_fonts_fields ) ) {
1335
+ echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1336
+ echo '</div>';
1337
+ }
1338
+
1339
+ /* build font subsets */
1340
+ if ( in_array( 'subsets', $ot_recognized_google_fonts_fields ) ) {
1341
+ echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1342
+ echo '</div>';
1343
+ }
1344
+
1345
+ echo '</div>';
1346
+
1347
+ echo '<a href="javascript:void(0);" class="js-add-google-font option-tree-ui-button button button-primary right hug-right" title="' . __( 'Add Google Font', 'option-tree' ) . '">' . __( 'Add Google Font', 'option-tree' ) . '</a>';
1348
 
1349
  echo '</div>';
1350
+
1351
  echo '</div>';
1352
 
1353
  }
1354
+
1355
  }
1356
 
1357
  /**
1358
+ * JavaScript option type.
1359
  *
1360
  * See @ot_display_by_type to see the full list of available arguments.
1361
  *
1363
  * @return string
1364
  *
1365
  * @access public
1366
+ * @since 2.5.0
1367
  */
1368
+ if ( ! function_exists( 'ot_type_javascript' ) ) {
1369
 
1370
+ function ot_type_javascript( $args = array() ) {
1371
 
1372
  /* turns arguments array into variables */
1373
  extract( $args );
1375
  /* verify a description */
1376
  $has_desc = $field_desc ? true : false;
1377
 
 
 
 
1378
  /* format setting outer wrapper */
1379
+ echo '<div class="format-setting type-javascript simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
 
 
 
1380
 
1381
  /* description */
1382
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1383
 
1384
  /* format setting inner wrapper */
1385
  echo '<div class="format-setting-inner">';
 
 
 
1386
 
1387
+ /* build textarea for CSS */
1388
+ echo '<textarea class="hidden" id="textarea_' . esc_attr( $field_id ) . '" name="' . esc_attr( $field_name ) .'">' . esc_attr( $field_value ) . '</textarea>';
1389
 
1390
+ /* build pre to convert it into ace editor later */
1391
+ echo '<pre class="ot-javascript-editor ' . esc_attr( $field_class ) . '" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</pre>';
1392
+
1393
+ echo '</div>';
1394
+
1395
  echo '</div>';
1396
 
1397
  }
1399
  }
1400
 
1401
  /**
1402
+ * Link Color option type.
1403
  *
1404
  * See @ot_display_by_type to see the full list of available arguments.
1405
  *
1406
  * @param array The options arguments
1407
+ * @return string The markup.
1408
  *
1409
  * @access public
1410
+ * @since 2.5.0
1411
  */
1412
+ if ( ! function_exists( 'ot_type_link_color' ) ) {
1413
 
1414
+ function ot_type_link_color( $args = array() ) {
1415
+
1416
+ /* turns arguments array into variables */
1417
  extract( $args );
1418
+
1419
+ /* verify a description */
1420
  $has_desc = $field_desc ? true : false;
1421
+
1422
+ /* format setting outer wrapper */
1423
+ echo '<div class="format-setting type-link-color ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1424
+
1425
+ /* description */
1426
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1427
+
1428
+ /* format setting inner wrapper */
1429
  echo '<div class="format-setting-inner">';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1430
 
1431
+ /* allow fields to be filtered */
1432
+ $ot_recognized_link_color_fields = apply_filters( 'ot_recognized_link_color_fields', array(
1433
+ 'link' => _x( 'Standard', 'color picker', 'option-tree' ),
1434
+ 'hover' => _x( 'Hover', 'color picker', 'option-tree' ),
1435
+ 'active' => _x( 'Active', 'color picker', 'option-tree' ),
1436
+ 'visited' => _x( 'Visited', 'color picker', 'option-tree' ),
1437
+ 'focus' => _x( 'Focus', 'color picker', 'option-tree' )
1438
+ ), $field_id );
1439
+
1440
+ /* build link color fields */
1441
+ foreach( $ot_recognized_link_color_fields as $type => $label ) {
1442
+
1443
+ if ( array_key_exists( $type, $ot_recognized_link_color_fields ) ) {
1444
 
1445
+ echo '<div class="option-tree-ui-colorpicker-input-wrap">';
1446
+
1447
+ echo '<label for="' . esc_attr( $field_id ) . '-picker-' . $type . '" class="option-tree-ui-colorpicker-label">' . esc_attr( $label ) . '</label>';
1448
+
1449
+ /* colorpicker JS */
1450
+ echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker-' . $type . '"); });</script>';
1451
+
1452
+ /* set color */
1453
+ $color = isset( $field_value[ $type ] ) ? esc_attr( $field_value[ $type ] ) : '';
1454
 
1455
+ /* set default color */
1456
+ $std = isset( $field_std[ $type ] ) ? 'data-default-color="' . $field_std[ $type ] . '"' : '';
1457
+
1458
+ /* input */
1459
+ echo '<input type="text" name="' . esc_attr( $field_name ) . '[' . $type . ']" id="' . esc_attr( $field_id ) . '-picker-' . $type . '" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" ' . $std . ' />';
1460
+
1461
+ echo '</div>';
1462
+
1463
  }
1464
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1465
  }
1466
+
1467
  echo '</div>';
1468
+
1469
  echo '</div>';
1470
+
1471
  }
1472
 
1473
  }
1583
  /* build measurement */
1584
  echo '<select name="' . esc_attr( $field_name ) . '[1]" id="' . esc_attr( $field_id ) . '-1" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1585
 
1586
+ echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
1587
 
1588
  foreach ( ot_measurement_unit_types( $field_id ) as $unit ) {
1589
  echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value[1] ) ? selected( $field_value[1], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
1663
  * @since 2.2.0
1664
  */
1665
  if ( ! function_exists( 'ot_type_on_off' ) ) {
1666
+
1667
  function ot_type_on_off( $args = array() ) {
1668
+
1669
  /* turns arguments array into variables */
1670
  extract( $args );
1671
+
1672
  /* verify a description */
1673
  $has_desc = $field_desc ? true : false;
1674
+
1675
  /* format setting outer wrapper */
1676
  echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1677
+
1678
  /* description */
1679
  echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
1680
+
1681
  /* format setting inner wrapper */
1682
  echo '<div class="format-setting-inner">';
1683
+
1684
+ /* Force only two choices, and allowing filtering on the choices value & label */
1685
  $field_choices = array(
1686
  array(
1687
+ /**
1688
+ * Filter the value of the On button.
1689
+ *
1690
+ * @since 2.5.0
1691
+ *
1692
+ * @param string The On button value. Default 'on'.
1693
+ * @param string $field_id The field ID.
1694
+ * @param string $filter_id For filtering both on/off value with one function.
1695
+ */
1696
+ 'value' => apply_filters( 'ot_on_off_switch_on_value', 'on', $field_id, 'on' ),
1697
+ /**
1698
+ * Filter the label of the On button.
1699
+ *
1700
+ * @since 2.5.0
1701
+ *
1702
+ * @param string The On button label. Default 'On'.
1703
+ * @param string $field_id The field ID.
1704
+ * @param string $filter_id For filtering both on/off label with one function.
1705
+ */
1706
+ 'label' => apply_filters( 'ot_on_off_switch_on_label', __( 'On', 'option-tree' ), $field_id, 'on' )
1707
  ),
1708
  array(
1709
+ /**
1710
+ * Filter the value of the Off button.
1711
+ *
1712
+ * @since 2.5.0
1713
+ *
1714
+ * @param string The Off button value. Default 'off'.
1715
+ * @param string $field_id The field ID.
1716
+ * @param string $filter_id For filtering both on/off value with one function.
1717
+ */
1718
+ 'value' => apply_filters( 'ot_on_off_switch_off_value', 'off', $field_id, 'off' ),
1719
+ /**
1720
+ * Filter the label of the Off button.
1721
+ *
1722
+ * @since 2.5.0
1723
+ *
1724
+ * @param string The Off button label. Default 'Off'.
1725
+ * @param string $field_id The field ID.
1726
+ * @param string $filter_id For filtering both on/off label with one function.
1727
+ */
1728
+ 'label' => apply_filters( 'ot_on_off_switch_off_label', __( 'Off', 'option-tree' ), $field_id, 'off' )
1729
  )
1730
  );
1731
+
1732
+ /**
1733
+ * Filter the width of the On/Off switch.
1734
+ *
1735
+ * @since 2.5.0
1736
+ *
1737
+ * @param string The switch width. Default '100px'.
1738
+ * @param string $field_id The field ID.
1739
+ */
1740
+ $switch_width = apply_filters( 'ot_on_off_switch_width', '100px', $field_id );
1741
+
1742
+ echo '<div class="on-off-switch"' . ( $switch_width != '100px' ? sprintf( ' style="width:%s"', $switch_width ) : '' ) . '>';
1743
+
1744
  /* build radio */
1745
  foreach ( (array) $field_choices as $key => $choice ) {
1746
  echo '
1747
  <input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '"' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" />
1748
  <label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" onclick="">' . esc_attr( $choice['label'] ) . '</label>';
1749
  }
1750
+
1751
  echo '<span class="slide-button"></span>';
1752
+
1753
  echo '</div>';
1754
+
1755
  echo '</div>';
1756
+
1757
  echo '</div>';
1758
+
1759
  }
1760
+
1761
  }
1762
 
1763
  /**
2446
 
2447
  }
2448
 
2449
+ /**
2450
+ * Spacing Option Type.
2451
+ *
2452
+ * See @ot_display_by_type to see the full list of available arguments.
2453
+ *
2454
+ * @param array An array of arguments.
2455
+ * @return string
2456
+ *
2457
+ * @access public
2458
+ * @since 2.5.0
2459
+ */
2460
+ if ( ! function_exists( 'ot_type_spacing' ) ) {
2461
+
2462
+ function ot_type_spacing( $args = array() ) {
2463
+
2464
+ /* turns arguments array into variables */
2465
+ extract( $args );
2466
+
2467
+ /* verify a description */
2468
+ $has_desc = $field_desc ? true : false;
2469
+
2470
+ /* format setting outer wrapper */
2471
+ echo '<div class="format-setting type-spacing ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2472
+
2473
+ /* description */
2474
+ echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
2475
+
2476
+ /* format setting inner wrapper */
2477
+ echo '<div class="format-setting-inner">';
2478
+
2479
+ /* allow fields to be filtered */
2480
+ $ot_recognized_spacing_fields = apply_filters( 'ot_recognized_spacing_fields', array(
2481
+ 'top',
2482
+ 'right',
2483
+ 'bottom',
2484
+ 'left',
2485
+ 'unit'
2486
+ ), $field_id );
2487
+
2488
+ /* build top spacing */
2489
+ if ( in_array( 'top', $ot_recognized_spacing_fields ) ) {
2490
+
2491
+ $top = isset( $field_value['top'] ) ? esc_attr( $field_value['top'] ) : '';
2492
+
2493
+ echo '<div class="ot-option-group"><span class="ot-icon-arrow-up ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[top]" id="' . esc_attr( $field_id ) . '-top" value="' . $top . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'top', 'option-tree' ) . '" /></div>';
2494
+
2495
+ }
2496
+
2497
+ /* build right spacing */
2498
+ if ( in_array( 'right', $ot_recognized_spacing_fields ) ) {
2499
+
2500
+ $right = isset( $field_value['right'] ) ? esc_attr( $field_value['right'] ) : '';
2501
+
2502
+ echo '<div class="ot-option-group"><span class="ot-icon-arrow-right ot-option-group--icon"></span></span><input type="text" name="' . esc_attr( $field_name ) . '[right]" id="' . esc_attr( $field_id ) . '-right" value="' . $right . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'right', 'option-tree' ) . '" /></div>';
2503
+
2504
+ }
2505
+
2506
+ /* build bottom spacing */
2507
+ if ( in_array( 'bottom', $ot_recognized_spacing_fields ) ) {
2508
+
2509
+ $bottom = isset( $field_value['bottom'] ) ? esc_attr( $field_value['bottom'] ) : '';
2510
+
2511
+ echo '<div class="ot-option-group"><span class="ot-icon-arrow-down ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[bottom]" id="' . esc_attr( $field_id ) . '-bottom" value="' . $bottom . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'bottom', 'option-tree' ) . '" /></div>';
2512
+
2513
+ }
2514
+
2515
+ /* build left spacing */
2516
+ if ( in_array( 'left', $ot_recognized_spacing_fields ) ) {
2517
+
2518
+ $left = isset( $field_value['left'] ) ? esc_attr( $field_value['left'] ) : '';
2519
+
2520
+ echo '<div class="ot-option-group"><span class="ot-icon-arrow-left ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[left]" id="' . esc_attr( $field_id ) . '-left" value="' . $left . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'left', 'option-tree' ) . '" /></div>';
2521
+
2522
+ }
2523
+
2524
+ /* build unit dropdown */
2525
+ if ( in_array( 'unit', $ot_recognized_spacing_fields ) ) {
2526
+
2527
+ echo '<div class="ot-option-group ot-option-group--is-last">';
2528
+
2529
+ echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2530
+
2531
+ echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
2532
+
2533
+ foreach ( ot_recognized_spacing_unit_types( $field_id ) as $unit ) {
2534
+ echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
2535
+ }
2536
+
2537
+ echo '</select>';
2538
+
2539
+ echo '</div>';
2540
+
2541
+ }
2542
+
2543
+ echo '</div>';
2544
+
2545
+ echo '</div>';
2546
+
2547
+ }
2548
+
2549
+ }
2550
+
2551
  /**
2552
  * Tab option type.
2553
  *
3255
  }
3256
 
3257
  /* End of file ot-functions-option-types.php */
3258
+ /* Location: ./includes/ot-functions-option-types.php */
includes/ot-functions-settings-page.php CHANGED
@@ -33,7 +33,7 @@ if ( ! function_exists( 'ot_type_theme_options_ui' ) ) {
33
  echo '<div class="description">';
34
 
35
  echo '<h4>'. __( 'Warning!', 'option-tree' ) . '</h4>';
36
- echo '<p class="warning">' . sprintf( __( 'Go to the %s page if you want to save data, this page is for adding settings.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'themes.php?page=ot-theme-options' ) . '"><code>Appearance->Theme Options</code></a>' ) . '</p>';
37
  echo '<p class="warning">' . sprintf( __( 'If you\'re unsure or not completely positive that you should be editing these settings, you should read the %s first.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'admin.php?page=ot-documentation' ) . '"><code>OptionTree->Documentation</code></a>' ) . '</p>';
38
  echo '<h4>'. __( 'Things could break or be improperly displayed to the end-user if you do one of the following:', 'option-tree' ) . '</h4>';
39
  echo '<p class="warning">' . __( 'Give two sections the same ID, give two settings the same ID, give two contextual help content areas the same ID, don\'t create any settings, or have a section at the end of the settings list.', 'option-tree' ) . '</p>';
33
  echo '<div class="description">';
34
 
35
  echo '<h4>'. __( 'Warning!', 'option-tree' ) . '</h4>';
36
+ echo '<p class="warning">' . sprintf( __( 'Go to the %s page if you want to save data, this page is for adding settings.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) ) . '"><code>Appearance->Theme Options</code></a>' ) . '</p>';
37
  echo '<p class="warning">' . sprintf( __( 'If you\'re unsure or not completely positive that you should be editing these settings, you should read the %s first.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'admin.php?page=ot-documentation' ) . '"><code>OptionTree->Documentation</code></a>' ) . '</p>';
38
  echo '<h4>'. __( 'Things could break or be improperly displayed to the end-user if you do one of the following:', 'option-tree' ) . '</h4>';
39
  echo '<p class="warning">' . __( 'Give two sections the same ID, give two settings the same ID, give two contextual help content areas the same ID, don\'t create any settings, or have a section at the end of the settings list.', 'option-tree' ) . '</p>';
includes/ot-functions.php CHANGED
@@ -96,7 +96,7 @@ if ( ! function_exists( 'ot_get_option' ) ) {
96
  }
97
 
98
  /**
99
- * Echo Option. (via Github @joshlevinson)
100
  *
101
  * Helper function to echo the option value.
102
  * If no value has been saved, it echos $default.
@@ -221,10 +221,13 @@ if ( ! function_exists( 'ot_load_dynamic_css' ) ) {
221
  /* don't load in the admin */
222
  if ( is_admin() )
223
  return;
224
-
225
  /* grab a copy of the paths */
226
  $ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
227
-
 
 
 
228
  if ( ! empty( $ot_css_file_paths ) ) {
229
 
230
  $last_css = '';
@@ -262,9 +265,83 @@ if ( ! function_exists( 'ot_load_dynamic_css' ) ) {
262
  }
263
 
264
  /**
265
- * Registers the Theme Option page link for the admin bar.
266
  *
267
- * @uses ot_register_settings()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  *
269
  * @return void
270
  *
96
  }
97
 
98
  /**
99
+ * Echo Option.
100
  *
101
  * Helper function to echo the option value.
102
  * If no value has been saved, it echos $default.
221
  /* don't load in the admin */
222
  if ( is_admin() )
223
  return;
224
+
225
  /* grab a copy of the paths */
226
  $ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
227
+ if ( is_multisite() ) {
228
+ $ot_css_file_paths = get_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
229
+ }
230
+
231
  if ( ! empty( $ot_css_file_paths ) ) {
232
 
233
  $last_css = '';
265
  }
266
 
267
  /**
268
+ * Enqueue the Google Fonts CSS.
269
  *
270
+ * @return void
271
+ *
272
+ * @access public
273
+ * @since 2.5.0
274
+ */
275
+ if ( ! function_exists( 'ot_load_google_fonts_css' ) ) {
276
+
277
+ function ot_load_google_fonts_css() {
278
+
279
+ /* don't load in the admin */
280
+ if ( is_admin() )
281
+ return;
282
+
283
+ $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
284
+ $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
285
+ $families = array();
286
+ $subsets = array();
287
+ $append = '';
288
+
289
+ if ( ! empty( $ot_set_google_fonts ) ) {
290
+
291
+ foreach( $ot_set_google_fonts as $id => $fonts ) {
292
+
293
+ foreach( $fonts as $font ) {
294
+
295
+ // Can't find the font, bail!
296
+ if ( ! isset( $ot_google_fonts[$font['family']]['family'] ) ) {
297
+ continue;
298
+ }
299
+
300
+ // Set variants & subsets
301
+ if ( ! empty( $font['variants'] ) && is_array( $font['variants'] ) ) {
302
+
303
+ // Variants string
304
+ $variants = ':' . implode( ',', $font['variants'] );
305
+
306
+ // Add subsets to array
307
+ if ( ! empty( $font['subsets'] ) && is_array( $font['subsets'] ) ) {
308
+ foreach( $font['subsets'] as $subset ) {
309
+ $subsets[] = $subset;
310
+ }
311
+ }
312
+
313
+ }
314
+
315
+ // Add family & variants to array
316
+ if ( isset( $variants ) ) {
317
+ $families[] = str_replace( ' ', '+', $ot_google_fonts[$font['family']]['family'] ) . $variants;
318
+ }
319
+
320
+ }
321
+
322
+ }
323
+
324
+ }
325
+
326
+ if ( ! empty( $families ) ) {
327
+
328
+ // Append all subsets to the path, unless the only subset is latin.
329
+ if ( ! empty( $subsets ) ) {
330
+ $subsets = implode( ',', array_unique( $subsets ) );
331
+ if ( $subsets != 'latin' ) {
332
+ $append = '&subset=' . $subsets;
333
+ }
334
+ }
335
+
336
+ wp_enqueue_style( 'ot-google-fonts', esc_url( '//fonts.googleapis.com/css?family=' . implode( '|', $families ) ) . $append, false, null );
337
+ }
338
+
339
+ }
340
+
341
+ }
342
+
343
+ /**
344
+ * Registers the Theme Option page link for the admin bar.
345
  *
346
  * @return void
347
  *
includes/ot-settings-api.php CHANGED
@@ -49,9 +49,18 @@ if ( ! class_exists( 'OT_Settings' ) ) {
49
  * @since 2.0
50
  */
51
  public function hooks() {
52
-
 
 
 
 
 
 
 
 
 
53
  /* add pages & menu items */
54
- add_action( 'admin_menu', array( $this, 'add_page' ) );
55
 
56
  /* register sections */
57
  add_action( 'admin_init', array( $this, 'add_sections' ) );
@@ -474,6 +483,7 @@ if ( ! class_exists( 'OT_Settings' ) ) {
474
  * @since 2.0
475
  */
476
  public function display_setting( $args = array() ) {
 
477
  extract( $args );
478
 
479
  /* get current saved data */
@@ -511,6 +521,12 @@ if ( ! class_exists( 'OT_Settings' ) ) {
511
  'get_option' => $get_option,
512
  );
513
 
 
 
 
 
 
 
514
  /* get the option HTML */
515
  echo ot_display_by_type( $_args );
516
  }
49
  * @since 2.0
50
  */
51
  public function hooks() {
52
+
53
+ /**
54
+ * Filter the `admin_menu` action hook priority.
55
+ *
56
+ * @since 2.5.0
57
+ *
58
+ * @param int $priority The priority. Default '10'.
59
+ */
60
+ $priority = apply_filters( 'ot_admin_menu_priority', 10 );
61
+
62
  /* add pages & menu items */
63
+ add_action( 'admin_menu', array( $this, 'add_page' ), $priority );
64
 
65
  /* register sections */
66
  add_action( 'admin_init', array( $this, 'add_sections' ) );
483
  * @since 2.0
484
  */
485
  public function display_setting( $args = array() ) {
486
+
487
  extract( $args );
488
 
489
  /* get current saved data */
521
  'get_option' => $get_option,
522
  );
523
 
524
+ // Limit DB queries for Google Fonts.
525
+ if ( $type == 'google-fonts' ) {
526
+ ot_fetch_google_fonts();
527
+ ot_set_google_fonts( $id, $field_value );
528
+ }
529
+
530
  /* get the option HTML */
531
  echo ot_display_by_type( $_args );
532
  }
languages/option-tree-et.mo ADDED
Binary file
languages/option-tree-et.po ADDED
@@ -0,0 +1,3017 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: OptionTree\n"
4
+ "POT-Creation-Date: 2015-02-09 08:03-0800\n"
5
+ "PO-Revision-Date: 2015-02-09 08:03-0800\n"
6
+ "Last-Translator: Derek Herman <derek@valendesigns.com>\n"
7
+ "Language-Team: Valen Designs\n"
8
+ "Language: et_EE\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.7.4\n"
13
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
14
+ "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
15
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
16
+ "X-Poedit-Basepath: .\n"
17
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
+ "X-Poedit-SearchPath-0: ..\n"
19
+ "X-Poedit-SearchPathExcluded-0: ../.git\n"
20
+ "X-Poedit-SearchPathExcluded-1: ../composer.json\n"
21
+ "X-Poedit-SearchPathExcluded-2: ../assets\n"
22
+
23
+ #: ../includes/ot-cleanup-api.php:84 ../includes/ot-cleanup-api.php:101
24
+ #: ../includes/ot-cleanup-api.php:130
25
+ msgid "OptionTree Cleanup"
26
+ msgstr "OptionTree puhastus"
27
+
28
+ #: ../includes/ot-cleanup-api.php:101
29
+ #, php-format
30
+ msgid ""
31
+ "OptionTree has outdated data that should be removed. Please go to %s for "
32
+ "more information."
33
+ msgstr ""
34
+ "OptionTreel on aegunud andmeid, mis tuleks eemaldada. Lisainformatsiooni "
35
+ "saamiseks mine palun %s."
36
+
37
+ #: ../includes/ot-cleanup-api.php:136
38
+ msgid "Multiple Media Posts"
39
+ msgstr "Mitme meediaga postitused"
40
+
41
+ #: ../includes/ot-cleanup-api.php:138
42
+ #, php-format
43
+ msgid ""
44
+ "There are currently %s OptionTree media posts in your database. At some "
45
+ "point in the past, a version of OptionTree added multiple %s media post "
46
+ "objects cluttering up your %s table. There is no associated risk or harm "
47
+ "that these posts have caused other than to add size to your overall "
48
+ "database. Thankfully, there is a way to remove all these orphaned media "
49
+ "posts and get your database cleaned up."
50
+ msgstr ""
51
+ "Sul on hetkel %s OptionTree meedia postitust andmebaasis. Millalgi varem "
52
+ "lisas OptionTree mitu %s meedia postitust, risustades %s tabelit. Nende "
53
+ "postitustega ei kaasne mingeid riske või kahju peale selle, et andmebaasi "
54
+ "maht on suurem. Õnneks on nende orbudeks jäänud postituste eemaldamiseks "
55
+ "moodus olemas, nii et saab andmebaasi jälle puhtaks."
56
+
57
+ #: ../includes/ot-cleanup-api.php:140
58
+ #, php-format
59
+ msgid ""
60
+ "By clicking the button below, OptionTree will delete %s records and "
61
+ "consolidate them into one single OptionTree media post for uploading "
62
+ "attachments to. Additionally, the attachments will have their parent ID "
63
+ "updated to the correct media post."
64
+ msgstr ""
65
+ "Vajutades allolevat nuppu, kustutab OptionTree %s kirjet ning ühendab nad "
66
+ "ainsasse OptionTree meedia postitusse, kuhu manuseid üles laaditakse. Lisaks "
67
+ "määratakse nende manuste vanema ID-le õige väärtus."
68
+
69
+ #: ../includes/ot-cleanup-api.php:142
70
+ msgid ""
71
+ "This could take a while to fully process depending on how many records you "
72
+ "have in your database, so please be patient and wait for the script to "
73
+ "finish."
74
+ msgstr ""
75
+ "See protsess võtab aega sõltuvalt andmebaasis olevate kirjete arvust, seega "
76
+ "palun olge kannatlikud ja laske skriptil oma töö lõpetada."
77
+
78
+ #: ../includes/ot-cleanup-api.php:144
79
+ #, php-format
80
+ msgid ""
81
+ "%s Your server is running in safe mode. Which means this page will "
82
+ "automatically reload after deleting %s posts, you can filter this number "
83
+ "using %s if your server is having trouble processing that many at one time."
84
+ msgstr ""
85
+ "%s Sinu server töötab turvarežiimis, mistõttu see lehekülg laetakse peale %s "
86
+ "postituse kustutamist uuesti. Kui serveril on nii korraga nii mitme "
87
+ "postituse töötlemisega probleeme, siis on seda numbrit võimalik %s filtriga "
88
+ "muuta."
89
+
90
+ #: ../includes/ot-cleanup-api.php:146
91
+ msgid "Consolidate Posts"
92
+ msgstr "Konsolideeri postitused"
93
+
94
+ #: ../includes/ot-cleanup-api.php:174
95
+ msgid "Reloading..."
96
+ msgstr "Värskendame..."
97
+
98
+ #: ../includes/ot-cleanup-api.php:210
99
+ msgid "Clean up script has completed, the page will now reload..."
100
+ msgstr "Puhastusskript on töö lõpetanud, leht laeb end kohe uuesti..."
101
+
102
+ #: ../includes/ot-cleanup-api.php:230
103
+ msgid "Outdated Table"
104
+ msgstr "Aegunud tabel"
105
+
106
+ #: ../includes/ot-cleanup-api.php:232
107
+ #, php-format
108
+ msgid ""
109
+ "If you have upgraded from an old 1.x version of OptionTree at some point, "
110
+ "you have an extra %s table in your database that can be removed. It's not "
111
+ "hurting anything, but does not need to be there. If you want to remove it. "
112
+ "Click the button below."
113
+ msgstr ""
114
+ "Kui oled millalgi OptionTreed uuendanud vanalt 1.x versioonilt, on sul "
115
+ "andmebaasis üleliigne tabel %s, mille saaks eemaldada. See ei tee midagi "
116
+ "halba ning ei pea seal olema. Eemaldamiseks vajuta allolevat nuppu."
117
+
118
+ #: ../includes/ot-cleanup-api.php:234
119
+ msgid "Drop Table"
120
+ msgstr "Eemalda tabel"
121
+
122
+ #: ../includes/ot-cleanup-api.php:238
123
+ #, php-format
124
+ msgid "Deleting the outdated and unused %s table..."
125
+ msgstr "Kustutan aegunud ja kasutamata tabeli %s..."
126
+
127
+ #: ../includes/ot-cleanup-api.php:244
128
+ #, php-format
129
+ msgid "The %s table has been successfully deleted. The page will now reload..."
130
+ msgstr "Tabel %s kustutatu edukalt. Leht laetakse kohe uuesti..."
131
+
132
+ #: ../includes/ot-cleanup-api.php:256
133
+ #, php-format
134
+ msgid "Something went wrong. The %s table was not deleted."
135
+ msgstr "Midagi läks valesti. Tabelit %s ei kustutatud."
136
+
137
+ #: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
138
+ #: ../includes/ot-functions-admin.php:169
139
+ #: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:361
140
+ msgid "Theme Options"
141
+ msgstr "Teema seaded"
142
+
143
+ #: ../includes/ot-functions-admin.php:56
144
+ #: ../includes/ot-functions-admin.php:126
145
+ #: ../includes/ot-functions-admin.php:220
146
+ msgid "Theme Options updated."
147
+ msgstr "Teema seaded on uuendatud."
148
+
149
+ #: ../includes/ot-functions-admin.php:57
150
+ #: ../includes/ot-functions-admin.php:127
151
+ #: ../includes/ot-functions-admin.php:221
152
+ msgid "Theme Options reset."
153
+ msgstr "Teema valikute algseadistamine."
154
+
155
+ #: ../includes/ot-functions-admin.php:58
156
+ #: ../includes/ot-functions-settings-page.php:94
157
+ #: ../includes/ot-functions-settings-page.php:133
158
+ msgid "Save Changes"
159
+ msgstr "Salvesta muudatused"
160
+
161
+ #: ../includes/ot-functions-admin.php:97
162
+ msgid ""
163
+ "The Theme Options UI Builder is being overridden by a custom file in your "
164
+ "theme. Any changes you make via the UI Builder will not be saved."
165
+ msgstr ""
166
+ "Teema kaustas on kohandatud fail, mistõttu Teema Valikute ehitaja "
167
+ "kasutajaliideses tehtud muudatused ei salvestu."
168
+
169
+ #: ../includes/ot-functions-admin.php:109
170
+ #: ../includes/ot-functions-admin.php:110
171
+ #: ../includes/ot-functions-docs-page.php:821
172
+ msgid "OptionTree"
173
+ msgstr "OptionTree"
174
+
175
+ #: ../includes/ot-functions-admin.php:120
176
+ #: ../includes/ot-functions-admin.php:121
177
+ #: ../includes/ot-functions-admin.php:163
178
+ #: ../includes/ot-functions-admin.php:187
179
+ #: ../includes/ot-functions-docs-page.php:49
180
+ msgid "Settings"
181
+ msgstr "Seaded"
182
+
183
+ #: ../includes/ot-functions-admin.php:128
184
+ #: ../includes/ot-functions-admin.php:222
185
+ msgid "Save Settings"
186
+ msgstr "Salvesta seaded"
187
+
188
+ #: ../includes/ot-functions-admin.php:133
189
+ msgid "Theme Options UI"
190
+ msgstr "Teema valikute kasutajaliides"
191
+
192
+ #: ../includes/ot-functions-admin.php:137
193
+ msgid "Import"
194
+ msgstr "Impordi"
195
+
196
+ #: ../includes/ot-functions-admin.php:141
197
+ msgid "Export"
198
+ msgstr "Ekspordi"
199
+
200
+ #: ../includes/ot-functions-admin.php:145
201
+ #: ../includes/ot-functions-admin.php:175
202
+ #: ../includes/ot-functions-admin.php:199
203
+ msgid "Layouts"
204
+ msgstr "Paigutused"
205
+
206
+ #: ../includes/ot-functions-admin.php:151
207
+ msgid "Theme Options UI Builder"
208
+ msgstr "Teema valikute kasutajaliidese ehitaja"
209
+
210
+ #: ../includes/ot-functions-admin.php:157
211
+ msgid "Settings XML"
212
+ msgstr "Seadete XML"
213
+
214
+ #: ../includes/ot-functions-admin.php:181
215
+ msgid "Settings PHP File"
216
+ msgstr "Seadete PHP fail"
217
+
218
+ #: ../includes/ot-functions-admin.php:205
219
+ msgid "Layout Management"
220
+ msgstr "Paigutuste haldus"
221
+
222
+ #: ../includes/ot-functions-admin.php:214
223
+ #: ../includes/ot-functions-admin.php:215
224
+ msgid "Documentation"
225
+ msgstr "Dokumentatsioon"
226
+
227
+ #: ../includes/ot-functions-admin.php:227
228
+ msgid "Creating Options"
229
+ msgstr "Seadete loomine"
230
+
231
+ #: ../includes/ot-functions-admin.php:231
232
+ msgid "Option Types"
233
+ msgstr "Valikute tüübid"
234
+
235
+ #: ../includes/ot-functions-admin.php:235
236
+ msgid "Function References"
237
+ msgstr "Funktsioonide ülevaade"
238
+
239
+ #: ../includes/ot-functions-admin.php:239
240
+ #: ../includes/ot-functions-admin.php:281
241
+ #: ../includes/ot-functions-settings-page.php:366
242
+ msgid "Theme Mode"
243
+ msgstr "Teema režiim"
244
+
245
+ #: ../includes/ot-functions-admin.php:243
246
+ #: ../includes/ot-functions-admin.php:287
247
+ msgid "Meta Boxes"
248
+ msgstr "Meta kastid"
249
+
250
+ #: ../includes/ot-functions-admin.php:247
251
+ msgid "Code Examples"
252
+ msgstr "Koodinäited"
253
+
254
+ #: ../includes/ot-functions-admin.php:251
255
+ msgid "Layouts Overview"
256
+ msgstr "Paigutuste ülevaade"
257
+
258
+ #: ../includes/ot-functions-admin.php:257
259
+ msgid "Overview of available Theme Option fields."
260
+ msgstr "Võimalike teema valikute väljade ülevaade."
261
+
262
+ #: ../includes/ot-functions-admin.php:263
263
+ msgid "Option types in alphabetical order & hooks to filter them."
264
+ msgstr ""
265
+ "Valikutüübid tähestikulises järjekorras ja konksud nende filtreerimiseks."
266
+
267
+ #: ../includes/ot-functions-admin.php:269
268
+ msgid "Function Reference:ot_get_option()"
269
+ msgstr "Funktsiooni ülevaade:ot_get_option()"
270
+
271
+ #: ../includes/ot-functions-admin.php:275
272
+ msgid "Function Reference:get_option_tree()"
273
+ msgstr "Funktsiooni ülevaade:get_option_tree()"
274
+
275
+ #: ../includes/ot-functions-admin.php:293
276
+ msgid "Code examples for front-end development."
277
+ msgstr "Koodinäited veebilehe välise poole arenduseks."
278
+
279
+ #: ../includes/ot-functions-admin.php:299
280
+ msgid "What's a layout anyhow?"
281
+ msgstr "Mis siis ikkagi on paigutus?"
282
+
283
+ #: ../includes/ot-functions-admin.php:502
284
+ #: ../includes/ot-functions-admin.php:614
285
+ #: ../includes/ot-functions-admin.php:683
286
+ #, php-format
287
+ msgid "The %s input field for %s only allows numeric values."
288
+ msgstr "%s sisendväli %s jaoks lubab vaid numbrilisi väärtusi."
289
+
290
+ #: ../includes/ot-functions-admin.php:512
291
+ msgid "The Colorpicker only allows valid hexadecimal values."
292
+ msgstr ""
293
+ "Värvi valija lubab vaid sobivaid kuueteistkümnendiksüsteemis väärtuseid."
294
+
295
+ #: ../includes/ot-functions-admin.php:566
296
+ #, php-format
297
+ msgid "The %s Colorpicker only allows valid hexadecimal values."
298
+ msgstr "%s värvi valija lubab väärtuseid vaid kuueteistkümnendiksüsteemis."
299
+
300
+ #: ../includes/ot-functions-admin.php:849
301
+ #: ../includes/ot-functions-docs-page.php:398
302
+ #: ../includes/ot-functions-settings-page.php:170 ../ot-loader.php:782
303
+ msgid "Send to OptionTree"
304
+ msgstr "Saada OptionTree-le"
305
+
306
+ #: ../includes/ot-functions-admin.php:850
307
+ #: ../includes/ot-functions-option-types.php:257
308
+ #: ../includes/ot-functions-option-types.php:3243
309
+ msgid "Remove Media"
310
+ msgstr "Eemalda meedia"
311
+
312
+ #: ../includes/ot-functions-admin.php:851
313
+ msgid "Are you sure you want to reset back to the defaults?"
314
+ msgstr "Kas olete kindel, et soovite taastada algseaded?"
315
+
316
+ #: ../includes/ot-functions-admin.php:852
317
+ msgid "You can't remove this! But you can edit the values."
318
+ msgstr "Te ei saa seda eemaldada! Väärtuste muutmine on lubatud."
319
+
320
+ #: ../includes/ot-functions-admin.php:853
321
+ msgid "Are you sure you want to remove this?"
322
+ msgstr "Kas olete kindel, et soovite seda eemaldada?"
323
+
324
+ #: ../includes/ot-functions-admin.php:854
325
+ msgid "Are you sure you want to activate this layout?"
326
+ msgstr "Kas olete kindel, et soovite seda paigutust aktiveerida?"
327
+
328
+ #: ../includes/ot-functions-admin.php:855
329
+ msgid "Sorry, you can't have settings three levels deep."
330
+ msgstr "Kahjuks ei saa sätteid määrata kolmanda taseme sügavusega."
331
+
332
+ #: ../includes/ot-functions-admin.php:856
333
+ #: ../includes/ot-functions-option-types.php:1208
334
+ msgid "Delete Gallery"
335
+ msgstr "Kustuta galerii"
336
+
337
+ #: ../includes/ot-functions-admin.php:857
338
+ #: ../includes/ot-functions-option-types.php:1209
339
+ msgid "Edit Gallery"
340
+ msgstr "Muuda galeriid"
341
+
342
+ #: ../includes/ot-functions-admin.php:858
343
+ #: ../includes/ot-functions-option-types.php:1216
344
+ msgid "Create Gallery"
345
+ msgstr "Loo galerii"
346
+
347
+ #: ../includes/ot-functions-admin.php:859
348
+ msgid "Are you sure you want to delete this Gallery?"
349
+ msgstr "Kas olete kindel, et soovite seda galeriid kustutada?"
350
+
351
+ #: ../includes/ot-functions-admin.php:860
352
+ msgid "Today"
353
+ msgstr "Täna"
354
+
355
+ #: ../includes/ot-functions-admin.php:861
356
+ msgid "Now"
357
+ msgstr "Praegu"
358
+
359
+ #: ../includes/ot-functions-admin.php:862
360
+ msgid "Close"
361
+ msgstr "Sulge"
362
+
363
+ #: ../includes/ot-functions-admin.php:863
364
+ msgid "Featured Image"
365
+ msgstr "Tunuuspilt"
366
+
367
+ #: ../includes/ot-functions-admin.php:864
368
+ #: ../includes/ot-functions-admin.php:3247
369
+ #: ../includes/ot-functions-admin.php:3308
370
+ msgid "Image"
371
+ msgstr "Pilt"
372
+
373
+ #: ../includes/ot-functions-admin.php:932
374
+ msgid "Option Tree"
375
+ msgstr "Option Tree"
376
+
377
+ #: ../includes/ot-functions-admin.php:1069
378
+ msgid "General"
379
+ msgstr "Üldseaded"
380
+
381
+ #: ../includes/ot-functions-admin.php:1075
382
+ msgid "Sample Text Field Label"
383
+ msgstr "Tekstisisendi nimetuse näide"
384
+
385
+ #: ../includes/ot-functions-admin.php:1076
386
+ msgid "Description for the sample text field."
387
+ msgstr "Tekstisisendi kirjelduse näide"
388
+
389
+ #: ../includes/ot-functions-admin.php:2318
390
+ msgid "Settings updated."
391
+ msgstr "Seaded on uuendatud."
392
+
393
+ #: ../includes/ot-functions-admin.php:2322
394
+ msgid "Settings could not be saved."
395
+ msgstr "Seadeid ei suudetud uuendada."
396
+
397
+ #: ../includes/ot-functions-admin.php:2330
398
+ msgid "Settings Imported."
399
+ msgstr "Seaded on imporditud."
400
+
401
+ #: ../includes/ot-functions-admin.php:2334
402
+ msgid "Settings could not be imported."
403
+ msgstr "Seadeid ei suudetud importida."
404
+
405
+ #: ../includes/ot-functions-admin.php:2341
406
+ msgid "Data Imported."
407
+ msgstr "Andmed on imporditud."
408
+
409
+ #: ../includes/ot-functions-admin.php:2345
410
+ msgid "Data could not be imported."
411
+ msgstr "Andmeid ei suudetud importida."
412
+
413
+ #: ../includes/ot-functions-admin.php:2353
414
+ msgid "Layouts Imported."
415
+ msgstr "Paigutused on imporditud."
416
+
417
+ #: ../includes/ot-functions-admin.php:2357
418
+ msgid "Layouts could not be imported."
419
+ msgstr "Paigutusi ei suudetud importida."
420
+
421
+ #: ../includes/ot-functions-admin.php:2365
422
+ msgid "Layouts Updated."
423
+ msgstr "Paigutused on uuendatud."
424
+
425
+ #: ../includes/ot-functions-admin.php:2369
426
+ msgid "Layouts could not be updated."
427
+ msgstr "Paigutusi ei suudetud uuendada."
428
+
429
+ #: ../includes/ot-functions-admin.php:2373
430
+ msgid "Layouts have been deleted."
431
+ msgstr "Paigutused on kustutatud."
432
+
433
+ #: ../includes/ot-functions-admin.php:2379
434
+ msgid "Layout activated."
435
+ msgstr "Paigutus on aktiveeritud."
436
+
437
+ #: ../includes/ot-functions-admin.php:2418
438
+ #: ../includes/ot-functions-docs-page.php:110
439
+ msgid "Background"
440
+ msgstr "Taust"
441
+
442
+ #: ../includes/ot-functions-admin.php:2419
443
+ #: ../includes/ot-functions-docs-page.php:113
444
+ msgid "Border"
445
+ msgstr "Ääris"
446
+
447
+ #: ../includes/ot-functions-admin.php:2420
448
+ #: ../includes/ot-functions-docs-page.php:116
449
+ msgid "Box Shadow"
450
+ msgstr "Kasti vari"
451
+
452
+ #: ../includes/ot-functions-admin.php:2421
453
+ #: ../includes/ot-functions-docs-page.php:119
454
+ msgid "Category Checkbox"
455
+ msgstr "Kategooriate valikkastid"
456
+
457
+ #: ../includes/ot-functions-admin.php:2422
458
+ #: ../includes/ot-functions-docs-page.php:122
459
+ msgid "Category Select"
460
+ msgstr "Kategooria rippvalik"
461
+
462
+ #: ../includes/ot-functions-admin.php:2423
463
+ #: ../includes/ot-functions-docs-page.php:125
464
+ msgid "Checkbox"
465
+ msgstr "Valikkastid"
466
+
467
+ #: ../includes/ot-functions-admin.php:2424
468
+ #: ../includes/ot-functions-docs-page.php:128
469
+ msgid "Colorpicker"
470
+ msgstr "Värvivalik"
471
+
472
+ #: ../includes/ot-functions-admin.php:2425
473
+ #: ../includes/ot-functions-docs-page.php:131
474
+ msgid "Colorpicker Opacity"
475
+ msgstr "Värvivalija läbipaistmatus"
476
+
477
+ #: ../includes/ot-functions-admin.php:2426
478
+ #: ../includes/ot-functions-docs-page.php:134
479
+ msgid "CSS"
480
+ msgstr "CSS"
481
+
482
+ #: ../includes/ot-functions-admin.php:2427
483
+ #: ../includes/ot-functions-docs-page.php:153
484
+ msgid "Custom Post Type Checkbox"
485
+ msgstr "Enda loodud postitüübi valikkastid"
486
+
487
+ #: ../includes/ot-functions-admin.php:2428
488
+ #: ../includes/ot-functions-docs-page.php:156
489
+ msgid "Custom Post Type Select"
490
+ msgstr "Enda loodud postitüübi rippvalik"
491
+
492
+ #: ../includes/ot-functions-admin.php:2429
493
+ #: ../includes/ot-functions-docs-page.php:159
494
+ msgid "Date Picker"
495
+ msgstr "Kuupäev valija"
496
+
497
+ #: ../includes/ot-functions-admin.php:2430
498
+ #: ../includes/ot-functions-docs-page.php:162
499
+ msgid "Date Time Picker"
500
+ msgstr "Kuupäeva ja kellaaja valija"
501
+
502
+ #: ../includes/ot-functions-admin.php:2431
503
+ #: ../includes/ot-functions-docs-page.php:165
504
+ msgid "Dimension"
505
+ msgstr "Mõõtmed"
506
+
507
+ #: ../includes/ot-functions-admin.php:2432
508
+ #: ../includes/ot-functions-admin.php:5406
509
+ #: ../includes/ot-functions-docs-page.php:168
510
+ msgid "Gallery"
511
+ msgstr "Galerii"
512
+
513
+ #: ../includes/ot-functions-admin.php:2433
514
+ #: ../includes/ot-functions-docs-page.php:171
515
+ msgid "Google Fonts"
516
+ msgstr "Google Fondid"
517
+
518
+ #: ../includes/ot-functions-admin.php:2434
519
+ #: ../includes/ot-functions-docs-page.php:174
520
+ msgid "JavaScript"
521
+ msgstr "JavaScript"
522
+
523
+ #: ../includes/ot-functions-admin.php:2435
524
+ #: ../includes/ot-functions-docs-page.php:177
525
+ msgid "Link Color"
526
+ msgstr "Lingi värv"
527
+
528
+ #: ../includes/ot-functions-admin.php:2436
529
+ #: ../includes/ot-functions-docs-page.php:180
530
+ msgid "List Item"
531
+ msgstr "Nimekirja element"
532
+
533
+ #: ../includes/ot-functions-admin.php:2437
534
+ #: ../includes/ot-functions-docs-page.php:183
535
+ msgid "Measurement"
536
+ msgstr "Mõõt"
537
+
538
+ #: ../includes/ot-functions-admin.php:2438
539
+ #: ../includes/ot-functions-docs-page.php:214
540
+ msgid "Numeric Slider"
541
+ msgstr "Numbriskaala"
542
+
543
+ #: ../includes/ot-functions-admin.php:2439
544
+ #: ../includes/ot-functions-docs-page.php:217
545
+ msgid "On/Off"
546
+ msgstr "Sees/väljas"
547
+
548
+ #: ../includes/ot-functions-admin.php:2440
549
+ #: ../includes/ot-functions-docs-page.php:220
550
+ msgid "Page Checkbox"
551
+ msgstr "Lehekülgede valikkastid"
552
+
553
+ #: ../includes/ot-functions-admin.php:2441
554
+ #: ../includes/ot-functions-docs-page.php:223
555
+ msgid "Page Select"
556
+ msgstr "Lehekülje rippvalik"
557
+
558
+ #: ../includes/ot-functions-admin.php:2442
559
+ #: ../includes/ot-functions-docs-page.php:226
560
+ msgid "Post Checkbox"
561
+ msgstr "Postituste valikkastid"
562
+
563
+ #: ../includes/ot-functions-admin.php:2443
564
+ #: ../includes/ot-functions-docs-page.php:229
565
+ msgid "Post Select"
566
+ msgstr "Postituse rippvalik"
567
+
568
+ #: ../includes/ot-functions-admin.php:2444
569
+ #: ../includes/ot-functions-docs-page.php:232
570
+ msgid "Radio"
571
+ msgstr "Raadiokastid"
572
+
573
+ #: ../includes/ot-functions-admin.php:2445
574
+ #: ../includes/ot-functions-docs-page.php:235
575
+ msgid "Radio Image"
576
+ msgstr "Pildiga raadiokastid"
577
+
578
+ #: ../includes/ot-functions-admin.php:2446
579
+ #: ../includes/ot-functions-docs-page.php:262
580
+ msgid "Select"
581
+ msgstr "Rippvalik"
582
+
583
+ #: ../includes/ot-functions-admin.php:2447
584
+ #: ../includes/ot-functions-docs-page.php:265
585
+ msgid "Sidebar Select"
586
+ msgstr "Küljeriba rippvalik"
587
+
588
+ #: ../includes/ot-functions-admin.php:2448
589
+ #: ../includes/ot-functions-docs-page.php:269
590
+ msgid "Slider"
591
+ msgstr "Slaidiesitaja"
592
+
593
+ #: ../includes/ot-functions-admin.php:2449
594
+ #: ../includes/ot-functions-docs-page.php:272
595
+ msgid "Social Links"
596
+ msgstr "Sotsiaalmeedia"
597
+
598
+ #: ../includes/ot-functions-admin.php:2450
599
+ #: ../includes/ot-functions-docs-page.php:275
600
+ msgid "Spacing"
601
+ msgstr "Vahed"
602
+
603
+ #: ../includes/ot-functions-admin.php:2451
604
+ #: ../includes/ot-functions-docs-page.php:278
605
+ msgid "Tab"
606
+ msgstr "Sakk"
607
+
608
+ #: ../includes/ot-functions-admin.php:2452
609
+ #: ../includes/ot-functions-docs-page.php:281
610
+ msgid "Tag Checkbox"
611
+ msgstr "Sildi valikkastid"
612
+
613
+ #: ../includes/ot-functions-admin.php:2453
614
+ #: ../includes/ot-functions-docs-page.php:284
615
+ msgid "Tag Select"
616
+ msgstr "Sildi rippvalik"
617
+
618
+ #: ../includes/ot-functions-admin.php:2454
619
+ #: ../includes/ot-functions-docs-page.php:287
620
+ msgid "Taxonomy Checkbox"
621
+ msgstr "Taksonoomia valikkastid"
622
+
623
+ #: ../includes/ot-functions-admin.php:2455
624
+ #: ../includes/ot-functions-docs-page.php:290
625
+ msgid "Taxonomy Select"
626
+ msgstr "Taksonoomia rippvalik"
627
+
628
+ #: ../includes/ot-functions-admin.php:2456
629
+ #: ../includes/ot-functions-docs-page.php:293
630
+ msgid "Text"
631
+ msgstr "Tekstisisend"
632
+
633
+ #: ../includes/ot-functions-admin.php:2457
634
+ #: ../includes/ot-functions-docs-page.php:296
635
+ msgid "Textarea"
636
+ msgstr "Tekstiväli"
637
+
638
+ #: ../includes/ot-functions-admin.php:2458
639
+ #: ../includes/ot-functions-docs-page.php:355
640
+ msgid "Textarea Simple"
641
+ msgstr "Lihtne tekstiväli"
642
+
643
+ #: ../includes/ot-functions-admin.php:2459
644
+ #: ../includes/ot-functions-docs-page.php:371
645
+ msgid "Textblock"
646
+ msgstr "Tekstiblokk"
647
+
648
+ #: ../includes/ot-functions-admin.php:2460
649
+ #: ../includes/ot-functions-docs-page.php:374
650
+ msgid "Textblock Titled"
651
+ msgstr "Pealkirjaga tekstiblokk"
652
+
653
+ #: ../includes/ot-functions-admin.php:2461
654
+ #: ../includes/ot-functions-docs-page.php:377
655
+ msgid "Typography"
656
+ msgstr "Tüpograafia"
657
+
658
+ #: ../includes/ot-functions-admin.php:2462
659
+ #: ../includes/ot-functions-docs-page.php:397
660
+ msgid "Upload"
661
+ msgstr "Lae üles"
662
+
663
+ #: ../includes/ot-functions-admin.php:3192
664
+ msgid "Left Sidebar"
665
+ msgstr "Vasak küljendusmenüü"
666
+
667
+ #: ../includes/ot-functions-admin.php:3197
668
+ msgid "Right Sidebar"
669
+ msgstr "Parem küljendusmenüü"
670
+
671
+ #: ../includes/ot-functions-admin.php:3202
672
+ msgid "Full Width (no sidebar)"
673
+ msgstr "Täies pikkuses (ilma küljendusmenüüta)"
674
+
675
+ #: ../includes/ot-functions-admin.php:3207
676
+ msgid "Dual Sidebar"
677
+ msgstr "Topelt küljendusmenüü"
678
+
679
+ #: ../includes/ot-functions-admin.php:3212
680
+ msgid "Left Dual Sidebar"
681
+ msgstr "Kaks küljendusmenüüd vasakul"
682
+
683
+ #: ../includes/ot-functions-admin.php:3217
684
+ msgid "Right Dual Sidebar"
685
+ msgstr "Kaks küljendusmenüüd paremal"
686
+
687
+ #: ../includes/ot-functions-admin.php:3258
688
+ #: ../includes/ot-functions-admin.php:3314
689
+ #: ../includes/ot-functions-admin.php:5446
690
+ msgid "Link"
691
+ msgstr "Viide"
692
+
693
+ #: ../includes/ot-functions-admin.php:3269
694
+ #: ../includes/ot-functions-admin.php:3320
695
+ #: ../includes/ot-functions-docs-page.php:43
696
+ #: ../includes/ot-functions-docs-page.php:428
697
+ #: ../includes/ot-functions-docs-page.php:478
698
+ msgid "Description"
699
+ msgstr "Kirjeldus"
700
+
701
+ #: ../includes/ot-functions-admin.php:3384
702
+ msgid "Name"
703
+ msgstr "Nimetus"
704
+
705
+ #: ../includes/ot-functions-admin.php:3385
706
+ msgid "Enter the name of the social website."
707
+ msgstr "Sisesta sotsiaalmeedia veebilehe nimi."
708
+
709
+ #: ../includes/ot-functions-admin.php:3393
710
+ msgid "Enter the text shown in the title attribute of the link."
711
+ msgstr "Sisesta tekst, mida näidatakse lingi pealkirja atribuudis."
712
+
713
+ #: ../includes/ot-functions-admin.php:3399
714
+ #, php-format
715
+ msgid ""
716
+ "Enter a link to the profile or page on the social website. Remember to add "
717
+ "the %s part to the front of the link."
718
+ msgstr ""
719
+ "Sisesta link profiilile või lehele sellel sotsiaalmeedia veebilehel. Ära "
720
+ "unusta lisada lingi ette %s osa."
721
+
722
+ #: ../includes/ot-functions-admin.php:3967
723
+ msgid "edit"
724
+ msgstr "muuda"
725
+
726
+ #: ../includes/ot-functions-admin.php:3968
727
+ #: ../includes/ot-functions-admin.php:4036
728
+ #: ../includes/ot-functions-admin.php:4037
729
+ #: ../includes/ot-functions-admin.php:4199
730
+ #: ../includes/ot-functions-admin.php:4200
731
+ #: ../includes/ot-functions-admin.php:4265
732
+ #: ../includes/ot-functions-admin.php:4266
733
+ #: ../includes/ot-functions-admin.php:4393
734
+ #: ../includes/ot-functions-admin.php:4394
735
+ #: ../includes/ot-functions-admin.php:4546
736
+ #: ../includes/ot-functions-admin.php:4547
737
+ msgid "Edit"
738
+ msgstr "Muuda"
739
+
740
+ #: ../includes/ot-functions-admin.php:3970
741
+ #: ../includes/ot-functions-admin.php:3971
742
+ #: ../includes/ot-functions-admin.php:4039
743
+ #: ../includes/ot-functions-admin.php:4040
744
+ #: ../includes/ot-functions-admin.php:4202
745
+ #: ../includes/ot-functions-admin.php:4203
746
+ #: ../includes/ot-functions-admin.php:4268
747
+ #: ../includes/ot-functions-admin.php:4269
748
+ #: ../includes/ot-functions-admin.php:4327
749
+ #: ../includes/ot-functions-admin.php:4328
750
+ #: ../includes/ot-functions-admin.php:4396
751
+ #: ../includes/ot-functions-admin.php:4397
752
+ #: ../includes/ot-functions-admin.php:4549
753
+ #: ../includes/ot-functions-admin.php:4550
754
+ msgid "Delete"
755
+ msgstr "Kustuta"
756
+
757
+ #: ../includes/ot-functions-admin.php:3977
758
+ msgid ""
759
+ "<strong>Section Title</strong>: Displayed as a menu item on the Theme "
760
+ "Options page."
761
+ msgstr ""
762
+ "<strong>Sektsiooni pealkiri</strong>: Näidatakse menüü elemendina teema "
763
+ "valikute lehel."
764
+
765
+ #: ../includes/ot-functions-admin.php:3985
766
+ msgid ""
767
+ "<strong>Section ID</strong>: A unique lower case alphanumeric string, "
768
+ "underscores allowed."
769
+ msgstr ""
770
+ "<strong>Sektsiooni ID</strong>: unikaalne väiketähtedega tähtnumbriline "
771
+ "string, alakriipsud lubatud."
772
+
773
+ #: ../includes/ot-functions-admin.php:4046
774
+ msgid ""
775
+ "<strong>Label</strong>: Displayed as the label of a form element on the "
776
+ "Theme Options page."
777
+ msgstr ""
778
+ "<strong>Nimetus</strong>: Näidatakse kui vormi elemendi nimetust teema "
779
+ "valikute lehel."
780
+
781
+ #: ../includes/ot-functions-admin.php:4054
782
+ #: ../includes/ot-functions-admin.php:4283
783
+ msgid ""
784
+ "<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
785
+ "allowed."
786
+ msgstr ""
787
+ "<strong>ID</strong>: unikaalne väiketähtedega tähtnumbriline string, "
788
+ "alakriipsud lubatud."
789
+
790
+ #: ../includes/ot-functions-admin.php:4062
791
+ msgid ""
792
+ "<strong>Type</strong>: Choose one of the available option types from the "
793
+ "dropdown."
794
+ msgstr ""
795
+ "<strong>Tüüp</strong>: vali rippmenüüst üks pakutavatest valiku tüüpidest."
796
+
797
+ #: ../includes/ot-functions-admin.php:4073
798
+ msgid ""
799
+ "<strong>Description</strong>: Enter a detailed description for the users to "
800
+ "read on the Theme Options page, HTML is allowed. This is also where you "
801
+ "enter content for both the Textblock & Textblock Titled option types."
802
+ msgstr ""
803
+ "<strong>Kirjeldus</strong>: sisesta detailne kirjeldus, mida kasutajad "
804
+ "saavad lugeda teema valikute lehel. HTML on lubatud. See on ühtlasi ka koht, "
805
+ "kuhu sisestada tekstibloki ja pealkirjaga tekstibloki valikutüüpide sisu."
806
+
807
+ #: ../includes/ot-functions-admin.php:4081
808
+ msgid ""
809
+ "<strong>Choices</strong>: This will only affect the following option types: "
810
+ "Checkbox, Radio, Select & Select Image."
811
+ msgstr ""
812
+ "<strong>Valikud</strong>: mõjutab vaid järgnevaid valikutüüpe: valikkastid, "
813
+ "raadiokastid, rippvalik ja pildi valik."
814
+
815
+ #: ../includes/ot-functions-admin.php:4086
816
+ msgid "Add Choice"
817
+ msgstr "Lisa valik"
818
+
819
+ #: ../includes/ot-functions-admin.php:4092
820
+ msgid ""
821
+ "<strong>Settings</strong>: This will only affect the List Item option type."
822
+ msgstr "<strong>Sätted</strong>: mõjutab vaid nimekirja elemendi valikutüüpi."
823
+
824
+ #: ../includes/ot-functions-admin.php:4097
825
+ #: ../includes/ot-functions-settings-page.php:93
826
+ msgid "Add Setting"
827
+ msgstr "Lisa säte"
828
+
829
+ #: ../includes/ot-functions-admin.php:4103
830
+ msgid ""
831
+ "<strong>Standard</strong>: Setting the standard value for your option only "
832
+ "works for some option types. Read the <code>OptionTree->Documentation</code> "
833
+ "for more information on which ones."
834
+ msgstr ""
835
+ "<strong>Standard</strong>. standardväärtuse määramine mõjub vaid mõnele "
836
+ "valikutüübile. Lisainfot leiad <code>OptionTree->Dokumentatsioon</code> "
837
+ "lehelt."
838
+
839
+ #: ../includes/ot-functions-admin.php:4111
840
+ msgid ""
841
+ "<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
842
+ "textarea. This will only affect the following option types: CSS, Textarea, & "
843
+ "Textarea Simple."
844
+ msgstr ""
845
+ "<strong>Ridu</strong>: sisesta numbriline väärtus, mis määrab ridade arvu "
846
+ "tekstiväljal. Mõjutab vaid järgnevaid valikutüüpe: CSS, tekstiväli ja lihtne "
847
+ "tekstiväli."
848
+
849
+ #: ../includes/ot-functions-admin.php:4119
850
+ msgid ""
851
+ "<strong>Post Type</strong>: Add a comma separated list of post type like "
852
+ "'post,page'. This will only affect the following option types: Custom Post "
853
+ "Type Checkbox, & Custom Post Type Select."
854
+ msgstr ""
855
+ "<strong>Postituse tüüp</strong>: lisa siia komaga eraldatud loend "
856
+ "postitüüpidest - näiteks 'post,page'. See mõjutab vaid järgnevaid "
857
+ "valikutüüpe: enda loodud postitüübi valikkastid ja enda loodud postitüübi "
858
+ "rippvalik."
859
+
860
+ #: ../includes/ot-functions-admin.php:4127
861
+ msgid ""
862
+ "<strong>Taxonomy</strong>: Add a comma separated list of any registered "
863
+ "taxonomy like 'category,post_tag'. This will only affect the following "
864
+ "option types: Taxonomy Checkbox, & Taxonomy Select."
865
+ msgstr ""
866
+ "<strong>Taksonoomia</strong>: lisa komaga eraldatud loend registreeritud "
867
+ "taksonoomiatest nagu 'category,post_tag'. See mõjutab vaid järgnevaid "
868
+ "valikutüüpe: taksonoomia valikukastid & taksonoomia rippvalik."
869
+
870
+ #: ../includes/ot-functions-admin.php:4135
871
+ msgid ""
872
+ "<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
873
+ "the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
874
+ "intervals of <code>1</code>). The three values represent the minimum, "
875
+ "maximum, and step options and will only affect the Numeric Slider option "
876
+ "type."
877
+ msgstr ""
878
+ "<strong>min, max & aste</strong>: lisa komaga eraldatud loend valikutest "
879
+ "järgnevas formaadis: <code>0,100,1</code> ( liugle vahemikus <code>0-100</"
880
+ "code> intervalliga <code>1</code> ). Need kolm väärtust näitavad miinimumi, "
881
+ "maksimumi ja astme valikuid ning mõjutavad vaid numbriliuguri valikutüüpi."
882
+
883
+ #: ../includes/ot-functions-admin.php:4143
884
+ msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
885
+ msgstr ""
886
+ "<strong>CSS klass</strong>: Soovi korral lisa sellele valikutüübile klass."
887
+
888
+ #: ../includes/ot-functions-admin.php:4151
889
+ #, php-format
890
+ msgid ""
891
+ "<strong>Condition</strong>: Add a comma separated list (no spaces) of "
892
+ "conditions in which the field will be visible, leave this setting empty to "
893
+ "always show the field. In these examples, <code>value</code> is a "
894
+ "placeholder for your condition, which can be in the form of %s."
895
+ msgstr ""
896
+ "<strong>Tingimus</strong>: lisa komaga eraldatud loend ( ilma tühikuteta ) "
897
+ "tingimustest, mille korral see väli on nähtav. Välja alati näitamiseks jäta "
898
+ "tühjaks. Nendes näidetes on <code>value</code> kohahoidja teie tingimustele, "
899
+ "mis võivad olla kujul %s."
900
+
901
+ #: ../includes/ot-functions-admin.php:4159
902
+ msgid ""
903
+ "<strong>Operator</strong>: Choose the logical operator to compute the result "
904
+ "of the conditions."
905
+ msgstr ""
906
+ "<strong>Operaator</strong>: vali loogiline operaator, millega arvutada välja "
907
+ "tingimuste tulemus."
908
+
909
+ #: ../includes/ot-functions-admin.php:4162
910
+ #: ../includes/ot-functions-docs-page.php:111
911
+ #: ../includes/ot-functions-docs-page.php:378
912
+ msgid "and"
913
+ msgstr "ja"
914
+
915
+ #: ../includes/ot-functions-admin.php:4163
916
+ msgid "or"
917
+ msgstr "või"
918
+
919
+ #: ../includes/ot-functions-admin.php:4209
920
+ #: ../includes/ot-functions-docs-page.php:29
921
+ msgid "Label"
922
+ msgstr "Nimetus"
923
+
924
+ #: ../includes/ot-functions-admin.php:4219
925
+ msgid "Value"
926
+ msgstr "Väärtus"
927
+
928
+ #: ../includes/ot-functions-admin.php:4229
929
+ msgid "Image Source (Radio Image only)"
930
+ msgstr "Pildi allikas ( ainult pildiga raadiovaliku jaoks )"
931
+
932
+ #: ../includes/ot-functions-admin.php:4275
933
+ msgid ""
934
+ "<strong>Title</strong>: Displayed as a contextual help menu item on the "
935
+ "Theme Options page."
936
+ msgstr ""
937
+ "<strong>Pealkiri</strong>: kuvatakse kui kontekstipõhine abimenüü element "
938
+ "teema valikute lehel."
939
+
940
+ #: ../includes/ot-functions-admin.php:4291
941
+ msgid ""
942
+ "<strong>Content</strong>: Enter the HTML content about this contextual help "
943
+ "item displayed on the Theme Option page for end users to read."
944
+ msgstr ""
945
+ "<strong>Sisu</strong>: sisesta HTML sisu selle kontekstipõhise elemendi "
946
+ "kohta. Näidatakse teema valikute lehel lõppkasutajatele."
947
+
948
+ #: ../includes/ot-functions-admin.php:4322
949
+ msgid "Layout"
950
+ msgstr "Paigutus"
951
+
952
+ #: ../includes/ot-functions-admin.php:4324
953
+ #: ../includes/ot-functions-admin.php:4325
954
+ msgid "Activate"
955
+ msgstr "Aktiveeri"
956
+
957
+ #: ../includes/ot-functions-admin.php:4361 ../includes/ot-meta-box-api.php:223
958
+ #: ../includes/ot-settings-api.php:610
959
+ msgid "Title"
960
+ msgstr "Pealkiri"
961
+
962
+ #: ../includes/ot-functions-admin.php:4701
963
+ msgid "New Layout"
964
+ msgstr "Uus paigutus"
965
+
966
+ #: ../includes/ot-functions-admin.php:5455
967
+ msgid "Link URL"
968
+ msgstr "Viide"
969
+
970
+ #: ../includes/ot-functions-admin.php:5462
971
+ msgid "Link Title"
972
+ msgstr "Lingi pealkiri"
973
+
974
+ #: ../includes/ot-functions-admin.php:5492
975
+ msgid "Quote"
976
+ msgstr "Tsitaat"
977
+
978
+ #: ../includes/ot-functions-admin.php:5501
979
+ msgid "Source Name (ex. author, singer, actor)"
980
+ msgstr "Allika nimi (nt autor, laulja, näitleja)"
981
+
982
+ #: ../includes/ot-functions-admin.php:5508
983
+ msgid "Source URL"
984
+ msgstr "Allika URL"
985
+
986
+ #: ../includes/ot-functions-admin.php:5515
987
+ msgid "Source Title (ex. book, song, movie)"
988
+ msgstr "Allika pealkiri (nt raamat, laul, film)"
989
+
990
+ #: ../includes/ot-functions-admin.php:5522
991
+ msgid "Source Date"
992
+ msgstr "Allika kuupäev"
993
+
994
+ #: ../includes/ot-functions-admin.php:5552
995
+ msgid "Video"
996
+ msgstr "Video"
997
+
998
+ #: ../includes/ot-functions-admin.php:5561
999
+ #, php-format
1000
+ msgid ""
1001
+ "Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
1002
+ "of supported oEmbed sites in the %1$s. Alternatively, you could use the "
1003
+ "built-in %2$s shortcode."
1004
+ msgstr ""
1005
+ "Lisa video välisest allikast, nagu näiteks Youtube, Vimeo või Hulu. "
1006
+ "Nimekirja toetatud oEmbed veebilehtedest leiad %1$s. Teine variant oleks "
1007
+ "kasutada sisse ehitatud lühikoodi %2$s."
1008
+
1009
+ #: ../includes/ot-functions-admin.php:5561
1010
+ #: ../includes/ot-functions-admin.php:5600
1011
+ msgid "Wordpress Codex"
1012
+ msgstr "Wordpress Codex"
1013
+
1014
+ #: ../includes/ot-functions-admin.php:5591
1015
+ msgid "Audio"
1016
+ msgstr "Audio"
1017
+
1018
+ #: ../includes/ot-functions-admin.php:5600
1019
+ #, php-format
1020
+ msgid ""
1021
+ "Embed audio from services like SoundCloud and Rdio. You can find a list of "
1022
+ "supported oEmbed sites in the %1$s. Alternatively, you could use the built-"
1023
+ "in %2$s shortcode."
1024
+ msgstr ""
1025
+ "Lisa heli teenustest SoundCloud, Rdio või teistest sarnastest. Nimekirja "
1026
+ "toetatud oEmbed veebilehtedest leiad %1$s. Teine variant oleks kasutada "
1027
+ "sisse ehitatud lühikoodi %2$s."
1028
+
1029
+ #: ../includes/ot-functions-docs-page.php:30
1030
+ msgid ""
1031
+ "The Label field should be a short but descriptive block of text 100 "
1032
+ "characters or less with no HTML."
1033
+ msgstr ""
1034
+ "Nimetuse väli peaks olema lühike kuid kirjeldav tekstiblokk, mis on kuni 100 "
1035
+ "tähemärki pikk ja ei sisalda HTML-i."
1036
+
1037
+ #: ../includes/ot-functions-docs-page.php:32
1038
+ msgid "ID"
1039
+ msgstr "ID"
1040
+
1041
+ #: ../includes/ot-functions-docs-page.php:33
1042
+ msgid ""
1043
+ "The ID field is a unique alphanumeric key used to differentiate each theme "
1044
+ "option (underscores are acceptable). Also, the plugin will change all text "
1045
+ "you write in this field to lowercase and replace spaces and special "
1046
+ "characters with an underscore automatically."
1047
+ msgstr ""
1048
+ "ID väli on unikaalne tähtnumbriline võti eristamaks teema valikuid "
1049
+ "( alakriipsud on lubatud ). Lisaks muudetakse kõik siia välja kirjutatav "
1050
+ "tekst väiketähtedeks ning erimärgid asendatakse automaatselt alakriipsudega."
1051
+
1052
+ #: ../includes/ot-functions-docs-page.php:35
1053
+ msgid "Type"
1054
+ msgstr "Tüüp"
1055
+
1056
+ #: ../includes/ot-functions-docs-page.php:36
1057
+ msgid ""
1058
+ "You are required to choose one of the supported option types when creating a "
1059
+ "new option. Here is a list of the available option types. For more "
1060
+ "information about each type click the <code>Option Types</code> tab to the "
1061
+ "left."
1062
+ msgstr ""
1063
+ "Uue valiku loomisel peate valima mõne toetatud valikutüüpidest. Siin on "
1064
+ "nimekiri saadaolevatest valikutüüpidest. Lisainfo igaühe kohta neist on "
1065
+ "saadaval vajutades vasakul olevat <code>Valiku tüüp</code> sakki."
1066
+
1067
+ #: ../includes/ot-functions-docs-page.php:44
1068
+ msgid ""
1069
+ "Enter a detailed description for the users to read on the Theme Options "
1070
+ "page, HTML is allowed. This is also where you enter content for both the "
1071
+ "Textblock & Textblock Titled option types."
1072
+ msgstr ""
1073
+ "Sisesta detailne kirjeldus, mida kasutajad saavad lugeda teema valikute "
1074
+ "lehel. HTML on lubatud. See on ka koht sisu sisestamiseks tekstibloki ja "
1075
+ "pealkirjaga tekstibloki valikutüüpide jaoks."
1076
+
1077
+ #: ../includes/ot-functions-docs-page.php:46
1078
+ msgid "Choices"
1079
+ msgstr "Valikud"
1080
+
1081
+ #: ../includes/ot-functions-docs-page.php:47
1082
+ msgid ""
1083
+ "Click the \"Add Choice\" button to add an item to the choices array. This "
1084
+ "will only affect the following option types: Checkbox, Radio, Select & "
1085
+ "Select Image."
1086
+ msgstr ""
1087
+ "Elemendi lisamiseks valikute massiivi vajuta \"Lisa valik\" nuppu. See "
1088
+ "mõjutab järgnevaid valikutüüpe: valikkastid, raadiokastid, rippvalik ja "
1089
+ "pildivalik."
1090
+
1091
+ #: ../includes/ot-functions-docs-page.php:50
1092
+ msgid ""
1093
+ "Click the \"Add Setting\" button found inside a newly created setting to add "
1094
+ "an item to the settings array. This will only affect the List Item type."
1095
+ msgstr ""
1096
+ "Elemendi lisamiseks sätete massiivi vajuta vastloodud sättes asuvat \"Lisa "
1097
+ "säte\" nuppu. See mõjutab vaid nimekirja elemendi tüüpi."
1098
+
1099
+ #: ../includes/ot-functions-docs-page.php:52
1100
+ msgid "Standard"
1101
+ msgstr "Standartne"
1102
+
1103
+ #: ../includes/ot-functions-docs-page.php:53
1104
+ msgid ""
1105
+ "Setting the standard value for your option only works for some option types. "
1106
+ "Those types are one that have a single string value saved to them and not an "
1107
+ "array of values."
1108
+ msgstr ""
1109
+ "Standard väärtuse määramine oma valikule töötab vaid mõnede valikutüüpidega. "
1110
+ "Need tüübid on sellised, kus hoitakse vaid ühte väärtust stringi kujul, "
1111
+ "mitte väärtuste massiivi."
1112
+
1113
+ #: ../includes/ot-functions-docs-page.php:55
1114
+ msgid "Rows"
1115
+ msgstr "Ridasid"
1116
+
1117
+ #: ../includes/ot-functions-docs-page.php:56
1118
+ msgid ""
1119
+ "Enter a numeric value for the number of rows in your textarea. This will "
1120
+ "only affect the following option types: CSS, Textarea, & Textarea Simple."
1121
+ msgstr ""
1122
+ "Sisesta numbriline väärtus, mis määrab ridade arvu tekstialas. See mõjutab "
1123
+ "vaid järgnevaid valikutüüpe: CSS, tekstiala & lihtne tekstiala."
1124
+
1125
+ #: ../includes/ot-functions-docs-page.php:58
1126
+ msgid "Post Type"
1127
+ msgstr "Postitüüp"
1128
+
1129
+ #: ../includes/ot-functions-docs-page.php:59
1130
+ msgid ""
1131
+ "Add a comma separated list of post type like <code>post,page</code>. This "
1132
+ "will only affect the following option types: Custom Post Type Checkbox, & "
1133
+ "Custom Post Type Select. Below are the default post types available with "
1134
+ "WordPress and that are also compatible with OptionTree. You can also add "
1135
+ "your own custom <code>post_type</code>. At this time <code>any</code> does "
1136
+ "not seem to return results properly and is something I plan on looking into."
1137
+ msgstr ""
1138
+ "Lisa komaga eraldatud loetelu postitüüpidest, näiteks <code>post,page</"
1139
+ "code>. See mõjutab vaid järgnevaid valikutüüpe: kohandatud postitüübi "
1140
+ "valikkastid ja kohandatud postitüübi rippmenüü. All on vaikimisi Wordpressis "
1141
+ "saadaval postitüübid, mis on OptionTreega kokkusobivad. Saad kasutada ka "
1142
+ "enda loodud <code>post_type</code>. Hetkel <code>any</code> ei tagasta "
1143
+ "õigeid väärtusi."
1144
+
1145
+ #: ../includes/ot-functions-docs-page.php:67
1146
+ msgid "Taxonomy"
1147
+ msgstr "Taksonoomia"
1148
+
1149
+ #: ../includes/ot-functions-docs-page.php:68
1150
+ msgid ""
1151
+ "Add a comma separated list of any registered taxonomy like <code>category,"
1152
+ "post_tag</code>. This will only affect the following option types: Taxonomy "
1153
+ "Checkbox, & Taxonomy Select."
1154
+ msgstr ""
1155
+ "Lisa komaga eraldatud loend registreeritud taksonoomiatest nagu 'category,"
1156
+ "post_tag'. See mõjutab vaid järgnevaid valikutüüpe: taksonoomia valikukastid "
1157
+ "& taksonoomia rippvalik."
1158
+
1159
+ #: ../includes/ot-functions-docs-page.php:70
1160
+ msgid "Min, Max, & Step"
1161
+ msgstr "Miinimum, maksimum ning aste"
1162
+
1163
+ #: ../includes/ot-functions-docs-page.php:71
1164
+ msgid ""
1165
+ "Add a comma separated list of options in the following format <code>0,100,1</"
1166
+ "code> (slide from <code>0-100</code> in intervals of <code>1</code>). The "
1167
+ "three values represent the minimum, maximum, and step options and will only "
1168
+ "affect the Numeric Slider option type."
1169
+ msgstr ""
1170
+ "Lisa komaga eraldatud loend valikutest järgnevas formaadis: <code>0,100,1</"
1171
+ "code> ( liugle vahemikus <code>0-100</code> intervalliga <code>1</code> ). "
1172
+ "Need kolm väärtust näitavad miinimumi, maksimumi ja astme valikuid ning "
1173
+ "mõjutavad vaid numbriliuguri valikutüüpi."
1174
+
1175
+ #: ../includes/ot-functions-docs-page.php:73
1176
+ msgid "CSS Class"
1177
+ msgstr "CSS klass"
1178
+
1179
+ #: ../includes/ot-functions-docs-page.php:74
1180
+ msgid "Add and optional class to any option type."
1181
+ msgstr "Soovi korral lisa klassi-atribuut ükskõik millisele valikutüübile."
1182
+
1183
+ #: ../includes/ot-functions-docs-page.php:76
1184
+ msgid "Condition"
1185
+ msgstr "Tingimus"
1186
+
1187
+ #: ../includes/ot-functions-docs-page.php:77
1188
+ #, php-format
1189
+ msgid ""
1190
+ "Add a comma separated list (no spaces) of conditions in which the field will "
1191
+ "be visible, leave this setting empty to always show the field. In these "
1192
+ "examples, %s is a placeholder for your condition, which can be in the form "
1193
+ "of %s."
1194
+ msgstr ""
1195
+ "Lisa komaga eraldatud loend ( ilma tühikuteta ) tingimustest, mille korral "
1196
+ "see väli on nähtav. Tühjaks jättes on väli alati nähtav. Nendes näidetes on "
1197
+ "%s tingimuse kohahoidjaks, mis tohib olla kujul %s."
1198
+
1199
+ #: ../includes/ot-functions-docs-page.php:79
1200
+ msgid "Operator"
1201
+ msgstr "Operaator"
1202
+
1203
+ #: ../includes/ot-functions-docs-page.php:80
1204
+ #, php-format
1205
+ msgid ""
1206
+ "Choose the logical operator to compute the result of the conditions. Your "
1207
+ "options are %s and %s."
1208
+ msgstr ""
1209
+ "Vali loogiline operaator, millega arvutada tingimuste tulemus. Sinu "
1210
+ "valikuteks on %s ja %s."
1211
+
1212
+ #: ../includes/ot-functions-docs-page.php:111
1213
+ #, php-format
1214
+ msgid ""
1215
+ "The Background option type is for adding background styles to your theme "
1216
+ "either dynamically via the CSS option type below or manually with %s. The "
1217
+ "Background option type has filters that allow you to remove fields or change "
1218
+ "the defaults. For example, you can filter %s to remove unwanted fields from "
1219
+ "all Background options or an individual one. You can also filter %s. These "
1220
+ "filters allow you to fine tune the select lists for your specific needs."
1221
+ msgstr ""
1222
+ "Tausta valikutüüpi kasutatakse teemasse tausta stiilide lisamiseks "
1223
+ "dünaamiliselt alloleva CSS valikutüübiga või käsitsi kasutades %s. Tausta "
1224
+ "valikutüübil on filtrid, mis võimaldavad eemaldada välju või muuta "
1225
+ "vaikeväärtusi. Näiteks saab filtreerida %s eemaldamaks soovimatuid välju "
1226
+ "kõikidelt tausta valikutelt või ainult ühelt neist. Saab filtreerida ka %s. "
1227
+ "Need filtrid võimaldavad sul sättida valikute nimekirja täpselt oma "
1228
+ "vajadustele vastavaks."
1229
+
1230
+ #: ../includes/ot-functions-docs-page.php:114
1231
+ #, php-format
1232
+ msgid ""
1233
+ "The Border option type is used to set width, unit, style, and color values. "
1234
+ "The text input excepts a numerical value and the unit select lets you choose "
1235
+ "the unit of measurement to add to that value. Currently the default units "
1236
+ "are %s, %s, %s, and %s. However, you can change them with the %s filter. The "
1237
+ "style select lets you choose the border style. The default styles are %s, "
1238
+ "%s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s "
1239
+ "filter. The colorpicker saves a hexadecimal color code."
1240
+ msgstr ""
1241
+ "Äärise valikutüüp kasutatakse laiuse, ühiku, stiili ja värvi määramiseks. "
1242
+ "Tekstisisendisse saab kirjutada numbrilise väärtuse ning rippmenüü laseb "
1243
+ "valida talle mõõtühiku. Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid "
1244
+ "saab muuta %s filtriga. Stiili rippmenüü laseb valida äärise stiili. "
1245
+ "Vaikimisi stiilid on %s, %s, %s, %s, %s, %s, %s ja %s. Neid saab muuta %s "
1246
+ "filtriga. Värvivalija salvestab värvikoodi kuueteistkümnendiksüsteemis."
1247
+
1248
+ #: ../includes/ot-functions-docs-page.php:117
1249
+ #, php-format
1250
+ msgid ""
1251
+ "The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values."
1252
+ msgstr ""
1253
+ "Kasti varju valikutüüpi kasutatakse %s, %s, %s, %s, %s ja %s väärtuse "
1254
+ "määramiseks."
1255
+
1256
+ #: ../includes/ot-functions-docs-page.php:120
1257
+ msgid ""
1258
+ "The Category Checkbox option type displays a list of category IDs. It allows "
1259
+ "the user to check multiple category IDs and will return that value as an "
1260
+ "array for use in a custom function or loop."
1261
+ msgstr ""
1262
+ "Kategooria valikkastide valikutüüp näitab loendit kategooriate ID-dest. See "
1263
+ "laseb kasutajal märkida mitu kategooria ID-d ja tagastab selle väärtuse "
1264
+ "massiivina, enda funktsioonis või tsüklis kasutamiseks."
1265
+
1266
+ #: ../includes/ot-functions-docs-page.php:123
1267
+ msgid ""
1268
+ "The Category Select option type displays a list of category IDs. It allows "
1269
+ "the user to select only one category ID and will return that value for use "
1270
+ "in a custom function or loop."
1271
+ msgstr ""
1272
+ "Kategooria rippvaliku valikutüüp näitab loendit kategooriate ID-dest. See "
1273
+ "laseb kasutajal märkida üks kategooria ID ja tagastab selle väärtuse enda "
1274
+ "funktsioonis või tsüklis kasutamiseks."
1275
+
1276
+ #: ../includes/ot-functions-docs-page.php:126
1277
+ msgid ""
1278
+ "The Checkbox option type displays a group of choices. It allows the user to "
1279
+ "check multiple choices and will return that value as an array for use in a "
1280
+ "custom function or loop."
1281
+ msgstr ""
1282
+ "Valikkastide valikutüüp kuvab valikute grupi. See laseb kasutajal märkida "
1283
+ "mitu valikut ning tagastab selle väärtuse massiivina enda funktsioonis või "
1284
+ "tsüklis kasutamiseks."
1285
+
1286
+ #: ../includes/ot-functions-docs-page.php:129
1287
+ msgid ""
1288
+ "The Colorpicker option type saves a hexadecimal color code for use in CSS. "
1289
+ "Use it to modify the color of something in your theme."
1290
+ msgstr ""
1291
+ "Värvi valija valikutüüp salvestab värvikoodi kuueteistkümnendiksüsteemis, "
1292
+ "mida saab kasutada CSS-is. Kasuta seda millegi värvi muutmiseks enda teemas."
1293
+
1294
+ #: ../includes/ot-functions-docs-page.php:132
1295
+ #, php-format
1296
+ msgid ""
1297
+ "The Colorpicker Opacity option type saves a hexadecimal color code with an "
1298
+ "opacity value from %s to %s in increments of %s. Though the value is saved "
1299
+ "as hexadecimal, if used within the CSS option type the color and opacity "
1300
+ "values will be converted into a valid RGBA CSS value."
1301
+ msgstr ""
1302
+ "Värvivalija läbipaistmatuse valikutüüp salvestab värvikoodi "
1303
+ "kuueteistkümnendiksüsteemis läbipaistmatuse väärtusega %s kuni %s sammuga "
1304
+ "%s. Kuigi väärtus salvestatakse kuueteistkümnendiksüsteemis, kasutades teda "
1305
+ "koos CSS valikutüübiga teisendatakse ja korrektseks RGBA CSS väärtuseks."
1306
+
1307
+ #: ../includes/ot-functions-docs-page.php:135
1308
+ #, php-format
1309
+ msgid ""
1310
+ "The CSS option type is a textarea that when used properly can add dynamic "
1311
+ "CSS to your theme from within OptionTree. Unfortunately, due server "
1312
+ "limitations you will need to create a file named %s at the root level of "
1313
+ "your theme and change permissions using %s so the server can write to the "
1314
+ "file. I have had the most success setting this single file to %s but feel "
1315
+ "free to play around with permissions until everything is working. A good "
1316
+ "starting point is %s. When the server can save to the file, CSS will "
1317
+ "automatically be updated when you save your Theme Options."
1318
+ msgstr ""
1319
+ "CSS valikutüüp on tekstiväli, mille õigel kasutamisel saab teemale lisada "
1320
+ "dünaamiliselt genereeritud CSS-i OptionTree kaudu. Serveri piirangute tõttu "
1321
+ "peate selleks looma teema juurkausta faili nimega %s ning muutma õiguseid "
1322
+ "kasutades %s, et server saaks faili kirjutada. Mul on tulnud parimad "
1323
+ "tulemused siis, kui muutsin selle ainsa faili õiguste väärtuseks %s, kuid "
1324
+ "katsetage teisi variante, kuni kõik toimib nagu vaja. Hea alguspunkt on %s. "
1325
+ "Kui server saab edukalt faili salvestada. siis uuendatakse CSS automaatselt "
1326
+ "teema salvestamisel."
1327
+
1328
+ #: ../includes/ot-functions-docs-page.php:137
1329
+ #, php-format
1330
+ msgid ""
1331
+ "This example assumes you have an option with the ID of %1$s. Which means "
1332
+ "this option will automatically insert the value of %1$s into the %2$s when "
1333
+ "the Theme Options are saved."
1334
+ msgstr ""
1335
+ "See näide eeldab, et sul on valik ID-ga %1$s. See tähendab, et teema "
1336
+ "valikute salvestamisel sisestatakse %1$s väärtus automaatselt %2$s külge."
1337
+
1338
+ #: ../includes/ot-functions-docs-page.php:139
1339
+ msgid "Input"
1340
+ msgstr "Sisend"
1341
+
1342
+ #: ../includes/ot-functions-docs-page.php:145
1343
+ msgid "Output"
1344
+ msgstr "Väljund"
1345
+
1346
+ #: ../includes/ot-functions-docs-page.php:154
1347
+ #, php-format
1348
+ msgid ""
1349
+ "The Custom Post Type Select option type displays a list of IDs from any "
1350
+ "available WordPress post type or custom post type. It allows the user to "
1351
+ "check multiple post IDs for use in a custom function or loop. Requires at "
1352
+ "least one valid %1$s in the %1$s field."
1353
+ msgstr ""
1354
+ "Enda loodud postitüübi rippvaliku valikutüüp kuvab nimekirja kõikidest "
1355
+ "WordPressi postitüüpide või enda loodud postitüüpide ID-dest. See võimaldab "
1356
+ "kasutajal märgistada mitu postituse ID-d, mida kasutada enda funktsioonis "
1357
+ "või tsüklis. Vajab vähemalt ühte sobivat %1$s väljal %1$s."
1358
+
1359
+ #: ../includes/ot-functions-docs-page.php:157
1360
+ #, php-format
1361
+ msgid ""
1362
+ "The Custom Post Type Select option type displays a list of IDs from any "
1363
+ "available WordPress post type or custom post type. It will return a single "
1364
+ "post ID for use in a custom function or loop. Requires at least one valid "
1365
+ "%1$s in the %1$s field."
1366
+ msgstr ""
1367
+ "Enda loodud postitüübi rippvaliku valikutüüp kuvab nimekirja kõikidest "
1368
+ "WordPressi postitüüpide või enda loodud postitüüpide ID-dest. See tagastab "
1369
+ "ühe postituse ID, mida kasutada enda funktsioonis või tsüklis. Vajab "
1370
+ "vähemalt ühte sobivat %1$s väljal %1$s."
1371
+
1372
+ #: ../includes/ot-functions-docs-page.php:160
1373
+ msgid ""
1374
+ "The Date Picker option type is tied to a standard form input field which "
1375
+ "displays a calendar pop-up that allow the user to pick any date when focus "
1376
+ "is given to the input field. The returned value is a date formatted string."
1377
+ msgstr ""
1378
+ "Kuupäeva valiku valikutüüp on seotud standartse vormi sisendväljaga. Kui "
1379
+ "sellele antakse fookus, siis kuvatakse kalendri aken, mis laseb kasutajal "
1380
+ "valida suvalise kuupäeva. Tagastatav väärtus on kuupäeva formaadis string."
1381
+
1382
+ #: ../includes/ot-functions-docs-page.php:163
1383
+ msgid ""
1384
+ "The Date Time Picker option type is tied to a standard form input field "
1385
+ "which displays a calendar pop-up that allow the user to pick any date and "
1386
+ "time when focus is given to the input field. The returned value is a date "
1387
+ "and time formatted string."
1388
+ msgstr ""
1389
+ "Kuupäeva ja aja valiku valikutüüp on seotud standartse vormi sisendväljaga. "
1390
+ "Kui sellele antakse fookus, siis kuvatakse kalendri aken, mis laseb "
1391
+ "kasutajal valida suvalise kuupäeva ja kellaaja. Tagastatav väärtus on "
1392
+ "kuupäeva ja kellaaja formaadis string."
1393
+
1394
+ #: ../includes/ot-functions-docs-page.php:166
1395
+ #, php-format
1396
+ msgid ""
1397
+ "The Dimension option type is used to set width and height values. The text "
1398
+ "inputs except numerical values and the select lets you choose the unit of "
1399
+ "measurement to add to that value. Currently the default units are %s, %s, "
1400
+ "%s, and %s. However, you can change them with the %s filter."
1401
+ msgstr ""
1402
+ "Mõõtme valikutüüpi kasutatakse laiuse ja kõrguse väärtuste jaoks. "
1403
+ "Tekstisisendisse saab kirjutada numbrilise väärtuse ning rippmenüü laseb "
1404
+ "valida talle mõõtühiku. Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid "
1405
+ "saab muuta %s filtriga."
1406
+
1407
+ #: ../includes/ot-functions-docs-page.php:169
1408
+ msgid ""
1409
+ "The Gallery option type saves a comma separated list of image attachment "
1410
+ "IDs. You will need to create a front-end function to display the images in "
1411
+ "your theme."
1412
+ msgstr ""
1413
+ "Galerii valikutüüp salvestab komaga eraldatud loendi pildi tüüpi manuste ID-"
1414
+ "dest. Nende piltide teemas näitamiseks tuleb luua kuvatava lehe jaoks "
1415
+ "funktsioon."
1416
+
1417
+ #: ../includes/ot-functions-docs-page.php:172
1418
+ #, php-format
1419
+ msgid ""
1420
+ "The Google Fonts option type will dynamically enqueue any number of Google "
1421
+ "Web Fonts into the document %1$s. As well, once the option has been saved "
1422
+ "each font family will automatically be inserted into the %2$s array for the "
1423
+ "Typography option type. You can further modify the font stack by using the "
1424
+ "%3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s "
1425
+ "parameter is being passed from %7$s, so it will be the ID of a Typography "
1426
+ "option type. This will allow you to add additional web safe fonts to "
1427
+ "individual font families on an as-need basis."
1428
+ msgstr ""
1429
+ "Google Fontide valikutüüp kaasab dokumendi %1$s dünaamiliselt soovitud hulga "
1430
+ "Google veebifonte. Lisaks salvestub iga valitud fondi perekond automaatselt "
1431
+ "%2$s massiivi tüpograafia valikutüübis. Fondi salve saab veel rohkem "
1432
+ "modifitseerida %3$s filtriga, mis saab kaasa %4$s, %5$s ja %6$s parameetrid. "
1433
+ "%6$s parameeter antakse %7$s, nii et ta on tüpograafia valikutüübi ID. See "
1434
+ "võimaldab lisada veebis kasutamiseks sobilikke fonte erinevatele fondi "
1435
+ "perekondadele vastavalt vajadusele."
1436
+
1437
+ #: ../includes/ot-functions-docs-page.php:175
1438
+ #, php-format
1439
+ msgid ""
1440
+ "The JavaScript option type is a textarea that uses the %s code editor to "
1441
+ "highlight your JavaScript and display errors as you type."
1442
+ msgstr ""
1443
+ "JavaScript valikutüüp on tekstiväli, mis kasutab %s koodi redaktorit sinu "
1444
+ "kirjutatava JavaScripti süntaksi esile toomiseks ning vigade näitamiseks "
1445
+ "kirjutamise ajal."
1446
+
1447
+ #: ../includes/ot-functions-docs-page.php:178
1448
+ msgid "The Link Color option type is used to set all link color states."
1449
+ msgstr ""
1450
+ "Lingi värvi valikutüüpi kasutatakse kõikide linkide värviolekute määramiseks."
1451
+
1452
+ #: ../includes/ot-functions-docs-page.php:181
1453
+ msgid ""
1454
+ "The List Item option type replaced the Slider option type and allows for a "
1455
+ "great deal of customization. You can add settings to the List Item and those "
1456
+ "settings will be displayed to the user when they add a new List Item. "
1457
+ "Typical use is for creating sliding content or blocks of code for custom "
1458
+ "layouts."
1459
+ msgstr ""
1460
+ "Nimekirja valikutüüp vahetas välja slaidiesitaja valikutüübi ning võimaldab "
1461
+ "põhjalikku kohandamist. Nimekirja elementidele saab lisada sätteid, mida "
1462
+ "näidatakse kasutajale uue elemendi lisamisel. Tüüpiline kasutusjuht on "
1463
+ "liugleva sisu või koodiblokkide loomiseks."
1464
+
1465
+ #: ../includes/ot-functions-docs-page.php:184
1466
+ #, php-format
1467
+ msgid ""
1468
+ "The Measurement option type is a mix of input and select fields. The text "
1469
+ "input excepts a value and the select lets you choose the unit of measurement "
1470
+ "to add to that value. Currently the default units are %s, %s, %s, and %s. "
1471
+ "However, you can change them with the %s filter."
1472
+ msgstr ""
1473
+ "Mõõdu valikutüüp on segu sisendväljast ja valikuväljast. Tekstisisend eeldab "
1474
+ "väärtust ning rippvalik laseb valida mõõduühiku sellele väärtusele. Hetkel "
1475
+ "on vaikimisi ühikuteks %s, %s, %s ja %s. Neid saab muuta %s filtriga."
1476
+
1477
+ #: ../includes/ot-functions-docs-page.php:186
1478
+ #, php-format
1479
+ msgid ""
1480
+ "Example filter to add new units to the Measurement option type. Added to %s."
1481
+ msgstr "Näidisfilter mõõdu valikutüüpi ühikute lisamiseks. Lisatakse %s faili."
1482
+
1483
+ #: ../includes/ot-functions-docs-page.php:199
1484
+ msgid ""
1485
+ "Example filter to completely change the units in the Measurement option "
1486
+ "type. Added to <code>functions.php</code>."
1487
+ msgstr ""
1488
+ "Näidisfilter, mis muudab mõõdu valikutüübi ühikud täiesti teistsugusteks. "
1489
+ "Lisatakse <code>functions.php</code> faili."
1490
+
1491
+ #: ../includes/ot-functions-docs-page.php:215
1492
+ msgid ""
1493
+ "The Numeric Slider option type displays a jQuery UI slider. It will return a "
1494
+ "single numerical value for use in a custom function or loop."
1495
+ msgstr ""
1496
+ "Numbriliuguri valikutüüp kuvab jQuery UI liuguri. See tagastab ühe "
1497
+ "numbrilise väärtuse enda funktsioonis või tsüklis kasutamiseks."
1498
+
1499
+ #: ../includes/ot-functions-docs-page.php:218
1500
+ #, php-format
1501
+ msgid ""
1502
+ "The On/Off option type displays a simple switch that can be used to turn "
1503
+ "things on or off. The saved return value is either %s or %s."
1504
+ msgstr ""
1505
+ "Sees/väljas valikutüüp kuvab lihtsa lüliti, millega saab asju sisse või "
1506
+ "välja lülitada. Salvestatud väärtus on kas %s või %s."
1507
+
1508
+ #: ../includes/ot-functions-docs-page.php:221
1509
+ msgid ""
1510
+ "The Page Checkbox option type displays a list of page IDs. It allows the "
1511
+ "user to check multiple page IDs for use in a custom function or loop."
1512
+ msgstr ""
1513
+ "Lehe valikkastide valikutüüp kuvab nimekirja kõikidest lehtede ID-dest. See "
1514
+ "võimaldab kasutajal märgistada mitu lehe ID-d, mida kasutada enda "
1515
+ "funktsioonis või tsüklis."
1516
+
1517
+ #: ../includes/ot-functions-docs-page.php:224
1518
+ msgid ""
1519
+ "The Page Select option type displays a list of page IDs. It will return a "
1520
+ "single page ID for use in a custom function or loop."
1521
+ msgstr ""
1522
+ "Lehe rippvaliku valikutüüp kuvab nimekirja kõikidest lehtede ID-dest. See "
1523
+ "tagastab ühe lehe ID, mida kasutada enda funktsioonis või tsüklis."
1524
+
1525
+ #: ../includes/ot-functions-docs-page.php:227
1526
+ msgid ""
1527
+ "The Post Checkbox option type displays a list of post IDs. It allows the "
1528
+ "user to check multiple post IDs for use in a custom function or loop."
1529
+ msgstr ""
1530
+ "Postituse valikkastid valikutüüp kuvab nimekirja kõikidest postituste ID-"
1531
+ "dest. See võimaldab kasutajal märgistada mitu postituse ID-d, mida kasutada "
1532
+ "enda funktsioonis või tsüklis."
1533
+
1534
+ #: ../includes/ot-functions-docs-page.php:230
1535
+ msgid ""
1536
+ "The Post Select option type displays a list of post IDs. It will return a "
1537
+ "single post ID for use in a custom function or loop."
1538
+ msgstr ""
1539
+ "Postituse rippvaliku valikutüüp kuvab nimekirja kõikidest postituste ID-"
1540
+ "dest. See tagastab ühe postituse ID, mida kasutada enda funktsioonis või "
1541
+ "tsüklis."
1542
+
1543
+ #: ../includes/ot-functions-docs-page.php:233
1544
+ msgid ""
1545
+ "The Radio option type displays a group of choices. It allows the user to "
1546
+ "choose one and will return that value as a string for use in a custom "
1547
+ "function or loop."
1548
+ msgstr ""
1549
+ "Raadiovaliku valikutüüp näitab valikute gruppi. See laseb kasutajal valida "
1550
+ "neist ühe ning tagastab selle väärtuse string-ina enda funktsioonis või "
1551
+ "tsüklis kasutamiseks."
1552
+
1553
+ #: ../includes/ot-functions-docs-page.php:236
1554
+ #, php-format
1555
+ msgid ""
1556
+ "the Radio Images option type is primarily used for layouts. However, you can "
1557
+ "filter the image list using %s. As well, you can add your own custom images "
1558
+ "using the choices array."
1559
+ msgstr ""
1560
+ "Piltidega raadiovaliku valikutüüpi kasutatakse peamiselt paigutuste jaoks. "
1561
+ "Piltide loendit saab filtreerida %s abil. Valikute massiivi saab lisada enda "
1562
+ "pilte."
1563
+
1564
+ #: ../includes/ot-functions-docs-page.php:238
1565
+ msgid ""
1566
+ "This example executes the <code>ot_radio_images</code> filter on layout "
1567
+ "images attached to the <code>my_radio_images</code> field. Added to "
1568
+ "<code>functions.php</code>."
1569
+ msgstr ""
1570
+ "See näide käivitab <code>ot_radio_images</code> filtri "
1571
+ "<code>my_radio_images</code> väljale lisatud paigutuse piltidel. Lisatakse "
1572
+ "<code>functions.php</code> faili."
1573
+
1574
+ #: ../includes/ot-functions-docs-page.php:263
1575
+ msgid ""
1576
+ "The Select option type is used to list anything you want that would be "
1577
+ "chosen from a select list."
1578
+ msgstr ""
1579
+ "Rippvaliku valikutüüpi saab kasutada ükskõik mille loendamiseks, mida saab "
1580
+ "valida rippmenüüst."
1581
+
1582
+ #: ../includes/ot-functions-docs-page.php:266
1583
+ #, php-format
1584
+ msgid ""
1585
+ "This option type makes it possible for users to select a WordPress "
1586
+ "registered sidebar to use on a specific area. By using the two provided "
1587
+ "filters, %s, and %s we can be selective about which sidebars are available "
1588
+ "on a specific content area."
1589
+ msgstr ""
1590
+ "See valikutüüp võimaldab kasutajatel valida WordPressis registreeritud "
1591
+ "küljeriba, kasutamaks seda kindlas kohas. Kahe kaasa antud filtri, %s ja %s "
1592
+ "abil saab määrata, millist küljeriba millises sisuosas näidata."
1593
+
1594
+ #: ../includes/ot-functions-docs-page.php:267
1595
+ #, php-format
1596
+ msgid ""
1597
+ "For example, if we create a WordPress theme that provides the ability to "
1598
+ "change the Blog Sidebar and we don't want to have the footer sidebars "
1599
+ "available on this area, we can unset those sidebars either manually or by "
1600
+ "using a regular expression if we have a common name like %s."
1601
+ msgstr ""
1602
+ "Näiteks kui luua WordPressi teema, mis võimaldab muuta blogi küljeriba ning "
1603
+ "me ei soovi siin alas näha jaluse küljeribasid, siis saame need küljeribad "
1604
+ "ära võtta kas käsitsi või kasutades regulaaravaldist, nagu näiteks %s."
1605
+
1606
+ #: ../includes/ot-functions-docs-page.php:270
1607
+ msgid ""
1608
+ "The Slider option type is technically deprecated. Use the List Item option "
1609
+ "type instead, as it's infinitely more customizable. Typical use is for "
1610
+ "creating sliding image content."
1611
+ msgstr ""
1612
+ "Tehniliselt on slaidiesitaja valikutüübi kasutamine taunitud. Kasutage parem "
1613
+ "nimekirja elemendi valikutüüpi, kuna see on lõpmatult kohandatav. Tüüpiline "
1614
+ "kasutusjuht on libisevate piltidega sisu jaoks."
1615
+
1616
+ #: ../includes/ot-functions-docs-page.php:273
1617
+ #, php-format
1618
+ msgid ""
1619
+ "The Social Links option type utilizes a drag & drop interface to create a "
1620
+ "list of social links. There are a few filters that make extending this "
1621
+ "option type easy. You can set the %s filter to %s and turn off loading "
1622
+ "default values. Use the %s filter to change the default values that are "
1623
+ "loaded. To filter the settings array use the %s filter."
1624
+ msgstr ""
1625
+ "Sotsiaalmeedia linkide valikutüübis kasutatakse nimekirja loomiseks tiri-ja-"
1626
+ "pilla liidest. On loodud mõned filtrid, mis teevad selle valikutüübi "
1627
+ "täiendamise kergeks. Filter %s väärtuseks saab määrata %s, et lülitada välja "
1628
+ "vaikimisi väärtuste laadimine. %s filtriga saab muuta vaikeväärtuseid. "
1629
+ "Sätete massiivi filtreerimiseks on %s."
1630
+
1631
+ #: ../includes/ot-functions-docs-page.php:276
1632
+ #, php-format
1633
+ msgid ""
1634
+ "The Spacing option type is used to set spacing values such as padding or "
1635
+ "margin in the form of top, right, bottom, and left. The text inputs except "
1636
+ "numerical values and the select lets you choose the unit of measurement to "
1637
+ "add to that value. Currently the default units are %s, %s, %s, and %s. "
1638
+ "However, you can change them with the %s filter."
1639
+ msgstr ""
1640
+ "Vahede valikutüüpi kasutatakse \"padding\" ja \"margin\" väärtuste jaoks "
1641
+ "kujul \"top\", \"right\", \"bottom\", \"left\". Tekstisisendisse saab "
1642
+ "kirjutada numbrilise väärtuse ning rippmenüü laseb valida talle mõõtühiku. "
1643
+ "Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid saab muuta %s filtriga."
1644
+
1645
+ #: ../includes/ot-functions-docs-page.php:279
1646
+ msgid ""
1647
+ "The Tab option type will break a section or metabox into tabbed content."
1648
+ msgstr ""
1649
+ "Saki valikutüüp muudab sektsiooni või meta-kasti sakkidega sisuelemendiks."
1650
+
1651
+ #: ../includes/ot-functions-docs-page.php:282
1652
+ msgid ""
1653
+ "The Tag Checkbox option type displays a list of tag IDs. It allows the user "
1654
+ "to check multiple tag IDs and will return that value as an array for use in "
1655
+ "a custom function or loop."
1656
+ msgstr ""
1657
+ "Sildi valikukasti valikutüüp kuvab loendi siltide ID-dega. See laseb "
1658
+ "kasutajal märkida mitu sildi ID-d ning tagastab selle väärtuse massiivina "
1659
+ "enda funktsioonis või tsüklis kasutamiseks."
1660
+
1661
+ #: ../includes/ot-functions-docs-page.php:285
1662
+ msgid ""
1663
+ "The Tag Select option type displays a list of tag IDs. It allows the user to "
1664
+ "select only one tag ID and will return that value for use in a custom "
1665
+ "function or loop."
1666
+ msgstr ""
1667
+ "Sildi rippvaliku valikutüüp kuvab loendi siltide ID-dega. See laseb "
1668
+ "kasutajal märkida ainult ühe sildi ID ning tagastab selle väärtuse enda "
1669
+ "funktsioonis või tsüklis kasutamiseks."
1670
+
1671
+ #: ../includes/ot-functions-docs-page.php:288
1672
+ msgid ""
1673
+ "The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
1674
+ "the user to check multiple taxonomy IDs and will return that value as an "
1675
+ "array for use in a custom function or loop."
1676
+ msgstr ""
1677
+ "Taksonoomia valikukasti valikutüüp kuvab loendi taksonoomiate ID-dega. See "
1678
+ "laseb kasutajal märkida mitu taksonoomia ID-d ning tagastab selle väärtuse "
1679
+ "massiivina enda funktsioonis või tsüklis kasutamiseks."
1680
+
1681
+ #: ../includes/ot-functions-docs-page.php:291
1682
+ msgid ""
1683
+ "The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
1684
+ "the user to select only one taxonomy ID and will return that value for use "
1685
+ "in a custom function or loop."
1686
+ msgstr ""
1687
+ "Taksonoomia rippvaliku valikutüüp kuvab loendi taksonoomiate ID-dega. See "
1688
+ "laseb kasutajal märkida ainult ühe taksonoomia ID ning tagastab selle "
1689
+ "väärtuse enda funktsioonis või tsüklis kasutamiseks."
1690
+
1691
+ #: ../includes/ot-functions-docs-page.php:294
1692
+ msgid ""
1693
+ "The Text option type is used to save string values. For example, any "
1694
+ "optional or required text that is of reasonably short character length."
1695
+ msgstr ""
1696
+ "Teksti valikutüüpi kasutatakse väärtuste salvestamiseks stringi kujul. "
1697
+ "Näiteks mõni valikuline või nõutud tekst, mis on piisavalt lühike."
1698
+
1699
+ #: ../includes/ot-functions-docs-page.php:297
1700
+ #, php-format
1701
+ msgid ""
1702
+ "The Textarea option type is a large string value used for custom code or "
1703
+ "text in the theme and has a WYSIWYG editor that can be filtered to change "
1704
+ "the how it is displayed. For example, you can filter %s, %s, %s, and %s."
1705
+ msgstr ""
1706
+ "Tekstivälja valikutüüp on suur väärtus stringi kujul salvestamiseks, millel "
1707
+ "on WYSIWYG toimetaja, mida saab filtreerida muutmaks tema kuvamist. Näiteks "
1708
+ "saab filtreerida %s, %s, %s ja %s."
1709
+
1710
+ #: ../includes/ot-functions-docs-page.php:299
1711
+ msgid ""
1712
+ "Example filters to alter the Textarea option type. Added to <code>functions."
1713
+ "php</code>."
1714
+ msgstr ""
1715
+ "Näidisfiltrid, millega muuta tekstivälja valikutüüpi. Lisatakse "
1716
+ "<code>functions.php</code> faili."
1717
+
1718
+ #: ../includes/ot-functions-docs-page.php:301
1719
+ msgid ""
1720
+ "This example keeps WordPress from executing the <code>wpautop</code> filter "
1721
+ "on the line breaks. The default is <code>true</code> which means it wraps "
1722
+ "line breaks with an HTML <code>p</code> tag."
1723
+ msgstr ""
1724
+ "See näide takistab Wordpressil kasutada <code>wpautop</code> filtrit "
1725
+ "reavahetustel. Vaikeväärtus on <code>true</code>, mis tähendab, et "
1726
+ "reavahtused mähitakse HTML <code>p</code> elemendiga."
1727
+
1728
+ #: ../includes/ot-functions-docs-page.php:314
1729
+ msgid ""
1730
+ "This example keeps WordPress from executing the <code>media_buttons</code> "
1731
+ "filter on the textarea WYSIWYG. The default is <code>true</code> which means "
1732
+ "show the buttons."
1733
+ msgstr ""
1734
+ "See näide takistab Wordpressil kasutada <code>media_buttons</code> filtrit "
1735
+ "tekstivälja WYSIWYG toimetajas. Vaikeväärtus on <code>true</code>, mis "
1736
+ "tähendab, et nuppe näidatakse."
1737
+
1738
+ #: ../includes/ot-functions-docs-page.php:327
1739
+ msgid ""
1740
+ "This example keeps WordPress from executing the <code>tinymce</code> filter "
1741
+ "on the textarea WYSIWYG. The default is <code>true</code> which means show "
1742
+ "the tinymce."
1743
+ msgstr ""
1744
+ "See näide takistab Wordpressil kasutada <code>tinymce</code> filtrit "
1745
+ "tekstivälja WYSIWYG toimetajas. Vaikeväärtus on <code>true</code>, mis "
1746
+ "tähendab, et tinymce on nähtaval."
1747
+
1748
+ #: ../includes/ot-functions-docs-page.php:340
1749
+ msgid ""
1750
+ "This example alters the <code>quicktags</code> filter on the textarea "
1751
+ "WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
1752
+ "ins,img,ul,ol,li,code,spell,close' )</code> which means show those "
1753
+ "quicktags. It also means you can filter in your own custom quicktags."
1754
+ msgstr ""
1755
+ "See näide muudab <code>quicktags</code> filtrit tekstivälja WYSIWYG "
1756
+ "toimetajas. Vaikeväärtus on <code>array('buttons' => 'strong,em,link,block,"
1757
+ "del,ins,img,ul,ol,li,code,spell,close')</code>, mis tähendab, et neid "
1758
+ "elemente näidatakse. Siitkaudu saad kaasata endale sobivaid elemente."
1759
+
1760
+ #: ../includes/ot-functions-docs-page.php:356
1761
+ msgid ""
1762
+ "The Textarea Simple option type is a large string value used for custom code "
1763
+ "or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
1764
+ msgstr ""
1765
+ "Lihtsa tekstivälja valikutüüp on suur string-tüüpi väärtus teemas oleva "
1766
+ "kohandatud koodi või teksti jaoks. Lihtsal tekstiväljal ei ole WYSIWYG "
1767
+ "toimetajat."
1768
+
1769
+ #: ../includes/ot-functions-docs-page.php:358
1770
+ #, php-format
1771
+ msgid ""
1772
+ "This example tells WordPress to execute the %s filter on the line breaks. "
1773
+ "The default is %s which means it does not wraps line breaks with an HTML %s "
1774
+ "tag. Added to %s."
1775
+ msgstr ""
1776
+ "See näide ütleb Wordpressile, et reavahetuste korral kasutada %s filtrit. "
1777
+ "Vaikeväärtus on %s, mis tähendab, et reavahetusi ei mähita HTML %s "
1778
+ "elemendiga. Lisatakse %s faili."
1779
+
1780
+ #: ../includes/ot-functions-docs-page.php:372
1781
+ msgid ""
1782
+ "The Textblock option type is used only on the Theme Option page. It will "
1783
+ "allow you to create & display HTML, but has no title above the text block. "
1784
+ "You can then use the Textblock to add a more detailed set of instruction on "
1785
+ "how the options are used in your theme. You would never use this in your "
1786
+ "themes template files as it does not save a value."
1787
+ msgstr ""
1788
+ "Tekstibloki valikutüüpi kasutatakse teema valikute lehel. See võimaldab luua "
1789
+ "ja kuvada HTML-i, kuid tal puudub pealkiri. Sellega saab lisada detailsemaid "
1790
+ "kirjeldusi teemas kasutatavate valikute jaoks. Seda ei kasutata teema "
1791
+ "mallifailides, kuna ta ei salvesta mingit väärtust."
1792
+
1793
+ #: ../includes/ot-functions-docs-page.php:375
1794
+ msgid ""
1795
+ "The Textblock Titled option type is used only on the Theme Option page. It "
1796
+ "will allow you to create & display HTML, and has a title above the text "
1797
+ "block. You can then use the Textblock Titled to add a more detailed set of "
1798
+ "instruction on how the options are used in your theme. You would never use "
1799
+ "this in your themes template files as it does not save a value."
1800
+ msgstr ""
1801
+ "Pealkirjaga tekstibloki valikutüüpi kasutatakse teema valikute lehel. See "
1802
+ "võimaldab luua ja kuvada HTML-i ning tema kohal on pealkiri. Sellega saab "
1803
+ "lisada detailsemaid kirjeldusi teemas kasutatavate valikute jaoks. Seda ei "
1804
+ "kasutata teema mallifailides, kuna ta ei salvesta mingit väärtust."
1805
+
1806
+ #: ../includes/ot-functions-docs-page.php:378
1807
+ #, php-format
1808
+ msgid ""
1809
+ "The Typography option type is for adding typography styles to your theme "
1810
+ "either dynamically via the CSS option type above or manually with %s. The "
1811
+ "Typography option type has filters that allow you to remove fields or change "
1812
+ "the defaults. For example, you can filter %s to remove unwanted fields from "
1813
+ "all Background options or an individual one. You can also filter %s. These "
1814
+ "filters allow you to fine tune the select lists for your specific needs."
1815
+ msgstr ""
1816
+ "Tüpograafia valikutüübiga saab teemale lisada stiile, kas dünaamiliselt ülal "
1817
+ "oleva CSS valikutüübiga või käsitsi %s abil. Tüpograafia valikutüübil on "
1818
+ "filtrid, mis lasevad välju eemaldada või vaikimisi välju muuta. Näiteks saab "
1819
+ "filtreerida %s, eemaldamaks soovimatuid välju kõikidelt tausta valikutelt "
1820
+ "või mõnelt neist. Saab filtreerida ka %s. Need filtrid aitavad valikute "
1821
+ "nimekirja täpselt oma vajaduste järgi häälestada."
1822
+
1823
+ #: ../includes/ot-functions-docs-page.php:380
1824
+ msgid ""
1825
+ "This example would filter <code>ot_recognized_font_families</code> to build "
1826
+ "your own font stack. Added to <code>functions.php</code>."
1827
+ msgstr ""
1828
+ "See näide filtreerib <code>ot_recognized_font_families</code> loomaks enda "
1829
+ "fondipinu. Lisatakse <code>functions.php</code> faili."
1830
+
1831
+ #: ../includes/ot-functions-docs-page.php:398
1832
+ #, php-format
1833
+ msgid ""
1834
+ "The Upload option type is used to upload any WordPress supported media. "
1835
+ "After uploading, users are required to press the \"%s\" button in order to "
1836
+ "populate the input with the URI of that media. There is one caveat of this "
1837
+ "feature. If you import the theme options and have uploaded media on one site "
1838
+ "the old URI will not reflect the URI of your new site. You will have to re-"
1839
+ "upload or %s any media to your new server and change the URIs if necessary."
1840
+ msgstr ""
1841
+ "Üleslaadimise valikutüüp kasutatakse suvalise Wordpressi toetatava meedia "
1842
+ "üles laadimiseks. Peale üleslaadimist peab kasutaja vajutama \"%s\" nuppu, "
1843
+ "et täita sisend selle meediaelemendi URI-ga. Selle omadusega kaasneb üks "
1844
+ "probleem - kui importida teema valikuid teistsuguse aadressiga veebilehelt, "
1845
+ "siis URI-d automaatselt ei uuene. Meediafailid tuleb kas uuesti üles laadida "
1846
+ "või %s, vajadusel muutes URI-sid."
1847
+
1848
+ #: ../includes/ot-functions-docs-page.php:430
1849
+ msgid ""
1850
+ "This function returns a value from the \"option_tree\" array of saved values "
1851
+ "or the default value supplied. The returned value would be mixed. Meaning it "
1852
+ "could be a string, integer, boolean, or array."
1853
+ msgstr ""
1854
+ "See funktsioon tagastab või vajadusel trükib väärtuse \"option_tree\" "
1855
+ "massiivi salvestatud väärtustest või kaasaantud vaikeväärtuse. Tagastatud "
1856
+ "väärtus tüüp on segunenud. See tähendab, et ta võib olla string, integer, "
1857
+ "boolean või massiiv."
1858
+
1859
+ #: ../includes/ot-functions-docs-page.php:432
1860
+ #: ../includes/ot-functions-docs-page.php:482
1861
+ msgid "Usage"
1862
+ msgstr "Kasutus"
1863
+
1864
+ #: ../includes/ot-functions-docs-page.php:436
1865
+ #: ../includes/ot-functions-docs-page.php:486
1866
+ msgid "Parameters"
1867
+ msgstr "Parameetrid"
1868
+
1869
+ #: ../includes/ot-functions-docs-page.php:440
1870
+ #: ../includes/ot-functions-docs-page.php:444
1871
+ #: ../includes/ot-functions-docs-page.php:490
1872
+ msgid "string"
1873
+ msgstr "string"
1874
+
1875
+ #: ../includes/ot-functions-docs-page.php:440
1876
+ #: ../includes/ot-functions-docs-page.php:490
1877
+ msgid "required"
1878
+ msgstr "nõutud"
1879
+
1880
+ #: ../includes/ot-functions-docs-page.php:440
1881
+ msgid "Enter the options unique identifier."
1882
+ msgstr "Sisesta valikule unikaalne identifikaator."
1883
+
1884
+ #: ../includes/ot-functions-docs-page.php:440
1885
+ #: ../includes/ot-functions-docs-page.php:490
1886
+ msgid "Default:"
1887
+ msgstr "Vaikimisi:"
1888
+
1889
+ #: ../includes/ot-functions-docs-page.php:440
1890
+ #: ../includes/ot-functions-docs-page.php:444
1891
+ #: ../includes/ot-functions-docs-page.php:490
1892
+ #: ../includes/ot-functions-docs-page.php:494
1893
+ msgid "None"
1894
+ msgstr "Puudub"
1895
+
1896
+ #: ../includes/ot-functions-docs-page.php:444
1897
+ #: ../includes/ot-functions-docs-page.php:494
1898
+ #: ../includes/ot-functions-docs-page.php:498
1899
+ #: ../includes/ot-functions-docs-page.php:502
1900
+ #: ../includes/ot-functions-docs-page.php:506
1901
+ msgid "optional"
1902
+ msgstr "valikuline"
1903
+
1904
+ #: ../includes/ot-functions-docs-page.php:444
1905
+ msgid ""
1906
+ "Enter a default return value. This is just incase the request returns null."
1907
+ msgstr "Sisesta vaikeväärtus. See on vajalik juhul, kui päring tagastab nulli."
1908
+
1909
+ #: ../includes/ot-functions-docs-page.php:444
1910
+ #: ../includes/ot-functions-docs-page.php:494
1911
+ #: ../includes/ot-functions-docs-page.php:498
1912
+ #: ../includes/ot-functions-docs-page.php:502
1913
+ #: ../includes/ot-functions-docs-page.php:506
1914
+ msgid "Default"
1915
+ msgstr "Vaikimisi"
1916
+
1917
+ #: ../includes/ot-functions-docs-page.php:474
1918
+ msgid ""
1919
+ "This function has been deprecated. That means it has been replaced by a new "
1920
+ "function or is no longer supported, and may be removed from future versions. "
1921
+ "All code that uses this function should be converted to use its replacement."
1922
+ msgstr ""
1923
+ "Selle funktsiooni kasutamist taunitakse. See tähendab, et ta on asendatud "
1924
+ "uue funktsiooniga või teda ei toetata enam ning ta võidakse tulevastest "
1925
+ "versioonidest välja jätta. Kõik seda funktsiooni kasutav kood tuleks ümber "
1926
+ "muuta kasutamaks tema asendust."
1927
+
1928
+ #: ../includes/ot-functions-docs-page.php:476
1929
+ msgid "Use"
1930
+ msgstr "Kasuta"
1931
+
1932
+ #: ../includes/ot-functions-docs-page.php:476
1933
+ msgid "instead"
1934
+ msgstr "asemel"
1935
+
1936
+ #: ../includes/ot-functions-docs-page.php:480
1937
+ msgid ""
1938
+ "This function returns, or echos if asked, a value from the \"option_tree\" "
1939
+ "array of saved values."
1940
+ msgstr ""
1941
+ "See funktsioon tagastab või vajadusel trükib väärtuse \"option_tree\" "
1942
+ "massiivi salvestatud väärtustest."
1943
+
1944
+ #: ../includes/ot-functions-docs-page.php:490
1945
+ msgid "Enter a unique Option Key to get a returned value or array."
1946
+ msgstr "Sisesta unikaalne valiku võti saamaks väärtust või massiivi."
1947
+
1948
+ #: ../includes/ot-functions-docs-page.php:494
1949
+ msgid "array"
1950
+ msgstr "array"
1951
+
1952
+ #: ../includes/ot-functions-docs-page.php:494
1953
+ msgid "Used to cut down on database queries in template files."
1954
+ msgstr "Kasutatakse andmebaasi päringute vähendamiseks mallifailides."
1955
+
1956
+ #: ../includes/ot-functions-docs-page.php:498
1957
+ #: ../includes/ot-functions-docs-page.php:502
1958
+ msgid "boolean"
1959
+ msgstr "boolean"
1960
+
1961
+ #: ../includes/ot-functions-docs-page.php:498
1962
+ msgid "Echo the output."
1963
+ msgstr "Trüki väljund."
1964
+
1965
+ #: ../includes/ot-functions-docs-page.php:502
1966
+ msgid "Used to indicate the $item_id is an array of values."
1967
+ msgstr "Kasutatakse märkimaks, et $item_id on väärtuste massiiv."
1968
+
1969
+ #: ../includes/ot-functions-docs-page.php:506
1970
+ msgid "integer"
1971
+ msgstr "integer"
1972
+
1973
+ #: ../includes/ot-functions-docs-page.php:506
1974
+ msgid ""
1975
+ "Numeric offset key for the $item_id array, -1 will return all values (an "
1976
+ "array starts at 0)."
1977
+ msgstr ""
1978
+ "Numbriline nihkevõti $item_id massiivi jaoks, -1 tagastab kõik väärtused "
1979
+ "( massiiv algab 0-st )."
1980
+
1981
+ #: ../includes/ot-functions-docs-page.php:534
1982
+ msgid ""
1983
+ "If you're using the plugin version of OptionTree it is highly recommended to "
1984
+ "include a <code>function_exists</code> check in your code, as described in "
1985
+ "the examples below. If you've integrated OptionTree directly into your "
1986
+ "themes root directory, you will <strong>not</strong> need to wrap your code "
1987
+ "with <code>function_exists</code>, as you're guaranteed to have the "
1988
+ "<code>ot_get_option()</code> function available."
1989
+ msgstr ""
1990
+ "Kui kasutate OptionTree mooduli versiooni, siis on soovitatav oma koodi "
1991
+ "lisada <code>function_exists</code> kontroll, nagu kirjeldatud allpool "
1992
+ "toodud näidetes. Kui olete OptionTree otse oma teema juurkataloogi sisse "
1993
+ "ehitanud, siis teil <strong>ei ole</strong> vaja mähkida oma koodi "
1994
+ "<code>function_exists</code> kontrolliga, sest teil on "
1995
+ "<code>ot_get_option()</code> funktsiooni saadavus garanteeritud."
1996
+
1997
+ #: ../includes/ot-functions-docs-page.php:536
1998
+ msgid "String Examples"
1999
+ msgstr "<em>String-i</em> näited"
2000
+
2001
+ #: ../includes/ot-functions-docs-page.php:538
2002
+ msgid "Returns the value of <code>test_input</code>."
2003
+ msgstr "Tagastab <code>test_input</code> väärtuse."
2004
+
2005
+ #: ../includes/ot-functions-docs-page.php:544
2006
+ msgid ""
2007
+ "Returns the value of <code>test_input</code>, but also has a default value "
2008
+ "if it returns empty."
2009
+ msgstr ""
2010
+ "Tagastab <code>test_input</code> väärtuse või vaikeväärtuse, kui tagastatud "
2011
+ "väärtus on tühi."
2012
+
2013
+ #: ../includes/ot-functions-docs-page.php:550
2014
+ msgid "Array Examples"
2015
+ msgstr "<em>Array</em> näited"
2016
+
2017
+ #: ../includes/ot-functions-docs-page.php:552
2018
+ msgid ""
2019
+ "Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
2020
+ "code>. It then echos an unordered list of links (navigation) using "
2021
+ "<code>wp_list_pages()</code>."
2022
+ msgstr ""
2023
+ "Omistab <code>navigation_ids</code> väärtuse <code>$ids</code> muutujale. "
2024
+ "See trükib välja järjestamata loetelu ( navigatsiooni ) linkidest, kasutades "
2025
+ "<code>wp_list_pages()</code>."
2026
+
2027
+ #: ../includes/ot-functions-docs-page.php:572
2028
+ msgid ""
2029
+ "The next two examples demonstrate how to use the <strong>Measurement</"
2030
+ "strong> option type. The Measurement option type is an array with two key/"
2031
+ "value pairs. The first is the value of measurement and the second is the "
2032
+ "unit of measurement."
2033
+ msgstr ""
2034
+ "Järgnevad kaks näidet demonstreerivad, kuidas kasutada <strong>mõõdu</"
2035
+ "strong> valikutüüpi. Mõõdu valikutüüp on massiiv kahe võti-väärtus paariga. "
2036
+ "Esimene on mõõdu väärtus ning teine on mõõduühik."
2037
+
2038
+ #: ../includes/ot-functions-docs-page.php:598
2039
+ msgid "This example displays a very basic slider loop."
2040
+ msgstr "See näide kuvab väga algelise slaidi esitleja tsükli."
2041
+
2042
+ #: ../includes/ot-functions-docs-page.php:643
2043
+ msgid "It's Super Simple"
2044
+ msgstr "See on imelihtne"
2045
+
2046
+ #: ../includes/ot-functions-docs-page.php:645
2047
+ msgid ""
2048
+ "Layouts make your theme awesome! With theme options data that you can save/"
2049
+ "import/export you can package themes with different color variations, or "
2050
+ "make it easy to do A/B testing on text and so much more. Basically, you save "
2051
+ "a snapshot of your data as a layout."
2052
+ msgstr ""
2053
+ "Paigutused teevad su teema aukartust äratavaks! Teema valikute infoga, mida "
2054
+ "saad salvestada/importida/eksportida, saad pakendada teemasid erinevate "
2055
+ "värvivariatsioonidega või kergelt teostada A/B testimist tekstiosadel ning "
2056
+ "palju muud. Põhimõtteliselt on paigutus sinu andmete ülesvõtte salvestus."
2057
+
2058
+ #: ../includes/ot-functions-docs-page.php:647
2059
+ msgid ""
2060
+ "Once you have created all your different layouts, or theme variations, you "
2061
+ "can save them to a separate text file for repackaging with your theme. "
2062
+ "Alternatively, you could just make different variations for yourself and "
2063
+ "change your theme with the click of a button, all without deleting your "
2064
+ "previous options data."
2065
+ msgstr ""
2066
+ "Peale kõikide erinevate paigutuste või teema variatsioonide loomist saab nad "
2067
+ "salvestada eraldi tekstifaili, mida teemaga kaasa pakendada. Teine "
2068
+ "kasutusviis oleks teha enda jaoks erinevad variatsioonid ja muuta oma teemat "
2069
+ "ainsa nupuvajutusega, ilma eelnevate andmete kustutamiseta."
2070
+
2071
+ #: ../includes/ot-functions-docs-page.php:649
2072
+ msgid ""
2073
+ " Adding a layout is ridiculously easy, follow these steps and you'll be on "
2074
+ "your way to having a WordPress super theme."
2075
+ msgstr ""
2076
+ "Paigutuse lisamine on naeruväärselt lihtne. Järgi neid samme ning oled teel "
2077
+ "WordPressi superteema omamisele."
2078
+
2079
+ #: ../includes/ot-functions-docs-page.php:651
2080
+ msgid "For Developers"
2081
+ msgstr "Arendajatele"
2082
+
2083
+ #: ../includes/ot-functions-docs-page.php:653
2084
+ #: ../includes/ot-functions-docs-page.php:682
2085
+ msgid "Creating a Layout"
2086
+ msgstr "Paigutuse loomine"
2087
+
2088
+ #: ../includes/ot-functions-docs-page.php:655
2089
+ #: ../includes/ot-functions-docs-page.php:662
2090
+ #: ../includes/ot-functions-docs-page.php:668
2091
+ msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
2092
+ msgstr "Mine <code>OptionTree->Sätted->Paigutused</code> sakile."
2093
+
2094
+ #: ../includes/ot-functions-docs-page.php:656
2095
+ msgid ""
2096
+ "Enter a name for your layout in the text field and hit \"Save Layouts\", "
2097
+ "you've created your first layout."
2098
+ msgstr ""
2099
+ "Sisesta tekstivälja oma paigutuse nimi ja vajuta \"Salvesta paigutused\" "
2100
+ "nuppu. Oled loonud oma esimese paigutuse."
2101
+
2102
+ #: ../includes/ot-functions-docs-page.php:657
2103
+ #: ../includes/ot-functions-docs-page.php:686
2104
+ msgid "Adding a new layout is as easy as repeating the steps above."
2105
+ msgstr "Uue paigutuse lisamine on lihtne, kui järgid ülaltoodud samme."
2106
+
2107
+ #: ../includes/ot-functions-docs-page.php:660
2108
+ #: ../includes/ot-functions-docs-page.php:689
2109
+ msgid "Activating a Layout"
2110
+ msgstr "Paigutuse aktiveerimine"
2111
+
2112
+ #: ../includes/ot-functions-docs-page.php:663
2113
+ msgid "Click on the activate layout button in the actions list."
2114
+ msgstr "Vajuta paigutuse aktiveerimise nupul tegevuste nimekirjas."
2115
+
2116
+ #: ../includes/ot-functions-docs-page.php:666
2117
+ #: ../includes/ot-functions-docs-page.php:695
2118
+ msgid "Deleting a Layout"
2119
+ msgstr "Paigutuse kustutamine"
2120
+
2121
+ #: ../includes/ot-functions-docs-page.php:669
2122
+ msgid "Click on the delete layout button in the actions list."
2123
+ msgstr "Vajuta paigutuse kustutamise nupul tegevuste nimekirjas."
2124
+
2125
+ #: ../includes/ot-functions-docs-page.php:672
2126
+ #: ../includes/ot-functions-docs-page.php:700
2127
+ msgid "Edit Layout Data"
2128
+ msgstr "Muuda paigutuse andmeid"
2129
+
2130
+ #: ../includes/ot-functions-docs-page.php:674
2131
+ #: ../includes/ot-functions-docs-page.php:684
2132
+ #: ../includes/ot-functions-docs-page.php:691
2133
+ msgid "Go to the <code>Appearance->Theme Options</code> page."
2134
+ msgstr "Mine <code>Välimus->Teema valikud</code> lehele."
2135
+
2136
+ #: ../includes/ot-functions-docs-page.php:675
2137
+ #: ../includes/ot-functions-docs-page.php:703
2138
+ msgid ""
2139
+ "Modify and save your theme options and the layout will be updated "
2140
+ "automatically."
2141
+ msgstr ""
2142
+ "Muuda ja salvesta oma teema valikuid ning paigutust uuendatakse automaatselt."
2143
+
2144
+ #: ../includes/ot-functions-docs-page.php:676
2145
+ #: ../includes/ot-functions-docs-page.php:704
2146
+ msgid ""
2147
+ "Saving theme options data will update the currently active layout, so before "
2148
+ "you start saving make sure you want to modify the current layout."
2149
+ msgstr ""
2150
+ "Teema valikute andmete salvestamine uuendab hetkel aktiivset paigutust, "
2151
+ "seega enne salvestamist veendu, et soovid muuta hetkel kasutuses olevat "
2152
+ "paigutust."
2153
+
2154
+ #: ../includes/ot-functions-docs-page.php:677
2155
+ msgid ""
2156
+ "If you want to edit a new layout, first create it then save your theme "
2157
+ "options."
2158
+ msgstr ""
2159
+ "Kui soovid muuta uut paigutust, tuleb see kõigepealt luua ja seejärel teema "
2160
+ "valikud salvestada."
2161
+
2162
+ #: ../includes/ot-functions-docs-page.php:680
2163
+ msgid "End-Users Mode"
2164
+ msgstr "Lõppkasutaja režiim"
2165
+
2166
+ #: ../includes/ot-functions-docs-page.php:685
2167
+ msgid ""
2168
+ "Enter a name for your layout in the text field and hit \"New Layout\", "
2169
+ "you've created your first layout."
2170
+ msgstr ""
2171
+ "Sisesta tekstivälja oma uue paigutuse nimi ja vajuta nuppu \"Uus paigutus\". "
2172
+ "Oled loonud oma esimese paigutuse."
2173
+
2174
+ #: ../includes/ot-functions-docs-page.php:692
2175
+ msgid ""
2176
+ "Choose a layout from the select list and click the \"Activate Layout\" "
2177
+ "button."
2178
+ msgstr "Vali rippmenüüst paigutus ja vajuta \"Aktiveeri paigutus\" nuppu."
2179
+
2180
+ #: ../includes/ot-functions-docs-page.php:697
2181
+ msgid "End-Users mode does not allow deleting layouts."
2182
+ msgstr "Lõppkasutaja režiim ei luba paigutusi kustutada."
2183
+
2184
+ #: ../includes/ot-functions-docs-page.php:702
2185
+ msgid "Go to the <code>Appearance->Theme Options</code> tab."
2186
+ msgstr "Mine <code>Välimus->Teema valikud</code> sakile."
2187
+
2188
+ #: ../includes/ot-functions-docs-page.php:733
2189
+ #: ../includes/ot-functions-docs-page.php:815
2190
+ msgid "How-to-guide"
2191
+ msgstr "Õpetus"
2192
+
2193
+ #: ../includes/ot-functions-docs-page.php:735
2194
+ msgid ""
2195
+ "There are a few simple steps you need to take in order to use OptionTree's "
2196
+ "built in Meta Box API. In the code below I'll show you a basic demo of how "
2197
+ "to create your very own custom meta box using any number of the option types "
2198
+ "you have at your disposal. If you would like to see some demo code, there is "
2199
+ "a directory named <code>theme-mode</code> inside the <code>assets</code> "
2200
+ "directory that contains a file named <code>demo-meta-boxes.php</code> you "
2201
+ "can reference."
2202
+ msgstr ""
2203
+ "OptionTreele sisse ehitatud Meta Box API kasutamiseks on vaja paari lihtsat "
2204
+ "toimingut. Allolevas koodis demonstreeritakse meta kasti loomist suvalise "
2205
+ "hulga saadaolevate valikutüüpidega. Koodinäiteid leiab ka failist <code>demo-"
2206
+ "meta-boxes.php</code>, mis asub kaustas <code>theme-mode</code>, mis "
2207
+ "omakorda asub kaustas <code>assets</code>."
2208
+
2209
+ #: ../includes/ot-functions-docs-page.php:737
2210
+ msgid ""
2211
+ "It's important to note that Meta Boxes do not support WYSIWYG editors at "
2212
+ "this time and if you set one of your options to Textarea it will "
2213
+ "automatically revert to a Textarea Simple until a valid solution is found. "
2214
+ "WordPress released this statement regarding the wp_editor() function:"
2215
+ msgstr ""
2216
+ "Tähtis märkus: meta kastid ei toeta hetkel WYSIWYG redaktoreid. Kui määrata "
2217
+ "mõne valiku tüübiks tekstiala, muudetakse see automaatselt lihtsustatud "
2218
+ "tekstialaks, kuni leitakse töötav lahendus. Wordpress väljastas järgneva "
2219
+ "teadaande wp_editor() funktsiooni kohta:"
2220
+
2221
+ #: ../includes/ot-functions-docs-page.php:739
2222
+ msgid ""
2223
+ "Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
2224
+ "What this means in practical terms, is that you cannot put it in meta-boxes "
2225
+ "that can be dragged and placed elsewhere on the page."
2226
+ msgstr ""
2227
+ "Korra loodud WYSIWYG toimetajat ei saa DOM-is ringi liigutada. Praktikas "
2228
+ "tähendab see, et teda ei saa panna meta-kastidesse, mida on võimalik "
2229
+ "leheküljel ringi liigutada."
2230
+
2231
+ #: ../includes/ot-functions-docs-page.php:741
2232
+ msgid "Create and include your custom meta boxes file."
2233
+ msgstr "Loo ja kaasa oma kohandatud meta kastide fail."
2234
+
2235
+ #: ../includes/ot-functions-docs-page.php:743
2236
+ msgid ""
2237
+ "Create a file and name it anything you want, maybe <code>meta-boxes.php</"
2238
+ "code>."
2239
+ msgstr ""
2240
+ "Loo fail ja anna talle meelepärane nimi, näiteks <code>meta-boxes.php</code>."
2241
+
2242
+ #: ../includes/ot-functions-docs-page.php:744
2243
+ msgid ""
2244
+ "As well, you'll probably want to create a directory named <code>includes</"
2245
+ "code> to put your <code>meta-boxes.php</code> into which will help keep you "
2246
+ "file structure nice and tidy."
2247
+ msgstr ""
2248
+ "Tõenäoliselt soovid luua kausta nimega <code>includes</code>, kuhu panna oma "
2249
+ "<code>meta-boxes.php</code> fail, hoidmaks oma failistruktuuri ilusa ja "
2250
+ "puhtana."
2251
+
2252
+ #: ../includes/ot-functions-docs-page.php:745
2253
+ #: ../includes/ot-functions-docs-page.php:845
2254
+ msgid "Add the following code to your <code>functions.php</code>."
2255
+ msgstr "Lisa järgnev kood oma <code>functions.php</code> faili."
2256
+
2257
+ #: ../includes/ot-functions-docs-page.php:755
2258
+ msgid ""
2259
+ "Add a variation of the following code to your <code>meta-boxes.php</code>. "
2260
+ "You'll obviously need to fill it in with all your custom array values. It's "
2261
+ "important to note here that we use the <code>admin_init</code> filter "
2262
+ "because if you were to call the <code>ot_register_meta_box</code> function "
2263
+ "before OptionTree was loaded the sky would fall on your head."
2264
+ msgstr ""
2265
+ "Lisa variatsioon järgnevast koodist oma <code>meta-boxes.php</code> faili. "
2266
+ "Loomulikult tuleb see täita enda kohandatud massiivi väärtustega. Oluline "
2267
+ "märkus: kasutame <code>admin_init</code> filtrit, sest kui kutsuda "
2268
+ "<code>ot_register_meta_box</code> funktsiooni enne OptionTree laadimist, "
2269
+ "kukuks taevas kaela."
2270
+
2271
+ #: ../includes/ot-functions-docs-page.php:817
2272
+ msgid ""
2273
+ "There are a few simple steps you need to take in order to use OptionTree as "
2274
+ "a theme included module. In the code below I'll show you a basic demo of how "
2275
+ "to include the entire plugin as a module, which will allow you to have the "
2276
+ "most up-to-date version of OptionTree without ever needing to hack the core "
2277
+ "of the plugin. If you would like to see some demo code, there is a directory "
2278
+ "named <code>theme-mode</code> inside the <code>assets</code> directory that "
2279
+ "contains a file named <code>demo-theme-options.php</code> you can reference."
2280
+ msgstr ""
2281
+ "Paari lihtsa sammuga saab Optiontreed kasutada teemasse kaasatud moodulina. "
2282
+ "Allolevas koodis näidatakse lihtsat demonstratsiooni, kuidas kaasata terve "
2283
+ "moodul moodulina. Sellisel moel on sul kõige uuem versioon OptionTreest, "
2284
+ "ilma et peaks mooduli tuuma häkkima. Näidiskoodi leiab failist <code>demo-"
2285
+ "theme-options.php</code>, mis asub kaustas <code>theme-mode</code>, mis "
2286
+ "omakorda asub kaustas <code>assets</code>."
2287
+
2288
+ #: ../includes/ot-functions-docs-page.php:819
2289
+ msgid "Step 1: Include the plugin & turn on theme mode."
2290
+ msgstr "Samm 1: kaasa moodul ja lülita sisse teemarežiim."
2291
+
2292
+ #: ../includes/ot-functions-docs-page.php:821
2293
+ #, php-format
2294
+ msgid "Download the latest version of %s and unarchive the %s directory."
2295
+ msgstr "Lae alla viimane %s versioon ja paki ta lahti %s kausta."
2296
+
2297
+ #: ../includes/ot-functions-docs-page.php:822
2298
+ #, php-format
2299
+ msgid ""
2300
+ "Put the %s directory in the root of your theme. For example, the server path "
2301
+ "would be %s."
2302
+ msgstr "Pane %s kaust oma teema juurkausta. Serveri rada oleks näiteks %s."
2303
+
2304
+ #: ../includes/ot-functions-docs-page.php:823
2305
+ #, php-format
2306
+ msgid "Add the following code to the beginning of your %s."
2307
+ msgstr "Lisa järgnev kood oma %s algusesse."
2308
+
2309
+ #: ../includes/ot-functions-docs-page.php:837
2310
+ #, php-format
2311
+ msgid ""
2312
+ "For a list of all the OptionTree UI display filters refer to the %s file "
2313
+ "found in the %s directory of this plugin. This file is the starting point "
2314
+ "for developing themes with Theme Mode."
2315
+ msgstr ""
2316
+ "Täieliku OptionTree UI kuvamise filtrite nimekirja leiad selle plugina %s "
2317
+ "failist %s kaustast. See fail on teemarežiimis teemade arenduse "
2318
+ "alguspunktiks."
2319
+
2320
+ #: ../includes/ot-functions-docs-page.php:839
2321
+ msgid ""
2322
+ "You now have OptionTree built into your theme and anytime an update is "
2323
+ "available replace the old version with the new one."
2324
+ msgstr ""
2325
+ "Sul on nüüd OptionTree teemasse sisse ehitatud. Iga kord, kui saadaval on "
2326
+ "uus versioon, vaheta oma vana versioon uue vastu välja."
2327
+
2328
+ #: ../includes/ot-functions-docs-page.php:841
2329
+ msgid "Step 2: Create Theme Options without using the UI Builder."
2330
+ msgstr "Samm 2: loo teema valikud ilma UI ehitajata."
2331
+
2332
+ #: ../includes/ot-functions-docs-page.php:843
2333
+ msgid ""
2334
+ "Create a file and name it anything you want, maybe <code>theme-options.php</"
2335
+ "code>, or use the built in file export to create it for you. Remember, you "
2336
+ "should always check the file for errors before including it in your theme."
2337
+ msgstr ""
2338
+ "Loo fail ja anna talle suvaline nimi, näiteks <code>theme-options.php</"
2339
+ "code>, või kasuta selle loomiseks sisse ehitatud faili eksporti. Enne teemas "
2340
+ "kasutamist tuleks failile kindlasti vigade kontroll teha."
2341
+
2342
+ #: ../includes/ot-functions-docs-page.php:844
2343
+ msgid ""
2344
+ "As well, you'll probably want to create a directory named <code>includes</"
2345
+ "code> to put your <code>theme-options.php</code> into which will help keep "
2346
+ "you file structure nice and tidy."
2347
+ msgstr ""
2348
+ "Tõenäoliselt soovid luua ka kausta <code>includes</code>, kuhu oma "
2349
+ "<code>theme-options.php</code> fail panna. See hoiab failistruktuuri ilusa "
2350
+ "ja puhtana."
2351
+
2352
+ #: ../includes/ot-functions-docs-page.php:855
2353
+ msgid ""
2354
+ "Add a variation of the following code to your <code>theme-options.php</"
2355
+ "code>. You'll obviously need to fill it in with all your custom array values "
2356
+ "for contextual help (optional), sections (required), and settings (required)."
2357
+ msgstr ""
2358
+ "Lisa oma <code>theme-options.php</code> faili mingi variatsioon järgnevast "
2359
+ "koodist. Loomulikult tuleb see täita enda massiiviväärtustega "
2360
+ "kontekstipõhise abi ( valikuline ), sektsioonide ( nõutud ) ja sätete "
2361
+ "( nõutud ) jaoks."
2362
+
2363
+ #: ../includes/ot-functions-docs-page.php:858
2364
+ msgid ""
2365
+ "The code below is a boilerplate to get your started. For a full list of the "
2366
+ "available option types click the \"Option Types\" tab above. Also a quick "
2367
+ "note, you don't need to put OptionTree in theme mode to manually create "
2368
+ "options but you will want to hide the docs and settings as each time you "
2369
+ "load the admin area the settings be written over with the code below if "
2370
+ "they've changed in any way. However, this ensures your settings do not get "
2371
+ "tampered with by the end-user."
2372
+ msgstr ""
2373
+ "Allolev kood on stereotüüp, millega saad alustada. Saadaolevate "
2374
+ "valikutüüpide täieliku nimekirja saad ülalolevast \"Valikutüübid\" sakist. "
2375
+ "Kiire vahemärkus: käsitsi valikute loomiseks ei pea OptionTree olema "
2376
+ "teemarežiimis, kuid sel juhul tuleks peita ära dokumentatsioon ja sätted, "
2377
+ "sest iga kord kui haldusliides laaditakse kirjutatakse sätted üle alloleva "
2378
+ "koodiga. Samas see kindlustab, et lõppkasutaja ei saa sätteid näppida."
2379
+
2380
+ #: ../includes/ot-functions-option-types.php:46
2381
+ msgid "Sorry, this function does not exist"
2382
+ msgstr "Kahjuks sellist funktsiooni pole."
2383
+
2384
+ #: ../includes/ot-functions-option-types.php:134
2385
+ msgid "background-repeat"
2386
+ msgstr "background-repeat"
2387
+
2388
+ #: ../includes/ot-functions-option-types.php:152
2389
+ msgid "background-attachment"
2390
+ msgstr "background-attachment"
2391
+
2392
+ #: ../includes/ot-functions-option-types.php:171
2393
+ msgid "background-position"
2394
+ msgstr "background-position"
2395
+
2396
+ #: ../includes/ot-functions-option-types.php:224
2397
+ msgid "background-size"
2398
+ msgstr "background-size"
2399
+
2400
+ #: ../includes/ot-functions-option-types.php:238
2401
+ msgid "background-image"
2402
+ msgstr "background-image"
2403
+
2404
+ #: ../includes/ot-functions-option-types.php:241
2405
+ #: ../includes/ot-functions-option-types.php:3227
2406
+ msgid "Add Media"
2407
+ msgstr "Lisa meediat"
2408
+
2409
+ #: ../includes/ot-functions-option-types.php:316
2410
+ #: ../includes/ot-functions-option-types.php:1094
2411
+ msgid "width"
2412
+ msgstr "width"
2413
+
2414
+ #: ../includes/ot-functions-option-types.php:327
2415
+ #: ../includes/ot-functions-option-types.php:1114
2416
+ #: ../includes/ot-functions-option-types.php:1586
2417
+ #: ../includes/ot-functions-option-types.php:2531
2418
+ msgid "unit"
2419
+ msgstr "ühik"
2420
+
2421
+ #: ../includes/ot-functions-option-types.php:346
2422
+ msgid "style"
2423
+ msgstr "style"
2424
+
2425
+ #: ../includes/ot-functions-option-types.php:439
2426
+ msgid "offset-x"
2427
+ msgstr "offset-x"
2428
+
2429
+ #: ../includes/ot-functions-option-types.php:448
2430
+ msgid "offset-y"
2431
+ msgstr "offset-y"
2432
+
2433
+ #: ../includes/ot-functions-option-types.php:457
2434
+ msgid "blur-radius"
2435
+ msgstr "blur-radius"
2436
+
2437
+ #: ../includes/ot-functions-option-types.php:466
2438
+ msgid "spread-radius"
2439
+ msgstr "spread-radius"
2440
+
2441
+ #: ../includes/ot-functions-option-types.php:538
2442
+ #: ../includes/ot-functions-option-types.php:592
2443
+ msgid "No Categories Found"
2444
+ msgstr "Kategooriaid ei leitud"
2445
+
2446
+ #: ../includes/ot-functions-option-types.php:587
2447
+ #: ../includes/ot-functions-option-types.php:919
2448
+ #: ../includes/ot-functions-option-types.php:1855
2449
+ #: ../includes/ot-functions-option-types.php:1966
2450
+ #: ../includes/ot-functions-option-types.php:2671
2451
+ #: ../includes/ot-functions-option-types.php:2786
2452
+ msgid "Choose One"
2453
+ msgstr "Valik üks"
2454
+
2455
+ #: ../includes/ot-functions-option-types.php:867
2456
+ #: ../includes/ot-functions-option-types.php:925
2457
+ #: ../includes/ot-functions-option-types.php:1917
2458
+ #: ../includes/ot-functions-option-types.php:1972
2459
+ msgid "No Posts Found"
2460
+ msgstr "Postitusi ei leitud"
2461
+
2462
+ #: ../includes/ot-functions-option-types.php:1103
2463
+ msgid "height"
2464
+ msgstr "height"
2465
+
2466
+ #: ../includes/ot-functions-option-types.php:1281
2467
+ #: ../includes/ot-functions-option-types.php:1324
2468
+ msgid "Remove Google Font"
2469
+ msgstr "Eemalda Google Font"
2470
+
2471
+ #: ../includes/ot-functions-option-types.php:1283
2472
+ #: ../includes/ot-functions-option-types.php:1326
2473
+ msgid "-- Choose One --"
2474
+ msgstr "-- Vali üks --"
2475
+
2476
+ #: ../includes/ot-functions-option-types.php:1347
2477
+ msgid "Add Google Font"
2478
+ msgstr "Lisa Google Font"
2479
+
2480
+ #: ../includes/ot-functions-option-types.php:1433
2481
+ msgctxt "color picker"
2482
+ msgid "Standard"
2483
+ msgstr "Standard"
2484
+
2485
+ #: ../includes/ot-functions-option-types.php:1434
2486
+ msgctxt "color picker"
2487
+ msgid "Hover"
2488
+ msgstr "Hõljudes"
2489
+
2490
+ #: ../includes/ot-functions-option-types.php:1435
2491
+ msgctxt "color picker"
2492
+ msgid "Active"
2493
+ msgstr "Aktiivne"
2494
+
2495
+ #: ../includes/ot-functions-option-types.php:1436
2496
+ msgctxt "color picker"
2497
+ msgid "Visited"
2498
+ msgstr "Külastatud"
2499
+
2500
+ #: ../includes/ot-functions-option-types.php:1437
2501
+ msgctxt "color picker"
2502
+ msgid "Focus"
2503
+ msgstr "Fookus"
2504
+
2505
+ #: ../includes/ot-functions-option-types.php:1534
2506
+ #: ../includes/ot-functions-option-types.php:2271
2507
+ #: ../includes/ot-functions-option-types.php:2436
2508
+ msgid "Add New"
2509
+ msgstr "Lisa uus"
2510
+
2511
+ #: ../includes/ot-functions-option-types.php:1537
2512
+ #: ../includes/ot-functions-option-types.php:2274
2513
+ #: ../includes/ot-functions-option-types.php:2439
2514
+ msgid "You can re-order with drag & drop, the order will update after saving."
2515
+ msgstr ""
2516
+ "Lohistades saab elemente ümber paigutada. Järjekord uueneb peale "
2517
+ "salvestamist."
2518
+
2519
+ #: ../includes/ot-functions-option-types.php:1706
2520
+ msgid "On"
2521
+ msgstr "Sees"
2522
+
2523
+ #: ../includes/ot-functions-option-types.php:1728
2524
+ msgid "Off"
2525
+ msgstr "Väljas"
2526
+
2527
+ #: ../includes/ot-functions-option-types.php:1806
2528
+ #: ../includes/ot-functions-option-types.php:1861
2529
+ msgid "No Pages Found"
2530
+ msgstr "Lehekülgi ei leitud"
2531
+
2532
+ #: ../includes/ot-functions-option-types.php:2194
2533
+ msgid "Choose Sidebar"
2534
+ msgstr "Vali küljendusmenüü"
2535
+
2536
+ #: ../includes/ot-functions-option-types.php:2199
2537
+ msgid "No Sidebars"
2538
+ msgstr "Küljendusmenüüd puuduvad"
2539
+
2540
+ #: ../includes/ot-functions-option-types.php:2307
2541
+ msgid "Facebook"
2542
+ msgstr "Facebook"
2543
+
2544
+ #: ../includes/ot-functions-option-types.php:2312
2545
+ msgid "Twitter"
2546
+ msgstr "Twitter"
2547
+
2548
+ #: ../includes/ot-functions-option-types.php:2317
2549
+ msgid "Google+"
2550
+ msgstr "Google+"
2551
+
2552
+ #: ../includes/ot-functions-option-types.php:2322
2553
+ msgid "LinkedIn"
2554
+ msgstr "LinkedIn"
2555
+
2556
+ #: ../includes/ot-functions-option-types.php:2327
2557
+ msgid "Pinterest"
2558
+ msgstr "Pinterest"
2559
+
2560
+ #: ../includes/ot-functions-option-types.php:2332
2561
+ msgid "Youtube"
2562
+ msgstr "Youtube"
2563
+
2564
+ #: ../includes/ot-functions-option-types.php:2337
2565
+ msgid "Dribbble"
2566
+ msgstr "Dribbble"
2567
+
2568
+ #: ../includes/ot-functions-option-types.php:2342
2569
+ msgid "Github"
2570
+ msgstr "Github"
2571
+
2572
+ #: ../includes/ot-functions-option-types.php:2347
2573
+ msgid "Forrst"
2574
+ msgstr "Forrst"
2575
+
2576
+ #: ../includes/ot-functions-option-types.php:2352
2577
+ msgid "Digg"
2578
+ msgstr "Digg"
2579
+
2580
+ #: ../includes/ot-functions-option-types.php:2357
2581
+ msgid "Delicious"
2582
+ msgstr "Delicious"
2583
+
2584
+ #: ../includes/ot-functions-option-types.php:2362
2585
+ msgid "Tumblr"
2586
+ msgstr "Tumblr"
2587
+
2588
+ #: ../includes/ot-functions-option-types.php:2367
2589
+ msgid "Skype"
2590
+ msgstr "Skype"
2591
+
2592
+ #: ../includes/ot-functions-option-types.php:2372
2593
+ msgid "SoundCloud"
2594
+ msgstr "SoundCloud"
2595
+
2596
+ #: ../includes/ot-functions-option-types.php:2377
2597
+ msgid "Vimeo"
2598
+ msgstr "Vimeo"
2599
+
2600
+ #: ../includes/ot-functions-option-types.php:2382
2601
+ msgid "Flickr"
2602
+ msgstr "Flickr"
2603
+
2604
+ #: ../includes/ot-functions-option-types.php:2387
2605
+ msgid "VK.com"
2606
+ msgstr "VK.com"
2607
+
2608
+ #: ../includes/ot-functions-option-types.php:2493
2609
+ msgid "top"
2610
+ msgstr "top"
2611
+
2612
+ #: ../includes/ot-functions-option-types.php:2502
2613
+ msgid "right"
2614
+ msgstr "right"
2615
+
2616
+ #: ../includes/ot-functions-option-types.php:2511
2617
+ msgid "bottom"
2618
+ msgstr "bottom"
2619
+
2620
+ #: ../includes/ot-functions-option-types.php:2520
2621
+ msgid "left"
2622
+ msgstr "left"
2623
+
2624
+ #: ../includes/ot-functions-option-types.php:2622
2625
+ #: ../includes/ot-functions-option-types.php:2676
2626
+ msgid "No Tags Found"
2627
+ msgstr "Märksõnu ei leitud"
2628
+
2629
+ #: ../includes/ot-functions-option-types.php:2734
2630
+ #: ../includes/ot-functions-option-types.php:2791
2631
+ msgid "No Taxonomies Found"
2632
+ msgstr "Taksonoomiaid ei leitud"
2633
+
2634
+ #: ../includes/ot-functions-settings-page.php:35
2635
+ msgid "Warning!"
2636
+ msgstr "Hoiatus!"
2637
+
2638
+ #: ../includes/ot-functions-settings-page.php:36
2639
+ #, php-format
2640
+ msgid ""
2641
+ "Go to the %s page if you want to save data, this page is for adding settings."
2642
+ msgstr "Info salvestamiseks on %s leht, see leht siin on sätete lisamiseks."
2643
+
2644
+ #: ../includes/ot-functions-settings-page.php:37
2645
+ #, php-format
2646
+ msgid ""
2647
+ "If you're unsure or not completely positive that you should be editing these "
2648
+ "settings, you should read the %s first."
2649
+ msgstr "Kui kahtled, kas peaksid neid sätteid muutma, loe kõigepealt %s."
2650
+
2651
+ #: ../includes/ot-functions-settings-page.php:38
2652
+ msgid ""
2653
+ "Things could break or be improperly displayed to the end-user if you do one "
2654
+ "of the following:"
2655
+ msgstr ""
2656
+ "Kui teed ühte järgnevatest, võivad asjad katki minna või olla lõpp-"
2657
+ "kasutajale valesti kuvatud:"
2658
+
2659
+ #: ../includes/ot-functions-settings-page.php:39
2660
+ msgid ""
2661
+ "Give two sections the same ID, give two settings the same ID, give two "
2662
+ "contextual help content areas the same ID, don't create any settings, or "
2663
+ "have a section at the end of the settings list."
2664
+ msgstr ""
2665
+ "annad kahele sektsioonile sama ID, annad kahele sättele sama ID, annad "
2666
+ "kahele kontekstipõhise abi alale sama ID, ei loo ühtegi sätet või jätad "
2667
+ "sektsiooni sätete nimekirja lõppu."
2668
+
2669
+ #: ../includes/ot-functions-settings-page.php:40
2670
+ msgid ""
2671
+ "You can create as many settings as your project requires and use them how "
2672
+ "you see fit. When you add a setting here, it will be available on the Theme "
2673
+ "Options page for use in your theme. To separate your settings into sections, "
2674
+ "click the \"Add Section\" button, fill in the input fields, and a new "
2675
+ "navigation menu item will be created."
2676
+ msgstr ""
2677
+ "Sätteid saab luua nii palju kui vaja ning kasutada oma parema äranägemise "
2678
+ "järgi. Siia sätte lisamisel tekib see teema valikute lehele oma teemas "
2679
+ "kasutamiseks. Sätete sektsioonidesse eraldamiseks vajuta \"Lisa sektsioon\" "
2680
+ "nupule, täida sisendväljad ning uus navigatsioonimenüü element on loodud."
2681
+
2682
+ #: ../includes/ot-functions-settings-page.php:41
2683
+ msgid ""
2684
+ "All of the settings can be sorted and rearranged to your liking with Drag & "
2685
+ "Drop. Don't worry about the order in which you create your settings, you can "
2686
+ "always reorder them."
2687
+ msgstr ""
2688
+ "Kõiki sätteid saab sorteerida ja ümber paigutada lohistamise abil. Sätete "
2689
+ "loomise järjekorra üle ei pea muretsema, sest neid saab alati ümber "
2690
+ "järjestada."
2691
+
2692
+ #: ../includes/ot-functions-settings-page.php:92
2693
+ msgid "Add Section"
2694
+ msgstr "Lisa sektsioon"
2695
+
2696
+ #: ../includes/ot-functions-settings-page.php:99
2697
+ msgid "Contextual Help"
2698
+ msgstr "Konteksti põhine abi"
2699
+
2700
+ #: ../includes/ot-functions-settings-page.php:103
2701
+ msgid "Contextual Help Sidebar"
2702
+ msgstr "Konteksti põhise abi küljeriba"
2703
+
2704
+ #: ../includes/ot-functions-settings-page.php:103
2705
+ msgid ""
2706
+ "If you decide to add contextual help to the Theme Option page, enter the "
2707
+ "optional \"Sidebar\" HTML here. This would be an extremely useful place to "
2708
+ "add links to your themes documentation or support forum. Only after you've "
2709
+ "added some content below will this display to the user."
2710
+ msgstr ""
2711
+ "Kui soovida lisada kontekstipõhist abiteksti, sisesta \"Küljeriba\" HTML "
2712
+ "siia. See oleks väga hea koht, kuhu lisada linke oma teema "
2713
+ "dokumentatsioonile või kasutajatoe foorumile. Seda näidatakse kasutajale "
2714
+ "vaid juhul, kui allpool on mingi sisu lisatud."
2715
+
2716
+ #: ../includes/ot-functions-settings-page.php:132
2717
+ msgid "Add Contextual Help Content"
2718
+ msgstr "Lisa konteksti põhine abitekst"
2719
+
2720
+ #: ../includes/ot-functions-settings-page.php:168
2721
+ msgid ""
2722
+ "This import method has been deprecated. That means it has been replaced by a "
2723
+ "new method and is no longer supported, and may be removed from future "
2724
+ "versions. All themes that use this import method should be converted to use "
2725
+ "its replacement below."
2726
+ msgstr ""
2727
+ "Impordi meetodit taunitakse. See tähendab, et teda asendab uuem meetod ja "
2728
+ "enam teda ei toetata. Ta võidakse tulevastes versioonides eemaldada. Kõik "
2729
+ "teemad, mis seda impordi meetodit kasutavad, tuleks ümber muuta allolevat "
2730
+ "asendust kasutama."
2731
+
2732
+ #: ../includes/ot-functions-settings-page.php:170
2733
+ #, php-format
2734
+ msgid ""
2735
+ "If you were given a Theme Options XML file with a premium or free theme, "
2736
+ "locate it on your hard drive and upload that file by clicking the upload "
2737
+ "button. A popup window will appear, upload the XML file and click \"%s\". "
2738
+ "The file URL should be in the upload input, if it is click \"Import XML\"."
2739
+ msgstr ""
2740
+ "Kui sulle anti teemaga kaasa valikute XML fail, leia see oma kõvakettalt "
2741
+ "ning vajuta üleslaadimise nuppu. Avanevas aknas lae üles XML fail ja vajuta "
2742
+ "\"%s\". Faili URL peaks olema üleslaadimise sisendis. Kui see seal on, "
2743
+ "vajuta nuppu \"Impordi XML\"."
2744
+
2745
+ #: ../includes/ot-functions-settings-page.php:173
2746
+ msgid "Import XML"
2747
+ msgstr "Impordi XML"
2748
+
2749
+ #: ../includes/ot-functions-settings-page.php:189
2750
+ msgid "Add XML"
2751
+ msgstr "Lisa XML"
2752
+
2753
+ #: ../includes/ot-functions-settings-page.php:226
2754
+ msgid ""
2755
+ "To import your Settings copy and paste what appears to be a random string of "
2756
+ "alpha numeric characters into this textarea and press the \"Import Settings"
2757
+ "\" button."
2758
+ msgstr ""
2759
+ "Sätete importimiseks kopeeri ja kleebi näiliselt juhuslik string tähtedest "
2760
+ "ja numbritest siia tekstialasse ning vajuta \"Impordi sätted\" nuppu."
2761
+
2762
+ #: ../includes/ot-functions-settings-page.php:229
2763
+ msgid "Import Settings"
2764
+ msgstr "Impordi seaded"
2765
+
2766
+ #: ../includes/ot-functions-settings-page.php:271
2767
+ msgid ""
2768
+ "Only after you've imported the Settings should you try and update your Theme "
2769
+ "Options."
2770
+ msgstr "Enne teema valikute uuendamist impordi sätted."
2771
+
2772
+ #: ../includes/ot-functions-settings-page.php:273
2773
+ msgid ""
2774
+ "To import your Theme Options copy and paste what appears to be a random "
2775
+ "string of alpha numeric characters into this textarea and press the \"Import "
2776
+ "Theme Options\" button."
2777
+ msgstr ""
2778
+ "Teema valikute importimiseks kopeeri ja kleebi näiliselt juhuslik string "
2779
+ "tähtedest ja numbritest siia tekstialasse ning vajuta \"Impordi teema valikud"
2780
+ "\" nuppu."
2781
+
2782
+ #: ../includes/ot-functions-settings-page.php:276
2783
+ msgid "Import Theme Options"
2784
+ msgstr "Impordi teema valikud"
2785
+
2786
+ #: ../includes/ot-functions-settings-page.php:318
2787
+ msgid ""
2788
+ "Only after you've imported the Settings should you try and update your "
2789
+ "Layouts."
2790
+ msgstr "Enne paigutuste uuendamist impordi sätted."
2791
+
2792
+ #: ../includes/ot-functions-settings-page.php:320
2793
+ msgid ""
2794
+ "To import your Layouts copy and paste what appears to be a random string of "
2795
+ "alpha numeric characters into this textarea and press the \"Import Layouts\" "
2796
+ "button. Keep in mind that when you import your layouts, the active layout's "
2797
+ "saved data will write over the current data set for your Theme Options."
2798
+ msgstr ""
2799
+ "Paigutuste importimiseks kopeeri ja kleebi näiliselt juhuslik string "
2800
+ "tähtedest ja numbritest siia tekstialasse ning vajuta \"Impordi paigutus\" "
2801
+ "nuppu. Arvesta, et aktiivse paigutuse salvestatud andmed kirjutavad "
2802
+ "hetkeandmed üle."
2803
+
2804
+ #: ../includes/ot-functions-settings-page.php:323
2805
+ msgid "Import Layouts"
2806
+ msgstr "Impordi paigutused"
2807
+
2808
+ #: ../includes/ot-functions-settings-page.php:366
2809
+ #, php-format
2810
+ msgid ""
2811
+ "Export your Settings into a fully functional %s file. If you want to add "
2812
+ "your own custom %s text domain to the file, enter it into the text field "
2813
+ "before exporting. For more information on how to use this file read the "
2814
+ "documentation on %s. Remember, you should always check the file for errors "
2815
+ "before including it in your theme."
2816
+ msgstr ""
2817
+ "Ekspordi oma sätted täisfunktsionaalsesse %s faili. Kui soovid failile "
2818
+ "lisada enda kohandatud %s tekstidomeeni, sisesta see tekstivälja enne "
2819
+ "eksportimist. Lisainformatsiooni selle faili kasutamise kohta leiad "
2820
+ "dokumentatsioonis %s. Pea meeles, et failile tuleks teha vigade kontroll "
2821
+ "enne teemasse kaasamist."
2822
+
2823
+ #: ../includes/ot-functions-settings-page.php:375
2824
+ msgid "Export Settings File"
2825
+ msgstr "Ekspordi seadete fail"
2826
+
2827
+ #: ../includes/ot-functions-settings-page.php:405
2828
+ msgid ""
2829
+ "Export your Settings by highlighting this text and doing a copy/paste into a "
2830
+ "blank .txt file. Then save the file for importing into another install of "
2831
+ "WordPress later. Alternatively, you could just paste it into the "
2832
+ "<code>OptionTree->Settings->Import</code> <strong>Settings</strong> textarea "
2833
+ "on another web site."
2834
+ msgstr ""
2835
+ "Ekspordi oma sätted, markeerides see tekst ja kopeerides ta tühja .txt "
2836
+ "faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
2837
+ "installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
2838
+ "<code>OptionTree->Sätted->Import</code> <strong>Sätted</strong> tekstialasse."
2839
+
2840
+ #: ../includes/ot-functions-settings-page.php:441
2841
+ msgid ""
2842
+ "Export your Theme Options data by highlighting this text and doing a copy/"
2843
+ "paste into a blank .txt file. Then save the file for importing into another "
2844
+ "install of WordPress later. Alternatively, you could just paste it into the "
2845
+ "<code>OptionTree->Settings->Import</code> <strong>Theme Options</strong> "
2846
+ "textarea on another web site."
2847
+ msgstr ""
2848
+ "Ekspordi oma teema valikud, markeerides see tekst ja kopeerides ta tühja ."
2849
+ "txt faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
2850
+ "installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
2851
+ "<code>OptionTree->Sätted->Import</code> <strong>Teema valikud</strong> "
2852
+ "tekstialasse."
2853
+
2854
+ #: ../includes/ot-functions-settings-page.php:477
2855
+ msgid ""
2856
+ "Export your Layouts by highlighting this text and doing a copy/paste into a "
2857
+ "blank .txt file. Then save the file for importing into another install of "
2858
+ "WordPress later. Alternatively, you could just paste it into the "
2859
+ "<code>OptionTree->Settings->Import</code> <strong>Layouts</strong> textarea "
2860
+ "on another web site."
2861
+ msgstr ""
2862
+ "Ekspordi oma paigutused, markeerides see tekst ja kopeerides ta tühja .txt "
2863
+ "faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
2864
+ "installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
2865
+ "<code>OptionTree->Sätted->Import</code> <strong>Paigutused</strong> "
2866
+ "tekstialasse."
2867
+
2868
+ #: ../includes/ot-functions-settings-page.php:519
2869
+ msgid ""
2870
+ "To add a new layout enter a unique lower case alphanumeric string (dashes "
2871
+ "allowed) in the text field and click \"Save Layouts\"."
2872
+ msgstr ""
2873
+ "Uue paigutuse lisamiseks sisestage tekstivälja unikaalne väiketähtedega "
2874
+ "alfanumbriline string ( sidekriipsud lubatud ) ning vajutage \"Salvesta "
2875
+ "paigutused\" nupul."
2876
+
2877
+ #: ../includes/ot-functions-settings-page.php:520
2878
+ msgid ""
2879
+ "As well, you can activate, remove, and drag & drop the order; all situations "
2880
+ "require you to click \"Save Layouts\" for the changes to be applied."
2881
+ msgstr ""
2882
+ "Saate ka aktiveerida, eemaldada ning lohistades järjekorda muuta. Muudatused "
2883
+ "ei mõju enne, kui vajutate \"Salvesta paigutused\" nuppu."
2884
+
2885
+ #: ../includes/ot-functions-settings-page.php:521
2886
+ msgid ""
2887
+ "When you create a new layout it will become active and any changes made to "
2888
+ "the Theme Options will be applied to it. If you switch back to a different "
2889
+ "layout immediately after creating a new layout that new layout will have a "
2890
+ "snapshot of the current Theme Options data attached to it."
2891
+ msgstr ""
2892
+ "Uue paigutuse loomisel muudetakse see aktiivseks ning edasised muudatused "
2893
+ "teema valikutes mõjuvad talle. Kui peale uue paigutuse loomist kohe mõne muu "
2894
+ "paigutuse peale vahetada, siis uue paigutuse külge jääb teema valikute "
2895
+ "andmete hetkeseis paigutuse loomisel."
2896
+
2897
+ #: ../includes/ot-functions-settings-page.php:522
2898
+ msgid ""
2899
+ "Visit <code>OptionTree->Documentation->Layouts Overview</code> to see a more "
2900
+ "in-depth description of what layouts are and how to use them."
2901
+ msgstr ""
2902
+ "Lehel <code>OptionTree->Dokumentatsioon->Paigutuste ülevaade</code> leiad "
2903
+ "põhjalikuma paigutuste kirjelduse ja kasutusjuhendi."
2904
+
2905
+ #: ../includes/ot-functions-settings-page.php:559
2906
+ msgid "Save Layouts"
2907
+ msgstr "Salvesta paigutused"
2908
+
2909
+ #: ../includes/ot-settings-api.php:364
2910
+ msgid "Reset Options"
2911
+ msgstr "Algseadista seaded"
2912
+
2913
+ #: ../ot-loader.php:21
2914
+ msgid ""
2915
+ "OptionTree is installed as a plugin and also embedded in your current theme. "
2916
+ "Please deactivate the plugin to load the theme dependent version of "
2917
+ "OptionTree, and remove this warning."
2918
+ msgstr ""
2919
+ "OptionTree on paigaldatud nii moodulina kui ka kaasatud aktiivses teemas. "
2920
+ "Palun lülita moodul välja, et laetaks teemast sõltuv versioon OptionTreest "
2921
+ "ja see hoiatus kaoks."
2922
+
2923
+ #~ msgid "Congratulations! You have a clean install."
2924
+ #~ msgstr "Õnnitlused! Sul on puhas paigaldus."
2925
+
2926
+ #~ msgid ""
2927
+ #~ "Your version of OptionTree does not have any outdated data. If there was "
2928
+ #~ "outdated data, you would be presented with options to clean it up."
2929
+ #~ msgstr ""
2930
+ #~ "Sinu OptionTree versioonis ei ole aegunud andmeid. Kui neid oleks, siis "
2931
+ #~ "pakutaks võimalust puhastamiseks."
2932
+
2933
+ #~ msgid "Hide This Page"
2934
+ #~ msgstr "Peida lehekülg"
2935
+
2936
+ #~ msgid "Demo Meta Box"
2937
+ #~ msgstr "Näidis meta kast"
2938
+
2939
+ #~ msgid "Conditions"
2940
+ #~ msgstr "Tingimused"
2941
+
2942
+ #~ msgid "Show Gallery"
2943
+ #~ msgstr "Näita galeriid"
2944
+
2945
+ #~ msgid "Shows the Gallery when set to %s."
2946
+ #~ msgstr "Näitab galeriid, kui on määratud asendisse %s"
2947
+
2948
+ #~ msgid "Congratulations, you created a gallery!"
2949
+ #~ msgstr "Õnnitlused, lõite just galerii!"
2950
+
2951
+ #~ msgid "This is a Gallery option type. It displays when %s."
2952
+ #~ msgstr "See on galerii valikutüüp. Nähtaval, kui ta on %s"
2953
+
2954
+ #~ msgid "More Options"
2955
+ #~ msgstr "Rohkem seadeid"
2956
+
2957
+ #~ msgid "This is a demo Text field."
2958
+ #~ msgstr "See on näidis tekstisisend."
2959
+
2960
+ #~ msgid "This is a demo Textarea field."
2961
+ #~ msgstr "See on näidis tekstiväli."
2962
+
2963
+ #~ msgid "Help content goes here!"
2964
+ #~ msgstr "Siia lähevad abitekstid!"
2965
+
2966
+ #~ msgid "Sidebar content goes here!"
2967
+ #~ msgstr "Siia läheb küljeriba sisu!"
2968
+
2969
+ #~ msgid "No"
2970
+ #~ msgstr "Ei"
2971
+
2972
+ #~ msgid "Yes"
2973
+ #~ msgstr "Jah"
2974
+
2975
+ #~ msgid "Gallery Shortcode"
2976
+ #~ msgstr "Galerii lühikood"
2977
+
2978
+ #~ msgid ""
2979
+ #~ "The Gallery option type can also be saved as a shortcode by adding %s to "
2980
+ #~ "the class attribute. Using the Gallery option type in this manner will "
2981
+ #~ "result in a better user experience as you're able to save the link, "
2982
+ #~ "column, and order settings."
2983
+ #~ msgstr ""
2984
+ #~ "Lisades %s klassiatribuudiks saab galerii valikutüübi salvestada ka "
2985
+ #~ "lühikoodina. Sellisel moel galerii valikutüüpi kasutades on tulemuseks "
2986
+ #~ "parem kasutajakogemus, kuna saad salvestada lingi, tulba ja järjekorra "
2987
+ #~ "sätteid."
2988
+
2989
+ #~ msgid ""
2990
+ #~ "The List Item option type allows for a great deal of customization. You "
2991
+ #~ "can add settings to the List Item and those settings will be displayed to "
2992
+ #~ "the user when they add a new List Item. Typical use is for creating "
2993
+ #~ "sliding content or blocks of code for custom layouts."
2994
+ #~ msgstr ""
2995
+ #~ "Nimekirja elemendi valikutüüpi on väga hästi kohandatav. Nimekirja "
2996
+ #~ "elementidele saab lisada sätteid ning neid näidatakse kasutajale uue "
2997
+ #~ "elemendi lisamisel. Tüüpiline kasutus on liugleva sisu jaoks või "
2998
+ #~ "kohandatud paigutuse koodiblokkide tarvis."
2999
+
3000
+ #~ msgid "Content"
3001
+ #~ msgstr "Sisu"
3002
+
3003
+ #~ msgid "Maybe"
3004
+ #~ msgstr "Võib-olla"
3005
+
3006
+ #~ msgid "Upload Attachment ID"
3007
+ #~ msgstr "Üles laetud manuse ID"
3008
+
3009
+ #~ msgid ""
3010
+ #~ "The Upload option type can also be saved as an attachment ID by adding %s "
3011
+ #~ "to the class attribute."
3012
+ #~ msgstr ""
3013
+ #~ "Üleslaadimise valikutüüpi saab salvestada ka manuse ID-na, lisades %s "
3014
+ #~ "klassi atribuudile."
3015
+
3016
+ #~ msgid "Color Picker"
3017
+ #~ msgstr "Värvi valija"
languages/option-tree.po CHANGED
@@ -1,701 +1,42 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: OptionTree\n"
4
- "POT-Creation-Date: 2014-11-20 23:06-0800\n"
5
- "PO-Revision-Date: 2014-11-20 23:06-0800\n"
6
  "Last-Translator: Derek Herman <derek@valendesigns.com>\n"
7
  "Language-Team: Valen Designs\n"
8
- "Language: English\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.5.7\n"
13
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
14
  "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
15
  "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
16
  "X-Poedit-Basepath: .\n"
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
  "X-Poedit-SearchPath-0: ..\n"
 
 
 
19
 
20
- #: ../ot-loader.php:21
21
- msgid ""
22
- "OptionTree is installed as a plugin and also embedded in your current theme. "
23
- "Please deactivate the plugin to load the theme dependent version of "
24
- "OptionTree, and remove this warning."
25
- msgstr ""
26
-
27
- #: ../ot-loader.php:752 ../assets/theme-mode/demo-theme-options.php:639
28
- #: ../includes/ot-functions-admin.php:657
29
- #: ../includes/ot-functions-docs-page.php:374
30
- #: ../includes/ot-functions-settings-page.php:170
31
- msgid "Send to OptionTree"
32
- msgstr ""
33
-
34
- #: ../assets/theme-mode/demo-meta-boxes.php:23
35
- msgid "Demo Meta Box"
36
- msgstr ""
37
-
38
- #: ../assets/theme-mode/demo-meta-boxes.php:30
39
- msgid "Conditions"
40
- msgstr ""
41
-
42
- #: ../assets/theme-mode/demo-meta-boxes.php:35
43
- msgid "Show Gallery"
44
- msgstr ""
45
-
46
- #: ../assets/theme-mode/demo-meta-boxes.php:38
47
- #, php-format
48
- msgid "Shows the Gallery when set to %s."
49
- msgstr ""
50
-
51
- #: ../assets/theme-mode/demo-meta-boxes.php:45
52
- msgid "Congratulations, you created a gallery!"
53
- msgstr ""
54
-
55
- #: ../assets/theme-mode/demo-meta-boxes.php:50
56
- #: ../assets/theme-mode/demo-theme-options.php:208
57
- #: ../includes/ot-functions-admin.php:2235
58
- #: ../includes/ot-functions-admin.php:4712
59
- #: ../includes/ot-functions-docs-page.php:156
60
- msgid "Gallery"
61
- msgstr ""
62
-
63
- #: ../assets/theme-mode/demo-meta-boxes.php:53
64
- #, php-format
65
- msgid "This is a Gallery option type. It displays when %s."
66
- msgstr ""
67
-
68
- #: ../assets/theme-mode/demo-meta-boxes.php:57
69
- msgid "More Options"
70
- msgstr ""
71
-
72
- #: ../assets/theme-mode/demo-meta-boxes.php:62
73
- #: ../assets/theme-mode/demo-theme-options.php:548
74
- #: ../includes/ot-functions-admin.php:2255
75
- #: ../includes/ot-functions-docs-page.php:269
76
- msgid "Text"
77
- msgstr ""
78
-
79
- #: ../assets/theme-mode/demo-meta-boxes.php:65
80
- msgid "This is a demo Text field."
81
- msgstr ""
82
-
83
- #: ../assets/theme-mode/demo-meta-boxes.php:68
84
- #: ../assets/theme-mode/demo-theme-options.php:563
85
- #: ../includes/ot-functions-admin.php:2256
86
- #: ../includes/ot-functions-docs-page.php:272
87
- msgid "Textarea"
88
- msgstr ""
89
-
90
- #: ../assets/theme-mode/demo-meta-boxes.php:71
91
- msgid "This is a demo Textarea field."
92
- msgstr ""
93
-
94
- #: ../assets/theme-mode/demo-theme-options.php:29
95
- #: ../assets/theme-mode/demo-theme-options.php:38
96
- #: ../includes/ot-functions-admin.php:231
97
- msgid "Option Types"
98
- msgstr ""
99
-
100
- #: ../assets/theme-mode/demo-theme-options.php:30
101
- msgid "Help content goes here!"
102
- msgstr ""
103
-
104
- #: ../assets/theme-mode/demo-theme-options.php:33
105
- msgid "Sidebar content goes here!"
106
- msgstr ""
107
-
108
- #: ../assets/theme-mode/demo-theme-options.php:44
109
- #: ../includes/ot-functions-admin.php:2225
110
- #: ../includes/ot-functions-docs-page.php:110
111
- msgid "Background"
112
- msgstr ""
113
-
114
- #: ../assets/theme-mode/demo-theme-options.php:45
115
- #: ../includes/ot-functions-docs-page.php:111
116
- #, php-format
117
- msgid ""
118
- "The Background option type is for adding background styles to your theme "
119
- "either dynamically via the CSS option type below or manually with %s. The "
120
- "Background option type has filters that allow you to remove fields or change "
121
- "the defaults. For example, you can filter %s to remove unwanted fields from "
122
- "all Background options or an individual one. You can also filter %s. These "
123
- "filters allow you to fine tune the select lists for your specific needs."
124
- msgstr ""
125
-
126
- #: ../assets/theme-mode/demo-theme-options.php:45
127
- #: ../assets/theme-mode/demo-theme-options.php:624
128
- #: ../includes/ot-functions-admin.php:3639
129
- #: ../includes/ot-functions-docs-page.php:111
130
- #: ../includes/ot-functions-docs-page.php:354
131
- msgid "and"
132
- msgstr ""
133
-
134
- #: ../assets/theme-mode/demo-theme-options.php:59
135
- #: ../includes/ot-functions-admin.php:2226
136
- #: ../includes/ot-functions-docs-page.php:113
137
- msgid "Category Checkbox"
138
- msgstr ""
139
-
140
- #: ../assets/theme-mode/demo-theme-options.php:60
141
- #: ../includes/ot-functions-docs-page.php:114
142
- msgid ""
143
- "The Category Checkbox option type displays a list of category IDs. It allows "
144
- "the user to check multiple category IDs and will return that value as an "
145
- "array for use in a custom function or loop."
146
- msgstr ""
147
-
148
- #: ../assets/theme-mode/demo-theme-options.php:74
149
- #: ../includes/ot-functions-admin.php:2227
150
- #: ../includes/ot-functions-docs-page.php:116
151
- msgid "Category Select"
152
- msgstr ""
153
-
154
- #: ../assets/theme-mode/demo-theme-options.php:75
155
- #: ../includes/ot-functions-docs-page.php:117
156
- msgid ""
157
- "The Category Select option type displays a list of category IDs. It allows "
158
- "the user to select only one category ID and will return that value for use "
159
- "in a custom function or loop."
160
- msgstr ""
161
-
162
- #: ../assets/theme-mode/demo-theme-options.php:89
163
- #: ../includes/ot-functions-admin.php:2228
164
- #: ../includes/ot-functions-docs-page.php:119
165
- msgid "Checkbox"
166
- msgstr ""
167
-
168
- #: ../assets/theme-mode/demo-theme-options.php:90
169
- #: ../includes/ot-functions-docs-page.php:120
170
- msgid ""
171
- "The Checkbox option type displays a group of choices. It allows the user to "
172
- "check multiple choices and will return that value as an array for use in a "
173
- "custom function or loop."
174
- msgstr ""
175
-
176
- #: ../assets/theme-mode/demo-theme-options.php:104
177
- #: ../assets/theme-mode/demo-theme-options.php:394
178
- #: ../assets/theme-mode/demo-theme-options.php:446
179
- msgid "No"
180
- msgstr ""
181
-
182
- #: ../assets/theme-mode/demo-theme-options.php:109
183
- #: ../assets/theme-mode/demo-theme-options.php:389
184
- #: ../assets/theme-mode/demo-theme-options.php:441
185
- msgid "Yes"
186
- msgstr ""
187
-
188
- #: ../assets/theme-mode/demo-theme-options.php:116
189
- #: ../includes/ot-functions-docs-page.php:122
190
- msgid "Colorpicker"
191
- msgstr ""
192
-
193
- #: ../assets/theme-mode/demo-theme-options.php:117
194
- #: ../includes/ot-functions-docs-page.php:123
195
- msgid ""
196
- "The Colorpicker option type saves a hexadecimal color code for use in CSS. "
197
- "Use it to modify the color of something in your theme."
198
- msgstr ""
199
-
200
- #: ../assets/theme-mode/demo-theme-options.php:131
201
- #: ../includes/ot-functions-admin.php:2230
202
- #: ../includes/ot-functions-docs-page.php:125
203
- msgid "CSS"
204
- msgstr ""
205
-
206
- #: ../assets/theme-mode/demo-theme-options.php:132
207
- #: ../includes/ot-functions-docs-page.php:126
208
- #, php-format
209
- msgid ""
210
- "The CSS option type is a textarea that when used properly can add dynamic "
211
- "CSS to your theme from within OptionTree. Unfortunately, due server "
212
- "limitations you will need to create a file named %s at the root level of "
213
- "your theme and change permissions using %s so the server can write to the "
214
- "file. I have had the most success setting this single file to %s but feel "
215
- "free to play around with permissions until everything is working. A good "
216
- "starting point is %s. When the server can save to the file, CSS will "
217
- "automatically be updated when you save your Theme Options."
218
- msgstr ""
219
-
220
- #: ../assets/theme-mode/demo-theme-options.php:132
221
- #: ../includes/ot-functions-docs-page.php:128
222
- #, php-format
223
- msgid ""
224
- "This example assumes you have an option with the ID of %1$s. Which means "
225
- "this option will automatically insert the value of %1$s into the %2$s when "
226
- "the Theme Options are saved."
227
- msgstr ""
228
-
229
- #: ../assets/theme-mode/demo-theme-options.php:148
230
- #: ../includes/ot-functions-admin.php:2231
231
- #: ../includes/ot-functions-docs-page.php:144
232
- msgid "Custom Post Type Checkbox"
233
- msgstr ""
234
-
235
- #: ../assets/theme-mode/demo-theme-options.php:149
236
- #: ../includes/ot-functions-docs-page.php:145
237
- #, php-format
238
- msgid ""
239
- "The Custom Post Type Select option type displays a list of IDs from any "
240
- "available WordPress post type or custom post type. It allows the user to "
241
- "check multiple post IDs for use in a custom function or loop. Requires at "
242
- "least one valid %1$s in the %1$s field."
243
- msgstr ""
244
-
245
- #: ../assets/theme-mode/demo-theme-options.php:163
246
- #: ../includes/ot-functions-admin.php:2232
247
- #: ../includes/ot-functions-docs-page.php:147
248
- msgid "Custom Post Type Select"
249
- msgstr ""
250
-
251
- #: ../assets/theme-mode/demo-theme-options.php:164
252
- #: ../includes/ot-functions-docs-page.php:148
253
- #, php-format
254
- msgid ""
255
- "The Custom Post Type Select option type displays a list of IDs from any "
256
- "available WordPress post type or custom post type. It will return a single "
257
- "post ID for use in a custom function or loop. Requires at least one valid "
258
- "%1$s in the %1$s field."
259
- msgstr ""
260
-
261
- #: ../assets/theme-mode/demo-theme-options.php:178
262
- #: ../includes/ot-functions-admin.php:2233
263
- #: ../includes/ot-functions-docs-page.php:150
264
- msgid "Date Picker"
265
- msgstr ""
266
-
267
- #: ../assets/theme-mode/demo-theme-options.php:179
268
- #: ../includes/ot-functions-docs-page.php:151
269
- msgid ""
270
- "The Date Picker option type is tied to a standard form input field which "
271
- "displays a calendar pop-up that allow the user to pick any date when focus "
272
- "is given to the input field. The returned value is a date formatted string."
273
- msgstr ""
274
-
275
- #: ../assets/theme-mode/demo-theme-options.php:193
276
- #: ../includes/ot-functions-admin.php:2234
277
- #: ../includes/ot-functions-docs-page.php:153
278
- msgid "Date Time Picker"
279
- msgstr ""
280
-
281
- #: ../assets/theme-mode/demo-theme-options.php:194
282
- #: ../includes/ot-functions-docs-page.php:154
283
- msgid ""
284
- "The Date Time Picker option type is tied to a standard form input field "
285
- "which displays a calendar pop-up that allow the user to pick any date and "
286
- "time when focus is given to the input field. The returned value is a date "
287
- "and time formatted string."
288
- msgstr ""
289
-
290
- #: ../assets/theme-mode/demo-theme-options.php:209
291
- #: ../includes/ot-functions-docs-page.php:157
292
- msgid ""
293
- "The Gallery option type saves a comma separated list of image attachment "
294
- "IDs. You will need to create a front-end function to display the images in "
295
- "your theme."
296
- msgstr ""
297
-
298
- #: ../assets/theme-mode/demo-theme-options.php:223
299
- msgid "Gallery Shortcode"
300
- msgstr ""
301
-
302
- #: ../assets/theme-mode/demo-theme-options.php:224
303
- #, php-format
304
- msgid ""
305
- "The Gallery option type can also be saved as a shortcode by adding %s to the "
306
- "class attribute. Using the Gallery option type in this manner will result in "
307
- "a better user experience as you're able to save the link, column, and order "
308
- "settings."
309
- msgstr ""
310
-
311
- #: ../assets/theme-mode/demo-theme-options.php:238
312
- #: ../includes/ot-functions-admin.php:2236
313
- #: ../includes/ot-functions-docs-page.php:159
314
- msgid "List Item"
315
- msgstr ""
316
-
317
- #: ../assets/theme-mode/demo-theme-options.php:239
318
- msgid ""
319
- "The List Item option type allows for a great deal of customization. You can "
320
- "add settings to the List Item and those settings will be displayed to the "
321
- "user when they add a new List Item. Typical use is for creating sliding "
322
- "content or blocks of code for custom layouts."
323
- msgstr ""
324
-
325
- #: ../assets/theme-mode/demo-theme-options.php:253
326
- msgid "Content"
327
- msgstr ""
328
-
329
- #: ../assets/theme-mode/demo-theme-options.php:269
330
- #: ../includes/ot-functions-admin.php:2237
331
- #: ../includes/ot-functions-docs-page.php:162
332
- msgid "Measurement"
333
- msgstr ""
334
-
335
- #: ../assets/theme-mode/demo-theme-options.php:270
336
- #: ../includes/ot-functions-docs-page.php:163
337
- #, php-format
338
- msgid ""
339
- "The Measurement option type is a mix of input and select fields. The text "
340
- "input excepts a value and the select lets you choose the unit of measurement "
341
- "to add to that value. Currently the default units are %s, %s, %s, and %s. "
342
- "However, you can change them with the %s filter."
343
- msgstr ""
344
-
345
- #: ../assets/theme-mode/demo-theme-options.php:284
346
- #: ../includes/ot-functions-admin.php:2238
347
- #: ../includes/ot-functions-docs-page.php:193
348
- msgid "Numeric Slider"
349
- msgstr ""
350
-
351
- #: ../assets/theme-mode/demo-theme-options.php:285
352
- #: ../includes/ot-functions-docs-page.php:194
353
- msgid ""
354
- "The Numeric Slider option type displays a jQuery UI slider. It will return a "
355
- "single numerical value for use in a custom function or loop."
356
- msgstr ""
357
-
358
- #: ../assets/theme-mode/demo-theme-options.php:299
359
- #: ../includes/ot-functions-admin.php:2239
360
- #: ../includes/ot-functions-docs-page.php:196
361
- msgid "On/Off"
362
- msgstr ""
363
-
364
- #: ../assets/theme-mode/demo-theme-options.php:300
365
- #: ../includes/ot-functions-docs-page.php:197
366
- #, php-format
367
- msgid ""
368
- "The On/Off option type displays a simple switch that can be used to turn "
369
- "things on or off. The saved return value is either %s or %s."
370
- msgstr ""
371
-
372
- #: ../assets/theme-mode/demo-theme-options.php:314
373
- #: ../includes/ot-functions-admin.php:2240
374
- #: ../includes/ot-functions-docs-page.php:199
375
- msgid "Page Checkbox"
376
- msgstr ""
377
-
378
- #: ../assets/theme-mode/demo-theme-options.php:315
379
- #: ../includes/ot-functions-docs-page.php:200
380
- msgid ""
381
- "The Page Checkbox option type displays a list of page IDs. It allows the "
382
- "user to check multiple page IDs for use in a custom function or loop."
383
- msgstr ""
384
-
385
- #: ../assets/theme-mode/demo-theme-options.php:329
386
- #: ../includes/ot-functions-admin.php:2241
387
- #: ../includes/ot-functions-docs-page.php:202
388
- msgid "Page Select"
389
- msgstr ""
390
-
391
- #: ../assets/theme-mode/demo-theme-options.php:330
392
- #: ../includes/ot-functions-docs-page.php:203
393
- msgid ""
394
- "The Page Select option type displays a list of page IDs. It will return a "
395
- "single page ID for use in a custom function or loop."
396
- msgstr ""
397
-
398
- #: ../assets/theme-mode/demo-theme-options.php:344
399
- #: ../includes/ot-functions-admin.php:2242
400
- #: ../includes/ot-functions-docs-page.php:205
401
- msgid "Post Checkbox"
402
- msgstr ""
403
-
404
- #: ../assets/theme-mode/demo-theme-options.php:345
405
- #: ../includes/ot-functions-docs-page.php:206
406
- msgid ""
407
- "The Post Checkbox option type displays a list of post IDs. It allows the "
408
- "user to check multiple post IDs for use in a custom function or loop."
409
- msgstr ""
410
-
411
- #: ../assets/theme-mode/demo-theme-options.php:359
412
- #: ../includes/ot-functions-admin.php:2243
413
- #: ../includes/ot-functions-docs-page.php:208
414
- msgid "Post Select"
415
- msgstr ""
416
-
417
- #: ../assets/theme-mode/demo-theme-options.php:360
418
- #: ../includes/ot-functions-docs-page.php:209
419
- msgid ""
420
- "The Post Select option type displays a list of post IDs. It will return a "
421
- "single post ID for use in a custom function or loop."
422
- msgstr ""
423
-
424
- #: ../assets/theme-mode/demo-theme-options.php:374
425
- #: ../includes/ot-functions-admin.php:2244
426
- #: ../includes/ot-functions-docs-page.php:211
427
- msgid "Radio"
428
- msgstr ""
429
-
430
- #: ../assets/theme-mode/demo-theme-options.php:375
431
- #: ../includes/ot-functions-docs-page.php:212
432
- msgid ""
433
- "The Radio option type displays a group of choices. It allows the user to "
434
- "choose one and will return that value as a string for use in a custom "
435
- "function or loop."
436
- msgstr ""
437
-
438
- #: ../assets/theme-mode/demo-theme-options.php:399
439
- #: ../assets/theme-mode/demo-theme-options.php:451
440
- msgid "Maybe"
441
- msgstr ""
442
-
443
- #: ../assets/theme-mode/demo-theme-options.php:406
444
- #: ../includes/ot-functions-admin.php:2245
445
- #: ../includes/ot-functions-docs-page.php:214
446
- msgid "Radio Image"
447
- msgstr ""
448
-
449
- #: ../assets/theme-mode/demo-theme-options.php:407
450
- #: ../includes/ot-functions-docs-page.php:215
451
- #, php-format
452
- msgid ""
453
- "the Radio Images option type is primarily used for layouts. However, you can "
454
- "filter the image list using %s. As well, you can add your own custom images "
455
- "using the choices array."
456
- msgstr ""
457
-
458
- #: ../assets/theme-mode/demo-theme-options.php:421
459
- #: ../includes/ot-functions-admin.php:2246
460
- #: ../includes/ot-functions-docs-page.php:241
461
- msgid "Select"
462
- msgstr ""
463
-
464
- #: ../assets/theme-mode/demo-theme-options.php:422
465
- #: ../includes/ot-functions-docs-page.php:242
466
- msgid ""
467
- "The Select option type is used to list anything you want that would be "
468
- "chosen from a select list."
469
- msgstr ""
470
-
471
- #: ../assets/theme-mode/demo-theme-options.php:436
472
- msgid "-- Choose One --"
473
- msgstr ""
474
-
475
- #: ../assets/theme-mode/demo-theme-options.php:458
476
- #: ../includes/ot-functions-admin.php:2247
477
- #: ../includes/ot-functions-docs-page.php:244
478
- msgid "Sidebar Select"
479
- msgstr ""
480
-
481
- #: ../assets/theme-mode/demo-theme-options.php:459
482
- #: ../includes/ot-functions-docs-page.php:245
483
- #, php-format
484
- msgid ""
485
- "This option type makes it possible for users to select a WordPress "
486
- "registered sidebar to use on a specific area. By using the two provided "
487
- "filters, %s, and %s we can be selective about which sidebars are available "
488
- "on a specific content area."
489
- msgstr ""
490
-
491
- #: ../assets/theme-mode/demo-theme-options.php:459
492
- #: ../includes/ot-functions-docs-page.php:246
493
- #, php-format
494
- msgid ""
495
- "For example, if we create a WordPress theme that provides the ability to "
496
- "change the Blog Sidebar and we don't want to have the footer sidebars "
497
- "available on this area, we can unset those sidebars either manually or by "
498
- "using a regular expression if we have a common name like %s."
499
- msgstr ""
500
-
501
- #: ../assets/theme-mode/demo-theme-options.php:473
502
- #: ../includes/ot-functions-admin.php:2251
503
- #: ../includes/ot-functions-docs-page.php:257
504
- msgid "Tag Checkbox"
505
- msgstr ""
506
-
507
- #: ../assets/theme-mode/demo-theme-options.php:474
508
- #: ../includes/ot-functions-docs-page.php:258
509
- msgid ""
510
- "The Tag Checkbox option type displays a list of tag IDs. It allows the user "
511
- "to check multiple tag IDs and will return that value as an array for use in "
512
- "a custom function or loop."
513
- msgstr ""
514
-
515
- #: ../assets/theme-mode/demo-theme-options.php:488
516
- #: ../includes/ot-functions-admin.php:2252
517
- #: ../includes/ot-functions-docs-page.php:260
518
- msgid "Tag Select"
519
- msgstr ""
520
-
521
- #: ../assets/theme-mode/demo-theme-options.php:489
522
- #: ../includes/ot-functions-docs-page.php:261
523
- msgid ""
524
- "The Tag Select option type displays a list of tag IDs. It allows the user to "
525
- "select only one tag ID and will return that value for use in a custom "
526
- "function or loop."
527
- msgstr ""
528
-
529
- #: ../assets/theme-mode/demo-theme-options.php:503
530
- #: ../includes/ot-functions-admin.php:2249
531
- #: ../includes/ot-functions-docs-page.php:251
532
- msgid "Social Links"
533
- msgstr ""
534
-
535
- #: ../assets/theme-mode/demo-theme-options.php:504
536
- #: ../includes/ot-functions-docs-page.php:252
537
- #, php-format
538
- msgid ""
539
- "The Social Links option type utilizes a drag & drop interface to create a "
540
- "list of social links. There are a few filters that make extending this "
541
- "option type easy. You can set the %s filter to %s and turn off loading "
542
- "default values. Use the %s filter to change the default values that are "
543
- "loaded. To filter the settings array use the %s filter."
544
- msgstr ""
545
-
546
- #: ../assets/theme-mode/demo-theme-options.php:518
547
- #: ../includes/ot-functions-admin.php:2253
548
- #: ../includes/ot-functions-docs-page.php:263
549
- msgid "Taxonomy Checkbox"
550
- msgstr ""
551
-
552
- #: ../assets/theme-mode/demo-theme-options.php:519
553
- #: ../includes/ot-functions-docs-page.php:264
554
- msgid ""
555
- "The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
556
- "the user to check multiple taxonomy IDs and will return that value as an "
557
- "array for use in a custom function or loop."
558
- msgstr ""
559
-
560
- #: ../assets/theme-mode/demo-theme-options.php:533
561
- #: ../includes/ot-functions-admin.php:2254
562
- #: ../includes/ot-functions-docs-page.php:266
563
- msgid "Taxonomy Select"
564
- msgstr ""
565
-
566
- #: ../assets/theme-mode/demo-theme-options.php:534
567
- #: ../includes/ot-functions-docs-page.php:267
568
- msgid ""
569
- "The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
570
- "the user to select only one taxonomy ID and will return that value for use "
571
- "in a custom function or loop."
572
- msgstr ""
573
-
574
- #: ../assets/theme-mode/demo-theme-options.php:549
575
- #: ../includes/ot-functions-docs-page.php:270
576
- msgid ""
577
- "The Text option type is used to save string values. For example, any "
578
- "optional or required text that is of reasonably short character length."
579
- msgstr ""
580
-
581
- #: ../assets/theme-mode/demo-theme-options.php:564
582
- #: ../includes/ot-functions-docs-page.php:273
583
- #, php-format
584
- msgid ""
585
- "The Textarea option type is a large string value used for custom code or "
586
- "text in the theme and has a WYSIWYG editor that can be filtered to change "
587
- "the how it is displayed. For example, you can filter %s, %s, %s, and %s."
588
- msgstr ""
589
-
590
- #: ../assets/theme-mode/demo-theme-options.php:578
591
- #: ../includes/ot-functions-admin.php:2257
592
- #: ../includes/ot-functions-docs-page.php:331
593
- msgid "Textarea Simple"
594
- msgstr ""
595
-
596
- #: ../assets/theme-mode/demo-theme-options.php:579
597
- #: ../includes/ot-functions-docs-page.php:332
598
- msgid ""
599
- "The Textarea Simple option type is a large string value used for custom code "
600
- "or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
601
- msgstr ""
602
-
603
- #: ../assets/theme-mode/demo-theme-options.php:593
604
- #: ../includes/ot-functions-admin.php:2258
605
- #: ../includes/ot-functions-docs-page.php:347
606
- msgid "Textblock"
607
- msgstr ""
608
-
609
- #: ../assets/theme-mode/demo-theme-options.php:594
610
- #: ../includes/ot-functions-docs-page.php:348
611
- msgid ""
612
- "The Textblock option type is used only on the Theme Option page. It will "
613
- "allow you to create & display HTML, but has no title above the text block. "
614
- "You can then use the Textblock to add a more detailed set of instruction on "
615
- "how the options are used in your theme. You would never use this in your "
616
- "themes template files as it does not save a value."
617
- msgstr ""
618
-
619
- #: ../assets/theme-mode/demo-theme-options.php:608
620
- #: ../includes/ot-functions-admin.php:2259
621
- #: ../includes/ot-functions-docs-page.php:350
622
- msgid "Textblock Titled"
623
- msgstr ""
624
-
625
- #: ../assets/theme-mode/demo-theme-options.php:609
626
- #: ../includes/ot-functions-docs-page.php:351
627
- msgid ""
628
- "The Textblock Titled option type is used only on the Theme Option page. It "
629
- "will allow you to create & display HTML, and has a title above the text "
630
- "block. You can then use the Textblock Titled to add a more detailed set of "
631
- "instruction on how the options are used in your theme. You would never use "
632
- "this in your themes template files as it does not save a value."
633
- msgstr ""
634
-
635
- #: ../assets/theme-mode/demo-theme-options.php:623
636
- #: ../includes/ot-functions-admin.php:2260
637
- #: ../includes/ot-functions-docs-page.php:353
638
- msgid "Typography"
639
- msgstr ""
640
-
641
- #: ../assets/theme-mode/demo-theme-options.php:624
642
- #: ../includes/ot-functions-docs-page.php:354
643
- #, php-format
644
- msgid ""
645
- "The Typography option type is for adding typography styles to your theme "
646
- "either dynamically via the CSS option type above or manually with %s. The "
647
- "Typography option type has filters that allow you to remove fields or change "
648
- "the defaults. For example, you can filter %s to remove unwanted fields from "
649
- "all Background options or an individual one. You can also filter %s. These "
650
- "filters allow you to fine tune the select lists for your specific needs."
651
- msgstr ""
652
-
653
- #: ../assets/theme-mode/demo-theme-options.php:638
654
- #: ../includes/ot-functions-admin.php:2261
655
- #: ../includes/ot-functions-docs-page.php:373
656
- msgid "Upload"
657
- msgstr ""
658
-
659
- #: ../assets/theme-mode/demo-theme-options.php:639
660
- #: ../includes/ot-functions-docs-page.php:374
661
- #, php-format
662
- msgid ""
663
- "The Upload option type is used to upload any WordPress supported media. "
664
- "After uploading, users are required to press the \"%s\" button in order to "
665
- "populate the input with the URI of that media. There is one caveat of this "
666
- "feature. If you import the theme options and have uploaded media on one site "
667
- "the old URI will not reflect the URI of your new site. You will have to re-"
668
- "upload or %s any media to your new server and change the URIs if necessary."
669
- msgstr ""
670
-
671
- #: ../assets/theme-mode/demo-theme-options.php:653
672
- msgid "Upload Attachment ID"
673
- msgstr ""
674
-
675
- #: ../assets/theme-mode/demo-theme-options.php:654
676
- #, php-format
677
- msgid ""
678
- "The Upload option type can also be saved as an attachment ID by adding %s to "
679
- "the class attribute."
680
- msgstr ""
681
-
682
- #: ../includes/ot-cleanup-api.php:69 ../includes/ot-cleanup-api.php:84
683
- #: ../includes/ot-cleanup-api.php:116
684
  msgid "OptionTree Cleanup"
685
  msgstr ""
686
 
687
- #: ../includes/ot-cleanup-api.php:84
688
  #, php-format
689
  msgid ""
690
  "OptionTree has outdated data that should be removed. Please go to %s for "
691
  "more information."
692
  msgstr ""
693
 
694
- #: ../includes/ot-cleanup-api.php:124
695
  msgid "Multiple Media Posts"
696
  msgstr ""
697
 
698
- #: ../includes/ot-cleanup-api.php:126
699
  #, php-format
700
  msgid ""
701
  "There are currently %s OptionTree media posts in your database. At some "
@@ -706,7 +47,7 @@ msgid ""
706
  "posts and get your database cleaned up."
707
  msgstr ""
708
 
709
- #: ../includes/ot-cleanup-api.php:128
710
  #, php-format
711
  msgid ""
712
  "By clicking the button below, OptionTree will delete %s records and "
@@ -715,14 +56,14 @@ msgid ""
715
  "updated to the correct media post."
716
  msgstr ""
717
 
718
- #: ../includes/ot-cleanup-api.php:130
719
  msgid ""
720
  "This could take a while to fully process depending on how many records you "
721
  "have in your database, so please be patient and wait for the script to "
722
  "finish."
723
  msgstr ""
724
 
725
- #: ../includes/ot-cleanup-api.php:132
726
  #, php-format
727
  msgid ""
728
  "%s Your server is running in safe mode. Which means this page will "
@@ -730,23 +71,23 @@ msgid ""
730
  "using %s if your server is having trouble processing that many at one time."
731
  msgstr ""
732
 
733
- #: ../includes/ot-cleanup-api.php:134
734
  msgid "Consolidate Posts"
735
  msgstr ""
736
 
737
- #: ../includes/ot-cleanup-api.php:162
738
  msgid "Reloading..."
739
  msgstr ""
740
 
741
- #: ../includes/ot-cleanup-api.php:198
742
  msgid "Clean up script has completed, the page will now reload..."
743
  msgstr ""
744
 
745
- #: ../includes/ot-cleanup-api.php:218
746
  msgid "Outdated Table"
747
  msgstr ""
748
 
749
- #: ../includes/ot-cleanup-api.php:220
750
  #, php-format
751
  msgid ""
752
  "If you have upgraded from an old 1.x version of OptionTree at some point, "
@@ -755,42 +96,28 @@ msgid ""
755
  "Click the button below."
756
  msgstr ""
757
 
758
- #: ../includes/ot-cleanup-api.php:222
759
  msgid "Drop Table"
760
  msgstr ""
761
 
762
- #: ../includes/ot-cleanup-api.php:226
763
  #, php-format
764
  msgid "Deleting the outdated and unused %s table..."
765
  msgstr ""
766
 
767
- #: ../includes/ot-cleanup-api.php:232
768
  #, php-format
769
  msgid "The %s table has been successfully deleted. The page will now reload..."
770
  msgstr ""
771
 
772
- #: ../includes/ot-cleanup-api.php:244
773
  #, php-format
774
  msgid "Something went wrong. The %s table was not deleted."
775
  msgstr ""
776
 
777
- #: ../includes/ot-cleanup-api.php:254
778
- msgid "Congratulations! You have a clean install."
779
- msgstr ""
780
-
781
- #: ../includes/ot-cleanup-api.php:256
782
- msgid ""
783
- "Your version of OptionTree does not have any outdated data. If there was "
784
- "outdated data, you would be presented with options to clean it up."
785
- msgstr ""
786
-
787
- #: ../includes/ot-cleanup-api.php:258
788
- msgid "Hide This Page"
789
- msgstr ""
790
-
791
  #: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
792
  #: ../includes/ot-functions-admin.php:169
793
- #: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:284
794
  msgid "Theme Options"
795
  msgstr ""
796
 
@@ -820,7 +147,7 @@ msgstr ""
820
 
821
  #: ../includes/ot-functions-admin.php:109
822
  #: ../includes/ot-functions-admin.php:110
823
- #: ../includes/ot-functions-docs-page.php:797
824
  msgid "OptionTree"
825
  msgstr ""
826
 
@@ -880,6 +207,10 @@ msgstr ""
880
  msgid "Creating Options"
881
  msgstr ""
882
 
 
 
 
 
883
  #: ../includes/ot-functions-admin.php:235
884
  msgid "Function References"
885
  msgstr ""
@@ -927,334 +258,564 @@ msgstr ""
927
  msgid "What's a layout anyhow?"
928
  msgstr ""
929
 
930
- #: ../includes/ot-functions-admin.php:499
 
 
 
 
 
 
 
931
  msgid "The Colorpicker only allows valid hexadecimal values."
932
  msgstr ""
933
 
934
- #: ../includes/ot-functions-admin.php:658
 
 
 
 
 
 
 
 
 
 
 
935
  #: ../includes/ot-functions-option-types.php:257
936
- #: ../includes/ot-functions-option-types.php:2453
937
  msgid "Remove Media"
938
  msgstr ""
939
 
940
- #: ../includes/ot-functions-admin.php:659
941
  msgid "Are you sure you want to reset back to the defaults?"
942
  msgstr ""
943
 
944
- #: ../includes/ot-functions-admin.php:660
945
  msgid "You can't remove this! But you can edit the values."
946
  msgstr ""
947
 
948
- #: ../includes/ot-functions-admin.php:661
949
  msgid "Are you sure you want to remove this?"
950
  msgstr ""
951
 
952
- #: ../includes/ot-functions-admin.php:662
953
  msgid "Are you sure you want to activate this layout?"
954
  msgstr ""
955
 
956
- #: ../includes/ot-functions-admin.php:663
957
  msgid "Sorry, you can't have settings three levels deep."
958
  msgstr ""
959
 
960
- #: ../includes/ot-functions-admin.php:664
961
- #: ../includes/ot-functions-option-types.php:812
962
  msgid "Delete Gallery"
963
  msgstr ""
964
 
965
- #: ../includes/ot-functions-admin.php:665
966
- #: ../includes/ot-functions-option-types.php:813
967
  msgid "Edit Gallery"
968
  msgstr ""
969
 
970
- #: ../includes/ot-functions-admin.php:666
971
- #: ../includes/ot-functions-option-types.php:820
972
  msgid "Create Gallery"
973
  msgstr ""
974
 
975
- #: ../includes/ot-functions-admin.php:667
976
  msgid "Are you sure you want to delete this Gallery?"
977
  msgstr ""
978
 
979
- #: ../includes/ot-functions-admin.php:668
980
  msgid "Today"
981
  msgstr ""
982
 
983
- #: ../includes/ot-functions-admin.php:669
984
  msgid "Now"
985
  msgstr ""
986
 
987
- #: ../includes/ot-functions-admin.php:670
988
  msgid "Close"
989
  msgstr ""
990
 
991
- #: ../includes/ot-functions-admin.php:671
992
  msgid "Featured Image"
993
  msgstr ""
994
 
995
- #: ../includes/ot-functions-admin.php:672
996
- #: ../includes/ot-functions-admin.php:2809
997
- #: ../includes/ot-functions-admin.php:2870
998
  msgid "Image"
999
  msgstr ""
1000
 
1001
- #: ../includes/ot-functions-admin.php:739
1002
  msgid "Option Tree"
1003
  msgstr ""
1004
 
1005
- #: ../includes/ot-functions-admin.php:876
1006
  msgid "General"
1007
  msgstr ""
1008
 
1009
- #: ../includes/ot-functions-admin.php:882
1010
  msgid "Sample Text Field Label"
1011
  msgstr ""
1012
 
1013
- #: ../includes/ot-functions-admin.php:883
1014
  msgid "Description for the sample text field."
1015
  msgstr ""
1016
 
1017
- #: ../includes/ot-functions-admin.php:2125
1018
  msgid "Settings updated."
1019
  msgstr ""
1020
 
1021
- #: ../includes/ot-functions-admin.php:2129
1022
  msgid "Settings could not be saved."
1023
  msgstr ""
1024
 
1025
- #: ../includes/ot-functions-admin.php:2137
1026
  msgid "Settings Imported."
1027
  msgstr ""
1028
 
1029
- #: ../includes/ot-functions-admin.php:2141
1030
  msgid "Settings could not be imported."
1031
  msgstr ""
1032
 
1033
- #: ../includes/ot-functions-admin.php:2148
1034
  msgid "Data Imported."
1035
  msgstr ""
1036
 
1037
- #: ../includes/ot-functions-admin.php:2152
1038
  msgid "Data could not be imported."
1039
  msgstr ""
1040
 
1041
- #: ../includes/ot-functions-admin.php:2160
1042
  msgid "Layouts Imported."
1043
  msgstr ""
1044
 
1045
- #: ../includes/ot-functions-admin.php:2164
1046
- msgid "Layouts could not be imported."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  msgstr ""
1048
 
1049
- #: ../includes/ot-functions-admin.php:2172
1050
- msgid "Layouts Updated."
 
1051
  msgstr ""
1052
 
1053
- #: ../includes/ot-functions-admin.php:2176
1054
- msgid "Layouts could not be updated."
 
1055
  msgstr ""
1056
 
1057
- #: ../includes/ot-functions-admin.php:2180
1058
- msgid "Layouts have been deleted."
 
1059
  msgstr ""
1060
 
1061
- #: ../includes/ot-functions-admin.php:2186
1062
- msgid "Layout activated."
 
1063
  msgstr ""
1064
 
1065
- #: ../includes/ot-functions-admin.php:2229
1066
- msgid "Color Picker"
 
1067
  msgstr ""
1068
 
1069
- #: ../includes/ot-functions-admin.php:2248
1070
- #: ../includes/ot-functions-docs-page.php:248
1071
- msgid "Slider"
1072
  msgstr ""
1073
 
1074
- #: ../includes/ot-functions-admin.php:2250
1075
- #: ../includes/ot-functions-docs-page.php:254
1076
- msgid "Tab"
1077
  msgstr ""
1078
 
1079
- #: ../includes/ot-functions-admin.php:2754
1080
  msgid "Left Sidebar"
1081
  msgstr ""
1082
 
1083
- #: ../includes/ot-functions-admin.php:2759
1084
  msgid "Right Sidebar"
1085
  msgstr ""
1086
 
1087
- #: ../includes/ot-functions-admin.php:2764
1088
  msgid "Full Width (no sidebar)"
1089
  msgstr ""
1090
 
1091
- #: ../includes/ot-functions-admin.php:2769
1092
  msgid "Dual Sidebar"
1093
  msgstr ""
1094
 
1095
- #: ../includes/ot-functions-admin.php:2774
1096
  msgid "Left Dual Sidebar"
1097
  msgstr ""
1098
 
1099
- #: ../includes/ot-functions-admin.php:2779
1100
  msgid "Right Dual Sidebar"
1101
  msgstr ""
1102
 
1103
- #: ../includes/ot-functions-admin.php:2820
1104
- #: ../includes/ot-functions-admin.php:2876
1105
- #: ../includes/ot-functions-admin.php:4752
1106
  msgid "Link"
1107
  msgstr ""
1108
 
1109
- #: ../includes/ot-functions-admin.php:2831
1110
- #: ../includes/ot-functions-admin.php:2882
1111
  #: ../includes/ot-functions-docs-page.php:43
1112
- #: ../includes/ot-functions-docs-page.php:404
1113
- #: ../includes/ot-functions-docs-page.php:454
1114
  msgid "Description"
1115
  msgstr ""
1116
 
1117
- #: ../includes/ot-functions-admin.php:2946
1118
  msgid "Name"
1119
  msgstr ""
1120
 
1121
- #: ../includes/ot-functions-admin.php:2947
1122
  msgid "Enter the name of the social website."
1123
  msgstr ""
1124
 
1125
- #: ../includes/ot-functions-admin.php:2955
1126
  msgid "Enter the text shown in the title attribute of the link."
1127
  msgstr ""
1128
 
1129
- #: ../includes/ot-functions-admin.php:2961
1130
  #, php-format
1131
  msgid ""
1132
  "Enter a link to the profile or page on the social website. Remember to add "
1133
  "the %s part to the front of the link."
1134
  msgstr ""
1135
 
1136
- #: ../includes/ot-functions-admin.php:3444
1137
  msgid "edit"
1138
  msgstr ""
1139
 
1140
- #: ../includes/ot-functions-admin.php:3445
1141
- #: ../includes/ot-functions-admin.php:3513
1142
- #: ../includes/ot-functions-admin.php:3514
1143
- #: ../includes/ot-functions-admin.php:3676
1144
- #: ../includes/ot-functions-admin.php:3677
1145
- #: ../includes/ot-functions-admin.php:3742
1146
- #: ../includes/ot-functions-admin.php:3743
1147
- #: ../includes/ot-functions-admin.php:3870
1148
- #: ../includes/ot-functions-admin.php:3871
1149
- #: ../includes/ot-functions-admin.php:4023
1150
- #: ../includes/ot-functions-admin.php:4024
1151
  msgid "Edit"
1152
  msgstr ""
1153
 
1154
- #: ../includes/ot-functions-admin.php:3447
1155
- #: ../includes/ot-functions-admin.php:3448
1156
- #: ../includes/ot-functions-admin.php:3516
1157
- #: ../includes/ot-functions-admin.php:3517
1158
- #: ../includes/ot-functions-admin.php:3679
1159
- #: ../includes/ot-functions-admin.php:3680
1160
- #: ../includes/ot-functions-admin.php:3745
1161
- #: ../includes/ot-functions-admin.php:3746
1162
- #: ../includes/ot-functions-admin.php:3804
1163
- #: ../includes/ot-functions-admin.php:3805
1164
- #: ../includes/ot-functions-admin.php:3873
1165
- #: ../includes/ot-functions-admin.php:3874
1166
- #: ../includes/ot-functions-admin.php:4026
1167
- #: ../includes/ot-functions-admin.php:4027
1168
  msgid "Delete"
1169
  msgstr ""
1170
 
1171
- #: ../includes/ot-functions-admin.php:3454
1172
  msgid ""
1173
  "<strong>Section Title</strong>: Displayed as a menu item on the Theme "
1174
  "Options page."
1175
  msgstr ""
1176
 
1177
- #: ../includes/ot-functions-admin.php:3462
1178
  msgid ""
1179
  "<strong>Section ID</strong>: A unique lower case alphanumeric string, "
1180
  "underscores allowed."
1181
  msgstr ""
1182
 
1183
- #: ../includes/ot-functions-admin.php:3523
1184
  msgid ""
1185
  "<strong>Label</strong>: Displayed as the label of a form element on the "
1186
  "Theme Options page."
1187
  msgstr ""
1188
 
1189
- #: ../includes/ot-functions-admin.php:3531
1190
- #: ../includes/ot-functions-admin.php:3760
1191
  msgid ""
1192
  "<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
1193
  "allowed."
1194
  msgstr ""
1195
 
1196
- #: ../includes/ot-functions-admin.php:3539
1197
  msgid ""
1198
  "<strong>Type</strong>: Choose one of the available option types from the "
1199
  "dropdown."
1200
  msgstr ""
1201
 
1202
- #: ../includes/ot-functions-admin.php:3550
1203
  msgid ""
1204
  "<strong>Description</strong>: Enter a detailed description for the users to "
1205
  "read on the Theme Options page, HTML is allowed. This is also where you "
1206
  "enter content for both the Textblock & Textblock Titled option types."
1207
  msgstr ""
1208
 
1209
- #: ../includes/ot-functions-admin.php:3558
1210
  msgid ""
1211
  "<strong>Choices</strong>: This will only affect the following option types: "
1212
  "Checkbox, Radio, Select & Select Image."
1213
  msgstr ""
1214
 
1215
- #: ../includes/ot-functions-admin.php:3563
1216
  msgid "Add Choice"
1217
  msgstr ""
1218
 
1219
- #: ../includes/ot-functions-admin.php:3569
1220
  msgid ""
1221
  "<strong>Settings</strong>: This will only affect the List Item option type."
1222
  msgstr ""
1223
 
1224
- #: ../includes/ot-functions-admin.php:3574
1225
  #: ../includes/ot-functions-settings-page.php:93
1226
  msgid "Add Setting"
1227
  msgstr ""
1228
 
1229
- #: ../includes/ot-functions-admin.php:3580
1230
  msgid ""
1231
  "<strong>Standard</strong>: Setting the standard value for your option only "
1232
  "works for some option types. Read the <code>OptionTree->Documentation</code> "
1233
  "for more information on which ones."
1234
  msgstr ""
1235
 
1236
- #: ../includes/ot-functions-admin.php:3588
1237
  msgid ""
1238
  "<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
1239
  "textarea. This will only affect the following option types: CSS, Textarea, & "
1240
  "Textarea Simple."
1241
  msgstr ""
1242
 
1243
- #: ../includes/ot-functions-admin.php:3596
1244
  msgid ""
1245
  "<strong>Post Type</strong>: Add a comma separated list of post type like "
1246
  "'post,page'. This will only affect the following option types: Custom Post "
1247
  "Type Checkbox, & Custom Post Type Select."
1248
  msgstr ""
1249
 
1250
- #: ../includes/ot-functions-admin.php:3604
1251
  msgid ""
1252
  "<strong>Taxonomy</strong>: Add a comma separated list of any registered "
1253
  "taxonomy like 'category,post_tag'. This will only affect the following "
1254
  "option types: Taxonomy Checkbox, & Taxonomy Select."
1255
  msgstr ""
1256
 
1257
- #: ../includes/ot-functions-admin.php:3612
1258
  msgid ""
1259
  "<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
1260
  "the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
@@ -1263,11 +824,11 @@ msgid ""
1263
  "type."
1264
  msgstr ""
1265
 
1266
- #: ../includes/ot-functions-admin.php:3620
1267
  msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
1268
  msgstr ""
1269
 
1270
- #: ../includes/ot-functions-admin.php:3628
1271
  #, php-format
1272
  msgid ""
1273
  "<strong>Condition</strong>: Add a comma separated list (no spaces) of "
@@ -1276,92 +837,98 @@ msgid ""
1276
  "placeholder for your condition, which can be in the form of %s."
1277
  msgstr ""
1278
 
1279
- #: ../includes/ot-functions-admin.php:3636
1280
  msgid ""
1281
  "<strong>Operator</strong>: Choose the logical operator to compute the result "
1282
  "of the conditions."
1283
  msgstr ""
1284
 
1285
- #: ../includes/ot-functions-admin.php:3640
 
 
 
 
 
 
1286
  msgid "or"
1287
  msgstr ""
1288
 
1289
- #: ../includes/ot-functions-admin.php:3686
1290
  #: ../includes/ot-functions-docs-page.php:29
1291
  msgid "Label"
1292
  msgstr ""
1293
 
1294
- #: ../includes/ot-functions-admin.php:3696
1295
  msgid "Value"
1296
  msgstr ""
1297
 
1298
- #: ../includes/ot-functions-admin.php:3706
1299
  msgid "Image Source (Radio Image only)"
1300
  msgstr ""
1301
 
1302
- #: ../includes/ot-functions-admin.php:3752
1303
  msgid ""
1304
  "<strong>Title</strong>: Displayed as a contextual help menu item on the "
1305
  "Theme Options page."
1306
  msgstr ""
1307
 
1308
- #: ../includes/ot-functions-admin.php:3768
1309
  msgid ""
1310
  "<strong>Content</strong>: Enter the HTML content about this contextual help "
1311
  "item displayed on the Theme Option page for end users to read."
1312
  msgstr ""
1313
 
1314
- #: ../includes/ot-functions-admin.php:3799
1315
  msgid "Layout"
1316
  msgstr ""
1317
 
1318
- #: ../includes/ot-functions-admin.php:3801
1319
- #: ../includes/ot-functions-admin.php:3802
1320
  msgid "Activate"
1321
  msgstr ""
1322
 
1323
- #: ../includes/ot-functions-admin.php:3838 ../includes/ot-meta-box-api.php:223
1324
- #: ../includes/ot-settings-api.php:594
1325
  msgid "Title"
1326
  msgstr ""
1327
 
1328
- #: ../includes/ot-functions-admin.php:4178
1329
  msgid "New Layout"
1330
  msgstr ""
1331
 
1332
- #: ../includes/ot-functions-admin.php:4761
1333
  msgid "Link URL"
1334
  msgstr ""
1335
 
1336
- #: ../includes/ot-functions-admin.php:4768
1337
  msgid "Link Title"
1338
  msgstr ""
1339
 
1340
- #: ../includes/ot-functions-admin.php:4798
1341
  msgid "Quote"
1342
  msgstr ""
1343
 
1344
- #: ../includes/ot-functions-admin.php:4807
1345
  msgid "Source Name (ex. author, singer, actor)"
1346
  msgstr ""
1347
 
1348
- #: ../includes/ot-functions-admin.php:4814
1349
  msgid "Source URL"
1350
  msgstr ""
1351
 
1352
- #: ../includes/ot-functions-admin.php:4821
1353
  msgid "Source Title (ex. book, song, movie)"
1354
  msgstr ""
1355
 
1356
- #: ../includes/ot-functions-admin.php:4828
1357
  msgid "Source Date"
1358
  msgstr ""
1359
 
1360
- #: ../includes/ot-functions-admin.php:4858
1361
  msgid "Video"
1362
  msgstr ""
1363
 
1364
- #: ../includes/ot-functions-admin.php:4867
1365
  #, php-format
1366
  msgid ""
1367
  "Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
@@ -1369,16 +936,16 @@ msgid ""
1369
  "built-in %2$s shortcode."
1370
  msgstr ""
1371
 
1372
- #: ../includes/ot-functions-admin.php:4867
1373
- #: ../includes/ot-functions-admin.php:4906
1374
  msgid "Wordpress Codex"
1375
  msgstr ""
1376
 
1377
- #: ../includes/ot-functions-admin.php:4897
1378
  msgid "Audio"
1379
  msgstr ""
1380
 
1381
- #: ../includes/ot-functions-admin.php:4906
1382
  #, php-format
1383
  msgid ""
1384
  "Embed audio from services like SoundCloud and Rdio. You can find a list of "
@@ -1475,137 +1042,443 @@ msgid ""
1475
  "not seem to return results properly and is something I plan on looking into."
1476
  msgstr ""
1477
 
1478
- #: ../includes/ot-functions-docs-page.php:67
1479
- msgid "Taxonomy"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1480
  msgstr ""
1481
 
1482
- #: ../includes/ot-functions-docs-page.php:68
1483
  msgid ""
1484
- "Add a comma separated list of any registered taxonomy like <code>category,"
1485
- "post_tag</code>. This will only affect the following option types: Taxonomy "
1486
- "Checkbox, & Taxonomy Select."
1487
  msgstr ""
1488
 
1489
- #: ../includes/ot-functions-docs-page.php:70
1490
- msgid "Min, Max, & Step"
 
 
 
1491
  msgstr ""
1492
 
1493
- #: ../includes/ot-functions-docs-page.php:71
 
1494
  msgid ""
1495
- "Add a comma separated list of options in the following format <code>0,100,1</"
1496
- "code> (slide from <code>0-100</code> in intervals of <code>1</code>). The "
1497
- "three values represent the minimum, maximum, and step options and will only "
1498
- "affect the Numeric Slider option type."
1499
  msgstr ""
1500
 
1501
- #: ../includes/ot-functions-docs-page.php:73
1502
- msgid "CSS Class"
 
 
 
1503
  msgstr ""
1504
 
1505
- #: ../includes/ot-functions-docs-page.php:74
1506
- msgid "Add and optional class to any option type."
 
 
1507
  msgstr ""
1508
 
1509
- #: ../includes/ot-functions-docs-page.php:76
1510
- msgid "Condition"
 
 
 
 
 
1511
  msgstr ""
1512
 
1513
- #: ../includes/ot-functions-docs-page.php:77
1514
  #, php-format
1515
  msgid ""
1516
- "Add a comma separated list (no spaces) of conditions in which the field will "
1517
- "be visible, leave this setting empty to always show the field. In these "
1518
- "examples, %s is a placeholder for your condition, which can be in the form "
1519
- "of %s."
1520
  msgstr ""
1521
 
1522
- #: ../includes/ot-functions-docs-page.php:79
1523
- msgid "Operator"
 
 
 
1524
  msgstr ""
1525
 
1526
- #: ../includes/ot-functions-docs-page.php:80
1527
  #, php-format
1528
  msgid ""
1529
- "Choose the logical operator to compute the result of the conditions. Your "
1530
- "options are %s and %s."
 
 
 
1531
  msgstr ""
1532
 
1533
- #: ../includes/ot-functions-docs-page.php:130
1534
- msgid "Input"
 
 
 
 
 
 
1535
  msgstr ""
1536
 
1537
- #: ../includes/ot-functions-docs-page.php:136
1538
- msgid "Output"
 
1539
  msgstr ""
1540
 
1541
- #: ../includes/ot-functions-docs-page.php:160
1542
  msgid ""
1543
- "The List Item option type replaced the Slider option type and allows for a "
1544
- "great deal of customization. You can add settings to the List Item and those "
1545
- "settings will be displayed to the user when they add a new List Item. "
1546
- "Typical use is for creating sliding content or blocks of code for custom "
1547
- "layouts."
1548
  msgstr ""
1549
 
1550
- #: ../includes/ot-functions-docs-page.php:165
1551
- #, php-format
1552
  msgid ""
1553
- "Example filter to add new units to the Measurement option type. Added to %s."
 
 
1554
  msgstr ""
1555
 
1556
- #: ../includes/ot-functions-docs-page.php:178
1557
  msgid ""
1558
- "Example filter to completely change the units in the Measurement option "
1559
- "type. Added to <code>functions.php</code>."
 
1560
  msgstr ""
1561
 
1562
- #: ../includes/ot-functions-docs-page.php:217
1563
  msgid ""
1564
- "This example executes the <code>ot_radio_images</code> filter on layout "
1565
- "images attached to the <code>my_radio_images</code> field. Added to "
1566
- "<code>functions.php</code>."
1567
  msgstr ""
1568
 
1569
- #: ../includes/ot-functions-docs-page.php:249
1570
  msgid ""
1571
- "The Slider option type is technically deprecated. Use the List Item option "
1572
- "type instead, as it's infinitely more customizable. Typical use is for "
1573
- "creating sliding image content."
1574
  msgstr ""
1575
 
1576
- #: ../includes/ot-functions-docs-page.php:255
 
1577
  msgid ""
1578
- "The Tab option type will break a section or metabox into tabbed content."
 
 
1579
  msgstr ""
1580
 
1581
- #: ../includes/ot-functions-docs-page.php:275
1582
  msgid ""
1583
  "Example filters to alter the Textarea option type. Added to <code>functions."
1584
  "php</code>."
1585
  msgstr ""
1586
 
1587
- #: ../includes/ot-functions-docs-page.php:277
1588
  msgid ""
1589
  "This example keeps WordPress from executing the <code>wpautop</code> filter "
1590
  "on the line breaks. The default is <code>true</code> which means it wraps "
1591
  "line breaks with an HTML <code>p</code> tag."
1592
  msgstr ""
1593
 
1594
- #: ../includes/ot-functions-docs-page.php:290
1595
  msgid ""
1596
  "This example keeps WordPress from executing the <code>media_buttons</code> "
1597
  "filter on the textarea WYSIWYG. The default is <code>true</code> which means "
1598
  "show the buttons."
1599
  msgstr ""
1600
 
1601
- #: ../includes/ot-functions-docs-page.php:303
1602
  msgid ""
1603
  "This example keeps WordPress from executing the <code>tinymce</code> filter "
1604
  "on the textarea WYSIWYG. The default is <code>true</code> which means show "
1605
  "the tinymce."
1606
  msgstr ""
1607
 
1608
- #: ../includes/ot-functions-docs-page.php:316
1609
  msgid ""
1610
  "This example alters the <code>quicktags</code> filter on the textarea "
1611
  "WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
@@ -1613,7 +1486,13 @@ msgid ""
1613
  "quicktags. It also means you can filter in your own custom quicktags."
1614
  msgstr ""
1615
 
1616
- #: ../includes/ot-functions-docs-page.php:334
 
 
 
 
 
 
1617
  #, php-format
1618
  msgid ""
1619
  "This example tells WordPress to execute the %s filter on the line breaks. "
@@ -1621,134 +1500,174 @@ msgid ""
1621
  "tag. Added to %s."
1622
  msgstr ""
1623
 
1624
- #: ../includes/ot-functions-docs-page.php:356
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1625
  msgid ""
1626
  "This example would filter <code>ot_recognized_font_families</code> to build "
1627
  "your own font stack. Added to <code>functions.php</code>."
1628
  msgstr ""
1629
 
1630
- #: ../includes/ot-functions-docs-page.php:406
 
 
 
 
 
 
 
 
 
 
 
1631
  msgid ""
1632
  "This function returns a value from the \"option_tree\" array of saved values "
1633
  "or the default value supplied. The returned value would be mixed. Meaning it "
1634
  "could be a string, integer, boolean, or array."
1635
  msgstr ""
1636
 
1637
- #: ../includes/ot-functions-docs-page.php:408
1638
- #: ../includes/ot-functions-docs-page.php:458
1639
  msgid "Usage"
1640
  msgstr ""
1641
 
1642
- #: ../includes/ot-functions-docs-page.php:412
1643
- #: ../includes/ot-functions-docs-page.php:462
1644
  msgid "Parameters"
1645
  msgstr ""
1646
 
1647
- #: ../includes/ot-functions-docs-page.php:416
1648
- #: ../includes/ot-functions-docs-page.php:420
1649
- #: ../includes/ot-functions-docs-page.php:466
1650
  msgid "string"
1651
  msgstr ""
1652
 
1653
- #: ../includes/ot-functions-docs-page.php:416
1654
- #: ../includes/ot-functions-docs-page.php:466
1655
  msgid "required"
1656
  msgstr ""
1657
 
1658
- #: ../includes/ot-functions-docs-page.php:416
1659
  msgid "Enter the options unique identifier."
1660
  msgstr ""
1661
 
1662
- #: ../includes/ot-functions-docs-page.php:416
1663
- #: ../includes/ot-functions-docs-page.php:466
1664
  msgid "Default:"
1665
  msgstr ""
1666
 
1667
- #: ../includes/ot-functions-docs-page.php:416
1668
- #: ../includes/ot-functions-docs-page.php:420
1669
- #: ../includes/ot-functions-docs-page.php:466
1670
- #: ../includes/ot-functions-docs-page.php:470
1671
  msgid "None"
1672
  msgstr ""
1673
 
1674
- #: ../includes/ot-functions-docs-page.php:420
1675
- #: ../includes/ot-functions-docs-page.php:470
1676
- #: ../includes/ot-functions-docs-page.php:474
1677
- #: ../includes/ot-functions-docs-page.php:478
1678
- #: ../includes/ot-functions-docs-page.php:482
1679
  msgid "optional"
1680
  msgstr ""
1681
 
1682
- #: ../includes/ot-functions-docs-page.php:420
1683
  msgid ""
1684
  "Enter a default return value. This is just incase the request returns null."
1685
  msgstr ""
1686
 
1687
- #: ../includes/ot-functions-docs-page.php:420
1688
- #: ../includes/ot-functions-docs-page.php:470
1689
- #: ../includes/ot-functions-docs-page.php:474
1690
- #: ../includes/ot-functions-docs-page.php:478
1691
- #: ../includes/ot-functions-docs-page.php:482
1692
  msgid "Default"
1693
  msgstr ""
1694
 
1695
- #: ../includes/ot-functions-docs-page.php:450
1696
  msgid ""
1697
  "This function has been deprecated. That means it has been replaced by a new "
1698
  "function or is no longer supported, and may be removed from future versions. "
1699
  "All code that uses this function should be converted to use its replacement."
1700
  msgstr ""
1701
 
1702
- #: ../includes/ot-functions-docs-page.php:452
1703
  msgid "Use"
1704
  msgstr ""
1705
 
1706
- #: ../includes/ot-functions-docs-page.php:452
1707
  msgid "instead"
1708
  msgstr ""
1709
 
1710
- #: ../includes/ot-functions-docs-page.php:456
1711
  msgid ""
1712
  "This function returns, or echos if asked, a value from the \"option_tree\" "
1713
  "array of saved values."
1714
  msgstr ""
1715
 
1716
- #: ../includes/ot-functions-docs-page.php:466
1717
  msgid "Enter a unique Option Key to get a returned value or array."
1718
  msgstr ""
1719
 
1720
- #: ../includes/ot-functions-docs-page.php:470
1721
  msgid "array"
1722
  msgstr ""
1723
 
1724
- #: ../includes/ot-functions-docs-page.php:470
1725
  msgid "Used to cut down on database queries in template files."
1726
  msgstr ""
1727
 
1728
- #: ../includes/ot-functions-docs-page.php:474
1729
- #: ../includes/ot-functions-docs-page.php:478
1730
  msgid "boolean"
1731
  msgstr ""
1732
 
1733
- #: ../includes/ot-functions-docs-page.php:474
1734
  msgid "Echo the output."
1735
  msgstr ""
1736
 
1737
- #: ../includes/ot-functions-docs-page.php:478
1738
  msgid "Used to indicate the $item_id is an array of values."
1739
  msgstr ""
1740
 
1741
- #: ../includes/ot-functions-docs-page.php:482
1742
  msgid "integer"
1743
  msgstr ""
1744
 
1745
- #: ../includes/ot-functions-docs-page.php:482
1746
  msgid ""
1747
  "Numeric offset key for the $item_id array, -1 will return all values (an "
1748
  "array starts at 0)."
1749
  msgstr ""
1750
 
1751
- #: ../includes/ot-functions-docs-page.php:510
1752
  msgid ""
1753
  "If you're using the plugin version of OptionTree it is highly recommended to "
1754
  "include a <code>function_exists</code> check in your code, as described in "
@@ -1758,32 +1677,32 @@ msgid ""
1758
  "<code>ot_get_option()</code> function available."
1759
  msgstr ""
1760
 
1761
- #: ../includes/ot-functions-docs-page.php:512
1762
  msgid "String Examples"
1763
  msgstr ""
1764
 
1765
- #: ../includes/ot-functions-docs-page.php:514
1766
  msgid "Returns the value of <code>test_input</code>."
1767
  msgstr ""
1768
 
1769
- #: ../includes/ot-functions-docs-page.php:520
1770
  msgid ""
1771
  "Returns the value of <code>test_input</code>, but also has a default value "
1772
  "if it returns empty."
1773
  msgstr ""
1774
 
1775
- #: ../includes/ot-functions-docs-page.php:526
1776
  msgid "Array Examples"
1777
  msgstr ""
1778
 
1779
- #: ../includes/ot-functions-docs-page.php:528
1780
  msgid ""
1781
  "Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
1782
  "code>. It then echos an unordered list of links (navigation) using "
1783
  "<code>wp_list_pages()</code>."
1784
  msgstr ""
1785
 
1786
- #: ../includes/ot-functions-docs-page.php:548
1787
  msgid ""
1788
  "The next two examples demonstrate how to use the <strong>Measurement</"
1789
  "strong> option type. The Measurement option type is an array with two key/"
@@ -1791,15 +1710,15 @@ msgid ""
1791
  "unit of measurement."
1792
  msgstr ""
1793
 
1794
- #: ../includes/ot-functions-docs-page.php:574
1795
  msgid "This example displays a very basic slider loop."
1796
  msgstr ""
1797
 
1798
- #: ../includes/ot-functions-docs-page.php:619
1799
  msgid "It's Super Simple"
1800
  msgstr ""
1801
 
1802
- #: ../includes/ot-functions-docs-page.php:621
1803
  msgid ""
1804
  "Layouts make your theme awesome! With theme options data that you can save/"
1805
  "import/export you can package themes with different color variations, or "
@@ -1807,7 +1726,7 @@ msgid ""
1807
  "a snapshot of your data as a layout."
1808
  msgstr ""
1809
 
1810
- #: ../includes/ot-functions-docs-page.php:623
1811
  msgid ""
1812
  "Once you have created all your different layouts, or theme variations, you "
1813
  "can save them to a separate text file for repackaging with your theme. "
@@ -1816,117 +1735,117 @@ msgid ""
1816
  "previous options data."
1817
  msgstr ""
1818
 
1819
- #: ../includes/ot-functions-docs-page.php:625
1820
  msgid ""
1821
  " Adding a layout is ridiculously easy, follow these steps and you'll be on "
1822
  "your way to having a WordPress super theme."
1823
  msgstr ""
1824
 
1825
- #: ../includes/ot-functions-docs-page.php:627
1826
  msgid "For Developers"
1827
  msgstr ""
1828
 
1829
- #: ../includes/ot-functions-docs-page.php:629
1830
- #: ../includes/ot-functions-docs-page.php:658
1831
  msgid "Creating a Layout"
1832
  msgstr ""
1833
 
1834
- #: ../includes/ot-functions-docs-page.php:631
1835
- #: ../includes/ot-functions-docs-page.php:638
1836
- #: ../includes/ot-functions-docs-page.php:644
1837
  msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
1838
  msgstr ""
1839
 
1840
- #: ../includes/ot-functions-docs-page.php:632
1841
  msgid ""
1842
  "Enter a name for your layout in the text field and hit \"Save Layouts\", "
1843
  "you've created your first layout."
1844
  msgstr ""
1845
 
1846
- #: ../includes/ot-functions-docs-page.php:633
1847
- #: ../includes/ot-functions-docs-page.php:662
1848
  msgid "Adding a new layout is as easy as repeating the steps above."
1849
  msgstr ""
1850
 
1851
- #: ../includes/ot-functions-docs-page.php:636
1852
- #: ../includes/ot-functions-docs-page.php:665
1853
  msgid "Activating a Layout"
1854
  msgstr ""
1855
 
1856
- #: ../includes/ot-functions-docs-page.php:639
1857
  msgid "Click on the activate layout button in the actions list."
1858
  msgstr ""
1859
 
1860
- #: ../includes/ot-functions-docs-page.php:642
1861
- #: ../includes/ot-functions-docs-page.php:671
1862
  msgid "Deleting a Layout"
1863
  msgstr ""
1864
 
1865
- #: ../includes/ot-functions-docs-page.php:645
1866
  msgid "Click on the delete layout button in the actions list."
1867
  msgstr ""
1868
 
1869
- #: ../includes/ot-functions-docs-page.php:648
1870
- #: ../includes/ot-functions-docs-page.php:676
1871
  msgid "Edit Layout Data"
1872
  msgstr ""
1873
 
1874
- #: ../includes/ot-functions-docs-page.php:650
1875
- #: ../includes/ot-functions-docs-page.php:660
1876
- #: ../includes/ot-functions-docs-page.php:667
1877
  msgid "Go to the <code>Appearance->Theme Options</code> page."
1878
  msgstr ""
1879
 
1880
- #: ../includes/ot-functions-docs-page.php:651
1881
- #: ../includes/ot-functions-docs-page.php:679
1882
  msgid ""
1883
  "Modify and save your theme options and the layout will be updated "
1884
  "automatically."
1885
  msgstr ""
1886
 
1887
- #: ../includes/ot-functions-docs-page.php:652
1888
- #: ../includes/ot-functions-docs-page.php:680
1889
  msgid ""
1890
  "Saving theme options data will update the currently active layout, so before "
1891
  "you start saving make sure you want to modify the current layout."
1892
  msgstr ""
1893
 
1894
- #: ../includes/ot-functions-docs-page.php:653
1895
  msgid ""
1896
  "If you want to edit a new layout, first create it then save your theme "
1897
  "options."
1898
  msgstr ""
1899
 
1900
- #: ../includes/ot-functions-docs-page.php:656
1901
  msgid "End-Users Mode"
1902
  msgstr ""
1903
 
1904
- #: ../includes/ot-functions-docs-page.php:661
1905
  msgid ""
1906
  "Enter a name for your layout in the text field and hit \"New Layout\", "
1907
  "you've created your first layout."
1908
  msgstr ""
1909
 
1910
- #: ../includes/ot-functions-docs-page.php:668
1911
  msgid ""
1912
  "Choose a layout from the select list and click the \"Activate Layout\" "
1913
  "button."
1914
  msgstr ""
1915
 
1916
- #: ../includes/ot-functions-docs-page.php:673
1917
  msgid "End-Users mode does not allow deleting layouts."
1918
  msgstr ""
1919
 
1920
- #: ../includes/ot-functions-docs-page.php:678
1921
  msgid "Go to the <code>Appearance->Theme Options</code> tab."
1922
  msgstr ""
1923
 
1924
- #: ../includes/ot-functions-docs-page.php:709
1925
- #: ../includes/ot-functions-docs-page.php:791
1926
  msgid "How-to-guide"
1927
  msgstr ""
1928
 
1929
- #: ../includes/ot-functions-docs-page.php:711
1930
  msgid ""
1931
  "There are a few simple steps you need to take in order to use OptionTree's "
1932
  "built in Meta Box API. In the code below I'll show you a basic demo of how "
@@ -1937,7 +1856,7 @@ msgid ""
1937
  "can reference."
1938
  msgstr ""
1939
 
1940
- #: ../includes/ot-functions-docs-page.php:713
1941
  msgid ""
1942
  "It's important to note that Meta Boxes do not support WYSIWYG editors at "
1943
  "this time and if you set one of your options to Textarea it will "
@@ -1945,36 +1864,36 @@ msgid ""
1945
  "WordPress released this statement regarding the wp_editor() function:"
1946
  msgstr ""
1947
 
1948
- #: ../includes/ot-functions-docs-page.php:715
1949
  msgid ""
1950
  "Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
1951
  "What this means in practical terms, is that you cannot put it in meta-boxes "
1952
  "that can be dragged and placed elsewhere on the page."
1953
  msgstr ""
1954
 
1955
- #: ../includes/ot-functions-docs-page.php:717
1956
  msgid "Create and include your custom meta boxes file."
1957
  msgstr ""
1958
 
1959
- #: ../includes/ot-functions-docs-page.php:719
1960
  msgid ""
1961
  "Create a file and name it anything you want, maybe <code>meta-boxes.php</"
1962
  "code>."
1963
  msgstr ""
1964
 
1965
- #: ../includes/ot-functions-docs-page.php:720
1966
  msgid ""
1967
  "As well, you'll probably want to create a directory named <code>includes</"
1968
  "code> to put your <code>meta-boxes.php</code> into which will help keep you "
1969
  "file structure nice and tidy."
1970
  msgstr ""
1971
 
1972
- #: ../includes/ot-functions-docs-page.php:721
1973
- #: ../includes/ot-functions-docs-page.php:821
1974
  msgid "Add the following code to your <code>functions.php</code>."
1975
  msgstr ""
1976
 
1977
- #: ../includes/ot-functions-docs-page.php:731
1978
  msgid ""
1979
  "Add a variation of the following code to your <code>meta-boxes.php</code>. "
1980
  "You'll obviously need to fill it in with all your custom array values. It's "
@@ -1983,7 +1902,7 @@ msgid ""
1983
  "before OptionTree was loaded the sky would fall on your head."
1984
  msgstr ""
1985
 
1986
- #: ../includes/ot-functions-docs-page.php:793
1987
  msgid ""
1988
  "There are a few simple steps you need to take in order to use OptionTree as "
1989
  "a theme included module. In the code below I'll show you a basic demo of how "
@@ -1994,28 +1913,28 @@ msgid ""
1994
  "contains a file named <code>demo-theme-options.php</code> you can reference."
1995
  msgstr ""
1996
 
1997
- #: ../includes/ot-functions-docs-page.php:795
1998
  msgid "Step 1: Include the plugin & turn on theme mode."
1999
  msgstr ""
2000
 
2001
- #: ../includes/ot-functions-docs-page.php:797
2002
  #, php-format
2003
  msgid "Download the latest version of %s and unarchive the %s directory."
2004
  msgstr ""
2005
 
2006
- #: ../includes/ot-functions-docs-page.php:798
2007
  #, php-format
2008
  msgid ""
2009
  "Put the %s directory in the root of your theme. For example, the server path "
2010
  "would be %s."
2011
  msgstr ""
2012
 
2013
- #: ../includes/ot-functions-docs-page.php:799
2014
  #, php-format
2015
  msgid "Add the following code to the beginning of your %s."
2016
  msgstr ""
2017
 
2018
- #: ../includes/ot-functions-docs-page.php:813
2019
  #, php-format
2020
  msgid ""
2021
  "For a list of all the OptionTree UI display filters refer to the %s file "
@@ -2023,38 +1942,38 @@ msgid ""
2023
  "for developing themes with Theme Mode."
2024
  msgstr ""
2025
 
2026
- #: ../includes/ot-functions-docs-page.php:815
2027
  msgid ""
2028
  "You now have OptionTree built into your theme and anytime an update is "
2029
  "available replace the old version with the new one."
2030
  msgstr ""
2031
 
2032
- #: ../includes/ot-functions-docs-page.php:817
2033
  msgid "Step 2: Create Theme Options without using the UI Builder."
2034
  msgstr ""
2035
 
2036
- #: ../includes/ot-functions-docs-page.php:819
2037
  msgid ""
2038
  "Create a file and name it anything you want, maybe <code>theme-options.php</"
2039
  "code>, or use the built in file export to create it for you. Remember, you "
2040
  "should always check the file for errors before including it in your theme."
2041
  msgstr ""
2042
 
2043
- #: ../includes/ot-functions-docs-page.php:820
2044
  msgid ""
2045
  "As well, you'll probably want to create a directory named <code>includes</"
2046
  "code> to put your <code>theme-options.php</code> into which will help keep "
2047
  "you file structure nice and tidy."
2048
  msgstr ""
2049
 
2050
- #: ../includes/ot-functions-docs-page.php:831
2051
  msgid ""
2052
  "Add a variation of the following code to your <code>theme-options.php</"
2053
  "code>. You'll obviously need to fill it in with all your custom array values "
2054
  "for contextual help (optional), sections (required), and settings (required)."
2055
  msgstr ""
2056
 
2057
- #: ../includes/ot-functions-docs-page.php:834
2058
  msgid ""
2059
  "The code below is a boilerplate to get your started. For a full list of the "
2060
  "available option types click the \"Option Types\" tab above. Also a quick "
@@ -2090,139 +2009,230 @@ msgid "background-image"
2090
  msgstr ""
2091
 
2092
  #: ../includes/ot-functions-option-types.php:241
2093
- #: ../includes/ot-functions-option-types.php:2437
2094
  msgid "Add Media"
2095
  msgstr ""
2096
 
2097
- #: ../includes/ot-functions-option-types.php:315
2098
- #: ../includes/ot-functions-option-types.php:369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2099
  msgid "No Categories Found"
2100
  msgstr ""
2101
 
2102
- #: ../includes/ot-functions-option-types.php:364
2103
- #: ../includes/ot-functions-option-types.php:625
2104
- #: ../includes/ot-functions-option-types.php:1167
2105
- #: ../includes/ot-functions-option-types.php:1278
2106
- #: ../includes/ot-functions-option-types.php:1881
2107
- #: ../includes/ot-functions-option-types.php:1996
2108
  msgid "Choose One"
2109
  msgstr ""
2110
 
2111
- #: ../includes/ot-functions-option-types.php:573
2112
- #: ../includes/ot-functions-option-types.php:631
2113
- #: ../includes/ot-functions-option-types.php:1229
2114
- #: ../includes/ot-functions-option-types.php:1284
2115
  msgid "No Posts Found"
2116
  msgstr ""
2117
 
2118
- #: ../includes/ot-functions-option-types.php:892
2119
- #: ../includes/ot-functions-option-types.php:1583
2120
- #: ../includes/ot-functions-option-types.php:1748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2121
  msgid "Add New"
2122
  msgstr ""
2123
 
2124
- #: ../includes/ot-functions-option-types.php:895
2125
- #: ../includes/ot-functions-option-types.php:1586
2126
- #: ../includes/ot-functions-option-types.php:1751
2127
  msgid "You can re-order with drag & drop, the order will update after saving."
2128
  msgstr ""
2129
 
2130
- #: ../includes/ot-functions-option-types.php:1046
2131
  msgid "On"
2132
  msgstr ""
2133
 
2134
- #: ../includes/ot-functions-option-types.php:1050
2135
  msgid "Off"
2136
  msgstr ""
2137
 
2138
- #: ../includes/ot-functions-option-types.php:1118
2139
- #: ../includes/ot-functions-option-types.php:1173
2140
  msgid "No Pages Found"
2141
  msgstr ""
2142
 
2143
- #: ../includes/ot-functions-option-types.php:1506
2144
  msgid "Choose Sidebar"
2145
  msgstr ""
2146
 
2147
- #: ../includes/ot-functions-option-types.php:1511
2148
  msgid "No Sidebars"
2149
  msgstr ""
2150
 
2151
- #: ../includes/ot-functions-option-types.php:1619
2152
  msgid "Facebook"
2153
  msgstr ""
2154
 
2155
- #: ../includes/ot-functions-option-types.php:1624
2156
  msgid "Twitter"
2157
  msgstr ""
2158
 
2159
- #: ../includes/ot-functions-option-types.php:1629
2160
  msgid "Google+"
2161
  msgstr ""
2162
 
2163
- #: ../includes/ot-functions-option-types.php:1634
2164
  msgid "LinkedIn"
2165
  msgstr ""
2166
 
2167
- #: ../includes/ot-functions-option-types.php:1639
2168
  msgid "Pinterest"
2169
  msgstr ""
2170
 
2171
- #: ../includes/ot-functions-option-types.php:1644
2172
  msgid "Youtube"
2173
  msgstr ""
2174
 
2175
- #: ../includes/ot-functions-option-types.php:1649
2176
  msgid "Dribbble"
2177
  msgstr ""
2178
 
2179
- #: ../includes/ot-functions-option-types.php:1654
2180
  msgid "Github"
2181
  msgstr ""
2182
 
2183
- #: ../includes/ot-functions-option-types.php:1659
2184
  msgid "Forrst"
2185
  msgstr ""
2186
 
2187
- #: ../includes/ot-functions-option-types.php:1664
2188
  msgid "Digg"
2189
  msgstr ""
2190
 
2191
- #: ../includes/ot-functions-option-types.php:1669
2192
  msgid "Delicious"
2193
  msgstr ""
2194
 
2195
- #: ../includes/ot-functions-option-types.php:1674
2196
  msgid "Tumblr"
2197
  msgstr ""
2198
 
2199
- #: ../includes/ot-functions-option-types.php:1679
2200
  msgid "Skype"
2201
  msgstr ""
2202
 
2203
- #: ../includes/ot-functions-option-types.php:1684
2204
  msgid "SoundCloud"
2205
  msgstr ""
2206
 
2207
- #: ../includes/ot-functions-option-types.php:1689
2208
  msgid "Vimeo"
2209
  msgstr ""
2210
 
2211
- #: ../includes/ot-functions-option-types.php:1694
2212
  msgid "Flickr"
2213
  msgstr ""
2214
 
2215
- #: ../includes/ot-functions-option-types.php:1699
2216
  msgid "VK.com"
2217
  msgstr ""
2218
 
2219
- #: ../includes/ot-functions-option-types.php:1832
2220
- #: ../includes/ot-functions-option-types.php:1886
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2221
  msgid "No Tags Found"
2222
  msgstr ""
2223
 
2224
- #: ../includes/ot-functions-option-types.php:1944
2225
- #: ../includes/ot-functions-option-types.php:2001
2226
  msgid "No Taxonomies Found"
2227
  msgstr ""
2228
 
@@ -2438,6 +2448,13 @@ msgstr ""
2438
  msgid "Save Layouts"
2439
  msgstr ""
2440
 
2441
- #: ../includes/ot-settings-api.php:355
2442
  msgid "Reset Options"
2443
  msgstr ""
 
 
 
 
 
 
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: OptionTree\n"
4
+ "POT-Creation-Date: 2015-02-09 08:02-0800\n"
5
+ "PO-Revision-Date: 2015-02-09 08:03-0800\n"
6
  "Last-Translator: Derek Herman <derek@valendesigns.com>\n"
7
  "Language-Team: Valen Designs\n"
8
+ "Language: en\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 1.7.4\n"
13
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
14
  "_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
15
  "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
16
  "X-Poedit-Basepath: .\n"
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
  "X-Poedit-SearchPath-0: ..\n"
19
+ "X-Poedit-SearchPathExcluded-0: ../.git\n"
20
+ "X-Poedit-SearchPathExcluded-1: ../composer.json\n"
21
+ "X-Poedit-SearchPathExcluded-2: ../assets\n"
22
 
23
+ #: ../includes/ot-cleanup-api.php:84 ../includes/ot-cleanup-api.php:101
24
+ #: ../includes/ot-cleanup-api.php:130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  msgid "OptionTree Cleanup"
26
  msgstr ""
27
 
28
+ #: ../includes/ot-cleanup-api.php:101
29
  #, php-format
30
  msgid ""
31
  "OptionTree has outdated data that should be removed. Please go to %s for "
32
  "more information."
33
  msgstr ""
34
 
35
+ #: ../includes/ot-cleanup-api.php:136
36
  msgid "Multiple Media Posts"
37
  msgstr ""
38
 
39
+ #: ../includes/ot-cleanup-api.php:138
40
  #, php-format
41
  msgid ""
42
  "There are currently %s OptionTree media posts in your database. At some "
47
  "posts and get your database cleaned up."
48
  msgstr ""
49
 
50
+ #: ../includes/ot-cleanup-api.php:140
51
  #, php-format
52
  msgid ""
53
  "By clicking the button below, OptionTree will delete %s records and "
56
  "updated to the correct media post."
57
  msgstr ""
58
 
59
+ #: ../includes/ot-cleanup-api.php:142
60
  msgid ""
61
  "This could take a while to fully process depending on how many records you "
62
  "have in your database, so please be patient and wait for the script to "
63
  "finish."
64
  msgstr ""
65
 
66
+ #: ../includes/ot-cleanup-api.php:144
67
  #, php-format
68
  msgid ""
69
  "%s Your server is running in safe mode. Which means this page will "
71
  "using %s if your server is having trouble processing that many at one time."
72
  msgstr ""
73
 
74
+ #: ../includes/ot-cleanup-api.php:146
75
  msgid "Consolidate Posts"
76
  msgstr ""
77
 
78
+ #: ../includes/ot-cleanup-api.php:174
79
  msgid "Reloading..."
80
  msgstr ""
81
 
82
+ #: ../includes/ot-cleanup-api.php:210
83
  msgid "Clean up script has completed, the page will now reload..."
84
  msgstr ""
85
 
86
+ #: ../includes/ot-cleanup-api.php:230
87
  msgid "Outdated Table"
88
  msgstr ""
89
 
90
+ #: ../includes/ot-cleanup-api.php:232
91
  #, php-format
92
  msgid ""
93
  "If you have upgraded from an old 1.x version of OptionTree at some point, "
96
  "Click the button below."
97
  msgstr ""
98
 
99
+ #: ../includes/ot-cleanup-api.php:234
100
  msgid "Drop Table"
101
  msgstr ""
102
 
103
+ #: ../includes/ot-cleanup-api.php:238
104
  #, php-format
105
  msgid "Deleting the outdated and unused %s table..."
106
  msgstr ""
107
 
108
+ #: ../includes/ot-cleanup-api.php:244
109
  #, php-format
110
  msgid "The %s table has been successfully deleted. The page will now reload..."
111
  msgstr ""
112
 
113
+ #: ../includes/ot-cleanup-api.php:256
114
  #, php-format
115
  msgid "Something went wrong. The %s table was not deleted."
116
  msgstr ""
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  #: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
119
  #: ../includes/ot-functions-admin.php:169
120
+ #: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:361
121
  msgid "Theme Options"
122
  msgstr ""
123
 
147
 
148
  #: ../includes/ot-functions-admin.php:109
149
  #: ../includes/ot-functions-admin.php:110
150
+ #: ../includes/ot-functions-docs-page.php:821
151
  msgid "OptionTree"
152
  msgstr ""
153
 
207
  msgid "Creating Options"
208
  msgstr ""
209
 
210
+ #: ../includes/ot-functions-admin.php:231
211
+ msgid "Option Types"
212
+ msgstr ""
213
+
214
  #: ../includes/ot-functions-admin.php:235
215
  msgid "Function References"
216
  msgstr ""
258
  msgid "What's a layout anyhow?"
259
  msgstr ""
260
 
261
+ #: ../includes/ot-functions-admin.php:502
262
+ #: ../includes/ot-functions-admin.php:614
263
+ #: ../includes/ot-functions-admin.php:683
264
+ #, php-format
265
+ msgid "The %s input field for %s only allows numeric values."
266
+ msgstr ""
267
+
268
+ #: ../includes/ot-functions-admin.php:512
269
  msgid "The Colorpicker only allows valid hexadecimal values."
270
  msgstr ""
271
 
272
+ #: ../includes/ot-functions-admin.php:566
273
+ #, php-format
274
+ msgid "The %s Colorpicker only allows valid hexadecimal values."
275
+ msgstr ""
276
+
277
+ #: ../includes/ot-functions-admin.php:849
278
+ #: ../includes/ot-functions-docs-page.php:398
279
+ #: ../includes/ot-functions-settings-page.php:170 ../ot-loader.php:782
280
+ msgid "Send to OptionTree"
281
+ msgstr ""
282
+
283
+ #: ../includes/ot-functions-admin.php:850
284
  #: ../includes/ot-functions-option-types.php:257
285
+ #: ../includes/ot-functions-option-types.php:3243
286
  msgid "Remove Media"
287
  msgstr ""
288
 
289
+ #: ../includes/ot-functions-admin.php:851
290
  msgid "Are you sure you want to reset back to the defaults?"
291
  msgstr ""
292
 
293
+ #: ../includes/ot-functions-admin.php:852
294
  msgid "You can't remove this! But you can edit the values."
295
  msgstr ""
296
 
297
+ #: ../includes/ot-functions-admin.php:853
298
  msgid "Are you sure you want to remove this?"
299
  msgstr ""
300
 
301
+ #: ../includes/ot-functions-admin.php:854
302
  msgid "Are you sure you want to activate this layout?"
303
  msgstr ""
304
 
305
+ #: ../includes/ot-functions-admin.php:855
306
  msgid "Sorry, you can't have settings three levels deep."
307
  msgstr ""
308
 
309
+ #: ../includes/ot-functions-admin.php:856
310
+ #: ../includes/ot-functions-option-types.php:1208
311
  msgid "Delete Gallery"
312
  msgstr ""
313
 
314
+ #: ../includes/ot-functions-admin.php:857
315
+ #: ../includes/ot-functions-option-types.php:1209
316
  msgid "Edit Gallery"
317
  msgstr ""
318
 
319
+ #: ../includes/ot-functions-admin.php:858
320
+ #: ../includes/ot-functions-option-types.php:1216
321
  msgid "Create Gallery"
322
  msgstr ""
323
 
324
+ #: ../includes/ot-functions-admin.php:859
325
  msgid "Are you sure you want to delete this Gallery?"
326
  msgstr ""
327
 
328
+ #: ../includes/ot-functions-admin.php:860
329
  msgid "Today"
330
  msgstr ""
331
 
332
+ #: ../includes/ot-functions-admin.php:861
333
  msgid "Now"
334
  msgstr ""
335
 
336
+ #: ../includes/ot-functions-admin.php:862
337
  msgid "Close"
338
  msgstr ""
339
 
340
+ #: ../includes/ot-functions-admin.php:863
341
  msgid "Featured Image"
342
  msgstr ""
343
 
344
+ #: ../includes/ot-functions-admin.php:864
345
+ #: ../includes/ot-functions-admin.php:3247
346
+ #: ../includes/ot-functions-admin.php:3308
347
  msgid "Image"
348
  msgstr ""
349
 
350
+ #: ../includes/ot-functions-admin.php:932
351
  msgid "Option Tree"
352
  msgstr ""
353
 
354
+ #: ../includes/ot-functions-admin.php:1069
355
  msgid "General"
356
  msgstr ""
357
 
358
+ #: ../includes/ot-functions-admin.php:1075
359
  msgid "Sample Text Field Label"
360
  msgstr ""
361
 
362
+ #: ../includes/ot-functions-admin.php:1076
363
  msgid "Description for the sample text field."
364
  msgstr ""
365
 
366
+ #: ../includes/ot-functions-admin.php:2318
367
  msgid "Settings updated."
368
  msgstr ""
369
 
370
+ #: ../includes/ot-functions-admin.php:2322
371
  msgid "Settings could not be saved."
372
  msgstr ""
373
 
374
+ #: ../includes/ot-functions-admin.php:2330
375
  msgid "Settings Imported."
376
  msgstr ""
377
 
378
+ #: ../includes/ot-functions-admin.php:2334
379
  msgid "Settings could not be imported."
380
  msgstr ""
381
 
382
+ #: ../includes/ot-functions-admin.php:2341
383
  msgid "Data Imported."
384
  msgstr ""
385
 
386
+ #: ../includes/ot-functions-admin.php:2345
387
  msgid "Data could not be imported."
388
  msgstr ""
389
 
390
+ #: ../includes/ot-functions-admin.php:2353
391
  msgid "Layouts Imported."
392
  msgstr ""
393
 
394
+ #: ../includes/ot-functions-admin.php:2357
395
+ msgid "Layouts could not be imported."
396
+ msgstr ""
397
+
398
+ #: ../includes/ot-functions-admin.php:2365
399
+ msgid "Layouts Updated."
400
+ msgstr ""
401
+
402
+ #: ../includes/ot-functions-admin.php:2369
403
+ msgid "Layouts could not be updated."
404
+ msgstr ""
405
+
406
+ #: ../includes/ot-functions-admin.php:2373
407
+ msgid "Layouts have been deleted."
408
+ msgstr ""
409
+
410
+ #: ../includes/ot-functions-admin.php:2379
411
+ msgid "Layout activated."
412
+ msgstr ""
413
+
414
+ #: ../includes/ot-functions-admin.php:2418
415
+ #: ../includes/ot-functions-docs-page.php:110
416
+ msgid "Background"
417
+ msgstr ""
418
+
419
+ #: ../includes/ot-functions-admin.php:2419
420
+ #: ../includes/ot-functions-docs-page.php:113
421
+ msgid "Border"
422
+ msgstr ""
423
+
424
+ #: ../includes/ot-functions-admin.php:2420
425
+ #: ../includes/ot-functions-docs-page.php:116
426
+ msgid "Box Shadow"
427
+ msgstr ""
428
+
429
+ #: ../includes/ot-functions-admin.php:2421
430
+ #: ../includes/ot-functions-docs-page.php:119
431
+ msgid "Category Checkbox"
432
+ msgstr ""
433
+
434
+ #: ../includes/ot-functions-admin.php:2422
435
+ #: ../includes/ot-functions-docs-page.php:122
436
+ msgid "Category Select"
437
+ msgstr ""
438
+
439
+ #: ../includes/ot-functions-admin.php:2423
440
+ #: ../includes/ot-functions-docs-page.php:125
441
+ msgid "Checkbox"
442
+ msgstr ""
443
+
444
+ #: ../includes/ot-functions-admin.php:2424
445
+ #: ../includes/ot-functions-docs-page.php:128
446
+ msgid "Colorpicker"
447
+ msgstr ""
448
+
449
+ #: ../includes/ot-functions-admin.php:2425
450
+ #: ../includes/ot-functions-docs-page.php:131
451
+ msgid "Colorpicker Opacity"
452
+ msgstr ""
453
+
454
+ #: ../includes/ot-functions-admin.php:2426
455
+ #: ../includes/ot-functions-docs-page.php:134
456
+ msgid "CSS"
457
+ msgstr ""
458
+
459
+ #: ../includes/ot-functions-admin.php:2427
460
+ #: ../includes/ot-functions-docs-page.php:153
461
+ msgid "Custom Post Type Checkbox"
462
+ msgstr ""
463
+
464
+ #: ../includes/ot-functions-admin.php:2428
465
+ #: ../includes/ot-functions-docs-page.php:156
466
+ msgid "Custom Post Type Select"
467
+ msgstr ""
468
+
469
+ #: ../includes/ot-functions-admin.php:2429
470
+ #: ../includes/ot-functions-docs-page.php:159
471
+ msgid "Date Picker"
472
+ msgstr ""
473
+
474
+ #: ../includes/ot-functions-admin.php:2430
475
+ #: ../includes/ot-functions-docs-page.php:162
476
+ msgid "Date Time Picker"
477
+ msgstr ""
478
+
479
+ #: ../includes/ot-functions-admin.php:2431
480
+ #: ../includes/ot-functions-docs-page.php:165
481
+ msgid "Dimension"
482
+ msgstr ""
483
+
484
+ #: ../includes/ot-functions-admin.php:2432
485
+ #: ../includes/ot-functions-admin.php:5406
486
+ #: ../includes/ot-functions-docs-page.php:168
487
+ msgid "Gallery"
488
+ msgstr ""
489
+
490
+ #: ../includes/ot-functions-admin.php:2433
491
+ #: ../includes/ot-functions-docs-page.php:171
492
+ msgid "Google Fonts"
493
+ msgstr ""
494
+
495
+ #: ../includes/ot-functions-admin.php:2434
496
+ #: ../includes/ot-functions-docs-page.php:174
497
+ msgid "JavaScript"
498
+ msgstr ""
499
+
500
+ #: ../includes/ot-functions-admin.php:2435
501
+ #: ../includes/ot-functions-docs-page.php:177
502
+ msgid "Link Color"
503
+ msgstr ""
504
+
505
+ #: ../includes/ot-functions-admin.php:2436
506
+ #: ../includes/ot-functions-docs-page.php:180
507
+ msgid "List Item"
508
+ msgstr ""
509
+
510
+ #: ../includes/ot-functions-admin.php:2437
511
+ #: ../includes/ot-functions-docs-page.php:183
512
+ msgid "Measurement"
513
+ msgstr ""
514
+
515
+ #: ../includes/ot-functions-admin.php:2438
516
+ #: ../includes/ot-functions-docs-page.php:214
517
+ msgid "Numeric Slider"
518
+ msgstr ""
519
+
520
+ #: ../includes/ot-functions-admin.php:2439
521
+ #: ../includes/ot-functions-docs-page.php:217
522
+ msgid "On/Off"
523
+ msgstr ""
524
+
525
+ #: ../includes/ot-functions-admin.php:2440
526
+ #: ../includes/ot-functions-docs-page.php:220
527
+ msgid "Page Checkbox"
528
+ msgstr ""
529
+
530
+ #: ../includes/ot-functions-admin.php:2441
531
+ #: ../includes/ot-functions-docs-page.php:223
532
+ msgid "Page Select"
533
+ msgstr ""
534
+
535
+ #: ../includes/ot-functions-admin.php:2442
536
+ #: ../includes/ot-functions-docs-page.php:226
537
+ msgid "Post Checkbox"
538
+ msgstr ""
539
+
540
+ #: ../includes/ot-functions-admin.php:2443
541
+ #: ../includes/ot-functions-docs-page.php:229
542
+ msgid "Post Select"
543
+ msgstr ""
544
+
545
+ #: ../includes/ot-functions-admin.php:2444
546
+ #: ../includes/ot-functions-docs-page.php:232
547
+ msgid "Radio"
548
+ msgstr ""
549
+
550
+ #: ../includes/ot-functions-admin.php:2445
551
+ #: ../includes/ot-functions-docs-page.php:235
552
+ msgid "Radio Image"
553
+ msgstr ""
554
+
555
+ #: ../includes/ot-functions-admin.php:2446
556
+ #: ../includes/ot-functions-docs-page.php:262
557
+ msgid "Select"
558
+ msgstr ""
559
+
560
+ #: ../includes/ot-functions-admin.php:2447
561
+ #: ../includes/ot-functions-docs-page.php:265
562
+ msgid "Sidebar Select"
563
+ msgstr ""
564
+
565
+ #: ../includes/ot-functions-admin.php:2448
566
+ #: ../includes/ot-functions-docs-page.php:269
567
+ msgid "Slider"
568
+ msgstr ""
569
+
570
+ #: ../includes/ot-functions-admin.php:2449
571
+ #: ../includes/ot-functions-docs-page.php:272
572
+ msgid "Social Links"
573
+ msgstr ""
574
+
575
+ #: ../includes/ot-functions-admin.php:2450
576
+ #: ../includes/ot-functions-docs-page.php:275
577
+ msgid "Spacing"
578
+ msgstr ""
579
+
580
+ #: ../includes/ot-functions-admin.php:2451
581
+ #: ../includes/ot-functions-docs-page.php:278
582
+ msgid "Tab"
583
+ msgstr ""
584
+
585
+ #: ../includes/ot-functions-admin.php:2452
586
+ #: ../includes/ot-functions-docs-page.php:281
587
+ msgid "Tag Checkbox"
588
+ msgstr ""
589
+
590
+ #: ../includes/ot-functions-admin.php:2453
591
+ #: ../includes/ot-functions-docs-page.php:284
592
+ msgid "Tag Select"
593
+ msgstr ""
594
+
595
+ #: ../includes/ot-functions-admin.php:2454
596
+ #: ../includes/ot-functions-docs-page.php:287
597
+ msgid "Taxonomy Checkbox"
598
+ msgstr ""
599
+
600
+ #: ../includes/ot-functions-admin.php:2455
601
+ #: ../includes/ot-functions-docs-page.php:290
602
+ msgid "Taxonomy Select"
603
  msgstr ""
604
 
605
+ #: ../includes/ot-functions-admin.php:2456
606
+ #: ../includes/ot-functions-docs-page.php:293
607
+ msgid "Text"
608
  msgstr ""
609
 
610
+ #: ../includes/ot-functions-admin.php:2457
611
+ #: ../includes/ot-functions-docs-page.php:296
612
+ msgid "Textarea"
613
  msgstr ""
614
 
615
+ #: ../includes/ot-functions-admin.php:2458
616
+ #: ../includes/ot-functions-docs-page.php:355
617
+ msgid "Textarea Simple"
618
  msgstr ""
619
 
620
+ #: ../includes/ot-functions-admin.php:2459
621
+ #: ../includes/ot-functions-docs-page.php:371
622
+ msgid "Textblock"
623
  msgstr ""
624
 
625
+ #: ../includes/ot-functions-admin.php:2460
626
+ #: ../includes/ot-functions-docs-page.php:374
627
+ msgid "Textblock Titled"
628
  msgstr ""
629
 
630
+ #: ../includes/ot-functions-admin.php:2461
631
+ #: ../includes/ot-functions-docs-page.php:377
632
+ msgid "Typography"
633
  msgstr ""
634
 
635
+ #: ../includes/ot-functions-admin.php:2462
636
+ #: ../includes/ot-functions-docs-page.php:397
637
+ msgid "Upload"
638
  msgstr ""
639
 
640
+ #: ../includes/ot-functions-admin.php:3192
641
  msgid "Left Sidebar"
642
  msgstr ""
643
 
644
+ #: ../includes/ot-functions-admin.php:3197
645
  msgid "Right Sidebar"
646
  msgstr ""
647
 
648
+ #: ../includes/ot-functions-admin.php:3202
649
  msgid "Full Width (no sidebar)"
650
  msgstr ""
651
 
652
+ #: ../includes/ot-functions-admin.php:3207
653
  msgid "Dual Sidebar"
654
  msgstr ""
655
 
656
+ #: ../includes/ot-functions-admin.php:3212
657
  msgid "Left Dual Sidebar"
658
  msgstr ""
659
 
660
+ #: ../includes/ot-functions-admin.php:3217
661
  msgid "Right Dual Sidebar"
662
  msgstr ""
663
 
664
+ #: ../includes/ot-functions-admin.php:3258
665
+ #: ../includes/ot-functions-admin.php:3314
666
+ #: ../includes/ot-functions-admin.php:5446
667
  msgid "Link"
668
  msgstr ""
669
 
670
+ #: ../includes/ot-functions-admin.php:3269
671
+ #: ../includes/ot-functions-admin.php:3320
672
  #: ../includes/ot-functions-docs-page.php:43
673
+ #: ../includes/ot-functions-docs-page.php:428
674
+ #: ../includes/ot-functions-docs-page.php:478
675
  msgid "Description"
676
  msgstr ""
677
 
678
+ #: ../includes/ot-functions-admin.php:3384
679
  msgid "Name"
680
  msgstr ""
681
 
682
+ #: ../includes/ot-functions-admin.php:3385
683
  msgid "Enter the name of the social website."
684
  msgstr ""
685
 
686
+ #: ../includes/ot-functions-admin.php:3393
687
  msgid "Enter the text shown in the title attribute of the link."
688
  msgstr ""
689
 
690
+ #: ../includes/ot-functions-admin.php:3399
691
  #, php-format
692
  msgid ""
693
  "Enter a link to the profile or page on the social website. Remember to add "
694
  "the %s part to the front of the link."
695
  msgstr ""
696
 
697
+ #: ../includes/ot-functions-admin.php:3967
698
  msgid "edit"
699
  msgstr ""
700
 
701
+ #: ../includes/ot-functions-admin.php:3968
702
+ #: ../includes/ot-functions-admin.php:4036
703
+ #: ../includes/ot-functions-admin.php:4037
704
+ #: ../includes/ot-functions-admin.php:4199
705
+ #: ../includes/ot-functions-admin.php:4200
706
+ #: ../includes/ot-functions-admin.php:4265
707
+ #: ../includes/ot-functions-admin.php:4266
708
+ #: ../includes/ot-functions-admin.php:4393
709
+ #: ../includes/ot-functions-admin.php:4394
710
+ #: ../includes/ot-functions-admin.php:4546
711
+ #: ../includes/ot-functions-admin.php:4547
712
  msgid "Edit"
713
  msgstr ""
714
 
715
+ #: ../includes/ot-functions-admin.php:3970
716
+ #: ../includes/ot-functions-admin.php:3971
717
+ #: ../includes/ot-functions-admin.php:4039
718
+ #: ../includes/ot-functions-admin.php:4040
719
+ #: ../includes/ot-functions-admin.php:4202
720
+ #: ../includes/ot-functions-admin.php:4203
721
+ #: ../includes/ot-functions-admin.php:4268
722
+ #: ../includes/ot-functions-admin.php:4269
723
+ #: ../includes/ot-functions-admin.php:4327
724
+ #: ../includes/ot-functions-admin.php:4328
725
+ #: ../includes/ot-functions-admin.php:4396
726
+ #: ../includes/ot-functions-admin.php:4397
727
+ #: ../includes/ot-functions-admin.php:4549
728
+ #: ../includes/ot-functions-admin.php:4550
729
  msgid "Delete"
730
  msgstr ""
731
 
732
+ #: ../includes/ot-functions-admin.php:3977
733
  msgid ""
734
  "<strong>Section Title</strong>: Displayed as a menu item on the Theme "
735
  "Options page."
736
  msgstr ""
737
 
738
+ #: ../includes/ot-functions-admin.php:3985
739
  msgid ""
740
  "<strong>Section ID</strong>: A unique lower case alphanumeric string, "
741
  "underscores allowed."
742
  msgstr ""
743
 
744
+ #: ../includes/ot-functions-admin.php:4046
745
  msgid ""
746
  "<strong>Label</strong>: Displayed as the label of a form element on the "
747
  "Theme Options page."
748
  msgstr ""
749
 
750
+ #: ../includes/ot-functions-admin.php:4054
751
+ #: ../includes/ot-functions-admin.php:4283
752
  msgid ""
753
  "<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
754
  "allowed."
755
  msgstr ""
756
 
757
+ #: ../includes/ot-functions-admin.php:4062
758
  msgid ""
759
  "<strong>Type</strong>: Choose one of the available option types from the "
760
  "dropdown."
761
  msgstr ""
762
 
763
+ #: ../includes/ot-functions-admin.php:4073
764
  msgid ""
765
  "<strong>Description</strong>: Enter a detailed description for the users to "
766
  "read on the Theme Options page, HTML is allowed. This is also where you "
767
  "enter content for both the Textblock & Textblock Titled option types."
768
  msgstr ""
769
 
770
+ #: ../includes/ot-functions-admin.php:4081
771
  msgid ""
772
  "<strong>Choices</strong>: This will only affect the following option types: "
773
  "Checkbox, Radio, Select & Select Image."
774
  msgstr ""
775
 
776
+ #: ../includes/ot-functions-admin.php:4086
777
  msgid "Add Choice"
778
  msgstr ""
779
 
780
+ #: ../includes/ot-functions-admin.php:4092
781
  msgid ""
782
  "<strong>Settings</strong>: This will only affect the List Item option type."
783
  msgstr ""
784
 
785
+ #: ../includes/ot-functions-admin.php:4097
786
  #: ../includes/ot-functions-settings-page.php:93
787
  msgid "Add Setting"
788
  msgstr ""
789
 
790
+ #: ../includes/ot-functions-admin.php:4103
791
  msgid ""
792
  "<strong>Standard</strong>: Setting the standard value for your option only "
793
  "works for some option types. Read the <code>OptionTree->Documentation</code> "
794
  "for more information on which ones."
795
  msgstr ""
796
 
797
+ #: ../includes/ot-functions-admin.php:4111
798
  msgid ""
799
  "<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
800
  "textarea. This will only affect the following option types: CSS, Textarea, & "
801
  "Textarea Simple."
802
  msgstr ""
803
 
804
+ #: ../includes/ot-functions-admin.php:4119
805
  msgid ""
806
  "<strong>Post Type</strong>: Add a comma separated list of post type like "
807
  "'post,page'. This will only affect the following option types: Custom Post "
808
  "Type Checkbox, & Custom Post Type Select."
809
  msgstr ""
810
 
811
+ #: ../includes/ot-functions-admin.php:4127
812
  msgid ""
813
  "<strong>Taxonomy</strong>: Add a comma separated list of any registered "
814
  "taxonomy like 'category,post_tag'. This will only affect the following "
815
  "option types: Taxonomy Checkbox, & Taxonomy Select."
816
  msgstr ""
817
 
818
+ #: ../includes/ot-functions-admin.php:4135
819
  msgid ""
820
  "<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
821
  "the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
824
  "type."
825
  msgstr ""
826
 
827
+ #: ../includes/ot-functions-admin.php:4143
828
  msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
829
  msgstr ""
830
 
831
+ #: ../includes/ot-functions-admin.php:4151
832
  #, php-format
833
  msgid ""
834
  "<strong>Condition</strong>: Add a comma separated list (no spaces) of "
837
  "placeholder for your condition, which can be in the form of %s."
838
  msgstr ""
839
 
840
+ #: ../includes/ot-functions-admin.php:4159
841
  msgid ""
842
  "<strong>Operator</strong>: Choose the logical operator to compute the result "
843
  "of the conditions."
844
  msgstr ""
845
 
846
+ #: ../includes/ot-functions-admin.php:4162
847
+ #: ../includes/ot-functions-docs-page.php:111
848
+ #: ../includes/ot-functions-docs-page.php:378
849
+ msgid "and"
850
+ msgstr ""
851
+
852
+ #: ../includes/ot-functions-admin.php:4163
853
  msgid "or"
854
  msgstr ""
855
 
856
+ #: ../includes/ot-functions-admin.php:4209
857
  #: ../includes/ot-functions-docs-page.php:29
858
  msgid "Label"
859
  msgstr ""
860
 
861
+ #: ../includes/ot-functions-admin.php:4219
862
  msgid "Value"
863
  msgstr ""
864
 
865
+ #: ../includes/ot-functions-admin.php:4229
866
  msgid "Image Source (Radio Image only)"
867
  msgstr ""
868
 
869
+ #: ../includes/ot-functions-admin.php:4275
870
  msgid ""
871
  "<strong>Title</strong>: Displayed as a contextual help menu item on the "
872
  "Theme Options page."
873
  msgstr ""
874
 
875
+ #: ../includes/ot-functions-admin.php:4291
876
  msgid ""
877
  "<strong>Content</strong>: Enter the HTML content about this contextual help "
878
  "item displayed on the Theme Option page for end users to read."
879
  msgstr ""
880
 
881
+ #: ../includes/ot-functions-admin.php:4322
882
  msgid "Layout"
883
  msgstr ""
884
 
885
+ #: ../includes/ot-functions-admin.php:4324
886
+ #: ../includes/ot-functions-admin.php:4325
887
  msgid "Activate"
888
  msgstr ""
889
 
890
+ #: ../includes/ot-functions-admin.php:4361 ../includes/ot-meta-box-api.php:223
891
+ #: ../includes/ot-settings-api.php:610
892
  msgid "Title"
893
  msgstr ""
894
 
895
+ #: ../includes/ot-functions-admin.php:4701
896
  msgid "New Layout"
897
  msgstr ""
898
 
899
+ #: ../includes/ot-functions-admin.php:5455
900
  msgid "Link URL"
901
  msgstr ""
902
 
903
+ #: ../includes/ot-functions-admin.php:5462
904
  msgid "Link Title"
905
  msgstr ""
906
 
907
+ #: ../includes/ot-functions-admin.php:5492
908
  msgid "Quote"
909
  msgstr ""
910
 
911
+ #: ../includes/ot-functions-admin.php:5501
912
  msgid "Source Name (ex. author, singer, actor)"
913
  msgstr ""
914
 
915
+ #: ../includes/ot-functions-admin.php:5508
916
  msgid "Source URL"
917
  msgstr ""
918
 
919
+ #: ../includes/ot-functions-admin.php:5515
920
  msgid "Source Title (ex. book, song, movie)"
921
  msgstr ""
922
 
923
+ #: ../includes/ot-functions-admin.php:5522
924
  msgid "Source Date"
925
  msgstr ""
926
 
927
+ #: ../includes/ot-functions-admin.php:5552
928
  msgid "Video"
929
  msgstr ""
930
 
931
+ #: ../includes/ot-functions-admin.php:5561
932
  #, php-format
933
  msgid ""
934
  "Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
936
  "built-in %2$s shortcode."
937
  msgstr ""
938
 
939
+ #: ../includes/ot-functions-admin.php:5561
940
+ #: ../includes/ot-functions-admin.php:5600
941
  msgid "Wordpress Codex"
942
  msgstr ""
943
 
944
+ #: ../includes/ot-functions-admin.php:5591
945
  msgid "Audio"
946
  msgstr ""
947
 
948
+ #: ../includes/ot-functions-admin.php:5600
949
  #, php-format
950
  msgid ""
951
  "Embed audio from services like SoundCloud and Rdio. You can find a list of "
1042
  "not seem to return results properly and is something I plan on looking into."
1043
  msgstr ""
1044
 
1045
+ #: ../includes/ot-functions-docs-page.php:67
1046
+ msgid "Taxonomy"
1047
+ msgstr ""
1048
+
1049
+ #: ../includes/ot-functions-docs-page.php:68
1050
+ msgid ""
1051
+ "Add a comma separated list of any registered taxonomy like <code>category,"
1052
+ "post_tag</code>. This will only affect the following option types: Taxonomy "
1053
+ "Checkbox, & Taxonomy Select."
1054
+ msgstr ""
1055
+
1056
+ #: ../includes/ot-functions-docs-page.php:70
1057
+ msgid "Min, Max, & Step"
1058
+ msgstr ""
1059
+
1060
+ #: ../includes/ot-functions-docs-page.php:71
1061
+ msgid ""
1062
+ "Add a comma separated list of options in the following format <code>0,100,1</"
1063
+ "code> (slide from <code>0-100</code> in intervals of <code>1</code>). The "
1064
+ "three values represent the minimum, maximum, and step options and will only "
1065
+ "affect the Numeric Slider option type."
1066
+ msgstr ""
1067
+
1068
+ #: ../includes/ot-functions-docs-page.php:73
1069
+ msgid "CSS Class"
1070
+ msgstr ""
1071
+
1072
+ #: ../includes/ot-functions-docs-page.php:74
1073
+ msgid "Add and optional class to any option type."
1074
+ msgstr ""
1075
+
1076
+ #: ../includes/ot-functions-docs-page.php:76
1077
+ msgid "Condition"
1078
+ msgstr ""
1079
+
1080
+ #: ../includes/ot-functions-docs-page.php:77
1081
+ #, php-format
1082
+ msgid ""
1083
+ "Add a comma separated list (no spaces) of conditions in which the field will "
1084
+ "be visible, leave this setting empty to always show the field. In these "
1085
+ "examples, %s is a placeholder for your condition, which can be in the form "
1086
+ "of %s."
1087
+ msgstr ""
1088
+
1089
+ #: ../includes/ot-functions-docs-page.php:79
1090
+ msgid "Operator"
1091
+ msgstr ""
1092
+
1093
+ #: ../includes/ot-functions-docs-page.php:80
1094
+ #, php-format
1095
+ msgid ""
1096
+ "Choose the logical operator to compute the result of the conditions. Your "
1097
+ "options are %s and %s."
1098
+ msgstr ""
1099
+
1100
+ #: ../includes/ot-functions-docs-page.php:111
1101
+ #, php-format
1102
+ msgid ""
1103
+ "The Background option type is for adding background styles to your theme "
1104
+ "either dynamically via the CSS option type below or manually with %s. The "
1105
+ "Background option type has filters that allow you to remove fields or change "
1106
+ "the defaults. For example, you can filter %s to remove unwanted fields from "
1107
+ "all Background options or an individual one. You can also filter %s. These "
1108
+ "filters allow you to fine tune the select lists for your specific needs."
1109
+ msgstr ""
1110
+
1111
+ #: ../includes/ot-functions-docs-page.php:114
1112
+ #, php-format
1113
+ msgid ""
1114
+ "The Border option type is used to set width, unit, style, and color values. "
1115
+ "The text input excepts a numerical value and the unit select lets you choose "
1116
+ "the unit of measurement to add to that value. Currently the default units "
1117
+ "are %s, %s, %s, and %s. However, you can change them with the %s filter. The "
1118
+ "style select lets you choose the border style. The default styles are %s, "
1119
+ "%s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s "
1120
+ "filter. The colorpicker saves a hexadecimal color code."
1121
+ msgstr ""
1122
+
1123
+ #: ../includes/ot-functions-docs-page.php:117
1124
+ #, php-format
1125
+ msgid ""
1126
+ "The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values."
1127
+ msgstr ""
1128
+
1129
+ #: ../includes/ot-functions-docs-page.php:120
1130
+ msgid ""
1131
+ "The Category Checkbox option type displays a list of category IDs. It allows "
1132
+ "the user to check multiple category IDs and will return that value as an "
1133
+ "array for use in a custom function or loop."
1134
+ msgstr ""
1135
+
1136
+ #: ../includes/ot-functions-docs-page.php:123
1137
+ msgid ""
1138
+ "The Category Select option type displays a list of category IDs. It allows "
1139
+ "the user to select only one category ID and will return that value for use "
1140
+ "in a custom function or loop."
1141
+ msgstr ""
1142
+
1143
+ #: ../includes/ot-functions-docs-page.php:126
1144
+ msgid ""
1145
+ "The Checkbox option type displays a group of choices. It allows the user to "
1146
+ "check multiple choices and will return that value as an array for use in a "
1147
+ "custom function or loop."
1148
+ msgstr ""
1149
+
1150
+ #: ../includes/ot-functions-docs-page.php:129
1151
+ msgid ""
1152
+ "The Colorpicker option type saves a hexadecimal color code for use in CSS. "
1153
+ "Use it to modify the color of something in your theme."
1154
+ msgstr ""
1155
+
1156
+ #: ../includes/ot-functions-docs-page.php:132
1157
+ #, php-format
1158
+ msgid ""
1159
+ "The Colorpicker Opacity option type saves a hexadecimal color code with an "
1160
+ "opacity value from %s to %s in increments of %s. Though the value is saved "
1161
+ "as hexadecimal, if used within the CSS option type the color and opacity "
1162
+ "values will be converted into a valid RGBA CSS value."
1163
+ msgstr ""
1164
+
1165
+ #: ../includes/ot-functions-docs-page.php:135
1166
+ #, php-format
1167
+ msgid ""
1168
+ "The CSS option type is a textarea that when used properly can add dynamic "
1169
+ "CSS to your theme from within OptionTree. Unfortunately, due server "
1170
+ "limitations you will need to create a file named %s at the root level of "
1171
+ "your theme and change permissions using %s so the server can write to the "
1172
+ "file. I have had the most success setting this single file to %s but feel "
1173
+ "free to play around with permissions until everything is working. A good "
1174
+ "starting point is %s. When the server can save to the file, CSS will "
1175
+ "automatically be updated when you save your Theme Options."
1176
+ msgstr ""
1177
+
1178
+ #: ../includes/ot-functions-docs-page.php:137
1179
+ #, php-format
1180
+ msgid ""
1181
+ "This example assumes you have an option with the ID of %1$s. Which means "
1182
+ "this option will automatically insert the value of %1$s into the %2$s when "
1183
+ "the Theme Options are saved."
1184
+ msgstr ""
1185
+
1186
+ #: ../includes/ot-functions-docs-page.php:139
1187
+ msgid "Input"
1188
+ msgstr ""
1189
+
1190
+ #: ../includes/ot-functions-docs-page.php:145
1191
+ msgid "Output"
1192
+ msgstr ""
1193
+
1194
+ #: ../includes/ot-functions-docs-page.php:154
1195
+ #, php-format
1196
+ msgid ""
1197
+ "The Custom Post Type Select option type displays a list of IDs from any "
1198
+ "available WordPress post type or custom post type. It allows the user to "
1199
+ "check multiple post IDs for use in a custom function or loop. Requires at "
1200
+ "least one valid %1$s in the %1$s field."
1201
+ msgstr ""
1202
+
1203
+ #: ../includes/ot-functions-docs-page.php:157
1204
+ #, php-format
1205
+ msgid ""
1206
+ "The Custom Post Type Select option type displays a list of IDs from any "
1207
+ "available WordPress post type or custom post type. It will return a single "
1208
+ "post ID for use in a custom function or loop. Requires at least one valid "
1209
+ "%1$s in the %1$s field."
1210
+ msgstr ""
1211
+
1212
+ #: ../includes/ot-functions-docs-page.php:160
1213
+ msgid ""
1214
+ "The Date Picker option type is tied to a standard form input field which "
1215
+ "displays a calendar pop-up that allow the user to pick any date when focus "
1216
+ "is given to the input field. The returned value is a date formatted string."
1217
+ msgstr ""
1218
+
1219
+ #: ../includes/ot-functions-docs-page.php:163
1220
+ msgid ""
1221
+ "The Date Time Picker option type is tied to a standard form input field "
1222
+ "which displays a calendar pop-up that allow the user to pick any date and "
1223
+ "time when focus is given to the input field. The returned value is a date "
1224
+ "and time formatted string."
1225
+ msgstr ""
1226
+
1227
+ #: ../includes/ot-functions-docs-page.php:166
1228
+ #, php-format
1229
+ msgid ""
1230
+ "The Dimension option type is used to set width and height values. The text "
1231
+ "inputs except numerical values and the select lets you choose the unit of "
1232
+ "measurement to add to that value. Currently the default units are %s, %s, "
1233
+ "%s, and %s. However, you can change them with the %s filter."
1234
+ msgstr ""
1235
+
1236
+ #: ../includes/ot-functions-docs-page.php:169
1237
+ msgid ""
1238
+ "The Gallery option type saves a comma separated list of image attachment "
1239
+ "IDs. You will need to create a front-end function to display the images in "
1240
+ "your theme."
1241
+ msgstr ""
1242
+
1243
+ #: ../includes/ot-functions-docs-page.php:172
1244
+ #, php-format
1245
+ msgid ""
1246
+ "The Google Fonts option type will dynamically enqueue any number of Google "
1247
+ "Web Fonts into the document %1$s. As well, once the option has been saved "
1248
+ "each font family will automatically be inserted into the %2$s array for the "
1249
+ "Typography option type. You can further modify the font stack by using the "
1250
+ "%3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s "
1251
+ "parameter is being passed from %7$s, so it will be the ID of a Typography "
1252
+ "option type. This will allow you to add additional web safe fonts to "
1253
+ "individual font families on an as-need basis."
1254
+ msgstr ""
1255
+
1256
+ #: ../includes/ot-functions-docs-page.php:175
1257
+ #, php-format
1258
+ msgid ""
1259
+ "The JavaScript option type is a textarea that uses the %s code editor to "
1260
+ "highlight your JavaScript and display errors as you type."
1261
+ msgstr ""
1262
+
1263
+ #: ../includes/ot-functions-docs-page.php:178
1264
+ msgid "The Link Color option type is used to set all link color states."
1265
+ msgstr ""
1266
+
1267
+ #: ../includes/ot-functions-docs-page.php:181
1268
+ msgid ""
1269
+ "The List Item option type replaced the Slider option type and allows for a "
1270
+ "great deal of customization. You can add settings to the List Item and those "
1271
+ "settings will be displayed to the user when they add a new List Item. "
1272
+ "Typical use is for creating sliding content or blocks of code for custom "
1273
+ "layouts."
1274
+ msgstr ""
1275
+
1276
+ #: ../includes/ot-functions-docs-page.php:184
1277
+ #, php-format
1278
+ msgid ""
1279
+ "The Measurement option type is a mix of input and select fields. The text "
1280
+ "input excepts a value and the select lets you choose the unit of measurement "
1281
+ "to add to that value. Currently the default units are %s, %s, %s, and %s. "
1282
+ "However, you can change them with the %s filter."
1283
+ msgstr ""
1284
+
1285
+ #: ../includes/ot-functions-docs-page.php:186
1286
+ #, php-format
1287
+ msgid ""
1288
+ "Example filter to add new units to the Measurement option type. Added to %s."
1289
+ msgstr ""
1290
+
1291
+ #: ../includes/ot-functions-docs-page.php:199
1292
+ msgid ""
1293
+ "Example filter to completely change the units in the Measurement option "
1294
+ "type. Added to <code>functions.php</code>."
1295
+ msgstr ""
1296
+
1297
+ #: ../includes/ot-functions-docs-page.php:215
1298
+ msgid ""
1299
+ "The Numeric Slider option type displays a jQuery UI slider. It will return a "
1300
+ "single numerical value for use in a custom function or loop."
1301
+ msgstr ""
1302
+
1303
+ #: ../includes/ot-functions-docs-page.php:218
1304
+ #, php-format
1305
+ msgid ""
1306
+ "The On/Off option type displays a simple switch that can be used to turn "
1307
+ "things on or off. The saved return value is either %s or %s."
1308
+ msgstr ""
1309
+
1310
+ #: ../includes/ot-functions-docs-page.php:221
1311
+ msgid ""
1312
+ "The Page Checkbox option type displays a list of page IDs. It allows the "
1313
+ "user to check multiple page IDs for use in a custom function or loop."
1314
+ msgstr ""
1315
+
1316
+ #: ../includes/ot-functions-docs-page.php:224
1317
+ msgid ""
1318
+ "The Page Select option type displays a list of page IDs. It will return a "
1319
+ "single page ID for use in a custom function or loop."
1320
+ msgstr ""
1321
+
1322
+ #: ../includes/ot-functions-docs-page.php:227
1323
+ msgid ""
1324
+ "The Post Checkbox option type displays a list of post IDs. It allows the "
1325
+ "user to check multiple post IDs for use in a custom function or loop."
1326
  msgstr ""
1327
 
1328
+ #: ../includes/ot-functions-docs-page.php:230
1329
  msgid ""
1330
+ "The Post Select option type displays a list of post IDs. It will return a "
1331
+ "single post ID for use in a custom function or loop."
 
1332
  msgstr ""
1333
 
1334
+ #: ../includes/ot-functions-docs-page.php:233
1335
+ msgid ""
1336
+ "The Radio option type displays a group of choices. It allows the user to "
1337
+ "choose one and will return that value as a string for use in a custom "
1338
+ "function or loop."
1339
  msgstr ""
1340
 
1341
+ #: ../includes/ot-functions-docs-page.php:236
1342
+ #, php-format
1343
  msgid ""
1344
+ "the Radio Images option type is primarily used for layouts. However, you can "
1345
+ "filter the image list using %s. As well, you can add your own custom images "
1346
+ "using the choices array."
 
1347
  msgstr ""
1348
 
1349
+ #: ../includes/ot-functions-docs-page.php:238
1350
+ msgid ""
1351
+ "This example executes the <code>ot_radio_images</code> filter on layout "
1352
+ "images attached to the <code>my_radio_images</code> field. Added to "
1353
+ "<code>functions.php</code>."
1354
  msgstr ""
1355
 
1356
+ #: ../includes/ot-functions-docs-page.php:263
1357
+ msgid ""
1358
+ "The Select option type is used to list anything you want that would be "
1359
+ "chosen from a select list."
1360
  msgstr ""
1361
 
1362
+ #: ../includes/ot-functions-docs-page.php:266
1363
+ #, php-format
1364
+ msgid ""
1365
+ "This option type makes it possible for users to select a WordPress "
1366
+ "registered sidebar to use on a specific area. By using the two provided "
1367
+ "filters, %s, and %s we can be selective about which sidebars are available "
1368
+ "on a specific content area."
1369
  msgstr ""
1370
 
1371
+ #: ../includes/ot-functions-docs-page.php:267
1372
  #, php-format
1373
  msgid ""
1374
+ "For example, if we create a WordPress theme that provides the ability to "
1375
+ "change the Blog Sidebar and we don't want to have the footer sidebars "
1376
+ "available on this area, we can unset those sidebars either manually or by "
1377
+ "using a regular expression if we have a common name like %s."
1378
  msgstr ""
1379
 
1380
+ #: ../includes/ot-functions-docs-page.php:270
1381
+ msgid ""
1382
+ "The Slider option type is technically deprecated. Use the List Item option "
1383
+ "type instead, as it's infinitely more customizable. Typical use is for "
1384
+ "creating sliding image content."
1385
  msgstr ""
1386
 
1387
+ #: ../includes/ot-functions-docs-page.php:273
1388
  #, php-format
1389
  msgid ""
1390
+ "The Social Links option type utilizes a drag & drop interface to create a "
1391
+ "list of social links. There are a few filters that make extending this "
1392
+ "option type easy. You can set the %s filter to %s and turn off loading "
1393
+ "default values. Use the %s filter to change the default values that are "
1394
+ "loaded. To filter the settings array use the %s filter."
1395
  msgstr ""
1396
 
1397
+ #: ../includes/ot-functions-docs-page.php:276
1398
+ #, php-format
1399
+ msgid ""
1400
+ "The Spacing option type is used to set spacing values such as padding or "
1401
+ "margin in the form of top, right, bottom, and left. The text inputs except "
1402
+ "numerical values and the select lets you choose the unit of measurement to "
1403
+ "add to that value. Currently the default units are %s, %s, %s, and %s. "
1404
+ "However, you can change them with the %s filter."
1405
  msgstr ""
1406
 
1407
+ #: ../includes/ot-functions-docs-page.php:279
1408
+ msgid ""
1409
+ "The Tab option type will break a section or metabox into tabbed content."
1410
  msgstr ""
1411
 
1412
+ #: ../includes/ot-functions-docs-page.php:282
1413
  msgid ""
1414
+ "The Tag Checkbox option type displays a list of tag IDs. It allows the user "
1415
+ "to check multiple tag IDs and will return that value as an array for use in "
1416
+ "a custom function or loop."
 
 
1417
  msgstr ""
1418
 
1419
+ #: ../includes/ot-functions-docs-page.php:285
 
1420
  msgid ""
1421
+ "The Tag Select option type displays a list of tag IDs. It allows the user to "
1422
+ "select only one tag ID and will return that value for use in a custom "
1423
+ "function or loop."
1424
  msgstr ""
1425
 
1426
+ #: ../includes/ot-functions-docs-page.php:288
1427
  msgid ""
1428
+ "The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
1429
+ "the user to check multiple taxonomy IDs and will return that value as an "
1430
+ "array for use in a custom function or loop."
1431
  msgstr ""
1432
 
1433
+ #: ../includes/ot-functions-docs-page.php:291
1434
  msgid ""
1435
+ "The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
1436
+ "the user to select only one taxonomy ID and will return that value for use "
1437
+ "in a custom function or loop."
1438
  msgstr ""
1439
 
1440
+ #: ../includes/ot-functions-docs-page.php:294
1441
  msgid ""
1442
+ "The Text option type is used to save string values. For example, any "
1443
+ "optional or required text that is of reasonably short character length."
 
1444
  msgstr ""
1445
 
1446
+ #: ../includes/ot-functions-docs-page.php:297
1447
+ #, php-format
1448
  msgid ""
1449
+ "The Textarea option type is a large string value used for custom code or "
1450
+ "text in the theme and has a WYSIWYG editor that can be filtered to change "
1451
+ "the how it is displayed. For example, you can filter %s, %s, %s, and %s."
1452
  msgstr ""
1453
 
1454
+ #: ../includes/ot-functions-docs-page.php:299
1455
  msgid ""
1456
  "Example filters to alter the Textarea option type. Added to <code>functions."
1457
  "php</code>."
1458
  msgstr ""
1459
 
1460
+ #: ../includes/ot-functions-docs-page.php:301
1461
  msgid ""
1462
  "This example keeps WordPress from executing the <code>wpautop</code> filter "
1463
  "on the line breaks. The default is <code>true</code> which means it wraps "
1464
  "line breaks with an HTML <code>p</code> tag."
1465
  msgstr ""
1466
 
1467
+ #: ../includes/ot-functions-docs-page.php:314
1468
  msgid ""
1469
  "This example keeps WordPress from executing the <code>media_buttons</code> "
1470
  "filter on the textarea WYSIWYG. The default is <code>true</code> which means "
1471
  "show the buttons."
1472
  msgstr ""
1473
 
1474
+ #: ../includes/ot-functions-docs-page.php:327
1475
  msgid ""
1476
  "This example keeps WordPress from executing the <code>tinymce</code> filter "
1477
  "on the textarea WYSIWYG. The default is <code>true</code> which means show "
1478
  "the tinymce."
1479
  msgstr ""
1480
 
1481
+ #: ../includes/ot-functions-docs-page.php:340
1482
  msgid ""
1483
  "This example alters the <code>quicktags</code> filter on the textarea "
1484
  "WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
1486
  "quicktags. It also means you can filter in your own custom quicktags."
1487
  msgstr ""
1488
 
1489
+ #: ../includes/ot-functions-docs-page.php:356
1490
+ msgid ""
1491
+ "The Textarea Simple option type is a large string value used for custom code "
1492
+ "or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
1493
+ msgstr ""
1494
+
1495
+ #: ../includes/ot-functions-docs-page.php:358
1496
  #, php-format
1497
  msgid ""
1498
  "This example tells WordPress to execute the %s filter on the line breaks. "
1500
  "tag. Added to %s."
1501
  msgstr ""
1502
 
1503
+ #: ../includes/ot-functions-docs-page.php:372
1504
+ msgid ""
1505
+ "The Textblock option type is used only on the Theme Option page. It will "
1506
+ "allow you to create & display HTML, but has no title above the text block. "
1507
+ "You can then use the Textblock to add a more detailed set of instruction on "
1508
+ "how the options are used in your theme. You would never use this in your "
1509
+ "themes template files as it does not save a value."
1510
+ msgstr ""
1511
+
1512
+ #: ../includes/ot-functions-docs-page.php:375
1513
+ msgid ""
1514
+ "The Textblock Titled option type is used only on the Theme Option page. It "
1515
+ "will allow you to create & display HTML, and has a title above the text "
1516
+ "block. You can then use the Textblock Titled to add a more detailed set of "
1517
+ "instruction on how the options are used in your theme. You would never use "
1518
+ "this in your themes template files as it does not save a value."
1519
+ msgstr ""
1520
+
1521
+ #: ../includes/ot-functions-docs-page.php:378
1522
+ #, php-format
1523
+ msgid ""
1524
+ "The Typography option type is for adding typography styles to your theme "
1525
+ "either dynamically via the CSS option type above or manually with %s. The "
1526
+ "Typography option type has filters that allow you to remove fields or change "
1527
+ "the defaults. For example, you can filter %s to remove unwanted fields from "
1528
+ "all Background options or an individual one. You can also filter %s. These "
1529
+ "filters allow you to fine tune the select lists for your specific needs."
1530
+ msgstr ""
1531
+
1532
+ #: ../includes/ot-functions-docs-page.php:380
1533
  msgid ""
1534
  "This example would filter <code>ot_recognized_font_families</code> to build "
1535
  "your own font stack. Added to <code>functions.php</code>."
1536
  msgstr ""
1537
 
1538
+ #: ../includes/ot-functions-docs-page.php:398
1539
+ #, php-format
1540
+ msgid ""
1541
+ "The Upload option type is used to upload any WordPress supported media. "
1542
+ "After uploading, users are required to press the \"%s\" button in order to "
1543
+ "populate the input with the URI of that media. There is one caveat of this "
1544
+ "feature. If you import the theme options and have uploaded media on one site "
1545
+ "the old URI will not reflect the URI of your new site. You will have to re-"
1546
+ "upload or %s any media to your new server and change the URIs if necessary."
1547
+ msgstr ""
1548
+
1549
+ #: ../includes/ot-functions-docs-page.php:430
1550
  msgid ""
1551
  "This function returns a value from the \"option_tree\" array of saved values "
1552
  "or the default value supplied. The returned value would be mixed. Meaning it "
1553
  "could be a string, integer, boolean, or array."
1554
  msgstr ""
1555
 
1556
+ #: ../includes/ot-functions-docs-page.php:432
1557
+ #: ../includes/ot-functions-docs-page.php:482
1558
  msgid "Usage"
1559
  msgstr ""
1560
 
1561
+ #: ../includes/ot-functions-docs-page.php:436
1562
+ #: ../includes/ot-functions-docs-page.php:486
1563
  msgid "Parameters"
1564
  msgstr ""
1565
 
1566
+ #: ../includes/ot-functions-docs-page.php:440
1567
+ #: ../includes/ot-functions-docs-page.php:444
1568
+ #: ../includes/ot-functions-docs-page.php:490
1569
  msgid "string"
1570
  msgstr ""
1571
 
1572
+ #: ../includes/ot-functions-docs-page.php:440
1573
+ #: ../includes/ot-functions-docs-page.php:490
1574
  msgid "required"
1575
  msgstr ""
1576
 
1577
+ #: ../includes/ot-functions-docs-page.php:440
1578
  msgid "Enter the options unique identifier."
1579
  msgstr ""
1580
 
1581
+ #: ../includes/ot-functions-docs-page.php:440
1582
+ #: ../includes/ot-functions-docs-page.php:490
1583
  msgid "Default:"
1584
  msgstr ""
1585
 
1586
+ #: ../includes/ot-functions-docs-page.php:440
1587
+ #: ../includes/ot-functions-docs-page.php:444
1588
+ #: ../includes/ot-functions-docs-page.php:490
1589
+ #: ../includes/ot-functions-docs-page.php:494
1590
  msgid "None"
1591
  msgstr ""
1592
 
1593
+ #: ../includes/ot-functions-docs-page.php:444
1594
+ #: ../includes/ot-functions-docs-page.php:494
1595
+ #: ../includes/ot-functions-docs-page.php:498
1596
+ #: ../includes/ot-functions-docs-page.php:502
1597
+ #: ../includes/ot-functions-docs-page.php:506
1598
  msgid "optional"
1599
  msgstr ""
1600
 
1601
+ #: ../includes/ot-functions-docs-page.php:444
1602
  msgid ""
1603
  "Enter a default return value. This is just incase the request returns null."
1604
  msgstr ""
1605
 
1606
+ #: ../includes/ot-functions-docs-page.php:444
1607
+ #: ../includes/ot-functions-docs-page.php:494
1608
+ #: ../includes/ot-functions-docs-page.php:498
1609
+ #: ../includes/ot-functions-docs-page.php:502
1610
+ #: ../includes/ot-functions-docs-page.php:506
1611
  msgid "Default"
1612
  msgstr ""
1613
 
1614
+ #: ../includes/ot-functions-docs-page.php:474
1615
  msgid ""
1616
  "This function has been deprecated. That means it has been replaced by a new "
1617
  "function or is no longer supported, and may be removed from future versions. "
1618
  "All code that uses this function should be converted to use its replacement."
1619
  msgstr ""
1620
 
1621
+ #: ../includes/ot-functions-docs-page.php:476
1622
  msgid "Use"
1623
  msgstr ""
1624
 
1625
+ #: ../includes/ot-functions-docs-page.php:476
1626
  msgid "instead"
1627
  msgstr ""
1628
 
1629
+ #: ../includes/ot-functions-docs-page.php:480
1630
  msgid ""
1631
  "This function returns, or echos if asked, a value from the \"option_tree\" "
1632
  "array of saved values."
1633
  msgstr ""
1634
 
1635
+ #: ../includes/ot-functions-docs-page.php:490
1636
  msgid "Enter a unique Option Key to get a returned value or array."
1637
  msgstr ""
1638
 
1639
+ #: ../includes/ot-functions-docs-page.php:494
1640
  msgid "array"
1641
  msgstr ""
1642
 
1643
+ #: ../includes/ot-functions-docs-page.php:494
1644
  msgid "Used to cut down on database queries in template files."
1645
  msgstr ""
1646
 
1647
+ #: ../includes/ot-functions-docs-page.php:498
1648
+ #: ../includes/ot-functions-docs-page.php:502
1649
  msgid "boolean"
1650
  msgstr ""
1651
 
1652
+ #: ../includes/ot-functions-docs-page.php:498
1653
  msgid "Echo the output."
1654
  msgstr ""
1655
 
1656
+ #: ../includes/ot-functions-docs-page.php:502
1657
  msgid "Used to indicate the $item_id is an array of values."
1658
  msgstr ""
1659
 
1660
+ #: ../includes/ot-functions-docs-page.php:506
1661
  msgid "integer"
1662
  msgstr ""
1663
 
1664
+ #: ../includes/ot-functions-docs-page.php:506
1665
  msgid ""
1666
  "Numeric offset key for the $item_id array, -1 will return all values (an "
1667
  "array starts at 0)."
1668
  msgstr ""
1669
 
1670
+ #: ../includes/ot-functions-docs-page.php:534
1671
  msgid ""
1672
  "If you're using the plugin version of OptionTree it is highly recommended to "
1673
  "include a <code>function_exists</code> check in your code, as described in "
1677
  "<code>ot_get_option()</code> function available."
1678
  msgstr ""
1679
 
1680
+ #: ../includes/ot-functions-docs-page.php:536
1681
  msgid "String Examples"
1682
  msgstr ""
1683
 
1684
+ #: ../includes/ot-functions-docs-page.php:538
1685
  msgid "Returns the value of <code>test_input</code>."
1686
  msgstr ""
1687
 
1688
+ #: ../includes/ot-functions-docs-page.php:544
1689
  msgid ""
1690
  "Returns the value of <code>test_input</code>, but also has a default value "
1691
  "if it returns empty."
1692
  msgstr ""
1693
 
1694
+ #: ../includes/ot-functions-docs-page.php:550
1695
  msgid "Array Examples"
1696
  msgstr ""
1697
 
1698
+ #: ../includes/ot-functions-docs-page.php:552
1699
  msgid ""
1700
  "Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
1701
  "code>. It then echos an unordered list of links (navigation) using "
1702
  "<code>wp_list_pages()</code>."
1703
  msgstr ""
1704
 
1705
+ #: ../includes/ot-functions-docs-page.php:572
1706
  msgid ""
1707
  "The next two examples demonstrate how to use the <strong>Measurement</"
1708
  "strong> option type. The Measurement option type is an array with two key/"
1710
  "unit of measurement."
1711
  msgstr ""
1712
 
1713
+ #: ../includes/ot-functions-docs-page.php:598
1714
  msgid "This example displays a very basic slider loop."
1715
  msgstr ""
1716
 
1717
+ #: ../includes/ot-functions-docs-page.php:643
1718
  msgid "It's Super Simple"
1719
  msgstr ""
1720
 
1721
+ #: ../includes/ot-functions-docs-page.php:645
1722
  msgid ""
1723
  "Layouts make your theme awesome! With theme options data that you can save/"
1724
  "import/export you can package themes with different color variations, or "
1726
  "a snapshot of your data as a layout."
1727
  msgstr ""
1728
 
1729
+ #: ../includes/ot-functions-docs-page.php:647
1730
  msgid ""
1731
  "Once you have created all your different layouts, or theme variations, you "
1732
  "can save them to a separate text file for repackaging with your theme. "
1735
  "previous options data."
1736
  msgstr ""
1737
 
1738
+ #: ../includes/ot-functions-docs-page.php:649
1739
  msgid ""
1740
  " Adding a layout is ridiculously easy, follow these steps and you'll be on "
1741
  "your way to having a WordPress super theme."
1742
  msgstr ""
1743
 
1744
+ #: ../includes/ot-functions-docs-page.php:651
1745
  msgid "For Developers"
1746
  msgstr ""
1747
 
1748
+ #: ../includes/ot-functions-docs-page.php:653
1749
+ #: ../includes/ot-functions-docs-page.php:682
1750
  msgid "Creating a Layout"
1751
  msgstr ""
1752
 
1753
+ #: ../includes/ot-functions-docs-page.php:655
1754
+ #: ../includes/ot-functions-docs-page.php:662
1755
+ #: ../includes/ot-functions-docs-page.php:668
1756
  msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
1757
  msgstr ""
1758
 
1759
+ #: ../includes/ot-functions-docs-page.php:656
1760
  msgid ""
1761
  "Enter a name for your layout in the text field and hit \"Save Layouts\", "
1762
  "you've created your first layout."
1763
  msgstr ""
1764
 
1765
+ #: ../includes/ot-functions-docs-page.php:657
1766
+ #: ../includes/ot-functions-docs-page.php:686
1767
  msgid "Adding a new layout is as easy as repeating the steps above."
1768
  msgstr ""
1769
 
1770
+ #: ../includes/ot-functions-docs-page.php:660
1771
+ #: ../includes/ot-functions-docs-page.php:689
1772
  msgid "Activating a Layout"
1773
  msgstr ""
1774
 
1775
+ #: ../includes/ot-functions-docs-page.php:663
1776
  msgid "Click on the activate layout button in the actions list."
1777
  msgstr ""
1778
 
1779
+ #: ../includes/ot-functions-docs-page.php:666
1780
+ #: ../includes/ot-functions-docs-page.php:695
1781
  msgid "Deleting a Layout"
1782
  msgstr ""
1783
 
1784
+ #: ../includes/ot-functions-docs-page.php:669
1785
  msgid "Click on the delete layout button in the actions list."
1786
  msgstr ""
1787
 
1788
+ #: ../includes/ot-functions-docs-page.php:672
1789
+ #: ../includes/ot-functions-docs-page.php:700
1790
  msgid "Edit Layout Data"
1791
  msgstr ""
1792
 
1793
+ #: ../includes/ot-functions-docs-page.php:674
1794
+ #: ../includes/ot-functions-docs-page.php:684
1795
+ #: ../includes/ot-functions-docs-page.php:691
1796
  msgid "Go to the <code>Appearance->Theme Options</code> page."
1797
  msgstr ""
1798
 
1799
+ #: ../includes/ot-functions-docs-page.php:675
1800
+ #: ../includes/ot-functions-docs-page.php:703
1801
  msgid ""
1802
  "Modify and save your theme options and the layout will be updated "
1803
  "automatically."
1804
  msgstr ""
1805
 
1806
+ #: ../includes/ot-functions-docs-page.php:676
1807
+ #: ../includes/ot-functions-docs-page.php:704
1808
  msgid ""
1809
  "Saving theme options data will update the currently active layout, so before "
1810
  "you start saving make sure you want to modify the current layout."
1811
  msgstr ""
1812
 
1813
+ #: ../includes/ot-functions-docs-page.php:677
1814
  msgid ""
1815
  "If you want to edit a new layout, first create it then save your theme "
1816
  "options."
1817
  msgstr ""
1818
 
1819
+ #: ../includes/ot-functions-docs-page.php:680
1820
  msgid "End-Users Mode"
1821
  msgstr ""
1822
 
1823
+ #: ../includes/ot-functions-docs-page.php:685
1824
  msgid ""
1825
  "Enter a name for your layout in the text field and hit \"New Layout\", "
1826
  "you've created your first layout."
1827
  msgstr ""
1828
 
1829
+ #: ../includes/ot-functions-docs-page.php:692
1830
  msgid ""
1831
  "Choose a layout from the select list and click the \"Activate Layout\" "
1832
  "button."
1833
  msgstr ""
1834
 
1835
+ #: ../includes/ot-functions-docs-page.php:697
1836
  msgid "End-Users mode does not allow deleting layouts."
1837
  msgstr ""
1838
 
1839
+ #: ../includes/ot-functions-docs-page.php:702
1840
  msgid "Go to the <code>Appearance->Theme Options</code> tab."
1841
  msgstr ""
1842
 
1843
+ #: ../includes/ot-functions-docs-page.php:733
1844
+ #: ../includes/ot-functions-docs-page.php:815
1845
  msgid "How-to-guide"
1846
  msgstr ""
1847
 
1848
+ #: ../includes/ot-functions-docs-page.php:735
1849
  msgid ""
1850
  "There are a few simple steps you need to take in order to use OptionTree's "
1851
  "built in Meta Box API. In the code below I'll show you a basic demo of how "
1856
  "can reference."
1857
  msgstr ""
1858
 
1859
+ #: ../includes/ot-functions-docs-page.php:737
1860
  msgid ""
1861
  "It's important to note that Meta Boxes do not support WYSIWYG editors at "
1862
  "this time and if you set one of your options to Textarea it will "
1864
  "WordPress released this statement regarding the wp_editor() function:"
1865
  msgstr ""
1866
 
1867
+ #: ../includes/ot-functions-docs-page.php:739
1868
  msgid ""
1869
  "Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
1870
  "What this means in practical terms, is that you cannot put it in meta-boxes "
1871
  "that can be dragged and placed elsewhere on the page."
1872
  msgstr ""
1873
 
1874
+ #: ../includes/ot-functions-docs-page.php:741
1875
  msgid "Create and include your custom meta boxes file."
1876
  msgstr ""
1877
 
1878
+ #: ../includes/ot-functions-docs-page.php:743
1879
  msgid ""
1880
  "Create a file and name it anything you want, maybe <code>meta-boxes.php</"
1881
  "code>."
1882
  msgstr ""
1883
 
1884
+ #: ../includes/ot-functions-docs-page.php:744
1885
  msgid ""
1886
  "As well, you'll probably want to create a directory named <code>includes</"
1887
  "code> to put your <code>meta-boxes.php</code> into which will help keep you "
1888
  "file structure nice and tidy."
1889
  msgstr ""
1890
 
1891
+ #: ../includes/ot-functions-docs-page.php:745
1892
+ #: ../includes/ot-functions-docs-page.php:845
1893
  msgid "Add the following code to your <code>functions.php</code>."
1894
  msgstr ""
1895
 
1896
+ #: ../includes/ot-functions-docs-page.php:755
1897
  msgid ""
1898
  "Add a variation of the following code to your <code>meta-boxes.php</code>. "
1899
  "You'll obviously need to fill it in with all your custom array values. It's "
1902
  "before OptionTree was loaded the sky would fall on your head."
1903
  msgstr ""
1904
 
1905
+ #: ../includes/ot-functions-docs-page.php:817
1906
  msgid ""
1907
  "There are a few simple steps you need to take in order to use OptionTree as "
1908
  "a theme included module. In the code below I'll show you a basic demo of how "
1913
  "contains a file named <code>demo-theme-options.php</code> you can reference."
1914
  msgstr ""
1915
 
1916
+ #: ../includes/ot-functions-docs-page.php:819
1917
  msgid "Step 1: Include the plugin & turn on theme mode."
1918
  msgstr ""
1919
 
1920
+ #: ../includes/ot-functions-docs-page.php:821
1921
  #, php-format
1922
  msgid "Download the latest version of %s and unarchive the %s directory."
1923
  msgstr ""
1924
 
1925
+ #: ../includes/ot-functions-docs-page.php:822
1926
  #, php-format
1927
  msgid ""
1928
  "Put the %s directory in the root of your theme. For example, the server path "
1929
  "would be %s."
1930
  msgstr ""
1931
 
1932
+ #: ../includes/ot-functions-docs-page.php:823
1933
  #, php-format
1934
  msgid "Add the following code to the beginning of your %s."
1935
  msgstr ""
1936
 
1937
+ #: ../includes/ot-functions-docs-page.php:837
1938
  #, php-format
1939
  msgid ""
1940
  "For a list of all the OptionTree UI display filters refer to the %s file "
1942
  "for developing themes with Theme Mode."
1943
  msgstr ""
1944
 
1945
+ #: ../includes/ot-functions-docs-page.php:839
1946
  msgid ""
1947
  "You now have OptionTree built into your theme and anytime an update is "
1948
  "available replace the old version with the new one."
1949
  msgstr ""
1950
 
1951
+ #: ../includes/ot-functions-docs-page.php:841
1952
  msgid "Step 2: Create Theme Options without using the UI Builder."
1953
  msgstr ""
1954
 
1955
+ #: ../includes/ot-functions-docs-page.php:843
1956
  msgid ""
1957
  "Create a file and name it anything you want, maybe <code>theme-options.php</"
1958
  "code>, or use the built in file export to create it for you. Remember, you "
1959
  "should always check the file for errors before including it in your theme."
1960
  msgstr ""
1961
 
1962
+ #: ../includes/ot-functions-docs-page.php:844
1963
  msgid ""
1964
  "As well, you'll probably want to create a directory named <code>includes</"
1965
  "code> to put your <code>theme-options.php</code> into which will help keep "
1966
  "you file structure nice and tidy."
1967
  msgstr ""
1968
 
1969
+ #: ../includes/ot-functions-docs-page.php:855
1970
  msgid ""
1971
  "Add a variation of the following code to your <code>theme-options.php</"
1972
  "code>. You'll obviously need to fill it in with all your custom array values "
1973
  "for contextual help (optional), sections (required), and settings (required)."
1974
  msgstr ""
1975
 
1976
+ #: ../includes/ot-functions-docs-page.php:858
1977
  msgid ""
1978
  "The code below is a boilerplate to get your started. For a full list of the "
1979
  "available option types click the \"Option Types\" tab above. Also a quick "
2009
  msgstr ""
2010
 
2011
  #: ../includes/ot-functions-option-types.php:241
2012
+ #: ../includes/ot-functions-option-types.php:3227
2013
  msgid "Add Media"
2014
  msgstr ""
2015
 
2016
+ #: ../includes/ot-functions-option-types.php:316
2017
+ #: ../includes/ot-functions-option-types.php:1094
2018
+ msgid "width"
2019
+ msgstr ""
2020
+
2021
+ #: ../includes/ot-functions-option-types.php:327
2022
+ #: ../includes/ot-functions-option-types.php:1114
2023
+ #: ../includes/ot-functions-option-types.php:1586
2024
+ #: ../includes/ot-functions-option-types.php:2531
2025
+ msgid "unit"
2026
+ msgstr ""
2027
+
2028
+ #: ../includes/ot-functions-option-types.php:346
2029
+ msgid "style"
2030
+ msgstr ""
2031
+
2032
+ #: ../includes/ot-functions-option-types.php:439
2033
+ msgid "offset-x"
2034
+ msgstr ""
2035
+
2036
+ #: ../includes/ot-functions-option-types.php:448
2037
+ msgid "offset-y"
2038
+ msgstr ""
2039
+
2040
+ #: ../includes/ot-functions-option-types.php:457
2041
+ msgid "blur-radius"
2042
+ msgstr ""
2043
+
2044
+ #: ../includes/ot-functions-option-types.php:466
2045
+ msgid "spread-radius"
2046
+ msgstr ""
2047
+
2048
+ #: ../includes/ot-functions-option-types.php:538
2049
+ #: ../includes/ot-functions-option-types.php:592
2050
  msgid "No Categories Found"
2051
  msgstr ""
2052
 
2053
+ #: ../includes/ot-functions-option-types.php:587
2054
+ #: ../includes/ot-functions-option-types.php:919
2055
+ #: ../includes/ot-functions-option-types.php:1855
2056
+ #: ../includes/ot-functions-option-types.php:1966
2057
+ #: ../includes/ot-functions-option-types.php:2671
2058
+ #: ../includes/ot-functions-option-types.php:2786
2059
  msgid "Choose One"
2060
  msgstr ""
2061
 
2062
+ #: ../includes/ot-functions-option-types.php:867
2063
+ #: ../includes/ot-functions-option-types.php:925
2064
+ #: ../includes/ot-functions-option-types.php:1917
2065
+ #: ../includes/ot-functions-option-types.php:1972
2066
  msgid "No Posts Found"
2067
  msgstr ""
2068
 
2069
+ #: ../includes/ot-functions-option-types.php:1103
2070
+ msgid "height"
2071
+ msgstr ""
2072
+
2073
+ #: ../includes/ot-functions-option-types.php:1281
2074
+ #: ../includes/ot-functions-option-types.php:1324
2075
+ msgid "Remove Google Font"
2076
+ msgstr ""
2077
+
2078
+ #: ../includes/ot-functions-option-types.php:1283
2079
+ #: ../includes/ot-functions-option-types.php:1326
2080
+ msgid "-- Choose One --"
2081
+ msgstr ""
2082
+
2083
+ #: ../includes/ot-functions-option-types.php:1347
2084
+ msgid "Add Google Font"
2085
+ msgstr ""
2086
+
2087
+ #: ../includes/ot-functions-option-types.php:1433
2088
+ msgctxt "color picker"
2089
+ msgid "Standard"
2090
+ msgstr ""
2091
+
2092
+ #: ../includes/ot-functions-option-types.php:1434
2093
+ msgctxt "color picker"
2094
+ msgid "Hover"
2095
+ msgstr ""
2096
+
2097
+ #: ../includes/ot-functions-option-types.php:1435
2098
+ msgctxt "color picker"
2099
+ msgid "Active"
2100
+ msgstr ""
2101
+
2102
+ #: ../includes/ot-functions-option-types.php:1436
2103
+ msgctxt "color picker"
2104
+ msgid "Visited"
2105
+ msgstr ""
2106
+
2107
+ #: ../includes/ot-functions-option-types.php:1437
2108
+ msgctxt "color picker"
2109
+ msgid "Focus"
2110
+ msgstr ""
2111
+
2112
+ #: ../includes/ot-functions-option-types.php:1534
2113
+ #: ../includes/ot-functions-option-types.php:2271
2114
+ #: ../includes/ot-functions-option-types.php:2436
2115
  msgid "Add New"
2116
  msgstr ""
2117
 
2118
+ #: ../includes/ot-functions-option-types.php:1537
2119
+ #: ../includes/ot-functions-option-types.php:2274
2120
+ #: ../includes/ot-functions-option-types.php:2439
2121
  msgid "You can re-order with drag & drop, the order will update after saving."
2122
  msgstr ""
2123
 
2124
+ #: ../includes/ot-functions-option-types.php:1706
2125
  msgid "On"
2126
  msgstr ""
2127
 
2128
+ #: ../includes/ot-functions-option-types.php:1728
2129
  msgid "Off"
2130
  msgstr ""
2131
 
2132
+ #: ../includes/ot-functions-option-types.php:1806
2133
+ #: ../includes/ot-functions-option-types.php:1861
2134
  msgid "No Pages Found"
2135
  msgstr ""
2136
 
2137
+ #: ../includes/ot-functions-option-types.php:2194
2138
  msgid "Choose Sidebar"
2139
  msgstr ""
2140
 
2141
+ #: ../includes/ot-functions-option-types.php:2199
2142
  msgid "No Sidebars"
2143
  msgstr ""
2144
 
2145
+ #: ../includes/ot-functions-option-types.php:2307
2146
  msgid "Facebook"
2147
  msgstr ""
2148
 
2149
+ #: ../includes/ot-functions-option-types.php:2312
2150
  msgid "Twitter"
2151
  msgstr ""
2152
 
2153
+ #: ../includes/ot-functions-option-types.php:2317
2154
  msgid "Google+"
2155
  msgstr ""
2156
 
2157
+ #: ../includes/ot-functions-option-types.php:2322
2158
  msgid "LinkedIn"
2159
  msgstr ""
2160
 
2161
+ #: ../includes/ot-functions-option-types.php:2327
2162
  msgid "Pinterest"
2163
  msgstr ""
2164
 
2165
+ #: ../includes/ot-functions-option-types.php:2332
2166
  msgid "Youtube"
2167
  msgstr ""
2168
 
2169
+ #: ../includes/ot-functions-option-types.php:2337
2170
  msgid "Dribbble"
2171
  msgstr ""
2172
 
2173
+ #: ../includes/ot-functions-option-types.php:2342
2174
  msgid "Github"
2175
  msgstr ""
2176
 
2177
+ #: ../includes/ot-functions-option-types.php:2347
2178
  msgid "Forrst"
2179
  msgstr ""
2180
 
2181
+ #: ../includes/ot-functions-option-types.php:2352
2182
  msgid "Digg"
2183
  msgstr ""
2184
 
2185
+ #: ../includes/ot-functions-option-types.php:2357
2186
  msgid "Delicious"
2187
  msgstr ""
2188
 
2189
+ #: ../includes/ot-functions-option-types.php:2362
2190
  msgid "Tumblr"
2191
  msgstr ""
2192
 
2193
+ #: ../includes/ot-functions-option-types.php:2367
2194
  msgid "Skype"
2195
  msgstr ""
2196
 
2197
+ #: ../includes/ot-functions-option-types.php:2372
2198
  msgid "SoundCloud"
2199
  msgstr ""
2200
 
2201
+ #: ../includes/ot-functions-option-types.php:2377
2202
  msgid "Vimeo"
2203
  msgstr ""
2204
 
2205
+ #: ../includes/ot-functions-option-types.php:2382
2206
  msgid "Flickr"
2207
  msgstr ""
2208
 
2209
+ #: ../includes/ot-functions-option-types.php:2387
2210
  msgid "VK.com"
2211
  msgstr ""
2212
 
2213
+ #: ../includes/ot-functions-option-types.php:2493
2214
+ msgid "top"
2215
+ msgstr ""
2216
+
2217
+ #: ../includes/ot-functions-option-types.php:2502
2218
+ msgid "right"
2219
+ msgstr ""
2220
+
2221
+ #: ../includes/ot-functions-option-types.php:2511
2222
+ msgid "bottom"
2223
+ msgstr ""
2224
+
2225
+ #: ../includes/ot-functions-option-types.php:2520
2226
+ msgid "left"
2227
+ msgstr ""
2228
+
2229
+ #: ../includes/ot-functions-option-types.php:2622
2230
+ #: ../includes/ot-functions-option-types.php:2676
2231
  msgid "No Tags Found"
2232
  msgstr ""
2233
 
2234
+ #: ../includes/ot-functions-option-types.php:2734
2235
+ #: ../includes/ot-functions-option-types.php:2791
2236
  msgid "No Taxonomies Found"
2237
  msgstr ""
2238
 
2448
  msgid "Save Layouts"
2449
  msgstr ""
2450
 
2451
+ #: ../includes/ot-settings-api.php:364
2452
  msgid "Reset Options"
2453
  msgstr ""
2454
+
2455
+ #: ../ot-loader.php:21
2456
+ msgid ""
2457
+ "OptionTree is installed as a plugin and also embedded in your current theme. "
2458
+ "Please deactivate the plugin to load the theme dependent version of "
2459
+ "OptionTree, and remove this warning."
2460
+ msgstr ""
ot-loader.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: OptionTree
4
  * Plugin URI: https://github.com/valendesigns/option-tree/
5
  * Description: Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
6
- * Version: 2.4.6
7
  * Author: Derek Herman
8
  * Author URI: http://valendesigns.com
9
  * License: GPLv3
@@ -178,7 +178,7 @@ if ( ! class_exists( 'OT_Loader' ) ) {
178
  /**
179
  * Current Version number.
180
  */
181
- define( 'OT_VERSION', '2.4.6' );
182
 
183
  /**
184
  * For developers: Theme mode.
@@ -489,7 +489,10 @@ if ( ! class_exists( 'OT_Loader' ) ) {
489
 
490
  /* global CSS */
491
  add_action( 'admin_head', array( $this, 'global_admin_css' ) );
492
-
 
 
 
493
  /* dynamic front-end CSS */
494
  add_action( 'wp_enqueue_scripts', 'ot_load_dynamic_css', 999 );
495
 
@@ -519,6 +522,9 @@ if ( ! class_exists( 'OT_Loader' ) ) {
519
 
520
  /* AJAX call to create a new social link */
521
  add_action( 'wp_ajax_add_social_links', array( $this, 'add_social_links' ) );
 
 
 
522
 
523
  // Adds the temporary hacktastic shortcode
524
  add_filter( 'media_view_settings', array( $this, 'shortcode' ), 10, 2 );
@@ -733,6 +739,30 @@ if ( ! class_exists( 'OT_Loader' ) ) {
733
  }
734
 
735
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
736
 
737
  /**
738
  * Filters the media uploader button.
@@ -745,7 +775,7 @@ if ( ! class_exists( 'OT_Loader' ) ) {
745
  public function change_image_button( $translation, $text, $domain ) {
746
  global $pagenow;
747
 
748
- if ( $pagenow == 'themes.php' && 'default' == $domain && 'Insert into post' == $text ) {
749
 
750
  // Once is enough.
751
  remove_filter( 'gettext', array( $this, 'ot_change_image_button' ) );
@@ -770,4 +800,4 @@ if ( ! class_exists( 'OT_Loader' ) ) {
770
  }
771
 
772
  /* End of file ot-loader.php */
773
- /* Location: ./ot-loader.php */
3
  * Plugin Name: OptionTree
4
  * Plugin URI: https://github.com/valendesigns/option-tree/
5
  * Description: Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
6
+ * Version: 2.5.0
7
  * Author: Derek Herman
8
  * Author URI: http://valendesigns.com
9
  * License: GPLv3
178
  /**
179
  * Current Version number.
180
  */
181
+ define( 'OT_VERSION', '2.5.0' );
182
 
183
  /**
184
  * For developers: Theme mode.
489
 
490
  /* global CSS */
491
  add_action( 'admin_head', array( $this, 'global_admin_css' ) );
492
+
493
+ /* Google Fonts front-end CSS */
494
+ add_action( 'wp_enqueue_scripts', 'ot_load_google_fonts_css', 1 );
495
+
496
  /* dynamic front-end CSS */
497
  add_action( 'wp_enqueue_scripts', 'ot_load_dynamic_css', 999 );
498
 
522
 
523
  /* AJAX call to create a new social link */
524
  add_action( 'wp_ajax_add_social_links', array( $this, 'add_social_links' ) );
525
+
526
+ /* AJAX call to retrieve Google Font data */
527
+ add_action( 'wp_ajax_ot_google_font', array( $this, 'retrieve_google_font' ) );
528
 
529
  // Adds the temporary hacktastic shortcode
530
  add_filter( 'media_view_settings', array( $this, 'shortcode' ), 10, 2 );
739
  }
740
 
741
  }
742
+
743
+ /**
744
+ * Returns a JSON encoded Google fonts array.
745
+ *
746
+ * @return array
747
+ *
748
+ * @access public
749
+ * @since 2.5.0
750
+ */
751
+ public function retrieve_google_font() {
752
+
753
+ if ( isset( $_POST['field_id'], $_POST['family'] ) ) {
754
+
755
+ ot_fetch_google_fonts();
756
+
757
+ echo json_encode( array(
758
+ 'variants' => ot_recognized_google_font_variants( $_POST['field_id'], $_POST['family'] ),
759
+ 'subsets' => ot_recognized_google_font_subsets( $_POST['field_id'], $_POST['family'] )
760
+ ) );
761
+ exit();
762
+
763
+ }
764
+
765
+ }
766
 
767
  /**
768
  * Filters the media uploader button.
775
  public function change_image_button( $translation, $text, $domain ) {
776
  global $pagenow;
777
 
778
+ if ( $pagenow == apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) && 'default' == $domain && 'Insert into post' == $text ) {
779
 
780
  // Once is enough.
781
  remove_filter( 'gettext', array( $this, 'ot_change_image_button' ) );
800
  }
801
 
802
  /* End of file ot-loader.php */
803
+ /* Location: ./ot-loader.php */
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: valendesigns
3
  Donate link: http://bit.ly/NuXI3T
4
  Tags: options, theme options, meta boxes
5
- Requires at least: 3.5
6
- Tested up to: 4.0
7
- Stable tag: 2.4.6
8
  License: GPLv3
9
 
10
  Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
@@ -32,16 +32,23 @@ OptionTree is a project partly sponsored by <a href="http://themeforest.net/?ref
32
  This is a complete list of all the available option types that come shipped with OptionTree.
33
 
34
  * Background
 
 
35
  * Category Checkbox
36
  * Category Select
37
  * Checkbox
38
- * Color Picker
 
39
  * CSS
40
  * Custom Post Type Checkbox
41
  * Custom Post Type Select
42
  * Date Picker
43
  * Date Time Picker
 
44
  * Gallery
 
 
 
45
  * List Item
46
  * Measurement
47
  * Numeric Slider
@@ -56,6 +63,7 @@ This is a complete list of all the available option types that come shipped with
56
  * Sidebar Select
57
  * Slider
58
  * Social Links
 
59
  * Tab
60
  * Tag Checkbox
61
  * Tag Select
@@ -118,6 +126,39 @@ The most likely scenario is your theme already has OptionTree installed in Theme
118
 
119
  == Changelog ==
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  = 2.4.6 =
122
  * Hotfix - Added a clean up script to consolidate orphaned media posts and remove the old and unused `wp_option_tree` table.
123
  * Hotfix - Fixed an issue where `ot_get_media_post_ID()` was never able to set the value of the `ot_media_post_ID` option because it was already set to empty. Causing the `ot_create_media_post()` function to create multiple media posts.
2
  Contributors: valendesigns
3
  Donate link: http://bit.ly/NuXI3T
4
  Tags: options, theme options, meta boxes
5
+ Requires at least: 3.8
6
+ Tested up to: 4.2-alpha
7
+ Stable tag: 2.5.0
8
  License: GPLv3
9
 
10
  Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
32
  This is a complete list of all the available option types that come shipped with OptionTree.
33
 
34
  * Background
35
+ * Border
36
+ * Box Shadow
37
  * Category Checkbox
38
  * Category Select
39
  * Checkbox
40
+ * Colorpicker
41
+ * Colorpicker Opacity
42
  * CSS
43
  * Custom Post Type Checkbox
44
  * Custom Post Type Select
45
  * Date Picker
46
  * Date Time Picker
47
+ * Dimension
48
  * Gallery
49
+ * Google Fonts
50
+ * JavaScript
51
+ * Link Color
52
  * List Item
53
  * Measurement
54
  * Numeric Slider
63
  * Sidebar Select
64
  * Slider
65
  * Social Links
66
+ * Spacing
67
  * Tab
68
  * Tag Checkbox
69
  * Tag Select
126
 
127
  == Changelog ==
128
 
129
+ = 2.5.0 =
130
+ * Added the Google Fonts option type. Contributors via github @maimairel, and @valendesigns.
131
+ * Added the Border option type. Contributors via github @doitmax, and @valendesigns.
132
+ * Added the Box Shadow option type. Contributors via github @doitmax, and @valendesigns.
133
+ * Added the Colorpicker Opacity option type. Contributors via github @doitmax, and @valendesigns.
134
+ * Added the Dimension option type. Contributors via github @doitmax, and @valendesigns.
135
+ * Added the JavaScript option type.
136
+ * Added the Link Color option type. Contributors via github @doitmax, and @valendesigns.
137
+ * Added the Spacing option type. Contributors via github @doitmax, and @valendesigns.
138
+ * Fixed an issue where the Colorpicker was not parsing conditions on `change` or `clear`.
139
+ * Fixed the Colorpicker styles on mobile devices.
140
+ * Show the Colorpicker setting ID inside the error message string when the value is invalid.
141
+ * Added an 'on change' trigger to the Numeric Slider's hidden input. Contributors via github @cubell.
142
+ * Stop Theme Check from complaining about the `register_post_type()` function being used in Theme Mode.
143
+ * Added styles that clean up the appearance of the included Font Awesome icons in section tabs.
144
+ * Fixed jQuery UI style conflicts created by the WP Review plugin.
145
+ * Changed the sanitization function from `sanitize_text_field` to `esc_url_raw` for the Upload option type.
146
+ * Added filter `ot_dequeue_jquery_ui_css_screen_ids` to dequeue `jquery-ui-css` by screen ID.
147
+ * Added filter `ot_on_off_switch_on_value` to filter the value of the On button. Contributors via github @BassemN, and @valendesigns.
148
+ * Added filter `ot_on_off_switch_on_label` to filter the label of the On button. Contributors via github @BassemN, and @valendesigns.
149
+ * Added filter `ot_on_off_switch_off_value` to filter the value of the Off button. Contributors via github @BassemN, and @valendesigns.
150
+ * Added filter `ot_on_off_switch_off_label` to filter the label of the Off button. Contributors via github @BassemN, and @valendesigns.
151
+ * Added filter `ot_on_off_switch_width` to filter the width of the On/Off switch.
152
+ * Added filter `ot_type_date_picker_readonly` to filter the addition of the readonly attribute.
153
+ * Added filter `ot_type_date_time_picker_readonly` to filter the addition of the readonly attribute.
154
+ * Added filter `ot_admin_menu_priority` to filter the `admin_menu` action hook priority.
155
+ * Added Estonian translation. Contributors via github @tjuris, and @RistoNiinemets.
156
+ * Fixed an issue where changes to `theme-options.php` required a second page load.
157
+ * Fixed the clean up script, it only displays when there's something to clean up. No more menu item!
158
+ * Update demo files with the latest option types.
159
+ * Changed where `ot_css_file_paths` is saved when `is_multisite` for better `dynamic.css` file support.
160
+ * Changed the default `dynamic.css` file path in multisite to be `dynamic-{current-blog-id}.css`.
161
+
162
  = 2.4.6 =
163
  * Hotfix - Added a clean up script to consolidate orphaned media posts and remove the old and unused `wp_option_tree` table.
164
  * Hotfix - Fixed an issue where `ot_get_media_post_ID()` was never able to set the value of the `ot_media_post_ID` option because it was already set to empty. Causing the `ot_create_media_post()` function to create multiple media posts.