Ultimate Member – User Profile & Membership Plugin - Version 1.3.73

Version Description

Download this release

Release Info

Developer champsupertramp
Plugin Icon 128x128 Ultimate Member – User Profile & Membership Plugin
Version 1.3.73
Comparing to
See all releases

Code changes from version 1.3.72 to 1.3.73

Files changed (89) hide show
  1. addons/bp_avatar_transfer.php +98 -98
  2. addons/generate_random_users.php +260 -260
  3. addons/gravatar_transfer.php +82 -82
  4. addons/system_info.php +410 -410
  5. admin/assets/css/um-admin-builder.css +301 -301
  6. admin/assets/css/um-admin-columns.css +66 -66
  7. admin/assets/css/um-admin-dashboard.css +127 -127
  8. admin/assets/css/um-admin-form.css +60 -60
  9. admin/assets/css/um-admin-global.css +89 -89
  10. admin/assets/css/um-admin-menu.css +2 -2
  11. admin/assets/css/um-admin-misc.css +259 -259
  12. admin/assets/css/um-admin-modal.css +297 -297
  13. admin/assets/css/um-admin-redux.css +226 -226
  14. admin/assets/css/um-admin-rtl.css +73 -73
  15. admin/assets/css/um-admin-select2.css +192 -192
  16. admin/assets/js/um-admin-ajax.js +52 -52
  17. admin/assets/js/um-admin-builder.js +41 -41
  18. admin/assets/js/um-admin-dashboard.js +2 -2
  19. admin/assets/js/um-admin-dragdrop.js +409 -409
  20. admin/assets/js/um-admin-field.js +88 -88
  21. admin/assets/js/um-admin-form.js +37 -37
  22. admin/assets/js/um-admin-modal.js +364 -331
  23. admin/assets/js/um-admin-scripts.js +194 -194
  24. admin/assets/js/um-admin-users.js +30 -30
  25. admin/core/lib/ReduxFramework/.jshintrc +0 -19
  26. admin/core/lib/ReduxFramework/CHANGELOG.md +0 -1857
  27. admin/core/lib/ReduxFramework/CONTRIBUTING.md +0 -27
  28. admin/core/lib/ReduxFramework/Gruntfile.js +0 -439
  29. admin/core/lib/ReduxFramework/ReduxCore/assets/css/select2.css +0 -704
  30. admin/core/lib/ReduxFramework/ReduxCore/assets/js/ace.min.js +0 -11
  31. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/README.md +0 -114
  32. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/release.sh +0 -79
  33. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-bootstrap.css +0 -87
  34. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-spinner.gif +0 -0
  35. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.css +0 -704
  36. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.jquery.json +0 -36
  37. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.js +0 -3541
  38. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.min.js +0 -23
  39. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.png +0 -0
  40. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ar.js +0 -19
  41. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_az.js +0 -20
  42. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_bg.js +0 -20
  43. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ca.js +0 -19
  44. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_cs.js +0 -51
  45. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_da.js +0 -19
  46. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_de.js +0 -18
  47. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_el.js +0 -19
  48. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template +0 -20
  49. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_es.js +0 -19
  50. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_et.js +0 -19
  51. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_eu.js +0 -45
  52. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fa.js +0 -21
  53. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fi.js +0 -30
  54. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fr.js +0 -18
  55. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_gl.js +0 -45
  56. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_he.js +0 -19
  57. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hr.js +0 -24
  58. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hu.js +0 -17
  59. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_id.js +0 -19
  60. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_is.js +0 -17
  61. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_it.js +0 -17
  62. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ja.js +0 -17
  63. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ka.js +0 -19
  64. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ko.js +0 -19
  65. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lt.js +0 -26
  66. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lv.js +0 -19
  67. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_mk.js +0 -19
  68. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ms.js +0 -19
  69. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_nb.js +0 -22
  70. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_nl.js +0 -17
  71. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pl.js +0 -54
  72. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js +0 -18
  73. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js +0 -17
  74. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ro.js +0 -17
  75. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_rs.js +0 -19
  76. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ru.js +0 -23
  77. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sk.js +0 -50
  78. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sv.js +0 -19
  79. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_th.js +0 -19
  80. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_tr.js +0 -19
  81. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ug-CN.js +0 -16
  82. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_uk.js +0 -25
  83. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_vi.js +0 -20
  84. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js +0 -16
  85. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js +0 -16
  86. admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2x2.png +0 -0
  87. admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_themecheck.php +0 -123
  88. admin/core/lib/ReduxFramework/ReduxCore/inc/debug.php +0 -84
  89. admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/ace.js +0 -1
addons/bp_avatar_transfer.php CHANGED
@@ -1,99 +1,99 @@
1
- <?php
2
-
3
- class UM_ADDON_bp_avatar_transfer {
4
-
5
- function __construct() {
6
-
7
- add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
-
9
- add_action('admin_init', array(&$this, 'admin_init'), 1);
10
-
11
- add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
-
13
- }
14
-
15
- function admin_menu() {
16
-
17
- global $ultimatemember;
18
- $this->addon = $ultimatemember->addons['bp_avatar_transfer'];
19
- add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'bp_avatar_transfer', array(&$this, 'content') );
20
-
21
- }
22
-
23
- function um_admin_addon_hook( $hook ) {
24
- global $ultimatemember;
25
- switch( $hook ) {
26
- case 'bp_avatar_transfer':
27
- if ( class_exists('BuddyPress') ) {
28
-
29
- $path = bp_core_avatar_upload_path() . '/avatars';
30
-
31
- $files = glob( $path . '/*');
32
- $i = 0;
33
- foreach( $files as $key ) {
34
- $q = (count(glob("$key/*")) === 0) ? 0 : 1;
35
- if ( $q == 1 ) {
36
- $photo = glob( $key . '/*');
37
- foreach( $photo as $file ) {
38
- if ( strstr( $file, 'bpfull' ) ) {
39
- $get_user_id = explode('/', $file);
40
- array_pop($get_user_id);
41
- $user_id = end($get_user_id);
42
- if ( !file_exists( $ultimatemember->files->upload_basedir . $user_id . '/profile_photo.jpg' ) ) {
43
- $ultimatemember->files->new_user( $user_id );
44
- copy( $file, $ultimatemember->files->upload_basedir . $user_id . '/profile_photo.jpg' );
45
- update_user_meta($user_id, 'profile_photo', 'profile_photo.jpg');
46
- $i++;
47
- }
48
- }
49
- }
50
- }
51
- }
52
-
53
- $this->content = '<p><strong>Done. Process completed!</p>';
54
- $this->content .= $i . ' user(s) changed.</strong></p>';
55
-
56
- }
57
- break;
58
- }
59
- }
60
-
61
- function admin_init() {
62
- if ( isset( $_REQUEST['um-addon-hook'] ) ) {
63
- $hook = $_REQUEST['um-addon-hook'];
64
- do_action("um_admin_addon_hook", $hook);
65
- }
66
- }
67
-
68
- function content() {
69
-
70
- $this->process_link = add_query_arg('um-addon-hook','bp_avatar_transfer');
71
-
72
- ?>
73
-
74
- <div class="wrap">
75
-
76
- <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
77
-
78
- <h3><?php echo $this->addon[0]; ?></h3>
79
-
80
- <?php if ( isset( $this->content ) ) {
81
- echo $this->content;
82
- } else { ?>
83
-
84
- <p>This tool allows you to move all custom user photos/avatars from BuddyPress to Ultimate Member platform. This can help you If you are switching from BuddyPress.</p>
85
- <p>Depending on your users database, this could take a few moments. To start the process, click the following button.</p>
86
-
87
- <p><a href="<?php echo $this->process_link; ?>" class="button button-primary">Start transferring avatars</a></p>
88
-
89
- <?php } ?>
90
-
91
- </div><div class="clear"></div>
92
-
93
- <?php
94
-
95
- }
96
-
97
- }
98
-
99
  $UM_ADDON_bp_avatar_transfer = new UM_ADDON_bp_avatar_transfer();
1
+ <?php
2
+
3
+ class UM_ADDON_bp_avatar_transfer {
4
+
5
+ function __construct() {
6
+
7
+ add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
+
9
+ add_action('admin_init', array(&$this, 'admin_init'), 1);
10
+
11
+ add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
+
13
+ }
14
+
15
+ function admin_menu() {
16
+
17
+ global $ultimatemember;
18
+ $this->addon = $ultimatemember->addons['bp_avatar_transfer'];
19
+ add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'bp_avatar_transfer', array(&$this, 'content') );
20
+
21
+ }
22
+
23
+ function um_admin_addon_hook( $hook ) {
24
+ global $ultimatemember;
25
+ switch( $hook ) {
26
+ case 'bp_avatar_transfer':
27
+ if ( class_exists('BuddyPress') ) {
28
+
29
+ $path = bp_core_avatar_upload_path() . '/avatars';
30
+
31
+ $files = glob( $path . '/*');
32
+ $i = 0;
33
+ foreach( $files as $key ) {
34
+ $q = (count(glob("$key/*")) === 0) ? 0 : 1;
35
+ if ( $q == 1 ) {
36
+ $photo = glob( $key . '/*');
37
+ foreach( $photo as $file ) {
38
+ if ( strstr( $file, 'bpfull' ) ) {
39
+ $get_user_id = explode('/', $file);
40
+ array_pop($get_user_id);
41
+ $user_id = end($get_user_id);
42
+ if ( !file_exists( $ultimatemember->files->upload_basedir . $user_id . '/profile_photo.jpg' ) ) {
43
+ $ultimatemember->files->new_user( $user_id );
44
+ copy( $file, $ultimatemember->files->upload_basedir . $user_id . '/profile_photo.jpg' );
45
+ update_user_meta($user_id, 'profile_photo', 'profile_photo.jpg');
46
+ $i++;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ $this->content = '<p><strong>Done. Process completed!</p>';
54
+ $this->content .= $i . ' user(s) changed.</strong></p>';
55
+
56
+ }
57
+ break;
58
+ }
59
+ }
60
+
61
+ function admin_init() {
62
+ if ( isset( $_REQUEST['um-addon-hook'] ) ) {
63
+ $hook = $_REQUEST['um-addon-hook'];
64
+ do_action("um_admin_addon_hook", $hook);
65
+ }
66
+ }
67
+
68
+ function content() {
69
+
70
+ $this->process_link = add_query_arg('um-addon-hook','bp_avatar_transfer');
71
+
72
+ ?>
73
+
74
+ <div class="wrap">
75
+
76
+ <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
77
+
78
+ <h3><?php echo $this->addon[0]; ?></h3>
79
+
80
+ <?php if ( isset( $this->content ) ) {
81
+ echo $this->content;
82
+ } else { ?>
83
+
84
+ <p>This tool allows you to move all custom user photos/avatars from BuddyPress to Ultimate Member platform. This can help you If you are switching from BuddyPress.</p>
85
+ <p>Depending on your users database, this could take a few moments. To start the process, click the following button.</p>
86
+
87
+ <p><a href="<?php echo $this->process_link; ?>" class="button button-primary">Start transferring avatars</a></p>
88
+
89
+ <?php } ?>
90
+
91
+ </div><div class="clear"></div>
92
+
93
+ <?php
94
+
95
+ }
96
+
97
+ }
98
+
99
  $UM_ADDON_bp_avatar_transfer = new UM_ADDON_bp_avatar_transfer();
addons/generate_random_users.php CHANGED
@@ -1,261 +1,261 @@
1
- <?php
2
-
3
- class UM_ADDON_generate_random_users {
4
-
5
- function __construct() {
6
-
7
- add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
-
9
- add_action('admin_init', array(&$this, 'admin_init'), 1);
10
-
11
- add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
-
13
- }
14
-
15
-
16
- function admin_menu() {
17
-
18
- global $ultimatemember;
19
- $this->addon = $ultimatemember->addons['generate_random_users'];
20
- add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'generate_random_users', array(&$this, 'content') );
21
-
22
- }
23
-
24
- function um_admin_addon_hook( $hook ) {
25
- global $ultimatemember;
26
-
27
- switch ( $hook ) {
28
- case 'generate_random_users':
29
- $json_url = "https://randomuser.me/api/";
30
-
31
- $arr_post_header = array( );
32
-
33
- if( isset( $_GET['gender'] ) ){
34
- $gender = $_GET['gender'];
35
- if( $gender != 'both' ){
36
- $json_url = add_query_arg('gender', $gender, $json_url );
37
- $arr_post_header['gender'] = $gender;
38
- }
39
- }
40
-
41
- if( isset( $_GET['nationality'] ) ){
42
- $nationality = implode(",", $_GET['nationality']);
43
- if( ! empty( $nationality ) ){
44
- $json_url = add_query_arg('nat', $nationality, $json_url );
45
- }
46
- $arr_post_header['nat'] = $nationality;
47
- }
48
-
49
- if( isset( $_GET['total_users'] ) ){
50
- $total_users = intval( $_GET['total_users'] );
51
- $json_url = add_query_arg('results', $total_users, $json_url );
52
- $arr_post_header['results'] = $total_users;
53
- }
54
-
55
-
56
- $response = wp_remote_get( $json_url, array('timeout' => 120 ) );
57
- $json = '';
58
-
59
- if( is_array($response) ) {
60
- if( isset( $response['body'] ) && ! empty( $response['body'] ) ){
61
- $json = json_decode( $response['body'] );
62
- }
63
- }
64
-
65
- if( is_wp_error( $response ) ){
66
- wp_die( $response->get_error_message() );
67
- }
68
-
69
- if( ! empty( $json ) ){
70
-
71
- remove_action('um_after_new_user_register', 'um_after_new_user_register', 10, 2);
72
-
73
- $failed_dummies = 0;
74
- $default_role = um_get_option("default_role");
75
-
76
- foreach( $json->results as $dummy ){
77
-
78
- if( isset( $_GET['password'] ) && ! empty( $_GET['password'] ) ){
79
- $password = $_GET['password'];
80
- }else{
81
- $password = wp_generate_password( 8, false );
82
- }
83
-
84
- $site_url = @$_SERVER['SERVER_NAME'];
85
- $random_generate = wp_generate_password( 4, false );
86
-
87
- if( username_exists( $dummy->login->username ) ){
88
- $dummy->login->username = $dummy->login->username.'_'. $random_generate;
89
- }
90
-
91
- $dummy->login->email = $dummy->login->username."_dummy@{$site_url}";
92
-
93
- if( email_exists( $dummy->login->email ) ){
94
- $dummy->login->email = $dummy->login->username."_dummy_{$random_generate}@{$site_url}";
95
- }
96
-
97
- $userdata = array(
98
- 'display_name' => ucfirst( $dummy->name->first )." ".ucfirst( $dummy->name->last ),
99
- 'first_name' => ucfirst( $dummy->name->first ),
100
- 'last_name' => ucfirst( $dummy->name->last ),
101
- 'user_email' => $dummy->login->email,
102
- 'user_login' => $dummy->login->username,
103
- 'user_pass' => $password,
104
- );
105
-
106
- $user_id = wp_insert_user( $userdata );
107
-
108
- if( is_wp_error( $user_id ) ){
109
- $failed_dummies++;
110
- }
111
-
112
- $usermeta = array(
113
- 'synced_profile_photo' => $dummy->picture->large,
114
- 'gender' => ucfirst($dummy->gender),
115
- 'birth_date' => date("Y/m/d", strtotime( $dummy->dob) ),
116
- '_um_last_login' => date("Y/m/d", strtotime( $dummy->registered ) ),
117
- 'mobile_number' => $dummy->cell,
118
- 'phone_number' => $dummy->phone,
119
- 'synced_gravatar_hashed_id' => md5( strtolower( trim( $dummy->email ) ) ),
120
- 'account_status' => 'approved',
121
- '_um_profile_dummy' => true,
122
- 'role' => isset( $default_role ) ? $default_role: 'member'
123
- );
124
-
125
- if( isset( $_GET['add_cover_photo'] ) && $_GET['add_cover_photo'] == 1 ){
126
-
127
- $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
128
- $color = $rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
129
-
130
- $usermeta['synced_cover_photo'] = 'http://placehold.it/650x350/'.$color.'/'.$color;
131
-
132
- }
133
-
134
- foreach ( $usermeta as $key => $value ) {
135
- update_user_meta( $user_id, $key, $value );
136
- }
137
-
138
-
139
- }
140
- wp_redirect( admin_url("admin.php?page=generate_random_users") ); exit;
141
- }
142
-
143
- break;
144
-
145
- case 'remove_random_users':
146
-
147
- $dummies = new WP_User_Query(
148
- array(
149
- 'fields' => array('ID'),
150
- 'meta_key' => '_um_profile_dummy',
151
- 'meta_value' => true,
152
- 'meta_compare' => '='
153
- )
154
- );
155
-
156
- if( $dummies->total_users > 0 ){
157
- foreach ( $dummies->get_results() as $dummy ) {
158
-
159
- if( isset( $dummy->ID ) ){
160
- wp_delete_user( $dummy->ID );
161
- }
162
-
163
- }
164
- }
165
-
166
- delete_option('um_generated_dumies');
167
- wp_redirect( admin_url("admin.php?page=generate_random_users") );
168
- exit;
169
-
170
- break;
171
-
172
- default:
173
-
174
- break;
175
- }
176
-
177
- }
178
-
179
- function admin_init() {
180
- if ( isset( $_REQUEST['um-addon-hook'] ) ) {
181
- $hook = $_REQUEST['um-addon-hook'];
182
- do_action("um_admin_addon_hook", $hook );
183
- }
184
- }
185
-
186
- function content() {
187
-
188
- ?>
189
-
190
- <div class="wrap">
191
-
192
- <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
193
-
194
- <h3><?php echo $this->addon[0]; ?></h3>
195
-
196
- <?php if ( isset( $this->content ) ) {
197
- echo $this->content;
198
- } else { ?>
199
-
200
- <p>This tool allows you to add dummies as Ultimate Member users. </p>
201
- <?php
202
- $dummies = new WP_User_Query(
203
- array(
204
- 'fields' => array('ID'),
205
- 'meta_key' => '_um_profile_dummy',
206
- 'meta_value' => true,
207
- 'meta_compare' => '='
208
- )
209
- );
210
- ?>
211
- <?php if( $dummies->total_users > 0 ): ?>
212
- <form method="get">
213
- <p>
214
- &nbsp;<input type="submit" class="button button-secondary" value="Remove Generated Dummies (<?php echo $dummies->total_users;?>)"/>
215
- <input type="hidden" name="um-addon-hook" value="remove_random_users"/>
216
- <input type="hidden" name="page" value="generate_random_users"/>
217
- </form>
218
- <br/>
219
- <?php endif; ?>
220
- <form method="get">
221
- <label for="total_users">How many dummies? <br/><input type="text" name="total_users" value="30" /> <br/><br/>
222
- <label for="gender">Gender:</label> <br/>
223
- <label><input type='radio' name="gender" value="male"/> Male</label> <br/>
224
- <label><input type='radio' name="gender" value="female"/> Female</label> <br/>
225
- <label><input type='radio' checked="checked" name="gender" value="both"/> Both</label>
226
- <br/><br/>
227
- <label for="nationality">Available Nationalities:</label><br/>
228
- <select style="width:150px" name="nationality[]" multiple>
229
- <?php
230
- $nationality = array( 'AU', 'BR', 'CA', 'CH', 'DE', 'DK', 'ES', 'FI', 'FR', 'GB', 'IE', 'IR', 'NL', 'NZ', 'TR', 'US' );
231
- foreach ($nationality as $code ) {
232
- $value = strtolower($code);
233
- echo "<option value='".$value."'/> ".$code."</option>";
234
- }
235
- ?>
236
- </select>
237
- <br/><br/>
238
- <label for="add_cover_photo"><input type="checkbox" name="add_cover_photo" value="1" />
239
- Add cover photos?</label>
240
- <br/><small>Generates random colored cover photos</small>
241
- <br/><br/>
242
- <label for="password">
243
- Account Passwords:
244
- <input type="password" name="password" />
245
- <br/><small>if you leave this blank, it will generate random strings password</small>
246
- </label>
247
- <br/>
248
- <input type="submit" class="button button-primary" value="Start Generating Dummies"/>
249
- <input type="hidden" name="um-addon-hook" value="generate_random_users"/>
250
-
251
- <?php } ?>
252
- </form>
253
-
254
- </div><div class="clear"></div>
255
-
256
- <?php
257
-
258
- }
259
- }
260
-
261
  $UM_ADDON_generate_random_users = new UM_ADDON_generate_random_users ();
1
+ <?php
2
+
3
+ class UM_ADDON_generate_random_users {
4
+
5
+ function __construct() {
6
+
7
+ add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
+
9
+ add_action('admin_init', array(&$this, 'admin_init'), 1);
10
+
11
+ add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
+
13
+ }
14
+
15
+
16
+ function admin_menu() {
17
+
18
+ global $ultimatemember;
19
+ $this->addon = $ultimatemember->addons['generate_random_users'];
20
+ add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'generate_random_users', array(&$this, 'content') );
21
+
22
+ }
23
+
24
+ function um_admin_addon_hook( $hook ) {
25
+ global $ultimatemember;
26
+
27
+ switch ( $hook ) {
28
+ case 'generate_random_users':
29
+ $json_url = "https://randomuser.me/api/";
30
+
31
+ $arr_post_header = array( );
32
+
33
+ if( isset( $_GET['gender'] ) ){
34
+ $gender = $_GET['gender'];
35
+ if( $gender != 'both' ){
36
+ $json_url = add_query_arg('gender', $gender, $json_url );
37
+ $arr_post_header['gender'] = $gender;
38
+ }
39
+ }
40
+
41
+ if( isset( $_GET['nationality'] ) ){
42
+ $nationality = implode(",", $_GET['nationality']);
43
+ if( ! empty( $nationality ) ){
44
+ $json_url = add_query_arg('nat', $nationality, $json_url );
45
+ }
46
+ $arr_post_header['nat'] = $nationality;
47
+ }
48
+
49
+ if( isset( $_GET['total_users'] ) ){
50
+ $total_users = intval( $_GET['total_users'] );
51
+ $json_url = add_query_arg('results', $total_users, $json_url );
52
+ $arr_post_header['results'] = $total_users;
53
+ }
54
+
55
+
56
+ $response = wp_remote_get( $json_url, array('timeout' => 120 ) );
57
+ $json = '';
58
+
59
+ if( is_array($response) ) {
60
+ if( isset( $response['body'] ) && ! empty( $response['body'] ) ){
61
+ $json = json_decode( $response['body'] );
62
+ }
63
+ }
64
+
65
+ if( is_wp_error( $response ) ){
66
+ wp_die( $response->get_error_message() );
67
+ }
68
+
69
+ if( ! empty( $json ) ){
70
+
71
+ remove_action('um_after_new_user_register', 'um_after_new_user_register', 10, 2);
72
+
73
+ $failed_dummies = 0;
74
+ $default_role = um_get_option("default_role");
75
+
76
+ foreach( $json->results as $dummy ){
77
+
78
+ if( isset( $_GET['password'] ) && ! empty( $_GET['password'] ) ){
79
+ $password = $_GET['password'];
80
+ }else{
81
+ $password = wp_generate_password( 8, false );
82
+ }
83
+
84
+ $site_url = @$_SERVER['SERVER_NAME'];
85
+ $random_generate = wp_generate_password( 4, false );
86
+
87
+ if( username_exists( $dummy->login->username ) ){
88
+ $dummy->login->username = $dummy->login->username.'_'. $random_generate;
89
+ }
90
+
91
+ $dummy->login->email = $dummy->login->username."_dummy@{$site_url}";
92
+
93
+ if( email_exists( $dummy->login->email ) ){
94
+ $dummy->login->email = $dummy->login->username."_dummy_{$random_generate}@{$site_url}";
95
+ }
96
+
97
+ $userdata = array(
98
+ 'display_name' => ucfirst( $dummy->name->first )." ".ucfirst( $dummy->name->last ),
99
+ 'first_name' => ucfirst( $dummy->name->first ),
100
+ 'last_name' => ucfirst( $dummy->name->last ),
101
+ 'user_email' => $dummy->login->email,
102
+ 'user_login' => $dummy->login->username,
103
+ 'user_pass' => $password,
104
+ );
105
+
106
+ $user_id = wp_insert_user( $userdata );
107
+
108
+ if( is_wp_error( $user_id ) ){
109
+ $failed_dummies++;
110
+ }
111
+
112
+ $usermeta = array(
113
+ 'synced_profile_photo' => $dummy->picture->large,
114
+ 'gender' => ucfirst($dummy->gender),
115
+ 'birth_date' => date("Y/m/d", strtotime( $dummy->dob) ),
116
+ '_um_last_login' => date("Y/m/d", strtotime( $dummy->registered ) ),
117
+ 'mobile_number' => $dummy->cell,
118
+ 'phone_number' => $dummy->phone,
119
+ 'synced_gravatar_hashed_id' => md5( strtolower( trim( $dummy->email ) ) ),
120
+ 'account_status' => 'approved',
121
+ '_um_profile_dummy' => true,
122
+ 'role' => isset( $default_role ) ? $default_role: 'member'
123
+ );
124
+
125
+ if( isset( $_GET['add_cover_photo'] ) && $_GET['add_cover_photo'] == 1 ){
126
+
127
+ $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
128
+ $color = $rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];
129
+
130
+ $usermeta['synced_cover_photo'] = 'http://placehold.it/650x350/'.$color.'/'.$color;
131
+
132
+ }
133
+
134
+ foreach ( $usermeta as $key => $value ) {
135
+ update_user_meta( $user_id, $key, $value );
136
+ }
137
+
138
+
139
+ }
140
+ wp_redirect( admin_url("admin.php?page=generate_random_users") ); exit;
141
+ }
142
+
143
+ break;
144
+
145
+ case 'remove_random_users':
146
+
147
+ $dummies = new WP_User_Query(
148
+ array(
149
+ 'fields' => array('ID'),
150
+ 'meta_key' => '_um_profile_dummy',
151
+ 'meta_value' => true,
152
+ 'meta_compare' => '='
153
+ )
154
+ );
155
+
156
+ if( $dummies->total_users > 0 ){
157
+ foreach ( $dummies->get_results() as $dummy ) {
158
+
159
+ if( isset( $dummy->ID ) ){
160
+ wp_delete_user( $dummy->ID );
161
+ }
162
+
163
+ }
164
+ }
165
+
166
+ delete_option('um_generated_dumies');
167
+ wp_redirect( admin_url("admin.php?page=generate_random_users") );
168
+ exit;
169
+
170
+ break;
171
+
172
+ default:
173
+
174
+ break;
175
+ }
176
+
177
+ }
178
+
179
+ function admin_init() {
180
+ if ( isset( $_REQUEST['um-addon-hook'] ) ) {
181
+ $hook = $_REQUEST['um-addon-hook'];
182
+ do_action("um_admin_addon_hook", $hook );
183
+ }
184
+ }
185
+
186
+ function content() {
187
+
188
+ ?>
189
+
190
+ <div class="wrap">
191
+
192
+ <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
193
+
194
+ <h3><?php echo $this->addon[0]; ?></h3>
195
+
196
+ <?php if ( isset( $this->content ) ) {
197
+ echo $this->content;
198
+ } else { ?>
199
+
200
+ <p>This tool allows you to add dummies as Ultimate Member users. </p>
201
+ <?php
202
+ $dummies = new WP_User_Query(
203
+ array(
204
+ 'fields' => array('ID'),
205
+ 'meta_key' => '_um_profile_dummy',
206
+ 'meta_value' => true,
207
+ 'meta_compare' => '='
208
+ )
209
+ );
210
+ ?>
211
+ <?php if( $dummies->total_users > 0 ): ?>
212
+ <form method="get">
213
+ <p>
214
+ &nbsp;<input type="submit" class="button button-secondary" value="Remove Generated Dummies (<?php echo $dummies->total_users;?>)"/>
215
+ <input type="hidden" name="um-addon-hook" value="remove_random_users"/>
216
+ <input type="hidden" name="page" value="generate_random_users"/>
217
+ </form>
218
+ <br/>
219
+ <?php endif; ?>
220
+ <form method="get">
221
+ <label for="total_users">How many dummies? <br/><input type="text" name="total_users" value="30" /> <br/><br/>
222
+ <label for="gender">Gender:</label> <br/>
223
+ <label><input type='radio' name="gender" value="male"/> Male</label> <br/>
224
+ <label><input type='radio' name="gender" value="female"/> Female</label> <br/>
225
+ <label><input type='radio' checked="checked" name="gender" value="both"/> Both</label>
226
+ <br/><br/>
227
+ <label for="nationality">Available Nationalities:</label><br/>
228
+ <select style="width:150px" name="nationality[]" multiple>
229
+ <?php
230
+ $nationality = array( 'AU', 'BR', 'CA', 'CH', 'DE', 'DK', 'ES', 'FI', 'FR', 'GB', 'IE', 'IR', 'NL', 'NZ', 'TR', 'US' );
231
+ foreach ($nationality as $code ) {
232
+ $value = strtolower($code);
233
+ echo "<option value='".$value."'/> ".$code."</option>";
234
+ }
235
+ ?>
236
+ </select>
237
+ <br/><br/>
238
+ <label for="add_cover_photo"><input type="checkbox" name="add_cover_photo" value="1" />
239
+ Add cover photos?</label>
240
+ <br/><small>Generates random colored cover photos</small>
241
+ <br/><br/>
242
+ <label for="password">
243
+ Account Passwords:
244
+ <input type="password" name="password" />
245
+ <br/><small>if you leave this blank, it will generate random strings password</small>
246
+ </label>
247
+ <br/>
248
+ <input type="submit" class="button button-primary" value="Start Generating Dummies"/>
249
+ <input type="hidden" name="um-addon-hook" value="generate_random_users"/>
250
+
251
+ <?php } ?>
252
+ </form>
253
+
254
+ </div><div class="clear"></div>
255
+
256
+ <?php
257
+
258
+ }
259
+ }
260
+
261
  $UM_ADDON_generate_random_users = new UM_ADDON_generate_random_users ();
addons/gravatar_transfer.php CHANGED
@@ -1,83 +1,83 @@
1
- <?php
2
-
3
- class UM_ADDON_gravatar_transfer {
4
-
5
- function __construct() {
6
-
7
- add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
-
9
- add_action('admin_init', array(&$this, 'admin_init'), 1);
10
-
11
- add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
-
13
- }
14
-
15
- function gravatar_hash(){
16
- global $wpdb;
17
- $wpdb->query('DELETE FROM '.$wpdb->usermeta.' WHERE meta_key = "synced_gravatar_hashed_id" ');
18
-
19
- $wpdb->query('INSERT INTO '.$wpdb->usermeta.'(user_id, meta_key, meta_value)
20
- SELECT ID, "synced_gravatar_hashed_id", MD5( LOWER( TRIM(user_email) ) ) FROM '.$wpdb->users.' ');
21
-
22
- return true;
23
- }
24
-
25
- function admin_menu() {
26
-
27
- global $ultimatemember;
28
- $this->addon = $ultimatemember->addons['gravatar_transfer'];
29
- add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'gravatar_transfer', array(&$this, 'content') );
30
-
31
- }
32
-
33
- function um_admin_addon_hook( $hook ) {
34
- global $ultimatemember;
35
- switch( $hook ) {
36
- case 'gravatar_transfer':
37
- if( $this->gravatar_hash() ){
38
- $this->content = '<p><strong>Done. Process completed!</p>';
39
- $result = count_users();
40
- $this->content .= $result['total_users'] . ' user(s) changed.</strong></p>';
41
- }
42
- break;
43
- }
44
- }
45
-
46
- function admin_init() {
47
- if ( isset( $_REQUEST['um-addon-hook'] ) ) {
48
- $hook = $_REQUEST['um-addon-hook'];
49
- do_action("um_admin_addon_hook", $hook);
50
- }
51
- }
52
-
53
- function content() {
54
-
55
- $this->process_link = add_query_arg('um-addon-hook','gravatar_transfer');
56
-
57
- ?>
58
-
59
- <div class="wrap">
60
-
61
- <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
62
-
63
- <h3><?php echo $this->addon[0]; ?></h3>
64
-
65
- <?php if ( isset( $this->content ) ) {
66
- echo $this->content;
67
- } else { ?>
68
-
69
- <p>This tool allows you to add gravatars to Ultimate Member users. This can help you to link gravatar photos to user accounts with their email address.</p>
70
- <p>Depending on your users database, this could take a few moments. To start the process, click the following button.</p>
71
-
72
- <p><a href="<?php echo $this->process_link; ?>" class="button button-primary">Start adding gravatars</a></p>
73
-
74
- <?php } ?>
75
-
76
- </div><div class="clear"></div>
77
-
78
- <?php
79
-
80
- }
81
- }
82
-
83
  $UM_ADDON_gravatar_transfer = new UM_ADDON_gravatar_transfer();
1
+ <?php
2
+
3
+ class UM_ADDON_gravatar_transfer {
4
+
5
+ function __construct() {
6
+
7
+ add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
+
9
+ add_action('admin_init', array(&$this, 'admin_init'), 1);
10
+
11
+ add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
+
13
+ }
14
+
15
+ function gravatar_hash(){
16
+ global $wpdb;
17
+ $wpdb->query('DELETE FROM '.$wpdb->usermeta.' WHERE meta_key = "synced_gravatar_hashed_id" ');
18
+
19
+ $wpdb->query('INSERT INTO '.$wpdb->usermeta.'(user_id, meta_key, meta_value)
20
+ SELECT ID, "synced_gravatar_hashed_id", MD5( LOWER( TRIM(user_email) ) ) FROM '.$wpdb->users.' ');
21
+
22
+ return true;
23
+ }
24
+
25
+ function admin_menu() {
26
+
27
+ global $ultimatemember;
28
+ $this->addon = $ultimatemember->addons['gravatar_transfer'];
29
+ add_submenu_page('ultimatemember', $this->addon[0], $this->addon[0], 'manage_options', 'gravatar_transfer', array(&$this, 'content') );
30
+
31
+ }
32
+
33
+ function um_admin_addon_hook( $hook ) {
34
+ global $ultimatemember;
35
+ switch( $hook ) {
36
+ case 'gravatar_transfer':
37
+ if( $this->gravatar_hash() ){
38
+ $this->content = '<p><strong>Done. Process completed!</p>';
39
+ $result = count_users();
40
+ $this->content .= $result['total_users'] . ' user(s) changed.</strong></p>';
41
+ }
42
+ break;
43
+ }
44
+ }
45
+
46
+ function admin_init() {
47
+ if ( isset( $_REQUEST['um-addon-hook'] ) ) {
48
+ $hook = $_REQUEST['um-addon-hook'];
49
+ do_action("um_admin_addon_hook", $hook);
50
+ }
51
+ }
52
+
53
+ function content() {
54
+
55
+ $this->process_link = add_query_arg('um-addon-hook','gravatar_transfer');
56
+
57
+ ?>
58
+
59
+ <div class="wrap">
60
+
61
+ <h2>Ultimate Member <sup style="font-size:15px"><?php echo ultimatemember_version; ?></sup></h2>
62
+
63
+ <h3><?php echo $this->addon[0]; ?></h3>
64
+
65
+ <?php if ( isset( $this->content ) ) {
66
+ echo $this->content;
67
+ } else { ?>
68
+
69
+ <p>This tool allows you to add gravatars to Ultimate Member users. This can help you to link gravatar photos to user accounts with their email address.</p>
70
+ <p>Depending on your users database, this could take a few moments. To start the process, click the following button.</p>
71
+
72
+ <p><a href="<?php echo $this->process_link; ?>" class="button button-primary">Start adding gravatars</a></p>
73
+
74
+ <?php } ?>
75
+
76
+ </div><div class="clear"></div>
77
+
78
+ <?php
79
+
80
+ }
81
+ }
82
+
83
  $UM_ADDON_gravatar_transfer = new UM_ADDON_gravatar_transfer();
addons/system_info.php CHANGED
@@ -1,411 +1,411 @@
1
- <?php
2
-
3
- class UM_ADDON_system_info {
4
-
5
- function __construct() {
6
-
7
- add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
-
9
- add_action('admin_init', array(&$this, 'admin_init'), 1);
10
-
11
- add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
-
13
- }
14
-
15
-
16
- function admin_menu() {
17
-
18
- global $ultimatemember;
19
- $this->addon = $ultimatemember->addons['system_info'];
20
- add_submenu_page('ultimatemember', "System Info","System Info", 'manage_options', 'um_system_info', array(&$this, 'content') );
21
-
22
- }
23
-
24
- function um_admin_addon_hook( $hook ) {
25
- global $ultimatemember;
26
-
27
- switch ( $hook ) {
28
-
29
- case 'download_system_info':
30
-
31
- nocache_headers();
32
-
33
- header( "Content-type: text/plain" );
34
- header( 'Content-Disposition: attachment; filename="ultimatemember-system-info.txt"' );
35
-
36
- echo wp_strip_all_tags( $_POST['um-sysinfo'] );
37
- exit;
38
-
39
- break;
40
-
41
- default:
42
-
43
- break;
44
- }
45
-
46
- }
47
-
48
- function admin_init() {
49
- if ( isset( $_REQUEST['um-addon-hook'] ) ) {
50
- $hook = $_REQUEST['um-addon-hook'];
51
- do_action("um_admin_addon_hook", $hook );
52
- }
53
- }
54
-
55
- function content() {
56
- global $wpdb, $ultimatemember;
57
-
58
- if( !class_exists( 'Browser' ) )
59
- require_once um_path . 'core/lib/browser.php';
60
-
61
- // Detect browser
62
- $browser = new Browser();
63
-
64
- // Get theme info
65
- $theme_data = wp_get_theme();
66
- $theme = $theme_data->Name . ' ' . $theme_data->Version;
67
-
68
- // Identify Hosting Provider
69
- $host = um_get_host();
70
-
71
- ?>
72
-
73
- <div class="wrap">
74
-
75
- <h2>Ultimate Member</h2>
76
-
77
- <h3><?php echo $this->addon[0]; ?></h3>
78
-
79
- <?php if ( isset( $this->content ) ) {
80
- echo $this->content;
81
- } else { ?>
82
-
83
- <form action="<?php echo esc_url( admin_url( 'admin.php?page=um_system_info' ) ); ?>" method="post" dir="ltr">
84
- <textarea style="width:100%; height:400px;" readonly="readonly" onclick="this.focus();this.select()" id="system-info-textarea" name="um-sysinfo" title="<?php _e( 'To copy the system info, click below then press Ctrl + C (PC) or Cmd + C (Mac).', 'edd' ); ?>">
85
- ### Begin System Info ###
86
-
87
- ## Please include this information when posting support requests ##
88
-
89
- <?php do_action( 'um_system_info_before' ); ?>
90
-
91
- --- Site Info ---
92
-
93
- Site URL: <?php echo site_url() . "\n"; ?>
94
- Home URL: <?php echo home_url() . "\n"; ?>
95
- Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
96
-
97
- --- Hosting Provider ---
98
-
99
- <?php if( $host ) : ?>
100
- Host: <?php echo $host . "\n"; ?>
101
- <?php endif; ?>
102
-
103
- --- User Browser ---
104
-
105
- <?php echo $browser ; ?>
106
-
107
- --- WordPress Configurations ---
108
-
109
- Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
110
- Language: <?php echo get_locale()."\n"; ?>
111
- Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
112
- Active Theme: <?php echo $theme . "\n"; ?>
113
- <?php $show_on_front = get_option( 'show_on_front' ); ?>
114
- <?php if( $show_on_front == "posts" ): ?>
115
- Show On Front: <?php echo get_option( 'show_on_front' ) . "/static\n" ?>
116
- <?php elseif( $show_on_front == "page" ): ?>
117
- Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
118
- Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
119
- <?php endif; ?>
120
- ABSPATH: <?php echo ABSPATH."\n"; ?>
121
- <?php $wp_count_posts = wp_count_posts(); ?>
122
- All Posts/Pages: <?php echo array_sum((array)$wp_count_posts)."\n";?>
123
- <?php
124
- $request['cmd'] = '_notify-validate';
125
-
126
- $params = array(
127
- 'sslverify' => false,
128
- 'timeout' => 60,
129
- 'user-agent' => 'UltimateMember/' . ultimatemember_version,
130
- 'body' => $request
131
- );
132
-
133
- $response = wp_remote_post( 'https://www.paypal.com/cgi-bin/webscr', $params );
134
-
135
- if ( ! is_wp_error( $response ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) {
136
- $WP_REMOTE_POST = 'wp_remote_post() works' . "\n";
137
- } else {
138
- $WP_REMOTE_POST = 'wp_remote_post() does not work' . "\n";
139
- }
140
- ?>
141
- WP Remote Post: <?php echo $WP_REMOTE_POST; ?>
142
- WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
143
- WP Table Prefix: <?php echo "Length: ". strlen( $wpdb->prefix ); echo ", Status:"; if ( strlen( $wpdb->prefix )>16 ) {echo " ERROR: Too Long";} else {echo " Acceptable";} echo "\n"; ?>
144
- Memory Limit: <?php echo ( um_let_to_num( WP_MEMORY_LIMIT )/( 1024 ) )."MB"; ?><?php echo "\n"; ?>
145
-
146
- --- UM Configurations ---
147
-
148
- Version: <?php echo ultimatemember_version . "\n"; ?>
149
- Upgraded From: <?php echo get_option( 'um_version_upgraded_from', 'None' ) . "\n"; ?>
150
- Current URL Method: <?php echo um_get_option( 'current_url_method' ). "\n"; ?>
151
- Cache User Profile: <?php if( um_get_option( 'um_profile_object_cache_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
152
- Generate Slugs on Directories: <?php if( um_get_option( 'um_generate_slug_in_directory' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
153
- Rewrite Rules: <?php if( um_get_option( 'um_flush_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
154
- Force UTF-8 Encoding: <?php if( um_get_option( 'um_force_utf8_strings' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
155
- Time Check Security: <?php if( um_get_option( 'enable_timebot' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
156
- JS/CSS Compression: <?php if( um_get_option( 'disable_minify' ) == 0 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
157
- <?php if( is_multisite() ): ?>
158
- Network Structure: <?php echo um_get_option( 'network_permalink_structure' ). "\n"; ?>
159
- <?php endif; ?>
160
- Nav Menu Settings: <?php if( um_get_option( 'disable_menu' ) == 0 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
161
- Port Forwarding in URL: <?php if( um_get_option( 'um_port_forwarding_url' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
162
- Exclude CSS/JS on Home: <?php if( um_get_option( 'js_css_exlcude_home' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
163
-
164
- --- UM Pages Configuration ---
165
-
166
- <?php do_action("um_system_info_before_page_config") ?>
167
- User: <?php echo get_permalink( um_get_option('core_user') ) . "\n"; ?>
168
- Account: <?php echo get_permalink( um_get_option('core_account') ) . "\n"; ?>
169
- Members: <?php echo get_permalink( um_get_option('core_members') ) . "\n"; ?>
170
- Register: <?php echo get_permalink( um_get_option('core_register') ) . "\n"; ?>
171
- Login: <?php echo get_permalink( um_get_option('core_login') ) . "\n"; ?>
172
- Logout: <?php echo get_permalink( um_get_option('core_logout') ) . "\n"; ?>
173
- Password Reset: <?php echo get_permalink( um_get_option('core_password-reset') ) . "\n"; ?>
174
- <?php do_action("um_system_info_after_page_config") ?>
175
-
176
- -- UM Users Configuration ---
177
-
178
- Default New User Role: <?php echo um_get_option('default_role') . "\n"; ?>
179
- Profile Permalink Base: <?php echo um_get_option('permalink_base') . "\n"; ?>
180
- User Display Name: <?php echo um_get_option('display_name') . "\n"; ?>
181
- Force Name to Uppercase: <?php echo $this->value( um_get_option('force_display_name_capitlized'), 'yesno', true ); ?>
182
- Redirect author to profile: <?php echo $this->value( um_get_option('author_redirect'), 'yesno', true ); ?>
183
- Enable Members Directory: <?php echo $this->value( um_get_option('members_page'), 'yesno', true ); ?>
184
- Use Gravatars: <?php echo $this->value( um_get_option('use_gravatars'), 'yesno', true ); ?>
185
- <?php if( um_get_option('use_gravatars') ): ?>Gravatar builtin image: <?php echo um_get_option('use_um_gravatar_default_builtin_image') . "\n"; ?>
186
- UM Avatar as blank Gravatar: <?php echo $this->value( um_get_option('use_um_gravatar_default_image'), 'yesno', true ); ?><?php endif; ?>
187
- Require a strong password: <?php echo $this->value( um_get_option('reset_require_strongpass'), 'onoff', true ); ?>
188
- Editable primary email field in profile view: <?php echo $this->value( um_get_option('editable_primary_email_in_profile'), 'onoff', true ); ?>
189
-
190
- -- UM Access Configuration ---
191
-
192
- Panic Key: <?php echo um_get_option('panic_key') . "\n"; ?>
193
- Global Site Access: <?php $arr = array('Site accessible to Everyone','','Site accessible to Logged In Users'); echo $arr[ intval( um_get_option('accessible') ) ] . "\n"; ?>
194
- <?php if( um_get_option('accessible') == 2 ):?>
195
- Custom Redirect URL: <?php echo um_get_option('access_redirect')."\n";?>
196
- Exclude the following URLs:<?php echo "\t\t\t\t".implode("\t\n\t\t\t\t\t\t\t\t\t\t",um_get_option('access_exclude_uris') )."\n";?><?php endif;?>
197
- Backend Login Screen for Guests: <?php echo $this->value( um_get_option('wpadmin_login'), 'yesno', true ); ?>
198
- <?php if( ! um_get_option('wpadmin_login') ):?>Redirect to alternative login page: <?php if( um_get_option('wpadmin_login_redirect') == 'um_login_page' ){ echo um_get_core_page('login')."\n"; }else{ echo um_get_option('wpadmin_login_redirect_url')."\n"; }?><?php endif; ?>
199
- Backend Register Screen for Guests: <?php echo $this->value( um_get_option('wpadmin_register'), 'yesno', true ); ?>
200
- <?php if( ! um_get_option('wpadmin_register') ):?>Redirect to alternative register page: <?php if( um_get_option('wpadmin_register_redirect') == 'um_register_page' ){ echo um_get_core_page('register')."\n"; }else{ echo um_get_option('wpadmin_register_redirect_url')."\n"; }?><?php endif; ?>
201
- Access Control widget for Admins only: <?php echo $this->value( um_get_option('access_widget_admin_only'), 'yesno', true ); ?>
202
- Enable the Reset Password Limit: <?php echo $this->value( um_get_option('enable_reset_password_limit'), 'yesno', true ); ?>
203
- <?php if( um_get_option('enable_reset_password_limit') ) {
204
- echo "Reset Password Limit:\t\t\t\t\t\t".um_get_option('reset_password_limit_number')."\n";
205
- echo "Disable Reset Password Limit for Admins:\t".$this->value( um_get_option('disable_admin_reset_password_limit'), 'yesno', true );
206
- } ?>
207
- <?php $wpadmin_allow_ips = um_get_option('wpadmin_allow_ips'); if( ! empty( $wpadmin_allow_ips ) ){ ?>
208
- Whitelisted Backend IPs: <?php echo count( explode("\n",trim(um_get_option('wpadmin_allow_ips') ) ) )."\n"; ?>
209
- <?php }?>
210
- <?php $blocked_ips = um_get_option('blocked_ips'); if( ! empty( $blocked_ips ) ){ ?>
211
- Blocked IP Addresses: <?php echo count( explode("\n",um_get_option('blocked_ips') ) )."\n"; ?>
212
- <?php }?>
213
- <?php $blocked_emails = um_get_option('blocked_emails'); if( ! empty( $blocked_emails ) ){ ?>
214
- Blocked Email Addresses: <?php echo count( explode("\n",um_get_option('blocked_emails') ) )."\n"; ?>
215
- <?php }?>
216
- <?php $blocked_words = um_get_option('blocked_words'); if( ! empty( $blocked_words ) ){ ?>
217
- Blacklist Words: <?php echo count( explode("\n",um_get_option('blocked_words') ) )."\n"; ?>
218
- <?php }?>
219
-
220
-
221
- --- UM Email Configurations --
222
-
223
- Mail appears from: <?php $mail_from = um_get_option('mail_from'); if( ! empty( $mail_from ) ){echo um_get_option('mail_from');}else{echo "-";}; echo "\n";?>
224
- Mail appears from address: <?php $mail_from_addr = um_get_option('mail_from_addr'); if( ! empty( $mail_from_addr ) ){echo um_get_option('mail_from_addr');}else{echo "-";}; echo "\n";?>
225
- Use HTML for E-mails: <?php echo $this->value( um_get_option('email_html'), 'yesno', true ); ?>
226
- Account Welcome Email: <?php echo $this->value( um_get_option('welcome_email_on'), 'yesno', true ); ?>
227
- Account Activation Email: <?php echo $this->value( um_get_option('checkmail_email_on'), 'yesno', true ); ?>
228
- Pending Review Email: <?php echo $this->value( um_get_option('pending_email_on'), 'yesno', true ); ?>
229
- Account Approved Email: <?php echo $this->value( um_get_option('approved_email_on'), 'yesno', true ); ?>
230
- Account Rejected Email: <?php echo $this->value( um_get_option('rejected_email_on'), 'yesno', true ); ?>
231
- Account Deactivated Email: <?php echo $this->value( um_get_option('inactive_email_on'), 'yesno', true ); ?>
232
- Account Deleted Email: <?php echo $this->value( um_get_option('deletion_email_on'), 'yesno', true ); ?>
233
- Password Reset Email: <?php echo $this->value( um_get_option('resetpw_email_on'), 'yesno', true ); ?>
234
- Password Changed Email: <?php echo $this->value( um_get_option('changedpw_email_on'), 'yesno', true ); ?>
235
-
236
-
237
- --- UM Total Users ---
238
-
239
- <?php
240
-
241
- $result = count_users();
242
- echo 'All Users('.$result['total_users'].")\n";
243
- foreach($result['avail_roles'] as $role => $count){
244
- echo $role."(".$count.")\n";
245
- }
246
- ?>
247
-
248
-
249
- --- UM Roles ---
250
-
251
- <?php
252
-
253
- foreach( $ultimatemember->query->get_roles() as $role_id => $role ) {
254
- echo $role." ({$role_id})\n";
255
- }
256
-
257
- ?>
258
-
259
-
260
- --- UM Custom Templates ---
261
-
262
- <?php
263
- // Show templates that have been copied to the theme's edd_templates dir
264
-
265
- $dir = get_stylesheet_directory() . '/ultimate-member/templates/*.php';
266
- if ( ! empty( $dir ) ){
267
- $found = glob( $dir );
268
- if( ! empty( $found ) ){
269
- foreach ( glob( $dir ) as $file ) {
270
- echo "File: " . $file . "\n";
271
- }
272
- }else {
273
- echo 'N/A'."\n";
274
- }
275
- }
276
- echo "\n\n";
277
-
278
- $dir = get_stylesheet_directory() . '/ultimate-member/templates/emails/*.html';
279
- echo "-- UM Email HTML Templates -- \n\n";
280
-
281
- if ( ! empty( $dir ) ){
282
- $found = glob( $dir );
283
- if( ! empty( $found ) ){
284
- foreach ( glob( $dir ) as $file ) {
285
- echo "File: ". $file . "\n";
286
- }
287
- }else {
288
- echo 'N/A'."\n";
289
- }
290
- }
291
-
292
- ?>
293
-
294
- --- Web Server Configurations ---
295
-
296
- PHP Version: <?php echo PHP_VERSION . "\n"; ?>
297
- MySQL Version: <?php echo $wpdb->db_version() . "\n"; ?>
298
- Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
299
-
300
- --- PHP Configurations --
301
-
302
- PHP Safe Mode: <?php echo $this->value( ini_get( 'safe_mode' ), 'yesno', true ); ?>
303
- PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
304
- PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
305
- PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
306
- PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
307
- PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
308
- PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
309
- PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
310
- PHP Allow URL File Open: <?php echo ini_get( 'allow_url_fopen' ) ? "Yes\n" : "No\n"; ?>
311
-
312
-
313
- --- Web Server Extensions/Modules ---
314
-
315
- DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
316
- FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
317
- cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
318
- SOAP Client: <?php echo ( class_exists( 'SoapClient' ) ) ? 'Your server has the SOAP Client enabled.' : 'Your server does not have the SOAP Client enabled.'; ?><?php echo "\n"; ?>
319
- SUHOSIN: <?php echo ( extension_loaded( 'suhosin' ) ) ? 'Your server has SUHOSIN installed.' : 'Your server does not have SUHOSIN installed.'; ?><?php echo "\n"; ?>
320
-
321
-
322
- --- Session Configurations ---
323
-
324
- Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
325
- Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
326
- Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
327
- Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
328
- Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
329
- Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
330
-
331
-
332
-
333
- --- WordPress Active Plugins ---
334
-
335
- <?php
336
- $plugins = get_plugins();
337
- $active_plugins = get_option( 'active_plugins', array() );
338
-
339
- foreach ( $plugins as $plugin_path => $plugin ) {
340
- // If the plugin isn't active, don't show it.
341
- if ( ! in_array( $plugin_path, $active_plugins ) )
342
- continue;
343
-
344
- echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
345
- }
346
-
347
- if ( is_multisite() ) :
348
- ?>
349
-
350
- --- WordPress Network Active Plugins ---
351
-
352
- <?php
353
- $plugins = wp_get_active_network_plugins();
354
- $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
355
-
356
- foreach ( $plugins as $plugin_path ) {
357
- $plugin_base = plugin_basename( $plugin_path );
358
-
359
- // If the plugin isn't active, don't show it.
360
- if ( ! array_key_exists( $plugin_base, $active_plugins ) )
361
- continue;
362
-
363
- $plugin = get_plugin_data( $plugin_path );
364
-
365
- echo $plugin['Name'] . ' :' . $plugin['Version'] ."\n";
366
- }
367
-
368
- endif;
369
- ?>
370
- <?php
371
- do_action( 'um_system_info_after' );
372
- ?>
373
-
374
-
375
-
376
-
377
- ### End System Info ###</textarea>
378
- <p class="submit">
379
- <input type="hidden" name="um-addon-hook" value="download_system_info" />
380
- <?php submit_button( 'Download System Info File', 'primary', 'download_system_info', false ); ?>
381
- </p>
382
- </form>
383
-
384
- <?php } ?>
385
-
386
- <?php
387
-
388
- }
389
-
390
- function value( $raw_value = '', $type = 'yesno', $default = '', $default_negate = '' ){
391
-
392
- if( $type == 'yesno' ){
393
- if( $default == $raw_value ){
394
- $raw_value = "Yes";
395
- }else{
396
- $raw_value = "No";
397
- }
398
- }else if( $type == 'onoff' ){
399
- if( $default == $raw_value ){
400
- $raw_value = "On";
401
- }else{
402
- $raw_value = "Off";
403
- }
404
- }
405
-
406
- return $raw_value."\n";
407
- }
408
-
409
- }
410
-
411
  $UM_ADDON_system_info = new UM_ADDON_system_info();
1
+ <?php
2
+
3
+ class UM_ADDON_system_info {
4
+
5
+ function __construct() {
6
+
7
+ add_action('admin_menu', array(&$this, 'admin_menu'), 1001);
8
+
9
+ add_action('admin_init', array(&$this, 'admin_init'), 1);
10
+
11
+ add_action('um_admin_addon_hook', array(&$this, 'um_admin_addon_hook') );
12
+
13
+ }
14
+
15
+
16
+ function admin_menu() {
17
+
18
+ global $ultimatemember;
19
+ $this->addon = $ultimatemember->addons['system_info'];
20
+ add_submenu_page('ultimatemember', "System Info","System Info", 'manage_options', 'um_system_info', array(&$this, 'content') );
21
+
22
+ }
23
+
24
+ function um_admin_addon_hook( $hook ) {
25
+ global $ultimatemember;
26
+
27
+ switch ( $hook ) {
28
+
29
+ case 'download_system_info':
30
+
31
+ nocache_headers();
32
+
33
+ header( "Content-type: text/plain" );
34
+ header( 'Content-Disposition: attachment; filename="ultimatemember-system-info.txt"' );
35
+
36
+ echo wp_strip_all_tags( $_POST['um-sysinfo'] );
37
+ exit;
38
+
39
+ break;
40
+
41
+ default:
42
+
43
+ break;
44
+ }
45
+
46
+ }
47
+
48
+ function admin_init() {
49
+ if ( isset( $_REQUEST['um-addon-hook'] ) ) {
50
+ $hook = $_REQUEST['um-addon-hook'];
51
+ do_action("um_admin_addon_hook", $hook );
52
+ }
53
+ }
54
+
55
+ function content() {
56
+ global $wpdb, $ultimatemember;
57
+
58
+ if( !class_exists( 'Browser' ) )
59
+ require_once um_path . 'core/lib/browser.php';
60
+
61
+ // Detect browser
62
+ $browser = new Browser();
63
+
64
+ // Get theme info
65
+ $theme_data = wp_get_theme();
66
+ $theme = $theme_data->Name . ' ' . $theme_data->Version;
67
+
68
+ // Identify Hosting Provider
69
+ $host = um_get_host();
70
+
71
+ ?>
72
+
73
+ <div class="wrap">
74
+
75
+ <h2>Ultimate Member</h2>
76
+
77
+ <h3><?php echo $this->addon[0]; ?></h3>
78
+
79
+ <?php if ( isset( $this->content ) ) {
80
+ echo $this->content;
81
+ } else { ?>
82
+
83
+ <form action="<?php echo esc_url( admin_url( 'admin.php?page=um_system_info' ) ); ?>" method="post" dir="ltr">
84
+ <textarea style="width:100%; height:400px;" readonly="readonly" onclick="this.focus();this.select()" id="system-info-textarea" name="um-sysinfo" title="<?php _e( 'To copy the system info, click below then press Ctrl + C (PC) or Cmd + C (Mac).', 'edd' ); ?>">
85
+ ### Begin System Info ###
86
+
87
+ ## Please include this information when posting support requests ##
88
+
89
+ <?php do_action( 'um_system_info_before' ); ?>
90
+
91
+ --- Site Info ---
92
+
93
+ Site URL: <?php echo site_url() . "\n"; ?>
94
+ Home URL: <?php echo home_url() . "\n"; ?>
95
+ Multisite: <?php echo is_multisite() ? 'Yes' . "\n" : 'No' . "\n" ?>
96
+
97
+ --- Hosting Provider ---
98
+
99
+ <?php if( $host ) : ?>
100
+ Host: <?php echo $host . "\n"; ?>
101
+ <?php endif; ?>
102
+
103
+ --- User Browser ---
104
+
105
+ <?php echo $browser ; ?>
106
+
107
+ --- WordPress Configurations ---
108
+
109
+ Version: <?php echo get_bloginfo( 'version' ) . "\n"; ?>
110
+ Language: <?php echo get_locale()."\n"; ?>
111
+ Permalink Structure: <?php echo get_option( 'permalink_structure' ) . "\n"; ?>
112
+ Active Theme: <?php echo $theme . "\n"; ?>
113
+ <?php $show_on_front = get_option( 'show_on_front' ); ?>
114
+ <?php if( $show_on_front == "posts" ): ?>
115
+ Show On Front: <?php echo get_option( 'show_on_front' ) . "/static\n" ?>
116
+ <?php elseif( $show_on_front == "page" ): ?>
117
+ Page On Front: <?php $id = get_option( 'page_on_front' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
118
+ Page For Posts: <?php $id = get_option( 'page_for_posts' ); echo get_the_title( $id ) . ' (#' . $id . ')' . "\n" ?>
119
+ <?php endif; ?>
120
+ ABSPATH: <?php echo ABSPATH."\n"; ?>
121
+ <?php $wp_count_posts = wp_count_posts(); ?>
122
+ All Posts/Pages: <?php echo array_sum((array)$wp_count_posts)."\n";?>
123
+ <?php
124
+ $request['cmd'] = '_notify-validate';
125
+
126
+ $params = array(
127
+ 'sslverify' => false,
128
+ 'timeout' => 60,
129
+ 'user-agent' => 'UltimateMember/' . ultimatemember_version,
130
+ 'body' => $request
131
+ );
132
+
133
+ $response = wp_remote_post( 'https://www.paypal.com/cgi-bin/webscr', $params );
134
+
135
+ if ( ! is_wp_error( $response ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) {
136
+ $WP_REMOTE_POST = 'wp_remote_post() works' . "\n";
137
+ } else {
138
+ $WP_REMOTE_POST = 'wp_remote_post() does not work' . "\n";
139
+ }
140
+ ?>
141
+ WP Remote Post: <?php echo $WP_REMOTE_POST; ?>
142
+ WP_DEBUG: <?php echo defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' . "\n" : 'Disabled' . "\n" : 'Not set' . "\n" ?>
143
+ WP Table Prefix: <?php echo "Length: ". strlen( $wpdb->prefix ); echo ", Status:"; if ( strlen( $wpdb->prefix )>16 ) {echo " ERROR: Too Long";} else {echo " Acceptable";} echo "\n"; ?>
144
+ Memory Limit: <?php echo ( um_let_to_num( WP_MEMORY_LIMIT )/( 1024 ) )."MB"; ?><?php echo "\n"; ?>
145
+
146
+ --- UM Configurations ---
147
+
148
+ Version: <?php echo ultimatemember_version . "\n"; ?>
149
+ Upgraded From: <?php echo get_option( 'um_version_upgraded_from', 'None' ) . "\n"; ?>
150
+ Current URL Method: <?php echo um_get_option( 'current_url_method' ). "\n"; ?>
151
+ Cache User Profile: <?php if( um_get_option( 'um_profile_object_cache_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
152
+ Generate Slugs on Directories: <?php if( um_get_option( 'um_generate_slug_in_directory' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
153
+ Rewrite Rules: <?php if( um_get_option( 'um_flush_stop' ) == 1 ){ echo "No"; }else{ echo "Yes"; } echo "\n"; ?>
154
+ Force UTF-8 Encoding: <?php if( um_get_option( 'um_force_utf8_strings' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
155
+ Time Check Security: <?php if( um_get_option( 'enable_timebot' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
156
+ JS/CSS Compression: <?php if( um_get_option( 'disable_minify' ) == 0 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
157
+ <?php if( is_multisite() ): ?>
158
+ Network Structure: <?php echo um_get_option( 'network_permalink_structure' ). "\n"; ?>
159
+ <?php endif; ?>
160
+ Nav Menu Settings: <?php if( um_get_option( 'disable_menu' ) == 0 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
161
+ Port Forwarding in URL: <?php if( um_get_option( 'um_port_forwarding_url' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
162
+ Exclude CSS/JS on Home: <?php if( um_get_option( 'js_css_exlcude_home' ) == 1 ){ echo "Yes"; }else{ echo "No"; } echo "\n"; ?>
163
+
164
+ --- UM Pages Configuration ---
165
+
166
+ <?php do_action("um_system_info_before_page_config") ?>
167
+ User: <?php echo get_permalink( um_get_option('core_user') ) . "\n"; ?>
168
+ Account: <?php echo get_permalink( um_get_option('core_account') ) . "\n"; ?>
169
+ Members: <?php echo get_permalink( um_get_option('core_members') ) . "\n"; ?>
170
+ Register: <?php echo get_permalink( um_get_option('core_register') ) . "\n"; ?>
171
+ Login: <?php echo get_permalink( um_get_option('core_login') ) . "\n"; ?>
172
+ Logout: <?php echo get_permalink( um_get_option('core_logout') ) . "\n"; ?>
173
+ Password Reset: <?php echo get_permalink( um_get_option('core_password-reset') ) . "\n"; ?>
174
+ <?php do_action("um_system_info_after_page_config") ?>
175
+
176
+ -- UM Users Configuration ---
177
+
178
+ Default New User Role: <?php echo um_get_option('default_role') . "\n"; ?>
179
+ Profile Permalink Base: <?php echo um_get_option('permalink_base') . "\n"; ?>
180
+ User Display Name: <?php echo um_get_option('display_name') . "\n"; ?>
181
+ Force Name to Uppercase: <?php echo $this->value( um_get_option('force_display_name_capitlized'), 'yesno', true ); ?>
182
+ Redirect author to profile: <?php echo $this->value( um_get_option('author_redirect'), 'yesno', true ); ?>
183
+ Enable Members Directory: <?php echo $this->value( um_get_option('members_page'), 'yesno', true ); ?>
184
+ Use Gravatars: <?php echo $this->value( um_get_option('use_gravatars'), 'yesno', true ); ?>
185
+ <?php if( um_get_option('use_gravatars') ): ?>Gravatar builtin image: <?php echo um_get_option('use_um_gravatar_default_builtin_image') . "\n"; ?>
186
+ UM Avatar as blank Gravatar: <?php echo $this->value( um_get_option('use_um_gravatar_default_image'), 'yesno', true ); ?><?php endif; ?>
187
+ Require a strong password: <?php echo $this->value( um_get_option('reset_require_strongpass'), 'onoff', true ); ?>
188
+ Editable primary email field in profile view: <?php echo $this->value( um_get_option('editable_primary_email_in_profile'), 'onoff', true ); ?>
189
+
190
+ -- UM Access Configuration ---
191
+
192
+ Panic Key: <?php echo um_get_option('panic_key') . "\n"; ?>
193
+ Global Site Access: <?php $arr = array('Site accessible to Everyone','','Site accessible to Logged In Users'); echo $arr[ intval( um_get_option('accessible') ) ] . "\n"; ?>
194
+ <?php if( um_get_option('accessible') == 2 ):?>
195
+ Custom Redirect URL: <?php echo um_get_option('access_redirect')."\n";?>
196
+ Exclude the following URLs:<?php echo "\t\t\t\t".implode("\t\n\t\t\t\t\t\t\t\t\t\t",um_get_option('access_exclude_uris') )."\n";?><?php endif;?>
197
+ Backend Login Screen for Guests: <?php echo $this->value( um_get_option('wpadmin_login'), 'yesno', true ); ?>
198
+ <?php if( ! um_get_option('wpadmin_login') ):?>Redirect to alternative login page: <?php if( um_get_option('wpadmin_login_redirect') == 'um_login_page' ){ echo um_get_core_page('login')."\n"; }else{ echo um_get_option('wpadmin_login_redirect_url')."\n"; }?><?php endif; ?>
199
+ Backend Register Screen for Guests: <?php echo $this->value( um_get_option('wpadmin_register'), 'yesno', true ); ?>
200
+ <?php if( ! um_get_option('wpadmin_register') ):?>Redirect to alternative register page: <?php if( um_get_option('wpadmin_register_redirect') == 'um_register_page' ){ echo um_get_core_page('register')."\n"; }else{ echo um_get_option('wpadmin_register_redirect_url')."\n"; }?><?php endif; ?>
201
+ Access Control widget for Admins only: <?php echo $this->value( um_get_option('access_widget_admin_only'), 'yesno', true ); ?>
202
+ Enable the Reset Password Limit: <?php echo $this->value( um_get_option('enable_reset_password_limit'), 'yesno', true ); ?>
203
+ <?php if( um_get_option('enable_reset_password_limit') ) {
204
+ echo "Reset Password Limit:\t\t\t\t\t\t".um_get_option('reset_password_limit_number')."\n";
205
+ echo "Disable Reset Password Limit for Admins:\t".$this->value( um_get_option('disable_admin_reset_password_limit'), 'yesno', true );
206
+ } ?>
207
+ <?php $wpadmin_allow_ips = um_get_option('wpadmin_allow_ips'); if( ! empty( $wpadmin_allow_ips ) ){ ?>
208
+ Whitelisted Backend IPs: <?php echo count( explode("\n",trim(um_get_option('wpadmin_allow_ips') ) ) )."\n"; ?>
209
+ <?php }?>
210
+ <?php $blocked_ips = um_get_option('blocked_ips'); if( ! empty( $blocked_ips ) ){ ?>
211
+ Blocked IP Addresses: <?php echo count( explode("\n",um_get_option('blocked_ips') ) )."\n"; ?>
212
+ <?php }?>
213
+ <?php $blocked_emails = um_get_option('blocked_emails'); if( ! empty( $blocked_emails ) ){ ?>
214
+ Blocked Email Addresses: <?php echo count( explode("\n",um_get_option('blocked_emails') ) )."\n"; ?>
215
+ <?php }?>
216
+ <?php $blocked_words = um_get_option('blocked_words'); if( ! empty( $blocked_words ) ){ ?>
217
+ Blacklist Words: <?php echo count( explode("\n",um_get_option('blocked_words') ) )."\n"; ?>
218
+ <?php }?>
219
+
220
+
221
+ --- UM Email Configurations --
222
+
223
+ Mail appears from: <?php $mail_from = um_get_option('mail_from'); if( ! empty( $mail_from ) ){echo um_get_option('mail_from');}else{echo "-";}; echo "\n";?>
224
+ Mail appears from address: <?php $mail_from_addr = um_get_option('mail_from_addr'); if( ! empty( $mail_from_addr ) ){echo um_get_option('mail_from_addr');}else{echo "-";}; echo "\n";?>
225
+ Use HTML for E-mails: <?php echo $this->value( um_get_option('email_html'), 'yesno', true ); ?>
226
+ Account Welcome Email: <?php echo $this->value( um_get_option('welcome_email_on'), 'yesno', true ); ?>
227
+ Account Activation Email: <?php echo $this->value( um_get_option('checkmail_email_on'), 'yesno', true ); ?>
228
+ Pending Review Email: <?php echo $this->value( um_get_option('pending_email_on'), 'yesno', true ); ?>
229
+ Account Approved Email: <?php echo $this->value( um_get_option('approved_email_on'), 'yesno', true ); ?>
230
+ Account Rejected Email: <?php echo $this->value( um_get_option('rejected_email_on'), 'yesno', true ); ?>
231
+ Account Deactivated Email: <?php echo $this->value( um_get_option('inactive_email_on'), 'yesno', true ); ?>
232
+ Account Deleted Email: <?php echo $this->value( um_get_option('deletion_email_on'), 'yesno', true ); ?>
233
+ Password Reset Email: <?php echo $this->value( um_get_option('resetpw_email_on'), 'yesno', true ); ?>
234
+ Password Changed Email: <?php echo $this->value( um_get_option('changedpw_email_on'), 'yesno', true ); ?>
235
+
236
+
237
+ --- UM Total Users ---
238
+
239
+ <?php
240
+
241
+ $result = count_users();
242
+ echo 'All Users('.$result['total_users'].")\n";
243
+ foreach($result['avail_roles'] as $role => $count){
244
+ echo $role."(".$count.")\n";
245
+ }
246
+ ?>
247
+
248
+
249
+ --- UM Roles ---
250
+
251
+ <?php
252
+
253
+ foreach( $ultimatemember->query->get_roles() as $role_id => $role ) {
254
+ echo $role." ({$role_id})\n";
255
+ }
256
+
257
+ ?>
258
+
259
+
260
+ --- UM Custom Templates ---
261
+
262
+ <?php
263
+ // Show templates that have been copied to the theme's edd_templates dir
264
+
265
+ $dir = get_stylesheet_directory() . '/ultimate-member/templates/*.php';
266
+ if ( ! empty( $dir ) ){
267
+ $found = glob( $dir );
268
+ if( ! empty( $found ) ){
269
+ foreach ( glob( $dir ) as $file ) {
270
+ echo "File: " . $file . "\n";
271
+ }
272
+ }else {
273
+ echo 'N/A'."\n";
274
+ }
275
+ }
276
+ echo "\n\n";
277
+
278
+ $dir = get_stylesheet_directory() . '/ultimate-member/templates/emails/*.html';
279
+ echo "-- UM Email HTML Templates -- \n\n";
280
+
281
+ if ( ! empty( $dir ) ){
282
+ $found = glob( $dir );
283
+ if( ! empty( $found ) ){
284
+ foreach ( glob( $dir ) as $file ) {
285
+ echo "File: ". $file . "\n";
286
+ }
287
+ }else {
288
+ echo 'N/A'."\n";
289
+ }
290
+ }
291
+
292
+ ?>
293
+
294
+ --- Web Server Configurations ---
295
+
296
+ PHP Version: <?php echo PHP_VERSION . "\n"; ?>
297
+ MySQL Version: <?php echo $wpdb->db_version() . "\n"; ?>
298
+ Web Server Info: <?php echo $_SERVER['SERVER_SOFTWARE'] . "\n"; ?>
299
+
300
+ --- PHP Configurations --
301
+
302
+ PHP Safe Mode: <?php echo $this->value( ini_get( 'safe_mode' ), 'yesno', true ); ?>
303
+ PHP Memory Limit: <?php echo ini_get( 'memory_limit' ) . "\n"; ?>
304
+ PHP Upload Max Size: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
305
+ PHP Post Max Size: <?php echo ini_get( 'post_max_size' ) . "\n"; ?>
306
+ PHP Upload Max Filesize: <?php echo ini_get( 'upload_max_filesize' ) . "\n"; ?>
307
+ PHP Time Limit: <?php echo ini_get( 'max_execution_time' ) . "\n"; ?>
308
+ PHP Max Input Vars: <?php echo ini_get( 'max_input_vars' ) . "\n"; ?>
309
+ PHP Arg Separator: <?php echo ini_get( 'arg_separator.output' ) . "\n"; ?>
310
+ PHP Allow URL File Open: <?php echo ini_get( 'allow_url_fopen' ) ? "Yes\n" : "No\n"; ?>
311
+
312
+
313
+ --- Web Server Extensions/Modules ---
314
+
315
+ DISPLAY ERRORS: <?php echo ( ini_get( 'display_errors' ) ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A'; ?><?php echo "\n"; ?>
316
+ FSOCKOPEN: <?php echo ( function_exists( 'fsockopen' ) ) ? 'Your server supports fsockopen.' : 'Your server does not support fsockopen.'; ?><?php echo "\n"; ?>
317
+ cURL: <?php echo ( function_exists( 'curl_init' ) ) ? 'Your server supports cURL.' : 'Your server does not support cURL.'; ?><?php echo "\n"; ?>
318
+ SOAP Client: <?php echo ( class_exists( 'SoapClient' ) ) ? 'Your server has the SOAP Client enabled.' : 'Your server does not have the SOAP Client enabled.'; ?><?php echo "\n"; ?>
319
+ SUHOSIN: <?php echo ( extension_loaded( 'suhosin' ) ) ? 'Your server has SUHOSIN installed.' : 'Your server does not have SUHOSIN installed.'; ?><?php echo "\n"; ?>
320
+
321
+
322
+ --- Session Configurations ---
323
+
324
+ Session: <?php echo isset( $_SESSION ) ? 'Enabled' : 'Disabled'; ?><?php echo "\n"; ?>
325
+ Session Name: <?php echo esc_html( ini_get( 'session.name' ) ); ?><?php echo "\n"; ?>
326
+ Cookie Path: <?php echo esc_html( ini_get( 'session.cookie_path' ) ); ?><?php echo "\n"; ?>
327
+ Save Path: <?php echo esc_html( ini_get( 'session.save_path' ) ); ?><?php echo "\n"; ?>
328
+ Use Cookies: <?php echo ini_get( 'session.use_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
329
+ Use Only Cookies: <?php echo ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off'; ?><?php echo "\n"; ?>
330
+
331
+
332
+
333
+ --- WordPress Active Plugins ---
334
+
335
+ <?php
336
+ $plugins = get_plugins();
337
+ $active_plugins = get_option( 'active_plugins', array() );
338
+
339
+ foreach ( $plugins as $plugin_path => $plugin ) {
340
+ // If the plugin isn't active, don't show it.
341
+ if ( ! in_array( $plugin_path, $active_plugins ) )
342
+ continue;
343
+
344
+ echo $plugin['Name'] . ': ' . $plugin['Version'] ."\n";
345
+ }
346
+
347
+ if ( is_multisite() ) :
348
+ ?>
349
+
350
+ --- WordPress Network Active Plugins ---
351
+
352
+ <?php
353
+ $plugins = wp_get_active_network_plugins();
354
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
355
+
356
+ foreach ( $plugins as $plugin_path ) {
357
+ $plugin_base = plugin_basename( $plugin_path );
358
+
359
+ // If the plugin isn't active, don't show it.
360
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) )
361
+ continue;
362
+
363
+ $plugin = get_plugin_data( $plugin_path );
364
+
365
+ echo $plugin['Name'] . ' :' . $plugin['Version'] ."\n";
366
+ }
367
+
368
+ endif;
369
+ ?>
370
+ <?php
371
+ do_action( 'um_system_info_after' );
372
+ ?>
373
+
374
+
375
+
376
+
377
+ ### End System Info ###</textarea>
378
+ <p class="submit">
379
+ <input type="hidden" name="um-addon-hook" value="download_system_info" />
380
+ <?php submit_button( 'Download System Info File', 'primary', 'download_system_info', false ); ?>
381
+ </p>
382
+ </form>
383
+
384
+ <?php } ?>
385
+
386
+ <?php
387
+
388
+ }
389
+
390
+ function value( $raw_value = '', $type = 'yesno', $default = '', $default_negate = '' ){
391
+
392
+ if( $type == 'yesno' ){
393
+ if( $default == $raw_value ){
394
+ $raw_value = "Yes";
395
+ }else{
396
+ $raw_value = "No";
397
+ }
398
+ }else if( $type == 'onoff' ){
399
+ if( $default == $raw_value ){
400
+ $raw_value = "On";
401
+ }else{
402
+ $raw_value = "Off";
403
+ }
404
+ }
405
+
406
+ return $raw_value."\n";
407
+ }
408
+
409
+ }
410
+
411
  $UM_ADDON_system_info = new UM_ADDON_system_info();
admin/assets/css/um-admin-builder.css CHANGED
@@ -1,302 +1,302 @@
1
- /*
2
- - General
3
- */
4
-
5
- .um-admin-builder * {
6
- -webkit-font-smoothing: antialiased !important;
7
- -moz-osx-font-smoothing: grayscale;
8
- }
9
-
10
- .um-admin-builder i {
11
- font-size: 15px !important;
12
- height: 100% !important;
13
- line-height: 100% !important;
14
- margin: 0 5px 0 0 !important;
15
- }
16
-
17
- .um-admin-builder .um-admin-drag {margin-top: 40px}
18
-
19
- /*
20
- - Add field
21
- */
22
- .um-admin-drag-add-field {
23
- display: block;
24
- width: 100%;
25
- height: 30px;
26
- line-height: 30px;
27
- text-align: center;
28
- color: #aaa;
29
- text-decoration: none;
30
- }
31
-
32
- .um-admin-drag-add-field:hover {color: #3ba1da}
33
-
34
- .um-admin-drag-add-field i {
35
- font-size: 23px !important;
36
- margin: 0 !important;
37
- }
38
-
39
- /*
40
- - Drag controls
41
- */
42
-
43
- .um-admin-drag-ctrls-demo.um-admin-drag-ctrls {
44
- position: absolute;
45
- right: 7px;
46
- top: -30px;
47
- left: auto;
48
- }
49
-
50
- .um-admin-drag-ctrls {
51
- position: absolute;
52
- top: -30px;
53
- left: 0;
54
- }
55
-
56
- .um-admin-drag-ctrls a {
57
- float: left;
58
- margin: 0 5px 0 0;
59
- height: 30px;
60
- line-height: 30px;
61
- background: #eee;
62
- color: #888;
63
- padding: 0 8px;
64
- text-decoration: none;
65
- border-radius: 2px 2px 0 0;
66
- }
67
-
68
- .um-admin-drag-ctrls a:hover {background-color: #e5e5e5}
69
-
70
- .um-admin-drag-ctrls a.active,
71
- .um-admin-drag-ctrls a.active:hover {
72
- background-color: #3ba1da;
73
- color: #fff;
74
- }
75
-
76
- .um-admin-drag-ctrls.columns a {width: 30px !important;background-image: url(../img/1-column.gif); background-repeat: no-repeat; background-position: center;}
77
- .um-admin-drag-ctrls.columns a:nth-child(2) {background-image: url(../img/2-columns.gif);}
78
- .um-admin-drag-ctrls.columns a:last-child {background-image: url(../img/3-columns.gif);}
79
-
80
- .um-admin-drag-ctrls.columns a.active {background-image: url(../img/1-column-active.gif)}
81
- .um-admin-drag-ctrls.columns a.active:nth-child(2) {background-image: url(../img/2-columns-active.gif);}
82
- .um-admin-drag-ctrls.columns a.active:last-child {background-image: url(../img/3-columns-active.gif);}
83
-
84
- /*
85
- - Drag Area
86
- */
87
-
88
- .um-admin-drag {
89
- width: 100%;
90
- background: #f1f1f1;
91
- box-sizing: border-box;
92
- position: relative;
93
- padding: 60px 20px 20px 20px;
94
- }
95
-
96
- .um-admin-drag-row {
97
- width: 100%;
98
- background: #fefefe;
99
- box-sizing: border-box;
100
- position: relative;
101
- padding: 60px 20px 20px 20px;
102
- margin: 0 0 60px 0;
103
- }
104
- .um-admin-drag-row:last-child {margin-bottom: 0}
105
-
106
- .um-admin-drag-row-icons {
107
- position: absolute;
108
- right: 0;
109
- top: -30px;
110
- height: 30px;
111
- }
112
-
113
- .um-admin-drag-rowsub {
114
- position: relative;
115
- box-sizing: border-box;
116
- background: #f1f1f1;
117
- padding: 20px;
118
- margin: 0 0 60px 0;
119
- }
120
- .um-admin-drag-rowsub:last-child {margin-bottom: 0}
121
-
122
- .um-admin-drag-rowsub-icons {
123
- position: absolute;
124
- right: 0;
125
- top: -30px;
126
- height: 30px;
127
- }
128
-
129
- .um-admin-drag-col {
130
- float: left;
131
- width: 100%;
132
- background: #fff;
133
- border: 1px dashed #bbb;
134
- box-sizing: border-box;
135
- padding: 20px;
136
- }
137
-
138
- .um-admin-drag-col.cols-3 {width: 32%;}
139
- .um-admin-drag-col.cols-3.cols-last {width: 32%;}
140
- .um-admin-drag-col.cols-3.cols-middle {width: 32%;margin: 0 2%;}
141
-
142
- .um-admin-drag-col.cols-1 {width: 100%;}
143
- .um-admin-drag-col.cols-1.cols-last {width: 100%;}
144
- .um-admin-drag-col.cols-1.cols-middle {}
145
-
146
- .um-admin-drag-col.cols-2 {width: 49%;margin: 0 1% 0 0}
147
- .um-admin-drag-col.cols-2.cols-last {width: 49%;margin: 0 0 0 1%;}
148
- .um-admin-drag-col.cols-2.cols-middle {}
149
-
150
- .um-admin-drag-addrow {
151
- text-align: center;
152
- font-size: 14px;
153
- color: #888;
154
- cursor: pointer;
155
- border: 1px dashed #bbb;
156
- padding: 10px 0;
157
- margin: 20px 0 0 0;
158
- }
159
- .um-admin-drag-addrow i {
160
- font-size: 23px !important;
161
- margin: 0 !important;
162
- }
163
- .um-admin-drag-addrow:hover {color: #3ba1da}
164
-
165
- /*
166
- - Fields
167
- */
168
-
169
- .um-admin-drag-fld {
170
- display: block;
171
- position: relative;
172
- border: 1px solid #dddddd;
173
- margin: 0 0 15px 0;
174
- background: #F5F5F5;
175
- cursor: move !important;
176
- }
177
-
178
- .um-admin-drag-fld-title i {
179
- width: 24px;
180
- display: inline-block;
181
- text-align: center;
182
- }
183
-
184
- .um-admin-drag-fld.um-field-type-group {background: #555;border: 0}
185
- .um-admin-drag-fld-title.um-field-type-group,.um-admin-drag-fld-type.um-field-type-group {color: #fff}
186
- .um-admin-drag-group {background: #FCFCFC;cursor: default;padding: 20px;border: 1px dashed #bbb;}
187
- .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group{float: left;position: relative;bottom: auto;right: auto;height: 30px;display: block;}
188
- .um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field {display: none !important}
189
-
190
- .um-admin-drag-fld-title,
191
- .um-admin-drag-fld-type {
192
- float: left;
193
- font-weight: bold;
194
- font-size: 13px;
195
- color: #666;
196
- height: 30px;
197
- line-height: 30px;
198
- margin: 0 0 0 20px;
199
- }
200
-
201
- .um-admin-drag-fld-type {
202
- font-weight: 400;
203
- color: #999;
204
- }
205
-
206
- .um-admin-drag-fld-icons {
207
- float: right;
208
- }
209
-
210
- /*
211
- - Responsive cols appearance
212
- */
213
-
214
- .um-admin-drag-col.cols-3 .um-admin-drag-fld-title,
215
- .um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
216
- height: auto;
217
- line-height: 18px;
218
- margin: 10px;
219
- margin-bottom: 0;
220
- }
221
-
222
- .um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
223
- margin: 10px;
224
- }
225
-
226
- .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons {
227
- float: none;
228
- position: absolute;
229
- bottom: 0;
230
- right: 0;
231
- height: 30px;
232
- display: none;
233
- }
234
-
235
- .um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons{display: block;}
236
-
237
- /*
238
- - Icons
239
- */
240
-
241
- .um-admin-drag-row-icons a,
242
- .um-admin-drag-row-icons span,
243
- .um-admin-drag-rowsub-icons a,
244
- .um-admin-drag-rowsub-icons span,
245
- .um-admin-drag-fld-icons a{
246
- text-decoration: none;
247
- color: #fff;
248
- width: 40px;
249
- height: 30px;
250
- line-height: 30px;
251
- text-align: center;
252
- display: block !important;
253
- float: left;
254
- background: #44b0ec;
255
- padding: 0 4px;
256
- transition: all .2s linear;
257
- border-left: 1px solid #379dd5;
258
- }
259
-
260
- .um-admin-drag-row-icons span,
261
- .um-admin-drag-rowsub-icons span
262
- {cursor: move!important}
263
-
264
- .um-admin-drag-row-icons a:hover,
265
- .um-admin-drag-row-icons span:hover,
266
- .um-admin-drag-rowsub-icons a:hover,
267
- .um-admin-drag-rowsub-icons span:hover,
268
- .um-admin-drag-fld-icons a:hover {background: #3396cd;}
269
-
270
- .um-admin-drag-row-icons i,
271
- .um-admin-drag-rowsub-icons i,
272
- .um-admin-drag-fld-icons i{
273
- font-size: 18px !important;
274
- margin: 0 !important;
275
- top: 2px;
276
- position: relative;
277
- }
278
-
279
- /*
280
- - UI Placeholders
281
- */
282
-
283
- .um-row-placeholder {
284
- width: 100%;
285
- border: 2px dashed #aaa;
286
- box-sizing: border-box;
287
- }
288
-
289
- .um-rowsub-placeholder {
290
- width: 100%;
291
- border: 2px dashed #ccc;
292
- box-sizing: border-box;
293
- display: block;
294
- }
295
-
296
- .um-fld-placeholder {
297
- display: block;
298
- border: 1px dashed #dddddd;
299
- background: #fff;
300
- box-sizing: border-box;
301
- width: 100%;
302
  }
1
+ /*
2
+ - General
3
+ */
4
+
5
+ .um-admin-builder * {
6
+ -webkit-font-smoothing: antialiased !important;
7
+ -moz-osx-font-smoothing: grayscale;
8
+ }
9
+
10
+ .um-admin-builder i {
11
+ font-size: 15px !important;
12
+ height: 100% !important;
13
+ line-height: 100% !important;
14
+ margin: 0 5px 0 0 !important;
15
+ }
16
+
17
+ .um-admin-builder .um-admin-drag {margin-top: 40px}
18
+
19
+ /*
20
+ - Add field
21
+ */
22
+ .um-admin-drag-add-field {
23
+ display: block;
24
+ width: 100%;
25
+ height: 30px;
26
+ line-height: 30px;
27
+ text-align: center;
28
+ color: #aaa;
29
+ text-decoration: none;
30
+ }
31
+
32
+ .um-admin-drag-add-field:hover {color: #3ba1da}
33
+
34
+ .um-admin-drag-add-field i {
35
+ font-size: 23px !important;
36
+ margin: 0 !important;
37
+ }
38
+
39
+ /*
40
+ - Drag controls
41
+ */
42
+
43
+ .um-admin-drag-ctrls-demo.um-admin-drag-ctrls {
44
+ position: absolute;
45
+ right: 7px;
46
+ top: -30px;
47
+ left: auto;
48
+ }
49
+
50
+ .um-admin-drag-ctrls {
51
+ position: absolute;
52
+ top: -30px;
53
+ left: 0;
54
+ }
55
+
56
+ .um-admin-drag-ctrls a {
57
+ float: left;
58
+ margin: 0 5px 0 0;
59
+ height: 30px;
60
+ line-height: 30px;
61
+ background: #eee;
62
+ color: #888;
63
+ padding: 0 8px;
64
+ text-decoration: none;
65
+ border-radius: 2px 2px 0 0;
66
+ }
67
+
68
+ .um-admin-drag-ctrls a:hover {background-color: #e5e5e5}
69
+
70
+ .um-admin-drag-ctrls a.active,
71
+ .um-admin-drag-ctrls a.active:hover {
72
+ background-color: #3ba1da;
73
+ color: #fff;
74
+ }
75
+
76
+ .um-admin-drag-ctrls.columns a {width: 30px !important;background-image: url(../img/1-column.gif); background-repeat: no-repeat; background-position: center;}
77
+ .um-admin-drag-ctrls.columns a:nth-child(2) {background-image: url(../img/2-columns.gif);}
78
+ .um-admin-drag-ctrls.columns a:last-child {background-image: url(../img/3-columns.gif);}
79
+
80
+ .um-admin-drag-ctrls.columns a.active {background-image: url(../img/1-column-active.gif)}
81
+ .um-admin-drag-ctrls.columns a.active:nth-child(2) {background-image: url(../img/2-columns-active.gif);}
82
+ .um-admin-drag-ctrls.columns a.active:last-child {background-image: url(../img/3-columns-active.gif);}
83
+
84
+ /*
85
+ - Drag Area
86
+ */
87
+
88
+ .um-admin-drag {
89
+ width: 100%;
90
+ background: #f1f1f1;
91
+ box-sizing: border-box;
92
+ position: relative;
93
+ padding: 60px 20px 20px 20px;
94
+ }
95
+
96
+ .um-admin-drag-row {
97
+ width: 100%;
98
+ background: #fefefe;
99
+ box-sizing: border-box;
100
+ position: relative;
101
+ padding: 60px 20px 20px 20px;
102
+ margin: 0 0 60px 0;
103
+ }
104
+ .um-admin-drag-row:last-child {margin-bottom: 0}
105
+
106
+ .um-admin-drag-row-icons {
107
+ position: absolute;
108
+ right: 0;
109
+ top: -30px;
110
+ height: 30px;
111
+ }
112
+
113
+ .um-admin-drag-rowsub {
114
+ position: relative;
115
+ box-sizing: border-box;
116
+ background: #f1f1f1;
117
+ padding: 20px;
118
+ margin: 0 0 60px 0;
119
+ }
120
+ .um-admin-drag-rowsub:last-child {margin-bottom: 0}
121
+
122
+ .um-admin-drag-rowsub-icons {
123
+ position: absolute;
124
+ right: 0;
125
+ top: -30px;
126
+ height: 30px;
127
+ }
128
+
129
+ .um-admin-drag-col {
130
+ float: left;
131
+ width: 100%;
132
+ background: #fff;
133
+ border: 1px dashed #bbb;
134
+ box-sizing: border-box;
135
+ padding: 20px;
136
+ }
137
+
138
+ .um-admin-drag-col.cols-3 {width: 32%;}
139
+ .um-admin-drag-col.cols-3.cols-last {width: 32%;}
140
+ .um-admin-drag-col.cols-3.cols-middle {width: 32%;margin: 0 2%;}
141
+
142
+ .um-admin-drag-col.cols-1 {width: 100%;}
143
+ .um-admin-drag-col.cols-1.cols-last {width: 100%;}
144
+ .um-admin-drag-col.cols-1.cols-middle {}
145
+
146
+ .um-admin-drag-col.cols-2 {width: 49%;margin: 0 1% 0 0}
147
+ .um-admin-drag-col.cols-2.cols-last {width: 49%;margin: 0 0 0 1%;}
148
+ .um-admin-drag-col.cols-2.cols-middle {}
149
+
150
+ .um-admin-drag-addrow {
151
+ text-align: center;
152
+ font-size: 14px;
153
+ color: #888;
154
+ cursor: pointer;
155
+ border: 1px dashed #bbb;
156
+ padding: 10px 0;
157
+ margin: 20px 0 0 0;
158
+ }
159
+ .um-admin-drag-addrow i {
160
+ font-size: 23px !important;
161
+ margin: 0 !important;
162
+ }
163
+ .um-admin-drag-addrow:hover {color: #3ba1da}
164
+
165
+ /*
166
+ - Fields
167
+ */
168
+
169
+ .um-admin-drag-fld {
170
+ display: block;
171
+ position: relative;
172
+ border: 1px solid #dddddd;
173
+ margin: 0 0 15px 0;
174
+ background: #F5F5F5;
175
+ cursor: move !important;
176
+ }
177
+
178
+ .um-admin-drag-fld-title i {
179
+ width: 24px;
180
+ display: inline-block;
181
+ text-align: center;
182
+ }
183
+
184
+ .um-admin-drag-fld.um-field-type-group {background: #555;border: 0}
185
+ .um-admin-drag-fld-title.um-field-type-group,.um-admin-drag-fld-type.um-field-type-group {color: #fff}
186
+ .um-admin-drag-group {background: #FCFCFC;cursor: default;padding: 20px;border: 1px dashed #bbb;}
187
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group{float: left;position: relative;bottom: auto;right: auto;height: 30px;display: block;}
188
+ .um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field {display: none !important}
189
+
190
+ .um-admin-drag-fld-title,
191
+ .um-admin-drag-fld-type {
192
+ float: left;
193
+ font-weight: bold;
194
+ font-size: 13px;
195
+ color: #666;
196
+ height: 30px;
197
+ line-height: 30px;
198
+ margin: 0 0 0 20px;
199
+ }
200
+
201
+ .um-admin-drag-fld-type {
202
+ font-weight: 400;
203
+ color: #999;
204
+ }
205
+
206
+ .um-admin-drag-fld-icons {
207
+ float: right;
208
+ }
209
+
210
+ /*
211
+ - Responsive cols appearance
212
+ */
213
+
214
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld-title,
215
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
216
+ height: auto;
217
+ line-height: 18px;
218
+ margin: 10px;
219
+ margin-bottom: 0;
220
+ }
221
+
222
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
223
+ margin: 10px;
224
+ }
225
+
226
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld-icons {
227
+ float: none;
228
+ position: absolute;
229
+ bottom: 0;
230
+ right: 0;
231
+ height: 30px;
232
+ display: none;
233
+ }
234
+
235
+ .um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons{display: block;}
236
+
237
+ /*
238
+ - Icons
239
+ */
240
+
241
+ .um-admin-drag-row-icons a,
242
+ .um-admin-drag-row-icons span,
243
+ .um-admin-drag-rowsub-icons a,
244
+ .um-admin-drag-rowsub-icons span,
245
+ .um-admin-drag-fld-icons a{
246
+ text-decoration: none;
247
+ color: #fff;
248
+ width: 40px;
249
+ height: 30px;
250
+ line-height: 30px;
251
+ text-align: center;
252
+ display: block !important;
253
+ float: left;
254
+ background: #44b0ec;
255
+ padding: 0 4px;
256
+ transition: all .2s linear;
257
+ border-left: 1px solid #379dd5;
258
+ }
259
+
260
+ .um-admin-drag-row-icons span,
261
+ .um-admin-drag-rowsub-icons span
262
+ {cursor: move!important}
263
+
264
+ .um-admin-drag-row-icons a:hover,
265
+ .um-admin-drag-row-icons span:hover,
266
+ .um-admin-drag-rowsub-icons a:hover,
267
+ .um-admin-drag-rowsub-icons span:hover,
268
+ .um-admin-drag-fld-icons a:hover {background: #3396cd;}
269
+
270
+ .um-admin-drag-row-icons i,
271
+ .um-admin-drag-rowsub-icons i,
272
+ .um-admin-drag-fld-icons i{
273
+ font-size: 18px !important;
274
+ margin: 0 !important;
275
+ top: 2px;
276
+ position: relative;
277
+ }
278
+
279
+ /*
280
+ - UI Placeholders
281
+ */
282
+
283
+ .um-row-placeholder {
284
+ width: 100%;
285
+ border: 2px dashed #aaa;
286
+ box-sizing: border-box;
287
+ }
288
+
289
+ .um-rowsub-placeholder {
290
+ width: 100%;
291
+ border: 2px dashed #ccc;
292
+ box-sizing: border-box;
293
+ display: block;
294
+ }
295
+
296
+ .um-fld-placeholder {
297
+ display: block;
298
+ border: 1px dashed #dddddd;
299
+ background: #fff;
300
+ box-sizing: border-box;
301
+ width: 100%;
302
  }
admin/assets/css/um-admin-columns.css CHANGED
@@ -1,67 +1,67 @@
1
- .um-admin td, .um-admin th {
2
- -webkit-font-smoothing: antialiased !important;
3
- -moz-osx-font-smoothing: grayscale;
4
- }
5
-
6
- .um-admin.post-type-um_form .manage-column.column-id {width: 60px}
7
- .um-admin.post-type-um_form .manage-column.column-mode {width: 100px}
8
- .um-admin.post-type-um_form .manage-column.column-title {width: 200px}
9
- .um-admin.post-type-um_form .manage-column.column-shortcode {width: 200px}
10
- .um-admin.post-type-um_form .manage-column.column-impressions {width: 100px}
11
- .um-admin.post-type-um_form .manage-column.column-conversions {width: 100px}
12
-
13
- .um-admin.post-type-um_directory .manage-column.column-id {width: 60px}
14
- .um-admin.post-type-um_directory .manage-column.column-title {width: 250px}
15
-
16
- .um-admin.post-type-um_role .manage-column.column-title {width: 200px}
17
- .um-admin.post-type-um_role .manage-column.column-count {width: 150px}
18
- .um-admin.post-type-um_role .manage-column.column-core {width: 150px}
19
-
20
- .um-admin.post-type-um_form td.column-shortcode,
21
- .um-admin.post-type-um_form td.column-id,
22
- .um-admin.post-type-um_directory td.column-shortcode,
23
- .um-admin.post-type-um_directory td.column-id,
24
- .um-admin.post-type-um_role td.column-count
25
- {font-size: 14px;}
26
-
27
- .um-admin.users-php td.column-um_actions {padding-top: 12px}
28
-
29
- .um-admin.users-php td.column-um_actions a.button {
30
- height: 29px !important;
31
- margin: 0 0 0 2px !important;
32
- position: relative;
33
- }
34
-
35
- .um-admin-tag {
36
- display: inline-block;
37
- border-radius: 2px;
38
- width: 100%;
39
- box-sizing: border-box;
40
- text-align: center;
41
- background: #3ba1da;
42
- color: #fff;
43
- font-size: 14px;
44
- height: 34px;
45
- line-height: 34px;
46
- }
47
- .um-admin-tag.small {font-size: 13px;height:28px;line-height: 28px;display:inline;padding: 4px 10px;background: transparent;color: #666;border-radius:0;}
48
- .um-admin-tag.approved {border-left: 2px solid #7ACF58}
49
- .um-admin-tag.pending {border-left: 2px solid #C74A4A}
50
-
51
- .um-admin-txtspace {margin: 0 0 0 10px;}
52
-
53
- .um-adm-ico {
54
- font-size: 18px;
55
- width: 18px;
56
- text-align: center;
57
- display: inline-block;
58
- color: #7ACF58;
59
- }
60
-
61
- .um-adm-ico.inactive {color: #C74A4A}
62
- .um-adm-ico.pointer {cursor: pointer}
63
-
64
- .um-admin-icontext i {
65
- font-size: 18px;
66
- margin: 0 5px 0 0;
67
  }
1
+ .um-admin td, .um-admin th {
2
+ -webkit-font-smoothing: antialiased !important;
3
+ -moz-osx-font-smoothing: grayscale;
4
+ }
5
+
6
+ .um-admin.post-type-um_form .manage-column.column-id {width: 60px}
7
+ .um-admin.post-type-um_form .manage-column.column-mode {width: 100px}
8
+ .um-admin.post-type-um_form .manage-column.column-title {width: 200px}
9
+ .um-admin.post-type-um_form .manage-column.column-shortcode {width: 200px}
10
+ .um-admin.post-type-um_form .manage-column.column-impressions {width: 100px}
11
+ .um-admin.post-type-um_form .manage-column.column-conversions {width: 100px}
12
+
13
+ .um-admin.post-type-um_directory .manage-column.column-id {width: 60px}
14
+ .um-admin.post-type-um_directory .manage-column.column-title {width: 250px}
15
+
16
+ .um-admin.post-type-um_role .manage-column.column-title {width: 200px}
17
+ .um-admin.post-type-um_role .manage-column.column-count {width: 150px}
18
+ .um-admin.post-type-um_role .manage-column.column-core {width: 150px}
19
+
20
+ .um-admin.post-type-um_form td.column-shortcode,
21
+ .um-admin.post-type-um_form td.column-id,
22
+ .um-admin.post-type-um_directory td.column-shortcode,
23
+ .um-admin.post-type-um_directory td.column-id,
24
+ .um-admin.post-type-um_role td.column-count
25
+ {font-size: 14px;}
26
+
27
+ .um-admin.users-php td.column-um_actions {padding-top: 12px}
28
+
29
+ .um-admin.users-php td.column-um_actions a.button {
30
+ height: 29px !important;
31
+ margin: 0 0 0 2px !important;
32
+ position: relative;
33
+ }
34
+
35
+ .um-admin-tag {
36
+ display: inline-block;
37
+ border-radius: 2px;
38
+ width: 100%;
39
+ box-sizing: border-box;
40
+ text-align: center;
41
+ background: #3ba1da;
42
+ color: #fff;
43
+ font-size: 14px;
44
+ height: 34px;
45
+ line-height: 34px;
46
+ }
47
+ .um-admin-tag.small {font-size: 13px;height:28px;line-height: 28px;display:inline;padding: 4px 10px;background: transparent;color: #666;border-radius:0;}
48
+ .um-admin-tag.approved {border-left: 2px solid #7ACF58}
49
+ .um-admin-tag.pending {border-left: 2px solid #C74A4A}
50
+
51
+ .um-admin-txtspace {margin: 0 0 0 10px;}
52
+
53
+ .um-adm-ico {
54
+ font-size: 18px;
55
+ width: 18px;
56
+ text-align: center;
57
+ display: inline-block;
58
+ color: #7ACF58;
59
+ }
60
+
61
+ .um-adm-ico.inactive {color: #C74A4A}
62
+ .um-adm-ico.pointer {cursor: pointer}
63
+
64
+ .um-admin-icontext i {
65
+ font-size: 18px;
66
+ margin: 0 5px 0 0;
67
  }
admin/assets/css/um-admin-dashboard.css CHANGED
@@ -1,128 +1,128 @@
1
- #um-extensions-wrap a.plugin-image,
2
- #um-extensions-wrap a.plugin-image img {
3
- max-width: 100%;
4
- display: block;
5
- }
6
-
7
- #um-extensions-wrap .plugin-card .name,
8
- #um-extensions-wrap .plugin-card .desc {
9
- margin-left: 0;
10
- }
11
-
12
- #um-metaboxes-general h2 sup {
13
- font-size: 14px;
14
- position: relative;
15
- font-weight: 400;
16
- background: #3ba1da;
17
- color: #fff !important;
18
- padding: 2px 4px !important;
19
- border-radius: 3px;
20
- position: relative;
21
- top: 5px;
22
- left: 3px;
23
- border: none !important;
24
- }
25
-
26
- .wrap a.red, .wrap span.red {color:#C74A4A}
27
- .wrap span.ok {color:#7ACF58}
28
-
29
- /* Misc */
30
-
31
- .um-admin-dash-review {
32
- text-decoration: none !important;
33
- font-size: 16px;
34
- position: absolute;
35
- top: -2px;
36
- right: 4px;
37
- }
38
-
39
- /* Dashboard widgets */
40
-
41
- .p_seperate {
42
- margin-top: 12px;
43
- border-top: 1px solid #ddd;
44
- }
45
-
46
- .um-metabox-holder p.sub {
47
- padding: 0 4px 2px 4px;
48
- margin: 0 0 8px 0;
49
- color: #8F8F8F;
50
- font-size: 14px;
51
- border-bottom: 1px solid #ECECEC;
52
- }
53
-
54
- .um-metabox-holder .table {
55
- float: left;
56
- width: 45%;
57
- }
58
-
59
- .um-metabox-holder a.warning {
60
- color: #C74A4A !important;
61
- background: transparent !important;
62
- border: 0;
63
- }
64
-
65
- .um-metabox-holder .table_right {
66
- float: right;
67
- width: 45%;
68
- }
69
-
70
- .um-metabox-holder td.b {
71
- padding-right: 6px;
72
- text-align: right;
73
- font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
74
- font-size: 14px;
75
- width: 1%;
76
- }
77
-
78
- .um-metabox-holder td.b {
79
- text-align: right;
80
- font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
81
- font-size: 14px;
82
- }
83
-
84
- .um-metabox-holder table td {
85
- white-space: nowrap;
86
- font-size: 12px;
87
- }
88
-
89
- .um-metabox-holder td.b a {
90
- font-size: 18px;
91
- }
92
-
93
- .um-metabox-holder .norm i {
94
- display: inline-block;
95
- width: 30px;
96
- text-align: center;
97
- }
98
-
99
- .um-metabox-holder .norm p {
100
- margin: 5px 0;
101
- }
102
-
103
- .um-metabox-holder .norm .count {
104
- font-size: 16px;
105
- font-family: Gerogia;
106
- color: #999;
107
- width: 40px;
108
- display: inline-block;
109
- text-align: right;
110
- margin-right: 10px;
111
- }
112
-
113
- /* Share bar */
114
-
115
- .um-admin-dash-share {
116
- margin-top: 11px !important;
117
- float: left;
118
- line-height: 28px;
119
- font-size: 15px;
120
- }
121
-
122
- .um-admin-dash-share a {
123
- margin: 0 15px 0 0 !important;
124
- text-decoration: none !important;
125
- color: #777 !important;
126
- font-size: 22px !important;
127
- }
128
  .um-admin-dash-share a:hover {color: #3ba1da !important}
1
+ #um-extensions-wrap a.plugin-image,
2
+ #um-extensions-wrap a.plugin-image img {
3
+ max-width: 100%;
4
+ display: block;
5
+ }
6
+
7
+ #um-extensions-wrap .plugin-card .name,
8
+ #um-extensions-wrap .plugin-card .desc {
9
+ margin-left: 0;
10
+ }
11
+
12
+ #um-metaboxes-general h2 sup {
13
+ font-size: 14px;
14
+ position: relative;
15
+ font-weight: 400;
16
+ background: #3ba1da;
17
+ color: #fff !important;
18
+ padding: 2px 4px !important;
19
+ border-radius: 3px;
20
+ position: relative;
21
+ top: 5px;
22
+ left: 3px;
23
+ border: none !important;
24
+ }
25
+
26
+ .wrap a.red, .wrap span.red {color:#C74A4A}
27
+ .wrap span.ok {color:#7ACF58}
28
+
29
+ /* Misc */
30
+
31
+ .um-admin-dash-review {
32
+ text-decoration: none !important;
33
+ font-size: 16px;
34
+ position: absolute;
35
+ top: -2px;
36
+ right: 4px;
37
+ }
38
+
39
+ /* Dashboard widgets */
40
+
41
+ .p_seperate {
42
+ margin-top: 12px;
43
+ border-top: 1px solid #ddd;
44
+ }
45
+
46
+ .um-metabox-holder p.sub {
47
+ padding: 0 4px 2px 4px;
48
+ margin: 0 0 8px 0;
49
+ color: #8F8F8F;
50
+ font-size: 14px;
51
+ border-bottom: 1px solid #ECECEC;
52
+ }
53
+
54
+ .um-metabox-holder .table {
55
+ float: left;
56
+ width: 45%;
57
+ }
58
+
59
+ .um-metabox-holder a.warning {
60
+ color: #C74A4A !important;
61
+ background: transparent !important;
62
+ border: 0;
63
+ }
64
+
65
+ .um-metabox-holder .table_right {
66
+ float: right;
67
+ width: 45%;
68
+ }
69
+
70
+ .um-metabox-holder td.b {
71
+ padding-right: 6px;
72
+ text-align: right;
73
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
74
+ font-size: 14px;
75
+ width: 1%;
76
+ }
77
+
78
+ .um-metabox-holder td.b {
79
+ text-align: right;
80
+ font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
81
+ font-size: 14px;
82
+ }
83
+
84
+ .um-metabox-holder table td {
85
+ white-space: nowrap;
86
+ font-size: 12px;
87
+ }
88
+
89
+ .um-metabox-holder td.b a {
90
+ font-size: 18px;
91
+ }
92
+
93
+ .um-metabox-holder .norm i {
94
+ display: inline-block;
95
+ width: 30px;
96
+ text-align: center;
97
+ }
98
+
99
+ .um-metabox-holder .norm p {
100
+ margin: 5px 0;
101
+ }
102
+
103
+ .um-metabox-holder .norm .count {
104
+ font-size: 16px;
105
+ font-family: Gerogia;
106
+ color: #999;
107
+ width: 40px;
108
+ display: inline-block;
109
+ text-align: right;
110
+ margin-right: 10px;
111
+ }
112
+
113
+ /* Share bar */
114
+
115
+ .um-admin-dash-share {
116
+ margin-top: 11px !important;
117
+ float: left;
118
+ line-height: 28px;
119
+ font-size: 15px;
120
+ }
121
+
122
+ .um-admin-dash-share a {
123
+ margin: 0 15px 0 0 !important;
124
+ text-decoration: none !important;
125
+ color: #777 !important;
126
+ font-size: 22px !important;
127
+ }
128
  .um-admin-dash-share a:hover {color: #3ba1da !important}
admin/assets/css/um-admin-form.css CHANGED
@@ -1,61 +1,61 @@
1
- /*
2
- - General
3
- */
4
-
5
- .um-admin-metabox * {
6
- -webkit-font-smoothing: antialiased !important;
7
- -moz-osx-font-smoothing: grayscale !important;
8
- }
9
-
10
- .um-admin-metabox h6 {
11
- font-size: 14px;
12
- margin: 12px 0 0 0;
13
- }
14
-
15
- /*
16
- - Metabox layout
17
- */
18
-
19
- .um-admin.post-type-um_form div#submitdiv,
20
- .um-admin.post-type-um_form div#side-sortables
21
- {display:none}
22
-
23
- /*
24
- - Boxed Links
25
- */
26
-
27
- .um-admin-boxed-links {
28
- width: 100%;
29
- text-align: center;
30
- }
31
-
32
- .um-admin-boxed-links a {
33
- width: 33.3%;
34
- float: left;
35
- border-left: 1px solid #fff;
36
- border-right: 1px solid #fff;
37
- padding: 30px 25px !important;
38
- background: #f8f8f8;
39
- text-align: center;
40
- display: inline-block !important;
41
- font-size: 14px;
42
- transition: all .2s linear;
43
- text-decoration: none;
44
- color: #666;
45
- margin: 0 !important;
46
- box-sizing: border-box !important;
47
- border-radius: 2px;
48
- -webkit-font-smoothing: antialiased;
49
- -moz-osx-font-smoothing: grayscale;
50
- font-weight: 600;
51
- }
52
-
53
- .um-admin-boxed-links i {
54
- font-size: 28px;
55
- vertical-align: middle;
56
- margin: 0 10px 0 0;
57
- }
58
-
59
- .um-admin-boxed-links a:hover {
60
- background: #eee;
61
  }
1
+ /*
2
+ - General
3
+ */
4
+
5
+ .um-admin-metabox * {
6
+ -webkit-font-smoothing: antialiased !important;
7
+ -moz-osx-font-smoothing: grayscale !important;
8
+ }
9
+
10
+ .um-admin-metabox h6 {
11
+ font-size: 14px;
12
+ margin: 12px 0 0 0;
13
+ }
14
+
15
+ /*
16
+ - Metabox layout
17
+ */
18
+
19
+ .um-admin.post-type-um_form div#submitdiv,
20
+ .um-admin.post-type-um_form div#side-sortables
21
+ {display:none}
22
+
23
+ /*
24
+ - Boxed Links
25
+ */
26
+
27
+ .um-admin-boxed-links {
28
+ width: 100%;
29
+ text-align: center;
30
+ }
31
+
32
+ .um-admin-boxed-links a {
33
+ width: 33.3%;
34
+ float: left;
35
+ border-left: 1px solid #fff;
36
+ border-right: 1px solid #fff;
37
+ padding: 30px 25px !important;
38
+ background: #f8f8f8;
39
+ text-align: center;
40
+ display: inline-block !important;
41
+ font-size: 14px;
42
+ transition: all .2s linear;
43
+ text-decoration: none;
44
+ color: #666;
45
+ margin: 0 !important;
46
+ box-sizing: border-box !important;
47
+ border-radius: 2px;
48
+ -webkit-font-smoothing: antialiased;
49
+ -moz-osx-font-smoothing: grayscale;
50
+ font-weight: 600;
51
+ }
52
+
53
+ .um-admin-boxed-links i {
54
+ font-size: 28px;
55
+ vertical-align: middle;
56
+ margin: 0 10px 0 0;
57
+ }
58
+
59
+ .um-admin-boxed-links a:hover {
60
+ background: #eee;
61
  }
admin/assets/css/um-admin-global.css CHANGED
@@ -1,90 +1,90 @@
1
- .um-admin-notice {
2
- border-color: #3ba1da !important;
3
- color: #555;
4
- }
5
-
6
- .um-admin-notice a.button-primary {
7
- background-color: #3ba1da !important;
8
- border-color: #3ba1da !important;
9
- }
10
-
11
- .um-admin-notice a.button-primary:hover {
12
- background-color: #2295d8 !important;
13
- border-color: #2295d8 !important;
14
- }
15
-
16
- .um-admin-notice a.button-secondary {opacity: 0.7}
17
- .um-admin-notice a.button-secondary:hover {opacity: 0.9}
18
- .um-admin-notice a {text-decoration: none;color: #3ba1da}
19
- .um-admin-notice a:hover {color: #44b0ec}
20
-
21
- .um-filter {
22
- padding: 12px;
23
- border-color: #ddd !important;
24
- margin: 20px 0 0 0 !important;
25
- font-size: 14px;
26
- line-height: 24px;
27
- }
28
-
29
- /*
30
- - General metabox styling
31
- */
32
-
33
- #um-admin-access-settings h3 {
34
- padding: 10px 20px 10px 60px;
35
- color: #fff;
36
- background: #3ba1da url(../img/logo-small.png) no-repeat 12px center;
37
- font-weight: bold;
38
- font-size: 14px !important;
39
- -webkit-font-smoothing: antialiased !important;
40
- -moz-osx-font-smoothing: grayscale !important;
41
- }
42
-
43
- #um-admin-access-settings h4 { margin: 10px 0 4px 0!important}
44
-
45
- #um-admin-access-settings div.handlediv {
46
- color: #fff !important;
47
- -webkit-font-smoothing: antialiased !important;
48
- -moz-osx-font-smoothing: grayscale !important;
49
- }
50
-
51
- #um-admin-access-settings p {font-size: 13px}
52
-
53
- #um-admin-access-settings input[type=text] {font-size: 13px}
54
-
55
- /*
56
- - Nav Menu
57
- */
58
-
59
- .um-nav-edit * {
60
- -webkit-font-smoothing: antialiased !important;
61
- -moz-osx-font-smoothing: grayscale !important;
62
- }
63
-
64
- .um-nav-edit-h2 {
65
- padding: 10px 20px 10px 60px;
66
- margin: 14px 12px 0 0;
67
- border-radius: 3px;
68
- color: #fff;
69
- background: #3ba1da url(../img/logo-small.png) no-repeat 12px center;
70
- font-weight: bold;
71
- }
72
-
73
- .um-nav-mode {margin-top:10px}
74
- .um-nav-roles {display: none;margin-top:5px}
75
-
76
- /*
77
- - jQuery Tooltips
78
- */
79
-
80
- .um-admin-tip {
81
- margin: 0 0 0 2px;
82
- color: #3ba1da !important;
83
- vertical-align: middle;
84
- position: relative;
85
- top: -3px;
86
- opacity: 0.8;
87
- }
88
- .um-admin-tip.n {margin-left: 5px}
89
- .um-admin-tip i {cursor: pointer; vertical-align: middle; font-size: 20px; line-height: 20px;color: #3ba1da !important;}
90
  a.um-delete{ color: #a00; }
1
+ .um-admin-notice {
2
+ border-color: #3ba1da !important;
3
+ color: #555;
4
+ }
5
+
6
+ .um-admin-notice a.button-primary {
7
+ background-color: #3ba1da !important;
8
+ border-color: #3ba1da !important;
9
+ }
10
+
11
+ .um-admin-notice a.button-primary:hover {
12
+ background-color: #2295d8 !important;
13
+ border-color: #2295d8 !important;
14
+ }
15
+
16
+ .um-admin-notice a.button-secondary {opacity: 0.7}
17
+ .um-admin-notice a.button-secondary:hover {opacity: 0.9}
18
+ .um-admin-notice a {text-decoration: none;color: #3ba1da}
19
+ .um-admin-notice a:hover {color: #44b0ec}
20
+
21
+ .um-filter {
22
+ padding: 12px;
23
+ border-color: #ddd !important;
24
+ margin: 20px 0 0 0 !important;
25
+ font-size: 14px;
26
+ line-height: 24px;
27
+ }
28
+
29
+ /*
30
+ - General metabox styling
31
+ */
32
+
33
+ #um-admin-access-settings h3 {
34
+ padding: 10px 20px 10px 60px;
35
+ color: #fff;
36
+ background: #3ba1da url(../img/logo-small.png) no-repeat 12px center;
37
+ font-weight: bold;
38
+ font-size: 14px !important;
39
+ -webkit-font-smoothing: antialiased !important;
40
+ -moz-osx-font-smoothing: grayscale !important;
41
+ }
42
+
43
+ #um-admin-access-settings h4 { margin: 10px 0 4px 0!important}
44
+
45
+ #um-admin-access-settings div.handlediv {
46
+ color: #fff !important;
47
+ -webkit-font-smoothing: antialiased !important;
48
+ -moz-osx-font-smoothing: grayscale !important;
49
+ }
50
+
51
+ #um-admin-access-settings p {font-size: 13px}
52
+
53
+ #um-admin-access-settings input[type=text] {font-size: 13px}
54
+
55
+ /*
56
+ - Nav Menu
57
+ */
58
+
59
+ .um-nav-edit * {
60
+ -webkit-font-smoothing: antialiased !important;
61
+ -moz-osx-font-smoothing: grayscale !important;
62
+ }
63
+
64
+ .um-nav-edit-h2 {
65
+ padding: 10px 20px 10px 60px;
66
+ margin: 14px 12px 0 0;
67
+ border-radius: 3px;
68
+ color: #fff;
69
+ background: #3ba1da url(../img/logo-small.png) no-repeat 12px center;
70
+ font-weight: bold;
71
+ }
72
+
73
+ .um-nav-mode {margin-top:10px}
74
+ .um-nav-roles {display: none;margin-top:5px}
75
+
76
+ /*
77
+ - jQuery Tooltips
78
+ */
79
+
80
+ .um-admin-tip {
81
+ margin: 0 0 0 2px;
82
+ color: #3ba1da !important;
83
+ vertical-align: middle;
84
+ position: relative;
85
+ top: -3px;
86
+ opacity: 0.8;
87
+ }
88
+ .um-admin-tip.n {margin-left: 5px}
89
+ .um-admin-tip i {cursor: pointer; vertical-align: middle; font-size: 20px; line-height: 20px;color: #3ba1da !important;}
90
  a.um-delete{ color: #a00; }
admin/assets/css/um-admin-menu.css CHANGED
@@ -1,3 +1,3 @@
1
- ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after {display: none !important}
2
-
3
  ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}
1
+ ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after {display: none !important}
2
+
3
  ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}
admin/assets/css/um-admin-misc.css CHANGED
@@ -1,259 +1,259 @@
1
- /*
2
- - Welcome
3
- */
4
-
5
- .um-about-wrap * {
6
- -webkit-font-smoothing: antialiased;
7
- -moz-osx-font-smoothing: grayscale;
8
- }
9
-
10
- .um-about-wrap a.um-about-icon {
11
- margin: 0 0 0 15px !important;
12
- padding: 0 !important;
13
- text-decoration: none !important;
14
- color: #777 !important;
15
- font-size: 22px !important;
16
- }
17
-
18
- .um-about-wrap a.um-about-icon:hover {color: #3ba1da !important}
19
-
20
- .um-badge {
21
- color: #fff;
22
- background: none !important;
23
- background: #3ba1da url(../img/logo_small.png) no-repeat center 0px !important;
24
- }
25
-
26
- .um-about-wrap .ultimatemember-actions a.button-primary,
27
- .um-about-wrap .ultimatemember-actions a.button {
28
- vertical-align: top;
29
- margin: 0 5px 0 0;
30
- }
31
-
32
- .changelog a.button-primary {
33
- height: 40px;
34
- line-height: 38px;
35
- }
36
-
37
- .um-about-wrap a {text-decoration: none}
38
-
39
- /*
40
- - General
41
- */
42
-
43
- body.um-admin-modal-open {
44
- overflow: hidden;
45
- }
46
-
47
- .um-admin #major-publishing-actions{background-color: #fff !important;border-top:0}
48
-
49
- .um-admin-hide {display: none}
50
-
51
- .um-admin-field {
52
- display: block;
53
- width: 100%;
54
- margin-top: 10px;
55
- }
56
-
57
- .um-admin-field a.button {
58
- position: relative;
59
- top: 1px;
60
- height: 30px !important;
61
- }
62
-
63
- .um-admin-half {
64
- float: left;
65
- width: 48%;
66
- }
67
-
68
- .um-admin-tri {
69
- float: left;
70
- width: 33%;
71
- }
72
-
73
- .um-admin-left{float: left}
74
- .um-admin-right {float: right}
75
- .um-admin-clear {clear: both}
76
-
77
- .um-admin a.um-admin-activebg,
78
- .um-admin a.um-admin-activebg:hover{
79
- background: #3ba1da;
80
- color: #fff;
81
- }
82
-
83
- .um-admin a.button i,
84
- .um-admin a.button-primary i {
85
- font-size: 15px !important;
86
- height: 15px !important;
87
- width: 15px !important;
88
- text-align: center !important;
89
- margin: 0 5px 0 0 !important;
90
- display: inline-block;
91
- }
92
-
93
- .um-admin a.button i:before,
94
- .um-admin a.button-primary i:before {
95
- position: relative;
96
- top: 1px;
97
- }
98
-
99
- /*
100
- - Form Inputs
101
- */
102
-
103
- .um-admin-metabox h3 {
104
- padding-left: 0 !important;
105
- }
106
-
107
- .um-admin-metabox h4 {
108
- font-size: 14px;
109
- background: #f5f5f5;
110
- padding: 8px 4px;
111
- color: #333;
112
- }
113
-
114
- .um-admin-metabox p {margin: 10px 0 0 0}
115
-
116
- .um-admin-metabox label{
117
- display: block;
118
- cursor: default;
119
- margin: 0 0 8px 0 !important;
120
- padding: 0!important;
121
- font-size: 13px;
122
- color: #666;
123
- }
124
-
125
- .um-admin-metabox input[type=text]:disabled{
126
- opacity: 0.7 !important;
127
- color: #aaa !important;
128
- }
129
-
130
- .um-admin-metabox input[type=text] {
131
- height: auto !important;
132
- }
133
-
134
- .um-admin-metabox input[type=text],
135
- .um-admin-metabox textarea {
136
- width: 100%;
137
- max-width: 100%;
138
- display: block;
139
- box-sizing: border-box !important;
140
- font-size: 13px !important;
141
- line-height: 1.4em !important;
142
- padding: 4px 10px !important;
143
- }
144
-
145
- .um-admin-metabox textarea {
146
- padding: 8px !important;
147
- line-height: 1.6em;
148
- color: #888 !important;
149
- }
150
-
151
- .um-admin-metabox input[type=text].um-admin-error,
152
- .um-admin-metabox textarea.um-admin-error
153
- {border-color: #C74A4A!important}
154
-
155
- .um-admin-metabox input[type=text].small {width: 54px}
156
-
157
- .um-admin-metabox textarea {min-height: 100px;height: 100px}
158
- .um-admin-metabox textarea.tall {min-height: 200px;height: 200px}
159
-
160
- .wp-picker-container input.wp-color-picker[type="text"] {
161
- width: 68px !important;
162
- float: left !important;
163
- padding: 2px 4px !important;
164
- border-width: 1px !important;
165
- }
166
-
167
- /*
168
- - Error blocks
169
- */
170
-
171
- .um-admin-error-block, .um-admin-success-block{
172
- display: none;
173
- width: 100%;
174
- background: #C74A4A;
175
- border-radius: 3px;
176
- color: #fff;
177
- box-sizing: border-box;
178
- position: relative;
179
- padding: 12px;
180
- font-size: 13px;
181
- line-height: 1em !important;
182
- margin: 0 0 16px 0;
183
- }
184
-
185
- .um-admin-success-block {
186
- background: #7ACF58;
187
- }
188
-
189
- /*
190
- - Yes or NO UI
191
- */
192
-
193
- p.disabled-on-off .um-admin-yesno {
194
- opacity: 0.5!important;
195
- cursor: default !important;
196
- }
197
- p.disabled-on-off .um-admin-yesno *{
198
- cursor: default !important;
199
- }
200
-
201
- .um-admin-yesno {
202
- width: 100px !important;
203
- height: 26px;
204
- display: block;
205
- position: relative;
206
- color: #fff;
207
- }
208
-
209
- .um-admin-yesno span.btn {
210
- position: absolute;
211
- left: 0;
212
- top: -2px;
213
- width: 50px;
214
- height: 28px;
215
- text-align: center;
216
- background: #f9f9f9;
217
- z-index: 999;
218
- border-radius: 3px;
219
- cursor: pointer;
220
- border: solid 1px #D0D9DB;
221
- margin: 0;
222
- padding: 0 !important;
223
- }
224
-
225
- .um-admin-yesno span.btn.pos-1 {left: 48px}
226
-
227
- .um-admin-yesno span.yes, .um-admin-yesno span.no {
228
- width: 50px;
229
- float: left;
230
- line-height: 24px;
231
- height: 26px;
232
- cursor: default;
233
- font-size: 14px;
234
- color: #fff;
235
- padding: 0 0 0 10px;
236
- box-sizing: border-box;
237
- }
238
-
239
- .um-admin-yesno .yes {
240
- background: #3ba1da;
241
- border-radius: 3px 0 0 3px;
242
- border: 1px solid rgba(0,0,0,.2);
243
- }
244
-
245
- .um-admin-yesno .no {
246
- padding: 0 10px 0 0 !important;
247
- text-align: right;
248
- float: right;
249
- background: #fff;
250
- color: #222 !important;
251
- border-radius: 0 3px 3px 0;
252
- border: 1px solid #ddd;
253
- }
254
-
255
- .um-admin.users-php .subsubsub li.subsep {
256
- display: block;
257
- visibility: hidden;
258
- height: 0;
259
- }
1
+ /*
2
+ - Welcome
3
+ */
4
+
5
+ .um-about-wrap * {
6
+ -webkit-font-smoothing: antialiased;
7
+ -moz-osx-font-smoothing: grayscale;
8
+ }
9
+
10
+ .um-about-wrap a.um-about-icon {
11
+ margin: 0 0 0 15px !important;
12
+ padding: 0 !important;
13
+ text-decoration: none !important;
14
+ color: #777 !important;
15
+ font-size: 22px !important;
16
+ }
17
+
18
+ .um-about-wrap a.um-about-icon:hover {color: #3ba1da !important}
19
+
20
+ .um-badge {
21
+ color: #fff;
22
+ background: none !important;
23
+ background: #3ba1da url(../img/logo_small.png) no-repeat center 0px !important;
24
+ }
25
+
26
+ .um-about-wrap .ultimatemember-actions a.button-primary,
27
+ .um-about-wrap .ultimatemember-actions a.button {
28
+ vertical-align: top;
29
+ margin: 0 5px 0 0;
30
+ }
31
+
32
+ .changelog a.button-primary {
33
+ height: 40px;
34
+ line-height: 38px;
35
+ }
36
+
37
+ .um-about-wrap a {text-decoration: none}
38
+
39
+ /*
40
+ - General
41
+ */
42
+
43
+ body.um-admin-modal-open {
44
+ overflow: hidden;
45
+ }
46
+
47
+ .um-admin #major-publishing-actions{background-color: #fff !important;border-top:0}
48
+
49
+ .um-admin-hide {display: none}
50
+
51
+ .um-admin-field {
52
+ display: block;
53
+ width: 100%;
54
+ margin-top: 10px;
55
+ }
56
+
57
+ .um-admin-field a.button {
58
+ position: relative;
59
+ top: 1px;
60
+ height: 30px !important;
61
+ }
62
+
63
+ .um-admin-half {
64
+ float: left;
65
+ width: 48%;
66
+ }
67
+
68
+ .um-admin-tri {
69
+ float: left;
70
+ width: 33%;
71
+ }
72
+
73
+ .um-admin-left{float: left}
74
+ .um-admin-right {float: right}
75
+ .um-admin-clear {clear: both}
76
+
77
+ .um-admin a.um-admin-activebg,
78
+ .um-admin a.um-admin-activebg:hover{
79
+ background: #3ba1da;
80
+ color: #fff;
81
+ }
82
+
83
+ .um-admin a.button i,
84
+ .um-admin a.button-primary i {
85
+ font-size: 15px !important;
86
+ height: 15px !important;
87
+ width: 15px !important;
88
+ text-align: center !important;
89
+ margin: 0 5px 0 0 !important;
90
+ display: inline-block;
91
+ }
92
+
93
+ .um-admin a.button i:before,
94
+ .um-admin a.button-primary i:before {
95
+ position: relative;
96
+ top: 1px;
97
+ }
98
+
99
+ /*
100
+ - Form Inputs
101
+ */
102
+
103
+ .um-admin-metabox h3 {
104
+ padding-left: 0 !important;
105
+ }
106
+
107
+ .um-admin-metabox h4 {
108
+ font-size: 14px;
109
+ background: #f5f5f5;
110
+ padding: 8px 4px;
111
+ color: #333;
112
+ }
113
+
114
+ .um-admin-metabox p {margin: 10px 0 0 0}
115
+
116
+ .um-admin-metabox label{
117
+ display: block;
118
+ cursor: default;
119
+ margin: 0 0 8px 0 !important;
120
+ padding: 0!important;
121
+ font-size: 13px;
122
+ color: #666;
123
+ }
124
+
125
+ .um-admin-metabox input[type=text]:disabled{
126
+ opacity: 0.7 !important;
127
+ color: #aaa !important;
128
+ }
129
+
130
+ .um-admin-metabox input[type=text] {
131
+ height: auto !important;
132
+ }
133
+
134
+ .um-admin-metabox input[type=text],
135
+ .um-admin-metabox textarea {
136
+ width: 100%;
137
+ max-width: 100%;
138
+ display: block;
139
+ box-sizing: border-box !important;
140
+ font-size: 13px !important;
141
+ line-height: 1.4em !important;
142
+ padding: 4px 10px !important;
143
+ }
144
+
145
+ .um-admin-metabox textarea {
146
+ padding: 8px !important;
147
+ line-height: 1.6em;
148
+ color: #888 !important;
149
+ }
150
+
151
+ .um-admin-metabox input[type=text].um-admin-error,
152
+ .um-admin-metabox textarea.um-admin-error
153
+ {border-color: #C74A4A!important}
154
+
155
+ .um-admin-metabox input[type=text].small {width: 54px}
156
+
157
+ .um-admin-metabox textarea {min-height: 100px;height: 100px}
158
+ .um-admin-metabox textarea.tall {min-height: 200px;height: 200px}
159
+
160
+ .wp-picker-container input.wp-color-picker[type="text"] {
161
+ width: 68px !important;
162
+ float: left !important;
163
+ padding: 2px 4px !important;
164
+ border-width: 1px !important;
165
+ }
166
+
167
+ /*
168
+ - Error blocks
169
+ */
170
+
171
+ .um-admin-error-block, .um-admin-success-block{
172
+ display: none;
173
+ width: 100%;
174
+ background: #C74A4A;
175
+ border-radius: 3px;
176
+ color: #fff;
177
+ box-sizing: border-box;
178
+ position: relative;
179
+ padding: 12px;
180
+ font-size: 13px;
181
+ line-height: 1em !important;
182
+ margin: 0 0 16px 0;
183
+ }
184
+
185
+ .um-admin-success-block {
186
+ background: #7ACF58;
187
+ }
188
+
189
+ /*
190
+ - Yes or NO UI
191
+ */
192
+
193
+ p.disabled-on-off .um-admin-yesno {
194
+ opacity: 0.5!important;
195
+ cursor: default !important;
196
+ }
197
+ p.disabled-on-off .um-admin-yesno *{
198
+ cursor: default !important;
199
+ }
200
+
201
+ .um-admin-yesno {
202
+ width: 100px !important;
203
+ height: 26px;
204
+ display: block;
205
+ position: relative;
206
+ color: #fff;
207
+ }
208
+
209
+ .um-admin-yesno span.btn {
210
+ position: absolute;
211
+ left: 0;
212
+ top: -2px;
213
+ width: 50px;
214
+ height: 28px;
215
+ text-align: center;
216
+ background: #f9f9f9;
217
+ z-index: 999;
218
+ border-radius: 3px;
219
+ cursor: pointer;
220
+ border: solid 1px #D0D9DB;
221
+ margin: 0;
222
+ padding: 0 !important;
223
+ }
224
+
225
+ .um-admin-yesno span.btn.pos-1 {left: 48px}
226
+
227
+ .um-admin-yesno span.yes, .um-admin-yesno span.no {
228
+ width: 50px;
229
+ float: left;
230
+ line-height: 24px;
231
+ height: 26px;
232
+ cursor: default;
233
+ font-size: 14px;
234
+ color: #fff;
235
+ padding: 0 0 0 10px;
236
+ box-sizing: border-box;
237
+ }
238
+
239
+ .um-admin-yesno .yes {
240
+ background: #3ba1da;
241
+ border-radius: 3px 0 0 3px;
242
+ border: 1px solid rgba(0,0,0,.2);
243
+ }
244
+
245
+ .um-admin-yesno .no {
246
+ padding: 0 10px 0 0 !important;
247
+ text-align: right;
248
+ float: right;
249
+ background: #fff;
250
+ color: #222 !important;
251
+ border-radius: 0 3px 3px 0;
252
+ border: 1px solid #ddd;
253
+ }
254
+
255
+ .um-admin.users-php .subsubsub li.subsep {
256
+ display: block;
257
+ visibility: hidden;
258
+ height: 0;
259
+ }
admin/assets/css/um-admin-modal.css CHANGED
@@ -1,298 +1,298 @@
1
- /*
2
- - Overlay
3
- */
4
-
5
- .um-admin-overlay {
6
- background: rgba(0,0,0, .7);
7
- width: 100%;
8
- height: 100%;
9
- position: fixed;
10
- top: 0;
11
- left: 0;
12
- z-index: 10000;
13
- }
14
-
15
- /*
16
- - modal
17
- */
18
-
19
- .um-admin-modal * {
20
- -webkit-font-smoothing: antialiased !important;
21
- -moz-osx-font-smoothing: grayscale;
22
- }
23
-
24
- .um-admin-modal input[type=submit].button-primary,
25
- .um-admin-modal a.button-primary,
26
- .um-admin-modal a.button {
27
- padding: 0 12px !important;
28
- vertical-align: middle !important;
29
- }
30
-
31
- .um-admin .um-admin-modal a.button i:before {
32
- display: block;
33
- top: 0px;
34
- }
35
-
36
- .um-admin-modal input[type=submit].button-primary {
37
- line-height: 24px !important;
38
- }
39
-
40
- .um-admin-modal {
41
- border-radius: 3px;
42
- background: #fff;
43
- position: fixed;
44
- top: 50% !important;
45
- left: 50% !important;
46
- display: none;
47
- z-index: 10001;
48
- box-sizing: border-box;
49
-
50
- width: 730px;
51
- margin-left: -365px;
52
- }
53
-
54
- .um-admin-modal.normal {width: 730px;margin-left: -365px;}
55
- .um-admin-modal.smaller {width: 500px;margin-left: -250px;}
56
- .um-admin-modal.small {width: 400px;margin-left: -200px;}
57
-
58
- .um-admin-modal-close {
59
- position: absolute;
60
- color: #fff !important;
61
- right: 16px;
62
- top: 14px;
63
- font-size: 22px;
64
- text-decoration: none;
65
- opacity: 0.4;
66
- }
67
- .um-admin-modal-close:hover{opacity:1}
68
-
69
- .um-admin-modal-head {
70
- padding: 4px 20px;
71
- background: #3ba1da;
72
- position: relative;
73
- border-radius: 3px 3px 0 0;
74
- }
75
-
76
- .um-admin-modal-body {
77
- padding: 10px 20px 10px 20px;
78
- max-height: 500px;
79
- overflow: auto;
80
- }
81
-
82
- .um-admin-modal-body.um-admin-metabox label {margin: 0!important}
83
-
84
- .um-admin-modal.loading .um-admin-modal-body {
85
- height: 200px;
86
- background: url(../img/ajax-loader.gif) no-repeat center;
87
- }
88
-
89
- .um-admin-modal-foot {
90
- padding: 20px 0 !important;
91
- border-top: 1px solid #ddd;
92
- text-align: center;
93
- background: #eee;
94
- border-radius: 0 0 3px 3px;
95
- }
96
-
97
- .um-admin-modal-foot a,
98
- .um-admin-modal-foot input{
99
- margin: 0 10px !important;
100
- font-size: 14px !important;
101
- }
102
-
103
- .um-admin-modal h3 {
104
- font-size: 14px;
105
- line-height: 14px;
106
- font-weight: normal;
107
- color: #fff;
108
- }
109
-
110
- .um-admin-modal h4 {
111
- margin: 0 0 10px 0 !important;
112
- }
113
-
114
- .um-admin-modal label,
115
- .um-admin-modal p {
116
- font-size: 13px;
117
- color: #aaa;
118
- }
119
-
120
- .um-admin-infobox p,
121
- .um-admin-infobox label {
122
- color: #666;
123
- }
124
-
125
- .um-admin-infobox p {
126
- border-top: 1px solid #e5e5e5;
127
- padding-top: 15px;
128
- }
129
-
130
- .um-admin-infobox label {
131
- font-weight: bold;
132
- display: block;
133
- color: #333;
134
- cursor: default;
135
- }
136
-
137
- /*
138
- - Conditional fields
139
- */
140
-
141
- .um-admin-btn-toggle {
142
- padding: 10px 0;
143
- }
144
-
145
- .um-admin-btn-toggle p {
146
- margin: 0 5px 0 0 !important;
147
- }
148
-
149
- .um-admin-btn-toggle p.um-admin-reset-conditions {
150
- margin: 0 0 5px 0 !important;
151
- }
152
-
153
- .um-admin-btn-toggle a {
154
- text-decoration: none;
155
- color: #999;
156
- }
157
-
158
- .um-admin-btn-toggle a.active, .um-admin-btn-toggle a.active:hover {
159
- color: #3ba1da;
160
- }
161
-
162
- .um-admin-btn-toggle i {
163
- margin: 0 5px 0 0 !important;
164
- height: 100%;
165
- color: #666;
166
- position: relative;
167
- top: 1px;
168
- }
169
-
170
- .um-admin-btn-content {
171
- display: none;
172
- padding: 10px 0 0 0;
173
- }
174
-
175
- .um-admin-btn-content p {
176
- float: left;
177
- margin-right: 10px !important;
178
- padding: 0 !important;
179
- }
180
-
181
- .dynamic-mce-content {display: none}
182
-
183
- /*
184
- - Buttons and Links
185
- */
186
-
187
- .um-admin-btns {
188
- line-height: 1.5em;
189
- margin: 0 0 5px 0;
190
- }
191
-
192
- .um-admin-btns a {
193
- margin: 0 3px 8px 0!important;
194
- font-size: 12px !important;
195
- display: inline-block !important;
196
- position: relative;
197
- }
198
-
199
- .um-admin-btns a.button.with-icon {
200
- padding-right: 25px !important;
201
- }
202
- .um-admin-btns a span {
203
- color: #aaa;
204
- position: absolute !important;
205
- width: 25px;
206
- text-align: center;
207
- right: 0;
208
- top: 0;
209
- font-size: 15px !important;
210
- }
211
-
212
- .um-admin-btns a span.remove:before{
213
- font-family: "Ionicons" !important;
214
- content: "\f128";
215
- }
216
- .um-admin-btns a span:hover{color: #cb3838}
217
-
218
- /*
219
- - WP Editor
220
- */
221
-
222
- .um-admin-modal-body.um-admin-metabox .um-admin-editor-h {
223
- margin-top: 12px;
224
- }
225
-
226
- .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label,
227
- .um-admin-modal-body.um-admin-metabox .wp-editor-wrap
228
- {margin: 0 0 4px 0 !important}
229
-
230
- .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea {
231
- border: 0 !important;
232
- }
233
-
234
- /*
235
- - Boxes / Icons
236
- */
237
-
238
- #UM_fonticons div.um-admin-metabox {
239
- padding-bottom: 22px !important;
240
- }
241
-
242
- p._icon_search{
243
- position: relative;
244
- width: 85% !important;
245
- margin: 0 auto !important;
246
- padding: 12px 0 0 0 !important;
247
- }
248
-
249
- p._icon_search:before {
250
- position: absolute;
251
- right: 6px;
252
- top: 12px;
253
- font-size: 20px;
254
- content: "\f4a4";
255
- font-family: "Ionicons";
256
- color: #999;
257
- }
258
- p._icon_search input[type=text]{padding-right: 40px!important}
259
-
260
- .um-admin-icons {
261
- padding: 0 0 15px 12px;
262
- float: left;
263
- }
264
-
265
- .um-admin-icons span {
266
- cursor: pointer;
267
- float: left;
268
- margin: 5px;
269
- color: #777;
270
- border: 4px solid #eee;
271
- border-radius: 3px;
272
- }
273
- .um-admin-icons span:hover,
274
- .um-admin-icons span.highlighted
275
- {color: #3ba1da;border-color: #3ba1da}
276
-
277
- .um-admin-icons i{vertical-align: middle !important;font-size: 24px;width: 24px;text-align: center;padding: 15px 20px;display: inline-block;}
278
-
279
- span.um-admin-icon-value {
280
- margin: 0 10px;
281
- font-size: 13px;
282
- }
283
- span.um-admin-icon-value i {
284
- font-size: 28px;
285
- color: #3ba1da;
286
- position: relative;
287
- top: 5px;
288
- }
289
-
290
- span.um-admin-icon-clear{
291
- display: none;
292
- cursor: pointer;
293
- position: relative;
294
- color: #ccc;
295
- }
296
- span.um-admin-icon-clear.show {display: inline-block}
297
- span.um-admin-icon-clear:hover {color: #777}
298
  span.um-admin-icon-clear i {font-size: 20px;vertical-align: middle;}
1
+ /*
2
+ - Overlay
3
+ */
4
+
5
+ .um-admin-overlay {
6
+ background: rgba(0,0,0, .7);
7
+ width: 100%;
8
+ height: 100%;
9
+ position: fixed;
10
+ top: 0;
11
+ left: 0;
12
+ z-index: 10000;
13
+ }
14
+
15
+ /*
16
+ - modal
17
+ */
18
+
19
+ .um-admin-modal * {
20
+ -webkit-font-smoothing: antialiased !important;
21
+ -moz-osx-font-smoothing: grayscale;
22
+ }
23
+
24
+ .um-admin-modal input[type=submit].button-primary,
25
+ .um-admin-modal a.button-primary,
26
+ .um-admin-modal a.button {
27
+ padding: 0 12px !important;
28
+ vertical-align: middle !important;
29
+ }
30
+
31
+ .um-admin .um-admin-modal a.button i:before {
32
+ display: block;
33
+ top: 0px;
34
+ }
35
+
36
+ .um-admin-modal input[type=submit].button-primary {
37
+ line-height: 24px !important;
38
+ }
39
+
40
+ .um-admin-modal {
41
+ border-radius: 3px;
42
+ background: #fff;
43
+ position: fixed;
44
+ top: 50% !important;
45
+ left: 50% !important;
46
+ display: none;
47
+ z-index: 10001;
48
+ box-sizing: border-box;
49
+
50
+ width: 730px;
51
+ margin-left: -365px;
52
+ }
53
+
54
+ .um-admin-modal.normal {width: 730px;margin-left: -365px;}
55
+ .um-admin-modal.smaller {width: 500px;margin-left: -250px;}
56
+ .um-admin-modal.small {width: 400px;margin-left: -200px;}
57
+
58
+ .um-admin-modal-close {
59
+ position: absolute;
60
+ color: #fff !important;
61
+ right: 16px;
62
+ top: 14px;
63
+ font-size: 22px;
64
+ text-decoration: none;
65
+ opacity: 0.4;
66
+ }
67
+ .um-admin-modal-close:hover{opacity:1}
68
+
69
+ .um-admin-modal-head {
70
+ padding: 4px 20px;
71
+ background: #3ba1da;
72
+ position: relative;
73
+ border-radius: 3px 3px 0 0;
74
+ }
75
+
76
+ .um-admin-modal-body {
77
+ padding: 10px 20px 10px 20px;
78
+ max-height: 500px;
79
+ overflow: auto;
80
+ }
81
+
82
+ .um-admin-modal-body.um-admin-metabox label {margin: 0!important}
83
+
84
+ .um-admin-modal.loading .um-admin-modal-body {
85
+ height: 200px;
86
+ background: url(../img/ajax-loader.gif) no-repeat center;
87
+ }
88
+
89
+ .um-admin-modal-foot {
90
+ padding: 20px 0 !important;
91
+ border-top: 1px solid #ddd;
92
+ text-align: center;
93
+ background: #eee;
94
+ border-radius: 0 0 3px 3px;
95
+ }
96
+
97
+ .um-admin-modal-foot a,
98
+ .um-admin-modal-foot input{
99
+ margin: 0 10px !important;
100
+ font-size: 14px !important;
101
+ }
102
+
103
+ .um-admin-modal h3 {
104
+ font-size: 14px;
105
+ line-height: 14px;
106
+ font-weight: normal;
107
+ color: #fff;
108
+ }
109
+
110
+ .um-admin-modal h4 {
111
+ margin: 0 0 10px 0 !important;
112
+ }
113
+
114
+ .um-admin-modal label,
115
+ .um-admin-modal p {
116
+ font-size: 13px;
117
+ color: #aaa;
118
+ }
119
+
120
+ .um-admin-infobox p,
121
+ .um-admin-infobox label {
122
+ color: #666;
123
+ }
124
+
125
+ .um-admin-infobox p {
126
+ border-top: 1px solid #e5e5e5;
127
+ padding-top: 15px;
128
+ }
129
+
130
+ .um-admin-infobox label {
131
+ font-weight: bold;
132
+ display: block;
133
+ color: #333;
134
+ cursor: default;
135
+ }
136
+
137
+ /*
138
+ - Conditional fields
139
+ */
140
+
141
+ .um-admin-btn-toggle {
142
+ padding: 10px 0;
143
+ }
144
+
145
+ .um-admin-btn-toggle p {
146
+ margin: 0 5px 0 0 !important;
147
+ }
148
+
149
+ .um-admin-btn-toggle p.um-admin-reset-conditions {
150
+ margin: 0 0 5px 0 !important;
151
+ }
152
+
153
+ .um-admin-btn-toggle a {
154
+ text-decoration: none;
155
+ color: #999;
156
+ }
157
+
158
+ .um-admin-btn-toggle a.active, .um-admin-btn-toggle a.active:hover {
159
+ color: #3ba1da;
160
+ }
161
+
162
+ .um-admin-btn-toggle i {
163
+ margin: 0 5px 0 0 !important;
164
+ height: 100%;
165
+ color: #666;
166
+ position: relative;
167
+ top: 1px;
168
+ }
169
+
170
+ .um-admin-btn-content {
171
+ display: none;
172
+ padding: 10px 0 0 0;
173
+ }
174
+
175
+ .um-admin-btn-content p {
176
+ float: left;
177
+ margin-right: 10px !important;
178
+ padding: 0 !important;
179
+ }
180
+
181
+ .dynamic-mce-content {display: none}
182
+
183
+ /*
184
+ - Buttons and Links
185
+ */
186
+
187
+ .um-admin-btns {
188
+ line-height: 1.5em;
189
+ margin: 0 0 5px 0;
190
+ }
191
+
192
+ .um-admin-btns a {
193
+ margin: 0 3px 8px 0!important;
194
+ font-size: 12px !important;
195
+ display: inline-block !important;
196
+ position: relative;
197
+ }
198
+
199
+ .um-admin-btns a.button.with-icon {
200
+ padding-right: 25px !important;
201
+ }
202
+ .um-admin-btns a span {
203
+ color: #aaa;
204
+ position: absolute !important;
205
+ width: 25px;
206
+ text-align: center;
207
+ right: 0;
208
+ top: 0;
209
+ font-size: 15px !important;
210
+ }
211
+
212
+ .um-admin-btns a span.remove:before{
213
+ font-family: "Ionicons" !important;
214
+ content: "\f128";
215
+ }
216
+ .um-admin-btns a span:hover{color: #cb3838}
217
+
218
+ /*
219
+ - WP Editor
220
+ */
221
+
222
+ .um-admin-modal-body.um-admin-metabox .um-admin-editor-h {
223
+ margin-top: 12px;
224
+ }
225
+
226
+ .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label,
227
+ .um-admin-modal-body.um-admin-metabox .wp-editor-wrap
228
+ {margin: 0 0 4px 0 !important}
229
+
230
+ .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea {
231
+ border: 0 !important;
232
+ }
233
+
234
+ /*
235
+ - Boxes / Icons
236
+ */
237
+
238
+ #UM_fonticons div.um-admin-metabox {
239
+ padding-bottom: 22px !important;
240
+ }
241
+
242
+ p._icon_search{
243
+ position: relative;
244
+ width: 85% !important;
245
+ margin: 0 auto !important;
246
+ padding: 12px 0 0 0 !important;
247
+ }
248
+
249
+ p._icon_search:before {
250
+ position: absolute;
251
+ right: 6px;
252
+ top: 12px;
253
+ font-size: 20px;
254
+ content: "\f4a4";
255
+ font-family: "Ionicons";
256
+ color: #999;
257
+ }
258
+ p._icon_search input[type=text]{padding-right: 40px!important}
259
+
260
+ .um-admin-icons {
261
+ padding: 0 0 15px 12px;
262
+ float: left;
263
+ }
264
+
265
+ .um-admin-icons span {
266
+ cursor: pointer;
267
+ float: left;
268
+ margin: 5px;
269
+ color: #777;
270
+ border: 4px solid #eee;
271
+ border-radius: 3px;
272
+ }
273
+ .um-admin-icons span:hover,
274
+ .um-admin-icons span.highlighted
275
+ {color: #3ba1da;border-color: #3ba1da}
276
+
277
+ .um-admin-icons i{vertical-align: middle !important;font-size: 24px;width: 24px;text-align: center;padding: 15px 20px;display: inline-block;}
278
+
279
+ span.um-admin-icon-value {
280
+ margin: 0 10px;
281
+ font-size: 13px;
282
+ }
283
+ span.um-admin-icon-value i {
284
+ font-size: 28px;
285
+ color: #3ba1da;
286
+ position: relative;
287
+ top: 5px;
288
+ }
289
+
290
+ span.um-admin-icon-clear{
291
+ display: none;
292
+ cursor: pointer;
293
+ position: relative;
294
+ color: #ccc;
295
+ }
296
+ span.um-admin-icon-clear.show {display: inline-block}
297
+ span.um-admin-icon-clear:hover {color: #777}
298
  span.um-admin-icon-clear i {font-size: 20px;vertical-align: middle;}
admin/assets/css/um-admin-redux.css CHANGED
@@ -1,227 +1,227 @@
1
- /*
2
- - ReduxPanel
3
- */
4
-
5
- .redux-container {
6
- border-radius: 0 !important;
7
- -webkit-font-smoothing: antialiased;
8
- -moz-osx-font-smoothing: grayscale;
9
- background: none !important;
10
- box-shadow: none !important;
11
- border: 0 !important;
12
- }
13
-
14
- .redux-container #import_export_default_section_group h4 {
15
- margin: 0 0 12px 0 !important;
16
- }
17
-
18
- .redux-container #import_export_default_section_group .hr {
19
- height: 4px !important;
20
- }
21
-
22
- .redux-sidebar .redux-group-menu li.active a, .redux-sidebar .redux-group-menu li.active a:hover, .redux-sidebar .redux-group-menu li.activeChild a, .redux-sidebar .redux-group-menu li.activeChild a:hover {
23
- background: transparent;
24
- }
25
-
26
- .redux-container #info_bar {
27
- display: none;
28
- }
29
-
30
- .redux-sidebar .redux-group-menu {
31
- font-size: 14px;
32
- }
33
-
34
- .redux-sidebar .redux-group-menu li.active a, .admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a {
35
- color: #3ba1da !important;
36
- background: #e5e5e5 !important;
37
- }
38
-
39
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a {
40
- color: #fff !important;
41
- }
42
-
43
- .redux-container .redux_field_th {
44
- font-size: 14px;
45
- font-weight: 600;
46
- color: #222;
47
- }
48
-
49
- .redux-main {
50
- background: none !important;
51
- box-shadow: none !important;
52
- border-left: 0 !important;
53
- padding: 0 25px;
54
- }
55
-
56
- .redux-container-sortable .checkbox-container input {
57
- display: none;
58
- }
59
-
60
- #redux-header {
61
- background: transparent !important;
62
- border: none !important;
63
- padding: 0 !important;
64
- }
65
-
66
- .redux-container #redux-header .display_header {
67
- margin: 0 0 10px 0 !important;
68
- }
69
-
70
- #redux-header .display_header span {
71
- font-size: 14px;
72
- position: relative;
73
- font-weight: 400;
74
- background: #3ba1da;
75
- color: #fff !important;
76
- padding: 2px 4px !important;
77
- border-radius: 3px;
78
- position: relative;
79
- top: -3px;
80
- left: 0;
81
- }
82
-
83
- #redux-header h2 {
84
- color: #222;
85
- -webkit-font-smoothing: antialiased;
86
- -moz-osx-font-smoothing: grayscale;
87
- font-size: 23px;
88
- font-weight: 400;
89
- padding: 1px 15px 4px 0px;
90
- line-height: 29px;
91
- margin: 5px 0 0 0;
92
- }
93
-
94
- #redux-share {margin-top: 11px !important}
95
-
96
- #redux-share a {
97
- margin: 0 15px 0 0 !important;
98
- text-decoration: none !important;
99
- color: #777 !important;
100
- font-size: 22px !important;
101
- }
102
- #redux-share a:hover {color: #3ba1da !important}
103
-
104
- .redux-main .form-table tr {
105
- border-bottom: 0;
106
- }
107
-
108
- .redux-main .redux-option-image {
109
- max-width: 200px;
110
- max-height: 200px;
111
- }
112
-
113
- .redux-container #redux-footer {
114
- border-radius: 0;
115
- background: none !important;
116
- padding: 10px 0;
117
- border-top: 1px solid #D8D8D8;
118
- }
119
-
120
- .redux-container #redux-footer .redux-action_bar {
121
- padding-top: 9px !important;
122
- }
123
-
124
- .redux-container textarea, .redux-container input[type=text], .redux-container ul.data-full li {
125
- font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
126
- font-size: 13px;
127
- line-height: 19px;
128
- color: #333;
129
- }
130
-
131
- .redux-sidebar .redux-group-tab-link-a i {
132
- vertical-align: middle;
133
- font-size: 1.2em;
134
- position: absolute;
135
- width: 20px;
136
- text-align: center;
137
- top: 6px;
138
- color: #888;
139
- }
140
-
141
- @media screen and (max-width:1124px){
142
- .redux-sidebar .redux-group-tab-link-a i {
143
- position: relative;
144
- top: auto;
145
- }
146
- .redux-sidebar .redux-group-menu li a {
147
- text-align: center;
148
- padding: 6px !important;
149
- }
150
- }
151
-
152
- .redux-sidebar .redux-menu-warning i, .redux-sidebar .redux-menu-error i, .redux-sidebar .hasSubSections .extraIconSubsections i {
153
- top: 11px;
154
- }
155
-
156
- .redux-container ul.data-full{padding:0!important;margin:0!important}
157
-
158
- .redux-container .description {
159
- color: #666 !important;
160
- font-size: 14px !important;
161
- font-style: italic !important;
162
- margin-top: 10px !important;
163
- }
164
-
165
- .redux-container-switch {font-size: 13px}
166
-
167
- .redux-sidebar .redux-group-menu li {
168
- margin-top: 4px;
169
- }
170
-
171
- .redux-sidebar .redux-group-menu li a {
172
- color: #555;
173
- opacity: 1 !important;
174
- padding: 6px 4px 6px 14px;
175
- border-radius: 3px;
176
- border: none;
177
- transition: all .2s linear !important;
178
- }
179
-
180
- .redux-sidebar .redux-group-menu li a:hover {
181
- background: #e5e5e5;
182
- color: #333;
183
- }
184
-
185
- .redux-main #redux-sticky {
186
- margin: 0;
187
- min-height: auto;
188
- }
189
-
190
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a {
191
- background: #3ba1da !important;
192
- color: #fff;
193
- }
194
-
195
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a i {color: #fff !important}
196
-
197
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active {
198
- border-right: 0;
199
- }
200
-
201
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li {
202
- border-right: 0;
203
- margin-top: 4px;
204
- padding-left: 12px;
205
- }
206
-
207
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a {
208
- background: transparent !important;
209
- color: #555 !important;
210
- border-bottom: 0;
211
- padding: 6px 4px 6px 14px !important;
212
- }
213
-
214
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover {
215
- background: #e5e5e5 !important;
216
- color: #333 !important;
217
- }
218
-
219
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a {
220
- color: #3ba1da !important;
221
- background: #e5e5e5 !important;
222
- text-shadow: none !important;
223
- }
224
-
225
- .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after {
226
- border: none !important;
227
  }
1
+ /*
2
+ - ReduxPanel
3
+ */
4
+
5
+ .redux-container {
6
+ border-radius: 0 !important;
7
+ -webkit-font-smoothing: antialiased;
8
+ -moz-osx-font-smoothing: grayscale;
9
+ background: none !important;
10
+ box-shadow: none !important;
11
+ border: 0 !important;
12
+ }
13
+
14
+ .redux-container #import_export_default_section_group h4 {
15
+ margin: 0 0 12px 0 !important;
16
+ }
17
+
18
+ .redux-container #import_export_default_section_group .hr {
19
+ height: 4px !important;
20
+ }
21
+
22
+ .redux-sidebar .redux-group-menu li.active a, .redux-sidebar .redux-group-menu li.active a:hover, .redux-sidebar .redux-group-menu li.activeChild a, .redux-sidebar .redux-group-menu li.activeChild a:hover {
23
+ background: transparent;
24
+ }
25
+
26
+ .redux-container #info_bar {
27
+ display: none;
28
+ }
29
+
30
+ .redux-sidebar .redux-group-menu {
31
+ font-size: 14px;
32
+ }
33
+
34
+ .redux-sidebar .redux-group-menu li.active a, .admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a {
35
+ color: #3ba1da !important;
36
+ background: #e5e5e5 !important;
37
+ }
38
+
39
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a {
40
+ color: #fff !important;
41
+ }
42
+
43
+ .redux-container .redux_field_th {
44
+ font-size: 14px;
45
+ font-weight: 600;
46
+ color: #222;
47
+ }
48
+
49
+ .redux-main {
50
+ background: none !important;
51
+ box-shadow: none !important;
52
+ border-left: 0 !important;
53
+ padding: 0 25px;
54
+ }
55
+
56
+ .redux-container-sortable .checkbox-container input {
57
+ display: none;
58
+ }
59
+
60
+ #redux-header {
61
+ background: transparent !important;
62
+ border: none !important;
63
+ padding: 0 !important;
64
+ }
65
+
66
+ .redux-container #redux-header .display_header {
67
+ margin: 0 0 10px 0 !important;
68
+ }
69
+
70
+ #redux-header .display_header span {
71
+ font-size: 14px;
72
+ position: relative;
73
+ font-weight: 400;
74
+ background: #3ba1da;
75
+ color: #fff !important;
76
+ padding: 2px 4px !important;
77
+ border-radius: 3px;
78
+ position: relative;
79
+ top: -3px;
80
+ left: 0;
81
+ }
82
+
83
+ #redux-header h2 {
84
+ color: #222;
85
+ -webkit-font-smoothing: antialiased;
86
+ -moz-osx-font-smoothing: grayscale;
87
+ font-size: 23px;
88
+ font-weight: 400;
89
+ padding: 1px 15px 4px 0px;
90
+ line-height: 29px;
91
+ margin: 5px 0 0 0;
92
+ }
93
+
94
+ #redux-share {margin-top: 11px !important}
95
+
96
+ #redux-share a {
97
+ margin: 0 15px 0 0 !important;
98
+ text-decoration: none !important;
99
+ color: #777 !important;
100
+ font-size: 22px !important;
101
+ }
102
+ #redux-share a:hover {color: #3ba1da !important}
103
+
104
+ .redux-main .form-table tr {
105
+ border-bottom: 0;
106
+ }
107
+
108
+ .redux-main .redux-option-image {
109
+ max-width: 200px;
110
+ max-height: 200px;
111
+ }
112
+
113
+ .redux-container #redux-footer {
114
+ border-radius: 0;
115
+ background: none !important;
116
+ padding: 10px 0;
117
+ border-top: 1px solid #D8D8D8;
118
+ }
119
+
120
+ .redux-container #redux-footer .redux-action_bar {
121
+ padding-top: 9px !important;
122
+ }
123
+
124
+ .redux-container textarea, .redux-container input[type=text], .redux-container ul.data-full li {
125
+ font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
126
+ font-size: 13px;
127
+ line-height: 19px;
128
+ color: #333;
129
+ }
130
+
131
+ .redux-sidebar .redux-group-tab-link-a i {
132
+ vertical-align: middle;
133
+ font-size: 1.2em;
134
+ position: absolute;
135
+ width: 20px;
136
+ text-align: center;
137
+ top: 6px;
138
+ color: #888;
139
+ }
140
+
141
+ @media screen and (max-width:1124px){
142
+ .redux-sidebar .redux-group-tab-link-a i {
143
+ position: relative;
144
+ top: auto;
145
+ }
146
+ .redux-sidebar .redux-group-menu li a {
147
+ text-align: center;
148
+ padding: 6px !important;
149
+ }
150
+ }
151
+
152
+ .redux-sidebar .redux-menu-warning i, .redux-sidebar .redux-menu-error i, .redux-sidebar .hasSubSections .extraIconSubsections i {
153
+ top: 11px;
154
+ }
155
+
156
+ .redux-container ul.data-full{padding:0!important;margin:0!important}
157
+
158
+ .redux-container .description {
159
+ color: #666 !important;
160
+ font-size: 14px !important;
161
+ font-style: italic !important;
162
+ margin-top: 10px !important;
163
+ }
164
+
165
+ .redux-container-switch {font-size: 13px}
166
+
167
+ .redux-sidebar .redux-group-menu li {
168
+ margin-top: 4px;
169
+ }
170
+
171
+ .redux-sidebar .redux-group-menu li a {
172
+ color: #555;
173
+ opacity: 1 !important;
174
+ padding: 6px 4px 6px 14px;
175
+ border-radius: 3px;
176
+ border: none;
177
+ transition: all .2s linear !important;
178
+ }
179
+
180
+ .redux-sidebar .redux-group-menu li a:hover {
181
+ background: #e5e5e5;
182
+ color: #333;
183
+ }
184
+
185
+ .redux-main #redux-sticky {
186
+ margin: 0;
187
+ min-height: auto;
188
+ }
189
+
190
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a {
191
+ background: #3ba1da !important;
192
+ color: #fff;
193
+ }
194
+
195
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a i {color: #fff !important}
196
+
197
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active {
198
+ border-right: 0;
199
+ }
200
+
201
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li {
202
+ border-right: 0;
203
+ margin-top: 4px;
204
+ padding-left: 12px;
205
+ }
206
+
207
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a {
208
+ background: transparent !important;
209
+ color: #555 !important;
210
+ border-bottom: 0;
211
+ padding: 6px 4px 6px 14px !important;
212
+ }
213
+
214
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover {
215
+ background: #e5e5e5 !important;
216
+ color: #333 !important;
217
+ }
218
+
219
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a {
220
+ color: #3ba1da !important;
221
+ background: #e5e5e5 !important;
222
+ text-shadow: none !important;
223
+ }
224
+
225
+ .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after {
226
+ border: none !important;
227
  }
admin/assets/css/um-admin-rtl.css CHANGED
@@ -1,74 +1,74 @@
1
- .um-admin-yesno span.yes, .um-admin-yesno span.no {
2
- padding: 0 10px 0 0;
3
- }
4
-
5
- .um-admin-drag-ctrls-demo.um-admin-drag-ctrls {
6
- left: 12px;
7
- right: auto;
8
- }
9
-
10
- .um-admin-drag-row-icons {
11
- left: 0;
12
- right: auto;
13
- }
14
-
15
- .um-admin-drag-ctrls.columns {
16
- right: 0 !important;
17
- left: auto;
18
- }
19
-
20
- .um-admin-drag-ctrls.columns a {
21
- float: right;
22
- }
23
-
24
- .um-admin-drag-rowsub-icons {
25
- right: auto;
26
- left: 0;
27
- }
28
-
29
- .um-admin-drag-row-icons a {
30
- float: right;
31
- }
32
-
33
- .um-admin-drag-fld-icons a {
34
- float: right;
35
- }
36
-
37
- .um-admin-drag-fld-icons {
38
- float: left;
39
- }
40
-
41
- .um-admin-drag-fld-title, .um-admin-drag-fld-type {
42
- float: right;
43
- margin: 0 20px 0 0;
44
- }
45
-
46
- .redux-main {
47
- margin-left: 0!important;
48
- margin-right: 201px !important;
49
- }
50
-
51
- #redux-header h2 {
52
- padding: 2px 0 4px 15px;
53
- }
54
-
55
- .redux-container #redux-header .display_header {float: right}
56
-
57
- .admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections {float: left}
58
-
59
- .select2-container .select2-choice > .select2-chosen {
60
- text-align: right !important;
61
- }
62
-
63
- .select2-container .select2-choice .select2-arrow {
64
- border: none !important;
65
- right: auto !important;
66
- left: 0 !important;
67
- }
68
-
69
- .select2-container .select2-choice > .select2-chosen {
70
- margin-right: 10px !important;
71
- margin-left: 26px !important;
72
- }
73
-
74
  .redux-container-switch .switch-options {float: right;margin-right:0!important}
1
+ .um-admin-yesno span.yes, .um-admin-yesno span.no {
2
+ padding: 0 10px 0 0;
3
+ }
4
+
5
+ .um-admin-drag-ctrls-demo.um-admin-drag-ctrls {
6
+ left: 12px;
7
+ right: auto;
8
+ }
9
+
10
+ .um-admin-drag-row-icons {
11
+ left: 0;
12
+ right: auto;
13
+ }
14
+
15
+ .um-admin-drag-ctrls.columns {
16
+ right: 0 !important;
17
+ left: auto;
18
+ }
19
+
20
+ .um-admin-drag-ctrls.columns a {
21
+ float: right;
22
+ }
23
+
24
+ .um-admin-drag-rowsub-icons {
25
+ right: auto;
26
+ left: 0;
27
+ }
28
+
29
+ .um-admin-drag-row-icons a {
30
+ float: right;
31
+ }
32
+
33
+ .um-admin-drag-fld-icons a {
34
+ float: right;
35
+ }
36
+
37
+ .um-admin-drag-fld-icons {
38
+ float: left;
39
+ }
40
+
41
+ .um-admin-drag-fld-title, .um-admin-drag-fld-type {
42
+ float: right;
43
+ margin: 0 20px 0 0;
44
+ }
45
+
46
+ .redux-main {
47
+ margin-left: 0!important;
48
+ margin-right: 201px !important;
49
+ }
50
+
51
+ #redux-header h2 {
52
+ padding: 2px 0 4px 15px;
53
+ }
54
+
55
+ .redux-container #redux-header .display_header {float: right}
56
+
57
+ .admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections {float: left}
58
+
59
+ .select2-container .select2-choice > .select2-chosen {
60
+ text-align: right !important;
61
+ }
62
+
63
+ .select2-container .select2-choice .select2-arrow {
64
+ border: none !important;
65
+ right: auto !important;
66
+ left: 0 !important;
67
+ }
68
+
69
+ .select2-container .select2-choice > .select2-chosen {
70
+ margin-right: 10px !important;
71
+ margin-left: 26px !important;
72
+ }
73
+
74
  .redux-container-switch .switch-options {float: right;margin-right:0!important}
admin/assets/css/um-admin-select2.css CHANGED
@@ -1,193 +1,193 @@
1
- /*body.um-admin .select2-container {margin-right: 2px!important;}
2
-
3
- body.um-admin .select2-drop,
4
- body.um-admin .select2-drop.select2-drop-above,
5
- body.um-admin .select2-drop-active,
6
- body.um-admin .select2-container-multi .select2-choices
7
- {border: 1px solid #ddd !important}
8
-
9
- body.um-admin .select2-container .select2-choice
10
- {
11
- height: 27px !important;
12
- line-height: 27px !important;
13
- border: 1px solid #ddd !important;
14
- color: #888 !important;
15
- }
16
-
17
- body.um-admin .select2-container .select2-choice > .select2-chosen {
18
- font-size: 13px !important;
19
- }
20
-
21
- body.um-admin .select2-container .select2-choice {
22
- font-size: 13px !important;
23
- }
24
-
25
- body.um-admin .select2-container .select2-choice .select2-arrow:before {
26
- font-size: 23px !important;
27
- line-height: 27px;
28
- }
29
-
30
- body.um-admin .select2-search-choice-close:before {
31
- font-size: 20px !important;
32
- color: #aaa;
33
- line-height: 27px;
34
- }
35
-
36
- body.um-admin .select2-container-multi .select2-search-choice-close:before {
37
- font-size: 15px !important;
38
- }
39
-
40
- body.um-admin .select2-search input[type=text] {
41
- font-size: 13px !important;
42
- }
43
-
44
- body.um-admin .select2-results li {
45
- font-size: 13px !important;
46
- }
47
-
48
- body.um-admin .select2-results .select2-no-results,
49
- body.um-admin .select2-results .select2-searching,
50
- body.um-admin .select2-results .select2-selection-limit {
51
- font-size: 13px !important;
52
- }
53
-
54
- body.um-admin .select2-container-multi .select2-choices .select2-search-choice {
55
- line-height: 13px !important;
56
- font-size: 13px !important;
57
- }
58
-
59
- body.um-admin .select2-drop-mask {
60
- z-index: 10020 !important;
61
- }
62
-
63
- body.um-admin .select2-drop {
64
- z-index: 999999 !important;
65
- }
66
-
67
- body.um-admin .select2-search {
68
- z-index: 10040 !important;
69
- }*/
70
-
71
- /* Select2 4.0*/
72
- body.um-admin .select2.select2-container .select2-selection{
73
- display: block !important;
74
- height: 28px !important;
75
- padding: 0 0 0 12px !important;
76
- overflow: hidden !important;
77
- position: relative !important;
78
- white-space: nowrap !important;
79
- line-height: 25px !important;
80
- color: #666 !important;
81
- font-size: 13px !important;
82
- text-align: left !important;
83
- text-decoration: none !important;
84
- -moz-border-radius: 2px !important;
85
- -webkit-border-radius: 2px !important;
86
- border-radius: 2px !important;
87
- background-clip: padding-box !important;
88
- -webkit-touch-callout: none;
89
- -webkit-user-select: none;
90
- -moz-user-select: none;
91
- -ms-user-select: none;
92
- user-select: none;
93
- background: none !important;
94
- background-color: #fff !important;
95
- border: 2px solid #ddd !important;
96
- }
97
- body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation]{
98
- display:none;
99
- }
100
- body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow:before{
101
- content: "\f3d0" !important;
102
- font-size: 27px !important;
103
- font-family: "Ionicons" !important;
104
- width: 100% !important;
105
- display: block;
106
- height: 100%;
107
- line-height: 28px;
108
- color: #aaaaaa;
109
- }
110
- body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow {
111
- display: inline-block !important;
112
- width: 34px !important;
113
- height: 100% !important;
114
- position: absolute !important;
115
- right: 0 !important;
116
- top: 0 !important;
117
- -moz-border-radius: 0 2px 2px 0 !important;
118
- -webkit-border-radius: 0 2px 2px 0 !important;
119
- border-radius: 0 2px 2px 0 !important;
120
- background-clip: padding-box !important;
121
- text-align: center !important;
122
- background: transparent !important;
123
- border-left: 0 !important;
124
- }
125
- body.um-admin .select2-container.select2-container--open .select2-dropdown{
126
- border: 2px solid #ddd !important;
127
- }
128
- body.um-admin .select2-results li{
129
- list-style: none;
130
- display: list-item;
131
- background-image: none;
132
- font-size: 13px;
133
- margin: 5px !important;
134
- padding: 3px 0 !important;
135
- color: #666 !important;
136
- }
137
- body.um-admin .select2-results li {
138
- padding: 3px 7px 4px !important;
139
- cursor: pointer;
140
- min-height: 1em !important;
141
- }
142
-
143
- body.um-admin .select2-container--default .select2-selection--single .select2-selection__rendered {
144
- line-height: 25px;
145
- }
146
- body.um-admin .select2-results li.select2-results__option.select2-results__option--highlighted{
147
- background: none !important;
148
- background: #f4f4f4 !important;
149
- color: #666 !important;
150
- }
151
- body.um-admin .select2-container--default .select2-results__option[aria-selected=true] {
152
- background: transparent !important;
153
- }
154
- body.um-admin .select2-selection__clear {
155
- right: 10px;
156
- font-size: 25px;
157
- color: #aaaaaa !important;
158
- font-weight: 300 !important;
159
- }
160
-
161
- body.um-admin .select2-container--default .select2-selection--multiple .select2-selection__rendered {
162
- box-sizing: border-box;
163
- list-style: none;
164
- margin: 0;
165
- padding: 0px;
166
- width: 100%;
167
- line-height: 20px;
168
- font-size: 13px;
169
- }
170
-
171
- body.um-admin .select2.select2-container .select2-selection.select2-selection--multiple {
172
- height: auto !important;
173
- }
174
-
175
- body.um-admin .select2-container--default .select2-selection--multiple .select2-selection__clear {
176
- cursor: pointer;
177
- float: right;
178
- margin-top: 0px;
179
- margin-right: 5px;
180
- font-size: 25px;
181
- }
182
-
183
- body.um-admin .select2-container--default .select2-results__option[aria-selected=true] {
184
- background-color: #ddd !important;
185
- }
186
-
187
- body.um-admin .select2-container .select2-search--inline {
188
- line-height: 37px !important;
189
- }
190
-
191
- body.um-admin .select2-drop-active {
192
- z-index: 99999 !important;
193
  }
1
+ /*body.um-admin .select2-container {margin-right: 2px!important;}
2
+
3
+ body.um-admin .select2-drop,
4
+ body.um-admin .select2-drop.select2-drop-above,
5
+ body.um-admin .select2-drop-active,
6
+ body.um-admin .select2-container-multi .select2-choices
7
+ {border: 1px solid #ddd !important}
8
+
9
+ body.um-admin .select2-container .select2-choice
10
+ {
11
+ height: 27px !important;
12
+ line-height: 27px !important;
13
+ border: 1px solid #ddd !important;
14
+ color: #888 !important;
15
+ }
16
+
17
+ body.um-admin .select2-container .select2-choice > .select2-chosen {
18
+ font-size: 13px !important;
19
+ }
20
+
21
+ body.um-admin .select2-container .select2-choice {
22
+ font-size: 13px !important;
23
+ }
24
+
25
+ body.um-admin .select2-container .select2-choice .select2-arrow:before {
26
+ font-size: 23px !important;
27
+ line-height: 27px;
28
+ }
29
+
30
+ body.um-admin .select2-search-choice-close:before {
31
+ font-size: 20px !important;
32
+ color: #aaa;
33
+ line-height: 27px;
34
+ }
35
+
36
+ body.um-admin .select2-container-multi .select2-search-choice-close:before {
37
+ font-size: 15px !important;
38
+ }
39
+
40
+ body.um-admin .select2-search input[type=text] {
41
+ font-size: 13px !important;
42
+ }
43
+
44
+ body.um-admin .select2-results li {
45
+ font-size: 13px !important;
46
+ }
47
+
48
+ body.um-admin .select2-results .select2-no-results,
49
+ body.um-admin .select2-results .select2-searching,
50
+ body.um-admin .select2-results .select2-selection-limit {
51
+ font-size: 13px !important;
52
+ }
53
+
54
+ body.um-admin .select2-container-multi .select2-choices .select2-search-choice {
55
+ line-height: 13px !important;
56
+ font-size: 13px !important;
57
+ }
58
+
59
+ body.um-admin .select2-drop-mask {
60
+ z-index: 10020 !important;
61
+ }
62
+
63
+ body.um-admin .select2-drop {
64
+ z-index: 999999 !important;
65
+ }
66
+
67
+ body.um-admin .select2-search {
68
+ z-index: 10040 !important;
69
+ }*/
70
+
71
+ /* Select2 4.0*/
72
+ body.um-admin .select2.select2-container .select2-selection{
73
+ display: block !important;
74
+ height: 28px !important;
75
+ padding: 0 0 0 12px !important;
76
+ overflow: hidden !important;
77
+ position: relative !important;
78
+ white-space: nowrap !important;
79
+ line-height: 25px !important;
80
+ color: #666 !important;
81
+ font-size: 13px !important;
82
+ text-align: left !important;
83
+ text-decoration: none !important;
84
+ -moz-border-radius: 2px !important;
85
+ -webkit-border-radius: 2px !important;
86
+ border-radius: 2px !important;
87
+ background-clip: padding-box !important;
88
+ -webkit-touch-callout: none;
89
+ -webkit-user-select: none;
90
+ -moz-user-select: none;
91
+ -ms-user-select: none;
92
+ user-select: none;
93
+ background: none !important;
94
+ background-color: #fff !important;
95
+ border: 2px solid #ddd !important;
96
+ }
97
+ body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow b[role=presentation]{
98
+ display:none;
99
+ }
100
+ body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow:before{
101
+ content: "\f3d0" !important;
102
+ font-size: 27px !important;
103
+ font-family: "Ionicons" !important;
104
+ width: 100% !important;
105
+ display: block;
106
+ height: 100%;
107
+ line-height: 28px;
108
+ color: #aaaaaa;
109
+ }
110
+ body.um-admin .select2.select2-container .select2-selection .select2-selection__arrow {
111
+ display: inline-block !important;
112
+ width: 34px !important;
113
+ height: 100% !important;
114
+ position: absolute !important;
115
+ right: 0 !important;
116
+ top: 0 !important;
117
+ -moz-border-radius: 0 2px 2px 0 !important;
118
+ -webkit-border-radius: 0 2px 2px 0 !important;
119
+ border-radius: 0 2px 2px 0 !important;
120
+ background-clip: padding-box !important;
121
+ text-align: center !important;
122
+ background: transparent !important;
123
+ border-left: 0 !important;
124
+ }
125
+ body.um-admin .select2-container.select2-container--open .select2-dropdown{
126
+ border: 2px solid #ddd !important;
127
+ }
128
+ body.um-admin .select2-results li{
129
+ list-style: none;
130
+ display: list-item;
131
+ background-image: none;
132
+ font-size: 13px;
133
+ margin: 5px !important;
134
+ padding: 3px 0 !important;
135
+ color: #666 !important;
136
+ }
137
+ body.um-admin .select2-results li {
138
+ padding: 3px 7px 4px !important;
139
+ cursor: pointer;
140
+ min-height: 1em !important;
141
+ }
142
+
143
+ body.um-admin .select2-container--default .select2-selection--single .select2-selection__rendered {
144
+ line-height: 25px;
145
+ }
146
+ body.um-admin .select2-results li.select2-results__option.select2-results__option--highlighted{
147
+ background: none !important;
148
+ background: #f4f4f4 !important;
149
+ color: #666 !important;
150
+ }
151
+ body.um-admin .select2-container--default .select2-results__option[aria-selected=true] {
152
+ background: transparent !important;
153
+ }
154
+ body.um-admin .select2-selection__clear {
155
+ right: 10px;
156
+ font-size: 25px;
157
+ color: #aaaaaa !important;
158
+ font-weight: 300 !important;
159
+ }
160
+
161
+ body.um-admin .select2-container--default .select2-selection--multiple .select2-selection__rendered {
162
+ box-sizing: border-box;
163
+ list-style: none;
164
+ margin: 0;
165
+ padding: 0px;
166
+ width: 100%;
167
+ line-height: 20px;
168
+ font-size: 13px;
169
+ }
170
+
171
+ body.um-admin .select2.select2-container .select2-selection.select2-selection--multiple {
172
+ height: auto !important;
173
+ }
174
+
175
+ body.um-admin .select2-container--default .select2-selection--multiple .select2-selection__clear {
176
+ cursor: pointer;
177
+ float: right;
178
+ margin-top: 0px;
179
+ margin-right: 5px;
180
+ font-size: 25px;
181
+ }
182
+
183
+ body.um-admin .select2-container--default .select2-results__option[aria-selected=true] {
184
+ background-color: #ddd !important;
185
+ }
186
+
187
+ body.um-admin .select2-container .select2-search--inline {
188
+ line-height: 37px !important;
189
+ }
190
+
191
+ body.um-admin .select2-drop-active {
192
+ z-index: 99999 !important;
193
  }
admin/assets/js/um-admin-ajax.js CHANGED
@@ -1,53 +1,53 @@
1
- jQuery(document).ready(function() {
2
-
3
- jQuery(document).ajaxStart(function(){
4
- jQuery('.tipsy').hide();
5
- });
6
-
7
- jQuery(document).on('click', 'a[data-silent_action^="um_"]',function(){
8
-
9
- in_row = '';
10
- in_sub_row = '';
11
- in_column = '';
12
- in_group = '';
13
-
14
- if ( jQuery('.um-col-demon-settings').data('in_column') ) {
15
- in_row = jQuery('.um-col-demon-settings').data('in_row');
16
- in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row');
17
- in_column = jQuery('.um-col-demon-settings').data('in_column');
18
- in_group = jQuery('.um-col-demon-settings').data('in_group');
19
- }
20
-
21
- act_id = jQuery(this).data('silent_action');
22
- arg1 = jQuery(this).data('arg1');
23
- arg2 = jQuery(this).data('arg2');
24
-
25
- jQuery('.tipsy').hide();
26
-
27
- um_admin_remove_modal();
28
-
29
- jQuery.ajax({
30
- url: ultimatemember_ajax_url,
31
- type: 'POST',
32
- data: {action: 'ultimatemember_do_ajax_action', act_id : act_id, arg1 : arg1, arg2 : arg2, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group },
33
- success: function(data){
34
-
35
- jQuery('.um-col-demon-settings').data('in_row', '');
36
- jQuery('.um-col-demon-settings').data('in_sub_row', '');
37
- jQuery('.um-col-demon-settings').data('in_column', '');
38
- jQuery('.um-col-demon-settings').data('in_group', '');
39
-
40
- um_admin_modal_responsive();
41
- um_admin_update_builder();
42
-
43
- },
44
- error: function(data){
45
-
46
- }
47
- });
48
-
49
- return false;
50
-
51
- });
52
-
53
  });
1
+ jQuery(document).ready(function() {
2
+
3
+ jQuery(document).ajaxStart(function(){
4
+ jQuery('.tipsy').hide();
5
+ });
6
+
7
+ jQuery(document).on('click', 'a[data-silent_action^="um_"]',function(){
8
+
9
+ in_row = '';
10
+ in_sub_row = '';
11
+ in_column = '';
12
+ in_group = '';
13
+
14
+ if ( jQuery('.um-col-demon-settings').data('in_column') ) {
15
+ in_row = jQuery('.um-col-demon-settings').data('in_row');
16
+ in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row');
17
+ in_column = jQuery('.um-col-demon-settings').data('in_column');
18
+ in_group = jQuery('.um-col-demon-settings').data('in_group');
19
+ }
20
+
21
+ act_id = jQuery(this).data('silent_action');
22
+ arg1 = jQuery(this).data('arg1');
23
+ arg2 = jQuery(this).data('arg2');
24
+
25
+ jQuery('.tipsy').hide();
26
+
27
+ um_admin_remove_modal();
28
+
29
+ jQuery.ajax({
30
+ url: ultimatemember_ajax_url,
31
+ type: 'POST',
32
+ data: {action: 'ultimatemember_do_ajax_action', act_id : act_id, arg1 : arg1, arg2 : arg2, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group },
33
+ success: function(data){
34
+
35
+ jQuery('.um-col-demon-settings').data('in_row', '');
36
+ jQuery('.um-col-demon-settings').data('in_sub_row', '');
37
+ jQuery('.um-col-demon-settings').data('in_column', '');
38
+ jQuery('.um-col-demon-settings').data('in_group', '');
39
+
40
+ um_admin_modal_responsive();
41
+ um_admin_update_builder();
42
+
43
+ },
44
+ error: function(data){
45
+
46
+ }
47
+ });
48
+
49
+ return false;
50
+
51
+ });
52
+
53
  });
admin/assets/js/um-admin-builder.js CHANGED
@@ -1,42 +1,42 @@
1
- /**
2
- This function updates the
3
- builder area with fields
4
- **/
5
-
6
- function um_admin_update_builder(){
7
-
8
- form_id = jQuery('.um-admin-builder').data('form_id');
9
-
10
- jQuery('.tipsy').hide();
11
-
12
- jQuery.ajax({
13
- url: ultimatemember_ajax_url,
14
- type: 'POST',
15
- data: {action: 'update_builder', form_id: form_id },
16
- success: function(data){
17
-
18
- jQuery('.um-admin-drag-ajax').html(data);
19
-
20
- jQuery('.tipsy').hide();
21
-
22
- /* trigger columns at start */
23
- allow_update_via_col_click = false;
24
- jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){
25
- jQuery(this).trigger('click');
26
- }).promise().done( function(){ allow_update_via_col_click = true; } );
27
-
28
- UM_Rows_Refresh();
29
-
30
- },
31
- error: function(data){
32
-
33
- }
34
- });
35
-
36
- return false;
37
-
38
- }
39
-
40
- jQuery(document).ready(function() {
41
-
42
  });
1
+ /**
2
+ This function updates the
3
+ builder area with fields
4
+ **/
5
+
6
+ function um_admin_update_builder(){
7
+
8
+ form_id = jQuery('.um-admin-builder').data('form_id');
9
+
10
+ jQuery('.tipsy').hide();
11
+
12
+ jQuery.ajax({
13
+ url: ultimatemember_ajax_url,
14
+ type: 'POST',
15
+ data: {action: 'update_builder', form_id: form_id },
16
+ success: function(data){
17
+
18
+ jQuery('.um-admin-drag-ajax').html(data);
19
+
20
+ jQuery('.tipsy').hide();
21
+
22
+ /* trigger columns at start */
23
+ allow_update_via_col_click = false;
24
+ jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){
25
+ jQuery(this).trigger('click');
26
+ }).promise().done( function(){ allow_update_via_col_click = true; } );
27
+
28
+ UM_Rows_Refresh();
29
+
30
+ },
31
+ error: function(data){
32
+
33
+ }
34
+ });
35
+
36
+ return false;
37
+
38
+ }
39
+
40
+ jQuery(document).ready(function() {
41
+
42
  });
admin/assets/js/um-admin-dashboard.js CHANGED
@@ -1,3 +1,3 @@
1
- jQuery(document).ready(function() {
2
-
3
  });
1
+ jQuery(document).ready(function() {
2
+
3
  });
admin/assets/js/um-admin-dragdrop.js CHANGED
@@ -1,410 +1,410 @@
1
- function UM_Drag_and_Drop(){
2
-
3
- jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable({
4
- items: '.um-admin-drag-fld',
5
- connectWith: '.um-admin-drag-col,.um-admin-drag-group',
6
- placeholder: "um-fld-placeholder",
7
- forcePlaceholderSize:true,
8
- update: function(event, ui){
9
-
10
- jQuery('#publish').attr('disabled','disabled');
11
-
12
- if ( ui.item.hasClass('um-field-type-group') && ui.item.parents('.um-field-type-group').length > 0 ) {
13
-
14
- jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable('cancel');
15
-
16
- jQuery('#publish').removeAttr('disabled');
17
-
18
- } else {
19
-
20
- UM_Change_Field_Col();
21
-
22
- UM_Change_Field_Grp();
23
-
24
- UM_Rows_Refresh();
25
-
26
- }
27
-
28
- }
29
- });
30
-
31
- jQuery('.um-admin-drag-rowsubs').sortable({
32
- items: '.um-admin-drag-rowsub',
33
- placeholder: "um-rowsub-placeholder",
34
- forcePlaceholderSize:true,
35
- zIndex: 9999999999,
36
- update: function(){
37
-
38
- jQuery('#publish').attr('disabled','disabled');
39
-
40
- UM_update_subrows();
41
-
42
- UM_Rows_Refresh();
43
-
44
- }
45
- }).disableSelection();
46
-
47
- jQuery('.um-admin-drag-rowsub').sortable({
48
- items: '.um-admin-drag-col',
49
- zIndex: 9999999999,
50
- update: function(){
51
-
52
- jQuery('#publish').attr('disabled','disabled');
53
-
54
- row = jQuery(this);
55
- row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
56
- row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length );
57
- row.find('.um-admin-drag-col:last').addClass('cols-last');
58
- if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
59
-
60
- UM_Change_Field_Col();
61
-
62
- UM_Change_Field_Grp();
63
-
64
- UM_Rows_Refresh();
65
-
66
- }
67
- }).disableSelection();
68
-
69
- jQuery('.um-admin-drag-ajax').sortable({
70
- items: '.um-admin-drag-row',
71
- handle: ".um-admin-drag-row-start",
72
- zIndex: 9999999999,
73
- placeholder: "um-row-placeholder",
74
- forcePlaceholderSize:true,
75
- out: function(){
76
- jQuery('.tipsy').remove();
77
- },
78
- update: function(){
79
-
80
- jQuery('#publish').attr('disabled','disabled');
81
-
82
- UM_update_rows();
83
-
84
- UM_Change_Field_Col();
85
-
86
- UM_Change_Field_Grp();
87
-
88
- UM_Rows_Refresh();
89
-
90
- }
91
- }).disableSelection();
92
-
93
- }
94
-
95
- function UM_update_rows(){
96
- var c = 0;
97
- jQuery('a[data-remove_element="um-admin-drag-row"]').remove();
98
- jQuery('.um-admin-drag-row').each(function(){
99
- c++;
100
- row = jQuery(this);
101
- if ( c != 1 ) {
102
- row.find('.um-admin-drag-row-icons').append( '<a href="#" class="um-admin-tipsy-n" title="Delete Row" data-remove_element="um-admin-drag-row"><i class="um-faicon-trash-o"></i></a>' );
103
- }
104
- });
105
- }
106
-
107
- function UM_update_subrows(){
108
- jQuery('a[data-remove_element="um-admin-drag-rowsub"]').remove();
109
- jQuery('.um-admin-drag-row').each(function(){
110
- c = 0;
111
- jQuery(this).find('.um-admin-drag-rowsub').each(function(){
112
- c++;
113
- row = jQuery(this);
114
- if ( c != 1 ) {
115
- row.find('.um-admin-drag-rowsub-icons').append('<a href="#" class="um-admin-tipsy-n" title="Delete Row" data-remove_element="um-admin-drag-rowsub"><i class="um-faicon-trash-o"></i></a>');
116
- }
117
- });
118
- });
119
- }
120
-
121
- function UM_Change_Field_Col(){
122
- jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){
123
- cols = jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length;
124
- col = jQuery(this).parents('.um-admin-drag-col');
125
- if ( col.hasClass('cols-last') ) {
126
- if ( cols == 1 ) {
127
- saved_col = 1;
128
- }
129
- if ( cols == 3 ) {
130
- saved_col = 3;
131
- } else if ( cols == 2 ) {
132
- saved_col = 2;
133
- }
134
- } else if ( col.hasClass('cols-middle') && cols == 3 ) {
135
- saved_col = 2;
136
- } else {
137
- saved_col = 1;
138
- }
139
-
140
- jQuery(this).data('column', saved_col);
141
- });
142
- }
143
-
144
- function UM_Change_Field_Grp(){
145
- jQuery('.um-admin-drag-col .um-admin-drag-fld:not(.um-field-type-group)').each(function(){
146
- if ( jQuery(this).parents('.um-admin-drag-group').length == 0 ){
147
- jQuery(this).data('group', '');
148
- } else {
149
- jQuery(this).data('group', jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key') );
150
- }
151
- });
152
- }
153
-
154
- function UM_Rows_Refresh(){
155
-
156
- jQuery('.um_update_order_fields').empty();
157
-
158
- /* ROWS */
159
- var c = 0;
160
- jQuery('.um-admin-drag-row').each(function(){
161
- c++;
162
-
163
- row = jQuery(this);
164
-
165
- col_num = '';
166
- row.find('.um-admin-drag-rowsub').each(function(){
167
-
168
- subrow = jQuery(this);
169
-
170
- subrow.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
171
- subrow.find('.um-admin-drag-col').addClass('cols-' + subrow.find('.um-admin-drag-col').length );
172
- subrow.find('.um-admin-drag-col:last').addClass('cols-last');
173
- if ( subrow.find('.um-admin-drag-col').length == 3 ) {subrow.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
174
-
175
- if ( !col_num ) {
176
- col_num = subrow.find('.um-admin-drag-col').length;
177
- } else {
178
- col_num = col_num + ':' + subrow.find('.um-admin-drag-col').length;
179
- }
180
-
181
- });
182
-
183
- jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_rowcols_'+c+'_cols" id="_um_rowcols_'+c+'_cols" value="'+col_num+'" />');
184
-
185
- sub_rows_count = row.find('.um-admin-drag-rowsub').length;
186
-
187
- var origin_id = jQuery(this).attr('data-original');
188
-
189
- jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_row_'+c+'" id="_um_row_'+c+'" value="_um_row_'+c+'" />');
190
- jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_roworigin_'+c+'_val" id="_um_roworigin_'+c+'_val" value="'+origin_id+'" />');
191
- jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_rowsub_'+c+'_rows" id="_um_rowsub_'+c+'_rows" value="'+sub_rows_count+'" />');
192
-
193
- jQuery(this).attr('data-original', '_um_row_'+c );
194
-
195
- });
196
-
197
- /* FIELDS */
198
- var order;
199
- order = 0;
200
- jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){
201
-
202
- if ( !jQuery(this).hasClass('group') ) {
203
- var group = jQuery(this).data('group');
204
- if ( group != '' ) {
205
- if ( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group').find( jQuery(this) ).length == 0 ) {
206
- jQuery(this).appendTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') );
207
- } else {
208
- //jQuery(this).prependTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') );
209
- }
210
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_group_'+jQuery(this).data('key')+'" id="um_group_'+jQuery(this).data('key')+'" value="'+group+'" />');
211
- } else {
212
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_group_'+jQuery(this).data('key')+'" id="um_group_'+jQuery(this).data('key')+'" value="" />');
213
- }
214
- }
215
-
216
- order++;
217
-
218
- row = jQuery(this).parents('.um-admin-drag-row').index()+1;
219
- row = '_um_row_'+row;
220
-
221
- saved_col = jQuery(this).data('column');
222
-
223
- if ( saved_col == 3 ){
224
- jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(2)') );
225
- }
226
- if ( saved_col == 2 ){
227
- jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(1)') );
228
- }
229
-
230
- sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index();
231
-
232
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_position_'+jQuery(this).data('key')+'" id="um_position_'+jQuery(this).data('key')+'" value="'+order+'" />');
233
-
234
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_row_'+jQuery(this).data('key')+'" id="um_row_'+jQuery(this).data('key')+'" value="'+row+'" />');
235
-
236
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_subrow_'+jQuery(this).data('key')+'" id="um_subrow_'+jQuery(this).data('key')+'" value="'+sub_row+'" />');
237
-
238
- jQuery('.um_update_order_fields').append('<input type="hidden" name="um_col_'+jQuery(this).data('key')+'" id="um_col_'+jQuery(this).data('key')+'" value="'+saved_col+'" />');
239
-
240
- });
241
-
242
- UM_Drag_and_Drop();
243
-
244
- UM_Add_Icon();
245
-
246
- jQuery.ajax({
247
- url: ultimatemember_ajax_url,
248
- type: 'POST',
249
- data: jQuery('.um_update_order').serialize(),
250
- success: function(){
251
- jQuery('#publish').removeAttr('disabled');
252
- }
253
- });
254
-
255
- }
256
-
257
- function UM_Add_Icon(){
258
-
259
- var add_icon_html = '<a href="#" class="um-admin-drag-add-field um-admin-tipsy-n" title="Add Field" data-modal="UM_fields" data-modal-size="normal" data-dynamic-content="um_admin_show_fields" data-arg2="'+jQuery('.um-admin-drag-ajax').data('form_id')+'" data-arg1=""><i class="um-icon-plus"></i></a>';
260
-
261
- jQuery('.um-admin-drag-col').each(function(){
262
- if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) {
263
- jQuery(this).append(add_icon_html);
264
- } else {
265
- jQuery(this).find('.um-admin-drag-add-field').remove();
266
- jQuery(this).append(add_icon_html);
267
- }
268
- });
269
-
270
- jQuery('.um-admin-drag-group').each(function(){
271
- if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) {
272
- jQuery(this).append(add_icon_html);
273
- } else {
274
- jQuery(this).find('.um-admin-drag-add-field').remove();
275
- jQuery(this).append(add_icon_html);
276
- }
277
- });
278
-
279
- }
280
-
281
- jQuery(document).ready(function() {
282
-
283
- if ( !jQuery('.um-admin-drag').length ) return false;
284
-
285
- UM_Drag_and_Drop();
286
-
287
- /* add field to respected area */
288
- jQuery(document).on('click', 'a.um-admin-drag-add-field', function(){
289
- in_row = jQuery(this).parents('.um-admin-drag-row').index();
290
- in_sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index();
291
- if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 1 ) {
292
- in_column = 1;
293
- } else {
294
- if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-middle')){
295
- in_column = 2;
296
- } else if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-last') ) {
297
- if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 3 ) {
298
- in_column = 3;
299
- } else {
300
- in_column = 2;
301
- }
302
- } else {
303
- in_column = 1;
304
- }
305
- }
306
-
307
- if ( jQuery(this).parents('.um-admin-drag-group').length ) {
308
- in_group = jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key');
309
- } else {
310
- in_group = '';
311
- }
312
-
313
- jQuery('.um-col-demon-settings').data('in_row', in_row);
314
- jQuery('.um-col-demon-settings').data('in_sub_row', in_sub_row);
315
- jQuery('.um-col-demon-settings').data('in_column', in_column);
316
- jQuery('.um-col-demon-settings').data('in_group', in_group);
317
- });
318
-
319
- /* add row */
320
- jQuery(document).on('click', '*[data-row_action="add_row"]', function(){
321
- var dragg = jQuery('.um-admin-drag-ajax');
322
- dragg.append( '<div class="um-admin-drag-row">' + jQuery('.um-col-demon-row').html() + '</div>' );
323
- dragg.find('.um-admin-drag-row:last').find('.um-admin-drag-row-icons').find('a.um-admin-drag-row-edit').attr('data-arg3', '_um_row_' + ( dragg.find('.um-admin-drag-row').length ) );
324
- dragg.find('.um-admin-drag-row:last').attr('data-original', '_um_row_' + ( dragg.find('.um-admin-drag-row').length ) );
325
- UM_update_rows();
326
- UM_update_subrows();
327
- UM_Rows_Refresh();
328
- });
329
-
330
- /* add sub row */
331
- jQuery(document).on('click', '*[data-row_action="add_subrow"]', function(){
332
- var dragg = jQuery(this).parents('.um-admin-drag-row').find('.um-admin-drag-rowsubs');
333
- dragg.append( '<div class="um-admin-drag-rowsub">' + jQuery('.um-col-demon-subrow').html() + '</div>' );
334
- UM_update_subrows();
335
- UM_Rows_Refresh();
336
- });
337
-
338
- /* remove element */
339
- jQuery(document).on('click', 'a[data-remove_element^="um-"]',function(){
340
- element = jQuery(this).data('remove_element');
341
-
342
- jQuery(this).parents('.' +element).find('.um-admin-drag-fld').each(function(){
343
- jQuery(this).find('a[data-silent_action="um_admin_remove_field"]').trigger('click');
344
- });
345
-
346
- jQuery(this).parents('.' +element).remove();
347
- jQuery('.tipsy').remove();
348
- UM_Rows_Refresh();
349
- });
350
-
351
- /* dynamically change columns */
352
- jQuery(document).on('click', '.um-admin-drag-ctrls.columns a', function(){
353
-
354
- var row = jQuery(this).parents('.um-admin-drag-rowsub');
355
- var tab = jQuery(this);
356
- var tabs = jQuery(this).parent();
357
- tabs.find('a').removeClass('active');
358
- tab.addClass('active');
359
- var existing_cols = row.find('.um-admin-drag-col').length;
360
- var required_cols = tab.data('cols');
361
- var needed_cols = required_cols - existing_cols;
362
-
363
- if ( needed_cols > 0 ) {
364
-
365
- for (i = 0; i < needed_cols; i++){
366
- row.find('.um-admin-drag-col-dynamic').append('<div class="um-admin-drag-col"></div>');
367
- }
368
-
369
- row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
370
- row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length );
371
- row.find('.um-admin-drag-col:last').addClass('cols-last');
372
-
373
- if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
374
-
375
- } else if ( needed_cols < 0 ) {
376
-
377
- needed_cols = needed_cols + 3;
378
- if ( needed_cols == 2 ) {
379
- row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() );
380
- row.find('.um-admin-drag-col.cols-last').remove();
381
- }
382
- if ( needed_cols == 1 ) {
383
- row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() );
384
- row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-middle').html() );
385
- row.find('.um-admin-drag-col.cols-last').remove();
386
- row.find('.um-admin-drag-col.cols-middle').remove();
387
- }
388
-
389
- row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
390
- row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col:visible').length );
391
- row.find('.um-admin-drag-col:last').addClass('cols-last');
392
-
393
- }
394
-
395
- if ( allow_update_via_col_click == true ) {
396
- UM_Change_Field_Col();
397
- UM_Rows_Refresh();
398
- }
399
-
400
- });
401
-
402
- /* trigger columns at start */
403
- allow_update_via_col_click = false;
404
- jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){
405
- jQuery(this).trigger('click');
406
- }).promise().done( function(){ allow_update_via_col_click = true; } );
407
-
408
- UM_Rows_Refresh();
409
-
410
  });
1
+ function UM_Drag_and_Drop(){
2
+
3
+ jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable({
4
+ items: '.um-admin-drag-fld',
5
+ connectWith: '.um-admin-drag-col,.um-admin-drag-group',
6
+ placeholder: "um-fld-placeholder",
7
+ forcePlaceholderSize:true,
8
+ update: function(event, ui){
9
+
10
+ jQuery('#publish').attr('disabled','disabled');
11
+
12
+ if ( ui.item.hasClass('um-field-type-group') && ui.item.parents('.um-field-type-group').length > 0 ) {
13
+
14
+ jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable('cancel');
15
+
16
+ jQuery('#publish').removeAttr('disabled');
17
+
18
+ } else {
19
+
20
+ UM_Change_Field_Col();
21
+
22
+ UM_Change_Field_Grp();
23
+
24
+ UM_Rows_Refresh();
25
+
26
+ }
27
+
28
+ }
29
+ });
30
+
31
+ jQuery('.um-admin-drag-rowsubs').sortable({
32
+ items: '.um-admin-drag-rowsub',
33
+ placeholder: "um-rowsub-placeholder",
34
+ forcePlaceholderSize:true,
35
+ zIndex: 9999999999,
36
+ update: function(){
37
+
38
+ jQuery('#publish').attr('disabled','disabled');
39
+
40
+ UM_update_subrows();
41
+
42
+ UM_Rows_Refresh();
43
+
44
+ }
45
+ }).disableSelection();
46
+
47
+ jQuery('.um-admin-drag-rowsub').sortable({
48
+ items: '.um-admin-drag-col',
49
+ zIndex: 9999999999,
50
+ update: function(){
51
+
52
+ jQuery('#publish').attr('disabled','disabled');
53
+
54
+ row = jQuery(this);
55
+ row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
56
+ row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length );
57
+ row.find('.um-admin-drag-col:last').addClass('cols-last');
58
+ if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
59
+
60
+ UM_Change_Field_Col();
61
+
62
+ UM_Change_Field_Grp();
63
+
64
+ UM_Rows_Refresh();
65
+
66
+ }
67
+ }).disableSelection();
68
+
69
+ jQuery('.um-admin-drag-ajax').sortable({
70
+ items: '.um-admin-drag-row',
71
+ handle: ".um-admin-drag-row-start",
72
+ zIndex: 9999999999,
73
+ placeholder: "um-row-placeholder",
74
+ forcePlaceholderSize:true,
75
+ out: function(){
76
+ jQuery('.tipsy').remove();
77
+ },
78
+ update: function(){
79
+
80
+ jQuery('#publish').attr('disabled','disabled');
81
+
82
+ UM_update_rows();
83
+
84
+ UM_Change_Field_Col();
85
+
86
+ UM_Change_Field_Grp();
87
+
88
+ UM_Rows_Refresh();
89
+
90
+ }
91
+ }).disableSelection();
92
+
93
+ }
94
+
95
+ function UM_update_rows(){
96
+ var c = 0;
97
+ jQuery('a[data-remove_element="um-admin-drag-row"]').remove();
98
+ jQuery('.um-admin-drag-row').each(function(){
99
+ c++;
100
+ row = jQuery(this);
101
+ if ( c != 1 ) {
102
+ row.find('.um-admin-drag-row-icons').append( '<a href="#" class="um-admin-tipsy-n" title="Delete Row" data-remove_element="um-admin-drag-row"><i class="um-faicon-trash-o"></i></a>' );
103
+ }
104
+ });
105
+ }
106
+
107
+ function UM_update_subrows(){
108
+ jQuery('a[data-remove_element="um-admin-drag-rowsub"]').remove();
109
+ jQuery('.um-admin-drag-row').each(function(){
110
+ c = 0;
111
+ jQuery(this).find('.um-admin-drag-rowsub').each(function(){
112
+ c++;
113
+ row = jQuery(this);
114
+ if ( c != 1 ) {
115
+ row.find('.um-admin-drag-rowsub-icons').append('<a href="#" class="um-admin-tipsy-n" title="Delete Row" data-remove_element="um-admin-drag-rowsub"><i class="um-faicon-trash-o"></i></a>');
116
+ }
117
+ });
118
+ });
119
+ }
120
+
121
+ function UM_Change_Field_Col(){
122
+ jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){
123
+ cols = jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length;
124
+ col = jQuery(this).parents('.um-admin-drag-col');
125
+ if ( col.hasClass('cols-last') ) {
126
+ if ( cols == 1 ) {
127
+ saved_col = 1;
128
+ }
129
+ if ( cols == 3 ) {
130
+ saved_col = 3;
131
+ } else if ( cols == 2 ) {
132
+ saved_col = 2;
133
+ }
134
+ } else if ( col.hasClass('cols-middle') && cols == 3 ) {
135
+ saved_col = 2;
136
+ } else {
137
+ saved_col = 1;
138
+ }
139
+
140
+ jQuery(this).data('column', saved_col);
141
+ });
142
+ }
143
+
144
+ function UM_Change_Field_Grp(){
145
+ jQuery('.um-admin-drag-col .um-admin-drag-fld:not(.um-field-type-group)').each(function(){
146
+ if ( jQuery(this).parents('.um-admin-drag-group').length == 0 ){
147
+ jQuery(this).data('group', '');
148
+ } else {
149
+ jQuery(this).data('group', jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key') );
150
+ }
151
+ });
152
+ }
153
+
154
+ function UM_Rows_Refresh(){
155
+
156
+ jQuery('.um_update_order_fields').empty();
157
+
158
+ /* ROWS */
159
+ var c = 0;
160
+ jQuery('.um-admin-drag-row').each(function(){
161
+ c++;
162
+
163
+ row = jQuery(this);
164
+
165
+ col_num = '';
166
+ row.find('.um-admin-drag-rowsub').each(function(){
167
+
168
+ subrow = jQuery(this);
169
+
170
+ subrow.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
171
+ subrow.find('.um-admin-drag-col').addClass('cols-' + subrow.find('.um-admin-drag-col').length );
172
+ subrow.find('.um-admin-drag-col:last').addClass('cols-last');
173
+ if ( subrow.find('.um-admin-drag-col').length == 3 ) {subrow.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
174
+
175
+ if ( !col_num ) {
176
+ col_num = subrow.find('.um-admin-drag-col').length;
177
+ } else {
178
+ col_num = col_num + ':' + subrow.find('.um-admin-drag-col').length;
179
+ }
180
+
181
+ });
182
+
183
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_rowcols_'+c+'_cols" id="_um_rowcols_'+c+'_cols" value="'+col_num+'" />');
184
+
185
+ sub_rows_count = row.find('.um-admin-drag-rowsub').length;
186
+
187
+ var origin_id = jQuery(this).attr('data-original');
188
+
189
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_row_'+c+'" id="_um_row_'+c+'" value="_um_row_'+c+'" />');
190
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_roworigin_'+c+'_val" id="_um_roworigin_'+c+'_val" value="'+origin_id+'" />');
191
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="_um_rowsub_'+c+'_rows" id="_um_rowsub_'+c+'_rows" value="'+sub_rows_count+'" />');
192
+
193
+ jQuery(this).attr('data-original', '_um_row_'+c );
194
+
195
+ });
196
+
197
+ /* FIELDS */
198
+ var order;
199
+ order = 0;
200
+ jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){
201
+
202
+ if ( !jQuery(this).hasClass('group') ) {
203
+ var group = jQuery(this).data('group');
204
+ if ( group != '' ) {
205
+ if ( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group').find( jQuery(this) ).length == 0 ) {
206
+ jQuery(this).appendTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') );
207
+ } else {
208
+ //jQuery(this).prependTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') );
209
+ }
210
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_group_'+jQuery(this).data('key')+'" id="um_group_'+jQuery(this).data('key')+'" value="'+group+'" />');
211
+ } else {
212
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_group_'+jQuery(this).data('key')+'" id="um_group_'+jQuery(this).data('key')+'" value="" />');
213
+ }
214
+ }
215
+
216
+ order++;
217
+
218
+ row = jQuery(this).parents('.um-admin-drag-row').index()+1;
219
+ row = '_um_row_'+row;
220
+
221
+ saved_col = jQuery(this).data('column');
222
+
223
+ if ( saved_col == 3 ){
224
+ jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(2)') );
225
+ }
226
+ if ( saved_col == 2 ){
227
+ jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(1)') );
228
+ }
229
+
230
+ sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index();
231
+
232
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_position_'+jQuery(this).data('key')+'" id="um_position_'+jQuery(this).data('key')+'" value="'+order+'" />');
233
+
234
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_row_'+jQuery(this).data('key')+'" id="um_row_'+jQuery(this).data('key')+'" value="'+row+'" />');
235
+
236
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_subrow_'+jQuery(this).data('key')+'" id="um_subrow_'+jQuery(this).data('key')+'" value="'+sub_row+'" />');
237
+
238
+ jQuery('.um_update_order_fields').append('<input type="hidden" name="um_col_'+jQuery(this).data('key')+'" id="um_col_'+jQuery(this).data('key')+'" value="'+saved_col+'" />');
239
+
240
+ });
241
+
242
+ UM_Drag_and_Drop();
243
+
244
+ UM_Add_Icon();
245
+
246
+ jQuery.ajax({
247
+ url: ultimatemember_ajax_url,
248
+ type: 'POST',
249
+ data: jQuery('.um_update_order').serialize(),
250
+ success: function(){
251
+ jQuery('#publish').removeAttr('disabled');
252
+ }
253
+ });
254
+
255
+ }
256
+
257
+ function UM_Add_Icon(){
258
+
259
+ var add_icon_html = '<a href="#" class="um-admin-drag-add-field um-admin-tipsy-n" title="Add Field" data-modal="UM_fields" data-modal-size="normal" data-dynamic-content="um_admin_show_fields" data-arg2="'+jQuery('.um-admin-drag-ajax').data('form_id')+'" data-arg1=""><i class="um-icon-plus"></i></a>';
260
+
261
+ jQuery('.um-admin-drag-col').each(function(){
262
+ if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) {
263
+ jQuery(this).append(add_icon_html);
264
+ } else {
265
+ jQuery(this).find('.um-admin-drag-add-field').remove();
266
+ jQuery(this).append(add_icon_html);
267
+ }
268
+ });
269
+
270
+ jQuery('.um-admin-drag-group').each(function(){
271
+ if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) {
272
+ jQuery(this).append(add_icon_html);
273
+ } else {
274
+ jQuery(this).find('.um-admin-drag-add-field').remove();
275
+ jQuery(this).append(add_icon_html);
276
+ }
277
+ });
278
+
279
+ }
280
+
281
+ jQuery(document).ready(function() {
282
+
283
+ if ( !jQuery('.um-admin-drag').length ) return false;
284
+
285
+ UM_Drag_and_Drop();
286
+
287
+ /* add field to respected area */
288
+ jQuery(document).on('click', 'a.um-admin-drag-add-field', function(){
289
+ in_row = jQuery(this).parents('.um-admin-drag-row').index();
290
+ in_sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index();
291
+ if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 1 ) {
292
+ in_column = 1;
293
+ } else {
294
+ if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-middle')){
295
+ in_column = 2;
296
+ } else if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-last') ) {
297
+ if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 3 ) {
298
+ in_column = 3;
299
+ } else {
300
+ in_column = 2;
301
+ }
302
+ } else {
303
+ in_column = 1;
304
+ }
305
+ }
306
+
307
+ if ( jQuery(this).parents('.um-admin-drag-group').length ) {
308
+ in_group = jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key');
309
+ } else {
310
+ in_group = '';
311
+ }
312
+
313
+ jQuery('.um-col-demon-settings').data('in_row', in_row);
314
+ jQuery('.um-col-demon-settings').data('in_sub_row', in_sub_row);
315
+ jQuery('.um-col-demon-settings').data('in_column', in_column);
316
+ jQuery('.um-col-demon-settings').data('in_group', in_group);
317
+ });
318
+
319
+ /* add row */
320
+ jQuery(document).on('click', '*[data-row_action="add_row"]', function(){
321
+ var dragg = jQuery('.um-admin-drag-ajax');
322
+ dragg.append( '<div class="um-admin-drag-row">' + jQuery('.um-col-demon-row').html() + '</div>' );
323
+ dragg.find('.um-admin-drag-row:last').find('.um-admin-drag-row-icons').find('a.um-admin-drag-row-edit').attr('data-arg3', '_um_row_' + ( dragg.find('.um-admin-drag-row').length ) );
324
+ dragg.find('.um-admin-drag-row:last').attr('data-original', '_um_row_' + ( dragg.find('.um-admin-drag-row').length ) );
325
+ UM_update_rows();
326
+ UM_update_subrows();
327
+ UM_Rows_Refresh();
328
+ });
329
+
330
+ /* add sub row */
331
+ jQuery(document).on('click', '*[data-row_action="add_subrow"]', function(){
332
+ var dragg = jQuery(this).parents('.um-admin-drag-row').find('.um-admin-drag-rowsubs');
333
+ dragg.append( '<div class="um-admin-drag-rowsub">' + jQuery('.um-col-demon-subrow').html() + '</div>' );
334
+ UM_update_subrows();
335
+ UM_Rows_Refresh();
336
+ });
337
+
338
+ /* remove element */
339
+ jQuery(document).on('click', 'a[data-remove_element^="um-"]',function(){
340
+ element = jQuery(this).data('remove_element');
341
+
342
+ jQuery(this).parents('.' +element).find('.um-admin-drag-fld').each(function(){
343
+ jQuery(this).find('a[data-silent_action="um_admin_remove_field"]').trigger('click');
344
+ });
345
+
346
+ jQuery(this).parents('.' +element).remove();
347
+ jQuery('.tipsy').remove();
348
+ UM_Rows_Refresh();
349
+ });
350
+
351
+ /* dynamically change columns */
352
+ jQuery(document).on('click', '.um-admin-drag-ctrls.columns a', function(){
353
+
354
+ var row = jQuery(this).parents('.um-admin-drag-rowsub');
355
+ var tab = jQuery(this);
356
+ var tabs = jQuery(this).parent();
357
+ tabs.find('a').removeClass('active');
358
+ tab.addClass('active');
359
+ var existing_cols = row.find('.um-admin-drag-col').length;
360
+ var required_cols = tab.data('cols');
361
+ var needed_cols = required_cols - existing_cols;
362
+
363
+ if ( needed_cols > 0 ) {
364
+
365
+ for (i = 0; i < needed_cols; i++){
366
+ row.find('.um-admin-drag-col-dynamic').append('<div class="um-admin-drag-col"></div>');
367
+ }
368
+
369
+ row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
370
+ row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length );
371
+ row.find('.um-admin-drag-col:last').addClass('cols-last');
372
+
373
+ if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');}
374
+
375
+ } else if ( needed_cols < 0 ) {
376
+
377
+ needed_cols = needed_cols + 3;
378
+ if ( needed_cols == 2 ) {
379
+ row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() );
380
+ row.find('.um-admin-drag-col.cols-last').remove();
381
+ }
382
+ if ( needed_cols == 1 ) {
383
+ row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() );
384
+ row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-middle').html() );
385
+ row.find('.um-admin-drag-col.cols-last').remove();
386
+ row.find('.um-admin-drag-col.cols-middle').remove();
387
+ }
388
+
389
+ row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle');
390
+ row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col:visible').length );
391
+ row.find('.um-admin-drag-col:last').addClass('cols-last');
392
+
393
+ }
394
+
395
+ if ( allow_update_via_col_click == true ) {
396
+ UM_Change_Field_Col();
397
+ UM_Rows_Refresh();
398
+ }
399
+
400
+ });
401
+
402
+ /* trigger columns at start */
403
+ allow_update_via_col_click = false;
404
+ jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){
405
+ jQuery(this).trigger('click');
406
+ }).promise().done( function(){ allow_update_via_col_click = true; } );
407
+
408
+ UM_Rows_Refresh();
409
+
410
  });
admin/assets/js/um-admin-field.js CHANGED
@@ -1,89 +1,89 @@
1
- jQuery(document).ready(function() {
2
-
3
- /* Remove field permanently */
4
- jQuery(document).on('click', '.um-admin-btns a span.remove', function(e){
5
- e.preventDefault();
6
-
7
- if (confirm('This will permanently delete this custom field from database')) {
8
-
9
- jQuery(this).parents('a').remove();
10
-
11
- arg1 = jQuery(this).parents('a').data('arg1');
12
-
13
- jQuery.ajax({
14
- url: ultimatemember_ajax_url,
15
- type: 'POST',
16
- data: {action: 'ultimatemember_do_ajax_action', act_id : 'um_admin_remove_field_global', arg1 : arg1 },
17
- success: function(data){
18
-
19
- },
20
- error: function(data){
21
-
22
- }
23
- });
24
-
25
-
26
- }
27
-
28
- return false;
29
- });
30
-
31
- /* Add a Field */
32
- jQuery(document).on('submit', 'form.um_add_field', function(e){
33
-
34
- e.preventDefault();
35
-
36
- var form = jQuery(this);
37
-
38
- jQuery.ajax({
39
- url: ultimatemember_ajax_url,
40
- type: 'POST',
41
- dataType: 'json',
42
- data: form.serialize(),
43
- beforeSend: function(){
44
- form.css({'opacity': 0.5});
45
- jQuery('.um-admin-error').removeClass('um-admin-error');
46
- form.find('.um-admin-error-block').hide();
47
- form.find('.um-admin-success-block').hide();
48
- },
49
- complete: function(){
50
- form.css({'opacity': 1});
51
- },
52
- success: function(data){
53
-
54
- if (data.error){
55
-
56
- c = 0;
57
- jQuery.each(data.error, function(i, v){
58
- c++;
59
- if ( c == 1 ) {
60
- form.find('#'+i).addClass('um-admin-error').focus();
61
- form.find('.um-admin-error-block').show().html(v);
62
- }
63
- });
64
-
65
- um_admin_modal_responsive();
66
-
67
- } else {
68
-
69
- jQuery('.um-col-demon-settings').data('in_row', '');
70
- jQuery('.um-col-demon-settings').data('in_sub_row', '');
71
- jQuery('.um-col-demon-settings').data('in_column', '');
72
- jQuery('.um-col-demon-settings').data('in_group', '');
73
-
74
- um_admin_remove_modal();
75
- um_admin_update_builder();
76
-
77
- }
78
-
79
- },
80
- error: function(data){
81
-
82
- }
83
- });
84
-
85
- return false;
86
-
87
- });
88
-
89
  });
1
+ jQuery(document).ready(function() {
2
+
3
+ /* Remove field permanently */
4
+ jQuery(document).on('click', '.um-admin-btns a span.remove', function(e){
5
+ e.preventDefault();
6
+
7
+ if (confirm('This will permanently delete this custom field from database')) {
8
+
9
+ jQuery(this).parents('a').remove();
10
+
11
+ arg1 = jQuery(this).parents('a').data('arg1');
12
+
13
+ jQuery.ajax({
14
+ url: ultimatemember_ajax_url,
15
+ type: 'POST',
16
+ data: {action: 'ultimatemember_do_ajax_action', act_id : 'um_admin_remove_field_global', arg1 : arg1 },
17
+ success: function(data){
18
+
19
+ },
20
+ error: function(data){
21
+
22
+ }
23
+ });
24
+
25
+
26
+ }
27
+
28
+ return false;
29
+ });
30
+
31
+ /* Add a Field */
32
+ jQuery(document).on('submit', 'form.um_add_field', function(e){
33
+
34
+ e.preventDefault();
35
+
36
+ var form = jQuery(this);
37
+
38
+ jQuery.ajax({
39
+ url: ultimatemember_ajax_url,
40
+ type: 'POST',
41
+ dataType: 'json',
42
+ data: form.serialize(),
43
+ beforeSend: function(){
44
+ form.css({'opacity': 0.5});
45
+ jQuery('.um-admin-error').removeClass('um-admin-error');
46
+ form.find('.um-admin-error-block').hide();
47
+ form.find('.um-admin-success-block').hide();
48
+ },
49
+ complete: function(){
50
+ form.css({'opacity': 1});
51
+ },
52
+ success: function(data){
53
+
54
+ if (data.error){
55
+
56
+ c = 0;
57
+ jQuery.each(data.error, function(i, v){
58
+ c++;
59
+ if ( c == 1 ) {
60
+ form.find('#'+i).addClass('um-admin-error').focus();
61
+ form.find('.um-admin-error-block').show().html(v);
62
+ }
63
+ });
64
+
65
+ um_admin_modal_responsive();
66
+
67
+ } else {
68
+
69
+ jQuery('.um-col-demon-settings').data('in_row', '');
70
+ jQuery('.um-col-demon-settings').data('in_sub_row', '');
71
+ jQuery('.um-col-demon-settings').data('in_column', '');
72
+ jQuery('.um-col-demon-settings').data('in_group', '');
73
+
74
+ um_admin_remove_modal();
75
+ um_admin_update_builder();
76
+
77
+ }
78
+
79
+ },
80
+ error: function(data){
81
+
82
+ }
83
+ });
84
+
85
+ return false;
86
+
87
+ });
88
+
89
  });
admin/assets/js/um-admin-form.js CHANGED
@@ -1,38 +1,38 @@
1
- jQuery(document).ready(function() {
2
-
3
- /* Default form tab */
4
- if ( jQuery('.um-admin-boxed-links').length > 0 ) {
5
-
6
- var tab = jQuery('.um-admin-boxed-links a[data-role="'+jQuery('input#_um_mode').val()+'"]');
7
-
8
- tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg');
9
- tab.addClass('um-admin-activebg');
10
- jQuery('.um-admin div#side-sortables').show();
11
- jQuery('div[id^="um-admin-form"]').hide();
12
- jQuery('#submitdiv').show();
13
- jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show();
14
- jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show();
15
- jQuery('.empty-container').css({'border' : 'none'});
16
- jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() );
17
-
18
- }
19
-
20
- /* Creating new form button */
21
- jQuery('.um-admin-boxed-links:not(.is-core-form) a').click(function(){
22
-
23
- var tab = jQuery(this);
24
-
25
- tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg');
26
- tab.addClass('um-admin-activebg');
27
- jQuery('.um-admin div#side-sortables').show();
28
- jQuery('div[id^="um-admin-form"]').hide();
29
- jQuery('#submitdiv').show();
30
- jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show();
31
- jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show();
32
- jQuery('input#_um_mode').val( tab.data('role') );
33
- jQuery('.empty-container').css({'border' : 'none'});
34
- jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() );
35
-
36
- });
37
-
38
  });
1
+ jQuery(document).ready(function() {
2
+
3
+ /* Default form tab */
4
+ if ( jQuery('.um-admin-boxed-links').length > 0 ) {
5
+
6
+ var tab = jQuery('.um-admin-boxed-links a[data-role="'+jQuery('input#_um_mode').val()+'"]');
7
+
8
+ tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg');
9
+ tab.addClass('um-admin-activebg');
10
+ jQuery('.um-admin div#side-sortables').show();
11
+ jQuery('div[id^="um-admin-form"]').hide();
12
+ jQuery('#submitdiv').show();
13
+ jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show();
14
+ jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show();
15
+ jQuery('.empty-container').css({'border' : 'none'});
16
+ jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() );
17
+
18
+ }
19
+
20
+ /* Creating new form button */
21
+ jQuery('.um-admin-boxed-links:not(.is-core-form) a').click(function(){
22
+
23
+ var tab = jQuery(this);
24
+
25
+ tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg');
26
+ tab.addClass('um-admin-activebg');
27
+ jQuery('.um-admin div#side-sortables').show();
28
+ jQuery('div[id^="um-admin-form"]').hide();
29
+ jQuery('#submitdiv').show();
30
+ jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show();
31
+ jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show();
32
+ jQuery('input#_um_mode').val( tab.data('role') );
33
+ jQuery('.empty-container').css({'border' : 'none'});
34
+ jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() );
35
+
36
+ });
37
+
38
  });
admin/assets/js/um-admin-modal.js CHANGED
@@ -1,331 +1,364 @@
1
- function um_admin_live_update_scripts() {
2
-
3
- jQuery('.um-admin-modal-body:visible select').select2({
4
- allowClear: false,
5
- minimumResultsForSearch: 10
6
- });
7
-
8
- jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');});
9
-
10
- jQuery('.um-admin-colorpicker').wpColorPicker();
11
-
12
- }
13
-
14
- function um_admin_new_modal( id, ajax, size ){
15
-
16
- var modal = jQuery('body').find('.um-admin-overlay');
17
-
18
- jQuery('.tipsy').hide();
19
-
20
- um_admin_remove_modal();
21
-
22
- jQuery('body').addClass('um-admin-modal-open').append('<div class="um-admin-overlay" /><div class="um-admin-modal" />');
23
- jQuery('#' + id).prependTo('.um-admin-modal');
24
- jQuery('#' + id).show();
25
- jQuery('.um-admin-modal').show();
26
-
27
- jQuery('.um-admin-modal-head').append('<a href="#" data-action="UM_remove_modal" class="um-admin-modal-close"><i class="um-faicon-times"></i></a>');
28
-
29
- if ( ajax == true ) {
30
- um_admin_modal_size( size );
31
- um_admin_modal_preload();
32
- um_admin_modal_responsive();
33
- } else {
34
- um_admin_modal_responsive();
35
- }
36
-
37
- }
38
-
39
- function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) {
40
-
41
- in_row = '';
42
- in_sub_row = '';
43
- in_column = '';
44
- in_group = '';
45
-
46
- if ( jQuery('.um-col-demon-settings').data('in_column') ) {
47
- in_row = jQuery('.um-col-demon-settings').data('in_row');
48
- in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row');
49
- in_column = jQuery('.um-col-demon-settings').data('in_column');
50
- in_group = jQuery('.um-col-demon-settings').data('in_group');
51
- }
52
-
53
- jQuery.ajax({
54
- url: ultimatemember_ajax_url,
55
- type: 'POST',
56
- data: {action: 'ultimatemember_dynamic_modal_content', act_id: act_id, arg1 : arg1, arg2 : arg2, arg3: arg3, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group },
57
- complete: function(){
58
- um_admin_modal_loaded();
59
- um_admin_modal_responsive();
60
- },
61
- success: function(data){
62
-
63
- jQuery('.um-admin-modal').find('.um-admin-modal-body').html( data );
64
-
65
- um_responsive();
66
-
67
- um_admin_live_update_scripts();
68
-
69
- if ( jQuery('.um-admin-editor:visible').length > 0 ) {
70
-
71
- if ( act_id == 'um_admin_edit_field_popup' ) {
72
-
73
- tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit');
74
- jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-edit').contents() );
75
- tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit');
76
-
77
- jQuery('.switch-html').trigger('click');
78
- jQuery('.switch-html').trigger('click');
79
- jQuery('.switch-tmce').trigger('click');
80
-
81
- jQuery('#um_editor_edit_ifr').height(200);
82
-
83
- var editor = tinyMCE.get('um_editor_edit');
84
- var content = editor.getContent();
85
- editor.setContent( jQuery('.um-admin-modal:visible .dynamic-mce-content').html() );
86
-
87
- } else {
88
-
89
- tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new');
90
- jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-new').contents() );
91
- tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new');
92
-
93
- jQuery('.switch-html').trigger('click');
94
- jQuery('.switch-html').trigger('click');
95
- jQuery('.switch-tmce').trigger('click');
96
-
97
- jQuery('#um_editor_new_ifr').height(200);
98
-
99
- }
100
-
101
- }
102
-
103
- },
104
- error: function(data){
105
-
106
- }
107
- });
108
- return false;
109
- }
110
-
111
- function um_admin_modal_responsive() {
112
- var required_margin = jQuery('.um-admin-modal:visible').innerHeight() / 2 + 'px';
113
- jQuery('.um-admin-modal:visible').css({'margin-top': '-' + required_margin });
114
- }
115
-
116
- function um_admin_remove_modal(){
117
-
118
- if ( jQuery('.um-admin-editor:visible').length > 0 ) {
119
-
120
- if ( jQuery('.um-admin-modal:visible').find('form').parent().attr('id') == 'UM_edit_field' ) {
121
-
122
- tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit');
123
- jQuery('.um-hidden-editor-edit').html( jQuery('.um-admin-editor:visible').contents() );
124
- tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit');
125
-
126
- } else {
127
-
128
- tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new');
129
- jQuery('.um-hidden-editor-new').html( jQuery('.um-admin-editor:visible').contents() );
130
- tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new');
131
-
132
- }
133
-
134
- }
135
-
136
- jQuery('body').removeClass('um-admin-modal-open');
137
- jQuery('.um-admin-modal div[id^="UM_"]').hide().appendTo('body');
138
- jQuery('.um-admin-modal,.um-admin-overlay').remove();
139
- }
140
-
141
- function um_admin_modal_preload() {
142
- jQuery('.um-admin-modal:visible').addClass('loading');
143
- jQuery('.um-admin-modal-body:visible').empty();
144
- }
145
-
146
- function um_admin_modal_loaded() {
147
- jQuery('.um-admin-modal:visible').removeClass('loading');
148
- }
149
-
150
- function um_admin_modal_size( aclass ) {
151
- jQuery('.um-admin-modal:visible').addClass(aclass);
152
- }
153
-
154
- function um_admin_modal_add_attr( id, value ) {
155
- jQuery('.um-admin-modal:visible').data( id, value );
156
- }
157
-
158
- /**
159
- Custom modal scripting starts
160
- **/
161
-
162
- jQuery(document).ready(function() {
163
-
164
- /**
165
- disable link
166
- **/
167
- jQuery(document).on('click', '.um-admin-builder a, .um-admin-modal a', function(e){
168
- e.preventDefault();
169
- return false;
170
- });
171
-
172
- /**
173
- toggle area
174
- **/
175
- jQuery(document).on('click', '.um-admin-btn-toggle a', function(e){
176
- var content = jQuery(this).parent().find('.um-admin-btn-content');
177
- var link = jQuery(this);
178
- if ( content.is(':hidden') ) {
179
- content.show();
180
- link.find('i').removeClass().addClass('um-icon-minus');
181
- link.addClass('active');
182
- } else {
183
- content.hide();
184
- link.find('i').removeClass().addClass('um-icon-plus');
185
- link.removeClass('active');
186
- }
187
- um_admin_modal_responsive();
188
- });
189
-
190
- /**
191
- clone a condition
192
- **/
193
- jQuery(document).on('click', '.um-admin-new-condition', function(){
194
- var content = jQuery(this).parents('.um-admin-btn-content');
195
- content.find('select').select2('destroy');
196
- var length = content.find('.um-admin-cur-condition').length;
197
- if ( length < 5 ) {
198
- var cloned = jQuery(this).parents('.um-admin-cur-condition').clone();
199
- cloned.find('input[type=text],select').each(function(){
200
- jQuery(this).attr('id', jQuery(this).attr('id') + length );
201
- jQuery(this).attr('name', jQuery(this).attr('name') + length );
202
- });
203
- cloned.find('input[type=text]').val('');
204
- cloned.find('.um-admin-new-condition').replaceWith('<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>');
205
-
206
- cloned.appendTo( content );
207
- cloned.find('select').val('');
208
- um_admin_live_update_scripts();
209
- um_admin_modal_responsive();
210
- } else {
211
- alert('You already have 5 rules');
212
- }
213
- });
214
-
215
- /**
216
- reset conditions
217
- **/
218
- jQuery(document).on('click', '.um-admin-reset-conditions a', function(){
219
- var content = jQuery(this).parents('.um-admin-btn-content');
220
- content.find('.um-admin-cur-condition').slice(1).remove();
221
- content.find('input[type=text]').val('');
222
- content.find('select').val('');
223
- um_admin_live_update_scripts();
224
- um_admin_modal_responsive();
225
- });
226
-
227
- /**
228
- remove a condition
229
- **/
230
- jQuery(document).on('click', '.um-admin-remove-condition', function(){
231
- var condition = jQuery(this).parents('.um-admin-cur-condition');
232
- jQuery('.tipsy').remove();
233
- condition.remove();
234
- um_admin_live_update_scripts();
235
- um_admin_modal_responsive();
236
- });
237
-
238
- /**
239
- remove modal via action
240
- **/
241
- jQuery(document).on('click', '.um-admin-overlay, a[data-action="UM_remove_modal"]', function(){
242
- um_admin_remove_modal();
243
- });
244
-
245
- /**
246
- fire new modal
247
- **/
248
- jQuery(document).on('click', 'a[data-modal^="UM_"], span[data-modal^="UM_"]', function(e){
249
-
250
- e.preventDefault();
251
-
252
- var modal_id = jQuery(this).attr('data-modal');
253
-
254
- if ( jQuery(this).attr('data-back') ) {
255
-
256
- jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-modal", jQuery(this).attr('data-back') );
257
- var current_icon = jQuery( '#' + jQuery(this).attr('data-back') ).find('input#_icon').val();
258
- if ( current_icon == '' ) {
259
- jQuery('#UM_fonticons').find('.um-admin-icons span').removeClass('highlighted');
260
- }
261
-
262
- }
263
-
264
- if ( jQuery(this).data('dynamic-content') ) {
265
- um_admin_new_modal( modal_id, true, jQuery(this).data('modal-size') );
266
- um_admin_modal_ajaxcall( jQuery(this).data('dynamic-content'), jQuery(this).data('arg1'), jQuery(this).data('arg2'), jQuery(this).data('arg3') );
267
- } else {
268
- um_admin_new_modal( modal_id );
269
- }
270
-
271
- return false;
272
-
273
- });
274
-
275
- /**
276
- choose font icon
277
- **/
278
- jQuery(document).on('click', '.um-admin-icons span', function(){
279
- var icon = jQuery(this).attr('data-code');
280
- jQuery(this).parent().find('span').removeClass('highlighted');
281
- jQuery(this).addClass('highlighted');
282
- jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-code", icon);
283
- });
284
-
285
- /**
286
- submit font icon
287
- **/
288
- jQuery(document).on('click', '#UM_fonticons a.um-admin-modal-back:not(.um-admin-modal-cancel)', function(){
289
- var v_id = '';
290
- var icon_selected = jQuery(this).attr('data-code');
291
- if (icon_selected != ''){
292
- if ( jQuery(this).attr('data-modal') ) {
293
- v_id = '#' + jQuery(this).attr('data-modal');
294
- } else {
295
- v_id = '.postbox';
296
- }
297
- jQuery( v_id ).find('input#_icon,input#_um_icon').val( icon_selected );
298
- jQuery( v_id ).find('span.um-admin-icon-value').html('<i class="'+icon_selected+'"></i>');
299
- jQuery( v_id ).find('.um-admin-icon-clear').show();
300
- }
301
- jQuery(this).attr('data-code', '');
302
- if ( v_id == '.postbox' ) {
303
- um_admin_remove_modal();
304
- }
305
- });
306
-
307
- /**
308
- restore font icon
309
- **/
310
- jQuery(document).on('click', 'span.um-admin-icon-clear', function(){
311
- var element = jQuery(this).parents('p');
312
- jQuery('#UM_fonticons a.um-admin-modal-back').attr('data-code', '');
313
- element.find('input[type=hidden]').val('');
314
- element.find('.um-admin-icon-value').html('No Icon');
315
- jQuery(this).hide();
316
- });
317
-
318
- /**
319
- search font icons
320
- **/
321
- jQuery(document).on('keyup blur', '#_icon_search', function(){
322
- if ( jQuery(this).val().toLowerCase() != '' ) {
323
- jQuery('.um-admin-icons span').hide();
324
- jQuery('.um-admin-icons span[data-code*="'+jQuery(this).val().toLowerCase()+'"]').show();
325
- } else {
326
- jQuery('.um-admin-icons span:hidden').show();
327
- }
328
- um_admin_modal_responsive();
329
- });
330
-
331
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function um_admin_live_update_scripts() {
2
+
3
+ jQuery('.um-admin-modal-body:visible select').select2({
4
+ allowClear: false,
5
+ minimumResultsForSearch: 10
6
+ });
7
+
8
+ jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');});
9
+
10
+ jQuery('.um-admin-colorpicker').wpColorPicker();
11
+
12
+ }
13
+
14
+ function um_admin_new_modal( id, ajax, size ){
15
+
16
+ var modal = jQuery('body').find('.um-admin-overlay');
17
+
18
+ jQuery('.tipsy').hide();
19
+
20
+ um_admin_remove_modal();
21
+
22
+ jQuery('body').addClass('um-admin-modal-open').append('<div class="um-admin-overlay" /><div class="um-admin-modal" />');
23
+ jQuery('#' + id).prependTo('.um-admin-modal');
24
+ jQuery('#' + id).show();
25
+ jQuery('.um-admin-modal').show();
26
+
27
+ jQuery('.um-admin-modal-head').append('<a href="#" data-action="UM_remove_modal" class="um-admin-modal-close"><i class="um-faicon-times"></i></a>');
28
+
29
+ if ( ajax == true ) {
30
+ um_admin_modal_size( size );
31
+ um_admin_modal_preload();
32
+ um_admin_modal_responsive();
33
+ } else {
34
+ um_admin_modal_responsive();
35
+ }
36
+
37
+ }
38
+
39
+ function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) {
40
+
41
+ in_row = '';
42
+ in_sub_row = '';
43
+ in_column = '';
44
+ in_group = '';
45
+
46
+ if ( jQuery('.um-col-demon-settings').data('in_column') ) {
47
+ in_row = jQuery('.um-col-demon-settings').data('in_row');
48
+ in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row');
49
+ in_column = jQuery('.um-col-demon-settings').data('in_column');
50
+ in_group = jQuery('.um-col-demon-settings').data('in_group');
51
+ }
52
+
53
+ jQuery.ajax({
54
+ url: ultimatemember_ajax_url,
55
+ type: 'POST',
56
+ data: {action: 'ultimatemember_dynamic_modal_content', act_id: act_id, arg1 : arg1, arg2 : arg2, arg3: arg3, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group },
57
+ complete: function(){
58
+ um_admin_modal_loaded();
59
+ um_admin_modal_responsive();
60
+ },
61
+ success: function(data){
62
+
63
+ jQuery('.um-admin-modal').find('.um-admin-modal-body').html( data );
64
+
65
+ um_responsive();
66
+
67
+ um_admin_live_update_scripts();
68
+
69
+ if ( jQuery('.um-admin-editor:visible').length > 0 ) {
70
+
71
+ if ( act_id == 'um_admin_edit_field_popup' ) {
72
+
73
+ tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit');
74
+ jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-edit').contents() );
75
+ tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit');
76
+
77
+ jQuery('.switch-html').trigger('click');
78
+ jQuery('.switch-html').trigger('click');
79
+ jQuery('.switch-tmce').trigger('click');
80
+
81
+ jQuery('#um_editor_edit_ifr').height(200);
82
+
83
+ var editor = tinyMCE.get('um_editor_edit');
84
+ var content = editor.getContent();
85
+ editor.setContent( jQuery('.um-admin-modal:visible .dynamic-mce-content').html() );
86
+
87
+ } else {
88
+
89
+ tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new');
90
+ jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-new').contents() );
91
+ tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new');
92
+
93
+ jQuery('.switch-html').trigger('click');
94
+ jQuery('.switch-html').trigger('click');
95
+ jQuery('.switch-tmce').trigger('click');
96
+
97
+ jQuery('#um_editor_new_ifr').height(200);
98
+
99
+ }
100
+
101
+ }
102
+
103
+ },
104
+ error: function(data){
105
+
106
+ }
107
+ });
108
+ return false;
109
+ }
110
+
111
+ function um_admin_modal_responsive() {
112
+ var required_margin = jQuery('.um-admin-modal:visible').innerHeight() / 2 + 'px';
113
+ jQuery('.um-admin-modal:visible').css({'margin-top': '-' + required_margin });
114
+ }
115
+
116
+ function um_admin_remove_modal(){
117
+
118
+ if ( jQuery('.um-admin-editor:visible').length > 0 ) {
119
+
120
+ if ( jQuery('.um-admin-modal:visible').find('form').parent().attr('id') == 'UM_edit_field' ) {
121
+
122
+ tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit');
123
+ jQuery('.um-hidden-editor-edit').html( jQuery('.um-admin-editor:visible').contents() );
124
+ tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit');
125
+
126
+ } else {
127
+
128
+ tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new');
129
+ jQuery('.um-hidden-editor-new').html( jQuery('.um-admin-editor:visible').contents() );
130
+ tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new');
131
+
132
+ }
133
+
134
+ }
135
+
136
+ jQuery('body').removeClass('um-admin-modal-open');
137
+ jQuery('.um-admin-modal div[id^="UM_"]').hide().appendTo('body');
138
+ jQuery('.um-admin-modal,.um-admin-overlay').remove();
139
+ }
140
+
141
+ function um_admin_modal_preload() {
142
+ jQuery('.um-admin-modal:visible').addClass('loading');
143
+ jQuery('.um-admin-modal-body:visible').empty();
144
+ }
145
+
146
+ function um_admin_modal_loaded() {
147
+ jQuery('.um-admin-modal:visible').removeClass('loading');
148
+ }
149
+
150
+ function um_admin_modal_size( aclass ) {
151
+ jQuery('.um-admin-modal:visible').addClass(aclass);
152
+ }
153
+
154
+ function um_admin_modal_add_attr( id, value ) {
155
+ jQuery('.um-admin-modal:visible').data( id, value );
156
+ }
157
+
158
+ /**
159
+ Custom modal scripting starts
160
+ **/
161
+
162
+ jQuery(document).ready(function() {
163
+
164
+ /**
165
+ disable link
166
+ **/
167
+ jQuery(document).on('click', '.um-admin-builder a, .um-admin-modal a', function(e){
168
+ e.preventDefault();
169
+ return false;
170
+ });
171
+
172
+ /**
173
+ toggle area
174
+ **/
175
+ jQuery(document).on('click', '.um-admin-btn-toggle a', function(e){
176
+ var content = jQuery(this).parent().find('.um-admin-btn-content');
177
+ var link = jQuery(this);
178
+ if ( content.is(':hidden') ) {
179
+ content.show();
180
+ link.find('i').removeClass().addClass('um-icon-minus');
181
+ link.addClass('active');
182
+ } else {
183
+ content.hide();
184
+ link.find('i').removeClass().addClass('um-icon-plus');
185
+ link.removeClass('active');
186
+ }
187
+ um_admin_modal_responsive();
188
+ });
189
+
190
+ /**
191
+ clone a condition
192
+ **/
193
+ jQuery(document).on('click', '.um-admin-new-condition', function(){
194
+ var content = jQuery(this).parents('.um-admin-btn-content');
195
+ content.find('select').select2('destroy');
196
+ var length = content.find('.um-admin-cur-condition').length;
197
+ if ( length < 5 ) {
198
+ var cloned = jQuery(this).parents('.um-admin-cur-condition').clone();
199
+ cloned.find('input[type=text],select').each(function(){
200
+ jQuery(this).attr('id', jQuery(this).attr('id') + length );
201
+ jQuery(this).attr('name', jQuery(this).attr('name') + length );
202
+ });
203
+ cloned.find('input[type=text]').val('');
204
+ cloned.find('.um-admin-new-condition').replaceWith('<p><a href="#" class="um-admin-remove-condition button um-admin-tipsy-n" title="Remove condition"><i class="um-icon-close" style="margin-right:0!important"></i></a></p>');
205
+
206
+ cloned.appendTo( content );
207
+ cloned.find('select').val('');
208
+ um_admin_live_update_scripts();
209
+ um_admin_modal_responsive();
210
+ } else {
211
+ alert('You already have 5 rules');
212
+ }
213
+ });
214
+
215
+ /**
216
+ reset conditions
217
+ **/
218
+ jQuery(document).on('click', '.um-admin-reset-conditions a', function(){
219
+ var content = jQuery(this).parents('.um-admin-btn-content');
220
+ content.find('.um-admin-cur-condition').slice(1).remove();
221
+ content.find('input[type=text]').val('');
222
+ content.find('select').val('');
223
+ um_admin_live_update_scripts();
224
+ um_admin_modal_responsive();
225
+ });
226
+
227
+ /**
228
+ remove a condition
229
+ **/
230
+ jQuery(document).on('click', '.um-admin-remove-condition', function(){
231
+ var condition = jQuery(this).parents('.um-admin-cur-condition');
232
+ jQuery('.tipsy').remove();
233
+ condition.remove();
234
+ um_admin_live_update_scripts();
235
+ um_admin_modal_responsive();
236
+ });
237
+
238
+ /**
239
+ remove modal via action
240
+ **/
241
+ jQuery(document).on('click', '.um-admin-overlay, a[data-action="UM_remove_modal"]', function(){
242
+ um_admin_remove_modal();
243
+ });
244
+
245
+ /**
246
+ fire new modal
247
+ **/
248
+ jQuery(document).on('click', 'a[data-modal^="UM_"], span[data-modal^="UM_"]', function(e){
249
+
250
+ e.preventDefault();
251
+
252
+ var modal_id = jQuery(this).attr('data-modal');
253
+
254
+ if ( jQuery(this).attr('data-back') ) {
255
+
256
+ jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-modal", jQuery(this).attr('data-back') );
257
+ var current_icon = jQuery( '#' + jQuery(this).attr('data-back') ).find('input#_icon').val();
258
+ if ( current_icon == '' ) {
259
+ jQuery('#UM_fonticons').find('.um-admin-icons span').removeClass('highlighted');
260
+ }
261
+
262
+ }
263
+
264
+ if ( jQuery(this).data('dynamic-content') ) {
265
+ um_admin_new_modal( modal_id, true, jQuery(this).data('modal-size') );
266
+ um_admin_modal_ajaxcall( jQuery(this).data('dynamic-content'), jQuery(this).data('arg1'), jQuery(this).data('arg2'), jQuery(this).data('arg3') );
267
+ } else {
268
+ um_admin_new_modal( modal_id );
269
+ }
270
+
271
+ return false;
272
+
273
+ });
274
+
275
+ /**
276
+ choose font icon
277
+ **/
278
+ jQuery(document).on('click', '.um-admin-icons span', function(){
279
+ var icon = jQuery(this).attr('data-code');
280
+ jQuery(this).parent().find('span').removeClass('highlighted');
281
+ jQuery(this).addClass('highlighted');
282
+ jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-code", icon);
283
+ });
284
+
285
+ /**
286
+ submit font icon
287
+ **/
288
+ jQuery(document).on('click', '#UM_fonticons a.um-admin-modal-back:not(.um-admin-modal-cancel)', function(){
289
+ var v_id = '';
290
+ var icon_selected = jQuery(this).attr('data-code');
291
+ if (icon_selected != ''){
292
+ if ( jQuery(this).attr('data-modal') ) {
293
+ v_id = '#' + jQuery(this).attr('data-modal');
294
+ } else {
295
+ v_id = '.postbox';
296
+ }
297
+ jQuery( v_id ).find('input#_icon,input#_um_icon').val( icon_selected );
298
+ jQuery( v_id ).find('span.um-admin-icon-value').html('<i class="'+icon_selected+'"></i>');
299
+ jQuery( v_id ).find('.um-admin-icon-clear').show();
300
+ }
301
+ jQuery(this).attr('data-code', '');
302
+ if ( v_id == '.postbox' ) {
303
+ um_admin_remove_modal();
304
+ }
305
+ });
306
+
307
+ /**
308
+ restore font icon
309
+ **/
310
+ jQuery(document).on('click', 'span.um-admin-icon-clear', function(){
311
+ var element = jQuery(this).parents('p');
312
+ jQuery('#UM_fonticons a.um-admin-modal-back').attr('data-code', '');
313
+ element.find('input[type=hidden]').val('');
314
+ element.find('.um-admin-icon-value').html('No Icon');
315
+ jQuery(this).hide();
316
+ });
317
+
318
+ /**
319
+ search font icons
320
+ **/
321
+ jQuery(document).on('keyup blur', '#_icon_search', function(){
322
+ if ( jQuery(this).val().toLowerCase() != '' ) {
323
+ jQuery('.um-admin-icons span').hide();
324
+ jQuery('.um-admin-icons span[data-code*="'+jQuery(this).val().toLowerCase()+'"]').show();
325
+ } else {
326
+ jQuery('.um-admin-icons span:hidden').show();
327
+ }
328
+ um_admin_modal_responsive();
329
+ });
330
+
331
+
332
+ /**
333
+ * Retrieve options from a callback function
334
+ */
335
+ jQuery(document).on('blur',"#_custom_dropdown_options_source", function(){
336
+ var me = jQuery(this);
337
+ var _options = jQuery('textarea[id=_options]');
338
+
339
+ if( me.val() != '' ){
340
+ var um_option_callback = me.val();
341
+ jQuery.ajax({
342
+ url: ultimatemember_ajax_url,
343
+ type: 'POST',
344
+ data: {action: 'ultimatemember_populate_dropdown_options', um_option_callback: um_option_callback },
345
+ complete: function(){
346
+
347
+ },
348
+ success: function( response ){
349
+ var arr_opts = [];
350
+
351
+ for (var key in response.data ){
352
+ arr_opts.push( response.data[ key ] );
353
+ }
354
+
355
+ _options.val( arr_opts.join('\n') );
356
+
357
+ }
358
+ });
359
+ }
360
+
361
+ });
362
+
363
+ }); // end jQuery(document).ready
364
+
admin/assets/js/um-admin-scripts.js CHANGED
@@ -1,195 +1,195 @@
1
- jQuery(document).ready(function() {
2
-
3
- /**
4
- clone a field dropdown
5
- **/
6
- jQuery(document).on('click', '.um-admin-clone', function(e){
7
- e.preventDefault();
8
- var container = jQuery(this).parents('.um-admin-field');
9
- var parent = jQuery(this).parents('p').find('.um-admin-field:last-child');
10
- container.find('select').select2('destroy');
11
- var cloned = container.clone();
12
- cloned.find('.um-admin-clone').replaceWith('<a href="#" class="um-admin-clone-remove button um-admin-tipsy-n" title="Remove Field"><i class="um-icon-close" style="margin-right:0!important"></i></a>');
13
- cloned.insertAfter( parent );
14
- cloned.find('select').val('');
15
- jQuery('.um-admin-field select').select2({
16
- allowClear: true,
17
- minimumResultsForSearch: 10
18
- });
19
- return false;
20
- });
21
-
22
- /**
23
- remove a field dropdown
24
- **/
25
- jQuery(document).on('click', '.um-admin-clone-remove', function(e){
26
- e.preventDefault();
27
- var container = jQuery(this).parents('.um-admin-field');
28
- jQuery('.tipsy').remove();
29
- container.remove();
30
- jQuery('.um-admin-field select').select2({
31
- allowClear: true,
32
- minimumResultsForSearch: 10
33
- });
34
- return false;
35
- });
36
-
37
- /**
38
- Ajax link
39
- **/
40
-
41
- jQuery('.um-admin-ajaxlink').click(function(e){
42
- e.preventDefault();
43
- return false;
44
- });
45
-
46
- /**
47
- On/Off Buttons
48
- **/
49
-
50
- jQuery(document).on('click', '.um-admin-yesno span.btn', function(){
51
- if (!jQuery(this).parents('p').hasClass('disabled-on-off')){
52
- if ( jQuery(this).parent().find('input[type=hidden]').val() == 0 ){
53
- update_val = 1;
54
- jQuery(this).animate({'left': '48px'}, 200);
55
- jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change');
56
- } else {
57
- update_val = 0;
58
- jQuery(this).animate({'left': '0'}, 200);
59
- jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change');
60
- }
61
- }
62
- });
63
-
64
- /**
65
- WP Color Picker
66
- **/
67
-
68
- jQuery('.um-admin-colorpicker').wpColorPicker();
69
-
70
- /**
71
- Select Dropdowns
72
- **/
73
-
74
- jQuery(".umaf-selectjs, .ultimate-member_page_um_options .redux-select-item ").select2({
75
- allowClear: false,
76
- minimumResultsForSearch: 10
77
- });
78
-
79
- jQuery('.um-admin-field select').select2({
80
- allowClear: true,
81
- minimumResultsForSearch: 10
82
- });
83
-
84
- /**
85
- Tooltips
86
- **/
87
-
88
- if( typeof tipsy !== 'undefined' ){
89
- jQuery('.um-admin-tipsy-n,#redux-share a').tipsy({gravity: 'n', opacity: 1, live: 'a.live' });
90
- jQuery('.um-admin-tipsy-w').tipsy({gravity: 'w', opacity: 1, live: 'a.live' });
91
- jQuery('.um-admin-tipsy-e').tipsy({gravity: 'e', opacity: 1, live: 'a.live' });
92
- jQuery('.um-admin-tipsy-s').tipsy({gravity: 's', opacity: 1, live: 'a.live' });
93
- }
94
-
95
- /**
96
- Conditional fields
97
- **/
98
-
99
- jQuery(document).on('change', '.um-adm-conditional', function(){
100
-
101
- if ( jQuery(this).data('cond1') ) {
102
- if (jQuery(this).val() == jQuery(this).data('cond1') ){
103
- jQuery('.' + jQuery(this).data('cond1-show') ).show();
104
- jQuery('.' + jQuery(this).data('cond1-hide') ).hide();
105
-
106
- if ( jQuery(this).data('cond1-show') == '_roles' ) {
107
- return false;
108
- }
109
-
110
- } else {
111
- jQuery('.' + jQuery(this).data('cond1-show') ).hide();
112
- jQuery('.' + jQuery(this).data('cond1-hide') ).show();
113
- }
114
- }
115
-
116
- if ( jQuery(this).data('cond2') ) {
117
- if (jQuery(this).val() == jQuery(this).data('cond2') ){
118
- jQuery('.' + jQuery(this).data('cond2-show') ).show();
119
- jQuery('.' + jQuery(this).data('cond2-hide') ).hide();
120
-
121
- if ( jQuery(this).data('cond2-show') == '_roles' ) {
122
- return false;
123
- }
124
-
125
- } else {
126
- jQuery('.' + jQuery(this).data('cond2-show') ).hide();
127
- jQuery('.' + jQuery(this).data('cond2-hide') ).show();
128
- }
129
- }
130
-
131
- if ( jQuery(this).data('cond3') ) {
132
- if (jQuery(this).val() == jQuery(this).data('cond3') ){
133
- jQuery('.' + jQuery(this).data('cond3-show') ).show();
134
- jQuery('.' + jQuery(this).data('cond3-hide') ).hide();
135
- } else {
136
- jQuery('.' + jQuery(this).data('cond3-show') ).hide();
137
- jQuery('.' + jQuery(this).data('cond3-hide') ).show();
138
- }
139
- }
140
-
141
- });jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');});
142
-
143
- /**
144
- Conditional fields for
145
- Radio Group
146
- **/
147
- jQuery('.um-conditional-radio-group input[type=radio]').click(function(){
148
- var holder = jQuery('.um-conditional-radio-group');
149
-
150
- var val = jQuery(this).val();
151
- var cond1 = holder.data('cond1');
152
- var show1 = holder.data('cond1-show');
153
- if ( val == cond1 ) { // condition met
154
- jQuery('.' + show1).show();
155
- } else {
156
- jQuery('.' + show1).hide();
157
- }
158
-
159
- var val2 = jQuery(this).val();
160
- var cond2 = holder.data('cond2');
161
- var show2 = holder.data('cond2-show');
162
- if ( val2 == cond2 ) { // condition met
163
- jQuery('.' + show2).show();
164
- } else {
165
- jQuery('.' + show2).hide();
166
- }
167
-
168
- });jQuery('.um-conditional-radio-group input[type=radio]:checked').each(function(){jQuery(this).trigger('click');});
169
-
170
- /**
171
- Conditional fields for
172
- nav-menu editor options
173
- **/
174
-
175
- jQuery('.um-nav-mode').each(function(){
176
-
177
- if ( jQuery(this).find('input[type=radio]:checked').val() ) {
178
- if ( jQuery(this).find('input[type=radio]:checked').val() == 2 ) {
179
- jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show();
180
- } else {
181
- jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide();
182
- }
183
- }
184
-
185
- });
186
-
187
- jQuery(document).on('click', '.um-nav-mode input[type=radio]', function(){
188
- if ( jQuery(this).val() == 2 ) {
189
- jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show();
190
- } else {
191
- jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide();
192
- }
193
- });
194
-
195
  });
1
+ jQuery(document).ready(function() {
2
+
3
+ /**
4
+ clone a field dropdown
5
+ **/
6
+ jQuery(document).on('click', '.um-admin-clone', function(e){
7
+ e.preventDefault();
8
+ var container = jQuery(this).parents('.um-admin-field');
9
+ var parent = jQuery(this).parents('p').find('.um-admin-field:last-child');
10
+ container.find('select').select2('destroy');
11
+ var cloned = container.clone();
12
+ cloned.find('.um-admin-clone').replaceWith('<a href="#" class="um-admin-clone-remove button um-admin-tipsy-n" title="Remove Field"><i class="um-icon-close" style="margin-right:0!important"></i></a>');
13
+ cloned.insertAfter( parent );
14
+ cloned.find('select').val('');
15
+ jQuery('.um-admin-field select').select2({
16
+ allowClear: true,
17
+ minimumResultsForSearch: 10
18
+ });
19
+ return false;
20
+ });
21
+
22
+ /**
23
+ remove a field dropdown
24
+ **/
25
+ jQuery(document).on('click', '.um-admin-clone-remove', function(e){
26
+ e.preventDefault();
27
+ var container = jQuery(this).parents('.um-admin-field');
28
+ jQuery('.tipsy').remove();
29
+ container.remove();
30
+ jQuery('.um-admin-field select').select2({
31
+ allowClear: true,
32
+ minimumResultsForSearch: 10
33
+ });
34
+ return false;
35
+ });
36
+
37
+ /**
38
+ Ajax link
39
+ **/
40
+
41
+ jQuery('.um-admin-ajaxlink').click(function(e){
42
+ e.preventDefault();
43
+ return false;
44
+ });
45
+
46
+ /**
47
+ On/Off Buttons
48
+ **/
49
+
50
+ jQuery(document).on('click', '.um-admin-yesno span.btn', function(){
51
+ if (!jQuery(this).parents('p').hasClass('disabled-on-off')){
52
+ if ( jQuery(this).parent().find('input[type=hidden]').val() == 0 ){
53
+ update_val = 1;
54
+ jQuery(this).animate({'left': '48px'}, 200);
55
+ jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change');
56
+ } else {
57
+ update_val = 0;
58
+ jQuery(this).animate({'left': '0'}, 200);
59
+ jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change');
60
+ }
61
+ }
62
+ });
63
+
64
+ /**
65
+ WP Color Picker
66
+ **/
67
+
68
+ jQuery('.um-admin-colorpicker').wpColorPicker();
69
+
70
+ /**
71
+ Select Dropdowns
72
+ **/
73
+
74
+ jQuery(".umaf-selectjs, .ultimate-member_page_um_options .redux-select-item ").select2({
75
+ allowClear: false,
76
+ minimumResultsForSearch: 10
77
+ });
78
+
79
+ jQuery('.um-admin-field select').select2({
80
+ allowClear: true,
81
+ minimumResultsForSearch: 10
82
+ });
83
+
84
+ /**
85
+ Tooltips
86
+ **/
87
+
88
+ if( typeof tipsy !== 'undefined' ){
89
+ jQuery('.um-admin-tipsy-n,#redux-share a').tipsy({gravity: 'n', opacity: 1, live: 'a.live' });
90
+ jQuery('.um-admin-tipsy-w').tipsy({gravity: 'w', opacity: 1, live: 'a.live' });
91
+ jQuery('.um-admin-tipsy-e').tipsy({gravity: 'e', opacity: 1, live: 'a.live' });
92
+ jQuery('.um-admin-tipsy-s').tipsy({gravity: 's', opacity: 1, live: 'a.live' });
93
+ }
94
+
95
+ /**
96
+ Conditional fields
97
+ **/
98
+
99
+ jQuery(document).on('change', '.um-adm-conditional', function(){
100
+
101
+ if ( jQuery(this).data('cond1') ) {
102
+ if (jQuery(this).val() == jQuery(this).data('cond1') ){
103
+ jQuery('.' + jQuery(this).data('cond1-show') ).show();
104
+ jQuery('.' + jQuery(this).data('cond1-hide') ).hide();
105
+
106
+ if ( jQuery(this).data('cond1-show') == '_roles' ) {
107
+ return false;
108
+ }
109
+
110
+ } else {
111
+ jQuery('.' + jQuery(this).data('cond1-show') ).hide();
112
+ jQuery('.' + jQuery(this).data('cond1-hide') ).show();
113
+ }
114
+ }
115
+
116
+ if ( jQuery(this).data('cond2') ) {
117
+ if (jQuery(this).val() == jQuery(this).data('cond2') ){
118
+ jQuery('.' + jQuery(this).data('cond2-show') ).show();
119
+ jQuery('.' + jQuery(this).data('cond2-hide') ).hide();
120
+
121
+ if ( jQuery(this).data('cond2-show') == '_roles' ) {
122
+ return false;
123
+ }
124
+
125
+ } else {
126
+ jQuery('.' + jQuery(this).data('cond2-show') ).hide();
127
+ jQuery('.' + jQuery(this).data('cond2-hide') ).show();
128
+ }
129
+ }
130
+
131
+ if ( jQuery(this).data('cond3') ) {
132
+ if (jQuery(this).val() == jQuery(this).data('cond3') ){
133
+ jQuery('.' + jQuery(this).data('cond3-show') ).show();
134
+ jQuery('.' + jQuery(this).data('cond3-hide') ).hide();
135
+ } else {
136
+ jQuery('.' + jQuery(this).data('cond3-show') ).hide();
137
+ jQuery('.' + jQuery(this).data('cond3-hide') ).show();
138
+ }
139
+ }
140
+
141
+ });jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');});
142
+
143
+ /**
144
+ Conditional fields for
145
+ Radio Group
146
+ **/
147
+ jQuery('.um-conditional-radio-group input[type=radio]').click(function(){
148
+ var holder = jQuery('.um-conditional-radio-group');
149
+
150
+ var val = jQuery(this).val();
151
+ var cond1 = holder.data('cond1');
152
+ var show1 = holder.data('cond1-show');
153
+ if ( val == cond1 ) { // condition met
154
+ jQuery('.' + show1).show();
155
+ } else {
156
+ jQuery('.' + show1).hide();
157
+ }
158
+
159
+ var val2 = jQuery(this).val();
160
+ var cond2 = holder.data('cond2');
161
+ var show2 = holder.data('cond2-show');
162
+ if ( val2 == cond2 ) { // condition met
163
+ jQuery('.' + show2).show();
164
+ } else {
165
+ jQuery('.' + show2).hide();
166
+ }
167
+
168
+ });jQuery('.um-conditional-radio-group input[type=radio]:checked').each(function(){jQuery(this).trigger('click');});
169
+
170
+ /**
171
+ Conditional fields for
172
+ nav-menu editor options
173
+ **/
174
+
175
+ jQuery('.um-nav-mode').each(function(){
176
+
177
+ if ( jQuery(this).find('input[type=radio]:checked').val() ) {
178
+ if ( jQuery(this).find('input[type=radio]:checked').val() == 2 ) {
179
+ jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show();
180
+ } else {
181
+ jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide();
182
+ }
183
+ }
184
+
185
+ });
186
+
187
+ jQuery(document).on('click', '.um-nav-mode input[type=radio]', function(){
188
+ if ( jQuery(this).val() == 2 ) {
189
+ jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show();
190
+ } else {
191
+ jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide();
192
+ }
193
+ });
194
+
195
  });
admin/assets/js/um-admin-users.js CHANGED
@@ -1,30 +1,30 @@
1
- jQuery(document).ready(function() {
2
-
3
- function getParameterByName(name, url) {
4
- if (!url) url = window.location.href;
5
- name = name.replace(/[\[\]]/g, "\\$&");
6
- var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
7
- results = regex.exec(url);
8
- if (!results) return null;
9
- if (!results[2]) return '';
10
- return decodeURIComponent(results[2].replace(/\+/g, " "));
11
- }
12
-
13
- jQuery("#_um_synced_role").on("change",function(){
14
- $sync_button = jQuery("#_um_button_sync_update_button");
15
- var url = $sync_button.attr("href");
16
-
17
- if ( ! getParameterByName('wp_role', url) ) {
18
- console.log("wp_role is not set");
19
- }
20
-
21
- var um_role = getParameterByName('um_role', url);
22
- var wp_role = jQuery(this).val();
23
- $sync_button.attr("href", window.location.href+'&um_adm_action=mass_role_sync&um_role='+um_role+'&wp_role='+wp_role );
24
-
25
- });
26
-
27
-
28
-
29
- });
30
-
1
+ jQuery(document).ready(function() {
2
+
3
+ function getParameterByName(name, url) {
4
+ if (!url) url = window.location.href;
5
+ name = name.replace(/[\[\]]/g, "\\$&");
6
+ var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
7
+ results = regex.exec(url);
8
+ if (!results) return null;
9
+ if (!results[2]) return '';
10
+ return decodeURIComponent(results[2].replace(/\+/g, " "));
11
+ }
12
+
13
+ jQuery("#_um_synced_role").on("change",function(){
14
+ $sync_button = jQuery("#_um_button_sync_update_button");
15
+ var url = $sync_button.attr("href");
16
+
17
+ if ( ! getParameterByName('wp_role', url) ) {
18
+ console.log("wp_role is not set");
19
+ }
20
+
21
+ var um_role = getParameterByName('um_role', url);
22
+ var wp_role = jQuery(this).val();
23
+ $sync_button.attr("href", window.location.href+'&um_adm_action=mass_role_sync&um_role='+um_role+'&wp_role='+wp_role );
24
+
25
+ });
26
+
27
+
28
+
29
+ });
30
+
admin/core/lib/ReduxFramework/.jshintrc DELETED
@@ -1,19 +0,0 @@
1
- {
2
- "boss": true,
3
- "immed": true,
4
- "noarg": true,
5
- "onevar": true,
6
-
7
- "browser": true,
8
-
9
- "globals": {
10
- "_": false,
11
- "jQuery": true,
12
- "module": true,
13
- "console": true,
14
- "document": true,
15
- "window": true,
16
- "redux_change": true,
17
- "redux": true
18
- }
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/core/lib/ReduxFramework/CHANGELOG.md DELETED
@@ -1,1857 +0,0 @@
1
- # Redux Framework Changelog
2
-
3
- ## 3.5.8.1
4
- * Fixed: #2652 - load_plugin_textdomain using depreciated argument.
5
-
6
- ## 3.5.8
7
- * Fixed: Customizer preview callback working again.
8
-
9
- ## 3.5.7.12
10
- * Fixed: last_tab argument not working.
11
-
12
- ## 3.5.7.11
13
- * Fixed: #2637 - color picker clear.
14
- * Fixed: #2633.
15
-
16
- ## 3.5.7.10
17
- * Fixed: #2624 - Border field saving/output 0px when no default set. Now accepts no default and outputs no CSS for blank values.
18
- * Fixed: color_rgba no long outputs CSS with empty color values.
19
-
20
- ## 3.5.7.9
21
- * Fixed: #2612 - pseudo classes not appending to multiple selectors in link_color output.
22
-
23
- ## 3.5.7.8
24
- * Modified: The mass data escaping of Redux Core output. Part I.
25
-
26
- ## 3.5.7.7
27
- * Fixed: #2609 - Section not folding correctly with class argument specified.
28
-
29
- ## 3.5.7.6
30
- * Fixed: #2607 - button_set required scalar check for array returned by terms in the data arg. Thanks @Enchiridion.
31
-
32
- ## 3.5.7.5
33
- * Fixed: Fixing more inconsistencies with wp_filesystem dirlist. How about some proper documentation, Otto?
34
-
35
- ## 3.5.7.4
36
- * Fixed: #2582: Added extra check for get_terms to avoid error.
37
-
38
- ## 3.5.7.3
39
- * Fixed Filesystem proxy dirlist triggering file permission errors on empty array.
40
-
41
- ## 3.5.7.2
42
- * Fixed: #2571 - Sorter adding extra disable column on new entries if 'disabled' is lowercase.
43
- * Updated Fields css for dev_mode off.
44
-
45
- ## 3.5.7.1
46
- * Updated: Updated container.tpl version.
47
- * Fixed: #2570 - multi-text field CSS bleeding over into WP.
48
-
49
- ## 3.5.7
50
- * Fixed Customizer customizer_only and customizer section overrides. Also global customizer => false was not working.
51
-
52
- ## 3.5.6.9
53
- * Added Security suggestions posed in #2543 by Julio Potier from SecuPress.
54
-
55
- ## 3.5.6.8
56
- * Fixed: 'dirlist' in filesystem proxy returning permission error on empty dirs.
57
-
58
- ## 3.5.6.7
59
- * Added setOption and getOption to Redux API.
60
- * Added 'hide_save' argument.
61
-
62
- ## 3.5.6.6
63
- * Added: 'readonly' argument for textarea.
64
-
65
- ## 3.5.6.5
66
- * Fixed: #2545 - CSS validator error output misconfigured.
67
- * Fixed: ACE adding escape slashes to quotes via CSS validation, causing improper error message.
68
-
69
- ## 3.5.6.4
70
- * Added: `ajax_save` arg for fields. Setting to false will reload the options panel when the set option has changed.
71
- * Fixed: #2532 - Spinner field arrow spacing off when dev_mode set to false due to missing `!important` CSS suffix.
72
-
73
- ## 3.5.6.3
74
- * Added: `autocomplete` arg to text field. This is FALSE by default.
75
-
76
- ## 3.5.6.2
77
- * Fixed: Color RGBA field missing name_suffix. Will now work in repeater extension.
78
-
79
- ## 3.5.6.1
80
- * Fixed: Index error regarding icon argument.
81
-
82
- ## 3.5.6
83
- * Fixed Customizer WP 4.3 final fixes.
84
-
85
- ## 3.5.5.9
86
- * Fixed #2500 - Conflict with outdated select2 in JW Player plugin.
87
-
88
- ## 3.5.5.8
89
- * Modified: icon_type no longer needed for section icons. Now detects if URLs are provided for images.
90
- * Fixed: Various customizer fixes. HTML in the customizer title.
91
- * Modified: Media URL now is 95% wide.
92
- * Modified: Select2 now 100% width instead of just resolve (that doesn't always work).
93
-
94
- ## 3.5.5.7
95
- * Modified: Field enqueue method to allow for more flexibility.
96
- * Added: Support for Airplane Mode plugin (https://github.com/norcross/airplane-mode) by @norcross. Thanks @chriscct7 #2463
97
-
98
- ## 3.5.5.6
99
- * Fixed: Undefined index in theme-check enhancements. Thanks @winwinwebdesign!
100
- * Removed: SASS compiler & code. Note needed.
101
- * Fixed: Color transparency live-update for Customizer for color, background,
102
- and color gradient fields.
103
-
104
- ## 3.5.5.5
105
- * Fixed: Undefined index when removing a section.
106
-
107
- ## 3.5.5.4
108
- * Fixed: Typography bug onload always saying settings have changed.
109
- * Modified: Added minified customizer JS.
110
-
111
- ## 3.5.5.3
112
- * Fixed: Redux CUSTOMIZER! YEA!
113
-
114
- ## 3.5.5.2
115
- * Fixed: Small echo in Redux API
116
-
117
- ## 3.5.5.1
118
- * Fixed: PHP 5.2 Theme-Check error.
119
-
120
- ## 3.5.5
121
- * Fixed: Date-time fixes with CSS overloading and positioning.
122
-
123
- ## 3.5.4.35
124
- * Added: Lite support for https://wordpress.org/plugins/plugin-dependencies/
125
- * Modified: CDN to be a more bulletproof solution (http://jsdelivr.net).
126
- * Modified: CDN alerts to be more clear, and have proper links.
127
-
128
- ## 3.5.4.34
129
- * Fixed: Bad code in raw field hosing up the entire panel.
130
-
131
- ## 3.5.4.33
132
- * Modified: #2436 - Validation check for any validation type ending in 'not_empty' now recognized.
133
-
134
- ## 3.5.4.32
135
- * Fixed: Undefined index for undeclared variable in Theme-Check checks.
136
- * Fixed: Annoying Redux Theme-Check notices.
137
- * Fixed: How some functions were called.
138
-
139
- ## 3.5.4.31
140
- * Fixed: Theme-Check baby! Everything working as it should with extra theme-check hints to prepare
141
- your theme for submission!
142
- * Fixed: Better .org hinting for theme submission.
143
- * Modified: `forced_dev_mode_off` argument that will ensure dev_mode is ALWAYS off.
144
- PLEASE do not ship with this enabled. We will NOT provide any support for any instance that
145
- has this argument enabled. Disable and test prior to posting on our issue tracker.
146
- * Added: `customizer_only` as a global arg that disables all of Redux except for the customizer, in
147
- preparation for our customizer integration.
148
-
149
- ## 3.5.4.30
150
- * Modified: Dissmissable Redux Admin notices now use the WP 4.2 dismiss JS and Ajax. Pretty.
151
- * Modified: Admin notice code is now it's own isolated class inside core.
152
- * Modified: Use DB for admin notice, not flat-files. Boo.
153
- * Modified: Sample configs not to cause errors if multiple users use the same function name.
154
- * Fixed: CDN internationalization class.
155
- * Modified: Parsedown so as not to throw a shortcode error that didn't actually exist.
156
-
157
- ## 3.5.4.29
158
- * Fixed: #2446 - Non google font choice not saving in certain instances.
159
-
160
- ## 3.5.4.28
161
- * Fixed: Added additional check in redux.js to stop errors with panels containing multiple raw fields.
162
- * Fixed: Hopefully, the issue of settings not saving on first install when using the Redux API.
163
-
164
- ## 3.5.4.27
165
- * Fixed: Set use_cdn argument to true, by default.
166
-
167
- ## 3.5.4.26
168
- * Fixed #2437 - undefined value set to blank line height.
169
-
170
- ## 3.5.4.25
171
- * Fixed: #2429 - Required evaluator 'contains' not working properly with multi_check
172
-
173
- ## 3.5.4.24
174
- * Fixed: #2426 - Section field not indenting.
175
-
176
- ## 3.5.4.23
177
- * Fixed: Divider field not rendering properly.
178
- * Added: `fieldset_class` argument for fields. Thanks @Enchiridion.
179
- * Added: Option to set checkbox label. Thanks @Enchiridion.
180
- * Added: javascript .trigger('change') to switch, spinner, and image_select. Thanks @Enchiridion.
181
-
182
- ## 3.5.4.22
183
- * Modified: Ajax change output of error and notice via hooks.
184
-
185
- ## 3.5.4.21
186
- * Fixed: #2414 - Bad ajax save due to mis-initialized variable.
187
-
188
- ## 3.5.4.20
189
- * Fixed: CSS in metabox fields all wanky.
190
- * Added: 'reload_on_change' arg for fields, to force page reload after setting change.
191
-
192
- ## 3.5.4.19
193
- * Fixed: #2377 - Replaced mysql_gets_server_info with $wpdb.
194
-
195
- ## 3.5.4.18
196
- * Modified: Templates to properly excape values.
197
- * Fixed: Import/Export to properly be full-width and use lazy-load JS.
198
- * Modified: CSS for sections to bound to the section, not all of Redux.
199
-
200
- ## 3.5.4.17
201
- * Fixed: #2368 - Options panel layout offset.
202
- * Fixed: #2369 - validate_callback not working for color, color_gradient, and date.
203
-
204
- ## 3.5.4.16
205
- * Fixed: #2355 - Space missing in switch class arg.
206
- * Fixed: Fixed all fields without leading space in class arg.
207
-
208
- ## 3.5.4.15
209
- * Modified: Restrict table modification to redux-container.
210
- * Fixed: Container overflow for pre's.
211
- * Modified: Redux API to include removeSection and removeField.
212
- * Added: Added before and after hooks to any panel template file.
213
-
214
- ## 3.5.4.14
215
- * Fixed: #2351 - WP_Error check added to admin blast remote get.
216
-
217
- ## 3.5.4.13
218
- * Modified: Moved styling for the divide field into it's own CSS file.
219
- * Modified: All WP Color Pickers to properly save the value before save.
220
- * Added: CSS Styles for the customizer. ;)
221
-
222
- ## 3.5.4.12
223
- * Modified: Panel is MUCH more responsive now.
224
- * Fixed: Small stylings for a few fields.
225
- * Fixed: Added extra qTip class.
226
-
227
- ## 3.5.4.11
228
- * Modified: Ajax save animation. Added fallback for pre 4.2 CSS.
229
- * Fixed: Small issue with Redux info boxes and spacing.
230
- * Fixed: Small bug with the Redux API where divide sections were causing errors.
231
- * Fixed: Small admin blast fix.
232
-
233
- ## 3.5.4.10
234
- * Modified: Qtip and Spectrum vendor libraries restored to local.
235
- * Fixed: Admin notice loading on front end.
236
- * Modified: Callback actions run with do_action_ref_array now.
237
- * Added: show_options_object argument to enable or disable option object.
238
-
239
- ## 3.5.4.9
240
- * Added: Error suppressing to filesystem class to avoid notice errors when site goes down.
241
-
242
- ## 3.5.4.8
243
- * Fixed: Panels not rendering, again
244
- * Added: Vendor support plugin link to CDN fallback message.
245
-
246
- ## 3.5.4.7
247
- * Modified: Moved vendor libraries ACE, select2, qtip, and spectrum to CDN.
248
- * Removed: Local installs of above libraries.
249
-
250
- ## 3.5.4.6
251
- * Fixed: Option panel not rendering due to experimental code.
252
-
253
- ## 3.5.4.5
254
- * Fixed: How sorter works with data
255
- * Modified: How the data arg is stored in Redux.
256
-
257
- ## 3.5.4.4
258
- * Removed: sysinfo.php. No longer needed in lieu of our support URL feature.
259
- * Removed: debug.php. Moved to options_object extension.
260
- * Modified: #2274 - PHP Unit test compatibility. Thanks @daithi-coombes.
261
- * Modified: #2144 - Optional class argument per image. Thanks @paulthecoder.
262
- * Fixed: #2278 - More W3 Total Cache hacks.
263
-
264
- ## 3.5.4.3
265
- * Fixed: #2258 - welcome redirect error with embedding plugin scenarios.
266
- * Fixed: Redux plugin load order when activating plugins.
267
-
268
- ## 3.5.4.2
269
- * Fixed: #2271 - stuck redirect on godaddy (seriously, get a real host, people) servers.
270
-
271
- ## 3.5.4.1
272
- * Fixed: #2216 - Reset section not always working within FF.
273
-
274
- ## 3.5.4
275
- * Modified: update_notice arg only truly shows up if dev_mode is on.
276
-
277
- ## 3.5.3.3
278
- * Added: Tooltip to developer mode badge, for informational purposes.
279
- * Modified: Added css_layout ext to default value filter, to avoid errors.
280
-
281
- ## 3.5.3.2
282
- * Fixed: #2239 - Various extensions didn't support default values for default arg. Filtered out offending extensions.
283
-
284
- ## 3.5.3.1
285
- * Fixed: WP.org ONLY SVN mixup.
286
-
287
- ## 3.5.3
288
- * Fixed: #2228 - Submenu items still visible if permissions not allowed.
289
- * Fixed: Import/Export showing up in customizer.
290
- * Modified: Admin-fresh theme to match new WordPress 4.2
291
- * Modified: Redux widget now has a proper ID. Thanks @corradomatt!
292
- * Modified: Added text-shadow to submenu items to give a stronger "pop"
293
- * Modified: Page_slug now dynamically generated if not specified.
294
-
295
- ## 3.5.2.2
296
- * Modified: Admin blast message pinging server on each load after three day expiration. Possible slow down of the overall panel loading time.
297
-
298
- ## 3.5.2.1
299
- * Fixed: #2221 - Background field media not enqueueing when used with no other media based fields.
300
-
301
- ## 3.5.2
302
- * Fixed: #2214: Bad path for import/export enqueue.
303
- * Release: Wp.org release.
304
-
305
- ## 3.5.1
306
- * Release: Wp.org release.
307
-
308
- ## 3.5.0.7
309
- * Modified: Redux News dashboard widget appears only when dev_mode is true or in a local host environment.
310
-
311
- ## 3.5.0.6
312
- * Fixed #2127 - Elusive icons not working in footer as before.
313
- * Fixed Issue where Status tab not showing extension versions properly.
314
- * Fixed Issue in support URL not passing data correctly.
315
-
316
- ## 3.5.0.5
317
- * Fixed Support URLs now work even if max_input_vars is way low in PHP 5.3+
318
-
319
- ## 3.5.0.4
320
- * Fixed #2197 - Import/export not loading proper for those who have opted to install Wordpress in ways it was never intended.
321
-
322
- ## 3.5.0.3
323
- * Fixed: 'Generate Support URL' feature kicking back error.
324
-
325
- ## 3.5.0.2
326
- * Fixed Sortable checkbox labels not displaying properly.
327
- * Fixed Sortable textbox not displaying default value as placeholder.
328
- * Updated: sample-config with accurate example for both sortable modes.
329
-
330
- ## 3.5.0.1
331
- * Fixed #2181 - Fixed issue with Ajax Save when PHP 5.3 Magic Quotes were disabled.
332
-
333
- ## 3.5.0 OFFICIAL RELEASE
334
- Various fixes and improvements for release.
335
-
336
- ## 3.4.4.9.4
337
- * Fixed: #2181 - Issue with PHP < 5.4 and the Ace Editor field. Oy.
338
-
339
- ## 3.4.4.9.3
340
- * Fixed: #2163 - Undefined error in JS.
341
-
342
- ## 3.4.4.9.2
343
- * Fixed: #2176 - Infinite loop in the customizer for live preview of themes.
344
-
345
- ## 3.4.4.9.1
346
- * Fixed: Support page now works.
347
- * Fixed: Fix for MySQL deprecated functions in php 5.5+.
348
-
349
- ## 3.4.4.9
350
- * Added: Dynamic admin messages (aka Newsflash). Dismissable admin messages announcing breaking Redux news.
351
- Messages will not appear for users when dev_mode is set to `false`. However, messages remain active
352
- on localhosts, so devs may benefit.
353
-
354
- ## 3.4.4.8
355
- * Fixed: #2155 - Fixed import with ajax_save.
356
- * Fixed: Changelog now uses raw field parsedown if present.
357
-
358
- ## 3.4.4.7
359
- * Added: Redux Framework News Widget on the WP Dashboard.
360
-
361
- ## 3.4.4.6
362
- * Fixed: #2156: `label` argument not recognized when using sortable as textbox.
363
-
364
- ## 3.4.4.5
365
- * Fixed: #2140 Another PHP 5.2 issue with ajax_save.
366
- * Modified: Opt groups for select field now working in customizer even if not supported.
367
-
368
- ## 3.4.4.4
369
- * Added: `full_width` arg now makes ANY field full-width. :)
370
-
371
- ## 3.4.4.3
372
- * Fixed: #2133 - Ajax save adding extra backspashes in PHP 5.2 only (They didn't use array map properly).
373
- * Fixed: Customizer wasn't working. Thanks @sgssandhu!
374
-
375
- ## 3.4.4.2
376
- * Fixed: #2125 - Compiler not firing on first save, when using ajax_save.
377
-
378
- ## 3.4.4.1
379
- * Fixed: #2118 - Typography JS error.
380
-
381
- ## 3.4.4
382
- * Fixed: Odd typography bug no one has reported.
383
- * Modified: Sticky header and footer to remain within the redux-main container.
384
-
385
- ## 3.4.3.9
386
- * Fixed #2097 - Slash fix for ajax_save that was previously believed to be an isolated issue. Now applied on all ajax saves.
387
-
388
- ## 3.4.3.8
389
- * Fixed: #2086 - color_rgba improperly functioning when transparent mode set to false.
390
-
391
- ## 3.4.3.7
392
- * Fixed Import/Export bug where it wasn't running.
393
- * Modified Locations of the core extensions directory as well as grunt configuration.
394
-
395
- ## 3.4.3.6
396
- * Fixed #2047 - Validation will now accept 0 as a value to be tested. Thanks @Ninos!
397
- * Added url_slug validation with option flush_permalinks!
398
- * Fixed Issue where the remove of background field was always showing an empty preview box.
399
- * Modified Turned ajax_save on by default for additional bug reports. ;)
400
- * Modified Added some margin above validation errors/warnings so they look better.
401
- * Modified Removed previous element border for any section so it looks better.
402
-
403
- ## 3.4.3.5
404
- * Fixed #2081 - Section field hiding any field after. Weird.
405
-
406
- ## 3.4.3.4
407
- * Added #2047 - `output_transparent` argument to output the blank color feature as 'transparent'.
408
- * Fixed #2080 - missing 'rem' unit and inability to process float values. Thanks to @HELWATANY for the fixes!
409
- * Fixed #2043 - misaligned images in image_select field.
410
-
411
- ## 3.4.3.3
412
- * Added: #2064 - Merge argument for image_select. Thanks @Ninos
413
- * Modified: Import/Export is now an extensiona and decoupled from the core.
414
- * Fixed: Spinner had a nasty number bug, now resolved.
415
- * Fixed: #2076 - RTL bug with old ID's. Thanks @mahfoozroy.
416
- * Fixed: #2072 - Ajax_save editor type bug fix.
417
-
418
- ## 3.4.3.2
419
- * Fixed: #2058 - Incorrect path in include statement for sysinfo.php
420
-
421
- ## 3.4.3.1
422
- * Modified: Templates now have versioning with a warning (dev_mode only) if they are outdated from the core templates.
423
-
424
- ## 3.4.3
425
- * Modified: Ajax saving now has overlay during save to avoid confusion for users.
426
-
427
- ## 3.4.2.9
428
- * Modified: Template files even more for simplicity and ease.
429
- * Modified: Saving. Redux now has the ajax_save argument if you want it!
430
- * Modified: Validation warnings now work.
431
-
432
- ## 3.4.2.8
433
- * Fixed: Changed set_transient function to public to avoid errors in new templating code.
434
-
435
- ## 3.4.2.7
436
- * Modified: Entire panel template is now decoupled from the theme and implemented with many filters for easy customization.
437
-
438
- ## 3.4.2.6
439
- * Fixed: #1478 - Import/export failing when two instances if Redux in use. Thanks, @desaiuditd!
440
- * Fixed: Section field not indenting properly, if at all.
441
-
442
- ## 3.4.2.5
443
- * Added: #2031 - Proper CSS sanitization for compliancy with WP.org.
444
-
445
- ## 3.4.2.4
446
- * Fixed: #2027 - added isset()
447
-
448
- ## 3.4.2.3
449
- * Fixed: #2019 - Reset issues with PHP 5.2. Thanks a bunch, @Webcreations907!
450
-
451
- ## 3.4.2.2
452
- * Fixed: #2023: Issue with custom submenus in menu.
453
-
454
- ## 3.4.2.1
455
- * Fixed: #2025: Issue with select sorting.
456
-
457
- ## 3.4.2
458
- * Update: ACE Editor. Thanks @corradomatt.
459
-
460
- ## 3.4.1
461
- * Fixed: Small filesystem option with bad filter key reference.
462
- * Added: Small return if $section filter returned the section empty.
463
-
464
- ## 3.4.0
465
- * WP.org Release
466
-
467
- ## 3.3.10.7
468
- * Fixed: Reset section hook firing too early.
469
-
470
- ## 3.3.10.6
471
- * Modified: The Redux Repeater field has landed!
472
-
473
- ## 3.3.10.5
474
- * Fixed: #1983 - color_rgba not outputting default values on first load (before save).
475
-
476
- ## 3.3.10.4
477
- * Fixed: Google font enqueues with opt_name to avoid collision with multiple Redux instances.
478
-
479
- ## 3.3.10.3
480
- * Fixed: #1980 - JS errors with sorter & sortable.
481
- * Fixed: color_rgba field outputting incorrect information via output/compiler.
482
-
483
- ## 3.3.10.2
484
- * Fixed: #1979 - Goole fonts not properly loading in typography dropdown.
485
-
486
- ## 3.3.10.1
487
- * Fixed: Undefined index error on MU installs.
488
-
489
- ## 3.3.10
490
- * Removed: SASS compile of field CSS, for the time being. Compiler remains in core.
491
- * Improved: Panel load time, most notable when not in dev_mode. Better for your clients. :)
492
- * Updated: Elusive Font library.
493
- * Fixed: #1961 - color_rgba field defaulting to black on reset.
494
-
495
- ## 3.3.9.35
496
- * Fixed: #1941 - Datepicker opened off screen.
497
- * Fixed: #1756, #1957 - Slider issues. Thanks @FFIN!
498
- * Fixed: #1960 - Duplicate slide when clicking Add. Again, thanks to @FFIN for the fix.
499
- * Added: New filter: apply_filters 'redux/validate/{opt_name}/before_validation'
500
- * Fixed: #1745 - Adding settings submenu to empty submenu now works. Many, many thanks to @No3x for cracking this one!
501
-
502
- ## 3.3.9.34
503
- * Fixed: #1955 - Undefined index rgba in output routine.
504
-
505
- ## 3.3.9.33
506
- * Modified: #1947 - Added display:none to TR tag under info field.
507
-
508
- ## 3.3.9.32
509
- * Replaced: #1951 - Replaced develop branch of scssphp to master branch due to PHP 5.2 incompatibililty.
510
-
511
- ## 3.3.9.31
512
- * Fixed: #1943 - Removed premature DIV close.
513
- * Fixed: #1945 - Media preview not rendering when default ID specified.
514
-
515
- ## 3.3.9.30
516
- * Modified: #1930 - reorder 'psedo-class of link_color field. Thanks @freddessaint
517
- * Modified: SASS compiler outputs to page by default. Faster.
518
- * Fixed: #1927 - Incorrect dir path to spectrum library in color_rgba field corrected.
519
-
520
- ## 3.3.9.29
521
- * Modified: color_rgba field now usees spectrum color picker. minicolors removed. Just...too buggy.
522
-
523
- ## 3.3.9.28
524
- * Modified: #1922 - Filesystem output function.
525
-
526
- ## 3.3.9.27
527
- * Fixed: Added PHP 5.2 support (ugh!) for SASS compiler.
528
-
529
- ## 3.3.9.26
530
- * Fixed: More SASS compiler tweaking.
531
-
532
- ## 3.3.9.25
533
- * Fixed: PHP errors when disabling SASS.
534
-
535
- ## 3.3.9.24
536
- * Fixed #1909 - malformed DIV class HTML in slider field.
537
-
538
- ## 3.3.9.23
539
- * Removed Argument for SASS compile file output location removed. Didn't work, too much trouble.
540
-
541
- ## 3.3.9.22
542
- * Fixed: #1904 - select_image field not displaying saved value on page reload.
543
-
544
- ## 3.3.9.21
545
- * Fixed: SASS compile under multi-instance outputting incorrect CSS file
546
-
547
- ## 3.3.9.20
548
- * Fixed: redux-admin scss images converted to base64
549
-
550
- ## 3.3.9.17
551
- * Added SASS compiler for admin CSS.
552
- * Added SASS to CSS for grunt compiler.
553
-
554
- ## 3.3.9.16
555
- * Added SASS compiler for fields.
556
-
557
- ## 3.3.9.16
558
- * Updated: select2 3.5.2
559
-
560
- ## 3.3.9.15
561
- * Fixed: #1856 - Illegal offset string warnings in framework.php. Thanks @CGlingener.
562
- * Fixed: #1874 - Required operator 'contains' and 'not_contains' not working with select set to multi.
563
- * Fixed: #1829 - Required operator '=' and '!=' not working with select set to multi.
564
-
565
- ## 3.3.9.14
566
- * Fixed: #1870 - Border field doubling up on px in output/compiler.
567
- * Added: `hidden` argument for fields.
568
- * Added: `hidden` argument for sections.
569
-
570
- ## 3.3.9.12
571
- * Fixed: #1868 - Improper panel render when opening expanded, when `open_expanded` set to true.
572
- * Added: `hide_expand` argument, to hide the expand options button.
573
-
574
- ## 3.3.9.11
575
- * Fixed: #1865 - Sortable select not saving proper order.
576
- * Fixed: #1864 - Footer z-index CSS adjusted.
577
-
578
- ## 3.3.9.10
579
- * Fixed: #1848 - Import-export filed buttons not functioning properly.
580
-
581
- ## 3.3.9.9
582
- * Fixed: #1834 - Wordpress data dealing with IDs as array keys not rendering properly.
583
- * Fixed: #1830 - Font lists were added in quotes. Thanks @karimhossenbux.
584
-
585
- ## 3.3.9.8
586
- * Fixed: #1798 - Fixed lazy load JS to only load visible sections. Much more optimized.
587
-
588
- ## 3.3.9.7
589
- * Fixed: #1821 - Exo 2 font not working, issue with typography and escaping.
590
-
591
- ## 3.3.9.6
592
- * Added: #1803 - Optgroup support for select field.
593
-
594
- ## 3.3.9.5
595
- * Added: Decimal increments to spinner.
596
-
597
- ## 3.3.9.4
598
- * Added: Customizer now supports PANEL! Yay 4.0.
599
-
600
- ## 3.3.9.3
601
- * Fixed: #1789 - Customizer now properly working again with WP 4.0. Odd bug.
602
- * Modified: README.md updates as per @cmwwebfx suggestions.
603
-
604
- ## 3.3.9.2
605
- * Fixed: #1782 - Fixed some extra themecheck and customizer issues.
606
-
607
- ## 3.3.9.1
608
- * Fixed: #1782 - Media field not showing files after upload? Hopefully this fixes it.
609
-
610
- ## 3.3.9
611
- * Fixed: #1775 - Call to undefined function is_customize_preview() in pre WP 4.0.
612
- * Fixed: Issue where in some cases tracking still occuring after opt-out.
613
- * Modified: Documentation URL.
614
-
615
- ## 3.3.8.8
616
- * Fixed: #1742 - Sidebar subsections don't always expand.
617
-
618
- ## 3.3.8.7
619
- * Fixed: #1758 - Thanks @echo1consulting!
620
- * Added: 'hidden' to menu_type argument to allow for hidden menus until available.
621
-
622
- ## 3.3.8.6
623
- * Fixed: #1749 - Remove font-wight and font-style from css output when not in use.
624
-
625
- ## 3.3.8.5
626
- * Modified: Added the "redux/options/{$this->args['opt_name']}/compiler/advanced" hook for more advanced compiling.
627
- * Added: Suggestions as per #1709. Thanks @echo1consulting.
628
-
629
- ## 3.3.8.4
630
- * Modified: Removed a cURL instance from the core and fixed the developer ad resizing.
631
- * Fixed: PHP 5.2 issues. *sigh*
632
-
633
- ## 3.3.8.3
634
- * Added: #1593 - Great pull request by @JonasDoebertin. Now you can enqueue dynamic output to the login screen or admin backend.
635
-
636
- ## 3.3.8.2
637
- * Fixed: Customizer wasn't saving at all! That's been like 4 months. No one's reported it. Hmm.
638
- * Fixed: #1702 - Customizer only fields were being erased on panel save.
639
-
640
- ## 3.3.8.1
641
- * Fixed: Various Theme-Check errors with languages.
642
- * Added: Theme-Check class to help devs know what is what.
643
- * Fixed: The way we include files from include_once to require_once everywhere.
644
- * Modified: Language files to reflect new strings.
645
- * Modified: Formatted a bunch of old class files.
646
- * Added: Notice on the updates for non-devs to use the new dev_mode disabler plugin and notify their developer. ;)
647
-
648
- ## 3.3.8
649
- * Modified: Updated potomo, thanks @shivapoudel.
650
- * Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel.
651
-
652
- ## 3.3.7.11
653
- * Modified: #1685 - Specifying no default argument for image_select caused errors on reset.
654
-
655
- ## 3.3.7.10
656
- * Fixed: #1667 - Slides Upload button causing JS error.
657
-
658
- ## 3.3.7.9
659
- * Fixed: #1670 - Fix for Theme Check -> `add_setting() method needs to have a sanitization callback function passed.`
660
-
661
- ## 3.3.7.8
662
- * Fixed: #1661 - Fix for undefined index in some versions of PHP. Thanks @gianbalex!
663
- * Modified: #1658 - Improvements from @shivapoudel, including:
664
- * Removed makepot and used grunt-wp-i18n instead.
665
- * Added a jshintrc file
666
- * Added a `grunt addtextdomain` to correct any bad textdomains in the core.
667
- * Updated .gitignore for better readability
668
- * Updates to a few other files including package.json.
669
- * Updated language files.
670
- * Update codestyles/.editorconfig to reflect the project's standards.
671
-
672
- ## 3.3.7.7
673
- * Modified: #1653 - Better admin bar with external links: Admin bar menu priority, icon, and external links. Thanks @shivapoudel!
674
-
675
- ## 3.3.7.6
676
- * Added: #1651 - `library_filter` argument. Allows specification of what files to display in the media library.
677
- * Modified: #1651 - `mode` argument accepts either file type or mime type (but not both).
678
-
679
- ## 3.3.7.5
680
- * Fixed: #1650 - Toogle error with responsive CSS.
681
-
682
- ## 3.3.7.4
683
- * Fixed: #1643 - Slight border issue (2px) on sticky footer.
684
-
685
- ## 3.3.7.3
686
- * Fixed: #1642 - Added `font_family_clear` arg, enabling the clear option for font-family.
687
- * Fixed: #1638 - Spacing field not outputting when units values attached to default values.
688
- * Modified #1644 - `import_icon` argument now accepts wordpress dashicons
689
-
690
- ## 3.3.7.2
691
- * Fixed: #1634 - Double border for sections field. Thanks @AlexandruDoda
692
- * Modified: Changelog location to now Changelog.md.
693
-
694
- ## 3.3.7.1
695
- * Fixed: #1632 - Sortable with no defaults set revert to false (instead of options values).
696
- * Fixed: Labels for sortable in text mode updated to match framework.
697
-
698
- ## 3.3.7
699
- * Added: #1586 - Class-level declaration for callbacks and validation. Thanks @echo1consulting.
700
- * Modified: Typography field now fully dynamic.
701
- * Modified: No longer require a google_api_key for the typography module. :)
702
- * Fixed: FTP credentials screen giving a "undefined submit_button function". Resolved.
703
- * Modified: #1628 - Spacing and dimensions now only output 0 if the entry is a 0, not empty.
704
- Thanks @Webcreations907
705
- * Modified: CSS for menu items when active (no hover).
706
- * Added: Visual feedback to left menu if active.
707
-
708
- ## 3.3.6.9
709
- * Fixed: #1623 - Registered older noUISlider JS under a new name to avoid conflicts.
710
- * Modified: #1622 - Removed googlefonts.js dependency.
711
-
712
- ## 3.3.6.8
713
- * Fixed: #1600 - ACE Editor bombing in PHP 5.2 environments.
714
-
715
- ## 3.3.6.7
716
- * Fixed: #1591 - Erroneous outputting of font-weight and font-style when no font-family selected.
717
- * Updated: #1569 - Improved submenu highlighting.
718
- * Added: #1487 - Added `get_default_value` function into the framework.php
719
-
720
- ## 3.3.6.6
721
- * Fixed: Framework URI errors when using child themes. Some restructuring.
722
-
723
- ## 3.3.6.5
724
- * Fixed: Framework URI errors when embedded in theme with Windows.
725
-
726
- ## 3.3.6.4
727
- * Added: image_size as an option for the data argument. Thanks @Gyroscopic!
728
-
729
- ## 3.3.6.3
730
- * Modified: How Redux paths are run. Should cover all use cases now. Child themes can also embed
731
- Redux properly now. Thanks @cfoellmann for the suggestions. Fix for issue #1566.
732
-
733
- ## 3.3.6.2
734
- * Modified: How we declare the uploads directory and URL. Using core WP functions now.
735
-
736
- ## 3.3.6.1
737
- * Modified: Now if a section is empty, but has subsections, that section will be "skipped" when
738
- clicked and the first subsection will then be shown.
739
-
740
- ## 3.3.6
741
- * Modified: Language files.
742
- * Fixed: #1560 - IE8 RGBA fallack
743
-
744
- ## 3.3.5.12
745
- * Fixed: #1543 - Hint icon not changing when set in args.
746
-
747
- ## 3.3.5.11
748
- * Fixed: #1537 - Media field not accepting images with mode set to false.
749
-
750
- ## 3.3.5.10
751
- * Fixed: #1529 - ACE Editor conflict with Visual Composer.
752
- * Added: #1530 - Added argument to specify admin bar icon, `admin_bar_icon`. Thanks Ninos!
753
- * Fixed: #1532 - Media field not accepting any mime type when `'mode' => false`.
754
-
755
- ## 3.3.5.9
756
- * Fixed: #1520 - Checkbox field not displaying Wordpress data when using data argument.
757
-
758
- ## 3.3.5.8
759
- * Fixed: #1516 - Invalid index and foreach when using compiler and async_typography.
760
-
761
- ## 3.3.5.7
762
- * Fixed: #1509 - Sorter adding unnecessary bits on some items.
763
- * Fixed: #1514 - Customizer and multisite not getting on properly.
764
- * Fixed: #1512 - Slides 'Upload' button not showing or saving selected image.
765
-
766
- ## 3.3.5.6
767
- * Fixed: Checkboxes with required were working in reverse.
768
-
769
- ## 3.3.5.5
770
- * Fixed: ASync Typography now works! No more flashing fonts.
771
-
772
- ## 3.3.5.4
773
- * Fixed: #1489 - Color picker UI lining up improperly.
774
- * Fixed: #1497 - dev_mode spinner issue.
775
-
776
- ## 3.3.5.3
777
- * Fixed: Spelling error in tracking dialog.
778
- * Modified: Updated ace_editor.
779
- * Modified: Many MANY fields for the group field.
780
- * Fixed: Some CSS bugs.
781
-
782
- ## 3.3.5.2
783
- * Fixed: #1481 - Custom fonts loading in google font CSS.
784
- * Fixed: #1485 - Customizer 'invalid argument' error. Thanks @rnlmedia.
785
-
786
- ## 3.3.5.1
787
- * Fixed: #1472 - font style not displaying saved valie with no font-family argument set.
788
- * Fixed: #1471 - raw field and required not playing nice together.
789
-
790
- ## 3.3.5
791
- * Added: An annoying notice at the top so our devs don't ship with dev_mode on. ;)
792
-
793
- ## 3.3.4.9
794
- * Fixed: #1462 - Google fonts not loading in font drop down.
795
-
796
- ## 3.3.4.8
797
- * Fixed: More WP FileSystem tanking. Did PHP fallback before FTP. Works 99.9% of the time without credentials.
798
-
799
- ## 3.3.4.7
800
- * Fixed: Incorrect folder CHMOD in filesystem class.
801
-
802
- ## 3.3.4.6
803
- * Fixed: #1454 - Chmod permissions for redux folder.
804
-
805
- ## 3.3.4.5
806
- * Fixed: #1451 - Googlefonts not loading due to failing copy function.
807
-
808
- ## 3.3.4.4
809
- * Fixed: #1450 - Saves witch values with no `on` or `off` args make the core unhappy.
810
-
811
- ## 3.3.4.3
812
- * Fixed: #1444, again, due to filesystem growing pains.
813
- * Fixed: #1449 - Restoring `options` argument over a lousy attempt to fix placeholder.
814
-
815
- ## 3.3.4.2
816
- * Fixed: More file permission issues.
817
-
818
- ## 3.3.4.1
819
- * Fixed: Font debug was left from last commit. Sorry all.
820
-
821
- ## 3.3.3.8
822
- * Fixed: Issues with file writing. Basically many users don't install WordPress with all the permissions correct.
823
- So... Had to move it back to /uploads/. Sorry Otto, that's just how it is.
824
- * Fixed: #1444 - output of typography all_styles when font_style UI was hidden.
825
-
826
- ## 3.3.3.7
827
- * Fixed: #1440 - flaw in new cleanFilePath logic.
828
-
829
- ## 3.3.3.6
830
- * Fixed: #1432 - Theme check failing when double-slashes existed in get_template_directory() return.
831
- * Removed: curlRead from helper class.
832
-
833
- ## 3.3.3.5
834
- * Fixed: #1426 - menu_name not appearing on front end admin bar.
835
- * Added: #1427 - button_set added to customizer UI. Thanks @wpexplorer.
836
-
837
- ## 3.3.3.4
838
- * Fixed: #1429 - ACE Editor erroring with no default value set.
839
- * Fixed: wp_filesystem now initialized with credentials in an effort to combat the tmp file issue.
840
-
841
- ## 3.3.3.3
842
- * Modified: Code purification.
843
-
844
- ## 3.3.3.2
845
- * Modified: How section tabs work. Isolated within the redux-container class.
846
-
847
- ## 3.3.3
848
- * Modified: #1412 - Redesigned text label, placeholder fix.
849
-
850
- ## 3.3.2.10
851
- * Fixed: #1408 & #1357 - Typography subsets losing value after multiple saves
852
- on other panels.
853
-
854
- ## 3.3.2.9
855
- * Fixed: #1403 - unit value no longer prints after empty typography values
856
- * Modified: Typography: Backup font no longer appends to `font-family` variable.
857
- Please use the `backup-font` variable to specify backup fonts. This
858
- does not apply to output/compiler strings.
859
-
860
- ## 3.3.2.8
861
- * Fixed: #1403 - Backup font not appearing in font-family variable.
862
-
863
- ## 3.3.2.7
864
- * Modified: Customizer now supports section and field `permissions` argument.
865
- * Fixed: #1399 - Customizer respects `page_permissions` argument.
866
-
867
- ## 3.3.2.6
868
- * Fixed: #1400 - output/compiler string incomplete using multiple selectors.
869
-
870
- ## 3.3.2.5
871
- * Fixed: #1396 - Custom fonts cutting off multiple families in selector, after save.
872
- * Fixed: Typography attempting to queue up non google fonts on backend.
873
- * Added: #1395 - Display of child theme status in sysinfo, thanks @SiR-DanieL.
874
-
875
- ## 3.3.2.4
876
- * Fixed: #1387 - Page jump when clicking "Options Object". Thanks @rrikesh.
877
- * Added: #1392 - Filters to change the following localized strings:
878
- redux/{opt_name}/localize/reset
879
- redux/{opt_name}/localize/reset_all
880
- redux/{opt_name}/localize/save_pending
881
- redux/{opt_name}/localize/preset
882
-
883
- ## 3.3.2.3
884
- * Fixed: #1376 - checkbox.min.js missing.
885
-
886
- ## 3.3.2.2
887
- * Fixed: Static variable changes for instances and basic comment cleanup
888
-
889
- ## 3.3.2.1
890
- * Fixed: #1361 - Raw field not hiding with required.
891
- * Fixed: Datepicker not formatting properly. Still needs some work.
892
-
893
- ## 3.3.1.9
894
- * Fixed: #1357 - Preview not rendering font on page load.
895
-
896
- ## 3.3.1.8
897
- * Fixed: #1356 - Color fields and transparency not syncing due to new JS.
898
-
899
- ## 3.3.1.7
900
- * Fixed: #1354 - Add class check for W3_ObjectCache.
901
-
902
- ## 3.3.1.6
903
- * Fixed: #1341 - JS not initializing properly in import_export.
904
-
905
- ## 3.3.1.5
906
- * Fixed: #1339 - Typography would lose Font Weight and Style. value was
907
- named val in the HTML, so it would be destroyed on the next save
908
- if not initialized.
909
-
910
- ## 3.3.1.4
911
- * Fixed: #1226 - W3 Total Cache was affecting validation and compiler hooks.
912
- * Fixed: Menu errors weren't showing properly for non-subsectioned items.
913
-
914
- ## 3.3.1.3
915
- * Fixed: #1341 - Import/Export buttons not functioning. Also fixed sortable somehow.
916
-
917
- ## 3.3.1.2
918
- * Fixed: Slides not initializing with the last fix.
919
-
920
- ## 3.3.1.1
921
- * Fixed: Slides field was not properly initialized for the media elements. Fixed.
922
-
923
- ## 3.3.0.6
924
- * Fixed: #1337 - `redux` JS dependency loading issue. Many thanks @tpaksu
925
-
926
- ## 3.3.0.5
927
- * Modified: Drastically changed the way JavaScript is used in the panel. Forced as-needed
928
- initialization of fields. Thus reducing dramatically the overall load time of
929
- the panel. The effects have been seen up to 300% speed improvement. The only
930
- time a field will be initialized is if it's visible, thus reducing the processing
931
- needed in DOM overall.
932
-
933
- ## 3.3.0.4
934
- * Fixed: #1336 - fixed default font in preview.
935
-
936
- ## 3.3.0.3
937
- * Fixed: #1334 - Typography not un-saving italics.
938
-
939
- ## 3.3.0.2
940
- * Added: #1332 - New validation: numeric_not_empty.
941
-
942
- ## 3.3.0.1
943
- * Fixed: #1330 - Required not working on all fields.
944
-
945
- ## 3.3.0
946
- * Added: #1329 - `'preview' = array('always_display' => true)` argument to typography, to determine if preview field show always be shown.
947
-
948
- ## 3.2.9.38
949
- * Fixed: #1322 - Sections not folding with required argument.
950
- * Modified: Portions of core javascript rewritten into object code.
951
-
952
- ## 3.2.9.37
953
- * Fixed: #1270 - Editor field compiler hook not firing in visual mode.
954
-
955
- ## 3.2.9.36
956
- * Added: `hide_reset` argument, to hide the Reset All and Reset Section buttons.
957
-
958
- ## 3.2.9.35
959
- * Fixed: select2 dependency in select_image, and other fields.
960
-
961
- ## 3.2.9.34
962
- * Fixed: Filter out `@eaDir` directories in extensions folder.
963
- * Added: `content_title` argument to slides field. Thanks @psaikali!
964
-
965
- ## 3.2.9.33
966
- * Fixed: Fixed the image_select presets to work again. Also now will function even if import/export is disabled.
967
-
968
- ## 3.2.9.32
969
- * Fixed: Minor tweaks for metabox update.
970
-
971
- ## 3.2.9.31
972
- * Fixed: #1297 - Missing space in image_select class.
973
- * Fixed: Slider field tweaked for metaboxes.
974
-
975
- ## 3.2.9.30
976
- * Fixed: #1291 - Change of font-family would not trigger preview, or show in open preview.
977
-
978
- ## 3.2.9.29
979
- * Fixed: #1289 - Typography not retaining size/height/spacing/word/letter spacing settings.
980
-
981
- ## 3.2.9.28
982
- * Fixed: #1288 - Background color-picker dependency missing. Thanks @farhanwazir.
983
-
984
- ## 3.2.9.27
985
- * Fixed: Search extension failed do to dependency issue from the core.
986
-
987
- ## 3.2.9.26
988
- * Fixed: #1281 - color field output/compiler outputting incorrect selector when only one array present.
989
-
990
- ## 3.2.9.25
991
- * Fixed: Update check only appears once if multiple instances of Redux are loaded in the same wordpress instance.
992
-
993
- ## 3.2.9.24
994
- * Fixed: Changing font-family in typography didn't trigger 'save changes' notification.
995
- * Fixed: More typography: Back up font appearing in font-family when opening selector.
996
- * Fixed: Typography: undefined message when NOT using google fonts. Thanks @farhanwazir
997
-
998
- ## 3.2.9.23
999
- * Added: `customizer_only` argument for fields & sections, contributed by @andreilupu.
1000
-
1001
- ## 3.2.9.22
1002
- * Fixed: Typography font backup not in sync with font-family.
1003
- * Fixed: Typography not saving font-family after switching back and forth between standard
1004
- and google fonts.
1005
- * Fixed: Background field selects not properly aligned.
1006
-
1007
- ## 3.2.9.21
1008
- * Added: select2 args for spacing field.
1009
- * Modified: All field javascript rewritten using jQuery objects (versus standard function).
1010
- Prepping for another crack at group field.
1011
-
1012
- ## 3.2.9.20
1013
- * Added: select2 args for the following fields: typography, background, border, dimensions and slider.
1014
- * Fixed: Removed select field dependency from background field.
1015
-
1016
- ## 3.2.9.19
1017
- * Fixed: #1264 - Color-picker/transparent checkbox functionality.
1018
- * Fixed: Typography fine-tuning.
1019
-
1020
- ## 3.2.9.18
1021
- * Modified: Typography field rewritten to fill out font-family field dynamically, versus on page load.
1022
- * Fixed: All typography select fields render as select2.
1023
-
1024
- ## 3.2.9.17
1025
- * Fixed: Switching between transparency on and off now restores the last chosen color in
1026
- all color fields.
1027
-
1028
- ## 3.2.9.16
1029
- * Fixed: Redux uploads dir should NOT be ~/wp-content/uploads, but just wp-content.
1030
- As per Otto.
1031
- * Fixed: Navigation no longer has that annoying outline around the links. Yuk.
1032
-
1033
- ## 3.2.9.15
1034
- * Fixed: #1218 - Select2 multi select not accepting any keyboard input.
1035
-
1036
- ## 3.2.9.14
1037
- * Fixed: #1228 - CSS fixes
1038
-
1039
- ## 3.2.9.13
1040
- * Fixed: #1255 - button_set multi field not saving when all buttons not selected.
1041
-
1042
- ## 3.2.9.12
1043
- * Fixed: #1254 - Border field with 0px not outputting properly.
1044
- * Fixed: #1250 - Typography preview font-size not set in preview.
1045
- * Fixed: #1247 - Spacing field not outputting properly in `absolute` mode.
1046
- * Modified: Typography previewing hidden until font inputs are changed.
1047
-
1048
- ## 3.2.9.11
1049
- * Fixed: Vendor js not loading properly when dev_mode = true
1050
- * Fixed: Border field not outputting properly.
1051
-
1052
- ## 3.2.9.10
1053
- * Modified: Centralized import/export code in anticipation of new builder features.
1054
- * Fixed: Removed rogue echo statement.
1055
-
1056
- ## 3.2.9.9
1057
- * Modified: select2 loads only when a field requires it.
1058
-
1059
- ## 3.2.9.8
1060
- * Modified: More code to load JS on demand for fields require it.
1061
-
1062
- ## 3.2.9.7
1063
- * Modified: Field specific JS only loads with active field.
1064
- * Fixed: Hints stopped working due to classname change.
1065
-
1066
- ## 3.2.9.6
1067
- * Fixed: Permissions argument on section array not filtering out raw field.
1068
-
1069
- ## 3.2.9.5
1070
- * Fixed: Too many CSS tweaks to list, due to last build.
1071
- * Fixed: Sortable and Sorter fields now sort without page scroll when page size is
1072
- under 782px.
1073
- * Fixed: Hint icon defaults to left position when screen size is under 782px.
1074
- * Fixed: `permissions` argument for fields and sections erasing saved field data. See #1231
1075
-
1076
- ## 3.2.9.4
1077
- * Modified: Woohoo! Nearly fully responsive. Yanked out all SMOF and NHP field customizations.
1078
- Lots of little fixes on all browser screens. This will also greatly benefit Metaboxes
1079
- and other areas of Redux.
1080
- * Fixed: In dev_mode panel CSS was being loaded 2x.
1081
-
1082
- ## 3.2.9.3
1083
- * Fixed: Typography color picker bleeding under other elements. #1225
1084
- * Fixed: Hint icon_color index error from builder. #1222
1085
-
1086
- ## 3.2.9.2
1087
- * Fixed: Tracking. It was... odd. Also started our support hooks, UI to come.
1088
- * Fixed: Now import/export supports multiple instances. I can't believe this has been this way for so long.
1089
-
1090
- ## 3.2.9.1
1091
- * Fixed: Spacing field not outputting proper CSS when `mode` was set to absolute, and `all` was set to true.
1092
- * Fixed: CSS fix for typography. Color picker would interfere with save/reset bar.
1093
-
1094
- ## 3.2.8.21
1095
- * Added: Network admin support! Set argument 'database' to network and data will be saved site-wide.
1096
- Also two new arguments: network_admin & network_sites for where to show the panel.
1097
-
1098
- ## 3.2.8.20
1099
- * Fixed: Redux now ignores any directories that begin with `.` in the extension folder. See #1213.
1100
-
1101
- ## 3.2.8.19
1102
- * Fixed: Redux not saving when validating uploads.
1103
- * Modified: Dimension field default now accepts either `units` or `unit`.
1104
-
1105
- ## 3.2.8.18
1106
- * Fixed: Border field output/compiler formatting. Removed 'inherit' in place of default values. See #1208.
1107
- * Fixed: Trim() warning in framework.php when saving. See #1209, #1201.
1108
-
1109
- ## 3.2.8.17
1110
- * Fixed: Typography not outputting all styles when `all_styles` set to true.
1111
-
1112
- ## 3.2.8.16
1113
- * Added: `output` argument for `color` and `color_rgba` fields accepts key/pairs for different modes. Example:
1114
- ```
1115
- 'output' => array('color' => '.site-title, .site-header', 'background-color' => '.site-background')
1116
- ```
1117
-
1118
- ## 3.2.8.15
1119
- * Added: Customizer hook that can be used to simulate the customizer for live preview in the customizer.
1120
- `redux/customizer/live_preview`
1121
-
1122
- ## 3.2.8.14
1123
- * Fixed: 'Cannot send header' issues with typography.
1124
- * Modified: Google CSS moved into HEAD via WP enqueue.
1125
-
1126
- ## 3.2.8.13
1127
- * Added: `class` argument to the Redux Arguments, section array, and metabox array. If set, a class will be
1128
- appended to whichever level is used. This allows further customization for our users.
1129
-
1130
- ## 3.2.8.12
1131
- * Fixed: Small fix for validation if subsection parent is free of errors, remove the red highlight when
1132
- not expanded.
1133
- * Fixed: Small CSS classes for flashing fonts where web-font-loader.
1134
- * Fixed: ASync Flash on fonts. FINALLY. What a pain.
1135
- * Modified: Now do a trim on all fields before validating. No need to alert because of a space...
1136
-
1137
- ## 3.2.8.11
1138
- * Modified: Typography field CSS completely rewritten. All thanks to @eplanetdesign!
1139
- * Modified: Validation now works in metaboxes as well as updates numbers as changes occur. Validation for
1140
- subsections is SO hot now.
1141
- * Modified: Various CSS fixes and improvements.
1142
- * Fixed: 3+ JavaScript errors found in the background field. Now works flawlessly.
1143
- * Added: disable_save_warn flags to the arguments to disable the "you should save" slidedown.
1144
-
1145
- ## 3.2.8.10
1146
- * Fixed: PHP warnings in background field. #1173. Thanks, @abossola.
1147
- * Fixed: CSS validation not respecting child selector symbol. #1162
1148
-
1149
- ## 3.2.8.9
1150
- * Modified: Turned of mod_rewrite check.
1151
-
1152
- ## 3.2.8.8
1153
- * Modified: How errors are displayed, no longer dependent on the ID, now proper classes.
1154
- * Fixed: Extra check for typography bug.
1155
- * Fixed: Error css alignment issue with subsections.
1156
- * Modified: Error notice stays until all errors are gone. Also updates it's number as errors fixed!
1157
-
1158
- ## 3.2.8.7
1159
- * Modified: Moved google font files to proprietary folder in upload to help with permission issues.
1160
-
1161
- ## 3.2.8.6
1162
- * Fixed: javascript error in typography field.
1163
-
1164
- ## 3.2.8.5
1165
- * Fixed: Added a title to the google fonts stylesheet to fix validation errors.
1166
-
1167
- ## 3.2.8.4
1168
- * Fixed: One more slides field error check, and an extra JS goodie for an extension.
1169
-
1170
- ## 3.2.8.3
1171
- * Fixed: Leftover debug code messing up slides field.
1172
-
1173
- ## 3.2.8.2
1174
- * Fixed: More reliable saved action hook.
1175
- * Added: Actions hooks for errors and warnings.
1176
-
1177
- ## 3.2.8.1
1178
- * Fixed: Removed erroneous debug output in link_color field.
1179
-
1180
- ## 3.2.7.3
1181
- * Added: is_empty / empty / !isset AND not_empty / !empty / isset as required operations
1182
-
1183
- ## 3.2.7.2
1184
- * Fixed: Reset defaults error.
1185
- * Added: `show` argument to turn on and off input boxes in slider.
1186
-
1187
- ## 3.2.7.1
1188
- * Fixed: Required now works with muti-check fields and button set when set to multi.
1189
-
1190
- ## 3.2.7
1191
- * Fixed: Import works again. A single line was missed...
1192
-
1193
- ## 3.2.6.2
1194
- * Fixed: link_color field not outputting CSS properly via compiler or output. Thanks @vertigo7x
1195
- * Fixed: Sorter field CSS. Buttons were all smushed together.
1196
-
1197
- ## 3.2.6.1
1198
- * Fixed: 'undefined' error in typography.js. Thanks @ksere.
1199
-
1200
- ## 3.2.6
1201
- * Fixed: Another stray undefined index. Oy.
1202
-
1203
- ## 3.2.5.1
1204
- * Added: `open_expanded` argument to start the panel completely expanded initially.
1205
-
1206
- ## 3.2.5
1207
- * Fixed: Various bad mistakes. Oy.
1208
-
1209
- ## 3.2.4
1210
- * Fixed: Slight typography speed improvement. Less HTML hopefully faster page loads.
1211
- * Fixed: Unload error on first load if the typography defaults are not set.
1212
-
1213
- ## 3.2.3.5
1214
- * Modified: Moved update check functions to class file and out of the core.
1215
- * Fixed: Errors pertaining to mod_rewrite check.
1216
-
1217
- ## 3.2.3.4
1218
- * Fixed: All those headers already set errors.
1219
-
1220
- ## 3.2.3.3
1221
- * Added: $changed_values variable to save hooks denoting the old values on a save.
1222
- * Added: Pointers to Extensions on load.
1223
- * Modified: CSS Output for the background field.
1224
-
1225
- ## 3.2.3.2
1226
- * Fixed: Validation error messages not appearing on save.
1227
- * Modified: Speed boost on validation types.
1228
- * Added: Apache mod_rewrite check. This should solve many issues we've been seeing regarding mod_rewrite noe being enabled.
1229
-
1230
- ## 3.2.3.1
1231
- * Fixed: Sortable field not saving properly.
1232
- * Fixed: Erroneous data in admin.less
1233
- * Updated: sample-config.php. Sortable checkbox field example now uses true/false instead of text
1234
- meant for textbox example.
1235
-
1236
- ## 3.2.3
1237
- * Fixed: Responsive issues with spacing and dimension fields.
1238
-
1239
- ## 3.2.2.16
1240
- * Fixed: Style conflicts with WP 3.9. Added register filter to fields via id.
1241
-
1242
- ## 3.2.2.15
1243
- * Fixed: Metaboxes issues.
1244
-
1245
- ## 3.2.2.14
1246
- * Modified: Some admin panel stylings. Now perfect with mobile hover. Also fixed an issue
1247
- with the slidedown width for sections. No more 2 empty pixels.
1248
-
1249
- ## 3.2.2.13
1250
- * Added: Tick mark if section has sub sections. Hidden when subsections expanded.
1251
-
1252
- ## 3.2.2.12
1253
- * Fixed: Compiler hook in the customizer now passes the CSS.
1254
-
1255
- ## 3.2.2.11
1256
- * Fixed: Compiler hook now properly fires in the customizer.
1257
-
1258
- ## 3.2.2.10
1259
- * Fixed: Validation error with headers already being set.
1260
-
1261
- ## 3.2.2.9
1262
- * Fixed: Added mode for width/height to override dimensions css output.
1263
-
1264
- ## 3.2.2.8
1265
- * Fixed: Restoring lost formatting from multiple merges.
1266
-
1267
- ## 3.2.2.7
1268
- * Fixed: New sorter default values get set properly now. ;)
1269
-
1270
- ## 3.2.2.6
1271
- * Added: `data` and `args` can now be set to sorter! Just make sure to have it be a key based on what
1272
- you want it to display as. IE: `array('Main'=>'sidebars')`
1273
-
1274
- ## 3.2.2.5
1275
- * Added: Prevent Redux from firing on AJAX heartbeat, but added hook for it 'redux/ajax/heartbeat'.
1276
- * Fixed: Removed erroneous 's' character from HTML.
1277
-
1278
- ## 3.2.2.4
1279
- * Added: Check to make sure a field isn't empty after the filter. If it is empty, skip over it.
1280
-
1281
- ## 3.2.2.3
1282
- * Added: Subsections now show icon if they have it. Show text only (without indent) if they do not.
1283
-
1284
- ## 3.2.2.2
1285
- * Added: Set a section or field argument of `'panel' => false` to skip over that field or panel and
1286
- hide it. It will still be registered with defaults saved, but not display. This can be useful
1287
- for things like the customizer.
1288
-
1289
- ## 3.2.2.1
1290
- * Added: SUBSECTIONS! Just add `'subsection' => true` to any section that isn't a divide/callback and
1291
- isn't the first section in your panel. ;)
1292
-
1293
- ## 3.2.1.2
1294
- * Fixed: Info field didn't intend within section.
1295
-
1296
- ## 3.2.1.1
1297
- * Fixed: Compiler hook wasn't running.
1298
-
1299
-
1300
- ## 3.1.9.44
1301
- * Fixed: Small bug in image_select javascript.
1302
-
1303
- ## 3.1.9.43
1304
- * Added: Import hook, just because we can. :)
1305
-
1306
- ## 3.1.9.42
1307
- * Fixed: Customizer now TRULY outputting CSS if output_tag is set to false.
1308
-
1309
- ## 3.1.9.41
1310
- * Fixed: Reset section, etc. Discovered an odd WordPress thing.
1311
-
1312
- ## 3.1.9.40
1313
- * Fixed: Image_select size override.
1314
- * Fixed: Customizer save not firing the compiler hook.
1315
- * Fixed: Customizer not outputting CSS if output_tag is set to false.
1316
- * Fixed: Small empty variable check. Undefined index in the defaults generating function.
1317
-
1318
- ## 3.1.9.39
1319
- * Fixed: WP 3.9 update made editor field button look ugly.
1320
- * Fixed: Save hook not firing when save_default set to false.
1321
-
1322
- ## 3.1.9.38
1323
- * Fixed: Reset section anomalies. Maybe.
1324
-
1325
- ## 3.1.9.37
1326
- * Fixed: Array of values in required not recognized.
1327
-
1328
- ## 3.1.9.36
1329
- * Fixed: Updated hint defaults to prevent index warning.
1330
-
1331
- ## 3.1.9.35
1332
- * Fixed: Removed leftover debug code.
1333
-
1334
- ## 3.1.9.34
1335
- * Added: New readonly argument for text field.
1336
-
1337
- ## 3.1.9.33
1338
- * Fixed: Reset/Reset section actions hooks now fire properly.
1339
-
1340
- ## 3.1.9.32
1341
- * Fixed: When developer uses section field but does not specify an indent argument.
1342
-
1343
- ## 3.1.9.31
1344
- * Fixed: Dynamic URL for slides
1345
- * Fixed: Accidently removed reset action on section reset. Restored.
1346
-
1347
- ## 3.1.9.30
1348
- * Fixed: Section defaults bug for certain field types.
1349
-
1350
- ## 3.1.9.29
1351
- * Fixed: Dynamic URL if site URL changed now updates media properly if attachement exists.
1352
-
1353
- ## 3.1.9.28
1354
- * Fixed: Customizer now correctly does live preview.
1355
-
1356
- ## 3.1.9.27
1357
- * Fixed: Special enqueue case fix.
1358
-
1359
- ## 3.1.9.26
1360
- * Added: A few more hooks for defaults and options.
1361
- * Fixed: Small undefined index error.
1362
- * Added: Section key generation via title.
1363
- * Modified: File intending.
1364
-
1365
- ## 3.1.9.25
1366
- * Fixed: Custom menus not displaying options panel.
1367
-
1368
- ## 3.1.9.24
1369
- * Fixed: Single checkbox option not retaining checked value.
1370
- * Fixed: Border field returning bad CSS in CSS compiler.
1371
-
1372
- ## 3.1.9.23
1373
- * Fixed: Import/Export fix. Thanks, CGlingener!
1374
-
1375
- ## 3.1.9.22
1376
- * Added: Save warning now is sticky to the top and responsive.
1377
- * Fixed: Mobile fixes for Redux. Looks great on small screens how.
1378
- * Fixed: Slight CSS fixes.
1379
- * Fixed: Compiler fixes and added notices.
1380
- * Added: Import/Export more reasonable text.
1381
-
1382
- ## 3.1.9.21
1383
- * Added: `force_output` are on the field level to bypass the required check that removes the output
1384
- if the field is hidden. Thanks @rffaguiar.
1385
-
1386
- ## 3.1.9.20
1387
- * Fixed: Rare case (mediatemple grid server) when file_get_contents won't work outside of the
1388
- uploads dir. Used curl to grab the font HTML. ;)
1389
-
1390
- ## 3.1.9.19
1391
- * Fixed: Undefined index for admin bar.
1392
-
1393
- ## 3.1.9.18
1394
- * Fixed: SMALL issue with WordPress 3.9. Now it works. ;)
1395
-
1396
- ## 3.1.9.17
1397
- * Fixed: Info and divide field now work with required.
1398
-
1399
- ## 3.1.9.16
1400
- * Added: Fallback. Now if the media, slides, or background URL doesn't match the site URL, but the
1401
- attachment ID is present, the data is updated.
1402
-
1403
- ## 3.1.9.15
1404
- * Fixed: Last tab not properly set. Slow rendering.
1405
-
1406
- ## 3.1.9.14
1407
- * Modified: Replaced transients with cookies.
1408
-
1409
- ## 3.1.9.13
1410
- * Fixed: Undefined variable issues for new required methods.
1411
-
1412
- ## 3.1.9.12
1413
- * Fixed: Default_show display error with a non-array being steralized.
1414
- * Added: Multiple required parent value checking! Booya!
1415
- * Fixed: Sections now fold with required.
1416
-
1417
- ## 3.1.9.11
1418
- * Fixed: select2 not rendering properly when dev_mode = false, because of ace_editor fix.
1419
- * Fixed: Removed mistakenly compiled test code from redux.js.
1420
-
1421
- ## 3.1.9.10
1422
- * Fixed: ace_editor not rendering properly in certain instances.
1423
- * Modified: Small change to import_export field in checking for existing instance of itself.
1424
-
1425
- ## 3.1.9.9
1426
- * Fixed: import_export not rendering when the menutype argument was set to menu
1427
-
1428
- ## 3.1.9.8
1429
- * Fixed: Ace_editor not enqueued unless used. MEMORY HOG.
1430
-
1431
- ## 3.1.9.7
1432
- * Fixed: Color_Gradient transparency to was being auto-selected if from way transparent.
1433
- * Fixed: Enqueue select with slider for local dev.
1434
-
1435
- ## 3.1.9.6
1436
- * Modified: removed add_submenu_page when creating a submenu for us in the WP admin area. WP
1437
- approved API is used in it's place to being Redux up to wp.org theme check standards.
1438
-
1439
- ## 3.1.9.5
1440
- * Fixed: Massive speed issue with button_set. Resolved.
1441
- * Fixed: Issue where default values throws an error if ID is not set.
1442
-
1443
- ## 3.1.9.4
1444
- * Fixed: Continuing effort to ensure proper loading of config from child themes.
1445
-
1446
- ## 3.1.9.3
1447
- * Fixed: Import/Export array search bug if section['fields'] is not defined.
1448
-
1449
- ## 3.1.9.2
1450
- * Fixed: Inconsistencies in import/export across different versions of PHP.
1451
-
1452
- ## 3.1.9.1
1453
- * Fixed: Redux checks for child or parent theme exclusively before loading.
1454
-
1455
- ## 3.1.9
1456
- * Updated: RGBA Field stability. Thank you, SilverKenn.
1457
-
1458
- ## 3.1.8.23
1459
- * Modified: Separated Import/Export from the core. It can now be used as a field.
1460
-
1461
- ## 3.1.8.22
1462
- * Fixed: Typography custom preview text/size not outputting.
1463
- * Fixed: No font selected in typography would default to 'inherit'.
1464
- * Fixed: Hint feature kicking back a notice if no title was specified.
1465
-
1466
- ## 3.1.8.21
1467
- * Fixed: Sortable field, when used a checkboxes, were all checked by default, even when set not to be.
1468
- * Fixed: button_set field not setting properly in multi mode.
1469
-
1470
- ## 3.1.8.20
1471
- * Fixed: Javascript console object not printing options object.
1472
- * Fixed: Load errors from child themes no longer occur.
1473
-
1474
- ## 3.1.8.19
1475
- * Modified: Typography word and letter spacing now accept negative values.
1476
- * Modified: Typography preview shows spaces between upper and lower case groupings.
1477
- * Fixed: Compiler output for slider field.
1478
-
1479
- ## 3.1.8.18
1480
- * Fixed: update_check produced a fatal error on a local install with no internet connection.
1481
- * Modified: Google font CSS moved to header so pages will pass HTML5 validation.
1482
-
1483
- ## 3.1.8.17
1484
- * Fixed: Compiler hook failing on slider.
1485
-
1486
- ## 3.1.8.16
1487
- * Fixed: Error on update_check when the response code was something other than 200.
1488
- * Modified: Removed Google font CSS line from header (because it's in the footer via wp_enqueue_style.
1489
-
1490
- ## 3.1.8.15
1491
- * Added: Admin notice for new builds of Redux on Github as they become available. This feature is
1492
- available on in dev_mode, and may be turned off by setting the `update_notice` argument to
1493
- false. See the Arguments page of the wiki for more details.
1494
- * Added: text-transform option for the typography field.
1495
- * Fixed: image_select images not resizing properly in FF and IE.
1496
- * Fixed: Layout for the typography field, so everything isn't smushed together. The new layout is
1497
- as follows:
1498
- [family-font] [backup-font]
1499
- [style] [script] [align] [transform]
1500
- [size] [height] [word space] [letter space]
1501
- [color]
1502
-
1503
- ## 3.1.8.14
1504
- * Added: Newsletter sign-up popup at first load of the Redux options panel.
1505
-
1506
- ## 3.1.8.12
1507
- * Added: Added PHP 5.2 support for import/export.
1508
-
1509
- ## 3.1.8.11
1510
- * Added: Action hooks for options reset and options reset section.
1511
- * Added: Theme responsive for date picker.
1512
-
1513
- ## 3.1.8.10
1514
- * Added: New slider. Better looking UI, double handles and support for floating
1515
- point values. See the wiki for more info.
1516
-
1517
- ## 3.1.8.9
1518
- * Fixed: link_color field showing notice on default, if user enters no defaults.
1519
- * Fixed: Fixed tab notice in framework.php if no tab parameter is set in URL.
1520
-
1521
- ## 3.1.8.8
1522
- * Added: Typography improvements.
1523
-
1524
- ## 3.1.8.7
1525
- * Added: Hints! More info: https://github.com/ReduxFramework/ReduxFramework/wiki/Using-Hints-in-Fields
1526
-
1527
- ## 3.1.8.6
1528
- * Added: Complete Wordpress admin color styles. Blessed LESS/SCSS mixins. ;)
1529
-
1530
- ## 3.1.8.5
1531
- * Added: Font family not required for the typography module any longer.
1532
-
1533
- ## 3.1.8.4
1534
- * Added: Support for using the divide field in folding.
1535
- * Added: Error trapping in typography.js for those still attempting to use
1536
- typography with no font-family.
1537
-
1538
- ## 3.1.8.3
1539
- * Added: Full asynchronous font loading.
1540
- *
1541
- ## 3.1.8.2
1542
- * Added: email_not_empty validation field.
1543
- * Reverted: email validation field only checks for valid email. not_empty check moved
1544
- to new validation field.
1545
-
1546
- ## 3.1.8.1
1547
- * Fixed: Hide demo hook wasn't hiding demo links.
1548
-
1549
- ## 3.1.8
1550
- * Fixed: Improper enqueue in tracking class.
1551
- * Fixed: Few classes missed for various fields.
1552
- * Fixed: Spacing field kicking back notices and warnings when 'output' wasn't set.
1553
- * Modified: Added file_exists check to all include lines in framework.php
1554
- * Fixed: Background field now works with dynamic preview as it should.
1555
- * Fixed: Extension fields now enqueueing properly.
1556
- * Added: Text-align to typography field.
1557
- * Fixed: Servers returning forwards slashes in TEMPLATEPATH, while Redux is installed
1558
- embedded would not show options menu.
1559
- * Fixed: On and Off for switch field not displaying language translation.
1560
- * Fixed: email validation allowing a blank field.
1561
- * Fixed: Now allow for empty values as valid keys.
1562
- * Added: Dismiss option to admin notices (internal function)
1563
-
1564
- ## 3.1.6
1565
- * Fixed: CSS spacing issue
1566
- * Fixed: Customizer now works and doesn't break other customizer fields outside of Redux.
1567
- * Fixed: Several minor bug fixes
1568
- * Added: Metabox support via extension http://reduxframework.com/extensions/
1569
- * Added: Admin-bar menu
1570
- * Fixed: Section field now folds.
1571
- * Fixed: wp_content_dir path now handles double forward slashes.
1572
- * Fixed: Typography field missing italics in Google fonts.
1573
- * Fixed: Default color in border field not saving properly.
1574
- * Fixed: hex2rgba in class.redux_helpers.php changed to static.
1575
- * Fixed: 'sortable' field type not saving options as default.
1576
- * Fixed: Specified default color not set when clicking the color box default button.
1577
- * Fixed: Sorter field options are now saved as default in database.
1578
- * Fixed: Issues with checkboxes displaying default values instead of labels.
1579
- * Fixed: Outstanding render issues with spacing field.
1580
- * Fixed: Plugins using Redux from load failure.
1581
- * Fixed: 'not_empty' field validation.
1582
- * Fixed: Media field.
1583
- * Added: 'read-only' option for media text field.
1584
- * Added: 'mode' option to image_select, so CSS output element may be specified.
1585
- * Added: Admin Bar menu for option panel.
1586
- * Modified: Removed raw_align field and added align option to raw field.
1587
- See wiki for more info.
1588
- * Modified: media field 'read-only' to 'readonly' to vonform to HTML standards.
1589
- * Removed: EDD extension. It never belonged in Core and will be re-released as a
1590
- downloadable extension shortly
1591
- * Removed: Group field, temporarily.
1592
- * Removed: wp_get_current_user check.
1593
-
1594
- ## 3.1.5
1595
- * Typography font arrays may not contain comma spaces.
1596
- * Merge in pull request - 542, code cleanup and better readability
1597
- * Change how HTML is output to support metaboxes
1598
- * CSS only on pages that matter, better checks.
1599
- * font-backup in typography now appends to font-family in output and compiler.
1600
- * More fixes for Google font css outputting.
1601
- * Addded output and compiler to field_image_select. Images will be output as 'background-image'.
1602
- * Fixed output in field_background.
1603
- * Prevent standard fonts from outputting to Google fonts CSS call.
1604
- * class_exists in field_section checking for incorrect classname.
1605
- * sample_config fix.
1606
- * Compiler not outputting CSS without output set to comthing other than false.
1607
- * Google fonts not rendering on frontend.
1608
- * Rewrote sample_config as a class
1609
-
1610
- ## 3.1.4
1611
- * Fixed error in redux-framework.php.
1612
- * Added select_image field.
1613
-
1614
- ## 3.1.3
1615
- * Fixed a few undefined variables
1616
- * Removed old code from the repo.
1617
- * Fix for validation.
1618
- * Remove the compiler hook by default.
1619
- * Fix to sortable field.
1620
- * Added an extra check for link color. Removes user error.
1621
- * Localization updates.
1622
- * Error in slides.
1623
- * Fixed the info box bug with spacing and padding.
1624
- * Fixed the first item in each section having WAY too much padding. ;)
1625
- * Fixed section reset issue where values weren't being saved to the db properly.
1626
-
1627
- ## 3.1.2
1628
- * Feature - Sortable select boxes!
1629
- * Feature - Reset a section only or the whole panel!
1630
- * New Field - RGBA Color Field!
1631
- * Improvement - Use of REM throughout.
1632
- * Fixed Typography - Fix output option and various small bugs.
1633
- * Fixed Border - Fix output option and various small bugs.
1634
- * Fixed Dimensions - Fix output option and various small bugs.
1635
- * Fixed Image_select - Various small bugs.
1636
- * Fixed Slides - Various small bugs.
1637
- * Fixed Sortable - Using native jQuery UI library same as within WordPress.
1638
- * Fixed Slider and Spinner Input Field - Values now move to the closest valid
1639
- value in regards to the step, automatically.
1640
- * Fixed Ace Editor
1641
- * FEATURE - All CSS/JS files are compiled into a single file now! Speed
1642
- improvements for the backend.
1643
- * Fix in how WordPress data is received, improved some output.
1644
- * Fix for various fields not triggering fold/compiler/save.
1645
- * Fixed elusive icons to use the new version and classes.
1646
- * Fixed media thumb to only be the thumbnail version.
1647
- * Fixed admin https error with WordPress core not renaming URL.
1648
- * Placeholders throughout the framework are now properly there.
1649
- * Feature - Setting to not save defaults to database on load.
1650
- * Fixed - Computability issue with GT3 builder.
1651
- * Fixed localization issue with default values.
1652
- * Language - Added Russian
1653
- * Feature - Media now can have any content type passed in to limit content types.
1654
- * Allow negative values in typography and other fields.
1655
- * WordPress 3.8 computability.
1656
- * CSS validation issue.
1657
- * Feature - User contributed text direction feature.
1658
- * EDD Extension now fully function for plugins or themes.
1659
- * Removed get_theme_data() fallbacks, we're well pass WordPress 3.4 now. ;)
1660
- * A ton of other small updates and improvements.
1661
-
1662
- ## 3.1.0
1663
- * Fix Issue 224 - Image Select width was breaking the panel.
1664
- * Fix Issue 181 - Broken panel in firefox
1665
- * Fix Issue 225 - 0px typography bug. Thanks @partnuz.
1666
- * Fix Issue 228 - Resolved a duplicated enqueue on color_link field. Thanks @vertigo7x.
1667
- * Fix Issue 231 - Field spacing bug fixes.
1668
- * Fix Issue 232 & 233 - Dimensions: bug fix with units and multiple units. Thanks @kpodemski
1669
- * Fix Issue 234 - Pass options as a ref so validating actions can modify/sanitize them. Thanks @ZeroBeeOne
1670
- * Fix Issue 222 - Tab cookie function wasn't working.
1671
- * Feature - Pass params to Select2. Thanks @andreilupu
1672
- * Fix Issue 238 - Fix for conditional output. Thanks @partnuz.
1673
- * Fix Issue 211 - Google Web font wasn't loading at first init of theme.
1674
- * Fix Issue 210 - Elusive Icons update. Changed classes to force use of full elusive name.
1675
- * Fix Issue 247 - Media thumbnails were not showing. Also fixed media to keep the largest file, but display the small
1676
- version in the panel as a thumb. Thanks @kwayyinfotech.
1677
- * Fix Issue 144 - JS error when no item found in slider.
1678
- * Fix Issue 246 - Typography output errors.
1679
- * Feature & Issue 259 - Multi-Text now support validation!
1680
- * Fix Issue 248/261 - Links color issue. Also fixed color validation.
1681
- * Feature & Issue 262 - Now registered sidebars can be used as a data type.
1682
- * Fix Issue 194/276 - Custom taxonomy terms now passing properly. Thanks @kprovance.
1683
- * Feature & Issue 273 - Argument save_defaults: Disable the auto-save of the default options to the database if not set.
1684
- * Feature - Docs now being moved to the wiki for community participation.
1685
- * Issue 283 - Date placeholder. Thanks @kprovance.
1686
- * Issue 285 - HTTPS errors on admin. Known WordPress bug. Resolved.
1687
- * Fix Issue 288 - Float values now possible for border, dimensions, and spacing.
1688
- * Feature - Media field can now accept non-image files with a argument being set.
1689
- * Fix Issue 252 - Post Type data wasn't working properly. Thanks @Abu-Taymiyyah.
1690
- * Fix Issue 213 - Radio and Button Set wasn't folding.
1691
-
1692
- ## 3.0.9
1693
- * Feature - Added possibility to set default icon class for all sections and tabs.
1694
- * Feature - Make is to the WP dir can be moved elsewhere and Redux still function.
1695
- * Added Spanish Language. Thanks @vertigo7x.
1696
- * Fix Issue 5 - Small RGBA validation fix.
1697
- * Fix Issue 176 - Fold by Image Select. Thanks @andreilupu.
1698
- * Fix Issue 194 - Custom taxonomy terms in select field.
1699
- * Fix Issue 195 - Border defaults not working.
1700
- * Fix Issue 197 - Hidden elements were showing up on a small screen. Thanks @ThinkUpThemes.
1701
- * Fix issue 200 - Compiler not working with media field.
1702
- * Fix Issue 201 - Spacing field not using default values.
1703
- * Fix Issue 202 - Dimensions field not using units.
1704
- * Fix Issue 208 - Checkbox + Required issue.
1705
- * Fix Issue 211 - Google Font default not working on page load.
1706
- * Fix Issue 214 - Validation notice not working for fields.
1707
- * Fix Issue 181/224 - Firefox 24 image resize errors.
1708
- * Fix Issue 223 - Slides were losing the url input field for the image link.
1709
- * Fix - Various issues in the password field.
1710
- * Fixed various spelling issues and typos in sample-config file.
1711
- * Initialize vars before extract() - to shut down undefined vars wargnings.
1712
- * Various other fixes.
1713
-
1714
- ## 3.0.8
1715
- * Version push to ensure all bugs fixes were deployed to users. Various.
1716
-
1717
- ## 3.0.7
1718
- * Feature - Completely redone spacing field. Choose to apply to sides or all at once with CSS output!
1719
- * Feature - Completely redone border field. Choose to apply to sides or all at once with CSS output!
1720
- * Feature - Added opt-in anonymous tracking, allowing us to further analyze usage.
1721
- * Feature - Enable weekly updates of the Google Webfonts cache is desired. Also remove the Google Webfont files from
1722
- shipping with Redux. Will re-download at first panel run to ensure users always have the most recent copy.
1723
- * Language translation of german updated alone with ReduxFramework pot file.
1724
- * Fix Issue 146 - Spacing field not storing data.
1725
- * Fix - Firefox field description rendering bug.
1726
- * Fix - Small issue where themes without tags were getting errors from the sample data.
1727
-
1728
- ## 3.0.6
1729
- * Hide customizer fields by default while still under development.
1730
- * Fix Issue 123 - Language translations to actually function properly embedded as well as in the plugin.
1731
- * Fix Issue 151 - Media field uses thumbnail not full image for preview. Also now storing the thumbnail URL. Uses
1732
- the smallest available size as the thumb regardless of the name.
1733
- * Fix Issue 147 - Option to pass params to select2. Contributed by @andreilupu. Thanks!
1734
- * Added trim function to ace editor value to prevent whitespace before and after value keep being added
1735
- * htmlspecialchars() value in pre editor for ace. to prevent html tags being hidden in editor and rendered in dom
1736
- * Feature: Added optional 'add_text' argument for multi_text field so users can define button text.
1737
- * Added consistent remove button on multi text, and used sanitize function for section id
1738
- * Feature: Added roles as data for field data
1739
- * Feature: Adding data layout options for multi checkbox and radio, we now have quarter, third, half, and full
1740
- column layouts for these fields.
1741
- * Feature: Eliminate REDUX_DIR and REDUX_URL constants and instead created static ReduxFramework::$\_url and
1742
- ReduxFramework::$\_dir for cleaner code.
1743
- * Feature: Code at bottom of sample-config.php to hide plugin activation text about a demo plugin as well as
1744
- code to demo how to hide the plugin demo_mode link.
1745
- * Started work on class definitions of each field and class. Preparing for the panel builder we are planning to make.
1746
-
1747
- ## 3.0.5
1748
- * Fixed how Redux is initialised so it works in any and all files without hooking into the init function.
1749
- * Issue #151: Added thumbnails to media and displayed those instead of full image.
1750
- * Issue #144: Slides had error if last slide was deleted.
1751
- * Color field was outputting hex in the wrong location.
1752
- * Added ACE Editor field, allowing for better inline editing.
1753
-
1754
- ## 3.0.4
1755
- * Fixed an odd saving issue.
1756
- * Fixed link issues in the framework
1757
- * Issue #135: jQuery UI wasn't being properly queued
1758
- * Issue #140: Admin notice glitch. See http://reduxframework.com/2013/10/wordpress-notifications-custom-options-panels/
1759
- * Use hooks instead of custom variable for custom admin CSS
1760
- * Added "raw" field that allows PHP or a hook to embed anything in the panel.
1761
- * Submenus in Admin now change the tabs without reloading the page.
1762
- * Small fix for multi-text.
1763
- * Added IT_it and RO_ro languages.
1764
- * Updated readme file for languages.
1765
-
1766
- ## 3.0.3
1767
- * Fixed Issue #129: Spacing field giving an undefined.
1768
- * Fixed Issue #131: Google Fonts stylesheet appending to body and also to the top of the header. Now properly placed
1769
- both at the end of the head tag as to overload any theme stylesheets.
1770
- * Fixed issue #132 (See #134, thanks @andreilupu): Could not have multiple WordPress Editors (wp_editor) as the
1771
- same ID was shared. Also fixed various styles to match WordPress for this field.
1772
- * Fixed Issue #133: Issue when custom admin stylesheet was used, a JS error resulted.
1773
-
1774
- ## 3.0.2
1775
- * Improvements to slides, various field fixes and improvements. Also fixed a few user submitted issues.
1776
-
1777
- ## 3.0.1
1778
- * Backing out a bit of submitted code that caused the input field to not properly break.
1779
-
1780
- ## 3.0.0
1781
- * Initial WordPress.org plugin release.
1782
-
1783
- ## 3.0
1784
- Redux is now hosted on WordPress.org! Update in order to get proper, stable updates.
1785
-
1786
- * Removed get() and show()
1787
- * Fixed huge performance bug
1788
- * More bugfixes
1789
- * Fixed spacing field
1790
- * Converted Redux to run as an auto-updating plugin. Getting ready to post to WordPress.org
1791
- * Fixed the auto updater to properly show changes since the last update
1792
- * Various fields including link_color, spacing, dimensions
1793
- * Compiler hooks to allow developers to generate CSS files only when needed
1794
- * Stability and standardizing in HTML output throughout
1795
- * PHP/CSS/JS fixes
1796
- * Compress JS and use LESS (and compressed CSS) throughout
1797
-
1798
- ## Version 3.0.0 Beta (September 12, 2013)
1799
-
1800
- * Massive code overhaul
1801
- * Replaced redundant field types with data elements
1802
- * Migrated to company repo
1803
- * Added several new storage methods
1804
- * Numerous bugfixes
1805
- * Renamed std argument to default
1806
- * Added MP6 support
1807
- * Complete CSS rewrite
1808
- * Globals are now conditional
1809
- * Added nesting support
1810
- * Added repeatable field
1811
- * Restyled Dev Mode
1812
- * Added System Info tab
1813
- * Added compiler hooks
1814
- * Added style and icon support to info field
1815
- * Switched to Elusive Icons
1816
- * Huge performance updates
1817
-
1818
- ## Version 2.0.1 Final (September 1, 2013)
1819
-
1820
- * Added option to override ```icon_type``` per icon
1821
- * Minor bug/versioning fixes
1822
- * Added Font Awesome intro
1823
- * Added ```raw_html``` option
1824
- * Added ```text_sortable``` option
1825
- * Switched from Aristo to Bootstrap jQuery UI theme
1826
-
1827
- ## Version 2.0.0 (January 31, 2013)
1828
-
1829
- * Fixed SSL error which occurred occasionally with Google Webfonts
1830
- * Added optional flag for ```wpautop``` on editors
1831
- * Added password field type
1832
- * Added ```checkbox_hide_all``` option
1833
- * Added WP3.5 media chooser
1834
- * Added Google webfonts previews
1835
- * Updated to WP3.5 color picker
1836
- * Minor style tweaks
1837
- * Added graphical 'switch' option for checkboxes
1838
- * Removed dependency on class extension for fields
1839
- * Deprecated icons in favor of iconfonts
1840
-
1841
- ## Version 1.0.0 (December 5, 2012)
1842
-
1843
- * Based on NHP Theme Options Framework v1.0.6
1844
- * Cleaned up codebase
1845
- * Changed option group name to allow multiple instances
1846
- * Changed checkbox name attribute to id
1847
- * Added rows attribute to textareas
1848
- * Removed extra linebreak in upload field
1849
- * Set default menu position to null to avoid conflicts
1850
- * Added sample content for dashboard credit line
1851
- * Minor style changes
1852
- * Changed name of upload button
1853
- * Refactored Google Webfonts function
1854
- * Replaced ```stylesheet_override``` with ```admin_stylesheet```
1855
- * Made text domain a constant
1856
- * Removed PHP closing tags to prevent issues with newlines
1857
- * Added option to define custom start tab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/core/lib/ReduxFramework/CONTRIBUTING.md DELETED
@@ -1,27 +0,0 @@
1
- First and foremost, PLEASE check to see if you are using the latest version of Redux by checking the repository. If you plan on reporting an issue with any version BUT the latest version, we are going to ask you to upgrade to the latest code base anyway to see if your issue persists. Please save us and yourself some time by taking this simple step first. Thanks!
2
-
3
- When submitting a ticket, please make sure you include the following information, It is critical, and required. As Team Redux has not yet earned their certificates in mind reading, we need you to provide for us the following information. :)
4
-
5
- 1. The version of Redux you are using. Please do not say 'the latest version' as what you perceive as the latest and what might be the latest could easily be two different things. At the bottom of the Redux options panel is a four digit version number. Please include it.
6
-
7
- 2. The version of Wordpress you are running.
8
-
9
- 3. Please indicate if you are using Redux in dev_mode.
10
-
11
- 4. If you are having difficultly with a particular field, please include the config code for that entire field. If the field is dependent on other fields in the section (for example, required arguments are used), then please include the entire section.
12
-
13
- 5. If you are having difficulty with configuration, please specify if you are using a standalone theme, a child theme, a plugin, etc.
14
-
15
- 6. Please indicate if you are using Redux as a plugin or embedded in your project.
16
-
17
- 7. Please check your browser's output console. If there are any javascript errors pertaining to redux, please list them, including the module/file they occurred in and the line number
18
-
19
- The follow only applies if Redux is not loading properly:
20
-
21
- 8. If you are using Redux embedded, please specify the location in which Redux is installed, where you config is located, and the lines of code you are using to initialize Redux and your config.
22
-
23
- The way in which we diagnose bugs or config difficulties is to attempt to recreate them on our end. This is why we need the very specific information. Once we are able to confirm the issue, we will either push an update, or assist you in correcting any mistakes in your config.
24
-
25
- What we do NOT do is debug your code. We support the Redux code and the way in which the config is put together. Any other issue pertaining to your project is your own, or we might be able to assist with premium support.
26
-
27
- - Team Redux
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/core/lib/ReduxFramework/Gruntfile.js DELETED
@@ -1,439 +0,0 @@
1
- /* jshint node:true */
2
- var shell = require( 'shelljs' );
3
-
4
- module.exports = function( grunt ) {
5
-
6
- // Project configuration.
7
- grunt.initConfig(
8
- {
9
- pkg: grunt.file.readJSON( 'package.json' ),
10
-
11
- concat: {
12
- options: {
13
- separator: ';'
14
- },
15
- core: {
16
- src: [
17
- 'ReduxCore/assets/js/vendor/cookie.js',
18
- 'ReduxCore/assets/js/vendor/jquery.typewatch.js',
19
- 'ReduxCore/assets/js/vendor/jquery.serializeForm.js',
20
- 'ReduxCore/assets/js/vendor/jquery.alphanum.js',
21
- 'ReduxCore/assets/js/redux.js'
22
- ],
23
- dest: 'ReduxCore/assets/js/redux.min.js'
24
- },
25
- vendor: {
26
- src: [
27
- 'ReduxCore/assets/js/vendor/cookie.js',
28
- 'ReduxCore/assets/js/vendor/jquery.serializeForm.js',
29
- 'ReduxCore/assets/js/vendor/jquery.typewatch.js',
30
- 'ReduxCore/assets/js/vendor/jquery.alphanum.js'
31
- ],
32
- dest: 'ReduxCore/assets/js/vendor.min.js'
33
- }
34
- },
35
- 'gh-pages': {
36
- options: {
37
- base: 'docs',
38
- message: 'Update docs and files to distribute'
39
- },
40
- dev: {
41
- src: ['docs/**/*', 'bin/CNAME']
42
- },
43
- travis: {
44
- options: {
45
- repo: 'https://' + process.env.GH_TOKEN + '@github.com/ReduxFramework/docs.reduxframework.com.git',
46
- user: {
47
- name: 'Travis',
48
- email: 'travis@travis-ci.org'
49
- },
50
- silent: false
51
- },
52
- src: ['**/*']
53
- }
54
- },
55
- uglify: {
56
- fields: {
57
- files: [
58
- {
59
- expand: true,
60
- cwd: 'ReduxCore/inc/fields',
61
- src: ['**/*.js', '!**/*.min.js', '!ace_editor/vendor/*.js', '!ace_editor/vendor/snippets/*.js', '!slider/vendor/nouislider/*.*', '!spinner/vendor/*.*'],
62
- ext: '.min.js',
63
- dest: 'ReduxCore/inc/fields'
64
- }
65
- ]
66
- },
67
- extensions: {
68
- files: [
69
- {
70
- expand: true,
71
- cwd: 'ReduxCore/inc/extensions',
72
- src: ['**/*.js', '!**/*.min.js'],
73
- ext: '.min.js',
74
- dest: 'ReduxCore/inc/extensions'
75
- }
76
- ]
77
- },
78
- core: {
79
- files: {
80
- 'ReduxCore/assets/js/redux.min.js': [
81
- 'ReduxCore/assets/js/redux.min.js'
82
- ],
83
- 'ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js': [
84
- 'ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js'
85
- ],
86
- 'ReduxCore/assets/js/vendor/redux.select2.sortable.min.js': [
87
- 'ReduxCore/assets/js/vendor/redux.select2.sortable.js'
88
- ],
89
- 'ReduxCore/assets/js/media/media.min.js': [
90
- 'ReduxCore/assets/js/media/media.js'
91
- ]
92
- }
93
-
94
- },
95
- vendor: {
96
- files: {
97
- 'ReduxCore/assets/js/vendor.min.js': [
98
- 'ReduxCore/assets/js/vendor.min.js'
99
- ]
100
- }
101
- }
102
- },
103
- qunit: {
104
- files: ['test/qunit/**/*.html']
105
- },
106
-
107
- // JavaScript linting with JSHint.
108
- jshint: {
109
- options: {
110
- jshintrc: '.jshintrc'
111
- },
112
- files: [
113
- //'Gruntfile.js',
114
- //'ReduxCore/assets/js/import_export/import_export.js',
115
- 'ReduxCore/assets/js/media/media.js',
116
- 'ReduxCore/inc/fields/ace_editor/field_ace_editor.js',
117
- 'ReduxCore/inc/fields/background/field_background.js',
118
- 'ReduxCore/inc/fields/border/field_border.js',
119
- 'ReduxCore/inc/fields/button_set/field_button_set.js',
120
- 'ReduxCore/inc/fields/checkbox/field_checkbox.js',
121
- 'ReduxCore/inc/fields/color/field_color.js',
122
- 'ReduxCore/inc/fields/color_rgba/field_color_rgba.js',
123
- 'ReduxCore/inc/fields/date/field_date.js',
124
- 'ReduxCore/inc/fields/dimensions/field_dimensions.js',
125
- 'ReduxCore/inc/fields/editor/field_editor.js',
126
- 'ReduxCore/inc/fields/gallery/field_gallery.js',
127
- 'ReduxCore/inc/fields/image_select/field_image_select.js',
128
- 'ReduxCore/inc/fields/multi_text/field_multitext.js',
129
- 'ReduxCore/inc/fields/palette/field_palette.js',
130
- 'ReduxCore/inc/fields/select/field_select.js',
131
- 'ReduxCore/inc/fields/select_image/field_select_image.js',
132
- 'ReduxCore/inc/fields/slider/field_slider.js',
133
- 'ReduxCore/inc/fields/slides/field_slides.js',
134
- 'ReduxCore/inc/fields/sortable/field_sortable.js',
135
- 'ReduxCore/inc/fields/sorter/field_sorter.js',
136
- 'ReduxCore/inc/fields/spacing/field_spacing.js',
137
- 'ReduxCore/inc/fields/spinner/field_spinner.js',
138
- 'ReduxCore/inc/fields/switch/field_switch.js',
139
- 'ReduxCore/inc/fields/typography/field_typography.js',
140
- // 'ReduxCore/inc/fields/**/*.js',
141
- 'ReduxCore/extensions/**/*.js',
142
- 'ReduxCore/extensions/**/**/*.js',
143
- 'ReduxCore/assets/js/redux.js'
144
- ]
145
- },
146
-
147
- // Watch changes for files.
148
- watch: {
149
- ui: {
150
- files: ['<%= jshint.files %>'],
151
- tasks: ['jshint']
152
- },
153
- php: {
154
- files: ['ReduxCore/**/*.php'],
155
- tasks: ['phplint:core']
156
- },
157
- css: {
158
- files: ['ReduxCore/**/*.less'],
159
- tasks: ['less:development']
160
- }
161
- },
162
-
163
- // Add textdomain.
164
- addtextdomain: {
165
- options: {
166
- textdomain: 'redux-framework', // Project text domain.
167
- updateDomains: ['redux', 'redux-framework-demo', 'v'] // List of text domains to replace.
168
- },
169
- target: {
170
- files: {
171
- src: ['*.php', '**/*.php', '!node_modules/**', '!tests/**', '!sample/**']
172
- }
173
- }
174
- },
175
-
176
- // Generate POT files.
177
- makepot: {
178
- redux: {
179
- options: {
180
- type: 'wp-plugin',
181
- domainPath: 'ReduxCore/languages',
182
- potFilename: 'redux-framework.pot',
183
- include: [],
184
- exclude: [
185
- 'sample/.*'
186
- ],
187
- potHeaders: {
188
- poedit: true,
189
- 'report-msgid-bugs-to': 'https://github.com/ReduxFramework/ReduxFramework/issues',
190
- 'language-team': 'LANGUAGE <support@reduxframework.com>'
191
- }
192
- }
193
- }
194
- },
195
-
196
- // Check textdomain errors.
197
- checktextdomain: {
198
- options: {
199
- keywords: [
200
- '__:1,2d',
201
- '_e:1,2d',
202
- '_x:1,2c,3d',
203
- 'esc_html__:1,2d',
204
- 'esc_html_e:1,2d',
205
- 'esc_html_x:1,2c,3d',
206
- 'esc_attr__:1,2d',
207
- 'esc_attr_e:1,2d',
208
- 'esc_attr_x:1,2c,3d',
209
- '_ex:1,2c,3d',
210
- '_n:1,2,4d',
211
- '_nx:1,2,4c,5d',
212
- '_n_noop:1,2,3d',
213
- '_nx_noop:1,2,3c,4d'
214
- ]
215
- },
216
- redux: {
217
- cwd: 'ReduxCore/',
218
- options: {
219
- text_domain: 'redux-framework',
220
- },
221
- src: ['**/*.php'],
222
- expand: true
223
- },
224
- sample: {
225
- cwd: 'sample',
226
- options: {
227
- text_domain: 'redux-framework-demo',
228
- },
229
- src: ['**/*.php'],
230
- expand: true
231
- }
232
- },
233
-
234
- // Exec shell commands.
235
- shell: {
236
- options: {
237
- stdout: true,
238
- stderr: true
239
- },
240
- // Limited to Maintainers so
241
- // txpush: {
242
- // command: 'tx push -s' // push the resources
243
- // },
244
- txpull: {
245
- command: 'tx pull -a --minimum-perc=25' // pull the .po files
246
- }
247
- },
248
-
249
- // Generate MO files.
250
- potomo: {
251
- dist: {
252
- options: {
253
- poDel: true
254
- },
255
- files: [{
256
- expand: true,
257
- cwd: 'ReduxCore/languages/',
258
- src: ['*.po'],
259
- dest: 'ReduxCore/languages/',
260
- ext: '.mo',
261
- nonull: true
262
- }]
263
- }
264
- },
265
-
266
- phpdocumentor: {
267
- options: {
268
- directory: 'ReduxCore/',
269
- target: 'docs/'
270
- },
271
- generate: {}
272
- },
273
-
274
- phplint: {
275
- options: {
276
- swapPath: './'
277
- },
278
- core: ["ReduxCore/**/*.php"],
279
- plugin: ["class-redux-plugin.php", "index.php", "redux-framework.php"]
280
- },
281
-
282
- sass: {
283
- fields: {
284
- options: {
285
- sourcemap: 'none',
286
- style: 'compressed',
287
- noCache: true,
288
- },
289
-
290
- files: [{
291
- expand: true, // Enable dynamic expansion.
292
- cwd: 'ReduxCore/inc/fields', // Src matches are relative to this path.
293
- src: ['**/*.scss'], // Actual pattern(s) to match.
294
- dest: 'ReduxCore/inc/fields', // Destination path prefix.
295
- ext: '.css' // Dest filepaths will have this extension.
296
- }]
297
- },
298
- extensions: {
299
- options: {
300
- sourcemap: 'none',
301
- style: 'compressed',
302
- noCache: true,
303
- },
304
-
305
- files: [{
306
- expand: true, // Enable dynamic expansion.
307
- cwd: 'ReduxCore/inc/extensions', // Src matches are relative to this path.
308
- src: ['**/*.scss'], // Actual pattern(s) to match.
309
- dest: 'ReduxCore/inc/extensions', // Destination path prefix.
310
- ext: '.css' // Dest filepaths will have this extension.
311
- }]
312
- },
313
- vendor: {
314
- options: {
315
- sourcemap: 'none',
316
- style: 'compressed',
317
- noCache: true
318
- },
319
-
320
- files: {
321
- "ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css": [
322
- "ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss"
323
- ],
324
- "ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css": [
325
- "ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.scss"
326
- ],
327
- }
328
- },
329
-
330
- admin: {
331
- options: {
332
- sourcemap: 'none',
333
- style: 'compressed',
334
- noCache: true
335
- },
336
-
337
- files: {
338
- "ReduxCore/assets/css/color-picker/color-picker.css": [
339
- "ReduxCore/assets/css/color-picker/color-picker.scss"
340
- ],
341
- "ReduxCore/assets/css/media/media.css": [
342
- "ReduxCore/assets/css/media/media.scss"
343
- ],
344
- "ReduxCore/assets/css/redux-admin.css": [
345
- "ReduxCore/assets/css/redux-admin.scss"
346
- ],
347
- "ReduxCore/assets/css/rtl.css": [
348
- "ReduxCore/assets/css/rtl.scss"
349
- ]
350
- }
351
- },
352
- welcome: {
353
- options: {
354
- sourcemap: 'none',
355
- style: 'compressed',
356
- noCache: true
357
- },
358
-
359
- files: {
360
- "ReduxCore/inc/welcome/css/redux-welcome.css": [
361
- "ReduxCore/inc/welcome/css/redux-welcome.scss"
362
- ]
363
- }
364
- }
365
- },
366
-
367
- cssmin: {
368
- fields: {
369
- files: {
370
- 'ReduxCore/assets/css/redux-fields.css': [
371
- 'ReduxCore/inc/fields/**/*.css',
372
- "ReduxCore/assets/css/color-picker/color-picker.css",
373
- "ReduxCore/assets/css/media/media.css"
374
- ]
375
- }
376
- },
377
- }
378
- }
379
- );
380
-
381
- // Load NPM tasks to be used here
382
- grunt.loadNpmTasks( 'grunt-shell' );
383
- grunt.loadNpmTasks( 'grunt-potomo' );
384
- grunt.loadNpmTasks( 'grunt-wp-i18n' );
385
- grunt.loadNpmTasks( 'grunt-checktextdomain' );
386
- grunt.loadNpmTasks( 'grunt-contrib-jshint' );
387
- grunt.loadNpmTasks( 'grunt-contrib-sass' );
388
- grunt.loadNpmTasks( 'grunt-contrib-uglify' );
389
- grunt.loadNpmTasks( 'grunt-contrib-watch' );
390
- grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
391
- grunt.loadNpmTasks( 'grunt-contrib-concat' );
392
- grunt.loadNpmTasks( 'grunt-phpdocumentor' );
393
- grunt.loadNpmTasks( 'grunt-gh-pages' );
394
- grunt.loadNpmTasks( "grunt-phplint" );
395
- //grunt.loadNpmTasks( 'grunt-recess' );
396
-
397
- grunt.registerTask(
398
- 'langUpdate', [
399
- 'addtextdomain',
400
- 'makepot',
401
- 'shell:txpull',
402
- 'potomo'
403
- ]
404
- );
405
-
406
- // Default task(s).
407
- grunt.registerTask(
408
- 'default', [
409
- 'jshint',
410
- 'concat:core',
411
- 'uglify:core',
412
- 'concat:vendor',
413
- 'uglify:vendor',
414
- 'uglify:fields',
415
- 'uglify:extensions',
416
- "sass:admin",
417
- "sass:fields",
418
- "sass:extensions",
419
- "sass:vendor",
420
- 'cssmin'
421
- ]
422
- );
423
- grunt.registerTask( 'travis', ['jshint', 'lintPHP'] );
424
-
425
- // this would be run by typing "grunt test" on the command line
426
- grunt.registerTask( 'testJS', ['jshint', 'concat:core', 'concat:vendor'] );
427
-
428
- grunt.registerTask( 'watchUI', ['watch:ui'] );
429
- grunt.registerTask( 'watchPHP', ['watch:php', 'phplint:core', 'phplint:plugin'] );
430
-
431
- grunt.registerTask( "lintPHP", ["phplint:plugin", "phplint:core"] );
432
- grunt.registerTask( "compileSCSS", ["sass:admin", "sass:fields", "sass:extensions", "sass:vendor", "sass:welcome"] );
433
- grunt.registerTask(
434
- 'compileJS',
435
- ['jshint', 'concat:core', 'uglify:core', 'concat:vendor', 'uglify:vendor', 'uglify:fields', 'uglify:extensions']
436
- );
437
- grunt.registerTask( 'compileTestJS', ['jshint', 'concat:core', 'concat:vendor'] );
438
- grunt.registerTask( 'compileCSS', ['cssmin'] );
439
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/core/lib/ReduxFramework/ReduxCore/assets/css/select2.css DELETED
@@ -1,704 +0,0 @@
1
- /*
2
- Version: 3.5.2 Timestamp: Sat Nov 1 14:43:36 EDT 2014
3
- */
4
- .select2-container {
5
- margin: 0;
6
- position: relative;
7
- display: inline-block;
8
- /* inline-block for ie7 */
9
- zoom: 1;
10
- *display: inline;
11
- vertical-align: middle;
12
- }
13
-
14
- .select2-container,
15
- .select2-drop,
16
- .select2-search,
17
- .select2-search input {
18
- /*
19
- Force border-box so that % widths fit the parent
20
- container without overlap because of margin/padding.
21
- More Info : http://www.quirksmode.org/css/box.html
22
- */
23
- -webkit-box-sizing: border-box; /* webkit */
24
- -moz-box-sizing: border-box; /* firefox */
25
- box-sizing: border-box; /* css3 */
26
- }
27
-
28
- .select2-container .select2-choice {
29
- display: block;
30
- height: 26px;
31
- padding: 0 0 0 8px;
32
- overflow: hidden;
33
- position: relative;
34
-
35
- border: 1px solid #aaa;
36
- white-space: nowrap;
37
- line-height: 26px;
38
- color: #444;
39
- text-decoration: none;
40
-
41
- border-radius: 4px;
42
-
43
- background-clip: padding-box;
44
-
45
- -webkit-touch-callout: none;
46
- -webkit-user-select: none;
47
- -moz-user-select: none;
48
- -ms-user-select: none;
49
- user-select: none;
50
-
51
- background-color: #fff;
52
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
53
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
54
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
55
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
56
- background-image: linear-gradient(to top, #eee 0%, #fff 50%);
57
- }
58
-
59
- html[dir="rtl"] .select2-container .select2-choice {
60
- padding: 0 8px 0 0;
61
- }
62
-
63
- .select2-container.select2-drop-above .select2-choice {
64
- border-bottom-color: #aaa;
65
-
66
- border-radius: 0 0 4px 4px;
67
-
68
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
69
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
70
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
71
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
72
- background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);
73
- }
74
-
75
- .select2-container.select2-allowclear .select2-choice .select2-chosen {
76
- margin-right: 42px;
77
- }
78
-
79
- .select2-container .select2-choice > .select2-chosen {
80
- margin-right: 26px;
81
- display: block;
82
- overflow: hidden;
83
-
84
- white-space: nowrap;
85
-
86
- text-overflow: ellipsis;
87
- float: none;
88
- width: auto;
89
- }
90
-
91
- html[dir="rtl"] .select2-container .select2-choice > .select2-chosen {
92
- margin-left: 26px;
93
- margin-right: 0;
94
- }
95
-
96
- .select2-container .select2-choice abbr {
97
- display: none;
98
- width: 12px;
99
- height: 12px;
100
- position: absolute;
101
- right: 24px;
102
- top: 8px;
103
-
104
- font-size: 1px;
105
- text-decoration: none;
106
-
107
- border: 0;
108
- background: url('select2.png') right top no-repeat;
109
- cursor: pointer;
110
- outline: 0;
111
- }
112
-
113
- .select2-container.select2-allowclear .select2-choice abbr {
114
- display: inline-block;
115
- }
116
-
117
- .select2-container .select2-choice abbr:hover {
118
- background-position: right -11px;
119
- cursor: pointer;
120
- }
121
-
122
- .select2-drop-mask {
123
- border: 0;
124
- margin: 0;
125
- padding: 0;
126
- position: fixed;
127
- left: 0;
128
- top: 0;
129
- min-height: 100%;
130
- min-width: 100%;
131
- height: auto;
132
- width: auto;
133
- opacity: 0;
134
- z-index: 9998;
135
- /* styles required for IE to work */
136
- background-color: #fff;
137
- filter: alpha(opacity=0);
138
- }
139
-
140
- .select2-drop {
141
- width: 100%;
142
- margin-top: -1px;
143
- position: absolute;
144
- z-index: 9999;
145
- top: 100%;
146
-
147
- background: #fff;
148
- color: #000;
149
- border: 1px solid #aaa;
150
- border-top: 0;
151
-
152
- border-radius: 0 0 4px 4px;
153
-
154
- -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
155
- box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
156
- }
157
-
158
- .select2-drop.select2-drop-above {
159
- margin-top: 1px;
160
- border-top: 1px solid #aaa;
161
- border-bottom: 0;
162
-
163
- border-radius: 4px 4px 0 0;
164
-
165
- -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
166
- box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
167
- }
168
-
169
- .select2-drop-active {
170
- border: 1px solid #5897fb;
171
- border-top: none;
172
- }
173
-
174
- .select2-drop.select2-drop-above.select2-drop-active {
175
- border-top: 1px solid #5897fb;
176
- }
177
-
178
- .select2-drop-auto-width {
179
- border-top: 1px solid #aaa;
180
- width: auto;
181
- }
182
-
183
- .select2-drop-auto-width .select2-search {
184
- padding-top: 4px;
185
- }
186
-
187
- .select2-container .select2-choice .select2-arrow {
188
- display: inline-block;
189
- width: 18px;
190
- height: 100%;
191
- position: absolute;
192
- right: 0;
193
- top: 0;
194
-
195
- border-left: 1px solid #aaa;
196
- border-radius: 0 4px 4px 0;
197
-
198
- background-clip: padding-box;
199
-
200
- background: #ccc;
201
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
202
- background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
203
- background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
204
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
205
- background-image: linear-gradient(to top, #ccc 0%, #eee 60%);
206
- }
207
-
208
- html[dir="rtl"] .select2-container .select2-choice .select2-arrow {
209
- left: 0;
210
- right: auto;
211
-
212
- border-left: none;
213
- border-right: 1px solid #aaa;
214
- border-radius: 4px 0 0 4px;
215
- }
216
-
217
- .select2-container .select2-choice .select2-arrow b {
218
- display: block;
219
- width: 100%;
220
- height: 100%;
221
- background: url('select2.png') no-repeat 0 1px;
222
- }
223
-
224
- html[dir="rtl"] .select2-container .select2-choice .select2-arrow b {
225
- background-position: 2px 1px;
226
- }
227
-
228
- .select2-search {
229
- display: inline-block;
230
- width: 100%;
231
- min-height: 26px;
232
- margin: 0;
233
- padding-left: 4px;
234
- padding-right: 4px;
235
-
236
- position: relative;
237
- z-index: 10000;
238
-
239
- white-space: nowrap;
240
- }
241
-
242
- .select2-search input {
243
- width: 100%;
244
- height: auto !important;
245
- min-height: 26px;
246
- padding: 4px 20px 4px 5px;
247
- margin: 0;
248
-
249
- outline: 0;
250
- font-family: sans-serif;
251
- font-size: 1em;
252
-
253
- border: 1px solid #aaa;
254
- border-radius: 0;
255
-
256
- -webkit-box-shadow: none;
257
- box-shadow: none;
258
-
259
- background: #fff url('select2.png') no-repeat 100% -22px;
260
- background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
261
- background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
262
- background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
263
- background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
264
- }
265
-
266
- html[dir="rtl"] .select2-search input {
267
- padding: 4px 5px 4px 20px;
268
-
269
- background: #fff url('select2.png') no-repeat -37px -22px;
270
- background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
271
- background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
272
- background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
273
- background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
274
- }
275
-
276
- .select2-drop.select2-drop-above .select2-search input {
277
- margin-top: 4px;
278
- }
279
-
280
- .select2-search input.select2-active {
281
- background: #fff url('select2-spinner.gif') no-repeat 100%;
282
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
283
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
284
- background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
285
- background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
286
- }
287
-
288
- .select2-container-active .select2-choice,
289
- .select2-container-active .select2-choices {
290
- border: 1px solid #5897fb;
291
- outline: none;
292
-
293
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
294
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
295
- }
296
-
297
- .select2-dropdown-open .select2-choice {
298
- border-bottom-color: transparent;
299
- -webkit-box-shadow: 0 1px 0 #fff inset;
300
- box-shadow: 0 1px 0 #fff inset;
301
-
302
- border-bottom-left-radius: 0;
303
- border-bottom-right-radius: 0;
304
-
305
- background-color: #eee;
306
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
307
- background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
308
- background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
309
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
310
- background-image: linear-gradient(to top, #fff 0%, #eee 50%);
311
- }
312
-
313
- .select2-dropdown-open.select2-drop-above .select2-choice,
314
- .select2-dropdown-open.select2-drop-above .select2-choices {
315
- border: 1px solid #5897fb;
316
- border-top-color: transparent;
317
-
318
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
319
- background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
320
- background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
321
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
322
- background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);
323
- }
324
-
325
- .select2-dropdown-open .select2-choice .select2-arrow {
326
- background: transparent;
327
- border-left: none;
328
- filter: none;
329
- }
330
- html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {
331
- border-right: none;
332
- }
333
-
334
- .select2-dropdown-open .select2-choice .select2-arrow b {
335
- background-position: -18px 1px;
336
- }
337
-
338
- html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b {
339
- background-position: -16px 1px;
340
- }
341
-
342
- .select2-hidden-accessible {
343
- border: 0;
344
- clip: rect(0 0 0 0);
345
- height: 1px;
346
- margin: -1px;
347
- overflow: hidden;
348
- padding: 0;
349
- position: absolute;
350
- width: 1px;
351
- }
352
-
353
- /* results */
354
- .select2-results {
355
- max-height: 200px;
356
- padding: 0 0 0 4px;
357
- margin: 4px 4px 4px 0;
358
- position: relative;
359
- overflow-x: hidden;
360
- overflow-y: auto;
361
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
362
- }
363
-
364
- html[dir="rtl"] .select2-results {
365
- padding: 0 4px 0 0;
366
- margin: 4px 0 4px 4px;
367
- }
368
-
369
- .select2-results ul.select2-result-sub {
370
- margin: 0;
371
- padding-left: 0;
372
- }
373
-
374
- .select2-results li {
375
- list-style: none;
376
- display: list-item;
377
- background-image: none;
378
- }
379
-
380
- .select2-results li.select2-result-with-children > .select2-result-label {
381
- font-weight: bold;
382
- }
383
-
384
- .select2-results .select2-result-label {
385
- padding: 3px 7px 4px;
386
- margin: 0;
387
- cursor: pointer;
388
-
389
- min-height: 1em;
390
-
391
- -webkit-touch-callout: none;
392
- -webkit-user-select: none;
393
- -moz-user-select: none;
394
- -ms-user-select: none;
395
- user-select: none;
396
- }
397
-
398
- .select2-results-dept-1 .select2-result-label { padding-left: 20px }
399
- .select2-results-dept-2 .select2-result-label { padding-left: 40px }
400
- .select2-results-dept-3 .select2-result-label { padding-left: 60px }
401
- .select2-results-dept-4 .select2-result-label { padding-left: 80px }
402
- .select2-results-dept-5 .select2-result-label { padding-left: 100px }
403
- .select2-results-dept-6 .select2-result-label { padding-left: 110px }
404
- .select2-results-dept-7 .select2-result-label { padding-left: 120px }
405
-
406
- .select2-results .select2-highlighted {
407
- background: #3875d7;
408
- color: #fff;
409
- }
410
-
411
- .select2-results li em {
412
- background: #feffde;
413
- font-style: normal;
414
- }
415
-
416
- .select2-results .select2-highlighted em {
417
- background: transparent;
418
- }
419
-
420
- .select2-results .select2-highlighted ul {
421
- background: #fff;
422
- color: #000;
423
- }
424
-
425
- .select2-results .select2-no-results,
426
- .select2-results .select2-searching,
427
- .select2-results .select2-ajax-error,
428
- .select2-results .select2-selection-limit {
429
- background: #f4f4f4;
430
- display: list-item;
431
- padding-left: 5px;
432
- }
433
-
434
- /*
435
- disabled look for disabled choices in the results dropdown
436
- */
437
- .select2-results .select2-disabled.select2-highlighted {
438
- color: #666;
439
- background: #f4f4f4;
440
- display: list-item;
441
- cursor: default;
442
- }
443
- .select2-results .select2-disabled {
444
- background: #f4f4f4;
445
- display: list-item;
446
- cursor: default;
447
- }
448
-
449
- .select2-results .select2-selected {
450
- display: none;
451
- }
452
-
453
- .select2-more-results.select2-active {
454
- background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
455
- }
456
-
457
- .select2-results .select2-ajax-error {
458
- background: rgba(255, 50, 50, .2);
459
- }
460
-
461
- .select2-more-results {
462
- background: #f4f4f4;
463
- display: list-item;
464
- }
465
-
466
- /* disabled styles */
467
-
468
- .select2-container.select2-container-disabled .select2-choice {
469
- background-color: #f4f4f4;
470
- background-image: none;
471
- border: 1px solid #ddd;
472
- cursor: default;
473
- }
474
-
475
- .select2-container.select2-container-disabled .select2-choice .select2-arrow {
476
- background-color: #f4f4f4;
477
- background-image: none;
478
- border-left: 0;
479
- }
480
-
481
- .select2-container.select2-container-disabled .select2-choice abbr {
482
- display: none;
483
- }
484
-
485
-
486
- /* multiselect */
487
-
488
- .select2-container-multi .select2-choices {
489
- height: auto !important;
490
- height: 1%;
491
- margin: 0;
492
- padding: 0 5px 0 0;
493
- position: relative;
494
-
495
- border: 1px solid #aaa;
496
- cursor: text;
497
- overflow: hidden;
498
-
499
- background-color: #fff;
500
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
501
- background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
502
- background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
503
- background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);
504
- }
505
-
506
- html[dir="rtl"] .select2-container-multi .select2-choices {
507
- padding: 0 0 0 5px;
508
- }
509
-
510
- .select2-locked {
511
- padding: 3px 5px 3px 5px !important;
512
- }
513
-
514
- .select2-container-multi .select2-choices {
515
- min-height: 26px;
516
- }
517
-
518
- .select2-container-multi.select2-container-active .select2-choices {
519
- border: 1px solid #5897fb;
520
- outline: none;
521
-
522
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
523
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
524
- }
525
- .select2-container-multi .select2-choices li {
526
- float: left;
527
- list-style: none;
528
- }
529
- html[dir="rtl"] .select2-container-multi .select2-choices li
530
- {
531
- float: right;
532
- }
533
- .select2-container-multi .select2-choices .select2-search-field {
534
- margin: 0;
535
- padding: 0;
536
- white-space: nowrap;
537
- }
538
-
539
- .select2-container-multi .select2-choices .select2-search-field input {
540
- padding: 5px;
541
- margin: 1px 0;
542
-
543
- font-family: sans-serif;
544
- font-size: 100%;
545
- color: #666;
546
- outline: 0;
547
- border: 0;
548
- -webkit-box-shadow: none;
549
- box-shadow: none;
550
- background: transparent !important;
551
- }
552
-
553
- .select2-container-multi .select2-choices .select2-search-field input.select2-active {
554
- background: #fff url('select2-spinner.gif') no-repeat 100% !important;
555
- }
556
-
557
- .select2-default {
558
- color: #999 !important;
559
- }
560
-
561
- .select2-container-multi .select2-choices .select2-search-choice {
562
- padding: 3px 5px 3px 18px;
563
- margin: 3px 0 3px 5px;
564
- position: relative;
565
-
566
- line-height: 13px;
567
- color: #333;
568
- cursor: default;
569
- border: 1px solid #aaaaaa;
570
-
571
- border-radius: 3px;
572
-
573
- -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
574
- box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
575
-
576
- background-clip: padding-box;
577
-
578
- -webkit-touch-callout: none;
579
- -webkit-user-select: none;
580
- -moz-user-select: none;
581
- -ms-user-select: none;
582
- user-select: none;
583
-
584
- background-color: #e4e4e4;
585
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
586
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
587
- background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
588
- background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
589
- background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
590
- }
591
- html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice
592
- {
593
- margin: 3px 5px 3px 0;
594
- padding: 3px 18px 3px 5px;
595
- }
596
- .select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
597
- cursor: default;
598
- }
599
- .select2-container-multi .select2-choices .select2-search-choice-focus {
600
- background: #d4d4d4;
601
- }
602
-
603
- .select2-search-choice-close {
604
- display: block;
605
- width: 12px;
606
- height: 13px;
607
- position: absolute;
608
- right: 3px;
609
- top: 4px;
610
-
611
- font-size: 1px;
612
- outline: none;
613
- background: url('select2.png') right top no-repeat;
614
- }
615
- html[dir="rtl"] .select2-search-choice-close {
616
- right: auto;
617
- left: 3px;
618
- }
619
-
620
- .select2-container-multi .select2-search-choice-close {
621
- left: 3px;
622
- }
623
-
624
- html[dir="rtl"] .select2-container-multi .select2-search-choice-close {
625
- left: auto;
626
- right: 2px;
627
- }
628
-
629
- .select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
630
- background-position: right -11px;
631
- }
632
- .select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
633
- background-position: right -11px;
634
- }
635
-
636
- /* disabled styles */
637
- .select2-container-multi.select2-container-disabled .select2-choices {
638
- background-color: #f4f4f4;
639
- background-image: none;
640
- border: 1px solid #ddd;
641
- cursor: default;
642
- }
643
-
644
- .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
645
- padding: 3px 5px 3px 5px;
646
- border: 1px solid #ddd;
647
- background-image: none;
648
- background-color: #f4f4f4;
649
- }
650
-
651
- .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
652
- background: none;
653
- }
654
- /* end multiselect */
655
-
656
-
657
- .select2-result-selectable .select2-match,
658
- .select2-result-unselectable .select2-match {
659
- text-decoration: underline;
660
- }
661
-
662
- .select2-offscreen, .select2-offscreen:focus {
663
- clip: rect(0 0 0 0) !important;
664
- width: 1px !important;
665
- height: 1px !important;
666
- border: 0 !important;
667
- margin: 0 !important;
668
- padding: 0 !important;
669
- overflow: hidden !important;
670
- position: absolute !important;
671
- outline: 0 !important;
672
- left: 0px !important;
673
- top: 0px !important;
674
- }
675
-
676
- .select2-display-none {
677
- display: none;
678
- }
679
-
680
- .select2-measure-scrollbar {
681
- position: absolute;
682
- top: -10000px;
683
- left: -10000px;
684
- width: 100px;
685
- height: 100px;
686
- overflow: scroll;
687
- }
688
-
689
- /* Retina-ize icons */
690
-
691
- @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {
692
- .select2-search input,
693
- .select2-search-choice-close,
694
- .select2-container .select2-choice abbr,
695
- .select2-container .select2-choice .select2-arrow b {
696
- background-image: url('select2x2.png') !important;
697
- background-repeat: no-repeat !important;
698
- background-size: 60px 40px !important;
699
- }
700
-
701
- .select2-search input {
702
- background-position: 100% -21px !important;
703
- }
704
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/core/lib/ReduxFramework/ReduxCore/assets/js/ace.min.js DELETED
@@ -1,11 +0,0 @@
1
- (function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u<a;++u){var f=s(e,t[u]);if(f==undefined&&r.original)return;o.push(f)}return n&&n.apply(null,o)||!0}},r=function(e,t){var i=n("",e,t);return i==undefined&&r.original?r.original.apply(this,arguments):i},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,r){r=i(e,r);var s=t.modules[r];if(!s){s=t.payloads[r];if(typeof s=="function"){var o={},u={id:r,uri:"",exports:o,packaged:!0},a=function(e,t){return n(r,e,t)},f=s(a,o,u);o=f||u.exports,t.modules[r]=o,delete t.payloads[r]}s=t.modules[r]=o||s}return s};o(ACE_NAMESPACE)})(),define("ace/lib/regexp",["require","exports","module"],function(e,t,n){"use strict";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})}),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 \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";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)}}),define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){"use strict";e("./regexp"),e("./es5-shim")}),define("ace/lib/dom",["require","exports","module"],function(e,t,n){"use strict";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};if(typeof document=="undefined")return;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}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";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)}}),define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"],function(e,t,n){"use strict";e("./fixoldbrowsers");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,"super":8,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:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,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]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),define("ace/lib/useragent",["require","exports","module"],function(e,t,n){"use strict";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((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.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,t.isChromeOS=i.indexOf(" CrOS ")>=0}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)u[n]==1&&(a=t.timeStamp);else if(n===18&&o===3&&f===2){var l=t.timestamp-a;l<50&&(u.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,o,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}var r=e("./keys"),i=e("./useragent");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"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?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 c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,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 s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(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]=(u[e.keyCode]||0)+1;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)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},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}}),define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=i.isIE,f=function(e,t){function b(e){if(h)return;h=!0;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){}h=!1}function w(){if(h)return;n.value=f,i.isWebKit&&y.schedule()}function R(){clearTimeout(q),q=setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},i.isOldIE?200:0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",i.isOldIE&&(n.style.top="-1000px"),e.insertBefore(n,e.firstChild);var f="",l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(e){t.onBlur(e),v=!1}),r.addListener(n,"focus",function(e){v=!0,t.onFocus(e),b()}),this.focus=function(){if(p)return n.focus();n.style.position="fixed",n.style.top="-1000px",n.focus(),setTimeout(function(){n.style.position=""},0)},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=f,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==f)return;if(e&&t==f[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(F,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?j():B()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){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==f.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==f?e=e.substr(2):e.charAt(0)==f.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==f.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,t){var n=e.clipboardData||window.clipboardData;if(!n||u)return;var r=a?"Text":"text/plain";return t?n.setData(r,t)!==!1:n.getData(r)},_=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);M(e,s)?(i?t.onCut():t.onCopy(),r.preventDefault(e)):(l=!0,n.value=s,n.select(),setTimeout(function(){l=!1,w(),b(),i?t.onCut():t.onCopy()}))},D=function(e){_(e,!0)},P=function(e){_(e,!1)},H=function(e){var s=M(e);typeof s=="string"?(s&&t.onPaste(s),i.isIE&&setTimeout(b),r.preventDefault(e)):(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",D),r.addListener(n,"copy",P),r.addListener(n,"paste",H),(!("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:P(e);break;case 86:H(e);break;case 88:D(e)}});var B=function(e){if(h||!t.onCompositionStart||t.$readOnly)return;h={},t.onCompositionStart(),setTimeout(j,0),t.on("mousedown",F),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},j=function(){if(!h||!t.onCompositionUpdate||t.$readOnly)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()}},F=function(e){if(!t.onCompositionEnd||t.$readOnly)return;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",F),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";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();r.$blockScrolling++,o&&r.selection.moveToPosition(n),r.$blockScrolling--,r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;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.$blockScrolling--,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);n.$blockScrolling++;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.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,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.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);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}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("<br/>"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);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 o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";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)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";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),C(),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,g=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.scrollTop=0),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.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),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(!g)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.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),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}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";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()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";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}),define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"no use strict";function o(e){typeof console!="undefined"&&console.warn&&console.warn.apply(console,arguments)}function u(e,t){var n=new Error(e);n.data=t,typeof console=="object"&&console.error&&console.error(n),setTimeout(function(){throw n})}var r=e("./oop"),i=e("./event_emitter").EventEmitter,s={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 o('misspelled option "'+e+'"');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]:o('misspelled option "'+e+'"')}},a=function(){this.$defaultOptions={}};(function(){r.implement(this,i),this.defineOptions=function(e,t,n){return e.$options||(this.$defaultOptions[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)}),r.implement(e,s),this},this.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},this.setDefaultValue=function(e,t,n){var r=this.$defaultOptions[e]||(this.$defaultOptions[e]={});r[t]&&(r.forwardTo?this.setDefaultValue(r.forwardTo,t,n):r[t].value=n)},this.setDefaultValues=function(e,t){Object.keys(t).forEach(function(n){this.setDefaultValue(e,n,t[n])},this)},this.warn=o,this.reportError=u}).call(a.prototype),t.AppConfig=a}),define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(e,t,n){"no use strict";function f(r){a.packaged=r||e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var i={},s="",o=document.currentScript||document._currentScript,f=o&&o.ownerDocument||document,c=f.getElementsByTagName("script");for(var h=0;h<c.length;h++){var p=c[h],d=p.src||p.getAttribute("src");if(!d)continue;var v=p.attributes;for(var m=0,g=v.length;m<g;m++){var y=v[m];y.name.indexOf("data-ace-")===0&&(i[l(y.name.replace(/^data-ace-/,""))]=y.value)}var b=d.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);b&&(s=b[1])}s&&(i.base=i.base||s,i.packaged=!0),i.basePath=i.base,i.workerPath=i.workerPath||i.base,i.modePath=i.modePath||i.base,i.themePath=i.themePath||i.base,delete i.base;for(var w in i)typeof i[w]!="undefined"&&t.set(w,i[w])}function l(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/app_config").AppConfig;n.exports=t=new o;var 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)},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(t=="worker"&&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=f}),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){"use strict";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){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){(!document.hasFocus||!document.hasFocus())&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(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){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();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.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&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,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";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}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},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;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);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.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},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}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";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}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";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.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),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.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},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}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=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;Array.isArray(f.token)?f.token.length==1||c==1?f.token=f.token[0]:c-1!=f.token.length?(this.reportError("number of classes and regexp groups doesn't match",{rule:f,groupCount:c-1}),f.token=f.token[0]):(f.tokenArray=f.token,f.token=null,f.onMatch=this.$arrayTokens):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)}r.length||(s[0]=0,r.push("$")),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){i=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],t==="#tmp"&&(n.shift(),t=n.shift())}else var n=[];var r=t||"start",s=this.states[r];s||(r="start",s=this.states[r]);var o=this.matchMappings[r],u=this.regExps[r];u.lastIndex=0;var a,f=[],l=0,c=0,h={type:null,value:""};while(a=u.exec(e)){var p=o.defaultToken,d=null,v=a[0],m=u.lastIndex;if(m-v.length>l){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;y<a.length-2;y++){if(a[y+1]===undefined)continue;d=s[o[y]],d.onMatch?p=d.onMatch(v,r,n):p=d.token,d.next&&(typeof d.next=="string"?r=d.next:r=d.next(r,n),s=this.states[r],s||(this.reportError("state doesn't exist",r),r="start",s=this.states[r]),o=this.matchMappings[r],l=m,u=this.regExps[r],u.lastIndex=m);break}if(v)if(typeof p=="string")!!d&&d.merge===!1||h.type!==p?(h.type&&f.push(h),h={type:p,value:v}):h.value+=v;else if(p){h.type&&f.push(h),h={type:null,value:""};for(var y=0;y<p.length;y++)f.push(p[y])}if(l==e.length)break;l=m;if(c++>i){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l<e.length)h.type&&f.push(h),h={value:e.substring(l,l+=2e3),type:"overflow"};r="start",n=[];break}}return h.type&&f.push(h),n.length>1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";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];if(s.next||s.onMatch)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=typeof e=="function"?(new e).getRules():e;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.length)&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t.shift(),t.shift()||"start"};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}),define("ace/mode/behaviour",["require","exports","module"],function(e,t,n){"use strict";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}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";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"})}),define("ace/token_iterator",["require","exports","module"],function(e,t,n){"use strict";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}),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){"use strict";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=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=["toggleBlockComment","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}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";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||i!==0||!this.$insertRight)&&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._signal("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)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";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._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},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};while(t.length>2e4){var n=this._insertLines(e,t.slice(0,2e4));t=t.slice(2e4),e=n.row}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._signal("change",{data:o}),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._signal("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._signal("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._signal("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._signal("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._signal("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}),define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";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);break}}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._signal("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}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";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}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";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);if(!n||n.kind=="inside")return null;var r=n.fold,s=this.folds,o=this.foldData,u=s.indexOf(r),a=s[u-1];this.end.row=a.end.row,this.end.column=a.end.column,s=s.splice(u,s.length-u);var f=new i(o,s);return o.splice(o.indexOf(this)+1,0,f),f},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;for(var n=0;n<this.folds.length;n++){var r=this.folds[n];e-=r.start.column-t;if(e<0)return{row:r.start.row,column:r.start.column+e};e-=r.placeholder.length;if(e<0)return r.start;t=r.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),define("ace/range_list",["require","exports","module","ace/range"],function(e,t,n){"use strict";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}),define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){"use strict";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)}),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){"use strict";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);c&&!c.range.isStart(u,a)&&this.removeFold(c),h&&!h.range.isEnd(f,l)&&this.removeFold(h);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==null&&(i=0),t==null&&(t=e.end.row),n==null&&(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.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),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.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},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,f,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)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";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").replace(/\b(?:end|start|begin)\b/,"")+")+"));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").replace(/\b(?:end|start|begin)\b/,"")+")+"));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}),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){"use strict";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._signal("session",this)};(function(){function m(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&&this.bgTokenizer.$updateOnChange(t),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),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._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("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._signal("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},this.setBreakpoint=function(e,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._signal("changeBreakpoint",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._signal("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._signal("changeFrontMarker")):(this.$backMarkers[i]=s,this._signal("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._signal("changeFrontMarker")):(this.$backMarkers[n]=e,this._signal("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._signal(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._signal("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._signal("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();this.$modes[r]&&!n?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._signal("tokenizerUpdate",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(e.attachToSession&&e.attachToSession(this),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(){try{this.$worker=this.$mode.createWorker(this)}catch(e){s.warn("Could not load worker",e),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=Array(t),this.$updateWrapData(0,t-1)}this._signal("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.$useWrapMode&&this._signal("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._signal("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=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,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&&(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 r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;f<o.length;f++)o[f]=u}else o=this.$getDisplayTokens(r[t].substring(s,i),a.length);a=a.concat(o)}.bind(this),f.end.row,r[f.end.row].length+1),s[f.start.row]=this.$computeWrapSplits(a,o,i),l=f.end.row+1):(a=this.$getDisplayTokens(r[l]),s[l]=this.$computeWrapSplits(a,o,i),l++)};var e=1,t=2,n=3,u=4,l=9,p=10,d=11,v=12;this.$computeWrapSplits=function(e,r){function c(t){var n=e.slice(o,t),r=n.length;n.join("").replace(/12/g,function(){r-=1}).replace(/2/g,function(){r-=1}),a+=r,i.push(a),o=t}if(e.length==0)return[];var i=[],s=e.length,o=0,a=0,f=this.$wrapAsCode;while(s-o>r){var h=o+r;if(e[h-1]>=p&&e[h]>=p){c(h);continue}if(e[h]==n||e[h]==u){for(h;h!=o-1;h--)if(e[h]==n)break;if(h>o){c(h);continue}h=o+r;for(h;h<e.length;h++)if(e[h]!=u)break;if(h==e.length)break;c(h);continue}var d=Math.max(h-(f?10:r-(r>>2)),o-1);while(h>d&&e[h]<n)h--;if(f){while(h>d&&e[h]<n)h--;while(h>d&&e[h]==l)h--}else while(h>d&&e[h]<p)h--;if(h>d){c(++h);continue}h=o+r,e[h]==t&&h--,c(h)}return i},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o<n.length;o++){var u=n.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(d);for(var a=1;a<s;a++)i.push(v)}else u==32?i.push(p):u>39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}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&&m(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];if(v){var 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){var u=this.$wrapData[s];e+=u?u.length+1: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},this.$setFontMetrics=function(e){},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).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;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},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._signal("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._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("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}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";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.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},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,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;h<a;h++)if(i[c+h].search(u[h])==-1)continue e;var p=i[c],d=i[c+a-1],v=p.length-p.match(u[0])[0].length,m=d.match(u[a-1])[0].length;if(l&&l.end.row===c&&l.end.column>v)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;g<i.length;g++){var y=r.getMatchOffsets(i[g],u);for(var h=0;h<y.length;h++){var b=y[h];o.push(new s(g,b.offset,g,b.offset+b.length))}}if(n){var w=n.start.column,E=n.start.column,g=0,h=o.length-1;while(g<h&&o[g].start.column<w&&o[g].start.row==n.start.row)g++;while(g<h&&o[h].end.column>E&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g<h;g++)o[g].start.row+=n.start.row,o[g].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;if(t.$isMultiLine)var o=n.length,u=function(t,r,u){var a=t.search(n[0]);if(a==-1)return;for(var f=1;f<o;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[o-1])[0].length,c=new s(r,a,r+o-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):u&&(c.start.column+=u);if(i(c))return!0};else if(t.backwards)var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=o.length-1;u>=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u<o.length;u++)if(i(o[u],t,s))return!0};var a=this.$lineIterator(e,t);return{forEach:function(e){i=e,a.forEach(u)}}},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?"gm":"gmi";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}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,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,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&(e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(e,t,n){var r=this.commandKeyBinding,i;t?!r[e]||this.$singleCommand?r[e]=t:(Array.isArray(r[e])?(i=r[e].indexOf(t))!=-1&&r[e].splice(i,1):r[e]=[r[e]],n||t.isDefault?r[e].unshift(t):r[e].push(t)):delete r[e]},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){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){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=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};return e.$keyChain&&r>0&&(e.$keyChain=""),{command:o}}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,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){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!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}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("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:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("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:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("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:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("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:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("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",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("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",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+1<e.session.doc.getLength()-1&&(f+=e.session.doc.getNewLineCharacter()),e.clearSelection(),e.session.doc.replace(new s(n.row,0,i.row+2,0),f),a>0?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o<r.length;o++)o==r.length-1&&(r[o].end.row!==t||r[o].end.column!==n)&&i.push(new s(r[o].end.row,r[o].end.column,t,n)),o===0?(r[o].start.row!==0||r[o].start.column!==0)&&i.push(new s(0,0,r[o].start.row,r[o].start.column)):i.push(new s(r[o-1].end.row,r[o-1].end.column,r[o].start.row,r[o].start.column));e.exitMultiSelectMode(),e.clearSelection();for(var o=0;o<i.length;o++)e.selection.addRange(i[o],!1)},readOnly:!0,scrollIntoView:"none"}]}),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","ace/token_iterator"],function(e,t,n){"use strict";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=e("./token_iterator").TokenIterator,b=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&&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._signal("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.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},this.curOp.command.name&&this.curOp.command.scrollIntoView!==undefined&&this.$blockScrolling++},this.endOperation=function(e){if(this.curOp){if(e&&e.returnValue===!1)return this.curOp=null;this._signal("beforeEndOperation");var t=this.curOp.command;t.name&&this.$blockScrolling>0&&this.$blockScrolling--;if(t&&t.scrollIntoView){switch(t.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}t.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,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,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;var t=this.session;if(t){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,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.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},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,t){this.renderer.setTheme(e,t)},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;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(i&&o>=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(u&&o<=0);r.stepForward()}if(!i){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}var a=r.getCurrentTokenRow(),f=r.getCurrentTokenColumn(),l=new p(a,f,a,f+i.value.length);t.$tagHighlight&&l.compareRange(t.$backMarkers[t.$tagHighlight].range)!==0&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),l&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(l,"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(e){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e)},this.onBlur=function(e){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e)},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.session.$useWrapMode),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},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||(g.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("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&&!(this.renderer.$minLines>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._signal("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._signal("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;var t={text:e};this._signal("paste",t),e=t.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(e);else{var n=e.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}this.renderer.scrollCursorIntoView()},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.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(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var n,r,i=this.selection;if(!i.inMultiSelectMode||this.inVirtualSelectionMode){var s=i.toOrientedRange();n=this.$getSelectedRows(s),r=this.session.$moveLines(n.first,n.last,t?0:e),t&&e==-1&&(r=0),s.moveBy(r,0),i.fromOrientedRange(s)}else{var o=i.rangeList.ranges;i.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;var u=0,a=0,f=o.length;for(var l=0;l<f;l++){var c=l;o[l].moveBy(u,0),n=this.$getSelectedRows(o[l]);var h=n.first,p=n.last;while(++l<f){a&&o[l].moveBy(a,0);var d=this.$getSelectedRows(o[l]);if(t&&d.first!=p)break;if(!t&&d.first>p+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{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,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f<s.value.length&&!u;f++){if(!c[s.value[f]])continue;l=c[s.value[f]]+"."+s.type.replace("rparen","lparen"),isNaN(a[l])&&(a[l]=0);switch(s.value[f]){case"(":case"[":case"{":a[l]++;break;case")":case"]":case"}":a[l]--,a[l]===-1&&(o="bracket",u=!0)}}else s&&s.type.indexOf("tag-name")!==-1&&(isNaN(a[s.value])&&(a[s.value]=0),i.value==="<"?a[s.value]++:i.value==="</"&&a[s.value]--,a[s.value]===-1&&(o="tag",u=!0));u||(i=s,s=r.stepForward(),f=0)}while(s&&!u);if(!o)return;var h,d;if(o==="bracket"){h=this.session.getBracketRange(n);if(!h){h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1,r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1),d=h.start;if(t||d.row===n.row&&Math.abs(d.column-n.column)<2)h=this.session.getBracketRange(d)}}else if(o==="tag"){if(!s||s.type.indexOf("tag-name")===-1)return;var v=s.value;h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2,r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2);if(h.compare(n.row,n.column)===0){u=!1;do s=i,i=r.stepBackward(),i&&(i.type.indexOf("tag-close")!==-1&&h.setEnd(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+1),s.value===v&&s.type.indexOf("tag-name")!==-1&&(i.value==="<"?a[v]++:i.value==="</"&&a[v]--,a[v]===0&&(u=!0)));while(i&&!u)}s&&s.type.indexOf("tag-name")&&(d=h.start,d.row==n.row&&Math.abs(d.column-n.column)<2&&(d=h.end))}d=h&&h.cursor||d,d&&(e?h&&t?this.selection.setRange(h):h&&h.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(d.row,d.column):this.selection.moveTo(d.row,d.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.selection.moveTo(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(),this.selection.moveCursorBy(-e||-1,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(),this.selection.moveCursorBy(e||1,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.selection.moveTo(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._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)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()||n.searchBox&&n.searchBox.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)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(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("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.$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},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"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",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,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}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";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&&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=this.session,n=e.firstRow,i=Math.min(e.lastRow+e.gutterOffset,t.getLength()-1),s=t.getNextFoldLine(n),o=s?s.start.row:Infinity,u=this.$showFoldWidgets&&t.foldWidgets,a=t.$breakpoints,f=t.$decorations,l=t.$firstLineNumber,c=0,h=t.gutterRenderer||this.$renderer,p=null,d=-1,v=n;for(;;){v>o&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){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=t.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]=t.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(t,v):v+l;b!=p.textNode.data&&(p.textNode.data=b),v++}this.element.style.height=e.minHeight+"px";if(this.$fixedWidth||t.$useWrapMode)c=t.getLength()+l;var w=h?h.getWidth(t,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.$showLineNumbers=!0,this.$renderer="",this.setShowLineNumbers=function(e){this.$renderer=!e&&{getWidth:function(){return""},getText:function(){return""}}},this.getShowLineNumbers=function(){return this.$showLineNumbers},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}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";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 i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start",e)}this.element.innerHTML=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}),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){"use strict";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.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,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 ace_invisible_tab'>"+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",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]="<span class='"+r+i+"'>"+u+"</span>",this.$tabStrings[" "]="<span class='"+r+o+"'>"+a+"</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),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;u<r;u++){var a=this.session.getFoldLine(u);if(a){if(a.containsRow(r)){r=a.start.row;break}u=a.end.row}o++}var u=r,a=this.session.getNextFoldLine(u),f=a?a.start.row:Infinity;for(;;){u>f&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},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 while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(i),"px'>"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("</div>"),i++}this.element.innerHTML=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\xad\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 ace_invisible_space'>"+s.stringRepeat(i.SPACE_CHAR,e.length)+"</span>":e;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=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"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_invisible_space 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 ace_invisible_eol'>",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}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in 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"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},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&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),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(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);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(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},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<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(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.drawCursor=null,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(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";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}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";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}),define("ace/layer/font_metrics",["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=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},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.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),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("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.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;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.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;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.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: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;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: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.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;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_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;max-width: 100%;padding: 3px 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;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.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;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");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;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);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);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.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 {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 {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-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(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,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.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),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,gutterOffset: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),s.resetOptions(this),s._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,v),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&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,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);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){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.lastRow<this.layerConfig.firstRow){if(!n)return;this.$changedLines.lastRow=this.layerConfig.lastRow}if(this.$changedLines.firstRow>this.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},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.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},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",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.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"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.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+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();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_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._signal("autosize")}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a));var l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l,this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var c=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop),h=this.$vScroll!==c;h&&(this.$vScroll=c,this.scrollBarV.setVisible(c));var p=Math.ceil(o/this.lineHeight)-1,d=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),v=d+p,m,g,y=this.lineHeight;d=e.screenToDocumentRow(d,0);var b=e.getFoldLine(d);b&&(d=b.start.row),m=e.documentToScreenRow(d,0),g=e.getRowLength(d)*y,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(v)*y+g,s=this.scrollTop-m*y;var w=0;this.layerConfig.width!=u&&(w=this.CHANGE_H_SCROLL);if(f||h)w=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),h&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:d,firstRowScreen:m,lastRow:v,lineHeight:y,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},w},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,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-u<s+this.lineHeight&&(t&&(s+=t*this.$size.scrollerHeight),this.session.setScrollTop(s+this.lineHeight-this.$size.scrollerHeight));var f=this.scrollLeft;f>i?(i<this.$padding+2*this.layerConfig.characterWidth&&(i=-this.scrollMargin.left),this.session.setScrollLeft(i)):f+this.$size.scrollerWidth<i+this.characterWidth?this.session.setScrollLeft(Math.round(i+this.characterWidth-this.$size.scrollerWidth)):f<=this.$padding&&i-f<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<-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 o(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;s.loadModule(["theme",r],o)}else o(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.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.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.$loop.schedule(this.CHANGE_FULL),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},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},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=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){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);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}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,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("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){console.error(n.stack)}},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})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=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,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";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.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),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||!this.session)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.session=null},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);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}).call(o.prototype),t.PlaceHolder=o}),define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){function s(e,t){return e.row==t.row&&e.column==t.column}function o(e){var t=e.domEvent,n=t.altKey,o=t.shiftKey,u=t.ctrlKey,a=e.getAccelKey(),f=e.getButton();u&&i.isMac&&(f=t.button);if(e.editor.inMultiSelectMode&&f==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!u&&!n&&!a){f===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}if(f!==0)return;var l=e.editor,c=l.selection,h=l.inMultiSelectMode,p=e.getDocumentPosition(),d=c.getCursor(),v=e.inSelection()||c.isEmpty()&&s(p,d),m=e.x,g=e.y,y=function(e){m=e.clientX,g=e.clientY},b=l.session,w=l.renderer.pixelToScreenCoordinates(m,g),E=w,S;if(l.$mouseHandler.$enableJumpToDef)u&&n||a&&n?S="add":n&&(S="block");else if(a&&!n){S="add";if(!h&&o)return}else n&&(S="block");S&&i.isMac&&t.ctrlKey&&l.$mouseHandler.cancelContextMenu();if(S=="add"){if(!h&&v)return;if(!h){var x=c.toOrientedRange();l.addSelectionMarker(x)}var T=c.rangeList.rangeAtPoint(p);l.$blockScrolling++,l.inVirtualSelectionMode=!0,o&&(T=null,x=c.ranges[0],l.removeSelectionMarker(x)),l.once("mouseup",function(){var e=c.toOrientedRange();T&&e.isEmpty()&&s(T.cursor,e.cursor)?c.substractPoint(e.cursor):(o?c.substractPoint(x.cursor):x&&(l.removeSelectionMarker(x),c.addRange(x)),c.addRange(e)),l.$blockScrolling--,l.inVirtualSelectionMode=!1})}else if(S=="block"){e.stop(),l.inVirtualSelectionMode=!0;var N,C=[],k=function(){var e=l.renderer.pixelToScreenCoordinates(m,g),t=b.screenToDocumentPosition(e.row,e.column);if(s(E,e)&&s(t,c.lead))return;E=e,l.$blockScrolling++,l.selection.moveToPosition(t),l.renderer.scrollCursorIntoView(),l.removeSelectionMarkers(C),C=c.rectangularRangeBlock(E,w),l.$mouseHandler.$clickSelection&&C.length==1&&C[0].isEmpty()&&(C[0]=l.$mouseHandler.$clickSelection.clone()),C.forEach(l.addSelectionMarker,l),l.updateSelectionMarkers(),l.$blockScrolling--};l.$blockScrolling++,h&&!a?c.toSingleRange():!h&&a&&(N=c.toOrientedRange(),l.addSelectionMarker(N)),o?w=b.documentToScreenPosition(c.lead):c.moveToPosition(p),l.$blockScrolling--,E={row:-1,column:-1};var L=function(e){clearInterval(O),l.removeSelectionMarkers(C),C.length||(C=[c.toOrientedRange()]),l.$blockScrolling++,N&&(l.removeSelectionMarker(N),c.toSingleRange(N));for(var t=0;t<C.length;t++)c.addRange(C[t]);l.inVirtualSelectionMode=!1,l.$mouseHandler.$clickSelection=null,l.$blockScrolling--},A=k;r.capture(l.container,y,L);var O=setInterval(function(){A()},20);return e.preventDefault()}}var r=e("../lib/event"),i=e("../lib/useragent");t.onMouseDown=o}),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"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",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"},scrollIntoView:"cursor"},{name:"findAll",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readonly:!0}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),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.$checkMultiselectChange=e.$checkMultiselectChange.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._signal("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._signal("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._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("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._emit("changeSelection")},